Requirement Engineering Module Rea
Requirement Engineering Module Rea
Requirement Engineering Module Rea
By Abenezer Fantu
Chapter one: Introduction to Requirement Engineering
1.1 What are requirements
Requirements are defined during the early stages of a system development as a
specification of what should be implemented. They are descriptions of how the system
should behave, or of a system property or attribute. They may be a constraint on the
development process of the system. Therefore, a requirement might describe:
• a user-level facility (e.g., 'the word processor must include a spell checking and
correction command'},
• a very general system property (e.g., 'the system must ensure that personal information
is never made available without authorization'),
• a specific constraint on the system (e.g., 'the sensor must be polled 10 times per
second'},
• a constraint on the development of the system (e.g., 'the system must be developed
using Ada'). Some people suggest that requirements should always be statements of what
a system should do rather than a statement of how it should do it. This is an attractive idea
but it is too simplistic in practice.
1. The readers of a document are often practical engineers who can relate to
implementation descriptions much better than they can understand very abstract problem
statements. You have to write requirements which are understandable to the likely readers
of the document.
2. In almost all cases, the system being specified is only one of several systems in an
environment. To be compatible with its environment, and to conform to standards and with
organizational concerns, you may have to specify implementation policies which constrain
the options of the system designers. Requirements therefore invariably contain a mixture
of problem information, statements of system behavior and properties and design and
manufacturing constraints.
What are the levels and types of Requirements?
advanced methods to support their requirements engineering processes. They often fail
to produce good quality requirement documents on time and within budget. They are
dependent on the skills and experience of individual engineers for requirements
elicitation, analysis and validation.
2.Level 2 - Repeatable level. Level 2 organizations have defined standards for
requirements documents and requirements descriptions and have introduced policies
and procedures for requirements management. They may use some advanced tools and
techniques in their requirements engineering processes. Their requirements
documents are more likely to be of a consistently high quality and to be produced on
schedule. 3 Level
3. Level 3 - Defined level. Level 3 organizations have a defined requirements engineering
process model based on good practices and techniques. They have an active process
improvement programmed in place and can make objective assessments of the value
of new methods and techniques. These are rough classifications which are convenient
for discussing the guidelines which we propose. In general, level 1 organizations
should focus in introducing the basic guidelines which we suggest; level 2
organizations should have implemented most of the basic guidelines and are in a
position to implement the intermediate guidelines; level 3 organizations should have
implemented almost all basic guidelines and all appropriate intermediate guidelines.
They may improve their process by introducing the advanced guidelines which we
suggest.
Some organizations will find it cost-effective to try to increase their level of process
maturity; others will find it best to stay at a particular level and to improve their
processes within that level. It depends on the type, the complexity and the size of the
systems which you produce. The larger and more complex the system, the more
benefits you are likely to gain by increasing your level of process maturity.
The requirements engineering process maturity level is only one of the factors which
affects the quality of the final requirements document. Other important factors are the
abilities and experience of the people involved in the process, the novelty, difficulty
and size of the problem and the time and resources available. Immature organizations
can and do produce good quality requirements documents. However, they may not be
able to do so consistently or when working under tight deadlines. Mature organizations
should normally produce good quality documents on time and within budget. It does
not mean that they will never have requirements engineering problems. New systems,
particularly, are always likely to be difficult to specify. However, a mature
organization should have processes and procedures in place which give them the best
chance of solving unforeseen requirements problems.
The order in which improvement guidelines are introduced depends on your process
and the need for improvements which you have identified.
Of course, you will not necessarily implement all of the guidelines in these sections
before moving on to the next section. Rather, you have to make a decision about
which guidelines are likely to be the most cost-effective for you. This must be based
on:
1. knowledge of your requirements engineering process and your process maturity
level
2. your budget and timescale for improvements
3. the people involved in implementing the requirements engineering process
improvements.
Once you have implemented guidelines for these activities, you can then move onto
guidelines in other areas such as requirements elicitation, system modelling, etc.
There is no ideal ordering for these and you must use your judgement about which
guidelines are likely to be most cost-effective.
Chapter Three: Requirement Elicitation and Analysis
3.1. Elicitation and Analysis Process
Requirements elicitation is the usual name given to activities involved in discovering what
requirements the system should provide. Technical software development staff work with
customers and system end-users to find out about the application domain, the system services,
the required performance of the system, hardware constraints, and so on. This process does
not just involve asking people what they want; it requires a careful analysis of the
organization, the application domain and how the system is likely to be used.
Effective requirements elicitation is very important. If the analyst does not discover the
customer's real requirements, the delivered system may not be acceptable to customers or end-
users. The acceptability of the system depends on how well it meets the customer's needs and
supports the work to be automated. It is not always easy to assess this as there may be a wide
range of stakeholders who benefit directly or indirectly from the system and who use different
criteria to judge the system's acceptability.
The analysts involved in the requirements elicitation process must address the following
problems.
1. Stakeholders often do not really know what they want from the computer system except
in~-the most general terms. Even when they have a clear idea of what they would like
the system to do, they often find this difficult to articulate. They may make unrealistic
demands because they are unaware of the costs of their requests.
2. Customers express requirements in their own terms and with implicit knowledge of
their own work. Analysts, who may not have much experience in the customer's
domain, must understand these requirements and express them in a way that can be
understood by everyone involved in the process.
3. Different stakeholders have different requirements and they may express these in quite
different ways. Analysts have to discover all potential sources of requirements and
they must expose requirements commonalities and conflicts.
4. Organizational issues and political factors may influence the requirements of the
system. These factors may not be obvious to the system end-users. They may come
from higher management influencing the system requirements in ways that satisfy
their personal agenda. For example, they may wish to move some functions to their
department so propose requirements which integrate the support for these functions
with support for functions which they already provide.
5. The economic and business environment in which the analysis takes place is dynamic.
It inevitably changes during the elicitation process. Hence the importance of particular
requirements may change. Requirements may emerge from new stakeholders who
were not originally consulted.
To elicit system requirements, you must understand the problem to be solved, the business
processes in an organization, the ways in which the system is likely to be used and the
application domain of the system. You need to find out about the system from available
documents and discuss with stakeholders the system services which they need and the
operational constraints on the system. You must be sympathetic to the concerns of system
stakeholders and take the time to discover their real requirements
A. Asses System Feasibility
Before investing effort and incurring expense in discovering system requirements, you should
always carry out a feasibility study. This should assess whether or not the system can be
implemented given existing technology and whether or not it can be effectively integrated
with your current way of working. The feasibility study should also check that the system
should provide adequate returns for the investment in its development.
Benefits:
• A feasibility study is a low-cost way of avoiding problems. People proposing a system are
often unaware of technological limitations. They do not know the consequences of installing
the system in its actual working environment. A feasibility study may reveal that the system
is unlikely to be used effectively in which case there is little point in developing it.
• To carry out a feasibility study, you need to make the business objectives for the system
explicit. The business objectives represent the fundamental reasons for the system
development. Requirements which are discovered during the elicitation process must be
consistent with these objectives. See Guideline 3.4, Make a business case for the system.
• The study is likely to reveal initial sources of information about the system which should be
consulted during the requirements elicitation.
Implementation:
Feasibility studies consist of three phases. These are:
• decide on the information that you need
• gather that information from key information sources
• produce a feasibility report
Firstly, you must identify the critical information which you need about the system and
develop a set of questions to discover that information. Examples of these questions might be
as follows.
1.Do we really need this system?
2.What would the consequences be if we did not develop this system?
3.In what direct and indirect ways will the system contribute to our business objectives?
4.What critical processes must the system support?
5.What critical processes need n o t be supported by the system?
6.How will the system affect other systems which are already installed?
7.What are the likely technology limitations which we face?
8.Can a useful system be developed for the budget available?
The next stage involves putting these questions to key people in the organization. Using
the questions as a guide, you should identify a small number of people who can give
informed answers. These may include managers of departments where the system will be
installed, systems engineers and technical experts such as system managers who can
answer questions about the technology available.
The final stage involves collating the answers to these questions and preparing a report
for management on the system. This should discuss the advantages and disadvantages of
developing the system, make recommendation about the type of system which should be
developed and should (perhaps) establish an initial set of high-level requirements and
constraints. This report is used to decide whether or not to go further in the system
development.
You may also need to collect other information, depending on the type of system which
you are specifying. An example is information on the physical layout of the place where
the system is to be installed. This may be necessary because of limited space available
for the system equipment.
'Wizard of Oz' prototyping is also relatively cheap as it does not require much software
to be developed. The user interacts with what appears to be the system but his or her
inputs are actually channeled to a person who simulates the responses of the system.
This approach is particularly useful when a new system has to be developed based on
an existing interface. Users are familiar with the interface and can see the interactions
between it and the system functionality simulated by the 'Wizard of Oz'.
1. Fourth generation languages based around database systems. These are good for
prototyping applications which involve information management. However, they
do have restrictions which are inherent in the interaction facilities which they
provide. You must develop your prototype within these limitations and this may
mean that some facilities (e.g., navigation around a database by using a graphical
visualization of the data) may be impossible.
2. Very high-level languages such as Visual Basic or Smalltalk. These are general
purpose programming language which usually come with a powerful development
environment and access to a range of reusable objects. These allow applications to
be developed quickly and with more flexibility than is usually provided with 4GLs.
3. Internet-based prototyping solutions based on Worldwide-Web browsers and
languages such as Java. Here, you have a ready-made user interface. You add
functionality to it by associating segments of Java programs with the information
to be displayed. These segments (called applets) are executed automatically when
the page is loaded into the browser. This approach is a fast way of developing user
interface prototypes but you must accept the inherent restrictions imposed by the
browser. At the time of writing, this approach seems to have a lot of potential but
is still immature.
The principal costs of introducing this guideline are the writing of a style guide
and, if necessary, short training sessions for all involved in the RE process. These
should introduce them to the style guide and clear writing style. There is also a
slightly increased review cost but this is minimal so long as your style guide is
not too long.
Initially, you will probably find that it is quite expensive to introduce this
guideline into your requirements engineering process. Surprisingly, perhaps, it
takes longer to write requirements simply than in a more complex way. However,
as people gain experience with clear writing style, these costs will rapidly decline.
The problem that you are likely to face is that many people from a technical
background find it very difficult to write clearly and concisely. Introducing a style
guide is all very well but we have a long tradition of writing requirements in an
opaque and obscure way and this cannot be changed overnight. Although reviews
can highlight significant deviations from the style guides, this will not remove all
obscure writing.
Benefits:
• Diagrams are far more effective than text for presenting relationships between
items of information. Most people find diagrams easier to understand than textual
descriptions of structure or relationships.
• Diagrams break up sections of text into smaller, more readable fragments. This
means that you get a double bonus from the diagram. Information is presented
more comprehensibly and the surrounding text is easier to understand.
• Diagrams from a requirements document may be reused when making
requirements presentations to customers.
Implementation:
You should avoid the use of icons which do not have an obvious meaning.
Many people find the commercial 'clip art' pictures provided with word
processing packages to be trite and irritating. Unless these are particularly
appropriate, these are also best avoided.
Some people think that diagrams are always easier to understand than textual
presentation. They therefore introduce diagrams everywhere even when the
same information could be presented more clearly using a list or a table. You
should not introduce diagrams unless they provide meaningful information
about structure or relationships. They should not be over-used or used to
present information which could be more clearly expressed in some other
way.
Costs and problems:
The costs of introducing this guideline are minimal. Diagrams can be drawn
using facilities which are now embedded in most word-processing systems.
More complex drawing packages can be used but these are designed for
professional illustrators and sometimes encourage the production of over-
complex diagrams. There may be some training costs for people to use the
drawing facilities but most packages are intuitive and can be self-taught with
little effort. The costs of applying the guideline are the costs of drawing
diagrams. These should not usually take much more time than textual
requirements description.
While you are unlikely to encounter any user resistance to this guideline, you
will probably find that some people are much better than others at expressing
their ideas in diagrams. This seems to reflect fundamental differences in
thinking and there is not much you can do about this. Some people think in
pictures, but people who do not think this way often prefer textual
descriptions to diagrams.
D. Supplement Natural Languages with Other Descriptions of Requirements.
Some requirements are best described using specialized notations, such as
mathematical formulae, decision tables, design notations or programming
languages, rather than natural language. Although you will almost always want
to have some description in natural language, you should supplement this, where
appropriate, with more precise descriptions in an appropriate notation.
Benefits:
Implementation:
We do not know of any book where all these notations are described but many
of them are covered in Software Engineering, 5th edition by Ian Sommerville
(Addison Wesley, 1996).
In most cases, introducing this guideline does not require engineers to learn new
notations but to use techniques which they already know. In such cases, there are
no introductory costs for this guideline. We advise against introducing new
unfamiliar notations as these are likely to cause more problems than they solve.
There are obviously some costs in applying the guideline as tables, models, etc.,
have to be created. Like diagrams, however, these should not normally cost much
more than writing the equivalent technical description.
The main problem of requirements validation is that there is nothing against which
the system can be validated. A design or a program may be validated using the
specification. However, there is no way to demonstrate that a requirements
specification is correct. The validation process can only increase your confidence
that the specification represents a system which will meet the real needs of the
system customer. Specification validation, therefore, really means ensuring that the
requirements document represents a clear description of the system for design and
implementation. It is your last chance before entering the system development
process to check that the requirements are acceptable to all system stakeholders.
Discovering and fixing requirements problems can avoid a lot of expensive reworks
of the system design and implementation. If you can catch errors and problems at
this stage, you can save a lot of money later. A number of studies have shown that
errors in delivered software systems which are a consequence of requirements errors
may cost up to 100 times as much to repair as programming errors.
Unlike program inspections where errors are simply reported to the program
author for correction, requirements inspections involve the group making
some decisions on actions to be taken to correct the identified problems.
Actions which might be decided for each problem are as follows.
Implementation:
Traceability policies are written policies which should define the following.
• The traceability information which should be maintained. This is described in more
detail below.
• The techniques which may be used for maintaining traceability. This is described in
more detail below.
• A description of when the traceability information should be collected during the
requirements engineering and system development processes. You should also define
the roles of the people, such as the traceability manager, who are responsible for
maintaining the traceability information.
• A description of how to handle and document policy exceptions, that is, when time
constraints make it impossible to implement the normal traceability policy.
Realistically, there will always be occasions where you have to make changes to the
requirements or the system without first assessing all change impacts and maintaining
traceability information. The policy exceptions should define how these changes
should be sanctioned. The traceability policies should also define the process used to
ensure that the traceability information is updated after the change has been made.
Traceability policies should be written so that they are independent of any particular
system. As part of your quality planning process, you should select the most relevant
traceability policies and tailor them to the specific needs of the system which is being
specified. These should then be defined in the system traceability manual.
Maintaining traceability information is expensive because it involves managing large
volumes of information. Requirements changes may involve making changes to this
traceability information in several places to record new or changed dependencies. You
must be realistic in defining your traceability policies and you should not make them
too bureaucratic. It is better to have lightweight policies which are followed rather than
more comprehensive traceability policies which are ignored by project managers.
This guideline may be implemented by organizations at any level of requirements
engineering process maturity. Simple traceability of requirements to their sources and
other requirements may be implemented by organizations at the basic level in the
requirements engineering process maturity model. As organizational maturity
increases, more complex traceability policies may be introduced.
Traceability information:
There are different types of traceability information which you might want to maintain.
There are three basic techniques which may be used to maintain traceability
information. These are as follows.
1. Traceability tables. A cross-reference matrix is produced where the entries in the
table indicate some kind of traceability link between the items in the rows and the
items in the columns.
2. Traceability lists. Each requirement has a list of associated traceability information
3. Automated traceability links. The requirements are maintained in a database and
traceability links are included as fields in the database record.
Costs and problems:
The cost of introducing this guideline into your requirements engineering process are
comparable with the costs of defining any other significant quality management
procedure. Several months of calendar time may be needed for consultation, and
significant effort is required to ensure that high-quality policies are defined and
reviewed. Once these procedures have been agreed, there are some maintenance costs
as you introduce changes based on experience with them. Making these changes should
not normally be an expensive process.
The costs of implementing traceability depends on the specific traceability policies and
on the number of requirements for your system. Unfortunately, the costs of traceability
increase disproportionately as the number of requirements increase. Therefore, while
the costs of implementing fairly comprehensive traceability policies may be moderate
for a small system, the same policies may be impractically expensive for large systems.
The main problem that you are likely to encounter is doubts about the value of
procedures which do not provide an immediate benefit (see the discussion in the
introduction) and some resistance, perhaps, to implementing these procedures. People
may have had previous experience with traceability problems and the difficulties posed
by managing large volumes of traceability information. You must be realistic about
what traceability" information can be maintained; you should not ask analysts to record
information which will never be used. You must also stress the long-term benefits of
traceability and convince people (by example if possible) of the benefits of maintaining
this information.
D. Use a Database to Manage Requirements
Benefits:
Rather than maintaining requirements in text documents, establish a requirements
database and store the individual requirements as entries in this database.
• Managing requirements in a database makes it easier to maintain links between
individual requirements and to search for and abstract related groups of requirements.
• If the database is a general-purpose repository for system information, links from the
requirements to design and implementation information may be maintained.
• If the database supports concurrent working, it allows for different groups to work on
the requirements specification at the same time without generating requirements
inconsistencies. Database facilities for data backup, integrity and security mean that
requirements engineers need not be concerned with these issues.
• The requirements may be automatically processed to extract particular types of
information. For example, it may be possible to generate traceability tables and lists
automatically from information in the requirements database.
Implementation:
The most appropriate way to implement this guideline depends on the type and the
number of requirements which must be managed and the particular ways of working in
your organization. Issues which influence design choices are as follows.
1. How are requirements expressed? Do you use natural language, graphical models,
mathematical expressions, etc.? Do you need to store additional information such
as photographs as part of the requirements rationale? If you need to store more than
just simple text, you may need to use a database with multi-media capabilities.
2. How many requirements do you typically need to manage? Is it tens, hundreds,
thousands or tens of thousands? The requirements for a small to medium sized
system can be managed using commercial PC databases. Larger systems usually
need a server-based system and a database, such as ORACLE, which is designed to
manage a very large volume of data.
3. Are the requirements always developed and managed by teams which work
together at the same site and which use the same types of computers or do you need
to access the requirements database from different sites? If you need multi-site
access from different types of equipment, you should use an Intranet-based solution
which provides access to the requirements database through a WWW browsing
system.
4. Do you already use a database for software engineering support? Do you have a
company policy on database use? What types of computers do you use? These
factors obviously constrain the type of database which you can use.
5. What in-house database expertise do you have available? Will requirements
engineers be responsible for database administration or will this be a separate
responsibility? Database management costs can be high and a solution which
requires a specialist database administrator may not be cost-effective.
If you maintain your requirements in a database, you can design the requirements
database to include traceability information. With each requirement in the database,
you should include at least two fields for traceability information. These should be
filled in with references to other requirements which the requirement depends on
and with references to requirements which are dependent on that requirement.
Obviously, if you wish to maintain other types of traceability information such as
requirements-architecture links, you must include database fields to record
information about each different type of relationship.
Using the database system has the advantage that the database itself usually
includes facilities for browsing and report generation. You can browse the
requirements in the database then move immediately to related requirements. You
may also write simple scripts which scan the database and generate the specific
traceability information which you require.
Relational databases are now the most commonly used type of database. Relational
databases were designed for storing and managing large numbers of records which
have the same structure and minimal links between them. A requirements database,
however, may have relatively few records (hundreds rather than hundreds of
thousands) each of which includes many links such as links to documents, text files
and other requirements. Maintaining these links is possible with a relational
database. However, it is inefficient as it requires operations on several different
tables. For very large numbers of requirements, you may find that this type of
database is too slow.
To use a relational database, you may have to keep the text of the requirements in
a separate file or files and access these files through the database. The database
tables (which use the requirements identifiers as keys) are used to index
requirements and to store links between related requirements. You find linked
requirements using the relational join operation.
If you have a very large number of requirements, you will need to use a powerful
database management system such as ORACLE. This might be organized as a
database server on a workstation with access through other client workstations or
PCs. This is an expensive approach but the power of these systems allows for fast
database manipulation. They also usually have excellent report generation tools
which can be used to create skeletal requirements documents from the requirements
database. These databases can support many simultaneous users and provide good
facilities for backup and recovery in the event of system failure.
Lower-cost approaches are possible using simpler PC database systems. Modern
PC databases include facilities for managing multimedia information such as
diagrams and photographs. Some of them can use object sharing facilities (such as
OLE) to link directly to word processor files where the requirements text is stored.
Their support for simultaneous access may be limited to locking the whole database
when it is in use and they have limited facilities for error recovery. The
requirements database must provide shared access and access control to the
requirements.
Whatever database you use, some data administration will be required. The data
administrator must set up and manage the database schema. He or she should also
be responsible for executing backup and recovery procedures and providing support
to database users. Database administration can take up quite a lot of time; a large
requirements database may need several hours per week of a professional database
administrator's time.
If you require access to your requirements database from remote sites and using a
variety of different computers, you might consider using WWW-based information
system as a front-end for a requirements database server. At the time of writing,
various off-the-shelf solutions of this type have just become available. We do not
know of any experience reports of using this type of information system for
requirements management but it is an interesting development which has
significant future potential.
The costs of applying the guideline include the costs of database administration
and, obviously, data entry costs for entering the requirements in the database. These
costs are proportional to the number of requirements to be managed.
One of the major problems with a requirements database is linking the database to
the requirements document. Readers of the requirements document will not be
prepared to use the database directly so you must have procedures which will
automatically create the requirements document from information in the database.
This is becoming much easier as it is possible in some databases to link directly to
word processor files. In other cases, the database information may be processed to
generate the requirements in a standard word processor format such as Microsoft's
RTF format or in HTML, the formatting language for WWW documents.
The diligence of the users of your requirements tools is a critical success factor.
Dedicated, disciplined, and knowledgeable people will make progress even
with mediocre tools, whereas the best tools won’t pay for themselves in the
hands of unmotivated or ill-trained users. Don’t write a check for a tool unless
you’re willing to respect the learning curve and make the time investment.
Buying a tool is easy; changing your culture and processes to accept the tool
and take best advantage of it is much harder. Most organizations already are
comfortable with taking elicitation notes in a word-processing document or by
hand, and with storing their requirements in documents. Changing to use
software-based tools requires a different way of thinking. Using RD tools
requires breaking old habits for running elicitation sessions. An RM tool makes
the requirements visible to any stakeholder who has access to the database.
Some stakeholders interpret this visibility as reducing the control they have
over the requirements, the requirements engineering process, or both. Some
people prefer not to share an incomplete or imperfect set of requirements with
the world, yet the database contents are there for all to see. Keeping the
requirements private until they’re “done” means you miss an opportunity to
have other pairs of eyes scan the requirements frequently for possible
problems.
People are often resistant to change things that they’re familiar with, and they
usually have a comfort level with working on requirements in documents. They
might have a perception—even if incorrect—that using a requirements tool
will be harder for them. Also, don’t forget that most of the tool users are already
busy. Time must be allocated to let them get used to using the tool in their daily
jobs. Eventually, the tool probably won’t actually require more time from
users, but they first need to get over the learning curve and develop new work
habits using the tool. Following are some suggestions to help you deal with
issues regarding user adoption and culture change:
• Identify a tool advocate, a local enthusiast who learns the tool’s ins and outs,
mentors other users, and sees that it gets employed as intended. This person
should be an experienced business analyst who can be the single owner for
ensuring tool adoption. This initial tool advocate will work with other users on
their projects to ingrain the tool into their daily activities. Then he’ll train and
mentor others to support the tool as other projects adopt it.
• One of the biggest adoption challenges to overcome is that users don’t believe
the tool will actually add any value. Perhaps they haven’t recognized the pain
from limitations of their existing manual approaches. Share stories with them
about where the lack of a tool caused a negative impact and ask them to think
of their own examples.
• Your team members are smart, but it’s better to train them than to expect them
to figure out how best to use the tool on their own. They can undoubtedly
deduce the basic operations, but they won’t learn about the full set of tool
capabilities and how to exploit them efficiently.
• Because you can’t expect instantaneous results, don’t base a project’s success
on a tool you’re using for the first time. Begin with a pilot application of the
tool on a noncritical project. This will help the organization learn how much
effort it takes to administer and support the tool.
The proliferation and increased usage of tools to assist with requirements
development and management represents a significant trend in software
engineering that will undoubtedly continue. Too many organizations, though, fail
to reap the benefits of their investment in such tools. They do not adequately
consider their organization’s culture and processes and the effort needed to shift
from a document-based requirements paradigm to a tool-based approach. The
guidance in this chapter will help you choose appropriate tools and use them
effectively. Just remember, a tool cannot replace solid requirements process or
team members with suitable skills and knowledge. A fool with a tool is an
amplified tools.
Chapter 8: Requirement Engineering Techniques
8.1 Methods for Requirement Engineering
A comprehensive perspective of the area of requirements engineering, selecting methods and
techniques in order to analyze and suggest a set of principles that will help to compose a
sensible framework that justifies the adoption of a specific technique, or set of techniques for
a specific project.
Requirements engineering is the process of defining, documenting, and maintaining
requirements in the engineering design process, it is a process of gathering and defining service
provided by the system.
To carry out the requirements engineering activity we have numerous elicitation techniques
and methodologies available, in this article, we will list some of the best-known techniques and
when to use them.
1. Interviews
By far this is the most common technique in use because an obvious way to find out what the
users of a software system need is to ask them, so interviews are of primary steps for
information gathering where the software engineer will have face-to-face interaction with
stakeholders. The business analyst will spend most of the time interviewing system users and
system owners during the early stages of the project life cycle.
There are types of interviews:
Individual Interviews: As the name says we have just one stakeholder answering the
questions.
Group Interviews: In this case, a group of stakeholders answers the questions, the good thing
is that the responses of different stakeholders influence each other.
Unstructured Interview
These involve a conversation by the interviewee asking general questions. It is usually an
inefficient technique as it has a tendency to go off track from the main goal and the analyst will
have to redirect the interview in the right path.
An unstructured interview is a type of interview that is non-directive in nature. Here, the
interviewer does not rely on a set of standardized questions but adopts spontaneity when
gathering relevant information from the respondent in line with the purpose of the interview.
The interviewer freely asks questions and allows the interviewee to lead the dialogue.
In some way, an unstructured interview is similar to an everyday conversation because of it is
informal and free-flowing nature. Unstructured interviews can be used in a variety of fields
especially sociology and it is also adopted for market research and recruitment processes.
Unstructured interviews adopt a feedback mechanism to direct the course of the conversation
in line with the research. The researcher develops new questions based on the responses
provided by the interviewee hence, he or she can gather more in-depth and reliable information
about the research subject.
Structured Interview
The interviewer will be the one making specific questions in order to obtain the required
information from the interviewee. This type of interview is considered to be efficient.
A structured interview is a type of interview in which the researcher asks a set of premeditated
questions in order to gather information about the research subjects. It is also known as a
standardized interview or a researcher-administered interview, and it aims at investigating
research variables using the same set of questions.
Typically, structured interviews are used to collect information with regards to the quantity or
numerical value of the research subjects. It outlines events, behaviors, procedures, and
guidelines for conducting the interview and recording the information collected to serve as the
research data.
There are three phases of the structured Interviews process:
Before the interview, you must determine the goal of an interview in order to gather high-level
business requirements, the second step is to identify participants, you need to think about which
stakeholder will be able to contribute to your goal, for example, the product owner, marketing
team, end-users, team members, etc. The third step is to make a list of questions to ask, it can
be open-ended or closed questions. Open-ended questions are questions that allow stakeholders
to give a free-form answer and closed questions can be answered with “Yes” or “No,” or they
have a limited set of possible answers. The last step is to book a place and time with the
stakeholders.
During the interview, you can introduce yourself to the stakeholders and clearly state what is
the purpose and agenda of this interview. After that you can share your questions with the
stakeholders, whenever a stakeholder answers a question, be an active listener, which means
keep you engaged with your conversation partner in a positive way, listen attentively while
someone else speaks, paraphrasing and reflecting back on what was said and take notes as
much as you can. To close the interview, you can briefly summarize what was said and present
in order to validate if the statements were understood correctly and what are the next steps of
the project.
After the interview, you must organize and analyze the answers in order to validate your notes.
After that, you can create models and scenarios, identify gaps, contradictions, or
inconsistencies and share them with the stakeholders asking them to check and confirm the
results.
Checklist for interviews:
Preparation Interview goal.
Interview participants
Interview location.
Interview questions.
Execution
Opening the interview.
Share the agenda.
Make the questions.
Finalization
System up the elicited knowledge.
Present the next steps of the project.
Follow-up
Document the elicited requirements.
Create models and scenarios.
List open issues in a to-do list.
Ask stakeholders to confirm the results.
Positives and negatives of the interview technique:
Positive:
Interviews are easier to schedule and lead than large-group activities such as requirements
workshops.
Interviews are appropriate for eliciting business requirements from executives who do not have
a lot of time to meet.
Negative:
When we have many stakeholders together, it can be difficult to keep the discussion focused
on the objective, so there is a chance the interview will go off-topic.
Stakeholders might get excited and suggest new features that will never be used.
Limited amount of time that stakeholders may be available for interviews.
2. Questionnaires or Surveys
Questionnaires it is a technique in which a document is used to collect information and opinion
from stakeholders.
You can use questionnaires to get information from many people. You can use them in two
ways: to get statistical evidence for an assumption, or to gather opinions and suggestions.
Questionnaires are a way to survey large groups of users to understand their needs. They are
inexpensive, making them a logical choice for eliciting information from large user
populations, and they can be administered easily across geographical boundaries.
The analyzed results of questionnaires can be used as an input to other elicitation techniques.
For example, you might use a questionnaire to identify users’ biggest pain points with an
existing system, then use the results to discuss prioritization with decision-makers in a
workshop. You can also use questionnaires to survey commercial product users for feedback.
Tip: Before sending a questionnaire form to many people, always test the form on a few people
from the target group.
Some examples of survey questions include:
Likert scales allow respondents to make a linear choice, for example, “strongly agree, agree,
neutral, disagree, strongly disagree”. It’ll help you understand attitudes but can give skewed
positive answers
Rating and rankings let your respondents choose an answer on a scale of 0–5 or 0–10 which
are easy to understand and analyze it.
Checkboxes and drop boxes offer a setlist of predetermined answers, giving you control of
the data for more open questions, yet limits the creativity of the responses you could get.
Text boxes give your respondents full control over what they tell you, giving you accurate
answers but these can be time-consuming to analyze and categorize.
Positives and negatives of the questionnaire technique:
Positive:
Is cost-effective and removes constraints such as a geographically dispersed stakeholder base
or time issues.
You can use the results to see how important the problem really is.
Negative:
Open-ended questions allow users to respond any way they want, so it’s hard to look for
commonalities in the results.
There is also a high risk of misunderstanding with closed questions.
Surveys have restricted inputs and this can stifle creativity.
3. Brainstorm
Brainstorming refers to the practice of generating ideas and putting them down in concrete
form. The idea of a brainstorm is that everyone in the meeting should have the same power to
speak and that all ideas are valid.
In a brainstorming session, you gather together a group of people, create a stimulating and
focused atmosphere, and let people come up with ideas without risk of being ridiculed, which
means the main rule of the game is not to criticize any idea.
Before the meeting, it is very important that you send the participants what the subject of the
meeting will be so that each participant can think about it and come up with good ideas for the
meeting.
To brainstorm effectively:
Prepare the group
Identify purpose and desire outcome.
Explain what brainstorming is if other people don’t know.
Select a facilitator to guide the process.
Invite the right person.
Present the problem
Make sure that everyone is in the right mind frame for brainstorming.
Explain the problem/goal that you hope to correct.
Prioritize the problem
Draw the prioritization matrix on a whiteboard or flipchart.
Finishing the brainstorm
Once the brainstorming session is over, begin the refining process based on the pre-
established criteria.
Condense groups of similar ideas into one thought.
Create a list of what results, and distribute it to everyone for review.
Basics ruler for brainstorming:
Generate as many ideas as possible before considering any of them.
Never criticize another participant’s ideas.
Avoid censoring seemingly “crazy” ideas.
Evolve existing ideas to expand on them.
Positives and negatives of the brainstorming technique:
Positive:
An idea presented can be questioned and become an even better idea.
Getting lots of ideas from different perspectives.
Easy to understand, it is not a complicated technique.
Encourages creative thinking and thinking “out of the box”.
Negative:
Encourages creative thinking and thinking “out of the box”.
People can be uncomfortable voicing creative ideas in a group setting.
It’s easy to lose focus on the purpose of the meeting.
4. User Observation
Users are not always aware of what they really do and how they do it. When you ask users to
describe how they do their jobs, they will likely have a hard time being precise details that
might be missing or incorrect and they may come up with logical, but wrong explanations.
Often this is because tasks are complex and it’s hard to remember every minute detail. In other
cases, it is because users are so familiar with executing a task that they can’t articulate
everything they do. Perhaps the task is so habitual that they don’t even think about it.
Sometimes you can learn a lot by observing exactly how users perform their tasks.
Observation vastly improves your knowledge of the current work and some of the associated
work problems
User observation can be either passive or active.
Active observation: asking questions of users while observing them, is the best approach for
gaining an understanding of an existing process.
Passive observation is more effective when gathering user feedback on a design prototype.
Silent observations are appropriate when busy users cannot be interrupted.
Some things to keep in mind when conducting user observation:
Construct a visual of the end-to-end process a person follows to do their job daily.
Be mindful when asking questions to not disrupt seeing a natural work environment.
Observe, take notes, remain unbiased and keep from making judgments.
Gather any documentation that helps you find out procedures, like a user training manual.
Observe well enough to understand fully what a platform, software, or device is capable of.
3 Phases of observation process:
Before the observation: You need to determine the purpose of the session, the main idea is to
conduct the observation session to understand the current process. In the second step, you need
to identify the participants and this phase is very important because normally a process can
have other sub-processes involved and all stakeholders must be covered, so once you had
identified the participants, you need to have a word with the stakeholders and set up some time
for these observation sessions.
So we have the third step which is creating a schedule, you can space out the sessions or you
can have a couple of sessions on the same day, it all depends on the stakeholder availability.
This is is basically a preparatory phase for the observation technique, you know what is the
purpose, the participants are identified and they are engaged and you have a schedule with all
the meetings.
During the observation:
You would give your introduction, where you are from, what you are doing, and also briefly
explain to them the purpose and agenda of the session, after that, the stakeholder starts to
demonstrate how he performs his tasks and you would be sitting there next to him asking
questions and making notes. The main idea is to get a clear picture in your mind of why and
how the stakeholder is doing it.
After the observation: You must clearly state all your notes, data, process flow, tools,
stakeholder responses and send them for validation.
Positives and negatives of the user observation technique:
Positive:
By observing end-users in the real context in which they perform their tasks.
Negative:
Observations are time-consuming.
5. Document Analysis.
Normally every project starts as a blank piece of paper. Finding a starting point can be a
challenge when initiating a project. To get things moving, you can begin project requirement
gathering with document analysis.
First, you need to ask your stakeholders to provide the necessary documents. There will be
source material galore in most companies. Some of the things you can request include:
Benchmarking studies: Contain information on industry best practices and the actions that
other organizations have taken to achieve success.
Business plans: Contains details of current business processes, process participants, handoffs,
and other process-related information that can help the analyst understand how processes work.
Business Architecture diagrams: These will often show who does what, where and which
business services are in-source/out-sourced. They can give you a macro-level view of your
domain.
User manuals: If you’re working with an existing system, user guides and help screens can
help you to understand the “as is” screen-flows. They might even hint at underlying process
logic and business rules.
System specifications: Sometimes, you might strike gold and find that a previous BA has
produced a full set of requirements for the system or process that you’re aiming to change. If
so, this will be an excellent reference point, but remember that not all requirements get
implemented, so it’s worth checking whether anything was de-scoped.
Once you’ve got the documents, they need to be processed methodically.
Positives and negatives of the document analysis technique:
Positive:
Can come in useful where the stakeholder is unavailable or no longer with the organization.
Ensures that the analyst does not start from a blank page.
Acts as a means of cross-checking requirements with other sources.
When the current stakeholders cannot offer you much information, document analysis will
offer valuable insight.
Negative:
Document Analysis is limited to the as-is situation.
A risk with this technique is that the available documents might not be up to date.
It can be time-consuming to find and sift through masses of information.
In this chapter we suggest that viewpoint identification should be one of the first steps of a
requirements analysis because it helps the elicitation and management of requirements.
Collect requirements from multiple viewpoints, introduced viewpoints as an intermediate
level technique. In this chapter, we review the benefits which can be gained by using
viewpoints, and suggest how viewpoints can be used by introducing the PREview* approach.
The term 'viewpoint' is broadly synonymous with a perspective on a system (Figure 13.1). As
a simple example, consider a proposal to commission and install traffic lights at the
intersection of two roads. There is a wide range of configurations which such a traffic light
system may have and a corresponding set of requirements which an analyst must collect and
make sense of. For example, should the system have left/right turn filters? Should pedestrian
crossings be provided? Should the period between changes of the lights be dynamically
configurable? The answers to these questions depend on the domain problems which the
system seeks to solve. However, there are several people or roles who, because they will use,
operate, or pay for the system, have a stake in it. Each of these has a perspective on the system
and analysts cannot be confident about developing an adequate specification unless they have
collected and analysed all their requirements. Those which might be identified here include:
1. drivers
2. cyclists
3. pedestrians
4. emergency services
5. the highway authority Each of these viewpoints represents the perspective of a particular
stakeholder on the traffic management problem each stakeholder imposes requirements on the
solution to the problem. As explained below, there are often other useful viewpoints on a
system which represent requirements with no human or organisational source.
Viewpoints focus primarily on the early elicitafion stages of the requirements process.
Systematic support has always been harder to provide here than for system modelling or
specification. Hence, practitioners looking for a method capable of solving their elicitation
problems, in the way that (for example) SADT solves their modelling problems, will be
disappointed. However, using viewpoints can help structure the elicitation process.
Viewpoints can also help prioritise and manage requirements.
Another way of thinking of viewpoints is that they:
• focus the analyst's attention on the parts of the problem which affect stakeholders, and
• project the discovered requirements onto the system to be developed. This is illustrated
Here two viewpoints focus on the hazy and ill-formed proposed system and project their
requirements discovered by these foci onto an emerging system specification. Elicitation
of the two viewpoints' requirements take place without regard to each other in order to
explicitly separate elicitation from distracting issues such as conflict resolution. Overlaps
between the viewpoints' foci indicate that the viewpoints' domains of interest are not
disjoint. This may result in duplicated requirements. There may also be incompatible
requirements. The fact that the requirements are explicitly associated with an identified
viewpoint helps to inform the resolution of inconsistencies and duplications.
If you are working in a familiar domain where systems are highly constrained (e.g. the
architecture of the systems is fixed) then viewpoints probably do not offer significant
advantages. Similarly, if you are involved with developing systems where there are few
or homogeneous sources of requirements, viewpoints may offer little advantage. If,
however, you frequently perform requirements rework, experience incompleteness-
derived quality problems, or have problems with managing requirements from different
sources, then viewpoints may offer significant advantages.
If incompleteness in your elicitation process is your principal problem, then it may be
most cost-effective to apply viewpoints informally. Viewpoint identification based on a
checklist of viewpoints 'classes' (i.e. viewpoints likely to occur in the domain) can be
used to guide the search for viewpoints. Elicitation of each viewpoint's requirements then
contributes to system modelling and specification with no intermediate inconsistency
handling step. Instead, inconsistencies are identified and rectified in an ad hoc manner as
they emerge during system modelling and specification. The viewpoints and associated
information are discarded.
This approach is broadly compatible with the use of viewpoints as informally practised
in many development projects. However, many users experience difficulty viewpoints
like this. Without a good definition of viewpoint, viewpoint identification is hard. There
are also problems in integrating viewpoints' requirements and handling inconsistency in
large projects. In any project where there are more than a handful of viewpoints, these
problems may nullify the advantages of viewpoints. In this case, a systematic approach
to the use of viewpoints may be helpful.
Although the viewpoints concept has been around for many years, there are very few
methods which are viewpoint-oriented and which are in widespread industrial use (and
therefore properly validated). Although a few structured methods such as SADT support
the general notion of viewpoints, perhaps only CORE* can be truly described as an
industrial viewpoints-oriented method. We therefore prefer to refer to viewpoints
'approaches' rather than 'methods'. Later in this chapter, we suggest an approach to the
use of viewpoints called PREview. This provides guidelines on the fundamentals of using
viewpoints such as how to identify and manage viewpoints
Why Viewpoints?
A viewpoint-based approach to requirements analysis recognizes that all information about
the system requirements cannot be discovered by considering the system from a single
perspective. Any single perspective inevitably emphasizes the requirements of one
stakeholder at the expense of other viewpoints. Developing a solution to a traffic management
problem based only on drivers' requirements would be unsatisfactory for pedestrians and
cyclists. Similarly, analysis of the problem from a single synthetic perspective which
attempted to represent every stakeholder would be very difficult. The principal advantages
offered by viewpoints are as follows.
• The requirements are likely to be more complete than if viewpoints are not explicitly
identified. In the latter case, important requirements may be easily overlooked because their
viewpoints were never recognized.
• A separation of concerns is provided which permits the development of a set of 'partial
specifications' in isolation from other viewpoints. This avoids having to confront conflicts
with other viewpoints' requirements during elicitation. A result of this is that, when they prove
necessary, the trade-offs between requirements can be better informed.
• Traceability is enhanced by the explicit association of requirements with the viewpoints
from which they are derived. Viewpoints are complementary to a number of other
requirements engineering practices. In particular, they can help inform the development of
system models. Similarly, system models can be developed for each viewpoint to help clarify
their requirements.
What is a Viewpoint?
A viewpoint represents an encapsulation of partial information about a system's requirements
from a particular perspective. The information is partial because it is restricted to one
perspective on the system and therefore omits other perspectives' requirements. A viewpoint
should not only contain requirements. It is good practice to associate additional information
with requirements to help with assessing requirements' mutability and with tracing. A
viewpoint provides a convenient structuring mechanism with which to associate requirements
with this other information. Hence, a viewpoint may contain a set of requirements as well as
a definition of the viewpoint's perspective, a list of the sources from which the requirements
were elicited and a rationale for each requirement.
Viewpoints are not only concerned with human perspectives. Viewpoints can be associated
with:
• the system's stakeholders
• the system's operating environment
• the system's domain
A stakeholder is a human, role, or organization with an interest in the system. This can include
both the customer's and developer's organizations. For the traffic light problem, the customer's
viewpoints might be those identified at the start of this chapter. For an MIS application by
contrast, the customer's viewpoints might be those of users such as sales staff and systems
administrators as well as those with a more strategic interest in the system such as finance and
logistics managers. Developers' viewpoints may include those of the analyst(s) and other
disciplines involved in the system development.
Stakeholders are not the only sources of requirements. A system is always installed in an
environment. Where the environment includes other systems/components with which it must
exchange data or control, these impose requirements. An interfaced system/component has a
perspective on the system just as a stakeholder does. Hence it makes sense to use a viewpoint
to model that perspective.
In addition, many applications are constrained by phenomena inherent in their domain. Signal
propagation errors occur in communications media; government information systems are the
target of unauthorized users; and traffic lights are constrained by vehicle braking and
acceleration capabilities. The latter might be represented by a 'safety' viewpoint because this
may be useful as a means to isolate and explicitly represent the safety requirements on the
system. Similarly, we might have signal processing and security viewpoints in other domains.
The domain imposes requirements just as stakeholders and the environment do. These tend to
act as constraints on the system.
In some applications the domain-imposed requirements are trivially obvious. In others, they
are implicit in the principal stakeholders' requirements. Unfortunately, in some applications
neither of these are true and the domain requirements are obscure and hard to elicit. They may
have no stakeholder to articulate them, they may366 Viewpoints remain implicit features of
the domain culture; evident to experts but obscure to others. Their discovery depends on the
availability of domain expertise. If the analyst is not a domain expert, they must be sensitized
to the need to explicitly seek expertise. Explicitly identifying a domain viewpoint can help
raise the profile of the domain requirements.
PREview: A pragmatic Viewpoints Approach
In this section we introduce the use of the PREview viewpoint-oriented approach. PREview
helps to avoid the problems of identifying and managing viewpoints. It has been developed
from experience of large systems engineering projects and is rooted in pragmatic issues such
as the need for flexibility. In particular, PREview seeks to support the management and
analysis of viewpoints without introducing specialist notations. Checklists and tables are used
where some other viewpoints approaches use more formal notations. Although these
approaches hold long-term promise we think that they are currently impractical for industrial
applications.
To be usable, a viewpoint-oriented approach should integrate with an existing requirements
process. This reduces both the costs and risks of applying the approach. Although there is no
universal requirements process, most processes broadly conform to the spiral model.
The key point about the spiral model is in that requirements engineering is iterative rather
than linear. Requirements information emerges spasmodically and is poorly formed. To make
sense of this, three basic activities have to be repeatedly applied until order emerges. These
activities are represented by the three segments of the spiral. The radial arms of the spiral
represent both increasing cost and the generation of information by all three phases. The more
times we go round the spiral, the better the quality of our requirements information should be.
However, we consume more resources in doing so.
The discovery/analysis/negotiation cycle is iterated a number of times. During each iteration,
new information emerges which may necessitate the modification of already acquired
information. Eventually, the requirements information meets an acceptable level of
completeness and consistency. The requirements definition information emerges from each
cycle and forms the basis of a requirements document.
In more detail, the three basic activities performed each cycle are as follows.
1. Requirements elicitation. Given a statement of organizational needs and
other inputs, various different sources are consulted to understand the problem
and the application domain and to establish their requirements. These
requirements may not be complete and may be expressed in a vague and
unstructured way.
2. Requirements analysis. The requirements collected during the elicitation
phase are integrated and analyzed. Usually, this will result in the identification
of missing requirements, inconsistencies and requirements conflicts.
3. Requirements negotiation. Inconsistencies and conflicts discovered during
analysis need to be resolved. The analysts and stakeholders consider the
problematic requirements to try to reach a consensus about their resolution.
This typically requires negotiations to establish the necessary trade-offs. These
trade-offs may necessitate the elicitation of further requirement information.
The viewpoint-oriented approach which we suggest (PREview) is compatible with
this general model.
The shaded boxes correspond to each of the segments of the spiral model except
the box labelled requirements definition. This corresponds to the axes in the spiral
model. In PREview, the main activities are as follows:
• Requirements elicitation involves identification of the system's viewpoints and
elicitation of the requirements information from the stakeholders/documents/etc.
These are the 'sources' of the viewpoints' requirements. Before viewpoint
identification, however, the system concerns are identified and elaborated.
Concerns are discussed below.
• Requirements analysis involves analyzing the viewpoints to discover
inconsistent and redundant requirements. The task here is limited to their
identification by analyzing how different viewpoints' requirements interact. For
this activity, viewpoints' foci can be used as a guide. Requirements belonging to
viewpoints with overlapping foci are more likely to have potential for
inconsistencies. Requirements belonging to disjoint viewpoints, by contrast, are
less likely to conflict. Resolution of the conflicting requirements is performed by
the next activity.
• In requirements negotiation, the conflicting and redundant requirements are
resolved. The resolution of inconsistencies normally involves assessment of
competing requirements' relative importance, feasibility, cost, etc., in order to
inform the necessary trade-offs. These trade-offs may be localized to the
requirements concerned. However, they may have side-effects which necessitate
the reformulation of other requirements or stimulate the elicitation of new
requirements. This implies a further iteration of the discovery-analysis-negotiation
cycle.
This cycle is usually iterated a number of times until the set of viewpoints and
their requirements is stable and redundancy has been reduced. Once this state of
equilibrium is reached, the requirements can be integrated into a cohesive
requirements document.
It is useful to distinguish two types of requirements: those which are specific to
particular viewpoints and those which are global to the whole system. We use the
term 'external requirements' for global requirements to distinguish them from
requirements discovered from particular viewpoints. External requirements derive
from 'concerns'. Concerns are the top-level, overriding goals of the system and are
usually derived from the customer's critical business objectives. Typical examples
include reliability, safety, cost and maintainability. Concerns are characterized by
being crucial to the success of the project and by being non-negotiable. Concerns
exist for most systems but are often subverted by the sheer difficulty of handling
large volumes of volatile and non-complementary requirements. This can result in
systems which fail to meet the most basic needs. It is therefore useful to carefully
distinguish between concerns and other requirements.
Concerns are frequently vaguely defined and express concepts rather than detailed
system properties. To be satisfied, they must be converted into specific, verifiable
requirements. They can then serve as constraints on the other system requirements.
To achieve this, concerns are converted into external requirements which must be
explicitly satisfied. In addition, they are converted into 'concern questions'. These
provide a quick and easy check on requirements' compliance with concerns.
PREview therefore provides two levels of protection from requirements which
have the potential to compromise concerns.
• Concern questions are applied when requirements are first discovered in order to
quickly eliminate grossly incompatible requirements.
• External requirements are checked more systematically during analysis of each
viewpoint's requirements in order to identify more subtle conflicts.
To illustrate the PREview viewpoints approach we use an example taken from the
railway domain; the specification of an on-board train protection system called
TCS (Train Control System). In this application, the train is controlled by a human
driver. TCS is a safety-related system whose job is one of monitoring the train and
intervening if an unsafe state is detected. This is done by ensuring that the driver
respects the operational rules in force on the track and takes corrective action when
the driver breaks these rules. Operational rules include speed limits and protocols
for passing signals. Some rules are constant while others may vary according to
track conditions. Data is collected in real-time from track-side equipment to
monitor speed restrictions and to detect signals. Essentially, if the driver allows
the train to go too fast or to illegally cross a 'stopping point' (such as a signal at
stop),
TCS will cause the emergency brakes to be applied. TCS must be integrated with
an existing execution environment and other on-board systems. A module called
Hardware Systems Interface (HSI) exists, through which the TCS software
communicates with all the hardware interfaces. This provides:
• an interface of functions permitting (for example) emergency braking to be
invoked, and
• data permitting TCS to poll for train speed, distance to next stopping point, etc.
Requirement Elicitation in PREview
Before viewpoint identification can begin, an understanding of the system's technical and
organizational environment must be gained. The analyst needs to understand the
organizational environment. This will allow him or her to identify the correct mix of technical
and managerial personnel in the customer's organization to discover their (and, by implication,
their organization’s) concerns.
Concern identification
Concerns are identified at the outset of a project. In the TCS application, the customer's
concerns are: 'Safety' and 'Compatibility'. 'Safety' is a concern because although TCS does not
control the train it does contribute to train safety. 'Compatibility' is a concern because TCS
must be integrated with the existing systems' execution cycle and because the HSI module
provides the interface to all other modules.
Concern elaboration
Once identified, concerns must be elaborated into external requirements and concern
questions. Concern questions act as the conscience of the analyst who should apply them as a
test for compliance when a viewpoint's requirements are first discovered. They therefore serve
as a first defense against non-compliant requirements. The following concern question can be
derived for 'Compatibility':
Q1 Is the requirement consistent with the interface provided by the HSI module?
Consider the case where a stakeholder sets out a requirement to calculate a minimum braking
distance to a degree of accuracy which requires as parameters the train speed, mass, line
gradient and track surface conditions. Applying the concern question to this requirement
would prompt checking that these parameter values were indeed available through the HSI
interface. In the TCS, track surface conditions are not monitored via the HSI module so the
requirement would be shown to be infeasible.
Of course, sufficient information will not always be available to demonstrate compatibility at
the elicitation stage and incompatible requirements will inevitably escape detection. For this
reason, every concern is developed into one or more requirements. These are the external
requirements with which every viewpoint's requirement must be compliant. Tests for
compliance are performed within the requirements analysis phase.
For example, the external requirements derived for the 'Compatibility' concern are as follows.
ER4: The TCS software shall be executed in the Ada safety environment of the coded
processor.
ER5: The TCS software shall execute within the application cycle of the existing on-board
software.
ER6: The reaction time of the TCS software to the change of state of one bit in the variants
table shall be 280ms.
ER7: The real-time performance of the existing on-board software shall be maintained.
Concern elaboration must be performed carefully. By investing resources at this very early
stage, the elaborated concerns will serve to guard against incompatibilities which may be
introduced later. Some classes of concern may employ other techniques to assist with their
elaboration. For example, a safety concern may exploit hazard analysis techniques to identify
the specific hazards against which the system must provide a defense. Here, a specific external
requirement and concern question might be developed for each hazard.
For example, in the 'Safety' concern, the specific hazards against which TCS must protect are
excess speed and overshooting a stopping point. These can be elaborated into the following
three external requirements:
ER1: The system shall detect the occurrence of excess speed
ER2: The system shall detect the occurrence of overshoot
ER3: The system shall apply emergency braking when either excess speed or overshoot are
detected.
Note the wide variance in the level of detail expressed by these external requirements. They
range from low-level implementation constraints (280 ms) to abstract concepts (overshoot).
This illustrates the naivety of the view of requirements engineering as dealing only with the
'what', with all 'how' decisions being conveniently deferred. In reality, and especially for
systems installed in an existing technical environment, it is not such a clean process. It also
illustrates that in analysing requirements for inconsistencies, the analyst must be prepared to
handle requirements at many different levels.
Viewpoint identification
Viewpoint identification is difficult but crucial to the effective use of a viewpoint-oriented
approach. Failure to identify an appropriate set of viewpoints implies that some, possibly
important, perspectives on the system are omitted, leading in turn to an incomplete and
unrepresentative requirements specification. The analyst must find a balance between
ensuring that all the viewpoints are represented and deriving an unmanageably large set of
viewpoints. Too many viewpoints will hinder integration of their requirements and lead to
excessive duplication. To help this balancing act, viewpoint identification must be supported
by guidelines. However, much viewpoint information can be reused between projects in the
same domain, so their application becomes easier as experience is gained.
To identify viewpoints, the analyst must develop a good understanding of the system's
operational and organizational environments. The operational environment will reveal the
users and other systems/components with which the system will interact. It also embodies any
inherent domain phenomena. The organizational environment will reveal the indirect
stakeholders such as managers and regulators.
In order make them manageable, viewpoints have a structure. They consist of the follows:
• The viewpoint name. This should reflect the perspective adopted by the viewpoint.
• The viewpoint focus. This defines the perspective taken by the viewpoint.
• The concerns applicable to the viewpoint.
By default, this is the set of all system concerns. Concerns may be eliminated from the
viewpoint if it can be demonstrated that they have no constraining effect on the viewpoint.
• The viewpoint sources. These explicitly identify the sources of the requirements associated
with the requirement. They may be individuals, roles, groups or documents.
• The viewpoint requirements. This is the set of requirements discovered by analyzing the
system from the viewpoint's perspective and by consultation with the sources.
• The viewpoint history. This records changes to the information recorded in the viewpoint
over time. For example, a rationale for why a particular concern need not be considered by
the viewpoint should appear here.
The name, focus and sources must be formulated before the requirements can be elicited. All
three of these properties contribute to the viewpoint's identification. Focus defines the scope
of the viewpoint's requirements as a function of the problem domain and the components
influenced in the system. In a typical application, focus will initially be defined in terms of
the application domain but as analysis proceeds and a system architecture emerges, focus will
become more specific.
Sources may be human or documentary. Examples include system users for a user viewpoint,
existing specification documentation for an interfaced system/component viewpoint, and
domain experts for a domain viewpoint.
Several sources may contribute requirements to a viewpoint. Similarly, a single stakeholder
may contribute requirements to more than one viewpoint. For example, a manager may have
one perspective as a user and another concerned with the system's effect on the company's
business. In these cases, it is common for the stakeholders requirements to be contradictory
across different viewpoints. To cope with this you must be able to recognize when a
stakeholder has different viewpoints. You can then use this to help the stakeholders set out
their requirements by inviting them to adopt different viewpoints.
In some applications, the viewpoints are obvious but in others, the viewpoints will need to be
actively sought. In this case, it may be helpful to decompose from the three categories of
viewpoint identified above, namely: 'stakeholder' viewpoints, 'operating environment'
viewpoints and 'domain' viewpoints.
Driver: The driver is a stakeholder whose requirements should be identified. This is implicit
from both the operational and organisational environment.
HSI: The HSI viewpoint represents a subsystem/component from TCS's environment. This is
implicit from the operational environment.
These correspond to identifiable perspectives on the system and cohesive sets of requirement
sources. For example, drivers are a homogeneous group whereas HSI's requirements can be
derived from its existing specification documentation. The non-leaf nodes represent more
general viewpoint classifications. They represent stages in the process of identifying the
appropriate viewpoints.
For example, stakeholders can be characterized as either direct (i.e. users or operators) or
indirect (i.e. they will not interact directly with the system). In the railway domain, indirect
stakeholders can be further classified according to whether they represent the customer who
commissions the train or third parties. In TCS, the latter are represented by a regulator
responsible for assuring safety, compliance with standards, etc. 'Regulator' is a leaf because
there is only one regulator. 'Customer', however, can be decomposed to greater depth. The
customer will have to maintain the train systems and operate the train. There are three
additional viewpoints related to train operation. The 'Normal operation' viewpoint is that of
operating the train in the absence of driver errors which necessitate the emergency
intervention of the TCS software. The 'Safe state assurance' viewpoint is where the
circumstances under which the TCS software intervenes are defined. Finally, the 'Erroneous
state recovery' viewpoint is that of how the train can return to normal operation following
emergency intervention of the TCS software.
A viewpoint hierarchy may be reusable by similar systems to guide the search for viewpoints.
Note, however, that decomposition of viewpoints is primarily a tool to aid identification of
viewpoints and their sources. This must be balanced against the need to minimise the number
of viewpoints. Following the elicitation of their requirements, it may be useful to collapse
viewpoints with common roots back into a single viewpoint. This will make management of
the viewpoints easier later on. The leaves of the hierarchy form the starting point for
requirements elicitation, because they should correspond closely to actual stakeholders, etc.,
in the system. However, the set of viewpoints actually used in subsequent analysis may be a
smaller number of more general viewpoints.
Below, we give two examples of viewpoints on TCS. 'Safe state assurance' is illustrated in
Figure 13.6 and represents requirements for maintaining the train in a safe state. The definition
of its focus serves to describe the extent of the requirements' influence on the system. At a
later stage of the analysis this could be augmented with a list of the components to which the
requirements had been allocated.
Both concerns are considered to constrain the viewpoint:
• 'Safety' is used because incorrect requirements may compromise safety
• 'Compatibility' is used because performance and interface issues are affected by the
viewpoint's requirements. When the viewpoint's requirements are elicited from the sources,
they must all be checked to ensure that they satisfy each of the concern questions elaborated
from the 'Safety' and 'Compatibility' concerns. In addition, at the requirements analysis stage
they must be analyzed to verify that they do not conflict with any of the concerns' external
requirements.
We have added the three requirements elicited from the viewpoint's sources, although these
would normally be elicited only after the viewpoint's identification. These are described
below.
Sometimes it can be demonstrated that a viewpoint cannot affect a concern. In this case, the
concern can be omitted from the concern field and the viewpoint requirements need not be
checked against the concern questions or external requirements. However, you should record
the justification for ignoring the concern in the change history.
Requirements discovery
Once a viewpoint has been identified, the requirements arising from that viewpoint can be
discovered from the viewpoint's source(s). For each requirement, the concern questions
should be asked to discover if it is likely to conflict with the concern.
The following concern question must be applied to each requirement.
Q1: Is the requirement consistent with the interface provided by the HSI module?
This raises the question of whether the requirements are feasible within the limits imposed by
the interface provided by the HSI module and the train's on-board execution environment. In
the case of SS2, for example, the analyst must ensure that information about the train's
relationship to stopping points is available from the HSI interface, and that emergency braking
can be invoked through the HSI interface.
In principle, all of a viewpoint's requirements should be mutually consistent but this is not
always the case. Some contradictions are natural. For example, a 'user' viewpoint may
represent many users, each with the same task to perform but each with different preferences.
In this case, it is best to try to resolve the inconsistencies without reference to other
viewpoints. Developing a system model for the viewpoint may help to clarify how to reconcile
competing requirements.
In other cases, the viewpoint will less homogeneous. For example, another viewpoint may
include operators and managers. In this case, the conflicts will be more fundamental due to
their different tasks and interests in the system. Occasionally it may be impossible to resolve
these inconsistencies without reference to the wider system. In such cases the viewpoint
should be decomposed into two new viewpoints, each reflecting the divergent requirements.
This does not mean that the contradictions are never resolved. Rather, resolution is deferred
until the requirements negotiation stage when the viewpoints' requirements can be looked at
in the context of the wider system rather than in isolation. It will then be easier to assess the
competing requirements' wider implications. This will help identify the most appropriate
trade-offs.
It is important that the viewpoints which emerge from requirements elicitation are internally
consistent. Only then can they be analyzed for consistency with other viewpoints at the
requirements analysis stage. However, this must be tempered by the need to minimize the
number of viewpoints.
Eventually, the viewpoints' sets of requirements will be complete. The next task is to integrate
them.
Requirements analysis in PREview:
The first task in integrating the viewpoints' requirements is to ensure that they each conform
to the external requirements derived from the concerns applicable to their viewpoint. Hence,
all of 'Safe state assurance' requirements need to be checked for consistency with the external
requirements for 'Safety' and 'Compatibility'. Interaction matrices are used to support this
checking.
The viewpoint's requirements are tabulated against the external requirements as shown in
Figure 13.9. Where they intersect, an assessment of whether they are mutually reinforcing (1),
do not effect each other (0), or conflict (1000) is performed and entered in the table. A 0
means that no action need be taken. A 1 means that the requirement may be redundant and
consideration should be given to eliminating or simplifying it. A 1000 means that the
requirement needs to be changed to make it consistent with the external requirement.
Note that for the 'Safe state assurance' viewpoint, SS1 reinforces external requirements ER1
and ER3. These are all concerned with detection and correction of excess speed. A similar
situation exists for SS2. SS3, however, has a potential conflict with ER5, 6 and 7.
The potential conflict arises because of the need to integrate TCS into the existing on-board
execution cycle and the consequent need to meet performance constraints. This raises the
question of whether requirement SS3 is feasible under these constraints.
The result of the analysis is that all 3 of the 'Safe state assurance' viewpoint's requirements go
forward to the requirements negotiation stage: SS1 and SS2 to see if they are redundant and
could be simplified; and SS3 to investigate whether it needs to be modified or if a further
constraint needs to added. Hence we have detected potential conflicts with the compatibility
concern and raised the need for further analysis.
Interaction matrices are also used to focus the analysis on inconsistencies between different
viewpoints' requirements. Analysing and checking each requirement against every other
requirement quickly becomes infeasible as the number of requirements increases. To counter
this, viewpoints' foci can be used as a guide to whether two viewpoints' requirements are
likely to interact. If their foci intersect (i.e. impose requirements which influence the same
parts of the system or its environment), then they should be tabulated and checked for
consistency. For example, the foci of the two viewpoints 'Safe state assurance' and 'Erroneous
state recovery' imply that there may be s o m e overlap.
Requirements negotiation
PREview does not define how the inconsistencies and redundancies identified by the
requirements analysis phase are resolved. How this is done must be left to the judgement of
the analyst and the various requirements' sources. However, the lists of inconsistent and
potentially redundant requirements provide an agenda for any requirements negotiations
between the analyst and conflicting stakeholders.
Note that the existence of redundant requirements is useful information. A requirement
originating from several viewpoints may be taken to suggest that the requirement is of
relatively high priority. By contrast, a requirement originating from only one viewpoint
suggests that it may be likely to change. For this reason, no attempt to eliminate redundancies
between viewpoint requirements should be made. However, it may be useful to try to
harmonize the requirements if they do not express exactly the same requirement.
After recommendations have been made for resolving redundancies and inconsistencies, the
changed requirements are fed back into the requirements elicitation phase. This is to ensure
that any changes are themselves compliant with concerns and are mutually consistent. An
application of PREview will typically result in several iterations of the
discovery/analysis/negotiation cycle. Each cycle should require diminishing effort.
Eventually, the viewpoints and their requirements should be sufficiently stable to integrate
into a requirements document.
Requirements definition
Once a stable set of viewpoints and requirements has been achieved, the requirements must
be integrated into a usable form. To most practical purposes, this means a requirements
document. Typically, the organisation of a requirements document is not viewpoint-oriented.
This means that the requirements information must be mapped onto the form defined for the
document. Note that it is essential to preserve the viewpoint information so that requirements
can be traced back.
from the requirements document to their viewpoints and their sources.
There are six activities involved in this mapping.
1. Identify the required structure of the requirements document and divide it into
the main sections. For example, it may be structured into sections on: system
constraints, functional requirements, performance requirements, interface
requirements and usability requirements.
2. Identify a set of quality, consistency or other standards which the document
should meet and formulate these as a checklist against which any requirement
can be evaluated.
3. For each external requirement, allocate it to one of the sections according to
whether it expresses a system constraint, functional requirement, etc.
4. Repeat activity 3 for each viewpoint requirement.
5. For each requirement (external or viewpoint) apply the checklist defined in
activity 2 and adapt requirements which fail to satisfy the checks.
6. Review each section and eliminate redundancy. Activity 2 is designed to
ensure that requirements use consistent terminology (a glossary may be a
useful byproduct of this activity) and are formulated at a level of detail which
is acceptable. Where requirements fail these checks, they should either be
reformulated or flagged as needing mor e detailed attention at a later stage.
It is also possible that other more serious errors will be identified here. This will require
feedback of the erroneous requirement(s) to the requirements negotiation phase and at least
one more iteration of the discovery analysis-negotiation cycle until the error is resolved
Activity 6 will be needed as any viewpoint-oriented requirements elicitation method
inevitably results in redundant requirements. This is the price paid for increasing the
likelihood of completeness. Even with the requirements analysis and negotiation phases, it is
unlikely that all redundancy in the requirements set will have been detected and resolved.
Chapter 9: Software Requirement and Risk Management
A risk is a condition that could cause some loss or otherwise threaten the success of a project.
This condition hasn’t actually caused a problem yet—and you’d like to keep it that way. These
potential problems might have an adverse impact on the project’s cost, schedule, or technical
success; the product’s quality; or the team’s effectiveness. Risk management is the process of
identifying, evaluating, and controlling risks before they harm your project. If something
untoward has already happened on the project, it’s an issue, not a risk. Deal with current
problems and issues through your project’s ongoing status tracking and corrective action
processes.
Because no one can predict the future with certainty, risk management is used to minimize
the likelihood or impact of potential problems. Risk management means dealing with a
concern before it becomes a crisis. This improves the chance of project success and reduces
the financial or other consequences of those risks that you can’t avoid. Risks that lie outside
the team’s sphere of control should be directed to the appropriate level of management for
attention.
Because requirements play such a central role in software projects, the prudent project
manager will identify requirements-related risks early and control them aggressively. Typical
requirements risk includes misunderstanding the requirements, inadequate user involvement,
uncertain or changing project scope and objectives, and continually changing requirements.
Project managers can control requirements risks only through collaboration with customers
and other stakeholders. Jointly documenting requirements risks and planning mitigation
actions reinforces the customer-development partnership that was discussed in Chapter 2,
“Requirements from the customer’s perspective.”
Simply knowing about the risks doesn’t make them go away, so this chapter presents a brief
tutorial on software risk management (Wiegers 2007). Later in the chapter, we also describe
a number of risk factors that can raise their ugly heads during requirements engineering
activities. Use this information to launch an attack on your requirements risks before they
attack your project.
Fundamentals of software risk management:
Projects face many kinds of risks besides those related to requirements. Dependence on an
external entity, such as a subcontractor or another project that is providing components to be
reused, is a common source of risk. Project management is fraught with risks from poor
estimation, rejection of accurate estimates by managers, insufficient visibility into project
status, and staff turnover. Technology risks threaten highly complex and leading-edge
development projects. Lack of knowledge is another source of risk, such as with practitioners
who have insufficient experience with the technologies being used or with the application
domain. Transitioning to a new development method introduces a raft of new risks. And ever-
changing, imposed government regulations can disrupt the best-laid project plans.
Scary! This is why all projects need to take risk management seriously. Risk management
involves scanning the horizon for icebergs, rather than steaming full speed ahead with great
confidence that your ship is unsinkable. As with other processes, scale your risk management
activities to your project’s size. Small projects can get by with a simple risk list, but formal
risk management planning is a key element of a successful large-scale project.
Elements of risk management:
Risk management involves the application of tools and procedures to contain project risk
within acceptable limits. It provides a standard approach to identify and document risk factors,
evaluate their potential severity, and propose strategies for mitigating them (Williams,
Walker, and Dorofee 1997).
Risk assessment is the process of examining a project to identify potential threats. Facilitate
risk identification with lists of common risk factors such as those described in the
“Requirements-related risks” section later in this chapter or with other public lists of typical
risks (for example, Carr et al. 1993; McConnell 1996). During risk analysis, you’ll examine
the potential consequences of specific risks to your project. Risk prioritization helps you focus
on the most severe risks by assessing the potential risk exposure from each. Risk exposure is
a function of both the probability of incurring a loss due to the risk and the potential magnitude
of that loss.
Risk avoidance is one way to deal with a risk: don’t do the risky thing. You can avoid some
risks by not undertaking certain projects, by relying on proven rather than cutting-edge
technologies and development methods, or by excluding features that will be especially
difficult to implement. Software development is intrinsically risky, though, so avoiding risk
might also mean losing opportunities.
Most of the time you’ll have to perform risk control activities to manage the top-priority risks
you identified. Risk management planning produces a plan for dealing with each significant
risk, including mitigation approaches, contingency plans, owners, and timelines. Mitigation
actions try either to prevent the risk from becoming a problem at all or to reduce the adverse
impact if it does. The risks won’t control themselves, so risk resolution involves executing
the plans for mitigating each risk. Finally, track your progress toward resolving each risk item
through risk monitoring, which should become part of your routine project status tracking.
Monitor how well your risk mitigation actions are working, look for new risks that have
popped up, retire risks whose threat has passed, and update the priorities of your risk list
periodically.
Documenting project risks:
It’s not enough to simply recognize the risks that face your project. You need to manage them
in a way that lets you communicate risk issues and status to stakeholders throughout the
project’s duration. Figure 32-2 shows a template for documenting an individual risk
statement. You might find it more convenient to store this information in tabular form, such
as a spreadsheet, which makes it easy to sort the list of risks in various ways, or in a database.
Keep the risk list separate from project plans so that it’s easy to update throughout the
project’s duration.
Use a condition-consequence format when you document risk statements. That is, state the
risk condition that you are concerned about, followed by the potential adverse outcome—the
consequence—from that condition. Often, people who suggest risks state only the condition
(“the customers don’t agree on the product requirements”) or the consequence (“we can
satisfy only one of our major customers”). Pull these statements together into the condition-
consequence structure: “If the customers don’t agree on the product requirements, then we
might be able to satisfy only one of our major customers.” One condition might lead to several
consequences, and several conditions can result in the same consequence.
The template provides spaces to record the probability of a risk materializing into a problem,
the negative impact on the project as a result of that problem, and the overall risk exposure. I
like to estimate the probability on a scale from 0.1 (highly unlikely) to 1.0 (certain to happen),
and the impact on a relative scale of 1 (no problem) to 10 (big trouble). Even better, try to rate
the potential impact in units of lost time or money. Multiply the probability by the impact to
estimate the exposure from each risk.
Don’t try to quantify risks too precisely. Your goal is to differentiate the most threatening
risks from those you don’t need to tackle immediately. You might find it easier simply to
estimate both probability and impact as high, medium, or low. Those items that have at least
one high rating demand your early attention.
Use the Risk Management Plan field to identify the actions you intend to take to control the
risk. Some mitigation strategies work to reduce the risk probability, others to reduce the
impact. Consider the cost of mitigation when planning. It doesn’t make sense to spend
$20,000 to control a risk with a maximum estimated impact of only $10,000 if it materialized
into a problem. You might also devise contingency plans for the most severe risks to anticipate
what actions to take if, despite your efforts, the risk does affect your project. Assign every
risk that you plan to control to an individual owner, and set a target date for completing the
mitigation actions. Long-term or complex risks might require a multistep mitigation strategy.
Planning for risk management:
A risk list is not the same as a risk management plan. For a small project, you can include
your plans for controlling risks in the software project management plan. A large project
should write a separate risk management plan that spells out the approaches it intends to take
to identify, evaluate, document, and track risks. This plan should include the roles and
responsibilities for the risk management activities. A risk management plan template is
available with this book’s companion content. Many projects appoint a project risk manager
to be responsible for staying on top of the things that could go wrong. One company dubbed
their risk manager “Eeyore,” after the gloomy Winnie-the-Pooh character who constantly
bemoaned how bad things could become
Establish a rhythm of periodic risk monitoring. Keep the 10 or so risks that have the highest
risk exposure visible, and track the effectiveness of your mitigation approaches regularly.
When a mitigation action is completed, reevaluate the probability and impact for that risk item
and then update the risk list and any other pending mitigation plans accordingly. A risk is not
necessarily under control simply because the mitigation actions have been completed. You
need to judge whether your mitigation approaches have reduced the exposure to an acceptable
level or whether the opportunity for a specific risk to become a problem has passed.
Requirements-related risks:
The risk factors described on the following pages are organized by the five requirements
engineering subdisciplines of elicitation, analysis, specification, validation, and management.
Techniques are suggested that can reduce each risk’s probability or impact. This list is just a
starting point: accumulate your own list of risk factors and mitigation strategies based on the
lessons you learn from each project. Theron Leishman and David Cook (2002) describe
additional risks related to software requirements. Be sure to write your risk statements in the
condition-consequence format.
Requirements elicitation:
Numerous factors can conspire to hamper your requirements elicitation efforts. Following are
several areas of potential elicitation risk and suggestions for how to avoid them.
Product vision and project scope: Scope creep is more likely if the stakeholders lack a
shared understanding of what the product is supposed to be (and not be) and do. Early in the
project, write a vision and scope document that contains your business requirements, and use
it to guide decisions about new or modified requirements.
Time spent on requirements development: Tight project schedules often pressure managers
and customers into glossing over the requirements because they believe that if the developers
don’t start coding immediately, they won’t finish on time. Record how much effort you
actually spend on requirements development for each project so that you can judge whether
it was sufficient and improve your planning for future projects. Agile development approaches
allow construction to begin earlier than on projects following a waterfall life cycle.
Customer engagement: Insufficient customer involvement during the project increases the
chance of an expectation gap. Identify stakeholders, customers, and user classes early in the
project. Determine who will serve as the literal voice of the user for each user class. Engage
key stakeholders as product champions. Make sure product champions fulfill their
commitments so you elicit the correct needs.
Completeness and correctness of requirements specifications: Elicit user requirements
that map to business requirements to ensure that the solution will deliver what the customers
really need. Devise usage scenarios, write tests from the requirements, and have customers
define their acceptance criteria. Create prototypes to make the requirements more meaningful
for users and to elicit specific feedback from them. Enlist customer representatives to review
the requirements and analysis models.
Requirements for innovative products: It’s easy to misgauge market response to products
that are the first of their kind. Emphasize market research, build prototypes, and use focus
groups to obtain early and frequent customer feedback about your innovative product visions.
Defining nonfunctional requirements: Because of the natural emphasis on product
functionality, it’s easy to neglect nonfunctional requirements. Query customers about quality
characteristics such as performance, usability, security, and reliability. Document these
nonfunctional requirements and their acceptance criteria as precisely as you can.
Customer agreement on requirements: If the diverse customers for your system don’t agree
on what you should build, someone will be unhappy with the result. Determine who the
primary customers are, and use the product champion approach to get adequate customer
representation Implementing requirements engineering and involvement. Make sure you’re
relying on the right people for making decisions about requirements. Have appropriate
stakeholder representatives review the requirements.
Unstated requirements: Customers often hold implicit expectations that are neither
communicated nor documented. Try to identify any assumptions the customers might be
making. Use open-ended questions to encourage customers to share more of their thoughts,
wishes, ideas, information, and concerns than you might otherwise hear. Asking customers
what would make them reject the product might reveal some topics that have not yet been
explored.
Existing product used as the requirements reference: Requirements development might
not be deemed important on next-generation or replacement projects. Developers are
sometimes told to use the existing product as their source for requirements, with a list of
changes and additions.
Solutions presented as needs: User-proposed solutions can mask the users’ actual needs,
lead to automating ineffective business processes, and over constrain the developers’ design
options. The analyst must drill down to understand the intent—the real requirement—behind
a solution the customer has presented.
Distrust between the business and the development team: As you have seen throughout
this book, effective requirements engineering demands close collaboration among various
stakeholders, particularly customer communities (the business side for IT projects) and
developers. If these parties do not feel that their counterparts are working in good faith toward
a mutually beneficial outcome, conflicts can arise and requirements elicitation can be
threatened.
Requirements analysis:
It isn’t prudent to just record whatever the customer tells you and dive into development.
Requirements analysis poses its own threat areas, as described below.
Requirements prioritization: Ensure that every functional requirement, feature, or user
requirement is prioritized and allocated to a specific system release or iteration. Evaluate the
priority of new requirements against the backlog of work remaining to be done, so that you
can make appropriate trade-off decisions and iteration plans.
Technically difficult features: Evaluate the feasibility of each requirement to identify those
that might take longer than anticipated to implement. Use status tracking to watch for
requirements that are falling behind their implementation schedule. Take corrective action as
early as possible. Prototype the novel or risky requirements to select effective approaches.
Unfamiliar technologies, methods, languages, tools, or hardware: Don’t underestimate the
learning curve of getting up to speed with new techniques that are needed to satisfy certain
requirements. Identify those high-risk requirements early on, and work with the development
team to allow sufficient time for false starts, learning, and experimentation.
Requirements specification:
Requirements are all about communication. Just because requirements are communicated on
paper or in writing doesn’t mean they are actually understood.
Requirements understanding: Different interpretations of the requirements by developers
and customers lead to expectation gaps, in which the delivered product fails to satisfy
customer needs. Peer review of requirements by developers, testers, and customers can
mitigate this risk. Trained and experienced business analysts will acquire the right information
and write high-quality specifications. Creating models and prototypes that represent the
requirements from multiple perspectives can reveal fuzzy, ambiguous requirements.
Time pressure to proceed despite open issues: It is a good idea to mark areas of the
requirements that need further work with TBD (to be determined) or as issues, but it’s risky
to proceed with construction if these haven’t been resolved. Record who is responsible for
closing each open issue and the target date for resolution.
Ambiguous terminology: Create a glossary to define business and technical terms that might
be interpreted differently by different readers. Requirements reviews can help participants
reach a common understanding of terms and concepts.
Design included in requirements: Design elements that are included in the requirements
place constraints on the options available to developers. Unnecessary constraints inhibit the
creation of optimal designs. Review the requirements to make sure they emphasize what needs
to be done to solve the business problem, rather than dictating the solution.
Requirements validation:
Even if you’ve done a good job on requirements elicitation, it’s important to confirm the
quality and validity of the solution that the requirements specify. Validation offers the
following pitfalls.
Unvalidated requirements: The prospect of reviewing a lengthy requirements specification
is daunting, as is the idea of writing tests very early in the development process. However, if
you confirm the correctness and quality of each set of requirements before their
implementation, you can avoid considerable expensive rework later. Include time and
resources for these quality activities in the project plan. Gain commitment from your customer
representatives to participate in requirements reviews. Perform incremental, informal reviews
to find problems as early and cheaply as possible.
Inspection proficiency: If inspection participants do not know how to inspect requirements
effectively, they might miss serious defects. Train all team members who will participate in
inspections of requirements documents. Invite an experienced inspector from your
organization or an outside consultant to observe your early inspections to coach the
participants.
Requirements management:
Much of the requirements-related risk on a software project comes from how changes are
handled. Those and other requirements management risks are mentioned below.
Changing requirements: You can control rampant scope creep by using documented
business requirements and scope definitions as the benchmark for approving changes. A
collaborative elicitation process with extensive user involvement can cut requirements creep
nearly in half (Jones 1996a). Detecting requirements errors early reduces the number of
modifications requested later on. Design the system for easy modifiability, particularly when
you are following an iterative life cycle.
Requirements change process: Risks related to how requirements changes are handled
include not having a defined change process, using ineffective change mechanisms, failing to
incorporate valuable changes efficiently, and incorporating changes that bypass the process.
A requirement change process that includes impact analysis, a change control board, and a
tool to support the process is an important starting point. Clear communication of changes to
the affected stakeholders is essential.
Unimplemented requirements: Requirements tracing helps you avoid overlooking any
requirements during design, construction, or testing.
Expanding project scope: If requirements are poorly defined initially, further clarification
can expand the scope of the project. Vaguely specified areas of the product will consume
more effort than anticipated. The project resources that were allocated according to the initial
incomplete requirements might be insufficient to implement the full scope of user needs. To
mitigate this risk, plan on a phased or incremental delivery life cycle. Implement the top
priority functionality in the early releases, and elaborate the system’s capabilities in later
iterations.
Risk management is your friend:
A project manager can use risk management to raise the awareness of conditions that could
cause the project to suffer. Consider the manager of a new project who’s concerned about
getting appropriate users involved in requirements elicitation. The astute manager will realize
that this condition poses a risk and will document it in the risk list, estimating the probability
and impact based on previous experience. If time passes and users still are not involved, the
risk exposure for this item will increase, perhaps to the point where it compromises the
project’s success. I’ve been able to convince managers to postpone a project that could not
engage sufficient user representatives by arguing that we shouldn’t waste the company’s
money on a doomed project.
Periodic risk tracking keeps the project manager apprised of the threat from identified risks.
Escalate risks that aren’t adequately controlled to senior managers, who can either initiate
corrective actions or make a conscious business decision to proceed despite the risks. Risk
management helps you keep your eyes open and make informed decisions, even if you can’t
control or avoid every adversity your project might encounter