<!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>
      <journal-title-group>
        <journal-title>ECSA</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Gabble: Managing Integration Knowledge in IoT-Systems with Logical Reasoning</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Fabian Burzlaf</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Maurice Ackel</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Christian Bartelt</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Institute for Enterprise Systems (University of Mannheim)</institution>
          ,
          <addr-line>Schloss, Mannheim, 68131</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>osapiens Services GmbH</institution>
          ,
          <addr-line>Julius-Hatry-Straße 1, Mannheim, 68163</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2021</year>
      </pub-date>
      <volume>15</volume>
      <fpage>0000</fpage>
      <lpage>0003</lpage>
      <abstract>
        <p>Service interoperability for embedded devices is a mandatory feature for dynamically changing Internetof-Things and Industry 4.0 software platforms. Service interoperability is achieved on a technical, syntactic, and semantic level. If service interoperability is achieved on all levels, plug-and-play functionality known from USB storage sticks or printer drivers becomes feasible. This reduces the manual efort for system integration for home automation systems and, in the case of the producing industry, allows for micro-batch size production, individualized automation solution, or job order production. However, interoperability at the semantic level is still a problem for the maturing class of IoT systems. In this work, we present a software engineering tool that allows storing, sharing, and reusing integration knowledge between software interfaces incrementally by looking at integration cases instead of domain models.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Knowledge-driven Architecture Composition</kwd>
        <kwd>Software Architecture</kwd>
        <kwd>Component Coupling</kwd>
        <kwd>Artificial Intelligence</kwd>
        <kwd>Knowledge Management</kwd>
        <kwd>Internet of Things</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Architectural mismatch due to semantic diferences in software interfaces is a well-known
problem [
        <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
        ]. For example, current Internet-of-Things platforms require system integrators
to implement point-to-point adapters, enforce a domain standard or rely on more abstract
interface description languages when coupling embedded devices. However, both standards
and machine-understandable interface descriptions cannot be applied efectively to IoT systems
as they rely on the assumption that the semantic domain is completely known when they are
created. This assumption of complete integration models hardly holds in the real world as
ever-changing environments render a complete and final description of a domain impossible.
Consequently, practitioners rely on implementing software adapters manually without technical
support to store, share and reuse integration knowledge between interfaces.
      </p>
      <p>This work introduces a novel tool called Gabble that explicitly allows for an incomplete
semantic domain model by looking at integration cases instead of domain models. "Gabble" is
inspired by the fast-growing number of connected devices which talk so quickly that devices
cannot understand each other. Therefore, it assists the system integrator at design time with
logical reasoning capabilities by 1) proposing interface mappings based on previous
integration cases and by 2) generating a software adapter in an automated way. We assume, that
valid interface descriptions are present but the adapter design can be incomplete (i.e., missing
functionalities).</p>
    </sec>
    <sec id="sec-2">
      <title>2. Use Case</title>
      <p>To illustrate the tool functionality, we will take a look at an exemplary use case. In our setting,
Alice and Bob work on an app that controls a Philips smart light. This device has a public
API which is described in a syntactic specification standard (e.g., OpenAPI). Based on this
specification, the client code to interface with the device was created using existing code
generators. Subsequently, the necessary client logic to work with the generated library was
developed.</p>
      <p>The development team is now tasked to make the app work with a diferent device (i.e. by
Yeelight). This light has a diferent, yet semantically identical API with a corresponding API
specification. The interfaces of both devices are depicted in Fig. 1. This figure also shows how a
diferent person integrated the Philips API with the LIFX (smart light brand) API (at time t=1),
and yet another system integrator mapped the LIFX to the Yeelight API (at t=2).
t=1
&lt;&lt;Interface&gt;&gt;</p>
      <p>Philips
+ deviceId: Integer
+ power: String
+ color: String
+ brightness: Integer
+ controlLight
(deviceId, power, brightness, color)
: success, time, ...</p>
      <p>set true if 'on'
t=2
&lt;&lt;Interface&gt;&gt;</p>
      <p>LIFX
+ id: Integer
+ active: Boolean
+ color: String
+ brightness: Integer
+ setSate
(id, power, brightness, color)
: status, time, ...</p>
      <p>set 'on' if true, else 'off'
divide by 100
multiply with 100</p>
      <p>To make the Yeelight device work with the existing app in a practical way, Bob would have
to generate new client code and adjust the application logic so that it can handle the new data
model. This process has to be done manually every time such a change needs to be performed
and does not allow the reuse of existing integration knowledge (see arrows that illustrate
mappings in Fig. 1). The Gabble tool allows for such easy reuse of integration knowledge which
is defined in a case-based manner. The main benefit of the tool support is the ability to handle
simple scenarios as displayed and more complex ones with thousands of integration cases where
manual knowledge extraction would get infeasible.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Functionality &amp; Architecture</title>
      <p>
        The underlying theoretical approach of Gabble is Knowledge-Driven Architecture Composition
