软件开发生命周期模型 瀑布模型、增量模型、原型模型、螺旋模型、喷泉模型总结

软件测试之【软件生命周期及开发模型】 0.简述软件生命周期(Software Development Life Cycle, SDLC)通常包括以下几个主要阶段:需求分析、系统设计、编码、测试、部署和维护。每个阶段都有其特定的目标、活动和输出成果。1 软件生命周期各阶段简述11。 阅读详情

 

在校期间学习过这些模型,现在来复习一下。

瀑布模型/改进的瀑布模型

 虽然瀑布模型仍然存在很多的问题有待解决,但瀑布模型仍然是最基本的和最效的一种可供选择的软件开发生命周期模型.瀑布模型要求软件开发严格按照需求->分析->设计->编码->测试的阶段进行,每一个阶段都可以定义明确的产出物和验证准则.瀑布模型在每一个阶段完成后都可以组织相关的评审和验证,只有在评审通过后才能够进入到下一个阶段.

 由于需要对每一个阶段进行验证,瀑布模型要求每一个阶段都有明确的文档产出,对于严格的瀑布模型每一个阶段都不应该重叠,而应该是在评审通过,相关的产出物都已经基线后才能够进入到下一个阶段.
 
 
 瀑布模型的优点仍然是可以保证整个软件产品较高的质量,保证缺陷能够提前的被发现和解决.采用瀑布模型可以保证系统在整体上的充分把握,使系统具备良好的扩展性和可维护性.但对于前期需求不明确,而又很难短时间明确清楚的项目则很难很好的利用瀑布模型.另外对于中小型的项目,需求设计和开发人员往往在项目开始后就会全部投入到项目中,而不是分阶段投入,因此采用瀑布模型会导致项目人力资源过多的闲置的情况,这也是必须要考虑的问题.

 很多人往往会以进度约束而不选择瀑布模型,这往往是一个错误的观点.导致这种情况的一个关键因素往往是概念需求阶段人力不足.因此在概念需求阶段人力能够得到充分保证的情况下,瀑布模型和迭代模型在开发周期上并不会存在太大的差别.反而是很多项目对于迭代或敏捷模型用不好,为了赶进度在前期需求不明确,没有经过一个总体的架构设计情况下就开始编码,后期出现大量的返工而严重影响进度.

架构设计是软件开发中一个重要的关注点.因此在RUP中也提及到软件开发要以架构为核心.因此在架构设计完成后系统会被分为相关的子系统和功能模块.每个功能模块间的接口都可以定义清楚.在这种情况下,当模块B的详细设计做完成后往往就没有必要等到其它模块的详细设计都要完全作完才开始编码,因此在架构设计完成后可以将系统分为多个模块并行开发,每个模块仍然遵循先设计和编码测试的瀑布模型思路.这是瀑布模型的一种最重要的改进思路,也可以说这是一种增量开发的模型.

当一个新系统的开发存在多个完全不相关的独立需求的功能开发的时候,这个时候也可以选择将整个开发过程按独立的需求来分为多个小瀑布进行操作.这种方式的最大问题就是没有一个完全总体的设计,架构设计人员无法在洞悉了所有需求后从系统的可扩展性,复用等方面总体规划.

 在项目管理中有一种压缩进度的方法叫赶工,因此瀑布模型的另外改进处就在适当的重叠各个阶段过程,达到资源的有效利用.比如我们通过讨论,会议确定的实现方式就可以开始执导下一个阶段的工作而不一定完全等到相关的交付物文档化出来.

螺旋模型

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

螺旋模型的每一次迭代都包含了以下六个步骤
  1.决定目标,替代方案和约束
  2.识别和解决项目的风险
  3.评估技术方案和替代解决方案
  4.开发本次迭代的交付物和验证迭代产出的正确性.
  5.计划下一次迭代
  6.提交下一次迭代的步骤和方案.

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

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

 螺旋模型的每一次迭代只包含了瀑布模型的某一个或两个阶段.如第二次迭代重点是需求,第三次迭代是总体设计和后续设计开发计划等.因此这是和RUP提倡的迭代模型是有区别的,RUP的每一次迭代都会包含需求,设计,开发和测试等各个阶段的活动.RUP迭代的目的在于逐步求精而不是仅仅完成瀑布模型某一阶段的工作.

 

