1995, ANNALS OF SOFTWARE ENGINEERING, VOL. 1

Software Process and Product Measurement

Editors:

James D. Arthur and Sallie M. Henry
Virginia Tech, Blacksburg, Virginia, USA

PREFACE

Turquoise_and_Gray1176.gif (1558 bytes)

In the late 1800s Lord Kelvin recognized the crucial role of measurement in the management process. Stated in a paraphrased form, his contention is that "you cannot manage what you cannot measure." Today, metric-based analysis appears to be the most promising approach to controlling the software development process and for assessing the quality of the resulting product. Appropriately chosen, metrics can provide an objective approach to assessing and predicting quality. Assessment capabilities are derived from an examination of product attributes. Prediction, on the other hand, is based on an examination of process artifacts and trends. Moreover, guided by the proper framework, a measurement program can be tailored to provide insights into the development process that reveal why specific problems have occurred and which suggest corrective actions.

To establish an effective software quality measurement program one must recognize those objectives underlying software measurement and implement a measurement process that stresses their achievement. To help focus in on those objectives four crucial questions must be addressed.

Why does an organization pursue the establishment of a measurement program? More specifically, what goals underlie the implementation of a measurement program? The ones touted most often are those of increased productivity, enhanced product quality and an improved development process. Increased productivity is measured on both the individual and group levels. It is often related to short term goals focusing on the speedy development of individual software units. Enhanced quality, on the other hand, is often a tenuous claim because substantiating measures are typically subjective and controversial, and lacks a universally accepted set of standards for either measuring or comparing/contrasting quality. The claim of enhanced quality is often associated with more intermediate- or long-term goals of an organization. An improved process more directly reflects an organizational view and is almost always tied to the longer-term goals.

What is software quality? The meaning of software quality can vary, depending on a person's (or a group's) perspective. For the software engineer, quality characteristics are often stated in terms of attributes associated with individual software components, e.g., high code cohesion and low coupling among modules. A project manager's view of product quality, however, is often focused on the achievement of project level objectives, e.g., maintainability and reliability. Because software quality must reflect characteristics of the product as a whole, and not just components thereof, we maintain that the proper framework for expressing product quality must ultimately accommodate the project manager's perspective, i.e., that associated with project level goals and objectives. Based on a survey of current literature and focusing on product development from a software engineering perspective, we have identified the seven of the most widely accepted project level objectives attributable to software quality: adaptability, correctness, maintainability, portability, reliability, reusability and testability.

Notably missing from the above list is any mention of cost, schedule, and efficiency. Their purposeful omission, however, is not intended to imply that they have no impact on product quality--they can, and do. More precisely, we view cost, schedule and efficiency as constraints which are imposed at the systems engineering level, not as quality objectives of the software engineering process. Effectively, cost, schedule and efficiency are systems engineering objectives that are assumed to be "givens", and which, bound the limits of flexibility afforded to the software developers in producing a quality product.

How is software quality measured? An effective software quality measurement program cannot be developed using semi-related measures combined in an ad hoc, unnatural fashion. To the contrary, those measures, and the framework within which they are applied, must embody a realistic characterization of the software development process. In particular, both the definition and application of software quality measures must be guided by a systematic process that recognizes inherent linkages between the software development process and the achievement of desirable software engineering qualities. More specifically,

When is software quality measured? To predict product quality, measurement must begin early in the software development life cycle. Typically, predictive measurement begins after the software requirements are fixed. Product quality assessment, on the other hand, entails an examination of the product (code and documentation) itself. Within the classical waterfall life cycle model, assessment is performed after the coding phase. If the development process follows an incremental approach, assessment can be performed on pieces of the product, and from which, those attendant measurement values can also be used to predict the quality of components yet to be developed.

In concert with the above comments and observations, we submit that the following preliminary steps are critical to effective software quality measurement:

  1. Establishing an emphasis on software quality as the major goal of the underlying measurement process, and
  2. Focusing on the definition of measures that

Today, software development processes and practices are being structured to improve the likelihood of achieving goals and objectives set forth in the systems and software engineering activities. Most approaches include a well-defined sequence of activities that embody requirements definition, design, implementation and unit/integration/system testing. Associated with each of these is a structured process or methodological approach that outlines how one carries out each activity. These activities, structured processes and methodologies have evolved over time and reflect a wealth of experience. Concomitantly, the articles appearing in this premier volume of the Annals of Software Engineering reflect the authors' experiences and "lessons learned" gained through research and the application of fundamental principles to practical problems. The articles represent a broad spectrum of topics describing many aspects of software quality measurement:

As the complexity and sophistication of today's software systems continue to increase, so must the knowledge base employed by the software engineering community. This premiere volume of the Annals of Software Engineering is devoted to software process and product measurement, and is a concerted effort to expand that base. We would like to thank the authors and referees for their meticulous attention to details during the initial submission and revision processes, and for their substantial contributions to making this volume part of that necessarily expanding body of knowledge.

James D. Arthur and Sallie M. Henry

Editors

Annals of Software Engineering Home Page