EEL6883_SEII_Spr07_ProjectTeam2
Download
Report
Transcript EEL6883_SEII_Spr07_ProjectTeam2
The Organizational Impacts on Software
Quality and Defect Estimation
Stephen Lopez-Couto
Discussion Topics
Introduction
Defect Concepts
Defect Estimation Methods
Definition of a defect
Static vs. Dynamic Discovery
Linear Regression
Capture/Recapture
AI
Defect Estimation Variables
Further Research
Conclusion
Introduction
Defect Estimation
The act of “guessing” the number of
defects that exist in a current software
baseline
Purpose of this paper is to determine
the usefulness of metrics that are not
explicitly tied to the code to make the
estimates
Introduction
Organizational Elements:
Development Team Size
Developer Experience
Institutional Processes
CMMI
level for example
Development Tools
Development Schedule
Programming Language
Software Architecture
Defect Concepts: What is a
Defect?
There is no common definition of a
defect
Consider the following:
Program is supposed to add the
variables ‘y’ and ‘i’ together and put the
value into ‘x’
int i = 5;
int y = 6;
int x = y+1
Print(x);
Defect Concepts: What is a
Defect?
There is no common definition of a
defect
The programmer introduced a defect
Consider the
following:
Correct
code: int x = y + i
Program is supposed to add the
variables ‘y’ and ‘i’ together and put the
value into ‘x’
int i = 5;
int y = 6;
int x = y+1
Print(x);
Defect Concepts: What is a
Defect?
Two things occur before a defect
can be detected
1.
2.
Fault – Incorrect value in the internal
state of the program
Failure – When a fault is realized as
output
int i = 5;
int y = 6;
int x = y+1 // Causes a Fault
Print(x); // Causes a Failure
A Failure may not be detected until well after the fault has occurred!
Defect Concepts: Static Vs.
Dynamic Discovery
Static – Does not utilize executing
code
Software Inspections
Walkthroughs
Complexity Mapping
Dynamic – Utilizes executing,
compiled code
Runtime tests
Automated defect discovery tools
Defect Estimation Methods
Estimating the number of defects is by no
means an exact science
There are lots of different ways to
determine an estimate
Most of the methods are highly tied to a
specific organization or software baseline
Not good enough for general use
Three general methods will be discussed
Linear Regression
Capture/Recapture
Artificial Intelligence
Bayesian Belief Networks
Neural Networks
Defect Estimation Methods
Linear Regression
Method:
Determines a mathematical
expression that relates some
number of independent variables
(the input metrics) and the
dependent variable (defect
estimation)
Variable Type: Numeric Only
Defect Estimation Methods
Capture/Recapture
Method:
Some number of defects are
seeded into the software at
development time. When testing
occurs ratio of seeded to
unseeded defects found is used to
estimate the total number.
Variable Type: N/A. Only track
defect counts.
Defect Estimation Methods
AI: Bayesian Belief Networks
Method:
A network that weighs the
relationship among different
variables is created (using expert
knowledge) and processed using
Bayesian probabilities to
determine the quality of the
software.
Variable Type: any
Defect Estimation Methods
AI: Neural Networks
Method:
A multilayer perceptron using the
back propagation algorithm is
trained on legacy defect data and
then provides estimates based on
input data.
Variable Type: Numeric Only
Defect Estimation Variables
Further Research
Three main areas
1. Transformation of non numerical
data into a numerical form
2. Additional estimation methods
that do not utilize numeric only
data
3. Determination of common
relationships among the input
metrics, independent of which
method is used
Conclusion
Organizational Element Data is
useful when paired with the proper
estimation method
Limitations of the most common
method (linear regression) has led
to a general shunning of these
metrics
Defect Estimation approaches are
not ready for real world use
They are too tied to specific cases
Questions
Questions?