<!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>Studying Expert Initial Set and Hard to Map Cases in Automated Code-to-Architecture Mappings</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Tobias Olsson</string-name>
          <email>tobias.olsson@lnu.se</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Morgan Ericsson</string-name>
          <email>morgan.ericsson@lnu.se</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Anna Wingkvist</string-name>
          <email>anna.wingkvist@lnu.se</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer Science and Media Technology, Linnaeus University</institution>
          ,
          <addr-line>Kalmar/Växjö</addr-line>
          ,
          <country country="SE">Sweden</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>We study the mapping of software source code to architectural modules. Background: To evaluate techniques for performing automatic mapping of code-to-architecture, a ground truth mapping, often provided by an expert, is needed. From this ground truth, techniques use an initial set of mapped source code as a starting point. The size and composition of this set afect the techniques' performance, and to make comparisons, random sizes and compositions are used. However, while randomness will give a baseline for comparison, it is not likely that a human expert would compose an initial set on random to map source code. We are interested in letting an expert create an initial set based on their experience with the system and study how this afects how a technique performs. Also, previous research has shown that when comparing an automatic mapping with the ground truth mappings, human experts often accept the automated mappings and, if not, point to the need for refactoring the source code. We want to study this phenomenon further. Audience: Researchers and developers of tools in the area of architecture conformance. The system expert can gain valuable insights into where the source code needs to be refactored. Aim: We hypothesize that an initial set assigned by an expert performs better than a random initial set of similar size and that an expert will agree upon or find opportunities for refactoring in a majority of cases where the automatic mapping and expert mapping disagrees. Method: The initial set will be extracted from an interview with the expert. Then the performance (precision and recall f1 score) will be compared to mappings starting from random initial sets and using an automatic technique. We will also use our tool to find the cases where the automatic and human mapping disagrees and then let the expert review these cases. Results: We expect to find a diference when performance is compared. We expect the expert review to reveal source code that should be remapped, source code that needs refactoring (e.g., possible architectural violations), and points where the automatic technique needs to be improved. Limitations: The study will only focus on only a single system, which limits the external validity significantly. The protocol for the interaction with the human expert can also introduce validity problems; for example, a mapping presented by an algorithm could be perceived as more objective and thus more acceptable for a software engineer. Conclusions: We seek to improve our understanding of how a human creates an initial set for automatic mapping and its efect on how well an automated mapping technique performs. By improving the ground truth mappings, we can improve our techniques, tools, and methods for architecture conformance checking.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Orphan Adoption</kwd>
        <kwd>Software Architecture</kwd>
        <kwd>Source Code Clustering</kwd>
        <kwd>Naive Bayes</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Creating a mapping from the source code to an
architectural model is perceived as labor-intensive. It
hinders widespread use of Static Architecture Conformance
Checking (SACC) practices such as Reflexion modeling in
industry [
        <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
        ]. A mapping is an assignment of a source
code entity, e.g., a source code file or class, to an
architectural module, e.g., a layer or a sub-system. The
architectural modules and the dependencies between them form
an intended architecture, see Figure 1. The mappings
are used to determine if the dependencies in the source
code conform to or violate the intended dependencies as
described in the architecture, i.e., conformance checking.
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. Background</title>
      <sec id="sec-2-1">
        <title>Current semi-automatic techniques build on the Human</title>
        <p>
          Guided clustering Method (HuGMe) and introduce
different attraction functions that guide the automatic
mapping [
          <xref ref-type="bibr" rid="ref3 ref4 ref5 ref6 ref7">3, 4, 5, 6, 7</xref>
          ]. HuGMe consists of a few essential
steps as described below:
1. An initial set is created manually.
2. The entities to be mapped are determined.
3. The attraction function calculates an attraction
for each entity and module.
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>4. If the attraction of a single module is deemed</title>
        <p>valid, the entity is mapped to this module.</p>
      </sec>
      <sec id="sec-2-3">
        <title>5. If no valid attraction is found, the decision is left to a human user.</title>
        <p>StringChange
