Cpre Foundationlevel Handbook en v1.0
Cpre Foundationlevel Handbook en v1.0
Version 1.0.0
November 2020
Terms of Use
Acknowledgements
The content of this handbook was reviewed by Rainer Grau, Karol Frühauf, and
Camille Salinesi. Tracey Duffy performed an English review. Stan Bühne and Stefan
Sturm did the final editing.
Approved for release on November 11, 2020 by the IREB Council upon recommenda-
tion of Xavier Franch and Frank Houdek.
We thank everybody for their involvement.
Table of Contents.......................................................................................................................................3
Foreword ......................................................................................................................................................6
Martin Glinz, Hans van Loenhoud, Stefan Staal, and Stan Bühne
November 2020
In this chapter, you will learn what Requirements Engineering (RE) is all about and
the value that RE brings.
Since the beginning of human evolution, humans have been building technical and
organizational systems to support them in completing tasks or achieving objectives.
With the rise of engineering, humans have also started to build systems that automate
human tasks.
Whenever humans decide to build a system to support or automate human tasks, they The need for
have to figure out what to build. This means that they have to learn about the desires requirements
and needs of the persons or organizations who will use the system, benefit from it, or
be impacted by it. In other words, they need to know about the requirements for that
system. Requirements form the basis for any development or evolution of systems or
parts thereof. Requirements always exist, even when they are not explicitly captured
and documented.
The term requirement denotes three concepts [Glin2020]:
DEFINITION 1.1. REQUIREMENT: 1. A need perceived by a stakeholder. 2. A capability or Requirement
property that a system shall have. 3. A documented representation of a need,
capability, or property.
A systematically represented collection of requirements—typically for a system—
that satisfies given criteria is called a requirements specification.
We distinguish between three kinds of requirements: Kinds of requirements
Functional requirements concern a result or behavior that shall be provided
by a function of a system. This includes requirements for data or the
interaction of a system with its environment.
Quality requirements pertain to quality concerns that are not covered by
functional requirements — for example, performance, availability, security,
or reliability.
Constraints are requirements that limit the solution space beyond what is
necessary to meet the given functional requirements and quality
requirements.
Note that dealing with requirements for projects or development processes is outside
the scope of this handbook.
Distinguishing between functional requirements, quality requirements, and How to distinguish
constraints is not always straightforward. One proven way to differentiate between between functional
them is to ask for the concern that a requirement addresses: if the concern is about requirements, quality
required results, behavior, or interactions, we have a functional requirement. If it is a requirements, and
quality concern that is not covered by the functional requirements, we have a quality constraints
requirement. If the concern is about restricting the solution space but is neither a
functional nor a quality requirement, we have a constraint. The popular rule “What
the system shall do → functional requirement vs. how the system shall do it → quality
requirement” frequently leads to misclassifications, particularly when requirements
are specified in great detail or when quality requirements are very important.
Requirements Engineering can be applied to requirements for any kind of system. Application of RE
However, the dominant application case for RE today involves systems in which
software plays a major role. Such systems consist of software components, physical
elements (technical products, computing hardware, devices, sensors, etc.), and
organizational elements (persons, positions, business processes, legal and
compliance issues, etc.).
Systems that contain both software and physical components are called cyber- Cyber-physical systems
physical systems.
Systems that span software, hardware, people, and organizational aspects are called Socio-technical systems
socio-technical systems.
Depending on the perspective taken, there are different sorts of requirements.
System requirements describe how a system shall work and behave—as observed at System requirements
the interface between the system and its environment—so that the system satisfies
its stakeholders’ desires and needs. In the case of pure software systems, we speak of
software requirements.
Stakeholder requirements express stakeholders’ desires and needs that shall be Stakeholder
satisfied by building a system, seen from the stakeholders’ perspective. requirements
User requirements are a subset of the stakeholder requirements. They cover the User requirements
desires and needs of the users of a system.
The major tasks in RE are the elicitation (Chapter 4), documentation (Chapter 3), Major tasks of RE
validation (Section 4.4), and management (Chapter 6) of requirements. Tool support
(Chapter 7) can help perform these tasks. Requirements analysis and requirements
conflict resolution are considered to be part of elicitation.
However, there is no universal process that describes when and how RE should be No universal process
performed when developing a system. For every system development that needs RE
activities, a suitable RE process must be tailored from a broad range of possibilities.
Factors that influence this tailoring include, for example:
The overall system development process—in particular, linear and plan-
driven vs. iterative and agile
The development context—in particular, the relationship between the
supplier, the customer(s), and the users of a system
The availability and capability of the stakeholders
There is also a mutual dependency between the requirements work products to be
produced (see Chapter 3.1) and the RE process to be chosen. More details are given
in Chapter 5.
In practice, very few people have the job title Requirements Engineer. We consider Requirements Engineer
people to act in the role of a Requirements Engineer when they: is a role
Elicit, document, validate, and/or manage requirements as part of their
duties
Have in-depth knowledge of RE, which enables them to define RE processes,
select appropriate RE practices, and apply these practices properly
Are able to bridge the gap between the problem and potential solutions
The role of Requirements Engineer is part of several job functions defined by
organizations. For example, business analysts, application specialists, product
owners, systems engineers, and even developers may act in the role of a
Requirements Engineer. Having RE knowledge and skills is also useful for many other
professionals—for example, designers, testers, system architects, or CTOs.
The set of skills that a Requirements Engineer must learn consists of various What you will learn in
elements. The foundational elements are covered in the subsequent chapters of this this handbook
handbook.
Handbook for the CPRE Certified Professional for Requirements Engineering
Foundation Level - Version 1.0.0 Page 11/139
Beyond technical and analytical skills, a Requirements Engineer also needs what are
referred to as soft skills: the ability to listen, moderate, negotiate, and mediate, as well
as empathy for stakeholders and openness to the needs and ideas of others.
RE is governed by a set of fundamental principles that apply to all tasks, activities, and
practices of RE. These principles are presented in Chapter 2.
Requirements can be documented in various forms. Various work products can be
created at different levels of maturity and detail, from rather informal and temporary
ones to very detailed and structured work products that adhere to strict
representation rules. It is important to select work products and forms of
documentation that are adequate for the situation at hand and to create the chosen
work products properly. Work products and documentation practices are presented
in Chapter 3.
Requirements can be elaborated (i.e., elicited and validated) with various practices. A
Requirements Engineer must be able to select the practices that are best suited in a
given situation and apply these practices properly. Elaboration practices are
presented in Chapter 4.
Understanding possible processes and working structures enables Requirements
Engineers to define a way of working that fits with the specific needs of the system
development situation at hand. Processes and working structures are presented in
Chapter 5.
Existing requirements can be managed with various practices. Requirements
Engineers should be able to understand which requirements management practices
support them for which tasks. Management practices are presented in Chapter 6.
Tools make RE more efficient. Requirements Engineers need to know how RE tools
can support them and how to select a suitable tool for their situation. Tool support is
discussed briefly in Chapter 7.
In this chapter, you will learn about nine basic principles of Requirements
Engineering (RE).
RE is governed by a set of fundamental principles that apply to all tasks, activities, and
practices in RE. A task is a coherent chunk of work to be done (for example, eliciting
requirements). An activity is an action or a set of actions that a person or group
performs to accomplish a task (for example, identifying stakeholders when eliciting
requirements). A practice is a proven way of how to carry out certain types of tasks
or activities (for example, using interviews to elicit requirements from stakeholders).
The principles listed in Table 2.1 form the basis for the practices presented in the
subsequent chapters of this handbook.
Proven practices for achieving shared understanding include working with glossaries Achieving shared
(Section 3.5), creating prototypes (Section 3.7), or using an existing system as a understanding in RE
reference point.
The main means for assessing true explicit shared understanding in RE is thoroughly Assessing shared
validating all specified requirements (cf. Principle 6 and Section 4.4). Practices for understanding in RE
assessing implicit shared understanding include providing examples of expected
outcomes, building prototypes, or estimating the cost of implementing a requirement.
The most important practice for reducing the impact of false shared understanding is
using a process with short feedback loops (Chapter 5).
There are factors that constitute enablers or obstacles of shared understanding. For Enablers and obstacles
example, enablers are:
Domain knowledge
Domain-specific standards
Previous successful collaboration
Existence of reference systems known by all people involved
Shared culture and values
Informed (not blind!) mutual trust
Obstacles are:
Geographic distance
Supplier-customer relationship guided by mutual distrust
Outsourcing
Regulatory constraints
Large and diverse teams
High turnover among the people involved
The lower the probability and impact of false shared understanding and the better Relying on shared
the ratio between enablers and obstacles, the more RE can rely on implicit shared understanding
understanding. Conversely, the fewer enablers and the more obstacles to shared
understanding we have and the higher the risk and impact of false shared under-
standing for a requirement, the more such requirements have to be specified and
validated explicitly.
Second, there may be real-world phenomena in the system context that a system shall Mapping real-world
monitor or control. Requirements for such phenomena must be stated as domain phenomena
requirements and must be adequately mapped to system requirements. For example,
in a car equipped with an automatic gearbox, there is a requirement that the parking
position can be engaged only when the car is not moving. In the context of a software
system that controls the gearbox, this is a domain requirement. In order to satisfy this
requirement, the controller needs to know whether or not the car is moving.
However, the controller cannot sense this phenomenon directly. Hence, the real-
world phenomenon “car is not moving” must be mapped to a phenomenon that the
control system can sense—for example, input from a sensor that creates pulses when
a wheel of the car is spinning. The domain requirement concerning engaging the
parking position is then mapped to a system requirement such as “The gearbox
control system shall enable the engagement of the parking position only if no pulses
are received from the wheel spinning sensors.”
Third, there may be requirements that cannot be satisfied by any system Domain requirements
implementation unless certain domain requirements and domain assumptions in the and domain
context of the system hold. Domain assumptions are assumptions about real-world assumptions
phenomena in the context of a system. For example, consider an air traffic control
system (ATS). The requirement “R1: The ATS shall maintain accurate positions for all
aircraft controlled by the system” is an important system requirement. However, this
requirement can be met only if the radar in the context of the ATS satisfies the
requirements of correctly identifying all aircraft in the airspace controlled by the
radar and correctly determining their position. In turn, these requirements can be
satisfied only if all aircraft spotted by the radar respond properly to the interrogation
signals sent by the radar.
Furthermore, requirement R1 can be met only if certain domain assumptions in the
context of the ATS hold—for example, that the radar is not jammed by a malicious
attacker and that no aircraft are flying at an altitude that is lower than the radar can
detect.
RE goes beyond considering the requirements within the system boundary and
defining the external interfaces at the system boundary. RE must also deal with
phenomena in the system context.
Consequently, RE must also consider issues in the system context: RE has to consider the
context
If changes in the context may occur, how do they impact the requirements
for the system?
Which requirements in the real-world context are relevant for the system to
be developed?
DEFINITION 2.5. VALIDATION: The process of confirming that an item (a system, a work Validation
product, or a part thereof) matches its stakeholders’ needs.
In RE, validation is the process of confirming that the documented requirements
match the stakeholders’ needs; in other words, confirming whether the right
requirements have been specified.
Validation is a core activity in RE: there is no specification without validation.
When validating requirements, we have to check whether: Things to validate
Agreement about the requirements has been achieved among the
stakeholders (conflicts resolved, priorities set)
The stakeholders’ desires and needs are adequately covered by the
requirements
The domain assumptions (see Principle 4 above) are reasonable—that is, we
can expect that these assumptions can be met when the system is deployed
and operated
Practices for validating requirements are discussed in Section 4.4.
Work products can be characterized by the following facets: purpose, size, Characterization of work
representation, lifespan, and storage. products
Table 3.1 gives an overview of typical work products used in RE along with their
respective purpose (that is, what the work product specifies or provides) and typical
size. The table is structured into four groups: work products for single requirements,
sets of requirements, documentation structures, and other work products.
There are many different ways to represent a work product. In RE, representations Representation
based on natural language, templates, and models are of particular importance. These
are discussed in Sections 3.2, 3.3, and 3.4, respectively. There are further
representations, such as drawings or prototypes, which are covered in Section 3.7.
Every work product has a lifespan. This is the period of time from the creation of the Lifespan
work product until the point where the work product is discarded or becomes
irrelevant. We distinguish between three categories of work products with respect to
lifespan: temporary, evolving, and durable work products.
Work product Purpose: The work product specifies Size Typical RE work
/provides products
Single requirement
Individual requirement A single requirement, typically in textual form S
User story A function or behavior from a stakeholder’s S
perspective
Set of requirements
Use case A system function from an actor’s or user’s S-M
perspective
Graphic model Various aspects, for example, context, function, M
behavior (see Section 3.4)
Task description A task that a system shall perform S-M
External interface The information exchanged between a system M
description and an actor in the system context
Epic A high-level view of a stakeholder need M
Feature A distinguishing characteristic of a system S-M
Documents or documentation structures
System, business, stake- A comprehensive requirements document L-XL
holder, or user require-
ments specification
Product and sprint A list of work items, including requirements M-L
backlog
Story map A visual arrangement of user stories M
Vision A conceptual imagination of a future system M
Handbook for the CPRE Certified Professional for Requirements Engineering
Foundation Level - Version 1.0.0 Page 26/139
Work product Purpose: The work product specifies Size
/provides
Other work products
Glossary Unambiguous and agreed common terminology M
Textual note or graphic A memo for communication and understanding S
sketch
Prototype A specification by example, particularly for S-L
understanding, negotiating, and validating
requirements
S: Small, M: Medium, L: Large, XL: Very large
Nowadays, most work products are stored electronically as files, in databases, or in Storing work products
RE tools. Informal, temporary work products may also be stored on other media—
for example, paper or sticky notes on a Kanban board.
Requirements and their corresponding work products occur at various abstraction Requirements occur at
levels—from, for example, high-level requirements for a new business process, down various abstraction
to requirements at a very detailed level, such as the reaction of a specific software levels
component to an exceptional event.
Business requirements, domain requirements, and stakeholder/user requirements Typical layers: business,
typically occur at a higher level of abstraction than system requirements. When a system, components
system consists of a hierarchy of subsystems and components, we have system
requirements at the corresponding abstraction levels for subsystems and
components. As a consequence, requirements are frequently organized in three layers
of abstraction: the business, system, and component levels.
When business requirements and stakeholder requirements are expressed in durable Dependencies
work products—such as business requirements specifications, stakeholder
requirements specifications, or vision documents—they precede the specification of
system requirements. For example, in contractual situations, where a customer
orders the development of a system from a supplier, the customer frequently creates
and releases a stakeholder requirements specification. The supplier then uses this as
the basis for producing a system requirements specification. In other projects,
business requirements, stakeholder requirements, and system requirements may co-
evolve.
Some work products, such as individual requirements, sketches, or process models,
occur at all levels. Other work products are specifically associated with certain levels.
For example, a system requirements specification is associated with the system level.
Note that an individual requirement at a high abstraction level may be refined into
several detailed requirements at more concrete levels.
The choice of the proper abstraction level depends on what is to be specified. It is Choosing a proper
important, however, not to mix requirements that are at different abstraction levels. abstraction level
For example, in the specification of a healthcare information system, when writing a
detailed requirement about photos on client ID cards, the subsequent paragraph
should not state a general system goal such as reducing healthcare cost while
maintaining the current service level for clients. In small and medium-sized work
products, requirements should be at more or less the same abstraction level. In large
work products such as a system requirements specification, requirements at different
levels of abstraction should be kept separate by structuring the specification
accordingly (Section 0).
Handbook for the CPRE Certified Professional for Requirements Engineering
Foundation Level - Version 1.0.0 Page 27/139
Requirements naturally occur at different levels of abstraction. Selecting work
products that are adequate for a given level of abstraction and properly structuring
work products that contain requirements at multiple abstraction levels is helpful.
When specifying requirements, Requirements Engineers have to decide on the level How much detail?
of detail in which the requirements shall be specified. However, deciding which level
of detail is appropriate or even optimal for a given requirement is a challenging task.
For example, in a situation where the customer and the supplier of a system
collaborate closely, it might be sufficient to state a requirement about a data entry
form as follows: “The system shall provide a form for entering the personal data of
the customer.” In contrast, in a situation where the design and implementation of the
system are outsourced to a supplier with little or no domain knowledge, a detailed
specification of the customer entry form will be necessary.
The level of detail to which requirements should be specified depends on several Factors affecting the
factors, in particular: level of detail needed
The problem and project context: the harder the problem and the less
familiar the Requirements Engineers and developers are with the project
context, the more detail is necessary.
The degree of shared understanding of the problem: when there is low
implicit shared understanding (see Principle 3 in Chapter 2), explicit,
detailed specifications are required to create the necessary degree of shared
understanding.
The degree of freedom left to designers and programmers: less detailed
requirements give the developers more freedom.
Availability of rapid stakeholder feedback during design and
implementation: when rapid feedback is available, less detailed
specifications suffice to control the risk of developing the wrong system.
Cost vs. value of a detailed specification: the higher the benefit of a
requirement, the more we can afford to specify it in detail.
Standards and regulations: Standards imposed and regulatory constraints
may mean that requirements have to be specified in more detail than would
otherwise be necessary.
There is no universally “right” level of detail for requirements. For every requirement,
the adequate level of detail depends on many factors. The greater the level of detail in
the requirements specified, the lower the risk of eventually getting something that
has unexpected or missing features or properties. However, the cost for the
specification increases as the level of detail increases.
Regardless of the RE work products being used, several aspects need to be considered
when specifying requirements [Glin2019].
First, as there are functional requirements, quality requirements, and constraints (see Considering multiple
Section 1.1), Requirements Engineers have to make sure that they cover all three aspects
kinds of requirements when documenting requirements. In practice, stakeholders
tend to omit quality requirements because they take them for granted.
Independently of the techniques used, there are some general guidelines that should General guidelines
be followed when creating RE work products:
Select a work product type that fits the intended purpose.
Avoid redundancy by referencing content instead of repeating the same
content again.
Avoid inconsistencies between work products, particularly when they cover
different aspects.
Use terms consistently, as defined in the glossary.
Structure work products appropriately—for example, by using standard
structures.
Each project setting and each domain is different, so the set of resulting work What to consider
products must be defined for each endeavor. The parties involved, particularly the
Requirements Engineers, stakeholders, and project/product owners or managers
need to agree upon the following issues:
In which work products shall the requirements be recorded and for what
purpose (see Table 3.1)?
Which abstraction levels need to be considered (Section 3.1.2)?
Up to which level of detail must requirements be documented at each
abstraction level (Section 3.1.3)?
How shall the requirements be represented in these work products (for
example, natural-language-based or model-based, see below) and which
notation(s) shall be used?
Natural language, in both spoken and written form, has always been a core means for Advantages
communicating requirements for systems. Using natural language to write RE work
products has many advantages. In particular, natural language is extremely
expressive and flexible, which means that almost any conceivable requirement in any
aspect can be expressed in natural language. Furthermore, natural language is used
in everyday life and is taught at school, so no specific training is required to read and
understand requirements written in natural language.
Human evolution has shaped natural language as a means for spoken communication Problems
between directly interacting people, where misunderstandings and missing
information can be detected and corrected rapidly. Hence, natural language is not
optimized for precise, unambiguous, and comprehensive communication by means of
written documents. This constitutes a major problem when writing technical
documentation (such as requirements) in natural language. In contrast to
communication in spoken natural language, where the communication is
contextualized and interactive with immediate feedback, there is no natural means
for rapidly detecting and correcting ambiguities, omissions, and inconsistencies in
texts written in natural language. On the contrary, finding such ambiguities,
omissions, and inconsistencies in written texts is difficult and expensive, particularly
for work products that contain a large amount of natural language text.
The problem can be mitigated to some extent by writing technical documentation Writing rules
consciously, following proven rules and avoiding known pitfalls.
When writing requirements in natural language, Requirements Engineers can avoid
many potential misunderstandings by applying some simple rules:
Write short and well-structured sentences. The rule of thumb is to express a Short sentences
single requirement in one sentence in natural language. To achieve a good
structure, Requirements Engineers should use phrase templates (Section
3.3).
Create well-structured work products. Besides writing well-structured Structured work
sentences (see above), work products written in natural language should products
also be well-structured as a whole. A proven way to do this is by using a
hierarchical structure of parts, chapters, sections, and subsections, as is
usually done in technical books. Document templates (Section 3.3) help you
to achieve a good structure.
Define and consistently use a uniform terminology. Creating and using a Uniform terminology
glossary (Section 3.5) is the core means for avoiding misunderstandings and
inconsistencies about terminology.
When writing technical documents in natural language, there are some well-known
pitfalls that should be avoided or things that need to be used with care (see, for
example, [GoRu2003]).
Requirements Engineers should avoid writing requirements that contain the Things to avoid
following:
Incomplete descriptions. Verbs in natural language typically come with a set Incomplete descriptions
of placeholders for nouns or pronouns. For example, the verb “give” has
three placeholders for who gives what to whom. When writing a requirement
in natural language, all placeholders of the verb used should be filled.
Unspecific nouns. Using nouns such as “the data” or “the user” leaves too Unspecific nouns
much room for different interpretations by different stakeholders or
developers. They should be replaced by more specific nouns or be made
more specific by adding adjectives or assigning them a well-defined type.
Incomplete conditions. When describing what shall be done, many people Incomplete conditions
focus on the normal case, omitting exceptional cases. In technical writing,
this is a trap to avoid: when something happens only if certain conditions are
true, such conditions shall be stated, providing both then and else clauses.
Incomplete comparisons. In spoken communication, people tend to use Incomplete comparisons
comparatives (for example, “the new video app is much better”) without
saying what they are comparing to, typically assuming that this is clear from
the context. In technical writing, comparisons should include a reference
object, for example, “faster than 0.1 ms”.
There are some further things that Requirements Engineers need to use with care, as Things to handle with
they constitute potential pitfalls: care
Passive voice. Sentences in passive voice have no subject. If a requirement is Passive voice
stated in the passive voice, this may hide who is responsible for the action
described in the requirement, leading to an incomplete description.
Universal quantifiers. Universal quantifiers are words such as all, always, or Universal quantifiers
never, which are used to make statements that are universally true. In
technical systems, however, such universal properties are rare. Whenever
Requirements Engineers use a universal quantifier, they need to reflect on
whether they are stating a truly universal property or whether they are
instead specifying a general rule that has exceptions (which they also need
to specify). They should apply the same caution when using “either-or”
clauses, which, by their semantics, exclude any further exceptional cases.
Nominalizations. When a noun is derived from a verb (for example, Nominalizations
“authentication” from “to authenticate”), linguists call this a nominalization.
When specifying requirements, Requirements Engineers need to handle
nominalizations with care because a nominalization may hide unspecified
requirements. For example, the requirement “Only after successful
authentication, the system shall provide a user access to (…)” implies that a
procedure for authenticating users exists.
As mentioned in Section 3.2 above, using templates is a proven means for writing
good, well-structured work products in natural language and thus mitigating some of
the weaknesses of natural language for technical writing. A template is a kind of
ready-made blueprint for the syntactic structure of a work product. When using
natural language in RE, we distinguish between three classes of templates: phrase
templates, form templates, and document templates.
DEFINITION 3.2. PHRASE TEMPLATE: A template for the syntactic structure of a phrase Phrase template
that expresses an individual requirement or a user story in natural language.
A phrase template provides a skeleton structure with placeholders, in which
Requirements Engineers fill in the placeholders in order to get well-structured,
uniform sentences that express the requirements.
Using phrase templates is a best practice when writing individual requirements in
natural language and when writing user stories.
Various phrase templates for writing individual requirements have been defined, for ISO/IEC/IEEE 29148
example, in [ISO29148], [MWHN2009], and [Rupp2014]. The standard ISO/IEC/IEEE phrase template
29148 [ISO29148] provides a single, uniform template for individual requirements as
follows:
[<Condition>] <Subject> <Action> <Objects> [<Restriction>].
Example: When a valid card is sensed, the system shall display the “Enter your PIN”
message on the dialog screen within 200 ms.
When formulating an action with this template, the following conventions about the Using auxiliary verbs
use of auxiliary verbs are frequently used in practice:
Shall denotes a mandatory requirement.
Should denotes a requirement that is not mandatory but strongly desired.
May denotes a suggestion.
Will (or using a verb in the present tense without one of the auxiliary verbs
mentioned above) denotes a factual statement that is not considered as a
requirement.
When there are no agreed meanings for auxiliary verbs in a project, or when in doubt,
definitions such as the ones given above should be made part of a requirements
specification.
Ubiquitous requirements (must always hold): The <system name> shall <system
response>.
Event-driven requirements (triggered by an external event):
WHEN <optional preconditions> <trigger> the <system name> shall
<system response>.
Unwanted behavior (describing situations to be avoided):
IF <optional preconditions> <trigger>, THEN the <system name>
shall <system response>.
Note: Although the unwanted behavior template is similar to the event-driven one, Mavin et al. provide
a separate template for the latter, arguing that unwanted behavior (primarily due to unexpected events
in the context, such as failures, attacks, or things that nobody has thought of), is a major source of
omissions in RE.
The classic phrase template for writing user stories was introduced by Cohn Cohn’s user story
[Cohn2004]: template
Example: “As a line manager, I want to make ad hoc inquiries to the accounting system so
that I can do financial planning for my department.”
While Cohn has designated the <benefit> part of the template as optional, it is
standard practice nowadays to specify a benefit for every user story.
Every user story should be accompanied by a set of acceptance criteria—that is, Acceptance criteria
criteria that the implementation of the user story must satisfy in order to be accepted
by the stakeholders. Acceptance criteria make a user story more concrete and less
ambiguous. This helps to avoid implementation errors due to misunderstandings.
DEFINITION 3.3. FORM TEMPLATE: A template providing a form with predefined fields to Form template
be filled in.
Form templates are used to structure work products of medium size such as use cases.
Cockburn [Cock2001] introduced a popular form template for use cases. [Laue2002]
proposed a template for task descriptions. Table 3.2 shows a simple form template
for use cases. Each flow step may be subdivided into an action by an actor and the
response by the system.
Measurable quality
Template Example
requirement template
ID <Number of R137.2
requirement>
Goal <Qualitatively stated Confirm room reservations immediately
goal>
Scale <Scale for measuring Elapsed time in seconds (ratio scale)
the requirement>
Meter <Procedure for Timestamping the moments when the
measuring the user hits the “Reserve” button and when
requirement> the app has displayed the confirmation.
Measuring the time difference.
Minimum <Minimum acceptable Less than 5 s in at least 95% of all cases
quality to be achieved>
OK range <Value range that is OK Between 0.5 and 3 s in more than 98% of
and is aimed at> all cases
Desired <Quality achieved in Less than 0.5 s in 100% of all cases
the best possible case>
DEFINITION 3.4. DOCUMENT TEMPLATE: A template providing a predefined skeleton Document template
structure for a document.
Document templates help to systematically structure requirements documents—for
example, a system requirements specification. RE document templates may be found
in standards, for example in [ISO29148]. The Volere template by Robertson and
Robertson [RoRo2012], [Vole2020] is also popular in practice. When a requirements
specification is included in the set of work products that a customer has ordered and
will pay for, that customer may prescribe the use of document templates supplied by
the customer. In
Using templates when writing RE work products in natural language has major
advantages. Templates provide a clear, re-usable structure for work products, make
them look uniform, and thus improve the readability of the work products. Templates
also help you to capture the most relevant information and make fewer errors of
omission. On the other hand, there is a potential pitfall when Requirements Engineers
use templates mechanically, focusing on the syntactic structure rather than on
content, neglecting everything that does not fit the template.
Using templates when writing RE work products in natural language improves the
quality of the work products provided that the templates are not misused as just a
syntactic exercise.
Requirements formulated in natural language can easily be read by people provided Requirements in natural
they can speak the language. Natural language suffers from ambiguity due to the language have their
imprecision of semantics of words, phrases, and sentences [Davi1993]. This limitations
imprecision may lead to confusion and omissions in requirements. When you read
textual requirements, you will try to interpret them in your own way. We often try to
imagine these requirements in our mind. When the number of requirements is
manageable, it is possible to maintain insight and an overview of the textual
requirements. When the number of textual requirements becomes “too big,” we lose
the overview. That limit is different for each person. The number of textual
requirements is not the only reason for losing insight and overview. The complexity
of the requirements, the relationship between the requirements, and abstraction of
the requirements also contribute to this. You may have to read the requirements
formulated in natural language several times before you get a correct and complete
picture that the system must comply with. We have a limited ability to process
requirements in natural language.
A model is an abstract representation of an existing part of reality or a part of reality A model is an abstract
to be created. Displaying the requirements (also) with a model (or picture) will representation of reality
contribute to readers grasping the requirements. Such diagrammatic representation
of a model is called a diagram.
The diagram in Figure 3.2 shows at a glance what the system must provide, but only Modeling requirements
if you have mastered the modeling language. It is evident that if you do not understand contributes to
the diagram, in this case a UML activity diagram, the picture will not contribute to a maintaining an overview
better understanding of the requirements. of and insight into the
In the next section (3.4.1), the concept of a requirements model is explained. Modeling requirements
of business requirements and goals is explained in Section 3.4.5.1. An important
method for describing the demarcation of a system is the context model. Examples of
the context are depicted in Section 3.4.2. Sections 3.4.3 to 3.4.5 give a number of
examples of modeling languages that are often used in systems engineering practice.
If you think about a natural language, for example your native language, it is defined A modeling language
by its grammar and semantics. consists of syntax and
The grammar describes the elements (words and sentences) and the rules that the semantics
language must obey. In a modeling language, this is called the syntax, see Figure 3.3.
The syntax describes which notation elements (symbols) are used in the language. It
also describes how these notation elements can be used in combination.
The semantics defines the meaning of the notation elements and defines the meaning
of the combination of elements. Understanding the meaning of the notation elements
is fundamental for preventing the risk of the model being misinterpreted.
A requirements model is a conceptual model that depicts the requirements for the
system to be developed. A model is also used to represent the current situation to
understand, analyze, and explore the present problems. In this context, conceptual
means that reality is reduced to its essence. A model has a high level of abstraction
and reduces reality to what is relevant at this generic level.
Compared with natural languages, models have the following advantages, among Advantages of models
others:
The elements and their connections are easier to understand and to
remember.
A picture tells more than a thousand words. A picture, and also a model, can
be easier to grasp and to remember. Note that a model is not self-
explanatory and needs extra information—i.e., a legend, examples, scenarios,
etc.
The focus on a single aspect reduces the cognitive load needed to
understand the requirements modeled.
Because a model has a specific purpose and a reduced amount of
information, understanding the reality modeled can require less effort.
Requirements modeling languages have a restricted syntax that reduces
possible ambiguities and omissions.
Because the modeling language (syntax and semantics) is simpler—i.e.,
limited number of notation elements and stricter language rules compared
with natural language—the risk of confusion and omissions is smaller.
Higher potential for automated analysis and processing of requirements.
Because a modeling language is more formal (limited number of notation
elements and stricter language rules) than a natural language, it lends itself
better to automating the analysis or processing of requirements.
Despite the great advantages for visualizing requirements with models, models also Disadvantages of
have their limitations. models
Keeping models that focus on different aspects consistent with each other is
challenging.
If multiple models are used to describe the requirements, it is important to
keep these models consistent with each other. This requires a lot of
discipline and coordination between the models.
Information from different models needs to be integrated for causal
understanding.
If multiple models are used, all models must be understood to enable a good
understanding of the requirements.
Models focus primarily on functional requirements.
The models for describing quality requirements and constraints are limited
if not lacking in specific context. These types of requirements should then be
supplied in natural language together with the models—for example, as a
separate work product.
The restricted syntax of a graphic modeling language implies that not every
relevant item of information can be expressed in a model.
Because a model is made for a specific purpose and context, it is not always
possible to record all requirements in the model or in multiple models.
Requirements that cannot be expressed in models are added to the model as
natural language requirements or as a separate work product.
As indicated in the previous sections, there are common models for various contexts.
For example, in architecture, you have construction drawings, piping diagrams,
electrical diagrams, etc. to express the specifications of a building. In other contexts—
for example, software development—there are modeling languages that are useful in
these types of context. An important aspect in applying models is to use models that
are common in the context or that have been specially developed for a specific
context.
Many modeling languages—for example, UML [OMG2017] or BPMN [OMG2013]—
have been standardized. When requirements are specified in a non-standard
modeling language, the syntax and semantics of the language should be explained to
the reader—for example, via a legend.
Models are used to describe the requirements from a certain perspective. In system
development, functional requirements are categorized in the following perspectives
(see also Section 3.1.4):
Structure and data
Models that focus on the static structural properties of a system or a domain
Function and flow
Models that focus on the sequence of actions required to produce the
required results from given inputs or the actions required to execute a
(business) process, including the flow of control and data between the
actions and who is responsible for which action
State and behavior
Models that focus on the behavior of a system or the life cycle of business
objects in terms of state-dependent reactions to events or the dynamics of
component interaction
The nature of the system being modified or built gives direction to the models to be The nature of a system
used. For example, if the nature of the system is to process information and helps in the selection of
relationships, then it is expected that there are quite a lot of functional requirements the appropriate model
that describe this information and these relationships. As a result, we use a matching
modeling language that lends itself to modeling data and its structure.
Naturally, a system will consist of a combination of the above perspectives. It follows
that a system needs to be modeled from multiple perspectives. Sections 3.4.3 to 3.4.5
elaborate the different models for each perspective in more detail.
Before the requirements are elicited and documented—for example with models—
an inventory is taken of goals and context. These can also be modeled, see Sections
3.4.5.1 respectively 3.4.2.
Applying models helps us mainly in the following ways:
Specifying (primarily functional) requirements in part or even completely, as
a means of replacing textually represented requirements
Decomposing a complex reality into well-defined and complementing
aspects; each aspect being represented by a specific model, helping us to
grasp the complexity of the reality
This is a supplementary section for which there will be no questions in the CPRE
Foundation level exam.
A substantial part of the requirements models are diagrams or graphical The quality of a model is
representations. The quality of the requirements model is determined by the quality determined by three
of the individual diagrams and their mutual relationships. In turn, the quality of the criteria
individual diagrams is determined by the quality of the model elements within the
diagrams. The quality of the requirements models and model elements can be
assessed against three criteria [LiSS1994]:
1. Syntactic quality
2. Semantic quality
3. Pragmatic quality
The syntactic quality expresses the extent to which a single model element (graphical Syntactic quality
or textual), requirements diagram, or requirements model complies with the
syntactic specifications. If, for example, a model that describes the requirements as a
class model contains modeling elements that are not part of the syntax, or model
elements are misused, then this will decrease the syntactic quality of the model. A
stakeholder of this model—for example, a tester—might misinterpret the
information that is represented by the model. This might eventually lead to
inappropriate test cases.
Requirements modeling tools provide facilities for checking the syntactic quality of
the models.
The semantic quality expresses the extent to which a single model element (graphical Semantic quality
or textual), the requirements diagram, or the requirements model correctly and
completely represents the facts.
Just like in natural language, semantics gives meaning to the words. If a term can have
different meanings or there are several terms that mean the same thing, this can lead
to miscommunication. The same applies to the semantics of modeling elements. If the
modeling elements are misinterpreted or applied incorrectly, the model may be
misinterpreted.
The pragmatic quality expresses the extent to which a single model element Pragmatic quality
(graphical or textual), the requirements diagram, or the requirements model is
suitable for the intended use—that is, whether the degree of detail and abstraction
level is appropriate for the intended use and whether the appropriate model is
selected with respect to the domain or context. This can be assessed if the purpose
and the stakeholders of the diagram are known. Intermediate versions of the model
can be submitted to the stakeholders interested to validate whether the diagrams fit
their purpose.
3.4.2.1 Modeling the System Context with a Data Flow Diagram (DFD)
The system context can be viewed from different perspectives. The structured
analysis of systems [DeMa1978] talks about the context diagram. This diagram is a
special data flow diagram (DFD) where the system is represented by one process (the
system). Figure 3.5 shows an example of a context diagram.
3.4.2.2 Modeling the System Context with a UML Use Case Diagram
Another view of the context of a system can be reached from a functional perspective.
The UML use case diagram is a common approach for modeling the functional aspects
of a system and the system boundaries, along with the system’s interactions with
users and other systems. Use cases provide an easy way to systematically describe
the various functions within the defined scope from a user perspective. This is
different to DFD context diagrams, where the system is represented as a big black box.
Use cases were first proposed as a method for documenting the functions of a system
in [Jaco1992]. The UML use cases consists of use case diagrams with associated
textual use case specifications (see Section 3.3.2). A use case specification specifies
each use case in detail by, for example, describing the possible activities of the use
case, its processing logic, and preconditions and postconditions of the execution of
the use case. The specification of use cases is essentially textual—for example, via use
case templates as recommended in [Cock2001].
Handbook for the CPRE Certified Professional for Requirements Engineering
Foundation Level - Version 1.0.0 Page 47/139
As mentioned, a UML use case diagram shows the functions (use cases) from the point A use case diagram
of view of the direct users and other systems that interact with the system under gives insights into the
consideration. The name of the use case is often composed of a verb and a noun. This functionality provided to
gives a brief description of the function offered by the system, as shown by the the direct users in the
example in Figure 3.6. context
The actors are the direct users or systems that interact with the system under
consideration. The actor (user or system) that starts the use case receives the benefit
that the use case delivers (e.g., showing the status of an order to the customer). The
association connects the actor with the relevant use case but it does not document
any direction or data flow (as is done in DFDs); it expresses only that the actor
receives the benefit from the use case.
A UML use case diagram describes the functionality that the system offers to its
environment. The separation between the functionality in the system and the actors
in the context is visualized with the system boundary (rectangle around the use cases,
e.g., “book ordering system”). Use case diagrams support sharpening of the system
boundary and checking whether the functional scope of the system at a high level is
covered.
Each use case also includes a detailed use case specification, documenting the
preconditions, trigger, actions, postconditions, actors, and so forth. Use cases are
usually described using a template (Section 3.3). If the scenarios of a use case become
complex or large, the recommendation is to visualize the scenarios with UML activity
diagrams, see Section 3.4.4.1. The detailed specification of use cases is not part of
context modeling and can be elaborated at a later time, when this information
becomes relevant.
For functional requirements from the perspective of business objects (see Section
3.1.4), different data models are available. A (business) object can be a tangible or
intangible object, such as a bicycle, pedal, bicycle bell, but also a training request, a
shopping basket with digital products, and so on. A (business) object is "something"
in the real world. Some (or maybe all) of these (business) objects are used by the
system under consideration. The system uses these objects as input to process, to
persist, and/or to deliver output. Data models are used to describe the (business)
objects that must be known by the system. These kinds of diagrams model the object,
attributes of the object, and the relationships between objects. For the sake of
simplicity, we refer to modeling structure and data—these, however, represents
information structures between (business) objects in the real world.
Handbook for the CPRE Certified Professional for Requirements Engineering
Foundation Level - Version 1.0.0 Page 48/139
A number of common models for depicting structure and data are: Common models for
depicting structure and
Entity relationship diagrams (ERD) [Chen1976]
data
UML class diagrams [OMG2017]
SysML Block Definition Diagrams [OMG2018]
Building information models (BIM) [ISO19650]: these model the elements
required to plan, build, and manage buildings and other construction
elements. The details of models outside the system domain are not covered
by this handbook.
To explain the concept of modeling structure and data, this chapter uses the UML class
diagram as an example. UML, short for Unified Modeling Language, consists of an
integrated set of diagrams. This set of diagrams is a collection of best engineering
practices and has proven successful in modeling complex and large systems. UML was
designed by Grady Booch, James Rumbaugh, and Ivar Jacobson in the 1990s and it has
been a standardized modeling language since 1997.
If more depth or a different model is desired, read the literature referred to and
practice with the desired modeling language.
UML is a collection of different models that can be used to describe a system. One of
these models is the class diagram. A class diagram depicts a set of classes and
associations between them. We discuss only the common and simple notation
elements of this model. If more depth is desired, we refer to the literature or the CPRE
Advanced Level Requirements Modeling.
In the overview below you will find the most common notation elements. Most common notation
elements of UML class
diagrams
Function and flow describe how the (sub)system shall transform input into output.
We can visualize this type of requirement with models that depict function and flow.
Unlike modeling data, which essentially needs only one diagram type, function and
flow can be viewed from different angles. Depending on the needs of the stakeholders
to take the next step in the development process, more than one model might be
needed to document the requirements about function and flow.
Some common models for depicting function and flow are: Common models for
depicting function and
Business Process Modeling Notation (BPMN) [OMG2013]
flow
These process models are used to describe business processes or technical
processes. BPMN is frequently used to express business process models.
UML use case diagram [OMG2017]
See Section 3.4.2.2.
UML activity diagram [OMG2017]
See Section 3.4.4.1.
UML sequence diagram [OMG2017]
See Section 3.4.5.1.
Data flow diagram [DeMa1978]
See Section 3.4.2.1.
Domain story models [HoSch2020]
These models specify visual stories about how actors interact with devices,
artifacts, and other items in a domain, typically using domain-specific
symbols. They are a means for understanding the application domain in
which a system will operate.
To explain the concept of modeling function and flow, we limit this section to a few
examples of UML diagrams. If more depth or a different model is desired, read the
literature referred to and practice with the relevant modeling language.
UML activity models are used to specify system functions. They provide elements for
modeling actions and the control flow between actions. Activity diagrams can also
express who is responsible for which action. Advanced modeling elements (not
covered by this handbook) provide the means for modeling data flow.
A UML activity diagram expresses the control flow of activities of a (sub)system. Flow
thinking comes from visualizing program code with flow charts (according to
[DIN66001], [ISO5807]). This helped programmers to conceive and understand
complex structures and flows in programs. With the introduction of UML [OMG2017],
a model has been introduced for visualizing activities and actions from a functional
perspective.
With this set of basic notation elements, you can set up a simple sequential activity
diagram. If more control is required, the model can be extended with decisions and
parallel flows of activities using the notation elements below.
Activity diagrams can be used to specify the processing logic of use case scenarios in
detail (see Section 3.3.2). Activity diagrams are created to visualize the scenarios,
which are processes with activities and processing logic. As long as the diagram
remains understandable, the main scenario can be modeled jointly with the
alternative scenarios and the exception scenarios as part of the same diagram.
Figure 3.11 gives a simple example of the book ordering system. This simplified flow
of action starts when the customer sends in their order. First, the Order and the
Customer information are validated to determine whether all (necessary) information
is supplied. If either the Order or the Customer information is invalid (incorrect or
insufficient), then a notification is sent to the customer and the order process is
canceled. The basic scenario is that the Order and Customer information are valid. The
scenario that the Order or Customer information is invalid is called an exceptional flow
and handles a functional faulty condition in the process.
As discussed at the beginning of the section, a state diagram can clarify the states an
object can take. We see here an opportunity to visualize additional (and partly
redundant) information of an object. Imagine that you order a book on a website and
you want to track the status of your order. An order is used in the real world and is
modeled as a business object in a class diagram (see Figure 3.8) with, most likely, an
attribute status. The class diagram indicates that the attribute status can assume a
limited number of values, such as Validated, Paid, Delivered, Canceled, and so on. The
class diagram does not describe the order of possible status changes. A class diagram
does not describe the behavior of the system in a certain "status" either. This can be
made clear with a UML state diagram—for example, that an offered order cannot go
directly to the status Delivered without the customer having paid for the order.
Figure 3.13 gives an example of a state diagram of the book ordering system. In the
class diagram (Figure 3.8) of the book ordering system, an object Order is modeled.
This object has an attribute status that can have a limited number of values. These
values are listed and explained in the class diagram. What a class diagram does not
describe is the sequence in which the order is processed. A state diagram visualizes
the states and transitions between the states, making it clear what the sequence of
the order status is. The state diagram shows, for example, that the order cannot be
sent before it is completely picked (transition between the states Picked and Sent).
Handbook for the CPRE Certified Professional for Requirements Engineering
Foundation Level - Version 1.0.0 Page 54/139
Also, if the order is in the state Sent, the next state can only be Paid. A transition from
Sent to Handled is not possible. This diagram also makes clear that payment happens
after the book is sent. You can ask the stakeholders whether this is what they need or
have requested.
A transition may direct to the same status. This situation is visible in the state Picked.
Each time the order is not picked to completion, it stays in the same state to prevent
it from sending an incomplete order. Only when the order is completely picked is it
then sent to the customer.
A few months after the release of the book ordering system, customers complained
that they did not have the ability to cancel an order. It was agreed that a customer
could cancel the order in each state of the order process. Modeling this new
requirement means that a transition to Canceled is needed from each state. This might
make the diagram difficult to read. Adding a textual requirement to describe this
behavior might be a way to keep the model simple for the audience.
The following UML diagram is supplementary and will not be questioned in the CPRE
Foundation level exam.
The UML sequence diagram is used to depict the interaction between communication
partners and to model the dynamic aspect of systems. The communication partners
are actors, systems, components, and/or objects within a system.
The interaction displays the sequence of messages (a scenario) between these
communication partners. The interaction that takes place between the
communication partners realizes the purpose of a scenario, respectively (a part) of a
use case.
A lifeline in a scenario depicts the role in the scenario, meaning the instance of an Basic notation elements
actor. When sequence diagrams are modeled, the instance name of an actor or object of messaging in UML
is often omitted. The roles that participate in the communication interact with each sequence diagrams
other by sending messages. There are two types of messages that are used in the
interaction.
Figure 3.15 Basic notation elements of messaging in the UML sequence diagram
A message can also be sent from or to objects outside the scenario. This is represented
as a filled-in circle. The sender or receiver of these kinds of messages may be
unknown.
Business requirements describe a business goal or need. They describe the end result
that the solution must meet and with which the (business) problem is solved, see
Chapter 2, Principle 5. To ensure that the focus is on solving the problem and that the
effort focuses on adding value, goals are carefully described. In Requirements
Engineering, there are several ways to document goals. The most common one is the
use of natural language (Section 3.2) or templates (Section 3.3). Template-based
documentation forms can be found, for instance, in [Pich2010], [Pohl2010], or
[RoRo2012].
There are also some model-based notations for documenting goals. The easiest and
most common notation is an AND/OR tree [AnPC1994]. AND/OR trees allow us to
document goals at different levels of detail and to link subgoals with goals using AND
and OR relationships. An AND relationship means that all subgoals need to be fulfilled
to fulfill the goal. An OR relationship is used to express that at least one of the subgoals
needs to be fulfilled to fulfill the goal.
Documenting goals (in textual or graphical form) is an important starting point for
eliciting requirements, referring the requirements to their rationale, and identifying
sources—like stakeholders—of the requirements, etc.
3.5 Glossaries
Glossaries are a core means of establishing shared understanding of the terminology Why glossaries
used when developing a system: they help avoid people involved as stakeholders or
developers using and interpreting the same terms in different ways.
A good glossary contains definitions for all terms that are relevant for the system, be Glossary content
they context-specific terms or everyday terms that are used with a special meaning in
the context of the system to be developed. A glossary should also define all
abbreviations and acronyms used. If there are synonyms (that is, different terms
denoting the same thing), they should be marked as such. Homonyms (that is,
identical terms that denote different things) should be avoided or at least marked as
such in the glossary.
There are a couple of rules that guide the creation, use, and maintenance of the Glossary rules
glossary in a system development project.
1. Creation and maintenance. To ensure that the terminology defined in the glossary
is consistent and always up to date, it is vital that the glossary is managed and
maintained centrally over the entire course of a project, with one person or a
small group being responsible for the glossary. When defining terms, it is
important that the stakeholders are involved and agree on the terminology.
2. Usage. In order to get the full benefit of a glossary, its use must be mandatory.
Work products should be checked for proper glossary usage. Obviously, this
means that everybody involved in a project must have read access to the
glossary.
When an organization develops related systems in multiple projects, it makes sense
to create a glossary at the enterprise level in order to achieve consistent terminology
across projects.
Creating, maintaining, and using a glossary consistently avoids errors and
misunderstandings concerning the terminology used. Working with glossaries is a
standard best practice in RE.
It is not sufficient to work with requirements at the level of individual requirements. Documents and
Requirements must be collated and grouped in suitable work products, be they documentation
explicit requirements documents or other RE-related documentation structures structures
(such as a product backlog).
Document templates (see Section 3.3.3) may be used to organize such documents Document templates
with a well-defined structure in order to create a consistent and maintainable
collection of requirements. Document templates are available in literature
[Vole2020], [RoRo2012] and in standards [ISO29148]. Templates may also be reused
from previous, similar projects or may be imposed by a customer. An organization
may also decide to create a document template as an internal standard.
A requirements document may also contain additional information and
explanations—for example, a glossary, acceptance criteria, project information, or
characteristics of the technical implementation.
Frequently used
Frequently used requirements documents are:
documents
Stakeholder requirements specification: the stakeholders’ desires and needs
that shall be satisfied by building a system, seen from the stakeholders’
perspective. When a customer writes a stakeholder requirements
specification, it is called a customer requirements specification.
User requirements specification: a subset of a stakeholder requirements
specification, covering only requirements of stakeholders who are
prospective users of a system.
System requirements specification: the requirements for a system to be built
and its context so that it satisfies its stakeholders’ desires and needs.
Business requirements specification: the business goals, objectives, and needs
of an organization that shall be achieved by employing a system (or a
collection of systems).
Vision document: a conceptual imagination of a future system, describing its
key characteristics and how it will create value for its users.
Frequently used alternative documentation structures are: Frequently used
documentation
Product backlog: a prioritized list of work items, covering all requirements
structures
that are needed and known for the product
Sprint backlog: a selected subset of a product backlog with work items that
will be realized in the next iteration
Story map: a visual two-dimensional organization of user stories in a product
backlog with respect to time and content
There is no standard or universal requirements document or documentation Choosing a proper
structure. Accordingly, documents or documentation structures should not be reused documentation form
from previous projects without reflection. The actual choice depends on several
factors, for example:
The development process chosen
The project type and domain (for example, tailor-made solution, product
development, or standard product customizing)
Obviously, Requirements Engineers should strive to write good requirements that Many approaches
meet given quality criteria. RE literature and standards provide a rich set of such
quality criteria. However, there is no general consensus about which quality criteria
shall be applied for requirements. The set of criteria presented in this subsection aims
to provide a proven practice at foundation level.
Modern RE follows a value-oriented approach to requirements (see Principle 1 in
Chapter 2). Consequently, the degree to which a requirement fulfills the given quality
criteria shall correspond to the value created by this requirement. This has two
important consequences:
Requirements do not have to fully adhere to all quality criteria. No universal fulfillment
Some quality criteria are more important than others.
We distinguish between quality criteria for single requirements and quality criteria
for RE work products such as RE documents or documentation structures.
For single requirements, we recommend using the following quality criteria: Quality criteria for single
requirements
Adequate: the requirement describes true and agreed stakeholder needs.
Necessary: the requirement is part of the relevant system scope, meaning
that it will contribute to the achievement of at least one stakeholder goal or
need.
Unambiguous: there is a true shared understanding of the requirement,
meaning that everybody involved interprets it in the same way.
Complete: the requirement is self-contained, meaning that no parts
necessary for understanding it are missing.
Understandable: the requirement is comprehensible to the target audience,
meaning that the target audience can fully understand the requirement.
Verifiable: the fulfillment of the requirement by an implemented system can
be checked indisputably (so that stakeholders or customers can decide
whether or not a requirement is fulfilled by the implemented system).
Adequacy and understandability are the most important quality criteria. Without
them, a requirement is useless or even detrimental, regardless of the fulfillment of all
other criteria. Verifiability is important when the system implemented must undergo
a formal acceptance procedure.
Some people use correctness instead of adequacy. However, the notion of correctness
implies that there is a formal procedure for deciding whether something is correct or
not. As there is no formal procedure for validating a documented requirement against
the desires and needs that stakeholders have in mind, we prefer the term adequacy
over correctness.
Handbook for the CPRE Certified Professional for Requirements Engineering
Foundation Level - Version 1.0.0 Page 61/139
For work products covering multiple requirements, we recommend applying the Quality criteria for RE
following quality criteria: work products
Consistent: no two requirements, recorded in a single work product or in
different work products, contradict each other.
Non-redundant: each requirement is documented only once and does not
overlap with another requirement.
Complete: the work product contains all relevant requirements (functional
requirements, quality requirements, and constraints) that are known at this
point in time and that are related to this work product.
Modifiable: the work product is set up in such a way that it can be modified
without degrading its quality.
Traceable: the requirements in the work product can be traced back to their
origins, forward to their implementation (in design, code, and test), and to
other requirements they depend on.
Conformant: if there are mandatory structuring or formatting instructions,
the work product must conform to them.
Mavin et al. [MWHN2009] introduce and describe the EARS template. Robertson and
Robertson [RoRo2012] describe the Volere templates. Goetz and Rupp [GoRu2003],
[Rupp2014] discuss rules and pitfalls for writing requirements in natural language.
Cockburn [Cock2001] has written an entire book about how to write use cases.
Lauesen [Laue2002] discusses task descriptions and also provides some examples of
real-world RE work products.
The ISO/IEC/IEEE standard 29148 [ISO29148] provides many resources concerning
RE work products: phrase templates, quality criteria for requirements, and detailed
descriptions of the content of various RE work products, including a document
template for every work product. Cohn [Cohn2010] has a chapter on how to frame
requirements in a product backlog.
Gregory [Greg2016] and Glinz [Glin2016] discuss the problem of how detailed
requirements should be specified and to what extent complete and unambiguous
requirements specifications are possible.
Numerous publications deal with using models to specify requirements. The UML
specification [OMG2017], as well as textbooks about UML, describe the models
available in UML. Hofer and Schwentner [HoSch2020] introduce domain modeling
with domain storytelling. [OMG2013] and [OMG2018] describe the modeling
languages BPMN for modeling business processes and SysML for modeling systems,
respectively. The books by Booch, Rumbaugh, and Jacobson [BoRJ2005], [JaSB2011],
[RuJB2004] give more depth and (practical) applications of UML. Furthermore, the
following books and articles are recommended for more thorough knowledge and
patterns in modeling requirements: [DaTW2012], [Davi1993], [Fowl1996],
[GHJV1994]. [LiSS1994] and [Pohl2010] provide a better understanding of the quality
aspects of models.
Requirements are not like candy bars, lying on the shelf for everyone to pick them as
they please. In the introduction to this chapter, we compared requirements with
water to be drawn from a well: it is quite an effort to bring them to the surface.
Therefore, the first problem that a Requirements Engineer will face is “Where are the
wells?” As no requirement comes without a source, one of the first activities in
requirements elicitation is to identify the potential sources. It is not enough to identify
these sources only at the beginning of a project or product development; this is a
process that will be repeated over and over again.
Maintaining a good, open relationship with the stakeholders is key to getting relevant Respect
information from them. This relies primarily on behavioral characteristics such as
integrity, honesty, and respect.
Every system that we develop will have some interaction with certain users; why else
would you develop it? Of course, when you are working on the requirements for an
embedded technical subsystem, hidden inside some kind of complicated machinery,
users will only interact with it indirectly through several layers of surrounding
systems. In such cases, these users will not be your most important sources of
requirements. However, in many systems, specific human beings will have a direct
interface with the system: the users. Their acceptance of the system is vital to the
success of the project, so they are your prime interest and will receive special
attention during all Requirements Engineering.
There are two major categories of users:
Internal users are directly related to the organization for which the system is
being developed, such as staff, management, subcontractors. They are
mostly limited in number, more or less known individually, and somehow
involved in the project. It is relatively easy to contact them and they can be
reached, influenced, and motivated through formal, existing channels.
4.1.2 Documents
You can also consider other systems as sources for requirements of the system you
are interested in. Here, you can make a distinction between internal and external
systems, just as in documentation and with the same considerations about access and
confidentiality. Another distinction is that of similar systems versus interfacing
systems.
Similar systems have certain functionalities in common with the system to be Similar systems
developed. They may be predecessor or legacy systems, competitor systems,
comparable systems used in other organizations, etc. You often study them through
their documentation but sometimes you can observe them in action or try them out
as if they were a kind of prototype. You may be able to contact their users to learn
more about the functionalities and solutions of such systems. Predecessor or legacy
systems are often a good source for identifying detailed (functional and quality)
requirements and constraints.
Handbook for the CPRE Certified Professional for Requirements Engineering
Foundation Level - Version 1.0.0 Page 71/139
However, be aware that (especially technical) constraints from the past may not be
relevant anymore and may no longer restrict your current solution space.
Sometimes, a new system and a legacy system will coexist during a certain period,
leading to additional requirements—for instance, with regard to data sharing.
Competitor and comparable systems may be studied for their solution characteristics
and can be a good source for identifying delighters (see Section 4.2.1).
Interfacing systems will have a direct relationship with the system for which you are Interfacing systems
developing the requirements. They will exchange data with your system as a source
and/or a sink though some (synchronous or asynchronous, in real time or in batch)
interface (see also Section 3.4.2 on system interfaces in context modeling). The
correct configuration, content, and behavior of such an interface is often essential for
ensuring that your system works, and you will therefore have to understand the
system in detail. You can study interfacing systems through their documentation, but
as every (technical) detail is important here, simulation or testing may be necessary.
With regard to older or legacy systems in particular, you cannot trust their
documentation to be up to date so you will need some proof. To understand an
interface, you will also have to understand the context, functionality, and behavior of
the interfacing system. It will be helpful if you can contact application managers,
architects, or designers of such systems, especially if the interfacing system itself has
to be updated to allow for the new interface. Also be aware that an interfacing system
will itself have users; it may be interesting to consider these users as stakeholders in
Alexander’s wider environment of your own system.
If we continue the analogy of water being drawn from a well, we are now at the point
that we have found the well and we start pulling the rope to get the bucket full of the
required water (or in this case requirements) to the surface. That is what we call
elicitation: the effort expended by the Requirements Engineer to turn implicit desires,
demands, wishes, needs, expectations—which until now were hidden in their
sources—into explicit, understandable, recognizable, and verifiable requirements. Of
course, we will have to use all wells to be complete and pull the rope in the right way
to make sure that we get all the water to the surface. In Requirements Engineering
terminology, we say that we should apply the right elicitation techniques.
A common categorization of elicitation techniques is the distinction between:
Gathering techniques
Design and idea-generating techniques
From these categories, you can select a wide range of elicitation techniques, each with
their own characteristics. Figure 4.4 gives an overview of elicitation techniques in
their categories and subcategories.
A critical key competence of the Requirements Engineer is the ability to choose the
right (mix of) techniques under the given circumstances. Picking the right ones may
depend on many factors, such as:
Type of system Selecting the right
A completely new innovative system will benefit more from creativity technique
techniques, while a replacement system in a safety-critical environment may
need questioning techniques and system archaeology.
Software development life cycle model
In a waterfall project, you may have planned for extensive techniques such as
apprenticing or analogies, while in an agile environment, brainstorming,
storyboarding, and prototyping may prevail.
People involved
For instance, field observation will probably not be appreciated in highly
confidential businesses; a comprehensive survey may be preferred over a
high number of individual interviews.
Organizational setup
A solid government organization needs a totally different approach to a young
startup; a dispersed, highly decentralized company needs a different
approach to a compact company with a single location.
The best results are usually achieved with a combination of different elicitation
techniques. For a systematic approach to selecting them, see [CaDJ2014].
Elicitation techniques are—or at least, should be—able to detect all kinds of Quality requirements
requirements. In Requirements Engineering practice, however, explicit functional and constraints
requirements are often overrated, and the more implicit quality requirements and
constraints get less attention.
This may result in a system that—with all functional requirements being fulfilled—
does not perform, has poor usability, does not comply with architectural guidelines,
or fails to meet certain other quality requirements or constraints, and consequently
will not be accepted.
One of the major circumstances to consider in selecting an elicitation technique is the Kano model
nature and the importance of a requirement that we are trying to uncover. To gain
more insight into the nature of certain requirements, the Kano model [Verd2014]
comes in handy. This model, shown in Figure 4.5, classifies features of a system into
three categories:
Delighters (synonyms: excitement factors, unconscious requirements)
A delighter is a feature that customers are not aware of; that is why we call
them unconscious. The customers do not ask for the feature because they do
not know that it is possible in the system—for instance, a smartphone that can
be turned into a beamer. At first, when the feature is new on the market, most
customers will have their doubts about it, but when some early adopters have
tried it out and start spreading the word, more and more people want to have
it. If a delighter is absent, no one will complain; but when present, this can be
a differentiating feature that attracts lots of customers.
Satisfiers (synonyms: performance factors, conscious requirements)
A satisfier is something that the customers explicitly ask for (hence conscious
requirements). The more satisfiers you can put into your system, the higher
the satisfaction of the customers will be. An example could be the number of
lenses and video options in a modern smartphone. Because adding satisfying
features usually also means higher costs, you will often need a kind of
cost/benefit analysis to decide how many of them will be incorporated in the
system.
Dissatisfiers (synonyms: basic factors, subconscious requirements)
A dissatisfier is also a feature that the customers do not ask for. Here,
however, the reason for not asking for it is that the feature is so obvious
(subconscious) that the customers cannot imagine it not being part of the
system; these features are tacitly considered as must-haves. Imagine a
smartphone without GPS. If a dissatisfier is included as a feature of a system,
customers will not notice it because they think the system cannot exist
without it. However, if you overlook such a requirement and leave it out of the
system, customers will be very upset and will refuse to use the system.
In fact, the original Kano model contains two more categories, the indifferent (or I
don’t care) and the reject (or I hate) requirements. These categories do not get much
attention in most Requirements Engineering handbooks but can still be useful for you
as a Requirements Engineer. Suppose, for instance, that developers want to add a
certain feature to the system for technical reasons. If, after analysis, you find that the
customers are indifferent to this feature, it is safe to include it in the system. However,
if it turns out to be a reject requirement, you should tell the developers to look for a
less harmful alternative, as implementing this requirement can turn out to be a costly
mistake.
One interesting observation when working with the Kano model is that requirements
tend to change over time. If someone introduces a new feature, there is no certainty
about how the market will react to that feature. Sometimes, customers will be
indifferent to it, and the feature will survive only if it does not increase the price of
the product.
How can you categorize a specific feature? You use the technique of Kano analysis. Kano analysis matrix
For a specific feature, you ask two questions to a representative group of potential
users: (1) “What would you feel if this feature were present in the system?” and (2)
“What would you feel if this feature were absent from the system?” You let them score
the answers on a 5-point scale between “I love it” and “I hate it” and then plot the
average answer on the Kano analysis matrix as shown in Figure 4.6. The cell that
comes up gives you the Kano classification for the feature.
The next question is: why bother with Kano analysis in requirements elicitation?
With gathering techniques, you examine the different sources that you have identified
and elicit the requirements from there. These established techniques have been
commonly used throughout Requirements Engineering and predominantly yield
satisfiers and dissatisfiers.
Gathering techniques can be further subdivided into four categories:
Questioning techniques
Collaboration techniques
Observation techniques
Artifact-based techniques
Questioning techniques are always used in an interaction with stakeholders. The Questioning techniques
Requirements Engineer poses appropriate questions to the stakeholders in order to
let the stakeholder do the thinking and to receive answers from which requirements
can be derived. Examples of questioning techniques are:
Interview: Due to their flexibility, interviews are probably one of the most
frequently used elicitation techniques. They do not require specific tools and
can be used to elicit high-level requirements as well as very specific ones.
Usually, an interview is a one-to-one session between a Requirements
Engineer (interviewer) and an individual stakeholder (interviewee), but a
small group of interviewees is also an option. Typically, requirements elicited
with an interview are satisfiers, as the interviewee voices conscious
information. The interview technique is not overly complicated and most
people have a good understanding of what it is. However, you need clear goals
and good preparation to obtain useful results. Interviews can reveal detailed
information and offer flexibility based on the answers given. They are rather
time-consuming, so this technique is less appropriate when you want to reach
large numbers of stakeholders.
Questionnaire: With a questionnaire, a larger group of stakeholders is asked to
answer—orally, in writing, or on a web page—the same set of questions,
which are presented in a structured way. Quantitative questionnaires are
used to confirm hypotheses or previously elicited requirements. They use
closed-ended questions (only predefined answers allowed) and can therefore
be evaluated quickly and deliver statistical information. On the other hand,
qualitative questionnaires use open-ended questions and can find new
requirements. They tend to deliver complex results and are thus usually more
time-consuming to prepare and to evaluate. In general, questionnaires are a
preferred technique for large groups. Be aware, however, that designing a
good questionnaire involves quite a lot of effort. A questionnaire is often the
next step after obtaining a preliminary idea based on a series of interviews in
order to validate these ideas within a larger group.
In the past, Requirements Engineering has focused on gathering and documenting the Design and idea-
necessary requirements from all relevant stakeholders by applying gathering generating techniques
techniques as introduced in the previous section. The growing influence of software
as an innovation driver in many businesses is now increasingly demanding a new
positioning of Requirements Engineering as a creative, problem-solving activity. This
involves the application of other techniques that no longer consider stakeholders
(and their documents and systems) the one and only source of requirements.
Innovative systems need new, maybe disruptive features that the current
stakeholders cannot imagine (yet).
Design and idea-generating techniques have emerged to fulfill this need. These
techniques promote creativity, mostly within teams, for the generation of ideas and
may provide additional ways to elaborate a given idea. These techniques can find new
requirements that are often delighters. Many diverse techniques exist within this
broad category, some remarkably simple, others quite elaborate. We will look at a few
examples from two subcategories:
Creativity techniques
Design techniques
Several preconditions have been identified as important factors for creativity to Preconditions
emerge:
Chance—and therefore time—for an idea to come up
Knowledge of the subject matter, which raises the odds for an idea that makes
the difference
Motivation, as our brain can only be creative if there is a direct benefit for its
owner
Safety and security, as useless ideas must not have negative consequences
Two examples of creativity techniques are presented here: Examples of creativity
techniques
Brainstorming
Brainstorming (see [Osbo1948]) supports the development of new ideas for a
given question or problem. As with most creativity techniques, the crucial
point of brainstorming is to defer judgment by separating the finding of ideas
from the analysis of ideas. Some general guidelines for brainstorming include:
o Quantity prevails over quality.
o Free association and visionary thinking are explicitly desired.
o Taking on and combining expressed ideas is allowed and desired.
o Criticizing other participants’ ideas is forbidden even if an idea seems to
be absurd.
After a brainstorming session, the ideas that have emerged are categorized,
assessed, and prioritized. Selected ideas then serve as input for further
elicitation.
Design thinking is not so much a technique but rather a concept, an attitude, a Design thinking
philosophy, a family of processes, and often a toolbox full of techniques. The focus is
on innovation and problem solving. Several variants of design thinking exist, mostly
using lightweight, visual, and agile techniques. Two basic principles can be found in
all variants:
Empathy
The first step for design thinkers is to find the real problem behind the given
problem. They try to understand what stakeholders really think, feel, and do
when they interact with a system. Therefore, we often refer to design thinking
as human-centered design. Personas, empathy mapping, and customer co-
creation are common techniques to this end.
Creativity
A common characteristic of design thinking is the diamond: the alternation of
divergent and convergent thinking. Divergent thinking aims at exploring an
issue more widely and deeply, generating lots of different ideas, and
convergent thinking focuses, selects, prunes, combines these ideas into a
single final delivery. A basic pattern, the double diamond model, is shown in
Figure 4.8 (see [DeCo2007]).
A detailed treatment of design thinking is beyond the scope of this Foundation Level
Handbook.
During elicitation, you gather a broad collection of requirements from different Resolving Conflicts
sources, with different techniques, and at different levels of abstraction and detail.
The elicitation techniques that you use do not guarantee by themselves that this
collection as a whole forms a single, consistent, agreed upon set of requirements that
captures the essence of the system. Both during and after elicitation of a set of
requirements for a certain system, you may find out that some of the requirements
are conflicting: they may be inconsistent, incompatible, contradictory. It might be that
requirements conflict with each other (e.g., “all text must be black on white” versus
“all error messages must be red”) or that some stakeholders have a different opinion
about the same requirement (e.g., “all error messages must be red” versus “user error
messages must be red, all other error messages blue”). As we cannot develop a
(specific part of a) system based on conflicting requirements, the conflicts must be
resolved before development can start. As a Requirements Engineer, you are the one
who should make sure that all stakeholders arrive at a shared understanding (see
Chapter 2, Principle 3) of the complete set of requirements as far as they are relevant
to them and that they agree on this set.
But what is a conflict? A conflict is a certain disagreement between people: “An Conflict
interaction between agents (individuals, groups, organizations, etc.), where at least
one agent perceives incompatibilities between her thinking/ideas/perceptions
and/or feelings and/or will and that of the other agent (or agents), and feels restricted
by the other’s action” [Glas1999]. In a requirements conflict, two or more
stakeholders have a different or even contradictory opinion regarding a certain
requirement or their requirements cannot be implemented in a certain system at the
same time; see Figure 4.9.
To resolve a requirements conflict properly, the following steps should be followed: Steps to resolve conflicts
Conflict identification
We often have conflicts in our everyday life. They give us an unpleasant
feeling, so a common strategy is simply to avoid, ignore, or deny them. That
may make conflicts hard to find. Most of them tend to be hidden and can only
be detected by careful observation. There are many indicators that you can
pay attention to, both in communication and in documentation:
o In communication, you may observe behavior such as denial, indifference,
pedantry, continuously asking for more details, deliberately incorrect
interpretations, concealment, or delegation.
o In documentation, you may find things such as contradictory statements
by stakeholders, conflicting results from analysis of documents or systems,
inconsistencies across different levels of detail, and inconsistent use of
terms.
If you observe such indicators, this does not necessarily mean that there is a
requirements conflict, but you should certainly be suspicious. Thorough
discussion with the stakeholders can then bring a hidden conflict to the
surface.
Depending on the type and the context (stakeholders, constraints, etc.) of a conflict, a
proper resolution technique is selected. Commonly used techniques include
[PoRu2015]:
Agreement Agreement
An agreement results from a
discussion between the
stakeholders involved, to be
continued until they completely
understand each other’s
positions and agree to a certain
option preferred by all parties. It
can be very time-consuming,
especially when multiple parties
are involved. If successful, it will
provide additional motivation to
the stakeholders, so the result
has a good chance of being long
lasting. Striving to reach an
agreement is common in data conflicts. If this technique is unsuccessful within
an acceptable timeframe, other techniques can be used thereafter.
Alternative 1: Alternative 2:
iPhone only Android & iPhone
Criterion Weight Score Weighted Score Weighted
Cust. base 2 3 6 4 8
Dev. cost 1 3 3 2 2
T.t. market 3 4 12 2 6
Reputation 2 2 4 4 8
User exp. 1 5 5 3 3
Total 30 27
Validation adds time and cost to the project, so its efficiency and effectiveness should Continuous
be a concern of the Requirements Engineer. Therefore, it is important to continuously improvement
monitor and analyze defects that occur during development and in operation. If the
root cause of such defects appears to be in the requirements, the requirements
validation process has somehow failed. Therefore, as a Requirements Engineer, you
should continuously and actively look for opportunities to improve it.
Regarding the concept of validation, certain aspects are important to get the
maximum value from it (see also [PoRu2015]):
Involving the correct stakeholders Aspects for validation
As a Requirements Engineer, you need to decide who you want to invite to
participate in the validation. In this respect, one important aspect that you
have to consider is the degree of independence between the people involved
in the elicitation of the requirements and those validating them. A low level of
independence (inviting stakeholders who have already participated in the
elicitation) is cheap and easy to organize but may overlook certain defects
because of the own focus, blind spots, conflicting interests, or flawed
assumptions of these persons. A higher degree of independence (for instance,
by inviting external reviewers or auditors) takes more time and effort to
organize and perform and brings higher (initial) costs but may in the long run
be more effective in finding more and more severe defects. Consequently,
higher risk in the project scope and/or the system context asks for a higher
degree of independence.
As for other techniques, the Requirements Engineer can choose from a large toolbox Validation techniques
of validation techniques that differ in formality and effort. Many factors influence the
selection of these techniques—for instance, the software development life cycle
model, the maturity of the development process, the complexity and risk level of the
system, legal or regulatory requirements, and the need for an audit trail.
Often, in the course of a project, the degree of effort and formality increases towards
the end, as final decisions about the system and its implementation have to be taken.
Also, you will see that the amount, value, and level of detail of feedback from the
stakeholders increase as the work products to be validated become more concrete
and detailed. This entails the application of different validation techniques in different
stages of the project. At the beginning of a project, frequent short, lightweight
validation and feedback cycles are preferred, as is usual in agile approaches. This
ensures quality right from the start. Later in the project, more formal and time-
consuming one-off techniques will prevail.
In general, we discern three categories of validation techniques (see Figure 4.11):
Review techniques
Exploratory techniques
Sample development
Review techniques and sample development are called static, as they concentrate on Static vs dynamic
analyzing the specifications of a system without executing it. In exploratory
techniques, the validation focuses on the actual (or simulated) behavior of the system
in operation; these techniques are called dynamic.
Glinz and Wieringa [GlWi2007] explain the notion and importance of stakeholders.
Alexander [Alex2005] discusses how to classify stakeholders. Bourne [Bour2009]
deals with stakeholder management. Lim, Quercia and Finkelstein [LiQF2010]
investigate the use of social networks for stakeholder analysis. Humphrey
[Hump2017] discusses user personas.
Zowghi and Coulin [ZoCo2005] present an overview of requirements elicitation
techniques. Gottesdiener [Gott2002] has written a classic textbook on workshops in
RE. Carrizo, Dieste and Juristo [CaDJ2014] investigate the selection of adequate
elicitation techniques.
Maalej, Nayebi, Johann and Ruhe [MNJR2016] discuss the use of explicit and implicit
user feedback for eliciting requirements. Maiden, Gitzikis and Robertson [MaGR2004]
discuss how creativity can foster innovation in RE.
The book by Moore [Moor2014] is a classic about conflict management. Glasl
[Glas1999] discusses how to handle conflicts. Grünbacher and Seyff [GrSe2005]
discuss how to achieve agreement by negotiating requirements when validating
requirements or resolving conflicts.
Validation is covered in any RE textbook; see [Pohl2010], for example.
Whenever work has to be done in a systematic way, a process is required to shape and Process
structure the way of working and the creation of work products.
DEFINITION 5.1. PROCESS: A set of interrelated activities performed in a given order to
process information or materials.
A Requirements Engineering (RE) process organizes how RE tasks are performed Need for a tailored RE
using appropriate practices and producing work products required. However, there process
is no proven, one-size-fits-all RE process (see Section 1.4). Consequently,
Requirements Engineers have to configure a tailored RE process that fits the given
situation.
The RE process shapes the information flow and the communication model between Shapes information flow
the participants involved in RE (for example, customers, users, Requirements and communication
Engineers, developers, and testers). It also defines the RE work products to be used
or produced. A proper RE process provides the framework in which Requirements
Engineers elicit, document, validate, and manage requirements.
In this chapter, you will learn about the factors that influence the RE process and how
to configure an appropriate process from a set of process facets.
Defining the RE process from scratch for every RE undertaking is a waste of effort. Overview of process
Whenever the influencing factors allow it, the process should be configured from pre- facets
existing elements. In order to provide guidance on how to configure a proper RE
process, we describe three facets with two instances each, together with selection
criteria to be considered for each instance [Glin2019]. Later, in Section 5.3, we use
these facets to configure RE processes.
Figure 5.1 shows an overview of the facets and instances.
The time facet deals with the organization of RE activities on a time scale. We
distinguish between linear and iterative processes.
In a linear RE process, requirements are specified up front in a single phase of the Linear
process. The idea is to produce a comprehensive requirements specification that
requires no or only little adaptation or few changes during the design and
implementation of the system. Creating a comprehensive requirements specification
up front calls for a comprehensive process. Thus, in most cases, linear RE processes
are heavyweight processes.
Criteria for choosing a linear RE process:
The development process for the system is plan-driven and mostly linear.
The stakeholders are available, know their requirements, and can specify
them up front.
A comprehensive requirements specification is required as a contractual
basis for outsourcing or tendering the design and implementation of the
system.
Regulatory authorities require a comprehensive, formally released
requirements specification at an early stage of the development.
In an iterative RE process, requirements are specified incrementally, starting with Iterative
general goals and some initial requirements and then adding or modifying
requirements in every iteration. The idea is to intertwine the specification of
requirements with the design and implementation of the system. Due to short
feedback loops and the ability to accommodate change or things forgotten in later
iterations, iterative RE processes can be lightweight processes.
Criteria for choosing an iterative RE process:
The development process for the system is iterative and agile.
Many requirements are not known up front but will emerge and evolve
during the development of the system.
Stakeholders are available such that short feedback loops can be established
as a means of mitigating the risk of developing the wrong system.
The duration of the development allows for more than just one or two
iterations.
The ability to change requirements easily is important.
The purpose facet deals with the purpose and role of the requirements in the
development of a system. We distinguish between prescriptive and explorative RE
processes.
The target facet considers the development type: which kind of development do we
target with the RE process? On an elementary level, we distinguish between
customer-specific and market-oriented RE processes.
In a customer-specific RE process, the system is ordered by a customer and developed Customer-specific
by a supplier for this customer. Note that the supplier and the customer may be part
of the same organization. The idea is that the RE process reflects the customer-
supplier relationship.
Criteria for choosing a customer-specific RE process:
The system will be used mainly by the organization that has ordered the
system and pays for its development.
The important stakeholders are mainly associated with the customer’s
organization.
Individual persons can be identified for the stakeholder roles.
The customer wants a requirements specification that can serve as a
contract.
In a market-oriented RE process, the system is developed as a product or service for a Market-oriented
market, targeting specific user segments. The idea is that the organization that
develops the system also drives the RE process.
Criteria for choosing a market-oriented RE process:
The developing organization or one of its clients intends to sell the system as
a product or service in some market segment.
It is important to note that the criteria given above are heuristics. They should not be Heuristics, no rules
considered as a set fixed rules that always apply. For example, outsourcing the
development of the system is done preferably with a prescriptive RE process rather
than with an explorative one. This is because the contract between the customer and
the supplier is typically based on a comprehensive requirements specification.
However, it is also possible to negotiate an outsourcing contract based on an
explorative RE process.
There may be prerequisites for choosing certain instances of process facets or the Prerequisites and
choice may entail consequences that have to be considered. Here are some examples: consequences
Linear RE processes work only if a sophisticated process for changing
requirements is in place.
Linear RE processes imply long feedback loops: it may take months or even
years from writing a requirement until its effects are observed in the
implemented system. To mitigate the risk of developing the wrong system,
requirements must be validated intensively when using a linear RE process.
In a market-oriented process, feedback from potential users is the only
means of validating whether the product will actually satisfy the needs of the
user segment targeted.
In an agile setting, an iterative and explorative RE process fits best.
Iterations have a fixed length (typically 2-6 weeks). The product owner plays
a core role in the RE process, coordinating the stakeholders, organizing the
RE work products, and communicating the requirements to the development
team.
The three facets mentioned above are not fully independent: the choice made for one Mutual influence
facet may influence what can or should be chosen in other ones. Here are some
examples:
Linear and prescriptive are frequently chosen together, which means that
when Requirements Engineers decide on a linear RE process, they typically
decide on a process that is both linear and prescriptive.
Explorative RE processes are typically also iterative processes (and vice
versa).
A market-oriented RE process does not combine well with a linear and
prescriptive process.
The degree to which an RE process must be established and followed, as well as the Shared understanding
volume of requirements work products to be produced in this process, depends on and criticality
the degree of shared understanding and also on the criticality of the system.
Handbook for the CPRE Certified Professional for Requirements Engineering
Foundation Level - Version 1.0.0 Page 105/139
The better the shared understanding and the lower the criticality, the simpler and
more lightweight the RE process can be.
When there is little time and budget available for RE, the resources available must be Time and budget
used carefully. Choosing an iterative and explorative process helps. Furthermore, the
process should focus on identifying and dealing with those requirements that are
critical for the success of the system.
Finally, the RE process should fit the experience of the Requirements Engineers. The Experience of
lower their skills and experience, the simpler the RE process should be made—it does Requirements Engineers
not make sense to define a sophisticated process when the people involved cannot
enact this process properly.
In a concrete system development context, Requirements Engineers or the person(s) Process configurations
responsible for RE have to choose the RE process to be applied. We recommend
analyzing the influencing factors (see Section 5.1) first and then selecting a suitable
combination of the process facets described in Section 5.2.
Figure 5.2 Three typical RE process configurations and their relationship to the three facets
The three combinations described above cover many of the situations that occur in Special cases need
practice. However, there may be situations where none of the aforementioned special RE processes
process configurations fit. For example, regulatory constraints may impose the use of
a process that conforms to a given standard, such as ISO/IEC/IEEE 29148 [ISO29148].
In such a case, the RE process has to be created by process experts from scratch or
one of the aforementioned configurations has to be tailored so that it is adapted to the
given situation.
Requirements are not carved in stone, eternally present from past to future; they are
alive! They are born through elicitation, grow up through documentation, and are
shaped through validation. As adults, they go to work through implementation and
after a—hopefully—long and prosperous life in operation, they retire in oblivion.
Throughout their life cycle, their parents, the Requirements Engineers, take care of
them. We nurse them in their infancy, teach them in their youth, escort them in their
relationships, and help them find a good job in a healthy system. That is what we call
requirements management.
Of course, there are better, more formal, definitions of requirements management.
The ISO/IEC/IEEE 29148:2018 [ISO29148] standard defines requirements
management as "activities that identify, document, maintain, communicate, trace and
track requirements throughout the life cycle of a system, product or service.". In the
CPRE glossary [Glin2020], requirements management is defined as “The process of
managing existing requirements and requirements related work products, including the
storing, changing and tracing of requirements.”. The CPRE glossary also tells us that
requirements management is an integral part of Requirements Engineering: “The
systematic and disciplined approach to the specification and management of
requirements with the goal of …”.
Requirements management can occur at different levels: Requirements
management occurs at
The individual requirements
different levels
The work products that contain these requirements
The system related to the work products and the requirements contained
therein
In practice, requirements management is primarily performed at the work product
level. Usually a work product contains several individual requirements (e.g. an
external interface description), while other work products contain only a single
requirement (e.g. a single user story in an agile project) or they represent the whole
set of requirements for a system (e.g. software requirements specification). Be aware
that all work products of all three levels must be managed, and make sure that you
know the relationships between them.
The text above outlines the what of requirements management. The rest of this What versus how
chapter is devoted to the how: all kinds of practices that are applicable to make
requirements management work. Before we dive into the details of requirements
management, let us consider some leading principles for making it work. If you want
to manage something, you must be able to recognize it, to store it, and to find it again.
Therefore, unique identification, an appropriate degree of standardization, avoidance
of redundancy, a central repository, and managed access are a must.
In Section 6.1, we take a short look at situations that influence the value, importance,
and effort involved in requirements management.
Section 6.2 follows the requirements in their life cycle as part of work products that
Requirements Engineers and other IT staff produce and use while developing,
implementing, and operating an IT system.
During the lifecycle of a requirement, multiple versions of work products (and the
requirements they contain) are created, starting with an early 0.1 draft that, after a
series of major and minor changes, evolves into, say, a 3.2 final version. Version
control is discussed in Section 6.3.
In the introduction, we have already seen that requirements management means the
management of existing requirements and requirements-related work products,
including storing, changing, and tracing the requirements. But why manage them at
all?
We manage requirements because they are living things; they are created, used,
updated, and deleted again during both their development and operation. And during
this whole life cycle, we must make sure that all parties involved have access to the
correct versions of all requirements that are relevant to them. If we do not manage
requirements properly, we face the risk that some parties may overlook
requirements, stick to outdated requirements, work with wrong versions, overlook
relationships, and so on. This can seriously hinder the efficiency and effectiveness of
system development and usage. In other words: the value of proper requirements
management lies in the improved efficiency and effectiveness of a system.
This means that the value of requirements management cannot be separated from the Value of requirements
value of the system in question and its context. In practice, we can see huge management
differences in the importance and level of requirements management and the effort
involved [Rupp2014], ranging from an informal subsidiary task of a Requirements
Engineer with a spreadsheet, to a full-time function of a dedicated requirements
manager with a tool-supported database of requirements.
More thorough requirements management is needed with larger numbers of require-
ments, stakeholders, and developers, with a longer expected lifetime, more changes
or higher quality demands on the system, and with a more complex development
process, more strict standards, norms, and regulations, including the need for a
detailed audit trail.
As stated in the introduction, requirements and work products that contain Life cycle management
requirements have a life. We see them being created, elaborated, validated, of requirements and
consolidated, implemented, used, changed, maintained, reworked, refactored, retired, work products
archived, and/or deleted. That is what we mean by their life cycle: during its life, a
requirement can be in a limited number of states and can show a limited number of
state transitions based on explicit events in the context. Figure 6.1 shows a simplified
statechart as a model for the life cycle of a single requirement (overview only, state
transitions are not shown; for instance, the transition from the composite state Under
development to In production may be triggered by a go-live decision from the product
owner).
A complicating factor is that work products and individual requirements have their
own different life cycles that only partially overlap. As an example, think of a work
product definition study in the state under change; this does not necessarily mean that
all requirements contained in the work product have to be changed. And for the same
definition study, the state implemented makes no sense; only some requirements in it
will be implemented—or better: certain code, based on these requirements.
It is common for both, work products and individual requirements as part of a work
product, to undergo certain changes during their life cycle (see Section 6.7 for more
information on handling these changes). After every change, the work product is
different to what it was before: it has become a new version.
Suppose you preserve, as advised above, all versions of all requirements that you
develop during a project. You will then have an ever-expanding database filled with
requirements and you will start to lose the overview. One day, your client comes to
your desk and asks: “We have implemented your system at all our branches. Now
there seems to be a problem with the calculations in our Barcelona office. Can you tell
me what version of the calculation requirements they use there?” If you cannot
answer that question, you will wish that you had paid more attention to configuration
management.
So, what is a configuration? You will find a definition in the CPRE glossary [Glin2020] Configuration
but in short, for a Requirements Engineer, a configuration is a consistent set of
logically related work products that contain requirements. We select this set with a
specific purpose, usually to make clear which requirements are or were valid in a
certain situation.
This sets the following properties for a correct configuration: Properties for
Configurations
Logically connected. The set of requirements in the configuration belongs
together in view of a certain goal.
Consistent. The set of requirements has no internal conflicts and can be
integrated in a system.
Unique. Both the configuration itself and its constituent requirements are
clearly and uniquely identified.
Unchangeable. The configuration is composed of selected requirements, each
with a specific version that will never be changed in this configuration.
Basis for reset. The configuration allows fallback to a previous configuration if
any undesired changes appear to have occurred.
A configuration is documented as a work product, with a unique identification, a state,
and a version number and date, just like any other work product. However, because
a configuration is by definition unchangeable, it will always have only one version
(e.g., 1.0).
A configuration always has two dimensions [CoWe1998]: Dimensions of
Configurations
The product dimension. This indicates which requirements are included in
this specific configuration. Sometimes, a configuration will contain all
available requirements but usually, it is a certain selection—for instance, all
requirements that are implemented in the French release of a system. The
British release of the same system might then have a different configuration.
The left-hand picture shows the configuration that is currently in production. It consists
of R1 v2.0, R2 v1.0, R3 v1.2 (this requirement had two minor updates after
implementation), R5 v2.0, R7 v1.0, and R9 v1.0. R4, R6, and R8, being under development,
are not present in this configuration, nor are the new versions of R7 and R9.
The right-hand picture shows the configuration that, at the same time, is present in the
system test environment. Some requirements (R1, R2) are the same, some are no longer
present (R3, R5), the requirements under development (R4, R6, and R8) are included here,
and two requirements (R7 and R9) are present in a higher version than in the
configuration of the production environment.
In many projects some configurations are treated in a special way: these Baseline
configurations are called baselines. A baseline is a stable, validated, and change-
controlled configuration that marks a milestone or another kind of resting point in the
project. An example can be the configuration at the end of the design phase, just
before starting the coding phase, or the configuration that is valid at the go-live of a
certain release.
Handbook for the CPRE Certified Professional for Requirements Engineering
Foundation Level - Version 1.0.0 Page 117/139
The sprint backlog in an agile project serves as the baseline at the start of the next
iteration. Baselines are useful for planning purposes as they represent a stable
starting point for a next phase. They are often frozen and set aside as an anchor in the
hectic life of a project. If something goes terribly wrong in the project, the team can
perform a roll-back to the situation of the baseline and restart from there.
For the Requirements Engineer, it is mainly the configuration of work products Not only requirements
containing requirements that is important. But in practice, the configuration within a
project has a much broader scope, containing selected versions of the work products
of all team members, such as requirements, designs, code and test cases. In complex
projects, configuration management can be a full-time job, performed with dedicated
tooling.
6.6 Traceability
Throughout this handbook, we have mentioned the topic of traceability [GoFi1994]. Traceability
Without proper traceability, Requirements Engineering is hardly feasible, as you
cannot do the following:
Provide evidence that a certain requirement is satisfied
Prove that a requirement has been implemented and by what means
Show product compliance with applicable laws and standards
Look for missing work products (e.g., find out whether test cases exist for all
requirements)
Analyze the effects of a change to requirements (see Section 6.7)
In many cases, especially for safety-critical systems, process standards even explicitly
demand the implementation of traceability.
There are three types of questions that can be answered with the aid of traceability Types of traceability
(see also Figure 6.4):
Backward traceability: What was the origin of a certain requirement? Where
was it found? Which sources (stakeholders, documents, other systems) were
analyzed during elicitation?
Handbook for the CPRE Certified Professional for Requirements Engineering
Foundation Level - Version 1.0.0 Page 120/139
Backward traceability is as well-known as pre-requirements specification
traceability.
Forward traceability: Where is this requirement used? Which deliverables
(coded modules, test cases, procedures, manuals) are based on it?
Forward traceability is as well-known as post-requirements specification
traceability.
Traceability between requirements: Do other requirements depend on this
requirement or vice versa (e.g., quality requirements related to a functional
requirement)? Is the requirement a refinement of a higher-level requirement
(e.g., an epic refined in a number of user stories, a user story detailed with a
number of acceptance criteria)? How are they related?
There are several ways of documenting traceability. Often, this is done implicitly—for
instance, by applying document structures, standard templates, or naming
conventions. If you identify all your requirements with the code Req-xxx-nnn, where
xxx stands for the department that requested the requirement, everybody will
understand that Req-sal-012 is a requirement for the Sales department (for backward
traceability). If you publish a document listing all the requirements that will be
implemented in the release of July 1st, you are providing implicit forward traceability
information. And if you write a document with a dedicated section on, e.g., price
calculations, that could be an example of traceability between requirements. Another
example could be a high-level model and a textual description of detailed
requirements related to it.
Source R1 R2 R3 R4 R5 R6 R7
Interview Mrs. Smith X X X
06/08
Summary X X X X
questionnaire May 12
Field observation X X X
report 07/03
Company regulations X X X
version 17.a.02
Documentation API X X X
HRM system v3.0.2.a
“Principle 2: Welcome changing requirements, even late in development. Agile Handling Change
processes harness change for the customer’s competitive advantage.” [BeeA2001].
The founding fathers of the agile movement were crystal clear on this: requirement
changes will always occur, whether you like them or not. Many people do not like
changes at all, because every change is a risk, a threat to the stability of the project
and the system.
However, changing a requirement is not a stand-alone event: it is triggered by
changes in the system context, by new insights of the stakeholders, by behavior of
competitors, and so on; a law becomes effective, adding a new constraint to the
system; due to growing market demand, the performance of the system has to be
improved; a competitor system is launched with some delighter features that your
client wants too. A change should thus be seen as a chance to get a better system, to
provide more value to the users.
As long as a requirement is in a draft state, the author has the authority to change it
and no strict process is followed.
As soon as a requirement is released for further use in the project, the author is no Change authority
longer free to decide, as every change will have an impact on other work products
based on this requirement. Before deciding whether a change should be implemented,
an impact analysis should be performed to clarify the efforts and risks of the change.
This is where traceability is indispensable. In a linear development approach, the
change authority will often be assigned to project management, a steering committee,
or a Change Control Board, and a process is followed, with a formal decision on the
change and the planning of its implementation. In an iterative development approach,
the change authority usually lies with the product owner, who decides on the change
and adds an accepted change to the product backlog as a new item (work product).
The further implementation is then handled just like any other product backlog item.
Once a requirement is implemented in an operational system, an even stricter process
should be followed, as every change will now influence users and business processes.
6.8 Prioritization
Requirements themselves are just concepts in the minds of people. They bring value Prioritization
only when they are implemented in an operational system. This implementation takes
effort, time, money, and attention. In most cases, these resources are limited, which
means that not all requirements can be implemented, at least not at the same time.
This in turn means that the stakeholders have to decide which requirements should
come first and which could be implemented later (or not at all). In other words:
prioritization [Wieg1999].
The priority of a requirement is defined as the level of importance assigned to it
according to certain criteria [Glin2020]. Consequently, you first have to determine
what criteria should be used to assess the requirements before you can prioritize
them. However, before you can determine the assessment criteria, you must know
what the goal of the prioritization is. That goal is usually not your goal as a
Requirements Engineer but the goal of certain stakeholders, so you must decide who
the stakeholders are for this prioritization. And when you know their goal, it will
usually be clear that not all requirements will have to be prioritized but rather only a
defined subset.
Summarizing the above, we can outline a sequence of steps to be followed if we want Steps to be followed for
to prioritize requirements: prioritizing requirements
Define major goals and constraints for the prioritization
Project and system context largely determine the reasons for prioritization. If,
for instance, you prioritize to decide which features will be implemented in
the next release, you might focus on business value; if the goal is to select user
stories for the next iteration, story points and technical dependencies would
be more prominent. Technical or legal constraints might limit the choices to
be made.
Define desired assessment criteria
In principle, the goals and constraints dictate the criteria to be used.
Commonly used criteria are business value for stakeholders, urgency
perceived by users, effort to implement, risks for usage, logical and technical
dependencies, the legally binding nature of a requirement, or just the (inter-)
subjective preference of relevant stakeholders. Sometimes only a single
criterion is used but a balanced selection of several relevant criteria may yield
a better outcome.
The textbooks by Pohl [Pohl2010], Davis [Davi2005], Hull, Jackson and Dick
[HuJD2011], van Lamsweerde [vLam2009] and Wiegers and Beatty [WiBe2013]
provide a comprehensive overview of requirements management. Additional insights
to the topic of requirements management is consolidated in the CPRE Advanced Level
handbook for Requirements Management by Bühne and Herrmann [BuHe2019].
Cleland-Huang, Gotel and Zisman [ClGZ2012] provide an in-depth treatment of
traceability.
Olson [Olso2014] and Wiegers [Wieg1999] deal with prioritization techniques.
Requirements Engineering is a difficult task without the support of tools. Tools are Necessary support for
needed to support Requirements Engineering tasks and activities. Existing tools focus Requirements
on supporting specific tasks, such as documenting requirements or supporting the RE Engineering process
process, and rarely on all tasks and activities in the Requirements Engineering
process. It is therefore not surprising that the Requirements Engineer must have a set
of tools at his disposal to support the various components in the Requirements
Engineering process—just as the carpenter needs several tools (e.g., computer-aided
design (CAD)) to design a piece of furniture and needs tools like a saw, scraper, and
sandpaper to realize it.
Tools are just an aid to the Requirements Engineering process and the Requirements
Engineer, and such tools are called CASE (computer-aided software engineering)
tools. CASE tools support a specific task in the software production process
[Fugg1993].
We differentiate between different types of tools that support the following aspects Different types of tools
of Requirements Engineering:
Management of requirements
Tools in this category have the properties needed to support the activities
and topics described in Chapter 6. With these kinds of tools, more control
can be established over the Requirements Engineering process.
Requirements are subject to change and in an environment where this
happens frequently, a tool with the relevant properties is indispensable.
Tools in this category support:
o Definition and storage of requirements attributes to identify and collect
data about work products and requirements as described in Section 6.5
o Facilitation and documentation of the prioritization of requirements
(Section 6.8)
o Life cycle management, version control, configurations and baselines as
described in Sections 6.2, 6.3, and 6.4
o Tracking and tracing of requirements, as well as defects in the
requirements and work products (Section 6.6)
o Change management for requirements; as we learned in Section 6.7,
changes are inevitable and have to be carefully managed
Selecting an RE tool is no different to selecting a tool for any other purpose. You Introducing tools
should describe the objectives, context, and requirements before selecting and
implementing the appropriate tool(s).
Tools are just an aid to the Requirements Engineering process and the Requirements
Engineer. They do not solve organizational or human issues. Imagine that, together
with your colleagues, you want to document the requirements in a uniform manner.
Tools can support this—for instance, with a template in a word processing tool or
wiki page. This does not ensure that all your colleagues adopt this working method,
neither does it ensure that your colleagues have the discipline to record and manage
their requirements in this way. What can help is to make agreements with each other,
to check whether the agreements are being fulfilled, and to be able to communicate
with each other if agreements are not adhered to. A tool is not going to help you with
this. Introducing a Requirements Engineering tool requires clear Requirements
Engineering responsibilities and procedures.
A tool can help you to configure your Requirements Engineering process effectively
and efficiently. Tools often provide a framework based on best practices experience.
These frameworks can then be tailor-made to suit the situation.
As we have learned in the previous chapters, core Requirements Engineering
activities are not stand-alone processes. Selecting the appropriate RE tools starts with
the definition of the objectives and/or problems you want to solve in the RE process.
The next step is to determine the context of the system (in this case, the tool set).
Consider the aspects of the context—i.e., stakeholders, processes, events, etc., and
apply your Requirements Engineering skills to specify the requirements for the RE
tools. Practice what you preach.
The next sections describe some of the aspects that have to be taken into account
when introducing a (new) Requirements Engineering tool into your organization.
The most obvious costs, such as purchase costs or licensing costs, are usually factored Life cycle costs
in. In addition, less visible costs must also be taken into account, such as the use of
resources in the implementation, operation, and maintenance of the tool.
Specifying the requirements and supervising the selection process requires the Necessary resources
necessary resources, in addition to the costs mentioned in the previous section.
People necessary to guide the selection process, Requirements Engineers, hardware
resources, and other resources should not be overlooked. After the tool has been put
into use, resources may also be required for maintenance and user support.
The introduction of a new tool can threaten the control over the current requirements Running pilot projects
base. A requirements chaos can arise because there is a transition from the old
working method and/or tools to the new working method and tools. Introduction of
a new tool during an existing project will irrevocably lead to a delay in the delivery of
the requirements and even the project.
Selecting the appropriate tool can be a difficult task. Extensive verification of whether Assessing tools
the objectives and requirements are met is a standard approach in Requirements systematically
Engineering. A systematic approach that assesses the tool from different perspectives
also contributes to making the right choice. The following perspectives can be
considered:
Project perspective
This point of view highlights the project management aspects. Does the tool
support the project and the information required in the project?
Process perspective
This perspective verifies the support of the Requirements Engineering
process. Does the tool sufficiently support the RE process? Can it be
sufficiently adapted to the existing RE process and working method?
User perspective
This perspective verifies the degree of application by the users of the tool.
This is an important view because if users are not satisfied with the tool, the
risk of the tool not being accepted increases. Does the tool sufficiently
support the authorization of users and groups? Is it sufficiently user-friendly
and intuitive?
Product perspective
The functionalities offered by the tool are verified from this angle. Are the
requirements sufficiently covered by the tool? Where is the data stored? Is
there a roadmap with the functional extensions for the tool? Is the tool still
supported by the supplier for the time being?
Supplier perspective
With this perspective the focus lies on the service and reliability of the
supplier. Where is the supplier located? How is the support for this tool
arranged?
Economic perspective
This perspective looks at the business case: does the tool deliver sufficient
benefits in relation to the costs? What are the (management) costs for the
purchase and maintenance? What does the tool provide for the RE process?
Is a (separate) maintenance contract required?
Architecture perspective
This perspective assesses how the tool fits into the (IT) organization. Does
the technology applied suit the organization? Can the tool be sufficiently
linked with other systems? Does the tool fit into the IT landscape and does it
comply with the architectural constraints?
Handbook for the CPRE Certified Professional for Requirements Engineering
Foundation Level - Version 1.0.0 Page 131/139
7.2.5 Instruct Employees on the Use of the Tool
Once a tool has been selected, the users should become familiar with the Instruct employees on
opportunities the tool can add to the Requirements Engineering process. The users— the use of the tools
i.e., the Requirements Engineers—should be trained in how to use the tool in the
existing Requirements Engineering process. If the users are not sufficiently trained,
this may mean that not all the benefits of the tool are used. In fact, it is possible that
the tool will be used incorrectly, with all the associated consequences.
The Requirements Engineering process can also be changed due to the tool selected.
Aspects in the Requirements Engineering process that were not possible before can
be made possible with a new tool: for example, adequate version management,
modeling of requirements, etc. This can mean that new procedures are agreed,
templates are adapted or applied, changes are made to the working method, and so
on. The involvement of the Requirements Engineer in this change contributes to the
success of the tool's acceptance.
The following literature can be consulted for an overview of available tools and tool
evaluations. Juan M. Carrillo de Gea et. al. provide a comprehensive overview of the
role of Requirements Engineering tools [dGeA2011]. The article by Barbara
Kitchenham, Stephen Linkman, David Law [KiLL1997] describes and validates a
method for systematic tool evaluation. If you are searching for an RE tool, a
comprehensive list of tools for Requirements Engineering is provided on the Volere
website [Vole2020] or at [BiHe2020].