Milestone 7: Requirements

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

You must watch the Development Methodologies Lecture before doing this Milestone.

This will be the main requirements document for your project. If you were charging the client for your work, this document would form part of that contract, specifying exactly what features your software will implement. The other part of the contract would be the payment details.

The document includes the detailed design you made before (so, embed or add links to those pngs) but extends on that with detailed descriptions of all the desired features. Try to list them roughly in the order in which they will be implemented. Also, if your client has different preferences over features (some are much more important than others, which might not get implemented) then mark the features accordingly.

Your requirements document will usually contain a few items that are beyond the scope of this class. That is, these are features I do not expect you to implement for this class.

For example, if you are building an email app, you might have:

  1. user can login
  2. download user's email to app
  3. display emails on main screen in list view, see Design Image #1 (you link to it)
  4. compose email (DI #2 link)
  5. send email functionality (talk to SMTP server)
  6. CRUD contacts (DI #3 link)
  7. download contacts from server and show in contacts screen
  8. app looks good on phones
  9. displays all messages even when offline
  10. and so on..

The requirements might evolve slightly as you make decisions as to what works for your app. However, make sure that the requirements documents stays up to date with the current development plan.

The items on this list are also close to the programming Issue items you will be adding to your GitHub Issues, and assigning to team members. For example, item 1 can become its own issue: "Add login screen" along with a "Log user into IMAP server". Item 2 then becomes "Download emails from IMAP server" and "Store emails in local SQLite database". Every week or so, you will look at the next requirement(s) that need to get done, break them down into programming Issues, create then on GitHub, assign to a team member. Repeat.

After the full list of requirements is done, you will then decide on the set of features you will implement for you proof of concept milestone, due at the end of the semester. You will also create one GitHub Issue, with label:enhancement milestone:proof-of-concept, for each feature you plan to implement by the end of the semester. Since this is a proof-of-concept (we are seeing if we can use the technologies), some of your Issues might describe which technology you will be using, others will be standard issues described from the user's perspective. For example, for the email app above you might have issues such as:

  1. Deploy to Google App Engine. Using their Java framework.
  2. Users can login.
  3. Use the App Engine Mail API to send a message, and to receive a message.
  4. Displays received email to user.
  5. User can enter some text and then send it as an email.
  6. Integrate Bootstrap into login and email pages.
  7. Store message text in google cloud datastore

Deliverables

  1. Make a Requirements wiki page and list your requirements there.
  2. Each item should succinctly explain a small feature, or part of it.
  3. Each one will have a number. You can add sub-numbering, 1.1, 1.2, 1.2.1, etc. if you want.
  4. Add all the proof-of-concept Issues to your GitHub Issues with label:enhancement, milestone:Proof Of Concept. These are what you will implement by the end of this semester. We will discuss these in our next meeting and come to an agreement (I might add/delete some of them).

Checklist: formatted for easy cut-n-paste to a GitHub Issue.

- [ ] Create Requirements page
- [ ] All features are numbered
- [ ] All the major features required by the client are covered in the list.
- [ ] The order roughly matches the preferences of the client, or features have been otherwise marked to reflect preferences.
- [ ] Features are described in enough detail so as to be unambiguous.
- [ ] All the proof-of-concept issues have been added to Issues and associated with proof-of-concept milestone.
- [ ] Detailed Design images are linked or embedded in the wiki page, and hosted at github.
- [ ] The wiki page is 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

Grade is 100 minus the total points lost. Standard curve: A=90-100, B=80-89, C=70-79, D=65-79, F=<65

Assessment (Points Lost)
Area Excellent (0-10) Good (11-20) Bad (21-35) Failed (> 35)
Feature Coverage All client requests included.
All teacher requests included.
Includes very ambitious features: beyond what might be required for this course
Most client requests included.
Some teacher requests included.
Some client requests included.
Some teacher requests included.
Minimal feature set.
Details Provided Every feature explained in great detail
with hyperlinks to Detailed Design images
no ambiguity
Every feature explained in some detail
with hyperlinks or embedded Detailed Design images
little ambiguity in what needs to be implemented
Features listed with little detail
few or no Detailed Design images
some ambiguity
Features listed with minimal detail
no Detailed Design images
highly ambiguous
Writing Grammatically correct, easy to understand English A few bad or confusing sentences Very hard to understand Nearly Impossible to understand. Many errors.
Deliverables All done Minor things missing Some things missing Most of them missing