The C Information Abstraction System
IEEE Transactions on Software Engineering
An approach for reverse engineering of relational databases
Communications of the ACM
Reverse engineering of relational databases: extraction of an EER model from a relational database
Data & Knowledge Engineering
Algorithms for inferring functional dependencies from relations
Data & Knowledge Engineering
Specification preservation in schema transformations—application to semantics and statistics
Data & Knowledge Engineering
Programmers use slices when debugging
Communications of the ACM
Extracting Business Rules from Information Systems
BT Technology Journal
Reverse Engineering and Design Recovery: A Taxonomy
IEEE Software
A Query Algebra for Program Databases
IEEE Transactions on Software Engineering
Program Understanding in Databases Reverse Engineering
DEXA '98 Proceedings of the 9th International Conference on Database and Expert Systems Applications
Dimensions of Data ase Reverse Engineering
WCRE '97 Proceedings of the Fourth Working Conference on Reverse Engineering (WCRE '97)
An Algorithm for Determining Related Constraints
BNCOD 19 Proceedings of the 19th British National Conference on Databases: Advances in Databases
Hi-index | 0.01 |
A data-intensive program is one in which much of complexity and design effort is centred around data definition and manipulation. Many organisations have substantial investment in data design (data structures and constraints) coded in data intensive programs. While there is a rich collection of techniques that can extract data design from database schemas, the extraction of data design from data intensive programs is still largely an unsolved problem. In this paper, we propose a query-based approach to this problem. Our approach allows users (maintainers or reverse engineers) to express a complex extraction task as a sequence of queries over the source program. Unlike conventional techniques, which are designed for extracting a specific aspect of a data design, our approach gives the user the control over what to extract and how it may be extracted in an exploratory manner. Given the variety of coding styles used in data intensive programs, we believe that the exploratory feature of our approach represents a plausible way forward for extracting data design from data intensive programs. We demonstrate the usefulness of our approach with a number of examples.