Management Plan

Features of the Project

The system we implement will allow a librarian to perform all the main administrative functions required for day-to-day library operation. Those functions are specified in the next section. It will hopefully also be fast enough to accommodate the needs of an expanding library (speed depending on time available to write it). It will have an easy-to-understand mouse based user interface. We will design it so that the computer novice will have has as little trouble as possible learning and using the system, and experienced users will find it a breeze. Finally, although the customer specification did not ask for a security system, our system will likely include some sort of password protection (not specified in this document).

customer: We would prefer one password for the whole system. We do not want separate passwords for each user.

Major Classes of Functions

There are three broad functions for which librarians will need to use the system:

  1. Book Administration - operations that manage information on all the books in the library, such as adding a new book to the database, or searching for data on an existing book.

  2. Borrower Administration - managing information on borrower accounts, such as adding or removing a borrower record.

  3. Circulation Transactions - day-to-day activities between the library and its users, e.g. lending, renewing, returning, and recalling books.

Data Structures and Algorithms

There will be three data structures: Book,Borrower, and Books_Out. These correspond to the aforementioned general functions 1, 2 and 3, respectively. The customer group has carefully detailed the data fields they would like maintained on each of the three main data structures. Most of the fields will be simple. For example, the Title field in the Book structure will just be a string of characters under Book.Title. Other fields, like the Author field, will themselves be structures with their own fields. The Author structure will have the fields Author.first and Author.last, to facilitate searching by last name. Some fields will be of enumerated types. An example is the field Book.Status, which may contain one of "out", "available", "held", or "maintenance".

Although the customers were very thorough in specifying the data fields they wanted, we must add two extra fields to implement an accurate data tracking system. In the Book Attributes data structure we will implement a volume and copy number for each book in the database. This will allow our system to more effectively discern and relate identical books with different call numbers.

Here is our preliminary conception of the data structures we will use:


BOOK Structure
   is composed of the following:
	Title 		is a 	STRING
	Author		is a 	NAME (which is also a structure)
	Subject		is a	STRING
customer: We would like multiple subjects to choose from.
	Call Number	is a	STRING (which is unique for every book)
	Publisher	is a	PUBLISHER (which is also a structure)
	Publishing Date	is a	DATE (which is also a structure)
	Location	is a	STRING
	Status		is one of {OUT, AVAILABLE, ON_HOLD, IN_REPAIR)
	type		is one of {RESERVED, REFERENCE, CIRCULATION}
	Cost 		is a	MONEY (which is also a structure)
	Information	is a	STRING

BORROWER Structure
   is composed of the following: 			
	Name		is a	NAME
	Address		is a	ADDRESS (which is also a structure)
	Phone		is a	PHONE_NUMBER (which is also a structure)
	ID		is a	STRING (unique for every user)
	BooksBorrowed	is a	LIST of BOOKS_OUT (which is a structure)
	
BOOKS_OUT Structure
   is composed of the following:
	Book		is a	BOOK
	Due Date	is a	DATE
	Fines		is a	MONEY
	  
PHONE_NUMBER Structure
   is composed of the following:
	AreaCode	is a	NUMBER
	LocalCode	is a	NUMBER
	FinalCode	is a	NUMBER  
	 
ADDRESS Structure
   is composed of the following:
	StreetAddress	is a	STRING
	City		is a	STRING
	Country		is a	STRING

customer: This should be a mailing address. We need a postal code here.

NAME Structure
   is composed of the following:
	FirstName	is a	STRING
	MiddleName	is a 	STRING
	LastName	is a	STRING
	
DATE Structure
   is composed of the following:
	day		is a	NUMBER
	month		is a	NUMBER
	year		is a	NUMBER
  
PUBLISHER Structure
   is composed of the following:
	PublisherName	is a	STRING
	PublisherAddress is a	ADDRESS
	
MONEY Structure
   is composed of the following:
	dollars		is a	NUMBER
	cents		is a	NUMBER

Possible Implementations

Our implementation will depend on what software development platform we choose. And the platform we choose will depend on a number of factors: ease of development, efficacy of database management, user-friendliness of the final product, and the ease with which the code may be maintained and enhanced.

