阅读主题
结语:从假设到保证
一个字段、一段公共抽象、一项界面反馈和一次远端调用,都包含关于软件行为的假设。时间章从“最后有效日”与“截止瞬间”的区别开始,后面的章节则不断追问:哪些规则应当共享,谁拥有资源,界面显示了什么事实,谁有权修改,请求是否已经执行,局部完成之后还缺哪一步?
设计的依据,是系统需要兑现的业务承诺。 先说明值和动作的含义,再划定保证成立的范围,检查重复、并发、中断与版本共存会怎样改变结果。共享代码会影响变化的范围,扩展点需要维护新的契约,依赖和优化也会引入成本。方案的名字不能替代这些条件,单个组件的成功也不能替代完整业务的完成。
证据使这些判断能够被检查。边界输入检验定义,并发交错检验约束,中途失败检验恢复,运行记录帮助发现模型之外的情况。验证不仅用于证明已有实现,也帮助我们发现尚未说清的需求。
面对下一套系统,可以从一个具体问题开始:我们现在默认什么一定成立?如果这个条件改变了,哪项业务承诺会受到影响?沿着这个问题确定规则、实现和证据,便有机会把经验变成可以解释、可以检验的工程判断。