⌨️ 第五章 从设计到测试
📄 本篇摘要

软件不是写完就结束——从规划、开发、测试、发布、运维到退役的全程叫软件生命周期。历代模型(瀑布→迭代→敏捷)都在回答同一个问题:怎么应对变化。DevOps 则把开发和运维两堵墙拆掉,让【写完】到【上线】变成一条流水线。

📝 关系

上一节:检查、静态分析与软件指标 | 下一节:CI 与 CD

一、生命周期:软件的一生

教材的六阶段:规划(想清楚做什么)→ 需求分析 → 设计 → 编码 → 测试 → 运行维护(退役也是环节——数据迁移、下线清理)。维护期通常占软件总成本的大头——写代码只是开始,改代码才是日常。

工业界有标准框架:ISO/IEC/IEEE 12207:2017《软件生存周期过程》,我国对应国标 GB/T 8566-2022(2023 年 5 月 1 日实施,与国际标准等同采用,定义了 4 个过程组 30 个过程)。名字不必背,知道【生命周期是标准化过的事】即可。

二、三代模型:对变化的态度演进

三、DevOps:拆墙

传统分工:开发写完扔给运维上线——出了事故互相甩锅,发布又慢又怕。DevOps=开发(Development)+运维(Operations)合体:共同对【从提交到上线】全流程负责,靠自动化(5-10 的 CI/CD)把发布频率从【一个月一次心惊胆战】变成【一天多次家常便饭】。

Google 的 DORA 报告(已连续调查十年、2025 年覆盖近 5000 名从业者)给出量化标杆:精英团队按需部署(一天多次)、故障恢复不到一小时、变更失败率低于 5%。2025 年报告还有个新发现:90% 的开发者用上了 AI,但 AI 提升产量的同时,交付稳定性反而承压——工具越快,流程的短板越显形。

四、动手 Demo:三分钟感受瀑布 vs 敏捷

# 同一个需求【做成绩单】:瀑布=一次性做完所有功能再给用户
# 敏捷=每轮交付最小可用版本,用户反馈决定下一轮
import copy

requirements = ["成绩列表", "平均分", "排名", "导出"]

# 瀑布:憋大招
def waterfall_all(reqs):
    print("瀑布:第 8 周一次性交付 ->", "、".join(reqs))
    return reqs

# 敏捷:每轮交最小可用,按反馈调整
def agile_sprints(reqs):
    done = []
    for i, r in enumerate(reqs, 1):
        done.append(r)
        print(f"敏捷:第 {i} 周交付 -> {'、'.join(done)}")
    return done

# 第 2 周用户发话:排名改成【按分数降序】而不是名次表
requirements[2] = "按分数降序排名"

print("瀑布版(第 8 周才发现做错):", waterfall_all(["成绩列表", "平均分", "名次表", "导出"]))
print()
agile_sprints(copy.copy(requirements))

沙箱实跑输出:

瀑布:第 8 周一次性交付 -> 成绩列表、平均分、名次表、导出
瀑布版(第 8 周才发现做错): ['成绩列表', '平均分', '名次表', '导出']
敏捷:第 1 周交付 -> 成绩列表
敏捷:第 2 周交付 -> 成绩列表、平均分
敏捷:第 3 周交付 -> 成绩列表、平均分、按分数降序排名
敏捷:第 4 周交付 -> 成绩列表、平均分、按分数降序排名、导出

看到什么算成功:瀑布版交付的还是【名次表】(需求变了它没跟),敏捷版第 3 周已切换为【按分数降序排名】。

读结果:需求在第 2 周变——瀑布要到第 8 周才暴露错误;敏捷每周都有【可用的东西】在手,方向错了最多错一周。这就是敏捷的全部账本:把发现错误的周期压短。

五、30 秒实验

把敏捷版的需求列表在第 1 轮后就插入一个新需求【班级对比】——重新跑,看它如何自然排进后续迭代。变化被吸收而不是被抵抗。

六、常见误区

误区 真相
瀑布过时了 需求稳定、合规严苛的领域瀑布仍是正解;模型按场景选
DevOps=运维装了套新工具 它是职责与流程的重构;没有共同担责,工具堆不出 DevOps
敏捷=不用写文档 敏捷压的是【面向交付的文档冗余】,关键约定照样白纸黑字
自测三问(点击展开) 1. **生命周期六阶段?** 答:规划、需求分析、设计、编码、测试、运行维护(退役收尾)。 2. **瀑布的致命伤是什么?** 答:需求变化的代价随阶段推进指数上涨,错误要到最后才暴露。 3. **DORA 报告的精英标准举一条。** 答:按需部署(一天多次)、故障恢复不到一小时、变更失败率低于 5%。

相关笔记