Model extraction for software legacy
Model Driven Software Engineering introduces models with valuable, essential functionality as an intermediate between human ideas and low-level implementation structures. Manual modeling is too time consuming, laborious and error-prone: it simply doesn’t scale. The biggest challenge and promise for the future is to extract models by capitalizing on the valuable knowledge contained in the code, the system, logs, etc.
ESI (TNO) is developing semi-automated methods to extract models from legacy code.
ESI (TNO) works on three complementary techniques for model extraction from legacy software. The techniques should be scalable and result in accurate and intuitive models. The technique (or combination of techniques) to select depends on the specific case. In the end, one way or another, the old software has to reveal its secrets.
ESI (TNO) works with models that can represent various aspects of software, such as:
Functionality: what is the software doing?
Structure: how is the software implemented?
Passive learning of functionality from execution logs
If some execution logs are available, various tools can find out how the system was used.
Active learning of functionality from executable systems
If an executable system is available, active learning can interactively explore how the system behaves functionally. In this so called dynamic approach you instruct a learning tool to push all ‘buttons’ of a system one after the other and see what happens. This can generate a lot of knowledge about a system’s behavior.
Static analysis of functionality and structure from source artifacts
If the source code is available, static analysis can look at how the system works under the hood. It can analyze the control/data flow of the software, and search for specific patterns in source code. This allows you to dig deep in the right spots to find out how the software was designed to work.
Interview people about functionality and structure
If the developers are still accessible, interviewing is a valuable option.