Often, when reviewing software project plans, I see “architecture” as a phase early in the project. It’s typically positioned somewhere after the project kickoff and before coding begins. It’s sometimes the phase in the plan where some level of experimentation occurs, but has a clearly defined end date.
“No battle plan survives contact with the enemy.” – Helmuth von Moltke the Elder
In an agile world, this model rarely works. As the project grows through a series of iterative deployments and releases, the focus of architecture must shift. As features are designed or new capabilities are requested, the architecture must also adapt to these new requirements. Along the way some lessons are learned about the most effective way to implement certain elements.
It’s a results-driven process. Thus, architecture not something that should only be performed at the beginning of a project. It should evolve throughout the life of the project and continue through delivery and support. Plan to have your architecture applied over the life of your projects and your projects will be more successful.