Software Development Life Cycle Models – What Are SDLCs?

30 Mar 2021
|
15 min read
Behind The Code

Software development is complex, so we often divide it into phases such as design, testing, and implementation. But how to organize these phases? When to focus on production and when to take a step back for reviewing? The answer to those questions and more are in the software development life cycle (SDLC).

The concept of SDLC is also known as software development process, or application development life-cycle. It’s a subset of system development life cycles. 

Some of the most known are Waterfall, the Spiral Model (SDM), and the Agile Model. This article will discuss in-depth these and others.

The development life cycle model divides the project into phases and dictates how these interact with each other. Fundamentally, it acts as a roadmap to guide the business idea into production. 

SDLCs have been actively discussed for more than 50 years and have evolved substantially during this period. 

Usually, the software engineer (or whoever has that role) is responsible for identifying the best model for that project. 

TL;DR

There’s no definitive software life cycle model: the best fit depends on your project and expectations. With that in mind, agile models have mostly superseded stricter approaches.

We are Agile experts!

Let’s talk us about implementing an Agile project.

Contact us

The Importance of The Software Development Life Cycle

A suitable and well-executed SDLC allows all stakeholders to forecast costs, milestones, and deliverables.

“SDLC is the one thing which enables an idea to become a real project with scope, structure, and flow,” explains Maria Kubieniec, PM with 8 years of experience and COO of Kambu.

“With a proper model, the entire team knows the purpose of the project and its individual stages. This results in better and more precise tasks.”

Clear processes and expectations can dramatically improve the quality and efficiency of development, design, and management. 

As such, choosing the proper software development life cycle is crucial to ensure a project will be successful. 

“Software development is very complex. Trusting proven methodologies helps to keep the whole process under control while diminishing risk.”

Benefits of Applying SDLC Properly

  • Encourages team to have a higher view of project
  • Enables optimal planning, scheduling, and estimating
  • Serves as a foundation for task assignment and accountability
  • Facilitates transparency to all stakeholders
  • Decreases and prevents risk
  • Clients expect it

In turn, if the life cycle model and project mismatch, it’s likely to derail all work. 

For example, if the client demands constant updates while the developers offer a strict workflow, there is a problem. The developers will have to crunch extra hours to review the software or else they can’t meet the client’s expectations. In the end, extra costs will pile up.

Finally, we should talk about the possibility of not adopting a clear cycle. To put it bluntly: don’t. Even when working on a project alone, some sort of organization is beneficial.

“Running a project without SDLC is like assembling furniture without an instruction manual. It can be done, but most likely you will spend more time and get some steps wrong,” adds Maria.


Core Phases in Software Development 

Graph showing software development phases
Source: Kambu

What differentiates SDLCs is that they rearrange the core phases in software development a bit differently. We’ll list these core phases now.

Some consider two additional phases (marked with the *asterisks). For the sake of simplicity, we won’t consider them in the examples.

  • Requirements analysis – Senior staff and the client assemble the project roadmap and timeline
  • *Viability study Involves many aspects, such as team size, technical, legal (compliance), economic (budget) etc.
  • System design – Preparation of the design documents according to specifications
  • Implementation – The backbone of the project, and the longest phase. The developers team follows tasks assigned by the Project Manager and code the software
  • Testing – The QA team reviews the software in a testing environment. They look for bugs and also check if it conforms to the customer specifications. QA sends it back to the devs, and the back-and-forth lasts until the software is optimal
  • *Integration – Connection with internal and external apps, often via APIs
  • Deployment – The Project Manager performs the final checks and the software is released
    Maintenance – The customers now use the software. Depending on the project, the team might fix errors, improve the software, and take over tasks such as liaison with external providers

As we’ll see below, it’s really important to have a grasp on each of these stages. 


Do I Have to Apply The SDLC To The Letter?

It’s a good question. How faithful should we be when applying a life cycle model?

Even considering you choose the best fit, the answer depends on multiple factors. An important one is the expectations of the client. The industry you are working with also might present restrictions and even require specific SDLCs. 

