The number and range of books on software lifecycle methodologies is probably only eclipsed by the number of publications on weight loss. Despite the huge volume of literature and collective knowledge available on both topics, software projects still run late or fail completely to achieve their goals, and the western world still has an obesity problem.
Anyone wishing to lose weight is spoiled for a choice with an immense range of diets and dieting books from which to choose. However, the collective information in all of these works can be boiled down to a few simple facts that virtually everyone is aware of: If you eat less and exercise regularly, you will become fitter and trimmer.
I believe the same reductive analysis can be applied to software development processes and that out of all the material written on the subject, a core set of fundamental best practices exists that will help guide the majority of enterprise-level projects to a successful conclusion.
The objective of this chapter is therefore to define this distilled set of practices from the standpoint of a rapid development project. Within this chapter, we look at the rationale behind the choice of software development methodology and analyze those elements of a software engineering process that are conducive to rapid development.
We look at the classic waterfall model and see why, despite its widely recognized weaknesses, it still permeates the thinking of the majority of IT professionals. As an alternative to the waterfall model, we examine the benefits of adaptive development methods and compare two examples of this type: first, the well-established IBM Rational Unified Process (RUP), and second, the ultra-nimble process, Extreme Programmingthe flagship of the agile movement.