Project Proposal
Software Architecture
Project Context
Throughout the software architecture course, you have learnt about a subset of quality attributes of concern to software architects. You have also been exposed to a number of techniques to satisfy these attributes. Now, as the capstone project, you are required to
• propose a non-trivial software project,
• identify the primary quality attributes which would enable success of the project,
• design an architecture suitable for the aims of the project,
• deploy the architecture, utilising any techniques you have learnt in or out of the course, and
• evaluate and report on the success of the software project.
The successful completion of the project will result in three deliverables, namely,
i a proposal of a software project, the proposal must clearly indicate and prioritise two or three quality
attributes most important to the project’s success,
ii the developed software, as both source code, and a deployed artifact, and
iii a report which evaluates the success of the developed software relative to the chosen quality attributes.
Your software deliverable will include all supporting software (e.g. test suites or utilities) that are developed to support the delivered software.
1 Introduction
We have looked at several core quality attributes in this course, and will continue to look at more over the remainder of the semester. These attributes were selected because they are key concerns of many realworld software projects. In this project, we will have an opportunity to explore some of the fun of industry. You will take the role of an entrepreneur, software architect, developer, and operations team.
Your first role as an entrepreneur will be to use your creativity to think of a software project that interests you. Your proposed project does not have to be profitable, nor does it have to be unique. If you are struggling to think of a project, consider what annoys you in your day-to-day life. Consider if software
might help ease the annoyance. Alternatively, look at existing everyday software like Netflix, TikTok, VSCode, or others. You are welcome to create off-brand versions of any existing software, there are no marks for whether the software would be profitable or successful. The lone requirement of your project is that, to function appropriately, it must demonstrate two or three of the quality attributes explored in this course1.
Availability The software can always be accessed by end users, either at any time or on any platform, or both.
Deployability The required computing infrastructure for the software can be easily provisioned, including updating both the infrastructure and the software.
Extensibility Features or extensions can be easily added to the software over its lifespan.
Interoperability The software can easily share information and exchange data with internal components and other systems.
Maintainability The software is designed to be cost effectively modified over its lifespan.
Modularity Components of the software are separated into discrete modules.
Reliability The software consistently delivers its functionality without failure. You would need to define what “consistently” means for your system and how it will be measured.
Scalability The software is simultaneously usable by a large number of end users and is economical to deliver with varying user loads.
Security Software that maintains normal operations and functionality even when subjected to attacks. Systems and resources in its environment remain safe and the attacks are detected and mitigated.
Testibility The software is designed so that automated tests can be easily deployed. This is beyond just automated unit testing.
While security may be an appropriate quality attribute to use as the focus of your project, all software systems must be developed to be “secure enough” for the context. Consequently, it is expected that all projects will consider security, even if it is not fundamental to the project’s success.
Once you have settled on a project, write up a proposal for the project, as described in section 2. Before you get too far writing your proposal, please try and discuss the idea with teaching staff, this will help ensure you do not have to re-write it from scratch.
2 Content
Your proposal will answer the following questions:
• What is your project?
• Which quality attributes are most important and why?
• If trade offs are necessary, which attributes have higher priority?
• What are the basic features you plan to implement?
• How will you evaluate whether your project has the important quality attributes?
The proposal should not exceed two pages. The suggested proposal structure is as follows.
Title Name for your project, get creative.
Author Your name and student number
Abstract An elevator pitch to sell the project. This should highlight the quality attributes crucial to the project’s success.
Functionality Summary of the features delivered by the complete software product. This is what would be delivered if you built the entire system. Use this to sell why your project is fun or interesting.
Scope Description of the fundamental functionality to be delivered as theMinimumViable Product (MVP)2. This is what you have to implement so be realistic!
Quality Attributes A more detailed description of the quality attributes and why they are crucial to the project. They should be measurable and/or testable.
Evaluation Description of how you will evaluate whether your project has achieved the desired attributes. This is one of the most important parts of the proposal. It must be clear how the evaluation will be done, and it must be feasible.