These software development methodologies aim to improve productivity, code quality and collaboration.
Once upon a time, nearly all software development projects utilized the waterfall model. Much like the assembly line in a factory, this programming methodology requires developers to complete one phase of development before moving on to the next. It’s highly structured and doesn’t work well when the project requirements are in flux.
In recent years, developers have begun favoring more iterative processes that make it easier to accommodate changes in the project scope and requirements. Agile software development and its seemingly infinite number of variations have become increasingly common and, according to some surveys, now dominate.
In this slideshow, we’ll take a look at the features of ten of the most popular software development methodologies, including agile, Scrum, lean, extreme programming and, yes, even the waterfall method.
Software Development Methodologies
These programming methodologies aim to improve productivity, code quality and collaboration.
1. Agile Software Development
In 2001, seventeen software developers made history by signing the Agile Manifesto. Since then, agile software development has taken off; in fact, in a 2015 Forrester report, 54 percent of enterprises surveyed said that more than half the development teams at their organizations were using agile methodologies. The Agile philosophy is based on twelve core principles that emphasize short iterations, continuous delivery, simplicity, retrospection and collaboration between end users and developers.
Image source: Agilemanifesto.org
Agile software development comes in many flavors, and Scrum is one of the most popular with 70 percent of respondents to the 2015 State of Agile report saying that they practice Scrum or a Scrum hybrid. It’s a framework for collaboration that was first invented by Jeff Sutherland in 1993. It divides complex projects into short two- to four-week sprints, and it emphasizes the values of courage, focus, commitment, respect and openness.
Image source: SCRUM.org
3. Lean Software Development
Although lean development is commonly associated with agile, the principles of lean actually arose from Toyota’s lean manufacturing processes. This development methodology relies on seven key principles: eliminate waste, increase feedback, delay commitment, deliver fast, build integrity in, empower the team and see the whole. Lean first came to the attention of the software development community in 2003 with the publication of Mary and Tom Poppendieck’s book “Lean Software Development: An Agile Toolkit.”
Image source: Guy Nirpaz, GigaSpaces Technologies, Introduction to Lean Software Development, http://www.slideshare.net/nirpaz/introduction-to-lean-software-development
Another variation of agile software development that was inspired by Toyota, Kanban gives developers a visual way to see what work needs to be done and allows them to “pull” in work as they have capacity rather than “pushing” them to complete certain tasks. It relies on three core principles: visualize what you do today, limit the amount of work in progress and enhance flow.
Image source: https://en.wikipedia.org/wiki/File:Simple-kanban-board-.jpg
5. Rapid Application Development (RAD)
Over the years, several different approaches to software development have used the RAD name. The best-known is probably James Martin’s methodology, which was created at IBM in the 1980s. It can be considered a form of agile, as it emphasizes the ability to adapt to changing requirements and de-emphasizes upfront planning.
6. Test-Driven Development (TDD)
Test-Driven Development is related to both agile software development and extreme programming. Developed by Kent Beck and others, this process requires developers to write a test for any new feature before starting the coding process. It encourages developers to write a minimal amount of code.
Image Source: https://github.com/mjhea0/flaskr-tdd
This form of agile software development relies heavily on pair programming. Like other agile methodologies, it emphasizes rapid iterations and frequent requirement changes. It was created by Kent Beck, who was one of the signatories of the Agile Manifesto and published a book called “Extreme Programming Explained: Embrace Change” in 1999.
Image Source: JD Meier’s Blog, Microsoft Developer Network, https://blogs.msdn.microsoft.com/jmeier/2014/06/06/extreme-programming-xp-at-a-glance-visual/
8. Rational Unified Process
This software development methodology is named for the company that invented it—Rational Software, which IBM purchased in 2003. While some programming methodologies are very rigid, the Rational Unified Process aims to be easily tailored to unique situations. It’s an iterative framework that relies heavily on visual models.
9. Spiral Model
First described in the mid-1980s by Barry Boehm, the spiral model is a risk-driven model that incorporates elements of waterfall, incremental, prototyping and other software development approaches. It says that developers should make decisions based on the level of risk and that they should only do enough work to minimize the risk.
10. Waterfall Model
Unlike the other software development methodologies in this slideshows, the waterfall model is sequential rather than iterative. It was the most common method of software development from the early days of computing until very recently. It is best suited to small-scale projects where all of the design requirements can be known upfront.
Image Source: Paulsmith99 at en.wikipedia