<!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>Modeling Interaction-Oriented Architectures using Choreographies</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Kyle Dingenouts</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mitchell Klijs</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jan Martijn E. M. van der Werf</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Utrecht University</institution>
          ,
          <addr-line>Princetonplein 5, Utrecht, 3584CC</addr-line>
          ,
          <country country="NL">The Netherlands</country>
        </aff>
      </contrib-group>
      <fpage>126</fpage>
      <lpage>142</lpage>
      <abstract>
        <p>The Software architecture of a system can be regarded as a consistent set of views to describe the system. This paper focuses on the interaction between components in a system. These can be modeled as choreographies, capturing all allowed interactions between the components. In this paper, we show that it is feasible to analyze a composed set of these choreographies: a tree of choreographies in which each member may refer to another. The two major components of the analysis are correctness by structure: a choreography needs to follow strict rules to guarantee soundness. Otherwise, the choreography is transformed into a Petri net which is checked by an external tool. This paper shows the theoretical techniques to verify a composed choreography, and implements the solutions into a single educational modeler tool: INORA2.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Petri nets</kwd>
        <kwd>Software architecture</kwd>
        <kwd>Model-checking</kwd>
        <kwd>Choreographies</kwd>
        <kwd>BPMN</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>to model the flow of information. Although there is a clear relation between the features in
the FAM and the activities in the BPMN diagrams, creating and maintaining this mapping is a
manual task, and thus remains error prone.</p>
      <p>
        Architectural Description Languages (ADLs) combine diferent views and notations to assist
the architect in creating a consistent description of a system. However, their main disadvantage
is that they typically require to model the complete system to be able to reason over the system.
As such, their overhead in modeling very quickly becomes rather a burden than an advantage [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
Another disadvantage is that most ADLs are only semi-formal, i.e., they do not allow for formal
analysis of properties, such as the absence of deadlocks and livelocks.
      </p>
      <p>
        In this paper, we build upon the ideas described in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], and introduce the interaction-oriented
