<!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>Towards Continuous Evolution through Automatic Detection and Correction of Service Incompatibilities</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Benny Akesson</institution>
        </aff>
      </contrib-group>
      <fpage>65</fpage>
      <lpage>72</lpage>
      <abstract>
        <p>-Systems with long life times need to continuously evolve after deployment in response to changing technology and business needs. Lacking this ability not only prevents systems from quickly reacting to these changes, but also increases risk, as many small updates are collected into big infrequent upgrades. Service-oriented architectures support continuous evolution by decoupling the application from a particular product, technology, and implementation using service interfaces that hide the component implementing the service. However, this arrangement results in a large number of possible interactions between different components and versions, making it difficult and time-consuming to detect and correct incompatibilities caused by updating service interfaces. This paper has three main contributions towards enabling continuous evolution in service-oriented architectures: 1) the state-of-the-art in the areas of specification of service interfaces, and detection and correction of incompatible service interactions is surveyed, 2) directions for a methodology to detect and correct incompatible interactions that is currently under development are discussed, and 3) the methodology is discussed in the context of a simplified industrial case study from the defense domain.</p>
      </abstract>
      <kwd-group>
        <kwd>Continuous Evolution</kwd>
        <kwd>Model-based Engineering</kwd>
        <kwd>Service-oriented Architecture</kwd>
        <kwd>Compatibility</kwd>
        <kwd>Adapter Generation</kwd>
        <kwd>Interface Specification</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Complex systems need to continuously evolve, both during
development and after they have been deployed. This is often
in response to changing business needs, e.g. market trends,
competition, legislation, industry roadmaps, and customer
requirements. Evolution can also be driven by changes in
technology, such as introduction of new technology,
standardization, and new interoperability requirements. The need to
continuously evolve is particularly important for systems with
long life time, e.g. in the defense domain [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]–[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Lacking
the ability to handle change efficiently results in systems that
evolve slowly, as many smaller updates are collected into
big risky upgrades, once every 10-15 years, that are largely
driven by the need to counter obsolescence. Such upgrades are
expensive and time-consuming and may require the system to
be taken out-of-service for several years.
      </p>
      <p>The required efficiency and flexibility to address continuous
evolution of complex and dynamic systems is facilitated by
componentization and service-oriented architectures.
Componentization implies breaking down large monolithic
applications into smaller component-based applications. This enables
more efficient system development by separating concerns,
reducing testing and maintenance costs, and facilitating reuse
between products. Flexibility can be provided by
serviceoriented architectures, where components provide and require
services corresponding to a particular functionality. This
allows applications to declare the services they depend on
without knowing which components provide them, since all
components providing a service must implement the same
service interface. The notion of services supports continuous
evolution by decoupling the application from a particular
product, technology, and implementation. The service
dependencies are resolved at run-time by a service framework, allowing
applications to declare their needs dynamically depending
on the situation. Run-time resolution of dependencies also
allows newer versions of components, or even completely new
components, to provide a service needed by an old application.</p>
      <p>While componentization and service-oriented architectures
facilitate continuous evolution of systems, it is not without
associated challenges. Having a system built from a large
number of services that are reused across many products makes
updating services difficult. The components implementing the
service must be updated to reflect changes to the interface, but
the main challenge is to detect and correct incompatibilities
for all components of different versions that may depend on
the service. This issue slows down the evolution of systems
based on service-oriented architectures.</p>
      <p>
        This paper presents initial applied research towards
improving continuous evolution in service-oriented architectures by
addressing the problem of detecting and correcting
incompatible service updates. The paper has three main contributions:
1) A survey of the state-of-the-art in the areas of interface
specification, and detection and correction of
incompatible services
2) Directions for a methodology to detect and correct
component incompatibilities that is currently being developed
is presented. It includes modelling both the structure
and behavior in service interfaces, which enables the
use of formal analysis techniques, in our case based on
Open (Petri) Nets [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], to automatically detect and correct
incompatibilities after a service update.
3) The methodology is discussed in the context of a running
example based on a simplified industrial case study of a
service in a radar system.
      </p>
      <p>The rest of this paper is structured as follows. Section II
introduces the industrial case study that provides the context
of this work. The state-of-the-art in relevant areas is surveyed
in Section III. Section IV then describes the directions for our
methodology to detect and correct incompatibilities. Lastly,
conclusions are drawn in Section V.</p>
    </sec>
    <sec id="sec-2">
      <title>II. CASE STUDY</title>
      <p>This section presents the industrial case study considered in
this work. First, we introduce the service-oriented architecture
in Section II-A, followed by an example service from a radar
system requiring an update in Section II-B.</p>
      <p>Copyright © 2019 for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0).</p>
      <sec id="sec-2-1">
        <title>A. Service-Oriented Architecture</title>
        <p>
          A service-oriented software architecture for complex
distributed and evolving systems, based on the open Intelligent
Robust Architecture for Time Critical Systems (INAETICS) [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ],
provides the context of this work. We continue by introducing
a somewhat simplified terminology related to this architecture.
        </p>
        <p>A system based on the INAETICS architecture provides
functionality by executing one or more independent applications.
Applications are a dynamically combined collection of
independent components. A large application, such as a multi-face
radar, may have thousands of such components. Components
can only be accessed through their defined services, which can
be provided either through remote procedure calls or message
passing. In the former case, the service interface is formally
specified by a number of method signatures. In the latter
case, which is the focus of this work, it is formally specified
using message interfaces that define sets of valid message
types. The protocol behavior is not formally specified in the
service interface in either case, but is represented in code and
documentation.</p>
        <p>Messages in the INAETICS architecture can be sent either
