Iteration 1
- Vision Statement
- Features
- Actors
- Use Cases
- GUI
- Activity Diagram
- Domain Diagram
- Architecture
We plan to write an android based phone location application with social features. The core application will consist a googlemaps style interface where your friends phone location is marked.
Our application will consist of a client program that runs on the phones and a server application that is responsible for managing account information, friend lists, and etc.
The server application will be implemented using J2EE technologies. The client application will run on an Android phone. It will be responsible for responding to location information requests, and presenting friends location information. It will allow grouping of friends for contact purposes.
Features
Location features
- Locating other people on your phone
- Marking differnt groups with different colors
- Finding nearby friends.
- Finding particular friends specified by group of individual.
Social features
- define customized group of friends
- select range you want to see people
- contact peple who are nearby (text, email, call, IM)
- create/edit/remove groups of friends
- invite people to join service
- add/delete/block friend
- add by searching server's list of users by name/email/phone number
- block is temporarily disallow friend from seeing your location
Lost phone features
- Remote locking of phone
- Remote wipe
- Locating (lost) phone
More features
- account management
- web interface to service
- personal profiles
- picture, status, personal information, ability to update
Actors
- Users - The person who will be creating an account either using the phone application or through the web application. One user is defined as one account tied to one specific phone. User is in charge of finding, grouping, and communicating with friends.
- Phone - Provides GPS location information and runs user interface
- Server - Manages accounts (including group information, user profile), provides web interface, gathers location information from users, enforces privacy constraints, and syncs with phone.
Use case: create account
Primary: new user
Goal: Allow new user to create with the facemap service
- New user visits facemap server or installs/runs app on phone
- New user selects createAccount action
- User enters their information
- Information is verified
- Required information
- Name (First and Last)
- Email address
- Phone number (will automatically retrieve from phone)
- Alphanumeric password
- If any part is invalid, user prompted to correct information
- Account is created
- If creating an account through the web interface, server will send text to phone number provided with a confirmation number. Service is activated once the user enters the confirmation number from the text. However, locating services won't start until user installs the full app onto the phone.
Use case: request friend
Primary actor: user
Goal: allow user to request the ability to see someone else's phone location
- User logs in/starts app
- User selects addFriend action
- User selects contact
- Phone's contact list
- Manually enters a name
- Manually enters an email
- Manually enters a phone number
- Friend found?
- Friend found
- Send friendship invitation
- Friend not found
- If searched person has phone/email, popup to confirm send service invitation
- If searched person doesn't include contact mode, make user type phone or email before sending service invitation
- Other person accepts friendship or service invitation
- Server stores new user or connects two existing users
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: 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
- Adds members to group
- User select addMembers action
- User selects friends to add to group
- Removes group members
- User selects members to delete
- User selects deleteMembers action
- Blocks group members
- User selects members to block
- User selects blockMembers action
- Note: block indicates that the blocked person can no longer see or communicate with the user.
- Updated group information saved on phone
- 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 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
- Default range set at 1 mile radius
- If desired, user defines range for "nearby friends" in group
- Facemap phone app queries server for location of friends within "nearby" range
- Server returns list of friends
- Phone app presents user with map of "nearby friends"
- User select sendMessage action
- User select type of communication (text,IM,email)
- User enters message
- User select send action
- Phone app sends message to all members of the "nearby friends" 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
- ... Rest of "add friend" use case follows
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
- 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
![](images/Iteration1/GUI/gui2.png)
![](images/Iteration1/GUI/gui6.png)
![](images/Iteration1/GUI/gui4.png)
![](images/Iteration1/GUI/gui5.png)
![](images/Iteration1/GUI/gui3.png)
![](images/Iteration1/GUI/gui7.png)
![](images/Iteration1/GUI/gui1.png)
![](images/Iteration1/RequestFriendship.png)
![](images/Iteration1/CommunicateWithNearbyFriends.png)
![](images/Iteration1/DomainModel.png)
Architecture
Resources
- Android GPS
- Android UI libraries
- J2EE
- JBoss/Glassfish
- SpringMVC/Apache Tomcat/JSP/JSF
- 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.