Processing Requirements by Software Configuration Management
Ivica Crnkovic1, Peter Funk1, Magnus Larsson2
1Mälardalen
2ABB
University, Department of Computer Engineering, S-721 23 Västerås, Sweden
{ivica.crnkovic, peter.funk}@mdh.se
Automation Products AB, 721 67 Västerås
[email protected]
Abstract
Short development life cycles, the importance of timeto-market and fast changes in technology influence the
requirements engineering process. Requirements are
exposed to changes during the entire development life
cycle, and decisions related to requirements and system
design are moving toward developers. For this reason it is
important to keep requirement changes under control during the entire development process. This control can be
achieved by utilizing Configuration Management (CM)
functions and in particular Change Management.
This paper describes a model for managing requirements using CM functions. A requirements specification is
defined as an hierarchic structure, in which elements of the
structure are isolated requirements designated Requirements Specification Items. Having items under version
control it is possible to get a better overview of the requirements change process. In the implementation phase,
requirement items are associated with Change Requests
which define implementations to be introduced in the system. When using Change Requests as links between
requirements and the implemented functions we achieve a
greater awareness of requirements and a better overview
over the requirement process. Furthermore it provides a
foundation for reuse of requirements when new systems
are built.
1. Introduction
Requirements are exposed to changes during entire
development lifecycle. They are often incomplete and
inconsistent when first defined.
The process of the requirement clarification does not
finish with a well-defined requirement specification. The
process continues also during the development process,
especially when using software development models such
as incremental development, prototyping, etc. In managing
requirements we are now facing new problems, such as:
•
Faster changing technologies, methods and tools used
in the design, implementation and change processes as
well as changing technologies for implementing the
system (hardware and software), frequently even during he development of the system.
•
The time-to-market becoming a particularly important
factor. The use of external components, such as COTS
(commercial-off-the-shelf), influences system design
and requirements.
•
Those working with requirements not always completely understanding the new technologies, and developers, mastering development technologies, not being
familiar with the background to requirements.
This means that the requirements are far from being correctly defined at the beginning of the implementation process.
All these factors influence the relation between the system design and requirements. The final decisions about
requirements tend to become the responsibility of the
developers.
Requirements are increasingly exposed to changes, and
the following problems become more apparent:
•
Inadequate use of requirements and inadequate guidance by requirements during software design and development.
•
Inadequate awareness of changes in requirements during system development.
•
Inadequate control over which requirements are under
implementation, which are fully implemented.
•
Inadequate validation and verification of implementation against the requirements.
The basic idea in this paper is to keep requirements
under Configuration Management (CM). This paper presents a model, in which requirements are under strict CM
control. Using features from CM, especially from Change
Management, it is possible to achieve better control and
awareness of the requirements. It simplifies tracing of
requirements by means of reuse or by identification of
problems.
For efficient CM control, every requirement is saved as
a separate configuration item. By means of this separation
it is easier to control particular requirements.
The structure of a requirements specification and the
interaction of requirements with CM features are described
in chapter 2. Chapter 3 describes the behavior of the
requirements during the implementation phase. Their relation to Change Requests, documents which describe a
change to be implemented in the system, are discussed.
Using Change Requests as links between the requirements
and implementations promotes awareness of the requirements and the entire development process. Chapter 4 discuses certain limitations of the model. Finally, chapter 5
provides a conclusion of the paper.
2. Requirements Specification Structure and
Configuration Management
The idea is to keep the requirements under CM control.
The same CM process and tools which are used in the
implementation phase can also be used for versioning
requirements.
2.1 Requirements Specification Structure
If a requirements specification is prepared as one document, we can manage different versions of it, but we cannot control the requirement items separately.
For this reason we define a requirements specification
as a “virtual” document which consists of Requirements
Specification Items (RS Items), organized in a structure as
shown in Figure 1.
Requirement
RequirementSpecification
Specification
RS
RSItem
Item11
RS
RSItem
Item1.1
1.1
RS
RSItem
Item1.2.1
1.2.1
RS
RSItem
Item22
RS
RSItem
Item1.2
1.2
RS
RSItem
Item1.2.2
1.2.2
RS
RSItem
Item33
RS
RSItem
Item3.1
3.1
RS
RSItem
Item1.2.3
1.2.3
RS
RSItem
Item3.2
3.2
RS
RSItem
Item3.2.1
3.2.1
FIGURE 1. Requirements Specification
An RS Item is the description of one particular requirement. The top level of the structure contains basic requirements and these requirements are refined on the lower
levels.
RS Items can be described in a natural language, but
there are other alternatives, such as: forms, design description languages, graphs, or formal specifications [5].
A predefined format of an RS Item makes it possible to
extract particular information from the entire requirements
specification or from a part of it (i.e. from the entire tree or
from a sub-tree).
To process a requirements specification efficiently, we
need an application, a so-called “RS browser”, which can
manage individual RS Items, a group of items, or the entire
requirements specification.
2.2 Versioning Requirements Specification
As RS items are separate entities we can place them
under version control. Every RS Item is treated as an CM
item. We can create new items, or modify or remove old
items. We get new versions on those items which we
change.
The identification of each item version is a part of the
CM tool: Each Item has an identity, title and other features
related to each version, such as version identity, author,
creation date, and a set of other attributes, depending on
which CM tool we use.
The hierarchic structure is also managed by the CM
tool. A logical relation between different RS items, such as
requirements on inputs or outputs, can be a part of the RS
item data. The requirements specification structure is however defined within the CM environment, and not within
the RS items themselves. It is thereby easier to move RS
Items within the structure.
A particular version of the requirements specification is
generated from specified versions of RS items, i.e. from a
specific configuration of RS items, designated a baseline
[4].
2.3 Processing Requirements
We also use other CM features to manage the requirements change process. Using CM report facilities we can
easily trace:
•
Which requirements, or parts of them, have been
changed since the latest baseline.
•
Who has made the change.
•
When the change was made.
Version attributes can be used to describe possible states
of RS Items, as shown in Figure 2.
Initiated
Accepted
Developing
Implemented
Tested
Approved
Obsolete
Analysis/Design
phase
Implementation phase
Verification phase
FIGURE 2. RS Item States
As RS Items are organized in a hierarchic structure, the
functions we can apply to them can affect individual RS
Items or a sub-tree of Items. For example, we may want to
designated all RS Items lying under a main RS Item as
Tested. Such functions are provided by certain CM tools.
3. Processing Requirements during the Implementation Phase
When we place Requirements Specification under version control, we obtain control over the requirements
changes. This control is however not sufficient, we also
need a mechanism to relate requirements to the implementation parts. This relation is often not clearly defined, especially in the beginning of the development process when
requirements are not clear and not completely understood.
In general, we have many-to many-relations between
RS Items and system modules1: A module can be affected
by several requirements, and, on the contrary, a requirement can be implemented in different modules.
These relations are even more complicated if we take
into considerations that some requirements are related to
other requirements, and the same applies to modules. System modules can consist of a number of items, such as documents and source files, and in such a complex relationship
keeping track of requirements is a challenge.
We wish to make requirements more visible during the
implementation. Developers should be aware of the
requirements they are expected to implement, and they
should be aware of possible changes in the requirements,
1.
of which requirements are being implemented and of
which new requirements have appeared.
One possibility of relating requirements with system
modules is to use Change Management support from CM.
CM provides a basic support for change process operations
and the CM functions can be utilized for providing links
between requirements and the final result of the development process.
The basic purpose of the change-oriented CM tools is to
control changes instead of files. Change management controls the connections between logical changes and physical
changes implemented in the files within a system. The term
Change Request is used to refer to a logical change [1], [2],
[6], [7], [9], [11]. Any kind of change can be addressed by
Change Request, for example a request to solve a problem
or improve a function or implement a new function. To
allow changes to be managed at the logical level rather
than the physical level, it is essential to associate physical
changes, i.e. changes performed on files, with Change
Requests.
SDE, a CM tool developed and used at ABB [3], uses
Change Requests and, differing from other CM tools,
keeps Change Requests under version control [4].
As requirements are starting points for the design and
implementation of a system, it is natural to relate them to
Change Requests which initiate activities in the implementation phase.
Change Requests can be also used for implementation
of completely new functions, assuming that they change an
empty set to something new. A more appropriate name in
this case would be Implementation Requests.
By a system module we mean a part of the system which can be designed, developed and maintainend relatively independent of other modules. For example, a component library is a system module.
•
3.1 Associating Requirements Specification Items
with Change Requests
We treat requirements specifications in the same way as
any other item under version control. We define a tree
structure under CM control which we use for RS items. For
example, if we use a check in/check out CM model, we
check out and check in items from the tree structure or
those RS items which we wish to modify. The check in/out
procedure is performed by an RS Item Browser, or simply
by CM functions.
In addition to the standard version management of the
requirements, we also define a bidirectional relation
between RS Items and Change Requests.
To avoid a risk that the relation to Change Requests
remains unclear, it is important to define:
•
We can group Change Requests in the same way as RS
Items. If a CM tool does not support this grouping, it is
possible to develop additional functions managing this
grouping. Change Requests grouped together are related to
the same logical change. This means that they are related to
the same RS Item. Each Change Request can refine the
requirement, or can refer to another part of the system. For
this reason, we can relate Change Requests from one group
to an RS item. When it is decided to begin with the implementation of the requirement, one or several Change
Requests are created.
Change Requests uniquely address system modules
where the requests are to be implemented (Figure 3).
The relation between RS Items and Change Requests is
bidirectional. An RS Item refers to the associated Change
Request, and, if a Change Request is generated from an RS
Item, it contains a reference to the corresponding RS Item.
Which types of relations exist between Change
Requests and system modules on the one side, and on
the other side between Change Requests and RS items.
RS Item
A
RS Item
B
How the process of information exchange between
Change Requests and RS Items works, and how to
ensure a consistent description of the entire process.
RS Item
C
RS Item
D
RS Item
F
RS Item
E
CR
E.2
CR
F.2
CR D
CR
A
CR
B
CR
C
CR
D.1
CR
D.2
CR
E.1
CR
F.1
CR E
Module
M1
one to one
Module
M2
Module
M3
many to one
Module
M4
one to many
Module
M5
CR F
Module
M6
many to many
FIGURE 3. Relation between RS Items, Change Requests and system modules
One of the intentions of this model is to increase the
awareness of the developers of requirements during the
implementation process. This can be achieved by making
requirements more visible to them. Since developers deal
with Change Requests - they refer to Change Requests
when performing check out/in - they can access RS Items
via Change Requests. The CM tool should provide this
possibility. RS Items specified in Change Requests can in
fact be treated in a way similar to any other item (source
code, document). All versions of items related to a Change
Request should be easily accessible and from it.
between source code files. Taking care of the consistency
is a typical CM function - one possibility is to relate the latest versions of all items and generate a baseline at the synchronization points. A baseline in this case will comprise
source code, RS Items and Change Requests into a manageable entity.
Figure 4 shows a comprehensive process of managing
RS Items, Change Requests and system modules.
3.2 Processing RS Items and Change Requests
During the requirements engineering process and during
the implementation process both RS Items and Change
Requests are being changed, which means that new versions of them will be created. This implies that only particular versions of RS Items and Change Requests make a
consistent combination. The consistency between different
versions can be treated in the same way as the consistency
RS Item
Initiated
Accepted
v1
v2
Working
v3
Developing Implemented
v4
Update
CR
Create
a CR
Change
Request
Files
changed
v5
Tested
Approved
v6
v7
Update
RS
CR
CR
Implemented
Initiated
v1
Check in/
Update CR
v2
v1
v2
Time
FIGURE 4. Processing RS Items, Change Requests and modules
In the first phase of the requirements engineering process the RS items will be changed (or removed and new
added) by means of to analysis and validation, problem
identifications and requirements negotiations [8], until they
reach the Accepted state.
The second phase, the implementation, begins with the
initiation of Change Requests. The RCS Item reaches the
Developing state. In this state RS Items are being implemented. A new Change Request is generated from an RS
Item. The new Change Request inherits some parts of the
RS Item such as title, identity, etc. It also contains a reference to the RS Item and its version. The implementation
phase includes implementation of the requirement, i.e. creation and modification of items of modules. Information
about which files and versions have been modified is saved
in the Change Request. A developer is responsible for correct updating of Change Requests with files being modified and placed under CM control. When performing these
actions the developer can easily refer to the related RS
Items and in that sense become aware of it.
It can happen that RS items are modified even during
the implementation phase. In such a case, the engineers
responsible for the requirements can easily determine the
current state of the RS Items and how of the implementation has been performed. This data can be suitable input for
an analysis of the implications the change can have. If an
RS Item has been changed, the associated Change Request
will be updated - a new version of the RS Item and a short
change description will be recorded in the Change Request.
The Change Request owner will be informed simultaneously (via e-mail) of the change in the RS Item and
Change Request.
When the required changes are implemented the developer responsible for the Change Request closes it. This
action triggers an updating procedure which sets the corresponding RS Item in the Implemented state. The tests and
verification activities now performed conclude with
approval and closing both of Change Request and RS Item.
4. Limitations of the Model
•
It provides designers and programmers with direct and
easy access to related requirements information.
The presented model contains certain limitations which
originate in the nature of requirements.
We recognize two types of requirements [10]:
•
It simplifies keeping of requirements consistent with
implementation and free of redundancy.
•
Functional requirements are statements of services
which the system should provide, and how the system
will respond to particular inputs.
•
•
Non-functional requirements are constraints on the system in general, for example standards, timing constraints, quality constraints, etc.
While functional requirements can be more or less
directly mapped to the functions which should be implemented, the non-functional requirements usually concern
the entire system. For this reason it is difficult to relate
Change Requests to the later.
The non-functional requirements are also specified as
RS items, but their internal format will not be the same as
those of functional requirements. It is difficult to relate
them to particular Change Requests. This implies that we
can not use the same mechanism for referring to RS Items,
and we do not have the same support in achieving a higher
degree of awareness of requirements. It must be obtained
in another way.
Another problem originates in ambiguities and lack of
clarity regarding requirements. If a requirement is not precisely defined it is difficult to relate it to a specific Change
Request, which describes a requirement for implementation in a particular system module. Such requirements are
more often changed, even during the implementation phase
and this causes difficulties in maintaining consistency in
relation to Change Requests. The old Change Requests,
perhaps partly implemented, become irrelevant, and new
Change Requests must be created. Of course such a RS
Item indicates the possible problems with the requirement's
design. These indications can be detected by measurement
- if there are many versions of an RS item and changes in
references to Change Requests, a more serious analysis of
the RS Item is called for.
5. Conclusion
The goal of the model presented is to manage requirements in a controlled way. This is performed by placing
requirements under Configuration Management and by utilizing Change Management functions.
The use of requirements management and its combination with CM has the following advantages:
•
It provides support in controlling how and when
requirements are changed, if they are under implementation or if they have already been implemented.
It simplifies reuse of requirements previously used and
implemented.
The model can be only partially implemented by using
of standard tools. While most of the functions related to
versioning and configuring are available in most of the CM
tools, the functions related to requirements management
must be implemented.
6. References
[1] Continuus Software Corporation, Task-Based Configuration Management, Version 2.0, http://www.continuus.com/developers/developersACEA.html
[2] Continuus Software Corporation, http://www.continuus.com/homepage.html, 1998
[3] Ivica Crnkovic, Experience with Change Oriented
SCM Tools, Software Configuration Management
SCM-7, Springer Verlag, ISBN 3-540-63014-7, 1997,
pages 222-234
[4] Ivica Crnkovic, A Change Process Model in a SCM
tool, Proceedings Euromicro 98, IEEE Computer
Society, OSBN 08-8186-8646-4, pages 794-799
[5] P.J., Robertson D., Case-Based Support for the Design
of Dynamic System Requirements, Advances in CaseBased Reasoning, Selected Papers, Keane M., Haton
J.P., Manago M. (eds.), Springer-Verlag, 1995, pp
211-225.
[6] David B. Leblang, The CM Challenge: Configuration
Management that Works, Configuration Management,
edited by Walter F. Tichy, Jown Wiley & Sons, ISBN
0 471 94245-6
[7] David B. Leblang, Managing the Software Development Process with ClearGuide, Software Configuration Management SCM-7, Springer Verlag, ISBN 354063014-7, 1997, pages 66-80
[8] Pete Sawyer, Ian Sommerville and Stephen Viller,
Improving the Requirements Process, Technical
report: CSEG/30/1997, Lancaster University http://
www.comp.lancs.ac.uk/computing/research/cseg/
97_rep.html
[9] Rational http://www.rational.com/products/clearquest/index.jtmpl, 1998
[10] Ian Sommerville, Software Engineering, Addison
Wesley, ISBN 0-201-42765-6
[11] Darcy Wiborg Weber, Change Sets versus Change
Packages, Software Configuration Management
SCM-7, Springer Verlag, ISBN 3-54063014-7, 1997,
pages 25-35