<!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>Checking Deadlocks in Component Composition with Partial Bindings using Variability Modeling</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Vanessa Stricker (Supervised by  Dr. Klaus Pohl)</string-name>
          <email>vanessa.stricker@paluno.uni-due.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>paluno - The Ruhr Institute for Software Technology, University of Duisburg-Essen</institution>
          ,
          <addr-line>Gerlingstr. 16, 45127 Essen</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>A large number of compositional deadlock checking techniques have been proposed in order to overcome the state-explosion-problem. These approaches require all components in a composition to be fully bound. This restriction conflicts with the underlying reusability paradigm of component-based software engineering, which often requires only parts of components to be reused and allows component compositions to be realized by a large set of similar component configurations. Accordingly, compositional deadlock checking approaches are not applicable to component compositions, which can be realized with partial bindings. We propose to overcome this problem by i) restricting the number of realizations, which have to be verified and ii) removing behavior that is not executed due to partial bindings.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Component-based software engineering (CBSE) is a well-established paradigm in
information system development (especially for distributed information systems),
which advocates the reuse of components in order to build a set of large and complex
systems from existing components [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. However, ensuring that components
compositions are deadlock free is challenging. Deadlocks are a common source of errors in
systems of concurrent processes as they are common in component-based systems
[
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] because components usually make implicit assumptions about the behavior of
their environment. When connecting components, their interaction might give rise to
unexpected deviations and inconsistencies w.r.t. the intended behavior of the system.
Early verification approaches, like deadlock checking techniques, which are based on
the specification of components, have become an important tool in CBSE in order to
detect errors in the interaction of components. Unfortunately, deadlock checking of
component compositions is subject to the state-explosion-problem, as the concurrent
nature of component-based system requires the computation of the global behavior. A
large number of compositional deadlock checking techniques have been proposed in
CBSE in order to address this challenge. Semmelrock and Majster-Cederbaum [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]
were able to prove that compositional deadlock checking is within PSPACE for
acyclic component topologies.
1.1
      </p>
      <sec id="sec-1-1">
        <title>Compositional Deadlock Checking Approaches</title>
        <p>
          Compositional verification generally allows breaking down a verification problem
into smaller problems. Under certain conditions, a global property is proven by
deduction from local properties of the components in a composition (cf. [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]).
Compositional deadlock checking approaches usually concludes the global deadlock freedom
of a composition from the local deadlock-freedom of its components. The conditions
of most compositional verification approaches require very restrictive composition
principles to allow analyzing the smaller verification problems independently from
each other. In the case of compositional deadlock checking approaches, these
restrictive assumptions require all components to be fully bound, i.e. not to have any
partially (cf. for example [
          <xref ref-type="bibr" rid="ref1 ref12">1,12</xref>
          ]) or unbound ports (c.f. for example [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]).
        </p>
        <p>Two components are bound if there exists a connection between their ports. The
components can interact via those connections. If a component has partially bound
ports, the interaction of these components within a composition cannot include the
unbound functionalities. Thus, the execution of a component within a specific
composition might only comprise a subset of the full behavior that has been specified for this
component. However, as compositional deadlock checking approaches only analyze
small parts of the component’s behavior within a composition, they assume that the
rest of the composition’s behavior adheres to the specified (full) behavior.
1.2</p>
      </sec>
      <sec id="sec-1-2">
        <title>Problem: Unrealistic Assumptions</title>
        <p>
          As the conditions, under which compositional deadlock checking approaches are
applicable, are based on unrealistic assumptions, the number of component-based
systems, to which compositional deadlock checking approaches are applicable, is
limited significantly. Requiring fully bound components conflicts with the underlying
reusability paradigm of CBSE, which often requires only parts of components or
component compositions to be reused when defining new systems [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ].
        </p>
        <p>
          A component composition can for example be instantiated differently. That is, the
set of components of the composition are configured slightly differently to be used in
different contexts. The different configurations can for example differ w.r.t. the extent
to which functionalities of the component composition are needed in a specific
context but share a common topology. Usually different component implementations are
used in different configurations. On the left hand side, Fig. 1 shows an excerpt from
the CoCoME example [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], which describes the component-based design of a set of
different trading systems. In the middle and on the right hand side Fig. 1 shows two
possible configurations of the component composition. While e1 includes only one
store and therefore does not make use of the functionality to dispatch products
between stores or report on an enterprise level, e2 includes two stores, which are
connected to the product dispatcher. In e2 reporting is performed on store and enterprise
level.
        </p>
        <p>Consequently, it is desirable to reuse only parts of a component by connecting only
the relevant functionalities. This, however, will likely lead to unbound or partially
bound ports, which in turn will cause only a subset of some of the components’
behavior to be executed. Currently, compositional deadlock checking approaches are not
applicable to compositions with partially bound ports, as their restrictive assumptions
are violated. From this the following problem can be concluded:</p>
        <p>
          How can a component composition be checked for deadlock freedom, if
instances of the composition can contain partial bindings?
pd:ProductDispatcher [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]
s:PD-ST [*]
pd:ProductDispatcher
r:Reporting[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]
de:DataEnterprise[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]
m:Manager[0...1
d]s:DataStore[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]
d:Data[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]
s:Store[0..1]
db:DataBase[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]
e:Enterprise[0..1]
stores:Store[*]
pe:I-PD[0..1]
b: CDA-Bank[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]
db:DataBase[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]
db:DataBase[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]
jdbsClients:Client[*]
[1..*]
r:Reporting
de:DataEnterprise
ds:DataStore
d:Data
s:Store
        </p>
        <p>
          db:DataBase[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]
r:Reporting
de:DataEnterprise
m:Manager
ds:DataStore
d:Data
s:Store
e:Enterprise
db:DataBase
s2:PD-ST
e2:Enterprise
pd:ProductDispatcher
s1:PD-ST
store1:Store
pe:I-PD
b: CDA-Bank
db:DataBase
store2:Store
pe:I-PD
db:DataBase
b: CDA-Bank
store1:Store
        </p>
        <p>b: CDA-Bank
db:DataBase
db:DataBase
jdbsClients1:Client
jdbsClients2:Client
db:DataBase
jdbsClients1:Client
jdbsClients2:Client
jdbsClients3:Client
An obvious solution to the described problem is to follow a brute force approach, in
which all possible configurations with all possible combinations of partial bindings
are instantiated and checked individually with traditional deadlock checking
approaches. This solution has two problems:
1. Combinatorial complexity: The possible combinations of partial bindings in a
composition result in a large space of configurations. Instantiating and verifying
all possible configurations is not possible due to this combinatorial complexity.
2. State explosion problem: Each of the instantiated configurations has to be
verified with traditional deadlock checking approaches due to the partial bindings.
This implies computing the global composition behavior of each configuration
and then performing the deadlock check on the global state behavior – both,
which are subject to the state explosion problem.</p>
        <p>So in conclusion, a brute force approach is not a viable option for verifying a
component composition if configurations with partially bound components can be derived.
Our solution idea intends to mitigate both problems and is therefore twofold.
2.1.</p>
      </sec>
      <sec id="sec-1-3">
        <title>Checking Desired Configurations</title>
        <p>The first part of the solution idea intends to restrict the number of all possible
configurations to a subset, which actually should be verified. Some functionalities might
be core to a component composition, and thus it is unreasonable to exclude these
functionalities in instantiations. In the eShop example depicted in figure 1, a store
should for example always be connected to a database to allow goods to be purchased.
Furthermore, there some functionalities can depend on each other in a composition. If
the product-dispatching component (cf. Fig. 1) is for example not connected, related
functionalities, like the reporting of statistics on product dispatches will not be
relevant for the configuration, either. Thus, on a conceptual level there are dependencies
between functionalities, which cause some combinations of partial bindings to be
unreasonable. We propose to constrain the deadlock checking effort to a subset of
configurations, which respects these dependencies and, is thus most likely to be used.
All other configurations will be excluded from the deadlock check.</p>
        <p>
          In software product line engineering (SPLE) variability modeling is a
wellestablished technique to specify varying properties and qualities of a system (cf. [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]).
We propose to explicitly model the subset of configurations to be verified by using
modeling techniques from SPLE. A variability model restricts the variation of a
product line by defining variation points, variants, and how the variants can be chosen and
combined. We use the concepts of variability models to specify valid combinations of
functionalities (and thus partial bindings) of compositions on a conceptual level. The
main rational for constraining the configuration space of component compositions
with variability models is that the number of options modelled in a variability model
will be smaller than the theoretically possible space of possible configurations.
        </p>
        <p>Limitations of this idea: A limitation of this solution is that it possible
combinations of functionality to be anticipated. Thus, it still contradicts the reusability
paradigm to some extend. However, we find that this is a reasonable trade-off, since i) it is
a step towards relaxing the strict assumptions of compositional deadlock checking and
ii) we are not focusing on anticipating all combinations by explicitly enumerating
them but by explicitly stating dependencies and excluding unreasonable (and maybe
erroneous) combinations.
2.2</p>
      </sec>
      <sec id="sec-1-4">
        <title>Removing Superfluous Behavior</title>
        <p>The second part of the solution idea intends to make partial bindings in a
