Design Principles Are Where You Find Them. - Simonelis, Alex (Communications of the ACM, 2004)
The article focuses on the evolution of software design principles. Machine code had been replaced by ad hoc high-level language programming, which in turn succumbed to structured programming. Structure programming, in turn led to object-oriented programming, which moved on to client-server programming and distributed objects, and even evolving toward Web services. While there is an overlap in the design principles of each of the trends, each of them also delivers its own new design elements. Software is an intellectual creation, which makes it less amenable to the setting of standards and principles. It is also entirely possible that software design principles may vary significantly depending on the application for which the software is intended. It is therefore difficult to be confident that software design is moving toward a stable, solid basis. Software seems to be subject to fewer such rules and is therefore perhaps more like mathematics. Hence, relatively few fundamental design super principles would be available despite discovery of new principles.