`
xidajiancun
  • 浏览: 454447 次
文章分类
社区版块
存档分类
最新评论

软件开发模式对比(瀑布、迭代、螺旋、敏捷)

 
阅读更多
1、瀑布模型是由W.W.Royce在1970年最初提出的软件开发模型, 瀑布式开发是一种老旧的计算机软件开发方法。
瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤顺序进行。
步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等。

瀑布式的主要的问题是它的严格分级导致的自由度降低,项目早期即作出承诺导致对后期需求的变化难以调整,
代价高昂。瀑布式方法在需求不明并且在项目进行过程中可能变化的情况下基本是不可行的。


2、迭代式开发也被称作迭代增量式开发或迭代进化式开发,是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率。
什么是迭代式开发?
每次只设计和实现这个产品的一部分,
逐步逐步完成的方法叫迭代开发,
每次设计和实现一个阶段叫做一个迭代.

在迭代式开发方法中,整个开发工作被组织为一系列的短小的、
固定长度(如3周)的小项目,被称为一系列的迭代。
每一次迭代都包括了需求分析、设计、实现与测试。
采用这种方法,开发工作可以在需求被完整地确定之前启动,
并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作。
再通过客户的反馈来细化需求,并开始新一轮的迭代。

迭代式开发的优点:
  1、降低风险
  2、得到早期用户反馈
  3、持续的测试和集成
  4、使用变更
  5、提高复用性



螺旋开发,1988年,巴利·玻姆(Barry Boehm)正式发表了软件系统开发的“螺旋模型”,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。
“螺旋模型”刚开始规模很小,当项目被定义得更好、更稳定时,逐渐展开。

  “螺旋模型”的核心就在于您不需要在刚开始的时候就把所有事情都定义的清清楚楚。您轻松上阵,定义最重要的功能,实现它,然后听取客户的意见,之后再进入到下一个阶段。如此不断轮回重复,直到得到您满意的最终产品。
(1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;

  (2)风险分析:分析评估所选方案,考虑如何识别和消除风险;

  (3)实施工程:实施软件开发和验证;

  (4)客户评估:评价开发工作,提出修正建议,制定下一步计划。
螺旋模型很大程度上是一种风险驱动的方法体系,因为在每个阶段之前及经常发生的循环之前,都必须首先进行风险评估。


 



敏捷软件开发又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。

人和交互 重于过程和工具。可以工作的软件 重于求全而完备的文档。客户协作重于合同谈判。随时应对变化重于循规蹈矩。

其中位于右边的内容虽然也有其价值,但是左边的内容最为重要。
人员彼此信任 人少但是精干 可以面对面的沟通

项目的敏捷开发:
敏捷开发小组主要的工作方式可以归纳为:作为一个整体工作; 按短迭代周期工作; 每次迭代交付一些成果;
关注业务优先级; 检查与调整。

最重要的因素恐怕是项目的规模。规模增长,面对面的沟通就愈加困难,
因此敏捷方法更适用于较小的队伍,40、30、20、10人或者更少。
大规模的敏捷软件开发尚处于积极研究的领域。




四者对比区别:

传统的瀑布式开发,也就是从需求到设计,从设计到编码,从编码到测试,从测试到提交大概这样的流程,要求每一个开发阶段都要做到最好。
特别是前期阶段,设计的越完美,提交后的成本损失就越少。

迭代式开发,不要求每一个阶段的任务做的都是最完美的,而是明明知道还有很多不足的地方,却偏偏不去完善它,而是把主要功能先搭建起来为目的,以最短的时间,
最少的损失先完成一个“不完美的成果物”直至提交。然后再通过客户或用户的反馈信息,在这个“不完美的成果物”上逐步进行完善。

螺旋开发,很大程度上是一种风险驱动的方法体系,因为在每个阶段之前及经常发生的循环之前,都必须首先进行风险评估。

敏捷开发,相比迭代式开发两者都强调在较短的开发周期提交软件,但是,敏捷开发的周期可能更短,并且更加强调队伍中的高度协作。
敏捷方法有时候被误认为是无计划性和纪律性的方法,实际上更确切的说法是敏捷方法强调适应性而非预见性。

适应性的方法集中在快速适应现实的变化。当项目的需求起了变化,团队应该迅速适应。这个团队可能很难确切描述未来将会如何变化.



如果你没有条件能与客户时常沟通建议采用瀑布模型
1.需求分析
1.1 需求采集 粗粒度的收集材料
1.2 需求细化
1.2.1 菜单确认 确认软件应有的菜单,功能等软件先范围信息.
1.2.2 流程确认 确认软件中有那工作流,重点绘制流程图.
1.2.3 功能确认 确认每一个功能点的具体需求.
2.软件设计
2.1 ER设计
2.2 原型设计
3.编码实现
4.单元测试 研发人员自测
4.1 结对测试
4.2 用例测试
5.集成测试
5.1 通盘业务测试
5.1 边界测试
5.2 压力测试
5.3 数据接口测试
6.出厂评审 项目经理,研发经理,测试经理会签.
7.软件实施
7.1 业务数据维护
7.2 培训
7.3 操作手册编写
8.软件验收
8.1 验收报告
8.2 项目总结
如果你有较好(有定期的碰头会,和阶段性里程碑会议)的条件与客户沟通建议采用迭代模型
把瀑布模型中的1-7变为3周左右的循环进行迭代推进,最好完成8
如果你有非常好的条件(有关键用户和软件团队一起工作)和用户沟通那请使用敏捷开发模型

人和交互 重于过程和工具。
可以工作的软件 重于求全而完备的文档。
客户协作重于合同谈判。
随时应对变化重于循规蹈矩。

分享到:
评论

相关推荐

    对比十几种软件开发模型 传统模型(瀑布模型,演化模型,螺旋模型,喷泉模型),敏捷开发,极限编程XP.zip

    对比十几种软件开发模型 瀑布模型 演化模型 螺旋模型 喷泉模型 快速原型模型 智能模型 混合模型 敏捷开发 极限编程XP

    从瀑布型开发到迭代型

    从瀑布型开发到迭代型开发的转变,很经典的论述。

    告别瀑布拥抱敏捷

    告别瀑布拥抱敏捷,敏捷开发,开发模式,新的开发方式

    敏捷开发模式.xls

    通俗易懂的解释了什么是敏捷开发模式!敏捷开发带来的好处和优点!传统的瀑布开发模式有哪些弊端,敏捷开发模式和瀑布开发模式的比较和不同!

    【软件测试003】软件开发(瀑布、快速原型、螺旋、敏捷开发)与测试(V、W、H)模型.pdf

    随后,您将了解到快速原型模型、螺旋模型以及近年来备受推崇的敏捷开发模型,包括Scrum框架的详细解读。这些模型各具特色,适应不同的项目需求,让您在软件开发过程中有更多选择。 进入软件测试模型的章节,您将...

    30天软件开发:告别瀑布拥抱敏捷 英文原版PDF(Software in 30 days)

    30天软件开发:告别瀑布拥抱敏捷 Software in 30 days: how agile managers beat the odds, delight their customers, and leave competitors in the dust

    30天软件开发 : 告别瀑布拥抱敏捷(En)

    英文---- 本书讲解了Scrum 敏捷软件开发方法,让你在30 天内开发出全新的软件。读完本书,你会发现用敏捷开发方法能够让软件开发事半功倍,节省人力物力,大大提高工作效率。

    敏捷软件开发与传统软件开发的对比分析1

    2、迭代式开发迭代式开发也被称为迭代增量式开发或迭代进化式开发,是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和

    软件工程-软件开发模型比较分析.doc

    软件工程-软件开发模型比较分析 1.2 ... 本节将简单地比较并分析瀑布模型、螺旋模型和变换模型等软件开发模型。 1.2.1 瀑布模型 瀑布模型即生存周期模型,其核心思想是按工序将问题化简,将功能的实现与设计分 开,便于

    瀑布模式与敏捷开发.pptx

    从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈;...可在迭代模型中应用瀑布模型,并且它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。

    敏捷开发-快速迭代

    借鉴敏捷开发模式,来改善软件开发过程,提高项目的开发效率。要想借鉴,首先得弄懂以下3个问题。百度百科中是这样解释的:敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切...

    软件开发模型-瀑布模型

    瀑布模型,还有其他模型的介绍,内容不多,所以就没有什么资源分了,但是里面有一个相关的连接,可能帮助会比较大。

    敏捷与瀑布

    敏捷与瀑布,不同类型的开发模式,摘抄自网络

    敏捷开发知识总结

    敏捷软件开发是一个开发软件的管理新模式,用来替代以文件驱动开发的瀑布开发模式。   敏捷开发集成了新型开发模式的共同特点,它重点强调: 1.敏捷就是“快”。快才可以适应目前社会的快节奏,要快就要发挥个人的...

    Scrum敏捷软件开发过程

    Scrum敏捷软件开发过程 敏捷软件开发是软件项目的一个概念框架. 有许多建立在敏捷概念上的方法,如 Scrum 和 Extreme Programming (XP). 与僵化的、重量级的、...最大限度地降低短期固定时间的迭代式软件的开发风险.

    大话软件项目管理之软件开发模式

    常用的软件开发模型有哪些? 为什么有这么多的软件开发模型? 它们之间的区别在哪里? 它们分别适合什么类型的项目?

    软件项目管理:从瀑布到敏捷.pdf

    讲述项目管理的定义、特定和过程,以及从瀑布到敏捷的过程。 项目是一个独特的任务或是系统化的流程;项目的目的是创造新的产品或服务,完成产 品或者服务的交付。...软件项目有其特点,并由瀑布发展到敏捷。

    敏捷软件开发

    1.1.2.1. 敏捷软件开发和瀑布式开发 说到敏捷软件开发,就不得不提瀑布式开发。 瀑布式开发倾向于制定详实的计划,然后尽可能遵循计划实施。在瀑布式开发中,一般认为计划得越准确越好。 原因之一是为了减少返工,...

    从瀑布型开发到迭代型开发的转变.pdf

    从瀑布型开发到迭代型开发的转变.pdf

Global site tag (gtag.js) - Google Analytics