Evaluating the Project SRS

Evaluating the Project SRS

Throughout the SRS building process, the project manager must always be aware of the quality attributes of the SRS: correctness, unambiguousness, completeness, and consistency, ranked for importance and/or stability, verifiability, modifiability, and traceability. These attributes are evaluated as the SRS is being built.


An SRS is correct only if every requirement stated therein is one that the software shall meet. There is no tool or procedure that guarantees correctness. The SRS should be compared with any applicable superior specification (such as a system requirements specification), with other project documentation, and with other relevant standards, to ensure that it agrees. On the other hand, the customer or user can determine if the SRS correctly reflects the actual needs. Traceability makes this procedure easier and less prone to error.


An SRS is unambiguous only if every requirement stated therein has only one interpretation. At a minimum, this requires that each characteristic of the final product be explained using a single unique term. In cases where a term used in a particular context could have multiple meanings, the term should be included in a glossary where its meaning is made more specific. An SRS is an important part of the requirements process of the software life cycle and is used in design, implementation, project monitoring, verification and validation, and in training, as described in IEEE Std 1074-1997. The SRS should be unambiguous both to those who create it and to those who use it. Though, these groups often do not have the same background and therefore do not tend to explain software requirements the same way. Representations that improve the requirements specification for the developer may be counterproductive in that they diminish understanding to the user and vice versa.

Take note of these particular areas to avoid ambiguity:

1.  Natural language pitfalls - Requirements are frequently written in natural, human language such as English. Natural language is inherently ambiguous. A natural-language SRS should be reviewed by an independent party to identify ambiguous language for correction.

2.  Requirements specification languages - One way to avoid ambiguity inherent in natural language is to write the SRS in a particular requirements specification language. Its language processors automatically detect many lexical, syntactic, and semantic errors. One disadvantage of using such languages is the length of time required to learn them. Also, many non-technical users find them unintelligible. Furthermore, these languages tend to be better at expressing certain types of requirements and addressing certain types of systems. In this way, they may influence the requirements in subtle ways.

3.  Representation tools - Requirements methods and languages and the tools that support them fall into three general categories: object, process, and behavioral. Object-oriented approaches organize the requirements in terms of real-world objects, their attributes, and the services performed by those objects. Process-based approaches organize the requirements into hierarchies of functions that communicate via data flows. Behavioral approaches explain the external behavior of the system in terms of some abstract notion (such as predicate calculus), mathematical functions, or state machines. The degree to which such tools and methods may be useful in preparing an SRS depends upon the size and complexity of the program. When using any of these approaches it is best to retain the natural language descriptions so that customers unfamiliar with the notations can still understand the SRS.


An SRS is complete only if it contains the following elements:

1.  All significant requirements, whether relating to functionality, performance, design constraints, attributes, or external interfaces. Particularly, any external requirements imposed by a system specification should be acknowledged and treated.

2.  Definition of the responses of the software to all realizable classes of input data in all realizable classes of situations. Note that it is important to specify the responses to both valid and invalid input values.

3.  Full labels and references to all figures, tables, and diagrams in the SRS and definition of all terms and units of measure.

4.  No "To Be Determined" (TBD) labels. If there is a section containing a TBD it must also contain: a description of the conditions causing the TBD (e.g., why an answer is not known) so that the situation can be resolved, a description of what must be done to eliminate the TBD, who is responsible for its elimination, and by when it must be eliminated.


Consistency refers to internal consistency. If an SRS does not agree with some higher-level document, such as a system requirements specification, then it is neither consistent nor correct. An SRS is internally consistent only if no subset of individual requirements explained in it conflicts. The three types of likely conflict in an SRS are as follows:

1.  Conflict among specified characteristics of real-world objects.

●  The format of an output report may be explained in one requirement as tabular, but in another as textual.

●  One requirement may state that all lights should be green, while another may state that all lights should be blue.

2.  Logical or temporal conflict between two specified actions.

●  One requirement may specify that the program add two inputs, but another may specify that the program should multiply them.

●  One requirement may state that "A" must always follow "B," while another may require that "A and B" occur simultaneously.

3.  Two or more requirements may explain the same real-world object but use different terms for that object. For instance, a program's request for a user input may be called a "prompt" in one requirement and a "cue" in another. Standard terminology and definitions use promotes consistency.

