×

An algebraic foundation for automatic feature-based program synthesis. (English) Zbl 1209.68129

Summary: Feature-Oriented Software Development provides a multitude of formalisms, methods, languages, and tools for building variable, customizable, and extensible software. Along different lines of research, different notions of a feature have been developed. Although these notions have similar goals, no common basis for evaluation, comparison, and integration exists. We present a feature algebra that captures the key ideas of feature orientation and that provides a common ground for current and future research in this field, on which also alternative options can be explored. Furthermore, our algebraic framework is meant to serve as a basis for the development of the technology of automatic feature-based program synthesis and architectural metaprogramming.

MSC:

68N99 Theory of software

References:

[1] Achermann, F.; Nierstrasz, O.: A calculus for reasoning about software composition, Theoretical computer science 331, No. 2–3, 367-396 (2005) · Zbl 1070.68026 · doi:10.1016/j.tcs.2004.09.022
[2] Alves, V.; Gheyi, R.; Massoni, T.; Kulesza, U.; Borba, P.; Lucena, C.: Refactoring product lines, , 201-210 (2006)
[3] Anfurrutia, F.; Díaz, O.; Trujillo, S.: On refining XML artifacts, Lncs 4607, 473-478 (2007)
[4] S. Apel, D. Hutchins, An overview of the gDeep calculus, Tech. Rep. MIP-0712, Department of Informatics and Mathematics, University of Passau, 2007.
[5] Apel, S.; Hutchins, D.: A calculus for uniform feature composition, ACM transactions on programming languages and systems (TOPLAS) (2010)
[6] Apel, S.; Kästner, C.: An overview of feature-oriented software development, Journal of object technology (JOT) 8, No. 5, 49-84 (2009)
[7] Apel, S.; Kästner, C.; Batory, D.: Program refactoring using functional aspects, , 161-170 (2008)
[8] Apel, S.; Kästner, C.; Leich, T.; Saake, G.: Aspect refinement – unifying AOP and stepwise refinement, Journal of object technology (JOT) 6, No. 9, 13-33 (2007)
[9] Apel, S.; Kästner, C.; Lengauer, C.: Feature featherweight Java: A calculus for feature-oriented programming and stepwise refinement, , 101-112 (2008)
[10] Apel, S.; Kästner, C.; Lengauer, C.: Featurehouse: language-independent, automatic software composition, , 221-231 (2009)
[11] Apel, S.; Leich, T.; Rosenmüller, M.; Saake, G.: Featurec++: on the symbiosis of feature-oriented and aspect-oriented programming, Lncs 3676, 125-140 (2005)
[12] Apel, S.; Leich, T.; Saake, G.: Aspectual feature modules, IEEE transactions on software engineering (TSE) 34, No. 2, 162-180 (2008)
[13] Apel, S.; Lengauer, C.; Möller, B.; Kästner, C.: An algebra for features and feature composition, Lncs 5140, 36-50 (2008) · Zbl 1170.68424 · doi:10.1007/978-3-540-79980-1_4
[14] Aracic, I.; Gasiunas, V.; Mezini, M.; Ostermann, K.: An overview of caesarj, Transactions on aspect-oriented software development (TAOSD) 1, No. 1, 135-173 (2006) · Zbl 1165.68355
[15] Batory, D.: From implementation to theory in product synthesis (Keynote), , 135-136 (2007)
[16] Batory, D.: Program refactorings, program synthesis, and model-driven design (Keynote), Lncs 4420, 156-171 (2007)
[17] Batory, D.; Sarvela, J.; Rauschmayer, A.: Scaling step-wise refinement, IEEE transactions on software engineering (TSE) 30, No. 6, 355-371 (2004)
[18] Baxter, I.: Design maintenance systems, Communications of the ACM (CACM) 35, No. 4, 73-89 (1992)
[19] Bergel, A.; Ducasse, S.; Nierstrasz, O.: Classbox/J: controlling the scope of change in Java, , 177-189 (2005)
[20] Biggerstaff, T.: A perspective of generative reuse, Annals of software engineering 5, No. 1, 169-226 (1998)
[21] Böcker, S.; Bryant, D.; Dress, A.; Steel, M.: Algorithmic aspects of tree amalgamation, Journal on algorithms 37, No. 2, 522-537 (2000) · Zbl 0964.68108 · doi:10.1006/jagm.2000.1116
[22] E. Bodden, F. Forster, F. Steimann, Avoiding infinite recursion with stratified aspects, in: Proceedings of the International Net.ObjectDays Conference, Gesellschaft für Informatik, 2006, pp. 49–64.
[23] Bosch, J.: Super-imposition: A component adaptation technique, Information and software technology 41, No. 5, 257-273 (1999)
[24] Bouge, L.; Francez, N.: A compositional approach to superimposition, , 240-249 (1988)
[25] Boxleitner, S.; Apel, S.; Kästner, C.: Language-independent quantification and weaving for feature composition, Lncs 5634, 45-54 (2009)
[26] Bravenboer, M.; Visser, E.: Concrete syntax for objects: domain-specific language embedding and assimilation without restrictions, , 365-383 (2004)
[27] Chandy, M.; Misra, J.: An example of stepwise refinement of distributed programs: quiescence detection, ACM transactions on programming languages and systems (TOPLAS) 8, No. 3, 326-343 (1986) · Zbl 0598.68031 · doi:10.1145/5956.5958
[28] Clarke, D.; Drossopoulou, S.; Noble, J.; Wrigstad, T.: Tribe: A simple virtual class calculus, , 121-134 (2007)
[29] Czarnecki, K.; Eisenecker, U.: Generative programming: methods, tools, and applications, (2000)
[30] Ernst, E.; Ostermann, K.; Cook, W.: A virtual class calculus, , 270-282 (2006) · Zbl 1369.68072
[31] Filman, R.; Friedman, D.: Aspect-oriented programming is quantification and obliviousness, , 21-35 (2005)
[32] Findler, R.; Flatt, M.: Modular object-oriented programming with units and mixins, , 94-104 (1998)
[33] Flatt, M.; Krishnamurthi, S.; Felleisen, M.: Classes and mixins, , 171-183 (1998)
[34] Fowler, M.; Beck, K.; Brant, J.; Opdyke, W.; Roberts, D.: Refactoring: improving the design of existing code, (1999)
[35] Harrison, W.; Ossher, H.: Subject-oriented programming: A critique of pure objects, , 411-428 (1993)
[36] Harrison, W.; Ossher, H.; Tarr, P.: General composition of software artifacts, Lncs 4089, 194-210 (2006)
[37] Hebisch, U.; Weinert, H.: Semirings, (1998) · Zbl 0934.16046
[38] Höfner, P.; Khedri, R.; Möller, B.: Feature algebra, Lncs 4085, 300-315 (2006)
[39] P. Höfner, R. Khedri, B. Möller, An algebra of product families, Software and Systems Modeling, in press (doi:10.1007/s10270-009-0127-2).
[40] Hutchins, D.: Eliminating distinctions of class: using prototypes to model virtual classes, , 1-19 (2006)
[41] Jagadeesan, R.; Jeffrey, A.; Riely, J.: A calculus of untyped aspect-oriented programs, Lncs 2743, 54-73 (2003)
[42] K. Kang, S. Cohen, J. Hess, W. Novak, A. Peterson, Feature-Oriented Domain Analysis (FODA) feasibility study, Tech. Rep. CMU/SEI-90-TR-21, SEI, CMU, 1990.
[43] Kästner, C.; Apel, S.; Kuhlemann, M.: Granularity in software product lines, , 311-320 (2008)
[44] Kästner, C.; Apel, S.; Rahman, S. Ur; Rosenmüller, M.; Batory, D.; Saake, G.: On the impact of the optional feature problem: analysis and case studies, , 181-190 (2009)
[45] Kiczales, G.; Hilsdale, E.; Hugunin, J.; Kersten, M.; Palm, J.; Griswold, W.: An overview of aspectj, Lncs 2072, 327-353 (2001) · Zbl 0982.68552
[46] Kiczales, G.; Rivieres, J.: The art of the metaobject protocol, (1991)
[47] Kuhlemann, M.; Batory, D.; Kästner, C.: Safe composition of non-monotonic features, , 177-185 (2009)
[48] Lämmel, R.; Visser, E.; Visser, J.: Strategic programming meets adaptive programming, , 168-177 (2003)
[49] Lieberherr, K.; Patt-Shamir, B.; Orleans, D.: Traversals of object structures: specification and efficient implementation, ACM transactions on programming languages and systems (TOPLAS) 26, No. 2, 370-412 (2004)
[50] Ligatti, J.; Walker, D.; Zdancewic, S.: A type-theoretic interpretation of pointcuts and advice, Science of computer programming (SCP) 63, No. 3, 240-266 (2006) · Zbl 1119.68112 · doi:10.1016/j.scico.2006.01.004
[51] Liu, J.; Batory, D.; Lengauer, C.: Feature-oriented refactoring of legacy applications, , 112-121 (2006)
[52] Lopez-Herrejon, R.; Batory, D.; Lengauer, C.: A disciplined approach to aspect composition, , 68-77 (2006)
[53] Masuhara, H.; Kiczales, G.: Modeling crosscutting in aspect-oriented mechanisms, Lncs 2743, 2-28 (2003)
[54] Mcdirmid, S.; Flatt, M.; Hsieh, W.: Jiazzi: new-age components for old-fashioned Java, , 211-222 (2001)
[55] Mcdirmid, S.; Hsieh, W.: Aspect-oriented programming with jiazzi, , 70-79 (2003)
[56] Mezini, M.; Ostermann, K.: Conquering aspects with caesar, , 90-100 (2003)
[57] Mezini, M.; Ostermann, K.: Variability management with feature-oriented programming and aspects, , 127-136 (2004)
[58] Odersky, M.; Cremet, V.; Röckl, C.; Zenger, M.: A nominal theory of objects with dependent types, Lncs 2743, 201-224 (2003)
[59] Odersky, M.; Zenger, M.: Scalable component abstractions, , 41-57 (2005)
[60] Ossher, H.; Harrison, W.: Combination of inheritance hierarchies, , 25-40 (1992)
[61] Prehofer, C.: Feature-oriented programming: A fresh look at objects, Lncs 1241, 419-443 (1997)
[62] Ramalingam, G.; Reps, T.: A theory of program modifications, Lncs 494, 137-152 (1991) · Zbl 0967.68504
[63] Ramalingam, G.; Reps, T.: Modification algebras, , 547-558 (1991)
[64] Reenskaug, T.; Andersen, E.; Berre, A.; Hurlen, A.; Landmark, A.; Lehne, O.; Nordhagen, E.; Ness-Ulseth, E.; Oftedal, G.; Skaar, A.; Stenslet, P.: OORASS: seamless support for the creation and maintenance of object-oriented systems, Journal of object-oriented programming (JOOP) 5, No. 6, 27-41 (1992)
[65] Seco, J.; Caires, L.: A basic model of typed components, Lncs 1850, 108-128 (2000)
[66] Smaragdakis, Y.; Batory, D.: Mixin layers: an object-oriented implementation technique for refinements and collaboration-based designs, ACM transactions on software engineering and methodology (TOSEM) 11, No. 2, 215-255 (2002)
[67] Spinczyk, O.; Lohmann, D.; Urban, M.: Aspectc++: an AOP extension for C++, Software developer’s journal 1, No. 5, 68-74 (2005)
[68] Tarr, P.; Ossher, H.; Harrison, W.; Jr., S. Sutton: N degrees of separation: multi-dimensional separation of concerns, , 107-119 (1999)
[69] Thaker, S.; Batory, D.; Kitchin, D.; Cook, W.: Safe composition of product lines, , 95-104 (2007)
[70] Trujillo, S.; Azanza, M.; Díaz, O.: Generative metaprogramming, , 105-114 (2007)
[71] Trujillo, S.; Batory, D.; Díaz, O.: Feature oriented model driven development: A case study for portlets, , 44-53 (2007)
[72] Tucker, D.; Krishnamurthi, S.: Pointcuts and advice in higher-order languages, , 158-167 (2003)
[73] Vanhilst, M.; Notkin, D.: Using role components in implement collaboration-based designs, , 359-369 (1996)
[74] Walker, D.; Zdancewic, S.; Ligatti, J.: A theory of aspects, SIGPLAN notices 38, No. 9, 127-139 (2003) · Zbl 1315.68072
[75] Zenger, M.: Type-safe prototype-based component evolution, Lncs 2374, 470-497 (2002) · Zbl 1049.68859
This reference list is based on information provided by the publisher or from digital mathematics libraries. Its items are heuristically matched to zbMATH identifiers and may contain data conversion errors. In some cases that data have been complemented/enhanced by data from zbMATH Open. This attempts to reflect the references listed in the original paper as accurately as possible without claiming completeness or a perfect matching.