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
COTS-Based Systems
Overview
Activity Areas
Products and Services
References
Briefings, Courses, and Workshops
CURE (COTS Usage Risk Evaluation)
EPIC
Publications
COTS_Spot Column
Integration of Software-Intensive Systems
Performance Critical Systems
About SEI|Mgt|Eng|Acq|Collaboration|Prod.& Services|Pubs
Rollover Popup Hints for Topic Navigation ../buttons above
From Component Infrastructure to Component-Based Development


Alan Brown
Sterling Software
6620 Chase Oaks Blvd., M/S 8515
Plano, TX 75023, USA.
alan_brown@sterling.com

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



1. Challenges to CBD

Much of the existing work in component-based software technology has concentrated on developing infrastructure capabilities and middleware solutions for connecting independent pieces of system functionality. The result of this work is a range of maturing infrastructure products for supporting deployment of distributed systems. Examples include message-oriented middleware (MOM) products such as Microsoft�s MQ Server and IBM�s MQSeries, and object request brokers (ORBs) such as Microsoft�s Distributed Component Object Model (DCOM) and the various implementations of the Object Management Group�s (OMG�s) Common Object Request Broker Architecture (CORBA) [3].

The availability of these products has led many application developers to consider their use in the development and deployment of large, distributed, mission-critical applications requiring robust operation in the face of high transaction rates, multiple simultaneous users, and so on. However, to achieve this requires substantially more than the component infrastructure products now available. It requires a move from component infrastructure products to a broader notion of component-based development (CBD). In particular, to be effective, developers of large-scale, mission-critical applications require many additional capabilities, including ways to:

  • reengineer legacy applications to harvest existing components reusable in other applications, or replaceable by newer technologies;
  • find suitable components both locally and externally;
  • integrate components implemented in a variety of different technologies;
  • validate a component�s behavior before using it;
  • manage multiple implementations of the same component in different technologies, and as it evolves over time.
It is our belief that large-scale adoption of component-oriented approaches in these demanding business applications must be built on four key advances:

  • methods for designing CBD solutions that help the organization focus on the major functional pieces of their domain, and how those pieces will interact;
  • tools that support specification of business components using techniques that allow the functionality to be described independently of a particular implementation technology;
  • implementation techniques for components that support demanding requirements for key business goals such as performance, usability, availability, etc.;
  • a component management and assembly infrastructure to knit together all the pieces specified, built, and acquired, even when those pieces have been developed using different technologies, or by different people.
The next two sections of this paper briefly expand on these ideas, and focus on how these advances can be realized in practice. The paper concludes with a brief summary.1



2. CBD-Oriented Methods

The move toward CBD requires existing software analysis and design approaches to be reconsidered. In particular, any method supporting CBD is required to exhibit at least the following 3 key principles:

  • A clear separation of component specification from its design and implementation. This allows component behavior to be described independently of its implementation, and supports the possibility of multiple alternate component implementations for the same specification.
  • An interface-focused design approach. The goal of the CBD method must be the definition of encapsulated behavior accessible through well-defined interfaces. Interfaces provide a contract between providers and consumers of services allowing greater independence across components.
  • More formally recorded component semantics. Informal descriptions of component behavior can be provided via operation signatures and informal text. However, details of operation semantics require formal, verifiable descriptions using preconditions and post-conditions attached to each operation. Without this, component behavior is ambiguous and open to misinterpretation by its potential users.
  • A rigorously recorded refinement process. Stages in the specification and design process must be recorded to maintain a design record of a component�s evolution. Justification for each refinement must also be captured. Use of a component by a third party requires this level of information to assure its quality and to understand aspects of the designers� rationale.
To satisfy these requirements, we consider an approach to component modeling inspired by Catalysis, a "next generation methodology for modeling and constructing open systems from components and frameworks" developed by Icon and TriReme [1].

There are seven key ideas that characterize a Catalysis-inspired approach to component modeling and satisfy the requirements described above. We discuss each of these in turn.


2.1 Describe the static aspects of the domain

A user describes the static structure of the elements of interest within a domain as a set of related types in a type model. The structural relationships among types represent the static constraints that exist among elements of the domain.

For each type in a domain the user describes its features (attributes and operations) in detail. Particularly important are the pre and post conditions that define the semantics of each operation by describing the state that must exist before the operation can take place, and the state that will result having executed the operation. Informal definitions of the pre and post condition can be given. However, more valuable are pre and post conditions in some formal, verifiable notation supported by the component modeling tool.


