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.