增量和迭代模型

 增量迭代是RUP统一过程常采用的软件开发生命周期模型.增量和迭代有区别但两者又经常一起使用.所以这里要先解释下增量和迭代的概念.假设现在要开发A,B,C,D四个大的业务功能,每个功能都需要开发两周的时间.则对于增量方法而言可以将四个功能分为两次增量来完成,第一个增量完成A,B功能,第二次增量完成C,D功能;而对于迭代开发来将则是分两次迭代来开发,第一次迭代完成A,B,C,D四个基本业务功能但不含复杂的业务逻辑,而第二个功能再逐渐细化补充完整相关的业务逻辑.在第一个月过去后采用增量开始时候A,B全部开发完成而C,D还一点都没有动;而采用迭代开发的时候A,B,C,D四个的基础功能都已经完成.

RUP强调的每次迭代都包含了需求,设计和开发,测试等各个过程,而且每次迭代完成后都是一个可以交付的原型.迭代不是并行,在每次迭代过程中仍然要遵循需求->设计->开发的瀑布过程.迭代周期的长度跟项目的周期和规模有很大的关系.小型项目可以一周一次迭代,而对于大型项目则可以2-4周一次迭代.如果项目没有一个很好的架构师,很难规划出每次迭代的内容和要到达的目标,验证相关的交付和产出.因此迭代模型虽然能够很好的满足与用户的交付,需求的变化,但确是一个很难真正用好的模型.
 

就对风险的消除上,增量和迭代模型都能够很好的控制前期的风险并解决.但迭代模型在这方面更有优势.迭代模型更多的可以从总体方面去系统的思考问题,从最早就可以给出相对完善的框架或原型,后期的每次迭代都是针对上次迭代的逐步精化.

 业界比较标准的增量模型往往要求在软件需求规格说明书全部出来后后续的设计开发再进行增量.同时每个增量也可以是独立发布的小版本.由于系统的总体设计往往对一个系统的架构和可扩展性有重大的影响,因此我们推荐的增量最好是在架构设计完成后再开始进行增量,这样可以更好的保证系统的健壮性和可扩展性.

 原型法

 原型一般都不是单独采用的一种生命周期模型,往往会结合瀑布和增量迭代等方法一起使用.对于螺旋模型就可以理解为瀑布+迭代+原型+风险的一种生命周期模型.对于迭代开发来讲,每一个迭代周期的产出都可以看做是下个阶段要精化的原型.而对于瀑布模型开发来讲,我们在需求阶段也可以进行界面和操作建模,形成DEMO后和用户做进一部的需求沟通和确认.

 当你的用户没有信息系统的使用经验,你的系统分析员也没有过多的需求分析和挖掘经验的时候,需求分析和调研过程则更需要是一个启发式的过程.而原型则是这种很好的启发式方法,可以快速的挖掘用户需求并达成需求理解上的一致.否则即使双方都签字认可的需求往往仍然不是客户真正想要的东西.

 原型可以分为抛弃型的和不抛弃型的.如果原型仅仅是需求阶段方面和用户沟通画的DEMO,则这种原型一般都建议抛弃掉.而对于迭代开发来将,每次迭代的产出都是可以独立运行和包含基础功能的系统,是后续细化的基础,这类原型一般都不建议抛弃,后期的设计开发也要基于该原型逐渐的进行完善.

 快速和敏捷开发

 我们一般将快速和敏捷开发做为方法论,而很少将其做为一种软件开发生命周期模型.敏捷的目的是减少繁重和不必要的工件的输出,提高效率.而不是要我们去挑阶段或过程,不是分析设计都还没有做就去做开发.因此对于瀑布,增量迭代或原型我们都可以借鉴敏捷方法论中的一些好的实践,这些实践都是对传统的生命周期模型很好的补充.对于敏捷方法论在此不再做过多的叙述.

关于选择生命周期模型的最后的总结

  1.在前期需求明确的情况下尽量采用瀑布模型或改进型的瀑布模型.
  2.在用户无信息系统使用经验,需求分析人员技能不足情况下一定要借助原型.
  3.在不确定性因素很多,很多东西前面无法计划情况下尽量采用增量迭代和螺旋模型
  4.在需求不稳定情况下尽量采用增量迭代模型
  5.在资金和成本无法一次到位情况下可以采用增量模型,软件产品分多个版本进行发布
  6.对于完全多个独立功能开发可以在需求阶段就分功能并行,但每个功能内都应该遵循瀑布模型
  7.对于全新系统的开发必须在总体设计完成后再开始增量或并行.
  8.对于编码人员经验较少情况下建议不要采用敏捷或迭代等生命周期模型.
  9.增量,迭代和原型可以综合使用,但每一次增量或迭代都必须有明确的交付和出口准则。

    转载自 http://blog.youkuaiyun.com/waj89757/article/details/7984134

