When a poet writes a poem he intends that it should trigger off rich and
diverse visions for everyone who reads it. The requirements engineer has the
opposite intention: he would like each requirement to be understood in the same
way by every person who reads it. In practice many requirements specifications
are more like poetry, and are open to any interpretation that seems reasonable
to the reader. This subjectivity means that many systems are built to satisfy
the wrong interpretation of the requirement. The obvious solution to this
problem is to specify the requirement in such that it is understood in only one
way.
For example, in a requirements specification that I assessed, I found the
term "viewer" in many parts of the specification. My analysis identified six
different meanings for the term, depending on the context of its use. This kind
of requirements defect always causes problems during design and/or
implementation. If you are lucky, a developer will realise that there is
inconsistency, but will have to re-investigate the requirement. This almost
always causes a ripple effect that extends to other parts of the product. If you
are not lucky, the designer will choose the meaning that makes most sense to him
and implement that one. Any stakeholder who does not agree with that meaning
then considers that the system does not meet the requirement.
Requirements Test 2
Does the specification contain a
definition of the meaning of every essential subject matter term within the
specification?
I point you in the direction of abstract data modelling principles [7] which
provide many guidelines for naming subject matter and for defining the meaning
of that subject matter. As a result of doing the necessary analysis, the term
"viewer" could be defined as follows:
Viewer
A person who lives in the area which receives transmission of
television programmes from our channel.
Relevant attributes are:
Viewer Name
Viewer Address
Viewer Age Range
Viewer Sex
Viewer Salary Range
Viewer Occupation Type
Viewer Socio-Economic Ranking
When the allowable values for each of the attributes are defined it provides
data that can be used to test the implementation.
Defining the meaning of "viewer" has addressed one part of the coherency
problem. We also have to be sure that every use of the term "viewer" is
consistent with the meaning that has been defined.
Requirements Test 3
Is every reference to a defined term
consistent with its definition?