<!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>A Curated Dataset of Microservices-Based Systems</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Mohammad Imranur Rahman</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Sebastiano P</string-name>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>CLoWEE - Cloud and Web Engineering Group. Tampere University.</institution>
          <addr-line>Tampere. 33720</addr-line>
          ,
          <country country="FI">Finland</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Zurich University of Applied Science (ZHAW)</institution>
          ,
          <addr-line>Zurich, Switzerland https://spanichella.github.io</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2019</year>
      </pub-date>
      <abstract>
        <p>Microservices based architectures are based on a set of modular, independent and fault-tolerant services. In recent years, the software engineering community presented studies investigating potential, recurrent, e ective architectural patterns in microservices-based architectures, as they are very essential to maintain and scale microservice-based systems. Indeed, the organizational structure of such systems should be re ected in so-called microservice architecture patterns, that best t the projects and development teams needs. However, there is a lack of public repositories sharing open sources projects microservices patterns and practices, which could be bene cial for teaching purposes and future research investigations. This paper tries to ll this gap, by sharing a dataset, having a rst curated list microservice-based projects. Speci cally, the dataset is composed of 20 open-source projects, all using speci c microservice architecture patterns. Moreover, the dataset also reports information about inter-service calls or dependencies of the aforementioned projects. For the analysis, we used two di erent tools (1) SLOCcount and (2) MicroDepGraph to get di erent parameters for the microservice dataset. Both the microservice dataset and analysis tool are publicly available online. We believe that this dataset will be highly used by the research community for understanding more about microservices architectural and dependencies patterns, enabling researchers to compare results on common projects.</p>
      </abstract>
      <kwd-group>
        <kwd>First keyword Second keyword Another keyword</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Microservices based architectures are based on a set of modular, independent
and fault-tolerant services, which are ideally easy to be monitored and tested
[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], and can be easily maintained [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] by integrating also user feedback in the loop
[
        <xref ref-type="bibr" rid="ref4 ref9">9,4</xref>
        ]. However, in practice, decomposing a monolithic system into independent
microservices is not a trivial task [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ], which is typically performed manually
by software architects [
        <xref ref-type="bibr" rid="ref13 ref15">15,13</xref>
        ], without the support of tool automating the
