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:
-
Incomplete requirements
-
Lack of user involvement. (The developers didn’t really know what
the customer wanted.)
-
Unrealistic expectations. (The requirements weren't clearly defined.)
-
Changing requirements and specifications. (The customers frequently
changed their minds or played creeping featurism.)
-
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
-
Elicitation -- talk to the customer and make a list of their stated requirements.
-
Analysis -- study and understand exactly what these requirements mean and
what "behavior" the software system must demonstrate.
-
Specification – Clearly state and list in detail the requirements.
-
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.