4.3 A General Model For Software Reengineering

reengineering process

accepts as input the existing code of a system and produces the code of the renovated system.

may be as straightforward as translating with a tool the source code from the given language to source code in another language.

may be very complex

definitions of reengineering

The definition by Chikofsky and Cross II: Software reengineering is the analysis and alteration of an operational system to represent it in a new form and to obtain a new implementation from the new form. Here, a new form means a representation at a higher level of abstraction.

The definition by Byrne: Reengineering of a software system is a process for creating a new software from an existing software so that the new system is better than the original system in some ways.

The definition by Arnold: Reengineering of a software system is an activity that: (i) improves the comprehension of the software system, or (ii) raises the quality levels of the software, namely, performance, reusability, and maintainability.

Reengineering = Reverse engineering + Δ + Forward engineering.

model

Eric J. Byrne suggests that reengineering is a sequence of three activities

reverse engineering, re-design, and forward engineering

strongly founded in three principles, namely, abstraction, alteration, and refinement.

horseshoe - developed by Kazman et al. to describe a three-step architectural reengineering process

segments / three steps of the reengineering process.

left side

top part

right side

4.3.1 Types of Change

rethink

respecify

redesign

re-code

4.3.2 Software Reengineering Strategies

rewrite

rework

replace

4.3.3 Reengineering Variations

Picture4