Agile project management has entered the mainstream – incremental delivery is now common and (should be) expected for any new software development project. Which agile development methodology should you use on your project? There are at more than ten to choose from. What makes them different? The risks that they try to address.
Ronny De Winter writes a great summary of 11 iterative processes and contrasts the risks they attempt to address.
Agile Software Development Methodologies
Here’s the list of iterative development approaches that Ronny identifies and some additional data on each:
- Spiral Model. Created in response to the classic waterfall and “code and fix” software development practices. Code and fix, as described by Spiral’s creator (Boehm), has the problem that requirements analysis and design come after the coding. Absent or poor design made maintenance expensive, and functionality was mis-aligned with user’s needs.
- Incremental Development. Winter describes this as iterative releases, after requirements and design work is done up front. This distributes the integration risk throughout the project, and provides an opportunity for user feedback before “completing” the project.
- Rational Unified Process (RUP). IBM’s flavor of incremental development, which has a lot of industry acceptance.
- eXtreme Programming (XP). Kent Beck’s agile approach. There’s a great debate with Alan Cooper (of UX fame) that puts this approach in context. Kent’s book (referenced above) is a great overview of the concepts. Kent is a very visible rabble-rouser, effectively using hyperbole to promote work-methods and approaches that feel very radical to stodgy organizations. There is a lot of debate about many of his extreme statements, but ultimately, he’s shifting the conversation. And XP is built on many great ideas.
- Scrum. Scrum focuses on tactical execution using 30 day sprints (increments). There are some very effective low-overhead ways to track project status as well as actual effort versus estimates.
- Dynamic Systems Development Method. Ronny describes this as being like RUP with reduced emphasis on tools. Here’s a comparison of DSDM and Scrum. The process focuses on using timeboxes. DSDM is a self-described ‘corporate-friendly’ agile process. Don’t underestimate the challenges of rolling out agile in a corporation.
- Crystal Methods. The latest from Alistair Cockburn. Ronny says it is like XP with more focus on documentation. Cockburn says “The Crystal Light family is predicated on allowing developers the maximum individual preference. XP is predicated on having everyone follow tight, disciplined practices.”
- Feature Driven Development (FDD). Decomposes a project by feature – an approach built on domain modeling.
- Test Driven Development (TDD). A focus on testable requirements and automated testing.
- Component Based Development (CBD). This seems to be the “assemble other people’s software” approach. The goal, according to CMU’s SEI, is to drive development of large software systems by integrating existing software products.
- Lean Software Development. A focus on eliminating inefficiencies in software development by extending the “lean manufacturing” concepts into software development.
Ronny’s summary is great. The conclusion – “there’s no one right answer.” Kent Beck once told me that teams evolve their processes in response to the bad experiences they’ve had. If lack of testing burned them on a past project, they would focus on testing moving forward. If incomplete requirements were the problem, the solution was in improved requirements.
You will read this list with a set of pain-points in mind. These two articles (plus linked references) will help guide you to what will work well for your next project.