浅谈软件生命周期模型及其选择

时间:2022-09-27 10:49:33

浅谈软件生命周期模型及其选择

摘 要 同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生存周期(软件生命周期)。把整个软件生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大,结构复杂和管理复杂的软件开发变的容易控制和管理。通常,软件生存周期包括可行性分析与开发项计划、需求分析、设计(概要设计和详细设计)、编码、测试、维护等活动,可以将这些活动以适当的方式分配到不同的阶段去完成。

关键词 软件生命周期 瀑布型 快速原型

中图分类号:TP31 文献标识码:A

1瀑布模型

虽然瀑布模型仍然存在很多的问题有待解决,但瀑布模型仍然是最基本的和最效的一种可供选择的软件开发生命周期模型.瀑布模型要求软件开发严格按照:需求->分析->设计->编码->测试的阶段进行,每一个阶段都可以定义明确的产出物和验证准则.瀑布模型在每一个阶段完成后都可以组织相关的评瀑布模型的优点仍然是可以保证整个软件产品较高的质量,保证缺陷能够提前的被发现和解决。采用瀑布模型可以保证系统在整体上的充分把握,使系统具备良好的扩展性和可维护性.但对于前期需求不明确,而又很难短时间明确清楚的项目则很难很好的利用瀑布模型。另外对于中小型的项目,需求设计和开发人员往往在项目开始后就会全部投入到项目中,而不是分阶段投入,因此采用瀑布模型会导致项目人力资源过多的闲置的情况,这也是必须要考虑的问题。审核验证,只有在评审通过后才能够进入到下一个阶段。

瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:

(1) 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。

(2) 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险。

(3)早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。

2螺旋模型

首先螺旋模型是遵从瀑布模型的,即需求->架构->设计->开发->测试的路线。螺旋模型最大的价值在于整个开发过程是迭代和风险驱动的,通过将瀑布模型的多个阶段转化到多个迭代过程中,以减少项目的风险。

螺旋模型的每一次迭代都包含了以下六个步骤:

(1)决定目标

(2)替代方案和约束识别和解决

(3)项目的风险评估技术方案和替代解决方案开发

(4)本次迭代的交付物和验证迭代产出的正确性

(5)计划下一次迭代

(6)提交下一次迭代的步骤和方案

螺旋模型是随着项目成本投入不断增加,风险逐渐减小的,以帮助我们加强项目的管理和跟踪,在每次迭代结束后都需要对产出物进行评估和验证,当发现无法继续进行下去时可以及早的终止项目。

螺旋模型复杂的地方在于尽责,专心和知识渊博的管理。因为对于每一次迭代都要制定出清晰的目标,分析出相关的关键风险和计划中可以验证和测试的交付物并不是一件容易的事情。

3增量迭代模型

迭代式模型是RUP(RationalUnifiedProcess,统一软件开发过程,统一软件过程)推荐的周期模型。在RUP中,迭代被定义为:迭代包括产生产品(稳定、可执行的产品版本)的全部开发活动和要使用该必需的所有其他元素。所以,在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:(至少包括)需求工作流程、分析设计工作流程、实施工作流程和测试工作流程。实质上,它类似小型的瀑布式项目。RUP认为,所有的阶段(需求及其它)都可以细分为迭代。每一次的迭代都会产生一个可以的产品,这个产品是最终产品的一个子集。

迭代和瀑布的最大的差别就在于风险的暴露时间上。“任何项目都会涉及到一定的风险。如果能在生命周期中尽早确保避免了风险,那么您的计划自然会更趋精确。有许多风险直到已准备集成系统时才被发现。不管开发团队经验如何,都绝不可能预知所有的风险。”由于瀑布模型的特点(文档是主体),很多的问题在最后才会暴露出来,为了解决这些问题的风险是巨大的。在迭代式生命周期中,您需要根据主要风险列表选择要在迭代中开发的新的增量内容。每次迭代完成时都会生成一个经过测试的可执行文件,这样就可以核实是否已经降低了目标风险。

4快速原型(RapidPrototype)模型

快速原型模型在功能上等价于产品的一个子集。注意,这里说的是功能上。瀑布模型的缺点就在于不够直观,快速原型法就解决了这个问题。一般来说,根据客户的需要在很短的时间内解决用户最迫切需要,完成一个可以演示的产品。这个产品只是实现部分的功能(最重要的)。它最重要的目的是为了确定用户的真正需求。在我的经验中,这种方法非常的有效,原先对计算机没有丝毫概念的用户在你的原型面前往往口若悬河,有些观点让你都觉得非常的吃惊。在得到用户的需求之后,原型将被抛弃。

上述的模型中都有自己独特的思想,其实现在的软件组织中很少说标准的采用那一种模型的。模型和实用还是有很大的区别的。软件生命周期模型的发展实际上是体现了软件工程理论的发展。在最早的时候,软件的生命周期处于无序、混乱的情况。一些人为了能够控制软件的开发过程,就把软件开发严格的区分为多个不同的阶段,并在阶段间加上严格的审查。这就是瀑布模型产生的起因。瀑布模型体现了人们对软件过程的一个希望:严格控制、确保质量。可惜的是,现实往往是残酷的。瀑布模型根本达不到这个过高的要求,因为软件的过程往往难于预测。反而导致了其它的负面影响,例如大量的文档、繁琐的审批。因此人们就开始尝试着用其它的方法来改进或替代瀑布方法。例如把过程细分来增加过程的可预测性。现总结如下:

(1)在前期需求明确的情况下尽量采用瀑布模型或改进型的瀑布模型。

(2)在用户无信息系统使用经验,需求分析人员技能不足情况下一定要借助原型。

(3)在不确定性因素很多,很多东西前面无法计划情况下尽量采用增量迭代和螺旋模型。

(4)在需求不稳定情况下尽量采用增量迭代模型。

(5)在资金和成本无法一次到位情况下可以采用增量模型,软件产品分多个版本进行。

(6)对于完全多个独立功能开发可以在需求阶段就分功能并行,但每个功能内都应该遵循瀑布模型。

(7)对于全新系统的开发必须在总体设计完成后再开始增量或并行。

(8)对于编码人员经验较少情况下建议不要采用敏捷或迭代等生命周期模型。

(9)增量,迭代和原型可以综合使用,但每一次增量或迭代都必须有明确的交付和出口准则。

参考文献

[1] (美)MichaelHoward&(美)SteveLipner.软件安全开发生命周期(中译本扫描版).电子工业出版社,2008.01.

[2] 张向宏.软件生命周期质量保证与测试.电子工业出版社,中国软件评测中心组编,2009.05.01.

上一篇:用于实时交互式远程教育的以人为本的多媒体网... 下一篇:中国电子商务的发展