What causes bugs? Joshua Sunshine. Bug taxonomy Bug components: – Fault/Defect – Error – Failure Bug categories – Post/pre release – Process stage – Hazard.

Slides:



Advertisements
Similar presentations
Chapter 24 Quality Management.
Advertisements

Metrics and Databases for Agile Software Development Projects David I. Heimann IEEE Boston Reliability Society April 14, 2010.
Configuration management
Automated Software Testing: Test Execution and Review Amritha Muralidharan (axm16u)
1 ECE 453 – CS 447 – SE 465 Software Testing & Quality Assurance Case Studies Instructor Paulo Alencar.
SBSE Course 3. EA applications to SE Analysis Design Implementation Testing Reference: Evolutionary Computing in Search-Based Software Engineering Leo.
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.
1 Software Maintenance and Evolution CSSE 575: Session 8, Part 3 Predicting Bugs Steve Chenoweth Office Phone: (812) Cell: (937)
Software Quality Metrics
Soft. Eng. II, Spr. 02Dr Driss Kettani, from I. Sommerville1 CSC-3325: Chapter 6 Title : The Software Quality Reading: I. Sommerville, Chap: 24.
SE 450 Software Processes & Product Metrics Reliability Engineering.
SE 450 Software Processes & Product Metrics 1 Defect Removal.
CSE 300: Software Reliability Engineering Topics covered: Software metrics and software reliability.
Creator: ACSession No: 5 Slide No: 1Reviewer: SS CSE300Advanced Software EngineeringSeptember 2005 Software Measurement - Basics CSE300 Advanced Software.
CSE 300: Software Reliability Engineering Topics covered: Software metrics and software reliability Software complexity and software quality.
Parameterizing Random Test Data According to Equivalence Classes Chris Murphy, Gail Kaiser, Marta Arias Columbia University.
University of Southern California Center for Software Engineering CSE USC ©USC-CSE 3/11/2002 Empirical Methods for Benchmarking High Dependability The.
Software Process and Product Metrics
SEG Software Maintenance1 Software Maintenance “The modification of a software product after delivery to correct faults, to improve performance or.
S Neuendorf 2004 Prediction of Software Defects SASQAG March 2004 by Steve Neuendorf.
A Comparative Analysis of the Efficiency of Change Metrics and Static Code Attributes for Defect Prediction Raimund Moser, Witold Pedrycz, Giancarlo Succi.
This chapter is extracted from Sommerville’s slides. Text book chapter
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 27 Slide 1 Quality Management 1.
Cmpe 589 Spring Software Quality Metrics Product  product attributes –Size, complexity, design features, performance, quality level Process  Used.
Software evolution. Objectives l To explain why change is inevitable if software systems are to remain useful l To discuss software maintenance and maintenance.
Defect Management Defect Injection and Removal
1 Software Quality CIS 375 Bruce R. Maxim UM-Dearborn.
Reviewed By: Paul Varcholik University of Central Florida EEL 6883 – Software Engineering II Spring 2009 Marc Eaddy, Thomas Zimmermann,
Software Defect Prevention Using Orthogonal Defect Classification
 To explain the importance of software configuration management (CM)  To describe key CM activities namely CM planning, change management, version management.
