rect rect rect rect rect rect rect
You are viewing an archived version of CBSE 1998. This page has been archived via the Internet Archive Wayback Machine for the ICSA conference series history. Some links on this page might not work.
← return to the ICSA homepage.
General Navigation ../buttons - Home | Search | Contact Us | Site Map | Whats New
engineering graphic
engineering
Welcome
Architecture Tradeoff Analysis
CERT Coordination Center
COTS-Based Systems
Overview
Activity Areas
Products and Services
CBS Team
References
Opportunities to work with us
Briefings, Courses, and Workshops
CURE (COTS Usage Risk Evaluation)
EPIC
Spiral workshops
COTS-Based Systems Monographs
COTS_Spot Column
Little Red Book
Performance - Critical Systems
Information Repositories
Team & Personal Software Process
Product Line Practice
Software Engineering Measurement & Analysis (SEMA)
Acronyms
Technical Initiatives
Conferences
Education & Training
About SEI|Mgt|Eng|Acq|Collaboration|Prod.& Services|Pubs
Rollover Popup Hints for Topic Navigation ../buttons above
Componentware--The Big Picture


Klaus Bergner
Andreas Rausch
Marc Sihling

Institut für Informatik
Technische Universität München
D-80290 München
http://www4.informatik.tu-muenchen.de

A position paper presented at the 1998 International Workshop on Component-Based Software Engineering



1. Introduction

The goal of componentware is to carry the old dream of building software systems by assembling pre-fabricated components to undreamt brilliancy. Although there is a variety of technical concepts and tools for component-oriented software engineering, the successful model from the building industry could not be transferred fully to software development yet. In our opinion, this is mostly due to the lack of a suitable methodology. Such a methodology should consist of the following parts:

  • A well-understood and formally founded component concept is needed as a basis. The concept has to be simple, but sufficiently powerful to model the essential concepts and development techniques of the existing technical component approaches.
  • Based on the component concept, description techniques for components are needed. They are necessary for communication with the customer and between the developers. Examples for such description techniques are the notations provided in the Unified Modeling Language (UML) [UML97], as well as programming languages like C++ or Java. Well-defined consistency criteria allow to check the correctness of different views of a system with the help of specialized tools.
  • Development must be organized according to a process tailored to componentware. Such a process has to be organized and structured differently compared to the creation of systems from scratch. This includes especially the assignment of tasks to different roles, for example, to a software architect who is responsible for the overall design of a system, or to component developers who develop and sell reusable components.
  • The description techniques and the overlying componentware process must be supported by tools. These tools should at least be able to generate the system itself as well as any kind of documentation for the system. Furthermore, tools should be able to verify and prove critical properties of the system. To perform these tasks, tools must combine and implement the three former points.

In the following sections we cover these aspects in more detail.



2. Componentware � Characteristics and Concepts

Componentware is the art of building systems from components. Hence, the most important concepts in componentware are components and their interfaces.

The interfaces of a component is particularly important for the composition and customization of components by users: They allow them to find suitable components and to understand their purpose, functionality, usage, and restrictions. The description of a component interface consists of

  • a signature part, describing the operations provided by a component, and, based on that
  • a behavior part, describing the component's behavior.

However, most description techniques for interfaces, such as the Interface Definition Language (IDL), are only concerned about the signature part.

Components can implement (resp. export) one or more interfaces, and they can also use (resp. import) interfaces from other components. Hence, export interfaces correspond to the services a component provides to the environment, and an import interface corresponds to the services a component needs from the environment to implement the exported services. Together, import and export interfaces of all components constrain the possible connections between components. To build a system of components, one needs to define a mapping by connecting compatible import and export interfaces.

We can distinguish the concept of an instance from the concept of a type, analogous to object-orientation. Component types are not necessary in some approaches, for example, with large legacy components, where only one component instance of a type exists. However, the type concept is useful to get a clear and uniform framework of notions suitable also for approaches with explicit types like Java Beans [SUN97].

The connection structure on the type level is usually static and does not change during the runtime of a system, but only during development. The connection structure of the instances may not violate the constraints given on the type level, but is more dynamic, as component and connection instances can be created or destroyed at

