Assignment 2: Architecture and DesignValue:30%Due date:04-Oct-2013Return date:25-Oct-2013Submission method optionsHand delivery (option applies to Internal only)
Alternative submission method
This assignment is intended to apply and consolidate skills acquired in the design discipline through development of a candidate architecture and a detailed design for a single use case of the case study, and to express the results through the relevant UML diagrams.
The assignment revolves around developing an architecture for the Case Study used in Assignment 1, and developing a detailed design to support the critical, core, (risky, difficult – CCRD) use case involved in the Case Study. The specification for the CCRD use case may be found as a separate PDF document in the Resources section of the subject’s Interact site.
Part A: Architecture (30 marks)
- Develop a software architecture for the Case Study.
- Identify the major ‘design forces’ affecting the system, and discuss the ‘architectural response’ you think most appropriate for each one. (IE prioritize the most important 2 to 5 system wide requirements, and identify the design approach that you think will address each need.) Use the accompanying ‘Architectural Notebook’ template to record your thoughts.
- Develop a high level component view of your architecture and demonstrate how it will support the CCRD use case with a ‘use case trace’.
- Show how your architecture will map to the physical deployment environment with a deployment diagram.
Part B: Detailed Design – Object Oriented Design Principles (30 marks)
- Develop a detailed design to support the CCRD use case specified in the accompanying document: ‘Asg2 Use Case Specification’. (Hint: Follow the process for use case realization and develop analysis class and sequence diagram describing the use case before adding the details of UI interactions.) The detailed design should be consistent with the architecture you developed in Part A, and illustrate how that architecture will work to support the CCRD use case. The detailed design should include:
- A logical view (class diagram) showing all classes required to support the CCRD use case, including all required attributes methods, and inheritance, compositional, or using relationships.
- A dynamic view (sequence diagram) showing in detail how these classes will interact to support the CCRD use case. The sequence diagram should show all required messages (method calls) between objects, and it should be consistent with the class diagram, and the user interface proposed in Part C.
- Discuss your detailed design, explaining what principles you applied, and how you applied them to arrive at your final design.
Note: your detailed design must be consistent with the interface you propose for Part C and Part D.
Part C: User Interface Design (25 marks)
- Develop a design for a GUI interface to support the CCRD use case used in Part B. Use a standard set of graphical ‘widgets’ such as those supported in .NET or Java Swing.
- Identify all the functional requirements the GUI must support.
- Present your GUI as either a screen shot of a GUI prototype, or a ‘storyboard’ or ‘wireframe’ diagram illustrating the interface.
- Discuss your design in terms of Norman’s principles.
- Draw a state diagram modelling the behaviour of the high level GUI class representing the user interface. In an accompanying table, identify what GUI elements are active, and what actions are possible in each state.
Note: It is most important that Part B and Part C are consistent.
Part D: Data Management (15 marks)
- Develop a persistence mechanism using data access objects for the domain objects involved in the CCRD use case.
- Map the information required by the relevant domain object classes onto a set of relational database tables in third normal form. Specify the table design.
- For all the associations that exist for the chosen domain object class, discuss how referential integrity can be maintained.
- Design data access object (DAO) classes to support interaction between the object oriented case study application and a relational database.
- Specify the attributes and operations for these data access object classes.
- Ensure that the sequence diagram you developed for Part B shows all required interactions with and between the classes of the persistence layer. Also show interactions between the persistence layer and the database.
Note: It is most important that Part B and Part D are consistent.