UseCase & Method Descriptions
The following Use Case Diagram shows the proposed system:
The actors of the system are Driver, Customer, Credit Card Company and Google Maps.
1. See the car and driver Details
1. See the car and driver details
Extension Points- Request specific driver for ride
1. Request specific driver for ride
Use case description provides detailed description for use cases designed in above use case diagram.
|
Use Case Name: |
Request Cab |
|
Primary Actor: |
User |
|
Brief Description: |
User requests car from uber |
|
Stakeholders: |
Driver: Picks and drops user to desired location Google maps: suggests nearby rides |
|
Trigger: |
User clicks on “Confirm ride” button |
|
Normal flow of events: |
1. Login using user details 1. Accept From and to location from user 1. Receive car class details from user 1. Execute Find nearby rides Use Case 1. Display user with cab available time and cost 1. Execute Apply Discount Coupons use case 1. Receive user’s confirmation for ride 1. Execute Receive Payment Use case 1. Send ride details to driver 1. Receive driver confirmation 1. Send ride details to customer 1. Receive feedback for service |
|
Alternate/Exception flow: |
1.a1. If the login fails, redo this step 1.a2. If not a registered user, execute Register use case 5.a1. If Coupon code is not valid display appropriate error message 6.a1. If user cancels the ride, go back to Request cab option 12.a1. If driver cancels the request, go back to Request cab |
|
Use Case Name: |
Process payment |
|
Primary Actor: |
User |
|
Brief Description: |
User makes payment |
|
Stakeholders: |
Payment Gateway: Processes payment for the ride |
|
Trigger: |
User clicks on “Process payment” button |
|
Normal flow of events: |
1. Once user confirms ride redirect to payment portal 1. Display user with payment portal 1. Receive details - CCNumber, CCName,CVV & OTP 1. Debit from user account 1. Credit into driver account and Uber account 1. Send payment acknowledgment to the user 1. Send driver with payment credited acknowledgement |
|
Alternate/Exception flow: |
3.a1. If Card details are invalid, redo step 2 4.a1. If the payment processing fails, take user to step 1 |
|
Use Case Name: |
Find nearby rides |
|
Primary Actor: |
Google maps |
|
Brief Description: |
Google maps find nearby cab locations |
|
Stakeholders: |
User: Provides pickup location |
|
Trigger: |
User clicks on “Ride now/Schedule ride” button |
|
Normal flow of events: |
1. Receive pickup and drop location 1. Receive the Cab class details from user 1. Based on pickup location and cab class find nearby cabs 1. Suggest user with closest cab to schedule ride |
|
Alternate/Exception flow: |
|
|
Use Case Name: |
Accept ride request |
|
Primary Actor: |
Driver |
|
Brief Description: |
Driver accepts ride request |
|
Stakeholders: |
User: Provides pickup location |
|
Trigger: |
User clicks on “Ride now/Schedule ride” button |
|
Normal flow of events: |
1. Send ride request to all nearby drivers 1. Provide driver with location details 1. Receive ride confirmation from the driver |
|
Alternate/Exception flow: |
3.a1. If driver cancels ride request, redo step 1 |
|
Use Case Name: |
Receive Feedback |
|
Primary Actor: |
User |
|
Brief Description: |
User gives feedback |
|
Stakeholders: |
Driver: Receives feedback for the ride |
|
Trigger: |
Ride completed |
|
Normal flow of events: |
1. Redirect user to ratings and review page 1. Receive feedback for the ride from the user |
|
Alternate/Exception flow: |
2.a1. If user does not want to provide feedback, bypass above user case |
|
Use Case Name: |
Register for the application |
|
Primary Actor: |
User |
|
Brief Description: |
User registers for the application |
|
Stakeholders: |
|
|
Trigger: |
User clicks on “Register/Sign up” button |
|
Normal flow of events: |
1. Display the details page to User for filling up information 1. Receive details like Name, Email, Contact from User 1. Validate above details 1. Notify user of the app registration once successful |
|
Alternate/Exception flow: |
3. a1. If the Username, Email or Contact is already associated with an existing account, display an error message to the user |
|
Use Case Name: |
See nearby available cabs |
|
Primary Actor: |
User |
|
Brief Description: |
Based upon location nearby cabs are displayed to the user |
|
Stakeholders: |
Google maps: display nearby cars based on location |
|
Trigger: |
User provides pickup and drop location |
|
Normal flow of events: |
1. Receive user location 1. Display nearby cars available for the ride |
|
Alternate/Exception flow: |
2.a1. If cars not available currently, inform user to re-enter location after some time |
|
Use Case Name: |
See the car and driver details |
|
Primary Actor: |
User |
|
Brief Description: |
Display the car and driver details for the nearby cabs |
|
Stakeholders: |
Google maps: display nearby cars based on location |
|
Trigger: |
User clicks on a car from nearby cars |
|
Normal flow of events: |
1. Receive the selected car from user 1. Verify the car location and fetch the car details 1. Display the car and driver details to the user |
|
Alternate/Exception flow: |
|
|
Use Case Name: |
Request scheduled ride |
|
Primary Actor: |
User |
|
Brief Description: |
User selects time for the ride and confirm it |
|
Stakeholders: |
Driver: Confirms ride and take user to desired location |
|
Trigger: |
User confirms time of the ride and clicks on “Schedule” button |
|
Normal flow of events: |
1. Receive pickup and drop location from the user 1. Receive cab class from the user 1. Receive ride schedule time from the user 1. Display user with cab available time and cost 1. Accept coupon codes from user, if any 1. Receive user’s confirmation for ride 1. Execute Receive Payment Use case 1. Send ride details to drivers 1. Receive driver confirmation 1. Send ride details to customer
|
|
Alternate/Exception flow: |
5.a1. If Coupon code is not valid display appropriate error message 6.a1. If user cancels the ride, go back to Request cab option 9.a1. If driver cancels the request, go back to Request cab |
|
Case Name: |
User requests driver for the ride |
|
Primary Actor: |
User |
|
Brief Description: |
User requests a specific driver from the ride history for his next ride |
|
Stakeholders: |
Driver: Confirms availability for the ride |
|
Trigger: |
User clicks on “Request a driver” button |
|
Normal flow of events: |
1. Fetch all previous rides of user and relevant drivers from database 1. Display user with previous rides and drivers 1. Receive user choice for the driver 1. Receive pickup and drop location from the user 1. Contact user selected driver for availability 1. Receive driver confirmation 1. Send ride confirmation to the user |
|
Alternate/Exception flow: |
2.a1. If user is scheduling ride for the first time, Request driver option should not be available 6.a1. If driver is not available for the ride, inform user with appropriate message and take user back to step 2 |
|
Use Case Name: |
See predictive price surge |
|
Primary Actor: |
User |
|
Brief Description: |
Suggesting user with cost effective time for the ride |
|
Stakeholders: |
|
|
Trigger: |
User provides location and clicks on Cost estimate button |
|
Normal flow of events: |
1. Receive the pickup and drop location from user 1. Receive schedule time 1. Display user with cost estimate for the given time 1. Fetch historic data for the given time frame 1. Display user with a time series graph of more economic options within same time frame (+/- 1hour) |
|
Alternate/Exception flow: |
2.a1. If user is scheduling ride for the first time, Request driver option should not be available 6.a1. If driver is not available for the ride, inform user with appropriate message and take user back to step 2 |
|
Use Case Name: |
Cancel ride |
|
Primary Actor: |
User |
|
Brief Description: |
User cancels the ride |
|
Stakeholders: |
|
|
Trigger: |
User clicks on “Cancel Ride” button |
|
Normal flow of events: |
1. Receive ride cancellation confirmation from the user 1. Notify driver of ride cancellation 1. Display user again with the Schedule ride options |
|
Alternate/Exception flow: |
|
|
Use Case Name: |
Apply discount coupons |
|
Primary Actor: |
User |
|
Brief Description: |
User enters the coupon codes for discounts |
|
Stakeholders: |
|
|
Trigger: |
User clicks on “Apply code” button |
|
Normal flow of events: |
1. Receive Coupon Code from the user 1. Validate the coupon code 1. Display user with discounted ride cost |
|
Alternate/Exception flow: |
2.a1. If the coupon is invalid, display appropriate error message and go back to step 1 |
The data dictionary used is given below:
User = UserId + First Name + Last Name + Phone No + Email Id + Password + Street Number + Street Name + City + State + Country + User Zip code + Payment Details
Driver = DriverId + Driver First Name + Driver Last Name + Driver Phone No + Driver Gender + Driver Photo + License No + Driver Rating
Feedback = Review Rating + Review Comments
Ride = Ride Id + {Pickup Location} + Drop Location + Distance + Schedule Time + Time taken + Total cost + Rating + PickupCity + DropCity + State
Ride History = RideId + UserId + Driver Id+ Vehicle Name + Driver Name + Rating
Discount Coupon = Coupon Code + Description + Discount%
Payment = CCNumber + CCName + Expiration + CVV Code + Coupon Code
User ride Confirmation = [Yes|No]
Driver Confirmation = [Yes|No]
Vehicle = VehicleId + {Vehicle Name} + DriverId + {Vehicle class}
Vehicle class = [UberX|UberXL|UberSelect|UberPool]
Predictive surge Data = Time + Pickup Location + Drop Location + User count + Price
--------------------------------------------------------------------------------------------------------------------------------------------------------
Signature:
|
Method Name: Pay for The Ride () |
Class Name: User |
ID: |
|
Clients: |
||
|
Associated use case: Process Payment |
||
|
Description of responsibilities: Method adds transaction details to the payment table and credits amount into driver and Under account |
||
|
Arguments Received: None |
||
|
Type of Value Returned: Null (Records transaction details into database) |
||
|
Pre-Conditions: Valid Credit card details |
||
|
Post-Conditions: New transaction record inserted in database |
Logic:
User selects “Process Payment”
User enters discount coupon code
IF discount coupon code invalid
THEN
Display amount without code
ELSE
THEN
FETCH coupon code details from Discount Coupon
Display payment amount after applying discount coupon code
FETCH CC Number, CC Name, CVV from user
Update payment details in Payment Table
Signature:
|
Method Name: Give Feedback () |
Class Name: Feedback |
ID: |
|
Clients: |
||
|
Associated use case: Receive Feedback |
||
|
Description of responsibilities: This method records feedback and rating from users |
||
|
Arguments Received: |
||
|
Type of Value Returned: Null (Records item to database) |
||
|
Pre-Conditions: Must have booked a ride for a cab |
||
|
Post-Conditions: New feedback record added to Feedback table |
Logic:
Directed to provide Feedback and Rating screen
IF User does not want to provide
THEN
Proceed to exit
ELSE
Provide feedback
Signature:
|
Method Name: Request drive and car details () |
Class Name: User |
ID: |
|
Clients: |
||
|
Associated use case: Request Cab, Find Nearby Rides, see nearby Available Cabs, See Car and Driver Details, Cancel ride |
||
|
Description of responsibilities: Requests a cab after finding choosing nearby car and driver details |
||
|
Arguments Received: |
||
|
Type of Value Returned: Null (Records transaction to the database) |
||
|
Pre-Conditions: Customer should be a registered user in the system |
||
|
Post-Conditions: |
Logic:
User selects “Find nearby cabs”
FOR current address through PIN code
Google Maps retrieves list of available cabs nearby
FETCH list of all available cars nearby
FETCH driver details of the above fetched cars
User selects one cab out of the options available
IF ride time “Immediate”
THEN
Immediate request sent to the cab driver
ELSE IF
Enter pickup time in the future along with location
Suggest user with cost effective time for the ride
ELSE
Cancel
Signature:
|
Method Name: Accept Ride Request () |
Class Name: Driver |
ID: |
|
Clients: |
||
|
Associated use case: User requests driver for a ride |
||
|
Description of responsibilities: Cab driver gets a request for a ride along with sharing his details |
||
|
Arguments Received: |
||
|
Type of Value Returned: |
||
|
Pre-Conditions: Cab rider should be a registered in the system |
||
|
Post-Conditions: Either accept or reject ride request |
Logic:
Cab Driver gets a request from a customer for a ride
FETCH user details to driver
FETCH time and location details to the driver
IF driver rejects ride request
THEN
Send reject notification along with reason to user
ELSE
Send accept notification to user along with estimated arrival time to location