2.2 Describe the dynamic aspects of the domain

Interactions among types are modeled as collaborations. Changes of state in a domain occur through interactions among behavior bearing types in that domain. These interactions are represented as collaborations in which types play roles in which they initiate or respond to requests to carry out actions.

A collaboration diagram records the interactions among types in the domain as a sequence of messages (operation invocations). A type responds to a message by invoking the named operation with the given parameters and performing the state change defined in the pre and post conditions of that operation.


2.3 Allow multiple views of the domain

At any time the user may wish to focus attention on some set of types or interactions in a domain. To do this a user must be able to create views focussed only on those elements that are of interest for some specific purpose.


2.4 Track each important step in the design process

As a user progresses with their modeling there will be important stages in which they will wish to record the current model. This can be used for backup purposes should the user wish to return to that point in the modeling, and as an historical record of design rationale of how the final model evolved.

Modeling progression within a domain is recorded through the concept of model conformance. A conformance is a relationship between two descriptions of the same thing (types, collaborations etc.) [1]. A conformance is accompanied by a mapping that justifies the conformance claim. Several types of conformance exist, including: A component implementation conforms to the specification; A class that implements a set of behavior conforms to a type that specifies the behavior; A set of fine-grained actions conform to a more abstract single joint action.


2.5 Support reuse of previously modeled (parts of) domains

It is typical for modeling to be carried out by groups of users over an extended period. To support this it must be possible to model discrete parts of a domain, and allow those parts to be combined in semantically-meaningful ways. Domains can be considered to act as scoping boundaries for describing behavior. A user can import one domain into another, or can decompose one larger domain into a number of smaller domains. This supports both top down and bottom up development methods.


2.6 Package appropriate behavior as interfaces of a component

Having modeled the static and dynamic aspects of a domain, the user must decide how that behavior should be packaged in terms of implementable units which may be developed independently, shared across projects, and executed on different machines.

This packaging takes place by describing which interfaces will be packaged within a single component specification. Each behavior-bearing type is an interface offering a set of operations. The user selectively decides on the grouping of those interfaces into components specifications. Each component specification is an identification of the interfaces it supports.


2.7 Check for completeness and consistency

A user may perform component modeling purely as an intellectual exercise to provide greater understanding of some area of their business. However, more typically a user performs that modeling as the step toward one of two goals.

The first goal is to create a component specification which can serve as a definition of the requirements for some externally acquirable or acquired implementation. In this case the user will not implement the component themselves, but will rely on the component specification as a complete and unambiguous contract to be met by an external provider of that implementation.

The second goal is to create a component specification as a preparatory step before producing an implementation satisfying that behavior. In this case the user will either directly implement each of the operations offered by the component in some programming language, or will develop models describing the implementation details of those operations from which code can be automatically generated for some target platform. In either case the component specification is the basis on which the implementation will be created.

In a component modeling tool there must be a number of consistency and completeness checks which the user can execute to ensure that the component specification is suitable for either of these goals.



3. Tool Support for CBD

Designing and building components requires new tools and techniques. With middleware and the underlying component technologies beginning to mature, we can now concentrate on identifying other elements in a CBD tool architecture.

A CBD tool architecture should of course itself be component based. The architecture should allow users to identify and use their preferred components. Thus a CBD tool architecture is actually a framework. Such a framework however, needs to define the basic technology within which the selected components will operate.

Figure 1 shows an example of an architecture for a CBD toolset that illustrates many of the basic elements required for CBD support. In particular, the figure shows the CBD toolset divided into its three tiers of client, rules, and server. The client aspects provide the functionality made available to users of the toolset. It consists of modeling, rendering, model management, and implementation services. The rules aspects provide the underlying component modeling engine supporting a CBD approach. The server aspects provide persistent storage and interchange of component models with external data sources.

One of fundamental beliefs with respect to CBD is that a CBD toolset must provide the capability of generating technology-specific components using the component specification data recorded in the information model of the component modeling engine, and persisted in the some form of data repository. Although the primary implementation environment is the generation component, it is sometimes necessary to transform component model information to external generation environments. Transforming information from one model to another is conceptually an easy problem. It only becomes difficult when we try to minimize the information loss during the mapping process. Transform tools are necessarily hand written for each target implementation environment.

