Evolution started with simple life forms evolving into more and more complex structures where mother nature slightly adapted life forms to the existing and changing environment. Agile values promotes the same evolutionary approach for both software development in general as well as the architecture.
Software development is done incrementally and this implies that architecture should be kept simple in the beginning. Actually architecture should remain simple and it should always mirror the present state of the product and evolve together with the product. The architecture should not reflect a future version of the product. “Build today what you need today” or go ahead and consider future changes, but do not act until you need. This calls for frequent refactoring of the architecture when it becomes unstructured or inappropriate for solving the present problem. This is perfectly alright when done in small steps.
Architecture should also be a team effort, not a one man show. This makes all of the team understand the architecture as well as contributing to it. It also facilitates collective code ownership and refactoring. Adopting Test Driven Development further fortifies an agile architecture by facilitating regression testing.
Let’s have a quick look at Service Oriented Architecture (SOA). SOA is all about enabling agile values to the business. SOA is able to provide a method for rapidly responding to changing business demands. Sounds familiar? This implies that a SOA architecture and agile methods are very well suited for each other. Combining them enables your organisation to quickly respond to a changing environment.
Read Scott Ambler’s article about Agile Architectural Modelling.
I have been working as a software consultant for more than 11 years. Because of that I am an eager supporter of lean principles and agile methods.