Reference no: EM132496181
CMS3405 - Advanced Software Development - University of Huddersfield
Assignment Aims
To use the GUI components, event-handling, and thread management facilities provided by the Java class libraries to develop an interactive system for object manipulation; to apply appropriate Design Patterns in the design and creation of that software; and to explore Distributed Object Technologies as mechanisms for the further development of the system architecture.
Learning Outcomes:
This coursework assesses the following learning outcomes (listed in the module specification):
Critically analyse a range of techniques for advanced OO programming.
Evaluate methods for the development of real-time, concurrent, and distributed software systems.
Design and implement complex data structures, using appropriate methods of encapsulation, inheritance, polymorphism, and genericity.
Model advanced real-time, concurrent, and distributed software systems as sets of objects, and defend the appropriateness and consistency of the model.
Implement such models using event-based and object-oriented techniques as appropriate.
Implement contractual obligations and apply appropriate verification and validation techniques.
Assessment Brief
Background
A local college has decided to rent out its rooms during evenings, weekends, and holidays as a way to generate extra income. It hopes that local clubs and societies may be interested in booking rooms for meetings, rehearsals, to play games, etc. Management has decided that a software system is required to allow three Booking Clerks and one Room Manager to view the state of the system at all times. You have been asked to develop a prototype desktop system that uses a shared memory model (i.e. a concurrent system) to provide the functionality required.
Requirements You will need to:
• decide on the data structures to be used to model the state of the system.
This data model should capture the rooms, their size (number of seats), type (computer lab, tutorial room, or lecture theatre), and availability (each evening during term time, or AM/PM at weekends and during holidays).
• design a suitable user interface for use by the Booking Clerks. This should show the availability of rooms and allow the clerk to add details of bookings (who has made the booking, their contact details, and any notes about the booking). Search facilities should also be considered, for example to find all available computer labs on a specific evening, or all tutorial room on a specific (non-term-time) day.
• design a suitable interface for the Room Manager. This should allow the manager to add and remove rooms to/from the system, view the availability of rooms, mark rooms as unavailable (e.g. rooms to be redecorated or to have computer equipment replaced) for a period of time (days or weeks, as required) and to enter the term dates, such that the system can decide whether or not rooms should be available for bookings during the day.
You are free to choose whatever GUI components you consider appropriate for this system, and to use Java Swing or JavaFX. Appropriate use should be made of dialogs and reporting mechanisms, to maximise the robustness of your prototype.
In the long term the system is to be implemented as a client-server or distributed architecture, to allow the different users to access the system from different locations at the same time. However, for the initial prototype the system you create must be a desktop application with the different interfaces running in separate threads, and it must share access to the system data and update the interfaces in real time to show changes made to the system state by any active user.
Evidence to be Submitted and Weightings
You must submit a written (typed) report to contain the following:
• a discussion of the design of your prototype software system. This should include a detailed description of the data structures used to capture the state of the system, and a discussion of the role Design Patterns have played in the design of the software (i.e. which patterns have been considered, which have been adopted, and an evaluation of how well they have worked). It must also include a Use Case Diagram and a Class Diagram for the final system.
• a discussion of potential distributed or client-server extensions to the system.
This should describe in detail how a client-server architecture could be achieved (e.g. what middle-ware or object broker software would be used, with an updated software design to reflect this).
• a statement of the functionality you have implemented and the testing you have carried out. This should include JUnit testing (where appropriate) and full system testing.
• your Java source code, included in the report as an appendix.
• copies of your Git/GitHub repository logs, showing the commit stages of the development of the application. These will not be marked but are compulsory to allow me to see how well you have managed your development process, and how the code has developed over time. I can tell a lot by looking at these logs, and if there are any telltale signs that the code has not been developed by you then you will have a lot of explaining to do.
Attachment:- Advanced Software Development.rar