Augmenting static source views in IDEs with dynamic metrics

Mainstream IDEs such as Eclipse support developers in managing software projects mainly by offering static views of the source code. Such a static perspective neglects any information about runtime behavior. However, object-oriented programs heavily rely on polymorphism and late-binding, which makes them difficult to understand just based on their static structure. Developers thus resort to debuggers or profilers to study the system's dynamics. However, the information provided by these tools is volatile and hence cannot be exploited to ease the navigation of the source space. In this paper we present an approach to augment the static source perspective with dynamic metrics such as precise runtime type information, or memory and object allocation statistics. Dynamic metrics can leverage the understanding for the behavior and structure of a system. We rely on dynamic data gathering based on aspects to analyze running Java systems. By solving concrete use cases we illustrate how dynamic metrics directly available in the IDE are useful. We also comprehensively report on the efficiency of our approach to gather dynamic metrics.

[1]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[2]  Janice Singer,et al.  NavTracks: supporting navigation in software maintenance , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[3]  Welf Löwe Understanding Software – Static and Dynamic Aspects , 2001 .

[4]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[5]  John Whaley,et al.  A portable sampling-based profiler for Java virtual machines , 2000, JAVA '00.

[6]  Stéphane Ducasse,et al.  Dynamic Type Inference to Support Object-Oriented Reenginerring in Smalltalk , 1998, ECOOP Workshops.

[7]  Norman Wilde,et al.  Maintenance Support for Object-Oriented Programs , 1992, IEEE Trans. Software Eng..

[8]  James R. Larus,et al.  Exploiting hardware performance counters with flow and context sensitive profiling , 1997, PLDI '97.

[9]  Matthew Arnold,et al.  A framework for reducing the cost of instrumented code , 2001, PLDI '01.

[10]  Steven P. Reiss Visualizing Java in action , 2003, SoftVis '03.

[11]  M. Roper,et al.  Object-oriented inspection in the face of delocalisation , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[12]  Mikhail Dmitriev Profiling Java applications using code hotswapping and dynamic call graph revelation , 2004, WOSP '04.

[13]  Walter Binder,et al.  Aspect weaving in standard Java class libraries , 2008, PPPJ '08.

[14]  Mik Kersten,et al.  Mylar: a degree-of-interest model for IDEs , 2005, AOSD '05.

[15]  Sheng Liang,et al.  Java Virtual Machine Profiler Interface , 2000, IBM Syst. J..

[16]  Laurie Hendren,et al.  Dynamic metrics for java , 2003, OOPSLA 2003.

[17]  Michael Desmond,et al.  Fluid Source Code Views , 2006, 14th IEEE International Conference on Program Comprehension (ICPC'06).

[18]  Walter Binder,et al.  Flexible calling context reification for aspect-oriented programming , 2009, AOSD '09.

[19]  S. P. Lloyd,et al.  Least squares quantization in PCM , 1982, IEEE Trans. Inf. Theory.

[20]  Andrew A. Chien,et al.  Precise concrete type inference for object-oriented languages , 1994, OOPSLA 1994.

[21]  Oscar Nierstrasz,et al.  Consistent Layout for Thematic Software Maps , 2008, 2008 15th Working Conference on Reverse Engineering.

[22]  Walter Binder,et al.  Advanced Java bytecode instrumentation , 2007, PPPJ.

[23]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[24]  Gustavo Alonso,et al.  Just-in-time aspects: efficient dynamic weaving for Java , 2003, AOSD '03.

[25]  Laurie J. Hendren,et al.  *J: a tool for dynamic analysis of Java programs , 2003, OOPSLA '03.

[26]  Oscar Nierstrasz,et al.  Supporting task-oriented navigation in IDEs with configurable HeatMaps , 2009, 2009 IEEE 17th International Conference on Program Comprehension.