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