Iteration 2 Details for MPCS 51205

Each iteration will deliver an incremental accretion of work toward the final project deliverable.  Generally (see specifics within each Iteration), each student will be responsible for delivering some piece of the work (documentation, code, etc.).

See the syllabus for information on grading.  Turning in Iteration assignments is required.  Submit your assignments as a tarball to the subversion repository according to the directions on the syllabus page.

Iteration 2   Due: 5:00 pm, Tuesday, November 6, 2018

High Level Architecture and Initial Domain Model: 

You will have one week to produce this second iteration.  You are to work together as a team on these deliverables except when you are instructed to individually deliver something.

Considering the functional and technical requirements of the system (to be named by the class as a whole), envision the high level architecture and list of candidate classes. 

Deliverable One:  High Level Architecture

As a team, produce (as a sketch or more formally as a UML Class or Deployment Diagram) a high level architectural model of your proposed solution.  This model will be necessarily high level (you don't know enough yet) and will be a rough sketch of your "current architectural approach".  You can depict this in terms of boxes and lines showing interactions.  Your architecture rendition should include key components and their interactions.  Remember, your goal here is to communicate your conceptual architecture.

Deliverable Two:  Preliminary List of Candidate Classes and CRC Cards

Based on the functional requirements of the system and your initial use cases and stories, this preliminary list of candidate classes will contain just enough information about the main domain entities, their major attributes, and the relationships between these entities, depicted in CRC cards.  Your list and associated cards don't need to be complete, they just need to cover enough information to make you comfortable with the primary domain concepts.  You are to work collaboratively in producing this list of candidate classes, whiteboarding various design alternatives, using CRC cards and optionally analysis classes as discussed in class.

Deliverable Three:  Second Iteration of Use Case Model, User Story Map & Iteration Plan

Modify your team use case/story models to reflect the planning changes you encounter. 
Additionally, each member of the team is responsible for (as in the first iteration) individually delivering one new Essential Use Case  fleshed out from the model, along with dependent user stories.  These will detail user intentions as well as system responsibilities.  As in the first exercise, the verbage should be a simple, general, abstract, technology-free and implementation-independent description of one task or interaction of the system you envision.  Try your best to avoid any inherent assumptions about the underlying technology implementation and the user interface yet to be designed. Your use cases should be based on the intentions of a user in a particular context, rather than on the concrete implementation by which the purpose or intention might be carried out.  Your use case description should be both meaningful and descriptive from the point-of-view of users in some role or set of roles as they derive value from a system that will  embody the purpose or intentions underlying the user interaction.

Deliverable Four:  Code

Your final requirement for this iteration is some actual code and tests that investigate some of the capabilities of a few important classes that you have identified thus far.   The purpose of this code is to become comfortable with your coding environment, the source code management system you will use, coding collaboratively (if not in physically together pairs), and finally becoming comfortable with deployment of code.  This code is not intended to be the final version of any of the classes you choose to implement.  Feel free to stub out whatever functionality you don't yet have time for or understand.  This first "code release" is intended to represent a "first stab" at several collaborating and central classes.

You may find the following online resources helpful as you work together to produce these deliverables:

http://guide.agilealliance.org/guide/crc.html

http://agilemodeling.com/artifacts/crcModel.htm

http://css.dzone.com/articles/crc-cards-primer


You should also begin to contemplate your user interface.  You may find the following sites helpful:

http://getbootstrap.com/

http://learn.shayhowe.com/html-css/

http://www.codecademy.com/

You can find a quick index to UML diagrams here.