decomposition or slicing phase [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. To ease the identi cation of microservices in
monolithic applications, further empirical investigations need to be performed
and automated tools (e.g., based on summarization techniques [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]) need to be
provided to developers, to make this process more reliable and e ective [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].
      </p>
      <p>
        In recent years, the software engineering community presented studies
investigating the potential, recurrent, e ective architectural patterns [
        <xref ref-type="bibr" rid="ref15 ref16">15,16</xref>
        ] and
anti-patterns [
        <xref ref-type="bibr" rid="ref14 ref18 ref19">14,18,19</xref>
        ] in microservices-based architectures. Indeed, the
organizational structure of such systems should be re ected in so-called microservice
architecture patterns, that best t the projects and development teams needs.
However, there is a lack of public repositories sharing open sources projects
microservices patterns and practices, which could be bene cial for teaching
purposes and future research investigations.
      </p>
      <p>
        This paper tries to ll this gap, by sharing a dataset, having a rst
curated list of open-source microservice-based projects. Speci cally, the dataset is
composed of 20 open-source projects, all using speci c microservice architecture
patterns. Moreover, the dataset also reports information about inter-service calls
or dependencies of the aforementioned projects. For the analysis, we used two
di erent tools such as (1) SLOCcount and (2) MicroDepGraph. The
microservice dataset [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] and analysis tool [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] are publicly available online, and detailed
in the following sections.
      </p>
      <p>
        At the best of our knowledge only Marquez and Hastudillo proposed a dataset
of microservices-based projects [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. However, their goal was the investigation of
architectural patterns adopted by the microservices-based projects, and they did
not provided dependency graphs of the services.
      </p>
      <p>We believe that this dataset will be highly used by the research
community for understanding more about microservices architectural and dependencies
patterns, enabling researchers to compare results on common projects.</p>
      <p>Paper structure. In Section 2, we discuss the main background of this
work, focusing on the open challenges concerning understanding an analyzing
microservices-based architectures. In Section 3, we discuss the projects selection
strategy, while in Section4 are described the data extraction process (describing
the tools used and implemented for it) and the generated data. Finally, Section
6 and Section 7, discuss the main threats of concerning the generation of the
generated dataset, concluding the paper outline future directions.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Background</title>
      <p>
        In recent years, the software industry especially the enterprise software are
rapidly adopting the Microservice architectural pattern. Compared to a
serviceoriented architecture, the microservice architecture is more decoupled,
independently deployable and also horizontally scalable. In microservices, each service
can be developed using di erent languages and frameworks. Each service is
deployed to their dedicated environment whatever e cient for them. The
communication between the services can be either REST or RPC calls. So that whenever
there is a change in business logic in any of the services others are not a ected
as long as the communication endpoint is not changed. As a result, if any of
the components of the system fails, it will not a ect the other components or
services, which is a big drawback of monolithic system [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. The clear separation
of tasks between teams developing microservices also enable teams to deploy
independently. Another bene t of microservices is that the usage of DevOps is
simpli es [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. The drawback, is the increased initial development e ort, due to
the connection between services [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>
        As we can see in Figure 1, components in monolithic systems are tightly
coupled with each other so that the failure of one component will a ect the whole
system. Also if there are any architectural changes in a monolithic system it will
a ect other components. Due to these advantages, microservice architecture is
way more e ective and e cient than monolithic systems. Instead of having lots of
good features of microservice, implementing and managing microservice systems
are still challenging and require highly skilled developers [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>Service
ts Aunccoountcs</p>
      <p>c A</p>
      <p>Products
Recommender</p>
      <p>Orders
Monolithic System</p>
      <p>Data
Access</p>
      <p>Database</p>
      <p>API
Gatway</p>
      <p>Message</p>
      <p>Broker
u A
Cetsntrnal mcooncitoring
tsCenuntraollogcAging</p>
      <p>c
t u c A
AcscounntsoSercvice
Products Services
Recomm.Services
Orders Services
Microservices-based System
We selected projects from GitHub, searching projects implemented with a
microservicebased architecture, developed in Java and using docker.</p>
      <p>The search process was performed applying the following search string:
"micro-service" OR microservice OR "micro-service"
filename:Dockerfile language:Java</p>
      <p>Results of this query reported 18,639 repository results mentioning these
keywords.</p>
      <p>We manually analyzed the rst 1000 repositories, selecting projects
implemented with a microservice-architectural style and excluding libraries, tools to
support the development including frameworks, databases, and others.</p>
      <p>
        Then, we created a github page to report the project list [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] and we opened
several questions on di erent forums3 4. Moreover, we monitored replies to
similar questions on other practitioners forums5 6 7 8 to ask practitioners if they were
aware of other relevant Open Source projects implemented with a
microservicearchitectural style. We received 19 replies from the practitioners' forums,
recommending to add 6 projects to the list. Moreover, four contributors send a pull
request to the repository to integrate more projects.
      </p>
      <p>In this work, we selected the top 20 repositories that ful ll our requirements.</p>
      <p>
        The complete list of projects is available in Table 1 and can be downloaded
from the repository GitHub page [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <p>https://www.researchgate.net/post/Do_you_know_any_</p>
      <p>Open_Source_project_that_migrated_form_a_monolithic_architecture_to_</p>
      <sec id="sec-2-1">
        <title>3 ResearchGate.</title>
        <p>microservices</p>
      </sec>
      <sec id="sec-2-2">
        <title>4 Stack</title>
        <p>Over ow
-1</p>
        <p>https://stackoverflow.com/questions/48802787/open5 Stack Over ow -2
https://stackoverflow.com/questions/37711051/example6 Stack Over ow -3
https://www.quora.com/Are-there-any-examples-of-open7 Quora
-1</p>
        <p>https://www.quora.com/Are-there-any-open-source-projectsthat-I-can-see-the-details</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Data Collection</title>
      <p>We analyzed di erent aspects of the projects. We rst considered the size of the
systems, analyzing the size of each microservices in Lines of code. The analysis
was performed by applying the SLOCCount tool9.</p>
      <p>
        Then we analyzed the dependencies between services by applying the
MicroDepGraph tool [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] developed by one of the authors.
4.1
      </p>
      <sec id="sec-3-1">
        <title>SLOCcount</title>
        <p>SLOCcount is an open source tool for counting the e ective lines of code of an
application. It can be executed on several development languages, and enable to
quickly count the lines of code in di erent directories.
4.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>MicroDepGraph</title>
        <p>MicroDepGraph is our in-house tool developed for detecting dependencies and
plot the dependency graph of microservices.</p>
        <p>Starting from the source code of the di erent microservices, it analyzes the
docker les for service dependencies de ned in docker-compose and java source
code for internal API calls. The tool is completely written in Java. It takes two
parameters as input: (1) the path of the project in the local disk and (2) the
name of the project</p>
        <p>We chose to analyze docker-compose les because, in microservices projects,
the dependencies of the services are described in the docker-compose le as
con guration. As the docker-compose is a YML or YAML le so the tool parses
the les from the projects. MicroDepGraph rst determines the services of the
microservices project de ned in the docker-compose le. Then for each service,
it checks dependencies and maps the dependencies for respective services.</p>
        <p>Analyzing only the docker-compose le does not give us all relationships
of the dependencies, as there might be internal API call, for example, using a
REST client. For this reason, we had to analyze the java source code for possible
API calls to other services. As we are analyzing Java microservices project, the
most commonly used and popular framework for building microservices in java
is Spring Boot. In spring boot the API endpoints for services are con gured and
de ned using di erent annotations in java source code. So we targeted these
annotations when parsing java source code. First, we determined the endpoints
for each service by parsing the java source code and looking for the
annotations that de ne the endpoints. For parsing Java source code we used an open
source library called JavaParser10. After getting endpoints for each service we
searched whether there are any API calls made from other services using these
endpoints. Then if there is an API call of one service from another, we map it
as a dependency and add it to our nal graph. After nding all the mapping the</p>
        <sec id="sec-3-2-1">
          <title>9 SLOCcount. https://dwheeler.com/sloccount/</title>
          <p>10 JavaParser. https://javaparser.org/
tool then makes relationships(dependencies) between the services and draws a
directed graph.</p>
          <p>Finally, it generates a graph representation formatted as GraphML le, a
neo4j database containing all the relationships and an svg le containing the
graph.</p>
          <p>Figure 2 shows an example of the output provided by MicroDepGraph on
the project "Tap And Eat".
5</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Dataset production and Structure</title>
      <p>For each project, we rst cloned the repository. Then we executed SLOCcount
independently on each project to extract the number of lines of code. Then we
executed MicroDepGraph to obtain the dependencies between the microservices.
From MicroDepGraph we got GraphML and svg le for each project. To generate
GraphML le we used Apache TinkerPop11 graph computing framework. The
GraphML le is easy to use xml based le where we can specify directed or
undirected graphs and di erent attributes to the graph. Moreover, we can import
the GraphML le in di erent graph visualization platforms like Gephi12. In this
kind of graph visualization tools we can then apply di erent graph algorithms
for further analyzing the graph. We also get SVG image as output so that it can
be easily used for further processing.</p>
      <p>
        Finally, we stored the results in a Github repository [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] as graphml les,
together with the list of analyzed microservice projects. Below is an output of
one of the projects analyzed by MicroDepGraph including the GraphML output,
1 &lt;? xml version =" 1.0 " encoding ="UTF -8 "? &gt;
2 &lt; graphml xmlns =" http: // graphml . graphdrawing . org / xmlns "
xmlns:xsi =" http: // www . w3 . org /2001/ XMLSchema - instance "
xsi:schemaLocation =" http: // graphml . graphdrawing . org / xmlns
http: // graphml . graphdrawing . org / xmlns /1.1/ graphml . xsd " &gt;
3 &lt;key id =" edgelabel " for =" edge " attr . name =" edgelabel " attr .
      </p>
      <p>type =" string " / &gt;
11 Apache TinkerPop http://tinkerpop.apache.org/
12 Gephi https://gephi.org/
4 &lt;graph id="G" edgedefault =" directed "&gt;
5 &lt;node id=" stores " /&gt;
6 &lt;node id=" configserver " /&gt;
7 &lt;node id=" accounts " /&gt;
8 &lt;node id=" customers " /&gt;
9 &lt;node id=" prices " /&gt;
10 &lt;edge id=" stores -&amp; gt; configserver " source =" stores "
target =" configserver " label =" depends "&gt;
11 &lt;data key =" edgelabel "&gt;depends &lt;/ data &gt;
12 &lt;/ edge &gt;
13 &lt;edge id=" accounts -&amp; gt; configserver " source =" accounts "
target =" configserver " label =" depends "&gt;
14 &lt;data key =" edgelabel "&gt;depends &lt;/ data &gt;
15 &lt;/ edge &gt;
16 &lt;edge id=" customers -&amp; gt; configserver " source =" customers
" target =" configserver " label =" depends "&gt;
17 &lt;data key =" edgelabel "&gt;depends &lt;/ data &gt;
18 &lt;/ edge &gt;
19 &lt;edge id=" prices -&amp; gt; configserver " source =" prices "
target =" configserver " label =" depends "&gt;
20 &lt;data key =" edgelabel "&gt;depends &lt;/ data &gt;
21 &lt;/ edge &gt;
22 &lt;/ graph &gt;
23 &lt;/ graphml &gt;</p>
      <p>Listing 1.1: GraphML le</p>
      <p>License. The dataset has been developed only for research purposes. It
includes data elaborated and extracted from public repositories. Information from
GitHub is stored under GitHub Terms of Service (GHTS), which explicitly allow
extracting and redistributing public information for research purposes13.</p>
      <p>The dataset is licensed under a Creative Commons
Attribution-NonCommercialShareAlike 4.0 International license.</p>
    </sec>
    <sec id="sec-5">
      <title>6 Threats to Validity</title>
      <p>We are aware that both SLOCcount and MicroDepGraph might analyze the
projects incorrectly under some conditions. Moreover, regarding SLOCcount we
analyzed only the Java lines of code. We are aware that some project could
contain also code written in other language or that the tool could provide incorrect
results.</p>
      <p>Another important threat is related to the generalization of the dataset. We
selected the list of projects based on di erent criteria (see Section 3). Moreover,
several projects are toy-projects or teaching examples and they cannot possibly
represent the whole open-source ecosystem. Moreover, since the dataset does not
include industrial projects, we cannot make any speculation on closed-source
projects.</p>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>In this paper, we presented a curated dataset for microservices-based systems.
To analyze the microservices projects we developed a tool(MicroDepGraph) to
determine the dependencies of services in the microservices project.</p>
      <p>We analyzed 20 open source microservice projects which include both demo
and industrial projects. The number of services in the projects ranges from 5 to
25. To analyze dependencies we considered docker and internal API calls. Due
to the docker analysis, this tool can analyze any microservice system that uses
docker environment regardless of programming languages or frameworks. But for
the API call, it will only analyze the projects implemented using Spring
framework. As Spring framework is widely used for developing microservice systems.
The dataset is provided as GraphML and SVG les for further analysis.</p>
      <p>
        The output of the tool will allow researchers as well as companies to analyze
the dependencies between each service in microservice project so that they can
improve the architecture of the system. Moreover, di erent considerations and
analysis could be performed with this dataset. As example, researchers could
de ne and validate metrics for microservices [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] or investigate security aspects
such as the risk of information propagation in the services[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        We are planning to extend the tool so that it can analyze microservices
developed in any framework and programming language. Also, we can use machine
learning approach to identify di erent parameters and anomalies in the
architecture of microservice systems. Moreover, we are planning to calculate quality
metrics for microservices, based on [
        <xref ref-type="bibr" rid="ref2 ref21">21,2</xref>
        ]
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Balalaie</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heydarnoori</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jamshidi</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Microservices architecture enables devops: Migration to a cloud-native architecture</article-title>
          .
          <source>IEEE Software 33(3)</source>
          ,
          <volume>42</volume>
          {52 (May
          <year>2016</year>
          ). https://doi.org/10.1109/MS.
          <year>2016</year>
          .64
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Bogner</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wagner</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zimmermann</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Automatically measuring the maintainability of service- and microservice-based systems: A literature review</article-title>
          .
          <source>In: Proceedings of the 27th International Workshop on Software Measurement and 12th International Conference on Software Process and Product Measurement</source>
          . pp.
          <volume>107</volume>
          {
          <fpage>115</fpage>
          . IWSM Mensura '
          <volume>17</volume>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2017</year>
          ). https://doi.org/10.1145/3143434.3143443, http://doi.acm.
          <source>org/10</source>
          .1145/ 3143434.3143443
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Carminati</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ferrari</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Morasca</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taibi</surname>
            ,
            <given-names>D.:</given-names>
          </string-name>
          <article-title>A probability-based approach to modeling the risk of unauthorized propagation of information in on-line social networks</article-title>
          .
          <source>In: Proceedings of the First ACM Conference on Data and Application Security and Privacy</source>
          . pp.
          <volume>51</volume>
          {
          <fpage>62</fpage>
          . CODASPY '11,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2011</year>
          ). https://doi.org/10.1145/1943513.1943522, http://doi.acm.
          <source>org/10</source>
          .1145/ 1943513.1943522
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Grano</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ciurumelea</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Panichella</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Palomba</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gall</surname>
          </string-name>
          , H.C.
          <article-title>: Exploring the integration of user feedback in automated testing of android applications</article-title>
          .
          <source>In: SANER</source>
          . pp.
          <volume>72</volume>
          {
          <fpage>83</fpage>
          . IEEE Computer Society (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Lewi</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fowler</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          : Microservices. www.martinfowler.com/articles/microservices.html (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Martin</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Panichella</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>The cloudi cation perspectives of search-based software testing</article-title>
          .
          <source>In: SBST@ICSE</source>
          . pp.
          <volume>5</volume>
          {
          <issue>6</issue>
          . IEEE / ACM (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Marquez</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Astudillo</surname>
          </string-name>
          , H.:
          <article-title>Actual use of architectural patterns in microservicesbased open source projects</article-title>
          .
          <source>In: 2018 25th Asia-Paci c Software Engineering Conference (APSEC)</source>
          . pp.
          <volume>31</volume>
          {
          <issue>40</issue>
          (Dec
          <year>2018</year>
          ). https://doi.org/10.1109/APSEC.
          <year>2018</year>
          .00017
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Panichella</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Summarization techniques for code, change, testing, and user feedback (invited paper)</article-title>
          .
          <source>In: VST@SANER</source>
          . pp.
          <volume>1</volume>
          {
          <issue>5</issue>
          .
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Panichella</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sorbo</surname>
            ,
            <given-names>A.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guzman</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Visaggio</surname>
            ,
            <given-names>C.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Canfora</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gall</surname>
            ,
            <given-names>H.C.</given-names>
          </string-name>
          :
          <article-title>How can i improve my app? classifying user reviews for software maintenance and evolution</article-title>
          . In: ICSME. pp.
          <volume>281</volume>
          {
          <fpage>290</fpage>
          . IEEE Computer Society (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Rahman</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taibi</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Microservice dataset</article-title>
          . https://github.com/clowee/ MicroserviceDataset (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Rahman</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taibi</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Microservice dependency graph (microdepgraph)</article-title>
          . https: //github.com/clowee/MicroDepGraph (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12. Saarimaki, N.,
          <string-name>
            <surname>Lomio</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lenarduzzi</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taibi</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Does Migrate a Monolithic System to Microservices Decreases the Technical Debt</article-title>
          ? arXiv e-prints arXiv:
          <year>1902</year>
          .
          <volume>06282</volume>
          (
          <year>Feb 2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Soldani</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tamburri</surname>
            ,
            <given-names>D.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heuvel</surname>
            ,
            <given-names>W.J.V.D.:</given-names>
          </string-name>
          <article-title>The pains and gains of microservices: A systematic grey literature review</article-title>
          .
          <source>Journal of Systems and Software</source>
          <volume>146</volume>
          ,
          <issue>215</issue>
          {
          <fpage>232</fpage>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Taibi</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lenarduzzi</surname>
          </string-name>
          , V.:
          <article-title>On the de nition of microservice bad smells</article-title>
          .
          <source>IEEE Software 35(3)</source>
          ,
          <volume>56</volume>
          {
          <fpage>62</fpage>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Taibi</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lenarduzzi</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pahl</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Processes, motivations, and issues for migrating to microservices architectures: An empirical investigation</article-title>
          .
          <source>IEEE Cloud Computing</source>
          <volume>4</volume>
          (
          <issue>5</issue>
          ),
          <volume>22</volume>
          {
          <fpage>32</fpage>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Taibi</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lenarduzzi</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pahl</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Architectural patterns for microservices: a systematic mapping study</article-title>
          .
          <source>8th International Conference on Cloud Computing and Services Science (CLOSER2018)</source>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Taibi</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lenarduzzi</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pahl</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Continuous architecting with microservices and devops: A systematic mapping study</article-title>
          . In: Mun~oz,
          <string-name>
            <given-names>V.M.</given-names>
            ,
            <surname>Ferguson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Helfert</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Pahl</surname>
          </string-name>
          , C. (eds.)
          <source>Cloud Computing and Services Science</source>
          . pp.
          <volume>126</volume>
          {
          <fpage>151</fpage>
          . Springer International Publishing,
          <string-name>
            <surname>Cham</surname>
          </string-name>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Taibi</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lenarduzzi</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pahl</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Microservices anti-patterns: A taxonomy</article-title>
          .
          <source>Microservices - Science and Engineering</source>
          . Springer.
          <year>2019</year>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Taibi</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lenarduzzi</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pahl</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Microservices architectural, code and organizational anti-patterns</article-title>
          .
          <source>Cloud Computing and Services Science</source>
          .
          <article-title>CLOSER 2018 Selected papers</article-title>
          .
          <source>Communications in Computer and Information</source>
          Science pp.
          <volume>126</volume>
          {
          <issue>151</issue>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Taibi</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lenarduzzi</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pahl</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Janes</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Microservices in agile software development: a workshop-based study into issues, advantages, and disadvantages</article-title>
          .
          <source>In: XP Workshops</source>
          . pp.
          <volume>23</volume>
          :
          <issue>1</issue>
          {
          <issue>23</issue>
          :
          <article-title>5</article-title>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Taibi</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Systa</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>From monolithic systems to microservices: A decomposition framework based on process mining</article-title>
          .
          <source>In: 9th International Conference on Cloud Computing and Services Science</source>
          , CLOSER ,
          <year>2019</year>
          . Heraklion (Greece) (
          <volume>05</volume>
          /
          <year>2019</year>
          2019)
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>