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
A Connector Model for Object-Oriented Component Integration


Stefan Tai
Technical University Berlin
Sekr. EN-7
Einsteinufer 17, 10587
Berlin, Germany

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


Abstract

In this paper, we present a connector model for software architectural representation of complex component collaborations. Our connector model is based on research in software architecture and object-oriented modeling, and part of a design framework for modeling component-based systems that are built using object integration technologies like the OMG's CORBA. We propose connectors as pattern-like, transferable abstractions of component interconnection and interoperation that can be used to model the abstract architecture of a system. Connectors describe a rationale for introducing individual component features and adaptations, and advance the understanding of the concrete programming architecture of an integrated object system.



1. Introduction

Current software architecture research [1] views and models a software system as a set of components and connectors. Components are abstractions of system level computational entities, connectors are abstractions of component interrelationships. The components, and the mechanisms guiding their interoperation (like communication styles and interaction protocols), are recorded as separate, distinct architectural abstractions. This separation of design concerns leads to system representations that make information about component connections explicit, thus favors a compositional design approach to integrate components by means of connectors.

Object technologies like the OMG's CORBA [2], on the other hand, are enabling technologies that aim to facilitate integration implementation of diverse software components in distributed, heterogeneous environments [3]. CORBA and similar object integration technologies define a standard component interconnection and interoperation model, and promote object-oriented principles to encapsulate incompatible component implementations: All integrated software entities are considered objects that export object-like interfaces and interact by means of (synchronous) method invocation. Further and varied communication and interaction models for cooperating components are introduced with general purpose object services like the CORBAServices [4], which are mapped to the basic object communication model of the object request broker. For example, the Events service defines an asynchronous, decoupled communication model for CORBA components; the Transactions service augments the basic object model with the notion of distributed transactions and specific transaction processing models. Object integration technologies in this way synergistically combine object, distribution, middleware, and even further technologies like database technology.

In our research, we focus attention on suitable architectural abstraction concepts of components and connectors for systems that are built using object integration technologies like CORBA. Our aim is to provide abstract modeling constructs that relate well to programming constructs of component infrastructure technology to support smooth transitioning between different software development phases and system descriptions. In this paper, we present our connector model for object-oriented component integration. We start with a discussion of related work of software architecture research and of object-oriented modeling that focuses on the description of component collaborations, and identify issues for describing ORB component collaborations. We propose connectors as pattern-like transferable abstractions of system level component interconnection and interoperation. Connectors are architectural abstractions of component coordination in the abstract architecture of a system only. Connectors describe a collaboration rationale for component adaptations, which are then modeled in the concrete architecture of a system. The concrete architecture consists of component abstractions only that relate to component models of ORB object infrastructure technology. By establishing these two levels of architectural description, the understanding of complex component interplay is advanced: the abstract architecture represents the system on a very abstract level using connectors, the concrete architecture exhibits individual component adaptations which have been made because of connector collaboration rationale.



2. Focus on Component Collaborations

2.1. Software Architecture Research

A major field within software architecture research is the development of architectural description languages (ADLs). A well-known exemplar of an ADL is UniCon [5]. In UniCon, connectors are first-class language constructs symmetrical to components that mediate interactions among components. Connectors are specified by protocols that consist of the connector type, additional properties, and a list of roles as types that must be satisfied by components. UniCon supports a number of built-in connectors for data flow, procedural, data sharing, or other component connections.
Another exemplar of an ADL is the ACME ADL [6], which has been developed as a common interchange format for architecture design tools. The notion of connectors as employed in ACME is similar to the one of UniCon: Connectors are first-class language constructs that define roles and are characterized by properties like interaction protocols. However, ACME allows the inclusion of different, various ADL-specific information, so that connector protocols, for example, may be expressed in any other specific ADL (that must be understood by tools and system developers in order for the architectural description to be meaningful).

Common to these and other ADLs is that the connectors discussed are of a rather primitive nature, like the recurring example connector "RemoteProcedureCall". Connectors of ADLs are language constructs, but despite their linguistic character, they do not directly correspond to compilation units of programming, but can be realized in various, often undefined ways by means of programming languages and operating systems. ADLs furthermore aim at universal architectural descriptions for diverse classes of software systems and modeling and design problems, and are not restricted nor dedicated to object-orientation.

In the design of ORB-based component systems, however, the component collaborations of interest typically are of a very complex nature (for example, a transactional processing component collaboration), and are based on a specific object-oriented computational model. This requires a more specialized connector model than the universal connector models of ADLs.


2.2. Object-Oriented Modeling

Research in object-oriented modeling comprises the development of object modeling languages, of system development methodologies, and of reusable software solution structures for object-oriented system design. An example of an object-oriented methodology is the UML-based [7] Catalysis methodology [8] that proposes collaborations as an abstraction construct for object interactions. Collaborations are modeled as a set of actions involving multiple participants that are represented as object types. Catalysis collaborations relate to connectors of software architecture, but focus attention on object interactions, and are realized as object operations.

While Catalysis collaborations are specific to particular systems, design patterns are application independent abstractions of a group of interacting objects. Design patterns are structured and named descriptions of recurring design problems and proven generic solutions to these problems that can be customized and applied to different systems, if the systems exhibit similar requirements. A design pattern template structuring pattern descriptions using motivating examples, structural and behavioral object diagrams (class diagrams, statecharts, message sequence diagrams), code examples, and further discussions related to the pattern application, has been introduced by Gamma et al. [9].

Traditionally, object-oriented modeling has structured system descriptions around programming language units like classes, but has not provided architectural abstraction constructs for system level components and component interconnections. ORB integrated components are, however, of varying granularity and complexity, as complete application systems qualify as objects, if they export object-like interfaces. Wrapped legacy applications can behave externally like an object through well-defined interfaces, but may internally not be designed and implemented in an object-oriented way at all. Class abstractions are problematic in that sense, and special attention must be paid when class associations like generalization/specialization, aggregation, or composition are to be interpreted for ORB component associations. Design patterns and collaborations as in Catalysis are powerful abstractions for ORB software system design, if the level of abstraction is raised from programming to software architecture and to the integration of software components.



3. Connectors as Pattern-like Transferable Abstractions

We propose connectors as transferable abstractions for object-oriented component integration. Connectors abstract component responsibilities and interdependencies for various kinds of collaborations as system level architectural patterns. Connectors are described using roles, role interfaces, and interaction protocols. In the following, we present a connector template for representing the various connector information.

Roles. Roles model collaboration responsibilities to abstract from specific components. A role describes a collaboration participant that is fulfilled by a specific component when instantiating the connector (a component plays one or multiple roles). For example, an "Event Notification" connector for implicit invocation comprises roles like "EventPushSupplier", "EventChannel", or "EventPushConsumer".

Role Interfaces. Role interfaces model role behavior in terms of provided and/or required services. Multiple role interfaces for a single role, and directed usage relationships between a role and other role's interfaces can be specified. For example, the role "EventChannel" provides role interfaces like "EventChannel", "ConsumerAdmin", or "ProxyPushSupplier". Role interfaces may be expressed using an interface definition language like OMG IDL.

