Milestone 1 rubric

Personal Android Project

What's included in the first sprint, and how is it graded?

Overview

This is the end of the first sprint of the personal Android project, with a set of deliverables due. In general, the deliverables include project summary elements, as well as high-level design documentation: user stories, a wireframe diagram, and a UML class diagram for the domain model classes of your project.

Most of the tasks in this deliverable are assigned as homework, and are evaluated that way; however, there is also a project value of 25 points (out of 200 total for the project); in addition, up to 5 points of extra credit can be earned for exemplary execution of any or all of the required elements.

All of the items listed below are expected to be accessible/linked to from the project’s GitHub Pages site.

Elements

Project description: 3 points

This should appear on your overview page, and will generally need to be more detailed than in your proposal.

Please use complete sentences and proper grammar.

Intended users and user stories: 4 points

This must be presented as a list (numbered or bulleted), either in the project overview page or in a page reachable by a link from the overview page.

Note: Extreme verbosity, dramatic expression, or poetic form may be amusing to the instructors (and presumably, to you), but it generally won’t earn any extra credit. In fact, if it detracts from the instructors’ ability to understand the who, what, and why of the user story, it may actually work against you.

Wireframe diagram: 6 points

UML class diagram: 8 points

Classes and general requirements

Attributes

For this diagram, the attributes of a class will be taken from the properties of the class, not directly from the fields (which should all be private anyway). That is, if some aspect of the object state is exposed outside the class using an accessor (getter) or mutator (setter) that follows the JavaBeans naming conventions (i.e., getProperty() for a non-boolean-valued accessor, isProperty() for a boolean-valued accessor, setProperty(value) for a mutator), that defines a property, which must be included as an attribute in the diagram.

If there is a getter for a given property, but not a corresponding setter, it is a read-only property, indicated by “{readOnly}” (or “{read-only}”) in the diagram; conversely, if there is a setter but no getter, it is a write-only property, indicated by “{writeOnly}” (or “{write-only}”).

For example, if you have (or plan to have) a class name “Puzzle”, with a method declared (or planned) as public int getMissingPieces(), but without a corresponding setter, then we conclude the following:

(Note that the above conclusions hold even if there is no actual field named missingPieces.)

Given the above, we would include this as an attribute of Puzzle in the class diagram:

+ missingPieces: int {readOnly}

Method operations

Any operation that you have implemented (or plan to implement) as a non-private method—not including accessors and mutators that follow the JavaBeans naming convention—must be included as an operation in the diagram. The operation must be written with these elements, in the order shown:

  1. An access-level/visibility prefix;

  2. The operation (method) name;

  3. An opening (left) parenthesis;

  4. Any parameters, listed in order and separated by commas (each parameter should be written as the parameter name, followed by a colon, then the parameter type);

  5. A closing (right) parenthesis;

  6. A colon character (omit for a constructor operation);

  7. The return type (omit the type for a constructor operation).

For example, if the Puzzle class will have a method declared as protected void scramble(boolean extreme), it would be included in the diagram as

# scramble(extreme: boolean): void

Constructor operations

Any non-private constructor (not including the default constructor generated by the compiler when no other constructor is declared) must be included as an operation in the diagram, and must be written with these elements, in the order shown:

  1. An access-level/visibility prefix;

  2. The constructor name (which is also the class name);

  3. An opening (left) parenthesis;

  4. Any parameters, listed in order and separated by commas (each parameter should be written as the parameter name, followed by a colon, then the parameter type);

  5. A closing (right) parenthesis.

For example, if the Puzzle class has (or will have) a constructor declared as public Puzzle(int numPieces, int difficulty), it would be included in the diagram as

+ Puzzle(numPieces: int, difficulty: int)

Relationships

Please use “What are the six types of relationships in UML class diagrams?” as a guide for completing the requirements below.

Example

Expanding on the shorter examples from the previous sections, consider a jigsaw puzzle application, in which the domain model classes are Puzzle, Piece, and PieceType.

Our UML class diagram could look like this:

Simple class diagram

Cloud- or device-based services or data: 4 points

Your overview page should include a bullet list of device- or cloud-based services, or data sources, that your application will use. This is expected to be significantly more detailed than in your proposal.

For each one, include the following information: