<!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>DeSARM: A Decentralized Mechanism for Discovering Software Architecture Models at Runtime in Distributed Systems</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Jason Porter</string-name>
          <email>jporte10@gmu.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Daniel A. Menasce´</string-name>
          <email>menasce@gmu.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Hassan Gomaa</string-name>
          <email>hgomaa@gmu.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer Science, George Mason University</institution>
          ,
          <addr-line>Fairfax, Virginia 22030</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-Runtime models play a critical role in modern self-adaptive systems. Hence, runtime architectural models are needed when making adaptation decisions in architecture-based self-adaptive systems. However, when these systems are distributed and highly dynamic, there is an added need to discover the systems software architecture model at runtime. Current methods of runtime architecture discovery take a centralized approach, in which the process is carried out from a single location. These methods are inadequate for large distributed systems because they do not scale up well and have a single point of failure. Also, systems of such size consist of nodes that are typically highly dynamic in nature. Existing approaches to architecture discovery are not capable of addressing these concerns. This paper describes DeSARM (Decentralized Software Architecture discoveRy Mechanism), a completely decentralized and automated approach for runtime discovery of software architecture models of distributed systems based on gossiping and message tracing. DeSARM is able to identify at runtime important architectural characteristics such as components and connectors, in addition to synchronous and asynchronous communication patterns. Furthermore, through its use of gossiping, it exhibits the properties of scalability, global consistency among participating nodes, and resiliency to failures. The paper discusses DeSARM's architecture and detailed design, and demonstrates its properties through experimentation.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Software architecture—the high level structure of a software
system including a collection of components, connectors and
constraints—plays an increasingly critical role in the design
and development of any large complex software system. These
artifacts (i.e., components, connectors, and constraints) are
needed to reason about the system and act as a bridge
between requirements and implementation as well as provide
a blueprint for system construction and composition. The
architecture helps in the understanding of complex systems,
supports reuse at both the component and architectural level,
indicates the major components to be developed together with
their relationships and constraints, exposes changeability of
the system, and allows for verification and validation of the
target system at a high level [
        <xref ref-type="bibr" rid="ref32">32</xref>
        ].
      </p>
      <p>
        Software architectures have been very influential in
self-adaptive systems, i.e., systems that are capable of
self-configuration, self-optimization, self-healing and
selfprotection, and are also called self-* or autonomic
systems [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. In architecture-based self-adaptive systems,
components dynamically change in order to continuously adhere
to architectural properties and system goals. As a result, these
systems require runtime architectural models when making
adaptation decisions [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. However, when these systems are
distributed and highly dynamic there is an added need to
discover the system’s architectural model at runtime.
      </p>
      <p>Current methods of runtime architecture discovery take a
centralized approach to constructing architectures dynamically.
These methods are inadequate for large distributed systems
because they do not scale up well and have a single point of
failure. Also, systems of such size are often dynamic in nature
due to changes in the runtime environment, where nodes join
and leave the system unpredictably, and are subject to
failures. Existing approaches do not address the aforementioned
concerns.</p>
      <p>
        We describe a method for runtime software architecture
discovery in a completely decentralized manner. This is
accomplished by keeping message logs at each node and
disseminating among the nodes identified component interaction
patterns (i.e., synchronous, asynchronous, single or multiple
destination) derived from the logs through selective gossip
exchanges. With selective gossiping, information
dissemination takes place only between nodes that are part of the
same application. This results in the containment of network
traffic, which in effect reduces communication overhead. All
references to DeSARM’s gossiping method heretofore refer
to selective gossiping. Through its use of gossiping, our
mechanism addresses the limitations of the current approaches
and exhibits the following properties: (1) resiliency to failures,
where the gossiping protocol always converges irrespective
of node failures, (2) global consistency among participating
nodes, where all nodes converge to the same architectural
view, and (3) scalability, where the gossiping protocol can
accomodate systems of increasing size [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ]. Accordingly, the
scope of our work is the derivation of architectural models
at runtime to be used in decentralized decision making for
architecture-based adaptation in large distributed systems. This
effort is part of a larger project, RASS: Resilient Autonomic
Software Systems [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ], aimed at developing a highly-resilient
and highly-dependable system, which is capable of making
adaptation decisions in a distributed fashion without
centralized control. To achieve this goal, each node requires a
complete model of the system at runtime.
      </p>
      <p>
        Thus, the main contribution of this paper is DeSARM:
Decentralized Software Architecture discoveRy Mechanism,
a completely decentralized and automated method and
system for runtime discovery of software architecture models
of distributed systems using gossiping [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ][
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] and message
tracing. The information dissemination and relatively fast
convergence capability of the gossiping protocol aid each node
in deriving a complete model of the architecture. We also
demonstrate experimentally DeSARM properties of resiliency,
global consistency, and scalability. It is important to note that
these properties relate to the architecture discovery process
and not to application failure recovery or adaptation, which
are outside the scope of this paper.
      </p>
      <p>The rest of this paper is organized as follows. Section II
discusses related work. Section III provides some basic
assumptions. Section IV describes the architecture of DeSARM.
Section V presents the results of our experiments with
DeSARM. Section VI provides a discussion on important
issues related to the architecture discovery mechanism. Finally,
Section VII presents some concluding remarks and discusses
possible future work.</p>
    </sec>
    <sec id="sec-2">
      <title>II. RELATED WORK</title>
      <p>
        In this paper we use architecture discovery instead of
recovery as is often found in the literature. Architecture recovery
refers to cases where the architecture was known but may have
been lost due to erosion or improper documentation [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ],
[
        <xref ref-type="bibr" rid="ref33">33</xref>
        ]. In contrast, architecture discovery refers to situations in
which the architecture was not previously known. This is due
to the fact that the architecture may not have previously existed
or may have changed at runtime due to the dynamic nature of
the system as is the case with dynamic software adaptation.
      </p>
      <p>
        Software architecture discovery approaches can be
classified into dynamic, static, and hybrid, i.e., combining both
dynamic and static analysis. Some examples of static analysis
approaches include [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ][
        <xref ref-type="bibr" rid="ref4">4</xref>
        ][
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] and examples of hybrid
approaches are [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ][
        <xref ref-type="bibr" rid="ref30">30</xref>
        ]. However, as the objective of this paper
is discovering architectural models at runtime, we shall focus
only on dynamic approaches as follows.
      </p>
      <p>
        Israr et al. [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] describe SAMEtech, a dynamic approach for
automating the discovery of architecture models and layered
performance models from message trace information.
DiscoTect [
        <xref ref-type="bibr" rid="ref31">31</xref>
        ] uses a set of pattern recognizers and knowledge
of the architectural style being implemented to map
lowlevel system events into high-level architecturally meaningful
events. Bojic and Velasevic [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] use test cases that cover
relevant use-cases, and concept analysis to group system entities
together that implement similar functionality. Vasconcelos et
al. [
        <xref ref-type="bibr" rid="ref33">33</xref>
        ] use specified use-cases to generate execution traces
from which interaction patterns are identified using pattern
detection in order to define architectural elements. Yuan and
Malek [
        <xref ref-type="bibr" rid="ref35">35</xref>
        ] take a dynamic approach to discovering the
architectural model of a distributed application by generating a
component interaction model using data mining. Huang et al.
[
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] use the reflective ability of the component framework to
discover an up-to-date architecture from the running system.
In contrast to the aforementioned, DeSARM is based on a
decentralized approach to architecture discovery. This approach
is effective for large distributed systems which pose scalability,
single point of failure and dynamicity concerns, which are not
addressed by the existing methods.
      </p>
      <p>
        Also related to our work is architecture-based software
dynamic adaptation, which addresses the dynamic software
reconfiguration of the architecture model and corresponding
implementation for the purpose of runtime adaptation and
evolution (see e.g., [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ], [
        <xref ref-type="bibr" rid="ref34">34</xref>
        ]).
      </p>
    </sec>
    <sec id="sec-3">
      <title>III. ASSUMPTIONS</title>
      <p>This paper makes the following assumptions:
1) If a component fails, it is restarted on the same node
if the node is still running. This is common in modern
component-based systems whereby components can be
restarted when they are detected to have failed.
2) If a node fails, all the components running on that node
fail. This assumption is obvious and does not require
further comments.
3) If a node cannot be restarted after a failure, its
components can be moved to other node(s) using an existing
component recovery mechanism not within the scope of
this work. This assumption is based on existing work on
a runtime application recovery mechanism with which
DeSARM is being integrated. See Section VII.
4) Software components can communicate either through
a connection-less transport protocol such as UDP or a
connection-oriented protocol such as TCP. Both types
of communication are common in distributed systems
and DeSARM supports either.
5) The software architecture is not known because it may
dynamically change due to churn and failures. As
explained in the introduction, this is the focus of this work.
6) The software deployment on physical nodes is not
known. The set of nodes on which the software system is
deployed is not assumed to be known and is discovered
by DeSARM.</p>
      <p>IV. SOFTWARE ARCHITECTURE DISCOVERY METHOD
