Lightweight extraction of object models from bytecode

A program's object model captures the essence of its design. For some programs, no object model was developed during design; for others, an object model exists but may be out of sync with the code. The paper describes a tool that automatically extracts an object model from the class files of a Java program. Although the tool performs only a simple, heuristic analysis that is almost entirely local, the resulting object model is surprisingly accurate. The paper explains the form of the object model, the assumptions upon which the analysis is based, and its limitations, and evaluates the tool on a suite of sample programs.

[1]  Daniel Jackson Aspect: detecting bugs with abstract dependences , 1995, TSEM.

[2]  John Daniels,et al.  Designing Object Systems , 1994 .

[3]  David Notkin,et al.  Lightweight lexical source model extraction , 1996, TSEM.

[4]  Song C. Choi,et al.  Extracting and restructuring the design of large systems , 1990, IEEE Software.

[5]  Daniel Jackson,et al.  Alcoa: the Alloy constraint analyzer , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[6]  Jürgen Wolff von Gudenberg,et al.  Pattern-based design recovery of Java software , 1998, SIGSOFT '98/FSE-6.

[7]  NotkinDavid,et al.  Software reflexion models , 1995 .

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

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

[10]  Robert O'Callahan Scalable Program Analysis and Understanding Based on Type Inference , 1998 .

[11]  William E. Lorensen,et al.  Object-Oriented Modeling and Design , 1991, TOOLS.

[12]  Daniel Jackson,et al.  Redesigning Air Traffic Control: An Exercise in Software Design , 2000, IEEE Softw..

[13]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[14]  Panagiotis K. Linos,et al.  A tool for understanding object-oriented program dependencies , 1994, Proceedings 1994 IEEE 3rd Workshop on Program Comprehension- WPC '94.

[15]  Walter R. Bischofberger,et al.  Sniff (abstract): a pragmatic approach to a C++ programming environment , 1992, OOPSLA '92.

[16]  Michael Z. Spivey,et al.  The Z notation , 1989 .

[17]  Coln Atkinson,et al.  Object-oriented development: The fusion method , 1996 .

[18]  Desmond D'Souza,et al.  Objects, Components, and Frameworks with UML: The Catalysis Approach , 1998 .

[19]  Walter R. Bischofberger,et al.  Sniff—A Pragmatic Approach to a C++ Programming Environment 1 , 1992 .

[20]  David Notkin,et al.  Software reflexion models: bridging the gap between source and high-level models , 1995, SIGSOFT FSE.

[21]  Ivar Jacobson,et al.  The unified modeling language reference manual , 2010 .