瀑布式开发、迭代开发、敏捷开发、XP与SCRUM的区别

瀑布式开发、迭代开发,区别【都属于,生命周期模型】



        两者都是一种开发模式,就像设计模式一样,考虑的角度不一样,个人感觉谈不到取代一说。

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

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

这两种开发模式都各自具有自己的特点,迭代式开发适合在一些需求信息不明确的项目中,这样在开发过程中遇到需求的变化时,所带来的影响要比瀑布式开发小。而现在的很多项目中,需求在项目进行中变化的事儿经常见,所以显得迭代式开发的优势更明显一些。

但是,从本质上来说,二者都不过是一种开发的模式,即使是迭代式开发,在每一个迭代的环节中,不也是此从需求到设计,从设计到编码,从编码到测试吗?这不也是瀑布式模型的体现吗?只不过这个瀑布式中的每一个阶段不需要做到最优化,都留一些任务到下一层迭代中去做而已。

所以,我觉得面对不同的问题采用不同的模式,模式是为了方便我们开发而服务的,不是要求我们必须按照某一种模式从头走到尾。

就象迭代式开发,我们其实也经常用到这种模式。比如说开发项目中的某一个模块。我们先把能够实现主要功能的代码写出来。比如一个查询模块,先从模块的构思到设计再到编码,先查询功能的代码,测试一遍查询成功。这算是完成了第一层迭代。然后我们要再考虑一层迭代中的一些还未完成的细节问题,比如查询的check,查询结果的显示以及查询算法的优化等等,这就是第二层迭代。

 

瀑布式开发,敏捷开发,区别【一种生命周期模型,项目管理方法集合】


瀑布模型的特点(传统的开发方式)

1、强调文档

前一个阶段的输出就是下一个阶段的输入,文档是个阶段衔接的唯一信息。所以很多开发人员好象是在开发文档,而不是开发软件,因为要到开发的后期才可以看到软件的“模样”。

2、没有迭代与反馈。瀑布模型对反馈没有涉及,所以对变化的客户需求非常不容易适应。瀑布就意味着没有回头路。

3、管理人员喜欢瀑布模型的原因是把文档理解为开发的速度,可以方便地界定不同阶段的里程碑。

敏捷开发

极限编程的思想体现了适应客户需求的快速变化,激发开发者的热情,也是目前敏捷开发思维的重要支持者。

敏捷软件开发是一个开发软件的管理新模式,用来替代以文件驱动开发的瀑布开发模式。

敏捷开发集成了新型开发模式的共同特点,它重点强调:

1.敏捷就是“快”。快才可以适应目前社会的快节奏,要快就要发挥个人的个性思维多一些个性思维的增多。

2.客户参与。以人为本,客户是软件的使用者,是业务理解的专家,没有客户的参与,开发者很难理解客户的真实需求。

3.强调软件开发的产品是软件,而不是文档。文档是为软件开发服务的,而不是开发的主体。

4.设计周密是为了最终软件的质量,但不表明设计比实现更重要。

5.迭代。软件的功能是客户的需求,界面的操作是客户的“感觉”。对迭代的强调是缩短了软件版本的周期。

6.小版本。快速功能的展现,看似简单,但对于复杂的客户需求合理地分割与总体上的统一,要很好地二者兼顾是不容易的。

迭代开发敏捷开发,区别【一种生命周期模型,项目管理方法集合】



        迭代开发是一种软件开发的生命周期模型,与其对应的还有瀑布模型、螺旋模型等等

敏捷开发是多种软件开发项目管理方法的集合,其中包括了XP、Scrum等十几种开发模式,这些开发方法有些共同点,比如重视响应变更,重视实现客户的价值,重视开发人员的自身发展等等,其核心体现在他们著名的四句原则中.这些开发方法基本都倾向于采用迭代的软件开发生命周期模型.

简单来说,迭代模型是敏捷开发普遍使用的软件生命周期模型,敏捷开发所包含的内容比迭代模型宽泛的多.

敏捷开发中,XP与SCRUM的区别


区别之一:  迭代长度的不同

XP的一个Sprint的迭代长度大致为1~2周, 而Scrum的迭代长度一般为 2~ 4周.

区别之二: 在迭代中, 是否允许修改需求

XP在一个迭代中,如果一个User Story(用户素材, 也就是一个需求)还没有实现, 则可以考虑用另外的需求将其替换, 替换的原则是需求实现的时间量是相等的。 而Scrum是不允许这样做的,一旦迭代开工会完毕, 任何需求都不允许添加进来,并有Scrum Master严格把关,不允许开发团队收到干扰

