Now, this really has very little to do with programming, but we also need to identify the technical requirements of the system. Technical requirements define what is needed by the system as well as what the system needs to do or be able to do in order to successfully accomplish its job.
Technical requirements are usually dictated to you, and you simply document and enforce them. They normally don t affect any classes or designs.
Let s imagine that we have decided to document our technical requirements as a sort of numbered list, where each item is described and uniquely identified. We will number our items using the format SR1, meaning System Requirement 1. Therefore, we might come up with the following:
The system must be hosted on the university s existing Acme computer system. A browser interface and web connection is to be used for the user interface.
The database system must utilize, and be stored on, the university s existing SQL Server.
A new e-mail server must be installed for the purpose of e-mail notifications. A new machine is to be purchased, installed, and properly set up to serve as the e-mail server.
The system must be able to manage 5,000 students per year, and 1,000,000 students in total. It must be able to manage 500 course offerings, of up to five sections each. Also, 250 instructors per year must be tracked, with a total history of up to 1,000 instructors.
Note how each item has a simple number, a brief description of what it is we need to ensure, and then a more descriptive paragraph of the actual requirement. Although these items may not have an important impact on the design of classes, they still might have some impact. For example, we can see that up to 250 active instructors must be logged, so while designing the Instructor class we might decide that a single-byte value is all that s needed to identify a unique instructor (byte values range from 0 to 255). Of course, this specific example is somewhat overly detailed, and using a simple two-byte integer is more convenient and practical.