configuration explicit and remove the behavior, which is not executed because of those
partial bindings. If this superfluous behavior is removed from the behavior specifications,
compositional deadlock checking approaches are applicable to the reduced
specifications. Using the variability model, it can be determined which functionalities have
been excluded from an instance. Thus, it will be possible to identify partial bindings.
In order to be able to derive behavior specifications for this configuration, which are
reduced to the actual executable behavior, the effect of partial bindings and the
combination of partial bindings onto the composition’s behavior has to be analyzed.</p>
        <p>We propose to identify and explicit specify these dependencies between partial
bindings and the behavior of components in a behavior reduction model. Such a
model can then be used to reduce the behavior specifications using existing model slicing
techniques, where the partial bindings can be used as slicing criteria. Accordingly,
such a model needs to provide means to relate the absence of functionality in a
configuration (using the variability model and structural specification) to parts of the
behavior specification. Furthermore, the notation needs to be compatible with existing
slicing techniques. The resulting behavior specifications can then be used as input to
existing compositional deadlock techniques. Thus, the state explosion problem is
mitigated for the set of configurations, which is supposed to be verified.</p>
        <p>Limitations of this idea: A risk to the proposed solution is that additional effort will
be needed to generate the behavior reduction model and compute the reduced
specifications. However, since the reduction model only has to be created once, we work
under the hypothesis that the high number of derivable instances, in which the
reduction model can be reused and for which the computation and analysis of the global
state space can be avoided, will outweigh the extra effort. However, an experiment
will be conducted in order to determine whether this hypothesis holds.</p>
        <p>Fig. 2 shows an abstract sketch of the solution idea. It can be seen that the