synchronously or asynchronously. In the synchronous case, the
component sending a message blocks until it has received
a response. In contrast, asynchronous communication posts
messages in a message queue, which allows the component
to continue executing immediately after sending a message.
In this case, the component checks its message queue for
incoming messages at appropriate times during its execution.</p>
      </sec>
      <sec id="sec-2-2">
        <title>B. Example Service</title>
        <p>This work considers a case study based on a service in
a radar system. The service has been somewhat simplified
for ease of presentation. For reasons of confidentiality, we
refer to the service as PeriodicTask. The PeriodicTask service
schedules an optional task to be performed by the radar
system periodically. The client component using the service
can specify a maximum budget that has to be considered
by the radar system when performing the task to prevent it
from spending too many resources on it. The budget actually
used by the radar when executing the PeriodicTask service
should be less than or equal to the specified maximum budget.
PeriodicTask periodically reports the actual used budget back
to the client.</p>
        <p>The PeriodicTask service communicates asynchronously
with client components. The provided service interface is
defined in terms of message types and protocol behavior, as
illustrated by the communicating finite state machine (FSM)
in Figure 1. In the figure, a label -x represents a message
of type x being sent and +x received, respectively. As seen
in the figure, a client component sends the PTON command
message, specifying the maximum budget as an argument.
PeriodicTask responds to this command by sending the
PTSTATE response message with a status argument ACK back
to the client, acknowledging the reception of the command.
Now that PeriodicTask is activated and scheduled by the radar
system, it periodically reports its used budget to the client.
The same PTSTATE response message is used to report this
UPDATE status, along with the actually used budget. When
PeriodicTask is no longer required, the client can turn it off
by sending the PTOFF signal. PeriodicTask responds to this
command by sending the ACK response to the client. While
in the ON state. it can also receive a new PTON message with
a different maximum budget.</p>
        <p>As described above, the current version of the PeriodicTask
service uses the PTSTATE response message for two different
purposes: 1) reporting status information to the client, and 2)
periodically reporting the used budget. This has the
disadvantage that the ACK response message, which only acknowledges
the reception of a command, also has to report a used budget
value even though it does not have a valid value yet. In
this case, a used budget value of -1 is reported to signal
that the value should not be considered. A better solution
would be to introduce a separate PTPERFORMANCE message
for periodically reporting the used budget and to remove it
from the PTSTATE message. However, changing the service
interface in this way would cause incompatibility with all
components using the service. We will use this service update
as a running example through this paper and discuss how
the compatibility issue can be efficiently resolved, promoting
continuous evolution of the system.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>III. STATE-OF-THE-ART</title>
      <p>Before presenting the directions for our proposed
methodology for detection and correction of incompatibilities between
services and their client components, we review the
state-ofthe-art in related areas. First, we briefly discuss what it actually
means to be (in)compatible in Section III-A. Section III-B
then discusses related work on interface specification, before
methods for detection and correction of incompatibilities are
surveyed in Section III-C.</p>
      <sec id="sec-3-1">
        <title>A. Compatibility</title>
        <p>
          Compatibility between services and their client components
may be defined in many different ways, but two kinds of
compatibility are widely recognized and distinguished in the
literature [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]–[
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]:
1) Structural compatibility means that messages specified
in the service interface, and their constituent fields,
match those used by the client component in terms of
name, type, and semantics. A similar notion of structural
compatibility exists for services implemented through
remote procedure calls, i.e. assuming matching names,
parameters, and types in method signatures. Structural
incompatibility may cause a client component to fail
because of a type error or cause incorrect functional
behavior if a compatible data type with, e.g. different
precision, is used.
2) Behavioral compatibility means that the service and the
client components agree on the protocol, i.e. the ordering
requirements between messages or method calls.
Behavioral incompatibility may affect functional correctness,
e.g. through deadlock, livelock, or message loss.
        </p>
        <p>Applying this terminology to the PeriodicTask service in
Section II-B reveals that the proposed update to the service
interface causes both structural and behavioral incompatibility
for the client components. The structural incompatibility is
caused by separating parts of the PTSTATE message into a
separate PTPERFORMANCE message. The new message type
affects the protocol of the service, causing a related behavioral
change.</p>
        <p>To be able to (semi-)automatically detect and correct both
types of incompatibilities, we need to be able to formally
specify both structure and behavior in service interfaces.
Existing approaches for this are surveyed in the next section.</p>
      </sec>
      <sec id="sec-3-2">
        <title>B. Interface Specification</title>
        <p>
          An important part of detecting incompatibilities is to have
