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
    • E-mail

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

 

Create Account

Use case: create account 
Primary Actor: new user 
Goal: Allow new user to create with the facemap service.

  1. New user visits installs/runs app on phone.
    1.1. New user visits facemap website.
  2. New user selects "register" button.
  3. 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.
  4. 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.
  5. 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.
Request Friend

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 

  1. User starts/logs in the app.
  2. User selects Contact from menu.
  3. User selects addFriend button.
  4. User enters the email or phone number.
    4.1 User clicks "Choose From Phone Contact" button and chooses a contact.
  5. Information is sent to the server.
  6. 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.
  7. 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.
  8. Friend user receives the friendship invitation.
  9. Friend user accepts friendship invitation.
    9.1 Friend user does not accept friendship invitation.
  10. Server receives the accepting message and connects the two users
    10.1 Server receives the not accept message and the use case ends.
  11. Server sends a message to the user telling that the friend has accepted the friendship invitation
Delete Friend

Use case: delete friend 
Primary actor: user 
Goal: allow user to permanently unlink with another friend in his list

  1. User selects deleteFriend action
  2. User select friend from list of current friends
  3. User confirms deletion
  4. Delete message sent to server
  5. Server sends update to corresponding friend so they are removed from each other's phone.
Create Group

Use case: create group 
Primary actor: user 
Goal: allow user to group their friends 

  1. User select createGroup action
  2. User select friends to add to group
  3. User selects done/save action
  4. Group information saved on server
Locate Friends on Maps

Use case: locate friends 
Primary actor: user 
Secondary actors: facemap server, facemap phone app 
Goal: locate friends 
Precondition: user running phone or web app

  1. User selects "Locate"
  2. User selects nearby friends, groups, or individual contacts
  3. User selects range to display on map. Default is 1 mile.
  4. Phone app queries server for location of friends within the range.
  5. Server returns list of friends and updates Nearby Friends group
  6. Phone app presents user with map of friends
  7. Phone app updates Nearby Friends group
Delete/Block 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 

  1. User select deleteGroup or blockGroup action
  2. User selects which group to delete or block
  3. If delete, group removed from server
  4. Note: block indicates that the blocked person can no longer see or communicate with the user.
Edit Group Members

Use case: edit group members 
Primary actor: user 
Goal: allow user to edit members in a group 
Precondition: user running phone app 

  1. User select Group of interest
  2. 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.
  3. 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.
Communicating with Individuals

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

  1. User selects friends from the whole contact list
  2. User selects type of communication (text, email, IM, phone)
  3. User enters message
  4. User selects send action
  5. Phone app sends message to the friend
Communicating with group members

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

  1. User selects desired contact group
    1.1 User selects group to communicate with on the map
  2. User select sendMessage action
  3. User select type of communication (text, email)
  4. User enters message
  5. User select send action
  6. Phone app sends message to all members of the group via desired medium
Add Nearby Friends

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

  1. User selects addFriends action
  2. User selects searchNearby
  3. User enters search key (name/email/phone#)
  4. App sends query to server
  5. Server creates list of nearby facemap users
  6. Server searches list and returns matching entries to phone
  7. User selects person from list
  8. User select addFriend action
  9. Server sends a message to the user to confirm sending a service invitation to the friend (email/SMS).
  10. Friend user receives the friendship invitation.
  11. Friend user accepts friendship invitation.
    11.1 Friend user does not accept friendship invitation.
  12. Server receives the accepting message and connects the two users
    12.1 Server receives the not accept message and the use case ends.
  13. Server sends a message to the user telling that the friend has accepted the friendship invitation
Locate Lost Phone

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

  1. User logs into FaceMap web app
  2. User selects locateMyPhone action
  3. Server queries phone for current location
    3.1 If phone doesn't respond within time limit, server returns last known location
  4. Server displays phone location on googlemap style interface

Remote Lock/Wipe

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 

  1. User logs in to facemap web application
  2. User selects lock/wipe action
  3. User confirms action
  4. Facemap server send lock/wipe message to phone
  5. Facemap phone application recieves message and performs task

 

Modified selected GUI from Iteration 1

Registration and Log in

 

Account Profile and Visibility Settings

 

 

 

Add Friend

 

   

 

Edit Friends and Communicating with Individuals

 

 

Locate Friends

 

 

Create Group

 

 

 

Edit Group

 

 

Add Group Members

 

 

 

Edit Group Members

 

 

Click here to go to JavaDocs

Account Class Diagram

Messenger Class Diagram

Request Friend
Communicate with Nearby Friends

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.