|
One of the common misperceptions with agile software development is that agilists don't "do architecture." This completely ignores the 11th principle of the Agile Manifesto which states that the best architectures evolve over time. More importantly, when you observe agile teams in action, you find that the majority of them do some initial architecture modeling at the beginning of the project. But, perhaps because agilists are not creating detailed architectural specifications as the result of a "big design up front" (BDUF) approach, many people think that we're not doing architecture. Nothing can be further from the truth, and in this article I overview an agile best practice called "architecture envisioning" which enables you to gain the value from modeling without the cost of needless documentation.
Agile Model Driven Development (AMDD) explicitly includes an initial requirements and architectural modeling effort during Iteration 0 of an agile project (see Figure 1).[i] Iteration 0 has various names, for example Eclipse Way calls this the Warm-Up phase and Open Unified Process (OpenUP) calls it the Inception phase. The basic concept is that this is the period of the project where you try to get the project off on the right foot. Your goal is to understand the scope of the effort and to identify a plausible technical strategy. The information garnered from these efforts will help you to do initial high-level estimating and scheduling, which in turn enables you to gain funding and support for your project. Before you say that Agilists don't work this way, note that the DDJ 2007 Agile adoption survey found that 77% of agile were doing initial high-level agile architecture modeling, and that 88% of those teams found the effort worthwhile.[ii] ![]() Figure 1. Agile Model Driven Development (AMDD) Lifecycle
Figure 1 also shows that you model, on a just in time (JIT) basis, throughout construction iterations. At the beginning of each iteration you'll do some modeling as part of your iteration planning efforts where you determine what you're going to do and how you think you're going to do it. You'll also "model storm" regularly. A model storming session is an impromptu event where you model with one or more people to explore a feature or to think through the high-level design strategy to implement a feature. Most agile teams will specify the requirements and design detail via a test-driven design (TDD) approach in the form of tests, which in effect are executable specifications. With architectural envisioning you perform some high-level architectural modeling early in the project to help foster agreement regarding your technical strategy within the team and with critical stakeholders. The goal at this point is to identify an architectural strategy, not write mounds of documentation, enabling you to do this swiftly. The secret is to keep things simple. You don't need to model a lot of detail, you simply need to model enough. If you're writing use cases this may mean that point-form notes are good enough. If you're domain modeling a whiteboard sketch or collection of CRC cards is likely good enough. For your technical architecture a whiteboard sketch overviewing how the system will be built end-to-end is good enough. I cannot say this enough: your goal is to build a shared understanding, it isn't to write detailed documentation. What Models Should You Create? When you're initially envisioning the architecture you'll typically focus on a few high-level free-form diagrams which overview how you think you'll build the system. When envisioning the architecture for a business application, you should consider creating:
How Much Initial Architecture Modeling? Many traditional developers will struggle with an agile approach to initial architecture envisioning because for years they've been told they need to define comprehensive models early in a project. But, if you were to step back and think about it for a bit, this really doesn't make much sense in practice. To see this, let's consider some common situations that you might find yourself in and ask how much initial architectural modeling you would need to do. These scenarios are summarized in Table 1.
You will gain significant value from initial architectural modeling when your team is dispersed amongst several sites, or if it's large, or if you have several subteams because it will help you to organize your efforts. It helps you to grow a common vision between the subteams but more importantly you can identify separate components/subsystems, and the initial interfaces to those components, which can then be assigned to the subteams. These interfaces will evolve over time, so you'll need to collaborate with one another throughout the project, but once again some initial architecture modeling will provide significant benefit. Why Architectural Envisioning? Some people will tell you that you don't need to do any initial architecture modeling at all. However, my experience is that architecture envisioning offers several benefits:
The implication is that in many cases architectural decisions have been made long before your project even started. Disciplined agile developers recognize this and choose to invest in a bit of up front modeling to leverage these known things and thereby reduce overall technical risk on their projects. About the Author Scott W. Ambler is the Practice Leader Agile Development in IBM's Methods Group. He is the founder of the Agile Modeling (AM), Agile Data (AD), Agile Unified Process (AUP), and Enterprise Unified Process (EUP) methodologies. Scott is the (co-)author of 19 books, including Refactoring Databases, Agile Modeling, Agile Database Techniques, The Object Primer 3rd Edition, and The Enterprise Unified Process. Scott is a senior contributing editor with Dr. Dobb's Journal and his home page is www.ibm.com/rational/bios/ambler.html. [i] Ambler, S.W. (2003). Agile Model Driven Development: The Key to Scaling Agile Software Development. www.agilemodeling.com/essays/amdd.htm [ii] Ambler, S.W. (2007). Dr. Dobb's Journal 2007 Agile Adoption Survey. www.ambysoft.com/surveys/agileMarch2007.html [iii] Ambler, S.W. (2004). Agile/Evolutionary Data Modeling: From Domain Modeling to Physical Modeling. www.agiledata.org/essays/agileDataModeling.html
Set as favorite
Bookmark
Email this
Hits: 7598 Comments (0)
|
| < Prev | Next > |
|---|
Agile Marketplace - Announcements and Special Offers
White Paper: Code Review IS an Agile Process!
Peer code review is one of the most effective ways to improve Software Quality – but is it Agile? Done correctly, it absolutely is. This white paper tells you how.
Download Today!
Virtual Conference: Collabnet Agile ALM
Stay current by attending CollabNet’s virtual conference, Agile ALM for Distributed Development, Thursday, April 15, from 7:30 am to 3:30 pm PDT. Free registration.
Register Today!
Webcast: Moving Build and Code Quality Upstream
This interactive panel discussion moderated by Bob Aiello, Editor-in-Chief fo the CM Journal brings industry experts Anders Wallgren, CTO of Electric Cloud and Gwyn Fisher, CTO of Klocwork together for a candid discussion of the cost savings, productivity and quality benefits that can be achieved by stabilizing builds and code quality as early in the development cycle as possible.
Register Now!
Collabnet -TeamForge 5.3
CollabNet TeamForge 5.3 includes Dynamic Planning—providing flexibility to model release scope and timeline in a single view. Now, you can easily manipulate/adjust release data.
Download Your Free Trial
Requirements-based testing (RBT) can help to ensure comprehensive test coverage, reducing the risk of failure and improving software quality. This white paper details how application lifecycle management can be used to more effectively implement RBT processes, offering greater collaboration, traceability and control.can help you increase efficiency, reduce project risk, and improve overall software quality. Learn how MKS Integrity for application lifecycle management enables RBT, delivering full lifecycle traceability to help ensure that project requirements have complete test planning and execution coverage.
Download the Requirements-Based Testing whitepaper
PureCM –SCM for Agile Teams
PureCM helps you to manage development in short iterations: keeping track of changes, supporting automated builds and preserving frequent snapshots of your projects.
Get the free trial now


One of the common misperceptions with agile software development is that agilists don't "do architecture." This completely ignores the 11th principle of the 