good means to specify and validate conformance with the
service interface. Interfaces have been modeled in many
programming, specification, and modelling languages over the years.
In fact, a recent survey of the state-of-the-practice of
ModelBased Engineering (MBE) in the embedded systems domain
suggests that modelling interfaces is one of the most common
functional aspects covered by current industrial applications of
MBE, with structural aspects being more commonly specified
than behavioral ones [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. This suggests that problems and
benefits related to interface specification are widely recognized
in industrial practice. Industrial interest going back a long
time is also suggested by IBM publishing in this area in the
90’s [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] and Motorola mentioning interface specification as
a part of their MBE-based development process more than a
decade ago [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ].
        </p>
        <p>
          Most interface specifications focus purely on structure. This
is the case for programming languages, such as Java and C++,
which typically specify method signatures provided by classes
implementing the interface. Similarly, many Interface
Definition Languages (IDLs), focus on purely structural aspects, such
as declaring types and method signatures, allowing them to
describe structural aspects of service interfaces. An example
of an IDL in this category is Apache Avro1, which is used in
the INAETICS architecture [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ].
        </p>
        <p>
          In contrast, there are also modelling languages and
formalisms that focus on behavior and can be used to model
the behavior of a service, or the behavior on its interface. This
includes different kinds of transition systems, such as FSMs or
Petri Nets [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. Both of these formalisms have been extended
for the case of communicating systems. Communicating Finite
State Machines [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] are a variation of regular FSMs, where
transitions have been labeled with communication actions that
indicate that a message of a particular type is being sent or
received. The model of the PeriodicTask service in Figure 1
is an example of a communicating FSM. Open (Workflow)
Nets [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] are a variation of Petri Nets that include input and
output interface places to model asynchronous messages of
different types being received and sent on the interface of
the service. Open Nets can be composed by connecting and
fusing corresponding input and output places with matching
labels (message types). If all input and output places of Open
Nets have been connected, it becomes a closed net, which is
amenable to behavioral analysis.
        </p>
        <p>
          A benefit of behavioral formalisms like communicating
FSMs and Petri Nets is that they have clear and
unambiguous semantics describing their execution. This allows
correctness properties relevant to behavioral compatibility,
such as deadlock-freedom, to be established for the models
expressed in the formalism. An important distinction between
behavioral formalisms is whether they assume synchronous
or asynchronous communication semantics. Strict synchronous
communication semantics require that state transitions in
communicating processes happen atomically [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ], [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] to ensure
that the state of the system is always consistent. Synchronous
communication does not assume any message queues, so it is
essential for deadlock-freedom that communicating services
are designed such that one process is always ready to receive
at least one message sent by the other.
        </p>
        <p>
          The main benefit of synchronous communication semantics
is that they are easier to analyze and validate than the
asynchronous case [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ], [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. A reason for this is that
deadlockfreedom is undecidable in the asynchronous case, unless there
are guarantees that all messages sent by the processes can be
buffered in a message queue until they are received. This in
turn requires the maximum number of messages present at any
time in the message queue to be bounded, and the message
queue to be dimensioned accordingly, creating a dependency
on the underlying platform. However, synchronous
communication semantics also have a dependency on the system as
they require these semantics to be supported in the system
under analysis. This requirement may or may not be satisfied
for a given system, and may be an undesirable constraint for
systems that are built from scratch.
        </p>
        <p>
          There are also MBE approaches that specify both structure
and behavior of components. An industrial MBE approach
to ensure correct behavior of software in light of changing
components and interfaces is to apply the formal technique
Dezyne, previously known as Analytical Software Design
(ASD), supported by tools from the company Verum2. In
Dezyne, interfaces and software designs are modelled as state
machines. The Verum toolset supports model checking to
ensure freedom of deadlock, livelock, race conditions, and
that all components are compliant with their interfaces. Code
can be generated from the models, creating a link from
specification to implementation of correct code. The benefits
and limitations of this approach have been evaluated in case
studies at Philips [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ], [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ]. The main results suggest that
the Verum approach improved defect density and software
productivity compared to industrial standards. It was also
concluded that the developed components were stable and
reliable against frequent changes in requirements. The main
limitation of the approach is that it only applies to event-based
control components, as it does not support data-dependent
behavior. It furthermore requires careful component design to
avoid state-space explosion that prevents the model checking
from completing in reasonable time.
        </p>
        <p>
          Component Modelling and Analysis (ComMA)3 is another
MBE approach developed in an industrial context that models
both structure and behavior of components [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ], [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]. The
ComMA approach addresses the issue of system errors being
caused by components that are not compliant with their
interfaces. This is done through a modular and reusable set
of Domain-Specific Languages (DSLs) for specifying interface
signatures, behavior, timing, and data constraints. These DSLs,
which are implemented in Xtext4, are used in several phases of
the design process. In early phases, transformations to UML
diagrams enable visualization of behavior, providing early
feedback. Later phases benefit from generation of middleware
code and synthesized monitors that verify compliance with
the interface. The latter is done by providing execution traces
to the monitor, which checks whether the events and their
associated data values and timings are valid according to the
interface specification for the current state of the component.
        </p>
        <p>
          ComMA interfaces can be specified manually or supported
by tooling that reverse-engineers the interface model from a set
of valid execution traces [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. Although the former method is
suitable in environments where components are modeled from
scratch, the latter is helpful when introducing the approach
in environments with a large number of legacy components.
It is also possible to automatically generate both ComMA
and Dezyne models from Rhapsody models [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ], providing
a migration path for users of that tool. A key differentiator
between ComMA and Dezyne is that ComMA only specifies
and verifies compliance with interfaces and does not generate
or validate correct implementations. As a result, ComMA
imposes fewer restrictions on the implementation, allowing it
to be applied to a wider class of systems.
        </p>
      </sec>
      <sec id="sec-3-3">
        <title>C. Detection and Correction of Incompatibilities</title>
        <p>
          Having discussed different approaches for specifying the
structure and behavior of services and their interfaces, we
continue by looking at approaches to detect and correct
incompatibilities when a service is replaced by a newer version,
or by an alternative service. To reason about compatibility
across such replacements, a notion of substitutability is defined
for communicating FSMs in [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. Substitutability is a relation
between two services that represents whether some notion
of compatibility with partner services is preserved as the
replacement service substitutes the original. Two types of
substitutability are distinguished: 1) context-dependent, which
focuses on compatibility between a particular pair of services,
and 2) context-independent, where compatibility has to be
preserved for all possible services that were compatible with
the original. Intuitively, two services are substitutable if their
interfaces are structurally compatible and if they are
observationally indistinguishable [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] from each other. This means that
there may be internal differences in behavior, but that these
are completely transparent to an outside observer. The concept
of context-free substitutability is similar to the notion of
accordance, defined for Open Nets in [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ], although this notion
limits compatibility to consider deadlock-free execution.
3http://comma.esi.nl/
4https://www.eclipse.org/Xtext/
        </p>
        <p>
          If incompatibility between two services has been detected,
there are three ways to correct the problem [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ]: 1) replace
one of the services with a compatible alternative, 2) change
implementation of one of the services, and 3) introduce an
adapter that mediates between them. This section focuses on
the latter option.
        </p>
      </sec>
      <sec id="sec-3-4">
        <title>1) Structural Incompatibilities: Much work on adapter gen</title>
        <p>eration has been done that considers the problem of
