Agile While Waterfall and RUP lean towards predictability, the overarching goals of Agile are speed and adaptability. There are many different types of Agile development processes, including XP and SCRUM, but all of them strive to get a basic but functional product release into the hands of the customer as quickly as possible. They then follow that release with incremental releases that add and change features as necessary over time to provide a more robust product. Each incremental module is planned, coded, tested and completed over short two to four-week sessions. While the Agile process is scripted like Waterfall and RUP, it emphasizes people and collaboration over the process itself. Rather than depending on many teams of experts, the entire Agile development process is typically undertaken by a single, small, cross-functional, supposedly self-organized team, that must include a customer representative, who attends daily meetings and makes sure the team is working on the things the business truly needs. Constant face-to-face collaboration is the goal, with the customer rep serving as one of the most important collaborators. Documentation is de-emphasized compared to Waterfall and even RUP in order to get something out the door as quickly as possible. With its modular, incremental, collaborative approach, Agile is quick and highly adaptive to changing needs and competitive challenges, which is why it has so many proponents. British Telecom is frequently cited as a large company that has used Agile programming very successfully, with 30 to 90-day development cycles that have yielded dramatic productivity and business benefits over the 18 or more months it took in the past to produce useful software. But while it's easy to fall in love with Agile, it also has its limitations and drawbacks. Its emphasis on daily in-person meetings and close collaboration makes it difficult to adapt the process to development outsourcing, clients and developers separated geographically, or business clients who simply don't have the manpower, resources or interest to spare. Its emphasis on modularity, incremental development, and adaptability doesn't suit it easily to clients who want contracts with firm estimates and timetables. Its reliance on small self-organized teams makes it difficult to adapt to large software projects with many stakeholders with different needs and neglects to take into account the need for leadership while team members get used to working together. Further, lack of comprehensive documentation can make it difficult to maintain or add to the software after members of the original team turn over, and can lead to modules with inconsistent features and interfaces. Lastly, more than with Waterfall and RUP, Agile development typically depends on the ability to recruit very experienced software engineers who know how to work independently and interface effectively with business users.
|