Three Patterns that Help Explain the Development of Software Engineering

Date of Original Version



Working Paper

Rights Management

All Rights Reserved

Abstract or Description

The term "software engineering" came to prominence when it was used as the name of a NATO workshop in 1968. It was used then to draw attention to software development problems. It was then, as to a large extent it remains now, a phrase of aspiration, not of description. In the intervening years, the focus of the academic community (though not so much the industrial software development community) has shifted from simply writing programs to analyzing and reasoning about large distributed systems of software and data the come from diverse sources. I see three simple patterns that have guided this development. Each of these provides partial explanations, but none is either comprehensive enough or rich enough to be in and of itself a full model. These notes describe those three patterns.