相关 文章:

http://wiki.mbalib.com/wiki/%E5%96%B7%E6%B3%89%E6%A8%A1%E5%9E%8B

http://blog.youkuaiyun.com/ziwen00/article/details/40583107

瀑布模型 vs 增量模型 vs 原型模型:5种主流开发模型适用场景与风险对比 本文深入对比瀑布模型、增量模型和原型模型等5种主流开发模型的适用场景与风险。通过核心特征解析、五维对比框架和实用决策树,帮助技术决策者根据项目需求稳定性、风险管控等关键因素选择最佳开发模型,并探讨混合模式创新实践与新兴趋势。 阅读详情

相关推荐

手把手教你用Logisim搞定华科计组实验:单总线CPU硬布线控制器设计(含Excel自动生成电路技巧)

本文详细解析了如何使用Logisim完成华科计组实验中的单总线CPU硬布线控制器设计,特别分享了利用Excel自动生成电路逻辑的高效技巧。从实验准备、状态机表格填写到模块化构建和系统联调,提供全流程实战指导,帮助读者快速掌握计算机组成原理核心概念,大幅提升实验效率。

weixin_28744423的博客 321

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

瀑布模型/改进的瀑布模型 虽然瀑布模型仍然存在很多的问题有待解决,但瀑布模型仍然是最基本的和最效的一种可供选择的软件开发生命周期模型.瀑布模型要求软件开发严格按照需求->分析->设计->编码->测试的阶段进行,每一个阶段都可以定义明确的产出物和验证准则.瀑布模型在每一个阶段完成后都可以组织相关的评审和验证,只有在评审通过后才能够进入到下一个阶段. 由于需要对每一个阶段进行验证,瀑布

zichouxing的专栏 1129

ptrade从零开始学量化第1期【ptrade如何新建策略、新建回测、新建交易】什么是ptrade量化交易?

回测之前需要对开始时间、结束时间、回测资金、回测基准、回测频率几个要素进行设定,设定完毕后点击保存。然后再点击回测按键,系统就会开始运行回测,回测的评价指标、收益曲线、日志都会在界面中展现。可以选择不同的业务类型(比如股票),然后给策略设定一个名称,添加成功后可以在默认策略模板基础上进行策略编写。交易界面点击新增按键进行新增交易操作,策略方案中的对象为所有策略列表中的策略,给本次交易设定名称并点击确定后系统就开始运行交易了。交易开始运行后,可以点击交易详情,查看策略评价指标、交易明细、持仓明细、交易日志。

GJ57017_wx的博客 2483

软件工程学习笔记2——瀑布模型及其衍生模型

开发模型有很多,要记住所有的开发模型很难。但搞透了瀑布模型,搞清楚了其阶段划分,结合一些应用场景,就可以举一反三,了解绝大部分衍生模型了。

qq_44778824的博客 3342

VM下安装linux虚拟机(ubuntu)和Intel parallel XE 2013(ifort2013)

VM下安装ubuntu和ifort2013跑自己的模式 由于新冠疫情,本人只能在家工作,很多重要的文件和程序都留在了办公室的linux机器上,工作无法正常开展。本来准备去办公室把机器搬回家不曾想学校所有门禁都关闭,不许进入,何时解禁也没有明确日期。科研不能等人,没条件科研只能想办法创造条件了。 以前在自己的笔记本(windows)上装过一次VM和ifort但无奈程序不能正常跑,所以之前就放弃了。本...

pangdahai3366的博客 1498

systermverilog中for循环中的fork join执行情况分析

仅为本人学习记录,如有错误感谢指正!

qq_63807221的博客 1461

7、瀑布模型、快速原型模型、螺旋模型

软件开发过程模型 在软件开发的几十年实践中,人们总结了很多软件开发模型用来描述和表示一个复杂的开发过程,如: 软件测试与软件的开发模式有着紧密的联系,作为一名测试人员,应该充分理解软件的开发模式,以便找准自己在其中的位置,从而发挥自身的价值。瀑布模型 1、是线性模型的一种,在所有模型中占有重要地位,是所有其他模型的一个基础。2、每一个阶段执行一次,按线性顺序进行软件开发。测试的切入点...

weixin_33696822的博客 589

V.PhyloMaker实战:从物种列表到维管束植物系统发育树的完整流程

