Brooks’s definition of architecture (Irrational Software)
In my post Real-world architecture vs software architecture, I wrote that software architecture isn’t as concerned with the UI as “real-world” architecture is. However, according to Fred Brooks, in his The Mythical Man-Month, he defines software architecture as “the complete and detailed specification of the user interface.”
“The architect of a system,” Brooks continues, “like the architect of a building, is the user’s agent. It is his job to bring professional and technical knowledge to bear in the unalloyed interest of the user, as opposed to the interests of the salesman, the fabricator, etc.” This rhymes well with Mark-Jason Dominus’s opinion that the software design patterns movement has overlooked the original intent of Christopher Alexander (the inventor of patterns and pattern languages), for patterns to serve as a communication aid for the dialogue between “users” and engineers (see my post A fresh look at patterns).
The most common usage of the term software architecture today is in referring to the structure of a system or its high-level design. I wonder if Brooks’s definition was the prevailing during the sixties and seventies. And, if so, when the shift began from being concerned with the UI towards being concerned with the structure.
Personally, I think architecture is relevant at all levels of a system and that it’s a pity for it to be used only in talking about the structure and the highest-level elements. Also, the metaphorical aspect of the architecture is too underemphasized (see my post Metaphorical abstraction). I’m thinking of writing a book about this. I think there’s a need for more philosophical books about software engineering. In “real-world” architecture, there’s lots of such books. Who said theories about software have to be so practical and concrete? The field itself is very fuzzy and abstract.