跳到正文

软件工程公式、规则与制品速查

公式表

估算、流动、可靠性、测试发布规则及通用工程制品的条件化速查。

关联:全课程

符号说明

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:症状、影响、诊断、缓解、验证、升级、停止条件和事后记录。

使用边界

公式只能帮助显化假设。代入前写单位、观察窗、分母和数据来源;算完后做数量级和极端值反查。任何指标都不能单独评价个人。制品模板也不是填表竞赛:每一栏必须支持协作者做决定、执行或验证,否则应删除或改写。