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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Dijkstra, E.: On the Role of Scientific Thought. In: Selected Writings on Computing: A Personal Perspective, pp. 60–66. Springer, Heidelberg (1982)
Parnas, D.: On the Criteria to be Used in Decomposing Systems into Modules. Comm. ACM 15, 1053–1058 (1972)
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)
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)
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)
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)
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)
Prehofer, C.: Feature-Oriented Programming: A Fresh Look at Objects. In: Proc. Europ. Conf. Object-Oriented Programming, pp. 419–443. Springer, Heidelberg (1997)
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)
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)
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)
Batory, D., Sarvela, J., Rauschmayer, A.: Scaling Step-Wise Refinement. IEEE Trans. Software Engineering 30, 355–371 (2004)
Czarnecki, K., Eisenecker, U.: Generative Programming: Methods, Tools, and Applications. Addison-Wesley, Reading (2000)
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)
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)
Hughes, J.: Why Functional Programming Matters. Comput. J. 32, 98–107 (1989)
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)
Mezini, M., Ostermann, K.: Untangling Crosscutting Models with CAESAR. In: Aspect-Oriented Software Development, pp. 165–199. Addison-Wesley, Reading (2005)
Parnas, D.: Designing Software for Ease of Extension and Contraction. IEEE Trans. Software Engineering SE 5, 264–277 (1979)
Apel, S., Leich, T., Saake, G.: Aspectual Feature Modules. IEEE Trans. Software Engineering 34, 162–180 (2008)
Apel, S., Janda, F., Trujillo, S., Kästner, C.: Model Superimposition in Software Product Lines. In: Proc. Int. Conf. Model Transformation. Springer, Heidelberg (2009)
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)
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)
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)
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)
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)
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)
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)
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)
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)
Aldrich, J.: Open Modules: Modular Reasoning About Advice. In: Black, A.P. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 144–168. Springer, Heidelberg (2005)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2009 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Apel, S., Kästner, C., Größlinger, A., Lengauer, C. (2009). Feature (De)composition in Functional Programming. In: Bergel, A., Fabry, J. (eds) Software Composition. SC 2009. Lecture Notes in Computer Science, vol 5634. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-02655-3_3
Download citation
DOI: https://doi.org/10.1007/978-3-642-02655-3_3
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-02654-6
Online ISBN: 978-3-642-02655-3
eBook Packages: Computer ScienceComputer Science (R0)