Software is normally considered to be a collection of diverse, unrelated and relatively informal activities concerned with controlling, managing and predicting various aspects of the software development process. The main aim of this work is to provide a coherent framework for these diverse activities, offering a scientific basis for the subject area. This framework is based on two concepts, namely a rigorous approach to measurement extracted from basic ideas in measurement theory and a classification of the entities of interest in software development in terms of products, processes and resources. The author explains the pitfalls associated with software measurement and indicates how these may be avoided. He shows how to develop and implement data collections and metrics strategies and how to set up experiments to validate metrics and models. Using this framework, the text demonstrates and analyzes a range of software metrics and models. Supplementary material is provided by Darrel Ince, Barbara Kitchenham, Bev Littlewood, Peter Mellor and Dale Tillor. Exercises and examples are also included throughout.