Program Comprehension Using Aspects

Aspect Oriented Programming (AOP) is a powerful reflective programming tool. In this paper we discuss how simple yet effective AOP constructs can be used to facilitate the process of program comprehension on three bodies of code. The first is the Java portion of a sizable third party legacy system for manipulating and displaying protein sequences entitled Friend. The second is Eclipse, an open source Java IDE. The third is Compress, a SPEC JVM98 Java benchmark. We study uses of the AspectJ AOP language to expose both dynamic and static software characteristics. Examples provided are actual code and data from our experience re-engineering the Friend software but the AOP techniques presented can be applied towards any system.

[1]  Stephen S. Yau,et al.  Some Stability Measures for Software Maintenance , 1979, IEEE Transactions on Software Engineering.

[2]  M. Dmitriev Application of the HotSwap Technology to Advanced Profiling , 2002 .

[3]  Jürgen Ebert,et al.  Program comprehension in multi-language systems , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[4]  Hidehiko Masuhara,et al.  Modeling Crosscutting in Aspect-Oriented Mechanisms , 2003, ECOOP.

[5]  Amy J. Ko,et al.  Individual differences in program comprehension strategies in unfamiliar programming systems , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

[6]  Rainer Koschke,et al.  Analyzing xfig using the Bauhaus tool , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[7]  Paolo Bellavista,et al.  Java-based On-line Monitoring of Heterogeneous Resources and Systems , 2000 .

[8]  Michael W. Godfrey Practical data exchange for reverse engineering frameworks: some requirements, some experience, some headaches , 2001, SOEN.

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

[10]  Terry A. Welch,et al.  A Technique for High-Performance Data Compression , 1984, Computer.

[11]  Mark N. Wegman,et al.  Execution Patterns in Object-Oriented Visualization , 1998, COOTS.

[12]  Kate Ehrlich,et al.  Knowledge and processes in the comprehension of computer programs. , 1988 .

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

[14]  Alexander Repenning,et al.  Tactile programming: a unified manipulation paradigm supporting program comprehension, composition and sharing , 1996, Proceedings 1996 IEEE Symposium on Visual Languages.

[15]  SERGEI KOJARSKI,et al.  Aspectual Reflection , .

[16]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[17]  David H. Lorenz,et al.  Unplugging Components using Aspects , 2003 .

[18]  Nancy Pennington,et al.  Comprehension strategies in programming , 1987 .

[19]  Steve Counsell,et al.  AutoCode: Using Memex-like Trails to Improve Program Comprehension , 2003, VISSOFT.

[20]  David H. Lorenz,et al.  Pluggable reflection: decoupling meta-interface and implementation , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[21]  Hausi A. Müller,et al.  Rigi User’s Manual , 1998 .