Recovering Data Models via Guarded Dependences

This paper presents an algorithm for reverse engineering semantically sound object-oriented data models from programs written in weakly-typed languages like COBOL. Our inference is based on a novel form of guarded transitive data dependence, and improves upon prior semantics-based model inference algorithms by producing simpler, easier to understand, models, and by inferring them more efficiently.

[1]  Aniello Cimitile,et al.  Recovering a Conceptual Data Model from COBOL Code , 1996, SEKE.

[2]  Frank Tip,et al.  Class hierarchy specialization , 2000, Acta Informatica.

[3]  Rupak Majumdar,et al.  State of the Union: Type Inference Via Craig Interpolation , 2007, TACAS.

[4]  Saurabh Sinha,et al.  Semantics-based reverse engineering of object-oriented data models , 2006, ICSE '06.

[5]  Fritz Henglein,et al.  AnnoDomini: from type theory to Year 2000 conversion tool , 1999, POPL '99.

[6]  Thomas W. Reps,et al.  Analyzing Memory Accesses in x86 Executables , 2004, CC.

[7]  Christopher G. Lasater,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[8]  Helen M. Edwards,et al.  Deriving a logical data model for a system using the RECAST method , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[9]  Frank Tip,et al.  Understanding class hierarchies using concept analysis , 2000, TOPL.

[10]  Gregor Snelting,et al.  Efficient path conditions in dependence graphs for software safety analysis , 2006, TSEM.

[11]  Robert O'Callahan,et al.  Generalized aliasing as a basis for program analysis tools , 2001 .

[12]  Robert O'Callahan,et al.  Lackwit: A Program Understanding Tool Based on Type Inference , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[13]  David Walker,et al.  The next 700 data description languages , 2006, POPL '06.

[14]  Cyril S. Ku,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[15]  Philippe Thiran,et al.  Wrapper development for legacy data reuse , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[16]  Satish Chandra,et al.  Dependent Types for Program Understanding , 2005, TACAS.

[17]  Frank Tip,et al.  Aggregate structure identification and its application to program analysis , 1999, POPL '99.

[18]  Arie van Deursen,et al.  An empirical study into COBOL type inferencing , 2001, Sci. Comput. Program..

[19]  Arie van Deursen,et al.  Documenting software systems using types , 2006, Sci. Comput. Program..

[20]  Thomas W. Reps,et al.  Precise interprocedural dataflow analysis via graph reachability , 1995, POPL '95.

[21]  Arie van Deursen,et al.  Type inference for COBOL systems , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[22]  Satish Chandra,et al.  Technical forum: Using logical data models for understanding and transforming legacy business applications , 2006, IBM Syst. J..

[23]  Thomas W. Reps,et al.  Extracting Output Formats from Executables , 2006, 2006 13th Working Conference on Reverse Engineering.

[24]  Aniello Cimitile,et al.  Decomposing legacy systems into objects: an eclectic approach , 2001, Inf. Softw. Technol..

[25]  Leon Moonen,et al.  Types and concept analysis for legacy systems , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.

[26]  Helen M. Edwards,et al.  Recast: reverse engineering from COBOL to SSADM specification , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[27]  Sorin Lerner,et al.  ESP: path-sensitive program verification in polynomial time , 2002, PLDI '02.