Iteration 2
- Features
- Use Cases
- GUI
- Class Diagram
- Sequence Diagram
- Activity Diagram
- Domain Diagram
- Architecture
Key Features
Social features
- Add/delete/block friend
- add by searching server's list of users by email/phone number
- block is temporarily disallow friend from seeing your location
- Add/delete/edit groups
- define customized groups
- edit group include add/remove/block friends within group
- Contact people in groups using:
- Text
Location features
- Locating friends on your phone
- Marking differnt groups with different colors
- Finding particular friends specified by group of individual.
Other features
- Create account
- Personal profiles including:
- Picture
- Status
- Personal information
- Ability to update
Extra Features
Social features
- Add friends by searching with names
- Invite friends to join the service
- Additional communication modes:
- Instant Message
- Phone calls
- Voice over IP (computer only)
Location features
- Find nearby friends based on a user defined range.
Other features
- Remote locking of phone
- Remote wipe
- Locating (lost) phone
- Account management
- Web interface to service
Use case: create account
Primary Actor: new user
Goal: Allow new user to create with the facemap service.
- New user visits installs/runs app on phone.
1.1. New user visits facemap website. - New user selects "register" button.
- User enters personal information: Name, E-mail address,password, phone number is automatically retrieved from phone.
3.1 User enters the phone number on the web. - Information is sent to the server and verified.
4.1 Information is not correct (Invalid email/phone, account with this email/phone is already created), request to re-enter part of the information is sent.
4.2 User receives the request and corrects the information.
4.3 The server receives the correct information. - Account is created
5.1 The account is created with an inactive tag if the user registers on the web.
5.2 The server sends a text with a confirmation number to the phone number provided through on the website.
5.3 The user received the text on the phone.
5.4 The user types the confirmation number on the web.
5.5 The server activates the account.
Use case: request friend
Primary actor: user
Goal: allow user to add a contact and request the ability to see someone else's phone location
- User starts/logs in the app.
- User selects Contact from menu.
- User selects addFriend button.
- User enters the email or phone number.
4.1 User clicks "Choose From Phone Contact" button and chooses a contact. - Information is sent to the server.
- Server finds an existing account matching the phone/email.
6.1 Server does not find an existing account.
6.2 Server sends a message to the user to confirm sending a service invitation to the friend (email/SMS).
6.3 User confirms.
6.3.1 User cancels and the use case ends. - Server sends friendship invitation.
7.1 Server sends the service invitation.
7.2 Friend user accepts invitation by clicking the link in the email/SMS
7.3 Friend user downloads the app and creates a new account. - Friend user receives the friendship invitation.
- Friend user accepts friendship invitation.
9.1 Friend user does not accept friendship invitation. - Server receives the accepting message and connects the two users
10.1 Server receives the not accept message and the use case ends. - Server sends a message to the user telling that the friend has accepted the friendship invitation
Use case: delete friend
Primary actor: user
Goal: allow user to permanently unlink with another friend in his list
- User selects deleteFriend action
- User select friend from list of current friends
- User confirms deletion
- Delete message sent to server
- Server sends update to corresponding friend so they are removed from each other's phone.
Use case: create group
Primary actor: user
Goal: allow user to group their friends
- User select createGroup action
- User select friends to add to group
- User selects done/save action
- Group information saved on server
Use case: locate friends
Primary actor: user
Secondary actors: facemap server, facemap phone app
Goal: locate friends
Precondition: user running phone or web app
- User selects "Locate"
- User selects nearby friends, groups, or individual contacts
- User selects range to display on map. Default is 1 mile.
- Phone app queries server for location of friends within the range.
- Server returns list of friends and updates Nearby Friends group
- Phone app presents user with map of friends
- Phone app updates Nearby Friends group
Use case: Delete or Block an entire Group
Primary actor: user
Goal: allow user to delete a group of friends that they have created
Precondition: user running phone app
- User select deleteGroup or blockGroup action
- User selects which group to delete or block
- If delete, group removed from server
- Note: block indicates that the blocked person can no longer see or communicate with the user.
Use case: edit group members
Primary actor: user
Goal: allow user to edit members in a group
Precondition: user running phone app
- User select Group of interest
- User select editGroupMembers action
2.1 Adds members to group
2.1.1 User select addMembers action
2.1.2 User selects friends to add to group
2.2 Remove group memebers
2.2.1 User select removeMembers action
2.2.2 User selects friends to remove from group
2.3 Block group
2.3.1 User select blockMembers action
2.3.2 User selects friends to temporarily block group
Note: Block indicates that the blocked person can no longer see or communicate with the user. - Updated group information
Note: removing member from a group doesn't delete the member permanently, it merely dissociates member with this specific group. If member is no longer part of any group, he/she is moved to an uncategorized group.
Use case: communicate with an individual
Primary actor: user
Secondary actors: facemap server, facemap phone app
Goal: send a message to selected friend
Precondition: user running phone or web app
- User selects friends from the whole contact list
- User selects type of communication (text, email, IM, phone)
- User enters message
- User selects send action
- Phone app sends message to the friend
Use case: communicate with group
Primary actor: user
Secondary actors: facemap server, facemap phone app
Goal: send a message to the user's nearby friends
Precondition: user running phone or web app
- User selects desired contact group
1.1 User selects group to communicate with on the map - User select sendMessage action
- User select type of communication (text, email)
- User enters message
- User select send action
- Phone app sends message to all members of the group via desired medium
Use case: Add nearby friends
Primary actor: user
Secondary actor: facemap server
Goal: allow people to add as friends facemap users in the nearby location
Precondition: user running phone app
Note: the utility of this use case is very dependent on the number and location of people using the facemap service. There are also privacy concerns with this use case as facemap users may not want random people being able to search for them based on their location unless they are friends
- User selects addFriends action
- User selects searchNearby
- User enters search key (name/email/phone#)
- App sends query to server
- Server creates list of nearby facemap users
- Server searches list and returns matching entries to phone
- User selects person from list
- User select addFriend action
- Server sends a message to the user to confirm sending a service invitation to the friend (email/SMS).
- Friend user receives the friendship invitation.
- Friend user accepts friendship invitation.
11.1 Friend user does not accept friendship invitation. - Server receives the accepting message and connects the two users
12.1 Server receives the not accept message and the use case ends. - Server sends a message to the user telling that the friend has accepted the friendship invitation
Use case: locate lost phone
Primary actor: user
Secondary actor: facemap server
Goal: allow user to locate their lost phone
Precondition: user has an account with facemap service
- User logs into FaceMap web app
- User selects locateMyPhone action
- Server queries phone for current location
3.1 If phone doesn't respond within time limit, server returns last known location - Server displays phone location on googlemap style interface
Use case: remote lock/wipe
Primary actor: user
Secondary actor: facemap server, user's phone
Goal: allow user to lock or wipe their phone in the case that it is stolen
- User logs in to facemap web application
- User selects lock/wipe action
- User confirms action
- Facemap server send lock/wipe message to phone
- Facemap phone application recieves message and performs task
Modified selected GUI from Iteration 1
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![](images/Iteration2/sequence_diagram.png)
![](images/Iteration1/RequestFriendship.png)
![](images/Iteration1/CommunicateWithNearbyFriends.png)
![](images/Iteration2/domain_diagram.png)
Architecture
Resources
- Android GPS
- Android UI libraries
- J2EE
- JBoss
- SpringMVC
- Hibernate/JDBC
- Database
- MySQL
Packages
- phone
- ui
- model
- web UI
- ui
- model
- server
- data access layer
Deployment
- App running on the phone
- Server app
- Web interface.