Advertisement

Feature (De)composition in Functional Programming

  • Sven Apel
  • Christian Kästner
  • Armin Größlinger
  • Christian Lengauer
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5634)

Abstract

The separation of concerns is a fundamental principle in software engineering. Crosscutting concerns are concerns that do not align with hierarchical and block decomposition supported by mainstream programming languages. In the past, crosscutting concerns have been studied mainly in the context of object orientation. Feature orientation is a novel programming paradigm that supports the (de)composition of crosscutting concerns in a system with a hierarchical block structure. In two case studies we explore the problem of crosscutting concerns in functional programming and propose two solutions based on feature orientation.

Keywords

Feature Module Code Unit Software Product Line Functional Programming Feature Orientation 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Dijkstra, E.: On the Role of Scientific Thought. In: Selected Writings on Computing: A Personal Perspective, pp. 60–66. Springer, Heidelberg (1982)CrossRefGoogle Scholar
  2. 2.
    Parnas, D.: On the Criteria to be Used in Decomposing Systems into Modules. Comm. ACM 15, 1053–1058 (1972)CrossRefGoogle Scholar
  3. 3.
    Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J.M., Irwin, J.: Aspect-Oriented Programming. In: Proc. Europ. Conf. Object-Oriented Programming, pp. 220–242. Springer, Heidelberg (1997)Google Scholar
  4. 4.
    Tarr, P., Ossher, H., Harrison, W., Sutton Jr., S.: N Degrees of Separation: Multi-Dimensional Separation of Concerns. In: Proc. Int. Conf. Software Engineering, pp. 107–119. IEEE CS, Los Alamitos (1999)Google Scholar
  5. 5.
    Kiczales, G., Mezini, M.: Separation of Concerns with Procedures, Annotations, Advice and Pointcuts. In: Black, A.P. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 195–213. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  6. 6.
    Zhang, C., Jacobsen, H.A.: Efficiently Mining Crosscutting Concerns Through Random Walks. In: Proc. Int. Conf. Aspect-Oriented Software Development, pp. 226–238. ACM Press, New York (2007)CrossRefGoogle Scholar
  7. 7.
    Skotiniotis, T., Palm, J., Lieberherr, K.J.: Demeter interfaces: Adaptive programming without surprises. In: Thomas, D. (ed.) ECOOP 2006. LNCS, vol. 4067, pp. 477–500. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  8. 8.
    Prehofer, C.: Feature-Oriented Programming: A Fresh Look at Objects. In: Proc. Europ. Conf. Object-Oriented Programming, pp. 419–443. Springer, Heidelberg (1997)Google Scholar
  9. 9.
    Kästner, C., Apel, S., Kuhlemann, M.: Granularity in Software Product Lines. In: Proc. Int. Conf. Software Engineering, pp. 311–320. ACM Press, New York (2008)Google Scholar
  10. 10.
    Apel, S., Lengauer, C.: Superimposition: A language-independent approach to software composition. In: Pautasso, C., Tanter, É. (eds.) SC 2008. LNCS, vol. 4954, pp. 20–35. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  11. 11.
    Apel, S., Kästner, C., Lengauer, C.: FeatureHouse: Language-Independent, Automated Software Composition. In: Proc. Int. Conf. Software Engineering. IEEE Computer Society Press, Los Alamitos (2009)Google Scholar
  12. 12.
    Batory, D., Sarvela, J., Rauschmayer, A.: Scaling Step-Wise Refinement. IEEE Trans. Software Engineering 30, 355–371 (2004)CrossRefGoogle Scholar
  13. 13.
    Czarnecki, K., Eisenecker, U.: Generative Programming: Methods, Tools, and Applications. Addison-Wesley, Reading (2000)Google Scholar
  14. 14.
    Colyer, A., Clement, A.: Large-Scale AOSD for Middleware. In: Proc. Int. Conf. Aspect-Oriented Software Development, pp. 56–65. ACM Press, New York (2004)CrossRefGoogle Scholar
  15. 15.
    Kästner, C., Apel, S., Batory, D.: A Case Study Implementing Features using AspectJ. In: Proc. Int. Software Product Line Conf., pp. 222–232. IEEE CS, Los Alamitos (2007)Google Scholar
  16. 16.
    Hughes, J.: Why Functional Programming Matters. Comput. J. 32, 98–107 (1989)CrossRefGoogle Scholar
  17. 17.
    Coady, Y., Kiczales, G.: Back to the Future: A Retroactive Study of Aspect Evolution in Operating System Code. In: Proc. Int. Conf. Aspect-Oriented Software Development, pp. 50–59. ACM Press, New York (2003)CrossRefGoogle Scholar
  18. 18.
    Mezini, M., Ostermann, K.: Untangling Crosscutting Models with CAESAR. In: Aspect-Oriented Software Development, pp. 165–199. Addison-Wesley, Reading (2005)Google Scholar
  19. 19.
    Parnas, D.: Designing Software for Ease of Extension and Contraction. IEEE Trans. Software Engineering SE 5, 264–277 (1979)zbMATHGoogle Scholar
  20. 20.
    Apel, S., Leich, T., Saake, G.: Aspectual Feature Modules. IEEE Trans. Software Engineering 34, 162–180 (2008)CrossRefGoogle Scholar
  21. 21.
    Apel, S., Janda, F., Trujillo, S., Kästner, C.: Model Superimposition in Software Product Lines. In: Proc. Int. Conf. Model Transformation. Springer, Heidelberg (2009)Google Scholar
  22. 22.
    Kästner, C., Apel, S.: Integrating Compositional and Annotative Approaches for Product Line Engineering. In: Proc. GPCE Workshop Modularization, Composition, and Generative Techniques for Product Line Engineering. Number MIP-0804, Dept. of Informatics and Mathematics, University of Passau, pp. 35–40 (2008)Google Scholar
  23. 23.
    Kästner, C., Apel, S., Trujillo, S.: Visualizing Software Product Line Variabilities in Source Code. In: Proc. SPLC Workshop Visualization in Software Product Line Engineering, Lero, International Science Centre, University of Limerick, pp. 303–313 (2008)Google Scholar
  24. 24.
    Kästner, C., Apel, S., Trujillo, S., Kuhlemann, M., Batory, D.: Guaranteeing Syntactic Correctness for all Product Line Variants: A Language-Independent Approach. In: Proc. Tools Europe. Springer, Heidelberg (2009)Google Scholar
  25. 25.
    Kästner, C., Apel, S.: Type-checking Software Product Lines – A Formal Approach. In: Proc. Int. Conf. Automated Software Engineering, pp. 258–267. IEEE CS, Los Alamitos (2008)Google Scholar
  26. 26.
    Liu, J., Batory, D., Lengauer, C.: Feature-Oriented Refactoring of Legacy Applications. In: Proc. Int. Conf. Software Engineering, pp. 112–121. ACM Press, New York (2006)Google Scholar
  27. 27.
    Apel, S., Batory, D.: How AspectJ is Used: An Analysis of Eleven AspectJ Programs. Technical Report MIP-0801, Dept. of Informatics and Mathematics, University of Passau (2008)Google Scholar
  28. 28.
    Dantas, D., Walker, D., Washburn, G., Weirich, S.: AspectML: A Polymorphic Aspect-Oriented Functional Programming Language. ACM Trans. Programming Languages and Systems 30, 1–60 (2008)CrossRefzbMATHGoogle Scholar
  29. 29.
    Tucker, D., Krishnamurthi, S.: Pointcuts and Advice in Higher-Order Languages. In: Proc. Int. Conf. Aspect-Oriented Software Development, pp. 158–167. ACM Press, New York (2003)CrossRefGoogle Scholar
  30. 30.
    Masuhara, H., Tatsuzawa, H., Yonezawa, A.: Aspectual Caml: An Aspect-Oriented Functional Language. In: Proc. Int. Conf. Functional Programming, pp. 320–330. ACM Press, New York (2005)Google Scholar
  31. 31.
    Aldrich, J.: Open Modules: Modular Reasoning About Advice. In: Black, A.P. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 144–168. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  32. 32.
    Hofer, C., Ostermann, K.: On the Relation of Aspects and Monads. In: Proc. Workshop Foundations of Aspect-Oriented Languages, pp. 27–33. ACM Press, New York (2007)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2009

Authors and Affiliations

  • Sven Apel
    • 1
  • Christian Kästner
    • 2
  • Armin Größlinger
    • 1
  • Christian Lengauer
    • 1
  1. 1.Department of Informatics and MathematicsUniversity of PassauGermany
  2. 2.School of Computer ScienceUniversity of MagdeburgGermany

Personalised recommendations