Skip to main content

FeatureC++: On the Symbiosis of Feature-Oriented and Aspect-Oriented Programming

  • Conference paper
Generative Programming and Component Engineering (GPCE 2005)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 3676))

Abstract

This paper presents FeatureC++, a novel language extension to C++ that supports Feature-Oriented Programming (FOP) and Aspect-Oriented Programming (AOP). Besides well-known concepts of FOP languages, FeatureC++ contributes several novel FOP language features, in particular multiple inheritance and templates for generic programming. Furthermore, FeatureC++ solves several problems regarding incremental software development by adopting AOP concepts. Starting our considerations on solving these problems, we give a summary of drawbacks and weaknesses of current FOP languages in expressing incremental refinements. Specifically, we outline five key problems and present three approaches to solve them: Multi Mixins, Aspectual Mixin Layers, and Aspectual Mixins that adopt AOP concepts in different ways. We use FeatureC++ as a representative FOP language to explain these three approaches. Finally, we present a case study to clarify the benefits of FeatureC++ and its AOP extensions.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Apel, S., Böhm, K.: Towards the Development of Ubiquitous Middleware Product Lines. In: Gschwind, T., Mascolo, C. (eds.) SEM 2004. LNCS, vol. 3437, pp. 137–153. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  2. Apel, S., et al.: FeatureC++: Feature-Oriented and Aspect-Oriented Programming in C++. Technical report, Department of Computer Science, Otto-von-Guericke University, Magdeburg, Germany (2005)

    Google Scholar 

  3. Batory, D., et al.: Creating Reference Architectures: An Example from Avionics. In: Symposium on Software Reusability (1995)

    Google Scholar 

  4. Batory, D., Liu, J., Sarvela, J.N.: Refinements and Multi-Dimensional Separation of Concerns. In: ACM SIGSOFT (2003)

    Google Scholar 

  5. Batory, D., Sarvela, J.N., Rauschmayer, A.: Scaling Step-Wise Refinement. IEEE TSE 30(6) (2004)

    Google Scholar 

  6. Batory, D., Thomas, J.: P2: A Lightweight DBMS Generator. Journal of Intelligent Information Systems 9(2) (1997)

    Google Scholar 

  7. Cardone, R., et al.: Using Mixins to Build Flexible Widgets. In: AOSD (2002)

    Google Scholar 

  8. Cardone, R., Lin, C.: Comparing Frameworks and Layered Refinement. In: ICSE (2001)

    Google Scholar 

  9. Colyer, A., Clement, A.: Large-Scale AOSD for Middleware. In: AOSD (2004)

    Google Scholar 

  10. Colyer, A., Rashid, A., Blair, G.: On the Separation of Concerns in Program Families. Technical report, Computing Department, Lancaster University (2004)

    Google Scholar 

  11. Czarnecki, K., Eisenecker, U.: Generative Programming: Methods, Tools, and Applications. Addison-Wesley, Reading (2000)

    Google Scholar 

  12. Dijkstra, E.W.: A Discipline of Programming. Prentice-Hall, Englewood Cliffs (1976)

    MATH  Google Scholar 

  13. Eisenecker, U.W., Blinn, F., Czarnecki, K.: A Solution to the Constructor-Problem of Mixin-Based Programming in C++. In: Workshop on C++ Template Programming (2000)

    Google Scholar 

  14. Findler, R., Flatt, M.: Modular Object-Oriented Programming with Units and Mixins. In: ICFP (1998)

    Google Scholar 

  15. Kendall, E.A.: Role Model Designs and Implementations with Aspect-Oriented Programming. In: OOPSLA (1999)

    Google Scholar 

  16. Kiczales, G., et al.: Aspect-Oriented Programming. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)

    Chapter  Google Scholar 

  17. Laddad, R.: AspectJ in Action – Practical Aspect-Oriented Programming. Manning Publication Co. (2003)

    Google Scholar 

  18. Lieberherr, K.: Controlling the Complexity of Software Designs. In: ICSE (2004)

    Google Scholar 

  19. Lieberherr, K., Lorenz, D.H., Ovlinger, J.: Aspectual Collaborations: Combining Modules and Aspects. The Computer Journal (Special issue on AOP), 46(5) (2003)

    Google Scholar 

  20. Lopez-Herrejon, R., Batory, D., Cook, W.: Evaluating Support for Features in Advanced Modularization Technologies. In: Black, A.P. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 169–194. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  21. Lopez-Herrejon, R.E., Batory, D.: Improving Incremental Development in AspectJ by Bounding Quantification. In: Software Engineering Properties and Languages for Aspect Technologies (2005)

    Google Scholar 

  22. Loughran, N., et al.: Supporting Product Line Evolution with Framed Aspects. In: AOSD ACP4IS Workshop (2004)

    Google Scholar 

  23. McDirmid, S., Hsieh, W.: Aspect-Oriented Programming in Jiazzi. In: AOSD (2003)

    Google Scholar 

  24. Mezini, M., Ostermann, K.: Variability Management with Feature-Oriented Programming and Aspects. In: ACM SIGSOFT (2004)

    Google Scholar 

  25. Ostermann, K.: Dynamically Composable Collaborations with Delegation Layers. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, p. 89. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  26. Ostermann, K., Mezini, M., Bockisch, C.: Expressive Pointcuts for Increased Modularity. In: Black, A.P. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 214–240. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  27. Parnas, D.L.: Designing Software for Ease of Extension and Contraction. IEEE TSE SE-5(2) (1979)

    Google Scholar 

  28. Rajan, H., Sullivan, K.J.: Classpects: Unifying Aspect- and Object-Oriented Language Design. In: ICSE (2005)

    Google Scholar 

  29. Singhal, V., Batory, D.: P++: A Language for Large-Scale Reusable Software Components. In: Workshop on Software Reuse (1993)

    Google Scholar 

  30. Smaragdakis, Y., Batory, D.: Mixin-Based Programming in C++. In: Butler, G., Jarzabek, S. (eds.) GCSE 2000. LNCS, vol. 2177, p. 163. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  31. Smaragdakis, Y., Batory, D.: Mixin Layers: An Object-Oriented Implementation Technique for Refinements and Collaboration-Based Designs. In: ACM TOSEM, vol. 11(2) (2002)

    Google Scholar 

  32. Tarr, P., et al.: N Degrees of Separation: Multi-Dimensional Separation of Concerns. In: ICSE (1999)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2005 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Apel, S., Leich, T., Rosenmüller, M., Saake, G. (2005). FeatureC++: On the Symbiosis of Feature-Oriented and Aspect-Oriented Programming. In: Glück, R., Lowry, M. (eds) Generative Programming and Component Engineering. GPCE 2005. Lecture Notes in Computer Science, vol 3676. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11561347_10

Download citation

  • DOI: https://doi.org/10.1007/11561347_10

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-29138-1

  • Online ISBN: 978-3-540-31977-1

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics