1 The Distribution of Faults in a Large Industrial Software System Thomas Ostrand Elaine Weyuker AT&T Labs -- Research Florham Park, NJ.

Slides:



Advertisements
Similar presentations
Relex Reliability Software “the intuitive solution
Advertisements

Software Quality Ranking: Bringing Order to Software Modules in Testing Fei Xing Michael R. Lyu Ping Guo.
MetriCon 2.0 Correlating Automated Static Analysis Alert Density to Reported Vulnerabilities in Sendmail Michael Gegick, Laurie Williams North Carolina.
1 Predicting Bugs From History Software Evolution Chapter 4: Predicting Bugs from History T. Zimmermann, N. Nagappan, A Zeller.
Mining Metrics to Predict Component Failures Nachiappan Nagappan, Microsoft Research Thomas Ball, Microsoft Research Andreas Zeller, Saarland University.
Symptomatic Analysis for Software Maintenance A technology designed for SERC.
What causes bugs? Joshua Sunshine. Bug taxonomy Bug components: – Fault/Defect – Error – Failure Bug categories – Post/pre release – Process stage – Hazard.
Metrics Project and Process Metrics. Why do we measure? Assessing project status Allows us to track risks Before they go critical Adjust workflow See.
Analysis of CK Metrics “Empirical Analysis of Object-Oriented Design Metrics for Predicting High and Low Severity Faults” Yuming Zhou and Hareton Leung,
Prediction Basic concepts. Scope Prediction of:  Resources  Calendar time  Quality (or lack of quality)  Change impact  Process performance  Often.
Software Design & Production Methodologies STRUCTURED & OBJECT-ORIENTED METHODS for SYSTEMS ANALYSIS & DESIGN Vassilka Kirova Computer & Information Science.
SE 450 Software Processes & Product Metrics Reliability Engineering.
SE 450 Software Processes & Product Metrics Software Metrics Overview.
Software Defect Modeling at JPL John N. Spagnuolo Jr. and John D. Powell 19th International Forum on COCOMO and Software Cost Modeling 10/27/2004.
Testing Metrics Software Reliability
EXAMPLES OF METRICS PROGRAMS
3. Software product quality metrics The quality of a product: -the “totality of characteristics that bear on its ability to satisfy stated or implied needs”.
Why Metrics in Software Testing? How would you answer questions such as: –Project oriented questions How long would it take to test? How much will it cost.
Cost Estimation Van Vliet, chapter 7 Glenn D. Blank.
S Neuendorf 2004 Prediction of Software Defects SASQAG March 2004 by Steve Neuendorf.
Software Metric capture notions of size and complexity.
Cyclomatic Complexity Dan Fleck Fall 2009 Dan Fleck Fall 2009.
Estimation Wrap-up CSE 403, Spring 2008, Alverson Spolsky.
Mining Large Software Compilations over Time Another Perspective on Software Evolution: Gregorio Robles, Jesus M. Gonzalez-Barahona, Martin Michlmayr,
CS527: (Advanced) Topics in Software Engineering Overview of Software Quality Assurance Tao Xie ©D. Marinov, T. Xie.
1 Software Quality Engineering CS410 Class 5 Seven Basic Quality Tools.
Automated Fault Prediction The Ins, The Outs, The Ups, The Downs Elaine Weyuker June 11, 2015.
Managing Software Projects Analysis and Evaluation of Data - Reliable, Accurate, and Valid Data - Distribution of Data - Centrality and Dispersion - Data.
Elaine Weyuker August  To determine which files of a large software system with multiple releases are likely to contain the largest numbers of.
Software Estimation and Function Point Analysis Presented by Craig Myers MBA 731 November 12, 2007.
AlgoSec Inc.1 Firewall Configuration Errors Revisited Avishai Wool CTO & Co-Founder, AlgoSec and Prof., Tel Aviv University.
Chapter 19: Quality Models and Measurements  Types of Quality Assessment Models  Data Requirements and Measurement  Comparing Quality Assessment Models.
Computer Science, Software Engineering & Robotics Workshop, FGCU, April 27-28, 2012 Fault Prediction with Particle Filters by David Hatfield mentors: Dr.
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
Cost Estimation. Problem Our ability to realistically plan and schedule projects depends on our ability to estimate project costs and development efforts.
Enabling Reuse-Based Software Development of Large-Scale Systems IEEE Transactions on Software Engineering, Volume 31, Issue 6, June 2005 Richard W. Selby,
Software Reliability Research Pankaj Jalote Professor, CSE, IIT Kanpur, India.
Software Defects.
SOFTWARE METRICS Software Metrics :Roadmap Norman E Fenton and Martin Neil Presented by Santhosh Kumar Grandai.
Daniel Liu & Yigal Darsa - Presentation Early Estimation of Software Quality Using In-Process Testing Metrics: A Controlled Case Study Presenters: Yigal.
1 Experience from Studies of Software Maintenance and Evolution Parastoo Mohagheghi Post doc, NTNU-IDI SEVO Seminar, 16 March 2006.
1 Software Quality Engineering. 2 Quality Management Models –Tools for helping to monitor and manage the quality of software when it is under development.
CSE SW Measurement and Quality Engineering Copyright © , Dennis J. Frailey, All Rights Reserved CSE8314M31 version 5.09Slide 1 SMU CSE.
CSE SW Metrics and Quality Engineering Copyright © , Dennis J. Frailey, All Rights Reserved CSE8314M13 8/20/2001Slide 1 SMU CSE 8314 /
Copyright , Dennis J. Frailey CSE Software Measurement and Quality Engineering CSE8314 M00 - Version 7.09 SMU CSE 8314 Software Measurement.
+ Incremental Development Productivity Decline Ramin Moazeni, Daniel Link.
Ch 6 Introduction to Formal Statistical Inference.
CHARACTERIZING CLOUD COMPUTING HARDWARE RELIABILITY Authors: Kashi Venkatesh Vishwanath ; Nachiappan Nagappan Presented By: Vibhuti Dhiman.
Copyright , Dennis J. Frailey CSE Software Measurement and Quality Engineering CSE8314 M31 - Version 7.09 SMU CSE 8314 Software Measurement.
1 Chapter 1- Introduction How Bugs affect our lives What is a Bug? What software testers do?
Realizing quality improvement through test driven development: Results and experiences of four industrial teams. by Nachiappan Nagappan, E Mchael Maximillien,
Swami NatarajanOctober 1, 2016 RIT Software Engineering Software Metrics Overview.
Software Defects Cmpe 550 Fall 2005
EEL5881 Software Engineering
Tom Ostrand Elaine Weyuker Bob Bell AT&T Labs – Research
Achieving High Software Reliability
Product reliability Measuring
DEFECT PREDICTION : USING MACHINE LEARNING
Software Reliability Models.
I Know Where You're Hiding
Predict Failures with Developer Networks and Social Network Analysis
By: David Hoang Martin Hoffman
Cost Estimation Van Vliet, chapter 7 Glenn D. Blank.
Summary.
Estimating the number of components with defects post-release that showed no defects in testing C. Stringfellow A. Andrews C. Wohlin H. Peterson Jeremy.
Module Recognition Algorithms
Software Design & Production Methodologies
Why do we refactor? Technical Debt Items Versus Size: A Forensic Investigation of What Matters Hello everyone, I’m Ehsan Zabardast I am a PhD candidate.
Presentation transcript:

1 The Distribution of Faults in a Large Industrial Software System Thomas Ostrand Elaine Weyuker AT&T Labs -- Research Florham Park, NJ

2 The $59 Billion* Question Can we predict where severe bugs are likely to be? Can we identify characteristics of code units, files, or modules that indicate a higher probability of bugs? i.e., can we characterize the fault-proneness of code units? *The Economic Impacts of Inadequate Infrastructure for Software Testing, May 2002, NIST, May 2002

3 Software Engineering Folklore A relatively small number of modules have most of the faults If a relatively small number of modules have most faults, the reason is that they also contain most of the code Large modules are buggier than small ones Buggy early → Buggy late (inherently bad modules) New code is {more, less} buggy than old code Code metrics are {good, bad} predictors of code quality

4 The Case Study We studied the fault database of a large currently in-use under continuing development inventory tracking system.

5 System Information System type: Inventory tracking Lifespan: First release ~1998. Subsequent releases every 3 months. Development stages: requirements, design, development, unit testing, integration testing, system testing, beta release, controlled release, and general release. Code: About ¾ of the files in java, with smaller numbers written in shell script, makefiles, xml, html, perl, c, sql, and awk. Fault data studied from 13 successive releases.

6 Predicting Fault Proneness: Possible factors File Size: Is the density of faults found in a file related to the file’s size? Faults found during early development stages: Does the number of faults found in early stages predict the number that will be found in later stages? Faults found during early releases: Does the number of faults found in early releases predict the number that will be found in later releases? Age of file: Are new files more likely to have faults than files that existed in earlier releases?

7 Number of Files Release Number

8 Size of System (KLOCs, including comments) Release Number

9 Number of files and number of faults detected in each release Release Number Number of Files & Faults

