<!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>Duplicate management in software documentation maintenance</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Koznov D.V.</string-name>
          <email>d.koznov@spbu.ru</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Luciv D.V.</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Chernishev G.A.</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Saint Petersburg State University</institution>
        </aff>
      </contrib-group>
      <fpage>195</fpage>
      <lpage>201</lpage>
      <abstract>
        <p>Software today is becoming increasingly more complex and extensive, and its documentation is becoming more and more complicated. During the software life cycle documentation tends to accumulate a lot of duplicates due to copy-pasting: first, some text fragment is copied, possibly multiple times, then each copy is modified, possibly in its own way; thus, different copies of the initial fragment become near duplicates. Depending on the document type, duplicates can be either desired or not. In either case, they need to be managed during documentation lifecycle. This paper introduces a duplicate management process and shows how it could be applied in documentation maintenance. An example of duplicate management for industrial documentation is presented.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Software documentation has remained an open problem in the software industry for
the last 50 years. Brooks reported about it in the early 1970s [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], Somerville wrote the
same in the 1990s-2000s [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], Parnas discussed the same problem in 2010s [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Scopus
shows 4800 papers published between 1969 and 2017, which include “software
documentation” as a key word. Research into software documentation is still of high
interest today.
      </p>
      <p>
        One of the important tasks of software documentation development and
maintenance is the text fragment duplicate problem [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. During the software life cycle, the
documentation tends to accumulate numerous duplicates due to copy-pasting. First,
some text fragment is copied (possibly, more than once), then the copies are modified
(possibly, in a number of ways). Thus, various copies of the same text fragment are
produced, which become near duplicates. There is no single opinion on the
duplicates’ role in software documentation. For example, Wingkvist et al. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] consider
duplicates as an undesired redundancy of documentation. Oumaziz et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], Koznov
et al. [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] and others believe that developers should reuse documentation as much as
possible to simplify its maintenance.
      </p>
      <p>
        Following Parnas [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], we consider a particular type of software documentation,
namely reference documents: API documents, reference manuals, user guides, etc.
These documents aim to help the reader to retrieve specific facts and are not meant to
be read from the beginning to the end. Reference documents describe sets of typed
objects such as functions, classes, GUI elements, etc. Consequently, these documents
need to be as uniform as possible. This is the reason why they should inevitably
include many duplicates. In practice, we deal with real-life reference documents, and to
support their unification we need tools for the detection and analysis of existing
duplicates. After the duplicates are detected and analyzed, the documentation requires
changes towards textual uniformity. During this process, the technical writer corrects
the errors and works to increase the clearness, integrity and unambiguity of the
documentation.
      </p>
      <p>
        In our previous studies [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] we suggested an algorithm and a toolkit for
near duplicate detection and analysis. However, no conceptual framework for
duplicate operation was developed. To close this gap, in the current paper we suggest a
duplicate management process and show how it could be applied to reference
documentation maintenance. Also, an example of duplicate management for industrial
documentation is presented.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Related work</title>
      <p>Let us consider the approaches which focus on the problem of duplicates in software
documentation.</p>
      <p>
        Horie et al. [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] view the problem of document duplicates in Java API
documentation. They present a CommentWeaver toolset to support a mechanism for the
modularization of the API documentation. The CommentWeaver is implemented as an
extension of the Javadoc tool, providing new tags for controlling duplicates.
However, near duplicates are not considered, and facilities for duplicate detection are not
provided.
      </p>
      <p>
        Oumaziz et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] perform an empirical study of duplicates in the JavaDoc
documentation of seven open source Java-projects (the so called methods documentation).
A considerable number of duplicates were detected and there was suggested a
classification of duplicates based the on relations of code methods to which documentation
duplicates belong. A proposal for an automatic reuse mechanism extending JavaDoc
was made. The authors consider partial duplicates in the sense that documentation of
the methods may be duplicated partially. However, actually they only consider exact
duplicates.
      </p>
      <p>
        Nosal and Poruban [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] extend the approach from [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] by introducing near
