Tuesday, April 24, 2001 06:55 AM
First this is really a question related to object oriented analysis and
design - not UML in particular. Indeed, the problem statement and scenario
you outline here is really quite encompassing and I could see it easily
expanding out in to a half a dozen use cases, and a 10 page non-functional
requirements document. The proper answer to your problem is to point you
to software development process's (see
What process should I
follow for object-oriented analysis and design? ).
I currently favor the Rational Unified Process (RUP), in part because I think it is
the most comprehensive and most flexible process framework out there, and secondly
because I happen to work for that company (and my boss might be monitoring this forum
:-). Philippe Krutchen has an excellent introduction to the process.
Another process that is receiving some press is eXtreme Programming.
To steal an often heard analogy between these two processes, RUP is to Classical Music,
as XP is to Jazz. Both deliver complex and beautiful music. Classical is often performed
with a large orchestra where each member has its role, and each requires a different level
of skill. The members act as a team, with solos being rare. Jazz, on the other hand
can be performed with a smaller group, where most are highly skilled (in pair programming
mentor's are paired with junior members), and a lot of the music is unstructured and subject
to the flows and ebbs of the moment (making it easier to adapt to certain changes).
I personally have never been on an XP team, so I can't really vouch for its
effectiveness, but have had much success with RUP variants.
To address the details of your question, I did a quick scan of the statement. First you need
to define some use cases (Update Warehouse, Catalog Tape, Rent/Buy Tape, Make Reservation, etc.).
Doing some use case analysis and
some design, I've identified
two actors in your description (Distributor/warehouse clerk, and Customer), but there are bound to be more
including the often forgotten system administrator. Never underestimate the number of use cases
and work that needs to be made to support system maintenance!
I've also identified a number of entities (Tape, Warehouse Inventory, Payment, Video
Store, Reservation) and controllers (Make Payment, Catalog, Suggest Tape, Rent/Sell Video). From
here you need to express the scenarios in more detail, associate them with the use cases
and in general find more analysis classes and add a few user interfaces.
So the really answer to your question is to find a process understand and accept it, and then
follow it. Use the process John, ... use the process...