Simulation
CSSE 221 – Fundamentals of Software Development Honors
Fall 2008–2009
Work on this exercise
with a team of three or four.
- You will choose your own teammates (see below).
- All team members must participate in all the deliverables,
but division of labor of subparts of a deliverable is allowed.
- For example, all team members must participate in developing the overall UML class diagram,
but it is OK to have each team member flesh out the UML details
of their "own" classes.
- Another example: dividing up the coding is both allowed and appropriate.
- At regular points throughout the project,
and at the end of the project,
you will complete surveys on Angel to evaluate your teammates' performance
and to reflect on your project experience.
- As usual, don't hesitate to ask questions
of the student assistants, classmates, or instructor.
Goals
The goals of this exercise are to apply and hence reinforce your understanding of:
- How to work effectively in a (small) team
- Using data structures
from the Java Collections Framework
- Writing a Problem Statement and Proposed Solution
- Developing a Graphical User Interface (GUI)
by using Swing components
and event-driven programming
- The use of UML class diagrams
to brainstorm/develop and then communicate designs
- Implementing by using documented stubs
and an iterative enhancement plan
- Pair programming
and other techniques of Extreme Programming
Overview
Working in teams of three or four,
you will design and implement an ambitious project, partially of your own choosing.
The project must satisfy the following:
- It must be a simulation or animation of some real-world process.
- It must have an interactive component (changing parameters, for example).
- The GUI should be intuitive to use -- for example, I can use it without verbal instruction.
- It must be educational, that is, it must help the user of the simulation learn some concept.
- It must make non-trivial use of 2 non-array data structures.
- An ArrayList can be one of the two, if you want -- just not an array.
- Your instructor must approve your choice of application, after discussions with you.
Your team must use good practices throughout,
including providing the required deliverables.
Instructions and Deliverables
- Form a team of 3 or 4 students.
Email me (your instructor) the names of your team members,
carbon-copying them on the email to ensure that they are in agreement.
- Or, email me indicating that you would like me to place you on a team.
- I reserve the right to add a team member to any team-of-3 as needed.
If you wish, suggest a short, unique team name.
After you form your team and tell me its composition,
I will create a Subversion repository for you called
csse221-200910-Simulation-TEAMNAME
where TEAMNAME is a name that I choose for your team
(possibly based on the team name that you suggested to me).
I will email you your TEAMNAME.
- Reach agreement with your teammates on a two-sentence description
of what you want to simulate/animate and what it teaches.
Email your description to me for my tentative approval.
- Create an Eclipse Project called Simulation in your repository.
- Create a deliverables folder in the project
for all the non-code, non-Javadoc documents in the following.
- Make sure now that all members of your team can access your team repository and its folders.
- Develop a
Problem Statement and Proposed Solution.
- Your instructor must approve this document.
- It will form part of the Executive Summary to be completed at the end of the project.
- All the documents in this project are living documents --
they can, and should, be updated throughout the project as needed.
- Develop a Project Plan
that includes an Iterative Enhancement Plan (IEP)
for developing the code in stages.
- Include dates for each deliverable,
including the delivery date for each stage of your IEP.
- Develop a
Requirements Document.
- Write Acceptance Tests.
- Design your project using a UML class diagram.
- Use a tool like UMLet
or Violet.
- Publish each version of your UML class diagram as a PNG, JPG or PDF
so that I can read it regardless of what tool you use.
- Implement the project.
- Use your IEP to stay on track.
- Follow these Extreme Programming practices.
- Use pair programming for at some, but not all, of your coding.
- Maintain Coding Statistics.
- Write unit tests using JUnit where practical.
I expect at least some JUnit tests.
- Write an Executive Summary.
At regular points throughout the project,
and at the end of the project,
you will complete surveys on Angel to evaluate your teammates' performance
and to reflect on your project experience.
Grading Rubric
I will fill in this section during break.
Rest assured, however,
that a good grade requires that you both use good practices and produce high-quality deliverables.