Abstract
Aspect-oriented programming (AOP) is a novel programming paradigm that aims at modularizing complex software. It embraces several mechanisms including (1) pointcuts and advice as well as (2) refinements and collaborations. Though all these mechanisms deal with crosscutting concerns, i.e., a special class of design and implementation problems that challenge traditional programming paradigms, they do so in different ways. In this article we explore their relationship and their impact on modularity, which is an important prerequisite for reliable and maintainable software. Our exploration helps researchers and practitioners to understand their differences and exposes which mechanism is best used for which problem.
Similar content being viewed by others
References
Alexander R (2003). The real costs of aspect-oriented programming. IEEE Softw 20(6): 92–93
Apel S (2007) The role of features and aspects in software development. PhD thesis, School of Computer Science, University of Magdeburg
Apel S, Batory D (2006) When to use features and aspects? A case study. In: Proceedings of the international conference on generative programming and component engineering (GPCE), ACM Press, New York, pp 59–68
Apel S, Rosenmüller M, Leich T, Saake G (2005) FeatureC++: on the symbiosis of feature-oriented and aspect-oriented programming. In: Proceedings of the international conference on generative programming and component engineering (GPCE), Lecture Notes in Computer Science, vol 3676. Springer, Heidelberg, pp 125–140
Apel S, Leich T, Saake G (2006) Aspectual mixin layers: aspects and features in concert. In: Proceedings of the International conference on software engineering (ICSE), ACM Press, New York, pp 122–131
Apel S, Kästner C, Trujillo S (2007) On the necessity of empirical studies in the assessment of modularization mechanisms for crosscutting concerns. In: ICSE workshop on assessment of contemporary modularization techniques (ACoM’07)
Aracic I, Gasiunas V, Mezini M and Ostermann K (2006). An overview of CaesarJ. Transactions on aspect-oriented software development I. Lect Notes Comput Sci 3880: 135–173
Batory D, Sarvela JN and Rauschmayer A (2004). Scaling step-wise refinement. IEEE Trans Softw Eng (TSE) 30(6): 355–371
Bergel A, Ducasse S, Nierstrasz O (2005) Classbox/J: controlling the scope of change in Java. In: Proceedings of the international conference on object-oriented programming, systems, languages, and applications (OOPSLA), ACM Press, New York, pp 177–189
Bracha G, Cook WR (1990) Mixin-Based Inheritance. In: Proceedings of the international conference on object-oriented programming, systems, languages, and applications (OOPSLA) and the European conference on object-oriented programming (ECOOP), ACM Press, New York, pp 303–311
Colyer A, Rashid A, Blair G (2004) On the separation of concerns in program families. Tech Rep COMP-001-2004, Computing Department, Lancaster University
Dijkstra EW (1976). A discipline of programming. Prentice Hall, Englewood Cliffs
Filman RE, Friedman DP (2005) Aspect-oriented programming is quantification and obliviousness. In: Aspect-oriented software development, Addison-Wesley, Reading, pp 21–35
Flatt M, Krishnamurthi S, Felleisen M (1998) Classes and Mixins. In: Proceedings of the international symposium on principles of programming languages (POPL), ACM Press, New York, pp 171–183
Hilsdale E, Hugunin J (2004) Advice weaving in AspectJ. In: Proceedings of the international conference on aspect-oriented software development (AOSD), ACM Press, New York, pp 26–35
Kästner C, Apel S, Batory D (2007) A case study implementing features using AspectJ. In: Proceedings of the international software product line conference (SPLC)
Kiczales G, Lamping J, Mendhekar A, Maeda C, Lopes CV, Loingtier JM, Irwin J (1997) Aspect-oriented programming. In: Proceedings of the European conference on object-oriented programming (ECOOP), lecture notes in computer science, vol 1241. Springer, Heidelberg, pp 220–242
Kiczales G, Hilsdale E, Hugunin J, Kersten M, Palm J, Griswold WG (2001) An overview of AspectJ. In: Proceedings of the European conference on object-oriented programming (ECOOP), lecture notes in computer science, vol 2072. Springer, Heidelberg, pp 327–353
Liu J, Batory D, Lengauer C (2006) Feature-oriented refactoring of legacy applications. In: Proceedings of the international conference on software engineering (ICSE), ACM Press, New York, pp 112–121
Lopez-Herrejon R (2006) Understanding feature modularity. PhD thesis, Department of Computer Sciences, The University of Texas at Austin
Lopez-Herrejon R, Batory D (2006) From crosscutting concerns to product lines: a function composition approach. Tech Rep TR-06-24, Department of Computer Sciences, The University of Texas at Austin
Lopez-Herrejon R, Batory D, Cook WR (2005) Evaluating support for features in advanced modularization technologies. In: Proceedings of the European conference on object-oriented programming (ECOOP), lecture notes in computer science, vol 3586. Springer, Heidelberg, pp 169–194
Madsen OL, Moller-Pedersen B (1989) Virtual classes: a powerful mechanism in object-oriented programming. In: Proceedings of the international conference on object-oriented programming, systems, languages, and applications (OOPSLA), ACM Press, New York, pp 397–406
Masuhara H, Kiczales G (2003) Modeling crosscutting in aspect-oriented mechanisms. In: Proceedings of the European conference on object-oriented programming (ECOOP), lecture notes in computer science, vol 2743, Springer, Heidelberg, pp 2–28
McDirmid S, Flatt M, Hsieh WC (2001) Jiazzi: New-age components for old-fashioned Java. In: Proceedings of the international conference on object-oriented programming, systems, languages, and applications (OOPSLA), ACM Press, New York, pp 211–222
Mezini M, Ostermann K (2004) Variability management with feature-oriented programming and aspects. In: Proceedings of the international symposium on foundations of software engineering (FSE), ACM Press, New York, pp 127–136
Nystrom N, Chong S, Myers AC (2004) Scalable extensibility via nested inheritance. In: Proceedings of the international conference on object-oriented programming, systems, languages, and applications (OOPSLA), ACM Press, New York, pp 99–115
Odersky M, Zenger M (2005) Scalable component abstractions. In: Proceedings of the international conference on object-oriented programming, systems, languages, and applications (OOPSLA), ACM Press, New York, pp 41–57
Parnas DL (1972). On the criteria to be used in decomposing systems into modules. Commun ACM (CACM) 15(12): 1053–1058
Rajan H, Sullivan KJ (2005) Classpects: unifying aspect- and object-oriented language design. In: Proceedings of the international conference on software engineering (ICSE), ACM Press, New York, pp 59–68
Spinczyk O, Lohmann D, Urban M (2005) AspectC++: an AOP extension for C++. Softw Developer’s J, 68–74
Steimann F (2005) Domain models are aspect free. In: Proceedings of the international conference on model driven engineering languages and systems (MoDELS/UML), lecture notes in computer science, vol 3713. Springer, Heidelberg, pp 171–185
Steimann F (2006) The paradoxical success of aspect-oriented programming. In: Proceedings of the international conference on object-oriented programming, systems, languages, and applications (OOPSLA), ACM Press, New York, pp 481–497
Störzer M, Graf J (2005) Using pointcut delta analysis to support evolution of aspect-oriented software. In: Proceedings of the international conference on software maintenance (ICSM), IEEE Computer Society, pp 653–656
Tarr P, Ossher H, Harrison W, Stanley M Sutton Jr (1999) N degrees of separation: multi-dimensional separation of concerns. In: Proceedings of the international conference on software engineering (ICSE), IEEE Computer Society, pp 107–119
Wand M, Kiczales G and Dutchyn C (2004). A semantics for advice and dynamic join points in aspect-oriented programming. ACM Trans Program Lang Syst (TOPLAS) 26(5): 890–910
Xin B, McDirmid S, Eide E, Hsieh WC (2004) A comparison of Jiazzi and AspectJ for feature-wise decomposition. Tech Rep UUCS-04-001, School of Computing, The University of Utah
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Apel, S., Kästner, C., Kuhlemann, M. et al. Pointcuts, advice, refinements, and collaborations: similarities, differences, and synergies. Innovations Syst Softw Eng 3, 281–289 (2007). https://doi.org/10.1007/s11334-007-0030-3
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11334-007-0030-3