<!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>
      <journal-title-group>
        <journal-title>CEUR Workshop Proceedings</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.18287/1613-0073-2016-1638-813-819</article-id>
      <title-group>
        <article-title>METHOD TO ASSESS RELIABILITY OF COMPLEX SOFTWARE FUNCTIONING</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>A.N. Kovartsev</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>D.A. Popova-Kovartseva</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Samara National Research University</institution>
          ,
          <addr-line>Samara</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2016</year>
      </pub-date>
      <volume>1638</volume>
      <fpage>813</fpage>
      <lpage>819</lpage>
      <abstract>
        <p>It has been established that the software reliability concept has many specific features and differs significantly from the concept of reliability of technical systems. This greatly complicates the task of assessing overall reliability of a complex software product. The paper introduces a new reliability indicator-average reliability-as well as a method to assess average reliability of a complex software system based on known characteristics of its modules. The introduced approach is theoretically justified.</p>
      </abstract>
      <kwd-group>
        <kwd>software reliability</kwd>
        <kwd>unreliability</kwd>
        <kwd>execution route</kwd>
        <kwd>software module</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Reliability is an important and natural prerequisite for modern hardware and software
suites (HSSs). Nowadays, technical devices and systems are highly reliable. For
example, in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], it is shown that the probability of computer failure in the TU-324 flight
navigation system is 10 10 , which meets modern requirements for fail-free
performance of equipment used aboard space- and aircrafts. As for mathematical methods
of assessment of HSS software reliability, the situation is not quite satisfactory.
For a long time, general attention was paid directly to programming techniques, and
problems of testing and assessment of software reliability were considered ‘necessary
evil’. Only practical use could reveal software failures. In the late 1990s, the attitude
toward assessment of software reliability started to change due to a significant
increase in complexity of software and understanding that high reliability of an HSS
could be achieved only by fault-free operation of both its hard- and software.
In ISO 9126:1991 [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], reliability is named one of the main characteristics of software
quality.
      </p>
      <p>Modern software reliability models, both analytical and empirical, either explicitly or
implicitly use the mathematical apparatus of the technical systems reliability theory,
i.e. they view the general system reliability concepts as dependent on time, which is
incorrect in case of software.
1</p>
    </sec>
    <sec id="sec-2">
      <title>Software functioning reliability concept</title>
      <p>The problem of software reliability has at least two aspects: assurance and
measurement (assessment) of software reliability. Almost all existing literature deals with the
first aspect, whereas not enough attention is paid to the problem of measurement of
software reliability.</p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], reliability is defined as ‘the probability that software will not cause the failure
of a system for a specified time’. Then it is stated that software failure is a subjective
notion: one and the same program would suit one user, but would not another one.
Moreover, software failures impact the end result differently: some lead to a
catastrophe, others simply to orthography mistakes displayed on the screen. The introduced
software reliability definition uses the concept of time factor, borrowed from
terminology related to technical devices reliability.
      </p>
      <p>The general postulate of the technical devices reliability theory states that the failure
rate of an element depends on operation time, which makes no sense in relation to
software reliability.</p>
      <p>In software, failures occur with specific, clearly defined combinations of input data.
Countless software starts with one or a limited number of sets of input data that do not
cause the software to fail will not cause a failure regardless of the operation time.
Moreover, reliability of software modules can only increase over time as errors are
being diagnosed and fixed. Theoretically, there can occur a situation when testing of a
software module does not reveal errors anymore.</p>
      <p>This renders concepts of operating time to failure and failure probability for a given
period completely useless for the purposes of programming.</p>
      <p>The classic reliability theory uses an axiomatic assumption that a probability of
failure p0 , albeit small but higher than zero, always exists for any technical device due
to design errors or operational wear of the device. This hypothesis is proven
experimentally. However, software is not subject to wear or damage; therefore, lack of
software reliability can be caused exclusively by programming errors made at the
design stage. At the same time, an unlimited number of simple programmes with zero
probability of failure can be developed. This renders the entire apparatus of the classic
reliability theory useless for practical application.</p>
      <p>
        The most general definition of software reliability is proposed by B. Meyer in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ],
