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.  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, Monday, December 2, 2019

This is the final Iteration before your delivery your coded auction system.  You will have two weeks to produce this fourth 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:  High Level Architecture--Revisit:

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. 

Deliverable Three:   Revised User Stories for each Microservice

Modify your user stories to reflect the planning changes you have encountered.  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 fairly 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 "fourth iteration model".  Your code base should now be beginning to 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 Four:  Code Code Code!

You should continue the serious task of coding your solution with this fourth
(and penultimate) iteration.  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. 

You can find a quick index to UML diagrams here.