next up previous
Next: ASF+SDF Up: Introduction Previous: Goals of this tutorial


What is software renovation?

Chikofsky and Cross [17] have proposed a terminology for the field of re-engineering. The term reverse engineering has its origins in hardware technology and denotes the process of obtaining the specification of a complex hardware system. Today the notion of reverse engineering is also applied to software. While forward engineering goes from a high-level design to a low-level implementation, reverse engineering can be seen as the inverse process. It amounts to analyzing a software system to both identify the system's components and their interactions and to represent the system on a higher level of abstraction.

This higher level of abstraction can be achieved by filtering out irrelevant technical detail, or by combining legacy code elements in novel ways. Alternatively, it can be realized by recognizing instances of a library of higher level plans in the program code [44,55,23]. This latter technique is in particular applied to the problem of program comprehension, which aims at explaining pieces of source code to (maintenance) programmers. Techniques from the debugging and program analysis area, such as slicing [53], can be used for this purpose. The problem of explaining the overall architecture of a legacy system, indicating all the components and their interrelationships, is referred to as system understanding.

Adaptation of a system is the goal of system renovation. This can be done in one of two ways. The first is system restructuring, which amounts to transforming a system from one representation to another at the same level of abstraction. An essential aspect of restructuring is that the semantic behaviour of the original system and the new one remain the same; no modification of the functionality is involved. The alternative way is to perform the renovation via a reverse engineering step, which is called re-engineering: first a specification on a higher level of abstraction is constructed, then a transformation is applied on the design level, followed by a forward engineering step based on the improved design. A renovation factory is a collection of software tools that aim at the fully automatic renovation of legacy systems by organizing the renovation process as an assembly line of smaller, consecutive, renovation steps.

Last but not least, one can distinguish methodology and technology for system renovation. The former deals with process and management aspects of renovation and typically identifies phases like system inventory, strategy determination, impact analysis, detailed planning, and conversion. The latter provides the necessary techniques to implement the steps prescribed by the methodology. Although methodology and technology form a symbiosis, we will here mostly concentrate on the technological aspects of system renovation. In this tutorial, we will deal with system understanding (Section 2) as well as system renovation (Section 3).


next up previous
Next: ASF+SDF Up: Introduction Previous: Goals of this tutorial
Paul Klint 2001-06-10