In an information technology society that is increasingly relying on software, software productivity and quality continue to fall short of expectations: software systems suffer from signs of aging as they are adapted to changing requirements. The main reason for this problem is that software maintenance and reengineering is still undervalued in traditional software development processes. The only way to overcome or avoid the negative effects of aging in legacy software systems and to facilitate their smooth evolution is by providing engineers with a fully automated and integrated support for the entire reengineering process.
Unfortunately, the reengineering of large scale software systems is a highly complex activity, which demands both multiple scientific insights (e.g., metrics, visualization, meta-modelling etc.) and various engineering skills (e.g., compiler techniques, graphics, database engineering etc). Consequently, tackling all the issues involved in a reengineering process is excessively challenging, and barely impossible to be addressed by a single research group.
The three research groups proposing this project, and other European research groups have developed over the last 7 years valuable artifacts to support in different manners the reengineering process. Each of them have focused their attention on specific issues and provided remarkable solutions. Yet, all these scientific and engineering "gems" have a reduced impact if used in isolation, as they are unable to address the entire spectrum of challenges that appear in real-world reengineering activities.
In this context, the goal of of this joint research project is to provide a comprehensive and extensible support for complex, full-fledged reengineering activities applicable on real-world systems. Specifically, we want to address these issues by building a distributed reengineering environment which is able to make all the techniques and models defined and implemented by each of the three research teams to complement each other. Then we want to use this environment to integrate different reengineering techniques to support complex reengineering techniques and validate based on large-scale experiments the feasibility of the approach.