Chapter 7 - Metrics, Costs and Estimation Flashcards
What does monitoring consist of?
- providing estimates on the future performance of the project
- comparing these estimates to the actual performance
- assessing the quality of the outputs of various activities of the project.
Why is measuring software useful?
- To Characterise—to gain understanding of the process, products, resources and environments, and to establish baselines for comparison with future assessments.
- To Evaluate — to determine status with respect to plans.
- To Predict — to gain an understanding of the relationships among processes and products, and use this understanding to build models of these relationships for the purpose of estimating future performance.
- To Improve — to identify roadblocks, root causes and other opportunities for improving product quality and process performance.
What are some good guidelines for applying metrics?
- Provide regular feedback to the individuals and teams who collect measures and metrics.
- Work with engineers and teams to set clear goals and metrics that will be used to achieve them.
- Never use metrics to threaten individuals or teams.
- Metrics data that indicate problems should not be considered “negative”. All that metrics do is suggest areas for further scrutiny.
- Do not get obsessed with a single metric — for example, defect rates — to the exclusion of all other metrics.
- Use common sense and organisational sensitivity when interpreting data.
In a software engineering project, what are the 3 types of metrics that can be employed?
- Process Metrics
- Project Metrics
- Product Metrics
What are process metrics?
These metrics are collected across all projects over long periods of time for long term process improvement.
What are project metrics?
These are metrics that are collected over a single project to:
• assess the status of ongoing projects;
• track potential risks;
• uncover problem areas before they become critical;
• adjust workflow
• evaluate a team’s ability to control quality.
What are product metrics?
These metrics measure the attributes of a product as it evolves. They are collected for assessing the quality of a product.
Why do we have process and project metrics alongside product metrics?
- not possible to measure product metrics till too late in the project life cycle (need a product to measure) - can’t change quality goals at that point
if we cannot directly measure the product quality, then we can instead measure aspects of the processes that are used to create the product, and measure aspects of the project — the results of applying the processes.
What is the process of calculating metrics?
- data must be collected on the item being measured.
- calculate the summary information using a metric calculation
- indicators are used to interpret the metric in a context.
Define metrics for estimation.
how to estimate the size and complexity of a software project for the purpose of planning
What are the 6 attributes that make a metric useful?
- Simple and computable — calculating (and learning how to calculate a metric) should be straightforward.
- Empirically and intuitively persuasive — a metric should appear valid when proposed, and be in line with the expectations and experience of software engineers.
- Consistent and objective — two different people applying the same metric to the same artifact should arrive at the same answer.
- Use of consistent units — the computation should not lead to combinations of units; e.g. multiplying people on the project by lines of code is not intuitively persuasive.
- Programming language independent —metrics should not be based on the syntax of programming languages, as these differ so much that different languages will end up with wildly different results.
- Useful for providing feedback — a metric should be useful for providing feedback to improve the artifact.
Define cyclomatic complexity.
The cyclomatic complexity of a program is the upper bound of the number of linearly independent paths in the code of that program. A set of linearly independent paths is a set of paths through the program, in which each path executes at least one statement/branch that is not part of any other path in the set.
What is a control flow graph?
A control-flow graph is a directed graph representing all paths that can be executed by a a computer program. The graph, consisting of nodes that represent statements and branches, and direct edges that represent flow between those nodes — that is, an edge exists between two nodes is the statements/branches represented by those nodes can be executed one after the other.
What do the boxes in a control flow graph represent?
statements (in fact, blocks of statements)
What do the diamonds in a control flow graph represent?
branches (or choices)