ABSTRACT

We can measure a software system in exactly two different ways. We can measure static software attributes of the requirements, the design, and the code. We can also measure the system as it is running. We will learn very different things from each of these types of measurements. Static code attributes will let us learn much about the structure of a system, how it is built, and where the problem areas in the code base might be. We will use our static software observations to learn about the quality of the system. Dynamic source code measurement, on the other hand, will allow us to observe a system when it is running and draw useful conclusions about the efficacy of the test process, the reliability of a system, its availability, and its robustness. We can also predict how a typical user might employ the system and validate this prediction in practice.