User Cases - CMPUT301F16T01/Carrier GitHub Wiki

1. Requests

2. Status

3. User Profile

4. Searching

5. Accepting

6. Offline Behavior

7. Location

Requests

Request #1
Use Case Name RiderRequest
Description As a rider, I want to request rides between two locations.
Actors Rider
Goal Rider is able to request a ride between two locations and are given visual indication that they have done so.
Trigger User initiates a ride request.
Preconditions Rider is logged in.
Post conditions The user is notified that their request has been made.
Basic Flow
  1. The user inputs a source location.
  2. The user specifies a destination.
  3. The user chooses to specify a fare that is different than the estimated fare.
Exceptions    2.1 The rider specified a destination that is the same as the source location. Prompt user to enter valid destination and continue from step 2.
   2.2 Either source or destination is blank. Prompt user and return to step 1 if the source is empty or return to step 2 if the destination is empty.
   3.1 The rider does not choose a fare. Prompt user that they have not entered a fare and return to step 3.
Constraints
Related US 01.01.01, US 01.06.01

Request #2
Use Case Name SeeOpenRequests
Description As a rider, I want to see current requests I have open.
Actors Rider
Goal Rider sees all current requests they have open.
Trigger Rider chooses to see their Requests from their profile
Preconditions The user has requests open
Post conditions The rider sees a list of zero to many of their open requests
Basic Flow
  1. System displays list of open requests the user has.
Exceptions   1. If the user has no open requests
  1.1. System displays message in place of list indicating no open requests
Constraints Requests are user specific
Extends
Related US 01.02.01

Request #3
Use Case Name AcceptedRequestNotification
Description As a rider, I want to be notified if my request is accepted.
Actors Rider, Driver
Goal The rider is notified that their request was accepted by a driver by some visual indication.
Trigger A driver accepts the rider's request.
Preconditions The rider has submitted a request and the driver has accepted that request.
Post conditions The rider is notified that their request was taken.
Basic Flow
  1. The rider receives visual indication that their request was accepted.
Exceptions
Constraints
Related US 01.03.01, US 01.01.01

Request #4
Use Case Name RiderCancelRequests
Description As a rider, I want to cancel requests.
Actors Rider
Goal Rider cancels a request they have open.
Trigger Rider chooses to cancel a request in their request list
Preconditions Rider has an open request
Post conditions Rider cancels the request they specified
Basic Flow
  1. System marks the request as cancelled
Exceptions
Constraints
Related US 01.04.01

Request #5
Use Case Name RiderContactDriver
Description As a rider, I want to be able to phone or email the driver who accepted a request.
Actors Rider, Driver
Goal To be able to access contact information of the driver who accepted the rider's request.
Trigger The rider navigates to a part of the app where the driver's contact information is contained.
Preconditions The driver has accepted the rider's request.
Post conditions The user contacts the driver via phone or email.
Basic Flow
  1. The rider opens the app and navigates to the driver's contact information.
  2. User clicks on the way they want to contact the driver.
  3. The driver is automatically contacted through the selected method.
Exceptions   2.1. The system cannot find the contact information for either phone or email
  2.2. The system greys out the option
  2.3. User clicks a grayed out option
  2.4. System displays message about lack of contact information
Constraints
Related US 01.05.01, US 01.01.01

Request #6
Use Case Name GetFareEstimate
Description As a rider, I want an estimate of a fair fare to offer to drivers.
Actors Rider
Goal Rider sees a fair estimate for their request
Trigger Rider initializes a request between two locations
Preconditions The start and end location are different.
Post conditions On success, a fare estimate is displayed for the request
Basic Flow
  1. The rider enters a start and end location for their request
  2. the system shows an estimate for the request
Exceptions
Constraints
Related US 01.06.01

Request #7
Use Case Name ConfirmCompletion&Pay
Description As a rider, I want to confirm the completion of a request and enable payment.
Actors Rider, Driver
Goal The rider is able to confirm the their ride is complete and can pay for their ride.
Trigger The driver confirms that the ride is completed.
Preconditions The driver has accepted the request that the rider has made and the driver completes the ride. The rider is able to pay for the ride.
Post conditions Payment is enabled for the rider.
Basic Flow
  1. The rider confirms the completion of the ride.
  2. The rider pays for the ride.
Exceptions
Constraints
Related US 01.07.01

Request #8
Use Case Name RiderAcceptsDriver
Description As a rider, I want to confirm a driver's acceptance. This allows us to choose from a list of acceptances if more than 1 driver accepts simultaneously.
Actors Rider, 1 or more drivers
Goal Rider accepts one driver's acceptance
Trigger Rider looks at a request of theirs with acceptance(s)
Preconditions Rider has a request with one or more acceptances from drivers
Post conditions Rider has a request with a driver they've chosen to fulfill the request
Basic Flow
  1. System displays the list of drivers and their information to the user
  2. Rider chooses one of the the drivers for the request
Exceptions
Constraints
Related US 01.08.01

Request #9 **added half way through project timeline
Use Case Name RiderViewsCarDescription
Description As a rider, I should see a description of the driver's vehicle.
Actors Rider, 1 or more drivers
Goal Rider views driver's car details
Trigger Rider looks at a request of theirs with acceptance(s)
Preconditions Rider has a request with one or more acceptances from drivers
Post conditions Rider has seen driver's car details
Basic Flow
  1. User clicks on driver username
  2. System displays the list of drivers and their information to the user
Exceptions
Constraints
Related US 01.09.01

Top

Status

Status #1
Use Case Name seeStatus
Description As a rider or driver, I want to see the status of a request that I am involved in
Actors User
Goal See the status of a request
Trigger User chooses a request to look at
Preconditions User is logged in and has made a request to see the status of
Post conditions On success, status is displayed
Basic Flow
  1. User looks at request list
  2. System displays icon showing the status
  3. User clicks request
  4. System displays text showing the status
Exceptions
Constraints
Related US 02.01.01

Top

User profile

User Profile #1
Use Case Name uniqueRiderName, uniqueDriverName
Description As a user, I want a profile with a unique username and my contact information.
Actors User
Goal Test to see if a username is unique. An email and phone number will be attached to the unique username
Trigger Choosing to sign in
Preconditions
Post conditions On success, account is created
Basic Flow
  1. User enters username
  2. System checks if username is unique
  3. System records username
Exceptions    2.1 username is not unique. Prompt user that the username is not unique. Return to step 1.
Constraints
Related US 03.01.01

User Profile #2
Use Case Name editProfileInfo
Description As a user, I want to edit the contact information in my profile.
Actors User
Goal Change profile information.
Trigger User clicks edit button.
Preconditions User is logged in.
Post conditions on success the information of the user is changed.
Basic Flow
  1. User enters information to change
  2. System record information
Exceptions
Constraints
Related US 03.02.01

User Profile #3
Use Case Name getProfile
Description As a user, I want to, when a username is presented for a thing, retrieve and show its contact information.
Actors User
Goal Show a users profile. Profile includes username and email.
Trigger User sees a user name of rider or driver that they want more information about
Preconditions User is logged in and is able to see usernames for any reason
Post conditions on success, the information will be seen
Basic Flow
  1. User clicks on username they want more info about
  2. System displays that info
Exceptions
Constraints
Related US 03.03.01

User Profile #4 **added half way through project timeline
Use Case Name setCarDetails
Description As a driver, in my profile I can provide details about the vehicle I drive.
Actors User
Goal Save information about a drivers vehicle and then show information about drivers vehicle.
Trigger User sees a user name of driver and want more information about their vehicle
Preconditions User is logged in and is able to see usernames for drivers for any reason
Post conditions on success, the information will be seen
Basic Flow
  1. Driver input information about their vehcle
  2. System saves that info
Exceptions
Constraints
Related US 03.04.01

Top

Searching

Searching #1
Use Case Name SearchRequestsByGeoLocation
Description As a driver, I want to browse and search for open requests by geo-location.
Actors Driver
Goal Driver sees search results, prioritized by proximity to the queried location.
Trigger Driver submits a search query based on their current location, or a different location of their choosing.
Preconditions Driver is logged in.
Post conditions The driver sees a list of zero to many search results, sorted in order of proximity to the location queried.
Basic Flow
  1. The driver inputs a location for the query.
  2. The system returns a list of open requests, sorted in proximity to the queried location.
Exceptions   2 There are no open requests within range.
  2.1 The system returns no search results.
  2.3 The system continues normally.
Constraints Search results are limited by a range that is deemed "close enough" to the queried location.
Related US 04.01.01

Searching #2
Use Case Name SearchRequestsByKeyword
Description As a driver, I want to browse and search for open requests by keyword.
Actors Driver
Goal Driver sees search results, prioritized by proximity to the driver's current location.
Trigger Driver submits a search query based on a keyword.
Preconditions Driver is logged in.
Post conditions The driver sees a list of zero to many search results matched to the queried keyword, sorted in order of proximity to the driver's current location.
Basic Flow
  1. The driver inputs a keyword for the query.
  2. The system returns a list of open requests matched to the queried keyword, sorted in proximity to the driver's current location.
Exceptions   2 There are no open requests within range and/or there are no open requests that match the queried keyword.
  2.1 The system returns no search results.
  2.2 The system continues normally.
Constraints Search results are limited by a range that is deemed "close enough" to the driver's current location.
Extends Searching #1 and Searching #2
Related US 04.02.01

Searching #3 **added half way through project timeline
Use Case Name SearchRequestsByPrice
Description As a driver, I should be able filter request searches by price per KM and price.
Actors Driver
Goal Driver sees search results, filtered by price per KM and/or price.
Trigger Driver is in the search system
Preconditions Driver is logged in.
Post conditions The driver sees a list of zero to many search results filtered by their options
Basic Flow
  1. The user specifies if they want to filter search results by price and/or price per kilometer
  2. The system allows the user to specify these values
  3. The user performs a regular search operation (i.e. search by location or search by keyword)
  4. The system returns a list of requests filtered by regular search measures and the price/price per kilometer
Exceptions   4 There are no open requests within range
  4.1 The system returns no search results.
  4.2 The system continues normally.
Constraints
Related US 04.03.01

Searching #4 **added half way through project timeline
Use Case Name SeeAddress
Description As a driver, I should be able to see the addresses of the requests.
Actors Driver
Goal Driver sees address
Trigger Driver Views Request
Preconditions Driver is logged in.
Post conditions Driver sees location
Basic Flow
  1. Driver clicks request to view it
  2. System shows addresses
Exceptions
Constraints
Related US 04.04.01

Searching #5 **added half way through project timeline
Use Case Name SearchRequestsByAddress
Description As a driver, I should be able to search by address or nearby an address.
Actors Driver
Goal Driver sees search results, prioritized by proximity to the driver's queried address.
Trigger Driver submits a search query based on an address.
Preconditions Driver is logged in.
Post conditions The driver sees a list of zero to many search results matched to the queried address, sorted in order of proximity to the driver's queried address.
Basic Flow
  1. The driver inputs an address for the query.
  2. The system returns a list of open requests matched to the queried address, sorted in proximity to the driver's queried address.
Exceptions   2 There are no open requests within range and/or there are no open requests that match the queried address.
  2.1 The system returns no search results.
  2.2 The system continues normally.
Constraints Search results are limited by a range that is deemed "close enough" to the driver's queried address.
Related US 04.05.01

Top

Accepting

Accepting #1
Use Case Name DriverOfferOnRequest
Description As a driver, I want to accept a request I agree with and accept that offered payment upon completion.
Actors Driver
Goal Provide the driver with a way to accept a request.
Trigger Driver looks at the list of open requests and wishes to accept one.
Preconditions
Post conditions The request has been marked accepted by one driver.
Basic Flow
  1. Driver chooses to view open requests
  2. Driver chooses a request to accept
Exceptions   1.1. A user has already chosen a driver to fulfill a request
  1.2. System notifies the driver this has occurred.
   1.3 System returns to an updated request list
Constraints
Related US 05.01.01

Accepting #2
Use Case Name DriverPendingAccepts
Description As a driver, I want to view a list of things I have accepted that are pending, each request with its description, and locations.
Actors Driver
Goal Provide a driver with a list of pending requests that they have accepted.
Trigger The driver requests to view their pending requests.
Preconditions The driver has pending requests to view.
Post conditions The driver is able to view the list of requests that they have a pending offer on.
Basic Flow
  1. Driver selects to view their pending requests.
  2. Provide the driver with a list of requests that they have that are pending.
Exceptions   2.1. The driver has no pending requests
   2.2. The system displays a message informing the user they have no pending requests.
Constraints
Related US 05.02.01

Accepting #3
Use Case Name DriverConfirmedRequests
Description As a driver, I want to see if my acceptance was accepted.
Actors Driver
Goal Provide a driver with a way to see if their acceptance has been accepted by the rider.
Trigger The driver attempts to view their confirmed requests
Preconditions
Post conditions The driver is displayed a list of their confirmed requests.
Basic Flow
  1. Driver attempts to view confirmed requests
  2. The driver views the list of confirmed requests.
Exceptions   2.1. The driver has no confirmed requests
   2.2. The system displays a message informing the user they have no confirmed requests.
Constraints
Related US 05.03.01

Accepting #4
Use Case Name NotifyDriverOnConfirmation
Description As a driver, I want to be notified if my ride offer was accepted.
Actors Driver
Goal The goal is to provide a driver with a notification when their ride has been confirmed.
Trigger Will occur when a rider confirms the driver in their request.
Preconditions A driver has accepted the a request
Post conditions The driver is notified that they have been confirmed as the driver.
Basic Flow
  1. Driver accepts a request
  2. Rider confirms the driver.
  3. Driver is notified that they have been accepted as the driver by the rider.
Exceptions
Constraints
Related US 05.04.01

Top

Offline Behavior

Offline Behavior #1
Use Case Name OfflineSeeDriverOffers
Description As an driver, I want to see requests that I already accepted while offline.
Actors Driver
Goal A driver can see their ride offers offline.
Trigger The driver is offline and navigates to a part of the app where they can view their offers.
Preconditions The driver is logged on and has offered rides while they were online and then go offline.
Post conditions The driver can view their offers.
Basic Flow
  1. The driver navigates to their offers.
Exceptions
Constraints
Related US 08.01.01

Offline Behavior #2
Use Case Name OfflineSeeRiderRequests
Description As a rider, I want to see requests that I have made while offline.
Actors Rider
Goal See submitted requests while offline
Trigger Navigate to the part of the app where submitted requests are recorded
Preconditions The rider is logged on and has submitted requests while online and then goes offline.
Post conditions The rider can view their requests.
Basic Flow
  1. The rider navigates to their requests.
Exceptions
Constraints
Related US 08.02.01

Offline Behavior #3
Use Case Name OfflineMakeRequest
Description As a rider, I want to make requests that will be sent once I get connectivity again.
Actors Rider
Goal Make requests offline that will be sent once rider is back online.
Trigger The rider makes a request while offline, then goes back online.
Preconditions The rider is logged on and offline.
Post conditions The rider's request is posted.
Basic Flow
  1. The rider makes a request.
  2. The rider goes back online.
  3. The system posts all requests waiting in the queue.
Exceptions
Constraints
Related US 08.03.01

Offline Behavior #4
Use Case Name OfflineAcceptRequest
Description As a driver, I want to accept requests that will be sent once I get connectivity again.
Actors Driver
Goal Accept requests offline that will be sent once driver is back online.
Trigger The driver makes a request while offline, then goes back online.
Preconditions The rider is logged on and online.
Post conditions The request is marked as aeccepted by the driver.
Basic Flow
  1. The driver accepts a request.
  2. The driver goes back online.
  3. The system marks all requests waiting in the queue as accepted.
Exceptions
Constraints
Related US 08.04.01

Top

Location

Location #1
Use Case Name RiderSetGeoLocationsForRequest
Description As a rider, I want to specify a start and end geo-locations on a map for a request.
Actors Rider
Goal A rider can select start and end geo-locations on a map when making a request.
Trigger The rider makes a request.
Preconditions The rider is logged in.
Post conditions A request is made.
Basic Flow
  1. The rider begins to make a request.
  2. The rider selects a start geo-location for the request on a map.
  3. The rider selects a end geo-location for the request on a map.
  4. The rider submits the request.
Exceptions 3 The end geo-location is the same as the start geo-location
3.1 System throws an error.
3.2 System requires rider to choose a different end geo-location.
Constraints The start and end geo-locations for a request must be different.
Related US 10.01.01

Location #2
Use Case Name DriverViewGeoLocationsForRequest
Description As a driver, I want to view start and end geo-locations on a map for a request.
Actors Driver
Goal A driver can view start and end geo-locations on a map when they open a request to view.
Trigger The driver views a request.
Preconditions The driver is logged in.
Post conditions
Basic Flow
  1. The driver selects a request to view.
  2. The driver views the start and end geo-locations for the request on a map.
Exceptions
Constraints
Related US 10.02.01

Top

⚠️ **GitHub.com Fallback** ⚠️