General Composition of Software Artifacts

  • William Harrison
  • Harold Ossher
  • Peri Tarr
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4089)


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.


Selection Mode Java Program Object Orient Program Input Graph Software Artifact 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    AspectWerkz web site,
  2. 2.
    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)Google Scholar
  3. 3.
    Batory, D.S., Singhal, V., Thomas, J., Dasari, S., Geraci, B., Sirkin, M.: The GenVoca Model of Software-System Generators. IEEE Software (September 1994)Google Scholar
  4. 4.
    Chiba, S.: Load-time Structural Reflection in Java. In: Bertino, E. (ed.) ECOOP 2000. LNCS, vol. 1850, p. 313. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  5. 5.
    Cohen, G., Chase, J.: Automatic Program Transformation with JOIE. In: USENIX Annual Technical Conference (June 1998)Google Scholar
  6. 6.
    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)Google Scholar
  7. 7.
    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)Google Scholar
  8. 8.
    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)Google Scholar
  9. 9.
    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)Google Scholar
  10. 10.
    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)Google Scholar
  11. 11.
    Hillsdale, E., Hugunin, J.: Advice Weaving in AspectJ. In: Proc. 3rd International Conference on Aspect-Oriented Software Development, pp. 26–35 (2004)Google Scholar
  12. 12.
    Keller, R., Hölzle, U.: Binary Component Adaptation. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, p. 307. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  13. 13.
    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)CrossRefGoogle Scholar
  14. 14.
    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)Google Scholar
  15. 15.
    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)Google Scholar
  16. 16.
    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)Google Scholar
  17. 17.
    JBOSS web page,
  18. 18.
    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)Google Scholar
  19. 19.
    Smaragdakis, Batory: Mixin Layers: An Object-Oriented Implementation Technique for Refinements and Collaboration-Based Designs. ACM Transactions on Software Engineering and Methodology (April 2002)Google Scholar
  20. 20.
    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)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • William Harrison
    • 1
  • Harold Ossher
    • 2
  • Peri Tarr
    • 2
  1. 1.Department of Computer ScienceTrinity CollegeDublin 2Ireland
  2. 2.IBM Thomas J. Watson Research CenterYorktown HeightsUSA

Personalised recommendations