<!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>Experimental Analysis of Dependency Factors of Software Product Reliability using SonarQube</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Sanjay L. Joshi</string-name>
          <email>joshi@persistent.com</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Bharat Deshpande</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Sasikumar Punnekkat</string-name>
          <email>sasikumar.punnekkat@mdh.se</email>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>BITS Pilani K K Birla Goa Campus</institution>
          ,
          <country>India Tel.:</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Persistent Systems Limited</institution>
          ,
          <addr-line>Goa</addr-line>
          ,
          <country>India Tel.:</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>School of Innovation, Design &amp; Engineering, Malardalen University</institution>
          ,
          <country>Sweden Tel.:</country>
        </aff>
      </contrib-group>
      <fpage>130</fpage>
      <lpage>137</lpage>
      <abstract>
        <p>Reliability is one of the key attributes of software product quality. Capability for accurate prediction of reliability will allow software product industry to have better market acceptability and enable wider usage in high integrity or critical applications domains for their product. Software Reliability analysis is performed at various stages during software product development life cycle. Popular software reliability prediction models proposed in literature are targeted to speci c phases of life cycle with certain identi ed parameters. However, these models seem to have certain limitations in predicting software reliability in an accurate and acceptable manner to the industry. A recent industrial survey performed by the authors identi ed several factors which practitioners perceived to have in uence in predicting reliability. Subsequently we conducted a set of experiments involving diverse domains and technologies to validate the perceived in uence of the identi ed parameters on software product reliability which was evaluated using SonarQube. In this paper, we present our evaluation approach, experimental set up and results from the study. Through these controlled experiments and analysis of data, we have identi ed a set of in uential factors a ecting software reliability. This paper sets direction to our future research on modeling software product reliability as a function of the identi ed inuential factors.</p>
      </abstract>
      <kwd-group>
        <kwd>Software Reliability perimental evaluation</kwd>
        <kwd>Correlation liability prediction</kwd>
        <kwd>SonarQube</kwd>
        <kwd>Empirical study</kwd>
        <kwd>Software Product Attributes</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Quality is de ned as \capability of a software product to conform to
requirements." as per ISO/IEC 9001[
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. According to ISO standard 25010 [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], the
quality of product is de ned as: \The totality of features and characteristics of
a software product that bear on its ability to satisfy stated or implied needs".
The focus in this paper is on one of the important attributes of quality, viz., the
reliability of the software product [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ].
      </p>
      <p>
        In the past many models for predicting software reliability have been