variability model will solely be related to the structural specification of the composition. The
behavior reduction model is based on the behavior of the individual components and
uses information from the structural specification as well as the variability model to
enrich the behavior information.</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>State-of-the-Art: Compositional Deadlock Checking</title>
      <p>Deadlock-freedom is generally non-compositional: if components are deadlock free in
isolation, they still might deadlock in a composition due to interactions making it
challenging to find a sufficient condition to relate global and local deadlock-freedom.
Existing compositional deadlock checking approaches can be differentiated into
deductive and assume-guarantee reasoning approaches as described in the following.</p>
      <sec id="sec-2-1">
        <title>3.1 Deductive Deadlock Checking</title>
        <p>
          In summary, most deductive approaches focus on the pairwise behavioral equivalence
between the behavior of connected components. Under the assumption that the
components are deadlock free and that the interaction behavior is deadlock free, the
analysis of the behavioral equivalence is a sufficient property to guarantee the local
deadlock freedom of components and thus also the global deadlock freedom. Martens and
Majster-Cederbaum’s approach [
          <xref ref-type="bibr" rid="ref10 ref13 ref14 ref15">10, 13, 14, 15</xref>
          ] checks connected components for
example pairwise for potential deadlocks. The reachability of those potential
deadlocks is analyzed compositionally. The approach can only deal with tree like
topologies. Although the approach theoretically allows for partial bindings, it is not e able to
detect deadlocks that occur due to dependencies between several partial bindings.
        </p>
        <p>
          In contrast, the approach presented by Aldini and Bernardo [
          <xref ref-type="bibr" rid="ref2 ref3 ref7">2, 3, 7</xref>
          ] also can also
