# Final Submission

At the end of the term, we will review your entire project. This section describes what you will be required to submit.

Your final submission should reflect all the work that you did during the term. You can and should be working towards these items incrementally. In the final weeks of the course, you should focus on making sure that documentation is updated and reflects what you actually accomplished!

# GitLab Contents

Your GitLab project should contain the following:

# README file

Your top-level document should serve as a table-of-contents for the rest of your content.

It should include:

  • Product title
  • Product description
  • Screenshot and/or introduction video
  • Team names and contact info
  • Links to user documentation (see below)
  • Links to design documentation (see below)
  • List of releases (bullet list linking to your release notes)
  • Links to meeting minutes and individual developer journals

# Documents

Additional/expanded documents, which are stored as GitLab Wiki pages. They should include:

  • User documentation
    • Instructions on how to install your product.
    • Guidelines on how to use your main features. If they are complex, you should include diagrams or screenshots.
  • Design documents
    • Revised, up-to-date versions of your persona and prototypes.
    • Class diagrams for entities, use cases and controllers for your main features (see Clean Architecture diagram).
    • A high-level component diagram showing your application structure.
  • Reflections
    • A Wiki page that reflects on what you accomplished this term (max one-page).
    • Discuss the software engineering practices that you used:
      • What "best practices" did you adopt? Which ones were effective? Which ones were not effective?
      • How did you as a team adapt or change as the project progressed?
      • In your next project, what would you do differently?
    • Discuss technical/design challenges:
      • What design/solution are you particularly proud of, and why?
      • What was the most difficult technical challenge you faced as a team, and how did you overcome it?

# Source tree

All of your code should be committed and merged to main. Requirements must be realized on the main branch.

  • Your project should be buildable from main.
  • Installers should be buildable from main using Gradle tasks. If there are manual steps required to build your project, they must be documented (and clear to the TA grading it).
  • Unit tests must be included for all entities, use cases and controllers.

# Updated project details

Your issues list should accurately reflect the status of your source code.

  • Issues are assigned to the appropriate sprint milestones.
  • Issue status is correct i.e. completed and merged features should be marked as closed in GitLab.
  • Note that it's acceptable to have open issues, but they should not be assigned to a milestone (and related code should be on a feature branch, not merged back into main).

# Assessment

You will be graded on the documents above, as well as your final product release. When evaluating your product, marks will be assigned based on how well you have met project objectives.

  • Completeness: Is your application "complete?" Did you complete the mandatory requirements? Did you design and implement additional features to address the user's problem? Does your application feel ready to be released to a user or published on an app store?
  • Utility: Did you clearly identify your user and their problem? How well does your application meet its intended purpose? Does it solve the problem adequately for your user? Would this be their preferred solution?
  • Design: How well-designed is your application? This includes how easy it is to use, and how appealing it is for your users. Supporting features could include keyboard shortcuts, labelled menus, appealing colour scheme, animations, visual layout.
  • Difficulty: You should be stretching your abilities with this project. Was this a challenging application to design and build? Did you solve interesting technical problems? How novel is your solution?

See the Project Submission rubric in Learn for the mark breakdown.

# How to submit in Learn