news 2026/10/17 5:36:08

软件开发生命周期(SDLC):一个软件从“想法“到“退休“的一生

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
软件开发生命周期(SDLC):一个软件从“想法“到“退休“的一生

一句话:软件开发生命周期就是做一个软件要经历的固定几个阶段:想清楚要做什么 → 设计 → 写代码 → 测试 → 发布 → 维护。

前面讲的系统设计、架构原则属于"设计"阶段;碰撞检测、走迷宫算法属于"写代码"阶段。这一篇把它们串起来,看看整个流程是什么样的。


一、生活里的例子:请朋友吃一顿饭

步骤做饭对应软件阶段
1问朋友想吃什么、有没有忌口需求分析
2定菜单、列购物清单、安排先做哪道设计
3切菜、炒菜编码
4出锅前尝一尝咸淡测试
5端上桌发布
6朋友说太辣,下次少放辣椒维护

如果跳过第 1 步,做了一桌辣菜,结果朋友不吃辣,前面全白做了。软件也是这样。


二、六个阶段(用"做一个小射击游戏"举例)

阶段 1:需求分析 —— 要做什么?

做什么:弄清楚玩家要什么、游戏要有哪些功能、要做到什么程度。

射击游戏例子:

  • 俯视角,玩家用 WASD 移动、鼠标瞄准射击
  • 3 种武器、5 种敌人、10 个关卡
  • 能在普通笔记本上跑到 60 帧

产出:需求文档(游戏里常叫策划案 / GDD)

上一篇说的"功能需求 + 非功能需求",就是在这一步写清楚的。


阶段 2:设计 —— 怎么做?

做什么:决定系统怎么拆、模块怎么连、数据怎么存。

射击游戏例子:

  • 拆成 Input、Movement、Weapon、Health、AI 等组件
  • 子弹用对象池,快子弹用射线检测
  • 敌人寻路用 BFS / A*
  • 武器数值放进 ScriptableObject

产出:结构图、接口说明、技术方案

前面两篇"架构原则"和"系统设计",全部属于这一步。


阶段 3:编码 —— 动手做

做什么:按设计写代码、做美术、做音效、搭关卡。

射击游戏例子:写移动脚本、写碰撞、写敌人 AI、拼关卡……

好习惯:

  • 用Git管理代码,每做完一个小功能就提交一次
  • 一个功能一个分支,做完再合并
  • 写完先自己跑一遍

阶段 4:测试 —— 检查有没有问题

做什么:找 bug,确认功能符合需求。

测试类型测什么射击游戏例子
单元测试一小块代码对不对扣 30 血后,血量是不是 70
集成测试几块合在一起对不对子弹打中敌人 → 血条有没有变
游戏测试好不好玩、难不难第 3 关是不是太难,玩家都卡住
性能测试卡不卡屏幕上 500 颗子弹时还有没有 60 帧

单元测试小例子(Unity Test Framework):

