Nanos gigantum humeris insidentes – We are but dwarfs standing upon the shoulders of giants.
Bernard of ChartresIntroduction
The long history of software development is too frequently characterized by failure rather than by success. When you consider that the practice of software development and testing has spanned two centuries (and arguably three or more centuries), it seems incredible that such a high proportion of projects are unsuccessful. One highly respected industry report, for example, suggested that as many as 76% of all software projects fail to come in on time, to budget, or to customer satisfaction [2].
Growing dissatisfaction with the failure of traditional heavyweight approaches caused a number of workers in the field of software development to begin to question the role of ponderous, inflexible, and frequently ineffective development processes.
From the 1980s onward, new lightweight or agile approaches to developing and testing software in an effective and efficient manner began to appear, which challenged the need for cumbersome and ineffectual process. Such approaches frequently focused on the need for good communication in projects, the need to adopt smaller, more easily managed iterations, and the need to be responsive to changing customer requirements.
This chapter provides a review of the most prominent agile methods that have been used to develop and test software. Specifically, the agile approaches covered in this chapter include the following:
Rapid Application Development (RAD),
Extreme Programming (XP),
the Dynamic Systems Development Method (DSDM), and
Scrum.
Each of these agile approaches is discussed at a relatively high level in this chapter; greater detail is presented in Appendices A through D, respectively.