Interactions. Interaction protocols describe sequences of requests among multiple roles along with pre- and postconditions to be considered. Interaction protocols refer to services of role interfaces, and describe role interface usages for various interactions of the collaboration. For example, in the "Event Notification" connector the interaction "Connecting as PushConsumer" may specify that an event consumer must register itself to the component playing the role of "EventChannel" via doubled dispatching (use of the "EventChannel" and of the "ConsumerAdmin" interface to obtain a "ProxyPushSupplier" object reference, as described in the OMG's Events service). Other "Event Notification" interactions include "Pushing Event Data", or "Pulling Event Data". Interactions may be expressed using UML generic sequence diagrams (the connector roles are interpreted as UML types), or other protocol formalisms.

Modeling Example. A modeling example describes a use and impact of applying the connector to specific components. The modeling example consists of descriptions of the components, an abstract architecture, and a concrete architecture.

For describing components, we provide a component template that structures component information into three sections: the system level component interfaces, the programming level interfaces of a component implementation, and the internal component realization design. Our component model is described in more detail in [10].

    Abstract Architecture. The abstract architecture of a component composition refers to components being related by means of the connector. The component scheme describes the distribution of role responsibilities as defined in the connector to the components involved.
    Using connector-based component schemes, a component collaboration is described on a very abstract level of architectural description. This abstract architecture describes in a pragmatic manner that the components are in collaboration according to the defined interfaces and interaction protocols as given with the (component-independent) connector specification.

    Concrete Architecture. The concrete architecture of a component composition refers to the architectural description that consists of component abstractions only. The individual component descriptions exhibit all features of the component relevant for the collaboration, i.e., the component customizations and adaptations which have been made because of connector collaboration rationale. As such, a collaboration view on individual components is provided with the concrete architecture. The concrete architecture provides a more implementation-oriented architectural representation, as the component abstractions can be well related to constructs of ORB infrastructure technology.



4. Summary

To focus on component collaborations rather than on single, individual computational entities, has been subject in both software architecture research and object-oriented modeling. We have presented a connector model for object-oriented component integration which combines ideas of software architectural connectors and object-oriented design patterns.

The provision of transferable, reusable abstractions of component collaborations is of predominant importance in the development of ORB-based integrated systems, especially when regarding object services like the CORBAServices, which are now more and more populating the core object integration technologies. The introduction and use of object services describes an impact on the (re)design of (existing) single components and of component configurations, as standard required interfaces and complex interaction models are defined. Connectors can be used to capture and document impacts as introduced by object services as distinct abstractions of design, as has been exemplified for interaction models of the Events, Relationship, and Transaction service [11], [12].

We propose to represent the software architecture of ORB-based integrated component systems on two different levels of abstraction: using connectors for the abstract architecture, and using component abstractions only for the concrete architecture. Architectural abstractions and software solutions of ORB infrastructure technology can in this way be well related, advancing the understanding of complex component compositions.

We are currently investigating connector abstractions for selected CORBAServices, in particular connectors for the Object Transaction Service (as part of a university project with IONA Technologies), and for the application domain of integrating air traffic control software components in a CORBA-based infrastructure (as part of a university project with EUROCONTROL Experimental Centre).



Acknowledgments

To Peter Löhr, Freie Universität Berlin, for his comments on an earlier version of this paper.



References

[1] M. Shaw, D. Garlan. Software Architecture. Perspectives on an Emerging Discipline, Prentice Hall, 1996. 
[2] Object Management Group. The Common Object Request Broker: Architecture and Specification, Rev 2.0, OMG, 1995. 
[3] S. Vinoski. CORBA: Integrating Diverse Applications Within Distributed Heterogeneous Environments. IEEE Communications, Vol. 14, No. 2, 1997.
[4] Object Management Group. CORBAServices: Common Object Service Specifications, OMG, 1995.
[5] M. Shaw, R. DeLine, G. Zelesnik. Abstractions and Implementations for Architectural Connections. Proc. 3rd Intl. Conference on Configurable Distributed Systems (ICCDES'96), 1996.
[6] D. Garlan, R. Monroe, D. Wile. ACME: An Architecture Description Interchange Language. Proc. European Software Engineering Conference (ESEC'97), 1997.
[7] Object Management Group/UML Partners. Unified Modeling Language, V1.1, OMG, 1997.
[8] D. D'Souza, A. Wills. Catalysis: Practical Rigor and Refinement. Technical Report and on-line articles at http://www.iconcomp.com/
[9] E. Gamma, R. Helm, R. Johnson, J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995. 
[10] S. Tai. Ph.D. Project "Architecture Enabled Continuous Software Engineering"
[11] S. Tai, S. Busse. Connectors for Modeling Object Relations in CORBA-based Systems. Proc. 24th Intl. Conference on the Technology of Object-Oriented Languages and Systems (TOOLS 24), 1997.
[12] S. Busse, S. Tai. Software Architectural Modeling of the CORBA Object Transaction Service, 1997. Proc. 22nd Intl. Computer Software Applications Conference (COMPSAC'98), 1998. to appear
 





[papers] [presentations] [program] [next] [prev]
[contact the author] contact the organizers [report errors]


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/p19.html
Last Modified: 11 August 2004