runtime under control of the system itself. Of course, certain variations are possible here with respect to the admitted connection structures and their possible changes (for an example see [BKR+98]. A further level of extension can be introduced by permitting dynamically changing interfaces, similar to the DCOM interface concept [Cha96].



3. Description Techniques for Components

So far, we have focused on providing a model for components. For describing them, we mainly use and adapt existing, well-known description techniques from UML [UML97], Fusion [CAB+94], and Catalysis [DW95].

Describing interfaces of components means to describe the black-box view of components. To specify the signature part of interfaces component interface diagrams (CIDs) can be used (cf. [HRR98]). CIDs are an adapted version of UML class diagrams, where each box represents an import or export interface of the enclosing component. Additionally, with enhanced CIDs one can specify multiplicity of interfaces and navigation between several interfaces supported by one component. CIDs can be easily mapped into existing componentware infrastructures, like CORBA [OH97], ActiveX [Cha96], or Java Beans [SUN97] (cf. [HRR98]). Additionally, CASE tools like Rational Rose could generate CORBA or DCOM IDL-Files from CIDs. The behavior part on the interface level can be described, for example, with state machines or sequence diagrams.

To describe the internal implementation of a component, the so-called glass-box view, one can, for example, use class diagrams, state machines, and sequence diagrams. The glass-box view should also describe the dynamic change of the instance and connection structure of a component�s implementation. In general, the existing description techniques are not sufficient in that area, and new techniques must be found.



4. Componentware Methodology

On top of the description techniques a component-based development method is needed. This method should take care of the following points:

  • Adoption of proven methodology: Componentware does not introduce a totally new paradigm, but rather builds on existing, well-proven techniques. Hence, the methodology for componentware should not be totally new, but adapt, improve, and combine well-known object-oriented methodologies.
  • Combining bottom-up and top-down development: As practical experience has shown, neither a pure top-down nor a pure bottom-up approach is adequate for the development of large applications. To overcome the deficiencies of both extremes, the componentware approach has to combine top-down and bottom-up development as equivalent parts complementing each other.
  • Guidelines for using description techniques: The process model should provide developers with guidelines when and how to use the different description techniques and when and how to check the resulting documents for consistency.
  • Support for reuse and customization: Current methods do not sufficiently take into account issues of reuse and customization. Therefore, the reuse rate in practice is very low. To reach a higher rate of productivity, we have to introduce new tasks performed by persons in new roles.

Figure 1 shows our proposal for the component-based development method. The main tasks are similar to those of the waterfall model: analysis, architecture design, component design, and implementation. In contrast, we do not require that these tasks are performed sequentially, but allow to switch between them or even to perform them concurrently. However, we require well-defined interfaces between them, for example, documents, component and interface specifications or implementations, and prototypes. This is shown by the horizontal, three-dimensional two-way arrows.

Each main task consists of several subtasks. Although these phases eventually run in parallel and influence each other, there may not necessarily be well-defined interface documents. Figure 1 illustrates this fact by connected boxes, like the boxes requirements elicitation, business component evaluation, and business component search.

Figure 1 also includes some special subtasks (resp. task switches) where one should interact with component vendors. For instance, in the subtask component search, the component assembler is searching for suitable components in several component repositories provided by vendors. For some of these components, the component assembler will evaluate whether they match the requirements and fit into the existing architecture. Whenever components are delivered by vendors, these components have to be tested against the specification and the test scenarios worked out.

As can be seen, our focus is not on processes, but on tasks, their deliverables, and their dependencies between them. This allows to use our methodology with several process models, like rapid prototyping or the spiral model, and also to walk through phases iteratively. Furthermore, developers are not forced to follow a strict bottom-up or top-down approach. Instead, a combination of top-down and bottom-up development with cyclic and iterative aspects is possible.

We also introduced new roles, illustrated by the flags in Figure 1. In our eyes, one of the central issues with componentware is especially the separation of the roles of component vendors and component users. It is a necessary prerequisite for the rise of a market of specialized, reusable high-quality components needed to build the large and highly complex systems of the future. To get more detailed information about the development method see also the full version of the paper [BKR+98].

Figure 1: A Component-Based Development Method



5. Requirements for Tools Supporting Componentware

To reach the real benefits of componentware, we have to integrate the proposed concepts, description techniques, and processes into tools. Tools can be distinguished as follows:

  • Component specification: Specification tools provide means for describing the signature and behavior part of component interfaces. To reach that goal, some of the description techniques introduced in Section 3 should be supported. Specification tools are, for example, used by component vendors to describe their product in an understandable fashion as well as by component users to specify the component they intend to buy.
  • Component composition: Tools for component composition are already on the market, for example, SUN�s Visual Java or IBM�s Visual Age. However, they just implement a subset of the needs. For instance, they cannot deal with the dynamic creation and deletion of components or connections properly and do not check the validity of composition on the semantic level.
  • Component brokers: One of the most important tasks in our method (see Section 4) is the search for already existing components. This involves specialized tools for understanding the requirements and for browsing through component catalogues or one�s own legacy components.
  • Component workflow: Tools supporting the development process can be helpful only if they are also aware of the separation of roles. Basically, this comes down to specialized workflow management.


Further Work

The proposed framework for componentware, the component concepts, description techniques, and the component-based development process model were defined as a result of several case studies. In the future, we will further work out and improve this framework and integrate it into tools.



References

[UML97] UML Group: Unified Modeling Language 1.1. Rational, 1997.
[Cha96] D. Chappell: Understanding ActiveX and OLE. Microsoft Press, 1996.
[SUN97] Sun Microsystems: Java Beans 1.01. Sun Microsystems, 1997.
[OH97] R. Orfali, D. Harkey: Client/Server Programming with JAVA and CORBA. John Wiley and Sons, 1997.
[BKR+98] K. Bergner, A. Rausch, M. Sihling: Componentware � The Big Picture. TU München, 1998.
[HRR98] F. Huber, A. Rausch, B. Rumpe: Component Interface Diagrams: Putting Components to Work. TU München, 1998.
[CAB+94] D. Coleman, P. Arnold, S. Bodoff, C. Dollin, H. Gilchrist, F. Hayes, P. Jeremaes: Object-Oriented Development � The Fusion Method. Prentice-Hall, 1994.
[DW95] D. D�Souza, A. Wills: Catalysis � Practical Rigor and Refinement. Technical Report, 1995.



1 This paper is an executive summary of the paper Componentware--The Big Picture, written by K. Bergner, A. Rausch, M. Sihling. Both papers are a work of the research project, "A1 Methods for Component-Based Software Engineering", a part of "Bayrischer Forschungsverbund Software-Engineering (FORSOFT)".





[papers] [presentations] [program] [next] [prev]
contact the organizers [report errors]
[report in pdf format]


The Software Engineering Institute (SEI) is a federally funded research and development center sponsored by the U.S. Department of Defense and operated by Carnegie Mellon University.

Copyright 2003 by Carnegie Mellon University
Terms of Use
URL: http://www.sei.cmu.edu/papers/p6.html
Last Modified: 17 December 2003