<!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>NEW METHODS OF MINIMIZING THE ERRORS IN THE SOFTWARE</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Dorenskaya E.A.</string-name>
          <email>dorenskaya@itep.ru</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Semenov Y.A.</string-name>
          <email>semenov@itep.ru</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>NRC “Kurchatov Institute” - ITEP</institution>
          ,
          <addr-line>25 Bolshaya Cheremushkinskaya str., Moscow, 117218</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2018</year>
      </pub-date>
      <fpage>150</fpage>
      <lpage>154</lpage>
      <abstract>
        <p>The report focuses on the idea of creating a language for the description of the problem, not an algorithm. It also talks on the bank of algorithms. A method for modifying the program code with given input parameters is proposed. The method of task interpreting with a help of special language is described (implemented to simplify regular expression generation). The dialogue method between the computer and the programmer is described as a method of code generation.</p>
      </abstract>
      <kwd-group>
        <kwd>minimizing the errors</kwd>
        <kwd>language for the description of the problem</kwd>
        <kwd>the principle of “many eyes”</kwd>
        <kwd>meta-language</kwd>
        <kwd>method of analyzing the context of words and documents</kwd>
        <kwd>the dialogue method</kwd>
        <kwd>a method for modifying the program code by the given input parameters</kwd>
        <kwd>the method of task interpreting with a help of special language</kwd>
        <kwd>dialog programming</kwd>
        <kwd>bank of algorithms</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        In principal it is just a task for AI, but who can answer the question, – Can AI, created in the
