But software professionals typically do not draw on any well-established science for analytical techniques. The evolution of an adequate software engineering discipline depends on the prior and parallel development of an adequate science. Engineering applies science to practical problems. Some elements of the science needed for software engineering have begun to appear. A theory of computational complexity for analyzing well defined processes such as sorting and searching These elements, however, are only the beginning of the science needed to support software engineering.
True engineering requires measurement.
Development of software measurement technology is, therefore, a necessary step in the evolution of software engineering. Measurements are the means by which science transitions to engineering, and through which scientists communicate with engineers. It is how replication of results and standardization of practices become possible. The science accompanying software engineering needs to specify the dimensions along which software can be measured. Management theory suggests that all development projects are faced with trade-offs among three dimensions of cost, schedule and product.