Reverse engineering a piece of software consists, among others in recovering or reconstructing its functional and technical specifications. Recovering these specifications is generally intended to redocument, convert, restructure, maintain or extend legacy applications.
We are interested in database reverse engineering because database are the central part of many information systems. And the permanent data structures are generally the most stable part of applications. Reverse engineering the procedural part of such application is much easier when the semantic structure of the data has been elicited.
Even if reverse engineering the data structure is "easier" than recovering the specification of the application as a whole, it is a complex and long task. Since 1992, some authors have recognized that the procedural part of the application programs is an essential source of information to retrieve data structures and that understanding some program aspects is one of the keys to fully understand the data structures.
To guide the user during reverse engineering process, we need to define a methodology and techniques. One of the main contribution of this thesis will be the analysis of program understanding techniques and to adapt them to the specific needs of database reverse engineering.
The theoretical part of the work will be validated by its application to real size case studies and the development of supporting tools. Those tools will be integrated into the existing CASE tool DB-MAIN.
Our experience with real size projects, not only some small academic (small, well written) projects, has shown that the automation of the different processes of the methodology is mandatory and that the cost of such project are very difficult to evaluate.
|Effective start/end date||1/09/95 → 19/09/03|
- database reverse engineering
- Program comprehension