<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Advanced Features of Hierarchical M o d e l s Component</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Pe[r Hnetynkal ancl']bmaS BureS</string-name>
          <email>hnetynka@ucd</email>
        </contrib>
      </contrib-group>
      <fpage>3</fpage>
      <lpage>10</lpage>
      <abstract>
        <p>Using software components has become a widely used development technique for building large enterprise systems. However in practice, component applications are still primarily built using simple component models and advanced component models offering valuable features like component nesting, multiple communication styles, behavior validation, etc. are omitted (bV industry in particular). Based on our experience, such an omitting is mainly caused due to usually unbalanced semantics of these advanced features. In this paper, we present a "nextgeneration" component model SOFA 2.0, which in particular aims at a proper support of such advanced features.</p>
      </abstract>
      <kwd-group>
        <kwd>Component models</kwd>
        <kwd>dynamic architectures</kwd>
        <kwd>connectors</kwd>
        <kwd>component runtime environment</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Cornponent-based development (CBD) [
        <xref ref-type="bibr" rid="ref17">18</xref>
        ] has become a commonly used
technique for building not only large scale enterprise systems but also for virtually
any typc of sotware. Thanks to thc explicit specification of rrot orrly cornporrents'
provided services but also required ones) cornponents have brought easier reuse)
better integration, and rapider development compared to forrner development
techrriques.
      </p>
      <p>There are tnany views and definitions of what a software colnpolteltt is br-rta
general agreement is that a cornponent is a black-box software entity with well
defined interf'acesand behavior. 'I'he set of all componenL f'eatures and rules fbr
component lifecycle, cornposition etc. is usually called cornponent 'model.Frorn
the compositiorr point of vierv, cornponent rnodels can be divided irrto two
categories - flat coltrponerrtnrodels and hierarclrical conrponerrt nrodels. In
corrtrary to the flat ones, the hierarchicai cornponent uroclels allow fbr conrposite
componelrts (in addition to prirnitive conlponents), which means cornponents
hierarchically composed of other courponents. Thus, an application can be seerr
as a tree of nested components.</p>
      <p>Currently, there are a number of cornponent modeis each of thern trying to
provide an ideal solution for building applications. Componerrt models developed
and driven mainly by industry (e.g. EJB, CCN,I. and Koala) offer to developers
a stable and mature environment but they use just a flat component model
(Koala uses a trierarchical one) and they do not provide advanced features like
rrrultiple cornrnunication styles, conrposition verification, searnlessdistribution,
dynarnic architectures etc. On contrary, corrlponent models developed mainly in
the acadernic environtnent use irr airnost all caseshierarchical cornponent models
artd provide above mentioned advanced features. However academic cornponent
rnodels focus very often just on component design and they provide rro or very
Iirrrited runtirne environment, which is a major factor that hinders a cornmon
(and especially industrial) usage of hierarchical component rnodels. The rnain
reason for the lirrrited runtime support in the area of component models with
advanced features is in our view that it is quite hard to properly balance a
senrantics of all these advanced features.</p>
      <p>The goal of the paper is to show strong and weak points of contemporary
used component models and therr to present the SOFA 2.0 14)component model
that supports hierarchical componerlts and a number of advanced features. while
it also provides a stable runtime environrnent, which serves for executine of
component applications.</p>
    </sec>
    <sec id="sec-2">
      <title>Current component models</title>
      <p>Irr this section, we discuss and compare representatives of common contemporary
componellt models with respect to their supported features and
implementations. In particular, we focus on support for describing architectures, possibilitv
of dynamic architectures, support of advlancedfeatures like behavior description,
multiple cornmunication styies via connectors, etc. (see [a] for detailed
explanation of these particular features and the problerns related to them), and arr
existence of runtime support for cornponents. We discuss Darwin, Wright, and
ACIVIE component modeis, which although already rather olcl had a strong
influcncc on cornportcnt utodels developcd later. Furthcr, we prescnt CC\I, EJB.
and Koala as the representatives of the industrial models, and we also devote
attention to several representatives of academic component models, namely
Flactal, Arch.Iava, and SOF]\. At t.he end ol'the section, we briefly rel'er t,oseveral
non-standard component rnodels</p>
      <p>
        As it has been mentioned above, Darwin [
        <xref ref-type="bibr" rid="ref11">12</xref>
        ] is a classical corrrponerrtrnodel