This section discusses DeSARM’s architecture. We first
describe the structure of a node running DeSARM. Then, we
give an overview of how gossiping and message tracing are
incorporated into the discovery process. We then delve into
the details of the architecture model discovery method.</p>
      <p>A node in a distributed system consists of three layers
according to Fig. 1: application layer, DeSARM layer, and
communication middleware. The application layer consists
of the distributed application components that communicate
over the network via messaging events. Each component has
two logs: message sent log (MSL) and message received log
(MRL) as shown in Fig. 2. The DeSARM layer forms a
wrapper around the communication middleware and provides
the same interface to the application layer components as the
communication middleware. DeSARM consists of a number
of modules each providing different functionality (see Fig.2):
Message logging: All incoming messages are logged
before being passed to the application layer components and
all outgoing messages are logged before being passed to
the communication middleware. All messages are logged
to stable storage.</p>
      <p>Message log aggregation: The MSLs and MRLs of all
components are aggregated to form an aggregate
message log (AML) at each node. The AML contains the
interactions between all components and their respective
destination components. This is further merged with the
AMLs from incoming gossip messages received from
other nodes (see below).</p>
      <p>Gossip-based dissemination: This forms the core of our
architecture discovery method and enables the
distribution of AMLs from each node throughout the system.
Peer node selection: This is achieved through the
maintenance of a component/node database which is derived
by identifying component IDs and their related node IDs
from incoming and outgoing messages. This ensures that
only nodes running components that are part of the same
application are selected for dissemination.</p>
      <p>Control: The DeSARM controller manages the execution
of the gossip process by maintaining the timing between
consecutive rounds.</p>
      <p>Architecture discovery: This is used to derive the
architectural model of the system based on the message traces.
Finally, the communication middleware provides network
access allowing the sending and receiving of component-level
and gossiping messages between nodes.</p>
      <p>
        Gossip is an epidemic protocol, which due to its simplicity,
