Requirements Update

Overview

Updating requirements documents manually when software system evolve is time-consuming and error-prone. Therefore engineers usually choose to modify code directly and leave requirements documents unchanged. We propose an approach that analyzes changes in tests and generates hints about changes in requirements (Figure 1). These hints will guide the engineer during the update of requirements.

                            Figure 1: Using changes in tests to generate hints about changes in requirements

The main idea is to use high-order tests (acceptance tests, function tests and system tests) as a link between requirements and implementation (Figure 2).

Unlike unit tests, which relate to design and implementation details of the system, high-order usually derive from requirements directly and deal with the visible behavior of the system only. Thus, defining traceability links between high-order tests and requirements is straightforward.

As tests are executed against code,  it is also possible to obtain relations between tests and source code automatically by analyzing execution traces.

The ability to easily link requirements and high-order tests from one side, and automatically link tests and code from the other side makes the idea of using tests to relate specifications and implementation and propagate change between them worth exploring.

                                             Figure 2: Relating requirements to code using high-order tests

Publications

E. Ben Charrada and M. Glinz. An automated hint-generation approach for supporting the evolution of requirements specifications. In Proceedings of the Joint ERCIM Workshop on Software Evolution and the International Workshop on Principles of Software Evolution (IWPSE-EVOL), at ASE 2010. [pdf] [www]

E. Ben Charrada. Updating Requirements from Tests during Maintenance and Evolution. Proceedings of the FSE doctoral symposium, 2010. [pdf][www]