Model-based software transformation

Model-based software transformation

Overview

Replacing every piece of legacy software by new, high-quality code in an automatic manner may be too good to be true. However, this does not mean that remnants from the past can only be weeded out by going through all the code manually. There are alternatives.

ESI (TNO) is developing semi-automated methods to improve code evolvability by transforming the legacy code:

ESI (TNO) considers two approaches that are driven by models in different ways.

Rejuvenation

ESI (TNO) is developing a semi-automated rejuvenation approach based on models that focus on essential functionality:

It consists of three steps:

  1. Model extraction: to identify the implemented functionality;

  2. Model transformation: to improve the structure of the extracted models;

  3. Code generation: to produce fresh implementation code from the models.

The model extraction step cuts away entangled, organically-grown software structures, thus separating valuable domain logic from low-level implementation details. This opens the way to model-based software engineering, including the automated generation of up-to-date implementation code. If the models are technology-independent, the migration to new or future implementation technologies is also facilitated. This approach typically helps to make rigorous improvements to a software module.

Restructuring and refactoring

ESI (TNO) is developing a semi-automated restructuring approach based on models that focus on implementation structure:

It consists of three steps:

  1. Model extraction: to identify the current structure and dependencies;

  2. Model transformation: to identify the desired structure and dependencies;

  3. Code refactoring: to restructure the code according to the transformed model.

The model extraction (and model-based analysis) create views on various key implementation aspects. Once a desired structure has been identified, application-specific code refactoring is used to transform the implementation code. This approach typically helps to make code-level improvements on a large scale, and is sometimes used as a steppingstone towards a more rigorous rejuvenation.

references
contact
Additional information