customer: We would prefer one password for the whole system. We do not want separate passwords for each user. |
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
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.
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. |
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.
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. |