Friday, September 24, 2010

Plan-based vs. Agile -- Explanation with Control Theory Metaphore

Some of my students and colleagues with electrical engineering background found the following explanation useful to distinguish plan-based and agile methods.

First and foremost, I think a more accurate distinction is that methods exist on a continuum from predictive to adaptive (see Boehm). In this continuum predictive methods focus on planning the future in detail, in contrast, adaptive methods empasize adapting to changes quickly. So, in the following I use the plan-based as a synonym to predictive, and agile as a synonym to adaptive approaches.

To emphasize the differences of the plan-based and agile approaches I use control theory analogy in the following. Plan-driven methods are similar to open-loop control systems: at the beginning of the process the desired output (desired product) is defined, then the controller (development coordinator) determines the necessary inputs (development plan) for the system (development team) in other to that realizes the output (product). So an open-loop control system determines the input using only the current knowledge about the desired output. It means that the system does not observe the output of the process that it is controlling. Therefore, an open-loop control system can not engage in machine learning, cannot correct any errors that it could make, and it also may not compensate the disturbances that influences the system. Open-loop control system is useful for well-defined control systems (development situations) where the relationship between input and the desired output are well known.

Unfortunately, only one thing is usually constant in software development situations: the change. The changes are emanating from different sources, for example, changes of customer requirements, business goals, and technological demands. Consequently, these software development processes should respond to these changes by adapting its execution to the changed situation. Continuing the previous analogy, we can characterize agile methods as closed-loop control systems: additionally to the open-loop control system the disturbances (changes), which affect the system, are measured by different sensors (development reviews) that are transferred to the input of the controller (developer coordinator) in other to the input of the system (development plan) can be adapted to the changed situation. In agile methods, actually, there are typically three planning levels -- therefore three feedback loops -- in the process: daily-, iteration- and release plans to adapt the development process at (roughly) daily, weekly and monthly plan-levels. The intuitive mapping of agile methods to closed-loop control system can be seen in the next figure.

Interpreting the previous mapping on the Scrum method, the method can be visualized as in the next figure (Please note, the daily loop is not shown.).