hello_world_logo.gif (12859 bytes) maple_leaf.gif (1004 bytes)

This could be your company's banner advertisement

April 1999

Issue 2, Volume 1

About the Author

Christopher Bark
is a computer science student at Carleton University.

Carleton University

Hello World!
Editorial
News
Comics
Events
 
Sponsors
 
Hello World! Teams:
  Editors
  Sponsorship
  Site Design
 
Member Universities
 
Past Issues
 
Contact Us
   
   

Site hosting provided by
smarttbutton.gif (2795 bytes)

   

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.

Columns
  Development
  Security
  Network Security
 
Feature Articles
  The 3D Chipset Wars

Active Server Pages

Dynamic HTML

Help Students Across Canada Go Higher!

The Core of Linux: Hacking the Kernel

An Introduction to PHP

Java's Magic Beans

Mac OS X Server: Unix for the Mac

Mentoring to a Multitude

MPEG-4: A Bird's Eye View

ATAPI Music CD Programming Interface in Linux

Snow Crash

Unified Modeling Language

Rendering Bézier Forms via Forward Differencing

April 1999

Issue 2, Volume 1

This could be your company's banner advertisement

hw_publegal.gif (2694 bytes)