#
M3: Design Proposal
Your design proposal builds on your M2 Project Proposal by considering how you will build the system that you described in that document.
The purpose of the design proposal is NOT to define everything in fine detail; it is meant to help identify areas where you will need to do further research, or questions that are still unresolved.
#
What to include
You should have the following sections, where you address the questions listed. At this stage, answers should be relatively short; one or two sentences, and possibly a high-level diagram (e.g., architecture diagram showing the components, or a data diagram).
#
1. Architecture
Assume that you will implement the requirements listed in your M2 Project Proposal.
- Provide a high-level component diagram, showing the structure of your system. You should identify your application, including relevant application components, and any external systems e.g., remote database, cloud service.
- You've been provided with a number of architectural styles. Which one do you think suits your application? (NOTE: this is a trick question. For 90% of you, you will want a layered architecture or MVVM).
- For components outside of your local application, where do you expect them to be hosted? Will they be hosted by some third party? e.g, a cloud service like AWS? A cloud database like MongoDB?
- Are there privacy and security implications to your design? Does being online change how you think about creating an application?
It is completely reasonable to not have identified solutions yet. i.e. you can tell me that you expect to use a cloud service but don't know which one. If you say this though, you should also have a plan on whwen you will do the investigation/research and when we can expect that decision to be made.
#
2. Application Features
- Identify the target platform and OS version you are targeting with your application i.e., Android, iOS, Windows, macOS.
- Describe how you will you test against these platforms; ensure that you have access to hardware and services required.
- Are there any features that you do not know how to implement? Identify risks and features that you need to investigate early in your project.
- Sketch out low-fidelity prototypes of your UI/screens, showing basic functionality of your application. Keep these simple! You need to illustrate basic information and screen flow; you don't need much more detail.
Prototypes can be done in Figma, or some other wireframe tool, or on paper. However, you need to include these diagrams in your actual design document i.e., as screenshots or images.
#
3. External Dependencies
- Are there any local dependencies or libraries that you are planning to use?
- Do you need to identify libraries that can handle functionality that you cannot build yourself? e.g., if you are building a markdown editor, you may want to investigate a library to handle parsing and syntax highlighting instead of building it yourself. It possible, identify these as risks.
You may not have any known dependencies at this point! Don't worry if this is blank, just point out if you do not anticipate any.
#
Where to store this document
Your proposal should be contained in a Wiki page titled Design Proposal
, and linked from the README.md
file of your GitLab project.
#
How to submit
When completed, submit your Design Proposal for grading. Login to Learn, navigate to the Submit
> Dropbox
> M3 Design Proposal
page, and submit a link to your top-level project page.
Proposals must be submitted by 11:59 PM on the listed due date.