ABSTRACT
Feature-Oriented Programming (FOP) decomposes complex software into features. Features are main abstractions in design and implementation. They reflect user requirements and incrementally refine one another. Although, features crosscut object-oriented architectures they fail to express all kinds of crosscutting concerns. This weakness is exactly the strength of aspects, the main abstraction mechanism of Aspect-Oriented Programming (AOP). In this article we contribute a systematic evaluation and comparison of both paradigms, AOP and FOP, with focus on incremental software development. It reveals that aspects and features are not competing concepts. In fact AOP has several strengths to improve FOP in order to implement crosscutting featuresSymmetrically, the development model of FOP can aid AOP in implementing incremental designs. Consequently, we propose the architectural integration of aspects and features in order to profit from both paradigms. We introduce aspectual mixin layers (AMLs), an implementation approach that realizes this symbiosis. A subsequent evaluation and a case study reveal that AMLs improve the crosscutting modularity of features as well as aspects become well integrated into incremental development style.
- J. Aldrich. Open Modules: Modular Reasoning About Advice. In ECOOP, 2005. Google ScholarDigital Library
- S. Apel and K. Böhm. Towards the Development of Ubiquitous Middleware Product Lines. In ASE'04 SEM Workshop, volume 3437 of LNCS, 2005. Google ScholarDigital Library
- S. Apel et al. FeatureC++: On the Symbiosis of Feature-Oriented and Aspect-Oriented Programming. In GPCE, 2005. Google ScholarDigital Library
- S. Apel, T. Leich, and G. Saake. Aspect Refinement and Bounding Quantification in Incremental Designs. In APSEC, 2005. Google ScholarDigital Library
- S. Apel, T. Leich, and G. Saake. Mixin-Based Aspect Inheritance. Technical Report 10, Department of Computer Science, University of Magdeburg, Germany, 2005.Google Scholar
- D. Batory and S. O'Malley. The Design and Implementation of Hierarchical Software Systems with Reusable Components. ACM TOSEM, 1(4), 1992. Google ScholarDigital Library
- D. Batory, J. N. Sarvela, and A. Rauschmayer. Scaling Step-Wise Refinement. IEEE TSE, 30(6), 2004. Google ScholarDigital Library
- J. Bosch. Superimposition: A Component Adaptation Technique. Information and Software Technology, 41(5), 1999.Google Scholar
- A. Colyer and A. Clement. Large-Scale AOSD for Middleware. In AOSD, 2004. Google ScholarDigital Library
- A. Colyer, A. Rashid, and G. Blair. On the Separation of Concerns in Program Families. Technical report, Computing Department, Lancaster University, 2004.Google Scholar
- K. Czarnecki and U. Eisenecker. Generative Programming: Methods, Tools, and Applications. Addison-Wesley, 2000. Google ScholarDigital Library
- S. Hanenberg and A. Schmidmeier. Idioms for Building Software Frameworks in AspectJ. In AOSD ACP4IS Workshop, 2003.Google Scholar
- S. Hanenberg and R. Unland. Parametric Introductions. In AOSD, 2003. Google ScholarDigital Library
- S. Herrmann. Object Teams: Improving Modularity for Crosscutting Collaborations. In NetObjectDays, 2002. Google ScholarDigital Library
- G. Kiczales et al. Aspect-Oriented Programming. In ECOOP, 1997.Google ScholarCross Ref
- G. Kiczales and M. Mezini. Aspect-Oriented Programming and Modular Reasoning. In ICSE, 2005. Google ScholarDigital Library
- G. Kniesel, T. Rho, and S. Hanenberg. Evolvable Pattern Implementations Need Generic Aspects. In ECOOP RAM-SE Workshop, 2004.Google Scholar
- T. Leich, S. Apel, and G. Saake. Using Step-Wise Refinement to Build a Flexible Lightweight Storage Manager. In ADBIS, 2005. Google ScholarDigital Library
- K. Lieberherr, D. Lorenz, and M. Mezini. Programming with Aspectual Components. Technical report, College of Computer Science, Northeastern University, 1999.Google Scholar
- K. Lieberherr, D. H. Lorenz, and J. Ovlinger. Aspectual Collaborations: Combining Modules and Aspects. The Computer Journal, 46(5), 2003.Google Scholar
- D. Lohmann, G. Blaschke, and O. Spinczyk. Generic Advice: On the Combination of AOP with Generative Programming in AspectC++. In GPCE, 2004.Google ScholarCross Ref
- R. Lopez-Herrejon, D. Batory, and W. Cook. Evaluating Support for Features in Advanced Modularization Technologies. In ECOOP, 2005. Google ScholarDigital Library
- R. Lopez-Herrejon, D. Batory, and C. Lengauer. A Disciplined Approach to Aspect Composition. In ACM SIGPLAN PEPM Workshop, 2006. Google ScholarDigital Library
- N. Loughran and A. Rashid. Framed Aspects: Supporting Variability and Configurability for AOP. In ICSR, 2004.Google ScholarCross Ref
- N. McEachen and R. T. Alexander. Distributing Classes with Woven Concerns: An Exploration of Potential Fault Scenarios. In AOSD, 2005. Google ScholarDigital Library
- M. Mezini and K. Lieberherr. Adaptive Plug-and-Play Components for Evolutionary Software Development. In OOPSLA, 1998. Google ScholarDigital Library
- M. Mezini and K. Ostermann. Conquering Aspects with Caesar. In AOSD, 2003. Google ScholarDigital Library
- M. Mezini and K. Ostermann. Variability Management with Feature-Oriented Programming and Aspects. ACM SIGSOFT FSE-12, 2004. Google ScholarDigital Library
- M. Mezini, L. Seiter, and K. Lieberherr. Component Integration with Pluggable Composite Adapters. Software Architectures and Component Technology: The State of the Art in Research and Practice, 2000.Google Scholar
- D. L. Parnas. Designing Software for Ease of Extension and Contraction. IEEE TSE, SE-5(2), 1979.Google ScholarDigital Library
- E. Pulvermüller, A. Speck, and A. Rashid. Implementing Collaboration-Based Designs Using Aspect-Oriented Programming. In TOOLS, 2000.Google ScholarCross Ref
- Y. Smaragdakis and D. Batory. Mixin Layers: An Object-Oriented Implementation Technique for Refinements and Collaboration-Based Designs. ACM TOSEM, 11(2), 2002. Google ScholarDigital Library
- O. Spinczyk, D. Lohmann, and M. Urban. AspectC++: An AOP Extension for C++. Software Developer's Journal, 2005(5), 2005.Google Scholar
- P. Tarr et al. N Degrees of Separation: Multi-Dimensional Separation of Concerns. In ICSE, 1999. Google ScholarDigital Library
- N. Wirth. Program Development by Stepwise Refinement. CACM, 14(4), 1971. Google ScholarDigital Library
Index Terms
- Aspectual mixin layers: aspects and features in concert
Recommendations
An Aspectual State Model and its Realization Based on AOP
WCSE '09: Proceedings of the 2009 WRI World Congress on Software Engineering - Volume 03Aspect-Oriented Programming (AOP) is an emerging software engineering paradigm that improves separation of cross-cutting concerns as aspect in a program. Existing Object-Oriented Programming (OOP) languages suffer from a serious limitation in ...
Aspectual Caml: an aspect-oriented functional language
ICFP '05: Proceedings of the tenth ACM SIGPLAN international conference on Functional programmingWe propose an aspect-oriented programming (AOP) language called Aspectual Caml based on a strongly-typed functional language Objective Caml with two AOP mechanisms similar to those in AspectJ language. This paper describes the design and implementation ...
Interaction awareness for aspect refactoring
AOAsia '13: Proceedings of the 8th international workshop on Advanced modularization techniquesAspect Refactoring includes two phases: aspect mining and aspect extraction. Aspect mining is used to identify crosscutting concerns from the OO program. Aspect extraction extracts the identified crosscutting concerns from the OO program and refactors ...
Comments