robustness and flexibility makes it ideal for reliable
dissemination of data in large-scale distributed systems. In
gossipbased dissemination, data spreads exponentially fast and takes
O (logN) rounds to reach all N nodes [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. The essence
of this approach, which lies at the core of all gossip-based
dissemination approaches, was first introduced in the seminal
!!!!"##$%&amp;#'()'*&amp;+,*'-) &amp;&amp;&amp;&amp;&amp;!"##$%&amp;*'.'$/'*&amp;+,*'-)&amp;
&amp;&amp;&amp;&amp;0%''*&amp;12&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp; &amp;&amp;&amp;&amp;&amp;0%''*&amp;32&amp;
!!!!)"&amp;'/'*4&amp;!"56'&amp;7($+#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*'.'%5"(&amp;"8&amp;*'97'#+&amp;8*"6&amp;1&amp;
!!!!!""!#$%$&amp;'!$(&amp;)*+,$!-*.'+$.!
!!!!!!!!!#"$"%&amp;'&amp;()*&amp;&amp;+,-."
!!!!!""!-./&amp;$$0!'/!$(&amp;)*+,$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""!.$&amp;$12$!3$##*,$!
!!!!!!!!!%&amp;/0,#1"234-."""""""""""""""""""""""""""""""""""""""""""""""""""""""""234*"$"+&amp;(&amp;56&amp;7+89,*-."
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!
! ! ! !!!!!!!!!!!!!!!!#!!!!!!!!!!!!!!!
!!!!""!4*1'!5/.!.$#-/+#$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""!-./&amp;$$0!'/!$(&amp;)*+,$!
!!!!!!!!234#"$"+&amp;(&amp;56&amp;7+89,#-.""""""""""""""""""""""""""""""""""""""""%&amp;/0,*1"234-."
!!!""!3$.,$!678#!'/!,$'!+$4!*,,.$,*'$0!678!!!!!!!!!!!!!""3$.,$!678#!'/!,$'!+$4!*,,.$,*'$0!678!
!!!!!!!"234"$"9&amp;+:&amp;48:%,2341"234#-.&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;234"$"9&amp;+:&amp;48:%,2341"234*-."
!!!!'()&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;'()&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;
paper by Demers et al. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] and involves the dissemination of
data by allowing randomly chosen pairs of nodes to exchange
new information. After the exchange, the two nodes forming
a pair should have the same information effectively reducing
the entropy of the system [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ].
      </p>
      <p>
        The main elements of the gossip-based dissemination
framework are: (1) peer selection, where a peer (node) selects
another peer uniformly at random from the set of available
peers, (2) data exchanged, which involves the exchange of
data between peers and is specific to the use of the gossip
mechanism, and (3) data processing, which details how each
peer handles the information received from other peers and
is also specific to the use of the gossip mechanism [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ].
DeSARM’s gossip-based dissemination is depicted in Fig. 3
and consists of:
      </p>
      <p>Peer selection: A peer P periodically chooses another
peer Q uniformly at random from the set of peers that
participate in the same application, i.e., DeSARM uses
selective gossiping.</p>
      <p>Data exchanged: The AML is sent from one peer to
another.</p>
      <p>Data processing: The received AML is merged with the
local AML at each node to produce an updated AML.</p>
      <p>Once a node detects that there are no further updates to the
gossiped AMLs, it assumes that convergence was reached and
a complete software architecture can be derived.</p>
      <p>Each log entry in the MSL or MRL has the following fields:
Timestamp
Destination Type: single destination (SD) or multiple
destination (MD)
Message Type (mt): request reply (RQ), no-reply
requested (NR), a reply to previous request (RP)
Transaction ID
Message Unique ID (mid)
Return ID: equals 0 if mt 6= RP, otherwise equals “mid”
of original request message
Source Component: component sending the message
Destination Component: component receiving the
message
Source Node ID: ID of sending node</p>
      <p>Destination Node ID: ID of receiving node</p>
      <p>The MRL and MSL for each component are scanned and
the interaction patterns for these messages are identified. The
following types of messages are considered: Reply requests
(RQ), No-reply requests (NR), and Replies (RP).</p>
      <p>
        These message types allows us to identify synchronous
vs asynchronous interactions. In the former case, since reply
messages are guaranteed to have a request, then the original
request reply message and its associated reply message are
treated as a single synchronous interaction (SY). If the original
message was sent as a unicast (SD) then the tuple (source,
destination, SY, SD) is added to the AML. Otherwise, if the
original message was sent as a multicast (MD), then the tuple
(source, destination, SY, MD) is added to the AML. No-reply
requested messages on the other hand are treated as
asynchronous interactions (AS) and added to the AML as (source,
destination, AS, SD) if the message was sent as a unicast, or
(source, destination, AS, MD) if the message was multicasted.
The AML is treated as a set so only unique tuple entries are
allowed for each component interaction, irrespective of the
frequency of such interactions in the message logs because
a software architecture does not consider how many times
a certain type of interaction occurred between components.
Further details on the algorithms implemented by DeSARM
can be found in [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ].
      </p>
      <p>
        After each round of gossiping, the updated AML is used to
incrementally discover the architecture, which is represented
as a labeled directed graph. The vertices of this graph
correspond to unique component ids and the edges correspond
to unique component interactions. Edges are labeled with the
interaction patterns (SY or AS) and destination types (SD or
MD). Further details on this process can also be found in [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ].
      </p>
      <p>To depict how DeSARM works, we use an example
architecture of a distributed emergency monitoring system (see
Fig. 4). The architecture consists of five types of components
with three instances each of the Monitoring Sensor and
RemoteSystem Proxy components, and a single instance of the
other components. This example assumes that each component
is assigned to a single node. When referring to components we
mean component instances unless otherwise mentioned. The
communication patterns within the system are:</p>
      <p>Operator Presentation sends synchronous messages with
reply to Alarm Service and Monitoring Data Service.
!"#$%"&amp;$#'(</p>
      <p>)*#+"&amp;(