区别之三: 在迭代中,User Story是否严格按照优先级别来实现

XP是务必要遵守优先级别的。 但Scrum在这点做得很灵活, 可以不按照优先级别来做,Scrum这样处理的理由是: 如果优先问题的解决者,由于其它事情耽搁,不能认领任务,那么整个进度就耽误了。 另外一个原因是,如果按优先级排序的User Story #6和#10,虽然#6优先级高,但是如果#6的实现要依赖于#10,则不得不优先做#10.

区别之四:软件的实施过程中,是否采用严格的工程方法,保证进度或者质量

Scrum没有对软件的整个实施过程开出养个工程实践的处方。要求开发者自觉保证,但XP对整个流程方法定义非常严格,规定需要采用TDD, 自动测试, 结对编程,简单设计,重构等约束团队的行为。因此,原作者认为, 这点上,XP的做法值得认同的,但是却把敏捷带入了一个让人困惑的矛盾, 因为xp的理念,结合敏捷模式,表达给团队的信息是“你是一个完全自我管理的组织, 但你必须要实现TDD, 结对编程, ...等等”

不难发现,这四个区别显见的是: Scrum非常突出Self-Orgnization, XP注重强有力的工程实践约束

作者建议, 在管理模式上启用Scrum, 而在实践中,创造一个适合自己项目组的XP(“start with Scrum and then invent your own version of XP.”)

SCRUM介绍


回顾一下我所认识的scrum,算是对自己知识的一个梳理。
        scrum到底是什么,书中都说,它不是方法学,不是过程,而是一个框架。我并没有太理解这句话,所以先把scrum中都有些什么来说一下。

        时间:scrum把时间分成一个个的sprint,也就是迭代周期。这个周期以2-6个星期为宜,但目前使用的最多的,是一个月,即四个星期。

每一个sprint的开始和结束都会有一个会议,叫做sprint计划sprint演示,这很好理解,计划时计划做什么,演示时演示做完的东西。然后,并不是演示完了就完事的,sprint还有一个回顾会议,用来对这个sprint进行回顾,哪些做的好,哪些做的不好。这就是改进。

组成sprint的每天中,都会有每日例会,叫做每日站会,所以谓站会,即是时间非常短的会议,众所周知的,没完没了的会议总是让我们,厌倦不已。而这种站会,我想差不多是从这方面来考虑的。

人物:scrum中有scrum master, product owner和scrum团队。我理解scrum master就是project manager,而product owner就是product manager,团队还是那个团队,只是这里的团队,在规模上有一定的限制,它要求人员不要太多,不要太少,3-12个,通常4人团队比较多见,当然这个具体还得看实际情况来定。团队中开发测试人员比是1:1,即pair work。

        scrum中的需求,采用story的形式进行描述,整个产品的需求,被列成product backlog,而每一个迭代周期要做什么,是在每个sprint的计划会议上进行挑选的,根据po对backlog标记的优先级,团队对其进行estimate并挑选出这个sprint里能完成的story,scrum master把它们列入计划中。

backlog有一个用于统计的东西,叫做燃尽图。从字面理解,就是燃烧掉多少的图,即sprint backlog中的被完成了多少,每完成一个story,就燃烧掉一个story。产品backlog有产品燃尽图,sprint有sprint燃尽图。

以上基本就是我了解的一些scrum知识点,其中忽略了工具部分和工作开展方式部分。因为采用什么工具或采用什么方式来实现,我认为是根据实际情况来定的,而且,在每个sprint回顾会议中,这些东西都会被改进。使用excel或白板来记录story或backlog并不重要,重要的是,你是否有story或backlog。

所谓框架,是不是就是一种模式?真的很想理解这里的这个词。有知道的,请赐教。

时间: 2024-10-12 13:05:44

瀑布式开发、迭代开发、敏捷开发、XP与SCRUM的区别的相关文章

杨学明老师推出全新课程--《敏捷开发&IPD和敏捷开发结合的实践》

课时:13小时(2天) 敏捷开发&IPD和敏捷开发结合的实践 讲  师:杨学明 [课程背景] 集成产品开发(IPD).集成能力成熟度模型(CMMI).敏捷开发(Agile Development)是当前国内外企业产品研发管理的最常用的3种模式.随着创新环境的快速发展,许多企业都会面临这样的问题:如何快速响应市场的变化?如何推出更有竞争力的产品?如何在竞争中脱颖而出?……是大部分研发型企业普遍面临的核心问题.另外,软件项目在产品开发中位置越来越重要,逐渐占领主导地位,这时传统的IPD流程和CMMI

