New York University
Institute of Mathematical Sciences
Course Title: Software Engineering
Course Number: g22.2440-001
Instructor: Jean-Claude Franchitti Session: 9
Team Project (Part 3)
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.
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
- 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
- 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.