where he defines reliability as ‘the ability of software to provide reasonable results
under any possible circumstances and, in particular, under abnormal conditions’.
Then, unreliability may be viewed as ratio of cardinality of error situations E to
cardinality of input data  In ( E  In ). In connection with computers, this is ratio
between the number of combinations of software input data that cause errors to the
general number of combinations of input data. In this case, unreliability can be
calculated according to the following formula: q  E / In .
      </p>
      <p>
        However, the number of input data combinations for software modules is generally so
high that it is virtually impossible to account for every combination for a modern
computer. Positive results have nowadays been acquired for relatively simple
software modules with just a few input parameters. For some modules, their correctness
[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], i.e. q  0 , can be proven. In other cases, q can be established experimentally [
        <xref ref-type="bibr" rid="ref4 ref5">4,
5</xref>
        ].
      </p>
      <p>
        Input data for modern complex software can include hundreds and thousands of
variables. That renders direct testing methods ineffective and virtually impossible as the
task of software testing becomes as complicated as the task of global optimization [
        <xref ref-type="bibr" rid="ref6 ref7 ref8">6,
7, 8</xref>
        ].
      </p>
      <p>It looks natural to use known characteristics of software components to assess
reliability of complex software, just like for technical systems. However, this approach
also leads to unexpected results.</p>
      <p>First, no matter how complex software structure is, software elements (modules) are
always connected (reliability-wise) sequentially.</p>
      <p>
        Second, software reliability depends not only on reliability of its modules but also on
correctness of organisation of software functioning logic [
        <xref ref-type="bibr" rid="ref10 ref9">9, 10</xref>
        ].
      </p>
      <p>Third, software reliability cannot be calculated directly based on reliability of its
components (software modules).</p>
      <p>Let us review the last argument in detail.
2</p>
    </sec>
    <sec id="sec-3">
      <title>Challenges in assessment of a complex software system’s reliability</title>
      <p>Let us assume we know reliability characteristics of all modules of a software
product. Let qi be unreliability of i-th module Ai :XiIn  YiOut calculated with account of
all possible applications of the module, i.e. over a significantly wide range of input
data, XiIn  (x1Iin, x2Ini,..., xnIni )  iIn , where iIn is the range of values of the input data
i
vector of the i-th module.</p>
      <p>
        Let us assume there are no logic errors in organisation of software functioning logic
(this problem needs to be reviewed separately, see [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]).
      </p>
      <p>
        Let us assume the software system has L execution routes [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Let us define every
route as M j  i j0 i j1 ...i jk , where i jk is number of a software module of the system.
Let us assume every i-th object on the j-th route is called m~ij times on average.
Unreliability of the i-th module on the j-th route for m~ij calls can therefore be
assessed as:
      </p>
      <p>~
Q(m~ij )  1  (1  qi )mij  Qij .</p>
      <p>jk
QM j  1  (1 Qij ) .</p>
      <p>i1
It is obvious that, should an error occur in any module on the route, the entire route
may be deemed a failure. Therefore, route unreliability can be assessed as:
(1)
(2)
Let us assume every route is executed with probability rj , and  rj  1 is true.
Therefore, unreliability of the software system may be assessed as:
The formula (3) is true if assessments of unreliability of software system modules are
constant for various software. However, this is not the case.</p>
      <p>As an example, let us review a programme for thermogasdynamical calculation of a
two-shaft turbojet engine (see Fig. 1).</p>
      <p>L
QPS   rj QM j .</p>
      <p>j1
(3)
This programme is rather simple and employs only one route. However, functional
nonlinear transformations that occur in every module cause changes in laws of
distribution of in- and output data (input data for the next module) for every single module.
Figures 2a–2f show ranges of change of input data for calculation of turbojet engine
and its components (high pressure compressor, combustion chamber, high and low
pressure turbines, and nozzle diaphragm).
a)
d)
b)
e)
c)
f)
As is seen from the figures, the laws of distribution of input data have significantly
transformed for every module, up to the point of loss of scale. At the same time, input
data were supplied uniformly for each module during autonomous testing. This could
lead to over- or underestimation of reliability of software modules the system is
composed of and distort the entire assessment of software reliability.</p>
      <p>This means software reliability assessment should use probability distribution for
