| |
| |
Acknowledgments | |
| |
| |
| |
Introduction | |
| |
| |
| |
Objective | |
| |
| |
| |
Approach | |
| |
| |
| |
Motivation | |
| |
| |
| |
Summary | |
| |
| |
References | |
| |
| |
| |
What to Measure | |
| |
| |
| |
Method 1: The Goal Question Metrics Approach | |
| |
| |
| |
Method 2: Decision Maker Model | |
| |
| |
| |
Method 3: Standards Driven Metrics | |
| |
| |
| |
Extension to GQM: Metrics Mechanism | |
| |
| |
| |
What to Measure Is a Function of Time | |
| |
| |
| |
Summary | |
| |
| |
Problems | |
| |
| |
Project | |
| |
| |
References | |
| |
| |
| |
Measurement Fundamentals | |
| |
| |
| |
Initial Measurement Exercise | |
| |
| |
| |
The Challenge of Measurement | |
| |
| |
| |
Measurement Models | |
| |
| |
| |
Text Models | |
| |
| |
| |
Diagrammatic Models | |
| |
| |
| |
Algorithmic Models | |
| |
| |
| |
Model Examples: Response Time | |
| |
| |
| |
The Pantometric Paradigm: How to Measure Anything | |
| |
| |
| |
Meta-Model for Metrics | |
| |
| |
| |
The Power of Measurement | |
| |
| |
| |
Measurement Theory | |
| |
| |
| |
Introduction to Measurement Theory | |
| |
| |
| |
Measurement Scales | |
| |
| |
| |
Measures of Central Tendency and Variability | |
| |
| |
| |
Measures of Central Tendency | |
| |
| |
| |
Measures of Variability | |
| |
| |
| |
Validity and Reliability of Measurement | |
| |
| |
| |
Measurement Error | |
| |
| |
| |
Accuracy Versus Precision and the Limits of Software Metrics | |
| |
| |
| |
Summary | |
| |
| |
Problems | |
| |
| |
Projects | |
| |
| |
References | |
| |
| |
| |
Measuring Size | |
| |
| |
| |
Physical Measurements of Software | |
| |
| |
| |
Measuring Lines of Code | |
| |
| |
| |
Language Productivity Factor | |
| |
| |
| |
Counting Reused and Refactored Code | |
| |
| |
| |
Counting Nonprocedural Code Length | |
| |
| |
| |
Measuring the Length of Specifications and Design | |
| |
| |
| |
Measuring Functionality | |
| |
| |
| |
Function Points | |
| |
| |
| |
Counting Function Points | |
| |
| |
| |
Function Point Example | |
| |
| |
| |
Converting Function Points to Physical Size | |
| |
| |
| |
Converting Function Points to Effort | |
| |
| |
| |
Other Function Point Engineering Rules | |
| |
| |
| |
Function Point Pros and Cons | |
| |
| |
| |
Feature Points | |
| |
| |
| |
Summary | |
| |
| |
Problems | |
| |
| |
Project | |
| |
| |
References | |
| |
| |
| |
Measuring Complexity | |
| |
| |
| |
Structural Complexity | |
| |
| |
| |
Size as a Complexity Measure | |
| |
| |
| |
System Size and Complexity | |
| |
| |
| |
Module Size and Complexity | |
| |
| |
| |
Cyclomatic Complexity | |
| |
| |
| |
Halstead's Metrics | |
| |
| |
| |
Information Flow Metrics | |
| |
| |
| |
System Complexity | |
| |
| |
| |
Maintainability Index | |
| |
| |
| |
The Agresti-Card System Complexity Metric | |
| |
| |
| |
Object-Oriented Design Metrics | |
| |
| |
| |
Structural Complexity Summary | |
| |
| |
| |
Conceptual Complexity | |
| |
| |
| |
Computational Complexity | |
| |
| |
| |
Summary | |
| |
| |
Problems | |
| |
| |
Projects | |
| |
| |
References | |
| |
| |
| |
Estimating Effort | |
| |
| |
| |
Effort Estimation: Where Are We? | |
| |
| |
| |
Software Estimation Methodologies and Models | |
| |
| |
| |
Expert Estimation | |
| |
| |
| |
Work and Activity Decomposition | |
| |
| |
| |
System Decomposition | |
| |
| |
| |
The Delphi Methods | |
| |
| |
| |
Using Benchmark Size Data | |
| |
| |
| |
Lines of Code Benchmark Data | |
| |
| |
| |
Function Point Benchmark Data | |
| |
| |
| |
Estimation by Analogy | |
| |
| |
| |
Traditional Analogy Approach | |
| |
| |
| |
Analogy Summary | |
| |
| |
| |
Proxy Point Estimation Methods | |
| |
| |
| |
Meta-Model for Effort Estimation | |
| |
| |
| |
Function Points | |
| |
| |
| |
Object Points | |
| |
| |
| |
Use Case Sizing Methodologies | |
| |
| |
| |
Custom Models | |
| |
| |
| |
Algorithmic Models | |
| |
| |
| |
Manual Models | |
| |
| |
| |
Estimating Project Duration | |
| |
| |
| |
Tool-Based Models | |
| |
| |
| |
Combining Estimates | |
| |
| |
| |
Estimating Issues | |
| |
| |
| |
Targets Versus Estimates | |
| |
| |
| |
The Limitations of Estimation: Why? | |
| |
| |
| |
Estimate Uncertainties | |
| |
| |
| |
Estimating Early and Often | |
| |
| |
| |
Summary | |
| |
| |
Problems | |
| |
| |
Projects | |
| |
| |
References | |
| |
| |
| |
In Praise of Defects: Defects and Defect Metrics | |
| |
| |
| |
Why Study and Measure Defects? | |
| |
| |
| |
Faults Versus Failures | |
| |
| |
| |
Defect Dynamics and Behaviors | |
| |
| |
| |
Defect Arrival Rates | |
| |
| |
| |
Defects Versus Effort | |
| |
| |
| |
Defects Versus Staffing | |
| |
| |
| |
Defect Arrival Rates Versus Code Production Rate | |
| |
| |
| |
Defect Density Versus Module Complexity | |
| |
| |
| |
Defect Density Versus System Size | |
| |
| |
| |
Defect Projection Techniques and Models | |
| |
| |
| |
Dynamic Defect Models | |
| |
| |
| |
Rayleigh Models | |
| |
| |
| |
Exponential and S-Curves Arrival Distribution Models | |
| |
| |
| |
Empirical Data and Recommendations for Dynamic Models | |
| |
| |
| |
Static Defect Models | |
| |
| |
| |
Defect Insertion and Removal Model | |
| |
| |
| |
Defect Removal Efficiency: A Key Metric | |
| |
| |
| |
Static Defect Model Tools | |
| |
| |
| |
Additional Defect Benchmark Data | |
| |
| |
| |
Defect Data by Application Domain | |
| |
| |
| |
Cumulative Defect Removal Efficiency (DRE) Benchmark | |
| |
| |
| |
SEI Levels and Defect Relationships | |
| |
| |
| |
Latent Defects | |
| |
| |
| |
A Few Recommendations | |
| |
| |
| |
Cost Effectiveness of Defect Removal by Phase | |
| |
| |
| |
Defining and Using Simple Defect Metrics: An Example | |
| |
| |
| |
Some Paradoxical Patterns for Customer Reported Defects | |
| |
| |
| |
Answers to the Initial Questions | |
| |
| |
| |
Summary | |
| |
| |
Problems | |
| |
| |
Projects | |
| |
| |
References | |
| |
| |
| |
Software Reliability Measurement and Prediction | |
| |
| |
| |
Why Study and Measure Software Reliability? | |
| |
| |
| |
What Is Reliability? | |
| |
| |
| |
Faults and Failures | |
| |
| |
| |
Failure Severity Classes | |
| |
| |
| |
Failure Intensity | |
| |
| |
| |
The Cost of Reliability | |
| |
| |
| |
Software Reliability Theory | |
| |
| |
| |
Uniform and Random Distributions | |
| |
| |
| |
The Probability of Failure During a Time Interval | |
| |
| |
| |
F(t): The Probability of Failure by Time T | |
| |
| |
| |
R(t): The Reliability Function | |
| |
| |
| |
Reliability Theory Summarized | |
| |
| |
| |
Reliability Models | |
| |
| |
| |
Types of Models | |
| |
| |
| |
Predicting Number of Defects Remaining | |
| |
| |
| |
Failure Arrival Rates | |
| |
| |
| |
Predicting Failure Arrival Rates Using Historical Data | |
| |
| |
| |
Engineering Rules for MTTF | |
| |
| |
| |
Musa's Algorithm | |
| |
| |
| |
Operational Profile Testing | |
| |
| |
| |
Predicting Reliability Summary | |
| |
| |
| |
But When Do I Ship? | |
| |
| |
| |
System Configurations: Probability and Reliability | |
| |
| |
| |
Answers to Initial Question | |
| |
| |
| |
Summary | |
| |
| |
Problems | |
| |
| |
Project | |
| |
| |
References | |
| |
| |
| |
Response Time and Availability | |
| |
| |
| |
Response Time Measurements | |
| |
| |
| |
Availability | |
| |
| |
| |
Availability Factors | |
| |
| |
| |
Outage Scope | |
| |
| |
| |
Complexities in Measuring Availability | |
| |
| |
| |
Software Rejuvenation | |
| |
| |
| |
Software Aging | |
| |
| |
| |
Classification of Faults | |
| |
| |
| |
Software Rejuvenation Techniques | |
| |
| |
| |
Impact of Rejuvenation on Availability | |
| |
| |
| |
Summary | |
| |
| |
Problems | |
| |
| |
Project | |
| |
| |
References | |
| |
| |
| |
Measuring Progress | |
| |
| |
| |
Project Milestones | |
| |
| |
| |
Code Integration | |
| |
| |
| |
Testing Progress | |
| |
| |
| |
Defects Discovery and Closure | |
| |
| |
| |
Defect Discovery | |
| |
| |
| |
Defect Closure | |
| |
| |
| |
Process Effectiveness | |
| |
| |
| |
Summary | |
| |
| |
Problems | |
| |
| |
Project | |
| |
| |
References | |
| |
| |
| |
Outsourcing | |
| |
| |
| |
The "O" Word | |
| |
| |
| |
Defining Outsourcing | |
| |
| |
| |
Risk Management and Outsourcing | |
| |
| |
| |
Metrics and the Contract | |
| |
| |
| |
Summary | |
| |
| |
Problems | |
| |
| |
Projects | |
| |
| |
References | |
| |
| |
| |
Financial Measures for the Software Engineer | |
| |
| |
| |
It's All About the Green | |
| |
| |
| |
Financial Concepts | |
| |
| |
| |
Building the Business Case | |
| |
| |
| |
Understanding Costs | |
| |
| |
| |
Salaries | |
| |
| |
| |
Overhead costs | |
| |
| |
| |
Risk Costs | |
| |
| |
| |
Capital Versus Expense | |
| |
| |
| |
Understanding Benefits | |
| |
| |
| |
Business Case Metrics | |
| |
| |
| |
Return on Investment | |
| |
| |
| |
Payback Period | |
| |
| |
| |
Cost/Benefit Ratio | |
| |
| |
| |
Profit and Loss Statement | |
| |
| |
| |
Cash Flow | |
| |
| |
| |
Expected Value | |
| |
| |
| |
Living the Business Case | |
| |
| |
| |
Summary | |
| |
| |
Problems | |
| |
| |
Projects | |
| |
| |
References | |
| |
| |
| |
Benchmarking | |
| |
| |
| |
What Is Benchmarking? | |
| |
| |
| |
Why Benchmark? | |
| |
| |
| |
What to Benchmark | |
| |
| |
| |
Identifying and Obtaining a Benchmark | |
| |
| |
| |
Collecting Actual Data | |
| |
| |
| |
Taking Action | |
| |
| |
| |
Current Benchmarks | |
| |
| |
| |
Summary | |
| |
| |
Problems | |
| |
| |
Projects | |
| |
| |
References | |
| |
| |
| |
Presenting Metrics Effectively to Management | |
| |
| |
| |
Decide on the Metrics | |
| |
| |
| |
Draw the Picture | |
| |
| |
| |
Create a Dashboard | |
| |
| |
| |
Drilling for Information | |
| |
| |
| |
Example for the Big Cheese | |
| |
| |
| |
Evolving Metrics | |
| |
| |
| |
Summary | |
| |
| |
Problems | |
| |
| |
Project | |
| |
| |
Reference | |
| |
| |
Index | |