How AspectJ is Used: An Analysis of Eleven AspectJ Programs

While it is well-known that crosscutting concerns occur in many software projects, little is known on how aspect-oriented programming, and in particular AspectJ, have been used. In this paper, we analyze eleven AspectJ programs by different authors to answer the questions: which mechanisms are used, to what extent, and for what purpose. We found the code of these programs to be on average 86% object-oriented, 12% basic crosscutting mechanisms (introductions and method extensions), and 2% advanced crosscutting mechanisms (homogeneous advice or advanced dynamic advice). Based on these results we initiate a discussion on the trade-off between expressiveness and simplicity of languages that support the modularization of crosscutting concerns.

[1]  Erik Ernst,et al.  Higher-Order Hierarchies , 2003, ECOOP.

[2]  Mira Mezini,et al.  An Overview of CaesarJ , 2006, LNCS Trans. Aspect Oriented Softw. Dev..

[3]  Don Batory,et al.  From Crosscutting Concerns to Product Lines : A Function Composition Approach , 2006 .

[4]  Don Batory,et al.  Scaling step-wise refinement , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[5]  Peter Sestoft,et al.  Zero-Overhead Composable Aspects for .NET , 2007, Lipari Summer School.

[6]  Carlos José Pereira de Lucena,et al.  Modularizing design patterns with aspects: a quantitative study , 2005, AOSD '05.

[7]  Hans-Arno Jacobsen,et al.  Resolving feature convolution in middleware systems , 2004, OOPSLA.

[8]  Shirley Dex,et al.  JR 旅客販売総合システム(マルス)における運用及び管理について , 1991 .

[9]  Brian Foote,et al.  Designing Reusable Classes , 2001 .

[10]  Daniel P. Friedman,et al.  Aspect-Oriented Programming is Quantification and Obliviousness , 2000 .

[11]  Gordon S. Blair,et al.  On the Separation of Concerns in Program Families , 2004 .

[12]  J. L. Contreras,et al.  "Technology of Object-Oriented Languages and Systems , 2001 .

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

[14]  Yannis Smaragdakis,et al.  Mixin layers: an object-oriented implementation technique for refinements and collaboration-based designs , 2002, TSEM.

[15]  William R. Cook,et al.  Mixin-based inheritance , 1990, OOPSLA/ECOOP '90.

[16]  Wolfgang Schröder-Preikschat,et al.  A quantitative analysis of aspects in the eCos kernel , 2006, EuroSys.

[17]  Kevin Lano,et al.  Slicing of UML models using model transformations , 2010, MODELS'10.

[18]  Matthew Flatt,et al.  Jiazzi: new-age components for old-fasioned Java , 2001, OOPSLA '01.

[19]  Andrew C. Myers,et al.  Scalable extensibility via nested inheritance , 2004, OOPSLA.

[20]  Jan Bosch Generative and Component-Based Software Engineering , 2001, Lecture Notes in Computer Science.

[21]  Harold Ossher,et al.  Combination of inheritance hierarchies , 1992, OOPSLA '92.

[22]  Sven Apel,et al.  When to use features and aspects?: a case study , 2006, GPCE '06.

[23]  Martin Odersky,et al.  Scalable component abstractions , 2005, OOPSLA '05.

[24]  Cláudio Sant'Anna,et al.  On the Impact of Aspectual Decompositions on Design Stability: An Empirical Study , 2007, ECOOP.

[25]  James Noble,et al.  Relationship aspects , 2006, AOSD.

[26]  Brian Campbell,et al.  Amortised Memory Analysis Using the Depth of Data Structures , 2009, ESOP.

[27]  Mira Mezini,et al.  Variability management with feature-oriented programming and aspects , 2004, SIGSOFT '04/FSE-12.

[28]  Elizabeth A. Kendall,et al.  Role model designs and implementations with aspect-oriented programming , 1999, OOPSLA '99.

[29]  David Notkin,et al.  Using role components in implement collaboration-based designs , 1996, OOPSLA '96.

[30]  Sven Apel,et al.  Measuring and Characterizing Crosscutting in Aspect-Based Programs: Basic Metrics and Case Studies , 2007, FASE.

[31]  Don S. Batory,et al.  P2: A Lightweight DBMS Generator , 1997, Journal of Intelligent Information Systems.

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

[33]  Andrew Clement,et al.  Large-scale AOSD for middleware , 2004, AOSD '04.

[34]  Olaf Spinczyk,et al.  AspectC++ – An AOP Extension for C++ , 2005 .

[35]  Peter G. Harrison,et al.  Functional Programming , 1988 .

[36]  Brenda S. Baker,et al.  On finding duplication and near-duplication in large software systems , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[37]  Ron Cytron,et al.  Footprint and feature management using aspect-oriented programming techniques , 2002, LCTES/SCOPES '02.

[38]  Ole Lehrmann Madsen,et al.  Virtual classes: a powerful mechanism in object-oriented programming , 1989, OOPSLA 1989.

[39]  Oscar Díaz,et al.  Feature refactoring a multi-representation program into a product line , 2006, GPCE '06.

[40]  David Walker,et al.  Harmless advice , 2006, POPL '06.

[41]  Sven Apel,et al.  A Case Study Implementing Features Using AspectJ , 2007, 11th International Software Product Line Conference (SPLC 2007).

[42]  Friedrich Steimann,et al.  Domain models are aspect free , 2005, MoDELS'05.

[43]  Penny Grubb,et al.  Software maintenance , 1996 .

[44]  Dimitri Konstantas,et al.  Object-Oriented Information Systems , 2002, Lecture Notes in Computer Science.

