软件工程中的常用软件生命周期模型

2017-12-28 23:21孔晓
电子技术与软件工程 2017年14期
关键词:开发人员瀑布原型

文/孔晓

软件工程中的常用软件生命周期模型

文/孔晓

世间万物都要经历孕育、诞生、成长、成熟、衰亡的过程,软件系统也是一样。在软件工程中我们将这一过程称为软件生命周期。我们可以将软件生存周期分成几个阶段,每个阶段都包含相应的任务,从而使软件的整个开发难度显著降低,便于管理。一般来说,软件生命周期由可行性分析、需求分析、概要设计与详细设计、代码编写、软件测试、软件维护等活动组成,在进行软件开发时可以将这些活动合理的分配到软件生命周期的不同阶段去实施。

软件工程 软件生命周期 瀑布型

软件生命周期模型的主要作用是确定各个软件开发活动实施的顺序。软件开发前期就应该选择适当的软件生命周期模型,以达到简化软件开发流程,降低软件开发难度的目的。软件生命周期模型可以帮助开发人员提高软件开发效率,提升软件质量,降低软件开发成本,更好地监督与控制软件开发进程,降低风险。如果没有选择或者选择了不合适的软件生命周期模型将会导致软件开发进度缓慢,造成人力、物力的无谓浪费,甚至使软件开发项目夭折,因此,根据软件开发项目的具体情况选择相应的软件生命周期模型是非常重要的。下面笔者结合多年开发经验和大家探讨一下几种常用的软件生命周期模型的特点,以供参考。

1 瀑布模型

虽然瀑布模型已不再适应当前软件开发的要求,但是通过分析瀑布模型的特点,我们依然能得到不少启发。瀑布模型的主要特点是其严格要求软件开发按照:需求>分析>设计>编码>测试的顺序进行,每各阶段都有明确的成果和检验标准。因此,瀑布模型的最大优点在于能够确保软件产品的高质量,能够提前发现和解决软件产品的陷能,能够保证开发人员在整体上充分把握软件系统的开发,使软件系统具有很强的高扩展性和可维护性。但是瀑布模型不适合那些前期需求不确定,而且在短时间内难以确定需求的项目。此外,在开发中小型软件项目时,往往需要需求设计人员和开发人员在项目一开始就全部参与到项目中,而不能分阶段参与,因此,采用瀑布模型将出现该项目人力资源配置不合理,人员闲置的情况。瀑布模型侧重文档,强调文档的作用,要求软件开发的每一个阶段都要认真检验。但该模型的过程太过理想化,实际开发中很难执行,因此基本被软件开发业界抛弃,其主要问题有以下几点:

(1)开发的各个阶段之间的划分太死板,每个阶段都会产生大量的文档,大大增加了工作量。

(2)因为该模型流程是线性的,用户只能在开发过程的末期才能看到成果,使开发风险大大增加。

(3)如果开发早期出现错误,很可能要等到开发后期的测试阶段才会发现。

2 螺旋模型

首先需要明白的是螺旋模型遵循和瀑布模型一样的开发流程,即需求>分析>设计>编码>测试的流程。而螺旋模型与瀑布模型相比最大的优势在于其整个开发过程是风险驱动和迭代的,螺旋模型将瀑布模型中的多个阶段转化成迭代过程,从而达到降低项目风险的目的。

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

(1)确定个目标;

(2)备用方案和约束识别;

(3)开发风险评估方案和备用解决方案;

(4)获得迭代的产出物并检验迭代产出的是否正确;

(5)准备下次迭代;

(6)提交下次迭代的方案。

采用螺旋模型的项目开发成本与风险成反比,也就是说成本投入越多,风险越小,这可以帮助开发人员更好地管理和跟踪项目。在每一次迭代完成之后都必须对产出物进行检验评估,如果发现开发无法继续下去时可以及早终止项目,减少损失。而每次迭代过程中的制定具体目标,分析风险和验证交付物并不是容易的事情,需要开发人员具备深厚的技术功底且尽职尽责。

3 快速原型法模型

该模型的特点是利用程序自动生成软件开发环境和工具,快速构建一个实际系统的简化模型,以供开发人员和客户进行沟通,从而使开发人员能够更准确的理解用户需求。

快速原型法模型首先是构建一个能够体现用户基本需求的原型,给用户展示实际软件系统的大概样子,以便用户可以直观地根据实际软件产品原型提出修改意见,使开发人员和用户进行高效地沟通,最终帮助开发人员开发出符合用户需求的软件系统。换句话说,这其实就是软件开发人员向用户提供样品,然后用户根据样品提供修改意见,然后开发人员进一步完善样品的过程。该模型避免了瀑布模型中直到开发末期才能看见软件产品的弊端。快速原型法根据软件开发各个阶段用户提供的意见,实现了软件产品快速的改造过程,放弃了瀑布模型的线性结构,采用逐步求精方法逐步完善产品原型,最大化地满足用户要求,是一个不断反馈、持续改进的过程。

快速原型法存在以下两个问题:

(1)系统开发前期往往为了让系统尽快运作起来而考虑的不周全,常常采用那些折中的方案,可能导致产品原型仅仅是一个示例,而无法成为实际软件产品的一部分,这样依然无法满足用户需求,因此在实际开发中还是有许多的工作要做。

(2)原型法对开发工具和开发环境有较高的依赖性,也就是说原型法需要大量先进而实用的软件工具的支持。

4 增量迭代模型

增量迭代模型是RUP推荐的软件生命周期模型。RUP中将迭代定义为:迭代包括实现软件产品发布(指可执行的稳定版本)的所有开发活动和使用该发布必需的一切外围元素。因此,可以将开发迭代理解为一个完整经历所有工作流程的过程,这个过程包括软件需求,软件分析设计,软件开发实施,软件测试需求。实际上它和小型的瀑布模型相似。RUP认为每一个阶段都能分成若干次迭代,每次迭代都可以产生一个能够发布的产品,这个产品是最终产品的其中一个子集。迭代模型与瀑布模型最大的不同在于风险的暴露时间。所有项目都不可避免的具有一定的风险,但如果能在软件生命周期中及早发现问题,避免风险,就能是软件开发计划更加精确。在瀑布模型中直到最后才会暴露出很多问题,此时再去解决这些问题无疑有很大的风险。而在迭代模型中,开发人员根据风险列表确定需要在迭代中开发哪些新的增量内容,每次迭代之后都会产生一个可执行文件,能够及早的发现问题,解决问题,这样做可以有效降低项目风险。

5 结束语

选择软件生命周期模型不仅要结合项目的特点,还有考虑到用户的参与程度和开发团队的技术水平。没有完全符合任何项目的模型,也没有完全不符合任何项目的模型。关键根据项目特点选择一个或结合多个模型制定出符合项目开发要求的开发流程。

[1]顾明.软件工程中几种常用软件生命周期模型的简介[J].计算机时代,2003(01):20-21.

[2]朱婕.浅谈软件生命周期模型及其选择[J].电脑迷,2014(17).

作者单位 曲阜师范大学软件学院 山东省曲阜市273100

孔晓(1994-),男,山东省曲阜市人。曲阜师范大学软件学院在读本科。软件工程专业。

猜你喜欢
开发人员瀑布原型
瀑布之下
Semtech发布LoRa Basics 以加速物联网应用
《哈姆雷特》的《圣经》叙事原型考证
论《西藏隐秘岁月》的原型复现
原型理论分析“门”
瀑布
三星SMI扩展Java论坛 开发人员可用母语