Bogart

Portability by automatic translation: A large-scale case study. Many organizations today are facing the problem of software migration: porting existing code to new architectures and operating systems. In many cases, such legacy code is written in a mainframe-specific assembly language and needs to be translated to a high-level language in order to be run on different architectures. Our research addresses this problem in a large-scale, real-life case study. We built an automatic tool, called Bogart, that translates IBM 370 assembly language programs to C. Bogart is based on Artificial Intelligence tools and techniques such as the Plan Calculus, translation by abstraction and re-implementation, program transformations, constraint propagation, and pattern recognition. Bogart was tested on real legacy code of a large commercial application: a database system and application generator, the main product of Sapiens International, Ltd. Bogart is compared with the literal brute-force translator initially developed by Sapiens, and is found to be superior on all counts, including portability of the resulting code, the amount of manual preparation required, and code size and speed. The results are shown for several small examples as well as a typical module consisting of several thousand lines of code from the Sapiens application. Bogart also seems to be more comprehensive than other reengineering systems reported in the literature. Bogart’s analysis technology has recently been applied with significant commercial success to the analysis and remediation of Year 2000 bugs. This study demonstrates that certain AI techniques can be carefully combined to create industrial-strength applications that solve acute problems of Software Engineering. The fact that the research was carried out in industry on a real test case also revealed some of the problems of this approach. One example is the higher development cost of the AI approach, and the further effort that will be needed in order to extend it. (On the other hand, the literal translator has reached the end of its road, and cannot be enhanced at all.) Another problem we discovered is the difficulty of debugging the code produced by Bogart. The literal translator preserved the structure of the original program, whereas Bogart abstracted the code in various ways. As a result, the original assembly-language programmers found it harder to debug Bogart’s code. This reaffirms the need for an explanation facility in intelligent applications.

Keywords for this software

Anything in here will be replaced on browsers that support the canvas element