Software engineering is a practical engineering discipline without scientific ambitions where rules of thumb and guidelines assume the role of theory. Most of the theories are casual, proposed by the authors but rarely subjected to extended studies, and they explain only a limited set of phenomena. Furthermore, most of these theories aren't subject to serious academic discussion; they aren't evaluated or compared with respect to traditional criteria of theoretical quality such as consistency, correctness, comprehensiveness, and precision. Without the predictive and prescriptive support of theory, software engineering would be relegated to the costly design process of trial and error. With theory, we rise from the labor of random action into intentional design. Software engineering is already full of implicit theory. It should be brought out into the open and subjected to the serious scientific treatment it deserves.
QC 20121018