Agile Zone is brought to you in partnership with:

Jurgen Appelo calls himself a creative networker. But sometimes he's a writer, speaker, trainer, entrepreneur, illustrator, manager, blogger, reader, dreamer, leader, freethinker, or… Dutch guy. Since 2008 Jurgen writes a popular blog at www.noop.nl, covering the creative economy, agile management, and personal development. He is the author of the book Management 3.0, which describes the role of the manager in agile organizations. And he wrote the little book How to Change the World, which describes a supermodel for change management. Jurgen is CEO of the business network Happy Melly, and co-founder of the Agile Lean Europe network and the Stoos Network. He is also a speaker who is regularly invited to talk at business seminars and conferences around the world. After studying Software Engineering at the Delft University of Technology, and earning his Master’s degree in 1994, Jurgen Appelo has busied himself starting up and leading a variety of Dutch businesses, always in the position of team leader, manager, or executive. Jurgen has experience in leading a horde of 100 software developers, development managers, project managers, business consultants, service managers, and kangaroos, some of which he hired accidentally. Nowadays he works full-time managing the Happy Melly ecosystem, developing innovative courseware, books, and other types of original content. But sometimes Jurgen puts it all aside to spend time on his ever-growing collection of science fiction and fantasy literature, which he stacks in a self-designed book case. It is 4 meters high. Jurgen lives in Rotterdam (The Netherlands) -- and in Brussels (Belgium) -- with his partner Raoul. He has two kids, and an imaginary hamster called George. Jurgen has posted 145 posts at DZone. You can read more from them at their website. View Full User Profile

Software Development Methodologies - The Definitive List

08.12.2008
| 14155 views |
  • submit to reddit

Terminology

In the various descriptions of methods on Wikipedia I have noticed many different terms being used, like method, process, model, framework, etc.. In an effort to be more consistent than the Wikipedia authors I have tried to redefine the methods using the following definitions:

  • methodology (or method) - one specific collection of principles and/or practices
  • methodology family - a set of alternative methods that exist alongside each other
  • framework - a skeleton (for methods) that must be customized/augmented before use
  • model - a description (for methods) that must be implemented by a method, family or framework

For the software developers among us: A methodology is like a class that can be instantiated for a specific project. A methodology family is like a namespace of different but comparable classes. A methodology framework is like an abstract class that cannot be instantiated itself and must be inherited and extended first. A methodology model is like an interface that is just a description of something that must be implemented by one or more classes.

Methodology Leaders

I consider the following methods to be the "leaders" in the crowd. Each of them has achieved a status as a "standard" in a significant part of the IT industry.

Scrum

Scrum is an agile project management methodology, created by Ken Schwaber and Jeff Sutherland. It is a skeleton that includes a small set of practices and predefined roles. Scrum is becoming a de facto standard for managing agile software development projects. One reason for Scrum's popularity is that it consists of only a few common sense practices that can be applied in many situations. This also means that Scrum by itself is never enough, and that development teams have to shop in other methods (usually XP) for additional practices.

Extreme Programming

Extreme Programming (or XP) is an agile software engineering methodology, created by Kent Beck. It is a set of best practices of which some are taken to an "extreme" level. As with other agile methods, XP regards ongoing changes to requirements as a natural and desirable aspect of software development. In the selection of its practices XP leans towards the daily software engineering activities of developers. XP is often seen as complementary to Scrum, filling most of the holes that Scrum leaves wide open.

Lean Software Development

Lean Software Development (LSD ?) is an agile project management framework, translated from lean manufacturing to the software development domain. Originally promoted by Mary Poppendieck and Tom Poppendieck, Lean Software Development is adapted from the Toyota product development system, and it is the embodiment of the "lean" subculture that exists within the agile community (and that has by now become big enough not to be able to call itself lean anymore). It is said that the lean and agile concepts form a perfect match.

Unified Process

The Unified Software Development Process (USDP) is a software engineering framework, created by Ivar Jacobson, Grady Booch and James Rumbaugh. The USDP is an extensible framework that should be customized for specific organizations and projects. It aims to be a complete solution, which means that the full framework is far too big for all but a few projects. However, stripping the framework to its bare essentials is like turning a plane into a bicycle. It might be easier simply to select another more lightweight method.

Rational Unified Process

The Rational Unified Process (RUP) is a software engineering framework, created and maintained by the people at Rational Software (now owned by IBM), including Philippe Kruchten. It is a commercial product delivered as a more detailed version of the Unified Software Development Process (which is presented as a generic public domain process). This also means that the RUP suffers from the same problem as the USDP, being bloated and too costly to customize for small projects.