本文详细介绍了使用V.PhyloMaker工具包,从物种列表快速构建维管束植物系统发育树的完整实战流程。内容涵盖R包安装、物种名标准化、核心函数phylo.maker的三种构建方案选择、结果树的可视化与导出,以及与picante包的联动分析,为生态学和生物地理学研究提供了高效解决方案。

weixin_29057237的博客 375

IT人应该知道的软件过程中5个模型

原文大部分内容来自https://blog.youkuaiyun.com/zjuwxx/article/details/97252039(感谢博主)同时加入了第5点 喷泉模型 一 瀑布模型 1.1 什么是瀑布模型 1970年温斯顿.罗伊斯提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被广泛采用的软件开发模型 瀑布模型将软件生...

永生只是一场幻梦 5581

Matcap与菲涅尔

菲尼尔效果(简化版公式):fresnel = base + scale*((1-v*n)^power)透明队列为后前渲染,不关闭深度写入则会覆盖之前的像素,导致混合不了。y的值为0~1,根据x3返回对应y值。两色混合做个demo看看!混合为什么要关闭深度写入?

weixin_62773441的博客 371

TYPE-C PD协议实战:如何用LDR6028芯片实现边充电边OTG(附完整电路设计)

本文详细解析了如何利用LDR6028芯片实现TYPE-C接口在PD协议下的边充电边OTG功能。通过剖析PD协议双角色协商的核心挑战,提供了完整的硬件电路设计要点,包括Type-C接口配置、电源路径管理及系统框架,并附有调试实战指南,助力开发者构建稳定可靠的一线多用解决方案。

c6d7e8f9g的博客 1126

软件开发模式:瀑布、敏捷、DevOps

DevOps持续交付的八大原则对可运维性给出了这样的定义,在企业中研发和运维体系必然需要相互配合,开发团队负责功能性需求实现的同时,在架构和编码上注重非功能性需求的实现,测试团队与运维团队将围绕着各自职能的需求,规划与建设DevOps流水线中对应的工具系统,加速企业IT价值链的流转,以为企业创造更大的商业价值。持续部署是持续交付的下一步,在持续交付的基础上,由开发人员或运维人员自助式的定期向生产环境部署稳定的构建版本,持续部署的目标是代码在任何时刻都是可部署的,并可自动进入到生产环境。

微软Dynamics 365 CRM,Power Apps,Power Platform技术和技能培训 5071

机器学习实战26-一种基于LightGBM的股市涨跌预测系统与代码实现过程

在全球经济一体化的背景下,股市作为经济活动的晴雨表,其波动与预测对于投资者、金融机构乃至国家政策制定者而言至关重要。随着金融市场的日益复杂化与信息量的爆炸式增长,股市分析不再仅限于基本面和技术面的传统研究,而是迫切需要更加精准、高效及智能化的方法来捕捉市场动态,以辅助决策制定。模型评估是确保LightGBM股市预测系统准确性和稳定性不可或缺的一环。通过综合运用多种评估指标、科学的验证方法以及深入的性能分析,我们不仅能够全面理解模型的能力和限制,还能为持续优化模型、提升预测准确性奠定坚实基础。

微学AI的博客 2327

软件开发过程

软件开发过程软件开发生命周期软件过程模型本课小结: 软件开发生命周期 软件从功能确定、设计到开发成功投入使用,并在使用中不断地修改、增补和完善, 直到被新的需要所代替而停止使用该软件的全过程。 1.问题定义阶段:明确要解决的问题是什么? 2.可性行研究阶段:明确做不做? 用最小的代价在尽可能短的时间内从经济、技术、社会因素等方面论证解决方案 的可行性。 3.需求分析阶段: 明确做什么? 4...

万事胜意 3082

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【中级软考】软件开发生命周期模型 瀑布模型、增量模型、原型模型、螺旋模型、喷泉模型、RUP(Rational Unified Process 统一软件开发过程)、敏捷开发(开发方法,不是周期模型)

文章目录瀑布模型/改进的瀑布模型螺旋模型增量和迭代模型原型法快速和敏捷开发关于选择生命周期模型的最后的总结 瀑布模型/改进的瀑布模型 虽然瀑布模型仍然存在很多的问题有待解决,但瀑布模型仍然是最基本的和最效的一种可供选择的软件开发生命周期模型.瀑布模型要求软件开发严格按照需求 ->分析->设计->编码->测试的阶段进行,每一个阶段都可以定义明确的产出物和验证准则.瀑布模型在每...

Dontla的博客 5339

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

软件开发生命周期模型 瀑布模型、增量模型、原型模型、螺旋模型、喷泉模型总结...

  在校期间学习过这些模型,现在来复习一下。 瀑布模型/改进的瀑布模型  虽然瀑布模型仍然存在很多的问题有待解决,但瀑布模型仍然是最基本的和最效的一种可供选择的软件开发生命周期模型.瀑布模型要求软件开发严格按照需求 ->分析->设计->编码->测试的阶段进行,每一个阶段都可以定义明确的产出物和验证准则.瀑布模型在每一个阶段完成后都可以 组织相关的评审和验证,只...

weixin_33859504的博客 270

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

软件工程复习(1-3)章

软件工程复习 1-3章 1、软件工程概述 定义: 将系统的、规范的、可度量工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。 基本要素: 方法、工具和过程。 软件危机 1、 软件危机的表现: (1)对于软件开发成本和进度的估计很不准确 (2)开发的软件产品不能完全满足用户要求,用户对已完成的软件系统挺满意的现象常常发生。 (3)开发的软件可靠性差 (4)软件没有适当的文档资料 (5)软件的可维护性差 (6)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势 2、软件危机的原因 软件的

qq_44863850的博客 202

开发模型

11.01 瀑布模型 1--瀑布模型是结构化当中的模型,一般用于结构化开发 2--瀑布模型只适用于需求明确的模型,对于需求不明确的模型千万不要使用瀑布模型 11.02 原型模型、演化模型、增量模型 原型与瀑布模型相当互补 原型法只适用于需求阶段---原型会构建一个简易的系统 增量模型前两个月先做一块(重要的),给用户使用发现问题,接着两个月又开发其他模块,系统越来越...

shujuku____的博客 419

中级职称软考设计师笔记之【软件开发工程】

软件开发模型 瀑布模型(SDLC) 原型模型(演化模型) 增量模型与螺旋模型 V模型 喷泉模型与RAD(V模型) 构件组装模型(CBSD) 统一过程模型(UP) 软件开发方法 软件开发方法——敏捷开发方法 软件开发方法——信息系统开发方法 需求开发 结构化设计 结构化设计——内聚与耦合 结构化设计——系统结构 / 模块结构 软件测试 测试原则与类型 测试用例设计 测试阶段 McCabe复杂度 系统运行与维护 软件过程改进(软件成熟度模型CMMI) 项目管理 风险管理

Vin Cente 482

软件开发传统模型——瀑布模型、原型模型、增量模型、螺旋模型、喷泉模型

**瀑布模型,原型模型,增量模型,螺旋模型,喷泉模型**,在实际项目中,通常数个模型方法共同使用

weixin_43417682的博客 3万+

软件开发模型

软件过程是软件生命周期中的一系列相关活动,即用于开发和维护软件及相关产品的一系列活动。 软件过程模型可以帮助开发团队理解开发过程,形成对开发中的活动、资源和约束的共同理解,可以根据具体情况对一个过程进行裁翦等。 瀑布模型 瀑布模型最早由Royce提出,该模型因过程排列酷似瀑布而得名。 该模型是文档驱动的,该模型适用于项目开始时需求已确定的情况。瀑布模型主要应用于结构化的软件开...

ajq1979的博客 169

【系统架构设计师】-软件开发方法

与瀑布模型相反,原型针对的就是需求不明确的情况,首先快速构建一个功能模型,演示给用户看,并按要求及时修改,中间再通过不断的演示与用户沟通,最终设计出项目,就不会出现与用户要求不符合的情况,采用的是迭代的思想,不适合超大型项目的开发。在RAD模型中,也采用了基于构件的开发方法,利用已有的程序结构或使用构件进行复用,以提高开发进度和效率。总的来说,快速应用开发模型通过基于构件的开发方法和CASE工具的使用,能够快速构建可运行的软件原型,然后逐步完善和优化,以适应需求的变化并提高开发效率。

weixin_42163707的博客 1215

软件工程之过程模型

如同任何事物都有一个发生、发展、成熟,直至衰亡的全过程一样,软件系统或软件产品 也有一个定义、开发、运行维护,直至被淘汰这样的全过程,我们把软件将要经历的这个全过 程称为软件的生命周期。 为了使软件生命周期中的各项任务能够有序地按照规程进行,需要一定的工作模型对各项 任务给以规程约束,这样的工作模型被称为软件过程模型,或软件生命周期模型。它是一个有 关项...

weixin_34128501的博客 533
上一篇: maven依赖关系中Scope的作用
下一篇: SVN版本冲突,遇到<<<<<<< .mine,=======,>>>>>>>.r37242怎么解决?
elementf
博客等级 码龄14年 30粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值