Iteration 1 Details for MPCS 51205

Each iteration will deliver an incremental accretion of work toward the final project deliverable.  Some assignments will require you to work individually and each team member will submit his or her deliverable, and other assignments will require you to work as a team and submit a single team deliverable.  Generally (see specifics within each Iteration), each student will be responsible for delivering some piece of the work (documentation, code, etc.).  You will be evaluated on the clarity and depth of your analysis of these and other deliverables.  "Deep Thinking" as well as "Shallow Thinking" are generally obvious.  Deep Thinking requires time and....thought.

Unless use of a tool is specified, you may take pictures of whiteboards, papers, napkins, etc. as submission artifacts.  From a remote collaborative design perspective, previous teams have happily leveraged free tools including excalidraw.com, which allows for collaborative brainstorming among remote team members.  However, some artifact deliverables will need to be in the form of formal models.  When a formal artifact is required, it will be so specified.

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

Iteration 1   Due: 5:00 pm, Monday, October 23, 2023

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 design. 

Deliverable One:  Strategic Design and the Domain Vision Statement

As a team, and based on the project requirements described here, produce a draft Domain Vision Statement (see Evans pp. 415ff.) to describe what your core domain model (this is the strategic part of the model that brings central value to the organization) will provide,  from a competitive point of view.  Discuss 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 (such as ebay)?  This is your focus in this one-page vision summary.
  Another way to think about this is:  what is it about your anticipated core design, that once implemented, will cause your solution to get 4.9 stars from users, 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 a group of business stakeholders and potential investors.  They are not going to care that the XYZ Framework version 14.8.6.4.7 is "really the bomb" because it utilizes Zahooowzie widgets.

Deliverable Two:  High Level Architecture

As a team, and based on your understanding of the requirements thus far, produce a draft Context Map that identifies the bounded contexts (cf. Evans pp. 328ff.) that you can envision in the system requirements. 
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," and over time, a strategic Microservices architecture.  You can depict this in terms of non-intersecting circles or boxes.  No technologies should be indicated (yet) for a bounded context (of course you are free to begin thinking about this). 

The main goal is for us to see what high-level bounded contexts you have identified.
  Remember, your goal here is to communicate your conceptual architecture.  Ubiquitous language analysis and domain models and technologies will follow. 

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 communication 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 Iteration One FYI).  Then, get together (either in person or virtually) and share and discuss different approaches.  You will soon discover that a great deal of your conversations are about granularity.  This is part and parcel of the essential complexity of this mental effort.  That's ok.  Talk your way through it and come to some consensus.

You may use the Community Edition of Visual Paradigm or ArgoUML or OpenModelSphere or Dia or Omnigraffle to produce your drawings, in addition to snapshots of whiteboards, including remote whiteboards such as excalidraw.com, etc. 

Deliverable Three:  Finalized Team Membership & Name

Choose one of your teammates to send an email to Professor Shacklette, cc'ing all TAs and Graders with (a) a final list of your team members and (b) a name for your team.  NO team may have more than 4 students.  Each team is required to create a name and communicate that name.  The name can be anything you choose, but you have to decide on one.  In the past, teams have chosen names such as:  Cubs, Cubbies, White Sox, DaBears, RootinTootinTexans, etc.  Feel free to be creative.

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.

Submission:

For Iterations:

Have your designated Team Lead upload your team's IterationN files and any supporting materials to the repo. Please include a README text file that contains any instructions or additional details for the TAs to assist with grading.

Setup:

When you open the invitation URL in a browser tab, you will have to complete the following steps:

Github may ask you to grant permission for GitHub Classroom to have access to your GitHub account. If you are asked this question, you should say yes and grant access to Github Classroom.

You must click “Accept this assignment” or your repository will not actually be created. Do not skip this step!

If you run into any issues, please ask for help.