P6: Final Report #
Deadline: Apr 06, 11:59pm Eastern Time
Requirements #
The final report document should be a PDF document. Formatting requirements: 8–12 pages (including the figures, but excluding acknowledgements and references); letter size; main text font size should be at least 11pt.
The document should include the following sections.
App Description #
suggested length: 1 page
Using one paragraph and a few screenshots, describe the app you built and its key features. This should be similar to a front page of the app in the app store.
Development Process #
suggested length: 1-2 page(s)
- Referencing to the timeline you set in the project proposal, document what milestones/tasks were completed during each period.
- Document a changelist of the major changes to the project (functional requirements, non-functional requirements) compared to the proposal.
Software Requirements #
suggested length: 2-3 pages
- List the functional requirements implemented in your app. For each functional requirement, please also point to the code locations (e.g., a package or class) where that requirement is implemented, and the tests for that requirement if you wrote any.
- List the non-functional requirements achieved in your app. They should be specific enough to enable us to verify whether or not your app supports them in a measurable way.
- Note: there is no limit on the number of functional/non-functional requirements, so please simply include all the items that are completed by the time of submitting this report.
Architecture #
suggested length: 2-3 pages
- Identify 2 architectural styles used in your app. For each of them:
- Point out the code locations corresponding to it.
- Describe the subsystems/components and their interactions, with the help of appropriate architectural views (e.g., component diagram and/or sequence diagram).
- Discuss the rationale for using this architectural style, e.g.,
- how it reduces coupling between components and improves cohesion within components,
- how it can accommodate future requirement changes,
- what non-functional requirements it can improve,
- why it is used instead of alternative styles.
- You can choose from the following list of architectural styles:
- Pipe-Filter
- Layered
- Repository
- Implicit Invocation / Event-Driven
- MVVM / MVC / MVP
- Server-Client / Microservices / Serverless
- Process-Control
- if you want to describe a style that is not in the list, seek approval from the instructor first.
Design #
suggested length: 2-3 pages
- Identify 2 design patterns used in your app. For each of them:
- Point out the code locations corresponding to it.
- Draw a class diagram for the part of your code using the design pattern.
- Discuss the rationale for using this design pattern, e.g.,
- how it reduces coupling between components and improves cohesion within components,
- how it can accommodate future requirement changes,
- what non-functional requirements it can improve,
- why it is used instead of alternative patterns.
- You can choose from the following list of design patterns:
- Structural patterns: Adapter, Composite, Decorator, Facade, Bridge, Flyweight, Proxy
- Behavioral patterns: Observer, Template Method, Iterator, State, Chain of Responsibility, Command, Mediator, Memento
- Creational patterns: Factory Method, Abstract Factory, Builder, Prototype, Object Pool
- some of the trivial patterns (e.g., Singleton, Strategy) are intentionally excluded from the list; please focus on the non-trivial and more interesting patterns.
- if you want to describe a pattern that is not in the list, seek approval from the instructor first.
Acknowledgments / References #
These two sections do not count towards the page limit.
Acknowledge any help you received from others during the project and writing the report, which may include your classmates, friends, stakeholders you interviewed, or generative AI tools you used.
Cite the references used in the report (e.g., papers, books, websites, etc.).
Submission #
Submit the PDF on Learn > Submit > Dropbox > P6: Final Report. Your file should be named as p6-XXX.pdf where XXX is your team name or project name.
Grading Rubric #
60% of the points are given based on subjective factors: adhering to formatting requirements, having the required sections (with adequate content), etc. The rest 40% of the points are awarded based on the aesthetics values of your report: clarity of the writing and drawing, whether the design (architectural styles and design patterns) is logically sound and well-thought, etc.
Feedback #
We will provide feedback on your report via written comments on Learn.