The aim of architecture
A quote from Wilfrid Sellars:
The aim of philosophy, abstractly formulated, is to understand how things, in the broadest possible sense of the term, hang together, in the broadest possible sense of the term. […] To achieve success in philosophy would be, to use a contemporary turn of phrase, to ‘know one’s way around.’ [Two commas added for clarity]
In a biographical article, Willem deVries expands on that:
Thus, philosophy [to Sellars] is a reflectively conducted higher-order inquiry that is continuous with but distinguishable from any of the special disciplines, and the understanding it aims at must have practical force, guiding our activities, both theoretical and practical. [Emphasis mine]
That seems to me not horribly askew from what I’m starting to understand as the aim of software architecture. I’d say something like this:
The aim of architecture is to describe how code, in a broad sense of the term, hangs (or will hang) together, in a broad sense of the term. The practical force of architecture is that it guides a programming team’s activities so as to make growing the code easier.
This definition discards the idea of architecture as some etherial understanding that stands separate from, and above, the code. Architecture isn’t true, it’s useful, specifically for actions like moving around (in a code base) and putting new code somewhere.
I also like the definition because it lets me bring in Richard Rorty’s idea that conceptual change is not effected by arguing from first principles but by telling stories and appealing to imagination. So architecture is not just “ankle bone connected to the leg bone“–it’s about allowing programmers to visualize making a change.
February 14th, 2012 at 5:36 pm
In twitter, Dale Emery wrote “I’ve always seen architecture as attending not only to ease of growing code, but to whatever quality attributes matter most.”
I think he’s right, so I’d now say my goal for architecture is *also* to ease the creation/maintenance of whatever quality attributes matter most. It may not be enough to be able to pile on features. If the app is supposed to be super-usable, the architecture should be such that it’s natural to improve usability and it “cuts against the grain” to reduce usability.
February 19th, 2012 at 12:55 am
[…] The aim of philosophy, abstractly formulated, is to understand how things, in the broadest possible sense of the term, hang together, in the broadest possible sense of the term. […] To achieve success in philosophy would be, to use a contemporary turn of phrase, to ‘know one’s way around.’ Agile Read the original post on DZone… […]