deal with cycles in arbitrary topologies. It is assumed that every topology can be
reduced to an acyclic topology by reducing cycles into a new component. While the
connections between the components are verified compositionally for the non-cyclic
part, for the cyclic part they have to perform more extensive checks to assure that
there are no cyclic dependencies between the components causing a deadlock.
However, they avoid computing the “global” behavior of the components involved in the
cycle by instead analyzing the communications paths within the cycle using a weak
bisimulation equivalence relation. In contrast to Martens and Majster-Cederbaum
their approach requires full bindings within a composition.
        </p>
        <p>
          Choi and Kim’s approach also assumes full binding of components in a
composition [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. It is based on controlled composition and abstraction. The approach provides
a smaller behavior specification of a composite component by removing synchronized
interaction in a parallel composition and removing the internal behavior of composite
components via projection abstraction. The verification is performed compositionally
for each component, whereas the dependencies towards the environment are
considered by explicitly considering/providing drivers that can generate events and stubs
that consume events. If each component behaves correctly under the assumption of a
correct environment, the composition is be deadlock free.
        </p>
        <p>
          Zeng and Miao [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] also propose an approach that is based on abstraction and
compositional reasoning. As abstraction and compositional reasoning do not preserve
deadlock freedom, the authors extend the notion of transitions in LTSs by classifying
transitions into certain and uncertain transitions. The deadlock detection considers this
differentiation and is performed using the CEGAR (counterexample guided
abstraction refinement) framework. Even though the approach claims that it is compositional,
their verification is not as it is based on the parallel composition of the abstractions.
        </p>
        <p>
          Hennicker et al. [
          <xref ref-type="bibr" rid="ref11 ref12">11, 12</xref>
          ] propose an approach, which can compositionally assure
deadlock freedom of a central component in a star topologies if at most one port of
that component is behavioral restricted (partially bound). The approach is based on
I/O transition systems and checks pairwise the behavior at connected ports fro
deadlock freedom assuming that each component is deadlock free in isolation. The
presented approach explicitly takes into account that components do not necessarily have
to be fully bound, i.e. that expected behavior is not provided by the connected
component. Hennicker et al. compute the parallel composition when more than one
behavioral restriction is found. However, they only use the central component of the star
topology and the ports at which behavioral restrictions occurred in the composition.
Thus, they use the interaction behavior specification to detect behavioral restrictions
and then directly check for deadlocks in the reduced global state space.
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>3.2 Assume-Guarantee Reasoning (AGR).</title>
        <p>
          The idea of AGR [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ] is to verify a component using an artificial environment that is
based on the assumptions the component has about its environment. Using such an
artificial environment reflecting the assumptions of a component, allows for an early
verification of the component. Approaches focusing on how to use AGR for deadlock
detection assume the parallel composition of two components to be deadlock free if
the parallel composition of a component and its artificial environment is deadlock free
and the other component “adheres” to the environment specification [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ].
        </p>
        <p>
          Chaki and Shina [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] for example propose a compositional deadlock detection
algorithm that uses learning-based automated AGR. Their formalism is based on an
automata-theoretic representation of failure traces. The deadlock detection is performed
pairwise on failure automata and checks for inclusion in the specification language.
They use an AGR rule, which uses the composition of a failure automaton with its
assumption specification and then checks that a second automaton is included in the
language of the assumptions.
        </p>
        <p>
          Parizek and Plasil [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] propose several options to generate an artificial
environment using AGR. The possibility to use only a subset of the functionality in the
assumption specification enables the partial binding of components but all partial
bindings have to be anticipated when specifying the assumptions.
        </p>
        <p>
          Bensalem et al. [
          <xref ref-type="bibr" rid="ref4 ref5 ref6">4, 5, 6</xref>
          ] propose an approach for the compositional verification of
components, which uses inductive reasoning as well as AGR. The approach is based
on i) component invariants, which are an over-approximation of components’
reachability sets and ii) interaction invariants, which are global constraints over the states of
components involved in interactions. The overall algorithm sequentially computes a
system invariant using the interaction and component invariants. If it cannot be shown
that the desired invariant holds, a stronger invariant is computed or the calculation is
stopped with inconclusive output. Like in the approach of Martens and
MajsterCederbaum, components can be partially reused. However, they do not discuss the
problems, which could occur due to partial bindings nor is it obvious how the
algorithm would be affected.
        </p>
        <p>Generally, AGR approaches do not make any assumptions about the topology of a
