Uber Alles is an online taxi service similar to Lyft and Uber. Riders use their smart phones to send a ride request to the regional Uber Alles server.
The request is broadcast to all nearby drivers. A driver may accept a ride request. The driver picks up the rider at the specified pick-up address and drops the rider off at the specified destination address. The Uber Alles server debits the rider's account and credits the driver's account After the ride the driver and rider rate each other (0 – 5 stars). The Uber Alles server updates the overall ratings of both the rider and driver (i.e., re-computes the average rating). Drivers and riders may also update their membership information using the Uber Alles server.
Riders and Drivers are collectively called agents. An agent has a continuously updated GPS location (this is the closest address to the agent's current position and is provided by the agent's smart phone). An agent has an account which can be credited and debited and has a balance. An agent has an overall rating (0 – 5 stars). Agents can update their membership information.
A rider is in one of three states: logged out, waiting, and passenger. When a rider needs a ride he uses his smartphone to login to the Uber Alles server, then sends a request for a ride. The request contains the time, the pick-up address and the drop-off address.
A driver is in one of three states: logged out, available, and occupied (the rider is in the car).
A ride request is in one of four states: requested, awarded, in-transit, and completed. A ride request has a pick-up address and a drop-off address. A ride request has a creation time, a completion time, and a cost. A ride request has a passenger and a driver.
A rider sends a ride request object to the Uber Alles server. The server computes the cost of the ride and broadcasts the request to all nearby drivers. If no driver accepts the request, the server sends a "no drivers available" message to the rider. Otherwise the driver who accepts the request picks up the rider and drives him to his destination. The Uber Alles server debits the rider's account, then credits the driver's account. Next, the driver rates the rider and the rider rates the driver. These actions can happen in any order. The Uber server updates the overall rating for the rider and the driver. When both of these actions are completed the scenario ends.
Create a use case diagram for this system.
Create a domain model for this system.
Draw an activity diagram modeling the typical session described above.