interoperability between services that were not explicitly developed
to interact. The problem of resolving structural
incompatibilities is strongly related to the problem of schema matching.
The schema matching problem has been widely studied and
several approaches and supporting tools, some of which are
commercial, have been developed.</p>
        <p>
          A commonality among many adapter generation approaches
is that they require some kind of mapping rules that specify
how messages sent and received by one service relate to those
of another [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]–[
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]. These mapping rules bridge
the structural differences between the services. For example,
a message sent by one service may need to be transformed
into another type, split up into multiple messages, merged
with other messages, or hidden, to ensure a structural fit
and provide correct functional behavior. This specification is
typically done manually [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ], [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ], although
semiautomatic approaches based on schema matching have been
proposed and implemented in tools [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ].
        </p>
        <p>
          A survey of work towards partial automation of schema
matching is provided in [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ]. The authors claim that full
automation is generally not possible, because most schemas
have semantics that are not expressed, or even documented.
Matchers should hence propose candidate matches between
schemas for manual review and selection. The survey presents
a taxonomy that classifies existing approaches according to
five criteria: 1) whether matching is based on the schema itself
or data values from schema instances, 2) whether matching
considers individual elements or more complex structures, 3)
whether the matchers use a linguistic approach based on
similarity of names and textual descriptions or a constraint-based
approach based on keys and relationships, 4) the cardinality of
the matching (1:1, 1:n or n:m), and 5) whether they use
auxiliary information, such as information about previous matches.
The survey concludes by discussing seven implementations
and positions them with respect to the proposed taxonomy.
        </p>
        <p>
          2) Behavioral Incompatibilities: Two methods for
determining whether two services represented as Open Nets are
in accordance are presented in [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ]. The first method is based
on projectional inheritance, which intuitively means to check
if the services are observationally indistinguishable unless the
differences between them, e.g. any newly added features, are
explicitly used. Another way too look at this is as determining
whether the updated service is a sub-protocol of the original,
in the sense familiar from object-oriented programming. This
notion of sub-protocol is also used to determine compatibility
for communicating FSMs in [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]. Projectional inheritance
between two Open Nets can be established by checking if
they are branching bi-similar. This approach is a sufficient, but
restrictive, method to verify accordance. The second approach
is a precise condition based on operating guidelines, which
is a characterization of the set of all compatible services. A
benefit of both approaches is that they do not require any
knowledge about the clients using the services, i.e. they are
context-independent.
        </p>
        <p>
          There has been a lot of work in the area of semi-automatic
correction of behavioral incompatibilities, in particular
protocol mismatches. A survey of different approaches to
generate protocol adapters is provided in [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]. A distinguishing
feature among different approaches to adapter generation is the
formalism they use to model behavior. The most commonly
used formalisms for this purpose are workflow languages [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ],
process algebras [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], communicating FSMs [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ], [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ],
Open Nets [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ], and pseudo code [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ]. The mentioned works
based on workflow languages, pseudo code, process algebras,
and Open Nets handle both synchronous and asynchronous
communication semantics, while the approaches based on
communicating FSMs only apply to the synchronous case.
        </p>
        <p>
          Most approaches to generate protocol adapters execute at
design time [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ], [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ], [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ], [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ] and produce a model
of an adapter in form of e.g. a communicating FSM or an
Open Net, that can be connected to models of the services to
make them interoperable. Although not frequently mentioned,
these models can be used as input for code generation to
generate an implementation of an adapter that connect the
two services. In contrast, [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ] proposes a service adaptation
machine that executes at run time. In essence, this machine
looks at messages that are expected to be sent and received
by the communicating services in their current state. If there
is no obvious match, it consults the set of specified mapping
rules and see if there is any rule, or even sequence of rules, that
can produce an expected message so that the interaction can
progress. A benefit of this approach is that it does not generate
a fixed adapter for a given pair of incompatible services, but
dynamically adapt between any services, given the appropriate
mapping rules. However, a drawback of the approach is that
the adaptation is best effort, as it is not possible to a priori
state whether or not the adaptation will be successful.
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>IV. DIRECTIONS FOR METHODOLOGY</title>
      <p>Having reviewed the state-of-the-art, this section proceeds
by discussing directions for a five-step methodology to
detect and correct service incompatibilities. This methodology
is currently under development. The general directions and
technology choices presented below are finished, while
implementation work towards a proof-of-concept demonstrator
is ongoing. First, Section IV-A presents the five steps in a
general sense and briefly mentions the technology choices we
have made when applying an instance of the methodology to
our case study. The motivation for our choices, as well as more
details about interface specification, and detection and
correction of incompatibilities are then provided in Sections IV-B
and IV-C, respectively.</p>
      <sec id="sec-4-1">
        <title>A. Overview</title>
        <p>The essence of our methodology is based on specifying both
structure and behavior in service interfaces to enable detection
and correction of service incompatibilities using formal
methods. An overview of the proposed five-step methodology is
shown in Figure 2. We continue by briefly introducing the
five steps:</p>
      </sec>
      <sec id="sec-4-2">
        <title>1) Service Interface Specification: The structure and be</title>
        <p>havior of services is specified in the service interface.</p>
        <p>
          Interface specifications are created for each new service
