This post originated from an RSS feed registered with .NET Buzz
by Sam Gentile.
Original Post: What is Architecture becomes Architecture in an Agile World
Feed Title: Sam Gentile's Blog
Feed URL: http://samgentile.com/blog/Rss.aspx
Feed Description: .NET and Software Development from an experienced perspective - .NET/CLR, Rotor, Interop, MC+/C++, COM+, ES, Mac OS X, Extreme Programming and More!
I think we Architects are still trying to figure this out as there is no universally accepted definition and our profession is so young compared to the building architect profession for instance. Indeed, SEI devotes an entire page to listing definitions. My favorite, comes from the classic Architecture book, Software Architecture In Practice, 2nd Edition, (Bass, Clements, Kazman; Addison-Wesley 2003:
“The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.”
I think “structure” is a key word here as well as what is “visible.” An architect deals with different levels of abstractions and makes different ones or “views“ available to different audiences. This was articulated with the publication of the Documenting Software Architectures: Views and Beyond, as this SEI paper. One may question why we need software architecture at all in this age of Agile and if Agile does architecture or enterprise architecture? There is no conflict or tension in my mind between software architecture design and the agile development of the software that implements that architecture. We talk about the “System Metaphor” in XP for some of this. Kent doesn't seem to talk about the System Metaphor anymore. We have already talked about how Agile does design all the time but something Agile doesn't do enough justice in communications is the System Architecture. That's when I think it's the “duh” moment. Of course, any reasonably sufficient system will require an architecture. Isn't that obvious? I have worked on many Agile teams as an Architect or Lead, and we always had an application or enterprise architecture arising out of the System Metaphor. Did it have six dozen UML diagrams and dozens of documents? No but everyone on the team understood and internalized it before we moved to coding, which obviously can be implemented using Agile methods. There is also no tension in Agile with documentation. Everyone thinks Agile says no docs. What we say is no USELESS docs. Only produce documents that produce business value to someone. Don't just make docs that no one will read. Ensure that they have good value. An architecture document can certainly be one of these. This is why I think the whole Software Factories thing and the Code is Model thing in VSTS/DSI/SDM/Whitehorse thing is tremendously more useful than useless UML sketches at producing REAL value and assets.
Crap, I got way off track here; I wanted this to be a post about defining Architecture and not a post on the relationship of Architecture and Agile methods but it's a good thing. Maybe it will get the discussion going.
Unlike some of the other toothless certifications, we are attempting to define a rigorous peer board-reviewed Microsoft Certified Architect Program. A topic of much discussion at the recent Architect MVP Summit sessions, it remains to be seen whether this will be a “real world“ cross-product Architect certification rather than a pure Microsoft one