An Agile Approach to Support Incremental Development of Requirements
Specifications
∗
Mart´ ın L´ opez-Nores, Jos´ e J. Pazos-Arias, Jorge Garc´ ıa-Duque, Bel´ en Barrag´ ans-Mart´ ınez
Department of Telematics Engineering, University of Vigo (Spain)
{mlnores,jose,jgd,belen}@det.uvigo.es
Abstract
The development of requirements specifications has to
face the imprecise and changeable knowledge available
about the desired systems at the early stages of develop-
ment. In this paper, we take advantage of that changeabil-
ity to introduce an agile approach that helps identify suit-
able evolutions of a specification. This approach provides
a solution with low computational cost to achieve frequent
interaction with the stakeholders, this being the key to sup-
port the eminently creative task of developing requirements
specifications.
1. Introduction
The development of requirements specifications is con-
ceived as an incremental process, in which the stakeholders
successively add requirements until getting to the specifi-
cation of the desired system. This process is often charac-
terized by an imprecise and highly changeable knowledge;
therefore, while the final specification can be seen as a se-
quence of refinements from an initially empty specification,
the path followed to reach it is generally a series of refine-
ments and abstractions (see Figure 1). A refinement is an
evolution that adds knowledge to the specification, preserv-
ing all the knowledge accumulated so far [3, 23, 31]. For
its part, an abstraction is an evolution that implies discard-
ing part of that knowledge, as needed when the specifica-
tion cannot go on evolving through refinements to satisfy
the needs and expectations of the stakeholders.
Many verification and validation (V &V ) techniques
have been proposed (see [33]) to help the stakeholders de-
tect the need to perform abstractions —this should be done
as soon as possible, to avoid continuing the specification
tasks over erroneous foundations. One of the most popular
verification techniques nowadays is model-checking [12].
*
This work has been funded by the Xunta de Galicia Research Project
PGIDIT04PXIB32201PR.
S0 S1
Sj !!!
S
k !!!
Sp Sv
ref ref ref
ref
ref ref
ref
ref ref
abs
abs
Figure 1. A series of refinements and abstrac-
tions from S
0
to S
v
The methodologies that employ this technique are usually
based on specifying the requirements of a system using tem-
poral logic, and then synthesizing a functional model (i.e.
an implementation of the specification) to carry out the ver-
ification tasks over it. Generally, there exist many different
models that implement a given specification [26, 37], and so
the fact that the model-checker returns an undesired result
can be due to two causes: (i) the model that has been an-
alyzed does not satisfy the system objectives, while other
models of the same specification do, or (ii) the require-
ments specification does not actually describe the desired
functionality, implying that it is necessary to carry out an
abstraction. Obviously, concluding the latter requires eval-
uating all the possible models, which can be very expen-
sive in computational terms. This undoubtedly hampers the
progress of the specification tasks and leads to a drop in
productivity.
With this problem in mind, the last few years
have witnessed a rapidly growing interest in agile (aka
“lightweight”) methodologies [1, 17]. These techniques ad-
vocate the generalization of iterative processes in which hu-
mans make frequent small changes to a system description,
and where the reiterated analysis of what has been done up
to any given moment is the key to increase the knowledge
about the desired system and advance its development [13].
Proceedings of the 2006 Australian Software Engineering Conference (ASWEC’06)
1530-0803/06 $20.00 © 2006 IEEE