CS 147: Team Project Development and
Professional Ethics
Final Project
A major objective of this course is to have you work in a team
developing a significant software product. We will use
an ecommerce website as the theme in this course.
Such a website development experience has many advantages:
it's directly useful (even for summer jobs), introduces
you to interesting technology (servlets, webservers) and
affords an opportunity to work in all areas (business,
customer, design, coding) related to the product.
In fact, some of the writing assignments are directed
at helping you think through the business aspects of your project.
Your team project will consist of the following:
- Some writing assignments: A Business Plan, and a "Tech" Plan.
- Some teamwork: you will experience what it is like to specify
software to others, and also experience what it is like to
be on the receiving end of specs.
- A blog that will record teamwork interactions.
- A complete working website that is your team's product.
About your website:
- Your website need not feature commerce; instead, you could
create some on-line tool. Your website should strive for
something technically challenging or unique. In the real
world, investors sometimes call this the "secret sauce":
what technology will you have that you could patent or
that others (competitors) will find difficult to copy.
One of the most famous examples of "secret sauce" is
the technology behind Google's search engine. A less well-known
example is the technology behind Orbitz or Travelocity.
- Your website should feature some storage. For example,
if you are storing data about goods (pictures, prices etc)
then you should spend some effort in populating the site
with example data. You don't want your demo to show a
light, almost-empty website.
- All data entry (textfields, checkboxes etc) should be
made idiot-proof. We will try to "break" your website by
typing in bad data (a number for a name, for example),
and evaluate how your site responds.
Once you've batted ideas back and forth among your team members,
you will need to take steps towards completing your project:
- Use a blog.
Start by creating a blog for your team. You can do this at
any popular blog provider. Once you've set up a blog, email the
URL to the TA. The purpose of the blog is to create record of
your teamwork interactions. Please use the blog to record ideas
of any kind, to post schedules, to post requirements, and so on.
(Thus, a blog that allows upload of documents is important).
Guard your company secrets closely:
do not share your blog with anyone other than your team.
- Brainstorming. The early part of your blog (first few weeks) should show
ideas being debated, questioned, improved, with participation
from all team members.
- [Feb 5]. The Feb 5 writing submissions, even though
individually written and submitted, are based on your company.
Thus, you need to make sure the key ideas have coalesced by
this time.
- [Mar 6]. This is when Assignment 3 is due, for which
you'll need to create some screenshots (temporary HTML) and a
detailed workplan for building the rest of the website.
The workplan should include a list of tasks and a rough
design of the planned software (see next bullet).
- [Mar 20] Software design. You will need to specify in some
detail many aspects of the software behind your website
and how it will interact with user data.
Create a document that describes for each webpage:
(1) What inputs are received from the screen (user)?
(2) What data must be read from files or from a database (if you plan
on using one)?
(3) What actions are taken based on the inputs?
(4) What computations must be done before sending output back to the
user?
(5) What is the output page and what does it contain?
(6) What errors are possible and how do you plan to handle them?
- [Apr 2] Specifications.
A specification is a description of what code should do;
it is not a description of the code itself. (That's documentation.)
To get some experience with specification, each team will
divide into two sub-teams - let's call them subteams A and B.
You will need to break up the work of making your product into
half so that each subteam will take up half the work.
Then, sub-team A will write the specs for the code that sub-team
B will write, and likewise, sub-team B will write the specs for
the code that sub-team A will write. Thus, each of A and B
get to play "manager" and "programmer" respectively.
- [Apr 2] Test plan.
Your team will also need a rough (1 page) test plan,
a set of test-related tasks. You will need to identify what
will be tested and when, who will respond to the test results
and when.
- [Apr 17] Test results.
All test results and responses should go on your
team blog.
- [Apr 24] Final demo.
D-Day: this is your one and only shot at presenting a
complete project.
Your final demo should, naturally, remove at least some of
the problems identified in the test results.
Resources: