阶段化开发:增量和迭代

2.2.6  阶段化开发:增量和迭代

在早期的软件开发中,客户愿意为软件系统的最后完成等待很长时间。有时,从编写需求文档到系统交付使用会经过若干年,称为循环周期(cycle time)。但是,今天的商业环境不会再容许长时间的拖延。软件使产品在市场上引人注目,而客户总是期待着更好的质量和新的功能。例如,1996年,惠普公司80%的收入来自过去两年开发的产品,因而,他们开发了新的过程模型来帮助缩短循环周期。

一种缩短循环周期的方法是使用阶段化开发,如图2-8所示。使用这种方法设计系统时使其能够一部分一部分地交付,从而在系统其余部分正在开发的同时,用户已经获得了一部分功能。因此,通常会有两个系统在并行运行:产品系统和开发系统。运行系统(operational system)或产品系统(production system)是当前正在被客户和用户使用的系统,而开发系统(development system)是准备用来替换现行产品系统的下一个版本。通常,用它们的发布代号表示一个系统:开发人员构建发布1,进行测试,然后把它交给用户作为第一个可运行的发布。然后,当用户使用发布1的时候,开发人员正在构建发布2。从而,开发人员总是在开发发布n+1,而与此同时发布n总是正在运行的。



 
 

开发人员可以用多种方法决定如何将开发组织为发布。增量开发(incremental development)和迭代开发(iterative development)是两种最常用的方法。在增量开发中,需求文档中指定的系统按功能划分为子系统。定义发布时首先定义一个小的功能子系统,然后在每一个新的发布中增加新功能。图2-9的上半部分显示了增量开发是如何在每一个新的发布中逐步增加功能直到构造全部功能的。



 
  

而迭代开发是在一开始就提交一个完整的系统,然后在每一个新的发布中改变每个子系统的功能。图2-9的下半部分说明一个迭代开发的3个发布。

为了理解增量开发和迭代开发之间的区别,我们来看一个用于文字处理的软件包。假设这个软件包要具有3种类型的功能:创建文本、组织文本(即剪切和粘贴)以及格式化文本(例如使用不同的字体大小和类型等)。要使用增量开发模型构建这样一个系统,我们可能在发布1中仅提供创建功能,然后在发布2中提供创建和组织功能,最后在发布3中提供创建、组织和格式化功能。但是,使用迭代开发方法时,我们要在发布1中提供简单的3种类型的功能。例如:可以创建文本,然后剪切并粘贴文本,但是剪切和粘贴功能可能不够灵活快捷。在下一次迭代(即发布2)中,提供相同的功能,但是系统的功能增强了:剪切和粘贴功能变得方便和快捷。每一个发布都在前一个发布的基础上进行了某些改进。

实际上,许多组织都将迭代开发和增量开发方法结合起来使用。一个新的发布版本可能包含新的功能,并且对已有功能做了改进。这种形式的阶段化开发方法是人们想要的,原因如下。

(1) 即使还缺少某些功能,但在早期的发布中就可开始进行培训。培训过程可以使开发人员观察某些功能是如何执行的,并为后面的发布提供了改进的建议。这样,开发人员能够很好地对用户的反馈做出反应。

(2) 可以及早为那些以前从未提供的功能开拓市场。

(3) 当运行系统出现未预料到的问题时,经常性的发布可以使开发人员能全面、快速地修复这些问题。

(4) 针对不同的发布版本,开发团队将重点放在不同的专业领域技术上。例如,一个发布可以利用用户界面专家的专业知识将系统从命令驱动的界面改为指向-点击式(point-and-click)的图形用户界面,另外一个发布可集中于改进系统性能。

扫描二维码关注公众号,回复: 1128640 查看本文章

猜你喜欢

转载自wmcxy.iteye.com/blog/1197409