software architecture (INORA). It combines a functional view on the system to describe the
organisation of the software elements, with choreographies [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] to model the interactions between
these elements. These choreographies are automatically translated into a set of components
that allow for formal verification using LoLA [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Rather than modeling the complete system
in a formal notation, the architect only needs to design the component interactions. As a
choreography only describes a single conversation between a set of participants, the proposed
approach allows to realise the choreographies into a single system automatically. As we show,
if the architect limits themselves in the used constructs, the approach guarantees correctness
by design.
      </p>
      <p>The remainder of this paper is structured as follows. In the next section, we introduce Open
Nets, a class of Petri nets to model asynchronously communicating systems upon which our
approach builds. Section 3 discusses choreographies and their translation to Petri nets. In
Section 4, we present INORA and discuss its framework and tool support. Last, Section 5
concludes the paper, discussing limitations of the approach and future work.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Asynchronously Communicating Systems</title>
      <p>In this section, we introduce the basic notions of Petri nets, and show how these can be used to
model Open Nets, that are used to reason over the communication between components.</p>
      <sec id="sec-2-1">
        <title>2.1. Basic Notions</title>
        <p>Let  and  be possibly infinite sets. The powerset of  is denoted by () = {′ | ′ ⊆ }
and || denotes the cardinality of . Sets  and  are disjoint if  ∩  = ∅, with ∅ denoting
the empty set. Given disjoint sets  and  , and sets  and  , the composition of two functions
 :  →  and  :  →  , denoted by  ∪ , is defined by ( ∪ )() =  () if  ∈  and
( ∪ )() = () if  ∈  .</p>
        <p>A sequence over  of length  ∈ N is a function  : {1, . . . , } →  where where N =
{0, 1, 2, 3, . . .} describes the set of all natural numbers, including 0. If  &gt; 0 and  () = ,
for 1 ≤  ≤ , we write  = ⟨1, . . . , ⟩. The length of a sequence  is denoted by | |. The
sequence of length 0 is called the empty sequence, and is denoted by  . The set of all finite
sequences over  is denoted by * . We write  ∈  if there is 1 ≤  ≤ |  | such that  () = .</p>
        <p>A Petri net is a tuple  = (, ,  ) with  and  two disjoint sets of places and transitions,
respectively, and a flow relation  ⊆ ( ×  ) ∪ ( ×  ). The elements of  ∪  are called the
nodes of  . Elements of  are called arcs. Places are depicted as circles, transitions as squares.
For each element (1, 2) ∈  an arc is drawn from 1 to 2. Given a node  ∈  ∪  , we
define its preset ∙  = { | (, ) ∈  } and its postset by ∙ = { | (, ) ∈  }. If the
context is clear, we omit the subscript.</p>
        <p>A marking of  is a function  :  → N that describes the configuration of tokens in each
of the places of  . The set of all possible markings of  is denoted by M( ). A Petri net 
with corresponding marking  is written as (, ) and is called a marked Petri net. Given
a marked Petri net (, ), a transition  is enabled if all its input places contain at least one
token, i.e., ∀ ∈ ∙  : () &gt; 0. An enabled transition can fire . Firing transition results in
a new marking ′, denoted as (, )[⟩(, ′), with ′() + ((, )) = () + ((, ))
with ( ) = 1 if  ∈  and ( ) = 0 otherwise. We lift Firing of transitions to sequences
in a standard way. A sequence  ∈  * is called a firing sequence from (, 0) if markings
1, . . .  exist such that (, − 1)[ ()⟩(, ) for all 1 ≤  ≤ |  |. The set of all reachable
markings from (, ) is defined by ℛ(, ) = {′ | ∃ ∈  * : (, )[ ⟩(, ′)}.</p>
        <p>Several classes of Petri nets exist. A Petri net (, ,  ) is called a state machine if |∙ | ≤ 1
and ∙ | ≤ 1 for all places  ∈  . It is called a marked graph if |∙ | = |∙ | = 1 for all transitions
 ∈  . A workflow net is a tuple  = (, , , ,  ) with (, ,  ) a Petri net,  ∈  its
initial place such that ∙  = ∅,  ∈  its final place such that  ∙ = ∅ and all nodes  ∈  ∪ 
are on a path from  to  . A workflow nets is called sound if (1) [ ] ∈ ℛ(, []) and (2)
( ) &gt; 1 =⇒  = [ ] for all  ∈ ℛ(, []), where [] denotes the marking with a single
token in place , i.e., []() = 1 if  =  and []() = 0 otherwise.</p>
      </sec>
      <sec id="sec-2-2">
        <title>2.2. Open Nets and Their Composition</title>
        <p>
          A set of asynchronously communicating components interact via message passing: messages
are sent and received by components. The approach we follow is based on Open Nets [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. In an
Open Net, message passing is modeled via interface places. An interface place is either an input
place, receiving messages from other components, or an output place, that sends messages to
other components.
        </p>
        <p>Definition 1 (Open Net). An Open Net is a tuple (, , , , , , Ω) where
• ( ∪  ∪ , ,  ) is a Petri net;
•  is the set of internal places;
•  is the set of input places, such that ∙  = ∅;
•  is the set of output places, such that ∙ = ∅;
• Transitions are connected to at most one interface place: |(∙  ∪ ∙ ) ∩ ( ∪ )| ≤ 1 for all
 ∈  ;
• Any interface place is connected to at most one transition: |∙  ∪ ∙ | = 1 for all  ∈  ∪ ;
•  :  → N is the initial marking; and
• Ω ⊆  → N is the set of final markings .
Places  ∪  are called the interface of  . The skeleton of  considers  without its interface
places, and is defined by ( ) = (, ,  ). If ( ) is a state machine,  is called an S-Net.</p>
        <p>As transitions are connected to at most one interface place, each transition has a sign,
indicating whether the transition sends or receives messages from the interfaces.
Definition 2 (Sign). Let  = (, , , , , , Ω) be an Open Net. The sign of a transition
is defined by the function sign :  → { !, ?,  } such that for any transition , sign() = ! if
∙ ∩  ̸= ∅, sign() = ? if ∙  ∩  ̸= ∅ and sign() =  otherwise. If the context is clear, the
subscript  is omitted.</p>
        <p>As correctness notion for Open Nets, we extend soundness to the internal behavior of an Open
Net, i.e., the skeleton of the Open Net should be weakly terminating and properly completing.
Definition 3 (Soundness). Let  = (, , , , , , Ω) be an Open Net. It is sound if:
• ( ) is weakly terminating, i.e., ∀ ∈ ℛ(( ), ) an  ∈ Ω exists such that  ∈
ℛ(( ), ); and
• ( ) is properly completing, i.e., ∀ ∈ ℛ(( ), ) if an  ∈ Ω exists such that  () ≤
() for all places  ∈  , then  =  .</p>
        <p>Figure 1 shows two Open Nets,  and  . Both nets share five interface places, , , , , and
. Places ,  and  are output places for  and input places for  . Similarly, places  and 
are input places for  and output places for  . Net  has four additional interface places:
input places ℎ and , and output places  and . If the set of final marking is the singleton set
containing the initial marking, then both  and  are sound.</p>
        <p>Two Open Nets can be composed if their interfaces match: an input place of the one should
be an output place of the other, and vice versa. Their composition glues the common interface
places, which become internal places in the composition.</p>
        <p>Definition 4 (Composition). Given two Open Nets  = ( ,  ,  ,  ,  ,  , Ω  ) and
 = ( ,  ,  ,  ,  ,  , Ω  ) are composable, denoted by  ⊕  , if and only if
( ∪  ∪  ∪  ) ∩ ( ∪  ∪  ∪  ) = ( ∩  ) ∪ ( ∩  ).</p>
        <p>Their composition is again an Open Net, denoted by  ⊕  = (, , , , , , Ω) with
•  =  ∪  ∪ ;
•  = ( ∪  ) ∖ ;
•  = ( ∪  ) ∖ ;
•  =  ∪  ;
•  =  ∪  ;
• () =  ∪  ;
• Ω =
{ ∪  |  ∈ Ω  ,  ∈ Ω  };
where  = ( ∩  ) ∪ ( ∩  ).</p>
        <p>Consider nets  and  in Fig. 1. Their intersection only contains interface places of  and
 such that input places of  are an output place of  , and vice versa. Hence, nets  and 
are composable, resulting in  ⊕  , where places , , ,  and  are internal places.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Modeling Interactions</title>
      <p>
        As shown in the previous section, Open Nets can be used to model asynchronously
communicating systems. Two types of approaches can be identified for designing such systems. The first
type is to first create and verify the complete model and then divide it into separate components
(cf. [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]). The second type is to model the components individually, verify the individual
components, and then compose them (cf. [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]). The problem of the former is that it is very dificult to
maintain such models: once created and updated, the complete model needs to be revisited and
changes need to be tracked to the components. The problem of the latter is that compositional
verification is very hard [
        <xref ref-type="bibr" rid="ref11 ref12">11, 12</xref>
        ] and in general even undecidable [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. One solution is to limit
the expressive power of models, thus guaranteeing soundness by construction [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. All these
approaches have in common that the resulting model describe the inner working of components,
instead of their interactions. A diferent perspective on modeling the interaction between
components, is to design the message flow using choreographies. To analyse choreographies,
two properties need to be analysed: first, the message flow itself should be sound, and second,
      </p>
      <p>BPMN Start event</p>
      <p>ParticipantP
message A</p>
      <p>
        Participant Q
Participant A sends message MAB1 to Participant B
there should exist a set of components that together can realise the message flow [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. In the
remainder of this section, we introduce choreographies, and show one approach to generate a
possible realisation that can be verified. In addition, we show that for a specific class that are
realisable by construction: the structure of the choreography ensures its realisability.
      </p>
      <sec id="sec-3-1">
        <title>3.1. Choreographies</title>
        <p>
          Instead of modeling the behavior of individual components, choreographies models the flow
of messages between components [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]. An activity in a choreography resembles an interaction
between a sender and receiver via a message. In this way, the execution of a choreography
resembles a message-based conversation between a set of participants. A choreography describes
the set of all possible conversations between these participants. In our setting, these participants
resemble software elements.
        </p>
        <p>
          As of BPMN 2.0, a specific notation is added to support modeling choreographies. Similar
to BPMN, gateways are used to direct the message flows. Although many diferent types of
gateways exist, we follow the 7 process modeling guidelines [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ], and limit the gateways to only
exclusive choice (XOR) and parallelism (AND). An example choreography is shown in Fig. 2.
In this example, two participants,  and , communicate. First Participant  sends message
 to Participant , after which Participant  either sends message , or message . After
this choice, both participants send a message to the other: participant  sends message  and
participant  sends message . Note that although BPMN adds an envelope icon to depict the
messages explicitly, we leave them out for readability.
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Transformation to Petri Nets</title>
        <p>
          As choreographies do not have a formal semantics, diferent translations exist to transform
choreographies to formal notations, such as Pi calculus [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ], Event B [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ], and Petri nets [
          <xref ref-type="bibr" rid="ref19 ref20">19, 20</xref>
          ].
An important property for choreographies is realisability: whether a set of components exist that
together implement exactly the same set of conversations as specified by the choreography [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ].
In general, this property is undecidable [
          <xref ref-type="bibr" rid="ref15 ref21">21, 15</xref>
          ]. Instead, we follow a practical approach, and
generate for each participant a Petri net based on the choreography, and verify soundness
on their composition. Although this does not guarantee realisability, it provides a necessary
correctness check. In this paper, we rely on the translation to Petri nets. Following the ideas
of [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ], our proposed transformation consists of four steps:
1. Translate the choreography into a Petri net;
2. Duplicate the Petri net for each participant;
3. Generate for each message a place;
4. Connect the message places to each participant, based on their sign.
        </p>
        <p>
          Table 1 shows the transformation rules to generate a Petri net from a choreography. The
translation is inspired by the existing translations [
          <xref ref-type="bibr" rid="ref19 ref20">19, 20</xref>
          ]. However, the transformation rule for
the XOR gateways difers in our setting. Instead of using silent transitions for each input and
output arc, we translate the XOR gateway to1a32single place. Although this translation would
generate erroneous models in general [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ], it is required for interaction-based models. As an
example, consider the choreography depicted in Fig. 3a. If in this choreography the XOR
gateway would be translated into two silent transitions, one for each leg, the resulting model
would become unsound, as both participants may choose a diferent leg. Instead, each choice
needs to be controlled by one of the participants [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ].
        </p>
        <p>In the second step, the generated Petri net is duplicated for each participant. Each transition
is annotated with the message it sends or receives. For the example choreography shown in
Fig. 3a, this results in two participant nets. Next, for each message, a place is generated. These
are the colored places in Fig. 3b. Next, for each transition in the participant the corresponding
message is connected: if in the choreography participant  sends a message , then the
corresponding transition in the participant net  produces a token in place . Similarly, if in
the choreography participant  receives a message , then the corresponding transition in the
participant net  consumes a token from place . This results in a a composable set of Open
Net, one for each participant, as shown in Fig. 3b.</p>
      </sec>
      <sec id="sec-3-3">
        <title>3.3. Correctness by Construction</title>
        <p>In general, the proposed translation does not guarantee soundness: If the choreography is
sound, it is not necessarily the case that the resulting composition is sound. For example, if two
participants can choose diferent legs of an XOR gateway, the choreography itself is sound, but
the composition is not. In this section, we show that for a class of choreographies, the proposed
transformation guarantees soundness.</p>
        <p>
          State machines have only choices, and no concurrency. As shown in [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ], any state machine
workflow net is sound and safe. For Open Nets, a similar property holds: any S-Net is sound
and safe. However, that does not guarantee that the composition of two S-Nets is sound.
The proposed translation results in identical Open Nets for each participant, i.e., for each
two participants, their Open Nets are isomorphic. As shown in [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ], the composition of two
isomorphic S-Nets yield a sound model under certain conditions: for any interface places a
corresponding pair of isomorphic transitions should exist, in any choice, the sign of all transitions
should be the same, and any loops should contain both sending and receiving transitions. If
these conditions are met, we say that the composition agrees on the isomorphism.
Definition 5 (Composition agrees on isomorphism [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]). Given two S-Nets  =
(, , , , , , Ω ) and  = (, , , , , , Ω ) such that their skeletons
are isomorphic with respect to relation  , their composition  =  ⊕  agrees on  if and only
if:
1. for all transitions  ∈ , ′ ∈ , a place  ∈  exists such that {(, ), (, ′)} ⊆  or
{(′, ), (, )} ⊆  if and only if  () = ′;
2. all transitions in the postset of a place have the same sign, i.e., for all places  ∈  , we
have: sign(1) = sign(1) for all transitions 1, 2 ∈ ∙ ;
3. for all markings  ∈ ℛ((), ) and non-empty firing sequences  ∈  * such that
((), )[ ⟩((), ), transitions ,  ∈  exist such that sign() = ! and sign() = !.
Theorem 1 (Soundness of Isomorphic S-Nets [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]). Let  and  be two S-Nets such that their
skeletons are isomorphic with respect to relation  , and their composition  ⊕  agrees on  . Then
 ⊕  is sound.
        </p>
        <p>In the remainder of this section, we translate these results of Open Nets to choreographies.
We say a choreography is well-behaving if:
1. it has two participants;
2. it contains exactly one start event and one end event;
3. all activities are on a path from the start event to the end event;
4. all activities have exactly one input and one output arc;
5. all its gateways are XOR, i.e., the choreography does not contain any parallellism;
6. all activities directly after an XOR gateway have the same sending participant;
7. in any loop each participant sends at least one message;
. In other words, the translation of a well-behaving choreography results in an S-Net.
Theorem 2. A well-behaving choreography is sound.</p>
        <p>Proof. Let  and  be the two participants of the choreography. By rules 2-5, the transformation
rules of Table 1 return a state machine net  . By step 2 of the algorithm, two participant nets
 and  are constructed. As these nets are both isomorphic with  , and hence,  and
 are isomorphic as well. By steps 3 and 4 of the algorithm, any message place is between
two isomorphic transitions, thus satisfying the first condition of Definition 5. Rules 6 and 7 of
well-behaving choreographies correspond to the second and third condition of Definition 5.
Hence, the composition  ⊕  agrees on the isomorphism, and thus  ⊕  is sound.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Interaction-oriented Architectures</title>
      <p>Choreographies describe all allowed conversations between a set of participants. In a software
system, not all software elements participate in all conversations, and many conversations
are repeated frequently, for example to send regular notifications. Architects typically model
these smaller “subconversations” rather than creating a large model that contains all possible
interactions. Creating such a model is very tedious and error-prone. In addition, verification
becomes very expensive as the many interleavings of independent conversations result in a state
explosion. Therefore, we propose Interaction Oriented Architecture (INORA), a a systematic
approach to design and analyze complex interactions between software elements. INORA allows
for modeling both the static and dynamic aspects in one model. It consists of an Interaction
Model and a set of Protocols.</p>
      <p>The meta model of INORA is presented in Fig. 4. It consists of three parts: the Interaction
Model, the BPMN Choreography Diagrams, and the Representation, i.e., the views created by
the architect.</p>
      <p>lnteraction Oriented</p>
      <p>Architecture
.</p>
      <p>.</p>
      <p>parent
_, O.*represents.- 1..1
◄
►
-.iOn.s*tance
of -1..1
.</p>
      <sec id="sec-4-1">
        <title>4.1. Interaction Model</title>
        <p>The Interaction Models allows for defining the organization of components and displaying the
allowed interactions between those components. It provides an overview of the organization and
the interactions in the system to create a clear picture of the system as a whole. An Interaction
Model consists of zero or many containers. A container is either composite, i.e., it contains one
or more other containers, or it is atomic, i.e., it contains one or more functions (C2). We define
the parent, where parent( a , b ) entails that  is the parent of . The container cannot contain
itself or any of its parents (C1). The Interaction Model references zero or more protocols. A
protocol has at least two roles.</p>
        <p>Protocols can be re-used between diferent functions. Therefore, we introduce the concept
protocol instance, which refers to a protocol. functions can participate in a protocol instance in
a role as defined by the corresponding protocol. Only one participant can instantiate a protocol
instance (C3). This results in the following constraints on the meta model:</p>
        <sec id="sec-4-1-1">
          <title>C1 The transitive closure of  is irreflective;</title>
          <p>C2 A Container can either contain other Containers or one or multiple Functions;
Component 1</p>
          <p>Component 1
F1
A
F2</p>
          <p>F4
C
F3</p>
          <p>F1
A
F2</p>
          <p>F4
C
F3
B</p>
          <p>B
i : {B}
i : {C}
Component 2</p>
          <p>Component 3</p>
          <p>Component 2</p>
          <p>Component 3</p>
          <p>C3 At most one Participant can instantiate a Protocol Instance.</p>
          <p>An Interaction Model contains zero or more Protocols. A protocol is defined as a Choreography
consisting of a set of Activities and zero or more events. Each Activity contains two roles: a
sender and a receiver. An event refers to the execution of another protocol, and thus allows for
a hierarchy of protocols that are being executed to fulfill a protocol. Protocols can be expressed
in any modeling language that allows for the following concepts:</p>
        </sec>
        <sec id="sec-4-1-2">
          <title>1. A message with a sender and a receiver.</title>
          <p>2. A notion of choices in the execution path of the protocol.
3. A modeling element that can represent a using-relation or another protocol.</p>
          <p>INORA supports having multiple views or representations of a single Interaction Model
definition. Formally, an Interaction Model can be represented by zero or more Views. Each view
contains zero or more Nodes. This allows us to hide certain nodes from a view. It is, for example,
possible to hide entire containers in a view to only show a certain part of the system.</p>
        </sec>
      </sec>
      <sec id="sec-4-2">
        <title>4.2. Notation and Semantics</title>
        <p>Figure 5 shows a view of an Interaction Model. The view depicts three containers: Component
1, Component 2 and Component 3. Component 1 consists of 2 functions,  1 and  4. Function
 1 participates with function  2 of Component 2 in protocol , function  2 participates in
protocol  with function  3 of Component 3. Function  4 also participates with function  3,
in protocol . In INORA, we assume all protocol compositions to be trees. In other words, if a
function participates in two protocols, the function is duplicated for each protocol, as shown in
the right hand side of Fig. 5.</p>
        <p>
          Events are used to model a hierarchical composition of choreographies, as shown in Fig. 6. As
we only allow trees of choreographies, functions do not depend on each other, thus ensuring no
cyclic dependencies can occur. In this way, INORA allows for compositional verification of the
system. As each refined protocol only communicates with other functions, a tree is constructed
following the principles as defined in [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]. Consequently, if each of the protocols is sound, the
complete interaction model is sound.
        </p>
        <p>Can
Check-in
Cannot
Check-in</p>
        <p>PTC System - Auth</p>
        <p>M: OK
Trip Terminal - Auth
PTC System - Auth
M: Insuff. Balance
Trip Terminal - Auth
Protocol D End</p>
        <p>Protocol D Start</p>
        <p>Trip Terminal - Auth
M : RMeeqsuseasgteCMhe1ck-in
PTC System - Auth</p>
        <p>Handle Auth
Trip Terminal - Auth requests check-in from PTC System - Auth</p>
        <p>Unauthorised
PTC System - Auth
Authorized
M : Authorised
Trip Terminal - Auth</p>
        <p>Protocol B
PTC System - Auth
M M:ResesgaisgterMT1rip
PTC System - Trip</p>
        <p>Get Trip</p>
        <p>OK
Insuff.</p>
        <p>Balance</p>
        <p>PTC System - Auth
M : Error message</p>
        <p>Trip Terminal - Auth
PTC System - Trip
M: Can check-in
PTC System - Auth
PTC System - Trip
M: Cannot check-in</p>
        <p>PTC System - Auth
Protocol B Start
Protocol B End</p>
      </sec>
      <sec id="sec-4-3">
        <title>4.3. Tool Support</title>
        <p>To support the translation and verification methods, a tool has been developed: INORA2 2. The
tool ofers the following main functionalities:
1. modeling the interaction model (Fig. 7);
2. modeling and maintaining protocols as choreographies (Fig. 8);
3. automatically generating Petri nets and choreography trees;
4. running an step-wise analysis chain to verify whether protocol compositions are “correct”
(Fig. 9).</p>
        <p>A user generally creates or loads a project, after which the interaction model must be
populated. The interaction model is the core of the project, as it creates the functionalities and
their components, and defines the hierarchy between them. Protocols are the detailed views
for each arc in the interaction models. Both these models can be modeled out in INORA2. The
tool also ofers quality-of-life features to help users quickly draw out the interaction flows in
2The tool is freely available from: https://git.science.uu.nl/interaction-oriented-architecture</p>
        <p>BPMN choreography format. When both the interaction model is (partially) populated, and the
necessary protocols are modeled out the user can kick-of an analysis.</p>
        <p>
          The tool first tries to do a static analysis on the choreography, before it uses LoLA [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]
to analyse the translated Petri net. The analysis window starts a chain of events. First, it
creates the composition. Using the protocol on which the analysis is run as a starting position,
it constructs the reference tree by recursively finding all protocols that can be reached by
reference. All of the referred protocols need to be sound for the composition to be sound.
Therefore, let  be a composition referring to protocol B, all protocols in the composition
 = {, }, () = {( → )} are checked for soundness.
        </p>
        <p>Secondly, the syntax of the protocol is checked. The tool checks for example whether each
protocol has a single start and end event, and whether all activities have a single input and
output arc. If all constraints hold, the semantics of the protocol is checked. Then, INORA2 tries
to generate a choreography tree. This proves correctness by construction. The protocol does
need to conform to very strict additional constraints, so the generation of the tree may fail if
there is a violation of the constraints.</p>
        <p>The last step is to translate the choreography to a Petri net and verify their correctness using
DAME LoLA. It sends the Petri net to DAME LoLA and runs a list of formulae. For the first
version of INORA2, the decision was made to only check for weak termination. Let  be all the
places in a Petri net and Ω ⊂  all places that are end-event outputs, the formula used is:
( (∀ ∈ Ω : () = 1 ∧ ∀ ∈  ∖ Ω : () = 0))
Finally, a conclusion is drawn on the soundness of the protocol. In case the protocol is not
sound, the architect can analyse the underlying Petri net, as shown in Fig. 9.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusions</title>
      <p>In this paper, we propose Interaction-Oriented Architectures to model a system of
asynchronously communicating systems. In an Interaction-Oriented Architecture, the
communication between software elements is modeled using choreographies. The interaction model
consists of a set of choreographies, such that if each of the choreographies is sound, the overall
interaction model is sound. To analyse the choreographies, we rely on Open Nets. We show that
if choreographies are well-behaving, a sound realisation exists, i.e., based on the structure of
the choreography, a sound realisation can be derived. The approach is implemented in the tool
INORA2, which supports the architect to design interaction models and choreographies. Under
the hood, the tool uses both syntax checkers as well as LoLA to verify correctness. The tool
demonstrates that it is feasible to use these techniques in modelers. Currently, the implemented
checks are limited to checking for weak termination: checking if all tokens from the initial
marking eventually always end up in all the end places, without any lingering tokens. There is
a wide variety of possible model-checking formulas, such as proper completion. In the future,
we want to extend the tool to allow the architect to define and verify their own, additional
formulae.</p>
      <p>As the tool shows, it is feasible to automatically model-check interaction models and their
protocols. Though the steps, translations, and evaluations seem correct, we have not conducted
a case study or consulted professionals for their opinions. The developed tools (INORA2 and
DAME LoLA) are currently released as educational tools. Although they are developed with
usability in mind, it is not professionally developed software.</p>
      <p>A limitation of the study is the visual representation of the generated feedback. We have
achieved a way to automatically translate, verify and display it outcomes in the INORA tool,
yet it lacks a way to display the information on the diagram itself. Although LoLA provides
an evidence path, and our mapping can translate this to a firing sequence in the translated
model, no visualisations exist that display the Petri net firing sequence on top of a choreography.
Providing more advanced feedback by translating the results of formal analysis techniques to
the architect is an essential next step.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>L.</given-names>
            <surname>Bass</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Clements</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Kazman</surname>
          </string-name>
          ,
          <article-title>Software architecture in practice</article-title>
          , Addison-Wesley
          <string-name>
            <surname>Professional</surname>
          </string-name>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>N.</given-names>
            <surname>Rozanski</surname>
          </string-name>
          , E. Woods,
          <article-title>Software systems architecture: working with stakeholders using viewpoints and perspectives</article-title>
          , Addison-Wesley,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>S.</given-names>
            <surname>Brinkkemper</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Pachidi</surname>
          </string-name>
          ,
          <article-title>Functional architecture modeling for the software product industry</article-title>
          , in: M. A.
          <string-name>
            <surname>Babar</surname>
          </string-name>
          , I. Gorton (Eds.),
          <source>ECSA</source>
          <year>2010</year>
          , volume
          <volume>6285</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2010</year>
          , pp.
          <fpage>198</fpage>
          -
          <lpage>213</lpage>
          . URL: https://doi.org/10.1007/978-3-
          <fpage>642</fpage>
          -15114-9_
          <fpage>16</fpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>642</fpage>
          -15114-9\_
          <fpage>16</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>I.</given-names>
            <surname>Malavolta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Lago</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Muccini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Pelliccione</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Tang</surname>
          </string-name>
          ,
          <article-title>What industry needs from architectural languages: A survey</article-title>
          ,
          <source>IEEE Trans. Software Eng</source>
          .
          <volume>39</volume>
          (
          <year>2013</year>
          )
          <fpage>869</fpage>
          -
          <lpage>891</lpage>
          . URL: https://doi.org/10.1109/TSE.
          <year>2012</year>
          .
          <volume>74</volume>
          . doi:
          <volume>10</volume>
          .1109/TSE.
          <year>2012</year>
          .
          <volume>74</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>J. M. E. M. van der Werf</surname>
          </string-name>
          , E. Kaats,
          <article-title>Discovery of functional architectures from event logs</article-title>
          , in: D.
          <string-name>
            <surname>Moldt</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Rölke</surname>
          </string-name>
          , H. Störrle (Eds.),
          <source>International Workshop on Petri Nets and Software Engineering (PNSE'15)</source>
          , volume
          <volume>1372</volume>
          <source>of CEUR Workshop Proceedings, CEUR-WS.org</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>227</fpage>
          -
          <lpage>243</lpage>
          . URL: https://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>1372</volume>
          /paper13.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>G.</given-names>
            <surname>Decker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Weske</surname>
          </string-name>
          ,
          <article-title>Interaction-centric modeling of process choreographies</article-title>
          ,
          <source>Inf. Syst</source>
          .
          <volume>36</volume>
          (
          <year>2011</year>
          )
          <fpage>292</fpage>
          -
          <lpage>312</lpage>
          . URL: https://doi.org/10.1016/j.is.
          <year>2010</year>
          .
          <volume>06</volume>
          .005. doi:
          <volume>10</volume>
          .1016/j.is.
          <year>2010</year>
          .
          <volume>06</volume>
          .005.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>K.</given-names>
            <surname>Wolf</surname>
          </string-name>
          ,
          <article-title>Petri net model checking with lola 2</article-title>
          , in: International
          <source>Conference on Applications and Theory of Petri Nets and Concurrency</source>
          , Springer,
          <year>2018</year>
          , pp.
          <fpage>351</fpage>
          -
          <lpage>362</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>P.</given-names>
            <surname>Massuthe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Serebrenik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Sidorova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Wolf</surname>
          </string-name>
          ,
          <article-title>Can i find a partner? undecidability of partner existence for open nets</article-title>
          ,
          <source>Information Processing Letters</source>
          <volume>108</volume>
          (
          <year>2008</year>
          )
          <fpage>374</fpage>
          -
          <lpage>378</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>W. M. P. van der Aalst</surname>
            , N. Lohmann,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Massuthe</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Stahl</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Wolf</surname>
          </string-name>
          ,
          <article-title>Multiparty contracts: Agreeing and implementing interorganizational processes</article-title>
          ,
          <source>Comput. J</source>
          .
          <volume>53</volume>
          (
          <year>2010</year>
          )
          <fpage>90</fpage>
          -
          <lpage>106</lpage>
          . URL: https://doi.org/10.1093/comjnl/bxn064. doi:
          <volume>10</volume>
          .1093/comjnl/bxn064.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>M. D. McIlroy</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Buxton</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Naur</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Randell</surname>
          </string-name>
          ,
          <article-title>Mass-produced software components</article-title>
          ,
          <source>in: Proceedings of the 1st international conference on software engineering</source>
          , Garmisch Pattenkirchen, Germany,
          <year>1968</year>
          , pp.
          <fpage>88</fpage>
          -
          <lpage>98</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>J. M. E. M. van der Werf</surname>
          </string-name>
          ,
          <article-title>Compositional verification of asynchronously communicating systems</article-title>
          , in: I.
          <string-name>
            <surname>Lanese</surname>
          </string-name>
          , E. Madelaine (Eds.),
          <source>Formal Aspects of Component Software - 11th International Symposium, FACS</source>
          <year>2014</year>
          , Bertinoro, Italy,
          <source>September 10-12</source>
          ,
          <year>2014</year>
          , Revised Selected Papers, volume
          <volume>8997</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2014</year>
          , pp.
          <fpage>49</fpage>
          -
          <lpage>67</lpage>
          . URL: https://doi.org/10.1007/978-3-
          <fpage>319</fpage>
          -15317-
          <issue>9</issue>
          _4. doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>319</fpage>
          -15317-9\_4.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>K.</given-names>
            <surname>Wolf</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Stahl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Weinberg</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Ott</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Danitz</surname>
          </string-name>
          ,
          <article-title>Guaranteeing weak termination in service discovery</article-title>
          ,
          <source>Fundam. Informaticae</source>
          <volume>108</volume>
          (
          <year>2011</year>
          )
          <fpage>151</fpage>
          -
          <lpage>180</lpage>
          . URL: https://doi.org/10.3233/ FI-2011-417. doi:
          <volume>10</volume>
          .3233/FI-2011-417.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>K.</given-names>
            <surname>Wolf</surname>
          </string-name>
          ,
          <article-title>Does my service have partners?, Transactions on Petri Nets and Other Models of Concurrency II: Special Issue on Concurrency in Process-Aware Information Systems (</article-title>
          <year>2009</year>
          )
          <fpage>152</fpage>
          -
          <lpage>171</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>K. M. van Hee</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Sidorova</surname>
          </string-name>
          ,
          <string-name>
            <surname>J. M. E. M. van der Werf</surname>
          </string-name>
          ,
          <article-title>Construction of asynchronous communicating systems: Weak termination guaranteed!</article-title>
          , in: B.
          <string-name>
            <surname>Baudry</surname>
          </string-name>
          , E. Wohlstadter (Eds.),
          <source>Software Composition - 9th International Conference, SC@TOOLS</source>
          <year>2010</year>
          , Malaga,
          <source>Spain, July 1-2</source>
          ,
          <year>2010</year>
          . Proceedings, volume
          <volume>6144</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2010</year>
          , pp.
          <fpage>106</fpage>
          -
          <lpage>121</lpage>
          . URL: https://doi.org/10.1007/978-3-
          <fpage>642</fpage>
          -14046-
          <issue>4</issue>
          _8. doi:
          <volume>10</volume>
          . 1007/978-3-
          <fpage>642</fpage>
          -14046-4\_8.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>N.</given-names>
            <surname>Lohmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Wolf</surname>
          </string-name>
          ,
          <article-title>Decidability results for choreography realization</article-title>
          , in: G. Kappel,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Maamar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. R. M.</given-names>
            <surname>Nezhad</surname>
          </string-name>
          (Eds.),
          <source>Service-Oriented Computing - 9th International Conference, ICSOC</source>
          <year>2011</year>
          , Paphos, Cyprus, December 5-
          <issue>8</issue>
          ,
          <issue>2011</issue>
          <year>Proceedings</year>
          , volume
          <volume>7084</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2011</year>
          , pp.
          <fpage>92</fpage>
          -
          <lpage>107</lpage>
          . URL: https://doi.org/10. 1007/978-3-
          <fpage>642</fpage>
          -25535-
          <issue>9</issue>
          _7. doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>642</fpage>
          -25535-9\_7.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>J.</given-names>
            <surname>Mendling</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. A.</given-names>
            <surname>Reijers</surname>
          </string-name>
          , W. M. van der Aalst,
          <article-title>Seven process modeling guidelines (7pmg)</article-title>
          ,
          <source>Information and software technology 52</source>
          (
          <year>2010</year>
          )
          <fpage>127</fpage>
          -
          <lpage>136</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>F.</given-names>
            <surname>Abouzaid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Mullins</surname>
          </string-name>
          ,
          <article-title>Formal specification of correlation in WS orchestrations using bp-calculus</article-title>
          ,
          <source>in: Proceedings of the 5th International Workshop on Formal Aspects of Component Software, FACS</source>
          <year>2008</year>
          , Malaga, Spain,
          <source>September 10-12</source>
          ,
          <year>2008</year>
          , volume
          <volume>260</volume>
          of Electronic Notes in Theoretical Computer Science, Elsevier,
          <year>2008</year>
          , pp.
          <fpage>3</fpage>
          -
          <lpage>24</lpage>
          . URL: https: //doi.org/10.1016/j.entcs.
          <year>2009</year>
          .
          <volume>12</volume>
          .029. doi:
          <volume>10</volume>
          .1016/j.entcs.
          <year>2009</year>
          .
          <volume>12</volume>
          .029.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>H. A.</given-names>
            <surname>Le</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Truong</surname>
          </string-name>
          ,
          <article-title>Modeling and verifying WS-CDL using event-b, in: Context-Aware Systems</article-title>
          and Applications - First International Conference, ICCASA 2012,
          <article-title>Ho Chi Minh City</article-title>
          , Vietnam,
          <source>November 26-27</source>
          ,
          <year>2012</year>
          , Revised Selected Papers, volume
          <volume>109</volume>
          <source>of Lecture Notes of the Institute for Computer Sciences, Social Informatics and Telecommunications Engineering</source>
          , Springer,
          <year>2012</year>
          , pp.
          <fpage>290</fpage>
          -
          <lpage>299</lpage>
          . URL: https://doi.org/10.1007/978-3-
          <fpage>642</fpage>
          -36642-0_
          <fpage>29</fpage>
          . doi:
          <volume>10</volume>
          . 1007/978-3-
          <fpage>642</fpage>
          -36642-0\_
          <fpage>29</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>R. M. Dijkman</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Dumas</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Ouyang</surname>
          </string-name>
          ,
          <article-title>Semantics and analysis of business process models in BPMN, Inf</article-title>
          . Softw. Technol.
          <volume>50</volume>
          (
          <year>2008</year>
          )
          <fpage>1281</fpage>
          -
          <lpage>1294</lpage>
          . URL: https://doi.org/10.1016/j.infsof.
          <year>2008</year>
          .
          <volume>02</volume>
          .006. doi:
          <volume>10</volume>
          .1016/j.infsof.
          <year>2008</year>
          .
          <volume>02</volume>
          .006.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>I.</given-names>
            <surname>Raedts</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Petkovic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y. S.</given-names>
            <surname>Usenko</surname>
          </string-name>
          ,
          <string-name>
            <surname>J. M. E. van der Werf</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. F.</given-names>
            <surname>Groote</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. J.</given-names>
            <surname>Somers</surname>
          </string-name>
          ,
          <article-title>Transformation of bpmn models for behaviour analysis</article-title>
          .,
          <source>MSVVEIS</source>
          <year>2007</year>
          (
          <year>2007</year>
          )
          <fpage>126</fpage>
          -
          <lpage>137</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>K.</given-names>
            <surname>Wolf</surname>
          </string-name>
          ,
          <article-title>Decidability issues for decentralized controllability of open nets</article-title>
          , in: M.
          <string-name>
            <surname>Schwarick</surname>
          </string-name>
          , M. Heiner (Eds.),
          <source>Proceedings of the 17th German Workshop on Algorithms and Tools for Petri Nets</source>
          , Cottbus, Germany,
          <source>October 07-08</source>
          ,
          <year>2010</year>
          , volume
          <volume>643</volume>
          <source>of CEUR Workshop Proceedings, CEUR-WS.org</source>
          ,
          <year>2010</year>
          , pp.
          <fpage>124</fpage>
          -
          <lpage>129</lpage>
          . URL: https://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>643</volume>
          /paper14. pdf.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <surname>K. M. van Hee</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Sidorova</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Voorhoeve</surname>
          </string-name>
          ,
          <article-title>Soundness and separability of workflow nets in the stepwise refinement approach</article-title>
          ,
          <source>in: Applications and Theory of Petri Nets</source>
          <year>2003</year>
          , 24th International Conference, ICATPN 2003,
          <article-title>Eindhoven, The Netherlands</article-title>
          , June 23-27,
          <year>2003</year>
          , Proceedings, volume
          <volume>2679</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2003</year>
          , pp.
          <fpage>337</fpage>
          -
          <lpage>356</lpage>
          . URL: https://doi.org/10.1007/3-540-44919-1_
          <fpage>22</fpage>
          . doi:
          <volume>10</volume>
          .1007/3-540-44919-1\_
          <fpage>22</fpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>