Object-orientation in software engineering defines methods and techniques that assist software engineers to build large, flexible, modular, and reusable systems. Many of the systems that have been built over the past decade using object-oriented techniques like inheritance, encapsulation, polymorphism, information hiding, and late binding are already considered legacy systems. It is of no surprise that it is already difficult to maintain these systems. Since these legacy systems often incorporate undocumented valuable business logic, decommissioning or reimplementing them is a very difficult and risky task. A possible solution to this problem is software re-engineering , that aims on analyzing and transforming such systems while retaining their functionality and improving their quality characteristics.
In this context, we need a comprehensive framework that allows for the definition and enactment of the re-engineering process. This thesis presents a framework for providing quality based and quality-driven re-engineering of object-oriented systems. The framework allows for specific design and quality requirements (performance, and maintainability) of the target migrant system to be considered during the re-engineering process.
Quality requirements for the migrant system can be encoded using soft-goal interdependency graphs and be associated with specific software transformations that need to be carried out for the specific target quality requirement to be achieved. These transformations can be applied as a series of the iterative and incremental steps to the source code. An evaluation procedure can be used at each transformation step to determine whether specific goals have been achieved.