Carpark System
A company is providing a carpark for its employees, but charges them for its use. Employees who want to use the carpark must first register their car with the system. Registration can alternatively be done by the car park administrator, or by employees themselves. The carpark system will hold at least the following information about registered employees: first name, last name, employee number, license plate and email address.
Cameras at the carpark entrance and exit will identify cars by their licence plate, to track carpark usage. At the end of each 2-week billing cycle, email notifications will be sent to all employees with any carpark usage during the period covered by the billing cycle, listing usage and charges. Charges will be computed on a daily basis. Initially the rate will be set at $2/day, but this should be configurable by the carpark administrator.
To ensure carpark availability, employees have the option of reserving a parking space for one or more weeks. Parking spaces thus reserved will be charged at 5 days per week, regardless of actual use. Reservations can be canceled by employees for any week that has not started or passed yet. The carpark administrator can modify reservations at any time. When a reservation finishes without future reservations in place, a reminder will be sent to the employee.
Rather than assigning particular parking spaces to reservations, reservations will reduce the number of parking spaces available for employees without reservations. A barrier at the carpark entrance will prevent entry to employees without reservation once all spaces available without reservation have been filled. If carpark access is denied for any reason, an audio feedback message will be played to drivers.
To enable salary deduction of charges, carpark administrators will have the ability to export charges for any billing period.
The exported file must be in a format readable by the company's accounting software.
TODO
1. Split the carpark system into two subsystems suitable for (more or less) independent development. Describe these subsystems with a few words, including how they will communicate.
If working in pairs, each student should take responsibility for one subsystem for the tasks below. Work independently at first, then review each other's work and fix any issues that you find - similar to how it may work for a real project.
2. Draw a use case diagram for the carpark system.
3. Draw an activity diagram covering all cases of
(a) an employee trying to reserve a carpark.
(b) a car trying to enter the carpark.
4. Draw the system sequence diagrams associated with the activity diagrams.
5. Draw the class diagram which covers all the situations described in the carpark system, showing inheritance, association (aggregation and composition as necessary) and multiplicity. Include all attributes and operations/methods.
State any assumptions that you have made.