Skip to main content
Log in

Pointcuts, advice, refinements, and collaborations: similarities, differences, and synergies

  • Original Paper
  • Published:
Innovations in Systems and Software Engineering Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Alexander R (2003). The real costs of aspect-oriented programming. IEEE Softw 20(6): 92–93

    Article  Google Scholar 

  2. Apel S (2007) The role of features and aspects in software development. PhD thesis, School of Computer Science, University of Magdeburg

  3. 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

  4. 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

  5. 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

  6. 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)

  7. 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

    Article  Google Scholar 

  8. Batory D, Sarvela JN and Rauschmayer A (2004). Scaling step-wise refinement. IEEE Trans Softw Eng (TSE) 30(6): 355–371

    Article  Google Scholar 

  9. 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

  10. 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

  11. Colyer A, Rashid A, Blair G (2004) On the separation of concerns in program families. Tech Rep COMP-001-2004, Computing Department, Lancaster University

  12. Dijkstra EW (1976). A discipline of programming. Prentice Hall, Englewood Cliffs

    MATH  Google Scholar 

  13. Filman RE, Friedman DP (2005) Aspect-oriented programming is quantification and obliviousness. In: Aspect-oriented software development, Addison-Wesley, Reading, pp 21–35

  14. 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

  15. 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

  16. 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)

  17. 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

  18. 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

  19. 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

  20. Lopez-Herrejon R (2006) Understanding feature modularity. PhD thesis, Department of Computer Sciences, The University of Texas at Austin

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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

  26. 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

  27. 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

  28. 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

  29. Parnas DL (1972). On the criteria to be used in decomposing systems into modules. Commun ACM (CACM) 15(12): 1053–1058

    Article  Google Scholar 

  30. 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

  31. Spinczyk O, Lohmann D, Urban M (2005) AspectC++: an AOP extension for C++. Softw Developer’s J, 68–74

  32. 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

  33. 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

  34. 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

  35. 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

  36. 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

    Article  Google Scholar 

  37. 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

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Sven Apel.

Rights and permissions

Reprints 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

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11334-007-0030-3

Keywords

Navigation