Software Development
December 2003
The Right Tool for the Job
When it comes to methodologies, one size doesn’t fit all. By examining all the options, you can create a mix-and-match approach that best suits your project.
By Scott W. Ambler
Common Software Processes | ||
Process/Method | Description | When/How to Use It |
Agile Data (AD) | A partial agile methodology focusing on techniques that support evolutionary (iterative and incremental) database development. | Tailor AD philosophies and techniques into other evolutionary processes. |
Agile Modeling (AM) | A partial practices-based methodology that describes techniques for effective modeling and documentation of systems. | Tailor AM principles and practices intoother agile or near-agile processes. |
Dynamic System Development Method (DSDM) | An agile software development methodology that has received ISO 9001 certification. In many ways, DSDM is a formalization of the Rapid Application Development (RAD) methodologies of the 1980s. | Appropriate for developing user interface–intensive systems and/or complex business applications. |
Enterprise Unified Process (EUP) | A rigorous full lifecycle methodology that includes development, operation and retirement of software-based systems. The EUP extends the RUP to a multisystem view that includes enterprise architecture, reuse management, portfolio management and people management activities. | You’ve been successful at several RUP projects and wish to now take the full system lifecycle into account, as well as cross-project issues such as portfolio management, strategic reuse and enterprise architecture. |
Extreme Programming (XP) | An agile software development methodology that focuses on the critical activities required to build software. | Small, colocated project teams (4–10 people), where the requirements are un-certain, and a good relationship (potentially) exists with project stakeholders. |
Feature Driven Development (FDD) | An agile software development methodology based on short iterations that includes explicit modeling activities. | Small project teams (4–20 people), uncertain requirements, and your team is willing to follow a modeling-driven approach. |
IEEE 12207 | A rigorous full lifecycle methodology process that includes development, operation and retirement of software-based systems. | Medium to large project teams (20+ people). You are mandated (for example, by government) to follow this approach, or you intend to outsource part of the development effort. |
Rational Unified Process (RUP) | A rigorous software development process that is iterative and incremental. Can potentially be instantiated in an agile manner (see Gary Evans’ “Palm-Sized Process: Point-of-Sale Gets Agile,” Sept. 2001), although this rarely occurs successfully in practice. | Medium to large project teams (10+ people), or where a phased approach is required to support the outsourcing of construction. |
Scrum | A partial agile methodology that describes effective project management techniques. | Tailor Scrum into agile or near development methods. |
Test Driven Development (TDD) (See my article, “Test-Driven Development,” Oct. 2002) | A partial development methodology that describes how to write high-quality, tested source code. | Tailor TDD into any development or full-lifecycle process. |