My client needed a program that would manage a database of books and media items, and control how those items moved between bookshelves and patrons. The software needed to have both patron- and administrator-focused features. It would include various reports, including the printing of a receipt of checked-out items for the patron. And most of all, it needed to both print and read barcodes.
It sounds like a lot for one man to do, and it is a sizeable project. But I don't have to do it alone; you will help me. Together, through the pages of this book, you and I will design that program, and develop that code, and bring joy to the users, and collect that paycheck. Actually, I will collect the paycheck, although it wouldn't hurt to ask your boss to pay you to read this fine book.
The remainder of this section documents the key features of the Library management application.
Library Item Features
The Library system will manage an inventory of books and other media items, locate them, and manage the details and status of each copy of an item. To make this a reality, the Library program will:
Allow patrons or administrators to search for items currently in inventory. The program allows searches based on several different properties of each item.
Support multiple search methods, including by title, author name, subject or topic, a miscellaneous keyword, the name of the related publisher, the name of a series or group that contains the item, or a barcode number attached to the actual item.
Limit search results by the location of the item, or by the type of media (book, CD, DVD, and so on).
Support the definition and use of distinct physical locations. The client has books and media stored at three different sites within the building, including a storage closet for seldom-accessed items.
Display the details of a retrieved item in a familiar browser-style interface. For instance, when looking up a book by title, the user clicks on the author's name to access all other items by that same author.
Allow access to each library item through a barcode scan. As is common in most libraries today, the items in this library's collection each have a barcode affixed, which serves as a unique identifier for the individual item copy.
In addition to books and other items, the program manages a list of patrons, the "customers" of the library who are permitted to check out items. To support interaction with patrons, the application will include these patron-specific features:
Items can be checked out to patrons, and checked back into the library inventory.
All patrons are assigned a "PIN" that acts as their password.
Patrons can check out items without librarian and administrator assistance. They can use a barcode scanner to scan a patron library card and library items.
The "media type" of an item determines its checkout (and subsequently renewal) duration.
Patrons can view their library record, including all books currently checked out, and a list of fines owed to the library.
If permitted on a specific item, the patron can renew an item he or she has currently checked out.
Patron-centric online help is available through the standard F1 key. This help file includes no information on administrative features, so as to reduce experimentation.
Patrons can be divided into "patron groups" for the reporting and processing convenience of the administrative staff.
Administrators include librarians, information technology staff, and others who need advanced access to application features. They are the primary users of the system, not the patrons. The application includes the following administrator-specific features:
A login feature provides access to the administrative features of the application. Only authorized users can log in through an assigned password. The login feature is normally hidden from view from ordinary patrons.
Administrators can view patron details just like patrons can, but they also have access to additional patron details. Specifically, administrators can add new patrons and manage their identity and demographic details. Administrators can also disable a patron record to prevent further item checkouts.
Administrators collect and manage patron fines, including the ability to add non-standard fines, or dismiss unpaid fines.
Administrators define the records for each item managed by the system's inventory database. This includes the basics of each item, such as title and authors. Each item includes one or more copies, which represent physical items that can be checked out. Barcodes are assigned to copies.
Beyond the items and copies, administrators define all supporting values and lists, including author names and categories, the list of media types, publishers, book series names, status codes that identify the disposition of each item copy, and locations.
Designated administrators can add, edit, and remove the accounts of other administrators. Each account includes feature-specific authorization settings (group rights).
In addition to the scanning of barcodes, the program can assist administrators in the design and printing of both patron and item barcodes.
A simple program-managed process allows the administrative staff to process overdue items and fines on a regular basis.
The application allows holidays to be added and maintained. When a patron checks out a book, the program adjusts the due date of the item to avoid holidays.
Administrator-centric online help provides assistance to the enhanced features of the application through the same F1 key available to patrons.
The application includes some basic administrative reports, and the ability to "plug in" reports as needed in the future without the need to update the program itself.
The Application as a Whole
Beyond the basic features of the program as experienced by the patrons and administrators, there are a few other requirements.
The program is "user friendly" and easy to navigate, especially for patrons, without much training or assistance.
The application stores its data in a SQL Server database.
Distribution of the application is done by administrative staff that has local administrative privileges, so a standard Windows installation package is sufficient.
Configuration of the application uses standard XML methods.
Except for these general and feature-specific requirements, I was given design freedom. But where did the listed requirements come from? They came from the users, the masters of the application. It was their needsthe needs of my customers and theirs, who would be using the product day in and day outthat determined the list of requirements.