Superimposition: a component adaptation technique

Abstract Several authors have identified that the only feasible way to increase productivity in software construction is to reuse existing software. To achieve this, component-based software development is one of the more promising approaches. However, traditional research in component-oriented programming often assumes that components are reused “as-is”. Practitioners have found that “as-is” reuse seldom occurs and that reusable components generally need to be adapted to match the system requirements. Existing component object models provide only limited support for component adaptation, i.e. white-box techniques such as copy–paste and inheritance, and black-box approaches such as aggregation and wrapping. These techniques suffer from problems related to reusability, efficiency, implementation overhead or the self problem. To address these problems, this article proposes superimposition, a novel black-box adaptation technique that allows one to impose predefined, but configurable types of functionality on a reusable component. Three categories of typical adaptation types are discussed, related to the component interface, component composition and component monitoring. Superimposition and the types of component adaptation are exemplified by several examples.

[1]  Jan Bosch Delegating Compiler Objects: Modularity and Reusability in Language Engineering , 1997, Nord. J. Comput..

[2]  Henry Lieberman,et al.  Using prototypical objects to implement shared behavior in object-oriented systems , 1986, OOPLSA '86.

[3]  Jan Bosch Relations as object model components , 1996, J. Program. Lang..

[4]  Trygve Reenskaug,et al.  Working with objects - the OOram software engineering method , 1995 .

[5]  Adele Goldberg,et al.  SmallTalk 80: The Language , 1989 .

[6]  Jan Bosch,et al.  Haemo dialysis software architecture design experiences , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[7]  Daniel M. Yellin,et al.  Strom: Protocol Specifications and Component Adapters , 1997 .

[8]  Jan Bosch,et al.  Design Patterns as Language Constructs , 1998, J. Object Oriented Program..

[9]  Douglas C. Schmidt,et al.  Object-oriented application frameworks , 1997, CACM.

[10]  Louis Marie Johannes Bergmans,et al.  Composing Concurrent Objects , 1994 .

[11]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[12]  Trygve Reenskaug,et al.  System Design by Composing Structures of Interacting Objects , 1992, ECOOP.

[13]  James M. Purtilo,et al.  Module reuse by interface adaptation , 1991, Softw. Pract. Exp..

[14]  Pierre Cointe,et al.  Prototype-Based Languages: From a New Taxonomy to Constructive Proposals and Their Validation , 1992, OOPSLA.

[15]  Nissim Francez,et al.  A compositional approach to superimposition , 1988, POPL '88.

[16]  Jan Bosch,et al.  Object Acquaintance Selection and Binding , 1998, Theory Pract. Object Syst..

[17]  Mansour Zand,et al.  Proceedings of the ACM SIGSOFT : Symposium on Software Reusability (SSR'95), April 28-30, 1995, Seatle, Washington, USA , 1995 .

[18]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[19]  Daniel M. Yellin,et al.  Protocol specifications and component adaptors , 1997, TOPL.

[20]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[21]  Ralph E. Johnson,et al.  Design Patterns: Abstraction and Reuse of Object-Oriented Design , 1993, ECOOP.

[22]  Johannes Sametinger,et al.  Software Engineering with Reusable Components , 1997, Springer Berlin Heidelberg.

[23]  Max Mühlhäuser Special Issues in Object-Oriented Programming , 1997 .

[24]  Ian M. Holland,et al.  Contracts: specifying behavioral compositions in object-oriented systems , 1990, OOPSLA/ECOOP '90.

[25]  Ali Mili,et al.  Reusing Software: Issues and Research Directions , 1995, IEEE Trans. Software Eng..

[26]  Shmuel Katz,et al.  A superimposition control construct for distributed systems , 1993, TOPL.

[27]  Urs Hölzle,et al.  Integrating Independently-Developed Components in Object-Oriented Languages , 1993, ECOOP.