developed and studied extensively. However, these models are applicable under
certain assumptions and for speci c phases of development life cycle[
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Due
to these limitations the proposed models have fallen short of gaining con dence
with industry practitioners. An industrial survey was conducted by the authors
to identify parameters that contributes to software reliability as perceived by
industry professionals[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. The survey highlighted that factors such as skill of
developers and testers, design complexity, Commercial O The Shelf (COTS)
complexity, review e ciency contribute to reliability [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>
        This paper evaluates the signi cance of such identi ed in uential
environmental [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]factors on software reliability for di erent software products in
diverse domains and developed using diverse technologies. One of the popular
open source tools, SonarQube was used in this study for evaluating software
reliability for comparison purpose.
      </p>
      <p>
        These experiments were performed in a large software development
organization in India, which has laboratory setup necessary for performing such
experiments. These laboratories basically serve as training centers for employees, both
for new recruits as well as part of continuous learning. We have identi ed a set
of independent input parameters [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] Refer Table 1 and dependent input
parameters Table 2 for performing these experiments. Experiments were performed in
a systematic and in controlled manner[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ][
        <xref ref-type="bibr" rid="ref2">2</xref>
        ][
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>Paper organization: Section 2 discusses the background and some details
regarding experimental context. Section 3 gives methodology followed for
performing experiments. In section 4 the experimental results are presented along
with discussion. Section 5 gives conclusion based on analysis done in previous
section.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Background and Experimental Framework</title>
      <p>
        In this study, we hypothesize reliability to be a function of defect leakage,
postdelivery defects, schedule variance, e ort variance, productivity, technology,
commercial o the shelf(COTS) complexity, design complexity, unit test defects,
integration test defects, system test defects, execution time and skill level of
developer/ tester. These factors were identi ed as the most in uential ones as
perceived by stakeholders such as product users, coder, tester, designer,
product managers, a ecting software product reliability during the industrial survey
conducted by the authors[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>Experiments involved studying impact of these factors on reliability.
Reliability is computed by varying one factor while maintaining all other factors
constant. For example, skill level can be varied (from high to low) while keeping
all other factors constant.</p>
      <p>
        For each application, we performed minimum 30 combinations. For example:
If skill level was identi ed as variable factor then all other factors such as
techhhLiioggwhh,, medivuemry, cBoamsepdlexointy emxepaesrutrejsudgments and
C#, .NET, C#, .NET used in one application
Sharepoint, ASP and considered as one level
0-5 Simple Complexity of COTS is based upon
6-10 Medium a. # of internal interfaces b. Impact
11-15 Com- factor c. # of calls through main
plex program
nology, hardware, rmware, tools were kept constant. For four applications, we
performed overall 120 experiments in the laboratory in which 560 people of
different roles and skill levels participated. Reports on reliability [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] were obtained
using SonarQube tool. SonarQube is popular open source platform for
continuous inspection of code quality. The reliability gures from SonarQube are used
as baseline for comparison purpose only. Hypothesis testing was used to check
the statistical signi cance of the results.
      </p>
      <p>
        In this section we also present reference of activities performed before
entering experimentation area. Activities were targeted at software product reliability
literature review and also conducting survey with practitioners and experts
identi ed in the industry across globe. In the literature survey [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], we found that
different reliability models are published in the past keeping Software Development
Life Cycle (SDLC) as reference.
      </p>
      <p>
        The realized software projects have been developed and managed as per
ISO 9001:2015 standard and CMMI measurement and analysis, project
monitoring and control issues. In these experiments, we captured data related to four
products, which have been used for commercial purpose across the globe. All
considered products can be classi ed as application in di erent domains and are
listed in Table 3. Industrial standards proposed by Halstead were considered for
categorizing design complexity of the applications[
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>For collecting data, we took help of di erent tools such as Jira, Rational Team
Concert (RTC) and Team Foundation Server (TFS). These tools were used for
collecting defects in requirement and design phase. E orts and Schedule related
data was captured using Microsoft Project Plan (MPP). We used GIT for
conguration management and Rational Functional Tester (RFT) and Quick Test
Professional (QTP) for testing automation. Other code quality related
parameters were captured using PurifyPlus.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Methodology</title>
      <p>
        Experimentation is powerful tool in software engineering. The main objective of
performing experiments is to nd cause and e ect relationship [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Experiments
Planning phase:
Set criteria for input
parameters and
identify runs
Assign task to develop
instances of code (Cijk)
for different levels of Fj to
multiple teams
Perform the task
and monitor
experiments
      </p>
      <p>Run SonarQube and
capture reliability R(Cijk)</p>
      <p>Yes
Are Runs
Over for
(Ai,Fj )?
No
For every application and
every independent factor
repeat experiment
Ranking of factors and
Validation through MTBF</p>
      <p>Yes</p>
      <p>Prepare graph of R versus
independent factor Fj (e.g. skill)
Calculate Correlation
between Reliability &amp;
Fj</p>
      <p>Correlation
&gt;= 0.8?</p>
      <p>No
Correlation
&lt; 0.5?</p>
      <p>No</p>
      <p>Yes
High
Correlation</p>
      <p>
        CMoerdreiulamtion LCoowrrelation
were conducted in a multinational software product organization having centers
across the globe. Series of experiments were conducted in controlled environment,
where one parameter is considered as variable and other parameters are taken
as constant [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>The methodology used for performing the experiments is shown in Figure 1.
For example, in experiments to study impact of skill on reliability, one
functionality was identi ed of an application and task of developing it was assigned to
software developers having varying skill levels. Minimum of 10K lines of code
was the criteria set for developing the application. The design document was
provided to all developers. Design complexity (input variable) along with other
identi ed input parameters were kept constant. SonarQube was run on error free
code to give the reliability factor for each skill level. To statistically conclude,
more than 30 data points were recorded. By using this methodology, experiments
were preformed for other identi ed factors.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Experimental Findings and Discussion</title>
      <p>
        In this section we present our experiment ndings and rank attributes in uencing
reliability. Chi-Square Test was used to statistically test whether parameters
are having any impact on reliability [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. We performed hypothesis test for each
parameter separately using the R statistical tool.
      </p>
      <p>Table 4 summarizes output of "R" for di erent skill levels for various
technologies. In all above cases, probability value (p-value) for acceptance of null
hypothesis is calculated and if the p-value is less than 0.05 then the null
hypothesis is rejected. It can be seen from Table 4 that irrespective of the technology
used, there is good correlation between skill level and reliability.</p>
      <p>
        As a sample, in Figure 2 we show the scatter plot of skill versus reliability. The
pattern of the resulting points reveals that there exists correlation [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] between
these two variables. To validate the data for other attributes, we performed 2
test and ANOVA for other skills, technologies and design / COTS complexity
and con rmed their statistical signi cance.
      </p>
      <p>Validation of results is also done using mean time between failure observed
during testing and operational phases. This method is adopted for each
application. Mean time between failure is judged based on operational discontinuity of
an application. It is assumed that in case of critical, very high, high and medium
type defects, application can behave di erently and reliability of an application
can be hampered. Sometimes during use, an application does not execute certain
part of the code which can be a threat to the overall experimenting exercise. We
covered maximum code during execution and checked all branches and nodes in
the code to con rm the reliability gure. This is done through writing test cases
for each branch and node identi ed for all features mentioned in the applications.</p>
      <p>By careful design of the study and involving a broad spectrum and su ciently
large number of respondents across the organization, we have been able to
eliminate most usual issues of external validity and reliability in empirical studies.
However, one cannot rule out the possibility that we might have omitted yet
another important factor from our list.</p>
      <p>Table 5 summarizes the impact of other factors on reliability showing only
absolute values of correlation factor. It can be concluded that reliability is strongly
correlated with Skill factor, Post Delivery Defects and Review E ciency, whilst
reliability has good correlation with COTS complexity, System Test Defects,
Design Complexity and Load Condition. The last two columns show the average
and rank of the factor based on its in uence on reliability.</p>
      <p>Current models are considering defects from eld and internal in testing
phase. However they are not considering factors like skill of developer and tester
or review e ciency in development process.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Conclusions</title>
      <p>One of the noteworthy ndings from these experiments are factors like
postdelivery defects, skill and review e ciency contributes signi cantly towards
software product reliability and hence should be included in its prediction. With
the help of this exercise, we could also eliminate (or at least keep on backstage)
some parameters such as process metrics (Schedule Variance, E ort Variance
and Productivity), Unit Test Defects, Integration Test Defect, System Test
Defects. These experiments also indicate that load condition, Design complexity
and COTS (in the order of increasing importance) could be signi cant in de
ning software product reliability. Though further detailing is needed, we consider
this as a good starting point for de ning an appropriate prediction model of
software reliability.
6</p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgement</title>
      <p>We would like to thank Dr. Yogesh Badhe, data scientists from Persistent
Systems Ltd. for his valuable support in data analysis. Also, we would like to thank
Dr. Ramprasad Joshi for his valuable inputs for documentation while performing
experiments. Punnekkat acknowledges support from FiC(SSF) Project.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>Aleksandar</given-names>
            <surname>Dimov</surname>
          </string-name>
          , Senthil Kumar Chandran, Sasikumar Punnekkat, \
          <article-title>How Do We Collect Data for Software Reliability Estimation?"</article-title>
          ,
          <source>International Conference on Computer Systems and Technologies (CompSysTech)</source>
          ,
          <source>So a</source>
          , pp:
          <fpage>155</fpage>
          -
          <lpage>160</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Walker</surname>
            ,
            <given-names>R. J</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Briand</surname>
          </string-name>
          , L. C,
          <string-name>
            <surname>Notkin</surname>
            ,
            <given-names>D</given-names>
          </string-name>
          , Seaman, C. B,
          <string-name>
            <surname>Tichy</surname>
            ,
            <given-names>W. F</given-names>
          </string-name>
          ,
          <article-title>Panel: empirical validation: what, why, when, and how</article-title>
          .
          <source>International Conference on Software Engineering(ICSE)</source>
          , Washington, DC, USA: IEEE Computer Society, 2003
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>Javier</given-names>
            <surname>Garca-Munoz</surname>
          </string-name>
          ,
          <article-title>Marisol Garca-Valls and Julio Escribano-Barreno, \Improved Metrics Handling in SonarQube for Software Quality Monitoring"</article-title>
          ,
          <source>Distributed Computing and Arti cial Intelligence</source>
          , 13th International Conference pp
          <fpage>463</fpage>
          -
          <lpage>470</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Jedlitschka</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Pfahl</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ;
          <article-title>Reporting Guidelines for Controlled Experiments in Software Engineering</article-title>
          ; ACM/IEEE Intern.
          <source>Symposium on Software Engineering</source>
          , Australia,
          <year>2005</year>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Tore</given-names>
            <surname>Dyb</surname>
          </string-name>
          , Vigdis By Kampenes,
          <string-name>
            <given-names>Dag I.K.</given-names>
            <surname>Sjberg</surname>
          </string-name>
          , \
          <article-title>A systematic review of statistical power in software engineering experiments"</article-title>
          ,
          <source>Information and Software Technology</source>
          , Volume
          <volume>48</volume>
          , Issue 8, pp:
          <fpage>745</fpage>
          -
          <lpage>755</lpage>
          ,
          <year>2006</year>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Kitchenham</surname>
            ,
            <given-names>B.A.</given-names>
          </string-name>
          ; P eeger, S.L.;
          <string-name>
            <surname>Pickard</surname>
            ,
            <given-names>L.M.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Jones</surname>
            ,
            <given-names>P.W.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Hoaglin</surname>
            ,
            <given-names>D.C.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>El Emam</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Rosenberg</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <article-title>Preliminary guidelines for empirical research in software engineering</article-title>
          ;
          <source>IEEE Transactions on Software Engineering</source>
          , Vol.
          <volume>28</volume>
          , No. 8 ,
          <string-name>
            <surname>Aug</surname>
            <given-names>2002</given-names>
          </string-name>
          , pp.
          <fpage>721</fpage>
          -
          <lpage>734</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Kitchenham</surname>
            ,
            <given-names>B.A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Hughes</surname>
          </string-name>
          , R.T.;
          <string-name>
            <surname>Linkman</surname>
            ,
            <given-names>S.G.</given-names>
          </string-name>
          ;
          <source>Modeling Software Measurement; IEEE Transactions on Software Engineering</source>
          , Vol.
          <volume>27</volume>
          , No.9,
          <string-name>
            <surname>September</surname>
            <given-names>2001</given-names>
          </string-name>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Sanjay L. Joshi</surname>
          </string-name>
          , Bharat Deshpande, Sasikumar Punnekkat,\
          <article-title>An Industrial Survey on In uence of Process and Product Attributes on Software Product Reliability"</article-title>
          ,
          <source>NETACT, ISBN No:978-1-5090-6590-5</source>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Sanjay L. Joshi</surname>
          </string-name>
          , Bharat Deshpande, Sasikumar Punnekkat, \
          <source>Do Software Reliability Prediction Models Meet Industrial Perceptions?" , Proceedings of the 10th Innovations in Software Engineering Conference, Pages 66-73</source>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>Maiwada</given-names>
            <surname>Samuel</surname>
          </string-name>
          and Lawrence Ethelbert Okey, \
          <article-title>The Relevance and Signi cance of Correlation in Social Science Research"</article-title>
          ,
          <source>International Journal of Sociology and Anthropology Research</source>
          , Vol.
          <volume>1</volume>
          , No.
          <issue>3</issue>
          , pp.
          <fpage>22</fpage>
          -
          <lpage>28</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Port</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Klappholz</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Empirical Research in the Software Engineering Classroom</article-title>
          .
          <source>Conference on Software Engineering Education and Training (CSEET)</source>
          ,
          <year>2004</year>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Kitchenham</surname>
            ,
            <given-names>B. A.</given-names>
          </string-name>
          ; P eeger, S. L.;
          <string-name>
            <surname>Pickard</surname>
            ,
            <given-names>L. M.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Jones</surname>
            ,
            <given-names>P. W.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Hoaglin</surname>
            ,
            <given-names>D. C.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Emam</surname>
            ,
            <given-names>K. E.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Rosenberg</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          :
          <article-title>Preliminary guidelines for empirical research in software engineering</article-title>
          .
          <source>In: IEEE Trans. Softw. Eng</source>
          .
          <volume>28</volume>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Claes</surname>
            <given-names>Wohlin</given-names>
          </string-name>
          , Martin Host,
          <source>Per Runeson and Anders Wesslen, Software Reliability, Encyclopedia of Physical Sciences and Technology</source>
          , Vol.
          <volume>15</volume>
          , Academic Press,
          <year>2001</year>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>International</surname>
          </string-name>
          <article-title>Organisation for Standardization(ISO)</article-title>
          ,
          <source>ISO 9001: Quality Management Systems</source>
          ,
          <year>2015</year>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15. ISO/IEC 25010:
          <year>2011</year>
          :
          <article-title>Systems and software engineering { Systems and software Quality Requirements and Evaluation (SQuaRE) { System and software quality models</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Zhu</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhang</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pham</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          (
          <year>2015</year>
          ).
          <article-title>A comparison analysis of environmental factors a ecting software reliability</article-title>
          .
          <source>Journal of Systems and Software</source>
          ,
          <volume>109</volume>
          ,
          <fpage>150</fpage>
          -
          <lpage>160</lpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>