Requirements


A Requirement is an expression of desired behavior for a software system, i.e. a statement of something it must do.

The first step in Object Oriented Software Design is determining what the customer wants, i.e. what are the requirements of the software. You have to translate the customer's description of the desired software system into a list of requirements. The purpose of this Requirements Analysis is to determine exactly what the software should do.

Why are requirements important?

In 1994 a study was conducted by the Standish Group (an independent research organization) which surveyed 350 software companies doing 8000 software projects. The companies ranged from very small companies with just a few employees and small development teams to very large companies with hundreds of employees and very large development teams working on different aspects of major software projects. The findings were rather shocking.



Only 9% of the projects in the large companies were delivered on time and within budget. The small companies didn't do much better with only 16% of their projects delivered on time and within budget. The main reasons given were:
  1. Incomplete requirements
  2. Lack of user involvement. (The developers didn’t really know what the customer wanted.)
  3. Unrealistic expectations. (The requirements weren't clearly defined.)
  4. Changing requirements and specifications. (The customers frequently changed their minds or played creeping featurism.)
  5. Lack of planning (They didn’t take the time to clearly define the requirements.)
The first step in eliciting requirements from the customer may come in the form of a Statement of Work. This is a document, drawn up by the customer, listing the requirements for the software system. Click Example SOW to see an example of a real Statement of Work.

Not all customers will provide such a clear Statement of Work. Some customers only know that they have a problem and want a software solution to that problem. As a software developer it may become your responsibility to work with that customer to understand what the problem is and to recommend a solution. A major part of the process of coming up with a solution to the problem will be to get a clear set of requirements specified.

Defining the requirements progresses through four steps

  1. Elicitation -- talk to the customer and make a list of their stated requirements.
  2. Analysis -- study and understand exactly what these requirements mean and what "behavior" the software system must demonstrate.
  3. Specification – Clearly state and list in detail the requirements.
  4. Validation – Check with the customer to make sure your statement of requirements matches the customer’s requirements.

The Requirements Definition Document

Once a clear understanding of the problem to be solved is achieved and a statement of work acceptable to the customer has been obtained then the next step is to prepare, for the customer, a document known as the Requirements Definition Document (RDD). This states in clear and precise terms the requirements of the system and the requirements must be stated in terms that the customer understands. This also implies that the software developers must understand precisely, terms that are meaningful to the customer.

The Requirements Specification Document

After the customer has approved the Requirements Definition Document the next step in the process of Requirements Analysis is to develop a Requirements Specification Document (RSD), also referred to as the Software Requirements Specification (SRS). This is a restatement of the requirements in terms that the developers understand. This document will begin to address the objects which will be required by the software and how those objects will interact. Click Example RSD to see an example of a real Statement of Work.