voice of evidence
Fraunhofer Center for Experimental Software Engineering, Maryland n email@example.com
What Do We Know about Agile Software Development?
Tore Dybå and Torgeir Dingsøyr, SINTEF
gile software development has had a huge impact on how software is developed worldwide. A 2005 survey of the US and Europe, for example, revealed that 14 percent ofcompanies were using agile methods, and 49 percent of the companies aware of agile methods were interested in adopting them.1 We can view agile methods such as Extreme Programming (XP) and Scrum as a reaction to plan-
based or traditional methods, which emphasize a “rationalized, engineering-based approach,”2 incorporating extensive planning, codified processes, and rigorous reuse.3 Incontrast, agile methods address the challenge of an unpredictable world, emphasizing the value competent people and their relationships bring to software development.4 Table 1 summarizes these differences. To clarify the effectiveness of agile methods, we reviewed the agile development literature and conducted a systematic study of what we know empirically about its benefits and limitations.
IEEESoft warE Published by the IEEE Computer Society
Three overviews from the first half of this decade describe the state of the art and practice of agile development in terms of lessons learned from applying various agile methods in industry. The first is a literature review from a 2002 VTT Electronics technical report.5 The report discussed the agile development concept in general, then presentedexperiences with 10 agile methods, and compared them with respect to the development phases they support and developer competence levels they require. The authors concluded that only the Dynamic Systems Development Method and the Rational Unified Process cover all development phases fully, while Scrum mainly covers aspects related to project management. They reported anecdotal evidence that agilemethods are “effective and suitable for many situations and environments,” but stated that few empirically validated studies support these claims. A follow-up analysis in 2003 stated that empirical support for the suggested methods remains scarce.6 In 2004, a review emphasizing agile development’s history showed some of its roots in other disciplines.7 In particular, it discussed relationsbetween agile development and the Capability Maturity Model. The authors suggested that agile methods will eventually consolidate, just as object-oriented methods did. Furthermore, they believed that agile and traditional methods will have a symbiotic relationship, in which factors such as
0 74 0 -74 5 9 / 0 9 / $ 2 6 . 0 0 © 2 0 0 9 I E E E
Agile Methods Overview
VOice Of eViDence
Table 1Traditional and agile perspectives on software development4
traditional view Design process Deliberate and formal, linear sequence of steps, separate formulation and implementation, rule-driven Optimization Selection of the best means to accomplish a given end through well-planned, formalized activities Stable, predictable Single-loop/adaptive agile perspective Emergent, iterative and exploratory,knowing and action inseparable, beyond formal rules Adaptation, flexibility, responsiveness Learning through experimentation and introspection, constantly reframing the problem and its solution Turbulent, difficult to predict Double-loop/generative
Goal Problem-solving process
View of the environment Type of learning
Control and direction Avoids conflict Formalizesinnovation Manager is controller Design precedes implementation Technical/functional Logical positivism, scientific method
Collaboration and communication; integrates different worldviews Embraces conflict and dialectics Encourages exploration and creativity; opportunistic Manager is facilitator Design and implementation are inseparable and evolve iteratively Substantial Action learning, John...