软件开发生命周期

时间:2022-11-05 14:46:04

摘  要:本文阐述了软件生命周期的概念,介绍了四种常用的软件产品开发的模型,并举例说明如何选择软件生命周期模型。最后,总结了运用软件生命周期方法的必要性及注意事项。

关键词:软件产品开发  软件生命周期

程序员出身的人都有这种切身体会,就是开发管理很重要。很多小规模的开发团队都是作坊式的开发,很不规范。这种开发方式对于一个人来说效率是很高的,但作为一个开发团队,会产生很多问题,不仅开发效率会降低,最关键的是不能保证软件产品的质量。即使有效率,也会在以后的维护中造成成本的增加。表面上看起来开发速度快了,但实际上以后可能会返工甚至推倒重来,效率也就大打折扣,甚至有时根本就无从谈起了。

那么如何解决这种问题呢?经过研究,我认为可以借鉴成熟的管理方法,进行规范化管理。其中,软件生命周期管理是很重要的一种开发管理方法。下面把研究的内容和结果总结如下。

一、什么是软件生命周期

是软件从产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段。

二、软件生命周期模型

按照软件生命周期管理方法,软件产品开发有以下几种模型:

1)瀑布模型

瀑布模型,就是要求每一个阶段都有明确的文档产出,对于严格的瀑布模型每一个阶段都不应该重叠,而应该在评审通过、相关的产出物都已经基线后才能够进入到下一个阶段。就是说瀑布模型一般是按顺序执行的(图1所示)。

软件开发生命周期

图1  瀑布模型阶段示意图

其优点是可以保证系统在整体上的充分把握,可以保证整个软件产品有较高的质量,保证缺陷能够被提前发现和解决。

瀑布模型不适用情况有:采用瀑布模型可以使系统具备良好的扩展性和可维护性,但对于需求不明确,不确定因素多的项目,很难利用瀑布模型。

2)螺旋模型

螺旋模型并不是一个完全独立的模型,而是与瀑布模型有着内在联系。它遵从瀑布模型“需求→架构→设计→编码→测试”的路线。其最大的特点是整个开发过程是迭代的和风险驱动的。就是通过将瀑布模型的多个阶段转化到多个迭代过程中,以减少项目的风险。

螺旋模型的每一次迭代都包含了六个步骤:决定目标,替代方案和约束→识别和解决项目的风险→评估技术方案和替代解决方案→开发本次迭代的交付物和验证迭代产出的正确性→计划下一次迭代→提交下一次迭代的步骤和方案(图2所示)。

软件开发生命周期

图2  螺旋模型示意图

3)增量迭代模型

增量迭代模型并不尝试一次性地完成所有的设计,而是首先进行较小范围的、关键核心的设计,然后在设计验证通过后,对当前设计进行扩展。增量和迭代有区别,但两者又经常一起使用。所以要想解释这个模型,就要先了解一下增量和迭代的概念。

假设现在要开发A、B、C、D四个大的业务功能,每个功能都需要两周的开发时间。则对于增量开发方法而言可以将四个功能分为两次增量来完成,第一次增量完成 A、B功能,第二次增量完成C、D功能;而对于迭代开发来说则是分两次迭代来开发,第一次迭代完成A、B、C、D四项基本业务功能但不含复杂的业务逻辑,而第二次迭代,将功能再逐渐细化补充完整相关的业务逻辑。在第一个月过去后,采用增量开发的时候A、B功能全部开发完成而C、D功能还一点都没有动;而采用迭代开发的时候A、B、C、D四项基础功能都已经完成。

4)快速原型模型

快速原型模型,就是在需求阶段也可以进行界面和操作建模,形成DEMO后和用户进一步进行需求沟通和确认。当用户没有信息系统的使用经验,系统分析员也没有过多的需求分析和挖掘经验的时候,需求分析和调研过程则更需要是一个启发式的过程。而原型则是一种很好的启发式方法,可以快速地挖掘用户需求并达成需求理解上的一致。否则即使双方都签字认可的需求,往往仍然不是客户真正想要的东西。

三、如何选择软件生命周期模型

在软件产品开发的项目中有这么多的模型可以选择,那么我们应该如何选择呢?下面举例说明:

1)对于以前曾经开发过同类型的项目,或用过相同的技术开发过的项目,或在前期需求明确的情况下,可以采用瀑布模型或改进的瀑布模型。

2)对于用户无信息系统使用经验,无法提出需求时,或者需求分析人员技能不足时,采用快速原型模型。

3)有的项目不确定性因素很多,很多东西前面无法计划,这时可以采用增量迭代模型或螺旋模型。

4)有的项目需求总是变来变去,即需求不稳定,这时可以采用增量迭代模型。

5)有的软件比较大,公司不可能一次投入那么多的人力、物力,这时可以采用增量迭代模型,软件产品分多个版本进行发布。

6)有的项目有多个独立功能,这时可以分别针对每个功能,将其作为子项目,每个子项目内都可以采用瀑布模型。

四、其他应注意的事项

我们开发软件项目中经常会遇到使用新的开发技术的情况,也就是创新型的项目。对于创新型的软件项目的开发,风险比较高,容易延期甚至失败,一般是比较难以把握和控制的。对于这种项目的开发,建议先进行预研项目的开发。预研项目只是对技术路线进行探索和修正的过程,是很必要的。我们以前可能是有预研的,但这种预研完全依靠技术尖子的主观能动性,对于人的依赖性太大,不规范。采用CMM后,可能给每个人的任务都比较紧张,技术尖子*发挥的时间也少了,所以应该有预研项目。

软件项目预研阶段一般采用快速原型模型,就是要先将路走通,并测试开发技术的效率、总结经验、找到行之有效的技术路线。在开发的原型的基础上,再正式立项,因为对于细节已经能够把握,可以进行详细设计,这时可以采用瀑布模型。这样开发效率就可以控制了。

另外,在开发的各个阶段都要有相应的评审会并形成相应的记录和文档。

五、结论

国内外成功的软件公司,多数都采用软件生命周期方法来管理软件项目,这确实是一种行之有效的管理方法。我们自己可以学习和消化这种方法,因地制宜地开展起来,相信对于软件开发项目管理水平的提高是非常有益的。

From:http://blog.csdn.net/zrbin153/article/details/6657332