软件工程公式、规则与制品速查
公式表估算、流动、可靠性、测试发布规则及通用工程制品的条件化速查。
关联:全课程
- 符号说明
WIP=平均在制品;SLO=服务目标;SLI=服务指标;ADR=架构决策记录;p95/p99=延迟分位数
- 使用前提
先完成对应章节并理解一个真实团队项目的需求、代码、测试与发布流程。
- 适用范围
用于项目计划、评审、测试、发布和复盘;不得脱离团队历史数据与风险语境机械套用。
软件工程公式、规则与制品速查
估算与流动
- 基础工作量 = 开发 + 验证 + 发布/观测;含风险储备预算 = 基础量 × (1 + 风险比例)。预算不是确定日期。
- Little 定律:平均在制品 WIP = 吞吐量 × 平均周期时间;单位必须一致。
- 流动效率 = 有效工作时间 / 总周期时间;等待、排队与返工都进入分母。
- 变更前置时间从承诺或提交开始点到生产可用结束点,团队必须统一口径。
| 输入 | 规则或公式 | 输出 | 使用边界 |
|---|---|---|---|
| 开发、验证、发布观测人时与风险比例 r | 预算 = (开发 + 验证 + 发布观测) × (1 + r) | 风险调整后人时 | 用于范围预算,不直接承诺完成日期 |
| 吞吐量 X 与平均周期时间 T | WIP = X × T | 平均在制品数量 | 三个量须使用同一稳定观察窗 |
| 有效工作时间与总周期时间 | 流动效率 = 有效工作时间 / 总周期时间 | 0 到 1 的比率 | 等待、排队和返工必须进入总周期 |
| 峰值请求率、单实例能力与目标利用率 u | 实例数 ≥ 峰值 / (单实例能力 × u) | 基础容量下界 | 另加故障冗余与增长缓冲 |
质量与可靠性
- 缺陷逃逸率 = 生产发现缺陷 / 全部已发现缺陷;必须说明观察窗和严重度。
- 变更失败率 = 导致降级、回滚、热修或事故的生产变更 / 全部生产变更。
- 可用性 = 成功服务时间 / 观察总时间;SLO要明确分母、排除项和窗口。
- 错误预算 = 1 − SLO;99.9%月度SLO约允许0.1%的合格事件失败,而非任意停机时长。
- 容量实例数 ≥ 峰值请求率 / (单实例能力 × 目标利用率),再加故障冗余与增长缓冲。
- 期望损失 = 事件概率 × 影响;仅作比较入口,还要判断不可逆、伦理和尾部风险。
测试与发布规则
- 测试结构按风险组合,不机械追求比例;覆盖率只说明执行到,不证明断言正确。
- TDD:先有预期原因的红灯 → 最小实现绿灯 → 绿灯保护下重构。
- 契约版本:新增兼容字段通常为兼容演进;删除、改义或收紧要求需要弃用窗口。
- 数据库变更:扩展 → 新旧并存/迁移 → 校验切换 → 收缩;任何一步可观测且可停止。
- 金丝雀:每级明确流量、样本量、观察窗、通过阈值、停止阈值和回滚动作。
- 重试总次数会跨层相乘;只在幂等、瞬态失败且总截止时间内重试,使用退避与抖动。
通用制品最小字段
- 需求/决策卡:背景、目标、非目标、事实、假设、方案、决定、反例、验证、负责人、复审与撤销条件。
- ADR:上下文、质量目标、备选、决定、正负后果、适用范围、复审触发。
- 接口契约:语义、输入输出、错误、权限、幂等、超时、版本、兼容与弃用。
- 测试计划:风险、测试层、输入、环境、预期、边界、故障、数据与责任人。
- 发布计划:制品摘要、配置、迁移、放量、指标、阈值、值班、回滚/补偿。
- Runbook:症状、影响、诊断、缓解、验证、升级、停止条件和事后记录。
使用边界
公式只能帮助显化假设。代入前写单位、观察窗、分母和数据来源;算完后做数量级和极端值反查。任何指标都不能单独评价个人。制品模板也不是填表竞赛:每一栏必须支持协作者做决定、执行或验证,否则应删除或改写。