composition as long as the specified assumptions are satisfied. They allow the
assumption specifications to be only a subset of the offered functionalities and thus
allow partial bindings. However, any partial binding has to be anticipated and existing
verification approaches do not explicitly check for deadlocks due to missing bindings.
4</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Work in Progress</title>
      <p>
        The research methodology we use, follows the idea of the design science research
methodolgy and follows the six-step process model proposed by Peffers et al. [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
The work currently in progress focuses on step 3 „Design and Development“, i.e. on
developing an approach according to the two solution ideas. The work, which has to
be performed as part of step 3 can be grouped according to the two core ideas of the
solution idea as described in the following.
4.1
      </p>
      <sec id="sec-3-1">
        <title>Part 1: Restricting the Combination Space</title>
        <p>
          Step 1.1 Identification of appropiate means to restrict the configuration space. In
order to restrict the configuration space of a component configuration which can be
realized with partial bindings, an appropiate modeling notation has to be selected. As
described in sect. 2, variability modeling as it is used in SPLE shows similarities with
this objective and has therefore been selected as appropiate modeling means. Due to
existing reasearch performed in our research group, the proposed approach is based
on the Orthogonal Variability Model [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ].
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>Step 1.2 Identification of variation in component compositions. In order to restrict</title>
        <p>
          the configuration space, it needs to be understood how configurations can vary and
which elements of a composition are affected by unused functionality. Furthermore,
the conceptual dependencies between functionalities need to be taken into account in
this analysis. Different cases of variation have been identified in this step.
Step 1.3 Definition of artifact dependencies between the variability model and
the composition. In SPLE, artifact dependencies describe the relation between
development artifacts and the variability model and, therefore, determine, which
development artifacts become part of a derived product [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. The approach presented here
also has to define artifact dependencies between the variability model and the
component composition covering the cases identified in step 1.2. In SPLE a large number of
approaches exist, which model variability in component compositions. These
approaches distinguish between coarse grained variability (i.e. only the complete
component can vary) and fine grained varaibility (i.e. single functionalities of a
component can vary) in the component compositions. The approach proposed by this
paper adopts a fine grained solution. The artifact dependencies have been specified
formally extending the formal component model underlying the approach.
4.2
        </p>
      </sec>
      <sec id="sec-3-3">
        <title>Part 2: Removing Superfluous Behavior</title>
      </sec>
      <sec id="sec-3-4">
        <title>Step 2.1 Identification of the affect of partial bindings on behavior specifications.</title>
        <p>In order to remove superfluous behavior it has to be analysed how partial bindings
can affect the behavior of a component. In this step, different cases have been
identified, which differentiate between the partial binding of provided and required
functionalities and which also consider the combination of several partial bindings
and the implicit propagation of superfluous behavior onto other components.
Step 2.2 Identification of an appropiate modeling notation for the behavior
reduction model. In order to allow superfluous behavior to be removed from
behavior specifciations, an appropriate notation needs to be found for the behavior
reduction model. Such a notation needs to meet the following requirements: i) it
should be usable as input to existing model slicing techniques, ii) a relation between
the variability model and the behavior reduction model needs to be defined in order to
use the information of the variability model about the absence of functionalities and
iii) the behavior reduction model also needs to use information from the structural
specification about ports affected by the absence of functionalities.</p>
      </sec>
      <sec id="sec-3-5">
        <title>Step 2.3 Definition of an algorithm to identify and remove superfluous behavior.</title>
        <p>Finally an algorithm needs to be defined, which allows an efficient identification of
all cases defined in step 2.1 while considering the propagation between components
and which also allows to remove superfluous behavior for a concrete composition.
5</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Summary and Outlook</title>
      <p>The paper motivates and describes a solution idea for allowing compositional
