This assignment is designed to guide the students to move from the problem domain to the solution domain and to expose students to some of the tools common in industry. Specifically you will reverse engineer the code given to you to arrive at some initial design, before extending them. You will also implement and test your design using Java, version control (GitHub) and testing (JUnit) tools.1. Study the Java code given and draw a class diagram. (2 mark)
2. Draw a state diagram and an activity diagram for the following scenario: (2x2 marks)
A lecturer can choose to shortlist or reject an applicant. An applicant must be shortlisted before the administrator can make an offer. An applicant can choose to accept or reject an offer at this stage. If the offer is accepted within 2 days an applicant will be appointed otherwise it will be automatically rejected. An applicant can also choose to reject an offer (explicitly). Please note the client has updated the requirements, since assignment 1. Also, you do not need to show the Tutor in this diagram.
3. Draw an extended class diagram that shows all the classes (including abstract), attributes, methods, associations and multiplicity where: (4 marks)
a) Administrators can add new course offerings. Only one per course in any one semester. (*)
b) Administrator can add lectures specifying day, time and venue (*)
c) Administrator can assign lecturers to the lectures(*)
d) Administrator can add tutorials specifying date, time and venue. Tutorials for each course offering should be labelled T1, T2, …
e) Administrator can appoint suitable applicants as tutors (Note: shortlisting/deleting not handled in this iteration.
f) Administrator can assign tutor to specific tutorials
g) Administrator can admit students and grant exemptions for those with advanced standing
h) Students can enrol into courses for which they meet the necessary prerequisites
i) Students can withdraw from a course until census date (after deregistering from any tute)
j) Students can register (as long as tute is not full) and deregister from tutorials
k) Users can view timetables for any venue, lecturer, tutor or student
(* indicates already completed)
4. You are required to implement all of the use cases above. You may work as a team for this section but for the individual part you must select two use cases each (which are not marked with * as they are partially implemented in the code given).