?
Entity to be Mapped
Attraction Function</p>
      </sec>
      <sec id="sec-2-4">
        <title>6. If new mappings are made, and there are entities remaining, continue at Step 2. 7. If entities are remaining, let the human user decide a mapping.</title>
        <p>ChangeScanner AttachFileAction</p>
        <p>DOICheck XMLUtil DataBank</p>
        <p>Initial Set of Mapped Entities</p>
        <p>There are some things to note. First, the method is
iterative, as the set of mapped entities can grow, and
more mappings can be done. An initial set is needed to
start the method, i.e., the attraction functions need some
initial mappings to work with, see Figure 2. The human
user is involved in several steps of the method. Thus
it is semi-automatic and human-guided. However, the
focus of most studies has been on the development and
comparison of attraction functions, i.e., the automatic
step of the method.</p>
        <p>
          Related to the performance of a technique is also the
quest for a perfect mapping compared to the ground truth
mappings. Previous research indicates that mappings’
diferences often reveal points where the source code
needs refactoring, or developers made a mistake in the
mapping.
2.1. Initial Set Tzerpos and Holt [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] found that their technique
sugThe attraction functions used in HuGMe all need an ini- gested 46 entities to change mapping compared to the
tial set of pre-mapped entities to work. In general, the developers’ assignment in one of their case studies. The
previous studies have focused on comparing the auto- developers agreed on this new suggested mapping in 33
matic performance, e.g., precision and recall of difer- cases, and the remaining 13 original mappings were
conent functions. In these studies, the initial set has been sidered valid but not optimal. In these 13 remaining cases,
treated as a random variable considering size and com- the developers expressed that restructuring the entities
position [
          <xref ref-type="bibr" rid="ref3 ref4 ref5 ref6">3, 4, 5, 6</xref>
          ]. This assumption is fair in a general was needed to motivate their inclusion in the original
performance comparison. However, it does not necessar- modules. We have previously constructed a heuristic
ily reflect a realistic scenario. for automatic mapping of source code to
Model-View
        </p>
        <p>
          A system expert would not select entities to map at Controller-based architectures [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. We evaluated the
random. Realistically, a system expert user could make a approach on four products in a product-line of games.
careful and well-thought-out initial set, select represen- We compared the automatic mapping to the manual
tative parts of the source code to map, or map everything mapping of 653 entities and found a diference in
mapeasy to map and leave complex cases to the machine. pings in 96 cases. Architectural problems caused 76 of
        </p>
        <p>
          We have previously studied the efect of the initial these. Source code refactorings were suggested and
imset. We found large variations in attraction function plemented for two of the projects covering 23
architecperformance depending on both size and composition of tural problems. An interesting finding is that the most
the initial set: A representative initial set can give good common refactoring was Move Type (12 instances), i.e.,
results even if the set is small, and vice versa [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. Our goal move the type to the correct module. This indicates that
was to help guide a system expert to produce a minimal a perfect automatic mapping is an elusive or even
undebut high-performing initial set with the help of standard sirable target, especially if a system has evolved for some
source code metrics, and we found limited success in time and has accumulated some erosion or drift.
using inheritance-based metrics. However, the results
did not generalize well for diferent subject systems.
        </p>
        <sec id="sec-2-4-1">
          <title>2.3. Attraction Function and Tool</title>
          <p>
            We have previously evaluated and implemented the
attraction functions found in research by Bittencourt et al.
[
            <xref ref-type="bibr" rid="ref3">3</xref>
            ], and Christl et al. [
            <xref ref-type="bibr" rid="ref4">4</xref>
            ] as well as implemented our own
attraction function NBAttract based on machine
learning [
            <xref ref-type="bibr" rid="ref5">5</xref>
            ]. To aid evaluations of attraction functions, we
have set up an open-source tool aimed at allowing
experimentation of diferent parameters and settings [
            <xref ref-type="bibr" rid="ref11">11</xref>
            ].
NBAttract has shown the most promise in our previous
evaluation [
            <xref ref-type="bibr" rid="ref5">5</xref>
            ] and will be the main function used in this
study. Our tool allows us to vary the information the
function uses, and we plan on evaluating diferent
combinations of the following:
• File names and paths.
• Architectural module names.
• Source code dependencies.
• Names of identifiers in the source code, e.g.,
method names, variable names, etc.
          </p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Audience</title>
      <p>The study will be valuable to researchers and developers
of tools in the area of architecture conformance. The
system expert can gain valuable insights into where the
source code needs to be refactored.
4. Aim
We want to know more about how a system expert would
create an initial set of entities for semi-automatic
mapping and the rationale for the specific mappings. This
would give insight into the composition and distribution
of an initial set created by an expert. We also want to
know more about discrepancies in the automatic
mappings compared to system expert mappings. To enable
this, we need to build a broad set of data over multiple
systems and experts. This study would act as a first initial
study towards this goal.</p>
      <p>
        We hypothesize that an initial set assigned by an
expert performs better than a random initial set of similar
size when used by our current best automatic mapping
attraction function, NBAttract [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]
      </p>
      <p>
        We hypothesize that an expert will agree upon or find
opportunities for refactoring in a majority of cases where
the automatic mapping using NBAttract [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] and expert
mapping disagrees.
      </p>
    </sec>
    <sec id="sec-4">
      <title>5. Method</title>
      <p>The study will involve a human that is a system expert
for a subject system. We assume a subject system
implemented in Java with a documented architecture with
1–5
defined architectural modules and allowed dependencies
between these and a mapping from the source code to the
architectural modules. If these do not exist, they need to
be prepared before we can initiate the study. Optimally
we will study these artifacts beforehand.</p>
      <p>We perform the study in three phases. 1. we interview
the expert to create an initial set and the rationale for the
mapping. 2. we conduct experiments to find the
performance of the initial set created by the expert compared
to a random initial set of similar size. During this phase,
we will generate a list of mapping discrepancies for the
automatic mappings. And 3. we will interview the
expert once more. This interview aims at investigating the
mapping discrepancies found in Phase 2.</p>
      <sec id="sec-4-1">
        <title>5.1. Phase 1: Initial Set Creation</title>
        <p>To create an initial set, we will interview the human
expert in a semi-formal way. The interview will be held
online and recorded. There will be an agreement on the
use and handling of the recording. This session will likely
take less time than two hours. The interview protocol
will follow this design.</p>
        <p>1. Introduce yourself and explain that the interview
is recorded and that the expert agrees to this.
2. Explain the purpose of the study and the use of
the data.
3. Ask the expert about their involvement in the
subject system’s development, what role they have,
and the general experience and the time frame of
involvement.
4. Ask the expert about the subject system, its
basic purpose, the end-users, and the architecture:
what is the purpose of the architecture, the
deifned modules and dependencies, and did the
expert create the architecture and mapping? How
were the architecture and mapping created?
5. Explain the mapping scenario and give a rough
outline of how an automatic mapping would work.
6. Ask the system expert for where they would start
to map, any parts that jump to their mind or any
easy to map parts of the system, e.g., whole
directories/packages that can be mapped.
7. For each module in the architecture, ask the
system expert to provide the most typical and
important source code files. Ask why each file is
deemed typical or important. At least 10% of the
ifles should be provided.
8. Ask the expert if there is anything they would
like to add.
9. Thank the expert and explain the remainder of
the study. Book a new interview for Phase 3 to
take place a few days later.</p>
      </sec>
      <sec id="sec-4-2">
        <title>5.2. Phase 2: Experiments</title>
        <p>We perform experiments where the expert’s initial set is
used with diferent combinations of information for the
NBAttract attraction function. If we get diferences in
the initial sets (e.g., typical mappings vs. easy mappings)
based on the first interview, we can compare these
initial sets to each other. For further comparison, we will
use a random initial set combination. Note that for
random initial sets, several hundred experiments are needed, 6. Expected Results
depending on the number of architectural modules, the
number of source code entities, and the size of the ex- We expect to find a diference when we compare
perpert’s initial set. This phase will likely take three days to formance. We expect that the human expert’s initial set
complete. performs better than a random initial set of similar size.</p>
        <p>Experiments will generate the mapping data to calcu- We expect the expert review to reveal source code that
late the precision and recall of the mappings. The data should be remapped, source code that needs refactoring
will also include a record of failed mappings, with the (e.g., possible architectural violations), and points where
name of the source code entity and the failure frequency. the automatic technique needs to be improved.
Depending on the number of failures, a limit may be
needed to not create an overwhelming burden for Phase
3. A suggestion is that a failure rate of more than 50% 7. Limitations
suggests a mapping discrepancy.</p>
        <p>We will consider the expert’s initial set better than a
random initial set if the F1 score is better than the median
F1 score of the random initial sets.
c) Show the automatic mapping results
(several modules may be suggested). Ask if the
expert would consider any of these
mappings valid and why/why not.
5. Ask the expert if there is anything they would</p>
        <p>like to add.</p>
        <p>6. Thank the expert.</p>
        <p>The study will only focus on a single system which
limits the external validity. However, the long-term goal is
to find more systems and experts and perform similar
studies and build and refine the dataset over time. The
protocol for the interaction with the human expert can
5.3. Phase 3: Validation of Mapping also introduce validity problems; for example, a mapping</p>
        <p>Discrepancies presented by an algorithm could be perceived as more
We will investigate the generated mapping discrepancies objective and thus more acceptable than the expert’s
by interviewing the human expert in a semi-formal way. informal knowledge. The expert may also be biased
reThe interview will be held online and recorded. There garding certain parts of the source code that they have
will be an agreement on the use and handling of the been more or less involved in. This will need to be noted
recording. The interview will likely involve looking at in the interview protocol. And, the expert may be biased
source code, so both the expert and researcher should if they have created the original mapping or not, e.g., it
prepare a development environment. If the interview is probably easier to accept a mapping presented by an
session extends over two hours or if the expert expresses algorithm if someone else did the original mapping. This
fatigue, it should be split into several sessions. The inter- has to be noted in the interview protocol.
view protocol will be conducted as follows.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>8. Conclusions</title>
      <sec id="sec-5-1">
        <title>1. Explain that the interview is recorded and that the expert agrees to this. 2. Explain the purpose of the study and the use of the data.</title>
        <p>We seek to improve our understanding of how a human
creates an initial set for automatic mapping and its efect
on how well an automated mapping technique performs.
3. Roughly explain the results from the experiment. Based on what we learn, we can start to explore methods
4. For each mapping discrepancy, let the expert in- that actively suggest initial set candidates. By improving
spect the corresponding source code. the ground truth mappings, we can improve our
techa) Ask if the expert thinks the entity would niques, tools, and methods for architecture conformance
need refactoring or that it contains serious checking.</p>
        <p>problems.