(KDAC) – a novel paradigm of system integration that allows reusing atomic integration
knowledge preserved from previous integration cases [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. To do this, the approach captures
integration knowledge in a graph-like knowledge base, where APIs are vertices and mappings
between them are edges. The approach explicitly does not assume that integration knowledge is
complete once it is defined. Instead, it accepts that integration knowledge is always incomplete
and aims to reuse as many mappings as possible. Gabble implements this approach, ofering
system integrators, and developers a new way to create integrations to make the formalization
process easier, faster, and less error-prone.
      </p>
      <p>Interface Database</p>
      <p>retrieve source &amp; target interface
KDAC Framework</p>
      <p>Mapping
Knowledgebase use chain
save mapping
retrieve source &amp; target</p>
      <p>interface
Transformation
Preprocessor</p>
      <p>compute
mapping suggestions</p>
      <p>Mapping View</p>
      <p>invokes
creates mappings
retrieve mapping
executes &amp; oversees</p>
      <p>Key</p>
      <p>Gabble Component</p>
      <p>External Component
Adapter Generator
builds (partial)
adapter</p>
      <p>IDE
deploys</p>
      <p>Application
Test Component</p>
      <p>invoke
System Integrator</p>
      <p>Target... API 1
Target API n
updates adapter
(if necessary)</p>
      <p>The tool consists of several logical components (see Fig. 2). To start with, it allows users to
add interfaces to the Interface Database which are then available later in the process. When
adding an interface, the user has to provide either an AsyncAPI or OpenAPI specification and
the interface name. Those interfaces are then available in the Mapping View where the user
can create mappings between them. To do this, they select a source interface and one or many
target interfaces. As soon as a selection is made, the Transformation Preprocessor is invoked.
It uses the integration knowledge stored in the Mapping Knowledgebase to compute mapping
suggestions. Those are directly added to the mapping view and color coded, cased on the their
generation type.</p>
      <p>The generation of suggestions is done in two ways. For transitive mapping suggestions,
the preprocessor searches for paths from the source to the target interface(s). The resulting
mapping chain is combined into a single mapping operation from source to target if a path is
found. In our example, a mapping chain would be Philip→s− LIFX→− Yeelight. The other type
of suggestion is based on knowledge graphs on single attributes instead of whole mappings.
Those knowledge graphs capture the equality relationships (e.g., arrows in Fig. 1) between
single interface attributes. Invoking the Transformation Preprocessor on every update allows
generating new mapping suggestions whenever the user adds new integration knowledge in
the integration case at hand.</p>
      <p>It is important to note that the generated mapping suggestions might not be able to cover all
the required attributes of the target interface(s), in which case the user can also add manual
mappings. Those mappings can either be one-to-one (i.e., one provided attribute to one required
attribute) or many-to-one (i.e., several provided attributes to one required attribute). Mappings
are created by selecting the involved attributes in the Mapping View and can either be simple
(i.e., only value replacement, no computations) or complex (i.e., mathematical functions to
convert or combine attribute values). In our example, this is displayed by arrows without a
label or with a label.</p>
      <p>Once all required attributes are assigned, the user can test the mapping using the Test
Component. To do this, the user provides the input data in the source interface’s data model and
executing the mapping. This will transform the source to the target data model and perform
the requests against the target API(s). The final result and all intermediate transformations are
then shown to the user to ensure the correct functionality.</p>
      <p>Finally, the user saves the complete mapping in the Mapping Knowledgebase, making it
available for other users. In this way, case-based integration knowledge is preserved and made
available for reuse. Once a mapping is completed, a software adapter can be automatically
generated. This adapter encapsulates the mapping of the data models defined by the user.
The result is a code library that has the same API as the client library for the source interface
if it had been directly generated by an OpenAPI code generator. In our case, we added
support for JavaScript adapters, but the Adapter Generator can also be extended to support other
programming languages.</p>
      <p>
        The Gabble tool’s underlying services are containerized using Docker and can be deployed
using one single command on any cloud infrastructure. Extensions are feasible as we rely on
current software frameworks such as React, TypeScript, OpenAPI, JSONata, and Mustache
templates. The benefits of the tool and the underlying method have already been demonstrated
in a home automation scenario by decreasing the engineering time of software adapters and
increasing the reliability of interface mappings [
        <xref ref-type="bibr" rid="ref4 ref5">4, 5</xref>
        ].
4. Related Research and Industry Eforts
Research-driven approaches to achieve semantic interoperability are focusing on bottom-up
interface integration and can be exemplified using the tools MatchBox [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], and MICS [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
MatchBox presents a highly customizable interface matching framework based on interface
descriptions, whereas MICS enables software architectures to synthesize software connectors
from formal mapping specifications automatically. The mentioned approaches and most other
approaches apply formal ontologies to describe the desired domain based on the available
interface descriptions. Once defined, these ontologies are hard to evolve for system integrators.
      </p>
      <p>
        Approaches from the industry include top-down designed standards such as OPC UA in
combination with ecl@ss. For instance, BaSys 4.0 [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] takes a capability-based description
that contains references to an integration layer for manufacturing systems. These approaches
assume that there exists a formal vocabulary that can be used by all parties involved by linking
their interfaces to it.
      </p>
      <p>The Gabble tool and the underlying approach do not try to (partially) formalize a domain and
link interface elements to it, but look at integration knowledge based on concrete integration
cases that can evolve over time.</p>
    </sec>
    <sec id="sec-4">
      <title>5. Conclusion</title>
      <p>In this work, we presented Gabble. Gabble is a tool accompanying the knowledge-driven
architecture composition approach, which resolves architectural mismatch at the semantic level
for highly interconnected and dynamic IoT software platforms. We believe that Gabble can
lower the amount of manually written adapter code until one domain-specific standard emerges.
In the future, we plan to apply Gabble to other integration scenarios demanding a higher degree
of dependability, such as automated production lines.</p>
    </sec>
    <sec id="sec-5">
      <title>Acknowledgments</title>
      <p>This work has been developed in the project BIoTope (Research Grant Number 01lS18079C) and
is funded by the German Ministry of Education and Research (BMBF).</p>
      <p>Online Resources
• Tool Demonstration Video: https://www.youtube.com/watch?v=6IuChI6Q4E4
• Source Code: https://github.com/mauriceackel/Gabble/tree/demo
• Web Page: https://iot.informatik.uni-mannheim.de/</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>D.</given-names>
            <surname>Garlan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Allen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Ockerbloom</surname>
          </string-name>
          ,
          <article-title>Architectural mismatch: Why reuse is still so hard</article-title>
          ,
          <source>IEEE software 26</source>
          (
          <year>2009</year>
          )
          <fpage>66</fpage>
          -
          <lpage>69</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>F.</given-names>
            <surname>Burzlaf</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Wilken</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Bartelt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Stuckenschmidt</surname>
          </string-name>
          ,
          <article-title>Semantic Interoperability Methods for Smart Service Systems: A Survey, IEEE Transactions on Engineering Management (</article-title>
          <year>2019</year>
          )
          <fpage>1</fpage>
          -
          <lpage>15</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>F.</given-names>
            <surname>Burzlaf</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Bartelt</surname>
          </string-name>
          ,
          <article-title>Knowledge-driven architecture composition: Case-based formalization of integration knowledge to enable automated component coupling</article-title>
          ,
          <source>in: 2017 IEEE International Conference on Software Architecture Workshops (ICSAW)</source>
          , IEEE,
          <year>2017</year>
          , pp.
          <fpage>108</fpage>
          -
          <lpage>111</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>F.</given-names>
            <surname>Burzlaf</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Bartelt</surname>
          </string-name>
          ,
          <article-title>Knowledge-driven architecture composition: Assisting the system integrator to reuse integration knowledge</article-title>
          , in: M.
          <string-name>
            <surname>Brambilla</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          <string-name>
            <surname>Chbeir</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Frasincar</surname>
          </string-name>
          , I. Manolescu (Eds.), Web Engineering, Springer International Publishing, Cham,
          <year>2021</year>
          , pp.
          <fpage>305</fpage>
          -
          <lpage>319</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>F.</given-names>
            <surname>Burzlaf</surname>
          </string-name>
          ,
          <article-title>Knowledge-driven architecture composition</article-title>
          ,
          <source>Ph.D. thesis, Mannheim</source>
          ,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M. C.</given-names>
            <surname>Platenius</surname>
          </string-name>
          ,
          <article-title>Fuzzy matching of comprehensive service specifications</article-title>
          ,
          <source>PhD Thesis</source>
          , Universitätsbibliothek, Paderborn,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>M.</given-names>
            <surname>Autili</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Inverardi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Spalazzese</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Tivoli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Mignosi</surname>
          </string-name>
          ,
          <article-title>Automated synthesis of application-layer connectors from automata-based specifications</article-title>
          ,
          <source>Journal of Computer and System Sciences</source>
          <volume>104</volume>
          (
          <year>2019</year>
          )
          <fpage>17</fpage>
          -
          <lpage>40</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <article-title>[8] Capability-based semantic interoperability of manufacturing resources: A basys 4.0 perspective</article-title>
          , IFAC-PapersOnLine
          <volume>52</volume>
          (
          <year>2019</year>
          )
          <fpage>1590</fpage>
          -
          <lpage>1596</lpage>
          .
          <source>9th IFAC Conference on Manufacturing Modelling, Management and Control MIM</source>
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>