One option is to use a package which specializes in database management: Paradox for Windows or dBase, for example. Obviously, the database handling capabilities of these development platforms will outshine anything else that is not so specialized. User-friendly programs can be developed with these packages, but only with considerable effort. Programming with these packages is generally time-consuming and tedious, thus slowing development time, and hampering maintenance and enhancement of the system.

customer: We are more concerned with a system that meets our demands, then the programming language you use to create the sytem.

Another option is to use Visual Basic, a package designed to maximize speed and ease of development. Thus, we would be able to deliver the system in a shorter time than with the dedicated database packages. Furthermore, since Visual Basic is so simple, it would be easier to maintain and enhance the system. Maintainability would be enhanced also by Visual Basic's prevalence in industry. Should the customers choose someone other than our group, Nexus, to alter the code, they will have little trouble finding a Visual Basic programmer. In addition, the ease of Visual Basic may allow us to optimize the program further than we could than if we were programming in a dedicated database program; there will be more time spent concentrating on adding functionality and less time spent head-scratching. Finally, the simplicity of Visual Basic will probably enhance even the reliability of the system. The one drawback to Visual Basic is that it does not have as database management capabilities as extensive as those found in more specialized programs. However, we feel that the built-in data handling capabilities of Visual Basic are adequate for the task. In the unlikely event that they are not, we may hand-optimize the data handling routines to give us the functionality required. To sum it up, we are overwhelmingly in favor of implementing the system in Visual Basic.

Minimal Implementation

Quite simply, the functionality specified by the customers is our minimal implementation. We feel that the speediness of development in Visual Basic virtually ensures our success in implementing all the requested features, possibly even ahead of time. Thus, we think it likely that some of the enhancements proposed in the next section will make it into the final product. However, it is unwise to promise more than can be delivered, and thus we promise only what the customer asked for.

It may (or just as likely may not) be the case that using Visual Basic's built-in data handling routines will deliver a system that works well for small a small database, but bogs down under the huge database needed for a library. We promise only a system that uses Visual Basic's built-in database management facilities. These will probably work just fine, but the possibility at least exists that they may not.

customer: Are you going to give us the system we asked for or not? We state in our informal specification that our library consists of about 1 millions books. Can you build a system to handle this or not? We want a system that will work.

Possible Enhancements

We have several enhancements to suggest. The degree to which these improvements are implemented depends on their usefulness and the time available to us. One such enhancement would be an optimization of the database management routines used by the library's system. This would be accomplished by hand-coding the routines rather than relying on what Visual Basic supplies. Once they were optimized, they would better handle the voluminous database required by a library. This enhancement may or may not be necessary -- Visual Basic's database management capabilities are probably more than adequate.

Allowing the user to undo the last action they performed on the database would be helpful. In the minimal system, all changes to the database are permanent, and the only safeguard against error are queries such as: "Do you really want to do this?"

Another enhancement would be greater customizability. There will be some hard-coded information in the minimal implementation, such as the circulation periods and daily overdue costs of circulation and reserved books. These data items will be hard-coded because there was no request for functions to be able to change them. However, such functions will be very useful, making this an important possible enhancement.

customer: The "fine per day overdue" and "circulation period" of a book should be changed manually - this is stated in our informal specification. This means a librarian can change the fine per day or circulation period if she wants to. Please see our specifications.

Finally, we may implement is an on-line help system. Help systems vary in complexity. If we have time to implement only a rudimentary help system, it will probably consist of the user selecting a topic from a pre-defined index, and receiving tutorial-style information about the specified topic. A more complex system would include context-sensitive help, in which the help system would provide the information appropriate to the task the user was trying to perform when help was invoked. Yet another possible help feature is a keyword search through the aforementioned index of help topics.

Management Summary

At a minimum, we will implement all the features requested by the customer group. Our system will enable a librarian to perform three general tasks of maintaining a database of books, managing the accounts of library users, and managing daily transactions such as borrowing, returning, and recalling. The system will be developed using Visual Basic to ensure speed of development, reliability, user-friendliness, maintainability, and expandability. We have proposed four enhancements: optimization of database algorithms, and undo command, greater customizability, and an on-line help system. These enhancements will be implemented based on their usefulness and the amount of time available to us.

customer: We hope you WILL implement ALL the features we requested. Perhaps you should re-read our document and refresh your memory as to what we want.



Back to the CPSC 451 Supplier Group #5 Formal Index