The ISO (International Organization for Standardization) created a document that proposes several standards to be observed. It’s the ISO/IEC/IEEE 12207:2017(en), Systems and software engineering — Software life cycle processes. The goal is to assist organizations, process assessors, acquirers, and suppliers, especially in complex projects. 


List of Software Development Life Cycle Models

The list below is not exhaustive but should paint a general picture of the most important SDLCs.

Waterfall – The Classic

Graph showing Waterfall software development life cycle
Source: Kambu

The waterfall model is linear and sequential. Every step must be completed before moving on to the next one. Just as in a waterfall, progress moves quickly from top to bottom with little room for change.

It’s considered to be the oldest of the software development life cycle models. 

The waterfall life cycle model requires very strong documentation. Goals, specifications, and tasks have to be as precise as possible. Since each stage relies so much on the previous one, rolling back on changes becomes more costly as time goes on.

Waterfall Advantages
  • Straightforward 
  • Very simple to understand and track
  • Easy to arrange tasks
Waterfall Disadvantages
  • Delays can easily creep up and push back the entire calendar. Likewise, errors big and small might linger until the revision phase
  • Working software or even MVPs (Minimum Viable Products) come only late into the project
  • Overall, high risk
Recommendation

Simple and short-term projects with a team strong in documentation. Definitely not suitable for software with evolving requirements.

Curiosity

Waterfall might have a bad reputation and is often seen as outdated. However, there are those who claim no one really applies such rigidity.

In the classical article, There’s no such thing as the Waterfall Approach! (and there never was), the author argues that “Waterfall” is used mostly to describe what newer methods should not be.


V-Shaped – The Classic, Improved

Graph showing v-shaped software development life cycle
Source: Kambu

The graph shows two axes. Left to right, we see the project progress over time. Top to bottom, we see specificity.

V-Shaped includes a testing phase for each development stage. It’s also known as “Verification and Validation mode” and is an evolution of the Waterfall method.

In V-Shaped, the software development phases (called Verification) and testing phases (Validation) are planned in parallel. Both lines meet during implementation.

Just as with Waterfall, each phase depends on the previous one. But since development and testing are connected, in theory, every stage runs smoothly. 

This approach softens the snowball effect. For example, let’s consider pure Waterfall. If the requirement analysis is faulty, everything is pushed back because all phases are dependent on it. The V-Shaped life cycle model allows it to be addressed earlier.

V-Shaped Advantages
  • Solves some of Waterfall’s shortcomings
  • Easy to understand and apply
  • Phases have clear deliverables, resulting in better tasks
V-Shaped Disadvantages
  • Even though testing is constant, the V-Shaped does not instruct on how to address big roadblocks
  • MVPs (Minimum Viable Products) come only late into the project
  • Requires very clear documentation
  • Overall, high risk
Recommendation

Just as with Waterfall, V-Shaped is better suited for simple and short-term projects. It demands crystal-clear requirements. 

Changes in scope or functionality mid-project are not well absorbed, disrupting the whole process.

Curiosity

Since V-Model is an evolution of Waterfall, rather than a revolution, it faces many of the same criticism.


Iterative and Incremental Model – Multiple Waterfalls or V-Shaped

Graph showing iterative and incremental software development life cycle
Source: Kambu

In few words, iterative and incremental mean multiple runs of Waterfalls or V-Shaped models. Each cycle results in a small part of the software, which progressively becomes more complete.

The iterative and incremental software development life cycle model combines the two approaches in its name. 

  • Iterative development – Refers to applying multiple cycles of development.
    The iterative approach considers that requirements will change. Therefore, the specifications evolve at the start of each iteration: requirements become clearer and/or expand
  • Incremental development – Refers to achieving a progressively more complete version of the product

Many aspects of development improve after every cycle. For example, coders can implement new features and optimize existing ones. When the QA identifies problematic bugs, these have a higher chance of being addressed during a new cycle. Finally, users have time to test part of the system, gradually seeing the big picture without getting overwhelmed.

Advantages
  • Results in multiple deliverables
  • Easier to track progress
  • More time to reevaluate requirements and assess need for redesign
  • After every cycle, it becomes easier to perform modifications and adjustments 
  • QA and user are less overwhelmed, since product gets incrementally more complex
  • Wide room for interaction with clients, which helps to align expectations. As a result, the end product is more likely to offer business value
