The software development methodologies listed in this software development tutorial 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 is highly structured and does not 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 guide to software development methodologies, we will take a look at the features of ten of the most popular software development approaches, 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.
Check out these Project Management courses at TechRepublic Academy!
1. Agile Software Development
Image source: Agilemanifesto.org
In 2001, seventeen software developers made history by signing the Agile Manifesto. Since then, agile software development has taken off. The Agile philosophy is based on twelve core principles that emphasize short iterations, continuous delivery, simplicity, retrospection, and collaboration between end-users and developers.
For further learning into Agile, check out this course!
2. Scrum Software Development Methodology
Agile software development comes in many flavors, and Scrum is one of the most popular with 70 percent of respondents to the State of Agile report saying that they practice Scrum or a Scrum hybrid. It is 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.
Read: What is a Scrum Team?
3. Lean Software Development
Image source: Guy Nirpaz, GigaSpaces Technologies, Introduction to 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.”
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.
Read more about Kanban in our tutorial: Overview of Kanban for Project Managers and Developers.
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.
7. Extreme Programming
This form of agile software development – known as Extreme Programming or XP – 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.
8. Rational Unified Process
The Rational Unified Process 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.