Ranked for Importance and/or Stability

An SRS is ranked for importance and/or stability if each requirement in it has an identifier that indicates either the importance or stability of that particular requirement. Usually, requirements that relate to a software product are not equally important. Some requirements may be essential, particularly for life-saving applications, while others may be desirable. Each requirement in the SRS should be identified to make these differences clear and explicit.

Identifying the requirements in the following manner helps:

1.  Have customers give more careful consideration to each requirement, which often clarifies any hidden assumptions they may have.

2.  Have developers make correct design decisions and devote proper levels of effort to the different parts of the software product.

Degree of Stability

One method of identifying requirements uses the dimension of stability. Stability can be stated in terms of the number of expected changes to any requirement based on experience or knowledge of forthcoming events that affect the organization, functions, and people supported by the software system.

Degree of Necessity

Another way to rank requirements is to distinguish classes of requirements as essential, conditional, and optional.

1.  Essential - implies that the software will not be acceptable unless these requirements are provided in an agreed manner.

2.  Conditional - implies that these requirements would enhance the software product, but would not make it unacceptable if they are absent.

3.  Optional - implies a class of functions that may or may not be useful. This gives the supplier the opportunity to propose something that exceeds the SRS.


An SRS is verifiable only if every requirement stated therein is verifiable. A requirement is verifiable if, and only if, there exists some finite cost-effective process with which a person or machine can check that the software product meets the requirement. Generally, any ambiguous requirement is not verifiable. Non-verifiable requirements include statements such as "works well," "good human interface," and "shall usually happen." These requirements cannot be verified because it is impossible to define the terms "good," "well," or "usually." The statement that "the program shall never enter an infinite loop" is non-verifiable because the testing of this quality is theoretically impossible.

An example of a verifiable statement is:

Output of the program shall be produced within 20 seconds of event x 60 percent of the time, and shall be produced within 30 seconds of event x 100 percent of the time. This statement can be verified because it uses concrete terms and measurable quantities. If a method cannot be devised to determine whether the software meets a particular requirement, then that requirement should be removed or revised.


An SRS is modifiable only if its structure and style are such that any changes to the requirements can be made easily, completely, and consistently while retaining the structure and style.

Modifiability generally requires an SRS to:

1.  Have a coherent and easy-to-use organization with a table of contents, an index, and explicit cross-referencing.

2.  Not be redundant (i.e., the same requirement should not appear in more than one place in the SRS).

3.  Express each requirement separately, rather than intermixed with other requirements.

4.  Redundancy itself is not an error, but it can easily lead to errors. Redundancy can occasionally help to make an SRS more readable, but a problem can arise when the redundant document is updated. For example, a requirement may be altered in only one of the places where it appears. The SRS then becomes inconsistent. Whenever redundancy is necessary, the SRS should include explicit cross-references to make it modifiable.


An SRS is traceable if the origin of each of its requirements is clear and if it facilitates the referencing of each requirement in future development or enhancement documentation.

The following two types of traceability are recommended:

1.  Backward traceability (i.e., to previous stages of development). This depends upon each requirement explicitly referencing its source in earlier documents.

2.  Forward traceability (i.e., to all documents spawned by the SRS). This depends upon each requirement in the SRS having a unique name or reference number.

Forward traceability of the SRS is particularly important when the software product enters the operation and maintenance phase. As code and design documents are modified, it is necessary to be able to ascertain the complete set of requirements that may be affected by those modifications.

Some Final Hints

1.  Limit redundancy as much as possible. There will be overlap between sections 2 and 3. Redundancy makes the document harder to maintain.

2.  Label each section numerically. This will facilitate traceability and the creation of a traceability matrix.

3.  A picture is worth a thousand words. If a requirement is difficult to explain with text, perhaps a diagram (state chart, flow chart, etc.) might make things clearer.

4.  It is easier to draw a picture of a dialog box than it is to describe it in text. Use graphics to present user interfaces.


life cycle, software product, srs, tbd, life-saving applications
The contents available on this website are copyrighted by TechPlus unless otherwise indicated. All rights are reserved by TechPlus, and content may not be reproduced, published, or transferred in any form or by any means, except with the prior written permission of TechPlus.
Copyright 2017 SPMInfoBlog.
Designed by TechPlus