The purpose of software engineering is to control complexity, not to create it.
—Dr. Pamela Zave
At the very beginning of the computing age, the costs of hardware were largely predominant over the costs of software. Some decades later, we look around and find the situation to be radically different. The industry made incredible progress, and hardware costs have fallen dramatically. Software development costs, on the other hand, have risen considerably, mostly because of the increasing complexity of custom enterprise software development.
This situation has created the need for a set of precepts to guide engineers in the design of such systems. Appropriated from the construction industry, the term ...