input data for every module used in the software and, apparently, account for
particular characteristics of all software tasks.</p>
      <p>Let us review influence of the above factors on changes in assessment of software
modules’ reliability.
3</p>
    </sec>
    <sec id="sec-4">
      <title>A method to assess reliability of a complex software system</title>
      <p>Let us assume there is a module that only has one input parameter x, and the module
has passed a series of tests (of N tests) without errors; also, x [a, b] . From this, it
may be concluded that q  1/(N  1) and V ( E )  (b  a) /(N  1) . Let us assume then
that input parameter value range x  [c, d ]  [a,b] of the module has changed during
its use as part of software; at the same time, the law of distribution has not changed.
Therefore, the final unreliability of the module, with account to probability
P{ E  [c, d ]} , may be assessed as q~  V (E ) P{E [c, d ]}  V (E )  d  c  V (E )  q, i.e.</p>
      <p>d  c d  c b  a b  a
the unreliability characteristic does not change its value if the uniform law of
distribution of parameter x is observed.</p>
      <p>For simplicity, let а  с  0 . Let us assume next that over an intercept [0, d] , x
follows a non-uniform, quasiexponential distribution with the distribution density
function f (x)  Kex , where K  1 . Let V ( E )   . Unreliability of the module
1  ed
may be defined using equation q~(x)  P{ [0, d ]}xKexdx  db 1 eexd (1  e ) and
x
depends on where the error situations range lies. The unreliability is not equal to value
q found during the autonomous testing (Fig. 3).
What should be considered a characteristic of unreliability of the module then?
Let us assume the error situations range lies randomly at any spot of the intercept [0,
d] and let us calculate the average value q~(x) ,</p>
      <p>d 1
qm   q~(x) dx 
0 d</p>
      <p>d
P{ [0,d ]}K(1 e ) d
  exdx 
0
d (1e )K
b
d
(1 ed ) 
(1e )
b
(4)
Characteristic qm does not depend on the parameter x and is only defined by the size
of the error range  and the exponential distribution law parameter  .
As calculations show (see table below), significant changes of values  (distribution
non-uniformity degrees) lead to virtually no changes of the value qm . Moreover,
qm  q . In this example, q  0.00001, d = 0,2, b = 1. For significant non-uniformity
 10 , the condition q(x)  qm is observed on relatively small intercepts of the input
parameter definition range, and in other cases, q(x)  qm is observed. If  is small,
then max q(x)  qm is true.
 qm max q(x) x
0.1 9.99999E-06 1.01E-05 0.1
1 9.99995E-06 1.1E-05 0.0975
10 9.9995E-06 2.31E-05 0.0825
100 9.995E-06 0.0002 0.0275
1000 9.95017E-06 0.00199 0.005
If qm  q is true for any distribution law, q can be interpreted as the average and
expected assessment of module unreliability and used for calculation of software
reliability by interpreting QPS as the average expected value of unreliability of software
as a whole. However, this result needs yet to be extended to the multidimensional
case.</p>
      <p>For a random distribution law F (x) of input data of a software module with
distribution density  (x) , the following general regularities may be revealed.
Let us define a normalisation condition using the following equations:
d d
 K(x)dx  1 or K  1/  (x)dx .
0 0
Next,</p>
      <p>x
q~(x)  P{ [0, d ]}  K(x)dx  KP{ [0, d ]}(F (x  )  F (x)).</p>
      <p>x
If   0 , then
lim q~(x)  KP{ [0,d]} lim (F(x  )  F(x))  KP{ [0,d]}(x).
0 0 </p>
      <p>P{ [0, d ]}K d
 (x)dx </p>
      <p>d
qm   q~(x)
0
Therefore, the average unreliability of the software module (5), in the limit of   0 ,
coincides with the unreliability assessment calculated for the uniform input data
distribution law.</p>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>It may be concluded that assessment of software reliability differs significantly from
the analogous task for technical systems. At the same time, the averaged characteristic
of software reliability may be calculated using known assessments of reliability of
software modules the product consists of. Testing of a software component can be
carried out using a standard procedure of stochastic testing with the uniform input
data distribution law.</p>
      <p>The paper is prepared with state support from the Ministry of Education and Science