and are updated whenever changes to the specification
are required. The ComMA approach [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ], [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ] has been
chosen as the service interface specification framework
for our application of the methodology.
2) Generate Formal Service Model: A formal model is
generated from the service interface specification in a
formalism supported by existing methods for analysis and
synthesis. In our instance of the methodology, we have
selected Open Nets [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] for this purpose.
3) Check Accordance: When a service is updated or
replaced, the generated Open Net models of both the
original and the updated service is provided as input to
a method that checks whether or not they are in
accordance. For this purpose, we have selected the
contextindependent method based on operating guidelines [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ].
This approach does not require the two services to be
completely equivalent, only that all possible previous
clients are still supported. The updated service may hence
allow a richer set of possible clients than the original. If
the original and updated services are determined to be
in accordance by this approach, the updated service can
replace the original in all interactions with any possible
clients without any further steps. If the two services are
not in accordance, the following steps are taken.
4) Generate Adapter: For each partner service the updated
service is interacting with, generate an adapter that
ensures deadlock-free execution of the composition with the
new adapter. For this step, we have selected the adapter
generation approach based on controller synthesis [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]
for our instance of the methodology. If no adapter can
be found to correct the incompatibilities for any of the
interacting services, the methodology has failed and no
further steps are taken. Otherwise, if a model of an
adapter is found for each partner service, the final step is
taken.
5) Generate Adapter Code: This final step takes the models
of the adapters and generates implementations for the
target platform. In our instance, C++ code for the INAETICS
architecture is generated.
        </p>
        <p>The first step of the methodology is done at design time, as
a service is first created or updated. The remaining four steps
are done on the target platform as it is being updated. If the
methodology fails to update a particular service, the update is
rejected and the system continues executing with the existing
version of the service.</p>
      </sec>
      <sec id="sec-4-3">
        <title>B. Interface Specification</title>
        <p>
          Formal service interface specifications in the INAETICS
architecture describe structure, such as message types and
method signatures, but not behavior. It is hence not possible
to determine whether or not an updated service interface is
compatible with the original, or if interacting with a previously
compatible client components could result in deadlock. To
resolve this issue, the proposed methodology uses the ComMA
language [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] to specify both structure and behavior of service
interfaces.
        </p>
        <p>
          The ComMA approach was selected for the following
reasons: 1) it supports specification of both structure and
behavior, which is required to validate both aspects of compatibility,
2) it can model both synchronous and asynchronous
communication and does hence not restrict the communication options
offered by INAETICS, 3) it only specifies the service interface
and does not unnecessarily constrain the implementation of
the service, 4) it has been successfully applied in industry
before, i.e. at Philips [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]–[
          <xref ref-type="bibr" rid="ref20">20</xref>
          ], 5) the support for automatic
generation of interface specification from traces simplifies
industrial adoption on a wider scale, and 6) the tooling is
based on Eclipse, which is one of the most commonly used
modeling tools in the embedded domain [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. This makes it
easier to gain industrial acceptance.
        </p>
        <p>Parts of a simplified ComMA interface specifying the
structure and behavior of the PeriodicTask service from
Section II-B are shown in Figures 3 and 4, respectively. Figure 3a
specifies relevant types that are needed to specify the signature
of the interface in Figure 3b. The signature contains two
signals, PTON and PTOFF, that are sent from the client to the
PeriodicTask service, and a notification, PTSTATE, that is sent
from PeriodicTask back to the client component. Both signals
and notifications are sent asynchronously. ComMA signatures
also support synchronous commands, but these are not needed
in the case study.</p>
        <p>The behavior of the service interface is described in
Figure 4. Behavior in ComMA is specified as an FSM, where
events, such as commands and signals, trigger transitions
between the states.</p>
        <p>Unlike the model in Figure 1, we do not need the
intermediate states for going on and going off, since ComMA can
specify the received trigger signal and the response notification
in a single transition. For brevity, Figure 4 does not include
that the PTON signal can be received in the ON state. This
transition is analogous to the shown transitions triggered by
the PTON and PTOFF signals. As indicated in the figure,</p>
        <p>
          PeriodicTasks starts in the OFF state and transitions to the
ON state after receiving a PTON signal with an associated
maximum budget. The specification also shows that the service
implementing the interface must reply by sending a
notification with an acknowledgement and a used budget of -1, which
is the undesired coupling of concerns previously discussed
in Section II-B that is the reason for updating the service
interface. Conformance with this specified behavior can be
validated using a monitor that is automatically generated from
the ComMA specification. The ON state specifies a similar
transition back to the OFF state after receiving a PTOFF signal
from the client, as well as the periodic update. The periodic
update is hence not triggered by an external event and does not
have a transition trigger. It is possible to specify the period and
maximum jitter constraints for the periodic update, but this has
been omitted for simplicity. For the same reason, the current
specification also does not constrain the used budget values to
be non-negative. For more information about timing and data
constraints, refer to [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ].
        </p>
        <p>Relevant parts of the service interface after the update are
shown in Figures 5 and 6, respectively. Figure 5 shows that
there has been a structural modification. The state message
has been simplified to only include the response, as the used
budget has been moved to the newly introduced
PTPERFORMANCE notification. The updated behavior is specified in
Figure 6. As seen in the figure, it is no longer necessary to
monitor that the invalid budget is correctly sent in state
messages when transitioning to the ON and OFF states. Similarly,
the periodic update now sends a dedicated performance
notification and does not have to include other state information.
This decouples the concerns of responding to a signal from
sending periodic updates, as desired in Section II-B, at cost
of behavioral and structural incompatibility.</p>
      </sec>
      <sec id="sec-4-4">
        <title>C. Detection and Correction</title>
        <p>
          To address incompatibilities, we choose to base our
approach on Open Nets [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. The three main reasons for this
choice are: 1) it is conceptually possible to translate a ComMA
specification into a corresponding Open Net, 2) Open Nets can
model both synchronous and asynchronous communication
semantics, supported by both INAETICS and ComMA, and 3)
there are existing analysis methods, supported by prototype
academic tools5, available for both detection and correction of
5http://service-technology.org/tools/index.html,
https://github.com/nlohmann/service-technology.org
incompatibilities.
        </p>
        <p>
          A disadvantage of choosing Open Nets is that this
