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, and testing. Unfortunately due to time constraints you will not be implementing the actual software. Meaning you will not write any software for this project.  You will use UML diagrams, text descriptions, and scheduling tools to create your deliverables.

You are starting a new small software company. This is your first project. You want to create something that people will use. You are the software team. 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. 

You are encouraged to choose your own project however it needs to have the following characteristics:
- Multiple screens (about 3-7 screens)
- Data storage and retrieval in a database
- Multiple types of users (basic and power user, data entry and managers, etc...) that have different privileges

The project can be any type of software (web-based, desktop application, game, embedded app (mobile phone, PDA, etc..)). You can also choose to do this project based on an existing software application. Be creative, but keep it manageable. 

Some sample ideas are:
Management Information Sheet
For each deliverable you will assigning a manager from your team. The manager has the overall responsability to make sure the deliverable is completed on-time and is a high-quality product. The manager should:
Project Overview Presentation

Team Formation (approx 1 page)

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 (email is fine) including:
This should be in a notebook or folder you will use for the entire semester. It should be at least 1.5" with a divider of some sort for each deliverable below (Team Formation, Project Statement, SRS, etc...). You will turn this in with new pages added for every deliverable during the project.

Project Statement (2-4 pages)

Your next deliverable is a detailed project statement. This should describe in more detail what the software is and what it will do. Do not make assumptions about what people already know. For example, don't say "this is an email system like Outlook". Assume no one has seen Outlook before, so what will YOUR email system do? The objective of this document is to get upper-management buy-in that this project will be good for your company.

The project statement should include:
Sample Project Statement it's not perfect, but it's good. Doesn't have any conceptual mock-up.


Software requirements specification (20-30 pages)

The software requirements specification will add more formality to your project statement. 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. A sample SRS template. Grading Rubric

The requirements spec should include:
Sample SRS from previous semester - As always note, this isn't a perfect document. You can use it as a guide, but then do things better!

Software High Level Design Specification

Goal: To complete the high level design of the software. The high level specification is used to bridge from requirements to the implementation design. For this class we will add more diagrams and details to create the high level design spec.

The software design specification should include:
- Class names should be nouns
- States in a state diagram should be verbs (you're doing something in the state)


Implementation Schedule (1-2 pages)

Goal: To create a schedule for the design phase through the end of the project

See description of the software schedule.

Include the Management Information Sheet



System/Integration Test Cases

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

System Tests

Helpful Hints:


Project Team Review (3-5 pages)

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!


Presentation (7-12 slides)

Each group will present their project for 10 minutes. The presentation should include:
  1. Project overview - what software you're developing and how it is used
  2. Explain your requirements diagrams (use-cases) and validation plan
  3. Explain your software designs
  4. Describe your implementation schedule
  5. Describe your team's lessons learned and how you would pursue a team software development task in the future
  6. Management Information Sheet
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.


Grading

The project is a significant portion of your overall grade in the class. Each student is expected to participate equally in the project. The final grade on the project will be an average of the grades on all project deliverables, the presentation, and your individual contribution to the project overall. (The SRS  will be weighted heavier than the other deliverables). 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.