What are Software Metrics?
Software Engineering Study Notes
When a single data point has been collected, a measure has been established. Measurement occurs as a result of the collection of one or more data points. A software metric relates the individual data
items in some way (e.g. the number of errors found per review). A software engineer collects measures and develops metrics so that indicators will be obtained. An indicator is a metric or a combination of metrics, which provides insight into the software process, project or the product. Insight leads to informed decision making. It helps software engineers to adjust the process, project or product to improve the general quality.
Types of Metrics:
Metrics may fall into one of two categories:
- Process indicators enable a software engineering organization to gain insight into the effectiveness of an existing process. They enable the managers to assess what works and what doesn’t. Process metrics are collected across all projects and over long periods of time. Their intent is to provide indicators that lead to long-term software process improvement.
- Project indicators enable a software project manager to do the following:
i) Assess the status of an ongoing project
ii) Track potential risks
iii) Uncover problem areas before they turn critical
iv) Adjust work flow or tasks
v) Evaluate the team’s ability to control quality of software work products.
Some times the same software metrics can be used to determine project and process indicators. Measures that are collected and converted to metrics during a project can also be transmitted to people with responsibility for software process improvement. For this reason, many of the same metrics are used both in the process and project domains.
The only rational way to improve a process is to:
i) Measure specific attributes of the process
ii) Develop a set of meaningful metrics based on these attributes
iii) Use the metrics to provide indicators that will lead to a strategy for improvement.
It is important to note that a process is only one of a number of controllable factors in improving software quality and organizational performance. The efficiency of a software process is measured indirectly. A set of metrics is derived based on the on the results obtained from the process. These results include measure of errors uncovered before release of the software, defects reported by end-users, work products delivered, human effort expended, calendar time spent, conformance to the schedule and such other measures.
Process data may be classified into the following two categories:
i) Private process data
ii) Public process data
Individual software engineers may be sensitive to the use of metrics collected on an individual level. These data should thus be kept private and used as an indicator of the individual only. Private process data can serve as an important driver as an individual software engineer works towards improvement. Some examples of private metrics include:
i) Defect rates (by individual)
ii) Defect rates (by module)
iii) Errors found during development.
Some process metrics are private to the software project team but public to all members of the team. This kind of data is used by the team to uncover indicators that can improve the team performance.
Examples of this kind include the following:
i) Defects reported for major software functions (that have been developed by a team)
ii) Errors found during formal technical reviews
iii) Lines of code or function points per module
Public metrics generally assimilate information that was originally private to individuals or teams. Project level defect rates (not attributed to an individual), effort, calendar times and related data are collected and evaluated in an attempt to uncover indicators that can improve organizational process performance.
Project metrics and the indicators derived from them are used by the project manager to adapt workflow and technical activities. The first application of project metrics in most software projects occurs during estimation. Metrics collected from past projects are used as a basis for making effort and time estimates for the new project. As a project proceeds, measures of effort and calendar time spent are compared to the original estimates. The project manager uses this data to monitor and control the progress.
As technical work progresses other project metrics begin to have significance. Production rates in terms of pages of documentation, review hours, function points and source lines are measured. In addition, errors uncovered during each software engineering task are tracked.
Project metrics are beneficial in two ways:
i) These metrics are used to minimize the development schedule by making the necessary adjustments to avoid delays and lower risks.
ii) Project metrics are used to assess product quality on an ongoing basis and modify the technical approach to improve quality when necessary.