deadlock checking approaches to be applied to compositions, which can be realized
with partial bindings. The proposed approach is based on two core ideas: i) restrict
the number of configurations that can be derived and have to be verified and ii)
remove behavior that is not executed due to partial bindings.</p>
      <p>The resulting behavior specifications can be used as input to existing
compositional deadlock techniques. While first results have been achieved in defining the
approach, the next step has to focus on defining the behavior reduction model and
defining the algorithm for identifying and removing superfluous behavior before the
applicability of the approach as well as the runtime experiments can be conducted.</p>
      <p>The applicability of the approach will be illustrated with the CoCoME case study.
Potential partial bindings will be analyzed for CoCoME and restricted with a
variability model. An analysis of the number of all possible configurations in comparison to
the number of restricted configurations will be conducted to demonstrate the
usefulness of restricting the configuration space. In addition, the performance of the
approach will be evaluated with experiments. These experiments will focus on
analyzing the efficiency of the behavior reduction algorithm and compare the performance
of compositional deadlock checking on reduced behavior specifications to the
computation and analysis of the global state space for each possible configuration. A random
subset of the derivable configurations of the CoCoME case study will be used as input
to those experiments. The runtime will be compared to the runtime of traditional
deadlock checking approaches, which compute the global system behavior using the
same subset of configurations.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Adamek</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Plasil</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          : Partial Bindings of Components - Any Harm? In: APSEC '04,
          <string-name>
            <surname>IEEE</surname>
            <given-names>CS</given-names>
          </string-name>
          ,
          <volume>632</volume>
          -
          <fpage>639</fpage>
          (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Aldini</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bernardo</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>A General Approach to Deadlock Freedom Verification for Software Architectures</article-title>
          .
          <source>In: FME: Formal Methods</source>
          , Springer,
          <volume>2805</volume>
          ,
          <fpage>658</fpage>
          -
          <lpage>677</lpage>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Aldini</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bernardo</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>On the Usability of Process Algebra: An Architectural View</article-title>
          . In: Theo. Comp. Sci.,
          <volume>335</volume>
          (
          <issue>2-3</issue>
          ),
          <fpage>281</fpage>
          -
          <lpage>329</lpage>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Bensalem</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bozga</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nguyen</surname>
            ,
            <given-names>T. H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sifakis</surname>
          </string-name>
          , J.:
          <article-title>Compositional verification for component-based systems and application</article-title>
          .
          <source>In: Software, IET</source>
          ,
          <volume>4</volume>
          ,
          <fpage>181</fpage>
          -
          <lpage>193</lpage>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Bensalem</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bozga</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Legay</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nguyen</surname>
          </string-name>
          , T.-H.,
          <string-name>
            <surname>Sifakis</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yan</surname>
          </string-name>
          , R.:
          <article-title>Incremental component-based construction and verification using invariants</article-title>
          .
          <source>In: FMCAD '10</source>
          ,
          <fpage>257</fpage>
          -
          <lpage>256</lpage>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Bensalem</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Griesmayer</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Legay</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Nguyen</surname>
          </string-name>
          , T.-H.,
          <string-name>
            <surname>Peled</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Efficient deadlock detection for concurrent systems</article-title>
          .
          <source>In: MEMOCODE '11</source>
          ,
          <fpage>119</fpage>
          -
          <lpage>129</lpage>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Bernardo</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ciancarini</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Donatiello</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Architecting Families of Software Systems with Process Algebras</article-title>
          .
          <source>In: ACM TOSEM</source>
          ,
          <volume>11</volume>
          (
          <issue>4</issue>
          ),
          <fpage>386</fpage>
          -
          <lpage>426</lpage>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Chaki</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sinha</surname>
          </string-name>
          , N.:
          <article-title>Assume-Guarantee Reasoning for Deadlock</article-title>
          . In: FMCAD '
          <volume>06</volume>
          ,
          <fpage>134</fpage>
          -
          <lpage>144</lpage>
          (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Choi</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kim</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Controlled composition and abstraction for bottom-up integration and verification of abstract components</article-title>
          . In: Inf. Softw. Technol.,
          <string-name>
            <surname>Butterworth-Heinemann</surname>
          </string-name>
          ,
          <volume>54</volume>
          ,
          <fpage>119</fpage>
          -
          <lpage>136</lpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Gössler</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Graf</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Majster-Cederbaum</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Martens</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sifakis</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>An Approach to Modelling and Verification of Component Based Systems</article-title>
          .
          <source>In: SOFSEM '07</source>
          , Springer,
          <volume>4362</volume>
          ,
          <fpage>295</fpage>
          -
          <lpage>308</lpage>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Hennicker</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Janisch</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Knapp</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>On the Observable Behaviour of Composite Components</article-title>
          . Electron. In: ENTCS, Elsevier,
          <volume>260</volume>
          ,
          <fpage>125</fpage>
          -
          <lpage>153</lpage>
          . (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Knapp</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Janisch</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hennicker</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Clark</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gilmore</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hacklinger</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Baumeister</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wirsing</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Modelling the CoCoME with the Java/A Component Model</article-title>
          .
          <source>In: The Common Component Modeling Example</source>
          , Springer,
          <volume>5153</volume>
          ,
          <fpage>207</fpage>
          -
          <lpage>237</lpage>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Lambertz</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Majster-Cederbaum</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Efficient deadlock analysis of component-based software architectures</article-title>
          .
          <source>In: Science of Computer Programming</source>
          ,
          <volume>78</volume>
          ,
          <fpage>2488</fpage>
          -
          <lpage>2510</lpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Martens</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Majster-Cederbaum</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Using Architectural Constraints for DeadlockFreedom of Component Systems with Multiway Cooperation</article-title>
          . In: TASE '09,
          <string-name>
            <surname>IEEE</surname>
            <given-names>CS</given-names>
          </string-name>
          ,
          <volume>225</volume>
          -
          <fpage>232</fpage>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Martens</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Majster-Cederbaum</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Deadlock-freedom in component systems with architectural constraints</article-title>
          .
          <source>In: Formal Methods in System Design</source>
          , Springer,
          <volume>41</volume>
          ,
          <fpage>129</fpage>
          -
          <lpage>177</lpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Parizek</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Plasil</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Assume-guarantee verification of software components in SOFA 2 framework</article-title>
          . In: Software,
          <string-name>
            <surname>IET</surname>
          </string-name>
          ,
          <volume>4</volume>
          ,
          <fpage>210</fpage>
          -
          <lpage>211</lpage>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Peffers</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tuunanen</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rothenberger</surname>
            ,
            <given-names>A. M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chatterjee</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>A design science research methodology for information systems research</article-title>
          .
          <source>In: JMIS</source>
          , vol.
          <volume>24</volume>
          , no.
          <issue>3</issue>
          ,
          <fpage>45</fpage>
          -
          <lpage>77</lpage>
          , (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Pnueli</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Logics and models of concurrent systems</article-title>
          . In:
          <article-title>Transition from global to modular temporal reasoning about programs</article-title>
          . Springer,
          <fpage>123</fpage>
          -
          <lpage>144</lpage>
          (
          <year>1985</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Pohl</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Böckle</surname>
          </string-name>
          , G.,
          <string-name>
            <surname>van der Linden</surname>
          </string-name>
          , F.:
          <string-name>
            <surname>Software Product Line Engineering - Foundations</surname>
          </string-name>
          , Principles, and Techniques. Springer (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Semmelrock</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Majster-Cederbaum</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>Reachability in tree-like component systems is PSPACE- complete</article-title>
          . In: ENTCS, Elsevier,
          <volume>263</volume>
          ,
          <fpage>197</fpage>
          -
          <lpage>210</lpage>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Szyperski</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Component Software: Beyond Object-Oriented Programming</article-title>
          .
          <source>AddisonWesley</source>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Zeng</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Miao</surname>
          </string-name>
          , H.:
          <article-title>Deadlock Detection for Parallel Composition of Components</article-title>
          . In: Computer and Information Science, Springer,
          <volume>317</volume>
          ,
          <fpage>23</fpage>
          -
          <lpage>34</lpage>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>