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 technology-based solution to help one of the United Nation's Millenium Development Goals. The solution does not need to completely solve the problem. Pick one of the eight areas and come up with a software solution that can help take a step towards the goal.

This project could lead to a development project next semester for the Microsoft ImagineCup 2010. If you're interested in this we'll have to find a way to make it happen as a project/independant study course next semester. See me as early as possible if you are interested in this.

Your project must have the  following characteristics:
- It must take a step towards solving one of the Millenium Development Goals
- The user interface must have multiple screens (about 3-7 screens) -  It may be logical to have some screens displayed together (status, frames of a website, etc...
- Data storage and retrieval of some type. There should be some persistent storage of information.
- It can use hardware, but you are designing SOFTWARE. You can assume hardware exists and is compatible with your software. 

Be creative, but keep it manageable

You are encouraged to come up with your own ideas, here are some thoughts in case you need help getting started:
NOTE: There are many "Websites to provide information" types of things that would help, but you should think of a more innovative idea than simply providing a mostly static website.

These are just some ideas... have fun with it. If you need to assume a certain technology or skill is present -- you can do that. We aren't implementing the software in this class, so as long as you can design it, that's okay.


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) - 30pts

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 9/21/2009 you should complete SRS sections: 1, 2, 4
For the second part of the SRS due 10/5/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 - 25pts

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 software. This can be in any electronic form that works for you (actual software prototype, PowerPoint,  HTML, etc...). Many students have had excellent results with Balsamiq Mockups. 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 - 25pts

Goal: To produce 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
Note: I strongly suggest you use an IDE for this (Netbeans or Eclipse). In Netbeans simply right click on the package and choose "Test for existing class" and all of the infrastructure will be generated. You don't want to do this by hand really. If you need help -- ask!
System Tests
Helpful Hints:
Grading Rubric

Also: Management Information Sheet

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

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, why does it help
  2. Explain your user stories/use cases
  3. Explain your software designs
  4. Describe your risks and what happened as the class progressed (as things got busier in the semester did problems occur? How did you solve them?)
  5. Describe your team's lessons learned and how you would pursue a team software development task in the future
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.

Ensure everyone in the group presents something. Break the presentation into parts so that everyone has some part to present.

I will use this form to grade the presentations. It provides more information about the required presentation content. Make sure you check that your presentation hits all the points on the form!

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 --- Described below.
    - Grades --- Leave this section empty, I will add grade sheets to it.
    - Team Formation
    - SRS
    - Schedule
    - Design
    - UI
    - Test Cases
    - Presentation Slides

Once you add something to notebook NEVER remove it. If you revise a deliverable, put the new one in front of the old one -- BUT LEAVE BOTH IN THE NOTEBOOK!

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

Here is a template you can use if it helps. CurrentSubmission XLSX, PDF
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