---
title: "What is SDLC (Software Development Lifecycle)?"
canonical: https://wavect.io/glossary/sdlc/
language: en
description: "The end-to-end set of stages a software project moves through: discovery, design, build, test, deploy, operate, retire."
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

METHODOLOGY

# SDLC

Software Development Lifecycle

The end-to-end set of stages a software project moves through: discovery, design, build, test, deploy, operate, retire.

Last reviewed: 2026-05-24 by [Kevin Riedl](/team/kevin-riedl/) [wiki ↗](https://www.wikidata.org/wiki/Q139796365)

Software Development Lifecycle is the umbrella term for the stages software goes through from idea to retirement. Different methodologies ([agile](/glossary/agile/), waterfall, devops, continuous delivery) define different stage boundaries and different ways of moving between them. The stages themselves are roughly invariant: discovery, design, build, test, deploy, operate, retire.

Useful as a vocabulary, not as a process. Teams that try to enforce a strict SDLC end up with documentation overhead that does not survive the second sprint. Teams that ignore the SDLC entirely end up rediscovering each phase the painful way (“we shipped without a deploy plan”, “we did not think about how to retire this”).

Worked example of the stage everyone skips: a startup builds three internal services over two years, ships them, and moves on. Nobody owns “operate” and nobody planned “retire”. Eighteen months later two of the three services are still running, nobody remembers why, the one engineer who understood them has left, and disabling either might break something or might not. That is the unbilled cost of skipping the back half of the lifecycle. The fix is cheap if done up front (name an owner, write a deploy and a teardown plan) and expensive if discovered later.

The methodology you pick mostly decides how rigid the boundaries between stages are. A waterfall SDLC runs them strictly in sequence with sign-offs at each gate; an agile SDLC interleaves design, build, and test continuously and revisits earlier stages as it learns. The stages are the same set either way, which is the useful insight: arguing “agile versus waterfall” is really arguing about how permeable the boundaries should be, and the right answer depends on how much your requirements can still change.

The honest trade-off and common mistake: founders hear “SDLC” and either over-formalise it into a gated, sign-off-heavy process that kills speed, or dismiss it as enterprise theatre and skip the unglamorous stages. The right posture is to treat it as a checklist of things that must happen somewhere, not a sequence to march through. Wavect’s preferred shape: a paid [discovery-phase](/glossary/discovery-phase/) up front, design and build interleaved in short cycles, automated [TDD](/glossary/tdd/) and [CI/CD](/glossary/ci-cd/) from day one, operate with clear ownership, retire with documented migration paths.

**When this matters in a software project.** As a checklist of stages that must happen somewhere: discovery, design, build, test, deploy, operate, retire. Skip the unglamorous back half and the bill arrives later as unowned services nobody dares touch.

**What founders usually get wrong.** They swing to one of two extremes: over-formalise the SDLC into a gated, sign-off-heavy process that kills speed, or dismiss it as enterprise theatre and rediscover each phase the painful way after launch.

**How Wavect handles it.** Paid discovery up front, design and build interleaved in short cycles, automated tests and CI/CD from day one, clear operate ownership, documented teardown. The [QA checklist before launch](/software-development-guide/software-qa-checklist-before-launch/) and [what a discovery phase is](/software-development-guide/what-is-a-discovery-phase/) cover the stages founders skip most.

// FAQ

## FAQs

### Do I need to follow an SDLC strictly?

No, and teams that try usually drown in documentation overhead. Treat the SDLC as a vocabulary: every project needs discovery, design, build, test, deploy, operate, and retire to happen somewhere. The methodology decides how, not whether.

### Where do most teams skip an SDLC stage?

Retire and operate, in that order. Teams build, ship, and move on, leaving the operational story vague and the retirement plan nonexistent. The bill arrives later, in the form of unowned services no engineer wants to touch.

Related terms

- [Agile](/glossary/agile/)
- [CI/CD](/glossary/ci-cd/)
- [Discovery Phase](/glossary/discovery-phase/)
- [TDD](/glossary/tdd/)

Related services

- [Custom Software Development](/services/software-development/)

Related case studies

- [Polity](/case-studies/polity/)

Related guides

- [The software development process, week by week](/software-development-guide/software-development-process/)

Talk to us

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/glossary/sdlc/#term",
      "@type": "DefinedTerm",
      "alternateName": [],
      "description": "The end-to-end set of stages a software project moves through: discovery, design, build, test, deploy, operate, retire.",
      "inDefinedTermSet": "https://wavect.io/glossary/#termset",
      "name": "SDLC",
      "termCode": "sdlc",
      "url": "https://wavect.io/glossary/sdlc/"
    },
    {
      "@id": "https://wavect.io/glossary/sdlc/#webpage",
      "@type": "WebPage",
      "about": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "author": {
        "@id": "https://wavect.io/team/kevin-riedl/#person",
        "@type": "Person",
        "name": "Kevin Riedl",
        "url": "https://wavect.io/team/kevin-riedl/"
      },
      "dateModified": "2026-05-24",
      "description": "The end-to-end set of stages a software project moves through: discovery, design, build, test, deploy, operate, retire.",
      "headline": "SDLC",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-05-24",
      "mainEntity": {
        "@id": "https://wavect.io/glossary/sdlc/#term"
      },
      "mentions": [
        {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        }
      ],
      "name": "SDLC",
      "reviewedBy": {
        "@id": "https://wavect.io/team/christof-jori/#person",
        "@type": "Person",
        "name": "Christof Jori",
        "url": "https://wavect.io/team/christof-jori/"
      },
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          ".gls-single__h1",
          ".gls-single__tldr"
        ]
      },
      "url": "https://wavect.io/glossary/sdlc/"
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "item": "https://wavect.io/",
          "name": "Home",
          "position": 1
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/glossary/",
          "name": "Tech, product & engagement glossary",
          "position": 2
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/glossary/sdlc/",
          "name": "SDLC",
          "position": 3
        }
      ]
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No, and teams that try usually drown in documentation overhead. Treat the SDLC as a vocabulary: every project needs discovery, design, build, test, deploy, operate, and retire to happen somewhere. The methodology decides how, not whether."
      },
      "name": "Do I need to follow an SDLC strictly?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Retire and operate, in that order. Teams build, ship, and move on, leaving the operational story vague and the retirement plan nonexistent. The bill arrives later, in the form of unowned services no engineer wants to touch."
      },
      "name": "Where do most teams skip an SDLC stage?"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