Dynamic Systems Development Method

Dynamic Systems Development Method (DSDM) is a agile project management methodology, created and maintained by the UK-based DSDM Consortium, which includes both vendors and experts. It was originally based upon the concepts of Rapid Application Development. DSDM finds itself on the same level as Scrum, meaning that it lists a small number of practices for project management of software development, while leaving the details of the real work (building a product) to be filled in by the development teams.

Prince2

Projects in Controlled Environments (Prince2) is a project management methodology, developed by the UK’s Office of Government Commerce (OGC). Prince2 describes many processes and activities covering the management, control and organization of projects, and is deliberately not restricted to IT projects. Even though Prince2’s popularity makes it a de facto standard for project management (particularly in Europe), it is criticized (by many including me) for being too prescriptive, too big and not easily customizable.

Project Management Body of Knowledge

The Project Management Body of Knowledge (PMBOK) is a project management methodology, developed by the US-based Project Management Institute (PMI). It is an internationally recognized standard providing the fundamentals of project management, not limited to IT-projects. Similar to Prince2, the PMBOK describes many processes and activities, though the PMBOK can be seen as being descriptive (what), while in contrast Prince2 is more prescriptive (how). Their main similarity is that both are criticized for not being agile.

Capability Maturity Model Integration

The Capability Maturity Model Integration (CMMI) is a software engineering model, originally developed by Watts Humphrey. The CMMI aids in the definition and understanding of an organization’s processes and was originally intended as a tool for assessing the maturity of an organization’s processes. These days it is also used as a roadmap for process improvement. The CMMI is heavily criticized for focusing on processes rather than people, and it may lead organizations down the road of bureaucracy.

Methodology Followers

I consider the following methods to be the "followers", because they trail the leaders in their number of references, users and implementations.

Feature Driven Development

Feature Driven Development (FDD) is a software engineering methodology, devised by Jeff De Luca and influenced by Peter Coad’s approach to object modeling. FDD is a model-driven process, distinguishing itself from some other agile methods by explicitly allowing time for the creation of an up-front design. It also applies a refreshingly nonconformist approach to code ownership and several other development practices.

Microsoft Solutions Framework

Microsoft Solutions Framework (MSF) is a software engineering framework, created by Microsoft. As always, Microsoft has its own alternative stance on the subject of developing software. MSF provides a metamodel of descriptive components, and it contains two out-of-the-box templates as prescriptive implementations: MSF for Agile Software Development and MSF for Capability Maturity Model Integration.

Open Unified Process

The Open Unified Process (OpenUP) is a software engineering methodology family. Part of the Eclipse Process Framework (which includes OpenUP/Basic) it embraces a pragmatic and agile philosophy, meaning that the creators have preserved the essential characteristics of the RUP/Unified Process, while having thrown out a lot of stuff to make the original framework actually usable.

Essential Unified Process

The Essential Unified Process (EssUP) is a software engineering framework, invented by Ivar Jacobson. It was created as an improvement on the RUP and identifies practices (most of them borrowed from the RUP and agile development methods) that you can choose and combine to create your own method. This is considered an improvement, because with the RUP all practices are intertwined and cannot be seen in isolation.

Agile Unified Process

The Agile Unified Process (AUP) is a software engineering methodology, created by Scott Ambler. It presents yet another attempt at simplifying the RUP, describing an easy to understand approach to developing business application software using agile techniques and concepts. Yet it still aims to remain true to the ideas behind the RUP.

Enterprise Unified Process

The Enterprise Unified Process (EUP) is yet another software engineering methodology, created by Scott Ambler. It is an extension of the Rational Unified Process, adding several new phases and disciplines to a process that was already quite big in the first place.

Crystal

Crystal is a software engineering methodology family, created by Alistair Cockburn. It is called a self-adapting family of human-powered software development methods, of which Crystal Clear is its most prominent member (being the only one with a Wiki entry and its own book).

Evo

Evo is a project management methodology, created by Tom Gilb. Even though Evo is one of the older (and least-known) methodologies, according to some critics it has proven to be one of the most successful evolutionary methods available.

And that's it. I'm sure lots of people will not agree with some of my terminology, classifications or descriptions. And that's good! I love to learn and improve my thinking. So please feel free to add your thoughts...

 

This article was originally published as a blog post at www.noop.nl

Published at DZone with permission of its author, Jurgen Appelo.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)