This recommended practice does not specifically discuss style, language usage, or techniques of good writing.
It is quite important, however, that an SRS be well written. General technical writing books can be used
for guidance.
4.5 SRS evolution
The SRS may need to evolve as the development of the software product progresses. It may be impossible to
specify some details at the time the project is initiated (e.g., it may be impossible to define all of the screen
formats for an interactive program during the requirements phase). Additional changes may ensue as defi-
ciencies, shortcomings, and inaccuracies are discovered in the SRS.
Two major considerations in this process are the following:
a) Requirements should be specified as completely and thoroughly as is known at the time, even if
evolutionary revisions can be foreseen as inevitable. The fact that they are incomplete should be
noted.
b) A formal change process should be initiated to identify, control, track, and report projected changes.
Approved changes in requirements should be incorporated in the SRS in such a way as to
1) Provide an accurate and complete audit trail of changes;
2) Permit the review of current and superseded portions of the SRS.
4.6 Prototyping
Prototyping is used frequently during the requirements portion of a project. Many tools exist that allow a
prototype, exhibiting some characteristics of a system, to be created very quickly and easily. See also ASTM
E1340-96.
Prototypes are useful for the following reasons:
a) The customer may be more likely to view the prototype and react to it than to read the SRS and react
to it. Thus, the prototype provides quick feedback.
b) The prototype displays unanticipated aspects of the systems behavior. Thus, it produces not only
answers but also new questions. This helps reach closure on the SRS.
c) An SRS based on a prototype tends to undergo less change during development, thus shortening
development time.
A prototype should be used as a way to elicit software requirements. Some characteristics such as screen or
report formats can be extracted directly from the prototype. Other requirements can be inferred by running
experiments with the prototype.
4.7 Embedding design in the SRS
A requirement specifies an externally visible function or attribute of a system. A design describes a particular
subcomponent of a system and/or its interfaces with other subcomponents. The SRS writer(s) should
clearly distinguish between identifying required design constraints and projecting a specific design. Note
that every requirement in the SRS limits design alternatives. This does not mean, though, that every requirement
is design.