New York University

Computer Science Department

Courant Institute of Mathematical Sciences


Course Title: Software Engineering                                                                            Course Number: g22.2440-001

Instructor: Jean-Claude Franchitti                                                                                Session: 9


Team Project (Part 3)


1. Conjecture


As part of the team project (part 1), you developed a high-level description of your project application, a business model, and an overall system specification. In the second part of the project, you focused on designing “portable” data for your project application using UML. In this third part, you will need to perform architectural analysis and develop an “agile” analysis model for your project application, and for each one of the application services you selected in your project proposal, you will need to finalize a design model, and plan two or three iterations per service to complete your project implementation within a maximum of three weeks. You will then implement and deploy your project application using agile methods and tools.


2 Deliverables


Deliverables for the third part of your project are as follows. Words shown in italics below relate to Agile terminology and should be interpreted in that context:


  • Develop an iteration plan and an associated teaming structure for your project application. Document your initial expectations of the teaming “effect” on this part of the project, and comment on the actual effect as you conclude this exercise.
  • Using architectural analysis techniques, develop Use Case Realizations for your project’s Use Case Model. Comment on the differences between your approach and the traditional RUP approach from the standpoint of artifact production, methodology, and team collaboration.
  • Put together an Analysis Model that supports your Use Case Realizations. Comment on the differences between your modeling approach and the traditional RUP modeling approach.
  • Define and document an architecture for your project application that clearly identifies the packages, design patterns, frameworks, architectural styles, layers, and architectural mechanisms that you plan to use as part of your design model in the next part of the project.
  • You may assume that the resource, time, and quality variable are imposed on you for this part of the project, and revisit/refine the scope of your previously devised iteration plan to layout an XP release plan and subsequent iteration plans for your project. Plan by time by multiplying the number of iterations by the project velocity to determine how many user stories can be completed. As you go along, use project velocity to determine if an iteration is overbooked and move user stories to future iterations or adjust the project scope as necessary.
  • Based on work performed as part of the earlier phase of your project, come up with an appropriate system metaphor and put together a design model that emphasizes simplicity and leverages component-based software engineering techniques. Use spike solutions to explore potential solutions to tough technical or design problems and reduce the risk of a technical problem or increase the reliability of a user story's estimate.
  • Select and describe an XP implementation testbed for your project and state agreed upon coding standards. Your testbed should rely on open source tools preferably (e.g., ant, JUnit, etc.) Your XP implementation approach should emphasize pair programming, refactoring, and test driven development including user acceptance testing. You are not required to use a continuous integration platform for this project (e.g., Cruise Control), but it is recommended that you simulate frequent integration. Your model of pair programming may involve distributed agile development as needed and you should develop pair rotations with or without a schedule. You are not required to perform optimizations as part of this project phase.
  • As part of the documentation required for this phase of the project you should: (a) document your revised project concept requirements based on your scope adjustments, (b) document your XP release plan and subsequent iteration plans (i.e., user stories or use cases to implement in your iterations, priorities assignments, amount of work that pairs are expected to accomplish in a given period of time, medium priority points to do “as time allows”, etc.), (c) document the work breakdown for each application service implementation (i.e., engineering tasks assignments for pairs, code to complete for each task, unit and integration tests to implement and perform, etc.), (d) document your application and application infrastructure design model(s), (e) for each iteration, you should report what got done, what didn’t, and what tests show, and (f) document (as needed) the software developed in this phase of the project.


3. Project Submission Guidelines


  • Project documentation should be submitted both electronically and in printed form. You need to submit the printed form for quick review and marking as well as the electronic form.
  • Your electronic submission should be in the form of a zip or tar archive containing all the necessary documents and model (*.mdl, *.vsd, *.xmi, etc.) files. You will also need to include a “readme” file mentioning the name and version of the languages, platforms and tools that were used as part of your XP development testbed, and/or to generate your project artifacts.
  • The electronic version of your project assignment should be forwarded to the course TA by email.
  • Inquiries about the project should be forwarded to the TA and/or course instructor.