of Russia as part of the Programme for competitive growth of the Samara State
Aerospace University among leading world science and education centres for 2013–2020.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Avakyan</surname>
            <given-names>АА</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Iskandarov</surname>
            <given-names>RD</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Novikov</surname>
            <given-names>NN</given-names>
          </string-name>
          et al.
          <article-title>The concept of building a highly reliable calculators for aviation and rocketry</article-title>
          .
          <source>Reliability and quality</source>
          <year>2001</year>
          ,
          <source>Proceedings of the International Symposium, Penza</source>
          ,
          <year>2001</year>
          :
          <fpage>33</fpage>
          -
          <lpage>37</lpage>
          . [in Russian]
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2. ISO 9126:
          <year>1991</year>
          .
          <article-title>Information technology</article-title>
          .
          <article-title>Software product evaluation. Quality characteristics and guidelines for their use</article-title>
          .
          <volume>186</volume>
          p. [in Russian]
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Myers</surname>
            ,
            <given-names>G. Reliability</given-names>
          </string-name>
          <string-name>
            <surname>Software</surname>
          </string-name>
          . Moscow: Mir,
          <year>1980</year>
          ; 360 p. [in Russian]
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Meyer</surname>
            <given-names>B</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Baudoin</surname>
            <given-names>C</given-names>
          </string-name>
          .
          <article-title>Programming methods</article-title>
          . Vol.
          <volume>2</volume>
          Moscow: Mir,
          <year>1982</year>
          ; 368 p. [in Russian]
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Kovartsev</surname>
            <given-names>АN</given-names>
          </string-name>
          .
          <article-title>Automate development and testing of software</article-title>
          . Samara: Samara Aerospace University,
          <year>1999</year>
          ; 150 p. [in Russian]
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Kovartsev</surname>
            <given-names>AN</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Popova-Kovartseva</surname>
            <given-names>DA</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gorshkova</surname>
            <given-names>EE</given-names>
          </string-name>
          .
          <article-title>Software testing based on global search of several variables functions discontinuity</article-title>
          .
          <source>CEUR ITNT 2015 Information Technology and Nanotechnology, Samara</source>
          ,
          <year>2015</year>
          :
          <fpage>389</fpage>
          -
          <lpage>396</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Kovartsev</surname>
            <given-names>А N</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Popova-Kovartseva</surname>
            <given-names>DA</given-names>
          </string-name>
          .
          <article-title>On efficiency of parallel algorithms for global optimization of functions of several variables</article-title>
          .
          <source>Computer Optics</source>
          ,
          <year>2011</year>
          ;
          <volume>35</volume>
          (
          <issue>2</issue>
          ):
          <fpage>256</fpage>
          -
          <lpage>261</lpage>
          . [in Russian]
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>Kovartsev</given-names>
            <surname>АN</surname>
          </string-name>
          .
          <article-title>A deterministic evolutionary algorithm for the global optimization of morse cluster</article-title>
          .
          <source>Computer Optics</source>
          ,
          <year>2014</year>
          ;
          <volume>39</volume>
          (
          <issue>2</issue>
          ):
          <fpage>234</fpage>
          -
          <lpage>240</lpage>
          . [in Russian]
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Lipaev</surname>
            <given-names>VV</given-names>
          </string-name>
          .
          <article-title>Reliable software</article-title>
          . Moscow: SINTEG,
          <year>1998</year>
          ; 232 p. [in Russian]
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Kovartsev</surname>
            <given-names>АN</given-names>
          </string-name>
          .
          <article-title>An efficient algorithm for testing the truth of assertions for real numbers expressed in relational signatures</article-title>
          .
          <source>Computer Optics</source>
          ,
          <year>2014</year>
          ;
          <volume>38</volume>
          (
          <issue>3</issue>
          ):
          <fpage>550</fpage>
          -
          <lpage>554</lpage>
          . [in Russian]
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>