Milestone 8: Architecture

Due Date: October 21 @11:59pm
Grading: Team

You must watch the Architecture lecture before working on this milestone.

Now that you are comfortable working with your chosen framework, you will write a document that roughly describes the big parts of your code. The structure will depend a lot on your chosen framework.

If you are building a webapp then you will probably list the set of database tables (models, for example: rails:ActiveRecords, meteor:Collections, etc), the set Views, and the set of Controllers. For webapps you should also list the of your URLs app, and what lives at each one.

If you are building an Android app then you will list your Activities or Fragments, along with their corresponding Views, as well as your model Java classes. You will also list your database tables (firebase, sqlite, localStorage, etc) if you need persistence, which almost everyone does.

Think deeply about your design. Go over the most common use-cases and check how those will be accomplished in code: which methods will be invoked? do the methods have references to all the objects they need in order to perform their job? Remember that your main goal is de-coupling the various classes: the fewer references (method arguments, global variables) they need, the easier your life will be.

Deliverables

Add an Architecture document to the wiki. It should contain:

If webapp:

  1. Is it a SPA or traditional? or mix? Explain. (My web application development lectures explain the difference.)
  2. List of URLs you will implement. Explain any search arguments in English. Link (actual hyperlink) each URL to the page it shows in your Detailed Design milestone.
  3. If implementing a REST API, document it. List all methods, parameters, and give English description of what they do.
  4. The Views of your app. Typically a webpage includes multitple views. For example, this webpage has a Header, Menu, and Content views (at least).
  5. The Database schema: set of tables/documents with list of attributes and their types. Describe each table and attribute in English.
  6. List of common queries you expect will be needed. Do any of then need to join tables?

If mobile or desktop app:

  1. The Models for your app. These could be UML class diagrams, or just models with attributes (with type) and descriptions (in English).
  2. How will your app maintain state? in memory? or database? or both? Note this in your Model Classes.
  3. If you are using a db-backend (say firebase) then include the Database schema: set of tables/documents with list of attributes and their types
    • List of common queries you expect will be needed. Do any of then need to join tables?
  4. The Views of your app: name, describe, link each (actual hyperlink) to its image in your Detailed Design milestone if application. Typically, one page in the app is composed of multiple View elements.

For both:

  • Are all the images (if any) embedded in the wiki page? and hosted at github?
  • Is the wiki page easy to read?

Do not make any changes to the wiki pages used for this milestone after the deadline. Wait until after you receive the grade for the milestone to make any further changes to these pages.

Grading Rubric

Assessment (Points Lost)
Area Excellent (0-10) Good (11-20) Bad (21-35) Failed (> 35)
URL space (if applicable) Most URLs shown
Parameters shown
Some URLS shown
Some or no parameters show
Few URLs shown
Few or no parameters
Nothing shown
Model/Schema Most Entities named and described
Most attributes named, typed, described
Some Entities named and described
Some attributes named, typed, described
Few Entities named and described
Few or no attributes named, typed, described
Nothing shown
Views Most views named Some views named Few views named Nothing
Quality of Document Everything explained well. Easy to understand. Some explanations. Minimal explanations. No explanations.