贯通完整的软件生命周期
已完成追踪一项功能从用户需要到运维和反馈的全过程。识别单靠代码生成无法作出的决定。
检验理解智能体创建了 PR,测试全部通过。哪个结论有证据支持?完成练习
你将学到什么
- 解释实现前后的主要决策。
- 将要求与验证、运行证据关联起来。
- 区分编程工具与软件交付系统。
沿系统追踪一项功能
编程助手可以帮助产出实现。软件交付系统还必须决定做什么、验证结果、发布软件,并支持其使用。AI 可以协助这些活动,但决策仍然存在。
考虑一个虚构请求:经理需要客户导出。首先应问为什么需要导出。定期报表可能以更少的数据暴露满足需要。过早接受功能名称,可能造成不必要的工作。
接下来要明确边界。哪些用户可以导出哪些记录?需要哪些字段?文件会去哪里?这些决定会影响实现和必要检查。
在阶段之间保留证据
如果每个阶段收到的上一阶段说明都不完整,生命周期就会变得不可靠。工单只写“添加导出”,PR 增加一个端点,运维人员却接收到没有负责人的服务。
在阶段之间建立明确关联:
| 阶段 | 支持下一步决策的证据 |
|---|---|
| 理解需要 | 明确的用户、问题和成功条件 |
| 规定行为 | 允许操作、边界和验收标准 |
| 实现 | 与要求关联、可供审查的修改 |
| 验证 | 相关检查,以及对实际版本的独立审查 |
| 发布 | 已接受制品、目标环境和恢复方法 |
| 运维 | 服务信号、事件负责人和维护流程 |
| 学习 | 用户反馈和观察到的结果 |
此表是一种实用教学模型。组织可以使用不同阶段名称,也可以合并活动。即使工作流高度自动化,也要保留这些决策。
让验证对应需要
对于导出功能,文件下载成功是一项检查。另一项检查确认经理不能导出其他组织的记录。第三项检查确认所需字段集合。这些检查对应不同要求。
不要从绿色测试标志推断整体安全。明确检查覆盖什么,以及什么尚未验证。NIST 的 SSDF 将安全开发描述为贯穿生命周期的实践,而非最后的一次扫描。阅读框架。
发布决定应使用即将部署版本的证据。如果审查后代码改变,确定哪些检查和决定需要重新执行。交付流程必须明确保留这种对应关系。
在最初设计中纳入运维
决定服务负责人如何发现导出失败、异常请求模式或不可接受的响应时间。不要为了方便排查,就把导出的客户数据写入日志。
监控应帮助负责人采取行动。Google 的 SRE 指南区分服务症状与内部原因,并解释有效信号的重要性。参见监控指南。
在事件发生前规划恢复。明确谁可以停止功能、恢复服务并说明影响。部署完成意味着进入这些职责,而不是结束工作。
用反馈改变下一次决策
发布后,检查经理是否使用导出功能,以及它是否解决了最初问题。审查事件、支持问题和维护投入。将重要发现转化为更新后的要求或工作。
这种关联使完整生命周期的软件工厂区别于一组代码生成器。评估系统能否在整个过程中保留意图和证据。探索交互式生命周期,查看每项决定。
完成练习
使用生命周期探索工具查看客户导出案例。在每个阶段写出负责人、证据和决定。找出自己组织目前会丢失上下文的一处交接。描述能够保留这些信息的最小改进。
下载工作表(Markdown)取消勾选将删除此浏览器保存的全部进度。
进度保存在此浏览器中。无需账户,不追踪使用情况。