Given a case study, analyse the non-functional requirements of the proposed system, and define an architecture for the system. Illustrate the static structure of your architecture with logical and deployment views.
TASK
Question 1 – Software Architecture – 80 marks
Given a case study, analyse the non-functional requirements of the proposed system, and define an architecture for the system. Illustrate the static structure of your architecture with logical and deployment views. The case study can be found in the Resources section of the subject’s Interact 2 website.
Part 1 – Non-Functional Requirement (NFR) Analysis – 20 marks
Conduct an NFR analysis for the given case study using the provided checklist as a starting point. Add to the checklist as appropriate for the case study. Present the results in tabular form as follows:
NFR | Question | Benefits | Costs | Response | Strategy | Priority |
Security | Is security a concern?
What sort of different access levels might be necessary? |
Protects the system from unintentional breaches of privacy.
etc |
Makes the system harder to use, more expensive to build. May have performance implications. | Yes, security is a concern, we don’t want customers seeing other customers data, and we don’t want staff access other staffs records. | Authentication and Authorisation | 2 |
Once you have considered all NFRs, rank them in priority from the stakeholder’s perspective. Do not allocate the same priority to any NFRs – make an executive subjective decision and rank them.
Produce a summary of your (at least) 5 most important NFRs. Explain and justify why these are the most important from the stakeholder’s point of view.
Part 2 – Architectural Analysis– 30 marks
Present this in the form of a Software Architecture Notebook with the following headings:
- Goals and Philosophy– identify the key non-functional requirements (e.g. security, reliability, availability, maintainability, compatibility, etc.) that the system is attempting to satisfy.
- Assumptions, Constraints and Dependencies – identify existing or proposed technology environments that will support or constrain the system. Identify external systems and databases with which the system will interact. Note: assumptions, constraints, and dependencies are pre-existing facts: they are observations, rather than the result of a choice.
- Architecturally Significant Requirements – identify key functional/non-functional requirements that have important implications for the technical architecture of the system and say what the implications are for those requirements.
- Decisions and Justifications – Identify the decisions made in determining the technical architecture and user interface technology. Justify these against the key goals and philosophies driving the architecture.
- Architectural Mechanisms – Identify the key strategies that you will implement to achieve the NFRs critical to your application.
- Architectural Style and Technological Framework– state the overall architectural style that you have chosen as the basis for your application and explain why it meets the goals of the architecture. Then identify the technical platform with which you will implement your design and explain why that platform is a suitable choice.
Part 3 – Architectural Views – 20 marks
Review the functional requirements for the system and identify a set of functional components. Review the system-wide services required by the system and identify a set of technical components. Illustrate your analysis with a component diagram showing logical or conceptual functional and technical components.
Analyse the hardware and network layout of your proposed system and produce a deployment diagram showing that layout. Identify execution environments in each of your hardware nodes. Then map the functional and technical components you previously identified into the various execution environments as deployable software components. You may need to divide the logical components identified previously into smaller deployable units representing both horizontal divisions (presentation, business logic, and data layers) and vertical divisions (e.g. customer view, staff view, management view etc).
Part 4 – Reflection – 10 Marks
In your own words, reflect on the value of creating a software architecture. Make sure you
address the following points:
- The purpose of creating an architecture.
- To whom it is meant to communicate
- At what point in the system development life cycle it should be created.
- What value creating an architecture has to the overall development effort.
Question 2 – Database Design- 20 Marks
Given a set of domain objects for the case study, define a set of database tables in 3rd normal form to represent those objects. Identify and discuss any new entity objects that perhaps should be recognised in the domain model.
RATIONALE
SUBJECT LEARNING OUTCOMES
This assessment task will assess the following learning outcome/s:
- be able to describe and apply an iterative incremental software development process.
- be able to analyse and verify system requirements.
- be able to produce and verify analysis and design models for a system.
- be able to evaluate a problem and determine the appropriate architectural style for the solution.
- be able to demonstrate use of a Computer Aided Software Engineering (CASE) tool to document the models in a system.
GRADUATE LEARNING OUTCOMES
This task also contributes to the assessment of the following CSU Learning Outcome/s:
- Professional Practice (Knowledge) – CSU Graduates possess the knowledge and understanding of the discipline and the nature of professionalism required for the given profession or discipline in contemporary societies.
- Professional Practice (Skill) – CSU Graduates demonstrate discipline-specific technical capabilities and self-appraisal required for a beginning practitioner or professional.