Neal Ford and I recently recorded a video series from O'Reilly titled "Software Architecture Fundamentals" where we both talk about all sorts of cool architecture topics. One of the overarching memes within this video series is architecting for change. It is a difficult concept to grasp, particularly when you consider that one of the common definitions of architecture is "something that is really, really hard to change". That said, there are in fact several techniques you can use to help facilitate architectural change within the organization.
Last month I wrote an article for NDC magazine titled "Architecting For Change" which summarized some key techniques you can use for making architectures more agile. You can download a copy of the article here:
The basic techniques for helping to facilitate change within an architecture are as follows (most of these are discussed in the article):
- embrace modularity
- choosing an abstraction
- leveraging standards
- creating domain-specific architectures
- creating product-agnostic architectures
While all this sounds good, keep in mind that creating agile architectures come with a price. You pay for agility with decreased performance, added complexity, and increased development, testing, and maintenance costs.