常见软件工程开发周期模型有:瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、V模型等。
1.瀑布模型
- 必须等前一阶段的工作完成之后,才能开始后一阶段的工作;
- 前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。
分析:
- 一般情况下将其分为计划、需求分析、概要设计、详细设计、编码以及单元测试、测试、运行维护等几个阶段。
- 周期是环环相扣的。上一个周期的结束需要输出本次活动的工作结果,本次的活动的工作结果将会作为下一个周期的输入。
- 当某一个阶段出现了不可控的问题的时候,就会导致返工,返回到上一个阶段,甚至会延迟下一个阶段。
2.快速原型模型
- 所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。
- 快速原型的本质是“快速”,开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用作是获知用户的真正需求,一旦需求确定了,原型系统将被抛弃。
分析:
- 快速建立程序,该程序可以在计算机上运行,完成的功能通常是最终功能的一个子集,主要目的是确认客户的需求。
- 把其他项目地的版本拿过来,在基础上删删改改轻松搞定,适用于大部分“行业软件提供商”。
3.增量模型
- 增量模型也称为渐增模型,使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。
- 使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。
分析:
- 融合瀑布模型的基本成分和原型模型的迭代特征,采用随日期时间进展而交错的线性序列,把软件产品作为一系列的增量构件来进行分析,编码,测试,发布。
4.螺旋模型
- 螺旋模型的基本思想就是,使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作每个阶段之前都增加了风险分析过程的快速原型模型。
- 螺旋模型主要适用于内部开发的大规模软件项目。如果进行风险分析的费用接近整个项目的经费预算,则风险分析是不可行的。
- 事实上项目越大,风险也越大,因此进行风险分析的必要性也越大。此外只有内部开发的项目,才能在风险过大时方便中止项目。
分析:
- 将瀑布模型与原型模型结合起来,并且加入两种模型都忽略的风险分析,特点是螺旋模型是风险风险驱动的,运行风险分析后会决定项目是否进行。
5.喷泉模型
- 喷泉模型对软件复用和生存周期中多项开发活动的集成提供了支持,以面向对象的软件开发方法为基础,它适合面向对象的开发方法。
- 它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。
- 系统某个部分常常重复工作多次,相关功能在每次迭代中随之加入演化的系统。无间隙是指在分析、设计和实现等开发活动之间不存在明显的边界。
分析:
- 设计完就开发,各阶段同时开发,节约时间提升效率。但需要大量的开发人员,不利于项目的管理。因为要严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。
6.V模型(RDA快速开发模型)
- V模型从整体上看起来,就是一个V字型的结构,由左右两边组成。
- V左边的下划线分别代表了需求分析、概要设计、详细设计、编码;V右边的上划线代表了单元测试、集成测试、系统测试与验收测试。
- 看起来V模型就是一个对称的结构,它的重要意义在于,非常明确的表明了测试过程中存在的不同的级别,并且非常清晰的描述了这些测试阶段和开发阶段的对应关系。
分析:
- V模式是一种传统软件开发模型,一般适用于一些传统信息系统应用的开发。开发周期短、效率高。
- 不适合风险大的开发,先全部编码完,最后测试,有可能测试时候发现编码各种报错。可以考虑左右同时进行,即边开发边测试,减小风险。
选择的原则:
- 原型模型:客户提出一般性的目标,不能标出详细的输入,处理,输出需求,或者开发者不能确定算法的项目
- 瀑布模型:适合需求明确,时间要求比较宽松,或者规模比较小,需求简单的项目
- 增量模型:需求逐渐清晰的软件项目
- 螺旋模型:大规模软件项目,需求不明朗,风险比较高的软件项目
- 喷泉模型:人员充足,管理严格,时间紧张的项目
- V模型:能够具体模块化的传统信息系统开发项目