J. Software Engineering & Applications, 2010, 3, 827-838
doi:10.4236/jsea.2010.39096 Published Online September 2010 (http://www.SciRP.org/journal/jsea)
Copyright © 2010 SciRes. JSEA
827
What’s Wrong with Requirements Specification?
An Analysis of the Fundamental Failings of
Conventional Thinking about Software
Requirements, and Some Suggestions for
Getting it Right
Tom Gilb
Result Planning Limited, Norway and UK.
Email: Tom@Gilb.com
ABSTRACT
We know many of our IT projects fail and disappoint. The poor state of requirements methods and practice is frequently
stated as a factor for IT project failure. In this paper, I discuss what I believe is the fundamental cause: we think like
program mers , not engineers and managers. We do not concentrate on value delivery, but instead on functions, on
use-cases and on code delivery. Further, management is not taking its responsibility to make things better. In this paper,
ten practical key principles are proposed, which aim to improve the quality of requirements specification.
Keywords: Requirements, Value Delivery, Requirements Definition, Requirements Methods
1. Introduction
We know many of our IT projects fail and disappoint.
We know bad ‘requirements’, that is requirements that
are ambiguous or are not really needed, are often a factor.
However in my opinion, the real problem is one that al-
most no one has openly discussed or dealt with. Certainly,
it fails to be addressed by many widely known and
widely taught methods. So what is this problem? In a
nutshell: it is that we think like programmers, and not as
engineers and managers. In other words, we do not con-
centrate on value delivery, but instead on functions, on
use cases and on code delivery. And no one is attempting
to prevent this: IT project management and senior man-
agement are not taking their responsibility to make things
better.
2. Ten Key Principles for Successful
Requirements
In this paper, my ten key principles for improving the
approach to requirements are outlined. These principles
are not new, and they could be said to be simply com-
monsense. However, many IT projects still continue to
fail to grasp their significance, and so it is worth restating
them. These key principles are summarized in Figure 1.
Let’s now examine these principles in more detail and
provide some examples.
Note, unless otherwise specified, further details on all
aspects of Planguage can be found in [1].
2.1. Understand the Top Level Critical
Objectives
I see the ‘worst requirement sin of all’ in almost all pro-
jects we look at, and this applies internationally. Time
and again, the high-level requirements (the ones that
funded the project), are vaguely stated, and ignored by
the project team. Such requirements frequently look like
the example given in Figure 2.
The requirements in Figure 2 have been slightly ed-
ited to retain anonymity. They are for a real project that
ran for eight years and cost over 100 million US dollars.
The project failed to deliver any of these requirements.
However, the main problem is th at these are not top -leve l
requirements: they fail to explain in su fficient detail what
the business is trying to achieve. There are additional
problems as well that I’ll discuss further later in this pa-
per (such as lack of quantification, mixing optional de-
signs into the requirements, and insufficient background
What’s Wrong with Requirements Specification? An Analysis of the Fundamental Failings of Conventional
Thinking about Software Requirements, and Some Suggestions for Getting it Right
Copyright © 2010 SciRes. JSEA
828
Ten Key Principles for Successful Requirements
1 Understand the top level critical objectives
2 Look towards value delivery: systems thinking, not just software
3 Define a ‘requirement’ as a ‘sta kehol der-valued end state’
4 Think stakeholders: not just users and customers!
5 Quantify requirements as a basis for software engineering
6 Don’t mix ends and means
7 Focus on the required system quality, not just its functionality
8 Ensure there is ‘rich specification’: requirement specifications need far more information than the requirement
itself!
9 Carry out specification quality control (SQC)
10 Recognize that requirements chang e : use feedback and update requirements as necessary
Figure 1. Ten key principles for successful requirements.
Example of Initial Top Level Objectives
1 Central to the corporation’s busines s strategy is to be the world’s premier integrated <dom ain > service provider
2 Will provide a much more efficient user experien c e
3 Dramatically scale back the time frequently needed after the last data is acquired to time align, depth correct,
splice, merge, recomputed and/or do whatever else is needed to generate the desired products
4 Make the system much easier to understand and use than has been the case with the previous system
5 A primary goal is to provide a much more productive system development environment then was previously the
case
6 Will provide a richer set of functionality fo r s up po rting next generation logging tools and applications
7 Robustness is an essential system requirement
8 Major improvements in data qual ity over current practices
Figure 2. Example of initial top level objectives.
description).
Management at the CEO, CTO and CIO level did not
take the trouble to clarify these critical objectives. In fact,
the CIO told me that the CEO actively rejected the idea
of clarification! So management lost control of the pro-
ject at the very beginning.
Further, none of the technical ‘experts’ reacted to the
situation. They happily spent $100 million on all the
many suggested architecture solutions that were mixed in
with the objectives.
It actually took less than an hour to rewrite one of
these objectives so that it was clear, measurable, and
quantified. So in one day’s work the project could have
clarified the objectives, and avoided 8 years of wasted
time and effort.
1) The top ten critical requirements for any project can
be put on a single page.
2) A good first draft of the top ten critical require-
ments for any project can be made in a day’s work, as-
suming access to key management.
2.2. Look towards Value Delivery: Systems
Thinking, not Just a Focus on Software
The whole point of a project is delivering realized value,
also known as benefits, to the stakeholders: it is not the
defined functionality, and not the user stories that count.
Value can be defined as the ben efit we think we get from
something [1]. See Figure 3. Notice the subtle distinc-
tion between initially perceived value (‘I think that
would be useful’), and realized value: effective and fac-
tual value (‘this was in practice more valuable than we
thought it would be, beca use …’) .
The issue is that conventional requirements thinking is
that it is not closely enough coupled with ‘value’. IT
business analysts frequently fail to gather the information
supporting a more precise understanding and/or the cal-
culation of value. Moreover, the business people when
stating their requirements frequently fail to justify them
What’s Wrong with Requirements Specification? An Analysis of the Fundamental Failings of Conventional
Thinking about Software Requirements, and Some Suggestions for Getting it Right
Copyright © 2010 SciRes. JSEA
829
Figure 3. Value can be delivered gradually to stakeholders. Different stakeholders will perceive different value.
using value.
The danger if requirements are not closely tied to
value is that:
1) We risk failure to deliver the value expected, even if
‘requirements’ are satisfied
2) We risk having a failure to think about all the things
to do that are necessary prerequisites to actually deliver-
ing full value to real stakeholders on time: we need sys-
tems thinki ng – not j ust programming.
How can we articulate and document notions of value
in a requirement specification? See the Planguage exam-
ple for Intuitiveness, a component quality of Usability, in
Figure 4.
For brevity, a detailed explanation is unable to be
given here. Hopefully, the Planguage specification is
reasonably understandable without detailed explanation.
For example, the Goal statement (80%) specifies which
market (USA) and users (Seniors) it is intended for,
which set of tasks are valued (the ‘Photo Tasks Set’), and
when it would be valu ab le to get it d eliv ered (201 2). This
‘qualifier’ information in all the statements, helps docu-
ment where, who, what, and when the quality level ap-
plies. The additional Value parameter specifies the per-
ceived value of achieving 100% of the requirement. Of
course, more could be said about value and its specifica-
tion, this is merely a ‘wake-up call’ that explicit value
needs to be captured within requirements. It is better than
the more common specifications of the Usability re-
quirement that we often see, such as: “2.4. The product
will be more user-friendly, using Windows”.
So who is going to make these value statements in re-
quirements specifications? I don’t expect developers to
care much about value statements in requirements. Their
job is to deliver the requirement levels that someone else
has determined are valued. Deciding what sets of re-
quirements are valuable is a Product Owner (Scrum) or
Marketing Management function. Certainly only the IT-
related value should be determined by the IT staff.
2.3. Define a ‘Requirement’ as a
‘Stakeholder-Valued End State’
Do we all have a shared notion of what a ‘requirement’ is?
I am afraid that another of our problems. Everybody has
an opinion, and most of the opinions about the meaning
of the concept ‘requirement’ are at variance with most
other opinions. I believe that few of the popular defini-
tions are correct or useful. Below I provide you with my
latest ‘opinion’ about the best definition of ‘requirement’,
but note it is a ‘work in progress’ and possibly not my
final definition. Perhaps some of you can help improve
this definition even further.
To emphasize ‘the point’ of IT systems engineering, I
have decided to define a requirement as a “stakeholder-
valued end state”. You possibly will not accept, or use
this definition yet, but this is the definition that I shall
use in this paper, and I will argue the case for it. In addi-
tion, I have also identified, and defined a large number of
requirement concepts [1]. A sample of these concepts is
given in Figure 5.
Further, note that I make a distinction amongst:
1) A requirement (a stakeholder-valued end state)
2) A requirement specification
3) An implemented requirement
4) A design in partial, or full service, of implementing
a requirement.
What’s Wrong with Requirements Specification? An Analysis of the Fundamental Failings of Conventional
Thinking about Software Requirements, and Some Suggestions for Getting it Right
Copyright © 2010 SciRes. JSEA
830
Usability. Intuitiveness:
Type: Marketing Product Requirement.
Stakeholders: {Marketing Director, Support Manager, Training Center}.
Impacts: {Product Sales, Support Costs, Training Effort, Doc umentation Design}.
Supports: Corporate Quality Policy 2.3.
Ambition: Any potential user, any age, can immediately discover and correctly use all functions of the product, without
training, help from fr iend s, or external documentation.
Scale: % chance that a defined [User] can successfully complete the defined [Tasks] <immediately>, with no external
help.
Meter: Consumer Reports tests all tasks for all defined user types, and gives public report.
----------------------------------------------------------------- Analysis -----------------------------------------------------------------
Trend [Market = Asia, User = {Teenager, Early Adopters}, Product = Main Competitor, Projection = 2013]: 95% ± 3%
< - Market Analysis.
Past [Market = USA, User = Seniors, Product = Old Version, Task = Photo Tasks Set, When = 2010]: 70% ± 10% < -
Our Labs Measures.
Record [Market = Finland, User = {Android Mobile Phone, Teenagers}, Task = Phone + SMS Task Set, Record Set =
January 2010]: 98% ± 1% < - Secret Report.
------------------------------------------------------------ Our Product Plans -----------------------------------------------------------
Goal [Market = USA, User = Seniors, Product = New Version, Task = Photo Tasks Set, When = 2012]: 80% ± 10% < -
Draft Marketing Plan.
Value [Market =USA, User = Seniors, Product = New Version, Task = Photo Tasks Set, Time Period = 2012]: 2 M
USD.
Tolerable [Market = Asia, User = {Teenager, Early Adopters}, Product = Our New Version, Deadline = 2013]: 97% ±
3% < - Marketing Director Speech.
Fail [Market = Finland, User = {Android Mobile Phone, Teenagers}, Task = Phone + SMS Task Set, Product Release
9.0]: Less Than 95%.
Value [Market = Finland, User = {Android Mobile Phone, Teenagers}, Task = Phone + SMS Task Set, Time Period =
2013]: 30K USD.
Figure 4. A practical made-up Planguage exam p l e , desi g ne d t o disp l ay ways o f making the value of a requirement clear.
Figure 5. Example of Planguage requirements concepts.
What’s Wrong with Requirements Specification? An Analysis of the Fundamental Failings of Conventional
Thinking about Software Requirements, and Some Suggestions for Getting it Right
Copyright © 2010 SciRes. JSEA
831
These distinctions will be described in more detail
later in this paper.
2.4. Think Stakeholders: Not Just Users and
Customers!
Too many requirements specifications limit their scope to
being too narrowly focused on user or customer needs.
The broader area of stakeholder needs and values should
be considered, where a ‘stakeholder’ is anyone or any-
thing that has an interest in the system [1]. It is not just
the end-users and customers that must be considered: IT
development, IT maintenance, senior management, gov-
ernment, and other stakeholders matter as well.
2.5. Quantify Requirements as a Basis for
Software Engineering
Some systems developers call themselves ‘software en-
gineers’, they might even have a degree in the subject, or
in ‘computer science’, but they do not seem to practice
any real engineering as described by engineering profes-
sors, like Koen [2]. Instead these developers all too often
produce requirements specifications consisting merely of
words. No numbers, just nice sounding words; good
enough to fool managers into spending millions for
nothing (for example, “high usability”).
Engineering is a practical bag of tricks. My dad was a
real engineer (with over 100 patents to his name!), and I
don’t remember him using just words. He seemed forever
to be working with slide rules and back-of-the-envelope
calculations. Whatever he did, he could you tell why it
was numerically superior to somebody else’s product. He
argued with numbers and measures.
My life changed professionally, when, in my twenties,
I read the following words of Lord Kelvin: “In physical
science the first essential step in the d irection of learning
any subject is to find principles of numerical reckoning
and practicable methods for measuring some quality
connected with it. I often say that when you can measure
what you are speaking about, and express it in numbers,
you know something about it; but when you cannot
measure it, when you cannot express it in numbers, your
knowledge is of a meagre and unsatisfactory kind; it may
be the beginning of knowledge, but you have scarcely in
your thoughts advanced to the state of Science, whatever
the matter may be” [3]. Alternatively, more simply, also
credited to Lord Kelvin: “If you can not measure it, you
can not improve it”.
The most frequent and critical reasons for software
projects are to improve them qualitatively compared to
their predecessors (which may or may not be automated
logic). However, we seem to almost totally avoid the
practice of quantifying these qualities, in order to make
them clearly understood, and also to lay the basis for
measuring and tracking our progress in improvement
towards meeting our quality level requ irements.
This art of quantification of any quality requirement
should be taught as a fundamental to university students
of software and management disciplines (as it is in other
sciences and engineering). One problem seems to be that
the teachers of software disciplines do not appreciate that
quality has numeric dimensions and so cannot teach it.
Note the problem is not that managers and software peo-
ple cannot and do not quantify at all. They do. It is the lack
of ‘quantification of the qualitative’—the lack of numeric
quality requirements—that is the specific problem.
Perhaps we need an agreed definition of ‘quality’ and
‘qualitative’ before we proceed, since the common inter-
pretation is too narrow, and not well agreed. Most soft-
ware developers when they say ‘quality’ are only think-
ing of bugs (logical defects) and little else. Managers
speaking of the same software do not have a broader
perspective. They speak and write often of qualities, but
do not usually refer to the broader set of ‘-ilities’ as
qualities, unless pressed to do so. They may speak of
improvements, even benefits instead.
I believe that the concept of ‘quality’ is simplest ex-
plained as ‘how well something functions’. I prefer to
specify that it is necessarily a ‘scalar’ attribute, since
there are degrees of ‘how well’. In addition to quality,
there are other requirement-related concepts, such as
workload capacity (how much performance), cost (how
much resource), function (what we do), and design (how
we might do function well, at a given cost) [1,4]. Some
of these concepts are scalar and some, binary. See Fig-
ures 6 and 7 for some examples of quality concepts and
how quality can be related to the function, resources and
design concepts.
My simple belief is that abso lutely all qualities th at we
value in software (and associated systems) can be ex-
pressed quantitatively. I have yet to see an exception. Of
course most of you do not know that, or believe it. One
simple way to explore this is to search the internet. For
example: “Intuitiveness scale measure” turns up 3 million
hits, including t hi s excel l e nt study [ 5] by Yan ga et al.
Several major corporations have top-level policy to
quantify all quality requirements (sometimes suggested
by me, sometimes just because they are good engineers).
They include IBM, HP, Ericsson and Intel [1 ,4].
The key idea for quantification is to define, or reuse a
definition, of a scale of measure. For example: (earlier
given with more detail)
To give some explanation of the key quantification
features in Figure 8:
What’s Wrong with Requirements Specification? An Analysis of the Fundamental Failings of Conventional
Thinking about Software Requirements, and Some Suggestions for Getting it Right
Copyright © 2010 SciRes. JSEA
832
Figure 6. A way of visualizing qualities in relation to function and cost. Qualities and costs are scalar variables, so we can
define scales of measure in order to discuss them numerically. The arrows on the scale arrows represent interesting points,
such as the requirement levels. The requirement is not ‘security’ as such, but a defined, and testable degree of security [1].
Figure 7. A graphical way of understanding performance attributes (which include all qualities) in relation to function, de-
sign and resources. Design ideas cost some resources, and design ideas deliver performance for given functions. Source [1].
1) Ambition is a high level summary of the require-
ment. One that is easy to agree to, and understand
roughly. The Scale and Goal following it MUST corre-
late to this Ambition statement.
2) Scale is the formal definition of our chosen scale of
measure. The parameters [User] and [Task] allow us to
generalize here, while becoming more specific in detail
below (see earlier example). They also encourage and
permit the reuse of the Scale, as a sort of ‘pattern’.
3) Meter is a defined measuring process. There can be
more than one for different occasions. Notice the Kelvin
quotation above, how he twice in the same sentence dis-
tinguishes carefully between numeric definition (Scale),
and measurement process or instrument (Meter). Many
people, I hope you are not one, think they are the same
thing, for example: Km/hour is not a speedometer, and a
volt is not a voltmeter.
4) Goal is one of many possible requirement levels
(see earlier detail for some others; Fail, Tolerable,
Stretch, Wish, are other requirement levels). We are de-
What’s Wrong with Requirements Specification? An Analysis of the Fundamental Failings of Conventional
Thinking about Software Requirements, and Some Suggestions for Getting it Right
Copyright © 2010 SciRes. JSEA
833
fining a stakeholder valued future state (state = 80% ±
10%).
One stakeholder is ‘USA Seniors’. The future is 2012.
The requirement level type, Goal is defined as a very
high priority, budgeted promise of delivery. It is of
higher priority than a Stretch or Wish level. Note other
priorities may conflict and prevent this particular re-
quirement from being delivered in practice.
If you know the conventional state of requirements
methods, then you will now, from this example alone,
begin to appreciate the difference that I am proposing.
Especially for quality requirements. I know you can
quantify time, costs, speed, respon se time, burn rate, and
bug density—but there is more!
Here is another example of quantification. It is the ini-
tial stage of the rewrite of Robustness from the Figure 2
example. First we determined that Robustness is complex
and composed of many different attributes, such as Test-
ability. See Figure 9.
And see Figure 10, which quantitatively defines one
of the attributes of Robustness, Testability.
Note this example shows the notion of there being dif-
ferent levels of requirements. Principle 1 also has rele-
vance here as it is concerned with top-level objectives
(requirements). The different levels that can be iden tified
include: corporate requirements, the top- level critical few
project or product requirements, system requirements and
software requirements. We need to clearly document the
Usability. Intuitiveness:
Type: Marketing Product Quality Requirement.
Ambition: Any potential user, any age, can immediately discover and correctly use all functions of the product, without
training, help from fr iend s, or external documentation.
Scale: % chance that defined [User] can successfully complete defined [Tasks] <immediately > with no e x te r n al help .
Meter: Consumer reports tests all tasks for all defined us er types, and gives public report.
Goal [Market = USA, User = Seniors, Product = New Version, Task = Photo Tasks Set, When = 2012]: 80% ± 10% < -
Draft Marketing Plan.
Figure 8. A simple example of quantifying a quality requirement, ‘Intuitiveness’.
Robustness:
Type: Complex Product Quality Requirement.
Includes: {Software Downtime, Restore Speed, Testability, Fault Prevention Capability, Fault Isolation Capability, Fault
Analysis Capability, Hardware Debugging Capability}.
Figure 9. Definition of a complex quality requirement, Robustness.
Testability:
Type: Software Quality Requirement.
Version: Oct 20, 2006.
Status: Draft.
Stakeholder: {Operator, Tester}.
Ambition: Rapid duration automatic testing of <critical complex tests> with extreme operator setup and initia t io n .
Scale: The duration of a defined [Volume] of testing or a defined [Type of Testing] by a defined [Skill Level] of system
operator under defined [Operating Conditions].
Goal [All Customer Use, Volume = 1,000,000 data items, Type of Testing = WireXXXX vs. DXX, Skill Level = First
Time Novice, Operating Conditions = Field]: < 10 minutes.
Design: Tool simulators, reverse cracking tool, generation of simulated telemetry frames entirely in software, application
specific sophistication for drilling – recorded mode simulation by playing back the dump file, application test harness
console < –6.2.1 HFS.
Figure 10. Quantitative definition of testability, an attribute of Robustness.
What’s Wrong with Requirements Specification? An Analysis of the Fundamental Failings of Conventional
Thinking about Software Requirements, and Some Suggestions for Getting it Right
Copyright © 2010 SciRes. JSEA
834
level and the interactions amongst these requirements.
An additional notion is that of ‘sets of requirements’.
Any given stakeholder is likely to have a set of require-
ments rather than just an isolated single requirement. In
fact, achieving value could depend on meeting an entire
set of requirements.
2.6. Don’t Mix Ends and Means
Perfection of means and confusion of ends seem to
characterize our age.” Albert Einstein. 1879-1955.
The problem of confusing ends and means is clearly an
old one, and deeply rooted. We specify a solution, design
and/or architecture, instead of what we really value—our
real requirement [6]. There are explanatory reasons for
this—for example solutions are more concrete, and what
we want (qualities) are more abstract for us (because we
have not yet learned to make them measurable and con-
crete).
The problems occur when we do confuse them: if we
do specify the means, and not our true ends. As the say-
ing goes: “Be careful what you ask for, you might just
get it” (unknown sour ce). The problems include:
1) You might not get what you really want,
2) The solution you have specified might cost too
much or have bad side effects, even if you do get what
you want,
3) There may be much better solutions you don’t know
about yet.
So how to we find the ‘right requirement’, the ‘real
requirement’ [6] that is being ‘masked’ by the solution?
Assume that there probably is a better formulation, which
is a more accurate expression of our real values and
needs. Search for it by asking ‘Why?’ Why do I want X,
it is because I really want Y, and assume I will get it
through X. But, then why do I want Y? Because I really
want Z and assume that is the best way to get X. Con-
tinue the process un til it seems reason able to stop. This is
a slight variation on the ‘5 Whys’ technique [7], which is
normally used to iden tify root causes of problems (rather
than high level objectives).
Assume that our stakeholders will usually state their
values in terms of some perceived means to get what
they really value. Help them to identify (The 5 Whys?)
and to acknowledge what they really want, and make that
the ‘official’ requirement. Don’t insult them by telling
them that they don’t know what they want. But explain
that you will help them more-certainly get what they
more deeply want, with better and cheaper solutions,
perhaps new technology, if they will go through the ‘5
Whys?’ process with you. See Figure 11.
Note that this separation of designs from the require-
ments does not mean that you ignore the solutions/de-
signs/architecture when software engineering. It is just
that you must separate your requirements including any
mandatory means, from any optional means.
2.7. Focus on the Required System Quality, Not
Just its Functionality
Far too much attention is paid to what the system must
do (function) and far too little attention is given to how
well it should do it (qualities)—in spite of the fact that
quality improvements tend to be the major drivers for
new projects. See Table 1, which is from the Confirmit
case study [8]. Here fo cusing on the quality requirements,
rather than the functions, achieved a great deal!
2.8. Ensure there is ‘Rich Specification’:
Requirement Specifications need Far More
Information than the Requirement itself
Far too much emphasis is often placed on the require-
ment itself; and far too little concurrent information is
gathered about its background, for example: who wants
this requirement and why? What benefits do they per-
ceive from this requirement? I think the requirement it-
self might be less than 10% of a complete requirement
specification that includes the background information.
I believe that background specification is absolutely
Why do you require a ‘passwor d’? For Security!
What kind of security do you want? Against stolen information
What level of strength of security against stolen information are you willing to pay for? At least a 99% chance that
hackers cannot break in within 1 hour of tryi n g! Whatever that level costs up to €1 million.
So that is your real requirement? Yep.
Can we make that the official requirement, and leave the security design to both our security experts, and leave it to
proof by measurement to decide what is really the right design? Of course!
The aim being that whatever technology we choose, it gets you the 99%?
Sure, thanks for helping me articul ate that!
Figure 11. Example of the requirement, not the design feature, being the real requirement.
What’s Wrong with Requirements Specification? An Analysis of the Fundamental Failings of Conventional
Thinking about Software Requirements, and Some Suggestions for Getting it Right
Copyright © 2010 SciRes. JSEA
835
Table 1. Extract from confirmit case study [8].
Description of requirement/work task Past Status
Usability. Productivity: Time for t h e system to generate a survey 7200 sec 15 sec
Usability. Productivity: Time to set up a typical market research report 65 min 20 min
Usability. Productivity: Time to grant a set of end-users access to a report set and
distribute report login information 80 min 5 min
Usability. Intuitiveness: The time in minutes it takes a medium-experienced pro-
grammer to define a complete and correct data transfer definition with Confirmit
Web Services without any user docum entat ion or any other aid 15 min 5 min
Performance. R u n ti me. Concurrency: Maximum n umber of simultaneous respo nde nts
executing a survey with a click rate of 20 sec and a response time < 500ms given a
defined [Survey Complexity] and a defined [Server Configuration, Typical] 250 users 6000
mandatory: it should be a corporate standard to specify a
great deal of this related information, and ensure it is
intimately and immediately tied into the requirement
specification itself.
Such background information is the part of a specifi-
cation, which is useful related information, but is not
central (core) to the implementation, and nor is it com-
mentary. The central information includes: Scale, Meter,
Goal, Definition and Constraint. Commentary is any de-
tail that probably will not have any economic, quality or
effort consequences if it is incorrect, for example, notes
and comments.
Background specification includes: benchmarks {Past,
Record, Trend}, Owner, Version, Stakeholders, Gist
(brief description), Ambition, Impacts, and Supports. The
rationale for background information is as follows:
1) To help judge value of the requirement
2) To help prioritize the requirement
3) To help understand risks with the requirement
4) To help present the requirement in more or less de-
tail for various audie nces a n d di fferent purpos es
5) To give us help when updating a requirement
6) To synchronize the relationships between different
but related levels of the requirements
7) To assist in quality control of the requirements
8) To improve the clarity of the requirement.
See Figure 12 for an example, which illustrates the
help given by back g ro u nd inf ormation regardi n g ri sks.
Reliability:
Type: Performance Quality.
Owner: Quality Director. Author: John Engineer.
Stakeholders: {Users, Shops, Repair Centers}.
Scale: Mean Time Between Failure.
Goal [Users]: 20,000 hours < - Customer Survey, 2004.
Rationale: Anything less would be uncompetitive.
Assumption: Our main competitor does not improve more than 10%.
Issues: New competitors might appear.
Risks: The technology costs to reach this level might be excessive.
Design Suggestion: Triple redundant s oftware and database system.
Goal [Shops]: 30, 00 0 hours < - Quality Director.
Rationale: Customer contract specification.
Assumption: This is technically possible today.
Issues: The necessary technology might cause undesired schedule delay s.
Risks: The customer might merge with a competitor chain and leave us to foot the costs for the component parts
that they might no longer require .
Design Suggestion: Simplification and reuse of known components.
Figure 12. A requirement specification can be embellished with many background specifications that will help us to under-
stand risks associated with one or more elements of the requirement specification [9].
What’s Wrong with Requirements Specification? An Analysis of the Fundamental Failings of Conventional
Thinking about Software Requirements, and Some Suggestions for Getting it Right
Copyright © 2010 SciRes. JSEA
836
Let me emphasize that I do not believe that this back-
ground information is sufficient if it is scattered around
in different documents and meeting notes. I believe it
needs to be directly integrated into a master sole reusable
requirement specification object for each requirement.
Otherwise it will not be available when it is needed, and
will not be updated, or shown to be inconsistent with
emerging improvements in the requirement specification.
See Figure 13 for a requirement template for function
specification [1], which hints at the richness possible
TEMPLATE FOR FUNCTION SPECIFICATION <with hints>
Tag: <Tag name for the function>.
Type: <{Function Specification, Function (Target) Requirement, Function Constraint}>.
=================================== Basic Information ===================================
Version: <Date or other version number>.
Status: <{Draft, SQC Exited, Approved, Rejected}>.
Quality Level: <Maximum remaining major defects/page, sample size, date>.
Owner: <Name the role/email/person responsible for changes and updates to this specification>.
Stakeholders: <Name any stakehold ers with an interest in this specification>.
Gist: <Give a 5 to 20 word summary of the nature of this function>.
Description: <Give a detailed, unambiguous description of the function, or a tag reference to someplace where it is
detailed. Remember to include definition s of any local terms>.
===================================== Relationships =====================================
Supra-functions: <List tag of function/mission, which this function is a part of. A hierarchy of tags, such as A.B.C, is
even more illuminating. Note: an alternative way of expr e ss i n g s up r a - function is to use Is Part Of>.
Sub-functions: <List the tags of any immediate sub-functions (that is, the next level down), of this function. Note:
alternative ways of expressing sub-functions are Includes and Consists Of>.
Is Impacted By: <List the tags of any design ideas or Evo steps delivering, or capable of delivering, this function. The
actual function is NOT modified by the design idea, but its presence in the system is, or can be, altered in some way.
This is an Impact Estimation table relationship>.
Linked To: <List names or tags of any other system specifications, which this one is related to intimately, in addition to
the above specified hierarchical function relations and IE-related links. Note: an alternative way is to express such a
relationship is to use Supports or Is Suppor t ed By, as appropriate>.
====================================== Measurement ====================================
Test: <Refer to tags of any test plan or/and tes t cases, which deal with this function>.
================================ Priority and Risk Management =============================
Rationale: < Justify the existen c e of this fu nction. Why is this function necessary? >.
Value: <Name [Stakeholder, time, place, event>]: <Quantify, or express in words, the value claimed as a result of de-
livering the requirement>.
Assumptions: <Specify, or refer to tags of any assumptions in connection with this function, which could cause prob-
lems if they were not true, or later became invalid>.
Dependencies: <Using text or tags, name anything, which is dependent on this function in any significant way, or
which this function itself, is dependent on in any sign ificant way>.
Risks: <List or refer to tags of anything, which could cause malfunction, delay, or negative impacts on plans, require-
ments and expected results>.
Priority: <Name, using tags, any system elements, which this function can clearly be done after or must clearly be done
before. Give any relevant reasons>.
Issues: <State any known issues>.
====================================== Specific Budgets ==================================
Financial Budget: <Refer to the allocated money for planning and implementation (which includes test) of this func-
tion>.
Figure 13. A template for function specification [1].
What’s Wrong with Requirements Specification? An Analysis of the Fundamental Failings of Conventional
Thinking about Software Requirements, and Some Suggestions for Getting it Right
Copyright © 2010 SciRes. JSEA
837
for background information.
2.9. Carry out Specification Quality Control
(SQC)
There is far too little quality control of requirements,
against relevant standards for requirements. All require-
ments specifications ought to pass their quality control
checks before they are released for use by the next proc-
esses. Initial quality control of requirements specification,
where there has been no previous use of specification
quality control (SQC) (also known as Inspection), using
three simple quality-checking rules (‘unambiguous to
readers’, ‘testable’ and ‘no optional designs present’),
typically identifies 80 to 200+ words per 300 words of
requirement text as ambiguous or unclear to intended
readers [10]!
2.10. Recognise That Requirements Change: Use
Feedback and Update Requirements as
Necessary
Requirements must be developed based on on-going
feedback from stakeholders, as to their real value.
Stakeholders can give feedback about their perception of
value, based on realities. The whole process is a ‘Plan
Do Study Act’ cyclical learning process involving many
complex factors, including factors from outside the sys-
tem, such as politics, law, international differences, eco-
nomics, and technology change.
The requirements must be evolved based on realistic
experience. Attempts to fix them in advance, of this ex-
perience flow, are probably wasted energy: for example,
if they are committed to—in contracts and fixed specifi-
cations.
3. Who or What will Change Things?
Everybody talks about requirements, but few people
seem to be making progress to enhance the quality of
their specifications and improve support for software
engineering. I am pessimistic. Yes, there are internation-
ally competitive businesses, like HP and Intel that have
long since improved their practices because of their
competitive nature and necessity. But they are very dif-
ferent from the majority of organizations building soft-
ware. The vast majority of IT systems development
teams we encounter are not highly motivated to learn or
practice first class requirements (or anything else!). Nei-
ther the managers nor the developers seem strongly mo-
tivated to improve. The reason is that they get by with,
and get well paid for, failed projects.
The universities certainly do not train IT/computer sci-
ence students well in requirements, and the business
schools also certainly do not train managers about such
matters [11]. The fashion now seems to be to learn over-
simplified methods, and/or methods prescribed by some
certification or standardization body. Interest in learning
provably more-effective methods is left to the enlight-
ened and ambitions few—as usual. So, it is the only the
elite few organizations and individuals who do in fact
realize the competitive edge they g et with better practices
[8,12]. Maybe this is simply the way the world is: first
class and real masters of the art are rare. Sloppy ‘mud-
dling through’ is the norm. Failure is inevitable or per-
haps, denied. Perhaps insurance companies and lawmak-
ers might demand better practices, but I fear that even
that would be corrupted in practice, if history is any
guide (think of CMMI and the various organizations at
Level 5).
Excuse my pessimism! I am sitting here writing with
the BP Gulf Oil Leak Disaster in mind. The BP CEO
Hayward just got his reward today of £11 million in pen-
sion rights for managing the oil spill and 11 deaths. In
2007, he said his main job was “to focus ‘laser like’ on
safety and reliability” [13]. Now how would you define,
measure and track those requirements?
Welcome if you want to be exceptional! I’d be happy
to help!
4. Summary
Current typical requirements specification practice is
woefully inadequate for today’s critical and complex
systems. There seems to be wide agreement about that. I
have personally seen several real projects where the ex-
ecutives involved allowed over $100 million to be
wasted on software projects, rather than ever changing
their corporate practices. $100 million here and there,
corporate money, is not big money to these guys!
We know what to do to improve requirements specifi-
cation, if we want to, and some corporations have done
so, some projects have done so, some developers have
done so, some professors have done so: but when is the
other 99.99% of requirements stakeholders going to
wake up and specify requirements to a decent standard?
If there are some executives, governments, professors
and/or consultancies, who want to try to improve their
project requirements, then I suggest start by seeing how
your current requirements specifications measure up to
addressing the ten key principles in this paper.
5. Acknowledgements
Thanks to Lindsey Brodie for editing this paper.
What’s Wrong with Requirements Specification? An Analysis of the Fundamental Failings of Conventional
Thinking about Software Requirements, and Some Suggestions for Getting it Right
Copyright © 2010 SciRes. JSEA
838
REFERENCES
[1] T. Gilb, “Competitive Engineering: A Handbook for Sys-
tems Engineering, Requirements Engineering, and Soft-
ware Engineering Using Planguage,” Elsevier Butter-
worth-Heinemann, Boston, 2005.
[2] B. V. Koen, “Discussion of the Method: Conducting the
Engineer’s Approach to Problem Solving,” Oxford Uni-
versity Press, Oxford, 2003.
[3] L. Kelvin, “Electrical Units of Measurement,” a Lecture
Given on 3 May 1883, Published in the Book “Popular
Lectures and Addresses, Volume 1,” 1891.
[4] T. Gilb, “Principles of Software Engineering Manage-
ment,” Addison-Wesley, Boston, 1988.
[5] Z. Yanga, S. Caib, Z. Zhouc and N. Zhoua, “Develop-
ment and Validation of an Instrument to Measure User
Perceived Service Quality of Information Presenting Web
Portals,” Information & Management, Vol. 42, No. 4,
2005, pp. 575-589.
[6] T. Gilb, “Real Requirements”. http://www.gilb.com/tiki-
download_file.p h p?fileId =28
[7] T. Ohno, “Toyota Production System: Beyond Large-
Scale Production,” Productivity Press, New York, 1988.
[8] T. Johansen and T. Gilb, “From Waterfall to Evolutionary
Development (Evo): How we Created Faster, More
User-Friendly, More Productive Software Products for a
Multi-National Market,” Proceedings of INCOSE, Roch-
ester, 2005. http://www.gilb.com/tiki-download_file.php?
fileId=32
[9] T. Gilb, “Rich Requirement Specs: The Use of Planguage
to Clarify Requirements,” http://www.gilb.com/tiki-down-
load_file.php?fileId=44
[10] T. Gilb, “Agile Specification Quality Control, Testing
Experience,” March 2009. www.testingexperience.com/
testingexperience01_08.pdf
[11] K. Hopper and W. Hopper, “The Puritan Gift,” I. B. Tau-
rus and Co. Ltd., London, 2007.
[12] “Top Level Objectives: A Slide Collection of Case Stud-
ies”. http://www.gilb.com/tiki-download_file.php?fileId=
180
[13] “Profile: BP’s Tony Hayward, BBC Website: News US
and Canada,” 27 July 2010. http://www.bbc.co.uk/news/
world-us-canada-10754710