usingNUnit.Framework;usingUnityEngine;publicclassHealthTests{[Test]publicvoidTakeDamage_ReducesHealth(){vargo=newGameObject();varhealth=go.AddComponent<Health>();// Awake 会把血量设为满血 100health.TakeDamage(30);Assert.AreEqual(70,health.Current);// 需要 Health 公开一个 Current 属性}[Test]publicvoidHealth_NeverBelowZero(){varhealth=newGameObject().AddComponent<Health>();health.TakeDamage(999);Assert.AreEqual(0,health.Current);}}

前面"把 Health 单独拆出来"的好处这里就体现了:拆得小,才好测。一个 2000 行的上帝 Player 几乎没法写测试。


阶段 5:发布 —— 交给玩家

做什么:打包、上架、上线服务器。

射击游戏例子:

  • 打包 Windows / 安卓版本
  • 上传到 Steam / 应用商店
  • 联机游戏还要部署服务器、准备好回滚方案(新版本出问题能退回旧版)

阶段 6:维护 —— 上线后才是开始

做什么:修 bug、调平衡、出新内容、根据玩家反馈改进。

射击游戏例子:

  • 玩家反馈:霰弹枪太强 → 改 WeaponData 里的伤害数字(数据驱动的好处!)
  • 出新地图、新武器
  • 修复"子弹偶尔穿墙"的 bug

很多游戏上线后的维护时间,比开发时间还长。所以前面架构做得好不好,维护阶段最能感觉出来。


三、为什么不能跳过前面的阶段?

bug 越晚发现,修起来越贵。(下面是业界常见的大致说法,用来感受数量级)

发现问题的阶段修复代价(大约)例子
需求阶段1 倍改一句话:“敌人不会飞”
设计阶段5 倍改一下结构图
编码阶段10 倍改代码
测试阶段20 倍改代码 + 重新测一遍
发布之后100 倍改代码、重新测、重新发版、玩家差评、可能要补偿

就像做菜:放盐前想清楚只要一秒钟;菜都端上桌了才发现太咸,就只能重做。


四、几种常见的开发模型

六个阶段是固定的,但怎么走有不同方式。

1. 瀑布模型:一步走完再走下一步

需求 → 设计 → 编码 → 测试 → 发布 → 维护 (像瀑布一样只往下流,不回头)
优点缺点
简单、清楚、文档全做到最后才能看到成品,发现方向错了很难改

适合:需求非常明确、很少变的项目(如银行系统、硬件配套软件)


2. 敏捷 / 迭代模型:小步快跑,反复循环

┌─→ 需求 → 设计 → 编码 → 测试 → 演示 ─┐ └──────────────── 每 1~4 周一轮 ───────┘

每一轮(叫一个迭代或Sprint)都做出一个能玩的小版本,然后根据反馈调整下一轮。

优点缺点
很早就能看到成品,方向错了能及时改需要经常沟通,文档可能不全

适合:需求经常变的项目 ——游戏开发大多用这种,因为"好不好玩"只有玩了才知道。


3. 原型模型:先做个粗糙的试试

先花几天做一个很丑但能玩的版本,验证想法,再决定要不要正式做。

游戏行业非常重视这一步:先用方块和圆圈做出来,好玩了再加美术。


五、游戏行业的特殊版本:里程碑

游戏开发通常按这些里程碑推进:

里程碑意思射击游戏例子
原型(Prototype)验证核心玩法好不好玩方块小人能移动、开枪、打死圆形敌人
垂直切片(Vertical Slice)做一小段完整品质的内容第 1 关:有美术、音效、UI,就像最终成品
Alpha所有功能都有了,但 bug 多、内容不全10 关都能玩,很多是临时素材
Beta内容齐全,主要修 bug、调平衡找玩家来测试
Gold / 发布正式发售上架 Steam
运营(Live Ops)持续更新新武器、新地图、活动

核心思想:“先确认好玩,再投入大量资源”。很多失败的项目,问题都出在原型阶段没验证就直接开工。


六、每个阶段常用的工具

阶段工具
需求文档(Notion、飞书文档)、思维导图
设计画图工具(draw.io、Figma)
编码IDE(Visual Studio、Rider)、Git
任务管理看板(Trello、Jira):待办 → 进行中 → 完成
测试Unity Test Framework、Bug 记录表
发布自动打包(CI,如 GitHub Actions)
维护崩溃收集、玩家反馈渠道

七、常见的坑

坑现象建议
直接开始写代码写一半发现方向不对,推倒重来至少花一点时间写下需求
只有最后才测试发布前一周 bug 多到修不完每做完一个功能就测一下
不停加新功能(需求蔓延)项目永远做不完先定"必须有"的功能,其他放下一版
不用版本管理改坏了回不去,文件叫"最终版_改3_真最终版"第一天就用 Git
以为发布就结束了上线后 bug 一堆没人管预留维护的时间和精力
原型做得太精致花一个月做美术,结果玩法不好玩原型用方块就够了

八、个人做小游戏怎么用?

不需要完整的流程,轻量版就够:

1. 写一页纸:游戏玩法、必须有的功能(需求) 2. 画一张图:分几个系统(设计) 3. 用方块做原型,1~2 周,看好不好玩(原型) 4. 好玩 → 每周做一个小功能,做完就玩一遍(迭代 + 测试) 5. 给朋友玩,收集意见(测试) 6. 发布到 itch.io 等平台(发布) 7. 根据反馈更新(维护)

一句话总结

软件开发生命周期 = 需求 → 设计 → 编码 → 测试 → 发布 → 维护。
越早发现问题越便宜;游戏开发通常用迭代的方式小步快跑,先做原型确认好玩,再投入资源做完整内容。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/17 5:35:54

Kimi Code Desktop 评测:从终端到桌面的 AI 编程新体验

最近项目群里被一条发布消息刷屏&#xff1a;Kimi Code Desktop 发布了&#xff0c;143MB 的体积让不少人惊讶。朋友圈里做前端、做运维的都在转&#xff0c;说“AI程序员终于从终端搬进了办公室”。我第一反应是打开下载页面看了一眼&#xff0c;然后装上跑了个小需求&#xf…

作者头像 李华
网站建设 2026/10/17 5:34:53

OKSSL证书重签全解析:DVSSL/OVSSL/IPSSL规则与避坑指南

重签这件事&#xff0c;很多同学都是在线上证书突然报错的时候才开始上网查规则。我自己这几年把公司线上业务的证书全部迁移到了 OKSSL 体系下&#xff0c;DVSSL、OVSSL、IPSSL 三种类型都经手过&#xff0c;重签工单也处理了一堆&#xff0c;踩过的坑比客服话术里讲的要具体得…

作者头像 李华
网站建设 2026/10/17 5:34:24

SQL调优全链路实战:从慢查询定位到索引优化与执行计划分析

1. 先搞清楚&#xff1a;SQL 调优到底在调什么工作里一谈到数据库慢&#xff0c;很多人第一反应就是“加索引”“ rewrite 一下 SQL”&#xff0c;但真正上手调优之前&#xff0c;我建议你先花十分钟想清楚一个问题&#xff1a;这条 SQL 慢&#xff0c;到底是慢在查询本身&…

作者头像 李华
网站建设 2026/10/17 5:34:07

Docker容器化技术详解:从环境一致性到生产落地实践

大概在五六年前&#xff0c;我第一次在生产环境里被环境问题折磨到怀疑人生&#xff1a;代码在测试环境跑得好好的&#xff0c;一上生产就各种报错&#xff0c;最后排查了两天&#xff0c;发现是服务器上某个动态库版本对不上。后来我在自己和团队的项目里全面用上了Docker&…

作者头像 李华
网站建设 2026/10/17 5:33:59

RSView32 7.20中文版实战:老牌HMI的安装、通讯与现代化改造

简介&#xff1a;《RSView32 7.20中文版》是罗克韦尔自动化面向Allen Bradley PLC用户推出的人机界面&#xff08;HMI&#xff09;组态软件&#xff0c;汉化后的中文界面显著降低了国内工程师的上手门槛&#xff0c;适合自动化项目设计、设备调试与产线运维等环节&#xff0c;尤…

作者头像 李华
网站建设 2026/10/17 5:33:43

convLSTM时序建模实战:股票涨跌二分类预测

1. 这不是“预测明天涨停板”的玄学&#xff0c;而是一套可验证、可复现的时序建模方法你点进来的第一眼&#xff0c;大概率是被“股票涨跌预测”这几个字勾住的。但请先放下“稳赚不赔”“秒变股神”的幻想——这不是金融直播间的喊单话术&#xff0c;也不是量化私募藏在防火墙…

作者头像 李华