常见的软件生命周期模型

敏捷强调的迭代开发模型并不是新生事物,实际早在敏捷流行之前就有很多类似的软件生命周期管理模型在大规模应用了,今天我们就一起看看常见的生命周期模型。

常见的软件生命周期模型

我们常见的软件生命周期模型主要包括上图的几种:

瀑布模型

常见的软件生命周期模型

1970年Winston Royce提出了著名的”瀑布模型”,直到80年代早期,它一直是被最广泛采用的软件开发模型。瀑布模型将软件生命周期划分为制定计划、需求分析、系统设计、系统实现、系统测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,开发进程从一个阶段“流动”到下一个阶段,这也是瀑布开发名称的由来。一般瀑布模型下各阶段工作量典型占比为:7:6:7:13:67。

瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,它的优点是各个阶段划分比较清晰,检查点比较明确,但是对于变化的响应能力较差,评审过程和质量比较难控制,一旦出现评审没有发现的问题就可能影响到整个系统。它适合需求易于完善定义且不易变更的软件系统。

快速原型模型

常见的软件生命周期模型

快速原型模型又称原型模型,它是增量模型的另一种形式,它一般在开发真实系统之前,经过简单快速分析,快速实现一个原型,用户与开发者在试用原型过程中加强通信与反馈,通过反复评价和改进原型,在最终确定版本的原型的基础上,逐渐完成整个系统的开发工作。

该模型一般用于客户对需求没有明确要求或者很难确定的情况下,用户与开发者在试用原型过程中加强沟通与反馈,通过反复评价和改进原型,减少误解,弥补漏洞,适应变化,最终提高软件质量。

模型构造多使用脚本语言、基于现有基础代码库、UI工具制作,制作过程一般不会考虑性能、稳定性、边际情况等,以能完整清晰描述客户需求并作为沟通依据为主要目的,界面原型需要在操作方式、界面布局等方面尽量接近最终细实现效果。

迭代模型

常见的软件生命周期模型

迭代模型是RUP(Rational Unified Process,统一软件开发过程,统一软件过程)推荐的周期模型。在RUP中,迭代被定义为:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。

在某种程度上,迭代开发是一次完整地经过所有工作流程的过程:(至少包括)需求工作流程、分析设计工作流程、实施工作流程和测试工作流程。它类似小型的瀑布式项目。RUP认为,所有的阶段(需求及其它)都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。每次迭代成果须进行配置管理,版本控制很重要。在整个迭代过程中风险无处不在,所以建议每周作一次风险跟踪。

螺旋模型

常见的软件生命周期模型

螺旋模型结合了瀑布模型、快速原型模型和迭代模型的思想,并引进了风险分析过程,多用于需求难以获取和确定、开发风险较大的软件系统。它具有如下特点:

1)设计上的灵活性,可以在项目的各个阶段进行变更。
2)以小的分段来构建大型系统,使成本计算变得简单容易。
3)客户始终参与每个阶段的开发,保证项目的可控性。
4)能够和管理层有效地交互,带来良好的沟通效果和高质量的产品。

螺旋模型基本做法是在“瀑布模型”的每一个开发阶段前引入一个非常严格的风险识别、风险分析和风险控制动作,它把软件项目分解成一个个小项目。每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定。

螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,继而做出应有的反应,因此特别适用于庞大、复杂并具有高风险的系统。对于这些系统,风险是软件开发不可忽视且潜在的不利因素,它可能在不同程度上损害软件开发过程,影响软件产品的质量。减小软件风险的目标是在造成危害之前,及时对风险进行识别及分析,决定采取何种对策,进而消除或减少风险的损害。

因此使用螺旋模型需要注意:

1)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。
2)过多的迭代次数会增加开发成本,延迟提交时间。

来源:敏捷工坊,本文观点不代表自营销立场,网址:https://www.zyxiao.com/p/126210

发表评论

登录后才能评论
侵权联系
返回顶部