that influenced many later component models. It uses a hierarchical component
tnodels without connectors. Darwin allows expressing dynamic changes of
architectures using lazy and direct dynamic irtstant'iat'ion,T.he lazy dynamic
instantiation ailows for deferred instantion of components described in the architecture,
while the direct dynarnic instantiation allows for arbitrary changes. The
architecture changes introduced by the direct dynamic instantiation are not captured
in the architecture description and thus they are completely uncontrollable. As
Darwin is just an architecture description language (ADL), it does not provide
any runtime environment.
      </p>
      <p>
        Another classical ADL without a runtime environment is Wright [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. It also
uses hierarchical component model but with connectors among components.
Behavior of both cornponents and connectors is described using CSP-like notation.
Wright does not allow any dynamic changes of an architecture. As it supports
connectors, it can use any communication style.
      </p>
      <p>ACIVIE [7] is an ADL intended to serve as a common represenrarion for
architecture descriptions. It uses a hierarchical component model with connectors.
Both components and connectors can have associated properties (for describing
auxiliary information) and design constraints, which mainly serve for describing
dynamic changes of an architecture. The language for the design constraints is
based on first order predicate logic.</p>
      <p>
        Enterprise Java Beans (EJB) component model [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] developed by Sun
NIicrosystems uses just a flat component model. Even more) it has quite a limited
support for describing requirements of components and does not provide any
additional features. On the other hand, it provides a stable and mature runtime
environmettt and ib is used in many enterprise applications. As it rses a flat
component model, EJB does not have any problems with dynamic adding and
removing components. Flom communication styles, it supports method
invocation and sending messages.
      </p>
      <p>OMG CORBA Component Model (CCM) is quite similar to EJB but it allows
for explicit description of component requirements. FYom communication styles,
it supports synchronous and asynchronous method invocation. Compared to
EJB, it is multiplatform and independent of a particular programming language.</p>
      <p>
        Koala [
        <xref ref-type="bibr" rid="ref13">14</xref>
        ] has been created by Philips as a component model for developing
embedded software (for TVs, set-top-boxes, etc.). It uses a hierarchical
component model heavily inspired by Darwin. Primitive components in Koala are
implemented as a set of C functions. Koala strongly focuses on component
design and optimizations; the Koala compiler (a tool which from ADL generates
C header files fbr implementation) allows removing unused components based
on components' configuration properties and further architecture optimizations.
The runtime possibilities are however quite limited (as the model is targeted to
an embedded environment).
      </p>
      <p>
        Fractal [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] is a general purpose component model. It uses a hierarchical
component model without connectors. Connectors can be simulated using "normal"
colnponents (the Fractal specification even instructs to do so), however this
results into rather unclean and incomprehensible architectures mixing different
levels of abstraction. Flactal separatescomponents functional and non-functional
(control) parts. The non-functional part is managed using controllers, which are
from the architectonic view provided interfaces. Fbactal also introduces the
concept of shared components, i.e. a single subcomponent instance shared by several
composite colnponents. Such an approach easily allows for runtime changesof an
architecture, but it breaks a component encapsulation hierarchy and can result
in clumsy and uncontrollable architectures. By itself, Ftactal is iust a
specification defining a set of colnponent f'eatures and standard interfaces, and it has a
number of implementations.
      </p>
      <p>Julia is a Java-based reference implementation of Flactal, which allows
