The library problem has served the formal specification community well
[Wing88]. To use it as a software architecture problem, we'll focus on the
possible structure of solutions rather than the specification of
A library requires an information system that provides the following on-line
operations for library users and staff:
The system must be able to search and update the catalog quickly (to avoid
long check-out lines, and to make on-line book search a viable alternative to
card catalogs), and easily handle updates and corrections by staff users to
an potentially large collection.
- 1. Check out (or return) a copy of a book.
- 2. Get a list of books by a particular author or on a particular
- 3. Find out what books a particular borrower currently has checked
out (users can only look up themselves).
- 4. Find out which borrower last checked out a particular copy of a
book (staff only).
- 5. Record the addition (or removal) of a copy of a book to (from)
the library (staff only).
The system must also enforce the following integrity constraints:
- a. All copies in the library must be available for checkout or be
- b. No copy may be both available and checked out at the same time.
- c. Borrowers can't have more than a predefined number of books checked
out at once.
- d. Borrowers can't have more than one copy of a given book checked out
- Design Considerations
Updated Halloween 95 by
Comments to maintainer