Hardware design is carried out at several different levels, with different issues, models, and design strategies at each level. Thus circuits, registers, instruction sets, and architectures are designed in terms of different components combined with different operators; the analysis techniques (indeed, what is analyzed), notations, and appropriate tools are correspondingly different.? The same situation is true for software, except that the distinctions among levels - or even the existence of distinct levels - is not as widely recognized.
Preferred citation: Mary Shaw. Elemenmts of a Design Language for Software Architecture, Position Paper for IEEE Design Automation Workshop, January 1990, unpaginated.