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:
- Math attack - equations are falling and you must type in
the answer to "shoot" the equation before it hits the base
- Memory - Shows multiple boxes that users click on to reveal
pictures. Revealing the same picture scores a point.
- Spelling
- A games where you must drag letters together to spell the name of a
"picture" shown on the screen ("dog", "elephant", etc...)
- Physics - setup multiple types of blocks (rubber, curved)
to get a ball from one place on the screen to the next
- Software Engineering - show a class diagram and click on
the methods needed to perform a user story :-)
- Many many more are possible... watch Sesame Street for more
ideas
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:
- Your
team (company) name
- Your team member's
names
- A description of your project idea for the software you would like to design. Including:
- What is it teaching?
- What age group will use it?
- A short (1-2 sentence) description of the screens (as
much as you know now)
- Any simplifying assumptions (You can make
more later during the design phase if required.)
- The
team interview sheets from each team member
- Management Information Sheet
You must turn in this (and all future project deliverables) in a notebook as described in
Description of the notebook
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:
- Use cases
- Include the main use cases for your software (follow the use case format discussed in class)
- Functional Requirements
- Be sure to state your requirements clearly
- Be sure to include numbering scheme to allow traceability
- Non-Functional Requirements
- Be sure to include numbering scheme to allow traceability
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 RubricAlso:
Management Information SheetNOTES:
- Revision history should have names and what they did, not just the Team Name
- Table of Contents should be correct
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
This will be a high level object design of your project.
You will turn in:
- CRC cards for your project
- A UML class diagram at the analysis
level
- Diagrams documenting the game. You shall include at least three
diagrams containing at least two different types. Sequence diagrams,
state diagram, activity diagram, DFD -- whatever you feel makes sense
for your software.
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 RubricAlso:
Management Information Sheet
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 RubricAlso:
Management Information Sheet
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 test
descriptions for 2 classes (these should be 2 of your main
classes that do significant work, not your simplest
classes!)
- System test descriptions for 5 use cases (or user stories)
- Alternative
to unit test descriptions: If you have working code, you may turn in
JUnit tests instead of the Unit test descriptions above. However you
still must do the system tests!
Unit Tests
- Describe
the inputs and outputs
- Ensure you cover both valid
and invalid inputs in a variety of forms
- See the detailed
description
of the Unit Test including the format.
- Unit tests must cover all methods in the class being tested
System Tests
- Describe
which use case or user story is being validated.
- You may need multiple test cases for a single story... don't forget the alternate flows, boundary cases, etc...
- The test case should follow the Sample
System Test
Case.
- Because
we are not running the test cases (since we don't have working code)
the "Actual Results" column will be blank and everything in the top
section will be blank except: Purpose, Pre-requisites(maybe), Required
configuration (if there is one)
Helpful
Hints:
- If a test step says "the user
presses button x or button y" -- make two test cases, one for button x
and one for button y.
- If
a test result says "if the password was valid, the user goes forward,
otherwise they get sent to the login screen" -- make two tests, one for
a valid login and one for an invalid login
- Test
cases should be repeatable and clearly test one scenario
Grading RubricAlso:
Management Information Sheet
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!
Each
group will present their project for 10-20 minutes. The
presentation
should include:
- Project overview - what
software you're developing and how it is used
- Explain
your user stories
- Explain
your software designs
- Describe your risks and what happened as the class
progressed
- Describe your team's lessons learned and
how you would pursue a team software development task in the future
- 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
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.
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 SectionCurrent
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 changes1/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 ...