COURSE 5125 | 2-DAY SESSION
Managing Software Development with Metrics
Course Outline
I. Software Metrics, and its Role in the Software Development Process
Due to growth size and complexity, software developers are finding it more difficult to deliver quality software on time and within budget. This section introduces software metrics and the contributions it can make to solving this problem.
- Crises-Driven development
- Software growth
- Problems due to growth in size
- Error introduction and discovery rates
- Reasons for software metrics
- Capturing and using metric data to set new goals
- Air force directive on metrics
II. Government/Industry“Best Practices” Software Metrics
This is the initial section of the“best practices” metrics, and will cover metrics that can be used throughout the software development life cycle. Other sections will cover metrics that can be used in individual phases, (from Requirements to Testing) or for special purposes. All the metrics will be presented with numerous examples and variations. You will learn how to set-up, use, and analyze these metrics. Following the metric sections, there will be two real-life Case Studies. Each will cover the analysis of scenarios utilizing a combination of metrics, and their interactions.
- Measurement and metrics
- Science and measurement
- Software metrics
- Software size metric
- Software personnel metric
- Computer resource utilization metric
III. Metrics in the Requirements and Design Phase
Getting the requirements correct is perhaps the most important part of the software development project. The requirements documentation is not only critical to the software design, but also the base document for generating the acceptance tests. This section will include metrics that can be used in the Requirements Phase and design.
- The Requirements Phase
- Survey of S/W risks and cost drivers
- Requirements Volatility Metrics
- Requirements Change Metrics
- Requirements Progress Metrics
- Criteria for Good Requirements
- Analysis of Requirement Errors
- Requirement Tracing Metrics
- Testable /Non-Testable Requirements
- The Design Phase
- Design progress metric
- Design stability metric
- Design complexity metric
IV. Metrics in the Testing Phase
A number of recent studies have shown that the various testing phases can account for up to 50% of the total resources spent for developing a software system. This section will discuss metrics that can be used in the Testing Phase.
- The Testing Phase
- The high cost of testing
- What is software testing?
- Unit test progress metric
- Test coverage analysis
- Depth of testing metrics
- Branch/statement coverage
- Improving the quality of unit testing
- System test progress metric
- Have all requirements been tested
- Breadth of testing metric
- Incremental release content metric
V. Incident Tracking and Management
Incident or defect measures identify the number of problem reports, defects, and failures in the software product. Defect metrics are some of the best measures for monitoring test progress. These measures also provide an indication of product quality.
- Incident/defect profiles
- Error correction performance
- Defect density
- Defect containment metric
- Density of requirements defects found in different phases
- Free open source fault tracking systems
VI. More Information of Metrics
This section will include an overview of Software Quality Goals, Factors, Subfactors, and Metrics as well as crucial information needed to implement a new metrics program.
- Conceptual Framework
- Potential Conflicts among Quality Metrics
- Tradeoffs among Factors
- Examples of Tradeoffs
- Classifications of a Metric
- Properties of a Good Metric
- Developing a metrics Program
- Problems in Implementing Metrics
- Cautions about Metrics
- Software Measurement Principles
VII. The Goal-Question-Metric Paradigm
A widely used approach for developing organizational goals for project control and decision-making, and using metrics to evaluate if these goals are being met, is the Goal-Question-Metric (GQM) Paradigm authored by Dr. Victor Basili. The major steps are (1) Develop a set of goals, (2) develop a set of questions that characterize the goals, and (3) specify the metrics needed to answer the questions.
- Goal-Question-Metric Paradigm
- Goal-Question-Metric Examples
- Goal-Question-Metric Exercise
VIII. McCabe’s Complexity Metric
A problem in software development is the creation of highly complex designs that are difficult to understand, and therefore costly to code, test, and maintain. This section will discuss McCabe’s Complexity metric, and contains practical examples of how it can be used to simplify complexity that can result in appreciable savings in testing and maintenance. Class examples will cover how to calculate the complexity metric as well as identifying the correct number of paths to test.
- Software Complexity
- McCabe’s Cyclomatic Complexity Metric
- Properties of a Complexity Number
- Drawing a Flowgraph
- Calculating a Complexity
- Calculating the number of paths
- Using the metric for identifying program paths for testing
- Practical Application