This is the abstract of the demonstration given at EHCI'95, Working Conference on Engineering for Human-Computer Interaction, Grand Targhee Resort, Wyoming, U.S.A., August 14-18, 1995.

Bridging the Gap Between Component-Oriented and Object-Oriented Software Development

Koen De Hondt, Serge Demeyer, Patrick Steyaert
Programming Technology Lab
Computer Science Department
Vrije Universiteit Brussel
A recent trend in software development is to push forward component-oriented software development in response to the apparent failing of object-orientation [Byte 94]. However, comparing component-oriented and object-oriented software development is like comparing apples and oranges. Both target the highly desired goal of reuse, but the means to accomplish this are complementary, rather than exclusive. A witness for this fact is the empty disjunction of the strength lists:

Strengths of componentware: end-user oriented, visual programming, rapid application development, large libraries of predefined components.

Strengths of object-orientation: general purpose, solid software engineering capacity, application framework development, extensibility of the class library, availability of application builders.

In our experience component-oriented environments suffer from their closed nature, which limits the applicability of componentware. Conventionally, components can only be composed in an inflexible framework. Thus, users rapidly encounter the limits of the system, due to a lack of solid software engineering techniques offered. This is reinforced by the wide gap between composing components into an application and the development of new components or adapting the environment.

In some cases -- for instance object-based document exchange standards like OpenDoc and OLE -- the object-oriented approach meets with componentware. These are examples of object-oriented frameworks that are equipped with a predefined set of pluggable objects with which limited applications can be made. The actual strength of componentware, being rapid application development through visual programming, is not achieved in these examples, however.

We are working on an application development environment (ApplFLab, or Application Framework Laboratory) where solid object-oriented software engineering techniques go hand in hand with rapid application development by visual composition. This environment supports the construction of object-oriented frameworks together with the tools for visual composition of components in the constructed frameworks. This constitutes a true domain specific software architecture: rapid application development through visual composition by domain experts (not necessarily programmers) based on a soundly engineered framework architecture by software engineers. ApplFLab has the specific advantage that the domain experts and the software engineers work in the same medium. The integration is achieved by combining reflection techniques with object-oriented frameworks and graphical user interface builders.

During the seminar we will illustrate the seamless transition between application composition and framework construction in ApplFLab. An example application will be composed out of predefined components. The need for adapting the underlying framework will be shown. Accordingly, it will be adapted and the changes will be reflected in the way applications are composed. Different application domains have been and are being explored; one particularly interesting application domain is the domain of software engineering itself. We will briefly sketch future work: how the above techniques can be applied together with the recently developed notion of "design patterns" [Gamma et al. 94] to come to a development environment that supports the construction of object-oriented frameworks.

[Byte 94] Jon Udell, ComponentWare, Byte, Vol. 19, No. 5, May 1994

[Gamma et al. 94] Gamma, E., Helm, R., Johnson, R., Vlissides, J., Design Patterns, Elements of Reusable Object-Oriented Software, Addison Wesley, October 1994