首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >软件生命周期的几个模型

软件生命周期的几个模型

作者头像
PM吃瓜
发布于 2023-03-02 12:24:13
发布于 2023-03-02 12:24:13
5500
举报
文章被收录于专栏:PM吃瓜(公众号)PM吃瓜(公众号)

软件生命周期同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生命周期(软件生存周期)。

软件生命周期模型是指人们为开发更好的软件而归纳总结的软件生命周期的典型实践参考。软件生命周期(SDLC,软件生存周期)是软件的产生直到报废的生命周期。

为了使规模大、结构复杂和管理复杂的软件开发变的容易控制和管理,人们把整个软件生命周期划分为若干阶段,使得每个阶段有明确的任务,整理出软件生命周期模型。

中文名

软件生命周期模型

瀑布型生命周期

在1970年人类整理了第一个软件生命周期,即是瀑布型生命周期。在没有总结到其它生命周期模型时,人们直接将其命名为软件生命周期,而随着越来越多的生命周期模型被识别,原先的软件生命周期就不再是瀑布型生命周期的专有名称。而在1970年~2000年瀑布型生命周期占统治地位的时候,软件生命周期是瀑布型生命周期的另一个称呼,也就是说软件生命周期指的就是瀑布型生命周期。

瀑布型生命周期包括可行性分析与开发项计划、需求分析、设计(概要设计和详细设计)、编码、测试、维护等阶段。

而其它软件生命周期未必有与瀑布型生命周期相同的阶段。

敏捷类生命周期的阶段划分是按照迭代来进行,而迭代内部不再有阶段划分,在如测试驱动开发等的实践下,就算是更细节的活动也难以明确划分是需求还是设计还是编码还是测试。

瀑布型生命周期的典型六个阶段

1、问题的定义及规划

此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。

2、需求分析

在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。"唯一不变的是变化本身。",同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。

3、软件设计

此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。

4、程序编码

此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。

5、软件测试

在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、组装测试以及系统测试三个阶段进行。测试的方法主要有白盒测试黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。

6、运行维护

软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。

模型分类

典型的生命周期模型包括迭代模型、快速原型模型、V模型、W模型。

迭代式模型

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

图1 迭代式模型

迭代和瀑布的最大的差别就在于风险的暴露时间上。“任何项目都会涉及到一定的风险。如果能在生命周期中尽早确保避免了风险,那么您的计划自然会更趋精确。有许多风险直到已准备集成系统时才被发现。不管开发团队经验如何,都绝不可能预知所有的风险。”

 由于瀑布模型的特点(文档是主体),很多的问题在最后才会暴露出来,为了解决这些问题的风险是巨大的。"

在迭代式生命周期中,您需要根据主要风险列表选择要在迭代中开发的新的增量内容。每次迭代完成时都会生成一个经过测试的可执行文件,这样就可以核实是否已经降低了目标风险。"

迭代和瀑布差别

快速原型模型

快速原型(Rapid Prototype)模型在功能上等价于产品的一个子集。注意,这里说的是功能上。瀑布模型的缺点就在于不够直观,快速原型法就解决了这个问题。一般来说,根据客户的需要在很短的时间内解决用户最迫切需要,完成一个可以演示的产品。这个产品只是实现部分的功能(最重要的)。它最重要的目的是为了确定用户的真正需求。

在我的经验中,这种方法非常的有效,原先对计算机没有丝毫概念的用户在你的原型面前往往口若悬河,有些观点让你都觉得非常的吃惊。

在得到用户的需求之后,原型将被抛弃。因为原型开发的速度很快,设计方面是几乎没有考虑的,如果保留原型的话,在随后的开发中会为此付出极大的代价。至于保留原型方面,也是有一种叫做增量模型是这么做的,但这种模型并不为大家所接受,不在我们的讨论之内。 上述的模型中都有自己独特的思想,其实软件组织中很少说标准的采用那一种模型的。

模型和实用还是有很大的区别的。  软件生命周期模型的发展实际上是体现了软件工程理论的发展。在最早的时候,软件的生命周期处于无序、混乱的情况。一些人为了能够控制软件的开发过程,就把软件开发严格的区分为多个不同的阶段,并在阶段间加上严格的审查。这就是瀑布模型产生的起因。瀑布模型体现了人们对软件过程的一个希望:严格控制、确保质量。

