---
title: "什么是 SDLC (软件开发生命周期)？"
canonical: https://wavect.io/zh/glossary/sdlc/
language: zh
description: "一个软件项目从端到端要走的阶段：发现、设计、构建、测试、部署、运维、退役。"
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

方法

# SDLC

软件开发生命周期

一个软件项目从端到端要走的阶段：发现、设计、构建、测试、部署、运维、退役。

最近审阅: 2026-05-24 审阅人 [Kevin Riedl](/zh/team/kevin-riedl/) [wiki ↗](https://www.wikidata.org/wiki/Q139796365)

软件开发生命周期是把软件从想法到退役所经历的各个阶段归在一起的统称。不同方法论（ [Agile](/zh/glossary/agile/) 、瀑布、DevOps、持续交付）定义不同的阶段边界、以及在它们之间移动的不同方式。阶段本身大致不变：发现、设计、构建、测试、部署、运维、退役。

当作词汇用很有用，当作流程用就不一定。试图强推一套严格 SDLC 的团队，最后会堆出活不过第二个 Sprint 的文档开销。完全无视 SDLC 的团队，则会以痛苦的方式重新发现每个阶段（「我们没有部署计划就上线了」「我们从没想过怎么把这个系统下线」）。

人人都跳过的那个阶段，举个实际例子：一家初创公司两年里构建了三个内部服务、发布了、然后继续往前。没人负责「运维」，也没人规划「退役」。十八个月后，三个里有两个还在运行，没人记得为什么，唯一懂它们的那位工程师走了，而停掉任何一个可能会弄坏什么、也可能不会。那就是跳过生命周期后半段不开账单的成本。这件事前期做很便宜（指定一个负责人、写一份部署和拆除计划），事后发现则很贵。

你选的方法论主要决定阶段之间的边界有多刚。一套瀑布 SDLC 把它们严格按顺序跑、在每个门口签字确认；一套 Agile SDLC 把设计、构建、测试连续地交织，并随学习重访更早的阶段。无论哪种，阶段是同一组，这就是那个有用的洞见：争论「Agile 对瀑布」其实是在争论边界应该有多可渗透，而正确答案取决于你的需求还能变多少。

诚实的取舍与常见错误：创始人听到「SDLC」，要么把它过度形式化成一套门控、签字繁重、扼杀速度的流程，要么把它当作企业表演而跳过那些不光鲜的阶段。正确的姿态是把它当作一份「必须在某处发生的事」的清单，而不是一条要正步走过的序列。Wavect 偏好的形态：前面放一段付费的 [发现阶段](/zh/glossary/discovery-phase/) ，设计与构建在短周期里交织，从第一天起就有自动化的 [TDD](/zh/glossary/tdd/) 和 [CI/CD](/zh/glossary/ci-cd/) ，运维有清晰归属，退役有书面化的迁移路径。

**在软件项目中何时最关键。** 作为一份「必须在某处发生的阶段」清单：Discovery、设计、构建、测试、部署、运维、退役。跳过不光鲜的后半段，账单会以「没人愿意碰的无主服务」的形式在日后到来。

**创始人通常会搞错什么。** 他们摆向两个极端之一：把 SDLC 过度形式化成一套门控、签字繁重、扼杀速度的流程，或者把它当作企业表演而跳过那些阶段，然后在上线后以痛苦的方式重新发现每一个阶段。

**Wavect 如何处理。** 前面放付费 Discovery，设计与构建在短周期里交织，自动化测试与 CI/CD 从第一天起，运维归属清晰，退役有书面化。 [上线前 QA 清单](/zh/software-development-guide/software-qa-checklist-before-launch/) 和 [什么是发现阶段](/zh/software-development-guide/what-is-a-discovery-phase/) 覆盖了创始人最常跳过的那些阶段。

// FAQ

## 常见问题

### 我必须严格遵循一套 SDLC 吗？

不必，而试图这么做的团队通常会淹没在文档开销里。把 SDLC 当作一套词汇：每个项目都需要让发现、设计、构建、测试、部署、运维和退役在某处发生。方法论决定的是怎么做，而不是要不要做。

### 大多数团队会在哪个 SDLC 阶段偷工？

退役和运维，按这个顺序。团队构建、上线、然后继续往前，把运维的故事留得含糊、把退役计划留成空白。账单稍后才到，形式是无人认领、没有工程师愿意去碰的服务。

相关术语

- [Agile](/zh/glossary/agile/)
- [CI/CD](/zh/glossary/ci-cd/)
- [Discovery Phase 发现阶段](/zh/glossary/discovery-phase/)
- [TDD](/zh/glossary/tdd/)

相关服务

- [软件开发](/zh/services/software-development/)

相关案例研究

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

相关指南

- [软件开发流程：从首次通话到完整交接](/zh/software-development-guide/software-development-process/)

聊聊

## 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/zh/glossary/sdlc/#term",
      "@type": "DefinedTerm",
      "alternateName": [],
      "description": "一个软件项目从端到端要走的阶段：发现、设计、构建、测试、部署、运维、退役。",
      "inDefinedTermSet": "https://wavect.io/zh/glossary/#termset",
      "name": "SDLC",
      "termCode": "sdlc",
      "url": "https://wavect.io/zh/glossary/sdlc/"
    },
    {
      "@id": "https://wavect.io/zh/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": "一个软件项目从端到端要走的阶段：发现、设计、构建、测试、部署、运维、退役。",
      "headline": "SDLC",
      "inLanguage": "zh",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-05-24",
      "mainEntity": {
        "@id": "https://wavect.io/zh/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/zh/glossary/sdlc/"
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "item": "https://wavect.io/zh/",
          "name": "首页",
          "position": 1
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/zh/glossary/",
          "name": "技术、产品与合作模式术语表",
          "position": 2
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/zh/glossary/sdlc/",
          "name": "SDLC",
          "position": 3
        }
      ]
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "不必，而试图这么做的团队通常会淹没在文档开销里。把 SDLC 当作一套词汇：每个项目都需要让发现、设计、构建、测试、部署、运维和退役在某处发生。方法论决定的是怎么做，而不是要不要做。"
      },
      "name": "我必须严格遵循一套 SDLC 吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "退役和运维，按这个顺序。团队构建、上线、然后继续往前，把运维的故事留得含糊、把退役计划留成空白。账单稍后才到，形式是无人认领、没有工程师愿意去碰的服务。"
      },
      "name": "大多数团队会在哪个 SDLC 阶段偷工？"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
