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 centuries1), 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.
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 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 include the following:
- Rapid Application Development (RAD),
- Extreme Programming (XP),
- the Dynamic Systems Development Method (DSDM), and
Each of these agile approaches is discussed at a relatively high level in this; greater detail is presented in Appendices A through D,respectively.
- If we include the patterns developed for guiding the actions of weaving machines, for example, or even the astronomical software druids ran on their early silicon and granite hardware systems. The concludes with a brief overview of the key features of a number of other agile methods and approaches,including
the Enterprise Agile Process (previously XBreed),
- Ruby on Rails (RoR),
- Evolutionary Project Management(Evo),
- the Rational Unified Process(RUP),
- the Essential Unified process(EssUP),and
- the Software Process Engineering Metamodel (SPEM).
Inevitably, this is a snapshot of the agile methods because it is by necessity a very fast-moving subject.