传统开发模型vs敏捷开发模型——过程模型的变革

一.概念框架 在了解一个新概念的时候,最好的方法就是把它插入到原有的概念体系中.在不仅有助于对概念的记忆,更利于深刻地认识概念的本质.精髓.下图说明了"敏捷开发"在软件工程理论体系中的位置. 为什么需要软件工程?很简单,为了让我们更好地生产软件.这里的"好"包含多重含义,有成本上的"好".维护上的"好"等等.但是我们知道,不可能坐着想"我要写好软件",然后就软件就能写好了.我们需要一套系统化.理论化.工程化

传统瀑布式&敏捷开发

---传统瀑布式 瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求.分析.设计.编码.测试的步骤顺序进行. 步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等. 瀑布式的主要的问题是它的严格分级导致的自由度降低,项目早期即作出承诺导致对后期需求的变化难以调整,代价高昂. 瀑布式方法在需求不明并且在项目进行过程中可能变化的情况下基本是不可行的. 有论文统计他是造成70%软件开发失败的原因. 大体分为这几个阶段:需求分析.设计.编码.测试.维护. ---敏捷开发 敏捷

20135231 JAVA实验报告三:敏捷开发与XP实践

---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如“查网络”.“问同学”.“看书”等一律得0分)以及分析(从中

实验三 敏捷开发与XP实践 实验报告

课程:Java程序设计实验   班级:1353  姓名:余佳源  学号:20135321 成绩:                           指导教师:娄嘉鹏      实验日期:2015.6.4 实验密级:无            预习程度:                   实验时间:15:30~18:00 仪器组次:  21                    必修/选修: 选修                  实验序号:3 实验名称:敏捷开发与XP实践 实验内容 1. XP

敏捷开发之需求迭代

迭代需求的整理是敏捷开发的第一步,也是敏捷开发很重要的一步,在这一步中我们需要把客户的业务需求按照优先级的顺序,整理成为一个个的迭代.然后把一个个的迭代拆成一个个可验收的故事卡. 在此需要说说什么是故事卡,故事卡和业务需求之间的关系.故事卡是一个个独立的,可验收的功能,一个业务需求可以拆分为多个故事卡.比如:我们常见的账号管理需求,需要对账号进行增.删,改.查.因为添加.修改.删除.查询都是一个个可单独验收的场景,我们可以把账号管理需求拆分为四个故事卡.因此把需求拆分为故事卡的原则是: 1.故事

[敏捷开发实践](1) 认识敏捷开发

[敏捷开发实践](1) 认识敏捷开发 1,提要 软件开发是一个系统工程,包括最初的可行性分析.再到设计.开发.测试.维护等整个生命周期.在这个过程中某些阶段的失误或说是变化,都可能增加整个软件项目的风险. 如何在保证效率的基础上还能安计划.保证质量的完成软件项目?于是产生了软件开发的一些方法,这个方法不是指具体有编码阶段的各种设计模式和技巧,而是在整个软件开发策略层面的方法. 传统瀑布模式和新型的敏捷开发就是其中最常用的方法,后面着重讨论敏捷开发的优缺点和敏捷开发的基础知识. 2,常用的开发模式

敏捷开发

学习内容: 敏捷开发 Agile Development 是一种软件开发流程,开发方法,能够知道我们按照规定的环节一步步的去完成项目的开发任务,主要驱动核心是人,采用的是迭代式的开发. 是相对于瀑布开发模式的缺点改进的一种开发模式,就是把一个大项目切分成多个子项目,然后分别开发.测试. 是以用户的需求变化为核心,采用迭代和循序渐进的方式进行软件开发. 四句开发宣言: 个体和互动  胜过     流程和工具 可用的软件    胜过     详尽的文档 客户合作 胜过     合同谈判 响应变化  

敏捷开发学习笔记-Agile development(AM)

以人为核心,迭代,循序渐进 项目被切分为多个子项目,每个子项目都经过测试,具备集成和可运行的特征 5个价值观:沟通.简单.反馈.勇气.谦逊 敏捷模型与瀑布模型的区别 相对于瀑布模型,提高开发效率和响应能力 瀑布模型以文档为驱动,敏捷开发只写必要的文档,尽量少写文档,注重人与人之间面对面的交流,强调以人为核心. Scrum '争球' 15-30天一个冲刺 提交一个增量(新特性) 产品需求(pruduct backlog)->优先级排序->选择需求->冲刺会议(需求评审)-> 冲刺过程