The Community for Technology Leaders
RSS Icon
Subscribe
Issue No.01 - Jan. (2013 vol.39)
pp: 63-79
Sven Apel , University of Passau, Passau
Christian Kästner , Philipps University Marburg, Marburg
Christian Lengauer , University of Passau, Passau
ABSTRACT
Superimposition is a composition technique that has been applied successfully in many areas of software development. Although superimposition is a general-purpose concept, it has been (re)invented and implemented individually for various kinds of software artifacts. We unify languages and tools that rely on superimposition by using the language-independent model of feature structure trees (FSTs). On the basis of the FST model, we propose a general approach to the composition of software artifacts written in different languages. Furthermore, we offer a supporting framework and tool chain, called FeatureHouse. We use attribute grammars to automate the integration of additional languages. In particular, we have integrated Java, C#, C, Haskell, Alloy, and JavaCC. A substantial number of case studies demonstrate the practicality and scalability of our approach and reveal insights into the properties that a language must have in order to be ready for superimposition. We discuss perspectives of our approach and demonstrate how we extended FeatureHouse with support for XML languages (in particular, XHTML, XMI/UML, and Ant) and alternative composition approaches (in particular, aspect weaving). Rounding off our previous work, we provide here a holistic view of the FeatureHouse approach based on rich experience with numerous languages and case studies and reflections on several years of research
INDEX TERMS
Software, Java, Grammar, Databases, Printers, Latches, Unified modeling language, language independence, FeatureHouse, feature structure trees, software composition, superimposition
CITATION
Sven Apel, Christian Kästner, Christian Lengauer, "Language-Independent and Automated Software Composition: The FeatureHouse Experience", IEEE Transactions on Software Engineering, vol.39, no. 1, pp. 63-79, Jan. 2013, doi:10.1109/TSE.2011.120
REFERENCES
[1] H. Ossher and W. Harrison, "Combination of Inheritance Hierarchies," Proc. Int'l Conf. Object-Oriented Programming, Systems, Languages, and Applications, pp. 25-40, 1992.
[2] L. Bouge and N. Francez, "A Compositional Approach to Superimposition," Proc. 15th Int'l Symp. Principles of Programming Languages, pp. 240-249, 1988.
[3] S. Katz, "A Superimposition Control Construct for Distributed Systems," ACM Trans. Programming Languages and Systems, vol. 15, no. 2, pp. 337-356, 1993.
[4] Y. Smaragdakis and D. Batory, "Mixin Layers: An Object-Oriented Implementation Technique for Refinements and Collaboration-Based Designs," ACM Trans. Software Eng. and Methodology, vol. 11, no. 2, pp. 215-255, 2002.
[5] C. Prehofer, "Feature-Oriented Programming: A Fresh Look at Objects," Proc. European Conf. Object-Oriented Programming, pp. 419-443, 1997.
[6] D. Batory, J. Sarvela, and A. Rauschmayer, "Scaling Step-Wise Refinement," IEEE Trans. Software Eng., vol. 30, no. 6, pp. 355-371, June 2004.
[7] P. Tarr, H. Ossher, W. Harrison, and S. SuttonJr., "N Degrees of Separation: Multi-Dimensional Separation of Concerns," Proc. 21st Int'l Conf. Software Eng., pp. 107-119, 1999.
[8] M. Mezini and K. Ostermann, "Variability Management with Feature-Oriented Programming and Aspects," Proc. 12th Int'l Symp. Foundations of Software Eng., pp. 127-136, 2004.
[9] M. Sihman and S. Katz, "Superimpositions and Aspect-Oriented Programming," Computer J., vol. 46, no. 5, pp. 529-541, 2003.
[10] J. Bosch, "Super-Imposition: A Component Adaptation Technique," Information and Software Technology, vol. 41, no. 5, pp. 257-273, 1999.
[11] S. McDirmid and W. Hsieh, "Aspect-Oriented Programming with Jiazzi," Proc. Second Int'l Conf. Aspect-Oriented Software Development, pp. 70-79, 2003.
[12] N. Nystrom, S. Chong, and A. Myers, "Scalable Extensibility via Nested Inheritance," Proc. 19th Int'l Conf. Object-Oriented Programming, Systems, Languages, and Applications, pp. 99-115, 2004.
[13] M. Odersky and M. Zenger, "Scalable Component Abstractions," Proc. 20th Int'l Conf. Object-Oriented Programming, Systems, Languages, and Applications, pp. 41-57, 2005.
[14] A. Bergel, S. Ducasse, and O. Nierstrasz, "Classbox/J: Controlling the Scope of Change in Java," Proc. 20th Int'l Conf. Object-Oriented Programming, Systems, Languages, and Applications, pp. 177-189, 2005.
[15] D. Hutchins, "Eliminating Distinctions of Class: Using Prototypes to Model Virtual Classes," Proc. 21st Int'l Conf. Object-Oriented Programming, Systems, Languages, and Applications, pp. 1-19, 2006.
[16] H. Ossher and P. Tarr, "Hyper/J: Multi-Dimensional Separation of Concerns for Java," Proc. 22nd Int'l Conf. Software Eng., pp. 734-737, 2000.
[17] S. Apel, T. Leich, M. Rosenmüller, and G. Saake, "FeatureC++: On the Symbiosis of Feature-Oriented and Aspect-Oriented Programming," Proc. Fourth Int'l Conf. Generative Programming and Component Eng., pp. 125-140, 2005.
[18] S. Apel, S. Kolesnikov, J. Liebig, C. Kästner, M. Kuhlemann, and T. Leich, "Access Control in Feature-Oriented Programming," Science of Computer Programming, special issue on feature-oriented software development, vol. 77, no. 3, pp. 174-187, 2012.
[19] F. Anfurrutia, O. Díaz, and S. Trujillo, "On Refining XML Artifacts," Proc. Seventh Int'l Conf. Web Eng., pp. 473-478, 2007.
[20] S. Clarke, W. Harrison, H. Ossher, and P. Tarr, "Subject-Oriented Design: Towards Improved Alignment of Requirements, Design, and Code," Proc. 14th Int'l Conf. Object-Oriented Programming, Systems, Languages, and Applications, pp. 325-339, 1999.
[21] K. Czarnecki and M. Antkiewicz, "Mapping Features to Models: A Template Approach Based on Superimposed Variants," Proc. Fourth Int'l Conf. Generative Programming and Component Eng., pp. 422-437, 2005.
[22] T. Kamina and T. Tamai, "Lightweight Scalable Components," Proc. Sixth Int'l Conf. Generative Programming and Component Eng., pp. 145-154, 2007.
[23] G. Freeman, D. Batory, and G. Lavender, "Lifting Transformational Models of Product Lines: A Case Study," Proc. First Int'l Conf. Model Transformation, pp. 16-30, 2008.
[24] S. Apel, C. Lengauer, B. Möller, and C. Kästner, "An Algebraic Foundation for Automatic Feature-Based Program Synthesis," Science of Computer Programming, vol. 75, no. 11, pp. 1022-1047, 2010.
[25] S. Apel and C. Lengauer, "Superimposition: A Language-Independent Approach to Software Composition," Proc. Seventh Int'l Symp. Software Composition, pp. 20-35, 2008.
[26] I. Aracic, V. Gasiunas, M. Mezini, and K. Ostermann, "An Overview of CaesarJ," Trans. Aspect-Oriented Software Development I, vol. 3880, pp. 135-173, 2006.
[27] S. Apel, C. Kästner, and C. Lengauer, "FeatureHouse: Language-Independent, Automated Software Composition," Proc 31st. IEEE Int'l Conf. Software Eng., pp. 221-231, 2009.
[28] S. Apel, C. Kästner, A. Größlinger, and C. Lengauer, "Feature (De)Composition in Functional Programming," Proc. Eight Int'l Conf. Software Composition, pp. 9-26, 2009.
[29] S. Boxleitner, S. Apel, and C. Kästner, "Language-Independent Quantification and Weaving for Feature Composition," Proc. Eight Int'l Conf. Software Composition, pp. 45-54, 2009.
[30] J. Dörre, "Feature-Oriented Composition of XML Artifacts," master's thesis, Dept. of Informatics and Math., Univ. of Passau, 2009.
[31] C. Kästner, S. Apel, and M. Kuhlemann, "Granularity in Software Product Lines," Proc. 30th Int'l Conf. Software Eng., pp. 311-320, 2008.
[32] T. Mens, "A State-of-the-Art Survey on Software Merging," IEEE Trans. Software Eng., vol. 28, no. 5, pp. 449-462, May 2002.
[33] D. Wile, "Abstract Syntax from Concrete Syntax," Proc. 19th Int'l Conf. Software Eng., pp. 472-480, 1997.
[34] D. Batory, J. Liu, and J. Sarvela, "Refinements and Multi-Dimensional Separation of Concerns," Proc. Ninth European Software Eng. Conf. and the Int'l Symp. Foundations of Software Eng., pp. 48-57, 2003.
[35] M. Mezini and K. Ostermann, "Integrating Independent Components with On-Demand Remodularization," Proc. 17th Int'l Conf. Object-Oriented Programming, Systems, Languages, and Applications, pp. 52-67, 2002.
[36] C. Szyperski, D. Gruntz, and S. Murer, Component Software: Beyond Object-Oriented Programming. Addision-Wesley, 2002.
[37] R. Lopez-Herrejon, D. Batory, and W. Cook, "Evaluating Support for Features in Advanced Modularization Technologies," Proc. 19th European Conf. Object-Oriented Programming, pp. 169-194, 2005.
[38] S. Apel, T. Leich, and G. Saake, "Aspectual Feature Modules," IEEE Trans. Software Eng., vol. 34, no. 2, pp. 162-180, Mar./Apr. 2008.
[39] D. Parnas, "Designing Software for Ease of Extension and Contraction," Proc. Third Int'l Conf. Software Eng., pp. 264-277, 1978.
[40] H. Masuhara and G. Kiczales, "Modeling Crosscutting in Aspect-Oriented Mechanisms," Proc. European Conf. Object-Oriented Programming, pp. 2-28, 2003.
[41] K. Lieberherr, B. Patt-Shamir, and D. Orleans, "Traversals of Object Structures: Specification and Efficient Implementation," ACM Trans. Programming Languages and Systems, vol. 26, no. 2, pp. 370-412, 2004.
[42] R. Lämmel, E. Visser, and J. Visser, "Strategic Programming Meets Adaptive Programming," Proc. Second Int'l Conf. Aspect-Oriented Software Development, pp. 168-177, 2003.
[43] A. Colyer and A. Clement, "Large-Scale AOSD for Middleware," Proc. Third Int'l Conf. Aspect-Oriented Software Development, pp. 56-65, 2004.
[44] S. Apel, "How AspectJ is Used: An Analysis of Eleven AspectJ Programs," J. Object Technology, vol. 9, no. 1, pp. 117-142, 2010.
[45] P. Clements and L. Northrop, Software Product Lines: Practices and Patterns. Addison-Wesley, 2002.
[46] S. Apel and D. Hutchins, "A Calculus for Uniform Feature Composition," ACM Trans. Programming Languages and Systems, vol. 32, no. 5,article 19, pp. 1-33, 2010.
[47] S. Apel, W. Scholz, C. Lengauer, and C. Kästner, "Language-Independent Reference Checking in Software Product Lines," Proc. Second Int'l Workshop Feature-Oriented Software Development, pp. 65-71, 2010.
[48] S. Thaker, D. Batory, D. Kitchin, and W. Cook, "Safe Composition of Product Lines," Proc. Sixth Int'l Conf. Generative Programming and Component Eng., pp. 95-104, 2007.
[49] B. Delaware, W. Cook, and D. Batory, "Fitting the Pieces Together: A Machine-Checked Model of Safe Composition," Proc. Seventh European Software Eng. Conf. and the Int'l Symp. Foundations of Software ng., pp. 243-252, 2009.
[50] S. Apel, C. Kästner, A. Größlinger, and C. Lengauer, "Type Safety for Feature-Oriented Product Lines," Automated Software Eng., vol. 17, no. 3, pp. 251-300, 2010.
[51] C. Kästner, S. Apel, T. Thüm, and G. Saake, "Type Checking Annotation-Based Product Lines," ACM Trans. Software Eng. and Methodology, vol. 31, no. 3,article 14, pp. 1-39, 2012.
[52] D. Batory, "Program Refactorings, Program Synthesis, and Model-Driven Design (Keynote)," Proc. Int'l Conf. Compiler Construction, pp. 156-171, 2007.
[53] L. Bergmans and M. Aksit, "Composing Crosscutting Concerns Using Composition Filters," Comm. ACM, vol. 44, no. 10, pp. 51-57, 2001.
[54] M. Flatt, S. Krishnamurthi, and M. Felleisen, "Classes and Mixins," Proc. 25th Int'l Symp. Principles of Programming Languages, pp. 171-183, 1998.
[55] S. Ducasse, O. Nierstrasz, N. Schärli, R. Wuyts, and A. Black, "Traits: A Mechanism for Fine-Grained Reuse," ACM Trans. Programming Languages and Systems, vol. 28, no. 2, pp. 331-388, 2006.
[56] O. Madsen and B. Moller-Pedersen, "Virtual Classes: A Powerful Mechanism in Object-Oriented Programming," Proc. Int'l Conf. Object-Oriented Programming, Systems, Languages, and Applications, pp. 397-406, 1989.
[57] L. Bettini, V. Bono, and B. Venneri, "Delegation by Object Composition," Science of Computer Programming, vol. 76, no. 11, pp. 992-1014, 2011.
[58] W. Harrison, H. Ossher, and P. Tarr, "General Composition of Software Artifacts," Proc. Fifth Int'l Symp. Software Composition, pp. 194-210, 2006.
[59] P. Bernstein, A. Halevy, and R. Pottinger, "A Vision for Management of Complex Models," SIGMOD Record, vol. 29, no. 4, pp. 55-63, 2000.
[60] D. Kolovos, R. Paige, and F. Polack, "Merging Models with the Epsilon Merging Language (EML)," Proc. Ninth Int'l Conf. Model-Driven Eng., Languages, and Systems, pp. 215-229, 2006.
[61] J. Dingel, Z. Diskin, and A. Zito, "Understanding and Improving UML Package Merge," Software and Systems Modeling, vol. 7, no. 4, pp. 443-467, 2008.
[62] M. Azanza, D. Batory, O. Diaz, and S. Trujillo, "Domain-Specific Composition of Model Deltas," Proc. Third Int'l Conf. Model Transformation, pp. 16-30, 2010.
[63] C. Kästner, S. Apel, S. Trujillo, M. Kuhlemann, and D. Batory, "Guaranteeing Syntactic Correctness for all Product Line Variants: A Language-Independent Approach," Proc. Int'l Conf. Objects, Models, Components, Patterns, pp. 174-194, 2009.
[64] C. Kästner, S. Apel, and M. Kuhlemann, "A Model of Refactoring Physically and Virtually Separated Features," Proc. Eight Int'l Conf. Generative Programming and Component Eng., pp. 157-166, 2009.
[65] I. Schaefer, L. Bettini, V. Bono, F. Damiani, and N. Tanzarella, "Delta-Oriented Programming of Software Product Lines," Proc. 14th Int'l Software Product Line Conf., pp. 77-91, 2010.
[66] D. Clarke, M. Helvensteijn, and I. Schaefer, "Abstract Delta Modeling," Proc. Ninth Int'l Conf. Generative Programming and Component Eng., pp. 13-22, 2010.
[67] S. Apel, J. Liebig, B. Brandl, C. Lengauer, and C. Kästner, "Semistructured Merge: Rethinking Merge in Revision Control Systems," Proc. 19th European Software Eng. Conf. and the Int'l Symp. Foundations of Software Eng., pp. 190-200, 2011.
31 ms
(Ver 2.0)

Marketing Automation Platform Marketing Automation Tool