10 Size of System (KLOCs) and Number of Faults Release Number KLOCs & Number of Faults

11 SW Engineering Folklore A relatively small number of modules have most of the faults If a relatively small number of modules have most faults, the reason is that they also contain most of the code Large modules are buggier than small ones Buggy early → Buggy late (inherently bad modules) New code is {more, less} buggy than old code Code metrics are {good, bad} predictors of code quality

12 Distribution of Faults over Files Percent of Faulty Files Release Number Percent of Files that have faults Number of files in release

13 Distribution of Faults over Files Number of Faulty Files Release Number Number of Files that have faults

14 SW Engineering Folklore A relatively small number of modules have most of the faults If a relatively small number of modules have most faults, the reason is that they also contain most of the code Large modules are buggier than small ones Buggy early → Buggy late (inherently bad modules) New code is {more, less} buggy than old code Code metrics are {good, bad} predictors of code quality

15 Concentration of Faults in Rel 12

16 SW Engineering Folklore A relatively small number of modules have most of the faults If a relatively small number of modules have most faults, the reason is that they also contain most of the code Large modules are buggier than small ones Buggy early → Buggy late (inherently bad modules) New code is {more, less} buggy than old code Code metrics are {good, bad} predictors of code quality

17

18

19 Fault density vs. file size (Fenton & Ohlsson, TSE 1997)

20 Fault density vs. module size (Hatton, Software 1997)

21 SW Engineering Folklore A relatively small number of modules have most of the faults If a relatively small number of modules have most faults, the reason is that they also contain most of the code Large modules are buggier than small ones Buggy early → Buggy late (inherently bad modules) New code is {more, less} buggy than old code Code metrics are {good, bad} predictors of code quality

22 Does the number of faults found in early development stages predict the number that will be found in later stages? Does the number of faults found in early releases predict the number that will be found in later releases?

23 Faults by Development Stages Release Number Number of Faults

24 Once Faulty, Always Faulty? From Stage to Stage In every release, ALL of the post-release faults were found in files whose contribution to the integration and system test faults was relatively low (6% - 28%). In other words, 94% -72% of the late pre-release faults were in files that had NO post-release faults. Fenton & Ohlsson observed similar results.

25 Once Faulty, Always Faulty? From Stage to Stage However, across all the releases, there were only a total of 128 post-release faults. No release had more than 20 post- release faults, and half had no more than 10 post-release faults. Not enough data to draw meaningful conclusions.

26 Number of Post-Release Faults Releasein Files with 0 Late Pre-Rel Faults in Files with  1 Late Pre-Rel Faults Total8741

27 Faults by Stages Release Number Number of Faults

28 Faults by Stages (Sorted by Decreasing Number Early Pre-release Faults) Release Number Number of Faults

29 Once Faulty, Always Faulty? From Release to Release High-fault files of a release: Top 20% of files ordered by decreasing number of faults. Over all releases, roughly 35% of these files were also high-fault files in the preceding and/or succeeding releases. For Release 12, more than 40% of its high-fault files were also high-fault files in Release 1.

30 Persistence of high fault count between releases Percent of high-fault files inthis release that are high-faultin prev/next release Release

31 SW Engineering Folklore A relatively small number of modules have most of the faults If a relatively small number of modules have most faults, the reason is that they also contain most of the code Large modules are buggier than small ones Buggy early → Buggy late (inherently bad modules) New code is {more, less} buggy than old code Code metrics are {good, bad} predictors of code quality

32 Old Files and New Files For Release n: an old file is a file that existed in some Release i < n, and still exists in Release n. a new file is a file that did not exist in any Release i < n, and is in Release n.

33 Are new files more likely to have faults than files that existed in earlier releases? Do new files have higher fault density than old files?

34 Old Files, New Files Percent Containing (any number of) Faults Release Number Percent Containing Faults

35 Old Files, New Files Faults/KLOC over all files of the release Release Number Faults/KLOC

36 Summary of Fault Proneness Observations Faults are concentrated in a relatively small number of files, and become more heavily concentrated as the system matures. Large files do not generally have higher fault density than small files; the opposite seems to be true. Files with high fault counts during pre-release do not generally have high fault counts during post- release.

37 Fault Proneness Observations Files with the largest numbers of faults in an early release, seem to be more likely to have large numbers of faults in the next release and later releases. Newly written files are more likely to be faulty than old files, and to have higher fault density than old files.

38 Continuing Work Study additional systems Statistical analysis Study relation between bugs in successive releases (Do persistently high-fault files have related bugs in successive releases?) Do the numbers change if we calculate them for different levels of fault severity? Are code metrics good predictors of faults?