A formal representation for plans in the programmer's apprentice
Readings in artificial intelligence and software engineering
Program Translation Via Abstraction and Reimplementation
IEEE Transactions on Software Engineering
Interprocedural slicing using dependence graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Physical design equivalencies in database conversion
Communications of the ACM
The programmer's apprentice
Automated program recognition: a feasibility demonstration
Artificial Intelligence
Methodology for schema translation from hierarchical or network into relational
Information and Software Technology
Automated assistance for program restructuring
ACM Transactions on Software Engineering and Methodology (TOSEM)
Portability by automatic translation: a large-scale case study
Artificial Intelligence
Decompiling CODASYL DML into retional queries
ACM Transactions on Database Systems (TODS)
Program Improvement by Source-to-Source Transformation
Journal of the ACM (JACM)
Program Understanding in Databases Reverse Engineering
DEXA '98 Proceedings of the 9th International Conference on Database and Expert Systems Applications
Data Reverse Engineering: A Historical Survey
WCRE '00 Proceedings of the Seventh Working Conference on Reverse Engineering (WCRE'00)
Automatic Analysis of the Logical Structure of Programs
Automatic Analysis of the Logical Structure of Programs
SEMIAUTOMATIC TRANSLATION OF COBOL INTO HIBOL
SEMIAUTOMATIC TRANSLATION OF COBOL INTO HIBOL
Impact analysis of database schema changes
Proceedings of the 30th international conference on Software engineering
Improving slice accuracy by compression of data and control flow paths
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Towards a Modernization Process for Secure Data Warehouses
DaWaK '09 Proceedings of the 11th International Conference on Data Warehousing and Knowledge Discovery
A methodology for database reengineering to web services
ECMDA-FA'06 Proceedings of the Second European conference on Model Driven Architecture: foundations and Applications
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Hi-index | 0.00 |
Old-generation database models, such as the indexed-sequential, hierarchical, or network models, provide record-level access to their data, with all application logic residing in the hosting program. In contrast, relational databases can perform complex operations, such as filter, aggregation, and join, on multiple records without an external specification of the record-access logic. Programs written for relational databases attempt to move as much of the application logic as possible into the database, in order to make the most of the optimizations performed internally by the database.This conceptual gap between the programming styles makes automatic high-quality translation of programs written for the older database models to the relational model difficult. It is not enough to convert just the database-access operations, since this would result in unacceptably inefficient programs. It is necessary to convert parts of the application logic from the procedural style of the hosting program (which is almost always Cobol) to the declarative style of SQL.This article describes an automatic system, called MIDAS, that performs high-quality reengineering of legacy database programs in this way. MIDAS is based on the paradigm of translation by abstraction, transformation, and reimplementation. The abstract representation is based on the Plan Calculus, with the addition of Query Graphs, introduced in this article in order to abstract the temporal behavior of database access patterns.The results of MIDAS's translation were found to be superior to those of the naive translation that only converts database-access operations in terms of readability, size of code, speed, and network data traffic. Initial industrial experience with MIDAS also demonstrates the high quality of its translations on large-scale programs.