第3章 三思而后行:前期准备 Measure Twice, Cut Once: Upstream Prerequisites
瞄两次,切一次 Measure Twice, Cut Once
在构建活动开始之前,准备工作要做周全。
3.1 前期准备的重要性 Importance of Prerequisites
高质量的实践方法在项目的初期(计划和要求)、中期(实践)、末期(系统测试)都强调质量。
- 前期准备适用于现代软件项目吗:准备工作的中心目的就是降低风险
- 准备不周全的诱因:
- 人员不具备专业技能
- 不能抵抗“尽快开始编码”的欲望
- 关于开始构建之前要做前期准备的绝对有力且简明的论据:
- 诉诸逻辑 Appeal to Logic:准备工作很重要
- 诉诸类比 Appeal to Analogy:针对将要构造的每一片段,先弄清哪些是最关键的需求和架构要素
- 诉诸数据 Appeal to Data:发现错误的时间要尽可能接近引入该错误的时间
3.2 辨明你所从事的软件的类型 Determine the Kind of Software You're Working On
三种最常见的软件项目种类:
- 商业系统->高度迭代
- 使命攸关的系统
- 性命攸关的嵌入式系统->序列式
迭代开发法对前期准备的影响:迭代开发在项目进行过程中一点点吸收消化返工,使总体成本较低。
在序列式开发法和迭代式开发法之间做出选择:前者稳,后者走着瞧。
3.3 问题定义的先决条件 Problem-Definition Prerequisite
问题定义在需求分析之前,应该用客户的语言来写,从客户的角度来描述问题。
“在射击之前,确信你瞄准了正确的目标”。