可惜的是,现实往往是残酷的。瀑布模型根本达不到这个过高的要求,因为软件的过程往往难于预测。反而导致了其它的负面影响,例如大量的文档、繁琐的审批。因此人们就开始尝试着用其它的方法来改进或替代瀑布方法。例如把过程细分来增加过程的可预测性。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PM吃瓜 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
软件工程大题题库
因为软件工程提出是为了解决软件危机所带来的各种弊端。具体的讲,软件工程的目标主要包括以下几点:
风骨散人Chiam
2021/09/06
1.3K0
软件工程练习题-part01-软件工程概述及软件过程
“软件工程”课程是软件工程专业的核心课程,是用工程化方法指导软件开发、维护与管理的一门综合性课程,内容涉及软件分析、设计、实现、维护及项目管理相关的理论、技术、方法和CASE工具。
IT从业者张某某
2023/10/16
3680
软件工程练习题-part01-软件工程概述及软件过程
软件工程part01-软件工程概述及软件过程
“软件工程”课程是软件工程专业的核心课程,是用工程化方法指导软件开发、维护与管理的一门综合性课程,内容涉及软件分析、设计、实现、维护及项目管理相关的理论、技术、方法和CASE工具。
IT从业者张某某
2023/10/16
9390
软件工程part01-软件工程概述及软件过程
软件生命周期
软件生命周期是指软件从开始研制到最终被废弃所经历的各个阶段。在不同的阶段里,由不同的组织和人员执行不同的任务,需要消耗不同的资源。
zls365
2021/02/01
7040
软件生命周期
【信管2.3】项目生命周期
上一篇文章内容有点多呀,消化完了吗?其实吧,最主要的就是那三种组织形式而已,别的真没什么,记住它们的优缺点和项目经理的权力大小就可以了。今天我们轻松点,虽说还是挺重要的,但要记住它们并不是在今天。我们要了解一下项目的生命周期,以及在 IT 项目开发中常用的典型生命周期。其实这些内容我们在技术相关的内容中都已经有涉及过,这里只是更详细的再说明一下。看到下面的内容你一定不会感到非常陌生的。最后,我们还要提一下项目管理过程,也就是大家翘首以盼的 PMBOK 十大过程领域,当然,只是简单的介绍下,因为每个过程域我们在后面都会详细地学习。
硬核项目经理
2023/03/02
4100
【信管2.3】项目生命周期
软件工程概述
软件工程是一门科学,它使用科学知识和系统化的技术原理来定义、开发和维护软件。其目标是成功地建造一个大型软件系统,达到要求的软件功能、性能、易移植性、低维护成本、按时交付和高可靠性。软件工程主要研究软件开发技术和软件开发管理两方面,在技术方面包括软件开发方法、过程、工具和环境,在管理方面包括软件管理学、经济学和心理学等。
一个风轻云淡
2023/12/03
6760
【系统架构】第五章-软件工程基础知识(一)
3、螺旋模型 是在快速原型的基础上扩展而成,这种模型把整个软件开发流程分成多个阶段,每个阶段都有4个部分组成,适用于大型软件开发
阿提说说
2023/10/16
3890
【系统架构】第五章-软件工程基础知识(一)
【愚公系列】软考中级-软件设计师 035-软件工程基础(过程模型)
软件工程的过程模型是指开发软件的过程中所采用的一种规范化方法或框架。常见的软件工程过程模型包括瀑布模型、迭代开发模型、喷泉模型、敏捷开发模型等。
愚公搬代码
2024/02/16
5410
软件测试复习
软件体系结构是软件系统的结构、行为和属性的高级抽象,给出系统的组织结构和拓扑结构,规定系统需求和构成系统的元素之间的对应关系。
千灵域
2022/06/17
4020
软件测试复习
软件工程之软件过程模型[通俗易懂]
使用增量模型,第1个增量往往是核心的产品。客户对每个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。增量模型强调每一个增量均发布一个可操作的产品。
全栈程序员站长
2022/11/15
1.8K0
软件工程之软件过程模型[通俗易懂]
开发模型的理解:瀑布模型/增量式/迭代/敏捷开发——笔记
既然所有的开发模型都具有相同的开发周期,那不同的开发模型的差别从哪里体现呢?或者说不同的开发模型在指导开发过程中的差异点在哪里?
周陆军博客
2023/03/18
5.3K0
软件开发流变史:从瀑布开发到敏捷开发再到DevOps
作为在20世纪70年代、80年代盛极一时的软件开发模型,瀑布模型通过制定计划、需求分析、软件设计、程序编写、软件测试、运行维护等6个流程将整个软件生命周期衔接起来。这6个流程有着严格的先后次序之分,只有当前面的流程结束之后,下一个流程才能开始运转。这种自上而下的流程像极了瀑布的下落,因此得名瀑布模型。
敏捷开发
2020/09/07
1.5K0
软件开发流变史:从瀑布开发到敏捷开发再到DevOps
【愚公系列】软考高级-架构设计师 072-软件过程模型(2)
软件过程模型是一种规划和组织软件开发过程的方法。你可以把它想象成是一张路线图,它帮助我们在软件开发的整个旅程中找到正确的方向。就像你在旅行前会查看地图一样,我们在开发软件前也会选择一个合适的过程模型,以确保我们按照一定的步骤和顺序来构建软件。
愚公搬代码
2024/07/27
2040
瀑布开发与敏捷开发的区别
敏捷开发,首先把客户最关注的软件原型先做出来,交付或者上线,在实际场景中去修改弥补需求中的不足,快速修改,再次发布版本。再次上线或者交付。通过一些敏捷实践方式,细化story,可以提供更小的迭代。如此循环,直到用户(客户)满意。适用于需求不明确的项目、创新性的项目或者需要抢占市场的项目。
风君子
2020/05/20
4.1K0
瀑布开发与敏捷开发的区别
【软件工程导论】从已考完期末的角度记录软导常考内容
二、快速原型模型 1.特点:快速构建可运行的软件模型,以便理解和澄清问题,进一步细化需求,在新获取需求基础上进行系统开发。 2.优点: (1)有助于满足用户的真实需求; (2)原型系统已经通过与用户的交互而得到验证,据此产生的规格说明文档能够正确地描述用户需求; (3)软件产品的开发基本上是按线性顺序进行; (4)因为规格说明文档正确地描述了用户需求,因此,在开发过程的后续阶段不会因为发现规格说明文档的错误而进行较大的返工; (5)开发人员通过建立原型系统已经学到了许多东西,因此,在设计和编码阶段发生错误的可能性也比较小,这自然减少了在后续阶段需要改正前面阶段所犯错误的可能性; (6) 快速原型的突出特点是“快速”。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。 3.缺点:快速建立的模型加上连续的修改可能造成产品质量低下。 4.适用场合:用户需求模糊不明的情况下。
平凡的人1
2023/10/15
5020
【软件工程导论】从已考完期末的角度记录软导常考内容
【愚公系列】软考中级-软件设计师 033-软件工程基础(考点简介)
软件工程基础是指软件工程的基本概念、原理、方法和技术等基础知识。在软件工程学科中,这些基础知识对于设计、开发、测试和维护高质量软件非常重要。
愚公搬代码
2024/02/14
3590
软件开发的生命周期
同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生存周期(软件生命周期)。把整个软件生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大,结构复杂和管理复杂的软件开发变的容易控制和管理。通常,软件生存周期包括可行性分析与开发项计划、需求分析、设计(概要设计和详细设计)、编码、测试、维护等活动,可以将这些活动以适当的方式分配到不同的阶段去完成。 软件生命周期(SDLC,软件生存周期)是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。但随着新的面向对象的设计方法和技术的成熟,软件生命周期设计方法的指导意义正在逐步减少。 软件生命周期(SDLC)的六个阶段 1、问题的定义及规划 此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。 2、需求分析 在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。"唯一不变的是变化本身。",同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。 3、软件设计 此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。 4、程序编码 此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。 5、软件测试 在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、组装测试以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。 6、运行维护 软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。
Hongten
2018/09/13
1.9K0
软考中级(软件设计师)——系统开发基础(11分以上)【主要考理论】
这几年比较流行,敏捷开发注重【沟通】,时时反馈,4大价值观,5大原则,12大最佳实践需要看一下。
红目香薰
2022/11/30
9310
软考中级(软件设计师)——系统开发基础(11分以上)【主要考理论】
「软件工程」什么是软件过程模型?
软件过程是用于指定、设计、实现和测试软件系统的一系列活动。软件过程模型是过程的抽象表示,它从某些特定的角度对过程进行描述。有许多不同的软件过程,但都涉及:
架构师研究会
2020/09/25
2K0
软件工程概述-架构师(三)
1、软件定义时期:包括 可行性研究和详细需求分析过程,任务是软件工程必需完成的目标,具有可行问题分析、可行性研究、需求分析等。
keying
2023/09/05
2650
软件工程概述-架构师(三)
推荐阅读
相关推荐
软件工程大题题库
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档