Iteration 2 Details for MPCS 51221

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, Sunday, October 31, 2017

High Level Architecture and Initial Domain Model: 

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:  Strategic Design and the Domain Vision Statement

As a team, and based on your use cases and stories so far, produce a draft Domain Vision Statement (about a page in length) to describe what your core domain model (this is the strategic part of the model that brings central value to the organization) will provide, always from a competitive point of view.  Dicuss what aspects of the core domain will provide strategic value, that is to say, what is it about what your are going to deliver that strategically differentiates your solution from solutions of your competitors?  This is your focus in this one page vision summary.
  Another way to think about this is:  what is it about your core design, that once implemented, will cause your solution to get 4.9 stars, whereas your competition's average score is 3.4 stars.  It's this strategic differentiation that we are looking to see articulated.  Advice:  Don't get too technical.  Your audience is business stakeholders.  They are not going to care that the XYZ Framework version 14.8 is "really cool."

Deliverable Two:  High Level Architecture

As a team, and based on your use cases and stories so far, produce a draft context map of the bounded contexts that you can identify in the system problem space. 
This model will be necessarily high level (you don't know enough yet) and will be a rough sketch of your "current conceptual approach towards a strategic architecture".  You can depict this in terms of boxes or non-intersecting circles.  No technologies should be indicated for a bounded context, but if you have some ideas, feel free to put them into the bounded contexts.  The main requirement is for us to see what high-level bounded contexts you have identified.  Remember, your goal here is to communicate your conceptual architecture.   We are looking for bounded contexts you have identified.  Ubiquitous language analysis and domain models will follow.  That said, if you wish to produce some drafts of a domain model within a given bounded context, by all means feel free to do so, but you are not (yet) required to do so.

Your goal here is to identify the bounded contexts in the overall problem domain.  You are not required to identify, at this stage, any necessary relationships between the bounded contexts.  That will come at a later stage of analysis.

This deliverable is first and foremost a TEAM EFFORT.  It is highly conversational.  One approach might be for each team member to individually, as far as preparation is concerned, prepare their "take" on the context map (you are not required to turn in anything individually for Deliverable One FYI).  Then, get together (in person or virtually) and share and discuss different approaches.  Very quickly you will discover why we have been talking about granularity.  This is part and parcel of the essential complexity of this mental effort.  That's ok.  Talk your way through it.

You may use the Community Edition of Visual Paradigm or ArgoUML or OpenModelSphere or Dia to produce your drawings. 

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.

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

Domain-Driven Design Reference

Domain-Driven Design Quickly

GitHub References Points on Domain-Driven Design

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 HTML and REST-based 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.