University of Sunderland CIFM03Lecture 4 1 Software Measurement and Reliability CIFM03 Lecture 4.
Software Measurement & Metrics
Lecture on Computer Science as a Discipline. 2 Computer “Science” some people argue that computer science is not a science in the same sense that biology.
Product Metrics An overview. What are metrics? “ A quantitative measure of the degree to which a system, component, or process possesses a given attribute.”
1Software Measurement Advanced Software Engineering COM360 University of Sunderland © 2001.
Chapter 19: Quality Models and Measurements  Types of Quality Assessment Models  Data Requirements and Measurement  Comparing Quality Assessment Models.
Software Metrics and Reliability. Definitions According to ANSI, “ Software Reliability is defined as the probability of failure – free software operation.
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
Software Quality Metrics
Lecture 4 Software Metrics
1 An Aspect-Oriented Implementation Method Sérgio Soares CIn – UFPE Orientador: Paulo Borba.
SOFTWARE METRICS. Software Process Revisited The Software Process has a common process framework containing: u framework activities - for all software.
THE IRISH SOFTWARE ENGINEERING RESEARCH CENTRELERO© What we currently know about software fault prediction: A systematic review of the fault prediction.
1 Report on results of Discriminant Analysis experiment. 27 June 2002 Norman F. Schneidewind, PhD Naval Postgraduate School 2822 Racoon Trail Pebble Beach,
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
WERST – Methodology Group
Chapter 7 Software Engineering © 2007 Pearson Addison-Wesley. All rights reserved.
Using Bayesian Nets to Predict Software Defects in Arbitrary Software Lifecycles Martin Neil Agena Ltd London, UK Web:
Slide 1 SPIN 23 February 2006 Norman Fenton Agena Ltd and Queen Mary University of London Improved Software Defect Prediction.
Hussein Alhashimi. “If you can’t measure it, you can’t manage it” Tom DeMarco,
1 Chapter 12 Configuration management This chapter is extracted from Sommerville’s slides. Text book chapter 29 1.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
1 The Distribution of Faults in a Large Industrial Software System Thomas Ostrand Elaine Weyuker AT&T Labs -- Research Florham Park, NJ.
Software Quality Assurance and Testing Fazal Rehman Shamil.
Metrics "A science is as mature as its measurement tools."
Aspect-Oriented Software Development (AOSD)
Testing Integral part of the software development process.
Static Software Metrics Tool
Steve Chenoweth Office Phone: (812) Cell: (937)
Assessment of Geant4 Software Quality
Software Metrics 1.
Chapter 18 Maintaining Information Systems
Product reliability Measuring
DEFECT PREDICTION : USING MACHINE LEARNING
Applications of Data Mining in Software Engineering
Two part course Software Engineering option only!
Software metrics.
Exploring Complexity Metrics as Indicators of Software Vulnerability
Chapter 10: Testing and Quality Assurance
Presentation transcript:

What causes bugs? Joshua Sunshine

Bug taxonomy Bug components: – Fault/Defect – Error – Failure Bug categories – Post/pre release – Process stage – Hazard = Severity x Probability

Historical Data Module fault history is predictive of future faults. Lessons: – Team – Process – Complexity – Tools – Domain

Process Does process have an affect on the distribution or number of bugs? Corollaries: – Can we improve the failure rate of software by changing process? – Which process changes have the biggest affect on failure rate? Orthogonal Defect Classification1 Research Question: How can we use bug data to

ODC: Bug Categories

ODC: Signatures

ODC: Critique Validity – How do we derive signatures – Can we use signatures from one company to understand another? Lessons learned: – QA Processes correlates with bugs – Non-QA processes?

Code Complexity Traditional metrics – Cyclomatic complexity (# control-flow paths) – Halstead complexity measures (# distinct operators/operands vs. # total operators/operands) OO metrics Traditional and OO code complexity metrics predict fault density

Pre vs. post-release Less than 2% of faults lead to mean time to failure in less than 50 years! Even among the 2% only a small percentage survive QA and are found post-release Research question: Does code complexity predict post-release failures?

Mining: Hypotheses

Mining: Methodology

Mining: Metrics

Mining: Results 1 Do complexity metric correlate with failures? – Failures correlate with metrics: B+C: Almost all metrics D: Only lines of code A+E: Sparse Is there a set of metric predictive in all projects? – No! Are predictors obtained from one project applicable to other projects? – Not really.

Mining: Results 2 Is a combination of metrics predictive? – Split projects 2/3 vs. 1/3, build predictor on 2/3 and evaluate prediction on 1/3. Significant correlation on 20/25, less successful on small projects

Mining Critique Validity: – Fixed bugs – Severity Lessons learned: – Complexity is an important predictor of bugs – No particular complexity metric is very good

Crosscutting concerns Concern = “any consideration that can impact the implementation of the program” – Requirement – Algorithm Crosscutting – “poor modularization” Why a problem? – Redundancy – Scattering Do crosscutting (DC) research question: Do crosscutting concerns correlate with externally visible quality attributes (e.g. bugs)?

DC: Hypotheses H1: The more scattered a concern’s implementation is, the more bugs it will have, H2: … regardless of implementation size.

DC: Methodology 1 Case studies of open source Java programs: – Select concerns: Actual concerns (not theoretical ones that are not project specific) Set of concerns should encompass most of the code Statistically significant number – Map bug to concern Map bug to code Automatically map bug to concern from earlier mapping

DC: Methodology 2 Case studies of open source Java programs: – Reverse engineer the concern code-mapping – Mine, automatically the bug code mapping

DC: Critique Results: – Excellent correlation in all case studies Validity: – Subjectivity of concern code assignment Lessons learned: – Cross cutting concerns correlate with bugs – More data needed, but perhaps this is the complexity metric the Mining team was after

Conclusion What causes bugs? Everything! However, some important causes of bugs can be alleviated: – Strange bug patterns? Reshuffle QA – Complex code? Use new language and designs – Cross-cutting concerns? Refactor or use aspect- oriented programming