Com S 362 --- Object-Oriented Analysis and Design
HOMEWORK 3: INCEPTION PHASE
(File $Date: 2003/02/18 05:06:25 $)
Due: Problem 1a, February 9, 2002, at 5 PM,
problems 1b and 1c, February 10, 2002 (at 11 AM).
READINGS
Read chapters 1-4 and sections 7.4-7.7 and 7.9 of Craig Larman's
book Applying UML and Patterns (Second edition, Prentice-Hall PTR,
Upper Saddle River, NJ, 2002). Also read chapters 1-2 of Martin Fowler
with Kendall Scott's book UML Distilled (Addison-Wesley Longman, Inc.,
Reading, MA, 2000). Finally, as an example look at the web page for
the StickSync project:
http://www.cs.iastate.edu/~cs362/sticksync/vision.shtml
1. [Project Vision and Business Case]
The first objective of this problem is to help you gain some
experience doing a project vision. The second objective is to help
form teams for working on team projects later in the semester.
However, it's important to note that this homework is to be done
entirely on your own, as an individual. Don't work in teams yet!
In this problem, you will describe what you want to do for your
project in a "vision statement". This will be a web site containing
at least two web pages: the project vision and business case and the
start of a glossary. These should not be too detailed. See the
readings described above for examples.
If you don't have a web page already on the Com S department
machines, you'll have to create one. You can read how to do this at
the following URL:
http://support.cs.iastate.edu/faqs.php3?op=unix#15.
(Note that you need that period at the end of the URL above!)
In essence, you make a WWW directory underneath your Com S department
login directory. So if you don't have a WWW directory already, do the
following on a Com S department Linux machine:
chmod a+x ~
mkdir WWW
chmod a+rx WWW
We advise doing this quickly, because it takes a bit of time for the
web page to become available.
For this problem:
a. (5 points)
E-mail the URL of your project vision and business case to
cs362s@cs.iastate.edu
with subject "The URL for my Com S 362 vision page".
Your email must include HTML of the following form giving your
project's short title, your name, and the URL, formatted as follows:
short title of your project
your name
vision for this project.
Your web page should be under your department web page. We will make
your web page available to the rest of the class (and the world :-),
and to make this easier, your vision and business case web page should
be found at the following URL:
http://www.cs.iastate.edu/~/cs362/vision.html
(or if you want to use server-side HTML:
http://www.cs.iastate.edu/~/cs362/vision.shtml.)
As an aid to formatting, if you want, you can copy and edit the
StickSync web page into your Com S department WWW directory. Assuming
you have a WWW directory (see above), do the following:
cd ~/WWW
cp -r /home/course/cs362/public/sticksync cs362
chmod -R a+rx cs362
b. (25 points)
Hand in a printout of your web pages for the project vision and
business case, and glossary. Label these with your name, and the the
URL where members of the class and the staff can find it. The vision
should link to the glossary as appropriate, so that one can click on a
term and find its definition quickly. Your grade for this part will
depend on the quality of your documents, and the suitability of your project.
c. (15 points)
You will present your project vision either orally in class or as a
poster, which other students in class can view. Oral presentations
will be limited to two (2) minutes. You will need to think ahead of
time about how to present your vision in two minutes, as that isn't
much time. Posters should be standard poster board size. Your grade
for this part will depend on the clarity of your presentation or
poster. These presentations and posters will be used to form teams;
and your goal should be to try to convince other people in the class
to work in a team on your project vision, or at least that you are a
person who would be good to have on a team.
(Note that if you are making a poster it should be ready for the first
day of presentations and must be brought to both days of
presentations. If you are doing an oral presentation, you must be
ready to present your project vision orally on the first day of such
presentations, although some people only be presenting on the second
day. People absent from the first or second day of presentations will
lose 3 points for this part.)
GUIDELINES FOR PROJECT SUITABILITY
You can decide to do a project of your own choosing. We have some
suggested ideas below, but those are merely suggestions. Be creative!
The project you select must satisfy various constraints, as
described below. However, you do not need to know exactly how long,
or how much effort it will take to build what you envision; we don't
expect you to have enough information to estimate that yet, and the
process we will use will try to take that into account. Also, it's
okay if you haven't worked out all of what it is you want to build;
indeed for this course, it's better if some of the requirements are
unclear, provided that you can get feedback to clarify them by
building small versions of the system. (See Larman's book, chapter 2
for more about iterative development.) Indeed the constraints we want
to impose are all about keeping the project from being too well
understood and too small!
Constraints
Our constraints are the following. Let's call the system you are
proposing "the system" in what follows.
C1. That the system should not already be implemented as a computer program.
In particular, you should not have access to a the design of the
system, a working version of the system or source code that
implements the system. (If you did, you could use the existing
system to tell you what all the requirements are, or you could use
the implementation as your project.)
C2. That the system not just produce one output, but that its users
engage in a series of interactions to accomplish various tasks.
(If the system just produces one report, say, then object-oriented
methods are probably not appropriate for its design.)
C3. That there be some degree of change in the systems requirements or
usage in the foreseeable future. If the system interacts heavily
with humans this is almost guaranteed, but there may also be a lot
of change due to changing technology. (If there is no likelihood
of change, then again object-oriented methods are probably not
appropriate for its design.)
C4. You must have first-hand knowledge of what such a system should
do. This is necessary to decide questions about usability and
other questions about the requirements.
C5. The system should not have real-time requirements. That is, there
should not be deadlines after which system responses are invalid.
(Such systems are orders of magnitude more difficult to implement
than other systems.)
C6. The system should not be safety critical, in that its
implementation should not involve the potential to injure or kill
humans.
C7. That the system should be implementable primarily in Java.
For example, reimplementing Microsoft Word would not be appropriate as
a system, because it violates constraint C1. The NextGen POS system
described in Larmans's textbook also violates constraint C1, because
it's design is described in that book. However, if you want to do a
system that is similar but not the same as an existing system, then
explain how your system will differ in some way from the existing
system.
Some more examples of violations of these constraints follow. A
program to sort existing records would violate constraints C2 and C3.
A program to explore theoretical physics would violate constraint C4
unless you are a theoretical physicist. A program to do air traffic
control would violate constraints C5 and C6. A project to modify
Mozilla to have a different user interface, by working with the C++
code for Mozilla and some scripting languages would violate constraint
C7.
It's okay to have a database involved as part of the system, but don't
implement a database management system (or an operating system or a
compiler) as part of your project. We have other courses that explore
those topics. If you have a project with a database system, you
should know how to interface with database systems, or at least be
interested in learning about it.
It's okay to have concurrency and synchronization involved in the
system, although this would make the implementation more complex. If
necessary, you can implement a version of the system that artificially
limits the concurrency (e.g., which only has one user).
Sample ideas
Here are some sample ideas for team projects. You don't have to use
one of these. Also, don't worry if other teams are using the same
idea.
- An interactive program to play Monopoly or some other game.
(This wouldn't violate constraint C1 unless you are planning to
copy some existing Monopoly game.)
- A robotic control system for printed circuit board chip stuffing
(i.e., a factory control system)
- An inventory system for a warehouse. (Again, the existence of such
systems doesn't violate constraint C1 if you don't have access to
them or if you can explain significant differences.)
- A system to configure and manage vending machines (set prices,
track inventory, etc.)
- Delinquency collections (i.e., a system to help get money from
people behind in paying their bills)
If you are stuck for ideas, think about what job experiences, hobbies,
or interests you have, and see what could be automated that relates to
them.
Going on
Once you have decided on your project idea, if you have time, try to
think about what the system should do. This will be good preparation
for the course's unit on requirements analysis. However, writing down
the detailed requirements (e.g., use cases) is *not* part of this homework.
You are just to write a vision of what the system will be like, and
why it should be built.
We will form teams immediately after the end of the in class presentations.
In essence, what we will do is to try to give people who are
interested in working on similar team projects to work together on a
team. But that will be the subject of the next homework, and will be
explained in class.