duplicates. In this study, the notion of documentation phrase is used to denote the near
duplicate.
      </p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] Nosal and Poruban present the results of a case study in which they
searched for exact duplicates in internal documentation (source code comments) of an
open source project set. They used a modified copy-paste detection tool originally
developed for code analysis and found a considerable number of text duplicates.
However, near duplicates were not considered in this paper.
      </p>
      <p>
        Wingkvist et al. adapted a clone detection tool to measure document uniqueness in
a collection [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. The authors used the found duplicates for documentation quality
estimation. However, they did not address near duplicate detection.
      </p>
      <p>
        Juergens et al. [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] analyze 28 industrial documents. First, they used a clone
detection tool to find duplicates, then filtered the found duplicates by manually removing
false positives, and performed a classification of the results. Next, the authors discuss
how to use the discovered duplicates and how to detect related duplicates in the
source code. The impact of duplicates on the document reading process is also
studied. The authors note the presence of near duplicates, but do not take them into
account while working with the documentation.
      </p>
      <p>Finally, it should be noted that the problem of duplicates is widely recognized in
the software engineering community. Most studies focus on source code
documentation and requirements. However, other kinds of documentation are not considered.
There is a lack of tool support of reuse techniques, which hinders the practical
application of reuse and duplicate management. The real-life practices of documentation
maintenance which using duplicate analysis are very poor.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Background</title>
      <p>
        In our previous work, we used a token-based code clone detector, Clone Miner toolset
[
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], for exact duplicate detection. A token in the context of text documents is one
single word separated from other words by some separator: ‘.’, ‘(’, ‘)’, etc. Having
exact duplicates detected by Clone Miner, we extract sets of duplicate groups where
clones are located close to each other. We combine these duplicate groups into a
group of near duplicates: every member of this group has one variation to capture
different port numbers [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Then we apply the adaptive reuse technique [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] to
the resulting near duplicates and provide the automatic refactoring of the
documentation. Our toolkit automatically creates a parameterized reusable text fragment
definition for every near duplicate group. After that, it extracts all occurrences of the
group’s members from the document, substituting the invocations of the reusable
element with the actual parameters.
      </p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] we presented a pilot version of a duplicate detection algorithm based on
the n-gramm model (a processing natural language processing technique). The
algorithm showed some interesting results and appeared quite simple. By continuing this
work we hope to overcome the problems of the clone detection approach (low quality
of duplicate detected).
4
      </p>
    </sec>
    <sec id="sec-4">
      <title>Duplicate management process</title>
      <p>
        When dealing with the maintenance of reference documents we consider the
processes of documentation modification and documentation improvement. When software is
modified (new features are added, user interface is changed, etc.), its documentation
needs to be modified correspondingly. However, the documentation also requires
improvements regardless of software modification demands: it is necessary to correct
errors, to restructure and uniform the documentation, to change tools and
technologies, etc. For example, Linux Kernal Documentation is actively being improved at the
moment [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. Below we will give a definition of the duplication management process
and show how it can be used for documentation improvement.
      </p>
      <p>Duplicate management is the process of duplicate detection and analysis with the
corresponding documentation change to correct errors and provide uniformity, which
may or may not include the application of documentation reuse techniques – see fig.
1. Let us briefly consider every phase of the duplicate management process.</p>
      <p>
        The first phase is the automatic duplicate detection of both exact and near
duplicates. For that purpose, the following techniques are used [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]: software clone
detection and natural language processing (in particular, the n-gramm model).
      </p>
      <p>
        The second phase is the manual duplicate analysis and documentation changes. On
the one hand, automatic duplicate analysis produces significant false positives [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
Also, the detected duplicates are very often partially correct: they violate text
structure and are semantically disclosed [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. To resolve these problems a human analysis
is required.
      </p>
      <p>On the other hand, automatically detected duplicates should be analyzed manually
to rewrite the documentation for increasing the level of uniformity and correcting the
errors. Automatically detected duplicates provide a lot of significant information for
these tasks. After the documentation undergoes changes, more duplicates will be
detected.</p>
      <p>
        The third phase is documentation reuse based on the detected duplicates and the
performed by documentation changes. In other words, duplicates could be formally
reused, as described in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. This phase is marked in fig. 1 by a dotted line
because, as was mentioned by Oumaziz et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], documentation development
frameworks provide insufficient reuse support at the moment. Hence, this function is
unavailable for most software development projects and technical writers.
      </p>
      <p>
        Let us consider in detail how the proposed process can improve documentation
quality. For that purpose, we use documentation quality attributes collected in [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], of
which we chose information organization (document structure), format (writing
style), and spelling and grammar. These attributes are most notably improved by
duplicate management.
      </p>
      <p>The first attribute (information organization) is improved as a result of upgrading
document structure in the process of duplicate management. Reference documents
describe typed objects; consequently, they have uniform sections and subsections.
When this is not so, the document structure needs to be redeveloped. Moreover, the
structure of the selected sections should be also uniform even if this structure is not
supported by headings. For example, when describing any API function we need
firstly to give a brief outline of its scope, then describe the parameters, then outputs, etc.
The description of every function in the document must follow the same pattern. Such
patterns include a lot of repeated words and repeated or similar word combinations,
and some functions often share common functionality. As a result, we have a
significant number of near duplicates; to be more precise, we have a hierarchy of such
duplicates. These duplicates could be utilized for the formal reuse of text fragments.</p>
      <p>The second attribute (format) is improved through polishing document language
during duplicate management as picture captions, notes, phrases to introduce
examples, author information, references to other documents, etc. – all these are made
uniform. All these text fragments should be reused across the document. The unification
of document markup features is also carried out (for example, using bold/italic
typeface for terms), because these errors are easily observed during the analysis of
duplicates.</p>
      <p>Documentation</p>
      <p>Automatic duplicate</p>
      <p>detection
Documentation</p>
      <p>Improved</p>
      <p>Documentation
reuse</p>
      <p>Manual duplicate</p>
      <p>analysis
Documentation
changes
Meaningful
reusable text
fragments</p>
      <p>The third attribute (spelling and grammar) is improved when the technical writer
performs duplicate analysis and makes the document uniform. Across this activity a
lot of spelling and grammer errors become obvious and could be corrected.</p>
      <p>
        It is noteworthy that the automatic duplicate detection indicates the numeric
documentation errors as variations in near duplicates. After these errors are corrected, the
reuse amount of the document increases (reuse amount is defined in [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] as the
relation of the length of all duplicates in a document to the document’s size).
      </p>
      <p>
        In fact, many other attributes mentioned in [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], such as accuracy, consistency
(uniformity, integrity), correctness, readability, etc. are indirectly improved by the
duplicate management process as well.
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>Example</title>
      <p>
        We present the results of our pilot application of the duplicate management process
for a user manual of a modelling toolkit. This toolkit provides enterprise architecture
modeling facilities for a big corporation [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. It includes diagram editors allowing to
create and modify models of 10 types. By applying the duplicate management
process, we found that the functionality of diagram creation in five editors is almost the
same (only the names of model types and other small details were different).
However, the corresponding text fragments in the user manual differed significantly. We
uniformed these five text fragments achieving the average of 82% similarity for them.
Similarity is calculated as follows. Firstly, we calculated four similarity values, where
every value is the Levenshtein distance [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] between the first text fragment and one
of the other four fragments. The first text fragment precedes the others in the
document. Secondly, the average similarity is calculated. We classified documentation
changes to be made by means of quality attributes from [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]: information
organization, format, spelling and grammar. Below these changes are described in detail.
• Information organization. When the document was being developed, the four text
fragments were created by the copy-paste of the first one. Nevertheless, the
structure of these text fragments was significantly changed by technical writers. Some
paragraphs came in a different order; the pictures demonstrating duplicated
functionality were presented in these text fragments in a chaotic manner (i.e. sometimes
present, sometimes not). We corrected these problems, making a total of 25
document changes.
• Format. We uniformed the variations in describing the same actions and entities.
      </p>
      <p>For example, there were detected such variations as «After that push Next» and
«After that push button Next». We made 7 document changes in total.
• Spelling and grammar. We corrected syntax errors and uniformed the use of
bold/italic typeface for the terms. In total, we made 15 document changes.
6</p>
    </sec>
    <sec id="sec-6">
      <title>Conclusions</title>
      <p>In this paper, we have presented the duplicate management process for software
reference documentation. In the future, we are going to further explore the process
presented by focusing on its application to various types of reference documents.
Another important research issue is providing the proper tool support of the process. In
particular, documentation change should be integrated with duplicate management
software. Also, reuse techniques should be developed and integrated both with duplicate
management software and documentation development environments.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>F.</given-names>
            <surname>Brooks. The Mythical Man-Month.</surname>
          </string-name>
          Addison-Wesley, Reading, Mass (
          <year>1975</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>I.</given-names>
            <surname>Sommerville</surname>
          </string-name>
          .
          <source>Software Engineering</source>
          , Vol
          <volume>2</volume>
          :
          <article-title>The Supporting Processes, chapter Software Documentation</article-title>
          . Wiley-IEEE Press (
          <year>2002</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>D.</given-names>
            <surname>Parnas</surname>
          </string-name>
          . Precise Documentation:
          <article-title>The Key to Better Software</article-title>
          .
          <source>The Future of Software Engineering:</source>
          <fpage>125</fpage>
          -
          <lpage>148</lpage>
          (
          <year>2010</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>E.</given-names>
            <surname>Juergens</surname>
          </string-name>
          , et al.
          <article-title>Can clone detection support quality assessments of requirements specifications? ICSE (2</article-title>
          ):
          <fpage>79</fpage>
          -
          <lpage>88</lpage>
          (
          <year>2010</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>A.</given-names>
            <surname>Wingkvist</surname>
          </string-name>
          , et. al.
          <article-title>Analysis and visualization of information quality of technical documentation</article-title>
          . ECIME:
          <fpage>388</fpage>
          -
          <lpage>396</lpage>
          (
          <year>2010</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>M.</given-names>
            <surname>Oumaziz</surname>
          </string-name>
          , et. al. Documentation Reuse:
          <article-title>Hot or Not? An Empirical Study</article-title>
          .
          <source>ICSR</source>
          <year>2017</year>
          :
          <fpage>12</fpage>
          -
          <lpage>27</lpage>
          (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>D.</given-names>
            <surname>Koznov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Romanovsky. DocLine</surname>
          </string-name>
          :
          <article-title>A method for software product lines documentation development</article-title>
          .
          <source>Programming and Computer Software</source>
          <volume>34</volume>
          (
          <issue>4</issue>
          ):
          <fpage>216</fpage>
          -
          <lpage>224</lpage>
          (
          <year>2008</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>D.</given-names>
            <surname>Koznov</surname>
          </string-name>
          ,
          <string-name>
            <surname>Luciv D.</surname>
          </string-name>
          , et. al.
          <source>Clone Detection in Reuse of Software Technical Documentation. LNCS</source>
          ,
          <volume>9609</volume>
          :
          <fpage>170</fpage>
          -
          <lpage>185</lpage>
          (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>D.</given-names>
            <surname>Luciv</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Koznov</surname>
          </string-name>
          , et. al.
          <article-title>On fuzzy repetitions detection in documentation reuse. Programming and Comp</article-title>
          . Soft.,
          <volume>42</volume>
          (
          <issue>4</issue>
          ):
          <fpage>216</fpage>
          -
          <lpage>224</lpage>
          (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>D.</given-names>
            <surname>Luciv</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Koznov</surname>
          </string-name>
          , et al.
          <article-title>Detecting near duplicates in software documentation</article-title>
          . Bulletin of the South Ural State University, Series: Math. Mod., Programming and Comp. Soft. Submitted (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>M.Horie</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Chiba</surname>
          </string-name>
          .
          <article-title>Tool Support for Crosscutting Concerns of API Documentation</article-title>
          .
          <source>AOSD</source>
          <year>2010</year>
          :
          <fpage>97</fpage>
          -
          <lpage>108</lpage>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>M.Nosal</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Poruban</surname>
          </string-name>
          .
          <article-title>Reusable software documentation with phrase annotations</article-title>
          .
          <source>Central Europ. J. Computer Science</source>
          <volume>4</volume>
          (
          <issue>4</issue>
          ):
          <fpage>242</fpage>
          -
          <lpage>258</lpage>
          (
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>M.Nosal</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Poruban</surname>
          </string-name>
          .
          <article-title>Preliminary report on empirical study of repeated fragments in internal documentation</article-title>
          .
          <source>FedCSIS</source>
          :
          <fpage>1573</fpage>
          -
          <lpage>1576</lpage>
          (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14. H.
          <string-name>
            <surname>Basit</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Smyth</surname>
          </string-name>
          , et al.
          <article-title>Efficient Token Based Clone Detection with Flexible Tokenization</article-title>
          .
          <source>In Proceedings of ACM SIGSOFT International Symposium on the Foundations of Software Engineering:</source>
          <fpage>513</fpage>
          -
          <lpage>516</lpage>
          (
          <year>2007</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <given-names>K.</given-names>
            <surname>Romanovsky</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Koznov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Minchin</surname>
          </string-name>
          .
          <source>Refactoring the Documentation of Software Product Lines. LNCS</source>
          ,
          <volume>4980</volume>
          :
          <fpage>158</fpage>
          -
          <lpage>170</lpage>
          (
          <year>2011</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16. L.
          <string-name>
            <surname>Kanteev</surname>
          </string-name>
          , et. al.
          <source>Discovering Near Duplicate Text in Software Documentation. Proceedings of ISP RAS. Accepted</source>
          (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <given-names>J.</given-names>
            <surname>Corbet</surname>
          </string-name>
          .
          <article-title>The present and future of formatted kernel documentation</article-title>
          . https://lwn.net/Articles/671496/ (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <given-names>S.</given-names>
            <surname>Wagner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Fernández</surname>
          </string-name>
          . Analysing Text in Software Projects. https://arxiv.org/abs/ 1612.00164 (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>J.Zhi</surname>
          </string-name>
          , et al.
          <article-title>Cost, benefits and quality of software development documentation: A systematic mapping</article-title>
          .
          <source>Journal of Systems and Software</source>
          ,
          <volume>99</volume>
          :
          <fpage>175</fpage>
          -
          <lpage>198</lpage>
          (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20. W.Frakes,
          <string-name>
            <given-names>C.</given-names>
            <surname>Terry</surname>
          </string-name>
          .
          <article-title>Software reuse: metrics and models</article-title>
          .
          <source>ACM Comput. Surv.</source>
          ,
          <volume>28</volume>
          (
          <issue>2</issue>
          ):
          <fpage>415</fpage>
          -
          <lpage>435</lpage>
          (
          <year>1996</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <given-names>D.</given-names>
            <surname>Koznov</surname>
          </string-name>
          , et. al.
          <article-title>Specifics of projects in the area of enterprise architecture development</article-title>
          .
          <source>Business Informatics</source>
          ,
          <volume>4</volume>
          (
          <issue>34</issue>
          ):
          <fpage>15</fpage>
          -
          <lpage>23</lpage>
          (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <given-names>V.</given-names>
            <surname>Levenshtein</surname>
          </string-name>
          .
          <article-title>Binary codes with correction for deletions and insertions of the symbol 1</article-title>
          .
          <source>Problemy Peredachi Informacii</source>
          <volume>1</volume>
          (
          <issue>1</issue>
          ):
          <fpage>12</fpage>
          -
          <lpage>25</lpage>
          (
          <year>1965</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>