Software MetricsAdd to favorites
Software Metrics are a measure of some property of a piece of software or its specifications. The goal is obtaining objective, reproducible and quantifiable measurements, which may have numerous valuable applications in schedule and budget planning, cost estimation, quality assurance testing, software debugging, software performance optimization, and optimal personnel task assignments. 
Software metrics should be an integral part of a software developer‘s standard processes. Program Management Offices (PMO) should gain insight into proposed metrics during source selection, and developers should commit to the consistent use of those metrics, including collecting, analyzing, and reporting. Metrics chosen for use should be defined in the Software Development Plan (SDP). Software metrics should: 
- Be integral to the developer‘s processes.
- Clearly portray variances between planned and actual performance.
- Provide early detection or prediction of situations that require management attention.
- Support the assessment of the impact of proposed changes on the program.
The Air Force has defined the following core software metrics: [1,3]
- Software size: The size of the software to be developed/integrated is the most critical factor in estimating the software development effort and schedule. Software size should be estimated and recorded prior to the start of the program and tracked until the completion of development by all programs involving software development or sustainment.
- Software development effort: The software development effort is measured in staff hours or staff months and directly relates to software development costs. The estimated software development effort is derived primarily from software size, but also depends on other factors such as a developer team capability, tool capability, requirements stability, complexity, and required reliability.
- Software development schedule: Software schedules should be planned to at least the function or CSCI level for each increment or block, and should be re-evaluated at major program milestones or whenever requirements are changed. Planned and actual schedules should be tracked continuously from the start through the completion of development. Software schedules should provide insight into the start and completion dates as well as progress on detailed activities associated with requirements, design, coding, integration, testing, and delivery of software products.
- Software defects: Software defects should be tracked as part of the system defect tracking process from the time the products are initially baselined. Software defects should be tracked at the function or CSCI level or lower, by increment or block. Defects are measured by tracking software problem reports. Software problem reports should account for missing or poorly defined requirements that result in software rework or unplanned effort. Software problem reports may be tracked by category or criticality, including the total number of software problem reports written, open, and closed.
- Software requirements definition and stability: The number of software requirements should be tracked by increment or block over time. The number of changes to software requirements (additions, deletions, or modifications) should be tracked in the same manner.
- Software development staffing: Software staffing is tracked by using two separate measures. The first tracks the status of the developer’s actual staffing level versus the planned staffing profile over time. A separate measure tracks developer turnover (unplanned losses of development personnel that must be replaced).
- Software progress (design, coding, and testing): Software progress is used to track over time, down to the lowest level of software components, the actual completion of development phase activities compared to the program plan.
- Computer resources utilization: is a measure of the percentage of computing resources consumed by the planned or actual software operating in a worst case but realistic processing load.
- Computer Software Configuration Item’s (CSCI) are commonly referred to as Software Items (SI) within SMC and the terms are interchangeable.
AcqLinks and References: