CS 146 - Project One
Requirements Document for a Restaurant Software System
Drake University
Spring, 2006
Due date: March 2
Project Objectives
    As you know, you are to work in small assigned teams. The
primary purpose of this project is to practice and demonstrate
facilitity with the requirements elicitation and analysis activities
studied in Chapters 3 through 15 of "UML 2 and the Unified Process" (2nd
ed.) by Arlow and Neustadt. You will do so by producing a
Requirements Ananlysis Document (RAD) for a software system to be
suggested (and only somewhat described) below. You do not need to
incorporate everything studied in the textbook, but you should make an
effort to coherently and consistantly incorporate many of the UML
features into your RAD in useful ways. The next section describes
briefly the intended software system and some of its functional
requirements. This is not complete, and you should work to formulate a
more complete set of functional requirements. You should feel free to
ask me questions concerning this. As for non-functional requirements,
you can produce a list of these on your own, enough to demonstrate that
you put some thought into the issue. As described in the book, you
should generate a "requirements model" and a "use case model," and you
should relate these. You should also include a careful glossary of terms
to help avoid ambiguity in your RAD. The RAD should have plenty of UML
diagrams, and these should be generated using MagicDraw. Besides
use case and class diagrams, you should include some
activity diagrams and sort of interaction diagrams (sequence
or collaboration). Besides the textbook, you should consult my
on-line notes for more further information and examples.
Note: This project will provide a basis for the other two
projects.
Description of the Software System
    Alice's Restaurant (feel free to change the name!) has
contracted with you to develop a software system to manage various
aspects of their business. The system needs to maintain
dynamic awareness of customer parties (groups, not fiestas), meal orders
(including take-out orders) and their statuses, reservations, menu items
(incuding daily specials), recipes (including how much of each
ingredient), inventory of ingredients, chef data (including
specialties - used exclusively as daily specials), and work schedule for
chefs, waiters and other personnel.
    The system should be able to robustly and easily
add/delete/alter the elements of the system, like individual chefs, menu
items, recipes, reservations, etcetera. I claim that there are implied
requirements here that you should be able to gleen on your own, possibly
by discussing the needs of the restaurant owner with me. However, I'm
mostly thinking about "common sense" issues from the restaurant's point
of view, and you should certainly make an effort to "see the world" from
that point of view, so as to better anticipate their needs. Apart from
the above stated and implied responsibilities, the system should be
responsible for automatically updating inventories of food items
(ingredients) as these are consumed in meals and as they are provided by
suppliers. It should also generate a daily list (stored in a file) of
total meals sold of each type. Based on these lists, it should be able
to determine the weekly need for food items (ingredients), and should
use this to help automate reordering from suppliers.
    The system should present different "views" (I/O
interaction) to three different types of users (depending on their
needs): software system manager, staff manager and waiter. You should be
able to figure out which system features should be available to which
type of user. Needless-to-say, the system should be as easy to use as
possible, while providing all of the functionality stated or implied in
the above description, plus anything else that we decide as we discuss
the system, i.e. as you elicit further requirements. You are encouraged
to ask questions to gain further clarity concerning functional
requirements. A text-based user interface is adequate. (Later, when
designing and writing code, you may opt for a GUI if you wish, but won't
get credit for this.)
Organization of the Requirements Document
   
The precise organization of your RAD is up to you. Remember that a
non-technical client is suppose to be able to read it. However, you also
want to be able to use it to initiate the design of the system, and it
should include ample UML modeling diagrams. As I said earlier, and as
indicated in Figure 3.3 on page 52 of your textbook, your RAD should
detail the requirements and the use-cases, and you should provide some
sort of list of connections between these. The document should begin
with a narrative that provides an overview of the system (in more detail
than I provided above). Here is a sample table of contents for a RAD
that I quickly found on the internet:
http://cs.wwc.edu/~aabyan/435/Forms/RAD.html
This
should at least give you a sense of what I'm looking for, but again you
are free to organize the material as you see fit.