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