Disadvantages
  • While it’s as straightforward as Waterfall, it’s more complex to handle. For example, it’s necessary to figure out the end goal of each cycle
  • More cycles means compounding documentation, requiring attentive management throughout

Of note: this model requires an active and participative client. This is both a pro and a con: requires more communication, but ensures a product more suited to their needs.

Recommendation

Especially useful for large applications that can be broken down into small parts or separate components.


Prototyping – Let’s Do It In Parts

Three people playing with mounting bricks

As the name implies, in Prototyping the focus is on creating several versions of partial but functional software.

These slices allow live testing and debugging of specific features early on. Also, they are a useful tool for communicating with the client.

Prototyping is a major departure from Waterfall and V-Shaped, where workable versions are available only near the end of the project.

The Prototyping model is usually further divided into types:

  • Throwaway / Rapid – The team codes a prototype as quickly as possible, even if it will be discarded down the road
  • Evolutionary – The prototype is gradually polished based on customer feedback
  • Incremental – Separate prototypes (which might even overlap) are developed in parallel and are eventually combined
  • Extreme (web applications) – Has three phases: 1) static prototype of HTML pages, 2) functional interface with a a mock service layer, 3) finished with implemented services
Prototyping Advantages
  • User/client has a more active role and can evaluate if direction is proper even before implementation
  • Possible to pinpoints bugs and faulty interface early
  • Provides room for adjustment
  • Minimizes risk, saving resources
Prototyping Disadvantages
  • Developing prototypes is resource-intensive
  • Focus on prototyping can allocate too many resources on incomplete software
  • If the prototype ends up not being relevant, it’s wasted time
Recommendation

Prototypes are especially useful with projects with complex user interfaces that depend heavily on user input. Requires an active user/client willing to commit time to review rough versions.

Curiosity

Prototyping can be used as part of a bigger software development process in combination with other SDLCs models. For instance, a university student database project might use a V-Shaped approach in general, but the Prototyping model for its front-end web application.

As we’ll see more and more below, the lines that separate different SDLCs become much blurier in practice.


Spiral Model (SDM) – Combining Best Practices Against Risk

Graph showing Spiral software development life cycle
Source: Kambu

The Spiral model seeks to merge the Waterfall method with newer approaches. It is both iterative and sequentially linear. 

The name comes from its pathway, an outward spiral. Each iteration around the spiral has the same steps and results in a release gradually more stable and/or more polished.

The Spiral model was formally presented by Barry Boehm in the 1980s as an attempt to fill the gaps seen in other approaches. In particular, there is an emphasis on minimizing risk over larger and more complex projects.

The spiral cycle covers four quadrants. They start from the center and repeat in order until the project is deemed finished.

  1. Analysis – Preparation for the cycle that is about to start. The goal is to set realistic objectives and assess limitations of what can be done.
    In the first iteration of the spiral (ie. when the project starts), the analysis is high-level and tightly connected to business requirements. In further iterations, it becomes progressively specific, covering the requirements of specific subsystems.
    The customer should be actively present in this phase.
  2. Evaluation – Assessing the options identified in the previous phase. Huge emphasis in mitigating risk. Preparation of prototype.
  3. Development – Implementation. The first cycle should result in the concept of operation. Following repetitions generate more and more specific software and design validation and implementation 
  4. Planning – Planning the next spiral iteration. In other words, reflecting on how steps 1 through 3 will be

The overall length of the spiral shows the accumulated cost.

Revised Version 

Boehm later reviewed the model to emphasize the importance of the stakeholder’s input. The spiral received three new phases:

  1. Determine Objectives – Identify the stakeholders and their win conditions 
  2. Determine Constraints – Determine the conditions under which the system would produce win-lose or lose-lose outcomes for some stakeholders
  3. Identify and Evaluate Alternatives – Collect feedback and suggestions from stakeholders. Find alternatives with which all parties will benefit

These should take place at the beginning of the spiral. Meaning the order becomes:

  1. Determine Objectives 
  2. Determine Constraints
  3. Identify and Evaluate Alternatives 
  4. Analysis
  5. Evaluation
  6. Development
  7. Planning