,"-."#*#%( 6);():(
Alarm Service and Monitoring Data Service send
asynchronous multicast messages to Operator Presentation.
Monitoring Sensor and Remote System Proxy send
asynchronous unicast messages to Alarm Service and
Monitoring Data Service.</p>
      <p>The discovered architecture model corresponding to Fig. 4 is
the graph shown in Fig.5. This shows the five component types
of the system and their respective communication patterns as
edge labels, which would have been derived by the architecture
discovery process.</p>
    </sec>
    <sec id="sec-4">
      <title>V. DESARM IMPLEMENTATION AND EXPERIMENTS</title>
      <p>
        DeSARM was implemented in Java, and was developed by
extending an open source implementation of gossip [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] that
manages a list of nodes on a network for cluster membership.
We extended the open source gosssip implementation by
adding the core functionality of DeSARM, as described in
Section IV above, as well as incorporated push-pull based
gossip (discussed further below). We emulated a distributed
system by implementing each node of the distributed system
on a different virtual machine (VM) and spread the VMs
over physical machines connected over a network. The VMs
communicate over TCP/IP so they can be located anywhere on
the network. The DeSARM implementation is heavily
multithreaded with different functions of DeSARM implemented as
different threads. Some examples of threads include sending
and receiving of gossip messages, message log aggregation,
architecture discovery, component/node database maintenance,
and sending and receiving of component messages. All the
communication between nodes uses Java sockets. DeSARM
modules normally communicate using UDP, however if gossip
exchanges become too large, resulting in message
fragmentation in multiple packets, TCP is used to guarantee message
integrity.
      </p>
      <p>Our experiments demonstrate the operation of DeSARM
and assess its convergence and the number of messages
exchanged by the DeSARM middleware. Two sets of
experiments were completed. In the first experiment, two types
of tests were conducted. In the first test, there were no
component/node failures. In the second test, we added random
failures with subsequent recovery for each of the components.
This second test reveals the impact of failures on the
convergence of DeSARM to the final architecture. In the second
experiment, the scalability of the mechanism is examined.</p>
      <sec id="sec-4-1">
        <title>A. Experiment I</title>
        <p>
          We use the application described in Fig. 4, whose
architecture is known, and show that DeSARM converges exactly
to that known architecture. Table I shows the mapping
between nodes, components, and physical machines for this
architecture. As discussed above, the known and discovered
architectures are represented as graphs; we compare the
similarity between the two (the known and current version of the
discovered architecture) over time. For that, we use the graph
comparison algorithms proposed in [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ][
          <xref ref-type="bibr" rid="ref36">36</xref>
          ][
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] and a graph
similarity metric that ranges from 0 to 1, where 0 indicates
no similarity and 1 indicates that the two graphs are identical.
The use of graph comparison using the similarity measure is
only for convergence checking during the experiments and is
not part of DeSARM’s implementation. We plot the evolution
of the similarity metric over time to display the convergence
speed of the discovery mechanism.
        </p>
        <p>Figure 6 shows how the architecture converges over time
to the known architecture at each of the nodes shown in
Table I under a no-failure case. Different nodes converge at
different rates but at time 80 sec all nodes have converged
to the correct software architecture. Nodes 6 and 9 are the
first to converge and node 7 is the last. Note that in our
implementation of gossiping, each time a node i sends a gossip
message to node j, node j replies with a gossip message.
This way, two nodes will exchange AMLs more often, leading
to faster convergence. Because of the random nature of peer
selection in the gossip protocol, some nodes may gossip more
often with others, leading to different convergence rates among
nodes. Additionally, the convergence rate is affected by the
communication pattern among components.</p>
        <p>Figure 7 shows the evolution of the architecture similarity
when components fail. As the figure shows, failures start to
occur after the first 80 sec, before convergence was achieved.
In fact, the value of the similarity metric was equal to 0.9375
(i.e., &lt; 1) at all nodes at t = 80 sec. The failure probability of
each component, while processing, is set at 20% (a relatively
high value) and the average component down time is set at
180 seconds. Thus, at approximately t = 260 sec, the failed
components will start to recover from the failure and resume
sending messages. DeSARM automatically resumes its
message collection and gossiping of newly updated AMLs when
components start to recover. When that happens, convergence
Fig. 6. Architecture similarity at the 9 nodes as a function of time with no
failures.</p>
        <p>!#