Figure 1: An Illustrative CBD Tool Architecture

In the remainder of this section we focus on one of the key elements of this CBD tool architecture: the persistent data repository. The repository is a central element in this illustrative tool architecture. Many possible products could be used for this element, but perhaps the Microsoft Repository offers the greatest promise of sophisticated functionality, wide industry acceptance, and compatibility with an extensive range of tools. More specifically, for a tool developer such as Sterling Software, the Microsoft Repository is important for three main reasons.

First, Sterling Software�s participation in the joint design effort of the Microsoft Repository led to the production of several public information models to enable the storage of components in the Microsoft Repository. Hence, this choice is an obvious one for us, and relates well to existing products with which we are familiar.

Second, the information models utilize a subset of the Unified Modeling Language (UML) information model while extending the model with other component modeling concepts. More specifically, the Component Description information model (Cde) address the areas of component specification, implementation and executable information. The mapping from component modeling approaches to this information model is therefore well-defined and straightforward.

Third, a standard information model means that many organizations can offer components to be stored in the Microsoft Repository or use components currently stored in the Microsoft Repository. Its ubiquitous nature (currently it is packaged as part of the Visual Basic product) suggests that it is likely to become the dominant standard for storing component information. Figure 2 illustrates how such a repository can be used to store and use components.

Figure 2: A Component Repository

As the use of the Microsoft Repository flourishes, the types of components stored and the types of applications being constructed will become apparent and the need for a component cataloging facility will become paramount. Although the existing component information model provides some rudimentary constructs for component searching, more sophisticated modeling will be required. A component catalog engine which facilitates sophisticated search and retrieval can be appended to the component modeling engine. The user interface for the component catalog can utilize the user�s preferred Web Browser.

A CBD tool architecture as described above provides several advantages. Users can select their preferred UML compliant OOA tool. For leading OOA tools the architecture will provide standard mappings of concepts in the OOA tool to Component Modeling concepts allowing for some limited generation of the necessary transform tools. Standardization on the underlying tool technology (e.g. COM, Automation) also means that the necessary knowledge to thread together a preferred set of tools is widely available.



Summary and Conclusions

Component-based development of software is an important development approach for software systems which must be rapidly assembled, take advantage of the latest web-based technologies, and be amenable to change as both the technology and application needs evolve. One of the key challenges facing software engineers is to make CBD an efficient and effective practice which does not succumb to the shortcomings of previous reuse-based efforts of the 1970s and 1980s. The keys to this include:

  • Separation of component specification from component implementation to enable technology-independent application design;
  • Use of more rigorous descriptions of component behaviors via methods that encourage interface-level design;
  • Flexible tool architectures for CBD based on existing tool technologies and standards.

This paper has briefly explored some of these issues in the context of CBD tool support that will enhance the effectiveness and viability of large-scale software reuse through the sharing of components � software packages offering services through their interfaces. The result is an interface-based approach to application development and design that encourages the creation of systems that are more easily distributed, re-partitioned, and reused.

The ideas expressed in this paper are being pursued by Sterling Software and form the basis for a new generation of CBD technology that will greatly improve the ease with which component-based systems can be developed, deployed, and upgraded.



Acknowledgments

This paper draws on the work of Icon Computing and TriReme in developing the Catalysis method. For further information on Catalysis see http://www.iconcomp.com.

The ideas and techniques described in this paper have been developed cooperatively with a number of colleagues at Sterling Software. In particular, we recognize the important contributions made by Balbir Barn, John Cheesman, John Dodd, Bill Gibson, Paul Sanders, and Keith Short.



References

[1] Desmond F. D�Souza and Alan C. Wills; "Objects, Components, And Frameworks with UML � the Catalysis Approach"; Addison-Wesley, Reading, Mass. 1997.
[2] Balbir Barn and Alan W. Brown, "Improving Software Reuse Through Component-Based Development Tools", Submitted for Publication, October 1997.
[3] A.W. Brown (Ed.), "Component-Based Software Engineering", IEEE Computer Soc. Press, Los Alamitos CA, 1996.



1 We only address the first two issues due to space limitations. A much fuller treatment of these ideas is available elsewhere (e.g., [2]).





[papers] [presentations] [program] [next] [prev]
contact the author 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 2004 by Carnegie Mellon University
Terms of Use
URL: http://www.sei.cmu.edu/papers/p21.html
Last Modified: 11 August 2004