component programming in Java. Components can be created either directly via
Julia API or using Flactal ADL. In addition to design time, components also
exist and can be referenced at runtime. For implementation of control parts of
components, Julia uses so called m'irins, which are Java classesthat are woven
with the original components' classesusing bytecode manipulation. The
experience however shows that Julia's approach the component control parts is poorly
manageable and hard to extend and debug.</p>
      <p>
        AOkell [
        <xref ref-type="bibr" rid="ref16">17</xref>
        ] is another F]actal implementation. It is similar to Julia but it
has an elaborate mechanism for building control parts of components based on
aspect-oriented programming, thus it addressesseveral issues Julia has in this
context.
      </p>
      <p>
        The SOFA component model [
        <xref ref-type="bibr" rid="ref14">15</xref>
        ] is like F]actal a general purpose
component model. It also uses a hierarchical component model but with connectors
(and therefore with multiple communications styles). In addition, these
connectors allow for transparently distributed applications. Components' behavior can
be described using behavior protocol and these can be subsequently used to
verify component composition and communication. For describing components
and architectures, SOFA uses its own ADL. Similarly to Flactal, SOFA
components also exist and may be instantiated at runtime. The weak points of SOFA
comprise no support for dynamic changes of an architecture (it just supports a
dynamic update of a single component), not clearly separated and non-extensible
control part of components, and a limited set communication styles.
      </p>
      <p>
        Both SOFA and all implementations of Flactal create a component platform
over the Java platform; in fact they are Java libraries. At runtime, instances
of components exist but they are mapped to a set of Java classes,The
ArchJava [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] component system goes another way. It introduces components as a new
construct directly into the Java language. Such an approach should prevent
violations of the architecture at runtime. However, neither in SOFA nor in FYactal
implementations, component developers can diverge from an architecture at
runtime. Moreover, as components in SOFA and Flactal are implemented in pure
Java, they can be much more easily integrated with other legacy systems.
      </p>
      <p>In addition to the component rnodels presented so far, there also exist
component models, which try to capture and describe architectures in a rather formal
way. For example CHAM [tL] or system based on graph rewriting [f9], both
targeting description of dynamic architectures. But these systems are very
corlplicated (even for simple architectures) and they do not provide any runtime
environment.</p>
      <p>S O F A 2 . 0
As described above, currently there are either component systems with strong
support for describing architecture and no or almost no runtime support or</p>
      <p>Advanced Features of Hierarchical Component Models
systems with a stable and functional runtime environment but rather poor
possibilities for designing components. In the middle, there are system like SOFA
and the Flactal implementations, which provide both but still they have
obstacles that hinder from common usage. SOFA 2.0 which is a next generation of
tire original SOFA tries address these obstacles and issues.</p>
      <p>SOFA 2.0 has inherited a hierarchical component modei with connectors and
most of other features fiom its ancestor. The main differencesagainst the original
SOFA version are meta-model-based design of components, support of dynamic
architeclure reconfigurations, support of any communication style, and clearly
separated and extensible control parts of components.</p>
      <p>
        SOFA 2.0 is defined using a meta-model. In contrast to ADl-based
