Agile processes are founded on an empirical model of process control theory, and they deliver value iteratively and incrementally. Customers and development teams collaborate to wrest the greatest value from advanced technologies and emerging requirements, which practitioners call "value-driven" software development. Here, the developer of the agile process Scrum gives his recommendations for sources on agile processes.
In this issue, we're pleased to have Ken Schwaber's take on agile processes (or lightweight methodologies), a popular approach to developing systems. Ken is a developer of one of the processes, Scrum, and has worked with other developers and promoters of agile processes to form the Agile Alliance. Ken recently co-authored a book published by Prentice Hall , Agile Software Development with Scrum .
Agile processes are a new form of software development. Founded on an empirical model of process control theory, agile processes deliver value iteratively and incrementally. Customers and development teams collaborate to wrest the greatest value from advanced technologies and emerging requirements, which we call "value-driven" software development. Agile processes employ value-driven development to increase the success of development projects. Side benefits include development team satisfaction, awareness of the business that the team supports, and reduced costs (since only the code that is needed is built).
Four variables control software development projects: cost, date of delivery, quality, and functionality. The traditional approach to software development attempts to fix these at the start of the project and use this fix to form a contract between the customer and developers. The contract can be paraphrased-if you budget this much money, we will deliver a system to you with this functionality and acceptable quality on this date. To reach these contractual details, requirements and architectures are nailed down and used to create plans and estimates.
Rather than contracting, agile process has the customer and development team collaborate to achieve business value. Agile processes employ short, iterative development cycles. Prior to each iteration, the customer identifies his or her highest-priority requirements that will create a business value. The team identifies how many of these requirements can be turned into a product increment that delivers that value during the next iteration. The team then proceeds for one iteration, doing its best to create this business value. The only deliverable required from the team is live, demonstrable business functionality working on a computer.
Value-driven software development as an alternative to contractual development was initially described in the mid-1990s:
Process Evolution in a Mad World , James Bach. In his seminal article, Bach contrasts risk-oriented process management with control-oriented process management.
Controlled Chaos: Living on the Edge , Ken Schwaber: The earliest presentation of using agile processes to address the uncertainty of technology and emergent requirements in a software development project.
Adaptive Software Development: A Collaborative Approach to Managing
Complex Systems , Jim Highsmith. ISBN 0932633404, Dorset House Publishing, $44.95, 392 pp. The first book to discuss the foundations of agile development processes in complex adaptive systems theory.
Value-driven development is iterative and incremental. A description of this type of agile development, and the emergence and self-organizing characteristics of agility that are mandatory to value-driven development, can be found in the following resources:
Agile Software Development with Scrum , Ken Schwaber and Mike Beedle. ISBN 0130676349, Prentice Hall PTR, $29.95, 176 pp. In this book, the theoretical underpinnings of value-driven software development are presented, along with various practices for running projects using Scrum to deliver value iteratively and by priority. An excerpt of the book that gives a good feel for value-driven development is featured at www.controlchaos.com/excerpt.pdf.
Agile Processes-Emergence of Essential Systems , Ken Schwaber. This article describes beginning research on allowing requirements, architectures, and system design to emerge as the value is delivered, rather than the traditional approaches of requirements traceability and full description of requirements, architecture, and design at the start of a project.
Agile Processes and Self-Organization , Ken Schwaber. A description of self-organizing teams supporting emergent business value. The