An Empirical Study of Software Reuse vs. Defect-Density and Stability
Parastoo Mohagheghi
1,2,3
, Reidar Conradi
2,3
, Ole M. Killi
2
, Henrik Schwarz
2
1
Ericsson Norway-Grimstad, Postuttak, NO-4898 Grimstad, Norway
2
Department of Computer and Information Science, NTNU, NO-7491 Trondheim, Norway
3
Simula Research Laboratory, P.O.Box 134, NO-1325 Lysaker, Norway
parastoo.mohagheghi@ericsson.com , conradi@idi.ntnu.no , henrik@schwarz.no
Abstract
The paper describes results of an empirical study,
where some hypotheses about the impact of reuse on
defect-density and stability, and about the impact of
component size on defects and defect-density in the
context of reuse are assessed, using historical data (“data
mining”) on defects, modification rate, and software size
of a large-scale telecom system developed by Ericsson.
The analysis showed that reused components have lower
defect-density than non-reused ones. Reused components
have more defects with highest severity than the total
distribution, but less defects after delivery, which shows
that that these are given higher priority to fix. There are
an increasing number of defects with component size for
non-reused components, but not for reused components.
Reused components were less modified (more stable) than
non-reused ones between successive releases, even if
reused components must incorporate evolving
requirements from several application products. The
study furthermore revealed inconsistencies and
weaknesses in the existing defect reporting system, by
analyzing data that was hardly treated systematically
before.
1. Introduction
There is a lack of published, empirical studies on large
industrial systems. Many organizations gather a lot of
data on their software processes and products, but either
the data are not analyzed properly, or the results are kept
inside the organization. This paper presents results of an
empirical study in a large-scale telecom system, where
particularly defect-density, and stability are investigated
in a reuse context. Software reuse has been proposed e.g.
to reduce time-to-market, and to achieve better software
quality. However, we need empirical evidence in terms of
e.g. increased productivity, higher reliability, or lower
modification rate to accept the benefits of reuse.
Ericsson has developed two telecom systems that share
software architecture, components in reusable layers, and
many other core assets. Characteristics of these systems
are high availability, reliability, and scalability. During
the lifetime of the projects, lots of data are gathered on
defects, changes, duration time, effort, etc. Some of these
data are analyzed, and results are used in the
improvement activities, while some others remain unused.
Either there is no time to spend on data analysis, or the
results are not considered important or linked to any
specific improvement goals. We analyzed the contents of
the defect reporting system (containing all reported
defects for 12 product releases), and the contents of the
change management system. For three of these releases,
we obtained detailed data on the size of components, and
the size of modified code. We have assessed four
hypotheses on reuse, and reused components using data
from these releases. We present detailed results from one
of these releases here. The quality focus is defect-density
(as the number of defects divided by lines of code), and
stability (as the degree of modification). The goal has
been to evaluate parameters that are earlier studied in
traditional reliability models (such as module size and
size of modified code) in the context of reuse, and to
assess the impact of reuse on software quality attributes.
Results of the analysis show that reused components
have lower defect-density than non-reused ones, and
these defects are given higher priority to solve. Thus
reuse may be considered as a factor that improves
software quality. We did not observe any relation
between defect-density or the number of defects as
dependent variables, and component size as the
independent variable for all components. However, we
observed that non-reused components are more defect-
prone, and there is a significant correlation between the
size of non-reused components, and their number of
defects. This must be further investigated. The study also
showed that reused components are less modified (more
stable) than non-reused ones, although they should meet
evolving requirements from several products.
Empirical evidence for the benefits of reuse in terms of
lower defect-density, and higher stability is interesting for
both the organization, and the research community. As
the data was not collected for assessing concrete
Proceedings of the 26th International Conference on Software Engineering (ICSE’04)
0270-5257/04 $20.00 © 2004 IEEE