definition used in the original SOFA, such an approach has many advantages like
automated generation of a repository with standardized interface, standardized
XN{L-based interchange format, support for automated generation of models'
editors, etc. (see [
        <xref ref-type="bibr" rid="ref7">8</xref>
        ] tbr details). The meta-model defines all f'eaturesof the
component model (in detail described in [ ]) and is employed in generation of a
repository, which stores component descriptions as well as component
implementations. As a particular technology fbr defining meta-model and generating
repository we use EMF [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <p>Components are described using fram,e and archi,tect'ureconstructs. The
frarne defines a set of interfaces (services) provided and/or required by a
component. The architecture then defines an implementation of the fiame; for
primitive components the architecture is empty and for composite components it
defines subcomponents (again using frames or other architectures) and
connections among them.</p>
      <p>
        The support of dynamic architecture reconfigurations is realized via
welldefined reconfiguration patterns [
        <xref ref-type="bibr" rid="ref8">9</xref>
        ]. Currently, three reconfiguration parrerns
are provided: factory pattern, removal pattern, and service accesspattern. As
their names suggest, in factory pattern a designated component serves as a
component factory. The removal pattern serves for destroying of a component
previously created, while the last pattern allows an accessto external services
through utility i,nterfaces.
      </p>
      <p>
        For speci$'ing component behavior formally, SOFA 2.0 uses
behaui,orprotocols [
        <xref ref-type="bibr" rid="ref15">16</xref>
        ]. They can be used for verification of component composition during
designing an application architecture and also there is a possibility to check a
primitive corrrponent implementation classesversus protocols.
      </p>
      <p>Tlre SOFA 2.0 runtime environment is called SOFAnode. It consists of the
repository and a set of deployment docks, each of thern can be located on a
different computer. A deployment dock is a container for launching components. A
single application can spread over several docks; connectors among components
assure transparent distribution.</p>
      <p>As it has been said above, the repository is generated from the meta-model
and stores both component descriptions and implementations. At development
tiute, developers store into it the component information and also reuse the
information already stored there. The repository and in fact whole SOFA 2.0 allow</p>
      <p>P. Hndnnka and T. Burei
versioning of courponents.The versioning model used irr SOFA 2.0 is the sarrre
as in lhe original SOFIA. 1b gr.raranteeintegrity of rhe development of different
versions and the converrient developrnent, the repository sr-rpports clon'i:ng.At
the beginning of the developrnent, developers create a new clone of the
repository, which mirrors its content. Then they work with this cione and finally, they
nerge the clone with the original repository. In the clorred working copy,
developers can create temporary inconsistenciesbut the cloning and merging perrnits
to rnerge just fully consistent repository. The repository also allows export and
irnport of already developed componerrts(e.g. developed by third parties).</p>
      <p>From the implementation point of view, a component is set of Java classes.
For primitive componerrts, developers have to provide implementation classes.
There are not any requirements on these classes,i.e. they do not have to
implemcnt/extend any SOM-specific interfaces/classcs.Instead, we use an
annotationbased approach where components' provisions, requirements, initializing
methods, etc. are marked using annot,ations. Benefits of this approach are no
dependencies ori the underlying platform (a single irnplementation can be resused in
different component platfbrms) and implementation classescan be easily [ested
by tools like JUnit without starting the whole SOFAnode. As composite
cornponents are composed of other components, they do not have any direct
impiernentation and developers do not create any code for them.</p>
      <p>Due to versioning, Java class nanre clashes can occur at runtime, i.e. a
situation. when bwo different classeshaving the same name are to be loaded into the
virtual machine. To address this, SOFA 2.0 uses bytecode rnanipulation; after
compiling componen[ classes,the bytecode of the classesis modified and the
classesare renamed to have unique names. Irr detail, the approach is described
I N I 1 U I .</p>
      <p>All bindings among components in SOFA 2.0 are realized via connectors,
which are first-ciass entities in charge of addressing the communica[ion logic.
Their use brings the transparent distribution, different cornmunication styles
(e.g. synchronous rnethod invocation, asynchronous message delivery, shared
mernory, streaming, etc.) and the possibility of non-functionai aspects (e.g.
logging, benchmarking, runtirne bchavior verification. security, etc.). A connector is
specificd at design time as a binding (i.e. an hypcr-edge connccting
severaicomponent interfaces) and as a conrmunication style and a set of properties
associa,tedwith each component interface participating in the binding. In our approach,
rve use connectors not onl1,in design but also at runtime as well-defined code
artif'acts. 'Ihe transibion from the high-level design [ime specification to connector
code is realized by a connector generator, which can automatically generate the
connector irnplernentation based on design-time and deployment requirements.
We perform the generation of connectors only at deployment tirne, which is
when we have the cornplete information of the application to be launched
(including the distribution of particular components to deployment docks); thus,
we can choose the most appropriate middleware for addressing the distribution
and perforrn other potential optirnizations.</p>
      <p>In SOFA 2.0, we have striven to bring out the control part of components and
make it easily extensible. The control part (or component controliers) deals with
the rnanagernertt logic of a component, whicir includes management of bindings,
iifecycle, some sort of introspection, controiling the update, etc. In the existing
colnponent systems (excepb Fractal), this iogic is typically strictly defined by
the respective system and cannot be easily changed or extended. Inspired by
the Fractal component nrodel, we have introduced to SOFA 2.0 the concept of
explicit component controllers. There is a dedicated nricro-component model,
which allows defining an architecturc of thc control part, and the concept of
a control aspect, rvhich encapstrlateda set of micro-components and defines a
consistentexteusiorrof the control part. Thus) we are able to easilymodel, extend
or even replace the control part of a cornponent.</p>
    </sec>
    <sec id="sec-3">
      <title>Conclusion and future work</title>
      <p>In this paper, we have presented a short overview of contemporary component
models and pointed out their main limitations with respect to advanced
component features (such as component nesting and rnodeling, possibility of dynarnic
architectures, description of component behavior, connectors, multiple
communication styles, extensible component corrtrol functionality) and the existence
and maturitl' of a runtime environment. Then, we have described a new
component model SOFA 2.0 which aims at addressing these limitations. It allows for all
the mentioned advanced features and provides a balanced support for them at
design-time as weil as at development-, deployment- and run-time. At present,
SOFA 2.0 has been formalized using meta-models and also an implementation
of its runtirne is available. Tire development toois are work in progress.
This work was partially supported by the Grant Agenc'y of the Czech Republic
'project 201/06/0770. The support of the Info'rrnat'ics Commerci,al'isat'ion
i,ntt'iat'i'ueof Enterprise lreland i,sgratefully acknowledged.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Aldrich</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chaunbers</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Notkin</surname>
            ,
            <given-names>D.:</given-names>
          </string-name>
          <article-title>ArchJava: Connecting Software Architecture to Implementation</article-title>
          ,
          <source>Proceedings of ICSE</source>
          <year>2002</year>
          ,
          <article-title>Orlando</article-title>
          , USA, IVIay2002
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Allen. R. J.:</surname>
          </string-name>
          <article-title>A Formal Approach to Software Architecture</article-title>
          ,
          <source>Ph.D. Thesis</source>
          , School of Computer Science, Carnegie lVlellon University, ir,{
          <article-title>ay 1997</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Brunetotr</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Coupaye</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leclerce</surname>
          </string-name>
          , NI.,
          <string-name>
            <surname>Quema</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stefani</surname>
          </string-name>
          , J.-
          <volume>8</volume>
          .:
          <article-title>The Fractal Component IVIodeland Its Support in Java, Softrvare Practice and Experience, Special i.ssucon Expcricnccs wit,h Auto-adapt,ive</article-title>
          and
          <source>Rcconfigurablc Systems</source>
          ,
          <volume>36</volume>
          (
          <fpage>11</fpage>
          <source>- 1 2 ) , 2 0 0 6</source>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Bures</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hnetynka</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Plasil</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>SoFA 2.0: Balancing Advanced Features in a Hierarchical Component IVIodel</article-title>
          ,
          <source>Proceedings of StrRA</source>
          <year>2006</year>
          , Seattle, USA,
          <string-name>
            <surname>IEEE</surname>
            <given-names>CS</given-names>
          </string-name>
          ,
          <article-title>Aug 2006</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>5. Eclipse Ivlodeling Framwork, http://www.eclipse.org/ emf/</mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6. Eut,
          <source>crprisc Java Bcans spccification, version 2</source>
          .1. Sun \licrosystcms,
          <year>Nov 2003</year>
          7.
          <string-name>
            <surname>Garlan</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ; Monroe, R. T.; wile, D.: Acme:
          <article-title>Architectural Description of Component-BasedSystems</article-title>
          ,In Foundationsof Component-BasedSystems,Cambridge University Press,
          <year>2000</year>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          8.
          <string-name>
            <surname>Hnetynh</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pise</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Hand-written vs</article-title>
          .
          <source>IVIOF-basedMetadata Repositories:The SOFA Experience,Proceedingof ECBS</source>
          <year>2004</year>
          ,Brno, CzechRepublic, NIay 2004
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          9.
          <string-name>
            <surname>Hnetynka</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Plasil</surname>
          </string-name>
          , F.:
          <article-title>f)ynamic Rcconfigurationand Accessto Servicesin Hierarchical Component lVlodels</article-title>
          ,
          <source>Proceedingsof CBSE</source>
          <year>2006</year>
          ,Vasteras,Swed.enL, NCS 4063,
          <article-title>Jun 2006</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          10.
          <string-name>
            <surname>Hnetynka</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tuma</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Fighting ClassName Clashesin JavaComponentSystems</surname>
          </string-name>
          ,
          <source>Proceedingsof JMLC</source>
          <year>2003</year>
          ,Klagenfurt,Austria, Aug 2003
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          11.
          <string-name>
            <surname>Inverardi</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Wolf</surname>
            ,
            <given-names>A.L.</given-names>
          </string-name>
          :
          <article-title>Formal Specificat,ionand Analysis of Software Architectures Using the Chemical Abstract lVlachinelvlodel</article-title>
          .
          <source>Transactionson Software Engineeringv,ol. 21</source>
          , no.
          <issue>4</issue>
          ,
          <string-name>
            <surname>Apr</surname>
            <given-names>1gg5</given-names>
          </string-name>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          12.
          <string-name>
            <surname>Ivlagee</surname>
          </string-name>
          ,J.;
          <string-name>
            <surname>Kramer</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          :
          <article-title>Dynamic structure in software architectures</article-title>
          ,
          <source>Proceedings of FSE'4</source>
          , San Francisco,USA, Oct 1996
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          13. olvlG: coRBA Components,v 3.0, ON,
          <source>IGdocument formalf 02-06-65</source>
          ,Jun 2002
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          14. van ommering, R., van der Linden,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Kramer</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.</surname>
          </string-name>
          , ivlageeJ,.,
          <article-title>The Koala component IVIodelfor Consumer ElectronicsSoftware</article-title>
          ,In IEEE Computer, Vol.
          <volume>33</volume>
          , No.
          <issue>3</issue>
          , pp.
          <fpage>78</fpage>
          -
          <lpage>85</lpage>
          ,NIar 2000
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          15.
          <string-name>
            <surname>Plasil</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Balek</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          , JanecekR,.: SOFA/DCUp: Architecturefor ComponentTrading and Dynamic Updating,
          <string-name>
            <surname>Proceedingsof</surname>
            <given-names>ICCDS</given-names>
          </string-name>
          '
          <volume>98</volume>
          ,
          <string-name>
            <surname>Annapolis</surname>
          </string-name>
          ,lvlaryland,USA, IEEE CS Press,May 1998
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          16.
          <string-name>
            <surname>Plasil</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Visnovsky</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Behavior Protocols for Software Components, IEEtr Transactionson SoftwareEngineering</article-title>
          ,vol.
          <volume>28</volume>
          , no.
          <issue>11</issue>
          ,
          <string-name>
            <surname>Nov</surname>
            <given-names>2002</given-names>
          </string-name>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          17.
          <string-name>
            <surname>Seinturier</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pessemier</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Duchietr</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Coupaye</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>A Component lvlodel Engineeredwith components and Aspects</article-title>
          ,OBSE'06, LNCS 4063,
          <article-title>Jun 2006</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          18.
          <string-name>
            <surname>Szyperski</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Component Software:Beyond Object-Oriented Programming, 2nd edition</article-title>
          , Addison-Wesley,
          <article-title>Jan 2002</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          19' Wermelinger, IvI.;
          <string-name>
            <surname>Fiadeiro</surname>
            ,
            <given-names>J. L.:</given-names>
          </string-name>
          <article-title>A graph transformation approach to software architecturereconfiguration,Scienceof Computer Programming,Volunre44, Issue 2</article-title>
          ,
          <fpage>Aug2002</fpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>