P6: Final Report

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.