以“为客户及时提供满意的软件产品”为目标的软件过程必须充分发挥软件项目灵活自由的特点,避免由于软件项目目标与过程的多变性带来的风险。版本分解方法,从缩小版本规模入手,使软件产品实现分阶段增量的交付,将产品重要功能的交付时间尽量提前,促进了客户于开发者的沟通,提高了软件产品主要功能的成熟程度。
版本分解的特点体现在:
1.分散项目风险 多数超出控制范围的软件项目都是大型项目,大型项目比小型项目困难更多。通过把一个大型软件产品分解为多个独立的小版本,把大项目的开发过程转换为多个小型项目开发过程的集合,可以将大型项目的风险分散。
2.提高项目过程和产品的可视性 很多超出控制范围的软件项目在其开发初期与将要替换掉的系统相比,具有极大的优势,如果该项目不是被全面展开人们似乎都看不到有失败的可能。一般的迭代方法没有严格的阶段交付目标,造成在管理中计划的不严肃,容易在迭代周期结束时轻视少量的遗留问题,而在项目最终这些小的遗留问题将有可能积累成为大的问题。版本分解使客户和开发者更早地看到项目成果,从而更早的暴露项目背后隐藏的风险。
3.增进与客户的沟通 由客户决定每一个版本功能范围的定义,由开发设计人员决定每个版本的开发周期。使客户对提出的需求有更慎重的权衡,更多的理解开发设计人员。开发设计人员也因为范围定义的缩小而更深入细致地理解需求,明确各功能点的主次关系。
4.减小技术因素对项目的影响 大量项目的失败都是由于技术方法所致,而不仅仅是管理的原因。版本分解使新技术和新的体系结构不会轻率地应用于整个大型项目,而是可以先由一个小程序开始试点,在确定实现效果和实现难度后再决定是推广、加入未来版本计划还是放弃。
5.便于综合应用多种软件工程方法 不同的小版本可以根据其复杂程度、重复程度、技术含量、客户需求迫切程度等应用不同的软件工程方法,以最精简有效的方法快速提供高质量的可用版本。
6.提高直接用户对软件系统的接受程度 通过尽早交付软件模块,使直接用户更早地适应新软件的操作,便于即早发现问题、解决问题。
7.有利于开发团队的培养 每一个的分解版本的开发过程对开发人员经验的积累和软件工程规范习惯的养成都会产生渐进的影响,在开发过程中团队之间的沟通更加频繁,软件的设计也会更多的考虑开发者的特长。 |