image and likeness of human (neural model), provide less bugs than usual programmer [
        <xref ref-type="bibr" rid="ref4 ref5">4,5</xref>
        ]?
      </p>
      <p>
        Today the software quality defines almost all sides of our life, including health [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. That is
why it is so important to minimize software errors. Almost all modern programming languages are
algorithmic. There is no language to describe a problem. The best result now is 0.5 errors per 1000
code lines for OS Windows. But there are a lot of problems, where such a level of errors is too bad.
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. Main part</title>
      <p>
        Our purpose is to minimize software errors. There is no ways to find and remove all program
errors entirely. There is no even effective tool to estimate a real error number in the code [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. One of
the most reliable ways to mitigate error's number is to apply routines by many users with subsequent
detection and correction of found errors (the principle of “many eyes”).
      </p>
      <p>An optimal solution of the problem is seemed to be a problem description on natural language
(e.g., English or Russian) with subsequent conversion it to the high level programming language
routine (Figure 1).</p>
      <p>
        Therefore, in the process of searching for opportunities to minimize software errors and
approaches to creating a meta-language description of the problem (ML), we have developed a method
of analyzing the context of words and documents. It was conducted a check of the reliability of context
calculation by using the Chebyshev inequality and the simulations using the Monte Carlo method.
These studies have shown, that developed method for estimation contextual meanings of words and
documents can not be considered universal. However, this algorithm is quite easy to implement and, in
most cases, it gives a correct context value. Therefore, it may become an important part of the problem
description metalanguage (ML) in the future [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>As a possible alternative we can consider the special Meta language (ML) for problem
description or dialog programming as it is shown on Figure 2.</p>
      <p>
        Meta-language ML determines a system behavior at a phase of problem description (phase 1,
Figure 2), at this phase we may fix some global variable, e.g. IP-addresses, data exchange protocols,
periodicity of requests or measurements and so on), at the phase 2 it is generated an executive routine
itself. Besides at the first phase we have to set programming language. At the phase 2 we can start
looking for program modules in the bank of algorithms. Here we fix, what modules can be built by
computer and what should be written by the programmer himself [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Computer from these modules
generates an executive routine (see Figure 3).
      </p>
      <p>Figure 4 shows part of the dialog graph for regular expressions generation method. The
method has been tested on a routine of regular expression generation (Figure 4).</p>
      <p>One more example of using dialog is the routine to prepare and configure the security system
for WEB-server (Figure 5).
Notations on Figure 5:
C0 – case of usage put or delete methods (HTTP-protocol).</p>
      <p>C1 – using methods post and so on.</p>
      <p>F1 – path traversal attack (in the file access_log there are lines "../" , "/../../../../", %2e%2e%2f,
..%c0%af or %2e%2e/).</p>
      <p>G0 - SQL-attack;
G1 – the same, but with no SQL-DB on the computer.</p>
      <p>H1 – there is a request of the potentially dangerous file</p>
      <p>A method of dialogue has one significant drawback. All versions of dialogue it is difficult to
describe and impossible to predict, because their number tends to infinity. But, nevertheless, this
method can be successfully used to solve simple problems with a limited number of branches of the
dialog graph.</p>
      <p>To minimize program errors, you can use the method of modification the appropriate program
code by the specified input parameters. This method is implemented in the charting program
“Gnuplot”. Program chooses which type of chart to build and accordingly modifies the code based on
the given input data.</p>
      <p>If in the past any task was solved by combining processor instructions, now we may use
programming modules instead. These modules’s number is one or even more orders greater than
number of processor instructions. The functions of the modules may be modified with the help of
special calculated modificators.</p>
      <p>As examples of such modules may be programs for text analyses (e.g., log-files), data to
graphics conversion, statistical analyses routines and so on. These modules should become the main
structure elements from which the final program is built.</p>
      <p>
        The text of problem description on macro language is analyzed at first to find out the problem
realm (dialog computer-programmer). Further the task is divided into subtasks. After that an attempt is
made to find a necessary algorithm in the bank, corresponding to the particular subtask. For each of
found algorithm modules the lists of input and output parameters are determined. For each function, if
its description is not found in the algorithm bank, the programmer develops the code, written
according to Holzmann rules [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>The closest method to the realization of our purpose is the method of task interpreting with a
help of special language (implemented to simplify the generation of regular expressions code). It is
implemented with the help of Russian words and symbols that describe part of the code of a regular
expression. This simplifies the formation of a regular expression and reduces the number of possible
errors in it. Therefore, this method is still far from ideal. Ideal, as mentioned above, we consider a
method, when a person writes a description text in a natural language, and the program converts it into
a high-level programming language code. This method is applicable for simplified generation of
program code. The described method is intended for use in highly specialized areas. However, it can
be a part of the global macro-language description of the problem.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Conclusion</title>
      <p>It is clear that AI will make programming more effective, but we are sure - programming error
problem is forever. Our developments are small step in proper direction, as people even in AI-era will
find the possibility to make errors in their code.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Dorenskaya</surname>
            <given-names>E.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Semenov</surname>
            <given-names>Y.A. About</given-names>
          </string-name>
          <article-title>the programming techniques, oriented to minimize errors</article-title>
          .
          <source>Modern Information Technologies and IT-Education</source>
          , volume
          <volume>6</volume>
          , №2,
          <year>2017</year>
          , p.
          <fpage>50</fpage>
          -
          <lpage>56</lpage>
          ,
          <string-name>
            <surname>CMC</surname>
            <given-names>MSU</given-names>
          </string-name>
          , (http://sitito.cs.msu.ru/index.php/SITITO/article/view/226/197)
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Dorenskaya</surname>
            <given-names>E.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Semenov</surname>
            <given-names>Y.A.</given-names>
          </string-name>
          <article-title>The determination method for contextual meanings of words and documents. Modern Information Technologies</article-title>
          and IT-Education, №
          <volume>3</volume>
          , 2018г,
          <string-name>
            <given-names>CMC</given-names>
            <surname>MSU</surname>
          </string-name>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Semenov</surname>
            <given-names>Y.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ovsyannikov</surname>
            <given-names>A.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ovsyannikova</surname>
            <given-names>T.V.</given-names>
          </string-name>
          <article-title>Development of Bank of algorithms and bases of language of the description of problems for the purpose of minimization of number of program errors</article-title>
          .
          <source>Works of NIISI RAS</source>
          volume
          <volume>6</volume>
          , №2, Moscow,
          <year>2016</year>
          , p.
          <fpage>96</fpage>
          -
          <lpage>100</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <article-title>[4] “When computers become smarter than humans”</article-title>
          ,
          <source>Chip</source>
          <volume>09</volume>
          /14, p.
          <fpage>24</fpage>
          -
          <lpage>25</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <article-title>[5] The DeepCoder neural network learns to program by borrowing code from other programs</article-title>
          , https://geektimes.ru/post/286304/, (accessed
          <volume>25</volume>
          .02.
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Holtzman</given-names>
            <surname>Rules</surname>
          </string-name>
          , http://book.itep.ru/10/holz_rules.htm
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <article-title>[7] Estimate the number of errors in the program</article-title>
          .
          <source>Model Mills</source>
          , https://habrahabr.ru/post/122912/, (accessed
          <volume>29</volume>
          .06.
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>