Unified Modeling Language - The Requirements Model
-- Christopher Bark
What happens when 3 of the leading experts in object oriented design join forces? UML.
UML is the brainchild of Grady Booch, Ivar Jacobson and James Rumbaugh and is, in short, a
combination of Booch's methodology, the Object Modeling Technique(OMT) and Use Cases. Over
the next 6 issues we will be exploring various aspects of using UML in object oriented
design starting with the requirements and a basic overview of how the program will work.
Following this we will cover use cases, state diagrams, behavior modeling, deployment
diagrams, component diagrams, object design and CRC cards (class, responsibility and
collaboration cards -- although not officially part of UML, CRC cards are very handy so
I've decided to include them as part of my object oriented design).
Last year, the Carleton Computer Science Society(CCSS) started offering a laser
printing service to it's members, at the time the School of Computer Science only offered
line printers to most students. In order to print something, the students were required to
put their file on disk and bring it to the office (We ran the printer off of a Windows
machine, our sysadmin refused to give us a connection to the internal school network
because of Window's lack of security). It was decided at the end of the year that it would
be nice to have a print server that the students could connect to from the labs and send
their files to. Planning began on the print server, but was cut short when the School of
Computer Science announced that it was replacing the printers with some new laser
printers, the CCSS has since stopped offering it's printer service. We still get people
asking if they can use our printer, the schools printers aren't always working 100% and
can be busy at times; so it is my goal to create this print server and hopefully be able
to offer the print service once again next year.
What we have available for the print server is a 486 running Linux, a laser printer and
possibly a postscript printer (if we can get it to work). The server itself (which is what
this series will concentrate on) will be written in C++, the client in Java, mySql will be
used for object persistence. A basic overview of our system so far: the client will
interact with the server over a TCP/IP connection, the server will interact with an SQL
server and a Printer (or several printers).
To start off our design we shall do a requirements capture. The requirements will help
us define the behaviour of the objects we will create later as well as the behaviour of
the entire system. Getting a good list of requirements is crucial to the design. On the
first attempt at a requirements capture we get the following requirements:
- R1 multi-user capable
- R2 run over TCP/IP
- R3 able to handle more than one printer
- R4 queue print requests, maintain order of requests
- R5 print postscript and text files
- R6 expandable to handle other print formats
- R7 monetary system
- R7-1 each user has a set amount of cash
- R7-2 the cash gets decremented before printing
- R7-3 return an error if not enough money available
- R7-4 able to count number of pages
- R8 handle long uptimes
- R9 handle printer errors
- R10 administration tools
- R10-1 tool to create/update/delete user accounts
- R10-2 a diagnostics tool
- R10-3 the administration tool should be easy to use
(NOTE: the requirements were labelled for traceability, they will be referred to by
their labels from this point on.)
Don't expect to capture all your requirements in your first try, in fact expect to add
the occasional requirement while in other phases of the design. After discussing the idea
with a few other people I was able to get the following additional requirements:
- R11 expandable to be able to print to things other than the printers (IE fax, email, .ps
file, etc.)
- R12 colour vs. black & white print jobs
- R13 act as a router to other print servers
- R14 offer a print applet which will print a webpage when given an URL (the client is to
be written in Java, so this is just an extension of the client).
Using these requirements as our foundation we can now move on to the next part of the
design, Use Cases, the subject of the next article in this series. We will be referring
back to the requirements frequently while designing our print server.
|