[45]  Stefan Hanenberg,et al.  Roles and Aspects: Similarities, Differences, and Synergetic Potential , 2002, OOIS.

[46]  Oscar Nierstrasz,et al.  Traits: A mechanism for fine-grained reuse , 2006, TOPL.

[47]  Oscar Nierstrasz,et al.  Context-oriented Programming , 2008, J. Object Technol..

[48]  H. Rajan,et al.  Classpects: unifying aspect- and object-oriented language design , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[49]  Don S. Batory,et al.  Creating reference architectures: an example from avionics , 1995, SSR '95.

[50]  Carlos José Pereira de Lucena,et al.  Separation of Concerns in Multi-agent Systems: An Empirical Study , 2003, SELMAS.

[51]  Thomas Leich,et al.  FeatureC++: on the symbiosis of feature-oriented and aspect-oriented programming , 2005, GPCE'05.

[52]  Gary T. Leavens,et al.  MultiJava: modular open classes and symmetric multiple dispatch for Java , 2000, OOPSLA '00.

[53]  Thomas Leich,et al.  Aspectual Feature Modules , 2008, IEEE Transactions on Software Engineering.

[54]  Lionel C. Briand,et al.  Instrumenting contracts with aspect-oriented programming to increase observability and support debugging , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[55]  Gilles Dowek,et al.  Principles of programming languages , 1981, Prentice Hall International Series in Computer Science.

[56]  Sven Apel,et al.  Die Rolle von Features und Aspekten in der Softwareentwicklung (The Role of Features and Aspects in Software Development) , 2008, it Inf. Technol..

[57]  Mitchell Wand A Semantics for Advice and Dynamic Join Points in Aspect-Oriented Programming , 2001, SAIG.

[58]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[59]  Don S. Batory,et al.  The design and implementation of hierarchical software systems with reusable components , 1992, TSEM.

[60]  Mira Mezini,et al.  Expressive Pointcuts for Increased Modularity , 2005, ECOOP.

[61]  Andreas Rausch,et al.  Journal of Object Technology , 2002 .

[62]  Shmuel Katz,et al.  Superimpositions and Aspect-oriented Programming , 2003, Comput. J..

[63]  Robert Bruce Findler,et al.  Modular object-oriented programming with units and mixins , 1998, ICFP '98.

[64]  Maximilian Störzer Impact analysis for aspectJ - a critical analysis and tool-based ppproach to AOP , 2007 .

[65]  Carlos José Pereira de Lucena,et al.  Quantifying the Effects of Aspect-Oriented Programming: A Maintenance Study , 2006, 2006 22nd IEEE International Conference on Software Maintenance.

[66]  Kathryn A. Ingle,et al.  Reverse Engineering , 1996, Springer US.

[67]  Gary T. Leavens,et al.  Observers and Assistants: A Proposal for Modular Aspect-Oriented Reasoning , 2002 .

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

[69]  Elke Pulvermüller,et al.  Implementing collaboration-based designs using aspect-oriented programming , 2000, Proceedings. 34th International Conference on Technology of Object-Oriented Languages and Systems - TOOLS 34.

[70]  R. T. Alexander,et al.  The real costs of aspect-oriented programming , 2003 .

[71]  Charles W. Krueger,et al.  Software reuse , 1992, CSUR.

[72]  Hidehiko Masuhara,et al.  Dataflow Pointcut in Aspect-Oriented Programming , 2003, APLAS.

[73]  Oscar Nierstrasz,et al.  Classbox/J: controlling the scope of change in Java , 2005, OOPSLA '05.

[74]  Gregor Kiczales,et al.  Back to the future: a retroactive study of aspect evolution in operating system code , 2003, AOSD '03.

[75]  Harold Ossher,et al.  Subject-oriented programming: a critique of pure objects , 1993, OOPSLA '93.

[76]  Roberto Erick Lopez-Herrejon,et al.  Evaluating Support for Features in Advanced Modularization Technologies , 2005, ECOOP.

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

[78]  Baowen Xu,et al.  Measuring Aspect Cohesion , 2004, FASE.

[79]  Friedrich Steimann The paradoxical success of aspect-oriented programming , 2006, OOPSLA '06.

[80]  David Notkin,et al.  Decoupling change from design , 1996, SIGSOFT '96.

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

[82]  Jörgen Hansson,et al.  Empowering configurable QoS management in real-time systems , 2005, AOSD '05.

[83]  Jia Liu,et al.  Feature oriented refactoring of legacy applications , 2006, ICSE.

[84]  Karl J. Lieberherr,et al.  Aspectual Collaborations: Combining Modules and Aspects , 2003, Comput. J..

[85]  Mourad Badri,et al.  A Cohesion Measure for Aspects , 2006, J. Object Technol..

[86]  Eric Eide,et al.  A comparison of Jiazzi and AspectJ for feature-wise decomposition , 2004 .

[87]  Stephan Herrmann,et al.  Object Teams: Improving Modularity for Crosscutting Collaborations , 2002, NetObjectDays.

[88]  Shmuel Katz Aspect Categories and Classes of Temporal Properties , 2006, LNCS Trans. Aspect Oriented Softw. Dev..

[89]  Perdita Stevens,et al.  Modelling Recursive Calls with UML State Diagrams , 2003, FASE.

[90]  Don S. Batory,et al.  Achieving extensibility through product-lines and domain-specific languages: a case study , 2000, TSEM.

[91]  Douglas R. Smith A Generative Approach to Aspect-Oriented Programming , 2004, GPCE.