The Agile Manifesto articulates the following core values:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
In essence, informal, iterative, adaptive processes that rely on the collaboration of empowered individuals are strongly favored over formal, bureacratic process and its accoutrements (plans, contracts, comprehensive documentation). If we overlay these values with values for enabling dynamic teaming, value delivery and risk management, we have the value-set that underlies the Visual Architecting Process.
Short iterative cycles, early involvement of stakeholders, and visualization, allow for quick learning, early direction setting and iterative direction correction and refinement. But this learning is done with models as long as they are effective, reducing the cost of change as the architectural design is explored, refined and elaborated. Along the way, the architecture is documented, both to aid the architects in thinking through approaches and alternatives, and as a communication tool to get input and feedback from a broad set of stakeholders.
The process promotes early discovery of opportunity to innovate and differentiate, and builds alignment and motivation through a strong, shared vision and high-level system design that identifies system building blocks that, for large systems, become the units of agile development, allowing further innovation and experiment, with generally lower cost of change—lowered by isolating the impact of change.
This process then, allows us to integrate the best of agile software practices along with other practices used to get complex products created in reduced time—namely, allowing more people to be effective, productive and creatively engaged in building the system, because they have clear commitments to and from the system via the system design, and, yes, its documentation.
Embrace agile development and refactoring. Just start with models, work with all of the agile philosophies while the team is using models and document with sketches (visual and verbal) of the overall system and the key architectural mechanisms. Some of our lessons are learned the hard way, through discovery that necessitates refactoring at the code level. Others can be discovered by modeling the system and refactoring at the conceptual architectural element (module, component, service) level. Others are more apparent; we have after-all, some experience building software systems! Yes, the ground is constantly shifting under our feet–the competitive landscape, and the technological landscape, keep changing, sometimes in revolutionary ways. But at the same time, dominant designs emerge that see us through periods of system evolution.
Naturally, I’ve defended (just enough) architecture documentation various places:
Architects on a Pedestal–or Architects for Target Practice? This piece is intended to plead the case for documentation within an agile culture—not “comprehensive” (whatever that may be) documentation; but rather enough documentation to ensure that the goals of the architecture are achieved, taking into account that the architecture is long-lived and its goals encompass more than a release cycle.
This piece is intended to plead the case for documentation within an agile culture
On Agile and Documentation
Do Agile Methods Require Documentation? by Geoffrey Wiseman, July 18, 2007
Agile/lean Documentation: Strategies for Agile Software Development, by Scott Ambler, last updated July 15, 2007
and while I wouldn’t toss the proverbial baby out with the bathwater:
Are Agile Development Practices Detrimental to Architecture and Design? by Amr Elssamadisy on July 17, 2007