formalism is much less common than FSMs among industrial
practitioners in the embedded domain [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. This is a concern
since best practices for MDE state that it is essential for
acceptance that notation and terminology are familiar to the
users [
          <xref ref-type="bibr" rid="ref28">28</xref>
          ], [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ]. However, users of the proposed methodology
specify behavior as FSMs in the ComMA language, and
the transformation to Open Nets and the behavioral analysis
happen automatically under the hood, which mitigates the
concern. The generation of Open Nets will be implemented as
a model-to-model transformation in the ComMA framework.
The generated Open Net model will then pass through
modelto-text transformations to create the required input models for
the tools performing detection and correction.
        </p>
        <p>
          Having chosen Open Nets as the formalism for our
application of the proposed methodology, it makes sense to select the
precise method for determining accordance based on operating
guidelines. This method is implemented in the prototype tool
Fiona [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ].
        </p>
        <p>
          For correction of incompatibilities, we select the adapter
generation method based on controller synthesis [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]. We
continue by giving a brief overview of this approach. The
basic idea is to create an adapter between two services
represented as Open Nets by synthesizing an adapter with
two key components, an engine and a controller. This adapter
architecture is shown in Figure 7. The engine is responsible
for the flow and transformation of data and has the input and
output places required to connect to the two services according
to the set of specified mapping rules. It also has connections to
the controller, which is responsible for ordering of events such
that behavioral properties, like deadlock-freedom, are satisfied.
The engine notifies the controller when messages have arrived
and allows it to determine when to trigger transformations of
the data, e.g. splitting up an incoming PTSTATE message into
separate PTSTATE and PTPERFORMANCE messages in our
case study, and in what order to send messages.
        </p>
        <p>
          Adapter generation following this approach starts by
composing the models of the two services with the model of the
engine, which follows directly from the provided mapping
rules. This composition results in a larger Open Net, where
the only unconnected interface places are those between the
engine and the controller. Using techniques for controller
synthesis, a controller is then synthesized such that the desired
behavioral property is satisfied. There are two possible adapter
architectures that differ in whether the connections between the
engine and controller are asynchronous or synchronous [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ].
The latter typically results in smaller adapters with shorter
synthesis times without any particular drawbacks.
        </p>
        <p>
          In addition to being based on Open Nets, giving it the
benefits listed above, this adapter generation approach has
also been evaluated in a number of case studies [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ], [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ],
[
          <xref ref-type="bibr" rid="ref32">32</xref>
          ] and shown to be able to efficiently generate adapters
within seconds. This is particularly true for the architecture
with synchronous controllers, which has been selected for
our methodology. The adapter generation approach supporting
asynchronous controller synthesis is available in the existing
tool Marlene6 [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>V. CONCLUSIONS</title>
      <p>Systems with long life time need to continuously evolve
to quickly respond to changes in technology and business
needs. Service-oriented architectures are enablers of
continuous evolution by decoupling applications from a particular
technology and implementation. However, manually managing
compatibility as service interfaces evolve is expensive and
time-consuming, since it is challenging to determine how all
possible client components are impacted.</p>
      <p>This paper presented initial applied research towards
addressing this problem by surveying the state-of-the-art in the
areas of interface specification, and detection and correction
of service incompatibilities. Directions were presented for a
five-step methodology for detection and correction of
incompatible services. The methodology involves specifying both
the structure and behavior in service interfaces at design time.
Based on these specifications, a formal model of the behavior
is generated and used to determine whether a service update is
compatible with all possible clients. If this is not the case, an
adapter is generated and deployed for each client component.
The methodology was discussed in the context of a case study
from the radar domain.</p>
    </sec>
    <sec id="sec-6">
      <title>ACKNOWLEDGEMENT</title>
      <p>The research is carried out as part of the DYNAMICS
project under the responsibility of ESI (TNO) with Thales
Nederland B.V. as the carrying industrial partner. The
DYNAMICS research is supported by the Netherlands
Organisation for Applied Scientific Research TNO.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>S.</given-names>
            <surname>Neema</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Parikh</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Jagannathan</surname>
          </string-name>
          , “
          <article-title>Building resource adaptive software systems</article-title>
          ,
          <source>” IEEE Software</source>
          , vol.
          <volume>36</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>103</fpage>
          -
          <lpage>109</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>B.</given-names>
            <surname>Akesson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hooman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Dekker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Ekkelkamp</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Stottelaar</surname>
          </string-name>
          , “
          <article-title>Pain-mitigation techniques for model-based engineering using domainspecific languages,”</article-title>
          <source>in Proc. Special Session on Model Management And Analytics (MOMA3N)</source>
          ,
          <year>2018</year>
          , pp.
          <fpage>752</fpage>
          -
          <lpage>764</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>B.</given-names>
            <surname>Akesson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hooman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Sleuters</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Yankov</surname>
          </string-name>
          , “
          <article-title>Reducing design time and promoting evolvability using domain-specific languages in an industrial context,” in Model Management and Analytics for Large Scale Systems</article-title>
          . Elsevier,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>P.</given-names>
            <surname>Massuthe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Reisig</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Schmidt</surname>
          </string-name>
          ,
          <article-title>An operating guideline approach to the SOA</article-title>
          . Humboldt-Universita¨t zu Berlin, MathematischNaturwissenschaftliche Fakulta¨t ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>H.</given-names>
            <surname>Bossenbroek</surname>
          </string-name>
          and
          <string-name>
            <surname>R. van Hees</surname>
          </string-name>
          , “
          <article-title>The INAETICS architecture -</article-title>
          introducing INAETICS,”
          <article-title>White paper</article-title>
          ,
          <source>Tech. Rep.</source>
          ,
          <year>2015</year>
          . [Online]. Available: https://www.inaetics.org/reference-material/
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>R.</given-names>
            <surname>Seguel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Eshuis</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Grefen</surname>
          </string-name>
          ,
          <article-title>An Overview on Protocol Adaptors for Service Component Integration</article-title>
          . Beta, Research School for Operations Management and Logistics,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>M.</given-names>
            <surname>Dumas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Spork</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Wang</surname>
          </string-name>
          , “
          <article-title>Adapt or perish: Algebra and visual notation for service interface adaptation</article-title>
          ,” in International Conference on Business Process Management. Springer,
          <year>2006</year>
          , pp.
          <fpage>65</fpage>
          -
          <lpage>80</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>L.</given-names>
            <surname>Bordeaux</surname>
          </string-name>
          , G. Salau¨n,
          <string-name>
            <given-names>D.</given-names>
            <surname>Berardi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Mecella</surname>
          </string-name>
          , “
          <article-title>When are two web services compatible?</article-title>
          ” in International Workshop on Technologies for E-Services. Springer,
          <year>2004</year>
          , pp.
          <fpage>15</fpage>
          -
          <lpage>28</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>A.</given-names>
            <surname>Brogi</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Popescu</surname>
          </string-name>
          , “
          <source>Automated generation of BPEL adapters,” in International Conference on Service-Oriented Computing</source>
          . Springer,
          <year>2006</year>
          , pp.
          <fpage>27</fpage>
          -
          <lpage>39</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>G.</given-names>
            <surname>Liebel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Marko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Tichy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Leitner</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Hansson</surname>
          </string-name>
          , “
          <article-title>Modelbased engineering in the embedded systems domain: an industrial survey on the state-of-practice,”</article-title>
          <source>Software &amp; Systems Modeling</source>
          , vol.
          <volume>17</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>91</fpage>
          -
          <lpage>113</lpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>D. M.</given-names>
            <surname>Yellin</surname>
          </string-name>
          and
          <string-name>
            <given-names>R. E.</given-names>
            <surname>Strom</surname>
          </string-name>
          , “
          <article-title>Protocol specifications and component adaptors</article-title>
          ,
          <source>” ACM Transactions on Programming Languages and Systems (TOPLAS)</source>
          , vol.
          <volume>19</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>292</fpage>
          -
          <lpage>333</lpage>
          ,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>P.</given-names>
            <surname>Baker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Loh</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Weil</surname>
          </string-name>
          , “
          <article-title>Model-driven engineering in a large industrial context -</article-title>
          <source>Motorola case study,” Model Driven Engineering Languages and Systems</source>
          , pp.
          <fpage>476</fpage>
          -
          <lpage>491</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>T.</given-names>
            <surname>Murata</surname>
          </string-name>
          , “
          <article-title>Petri nets: Properties, analysis and applications</article-title>
          ,
          <source>” Proceedings of the IEEE</source>
          , vol.
          <volume>77</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>541</fpage>
          -
          <lpage>580</lpage>
          ,
          <year>1989</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>D.</given-names>
            <surname>Brand</surname>
          </string-name>
          and
          <string-name>
            <given-names>P.</given-names>
            <surname>Zafiropulo</surname>
          </string-name>
          , “
          <article-title>On communicating finite-state machines</article-title>
          ,
          <source>” Journal of the ACM (JACM)</source>
          , vol.
          <volume>30</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>323</fpage>
          -
          <lpage>342</lpage>
          ,
          <year>1983</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>G. H.</given-names>
            <surname>Broadfoot</surname>
          </string-name>
          , “
          <article-title>ASD case notes: Costs and benefits of applying formal methods to industrial control software</article-title>
          ,” in
          <source>International Symposium on Formal Methods</source>
          . Springer,
          <year>2005</year>
          , pp.
          <fpage>548</fpage>
          -
          <lpage>551</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>A.</given-names>
            <surname>Osaiweran</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Schuts</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hooman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. F.</given-names>
            <surname>Groote</surname>
          </string-name>
          , and
          <string-name>
            <surname>B. van Rijnsoever</surname>
          </string-name>
          ,
          <article-title>“Evaluating the effect of a lightweight formal technique in industry</article-title>
          ,”
          <source>International Journal on Software Tools for Technology Transfer</source>
          , vol.
          <volume>18</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>93</fpage>
          -
          <lpage>108</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>I.</given-names>
            <surname>Kurtev</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Schuts</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hooman</surname>
          </string-name>
          , and D.
          <string-name>
            <surname>-J. Swagerman</surname>
          </string-name>
          , “
          <article-title>Integrating interface modeling and analysis in an industrial setting</article-title>
          .”
          <source>in Proceedings of the 5th International Conference on Model-Driven Engineering and Software Development (MODELSWARD</source>
          <year>2017</year>
          ),
          <year>2017</year>
          , pp.
          <fpage>345</fpage>
          -
          <lpage>352</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>I.</given-names>
            <surname>Kurtev</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hooman</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Schuts</surname>
          </string-name>
          , “
          <article-title>Runtime monitoring based on interface specifications,” in ModelEd, TestEd</article-title>
          , TrustEd. Springer,
          <year>2017</year>
          , pp.
          <fpage>335</fpage>
          -
          <lpage>356</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>M.</given-names>
            <surname>Schuts</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hooman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I. Kurtev</given-names>
            , and D.
            <surname>-J. Swagerman</surname>
          </string-name>
          , “
          <article-title>Reverse engineering of legacy software interfaces to a model-based approach</article-title>
          ,” in
          <source>2018 Federated Conference on Computer Science and Information Systems (FedCSIS)</source>
          . IEEE,
          <year>2018</year>
          , pp.
          <fpage>867</fpage>
          -
          <lpage>876</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>M.</given-names>
            <surname>Schuts</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hooman</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Tielemans</surname>
          </string-name>
          , “
          <article-title>Industrial experience with the migration of legacy models using a DSL,”</article-title>
          <source>in Proceedings of the Real World Domain Specific Languages Workshop 2018</source>
          . ACM,
          <year>2018</year>
          , p.
          <fpage>1</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>W. M. van der Aalst</surname>
            ,
            <given-names>A. J.</given-names>
          </string-name>
          <string-name>
            <surname>Mooij</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Stahl</surname>
            , and
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Wolf</surname>
          </string-name>
          , “
          <article-title>Service interaction: Patterns, formalization, and analysis,” in International School on Formal Methods for the Design of Computer, Communication</article-title>
          and
          <string-name>
            <given-names>Software</given-names>
            <surname>Systems</surname>
          </string-name>
          . Springer,
          <year>2009</year>
          , pp.
          <fpage>42</fpage>
          -
          <lpage>88</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>C.</given-names>
            <surname>Gierds</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Mooij</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Wolf</surname>
          </string-name>
          , “Reducing adapter synthesis to controller synthesis,
          <source>” IEEE Transactions on Services Computing</source>
          , vol.
          <volume>5</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>72</fpage>
          -
          <lpage>85</lpage>
          ,
          <year>Jan 2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>K.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Dumas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Ouyang</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Vayssiere</surname>
          </string-name>
          , “
          <article-title>The service adaptation machine,”</article-title>
          <source>in 2008 Sixth European Conference on Web Services. IEEE</source>
          ,
          <year>2008</year>
          , pp.
          <fpage>145</fpage>
          -
          <lpage>154</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>H. R. Motahari</given-names>
            <surname>Nezhad</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Benatallah</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Martens</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Curbera</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Casati</surname>
          </string-name>
          , “
          <article-title>Semi-automated adaptation of service interactions</article-title>
          ,”
          <source>in Proceedings of the 16th international conference on World Wide Web. ACM</source>
          ,
          <year>2007</year>
          , pp.
          <fpage>993</fpage>
          -
          <lpage>1002</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>E.</given-names>
            <surname>Rahm</surname>
          </string-name>
          and
          <string-name>
            <given-names>P. A.</given-names>
            <surname>Bernstein</surname>
          </string-name>
          , “
          <article-title>A survey of approaches to automatic schema matching,” the VLDB Journal</article-title>
          , vol.
          <volume>10</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>334</fpage>
          -
          <lpage>350</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>A.</given-names>
            <surname>Kumar</surname>
          </string-name>
          and
          <string-name>
            <given-names>Z.</given-names>
            <surname>Shan</surname>
          </string-name>
          , “
          <article-title>Algorithms based on pattern analysis for verification and adapter creation for business process composition,” in OTM Confederated International Conferences” On the Move to Meaningful Internet Systems”</article-title>
          . Springer,
          <year>2008</year>
          , pp.
          <fpage>120</fpage>
          -
          <lpage>138</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>N.</given-names>
            <surname>Lohmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Massuthe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Stahl</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Weinberg</surname>
          </string-name>
          , “
          <article-title>Analyzing interacting WS-BPEL processes using flexible model generation,” Data &amp; Knowledge Engineering</article-title>
          , vol.
          <volume>64</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>38</fpage>
          -
          <lpage>54</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>D.</given-names>
            <surname>Wile</surname>
          </string-name>
          , “
          <article-title>Lessons learned from real DSL experiments</article-title>
          ,
          <source>” Sci. Comput. Program.</source>
          , vol.
          <volume>51</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>265</fpage>
          -
          <lpage>290</lpage>
          , Jun.
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>M.</given-names>
            <surname>Voelter</surname>
          </string-name>
          , “
          <article-title>Best practices for DSLs and model-driven development</article-title>
          ,
          <source>” Journal of Object Technology</source>
          , vol.
          <volume>8</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>79</fpage>
          -
          <lpage>102</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>P.</given-names>
            <surname>Massuthe</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Weinberg</surname>
          </string-name>
          , “
          <article-title>Fiona: A tool to analyze interacting open nets</article-title>
          ,”
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Mooij</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Voorhoeve</surname>
          </string-name>
          , “
          <article-title>Trading off concurrency to generate behavioral adapters,” in 2009 Ninth International Conference on Application of Concurrency to System Design</article-title>
          .
          <source>IEEE</source>
          ,
          <year>2009</year>
          , pp.
          <fpage>109</fpage>
          -
          <lpage>118</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Mooij</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Voorhoeve</surname>
          </string-name>
          , “
          <article-title>Specification and generation of adapters for system integration,” in Situation Awareness with Systems of Systems</article-title>
          . Springer,
          <year>2013</year>
          , pp.
          <fpage>173</fpage>
          -
          <lpage>187</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>