Project funded by:
Swiss National Science Foundation

Project presentation

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. Consequently, the project consists of the following tracks:

Creating a Distributed Reengineering Environment. Currently, the existing reengineering artifacts are used in isolation, due to the fact that they are separated by the usage of different representation formats of the system, different implementation paradigms, various programming languages etc. We aim to build the network of reengineering expertise(NOREX) as an inter-communications framework that would allow our tools to become interoperable.

Enabling Complex Reengineering Activities. Following this track, we want to explore the possibilities open by the NOREX environment to build complex reengineering analyses and workflows by combining tools built by the participating groups. Examples of planned analyses are: (1) combining problem detection with visualization to get an overview of how problems are distributed over a system, (2) combining evolution analysis with problem detection to understand the evolution of quality.

Performing Large-Scale Reengineering Experiments. The aim of this track is to validate the aforementioned project goals by performing large-scale distributed reengineering experiments. This is reached by combining the unique experience obtained by the three teams both at a human as well as at an infrastructural level, made possible on one hand by the NOREX environment and on the other hand by the complex reengineering activities defined and automated during this project. We believe that these large-scale experiments will validate the feasibility of our approach for usage in the software industry.
Last Update: 22 January, 2007