This Article 
 Bibliographic References 
 Add to: 
Automatic Extraction of Heap Reference Properties in Object-Oriented Programs
May/June 2009 (vol. 35 no. 3)
pp. 305-324
Brian Demsky, University of California, Irvine, Irvine
Martin Rinard, Massachusetts Institute of Technology, Cambridge
We present a new technique for helping developers understand heap referencing properties of object-oriented programs and how the actions of the program affect these properties. Our dynamic analysis uses the aliasing properties of objects to synthesize a set of roles; each role represents an abstract object state intended to be of interest to the developer. We allow the developer to customize the analysis to explore the object states and behavior of the program at multiple different and potentially complementary levels of abstraction. The analysis uses roles as the basis for three abstractions: role transition diagrams, which present the observed transitions between roles and the methods responsible for the transitions; role relationship diagrams, which present the observed referencing relationships between objects playing different roles; and enhanced method interfaces, which present the observed roles of method parameters. Together, these abstractions provide useful information about important object and data structure properties and how the actions of the program affect these properties. We have implemented the role analysis and have used this implementation to explore the behavior of several Java programs. Our experience indicates that, when combined with a powerful graphical user interface, roles are a useful abstraction for helping developers explore and understand the behavior of object-oriented programs.

[1] G. Ammons, R. Bodik, and J.R. Larus, “Mining Specifications,” Proc. 29th Ann. ACM Symp. Principles of Programming Languages, 2002.
[2] R. Brooks, “Towards a Theory of the Comprehension of Computer Programs,” Int'l J. Man-Machine Studies, vol. 18, pp.543-554, 1983.
[3] J.E. Cook and A.L. Wolf, “Discovering Models of Software Processes from Event-Based Data,” ACM Trans. Software Eng. and Methodology, vol. 7, no. 3, pp.215-249, 1998.
[4] W. De Pauw, G. Sevitsky, and E. Jensen, “Jinsight: A Tool for Visualizing the Execution of Java Programs,” libraryj-jinsight/, 2009.
[5] B. Demsky and M. Rinard, “Role-Based Exploration of Object-Oriented Programs,” Proc. Int'l Conf. Software Eng., May 2002.
[6] J. Ellson, E. Gansner, E. Koutsofios, and S. North, “Graphviz,” , 2009.
[7] D.R. Engler, D.Y. Chen, and A. Chou, “Bugs as Inconsistent Behavior: A General Approach to Inferring Errors in Systems Code,” Proc. Symp. Operating Systems Principles, pp.57-72, 2001.
[8] M.D. Ernst, A. Czeisler, W.G. Griswold, and D. Notkin, “Quickly Detecting Relevant Program Invariants,” Proc. Int'l Conf. Software Eng., pp.449-458, 2000.
[9] M.D. Ernst, Y. Kataoka, W.G. Griswold, and D. Notkin, “Dynamically Discovering Pointer-Based Program Invariants,” Technical Report UW-CSE-99-11-02, Univ. of Washington, Nov. 1999.
[10] R. Familiar, “Adaptive Role Playing,” adaptive-patternsarp-bofam-checked.html , 2009.
[11] M. Fowler, “Dealing with Roles,” http://www.martinfowler. com/apsupproles.pdf , July 1997.
[12] D. Jackson, “Alloy: A Lightweight Object Modelling Notation,” Technical Report 797, Laboratory for Computer Science, Massachusetts Inst. of Tech nology, 2000.
[13] D. Jackson and J. Chapin, “Redesigning Air-Traffic Control: A Case Study in Software Design,” IEEE Software, vol. 17, no. 3, pp.63-70, May/June 2000.
[14] D. Jackson and A. Waingold, “Lightweight Extraction of Object Models from Bytecode,” Proc. Int'l Conf. Software Eng., pp.194-202, 1999.
[15] B. Jacobs, “Patterns Using Procedural/Relational Paradigm,” , 2009.
[16] J. Korn, Y.-F. Chen, and E. Koutsofios, “Chava: Reverse Engineering and Tracking of Java Applets,” Proc. Sixth Working Conf. Reverse Eng., pp.314-325, Oct. 1999.
[17] T. Kremenek, P. Twohey, G. Back, A. Ng, and D. Engler, “From Uncertainty to Belief: Inferring the Specification within,” Proc. Seventh Conf. USENIX Symp. Operating Systems Design and Implementation, 2006.
[18] V. Kuncak, P. Lam, and M. Rinard, “Role Analysis,” Proc. 29th Ann. ACM Symp. Principles of Programming Languages, 2002.
[19] Z. Li and Y. Zhou, “Pr-Miner: Automatically Extracting Implicit Programming Rules and Detecting Violations in Large Software Code,” Proc. 10th European Software Eng. Conf. Held Jointly with 13th ACM Special Interest Group on Software Eng. Int'l Symp. Foundations of Software Eng., 2005.
[20] M.G. Nanda, C. Grothoff, and S. Chandra, “Deriving Object Typestates in the Presence of Inter-Object References,” Proc. 20th Ann. ACM SIGPLAN Conf. Object Oriented Programming, Systems, Languages, and Applications, 2005.
[21] R. O'Callahan, “Generalized Aliasing as a Basis for Program Analysis Tools,” PhD thesis, Carnegie Mellon School of Computer Science, 2002.
[22] R. O'Callahan and D. Jackson, “Lackwit: A Program Understanding Tool Based on Type Inference,” Proc. Int'l Conf. Software Eng., pp.338-348, 1997.
[23] N. Pennington, “Comprehension Strategies in Programming,” Proc. Second Workshop Empirical Studies of Programmers, pp.100-112, 1987.
[24] M.K. Ramanathan, A. Grama, and S. Jagannathan, “Path-Sensitive Inference of Function Precedence Protocols,” Proc. 29th Int'l Conf. Software Eng., pp.240-250, 2007.
[25] Rational Inc. “The Unified Modeling Language,” http://www. rational.comuml, 2009.
[26] W.E. Riddle, J. Sayler, A. Segal, and J. Wileden, “An Introduction to The Dream Software Design System,” SIGSOFT Software Eng. Notes, vol. 2, no. 4, pp.11-24, July 1977.
[27] S. Shoham, E. Yahav, S. Fink, and M. Pistoia, “Static Specification Mining Using Automata-Based Abstractions,” Proc. 2007 Int'l Symp. Software Testing and Analysis, 2007.
[28] Sun Microsystems. “Java Virtual Machine Profiler Interface (JVMPI),” guidejvmpi/, 2009.
[29] A. Wasylkowski, A. Zeller, and C. Lindig, “Detecting Object Usage Anomalies,” Proc. Sixth Joint Meeting of the European Software Eng. Conf. and the ACM SIGSOFT Symp. Foundations of Software Eng., pp.35-44, 2007.
[30] J. Whaley, M.C. Martin, and M.S. Lam, “Automatic Extraction of Object-Oriented Component Interfaces,” Proc. 2002 ACM SIGSOFT Int'l Symp. Software Testing and Analysis, 2002.

Index Terms:
Program understanding, roles, design recovery.
Brian Demsky, Martin Rinard, "Automatic Extraction of Heap Reference Properties in Object-Oriented Programs," IEEE Transactions on Software Engineering, vol. 35, no. 3, pp. 305-324, May-June 2009, doi:10.1109/TSE.2008.91
Usage of this product signifies your acceptance of the Terms of Use.