Crafts, however, can only be produced on a small scale. The needs of large scale production lead to a codification of standard procedures into commercial practice. These practices allow software projects to be managed more or less well, and they can be refined pragmatically. 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.