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
Characterization of Components


Jun Han
Peninsula School of Computing and Information Technology
Monash University
McMahons Road
Frankston, Vic. 3199, Australia
jhan@monash.edu.au

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



Abstract

Understanding and codifying the characteristics of components is essential to the effective management and development of component-based software systems. In this paper, we analyse the characterization of objects, review the treatment of components in software architecture description languages, and  contemplate an object-oriented characterization of components in view of  their use and management.



1. Introduction

As more and more systems are built from existing components, it has become increasingly important to have proper characterization of components. Without such characterization,  much effort is wasted on the comprehension and adaptation of components each time they are used. This has been evident from practice. Furthermore, characterization of components is crucial to the management of components as required by systematic component-based software engineering.

It is still not clear how we should characterize components. In this paper, we have a look at how objects are characterized in the object oriented approach, and how components are treated in the context of software architecture research. Then, we contemplate an object-oriented characterization of components from the viewpoint of their use and management.



2. Objects

Object technology has been widely adopted , and has become the standard for much of the software industry. Objects are the core concept of object technology. In general, objects have static and dynamic aspects with structural and behavioural definitions. In terms of characterization, objects take on different forms at different levels of abstraction. In object oriented programming, objects are characterized by attributes and operations:

    OOP:    object = attributes + operations.
where all the constraints about the object structure and interaction are supposedly embedded in the operations.  OMG's object Interface Definition Language also follows this characterization. There are also cases where  assertions are specified to state certain object invariants (or constraints) [Meyer88].

In object-oriented analysis and design, the characterization of objects are enriched to capture the sequencing and interaction of object manipulation [Booch94]:

    OOAD:    object = attributes + operations + sequencing [ ~ interactions/scenarios].
The sequencing of object operations usually takes the form of a state transition diagram for the object (class). The interactions of objects are set in the context of scenarios (rather than relative to individual objects), and are usually specified in object diagrams and interaction diagrams. In such characterization of objects, the constraints about the object behaviour are captured explicitly through sequencing and interaction specifications, which contributes towards the comprehension, management and use of objects in system development.


3. Architectural Components

Over the past few years, we have seen growing research interests in software architectures [Shaw96] and software architecture description languages (SADLs) [Medvidovic97]. In this context, the architecture of a software system is described in terms of components, connectors, configurations, constraints, and possibly other aspects. The components may in turn have their own internal architectures. The treatment of components in this context takes rather  diverse forms with varied emphasis. In [Medvidovic97], components are summarized as having the following aspects: interface, types, semantics, constraints and evolution.  However, this does not give a clear characterization for effective component management and use in an "open" manner.

In the object-oriented paradigm, objects are characterized as independent entities and in terms of their usage and interactions with other objects in the system. It is our view that components in software architectures should be looked at in the similar manner. As such, the architectural components can be seen as follows:

    SAD:    ArchComponent = attributes + operations + constraints/sequencing/interactions.
The attributes are the structural elements of the architectural component , and are usually those relevant to its interface (i.e., observables). The operations are those allowable on the architectural component. The constraints, sequencing requirements and/or interactions are those parts of the architecture description that constrain the usage/interaction and internal composition/state of  the component. Different notations are used to describe constraints in SADLs. Some focus on the constraints on component usage/interaction, while others focus on the component's internal consistency. The constraints that serve as the internal invariants of a component are often not separated from restrictions about external interaction scenarios.

In the current SADLs, in general, the encapsulation role of components and their relationships to the overall system architecture are not clearly defined or characterized. Consequently, the support for proper component characterization is not obvious in the SADLs.



4. Object-Oriented Characterization of Components

As mentioned above, proper characterization of components is essential to the effective management and use of components in component-based software engineering. While there have been industrial/experimental projects that build systems from (existing) components, the approaches taken are ad hoc and heavily rely on the specifics of the systems and components concerned. That is, component-based system development is still very much in its infancy, and there are no proven systematic approaches to follow.  Characterization of components is a step towards such systematic approaches and their enabling technologies, including component management infrastructures. In this section, we contemplate a characterization of components in a manner that is similar to but extends the characterization of objects  in object technology, in the hope to provide a basis for the development, management and use of components. Therefore, it can be referred to as object-oriented characterization of components.

The structural elements are essential aspects of a component in the sense that they constitute the component, which we call attributes (following the general convention). Among these elements are those that are relevant to the interface of the component, i.e., the elements that form part of the component's external view. These observable elements are particularly important from the viewpoint of component management and use, and form the basis of other aspects of component characterization.

