表4-1列举了一般在初始阶段(或细化阶段早期)会创建的制品以及各个制品所解决的问题。后续几章将详细解释其中部分制品,特别是“用例模型”。迭代开发的一个重要观点是:在初始阶段只完成其中部分制品,在后继迭代中对其进行精化。而且,除非认定某制品很可能具有实用价值,否则不应该创建该制品。因为是在初始阶段,所以相关的研究和制品内容都不多。
表4-1 初始阶段制品的样例
注*:在本阶段,只完成其中部分制品。后续迭代中将会反复对其进行精化。黑体名称表示正式命名的UP制品。
例如,用例模型可以列出大部分所期望的用例名称和参与者的姓名,但可能只详细描述其中的10%,这一工作是在定义系统范围、目标和风险的大致高层设想中完成的。
注意,在初始阶段可能要进行一些编程工作,其目的是创建“概念验证”原型,(典型的)通过面向UI的原型来澄清一些需求,以及为关键的“显示阻塞” 技术问题做一些编程实验。
记住,这些制品都是可选的。要有选择地创建对项目确有价值的制品,如果其价值未被证实,则放弃之。因为这是进化式开发,所以重要的不是在初始阶段创建完整的规格说明,而是形成初始、概略的文档。这些文档将在细化迭代中精化,以便响应由早期编程和测试得到的极有价值的反馈。
同样,创建制品或模型的重点不在于文档或图本身,而是其中蕴含的思想、分析和前期准备。这也正是敏捷建模的观点:建模的最大价值是增强理解,而非记录可靠的规格说明。正如艾森豪威尔将军所说:“在即将进行作战的时候,我经常发现之前制定的计划根本派不上用场,但制定计划这项工作却是必不可少的”[Nixon90,BF00]。
还要注意的是,可以在以后的项目中部分重用以往项目中的制品。一般在不同项目中,风险、项目管理、测试和环境这些制品都可能存在大量相似之处。所有UP项目都应该用相同的名称,以相同方式来组织制品(例如风险列表、开发案例等)。这样就可以方便地从以往项目中找出能够在新项目中重用的制品。