Abstract
Composition is the process of creating new artifacts from a set of input artifacts by combining the content of the input artifacts according to some given specifications. Composition engines are a distinct kind of software component. Like compilers, parsers, and UI-generators, they have their own domain of discourse and base of concepts, their own structure for expressing desired results, their own internal solution structure, and their own set of research problems. Composition applies not only to artifacts representing executable code, but to any sort of artifacts, from build or configuration controls to documentation or UI. While software composition is of interest to an audience wider than that of developers applying aspect-oriented software development (AOSD) approaches, AOSD’s composition of separate concerns or aspects presents more complex requirements than does object-composition. This paper describes a base of concepts suitable for expressing composition and shows how a general composition engine realizing these concepts can be used to effect the composition needs of several existing AOSD approaches.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
AspectWerkz web site, http://aspectwerkz.codehaus.org
Aksit, M., Bergmans, L., Vural, S.: An Object-Oriented Language-Database Integration Model: The Composition-Filters Approach. In: Proc. European Conference on Object-Oriented Programming (1992)
Batory, D.S., Singhal, V., Thomas, J., Dasari, S., Geraci, B., Sirkin, M.: The GenVoca Model of Software-System Generators. IEEE Software (September 1994)
Chiba, S.: Load-time Structural Reflection in Java. In: Bertino, E. (ed.) ECOOP 2000. LNCS, vol. 1850, p. 313. Springer, Heidelberg (2000)
Cohen, G., Chase, J.: Automatic Program Transformation with JOIE. In: USENIX Annual Technical Conference (June 1998)
Harrison, W., Ossher, H.: Subject-Oriented Programming: A Critique of Pure Objects. In: Proc. 8th conference on Object-oriented programming systems, languages, and applications, pp. 411–428 (1993)
Harrison, W., Ossher, H.: Member-Group Relationships Among Objects, In: Workshops on Foundations of Aspect Languages, on Aspect-Oriented Design, and on UML in Aspect-Oriented Software at International Conference on Aspect-Oriented Software Development (March 2002)
Harrison, W., Ossher, H., Sutton, S., Tarr, P.: The Concern Manipulation Environment—Supporting aspect-oriented software development. IBM Systems Journal Special Interest Issue on Open Source 44(2) (2005)
Harrison, W.H., Ossher, H.L., Tarr, P.L., Kruskal, V., Tip, F.: "CAT: A Toolkit for Assem-bling Concerns" IBM Research Report RC22686 (December 2002)
Helm, R., Holland, I., Gangopadhyay, D.: Contracts: Specifying Behavioral Compositions in Object-Oriented Systems. In: Proceedings of the Conference on Object-Oriented Programming: Systems, Languages, and Applications, Vancouver. ACM, New York (1990)
Hillsdale, E., Hugunin, J.: Advice Weaving in AspectJ. In: Proc. 3rd International Conference on Aspect-Oriented Software Development, pp. 26–35 (2004)
Keller, R., Hölzle, U.: Binary Component Adaptation. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, p. 307. Springer, Heidelberg (1998)
Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C.V., Lo-ingtier, J.-M., Irwin, J.: Aspect-Oriented Programming. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An Overview of AspectJ. In: Proc. 15th European Conference on Object-Oriented Programming, pp. 327–353 (2001)
Kniesel, G., Constanza, P., Austermann, M.: JMangler – A Framework for Load-Time Transformation of Java Class Files. In: IEEE Workshop on Source Code Analysis and Manipulation (SCAM) (November 2001)
Lau, K.-K., Wang, Z.: A Taxonomy of Software Component Models. In: Proceedings of 31st Euromicro Conference on Software Engineering and Advanced Applications. IEEE, Los Alamitos (2005)
JBOSS web page, http://www.jboss.org
Mezini, M., Lieberherr, K.: Adaptive Plug-and-Play Components for Evolutionary Software Development. In: Proc. Conference on Object-oriented Programming: Systems, Languages, and Applications (1998)
Smaragdakis, Batory: Mixin Layers: An Object-Oriented Implementation Technique for Refinements and Collaboration-Based Designs. ACM Transactions on Software Engineering and Methodology (April 2002)
Tarr, P., Ossher, H., Harrison, W., Sutton Jr., S.M.: N Degrees of Separation: Multi-Dimensional Separation of Concerns. In: Proc. 21st International Conference on Software Engineering, pp. 107–119 (1999)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2006 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Harrison, W., Ossher, H., Tarr, P. (2006). General Composition of Software Artifacts. In: Löwe, W., Südholt, M. (eds) Software Composition. SC 2006. Lecture Notes in Computer Science, vol 4089. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11821946_13
Download citation
DOI: https://doi.org/10.1007/11821946_13
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-37657-6
Online ISBN: 978-3-540-37659-0
eBook Packages: Computer ScienceComputer Science (R0)