Each requirement in the SRS should be identified to make these differences clear and explicit. Identifying
the requirements in the following manner helps:
a) Have customers give more careful consideration to each requirement, which often clarifies any
hidden assumptions they may have.
b) Have developers make correct design decisions and devote appropriate levels of effort to the different
parts of the software product.
4.3.5.1 Degree of stability
One method of identifying requirements uses the dimension of stability. Stability can be expressed 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.
4.3.5.2 Degree of necessity
Another way to rank requirements is to distinguish classes of requirements as essential, conditional, and
optional.
a) Essential. Implies that the software will not be acceptable unless these requirements are provided in
an agreed manner.
b) Conditional. Implies that these are requirements that would enhance the software product, but would
not make it unacceptable if they are absent.
c) Optional. Implies a class of functions that may or may not be worthwhile. This gives the supplier the
opportunity to propose something that exceeds the SRS.
4.3.6 Verifiable
An SRS is verifiable if, and 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. In general any ambiguous requirement is not verifiable.
Nonverifiable 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 nonverifiable
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 s of event ¥ 60% of the time; and shall be
produced within 30 s of event ¥ 100% 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.