b) Remind the expert of the original mapping
and ask if the expert still agrees to this Acknowledgments
mapping. If not, ask the expert for what
mapping would be more appropriate and The research was supported by the Centre for Data
Intenwhy. sive Sciences and Applications at Linnaeus University.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>G. C.</given-names>
            <surname>Murphy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Notkin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Sullivan</surname>
          </string-name>
          ,
          <article-title>Software reflexion models: Bridging the gap between source and high-level models</article-title>
          ,
          <source>ACM SIGSOFT Software Engineering Notes</source>
          <volume>20</volume>
          (
          <year>1995</year>
          )
          <fpage>18</fpage>
          -
          <lpage>28</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>N.</given-names>
            <surname>Ali</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Baker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. O</given-names>
            <surname>'Crowley</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Herold</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Buckley</surname>
          </string-name>
          ,
          <article-title>Architecture consistency: State of the practice, challenges and requirements</article-title>
          ,
          <source>Empirical Software Engineering</source>
          <volume>23</volume>
          (
          <year>2017</year>
          )
          <fpage>1</fpage>
          -
          <lpage>35</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>R. A.</given-names>
            <surname>Bittencourt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Jansen de Souza Santos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. D. S.</given-names>
            <surname>Guerrero</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. C.</given-names>
            <surname>Murphy</surname>
          </string-name>
          ,
          <article-title>Improving automated mapping in reflexion models using information retrieval techniques</article-title>
          ,
          <source>in: IEEE Working Conference on Reverse Engineering</source>
          ,
          <year>2010</year>
          , pp.
          <fpage>163</fpage>
          -
          <lpage>172</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>A.</given-names>
            <surname>Christl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Koschke</surname>
          </string-name>
          , M.
          <article-title>-A. Storey, Automated clustering to support the reflexion method</article-title>
          ,
          <source>Information and Software Technology</source>
          <volume>49</volume>
          (
          <year>2007</year>
          )
          <fpage>255</fpage>
          -
          <lpage>274</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>T.</given-names>
            <surname>Olsson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ericsson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Wingkvist</surname>
          </string-name>
          ,
          <article-title>Semiautomatic mapping of source code using naive bayes</article-title>
          ,
          <source>in: Proceedings of the 13th European Conference on Software Architecture - Volume 2, ECSA '19</source>
          ,
          <year>2019</year>
          , p.
          <fpage>209</fpage>
          -
          <lpage>216</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A.</given-names>
            <surname>Christl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Koschke</surname>
          </string-name>
          , M.
          <article-title>-A. Storey, Equipping the reflexion method with automated clustering</article-title>
          ,
          <source>in: IEEE Working Conference on Reverse Engineering</source>
          ,
          <year>2005</year>
          , pp.
          <fpage>98</fpage>
          -
          <lpage>108</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>F.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Lian</surname>
          </string-name>
          ,
          <article-title>An improved mapping method for automated consistency check between software architecture and source code</article-title>
          ,
          <source>in: IEEE 20th International Conference on Software Quality, Reliability and Security (QRS)</source>
          ,
          <year>2020</year>
          , pp.
          <fpage>60</fpage>
          -
          <lpage>71</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>T.</given-names>
            <surname>Olsson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ericsson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Wingkvist</surname>
          </string-name>
          ,
          <article-title>Towards improved initial mapping in semi automatic clustering</article-title>
          ,
          <source>in: Proceedings of the 12th European Conference on Software Architecture: Companion Proceedings, ECSA '18</source>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          ,
          <year>2018</year>
          , pp.
          <volume>51</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>51</lpage>
          :
          <fpage>7</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>V.</given-names>
            <surname>Tzerpos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. C.</given-names>
            <surname>Holt</surname>
          </string-name>
          ,
          <article-title>The orphan adoption problem in architecture maintenance</article-title>
          ,
          <source>in: Proceedings of the Fourth Working Conference on Reverse Engineering</source>
          , IEEE,
          <year>1997</year>
          , pp.
          <fpage>76</fpage>
          -
          <lpage>82</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>T.</given-names>
            <surname>Olsson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Toll</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Wingkvist</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ericsson</surname>
          </string-name>
          ,
          <article-title>Evaluation of a static architectural conformance checking method in a line of computer games</article-title>
          ,
          <source>in: Proceedings of the 10th international ACM Sigsoft conference on Quality of software architectures, ACM</source>
          ,
          <year>2014</year>
          , pp.
          <fpage>113</fpage>
          -
          <lpage>118</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>T.</given-names>
            <surname>Olsson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ericsson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Wingkvist</surname>
          </string-name>
          ,
          <article-title>An exploration and experiment tool suite for code to architecture mapping techniques</article-title>
          ,
          <source>in: Proceedings of the 13th European Conference on Software Architecture - Volume 2, ECSA '19</source>
          ,
          <year>2019</year>
          , p.
          <fpage>26</fpage>
          -
          <lpage>29</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>