Software Component Models
Software Component Models
AbstractComponent-based development (CBD) is an important emerging topic in software engineering, promising long-sought-after
benefits like increased reuse, reduced time to market, and, hence, reduced software production cost. The cornerstone of a CBD
technology is its underlying software component model, which defines components and their composition mechanisms. Current
models use objects or architectural units as components. These are not ideal for component reuse or systematic composition. In this
paper, we survey and analyze current component models and classify them into a taxonomy based on commonly accepted desiderata
for CBD. For each category in the taxonomy, we describe its key characteristics and evaluate them with respect to these desiderata.
Index TermsSoftware components, software component models, component life cycle, component syntax, component semantics,
component composition.
1 INTRODUCTION
Our analysis is based on an idealized component life
I Nsoftware engineering, component-based development
(CBD) [1], [2], [3] is an important emerging topic. CBD
aims to compose systems from prebuilt software units or
cycle [4], [5] such that, if components were constructed and
composed in the manner defined in the life cycle, then we
components. A system is developed as a composite of should be able to meet the success criteria for CBD. The
subparts rather than a monolithic entity. Such an approach definition of the idealized component life cycle is based on
reduces production cost by composing a system from the widely accepted desiderata for CBDs success [2], [3],
existing components instead of building it from scratch. It [13], [14]. These are given as follows: First, components
also enables software reuse since components can be reused should be preexisting reusable software units which
in many systems. Thus, CBD promises the benefits of developers can reuse to compose software for different
increased reuse, reduced production cost, and shorter time applications more quickly than writing all of the code from
to market, which have long been sought after by the scratch for each application. Second, components should be
software industry. To realize these benefits, it is crucial to produced and used by independent parties. That is,
have components that are easy to reuse and composition component developers need not be the same people as
mechanisms that can be applied systematically. For
component customers, such as system developers. This is
systematic composition, composites, as well as their
important for ensuring that components are truly reusable
composition, must be well defined.
The cornerstone of any CBD methodology is its under- by third parties. Third, it should be possible to copy and
lying software component model [4], [5], which defines what instantiate components so that their reuse can be max-
components are, how they can be constructed, how they can imized, both in terms of code reuse and in terms of the
be composed or assembled, and how they can be deployed, components scope of deployment. Fourth, components
as well as, ideally, how we can reason about all these should be composable into composite components which,
operations on components so that quality certification may in turn, can be composed with (composite) components into
be tractable. Current component models can largely be even larger composites (or subsystems), and so on.
divided into two categories [4], [5]: 1) models where Composition means not only reuse but also a systematic
components are objects, as in object-oriented programming, approach to system construction.
and 2) models where components are architectural units, as However, to achieve these desiderata, it would be crucial
in software architectures [6], [7]. Exemplars of these to identify the key prerequisites for component models. We
categories are Enterprise JavaBeans (EJB) [8], [9] and believe that a good starting point for this endeavor is a
architecture description languages (ADLs) [10], [11], re- study of current component models. In this paper, we
spectively. In general, current models are not ideal for present such a study. In the study, we survey the 13 major
fulfilling CBDs promise [4], [12] because they use compo- current component models, analyze them, and classify them
nents that are not easy to reuse and/or composition into a taxonomy with four categories. For each category, we
mechanisms that are not well defined and/or are hard to describe the key characteristics of the models and evaluate
apply systematically. In this paper, we will show why this is them with respect to the desiderata for CBD by the
so by analyzing these models.
idealized component life cycle. This paper thus distills
and presents a comprehensive knowledge and analysis of
. The authors are with the School of Computer Science, University of current software component models.
Manchester, Manchester M13 9PL, UK. This paper is organized as follows: In Section 2, we
E-mail: {kung-kiu, zw}@cs.man.ac.uk. define and explain the elements of software component
Manuscript received 4 Aug. 2006; revised 27 May 2007; accepted 26 June models in general and define the idealized component life
2007; published online 12 July 2007. cycle. In Section 3, we survey and categorize the 13 current
Recommended for acceptance by R. Taylor.
For information on obtaining reprints of this article, please send e-mail to:
major component models according to these elements. In
tse@computer.org, and reference IEEECS Log Number TSE-0186-0806. Section 4, we present a taxonomy based on the idealized
Digital Object Identifier no. 10.1109/TSE.2007.70726. component life cycle.
0098-5589/07/$25.00 ! 2007 IEEE Published by the IEEE Computer Society
710 IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 33, NO. 10, OCTOBER 2007
store and catalog the deposited components with suitable assemblies. With reference to Fig. 2, a container may be a
identities and provide a search facility for retrieving these repository (in the design phase) and a runtime environ-
components. ment, for example, the EJB container. Alternatively, it may
In the idealized life cycle, components in the repository be an assembler and a runtime environment, for example,
are in source code or they may have been compiled into the BeanBox in JavaBeans.
binary. They can be retrieved and composed into a
composite that is, in turn, deposited into the repository. A
new composite has a unique identity which enables the 3 CURRENT SOFTWARE COMPONENT MODELS
composite to be retrieved subsequently. In this section, we survey existing software component
A builder tool (Fig. 2) can be used to 1) construct new models. Rather than discussing them in some random
components and then deposit them in the repository, for sequential order, we survey the models in meaningful
example, A in Fig. 2, and 2) retrieve components from the groups. Clearly, we can group the models according to
repository, compose them, and deposit them back in the component semantics, syntax, or composition. However,
repository. For example, in Fig. 2, B and C are composed since composition is a key issue in CBD, we focus on
into a composite BC that is deposited in the repository. groupings based on composition. We present four such
For example, in JavaBeans, the container provides a categories that cover the 13 models and, for each category,
repository for beans, for example, ToolBox in the BDK we explain a representative model in detail, with an
(Beans Development Kit) [33], [44], which are stored as JAR example, but only outline the other models (in the
files. However, no composition is possible in the design Appendix) for completeness.
phase and, therefore, no composite beans can be formed. To define categories based on composition, we consider
composition in an ideal life cycle, as described in Section 2.3
2.3.3 Composition in the Deployment Phase (Fig. 2), that provides a basis for comparing and classifying
In the deployment phase, components have to be retrieved composition in existing component models. For instance,
from the repository and compiled to binary code. These some component models do not have composition in the
binary components can be composed into a system that will be design phase, whereas some models do. Some have composi-
executable once the binaries have been instantiated with data. tion in the deployment, whereas some do not. Thus, many
An assembler tool (Fig. 2) can be used to retrieve categories are possible. Fig. 3 gives four categories that cover
components from a repository and, if necessary, compile all 13 major existing component models.
them into binary code, then assemble them into a system. In Category 1, in the design phase, there is no repository.
For example, in Fig. 2, binaries of A, B, D, and BC are Therefore, components are all constructed from scratch.
created and composed into a system. In the runtime phase, Composition is possible. In the deployment phase, no new
the system is executable in the runtime environment once composition is possible: The composition of the component
the binaries of A, B, D, and BC are instantiated with data. instances (in the runtime phase) is the same as that of the
The result of the deployment phase composition is a components in the design phase. All simple Acme-like
whole system in binary code; thus, this is the end result of ADLs belong to this category, as do models such as
system design and implementation and, therefore, systems UML2.0, PECOS, and Fractal, which are based on Acme-
should not be stored in the repository. like ADLs. This category can be described as Design
For example, in JavaBeans, in the deployment phase, without Repository.
bean instances are created from beans in the repository and In Category 2, in the design phase, new components can
these can be composed (linked) graphically by using the be deposited in a repository but cannot be retrieved from it.
builder tool. Composition is possible, that is, composites can be formed,
Finally, it is worth pointing out that, although they do not but composites cannot be retrieved from the repository
figure explicitly in Fig. 2, containers play an important part in because they do not have identities of their own. In the
the component life cycle. Indeed, they are considered to be deployment phase, no new composition is possible: The
implementations of component models in that they provide composition of the component instances (in the runtime
an execution environment for components and their phase) is the same as that of the components in the design
LAU AND WANG: SOFTWARE COMPONENT MODELS 713
3.1 Category 1: Design without Repository Fig. 7. Architecture of bank system in Acme.
This category includes all simple Acme-like ADLs, UML2.0,
PECOS, and Fractal. Acme is the representative example in created by connecting the components, possibly using a
this category since all the of other models are based on visual builder tool, for example, AcmeStudio [45] for Acme.
Acme-like ADLs. For example, in Acme, the architecture for the bank system
In Acme, as in any ADL [10], [11], a component is an is defined graphically in Fig. 7, where BC stands for
architectural unit (a box) that represents a primary computa- BankConsortium and B1 and B2 stand for Bank1 and
tional element and data store of a system (Fig. 4). The Bank2, respectively. The components are those specified in
interface of a component is defined by a set of ports, Fig. 5 and the connectors are specified in Fig. 8. The
through which the components functionalities are exposed. specification for the architecture is defined in Fig. 9. The
Each port identifies a point of interaction between the connections are defined by a set of attachments. Each
component and its environment. A port can have different attachment represents an interaction between a port (of a
roles, such as sink (receive) and source (send). connector) and some role of a connector.
Components and their ports can have different types. In ADLs, in general, after the design phase comes the
These types can be defined in a family of type definitions runtime phase, that is, there is no deployment phase
which define the design vocabulary of a system. Both
(Fig. 3). However, the implementation of components and
functional and extrafunctional attributes of a component
connectors is not always specified. Therefore, the imple-
can be specified by property types defined in that component.
mentation of the architecture is a separate activity from its
Consider a simple bank system which has just one ATM
design and has to be done manually somehow in some
that serves one bank consortium with two bank branches,
Bank1 and Bank2. In Acme [36], the bank system can be programming language. The implementation is then exe-
implemented using the ATM, BankConsortium, Bank1, and cuted in the runtime environment for the chosen program-
Bank2 components, as shown in Fig. 5. Components ATM, ming language.
BankConsortium, Bank1, and Bank2 specify their ports and In Acme, system specifications constructed in the design
Bank1 and Bank2 specify their bank identity properties. phase can be compiled to a system in a programming
In Acme, again, as in any ADL, components are language directly, provided that the code for the compo-
composed of connectors (lines) that mediate the commu- nents and connectors is available in that language. For
nication and coordination activities among components example, in Acme, architectures can be specified in
(boxes; see Fig. 6). A connector can connect two or more ArchJava [46], [47] and can be compiled into Java, provided
components. Similarly to components, connector interfaces that the Java code for the components and the connectors is
are defined by sets of roles. Each role defines a participant available [48]. The compiled system is then run on the Java
of the interaction represented by the connector. A connector Virtual Machine.
may have multiple interfaces by using different types of The other models in this category, UML2.0, PECOS, and
roles. The types of connectors and their roles may be Fractal, are outlined in Appendix A.1. In these models, the
defined as a family. Both connector and role attributes can builder is a programming environment which is often a
be specified by property types defined in that connector. visual builder tool like AcmeStudio for the Acme ADL,
In Acme, there is no repository for components. In the whereas the runtime environment is usually that for the
design phase, components and connectors have to be implementation language, for example, the Java Virtual
constructed from scratch. The system architecture is then Machine for Fractal.
714 IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 33, NO. 10, OCTOBER 2007
SessionBeanB, and one entity bean, EntityBean. Session- 3.3 Category 3: Deployment with Repository
BeanA takes client calls, and EntityBean writes to the This category contains only JavaBeans.
database. In JavaBeans [17], a component is a bean, which is just
In the design phase, although bean composition can any Java class that has methods, events, and properties. A bean
produce composite beans on the fly in the EJB container, is intended to be constructed and manipulated in a visual
it is not possible to retrieve such a bean and reuse it as a builder tool.
single bean for further composition. However, individual For example, consider a simple bean MessageBox, which
beans in the container in the design phase are reusable in is a Java class that has a method for displaying a message,
the sense that every bean is accessible to clients in the mouse events such as mousePressed, and the message
deployment phase, regardless of what other beans it is that it displays is a property of the bean.
linked to, and, whatever method a client calls, the correct Properties are local to a component, so these do not
links will automatically be followed. figure in the beans interface. Events can be source or target
Thus, although it is a repository for enterprise beans that
events. Source events in one bean can trigger (target)
supports the design phase composition, the EJB container
methods in another bean. More precisely, an event listener
does not support the storage or retrieval of composite
(for a target event) in a bean, when notified by an external
components as identifiable units. The reason is that the
container is also the execution environment for beans. source event (that is, a source event in another bean),
In EJB, after the design phase comes the runtime phase. triggers a corresponding method in the bean. Thus, in a
Thus, no new composition is possible after the design phase bean, target events and methods are provided services in
(for example, see [52]). In the runtime phase, bean instances the beans interface and external source events are the
are created and executed in the EJB container. required services, that is, required services are event sinks.
Consider the bookstore example again. In the design Individual JavaBeans are constructed in a Java program-
phase, an assembly of the session bean BookStoreBean and ming environment such as Java Development Kit and
the entity bean BookBean is deposited into the EJB deposited in the ToolBox of the BDK [33], [44], which is the
container. The composition is defined by BookStoreBean repository for JavaBeans. To execute or compose JavaBeans,
calling the methods create and set defined in the home the beans have to be dragged into a container like BeanBox.
interface BookHome and the remote interface Book of More precisely, for each bean, a JAR file containing the bean
BookBean (Fig. 13). implementation class, the event state object, and the event
In the runtime phase, this system is looked up and listener interface are deposited in the ToolBox of BDK.
instantiated. In this instance of the system, the Book- Binaries of a bean can be dragged from the ToolBox,
StoreClient calls the method create defined in the home composed, instantiated, and executed in the BeanBox.
interface BookStoreHome of the BookStoreBean, which Although the ToolBox acts like a repository, it does not
returns an instance of BookStore, the remote interface of support composition of beans. Thus, the only composition
716 IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 33, NO. 10, OCTOBER 2007
binaries is possible. In the runtime phase, component Fig. 20. Example of component composition in Koala.
instances are executed in the runtime environment of the
chosen programming language. these categories are more meaningful than those based on
Consider the Stopwatch device again. In the design phase, component semantics or syntax.
the Stopwatch device (Fig. 19) is being implemented by
constructing a new Countdown component and composing it 4.1 Categories Based on Component Semantics
with a Display component from the repository. The definition Based on semantics, current component models can be
files for the Display component are retrieved from the grouped into three categories: 1) component models in
repository (definition files contain the definitions of inter- which components are classes, 2) models in which
faces, components and data). Then, the definition files for the components are objects, and 3) those in which components
Countdown component are constructed. Using their defini- are architectural units (Fig. 21).
tion files, Countdown and Display are composed by method Component models that belong to 1) are JavaBeans and
calls. This yields a definition file for Stopwatch (Fig. 20). The EJB since, semantically, components in these models are
definition files for Countdown and Stopwatch are deposited special Java classes, that is, classes hosted by containers.
into the KoalaModel WorkSpace. In the deployment phase, Component models that belong to 2) are COM, .NET,
the definition files of Stopwatch Countdown and Display are CCM, Web Services, and Fractal since, semantically,
compiled by the Koala compiler to C header files. Then, the components in these models are runtime entities that behave
programmer has to write C files and compile these with the like objects. In COM, a component is a piece of compiled
header files to binary C code for Stopwatch. code that provides some services which is hosted by a COM
In general, the Koala component model is used to build a server. In .NET, a component is an executable DLL that is
product population for consumer electronics from reposi- hosted by a Common Language Runtime (CLR). In CCM, a
tories of preexisting components, that is, product lines. component is a Corba metatype that is an extension and
The other models in this category, that is, SOFA and specialization of a Corba object which is hosted by a CCM
KobrA, are outlined in Appendix A.3. In these models, the container on a CCM platform such as OpenCCM. In Web
builder is a programming environment, that is, SOFANode Services, a component is a piece of binary code that provides
for SOFA and the UML Visual Builder tool for KobrA, the some services which is hosted by a Web server. In Fractal, a
repository is a file system, for example, the Template component is an object-like runtime entity in languages with
mappings from the chosen IDL.
Repository for SOFA, and the runtime environment is that
Component models that belong to 3) are Acme-like
of the implementation language.
ADLs, UML2.0, KobrA, Koala, SOFA, and PECOS. Seman-
tically, components in these models are units of computa-
4 A TAXONOMY tion and control (and data) connected in an architecture. In
ADLs, a component is an architectural unit that represents a
In this section, we propose a taxonomy for the 13 component primary computational element and data store of a system.
models described in the previous section (and in the In UML2.0, a component is a modular unit of a system with
Appendix). Clearly, such a taxonomy could be based on well-defined interfaces which is replaceable within its
component semantics, syntax, or composition. We will base environment. In KobrA, components are UML components.
the taxonomy on composition, following the categories In Koala, SOFA, and PECOS, a component is a unit of
defined in the previous section, and we will argue why design which has a specification and an implementation.
718 IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 33, NO. 10, OCTOBER 2007
4.2 Categories Based on Component Syntax However, comparing these two groups with the cate-
Based on component syntax, current models fall into three gories based on composition in the component life cycle
categories: 1) models in which components are defined by (Fig. 3), it is clear that there is no meaningful way of
object-oriented programming languages, 2) those in which an merging the former with the latter. Of the object-based
IDL is used and in which components can be defined in group of the former, EJB, COM, .NET, CCM, and Web
programming languages with mappings from the IDL, and Services belong to different categories from JavaBeans and
3) those in which components are defined by ADLs (Fig. 22). from Fractal in the latter. Of the architecture-based group of
Component models that belong to 1) are JavaBeans and the former, KobrA, Koala, and SOFA belong to different
EJB, where components are implemented in Java. categories from Acme-like ADLs, UML2.0, and PECOS in
Component models that belong to 2) are COM, .NET, the latter. Conversely, the categories based on composition
CCM, Web Services, and Fractal. These models use IDLs to are not simply divided between object-based models and
define generic interfaces that can be implemented by architecture-based models. For example, in these categories,
components in specific programming languages. COM Fractal, which is object-based, belongs to the same category
and .NET use the Microsoft IDL [15], CCM uses the OMG as the architecture-based models Acme-like ADLs, UML2.0,
IDL [35], and Web Services use Web Service Description and PECOS.
Language (WSDL), whereas Fractal can use any IDL. In view of this, we believe that the only meaningful
Component models that belong to 3) are Acme-like taxonomy is one based on composition in the idealized
ADLs, UML2.0, KobrA, Koala, SOFA, and PECOS. component life cycle. Composition is the central issue in
Obviously, in all ADLs, components are defined in ADLs. CBD after all. Moreover, in the idealized life cycle,
In UML2.0 and KobrA, the UML notation is used as a composition takes place in both the design and deployment
kind of ADL and components are defined by UML phases. By contrast, object-based models and architecture-
diagrams. In Koala and SOFA, components are defined
based models tend to be heavily biased toward one phase or
in ADL-like languages. In PECOS, components are
the other. In object-based models like COM, .NET, CCM,
defined in CoCo, which is essentially an ADL, too.
and Fractal, components are objects that are executable
The main difference between these categories is that
components in 1) and 2) are directly executable in their binaries and are therefore more of deployment phase
respective programming languages, whereas components entities than design phase entities. On the other hand, in
in 3) are only specifications which have to be implemented architecture-based models such as UML2.0, components are
by somehow using suitable programming languages. expressly design entities by definition, with or without
binary components in the deployment phase.
4.3 A Taxonomy Based on Composition Thus, we propose the taxonomy of software component
We have seen three groupings of categories based on models shown in Fig. 23 based on component composition
component semantics, syntax, and composition. The question in the idealized component life cycle, as discussed in
is whether it is possible or meaningful to combine them into a Section 3. The categories are the same as those in Fig. 3, but
single taxonomy. Looking at the categories based on Fig. 23 shows more details about their characteristics.
semantics (Fig. 21) and those based on syntax (Fig. 22), it is In Fig. 23, the first four columns of characteristics are
obvious that they can be merged straightforwardly into two design phase characteristics, whereas the last one refers to
groups: the deployment phase characteristics. In the design phase,
Deposit-N stands for new components can be depos-
. Object based: JavaBeans, EJB, COM, .NET, CCM, ited in a repository, Retrieve stands for components
Web Services, and Fractal. can be retrieved from the repository, Compose stands
. Architecture based: Acme-like ADLs, UML2.0, for composition is possible, and Deposit-C stands for
KobrA, Koala, SOFA, and PECOS. composite components can be deposited in the
LAU AND WANG: SOFTWARE COMPONENT MODELS 719
repository. In the deployment phase, Compose stands therefore focused on designing (systems and) components
for composition is possible. from scratch rather than reusing existing components.
In the Design without Repository category, in the design Models in the other two categories are middle of the
phase, there is no repository for components. Therefore, road. They also use repositories, but they behave differ-
neither new components can be deposited nor can existing ently from those in the Design with Repository category in
components be retrieved from a repository. Consequently, that the former store binary compiled code, whereas the
components are all constructed from scratch. However, latter store units of design in the repository, which are more
composition is possible. In the deployment phase, since no generic and, hence, more reusable.
repository is available, no new composition is possible. The taxonomy also reveals that no existing model has
In the Design with Deposit-only Repository category, in composition in both the design and the deployment phases.
the design phase, new components can be deposited in a No model can retrieve composites for further composition
repository but cannot be retrieved from it. Composition is in the deployment phase, not even those in the Design with
possible, that is, composites can be formed, but composites Repository category. That is, the ideal category would be
cannot be deposited in (and, hence, retrieved) from the Design and Deployment with Repository, but this does
repository. In the deployment phase, no new composition is currently not exist. Thus, there is room for improvement
possible. and better component models are possible. Indeed, the
In the Deployment with Repository category, in the taxonomy that we have presented in this paper has been
design phase, new components can be deposited in a used by other researchers to evaluate and improve their
repository but cannot be retrieved from it. Composition is component models, for example, [54].
not possible in the design phase, that is, no composites can Apart from adding composition and repository to both the
be formed, and, so, no composites can be deposited in the design and deployment phases, there are two other important
repository. In the deployment phase, components can be issues: 1) how components that are easy to reuse can be
retrieved from the repository and their instances can be designed and 2) how composition mechanisms that will
formed and composed. enable systematic composition can be designed. On both
In the Design with Repository category, in the design points, current component models do not perform well. All of
phase, new components can be deposited in a repository the models (where components are either objects or archi-
and components can be retrieved from the repository. tectural units) use message passing as the composition
Composition is possible and composites can be deposited in mechanism: Objects communicate by direct message passing,
the repository. In the deployment phase, no new composi- whereas architectural units use indirect message passing.
tion is possible: The composition of the component Message passing relies on and induces close coupling
instances is the same as in that of the components in the between components. This hampers component reuse, in
design phase. particular the reuse of composite components.
Current models also do not have well-defined composi-
tion theories that support systematic composition. Objects
5 DISCUSSION do not have a composition theory: The composition of
The basis for the taxonomy in Fig. 23 is the idealized two objects by direct message passing is not supported by a
component life cycle, which is based on the commonly composition theory and the result is not a single object but
accepted desiderata of CBD, as discussed in Section 2.3. It is just the two objects calling each others methods. Archi-
interesting to note that models in the Design with tectural units compose via their ports and have a simple
Repository category meet the requirements of the idealized composition theory. However, this theory does not support
life cycle better than the other categories. This is not systematic composition. In particular, it is usually defined
surprising since Koala and KobrA use product line at the level of ports and used for type checking connected
engineering, which has proved to be the most successful ports [47] rather than at the level of whole components, in
approach for software reuse in practice [53]. The main particular composite components.
reason for its success is precisely its use of repositories of We believe that to overcome these problems, compo-
families of preexisting components, that is, product lines. nents should have the key properties of encapsulation and
At the other end of the scale, models in the Design compositionality and we have formulated such a component
without Repository do not perform so well, mainly model [55], [56]. Our model improves reuse and defines
because they are based on Acme-like ADLs and are composition hierarchically. Components encapsulate their
720 IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 33, NO. 10, OCTOBER 2007
CoCo does not specify the behavior of components, the CoCo Fig. 30. Component composition in COM.
specification of the entire system is a syntactic specification of
the composition of the subcomponents. This composition is
A.2 Category 2: Design with Deposit-Only Repository
the composition in the design phase. The (sub)components
have no implementation at this stage. A.2.1 COM
Components are composed of connectors that link their In Microsofts COM [15], a component is a unit of compiled
ports. A connector describes a data-sharing relationship code (binary object) on a COM server. The language for the
between ports. It is described by its name, its type, and a list source code of a component can be any programming
of ports that it connects. A connector may only connect two language that is supported by Microsoft IDL [15], for
ports if the in port and the out port have compatible data example, C, C++, and Ada. Services in a component are
types. Ports of components can only be connected if they invoked via pointers to the functions that implement them.
belong to the same parent component, that is, connectors For each service provided by a component, there is an
may not cross component boundaries. interface [57]. A COM component can implement multiple
PECOS is used for specifying and developing embedded interfaces (Fig. 29). COM interfaces are specified in
systems of field devices represented as software compo- Microsoft IDL and every component must implement an
nents. A complete system typically represents a device IUnknown interface.
COM components are constructed in a programming
running in a control loop. It must have a schedule that
environment such as Microsoft Visual Studio .NET, which
specifies the order in which its behavior and the behavior of
provides a builder for COM components. The COM server
its subcomponents are run. Therefore, to realize an is the repository and there is no assembler.
executable system from its CoCo specification, the behavior In the design phase, COM components are composed by
of subcomponents has to be implemented by the program- method calls through interface pointers (Fig. 30). After the
mer and a schedule must then be provided for the system design phase comes the runtime phase, with the COM
and any subsystem that contains subcomponents. server providing the runtime environment.
[33] JavaBeans Architecture: BDK Download. Sun Microsystems, http:// [58] M. Barnett and W. Schulte, Runtime Verification of .Net
java.sun.com/products/javabeans/software/bdk_download. Contracts, Systems and Software, vol. 65, no. 2003, pp. 199-208,
html, 2003. 2003.
[34] Java 2 Platform, Enterprise Edition Sun Microsystems, http:// [59] BEA Systems et al., CORBA Components, Object Management
java.sun.com/j2ee/, 2007. Group, Technical Report orbos/99-02-05, 1999.
[35] Common Object Request Broker Architecture: Core Specification, [60] R. Natan, CORBA: A Guide to Common Object Request Broker
Version 3.0.3, http://www.omg.org/technology/documents/ Architecture. McGraw-Hill, 1995.
corba_spec_catalog.htm, Mar. 2004. [61] OpenCCM Users Guide, ObjectWebOpen Source Middleware,
[36] D. Garlan, R. Monroe, and D. Wile, Acme: Architectural http://openccm.objectweb.org/doc/0.8.1/user_guide.html, 2007.
Description of Component-Based Systems, Foundations of Compo- [62] E. Newcomer, Understanding Web Services: XML, WSDL, SOAP, and
nent-Based Systems, G. Leavens and M. Sitaraman, eds., pp. 47-68, UDDI. Addison-Wesley, 2002.
Cambridge Univ. Press, 2000. [63] Ariba, Microsoft, and IBM, Web Services Description Language
[37] C. Peltz, Web Services Orchestration and Choreography, (WSDL) Version 1.1., http://www.w3.org/TR/2001/NOTE-wsdl-
Computer, vol. 36, no. 10, pp. 46-52, Oct. 2003. 20010315, 2001.
[38] M. Lumpe, F. Achermann, and O. Nierstrasz, A Formal
Language for Composition, Foundations of Component Based Kung-Kiu Lau received the BSc and PhD
Systems, G. Leavens and M. Sitaraman, eds., pp. 69-90, Cambridge degrees from the University of Leeds, United
Univ. Press, 2000. Kingdom. He is currently a senior lecturer in the
[39] T. Andrews, F. Curbera, H. Dholakia, Y. Goland, J. Klein, F. School of Computer Science at the University of
Leymann, K. Liu, D. Roller, D. Smith, S. Thatte, I. Trickovic, and S. Manchester, United Kingdom. He is the series
Weeragwarana, Business Process Execution Language for Web editor of a book series on component-based
Services (BPEL4WS) Version 1.1. IBM, http://www-106.ibm.com/ software development published by World
developerworks/library/ws-bpel/, 2004. Scientific. He is an area editor (for logic and
[40] R. Allen and D. Garlan, A Formal Basis for Architectural software engineering) of the Journal of Applied
Connection, ACM Trans. Software Eng. and Methodology, vol. 6, Logic. He has served on the program commit-
no. 3, pp. 213-249, 1997. tees of numerous international conferences, including ASE, CBSE, and
[41] I. Crnkovic, H. Schmidt, J. Stafford, and K. Wallnau Proc. Sixth SC. He has also delivered invited talks and tutorials at many
Workshop Component-Based Software Eng.: Automated Reason- international meetings, including an invited keynote talk at FMCO
ing and Prediction (CBSE 04). ACM SIGSOFT Software Eng. Notes, 2005 and tutorials on software component models at ASE 2005 and
vol. 29, no. 3, pp. 1-7, May 2004. ICSE 2006. His main research interest is component-based software
[42] B. Christiansson, L. Jakobsson, and I. Crnkovic, CBD Process, development.
Building Reliable Component-Based Software Systems, I. Crnkovic and
M. Larsson, eds., pp. 89-113, Artech House, 2002. Zheng Wang received the BSc degree from the
[43] B. Warboys, B. Snowdon, R. Greenwood, W. Seet, I. Robertson, R. University of Manchester, United Kingdom,
Morrison, D. Balasubramaniam, G. Kirby, and K. Mickan, An where he is currently working toward the PhD
Active Architecture Approach to COTS Integration, IEEE Soft- degree in the School of Computer Science. He
ware, special issue on incorporating COTS into the development participated in and completed the project Eur-
process, vol. 22, no. 4, pp. 20-27, July/Aug. 2005. opean Network of Excellence in Computational
[44] The Bean Builder, Sun Microsystems, https://bean-builder.dev. Logic (CologNet), where he maintained the Web
java.net/, 2007. site of Component-Based Software Develop-
[45] AcmeStudio 2.1 User Manual, Carnegie Mellon Univ., http://www- ment. He coorganized the 2004 and 2005
2.cs.cmu.edu/~acme/Manual/AcmeStudio-2.1.htm, 1998. Workshop on Predictable Software Component
[46] J. Aldrich, C. Chambers, and D. Notkin, ArchJava: Connecting Assembly. His research interests are component-based software
Software Architecture to Implementation, Proc. 24th Intl Conf. engineering and software verification.
Software Eng. (ICSE 02), pp. 187-197, 2002.
[47] J. Aldrich, C. Chambers, and D. Notkin, Architectural Reasoning
in ArchJava, Proc. 16th European Conf. Object-Oriented Program- . For more information on this or any other computing topic,
ming (ECOOP 02), pp. 334-367, 2002. please visit our Digital Library at www.computer.org/publications/dlib.
[48] J. Aldrich, D. Garlan, B. Schmerl, and T. Tseng, Modeling and
Implementing Software Architecture with Acme and ArchJava,
Proc. Companion 19th Ann. ACM SIGPLAN Conf. Object-Oriented
Programming, Systems, Languages, and Applications (OOPSLA 04),
pp. 156-157, 2004.
[49] L. DeMichiel and M. Keith, Enterprise JavaBeans, Version 3.0. Sun
Microsystems, 2006.
[50] R. Monson-Haefel, Enterprise JavaBeans 3.0, fifth ed. OReilly &
Associates, 2006.
[51] Eclipse Web Page, http://www.eclipse.org/, 2007.
[52] Y. Choi, O. Kwon, and G. Shin, An Approach to Composition of
EJB Components Using C2 Style, Proc. 28th Euromicro Conf.
(Euromicro 02), pp. 40-46, 2002.
[53] P. Clements and L. Northrop, Software Product Lines: Practices and
Patterns. Addison Wesley, 2001.
[54] P. Hn!etynka and F. Pla!sil, Dynamic Reconfiguration and Access
to Services in Hierarchical Component Models, Proc. Ninth Intl
Symp. Component-Based Software Eng. (CBSE 06), I. Gorton et al.,
eds., pp. 352-359, 2006.
[55] K.-K. Lau, P. Velasco Elizondo, and Z. Wang, Exogenous
Connectors for Software Components, Proc. Eighth Intl Symp.
Component-Based Software Eng. (CBSE 05), I. Gorton et al., eds.,
pp. 90-106, 2005.
[56] K.-K. Lau, M. Ornaghi, and Z. Wang, A Software Component
Model and its Preliminary Formalisation, Proc. Fourth Intl Symp.
Formal Methods for Components and Objects (FMCO 06), F. de Boer
et al., eds., pp. 1-21, 2006.
[57] A. Major, COM IDL and Interface Design. John Wiley & Sons, Feb.
1999.