Moreover, the author warned about some misconceptions. Namely that the spiral is just a series of waterfalls, that the whole project consists of one spiral, that every event in the model should necessarily happen, and that backtracking is not permitted. 

Read the complete revision: Spiral Development: Experience, Principles, and Refinements Spiral Development Workshop February 9, 2000

Plus
  • Facilitates budgeting, as it’s divided into cycles
  • Frequent reassessment dramatically diminishes risk
  • Ample space for input from the customer
  • Produces multiple prototypes
Cons
  • Risk of a never ending project: too much focus on low-level assessments can cause the spiral to never end
  • Focus is on risk analysis, demanding expertise in that field
Recommendation

The spiral SDLC is recommended for long, risk-intensive and complex projects with multiple iterations. In shorter projects with low risk, the constant risk assessments might actually become a burden or a slog.


Agile Model – The Best of All Worlds

Person using computer

Agile is a shorthand for a series of software development methodologies and practices. At its core, it’s iterative, incremental, and more adaptive than traditional SDLCs. Notably, it excels at delivering products fast, be it Proofs of Concept or polished versions.

The name comes from the Agile Manifesto, published in 2001. Agile is considered to be people-centric, meaning it focuses more on communication and collaboration. Authority is distributed rather than concentrated on a single project leader. Even Scrum Masters can be considered equals, with their specific roles and responsibilities.

When properly executed, it combines the predictability of classical approaches with the flexibility of modern practices. 

Agile Methods

A study that interviewed 300 Agile project managers found they employed these methods:

Scrum (37%), Hybrid of Agile and non-Agile (35%), Kanban (11%), Lean (11%), Scrumban (5%).

A very quick overview of these methodologies:

  • Scrum – Small teams, of a maximum of ten people, organize their tasks into short sprints, that usually run for a couple of weeks.
    Very short daily meetings are used to track and update on progress.
    At the end of each sprint, the customer provides feedback and the next sprint is planned
  • Kanban – The project is broken down visually via a Kanban board where tasks are organized into status (backlog, implementing, approved etc.)
    This gives the whole team an overview of the progress and helps to transfer tasks to idle team members
  • Lean Software Development (LSD) – Combination of processes and principles that favor efficient delivery. In summary: eliminate waste and maximize value.
    An important tool is the value-stream map, a chart showing the flow of information and products throughout any process over time. For example, checking every step of the testing process might reveal opportunities to reduce waste, such as outdated hardware forcing long delays
  • Scrumban – Combination of Scrum and Kanban

The Agile model, or at least part of it, is the de facto starting point of most software development nowadays. The Annual State of Agile Report found that 95% of companies adopted some Agile development methods in 2019. The study interviewed 1,121 professionals worldwide.

However, only 27% of the companies from the study above have been using Agile for more than five years, according to the study. 

Agile Model Advantages
  • Has very quick delivery time
  • Fosters teamwork and collaboration across different teams
  • Easy to deal with constant changes
  • Can work with both fixed or evolving requirements
  • Is a very realistic approach to software development.
  • Benefits from constant user input 
  • Grants flexibility and accountability for all team members
Agile Model Disadvantages
  • May rely on customer interaction
  • Usually, there’s little documentation, making it difficult to onboard team members
Recommendation

The Agile life cycle methodology can be applied, whole or in parts, in most projects, since it’s so flexible. It’s important to have a project manager familiar with agile processes and procedures to help the team organize their work.


Conclusion

Three post its on a hand

It’s really fascinating how professionals developed so many different approaches to organize software development. At the same time, it’s a reflection of the need due to the increasing complexity of the projects.

In the end, the best software development life cycle fit depends on your project. Also, mixing different approaches is more than ok. If it helps your project, then great!

We hope this article provides you with a useful overview of the Software Development Life Cycle Models. And may this information help you and your team in your next project!

About Kambu

Kambu has been applying and improving Agile in successful projects for over 11 years. We have learned what works and what doesn’t. Get in touch!

Agile
Prototyping
Software Development
Software Development Life Cycle
Software Engineering
Team Voice
Waterfall

Written by