Iteration 4 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 4   Due: 5:00 pm, December 4, 2023 for all teams

This is the Final Iteration which will include your delivery your coded auction system.  You will have several weeks to produce this fourth and final iteration.  You are to work together as a team on these deliverables except when you are instructed to individually deliver something.

High Level Architecture and Domain Model: 

Considering the functional and technical requirements of the system, revisit your high level architecture and list of candidate classes. 

Deliverable One:  Final Architecture Deliverables:

As a team, continue your development of your high level architectural model of your proposed solution.  At this point, we will expect that protocols and technologies (ActiveMQ, RMI, sockets, TCP/IP, SOAP, REST, etc.) will begin to be detailed in your model. 

Additionally, produce any revised User Stories for your Microservices in scope.  Modify your user stories to reflect the planning changes you have encountered for your final deliverables.  Consider the functional and technical requirements of the system, and your design of the high level architecture and initial domain model.  Based on the functional requirements of the system and your architecture, existing user stories and current domain models, your requirement for this iteration is more code and tests that implement more of your microservices.  At the conclusion of this iteration, your domain models should be well fleshed out in terms of the models themselves.  You are to work collaboratively in developing your code and tests, whiteboarding (and documenting) various design alternatives, continuing to use CRC cards to identify salient classes in your models, finally delivering an updated UML model that will represent your "final iteration model".  Your code base should now be mature, and your tests should be running and verifying the fact that your system is coming to functional fruition.

If there are any user stories left undefined, each member of the team is responsible for (as in the previous iteration) for individually delivering these additional user stories fleshing out the model for whatever microservices they are responsible for (note you do not have to stay with "your" particular microservice.  The team members are free to flesh out whatever stories still need to be written.  These will detail user intentions as well as system responsibilities.  As in the previous iterations, the verbiage should be a simple description of one task or interaction of the system you envision.  Your user stories should continue to 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 Two:  Final coded functioning auction system.

You are to produce the final code for your auction system deliverable
.  You will continue to write tests (coded by hand or developed using an existing harness such as junit, postman, etc.) that verify that your code is producing the results you wish. 

Continue to look at your user stories and design models, and develop whatever remaining classes and APIs are need within this final iteration.  The goal in two weeks is to demonstrate before the class what your team's auction system.  As before, feel free to stub out whatever functionality you don't yet have time for or understand, but of course, at some point soon, stubs need to become functional code. 

Deliverable Three:  Presentation of your team project and Post-Mortem Analysis

This final deliverable brings together all your work and packages it for presentation and deployment.  During the last class, each team will be expected to talk for about 30 minutes, giving a full description of your auction system, including design and implementation, a live demonstration of the system running, and a post-mortem presentation on your project and team experience.  You should begin to prepare with a draft
presentation which will consider the following topics (in addition to anything else you're interested in):

Description of your development methodology & how well (or not) it worked
Context Map and High Level Architecture
Microservice Architecture and Technology stacks (per Microservice)
Pain Points (technical and organizational)
What you thought would be easy that turned out hard
What you thought would be hard that turned out easy
Your Proudest Moment (TM) (aka the breakthrough)
What you thought was the coolest thing you discovered or produced (code, design)

You will deliver this presentation, along with a demonstration of your final project and a walk-through of your code during the final class.


Deliverable Four:  Finish documenting your Architecture Decisions

Referring to Michael Nygard's documentation of ADR usage here and https://adr.github.io and
https://adr.github.io/madr/, tidy up and finish documenting your key architectural decisions.  You should store your ADRs in your github repository.


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.