软件工程--增量模型详解

增量模型

增量模型也成为渐增模型,如下图所示。

软件工程--增量模型详解

使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。

例如,使用增量模型开发字处理软件时,第1个增量构件提供基本的文件管理、编辑和文档生成功能;第2个增量构件提供更完善的编辑和文档生成功能;第3个增量构件实现拼写和语法检查功能;第4个增量构件完成高级的页面排版功能。把软件产品分解成增量构件时,应该使用构件的规模适中,规模过大或过小都不好。最佳分解方法因软件因软件产品特点和开发人员的习惯而异。分解时唯一必须遵守的约束条件是,当把新构件集成到现有软件中时,所形成的产品必须是可测试的。

采用瀑布模型或快速原型模型开发软件时,目标都是一次就把一个满足所有需求的产品提交给用户。增量模型则与之相反,它分批地逐步向用户提交产品,整个软件产品被分解成许多个增量构件,开发人员一个构件一个构件地向用户提交产品。从第一个构件交付之日起,用户就能做一些有用的工作。显然,能在较短时间内向用户提交可完成部分工作的产品,是怎量模型的一个优点。

增量模型的另一个优点是,逐步增加产品功能可以使用用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。

使用增量模型的困难是,在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。

但是,从长远观点看,具有开放结构的软件拥有真正的优势,这样的软件的可维护性明显好于封闭结构的软件。因此,尽管采用增量模型比采用瀑布模型和快速原型模型需要更精心的设计,但在设计阶段多付出的劳动将在维护阶段获得回报。如果一个设计非常灵活而且足够开放,足以支持增量模型,那么,这样的设计将允许在不破坏产品的情况下进行维护。事实上,使用增量模型时开发软件和扩充软件功能(完善性维护)并没有本质区别,都是向现有产品中加入新构件的过程。

从某种意义上说,增量模型本身是自相矛盾的。它一方面要求开发人员把软件看作一个整体,另一方面又要求开发人员把软件看作构件序列,每个构件本质上都独立于另一个构件。除非开发人员有足够的技术能力协调好这一明显的矛盾,否则用增量模型开发出的产品可能并不令人满意。

上图所示的增量模型表明,必须在开始实现各个构件之前就全部完成需求分析、规格说明和概要设计工作。由于在开始构建第一个构件之前已经有了总体设计,因此风险较小。

下图描绘了一种风险更大的增量模型:
软件工程--增量模型详解

一旦确定了用户需求之后,就着手拟定第一个构件的规格说明文档,完成后规格说明组将转向第二个构件的规格说明,与此同时设计组开始设计第一个构件…用这种方式开发软件,不同的构件将并行地构建,因此有可能加快工程进度。

但是,使用这种方式将冒构件无法集成到一起的风险,除非密切监控整个开发过程,否则整个工程可能毁于一旦。