by Oscar Nierstrasz and Dennis Tsichritzis
Object-Oriented Software Composition adopts the viewpoint that object-oriented technology is essentially about composing flexible software applications from software components. Although object-oriented languages, tools and methods have come a long way since the birth of object-oriented programming, the technology is not yet mature. This book presents the results of a series of research projects related to object-oriented software composition that were carried out within the Object Systems Group at the University of Geneva, or by partners in collaborative research projects, during a period of about ten years. As such, this book is an attempt to synthesize and juxtapose ideas that were developed by a group of people working closely together over several years.
Although many different topics are treated, by presenting them together, we intend to show how certain ideas and principles are closely related to software composition, whether one considers programming language design, formal specification, tools and environments, or application development. Common threads running throughout the book include plug compatibility as a way of formalizing valid ways of composing components, active objects as being fundamental to the development of open systems, protocols as a necessary aspect of plug compatibility for active objects, higher-order functional composition as complementary to object composition, and evolution of objects and object frameworks as an essential aspect to capture in the software lifecycle.
This book should appeal to researchers and practitioners familiar with object-oriented technology, who are interested in research trends related to software composition. Although this book was not designed as a textbook, it would be suitable for an advanced seminar on object-oriented research. Individual chapters can be read independently. The order of presentation has been selected mainly to illustrate a progression of ideas from programming language design issues to environments and applications. Not only is the "Geneva view" of object-oriented development presented, but considerable effort has gone into placing the work in context, and several of the chapters contain extensive surveys of related work.
The Object Systems Group was founded by Dennis Tsichritzis in 1985, after he had spent several years directing research in the area of Office Information Systems. At the time, it became clear that
The first chapter of this book summarizes the relationship between object-oriented approaches and component-oriented development, and surveys the principle research problems in the design of programming languages, tools, environments and methods to support compositional development.The distinction between objects and components is discussed in detail, and the impact of compositional development on software lifecycles is introduced. An important theme that runs through this book is the notion that the role of a component engineer - as a person who is responsible for defining component frameworks - must be explicitly represented in the software lifecycle. Although this book focuses on technological issues, there is a progression of concerns from programming languages and systems towards tools, frameworks and methods.
The first two research projects of the group focused on programming language issues. Hybrid was an early attempt to integrate classes and inheritance with other, "orthogonal" features such as strong-typing, concurrency and persistence. Knos were active objects that could migrate from computer to computer within a local area network, and dynamically change their behaviour according to rules triggered by internal conditions or the state of a communications blackboard. Knos bear close comparison to what are now known as "intelligent agents." The work on Hybrid ultimately led to more detailed investigations by Michael Papathomas into the relationship between concurrency and reuse (chapter 2), and by Dimitri Konstantas into distribution support for flexible open systems (chapter 3). The work on Knosled to fundamental work by Eduardo Casais into more disciplined forms of evolution of object-oriented libraries and to new techniques to reorganize class hierarchies (chapter 8).
This initial phase of experimentation allowed us to gain essential insight into both the theoretical and practical issues of object systems. As a first consequence, the group's interest in the formal aspects of programming language semantics and the specification of object systems became deeper, and led to work by Michael Papathomas and Oscar Nierstrasz on notions of "plug compatibility" for active objects (chapter 4), by on modelling and reasoning about temporal aspects of collaborating object systems (chapter 5), and by Laurent Dami on new models of compositionality, extensibility and subtyping for objects (chapter 6).
In parallel with these theoretical investigations, the group developed new interests in the area of software tools and development environments. Eugene Fiume, who was visiting from the University of Toronto, and Laurent Dami in 1988 developed a prototype of a "temporal scripting language" for animated objects. This was the group's first foray into applying object-oriented technology to the domain of multimedia applications. The notion of a "script" as a high-level specification of coordination amongst a set of pre-packaged objects became a key theme in the group at the time, though it was not clear how the idea could be carried over from the domain of animation to software objects in general.
At about this time we became involved in ITHACA, a large Technology Integration Project of the European Community's ESPRIT programme. The lead partner was Nixdorf Informationssysteme (later Siemens-Nixdorf) in Berlin, and other partners included Bull (Paris), Datamont (Milan), TAO - Tècnics en Automatitzaciò d'Oficines (Barcelona) and FORTH - the Foundation of Research and Technology, Hellas (Heraklion). The goal of the project was to produce a complete, application development environment based on object-oriented technology, including a state-of-the-art fourth-generation persistent object-oriented programming language and its associated tools, and a set of application "workbenches" to support development in a selected set of domains. A key component of ITHACA was the "software information base" (SIB) that was to serve as a repository for all reusable software artefacts (see chapter 7, by Panos Constantopoulos and Martin Dörr). The SIB was intended to drive application development from requirements collection and specification (according to stored domain knowledge and requirements models), through design (according to reusable generic designs), all the way to implementation (according to reusable software components and frameworks). The key insight of this approach is that the potential for reuse offered by object-oriented technology lies not only in libraries of object classes, but runs through the entire software development process. To exploit this potential, however, one needs more than object-oriented languages and tools: the software lifecycle must reflect the role of reuse; the analysis and design methods must reflect the new lifecycle; the project management strategy must support the lifecycle and the methods; and some form of software information system is needed to store and manage the reusable artefacts.
Our contribution to ITHACA was more specifically to develop a "visual scripting tool" for dynamically configuring applications from visually presented software components. We developed a first prototype, called VST, in which the notions of ports and "plug compatibility," and the idea that a script could be packaged up as a component, emerged naturally. Eventually we came to realize the term "script" carried too much semantic baggage from other domains in which timing was a concern (such as animation). More to-the-point was the view of an application as a composition of software components, and so we began to speak of visual composition rather than "scripting." A framework for visual composition was elaborated and realized by Vicki de Mey as part of the ITHACA project (chapter 10).
An important aspect of a software information system is a convenient interface for navigation. Whereas traditional browsers based on class hierarchies display software artefacts only according to fixed relationships, an affinity browser dynamically adapts its presentation according to changing notions of affinity between entities. New techniques were developed by Xavier Pintado and incorporated into a prototype (chapter 9).
Within ITHACA, object technology was applied to the areas of office systems and public administration. In Geneva, we also explored its application to the domains of multimedia systems and financial applications. A multimedia laboratory was built up over several years, and was used as an experimental platform for a multimedia framework. The framework, designed by Simon Gibbs, allowed heterogeneous hardware and software multimedia components to be encapsulated as objects that could be connected according to a standard set of paradigms (chapter 11). One of the uses of the visual composition tool developed within ITHACA was its application to the multimedia framework, thus allowing one to compose multimedia objects interactively instead of having to code C++ programs to glue them together explicitly.
A second framework for the visualization of real-time financial data was designed and realized by Xavier Pintado. In this framework, a complementary approach was taken to visual composition. Instead of requiring that components provide standard plug-compatible interfaces, the bindings between components are encapsulated as gluons (chapter 12).
Various themes run through this book. The dominant theme is that flexible, open applications should be seen not only as object-oriented constructions, but as compositions of plug-compatible software components. The distinction between objects and components, and the notion of plug compatibility must be specified with care. A second theme is that concurrency and distribution are fundamental, but that integration of concurrency and other dynamic aspects into the object model of a programming language poses various technical difficulties. New computational models are needed that take behavioural aspects of objects to be fundamental rather than orthogonal. A third theme is that development of open systems should be framework-driven, and that this in turn requires new lifecycles, methods and tools. In particular, the development of component frameworks by component engineers is an evolutionary process, which must be supported by software information management tools. Application developers similarly need appropriate tools that facilitate instantiation of applications from frameworks and component libraries.
Our research on object systems resulted in a number of Ph.D. theses (by Casais, Arapis, Papathomas, Konstantas, de Mey, Dami and Pintado), produced between 1991 and 1994, which form the basis for seven chapters of this book. Since most of the authors have now left the group, the book also represents the end of a cycle (and the beginnings of new ones). Work on high-level coordination languages, on distributed object systems, and on financial frameworks is continuing in Geneva, whereas some of the other research directions are being pursued at new locations.
It is a hopeless task to try to indicate such a moving target as current activities in a medium as archival as a book. Up-to-date information on the activities of the Object Systems Group can be found on the World Wide Web at: cuiwww.unige.ch/OSG
More information concerning the editors and authors of this book can be found at: www.iam.unibe.ch/~oscar/OOSC
A number of people were also invaluable in the preparation of this book. We especially thank Jiri Dvorak, Karl Guggisberg, Thilo Kielmann, Markus Lumpe, Theo Dirk Meijler, Jean-Guy Schneider, Patrick Varone and Jan Vitek for their careful reviews of several of the chapters of this book. We also thank the authors, and especially Eduardo Casais, Laurent Dami, Simon Gibbs, Dimitri Konstantas and Vicki de Mey for their contributions to chapters they did not co-author. Finally, we thank Isabelle Huber and Angela Margiotta for their help in preparing the final manuscript.
We gratefully acknowledge the financial support of the Swiss National Foundation for Scientific Research (FNRS) which sponsored a series of projects over the years. We thank the Commission for the Encouragement of Scientific Research (CERS) for their contribution to our participation in the ITHACA project. We thank the University of Geneva for providing the infrastructure and support needed to carry out the research we describe. We also thank the Union Bank of Switzerland's Ubilab research facility for its generous financial support. Finally we would like to thank our various industrial and academic partners for their stimulating support over the years.
Oscar Nierstrasz and Dennis Tsichritzis
Geneva, May, 1995