The goal of this project is to go through all aspects of the software development life cycle in a small team. This will give you real experience in each stage from problem formation, requirements gathering and analysis, design, implementation (somewhat) and testing. You will use UML diagrams, text descriptions, and scheduling tools to create your deliverables.

In this project you will create a small educational game. The game can teach anything you want, but it must teach something. You are the software team creating the game. You should assume other teams exist in your company (marketing sales, tech support, etc...).  These other teams will be stakeholders (people who have an interest in what you're doing). NOTE: These are virtual people, you have to think for them in this project, or you can ask the professor or TA to answer questions to these people. 

Your project should have the  following characteristics:
- It must teach something
- Multiple screens (about 3-7 screens) - A screen can be a setup screen, high score list, game levels, etc... It may be logical to have some screens displayed together (status and game play)
- Data storage and retrieval

Be creative, but keep it manageable

You are encouraged to come up with your own game, however if you cannot think of anything some sample ideas are:

Team Formation (approx 2-4 pages) - 10pts

Goal: During this stage you will form into groups of 4-5 students. You may choose your own teams, however they may be adjusted if necessary to have equal numbers of students in all teams. If you cannot find a team, please see me and you will be assigned to a team.

One challenge of software engineering (and life in general) is making decisions based on limited information. You need to choose a team, but you do not have enough information about the other students in the class to do this well, but you need to do it. To maximize your decision-making ability you will fill out the following form, and then have 20 mins in class to discuss the form and anything else with fellow students to come up with the best team you can.
Team Interview Sheet

Deliverable: A short written document in a notebook including:

You must turn in this (and all future project deliverables) in a notebook as described in Description of the notebook


Software Requirements Spec (SRS) - 20pts

The software requirements specification will add more formality to your team formation. It should give people a detailed idea of the software you're creating, however it does not need to include implementation details/choices at this stage. For example, a requirement can be "We shall store all user information". It does NOT need to specify where (e.g. in a database, in files, etc...). Those are implementation details.

The requirements spec should include:
A sample SRS template.
For the first part of the SRS due 2/11/2009 you should complete SRS sections: 1, 2, 4
For the second part of the SRS due 2/25/2009 you should complete sections: 5,6,7, Appendix B (if anything there)

Notes on Use Cases - Lessons learned from previous classes
Notes on Requirements - Lessons learned from previous classes

Grading Rubric
Also: Management Information Sheet
NOTES:
- Revision history should have names and what they did, not just the Team Name
- Table of Contents should be correct




Implementation Schedule (1-2 pages) - 10pts

Goal: To create a schedule, cost estimation and critical path for remainder of the project.

See description of the software schedule.

Also: Management Information Sheet


Software Design - 20pts

This will be a high level object design of your project.
You will turn in:
Make sure the class diagram is essentially consistent with the CRC cards. Also ensure the other diagrams can be supported by the class diagram. If the sequence diagram says "system A asks system B for an ID". That should be possible from the class diagram. Grading Rubric

Also: Management Information Sheet


Prototype UI  - 15pts

In this deliverable you will produce a UI mockup of your game. This can be in any form that works for you (actual software prototype, PowerPoint, hand drawn screens, etc...). The goal of the UI prototype is to communicate the basic functionality of the system at this stage. In future projects you may have a basic UI prototype to show the basic functionality and rough screen layouts and later a detailed prototype to show the actual look and feel of the project. For this class you need to create at least the basic prototype.

For the prototype make sure to cover the whole system. If you have multiple user interfaces (Administrator and normal user) for example, show both. Also, if there are different screens a user will use, show all of them.

Grading Rubric

Also: Management Information Sheet


System/Integration Test Cases - 20pts

Goal: To produce and run a set of test cases for your project. These test cases will be for a subset of your project, not the whole thing.

You will need to turn in:
   
Unit Tests
System Tests
Helpful Hints:
Grading Rubric

Also: Management Information Sheet

 
Project Team Review (3-5 pages) - 15pts

Goal: To describe your experience working in a team environment. Including lessons learned, how you would work differently in the future and your description of each team member's contribution. For more information, see this more detailed version of the project team review assignment.

NOTE: Each student must submit this individually on Blackboard!


Presentation (approx 10 slides) - 15pts

Each group will present their project for 10-20 minutes. The presentation should include:
  1. Project overview - what software you're developing and how it is used
  2. Explain your user stories
  3. Explain your software designs
  4. Describe your risks and what happened as the class progressed
  5. Describe your team's lessons learned and how you would pursue a team software development task in the future
  6. Demo your software at whatever stage it is in
Take as much as you can from your previous deliverables to make these slides. The presentation slides for 2-4 can be taken directly form your previous deliverables. 1 and 5 are just bullet point summaries of other deliverables.

I will use this form to grade the presentations. It provides more information about the required presentation content.

Also: Management Information Sheet


Grading

The project is a significant portion of your overall grade in the class. Each student is expected to participate equally in the project. Your grade for each deliverable will be partly a team grade and partly a grade on your individual contribution.  If you are having problems with people not participating equally on the team see me EARLY. Do not wait till the end of the semester, at that point there is little I can do.

You will have the opportunity during the class to revise and resubmit most deliverables to achieve a better score if desired.


Description of the Notebook


You will use a single notebook for your group for the entire semester. It should be at least 1.5". Dividers of some sort should be included for the following sections:
    - Current Submission
    - Grades
    - Team Formation
    - SRS
    - Schedule
    - Design
    - UI
    - Test Cases

Current Submission Section
Current Submission is just a log of what has been turned in. It should include a sheet of paper with dates and submissions/revisions. For example, for the first deliverable the paper should have:

Date                   Submission                        Description of changes
1/28/2009          Team Formation                 Initial version
                            Management Info Sheet    Jane Doe

This document should be added to for each deliverable or revision so I know what to grade as "new". Never delete anything from the document, just add to it. For example:

...
3/29/2009        Test Cases                           Initial version
                          Team Formation                  Added missing interview sheet for John Doe
                          Management Info Sheet     Carl Johnson

4/1/2009          ...