In these pages we attempt to give an impression of the ECOOP workshop on "Composability Issues in Object-Orientation" on July, 9th, 1996 in Linz. We briefly describe the presentations and discussions that took place and present the results and conclusions that were reached during the workshop. A list of all the workshop participants is included with the report.
Although the need for composable models of computation has been recognized since long, this was -to the best of our knowledge- the first workshop solely dedicated to the topic of composability in object-orientation. For many years, the 'conventional' object-oriented model has been considered a suitable abstraction for constructing composable software modules. However, as the object-oriented model was applied to more and more domains, numerous problems in extending, reusing, adapting and composing objects appeared. In the increasingly complex applications of today, the ability to select existing components and compose them into new objects is becoming more important than ever.
One of the important goals for this workshop was to put the topic of composability explicitly on the research agenda. To achieve this, one intention of the workshop was to try to define and understand what 'composability' means, to investigate the composability characteristics of the conventional object model and to come up with open questions and research issues.
The workshop received 18 position papers and was attended by 36 participants, thereby in a sense being successful at the start already. However, our goal was not so much to attract many people, but to create an environment to gain new insights through the exchange and synthesis of ideas and experiences. To this end, we compiled a workshop agenda that focused on discussing topics. The -mostly- very short presentations were aimed at initiating discussion rather than the mere presentation of previous work. Splitting the participants into small groups to discuss special topics also served to enable everyone to participate and contribute.
The following is the agenda that we prepared in advance, and could roughly stick to, albeit with some differences:
9:00- 9:15 Opening: Introduction & Workshop Goals
9:15-10:00 Invited Talk: Aspect Oriented Programming - Gregor Kiczales
10:00-10:30 General Composability Issues & Characteristics
10:30-11:15 Beyond Inheritance (Composition vs. Inheritance)
11:15-11:45 Report on the Adaptability Workshop (WS11) - Mehmet Aksit
11:45-12:30 Group splitting: collect/create definitions and problem statements
14:00-14:45 Reflection & Meta-level Specifications
14:45-15:15 Composability Mechanisms/Techniques & Models
15:15-16:00 Special Topics - Interactions, Frameworks, Patterns, Interfaces
16:00-17:00 Group splitting: define conclusions, approaches & future work
17:00-17:30 Group Reports
17:30-17:45 Planning the future, or: what next?
After the opening and a brief introduction by all the participants, the workshop set off with an invited talk by Gregor Kiczales. He introduced the motivation for, and the concepts of, Aspect Oriented Programming (AOP). In a nutshell, aspect-oriented programming is concerned with a decomposition (and composition, or weaving) of software in an entirely different way than conventional module-based systems. The decomposed concerns are referred to as aspects, which may include communication, synchronization, location, memory locality, data structures, etcetera. The chapter "Aspect Oriented Programming" in this volume explains the idea in more detail. Apart from being an inspiring talk, the presentation of AOP also served as an eye-opener and reference as to how composability models may differ from conventional object models. Discussions that were held later during the workshop often referred and compared to AOP.
The workshop continued with a session on general composability issues, initiated by a presentation by Carine Lucas who presented a number of research topics. These are based on the three inhibitors to achieve composability that were identified in the position paper, and are also presented in the paper "Research Topics in Composability" in this volume. Carine also presented a general framework for composability research, involving the following three dimensions: 1. separation/composition of concerns, 2. adaptability research, and 3. reuse library research. This schema led to considerable discussion, with the primary issue being the relation between composability and adaptability. Oscar Nierstrasz noted that composability is really a means for achieving the goal of adaptability. Gregor Kiczales responded that adaptability is not the goal; the real goal is to construct and maintain software. This discussion was extended in the afternoon as a distinct topic for one of the discussion groups. It was also discussed how techniques and tools such as metalevel architectures, AOP, domain specific software architectures, design patterns, open implementations, CORBA/COM, black box components, components repositories, reuse contracts, inheritance and scripting fit in the framework.
The session 'Beyond inheritance' started with a discussion of the problems with inheritance, triggered by a presentation from Clemens Szyperski and Wolfgang Weck. They concluded that the most problems with inheritance are of a more pragmatic nature, e.g. when trying to integrate third-party components. It should be noted that conventional inheritance has also more fundamental restrictions, such as dealing only with methods and instance variables. Christian Prehofer, Jan Bosch and Joaquim Baptista presented alternative object models, supporting additional levels of composition. These models share some of the characteristics of AOP, but focus on defining aspects at the object level, rather than the more global aspectual decomposition that AOP is concerned with.
The term multi-dimensional decomposition was coined to designate the fact that an application is no longer decomposed purely along a single dimension such as functional decomposition or object nesting. AOP then offers multi-dimensional application decomposition, where each aspect conforms to a single decomposition dimension. The alternative object models referred to above offer multi-dimensional decomposition at the object model, where e.g. features and layers roughly conform to decomposition dimensions. The latter models aim mostly at managing complexity, but -at least in the current implementations- at the expense of efficiency. In the AOP case, however, the decomposition strategy (and the weaving) have a positive affect on the performance of the resulting applications.
Mehmet Aksit gave a verbal report on the adaptability workshop (WS11) that took place one day earlier. More information about this workshop can be found elsewhere in this book. The group splitting was postponed in favor of an early lunch.
After the lunch break we immediately continued with the session on reflection and meta-level specification. Pierre Cointe presented the position paper by Bouraqadi et.al. regarding the composability problems that may occur in the presence of metaclasses when composing instance and class methods. Theo Dirk Meijler presented a system based on meta-level compositions and Bedir Tekinerdogan presented a meta-level model as a research approach to reason about composability semantics. Johan van Oeyen explained that their research in distributed applications, driven by the needs of the applications, had led to an open, reflective, run-time system which composes application functionality at the base-level with system-related issues at the meta-level. He made a case for the development of a generic language design framework. It was concluded that the work presented by Bedir happens to be a step in this direction (as is e.g. previous work by Jeff McAffer).
The subsequent session introduced composability techniques through presentations by Guruduth Banavar (lexical nesting as a composition technique), Fernando Sanchez (composition of synchronization code and objects) and Gunnar Teege (compose objects from independent 'features', each of which defines its own weaving semantics). Oscar Nierstrasz gave a short overview of the work he is doing in Berne. He addressed 3 main issues and their dependencies: the language, the tool and the method level. The 'Special Topics' session introduced such diverse topics as protocols that specify the interaction between components (Boris Bokowski), dynamically loadable libraries for adding new behavior components to applications (Luca Deri), a discussion of the nature of nested objects (parts), some of its modeling problems and possible approaches were raised by both Naftaly Minsky and Luca Pazzi. Discussions were mainly concerned with understanding the semantics of the specific techniques and approaches.
The remainder of the afternoon was spent on identifying topics, dividing the participants in groups that focused on a single topic and the reports of each of these groups. The following topics appeared to draw the most interest, and groups were formed for each topic:
The main conclusion of group 1. was that the taxonomy of artifact and composition types within any system or model are a balance (trade-off) between software engineering compositionality requirements and pragmatics, where the prime pragmatic consideration is performance. The compositionality requirements are fed by the need for separation of concerns. Pragmatic issues include the static cq. dynamic nature of compositions and their (memory and speed) costs.
In the second group the motivations for compositionality and the relation with adaptability were investigated. The conclusion was that the motivation should be derived from a specific software engineering task, resulting in a technical goal. Two tasks were identified; software construction and software evolution. The first provides a direct motivation for composability since it enables the construction of software from available building blocks. The latter, software evolution, motivates adaptability since this facilitates responding to changes in the context and requirements. Adaptability again makes it easier to compose building blocks, and composability makes it easier to adapt systems by composing these from building blocks.
The group about composability versus reflection suggested that the adoption of reflection as an approach towards achieving composability is primarily motivated by the variable number of aspects that appear and evolve in applications. This requires a separation of concerns, where the specifications of these concerns/aspects can be transparent to the application if it appears at the metalevel. The two approaches to reflection are: meta-level computation and meta-level specifications. An example of meta-level computation is message reification which appears e.g. in Composition Filters, LayOM, MAUD and CORRELATE. The group felt that message reification would probably be insufficient, e.g. for memory management. So either also structural reflection is required, or the problems can be addressed through more finegrained metamodels. The big problem of most meta-level computation systems is that at the meta-level composability is again required to manage complexity. Another reflective approach are meta-level specifications, e.g. such as in Meijlers' FACE system for generic programming (also described in this volume). This is a two-step approach that first describes base-level (object-) compositions, and then meta-level specifications, such as how classes can be composed. This approach requires compositions at the meta-level as well, but this may introduce problems such as described at the workshop by Pierre Cointe, Noury Bouraquadi et.al.
The fourth group discussed the characteristics of a language design framework for composable languages. As requirements for object composition they suggested adaptability, and scalability by allowing the composition of compositions. The components should be developed independently and composed afterwards, requiring an a priori 'guarantee' for composability, which probably requires some contract language that specifies the requested behavior of and interactions with a component.
The last group looked at compositions in current object-oriented programming languages, coming up with a list consisteing of inheritance, delegation, aggregations and protocol-based composition. They realized that complex behavior must in general be defined in the implementation of methods. There is however a range of aspects such as synchronization, real-time, coordinated behavior, and protocols, that are often mixed with the basic object behavior and themselves. Also standard composition techniques such as inheritance do not work -explicitly- for these aspects, and multiple compositions are impossible as well. The solution is to separate the concerns, in this case by separating the specification and composition of the aspects. Some hints to be kept in mind: provide polymorphic solutions, abstract state information, consider dynamically changing concerns, and preserve composability at every level.
After the reports by each of these groups, a quick wrap-up followed by reconsidering and agreeing to the most important conclusions that had appeared during the workshop day. These conclusions are summarized in the next section.
The workshop was in our opinion successful from several perspectives: there were sufficient submissions and participants, there was plenty of discussion and exchange of ideas, both at the workshop level and within the working groups, and we were able to agree on a few observations and conclusions:
In particular the participation of many inspiring people resulted in fruitful discussions and new insights. The workshop organizers wish to thank every participant for his/her contributions. However, we have only made the first steps in a highly relevant and interesting research area, and it is not unlikely that a similar event will be organized in the future. For more information about this workshop, including a list of participants with addresses and the submitted position papers, check out the web-pages at http://wwwtrese.cs.utwente.nl/cioo96.
The following persons attended the workshop in Linz. For each participant the name, affiliation and e-mail address is listed: