Agile Modeling Home Page

Iteration Modeling: An Agile Best Practice

Scott W. Ambler Home Page
 
   Home  |  AMDD  |  Best Practices  |  Architecture  |  Requirements  |  Analysis  |  Design  |  Documentation  |  Models  |  Modeling Style  |  Contact Us  |  Mailing List  |  FAQ
Agile Modeling At the beginning of each Construction iteration an agile team team must estimate and schedule the work that they will do that iteration.  To estimate each requirement accurately you must understand the work required to implement it, and this is where modeling comes in. You discuss how you're going to implement each requirement, modeling where appropriate to explore or communicate ideas. This modeling in effect is the analysis and design of the requirements being implemented that iteration.  In this article I discuss:  

 

How Much Iteration Modeling?

My experience is that a two-week iteration will have roughly half a day of iteration planning, including modeling, whereas for a four-week iteration this effort will typically take a day.  The goal is to accurately plan the work for the iteration, identify the highest-priority work items to be addressed and how you will do so.  In other words, to think things through in the short term.  The goal isn't to produce a comprehensive Gantt chart, or detailed specifications for the work to be done.  Figure 1 depicts the sketch for the design of a student information editing screen.  This sketch was made on a whiteboard by the product owner, the person responsible for describing and prioritizing requirements for the team, when asked to describe the details behind the "A student maintains their basic information" user story which is to be implemented this iteration.  Notice how the sketch is fairly rough but gets the idea across -- it would have been drawn in a few minutes by the product owner as they explained to the team what they expected the system to do.  Based on this information the team can now accurately estimate the work to be done to implement this screen.  Previously they had no idea that the product owner expected this screen to list the person's seminar history.

Figure 1. Sketch of a screen to be built during this iteration.

Screen sketch

 

Figure 2 depicts a quick sketch of a physical data model (PDM) sketched out by the architecture owner on the team as he explained the concept of introducing an associative table, Enrollment, to implement the many-to-many association between Student and Course.  Although some details are clearly missing, this is enough information required for the architecture owner to explain to the other developers on the team why her estimate was higher that everyone else's for implementing this requirement.  Remember, the goal at this point in time is to simply plan the work.  If more details are required, as shown in Figure 3, they can be identified through more detailed model storming throughout the iteration and/or in the form of tests via a test-driven development (TDD) approach.  The level of detail in Figure 3 isn't required at this point in time -- remember, agile models are just barely good enough (JBGE) for the current situation, and at this point in time you only need enough information to plan the iteration.

Figure 2. Sketch of a physical data model.

Data model sketch

 

 

Figure 3. Detailed data model (not created during Iteration Modeling).

PDM

 

Why Iteration Modeling?

An often neglected aspect of Mike Cohn’s planning poker is the required modeling activities implied by the technique.  Agile teams implement requirements in priority order, see Figure 3, pulling an iteration's worth of work off the top of the stack. To do this successfully you must be able to accurately estimate the work required for each requirement, then based on your previous iteration's velocity (a measure of how much work you accomplished) you pick that much work off the stack.  For example, if last iteration you accomplished 15 points worth of work then the assumption is that all things being equal you'll be able to accomplish that much work this iteration.  This activity is often referred to as the "planning game" or simply iteration planning.

Figure 4. Agile requirements change management process.

How Does Iteration Modeling Fit In?

Figure 5 depicts the high-level lifecycle for Agile Model Driven Development (AMDD) for the release of a system.  Iteration modeling occurs at the beginning of each iteration as part of the overall iteration planning activities.  It is only one of several points in time that you'll model on an agile project: You do some initial requirements and architecture envisioning at the beginning of the project to enable your team to get going in the right direction, you do iteration modeling, and you do just in time (JIT) model storming to explore the detailed requirements and design throughout an iteration.

Figure 5. The AMDD lifecycle: Modeling activities throughout the lifecycle of a project.

 

Recommended Resources 

 

The Object Primer 3rd Edition: Agile Model Driven Development (AMDD) with UML 2   The Object Primer 3rd Edition: Agile Model Driven Development with UML 2 is an important reference book for agile modelers, describing how to develop 35 types of agile models including all 13 UML 2 diagrams.  Furthermore, this book describes the techniques of the Full Lifecycle Object Oriented Testing (FLOOT) methodology to give you the fundamental testing skills which you require to succeed at agile software development.  The book also shows how to move from your agile models to source code (Java examples are provided) as well as how to succeed at implementation techniques such as refactoring and test-driven development (TDD).  The Object Primer also includes a chapter overviewing the critical database development techniques (database refactoring, object/relational mapping, legacy analysis, and database access coding) from my award-winning Agile Database Techniques book.
Agile Modeling   Agile Modeling: Effective Practices for Extreme Programming and the Unified Process is the seminal book describing how agile software developers approach modeling and documentation.  It describes principles and practices which you can tailor into your existing software process, such as XP, the Rational Unified Process (RUP), or the Agile Unified Process (AUP), to streamline your modeling and documentation efforts.  Modeling and documentation are important aspects of any software project, including agile projects, and this book describes in detail how to elicit requirements, architect, and then design your system in an agile manner.

 

Let Me Help

I actively work with clients around the world to improve their information technology (IT) practices as both a mentor/coach and trainer.  A full description of what I do, and how to contact me, can be found here

 


Canadian Flag

Copyright 2006-2008 Scott W. Ambler


This site owned by
Ambysoft Inc.

Agile Data (AD)  |  Agile Unified Process (AUP)  |  Enterprise Unified Process (EUP)  |  My Writings