Continuing my recent musings about what defines an architect, I came across this great post from Jon Boxall, a fellow Conchangite (or is it Conchangian?). It's a bit tongue-in-cheek, but his one-line summary is "a software architect is the bloke that has to worry about the non-functionals". Succint and quite accurate.
Interestingly, it's not dissimilar to a definition from Agile Architect: "the architect is responsible for defining and maintaining the structure of the solution, and ensuring that it will meet the requirements". The main difference is that this definition attaches more responsibility to the architect, in that they are supposed to "ensure" the requirements are met. Personally I'm not convinced that this responsibility belongs solely to the architect - if a developer has written a module and it has passed system test, why should a failure to meet requirements rest with the architect?
One definition of the term structure is "something arranged in a definite pattern of organisation". I think that this fits in nicely with the first part of the Agile Architect definition and Jon Boxall's thoughts - an architect is responsible for organising the parts of a solution into patterns so that the non-functional requirements are satisfied.
And I can't finish this post, without mentioning Patterns (capital P) without which an architect isn't really an architect. They are a catalogue of recurring patterns which crop up time and time again and which are really useful. There are software design patterns, as first written about by The Gang of Four (various code implementations exist, e.g. this one in C#), and there are enterprise architecture patterns (as conceived by Martin Fowler, MSDN and The Open Group). Although I'm a great believer in software design patterns, I'm afraid I remain to be convinced about the wider enterprise patterns. This isn't helped by the wide variety of uses of the term pattern - from the "mind-numbingly simple" Identity Pattern (which I think is actually too simple to be called a pattern) to the Load-balanced Cluster Pattern (which relates to physical infrastructure) to the Deployment Plan (which sounds to me more like a ... urm ... plan than a pattern).