concerns, abstraction (particularly hierarchical abstraction), simplicity, and restricted visibility (locality of information). The overall goal behind these principles was stated to be mastering complexity through intellectual manageability and it was thought that the key to intellectual manageability was the structure of the software itself. Note the emphasis in this early search for design principles on the human mind and the cognitive capabilities of the designer. This emphasis seems to have gotten lost along the way and replaced with a focus on the design and its features without regard to the strengths and limitations of human cognition. General principles are implemented through design concepts. Again in the seventies, various design concepts were identified involving approaches to decomposition such as program families, virtual machines, information hiding, modularity, distinctions between programming in the small (designing modules) and programming in the large (designing the...
Don S. Batory