Thursday, January 14, 2010

Introduction to Adaptive Software Development

Jim Highsmith’s ASD arose out of his understanding of Complex Adaptive Systems theory. He views a software project team as a complex adaptive system that consists of agents (team members and other stakeholders), environments (organizational, technological, process), and emergent outcomes (the product being developed).

The Adaptive Life Cycle

ASD’s Adaptive Life Cycle is composed of five steps. The initial step of “project initiation” is done once at the beginning of the project, and the final step of “final Q/A and release” is done once at the end.

The other three steps (adaptive cycle planning, concurrent component engineering and Quality Review) form the “Learning Loop” or “Adaptive Cycles” that are the heart of ASD. These Adaptive Cycles are described as:

Mission-driven—each cycle must make progress toward the project mission;
Component-based—more centrally focused on building things than on performing tasks;
Iterative—going through the learning loop repeatedly is the key to progress;
Time-boxed—the entire project as well as each cycle of the project is completed within a prescribed time period (with the developed functionality expanding or contracting to fit);
Risk-driven—focusing on the highest-risk items first;
Change-tolerant—designed to accommodate changes in each cycle.






Speculate: Project initiation
The project’s first step in speculation is an initiation workshop, from a few days to a few weeks in length, depending on the project’s size and scope. During initiation, the entire project team and the project sponsor or customer determine the project’s guiding parameters, including the project mission, objectives and constraints, the organization for the project, the system requirements, initial estimates of product size and scope, and key risks to the project.

Learning Loop
The initiation practice lays the groundwork for the project’s “Learning Loop.” This loop sees the project continually cycling from speculation to collaboration, to learning as the product emerges incrementally from the adaptive cycles (an iterative approach).

Speculate: Adaptive Cycle Planning
The first cycle of the project begins with the speculative practice we normally call “planning.” This includes these steps:

◗ Determine the project time-box.
◗ Determine the optimal number of cycles and the time-box for each. (Each cycle is usually established to be from a couple of weeks to a couple of months in length.)
◗ Write an objective statement for each cycle.
◗ Assign primary components to cycles.
◗ Assign technology and support components to cycles.
◗ Develop a project task list.

In each successive project cycle, Adaptive Cycle Planning consists of revisiting and revising these things as necessary, based on progress to date and what has been learned in earlier cycles.

Collaborate: Concurrent component engineering

This is where the real work gets done. The content of this phase of each cycle is planned in the Adaptive Cycle Planning phase and done to the extent possible within the planned time-box. Trade-offs may have to be made as the end of the time-box constrains what can be accomplished. This phase is shown as multiple boxes because team members or subteams are generally working concurrently and integrating their work products.

Learn: Quality Review
The end of each cycle is marked by learning activities, where the project team gains insight into progress to date and collects the information they need to perform any replanning at the start of the next cycle. Highsmith specifically recommends three learning activities:

Customer Focus Group Reviews—Because the objective of an ASD project is to converge on a system that meets its business purpose, evaluating the results of each cycle by the ultimate users is a critical learning activity. Highsmith recommends using a joint application development (JAD)-style facilitated workshop to collect input from the user community at the end of each cycle. During this workshop, developers would demonstrate and explain what has been built so far. Then users would try using the software and give developers their reactions to it.

Software Inspections—The primary objective of these inspections is to detect defects in the work products of the cycle, but they have a secondary benefit of ensuring that each team member is familiar with all the code that has been written.

Postmortems—The final step in each cycle is the postmortem, where team members evaluate the effectiveness of the processes they have been using as well as the project’s performance against its plan. If they identify problems, they also brainstorm ideas for solving those problems. The results of the postmortem are fed back (via the Learning Loop) to the planning phase for the next cycle.

Learn: Final Q/A and release
This phase is the final hand-off to the customer. Its focus is to put both the product and all pertinent information about it into the customer’s hands before disbanding the project team.


References
Highsmith, J. A., III, Adaptive Software Development, A Collaborative Approach to Managing Complex Systems, New York: Dorset House Publishing, 2000.

4 comments:

  1. This is very interesting blog and helpful also about software development, thanks allot for shearing this blog.

    ReplyDelete
  2. The initiation processes determine the nature and scope of the project. If this stage is not performed well, it is unlikely that the project will be successful in meeting the business’ needs. The key project controls needed here are an understanding of the business environment and making sure that all necessary controls are incorporated into the project.

    ReplyDelete
  3. The role change from PM to Scrum Master is not easy… releasing control and sharing the responsibility with others can be a little disconcerting. However, I’ve seen at first hand that the productivity gains in adopting this approach are impressive.

    ReplyDelete
  4. Many of those managers get promoted based on technical knowledge of
    human resources or their departments, not on their ability to inspire people.
    Your project’s success depends on your ability to lead. There are many books
    available on leadership. Read voraciously.

    ReplyDelete