Software Measurement: Key Concepts and Practices
All successful software organizations use measurement as part of their day-to-day management and technical activities. Measurement provides the objective information they need to make informed decisions that positively impact their business and engineering performance. In successful software organizations, measurement-derived information is treated as an important resource and is made available to decision makers throughout all levels of management.
Software measurement has evolved into a key software engineering discipline. In the past, many software organizations treated measurement as an additional, non-value-added task, or just "another thing to do." Measurement is now considered to be a basic software engineering practice, as evidenced by its inclusion in the Level 2 maturity requirements of the Software Engineering Institute's Capability Maturity Model Integration (CMMI) products and related commercial software process standards.
The way measurement is actually implemented and used in a software organization determines how much value is realized in terms of business and engineering performance. Measurement is most effective when implemented in support of an organization's business and technical objectives and when integrated with the existing technical and management activities that define a software project. Measurement works best when it provides objective information related to the risks and problems that may impact a project's defined objectives. In other words, measurement works best when it is implemented as a significant, integral part of project management.
Top-performing organizations design their technical and management processes to make use of objective measurement data. Measurement data and associated analysis results support both short- and long-term decision making. A mature software development organization typically uses measurement to help plan and evaluate a proposed software project, to objectively track actual performance against planned objectives, to guide software process improvement decisions and investments, and to help assess overall business and technical performance against market-driven requirements. A top-performing organization uses measurement across the entire life cycle of a software project, from inception to retirement. Measurement is implemented as a proactive discipline, and measurement-derived information is considered to be a strategic resource.
1.1 Motivation for Measurement
Why measure software? To begin, software has become a major factor in corporate investment and business strategies, even for "non-software- intensive" organizations. It is a key component in an organization's ability to maintain pace with rapidly changing information technology in an increasingly competitive environment. Given the large corporate investment in developing and maintaining critical information assets, there is a growing demand for more objective assessment and management of software-intensive projects.
Measurement begins at the project level. Software measurement helps the project manager do a better job. It helps to define and implement more realistic plans, to properly allocate scarce resources to put those plans into place, and to accurately monitor progress and performance against those plans. Software measurement provides the information required to make key project decisions and to take appropriate action. Measurement helps to relate and integrate the information derived from other project and technical management disciplines. In effect, it allows the software project manager to make decisions using objective information.
Specifically, software measurement provides objective information to help the project manager do the following:
Communicate Effectively: Measurement provides objective information throughout the software organization. This reduces the ambiguity that often surrounds complex and constrained software projects. Measurement helps managers to identify, prioritize, track, and communicate objectives and associated issues at all levels within the organization. It also is important to communication between supplier and acquirer organizations.
Track Specific Project Objectives: Measurement can accurately describe the status of software project processes and products. It is key to objectively representing the progress of project activities and the quality of associated software products across the project life cycle. Measurement helps to answer crucial questions such as: "Is the project on schedule?" and "Is the software ready to be delivered to the user?"
Identify and Correct Problems Early: Measurement facilitates a proactive management strategy. Potential problems are objectively identified as risks to be assessed and managed. Existing problems can be better evaluated and prioritized. Measurement fosters the early discovery and correction of technical and management problems that can be more difficult and costly to resolve later. Managers use measurement as a resource to anticipate problems and to avoid being forced into a reactive, fix-on-fail approach.
Make Key Trade-off Decisions: Every software project is subject to constraints. Cost, schedule, capability, technical quality, and performance must be traded off against each other and managed together to meet established project objectives. Decisions in one area almost always impact other areas, even if they seem unrelated. Measurement helps the decision maker to assess these impacts objectively and make informed trade-offs to best meet project objectives and to optimize software project and product performance.
Justify Decisions: The current software and information technology business environments demand successful project performance. Business, technical, and project managers must be able to defend the basis of their estimates and plans with historical performance data. Then, they must be able to justify changes to plans with current performance data. Measurement provides an effective rationale for selecting the best alternatives.
Like any management or technical tool, measurement cannot guarantee that a project will be successful. However, it does help the decision maker take a proactive approach in dealing with the critical issues inherent in software-intensive projects. Measurement helps the project, and consequently the organization, to succeed.