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.
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.
E. Ben Charrada, A. Koziolek, and M. Glinz. Supporting requirements update during software evolution. Journal of Software: Evolution and Process, 2015. [www]
E. Ben Charrada, A. Koziolek, and M. Glinz. Identifying outdated requirements based on source code changes. In Proceedings of the 20th International Requirements Engineering Conference (RE 2012), 2012. [pdf ][www]
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]