(!#
$!!#
$(!#
%(!#
&amp;!!#
&amp;(!#</p>
        <p>'!!#
%!!#
4%+')/2'#3)
-./0#&amp;#
-./0#+#
-./0#$#
-./0#)#
-./0#%#
-./0#*#
-./0#'# -./0#(#
-./0#,#
is achieved as illustrated in Table II, which shows the times at
which nodes 1-9 converge after failure recovery. As shown in
Table II, node convergence times are spread between t = 340
sec and t = 400 sec.</p>
        <p>Figures 6 and 7 are representative of similar results we
obtained in other experiments.</p>
        <p>Table III shows the number of gossip messages sent and
received per node until convergence is achieved in the case
when failures do not occur and in the case when failures occur.
As the table shows, the average number of sent and received
gossip messages when no failures occur is almost 1/3 of the
corresponding number when there are failures.</p>
        <p>For illustration and debugging purposes, each node collected
an event log (not part of DeSARM) during the experiments.
Entries in these logs are timestamped in nanoseconds and
correspond to events such as sending application-level messages,
sending/receiving DeSARM gossip messages, and computing
architecture similarity metrics. At the end of the experiment,
the event logs of all nodes were sort-merged offline to produce
a single log. Figure 8 shows a few excerpts of this log. The first
two entries of this log show application-level messages sent
by component MSC at Node 1 to components ArmS (at Node
6) and MDS (at Node 8). The next two entries correspond
to similar messages sent by MSC2 at Node 2, to components
ArmS and MDS. Later in time, DeSARM at Node 1 sends a
gossip message to Node 8 with Node 1’s current view of the
AML, namely [(MSC,ArmS,AS,SD), (MSC,MDS,AS,SD)].
This view only reflects the messages that component MSC
at Node 1 sent to nodes 6 and 8. Later in time,
DeSARM at Node 8 receives the following gossip message from
Node 4: [(RSP,ArmS,AS,SD), (RSP, MDS,AS, SD), (MDS,
OP, AS, MD), (MSC3,MDS,AS,SD), (MSC2,MDS,AS,SD),
(ArmS,OP,AS,MD), (MSC3, ArmS, AS, SD), (OP, ArmS, SY,
SD), (MSC2, ArmS, AS, SD)]. As a result, Node 8’s similarity
metric becomes 0.6875. Later in time, Node 8 receives a gossip
message from Node 9 with an AML that reflects Node 9’s
current view of the architecture. This AML is aggregated with
Node 8’s AML resulting in an AML that reflects the entire
software architecture. When the similarity metric for Node 8
is next computed, it shows a value of 1, indicating convergence
at Node 8.</p>
      </sec>
      <sec id="sec-4-2">
        <title>B. Experiment II</title>
        <p>
          To test the scalability of the approach we tested DeSARM
on Argo [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ], a high performance computing cluster operated
by the Office of Research Computing at George Mason
University. For this purpose, we put together a synthetic
application with 30 components, each one of them residing
on a different node of the research cluster. Some components
have a synchronous communication interface only, sending
and receiving only synchronous messages, some have an
asynchronous communication interface only, sending and
receiving only asynchronous messages, while others comprise
both synchronous and asynchronous interfaces, sending
synchronous messages and receiving asynchronous messages or
9004AC3S1.(4-;-4(
6-,,38-,(
vice versa. All communication between components take place
at a random time interval to emulate local processing between
message exchanges.
        </p>
        <p>Each component communicates with only two other
components so that the initial AML at each node is a very small
fraction of the complete AML. Therefore, the value of the
similarity metric is very small to begin with. It starts at zero in
some cases, when components on a node send a synchronous
message to another component and have to wait for the reply.
This way the DeSARM instance at each node would require
more information to derive the complete architectural model
than in the previous experiment.</p>
        <p>The convergence time at the 30 nodes varied significantly
due to the randomness in message exchange. The node that
took the longest time to converge converged in 260 sec (i.e.,
4.3 minutes) as shown in Table IV. This table shows the
progression of the similarity metric over time. The table also
shows that the rate of convergence, roughly defined as the
increase in convergence over time is slower at the beginning
and faster at the end. For example, after 58% of the time, the
similarity metric has only achieved the value of 0.27. At 85%
of the time, the similarity metrics achieved 0.73. While the
slowest node to converge took over four minutes, the fastest
took 30 seconds.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>VI. DISCUSSION</title>
      <p>We discuss here some additional issues of interest, some of
which are being addressed in ongoing work.</p>
      <p>
        The first issue we address is whether DeSARM’s
selective gossiping mechanism always converges, i.e., if there
is the possibility of different nodes converging to different
discovered architectural models. To address this issue and to
ensure convergence, we employed anti-entropy based gossip
in DeSARM. In anti-entropy gossip, the gossiping protocol
runs indefinitely albeit at specified regular intervals [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ]; this
means that all nodes continuously make gossip exchanges.
Because gossiping never stops, updates will reach all nodes and
the system will always eventually converge. However, such
a mechanism can result in unnecessary message exchanges
especially if no architectural changes have taken place within
the system. This problem is exacerbated in large distributed
systems. To address this issue we adjusted the protocol to
gradually decrease the gossip rate when no new updates
to the AML have been detected over a period of time. Then,
when an update is received, the original gossip rate is restored
to speedup convergence.
      </p>
      <p>The second issue is the relationship between gossip
convergence speed and the gossip rate . A higher value of implies
faster convergence at the cost of higher message overhead.</p>
      <p>Other factors such as system size, component communication
patterns, and gossip mode (see below) also affect convergence
speed. For example, convergence speed is generally affected
by the communication pattern among components, including
how often they communicate and the number of components
they communicate with. Two modes of gossiping can be used:</p>
      <p>Time (sec)
Similarity Metric
push gossip (where a peer sends a message but does not to failures. These properties were demonstrated through
varireceive one in return) vs. push-pull gossip (where a peer sends ous experiments, with and without component failures. These
a message and receives one in return). Our implementation experiments assessed the rate of convergence of the DeSARM
of DeSARM uses push-pull gossip, which accelerates conver- nodes towards the software architecture being discovered.
gence. These experiments showed that DeSARM is resilient and</p>
      <p>The third issue is the implication of dynamic architectural is able to discover the architecture even in the presence of
changes during gossiping and how it affects convergence. We failures, albeit at a lower pace than the one when no failures
are currenty addressing this issue through the integration of occur. DeSARM was implemented in Java using a
multiDeSARM with an application recovery layer that runs above threaded architecture.</p>
      <p>
        DeSARM and provides DeSARM with updates to events that In future work we plan to examine DeSARM’s capability
cause architectural changes. Examples of such events include of discovering architectures that change over time as in the
component failures as well as component removal due to adap- case of dynamic software adaptation [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. This work will
tation. When such events occur, this layer informs DeSARM examine different recovery and adaptation models as well as
of the affected component(s). Due to the decentralized nature dynamic components, i.e., components that change their
comof DeSARM, this update can be received at any node. Upon munication patterns at runtime based on their state or phase
receipt, the node will remove from its AML all entries related of execution, and the impact on DeSARM. Also of interest,
to the removed component(s) that contain the component(s) is addressing the mechanism’s capacity for discovering the
as a sender or receiver and use gossip to propogate these full behavioral architecture of a system such as identifying
deletions to other nodes within the system. Note that archi- component interaction protocols.
tectural changes that result in new components being added In the current experiments, we used a fixed architecture to
are handled automatically by DeSARM as described here. illustrate how DeSARM converges with and without failures
      </p>
      <p>
        The fourth issue is the overhead of the gossip mechanism and how it operates equally well with two or thirty physical
in relation to both network traffic as well as latency in the machines. In the future, we will run experiments in which a
vasending and receiving of component messages. DeSARM has riety of software architectures are generated following certain
very little network overhead for two reasons: the size of the distributions for parameters such as number of components
AMLs and its use of selective gossiping. As the AMLs contain and communication pattern types.
only unique tuple entries of component interactions, the size As mentioned previously, DeSARM is being integrated
of the AMLs are kept small. This in effect reduces the overall with an existing application recovery mechanism (ARM) that
bandwidth needed for gossip exchanges. Also, as mentioned allows for the runtime recovery of component(s) due to node
earlier, selective gossiping allows for the containment of failure [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Through the peer sampling capability of gossip
network traffic to only those nodes that are part of the same [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], DeSARM is able to identify suspected node failures and
application which further reduces the communication overhead alert the ARM. Once the node failure has been verified, the
of the mechanism. With respect to the latency of component ARM proceeds to recover the failed component(s) to a new
messaging, DeSARM can keep it at a minimum because, as node and re-instantiates them based on the current architecture
previously mentioned, all major functionality is separated into provided by DeSARM. As a result of the decentralized nature
different threads. This allows for all other processing to take of DeSARM, component recovery can be initiated from any
place in the background thus reducing any major impact the node as each maintains a complete model of the architecture.
gossip mechanism will have handling component messages. This integration will allow for the development of applications
that are resilient to failures.
      </p>
    </sec>
    <sec id="sec-6">
      <title>VII. CONCLUDING REMARKS</title>
      <p>This paper described DeSARM, a completely decentralized
and automated approach for software architecture discovery
of distributed systems based on gossiping and message
tracing. Through message tracing, DeSARM is able to identify
important architectural characteristics such as components
and connectors in addition to synchronous and asynchronous
communication patterns. Furthermore, through the use of
gossiping, DeSARM exhibits the properties of scalability,
global consistency among participating nodes, and resiliency</p>
    </sec>
    <sec id="sec-7">
      <title>ACKNOWLEDGEMENTS This work was partially supported by the AFOSR grant FA9550-16-1-0030 and the Office of Research Computing at George Mason University.</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Albassam</surname>
          </string-name>
          ,
          <string-name>
            <surname>Emad</surname>
          </string-name>
          , et al. “
          <article-title>Model-based Recovery Connectors for SelfAdaptation and Self-Healing</article-title>
          .
          <source>” Proc. 11th Intl. Joint Conf. Software Technologies (ICSOFT</source>
          <year>2016</year>
          ),
          <source>July 24-26</source>
          ,
          <year>2016</year>
          , Lisbon, Portugal.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>[2] http://orc.gmu.edu/research-computing/argo-cluster/</mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Bojic</surname>
          </string-name>
          , Dragan, and Dusan Velasevic. “
          <article-title>A use-case driven method of architecture recovery for program understanding and reuse reengineering</article-title>
          .
          <source>” IEEE Conf. Software Maintenance and Reengineerig</source>
          ,
          <year>2000</year>
          , pp.
          <fpage>23</fpage>
          -
          <lpage>32</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Corazza</surname>
          </string-name>
          , Anna, Sergio Di Martino, and Giuseppe Scanniello.
          <article-title>“A probabilistic based approach towards software system clustering</article-title>
          .
          <source>” IEEE 14th Conf. Software Maintenance and Reengineering</source>
          ,
          <year>2010</year>
          , pp.
          <fpage>88</fpage>
          -
          <lpage>96</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Demers</surname>
          </string-name>
          ,
          <string-name>
            <surname>Alan</surname>
          </string-name>
          , et al. “
          <article-title>Epidemic algorithms for replicated database maintenance</article-title>
          .
          <source>” Proc.Sixth Annual ACM Symp</source>
          .
          <article-title>Principles of distributed computing</article-title>
          .
          <source>ACM</source>
          ,
          <year>1987</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>Dulman</surname>
          </string-name>
          , Stefan, and Eric Pauwels. “
          <string-name>
            <surname>Self-Stabilized Fast</surname>
          </string-name>
          Gossiping Algorithms.” ACM Tr.
          <source>Autonomous and Adaptive Systems (TAAS)</source>
          ,
          <volume>10</volume>
          .4 (
          <year>2015</year>
          ):
          <fpage>29</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Esfahani</surname>
          </string-name>
          , Naeem, Eric Yuan,
          <string-name>
            <surname>Kyle</surname>
            <given-names>R</given-names>
          </string-name>
          , Canavera and
          <string-name>
            <given-names>Sam</given-names>
            <surname>Malek</surname>
          </string-name>
          . “
          <article-title>Inferring Software Component Interaction Dependencies for Adaptation Support</article-title>
          .””ACM Tr.
          <source>Autonomous and Adaptive Systems (TAAS)</source>
          ,
          <volume>10</volume>
          .4 (
          <year>2016</year>
          ):
          <fpage>26</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Ewing</surname>
          </string-name>
          , John, and Daniel A. Menasce´, “
          <article-title>A Meta-controller method for improving run-time self-architecting in SOA systems</article-title>
          ,
          <source>” Proc. 5th ACM/SPEC Intl. Conf. Performance Engineering (ICPE</source>
          <year>2014</year>
          ), Dublin, Ireland, March
          <volume>23</volume>
          -26,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Foggia</surname>
            , Pasquale,
            <given-names>Carlo</given-names>
          </string-name>
          <string-name>
            <surname>Sansone</surname>
          </string-name>
          , and Mario Vento.
          <article-title>“A performance comparison of five algorithms for graph isomorphism</article-title>
          .
          <source>” Proc. 3rd IAPR TC-15 Workshop on Graph-based Representations in Pattern Recognition</source>
          .
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Garlan</surname>
          </string-name>
          ,
          <string-name>
            <surname>David</surname>
          </string-name>
          , et al. “
          <article-title>Rainbow: Architecture-based self-adaptation with reusable infrastructure</article-title>
          .
          <source>” Computer</source>
          <volume>37</volume>
          .10 (
          <year>2004</year>
          ): pp.
          <fpage>46</fpage>
          -
          <lpage>54</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Garlan</surname>
            , David, and
            <given-names>Bradley</given-names>
          </string-name>
          <string-name>
            <surname>Schmerl</surname>
          </string-name>
          . “
          <article-title>Using architectural models at runtime: Research challenges</article-title>
          .
          <source>” European Workshop on Software Architecture</source>
          . Springer Berlin Heidelberg,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Gomaa</surname>
          </string-name>
          , Hassan, and Koji Hashimoto,
          <year>2012</year>
          . “
          <article-title>Dynamic self-adaptation for distributed service-oriented transactions</article-title>
          ,
          <source>” Proc. 7th Intl. Symp. Softw. Eng. for Adaptive</source>
          and
          <string-name>
            <surname>Self-Managing</surname>
            <given-names>Systems</given-names>
          </string-name>
          , SEAMS 12. IEEE Press, Piscataway, NJ, USA, pp.
          <fpage>11</fpage>
          -
          <lpage>20</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Gomaa</surname>
          </string-name>
          , Hassan, Koki Hashimoto, Minseong Kim, Sam Malek, and Daniel A. Menasce´,
          <year>2010</year>
          . “
          <article-title>Software adaptation patterns for serviceoriented architectures</article-title>
          ,
          <source>” Proc. 2010 ACM Symp. Applied Computing</source>
          , New York, NY, USA, pp.
          <fpage>462469</fpage>
          . doi:
          <volume>10</volume>
          .1145/1774088.1774185.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>[14] https://code.google.com/archive/p/java-gossip/</mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Huang</surname>
            , Gang,
            <given-names>Hong</given-names>
          </string-name>
          <string-name>
            <surname>Mei</surname>
          </string-name>
          , and
          <string-name>
            <surname>Fu-Qing Yang</surname>
          </string-name>
          . “
          <article-title>Runtime recovery and manipulation of software architecture of component-based systems</article-title>
          .”
          <source>Automated Software Engineering</source>
          ,
          <volume>13</volume>
          .2 (
          <year>2006</year>
          ): pp.
          <fpage>257</fpage>
          -
          <lpage>281</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Israr</surname>
            , Tauseef,
            <given-names>Murray</given-names>
          </string-name>
          <string-name>
            <surname>Woodside</surname>
          </string-name>
          , and Greg Franks. “
          <article-title>Interaction tree algorithms to extract effective architecture and layered performance models from traces</article-title>
          .
          <source>” J. Systems and Software 80.4</source>
          (
          <year>2007</year>
          ): pp.
          <fpage>474</fpage>
          -
          <lpage>492</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Kephart</surname>
            ,
            <given-names>Jeffrey O.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>David</surname>
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Chess</surname>
          </string-name>
          . “
          <article-title>The vision of autonomic computing</article-title>
          .
          <source>” IEEE Computer 36.1</source>
          (
          <year>2003</year>
          ): pp.
          <fpage>41</fpage>
          -
          <lpage>50</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>Kermarrec</surname>
          </string-name>
          ,
          <string-name>
            <surname>Anne-Marie</surname>
            ,
            <given-names>and Maarten Van Steen. ”</given-names>
          </string-name>
          <article-title>Gossiping in distributed systems</article-title>
          .
          <source>” ACM SIGOPS Operating Systems Review 41.5</source>
          (
          <year>2007</year>
          ):
          <fpage>2</fpage>
          -
          <lpage>7</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>Koschke</surname>
          </string-name>
          , Rainer. “
          <article-title>Architecture reconstruction</article-title>
          .”
          <source>Software Engineering</source>
          . Springer Berlin Heidelberg,
          <year>2009</year>
          . pp.
          <fpage>140</fpage>
          -
          <lpage>173</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Koutra</surname>
          </string-name>
          ,
          <string-name>
            <surname>Danai</surname>
          </string-name>
          , et al.
          <article-title>Algorithms for graph similarity and subgraph matching</article-title>
          .
          <source>Technical Report</source>
          Carnegie-Mellon-University,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>Kramer</surname>
          </string-name>
          , Jeff, and Jeff Magee. “
          <article-title>Self-managed systems: an architectural challenge</article-title>
          .
          <source>” Future of Software Engineering</source>
          ,
          <year>2007</year>
          . FOSE'07. IEEE,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <surname>Menasce</surname>
            <given-names>´</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Daniel</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>John</surname>
            <given-names>Ewing</given-names>
          </string-name>
          , Hassan Gomaa, Sam Malek, and Joao P. Sousa, “
          <article-title>A framework for utility-based service-oriented design in SASSY,” First Joint WOSP/SIPEW Intl</article-title>
          .
          <source>Conf. Performance Engineering</source>
          , San Jose, CA, USA, January
          <volume>28</volume>
          -
          <issue>30</issue>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <surname>Menasce</surname>
            <given-names>´</given-names>
          </string-name>
          , Daniel A.,
          <string-name>
            <surname>Hassan</surname>
            <given-names>Gomaa</given-names>
          </string-name>
          , Sam Malek, and
          <string-name>
            <given-names>Joao P.</given-names>
            <surname>Sousa</surname>
          </string-name>
          . ”
          <article-title>SASSY: A framework for self-architecting service-oriented systems</article-title>
          .
          <source>” Software, IEEE 28.6</source>
          (
          <year>2011</year>
          ): pp.
          <fpage>78</fpage>
          -
          <lpage>85</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <surname>Naseem</surname>
            , Rashid,
            <given-names>Onaiza</given-names>
          </string-name>
          <string-name>
            <surname>Maqbool</surname>
          </string-name>
          , and Siraj Muhammad. “
          <article-title>Improved similarity measures for software clustering</article-title>
          .” ,
          <year>2011</year>
          15th
          <string-name>
            <given-names>IEEE</given-names>
            <surname>European</surname>
          </string-name>
          <article-title>Conf</article-title>
          .
          <source>Software Maintenance and Reengineering (CSMR)</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <surname>Oreizy</surname>
          </string-name>
          ,
          <string-name>
            <surname>Peyman</surname>
          </string-name>
          , et al. “
          <article-title>An architecture-based approach to self-adaptive software</article-title>
          .
          <source>” IEEE Intelligent systems 14.3</source>
          (
          <year>1999</year>
          ): pp.
          <fpage>54</fpage>
          -
          <lpage>62</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <surname>Porter</surname>
          </string-name>
          , Jason, Daniel A. Menasce´, and Hassan Gomaa, “
          <source>Decentralized Software Architecture Discovery in Distributed Systems.” Technical Report GMU-CS-TR-2016-2</source>
          , Dept. of Computer Science, George Mason University,
          <year>2016</year>
          . (http://cs.gmu.edu/ tr-admin/
          <article-title>papers/GMU-CS-TR2016-2</article-title>
          .pdf).
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>RASS</given-names>
            <surname>Project</surname>
          </string-name>
          , http://cs.gmu.edu/˜menasce/rass/
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <surname>Riva</surname>
          </string-name>
          , Claudio, and Jordi Vidal Rodriguez. “
          <article-title>Combining static and dynamic views for architecture reconstruction</article-title>
          .
          <source>” Proc. 6th IEEE European Conf. Software Maintenance and Reengineering</source>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <surname>Riviere</surname>
          </string-name>
          , Etienne, and Spyros Voulgaris. “
          <article-title>Gossip-based networking for internet-scale distributed systems</article-title>
          .” E-Technologies:
          <article-title>Transformation in a Connected World</article-title>
          . Springer Berlin Heidelberg,
          <year>2011</year>
          . pp.
          <fpage>253</fpage>
          -
          <lpage>284</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <surname>Sartipi</surname>
          </string-name>
          , Kamran, and Nima Dezhkam.
          <source>“An Amalgamated Dynamic and Static Architecture Reconstruction Framework to Control Component Interactions 259.” 14th IEEE Working Conf. Reverse Engineering</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <surname>Schmerl</surname>
          </string-name>
          ,
          <string-name>
            <surname>Bradley</surname>
          </string-name>
          , et al. “
          <article-title>Discovering architectures from running systems</article-title>
          .” IEEE Tr.
          <source>Software Engineering</source>
          ,
          <volume>32</volume>
          .7 (
          <year>2006</year>
          ): pp.
          <fpage>454</fpage>
          -
          <lpage>466</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32] Taylor, Richard N.,
          <string-name>
            <surname>Nenad</surname>
            <given-names>Medvidovic</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Eric</surname>
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Dashofy</surname>
          </string-name>
          .
          <article-title>Software architecture: foundations, theory, and practice</article-title>
          . Wiley Publishing,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <surname>Vasconcelos</surname>
          </string-name>
          , Aline, and Cludia Werner. “
          <article-title>Software architecture recovery based on dynamic analysis</article-title>
          .
          <source>” Brazilian Symp. on Softw. Engineering</source>
          .
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <surname>Weyns</surname>
          </string-name>
          , Danny, and Tanvir Ahmad. “
          <article-title>Claims and evidence for architecture-based self-adaptation: A systematic literature review</article-title>
          .
          <source>” Software Architecture</source>
          . Springer Berlin Heidelberg,
          <year>2013</year>
          . pp.
          <fpage>249</fpage>
          -
          <lpage>265</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <surname>Yuan</surname>
          </string-name>
          , Eric, and Sam Malek. “
          <article-title>Mining Software Component Interactions to Detect Security Threats at the Architectural Level</article-title>
          .
          <source>” Proc. 13th Working IEEE/IFIP Conf. Software Architecture</source>
          .
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          [36]
          <string-name>
            <surname>Zager</surname>
            ,
            <given-names>Laura A.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>George</surname>
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Verghese</surname>
          </string-name>
          . “
          <article-title>Graph similarity scoring and matching</article-title>
          .”
          <source>Applied mathematics letters 21.1</source>
          (
          <year>2008</year>
          ): pp.
          <fpage>86</fpage>
          -
          <lpage>94</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>