big

NOOP.NL | The Creative Networker

The Definitive List of Software Development Methodologies

18/07/2008

Use Another ToolThe nice thing about software development methodologies is that they are just like standards. There are so many to choose from! Come to think of it… some of them are standards (which more or less proves my point). Unfortunately, despite a lot of searching I haven’t found any page with a list of all major software development methods. So I decided to create one myself.

Here it is… and I hope you will let me know what you think of it.

NOTE: THIS IS AN OLD POST WHICH WILL NOT BE UPDATED

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.


Management 3.0Do you seek more advice for Software Developers, Team Leaders & Development Managers? 

Get the book!


Management 3.0

Leading Agile Developers, Developing Agile Leaders


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…

(image: zzpza, Creative Commons 2.0)


Management 3.0Do you seek more advice for Software Developers, Team Leaders & Development Managers? 

Get the book!


Management 3.0

Leading Agile Developers, Developing Agile Leaders


This article is written by on in Top Lists. Jurgen Appelo is at Happy Melly. Connect with Jurgen Appelo on .

This article was posted in:

  • Vasileios Dimitriadis

    Thanx dude! I was looking for something so complete about software development methodologies.

  • http://profile.typekey.com/jurgenappelo/ Jurgen Appelo

    You’re welcome!
    I was also looking for something so complete. And since I couldn’t find it, I simply created it…

  • Rich McCabe

    Dude–*all* the methodologies?! Or “all the agile ones worth mentioning”? Well, even so, probably Boehm’s Spiral Development is worth mentioning–granted it’s only a process framework that includes agile as one possible instantiation, but so are some of the others you’ve listed–and being spare isn’t necessarily bad.
    You specified “software development” so I guess we can leave out various takes on the the broader systems engineering methodologies (the perspective of large government, typically defense programs). For example the INCOSE view of the systems lifecycle.
    As far as those not worth mentioning, there were only about a million OO methodologies from the ’80s and 90′s–ROOM, Catalysis, Shlaer-Mellor, and everyone who wrote a book on OO had their own name-brand, it seemed. And before that, in the ’70s, what about all the “structured” methods: Yourdan, Lister-Demarco, and who could forget Robert Martin’s Information Engineering? (I wish I could) Or infamous Jackson Methodology (IPO style writ large). Oh sure, you can argue that all the OO methods were eaten by RUP and all the structured methods (and the OO methods for that matter) were just details of a generally waterfallish approach. But I can argue similarly for the differences among all the agile name brands as well.
    So you could argue that there are only 2 methods: agile and sequential phased (2 ends of an irregular range of possibilities, actually), ignoring anarchic code-n-test as a non-method.
    And btw, CMMI, being a framework, isn’t necessarily waterfallish, regardless that most people (including quite a few who developed it, I think) interpret it that way.

  • http://www.pmhut.com PM Hut

    That’s quite an extensive list you have there. I didn’t know about a least half of the above methodologies.

  • Rich McCabe

    Arguably many of them have fallen on the dustbin of history, and we’re better off for it. But, y’know, there are still a lot of COBOL programmers out there.

  • http://profile.typekey.com/jurgenappelo/ Jurgen Appelo

    Rich, thanks for the input!
    I disregarded Boehm’s spiral development as I didn’t consider it a method in my definition of the word. I understood that it has been described by Boehm in just one article and that it doesn’t present a selection of practices as the other ones in my list do. Though I might be wrong of course.
    Likewise, I also ignored every “method” that described just one portion of a software engineering project. Many of the old methods (you mentioned some of them) only deal with OO design, or requirements engineering. My aim was to list only the ones that cover best practices for software projects from start to finish.

  • http://damroo.blogspot.com Varun Mehta

    Found this list here http://en.wikipedia.org/wiki/List_of_software_development_philosophies has a few more :) but not use how many are useful. Which method do you follow and prefer of the ones listed above.

  • Rich McCabe

    Well…how would you regard the OPEN Process Framework then? (See http://www.opfro.org/Overview/WebsiteOverview.html). Kind of RUPish don’t you think? Many of these others had an implicit sense of the overall lifecycle, they just chose to de-emphasize those aspects of it that they considered uninteresting. I think the EssUP, AUP, EUP, OpenUP, et. al. variants on RUP are only of interest because of their recent appearance–most of these are going to become historical footnotes as well.

  • http://profile.typekey.com/jurgenappelo/ Jurgen Appelo

    @Varun: That’s an interesting list. Though much of what’s on that list cannot be called a methodology. Some are merely principles or concepts. And it doesn’t list a number of methodologies that I found. But thanks anyway!
    @Rich: Yes, I that one counts in my opinion. In fact, I did come across this framework some time ago, and I completely forgot about it. Thanks for the reminder!

  • http://kmilo0.blogspot.com/ Kmilo

    I think the Method Agility Ranking post[1] of scrumlabs can help with the list and the book they took as reference: Balancing Agility and Discipline
    [1] http://www.scrumlabs.com/2008/06/method-agility-ranking/

  • http://www.pmpathway.com Project Management Forms

    Thanks for sharing this post

  • http://www.otssolutions.com Outsourced Software Development

    There are lots of discussions on Software Development “methodologies”. nice to read your view also

  • Vani

    Can u give me some benefits of suing these standard methodologies please? Thanks

  • Plam

    Why is Waterfall not mentioned anywhere in your list?

  • Rakesh Nair

    thank you for sharing this information…jurgen
    expecting similar helps further…

  • http://profile.typepad.com/jbedolla99 Juan Bedolla

    All of these postings are so interesting; I would like to know (if I may ask) which of these methodologies would be the most effective, efficient, and friendly in software development, please? I will appreciate your opinion, I am a newbie (just graduated)
    Thanks!

  • Sharan Rajendran

    Good Info. Nice work. I would also recommend adding some more information to each of these, where ever applicable, as to when each of these are preferred over the others. Like based on team size etc…

  • Amy

    While I waqs doing my own search for a methodology I came across MPMM.com.
    Its fantastic, you can teach yourself.

  • http://www.software-development-blog.com jpee

    Hi Jurgen,
    in germany we have a model called v-model xt which is used for advertised bidding.
    This model is very complete and has processes for customer, contractor or both in one. It is not only for software engineering also for systems engineering in general. For software it has its own components. From QS to SCM…
    Greetings from germany
    jpee

  • Tom

    please can you tell me the “Different Approaches to Systems Development?”
    i have tried looking them up online, but still can’t find anything tangible.
    Thanks in advance
    Tom

  • http://www.cygnismedia.com/mobile-phone-application/ipad-application.html iPad Application Development

    Awsome list these were the core things everyone wants to use in software development industry

  • http://profile.typepad.com/nazeeha Nazeeha Asmit

    wow this is a complete description what I was looking for a long time. Many thanks, Jurgen Appelo.

  • Jani

    Hi. I am referring to this post in my bachelor thesis, hope thats ok with you. This is a really interesting area for me. I am currently studying electrical and automation engineering, and in those fields software development is becoming increasingly common. But we face the same challenges, and my thesis tries to emphazise the fact that a lot of projects suffers under poor management of the software development part. This post helped me in an entire chapter. Thanks! You are of course in the reference list.

  • http://www.amacademyonline.com/ PMP

    Well this seems like an exhaustive list which you have evaluated. Thanks!

  • mickpatriot

    Brilliant and I remember almost all of these. Bravo!

  • mickpatriot

    It is mostly marketing rewrite and lingo changes to previously tried and failed ‘concepts’, or a repackaging of old ideas.

  • http://profile.typepad.com/flaviotorgud Flaviotorgud

    hello! to all specially to Jurgen Appelo this web is very helpful thanks god people like u do exist and help others with their research investigations.
    I’m from Venezuela, a master student I’m doing an investigation about: Value Assessment of System Development Methodologies in the Local Market (Trinidad & Tobago), are they really useful here?
    It seen like there is a lot of information to gather from this topic, if anybody up there can help me with any sort of information that I can use as a guidance or a secondary resource for my investigation i will be very thankful.
    my email: edtorca@hotmail.com
    Thanks Eduardo Torres

  • Tony

    Jurgen
    Since it’s been 4 years since you wrote the article, would you consider updating it with a newer version considering what the new trends are?
    Regards
    Tony

  • http://profile.typepad.com/jurgenappelo Jurgen Appelo

    Sorry, not interested in that myself right now.

  • http://collinssoftware.com Clif Collins

    thank you to your reply to Rick McCabe…
    Cobol is still the only complete development system, a shame… 40 years of wasted effort, another shame… still crappy software
    Clif 713-682-1556

  • http://www.linkedin.com/in/precywakayama Precy Wakayama

    Thank you for this list. I had to actually use it to point out the difference between the Agile Framework and Scrum PM Methodology.

  • dules@fon.rs

    I like this.
    But what is the term like:
    software development lifecycle,
    software lifecycle models,
    software proces,
    software proces model.

  • vamshidhar

    Thanx…i’ve been looking for this kinda info.

  • ana

    hello..
    what was the exactly methodology I can use to support all this phases:
    1. Analyze current situation
    2. analyze system features
    3. prototype development
    4. prototype implementation and pilot test
    5. survey
    6. analyze the survey result
    can you please give any suggestion to me get an idea for my thesis… :)

  • http://www.expertplace-academy.de prince2

    But PRINCE2 is not a software development methodology. It is a project method for all kind of projects.

  • Ella Mapple

    Wonderful article. But recently if you are looking
    for a new project management job or if you might have asked for a promotion
    within your company then you might have heard about PMP credentials!!. It is
    true that a
    Project
    Management Professional (PMP)

    credential is one of the most sought certifications by employers and employees
    alike. For its detail information about a PMP certifications you can go through
    http://www.pmstudy.com/

  • Olivia Jennifer

    Hi prince2,

    I would say that a PMP Certification is highly respected within both IT
    & non-IT communities where strong project management skills are
    required. If you plan on a long term career as a project manager, then
    yes, even with your level of experience, I would suggest getting your
    PMP. You can prepare yourself for the exam in one of the PMP trainingproviders like
    PMStudy. You can do minimal prep-work to get 40 PMI® Contact Hours and apply to PMI for PMP Exam before the class begins.