Another aspect of a component is the operations, with which other system components interact with it. These operations capture the dynamic behaviour of the components and represent the service/functionality that the component provides.

As in the case of objects, attributes and operations are the most essential aspects of a component. In addition, the structural composition of the component from attributes is usually subject to certain further constraints, i.e.,  certain compositions of attribute instances may not be allowable. We call these constraints structural constraints. Some examples are constraints about the abstract state of the component, like those one can specify in Rapide.

In terms of the dynamic behaviour of a component, not all possible sequences of operation invocation on the component are allowable. That is, there are operational constraints that specify the permissible operation patterns. This aspect is similar to that of an object captured by the state transition diagram.

Besides proactive control (usually in the form of explicit operation invocation), another form of control used to capture system behaviour is reactive control (usually in the form of event-driven implicit operation invocation). It is often the case that certain aspects of a system are better captured through proactive control while other aspects of the system are better captured in the form of reactive control. To facilitate reactive control, a component may generate events from time to time, that other components in the system may choose to respond to. The Java component model (i.e., JavaBeans) provides such support.

A component may interact with a number of other components from specific perspectives (or playing specific roles). The interactions between the component concerned and these other components may differ depending on the components and their related perspectives. When interacting with a particular type of component from a specific perceptive, for example, only certain operations are applicable and some specific operational constraints may apply. The port specifications in Wright goes some way towards this direction. In general, this suggests the need for defining  perspective/role-oriented interaction protocols for a given component, i.e., multi-interfaces.

Besides, a component may be used in different scenarios and plays different roles in these scenarios. The scenarios provide the contexts of use for the component. From the viewpoint of the component, therefore, there may be the need for different sets of interaction protocols, with each set for a scenario in which the component is to be used. Alternatively, one may argue that the role that a component plays in a (use) scenario and consequently its interface towards that scenario is better defined from the viewpoint of the scenario (rather than from the viewpoint of the components involved). This requires further debate and investigation.

Another aspect of a component is its non-functional properties (code named illities [Thompson98]), such as security, performance and reliability). In the context of building systems from existing components, the characterization of the components' illities and their impact on enclosing systems are particularly important. However, there is not much work done in this area.

To summarize the above characterization of components, we may have

    Component = attributes + operations + structural constraints + operational constraints +
        events + multi-interfaces * scenarios + illities.
As indicated above, there are still issues to be resolved. In existing approaches to software architecture description, the issues are addressed with different concerns and therefore result in varied treatments. For example, the port specifications in Wright can be seen as interaction protocol specifications on the one hand and operational constraints (in a fixed interaction scenario) on the other hand. In general, many existing approaches adopt fixed specifications of interaction protocols for a component (e.g., fixed ports). It is also quite possible that a more dynamic (or "fluid") approach is more appropriate, that allows the definition of varied interaction protocols for different scenarios (all subject to the other (fundamental) component characteristics, of course). Again, this is an open issue for further debate.

It is pleasing to see that some industry-based component models are being actively pursued and/or used, including COM components, JavaBeans, and initial component model submissions to OMG. While providing valuable support for component-based system development, these technologies are still too simplistic and immature. Certain strategies taken are debatable. For example, key features of components are only enabled through some "design patterns" (in fact, just some naming conventions) in JavaBeans and some OMG submissions, which is obscure and does not provide the "right" level of support for system developers. In some way, it may be due to the models and their support mechanisms' over reliance on the concept of objects. In general, components should "grow out-of and above" objects.



5. Conclusions

In this paper, we have attempted an object-oriented characterization of components. It is argued that such characterization is essential to the systematic use and management of components. This characterization is set in the context of analysing object characterization and reviewing component treatments in current software architecture description languages. A few open issues for further debate are also identified.



References

[Booch94] G. Booch. Object-Oriented Analysis and Design with Applications. 2nd Edition. Benjamin/Cummings, 1994.
[Medvidovic97] N. Medvidovic and R.N. Taylor. A framework for classifying and comparing software architecture description languages. In Proceedings of 6th European Software Engineering Conference and 5th ACM SIGSOFT Symposium on the Foundations of software Engineering (LNCS -1301), pages 60-76, Zurich, Switzerland, September 1997. Springer.
[Meyer88] B. Meyer. Object-Oriented Software Construction. Prentice-Hall, 1998.
[Shaw96] M. Shaw and D. Garlan. Software Architecture: Perspectives on an Emerging Discipline. Prentice-Hall, 1996.
[Thompson98] C. Thompson. Workshop on Compositional Software Architectures: Workshop Report. Monterey, USA, 6-8 January, 1998. (http://www.objs.com/workshops/ws9801/report.html).





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