A common question that people new to agile often have is “how do agile teams address architecture?” Sadly, some people will claim that agile teams don’t address architecture at all, yet nothing could be further from the truth. Architecture is an important aspect of any software-based solution regardless of development paradigm. Agilists take architecture so seriously that we work on it every single day and we safely evolve the architecture in a continuous manner throughout a project.
There are several key aspects to continuous architecture. Disciplined agile teams will perform architecture envisioning at the beginning of a project to ensure that they get going in the right direction. They will prove the architecture with working code early in construction so that they know their strategy is viable, evolving appropriately based on their learnings. They will explore new or complex technologies with small architecture spikes. They will explore the details of the architecture on a just-in-time (JIT) basis throughout construction, doing JIT modeling as they go and ideally taking a test-driven-development (TDD) approach at the design level.
This presentation describes how these techniques fit into your development lifecycle, the advantages and disadvantages of each one, and via examples how to tailor your approach to reflect the scaling factors that you face.