知识分享-敏捷开发方法课件_第1页
知识分享-敏捷开发方法课件_第2页
知识分享-敏捷开发方法课件_第3页
知识分享-敏捷开发方法课件_第4页
知识分享-敏捷开发方法课件_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

知识分享:敏捷开发方法知识分享:敏捷开发方法1目录/Catalog敏捷开发简介敏捷开发方法敏捷开发的注意事项目录/Catalog敏捷开发简介2ITCraftsmanship关注:技术编程和技术管理能力孤军作战,没有协作零星、偶发的自动化与革新ItIndustrialization关注:流程IT管理与服务管理能力以同事为客户,没有对外协作有效率的服务与解决方案ItDigitalization关注:业务模式强调数字化领导力以同事为合作伙伴,参与对外协作数字化商业创新、新型价值IT系统开发演变的三个时代ITCraftsmanship关注:技术ItIndust3敏捷概念的提出项目为什么失败?软件工程试图解决这些问题:对用户需求理解得不清楚,甚至有错误;用户需求变化;软件很难维护或扩展;在项目后期阶段发现很严重的设计缺陷;软件质量或性能不合格;Test-Build-Release过程的可操作性、可维护性很差;人员流动;

……为了规范化开发过程,引进传统工程的概念(瀑布型);为了理解需求,提出原型法;为了提高设计开发的效率和扩展性,提出重用和面向对象等思想;为了让开发过程更灵活,提出了开发框架的概念;为了降低风险,提出了风险评估、成本控制和增量开发等思想;敏捷概念的提出项目为什么失败?软件工程试图解决这些问题:对用4如何走出困境?当我们面临速度、创新或面临诸多不确定因素瀑布式开发熟知的供应商强大的管理模式最小化的风险技术化团队敏捷式开发规模小但有创新精神的合作伙伴轻装有效的管理模式管控可控的风险更强大团队传统开发模式非线性模式可靠性目标灵活性依据结果定价价值收益、品牌、客户体验以计划为导向、基于审批的管理以经验为导向、基于流程的企业供应商

长期交易采购小型、新型供应商

短期采购擅长传统流程和项目才能擅长新型和未知项目长期的(月)周期短期的(天/周)如何走出困境?当我们面临速度、创新或面临诸多不确定因素瀑布式5敏捷开发(AgileDevelopment)是一种以人为核心、迭代、循序渐进的开发方法。子项目特征-

各个子项目的成果都经过测试-

具备集成和可运行的特征-

小项目相互联系在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。简言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。敏捷开发(AgileDevelopment)是一种以人为核6双模式可以用来开发不同的应用系统变化change管理Governance-++-创新型系统差异型系统记录型系统SystemsofInnovationSystemsofDifferentiationSystemsofRecord传统模式敏捷模式双模式可以用来开发不同的应用系统变化change管理Gove7目录/Catalog敏捷开发简介敏捷开发方法敏捷开发的注意事项目录/Catalog敏捷开发简介8敏捷方法XP-eXtremePrograming极限编程:思想源自KentBeck和WardCunningham在软件项目中的合作经历。SCRUM:是一种迭代的增量化过程,用于产品开发或工作管理。水晶方法Crystal:由AlistairCockburn在1990年代末提出。把不同类型的项目采用不同的方法。FDD-特性驱动FeatureDrivenDevelopment,由PeterCoad、JeffdeLuca、EricLefebvre共同开发,是一套针对中小型软件开发项目的开发模式。它强调的是简化、实用、易于被开发团队接受,适用于需求经常变动的项目。DSDM-DynamicSystemDevelopmentMethodology,它倡导以业务为核心,快速而有效地进行系统开发,在英国等欧洲国家比较流行。ASD-AdaptiveSoftwareDevelopment,由JimHighsmith在1999年正式提出。ASD强调开发方法的适应性(Adaptive)敏捷方法XP-eXtremePrograming极限编程9XP方法极限的含义:软件开发中的优点发挥到极致(KentBeck).XP:给程序员提供了明确的方法,使得程序员尽管面对需求的改变,却能够从容应对,即使着重变化发生在项目的后期,仍然能够编出代码。XP核心:沟通、简明、反馈和勇气XP重视沟通,客户、开发人员、管理者共同组成团队。ExtremeProgrammingXP方法极限的含义:软件开发中的优点发挥到极致(KentB10XP的关键实践结对编程测试驱动开发重构简单设计代码集体所有编码标准稳定高速的步伐持续集成隐喻现场客户完整的团队小规模发布计划游戏编程方法小组实践交付和管理XP的关键实践结对编程测试驱动开发重构简单设计代码集体所有编11XP特点1——完整的团队所有的小组成员应在同一个工作地点工作。成员中必须有一个用户代表(On-siteUser),由他/她来提出需求,确定开发优先级,把握开发的动向。通常还设一个教练(Coach)角色,来指导XP方法的实施及与外部的沟通协调等。小组每个成员都应围绕用户代表,充分贡献自己的技能。XP特点2——计划游戏XP特点1——完整的团队所有的小组成员应在同一个工作地点工作12XP特点3——现场客户客户是Team成员,在开发现场和开发人员一起工作。传统的客户任务一般是讲解需求,运行验收测试,接收发布的系统。XP新增加的任务:

(1)写UserStory(2)评估UserStory的商业优先级

(3)为每个UserStory定义验收测试

(4)计划开发内容

(5)调控开发过程

(6)建立商业模型,把隐藏在客户需求下的原则传授给开发人员

(8)程序员分担任务的过程支解了对他们商业模型的理解

(9)参加设计过程

(10)和程序员一起找出Metaphor,导引设计方向

(11)在Metaphor的帮助下,定义更有效更实际的功能测试,给程序员的设计制定了规范XP特点3——现场客户客户是Team成员,在开发现13XP特点4——小规模发布降低开发风险。保证客户有足够的依据调控开发过程(增加、删除或改变UserStory)。客户使用发布的系统,可以保证频繁地反馈和交流。发布过程应该尽可能地自动化、规范化。不断地发布可用的系统可以告诉客户你在做正确的事情。低风险智能化适应调整频繁交流知会客户频繁发布经过验证随着开发的推进,发布越来越频繁。所有的发布都要经过功能测试。小规模发布XP特点4——小规模发布降低开发风险。保证客户有足够14Scrum方法Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作;把一个开发流程的名字取名为Scrum,我想你一定能想象出你的开发团队在开发一个项目时,大家像打橄榄球一样迅速、富有战斗激情、人人你争我抢地完成它,你一定会感到非常兴奋的。而Scrum就是这样的一个开发流程,运用该流程,你就能看到你团队(7人以下)高效的工作。【Scrum开发流程中的三大角色】产品负责人(ProductOwner)主要负责确定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,同时有权力接受或拒绝开发团队的工作成果。

流程管理员(ScrumMaster)主要负责整个Scrum流程在项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发。

开发团队(ScrumTeam)主要负责软件产品在Scrum规定流程下进行开发工作,人数控制在5~10人左右,每个成员可能负责不同的技术方面,但要求每成员必须要有很强的自我管理能力,同时具有一定的表达能力;成员可以采用任何工作方式,只要能达到Sprint的目标。Scrum方法Scrum的英文意思是橄榄球运动的一个专业术语15Scrum流程图Scrum流程图16如何进行Scrum开发?1、确定ProductBacklog(按优先顺序排列的一个产品需求列表):这是由ProductOwner负责的ScrumTeam根据ProductBacklog列表,做工作量的预估和安排;2、SprintBacklog:通过SprintPlanningMeeting(Sprint计划会议)来从中挑选出一个Story作为本次迭代完成的目标,这个目标的时间周期是1~4个星期,然后把这个Story进行细化,形成一个SprintBacklog;每个成员根据SprintBacklog再细化成更小的任务(细到每个任务的工作量在2天内能完成)3、DailyScrumMeeting(每日站立会议):每次站立会议控制在15分钟左右,每个人都必须发言,并且要向所有成员当面汇报你昨天完成了什么,并且向所有成员承诺你今天要完成什么,同时遇到不能解决的问题也可以提出,每个人回答完成后,要走到黑板前更新自己的

Sprintburndown(Sprint燃尽图);4、每日集成:也就是每天都要有一个可以成功编译、并且可以演示的版本;支持每次有成员进行签入操作的时候,在服务器上自动获取最新版本,然后在服务器中编译,如果通过则马上再执行单元测试代码,如果也全部通过,则将该版本发布,这时一次正式的签入操作才保存,中间有任何失败,都会用邮件通知项目管理人员;5、SrpintReviewMeeting(演示会议):当一个Story完成,也就是SprintBacklog被完成,这时要进行评审会议,产品负责人和客户都要参加(最好本公司老板也参加),每一个ScrumTeam的成员都要向他们演示自己完成的软件产品(这个会议非常重要,一定不能取消);6、SprintRetrospective

Meeting(回顾会议):也称为总结会议,以轮流发言方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中;如何进行Scrum开发?1、确定ProductBacklo17Scrum开发中的产品BackLogScrum开发中的产品BackLog18Scrum开发中的SprintBacklogScrum开发中的DailyScrumMeetingScrum开发中的SprintBacklogScrum开发19目录/Catalog敏捷开发简介敏捷开发方法敏捷开发的注意事项目录/Catalog敏捷开发简介20敏捷开发的误区误区一:敏捷是"一个”过程误区二:敏捷仅是个软件过程误区三:敏捷是反文档的误区五:重做就是重构误区四:为了敏捷而敏捷敏捷开发的误区误区一:敏捷是"一个”过程误区二:敏捷仅是个软21敏捷不是一个过程,是一类过程的统称,它们有一个共性,就是符合敏捷价值观,遵循敏捷的原则。最高目标是能持续地、及早地向客户交付软件;拥抱变化;频繁地发布可运行的软件;客户和开发人员在一起工作;以人为本;最重要的衡量开发过程的手段,是可工作的软件;稳定的开发速度;敏捷高效的设计;简单有效;重视Teamwork;积极的调整。误区一:敏捷是“一个”过程敏捷不是一个过程,是一类过程的统称,它们有一个共性,就是符合22敏捷相对以前的软件工程最大的革新之处在于把人的作用提高到了过程至上,正如敏捷宣言的第一条“个体和交互胜过过程和工具”所说的。涉及到人的问题,就已经不再是过程所能覆盖的了,就到了企业管理的层面上了,包括企业的价值观和文化。这也是敏捷在国内实施的最大障碍:把客户当作合作伙伴而不是对手,从客户角度出发去想问题,充分的跟客户沟通,而不是出了问题推诿责任。目标是让软件实现客户的价值,而不是收钱就完事儿。把人的能动性调动起来,给动力而不是给压力。要实用而不是要规范。让开发人员理解并实施,体验到敏捷的好处,而不是盲目机械地实施规范。没有绝对的权威,每个人都有可取之处。误区二:敏捷仅是个软件过程敏捷相对以前的软件工程最大的革新之处在于把人的作用提高到23文档只是为了达成目标的一种手段,如果这种手段是低效的,那就换一种手段。可是完全抛弃了文档,怎样解决沟通的问题?难道你想每次沟通都完全用手比划,用嘴说,跟不同的人重复表述同样的想法,那样更是低效的。应该清楚文档的本质是把知识显性化。在一个项目中存在很多需要沟通的知识,知识具备两种形态,显性的和隐性的,传统的观念是尽量把隐性知识显性化,即文档化,而忽略了这其中的代价(特别是更新同步文档的代价)。因此,在实施敏捷的时候,需要在团队内明确哪些知识是必须显性的,这些知识可以通过文档交流。哪些知识是可以隐性的,这些知识则完全可以通过口头的方式进行交流,以达到沟通的最佳效率。文档不是目的,有效沟通才是目的。误区三:敏捷是反文档的文档只是为了达成目标的一种手段,如果这种手段是低效的,那24“嗯,敏捷这么好,我们也敏捷吧”,可能很多人会有这种想法。忘了以前是在哪儿看的大师采访录:

Q:“我们现有的过程很好,不知道怎么用敏捷改进?”

A:“既然很好,那就不要用敏捷”。做什么事情都要有明确目标的,敏捷虽好,得看你需不需要,能不能解决你现在头疼的问题,如果不是,那就不要给自己找麻烦了。误区四:为了敏捷而敏捷“嗯,敏捷这么好,我们也敏捷吧”,可能很多人会有这种想法25重做不等于重构,很多场合这两个概念是混淆的。但是在敏捷中,重构的一个特征是必须可控的。当对系统结构进行大的调整时,如果没有测试驱动辅助的话,那么可控性就会很差,这不能叫做重构。误区五:重做就是重构重做不等于重构,很多场合这两个概念是混淆的。但是在敏捷中,重26谢谢!谢谢!27知识回顾KnowledgeReview知识回顾KnowledgeReview知识分享:敏捷开发方法知识分享:敏捷开发方法29目录/Catalog敏捷开发简介敏捷开发方法敏捷开发的注意事项目录/Catalog敏捷开发简介30ITCraftsmanship关注:技术编程和技术管理能力孤军作战,没有协作零星、偶发的自动化与革新ItIndustrialization关注:流程IT管理与服务管理能力以同事为客户,没有对外协作有效率的服务与解决方案ItDigitalization关注:业务模式强调数字化领导力以同事为合作伙伴,参与对外协作数字化商业创新、新型价值IT系统开发演变的三个时代ITCraftsmanship关注:技术ItIndust31敏捷概念的提出项目为什么失败?软件工程试图解决这些问题:对用户需求理解得不清楚,甚至有错误;用户需求变化;软件很难维护或扩展;在项目后期阶段发现很严重的设计缺陷;软件质量或性能不合格;Test-Build-Release过程的可操作性、可维护性很差;人员流动;

……为了规范化开发过程,引进传统工程的概念(瀑布型);为了理解需求,提出原型法;为了提高设计开发的效率和扩展性,提出重用和面向对象等思想;为了让开发过程更灵活,提出了开发框架的概念;为了降低风险,提出了风险评估、成本控制和增量开发等思想;敏捷概念的提出项目为什么失败?软件工程试图解决这些问题:对用32如何走出困境?当我们面临速度、创新或面临诸多不确定因素瀑布式开发熟知的供应商强大的管理模式最小化的风险技术化团队敏捷式开发规模小但有创新精神的合作伙伴轻装有效的管理模式管控可控的风险更强大团队传统开发模式非线性模式可靠性目标灵活性依据结果定价价值收益、品牌、客户体验以计划为导向、基于审批的管理以经验为导向、基于流程的企业供应商

长期交易采购小型、新型供应商

短期采购擅长传统流程和项目才能擅长新型和未知项目长期的(月)周期短期的(天/周)如何走出困境?当我们面临速度、创新或面临诸多不确定因素瀑布式33敏捷开发(AgileDevelopment)是一种以人为核心、迭代、循序渐进的开发方法。子项目特征-

各个子项目的成果都经过测试-

具备集成和可运行的特征-

小项目相互联系在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。简言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。敏捷开发(AgileDevelopment)是一种以人为核34双模式可以用来开发不同的应用系统变化change管理Governance-++-创新型系统差异型系统记录型系统SystemsofInnovationSystemsofDifferentiationSystemsofRecord传统模式敏捷模式双模式可以用来开发不同的应用系统变化change管理Gove35目录/Catalog敏捷开发简介敏捷开发方法敏捷开发的注意事项目录/Catalog敏捷开发简介36敏捷方法XP-eXtremePrograming极限编程:思想源自KentBeck和WardCunningham在软件项目中的合作经历。SCRUM:是一种迭代的增量化过程,用于产品开发或工作管理。水晶方法Crystal:由AlistairCockburn在1990年代末提出。把不同类型的项目采用不同的方法。FDD-特性驱动FeatureDrivenDevelopment,由PeterCoad、JeffdeLuca、EricLefebvre共同开发,是一套针对中小型软件开发项目的开发模式。它强调的是简化、实用、易于被开发团队接受,适用于需求经常变动的项目。DSDM-DynamicSystemDevelopmentMethodology,它倡导以业务为核心,快速而有效地进行系统开发,在英国等欧洲国家比较流行。ASD-AdaptiveSoftwareDevelopment,由JimHighsmith在1999年正式提出。ASD强调开发方法的适应性(Adaptive)敏捷方法XP-eXtremePrograming极限编程37XP方法极限的含义:软件开发中的优点发挥到极致(KentBeck).XP:给程序员提供了明确的方法,使得程序员尽管面对需求的改变,却能够从容应对,即使着重变化发生在项目的后期,仍然能够编出代码。XP核心:沟通、简明、反馈和勇气XP重视沟通,客户、开发人员、管理者共同组成团队。ExtremeProgrammingXP方法极限的含义:软件开发中的优点发挥到极致(KentB38XP的关键实践结对编程测试驱动开发重构简单设计代码集体所有编码标准稳定高速的步伐持续集成隐喻现场客户完整的团队小规模发布计划游戏编程方法小组实践交付和管理XP的关键实践结对编程测试驱动开发重构简单设计代码集体所有编39XP特点1——完整的团队所有的小组成员应在同一个工作地点工作。成员中必须有一个用户代表(On-siteUser),由他/她来提出需求,确定开发优先级,把握开发的动向。通常还设一个教练(Coach)角色,来指导XP方法的实施及与外部的沟通协调等。小组每个成员都应围绕用户代表,充分贡献自己的技能。XP特点2——计划游戏XP特点1——完整的团队所有的小组成员应在同一个工作地点工作40XP特点3——现场客户客户是Team成员,在开发现场和开发人员一起工作。传统的客户任务一般是讲解需求,运行验收测试,接收发布的系统。XP新增加的任务:

(1)写UserStory(2)评估UserStory的商业优先级

(3)为每个UserStory定义验收测试

(4)计划开发内容

(5)调控开发过程

(6)建立商业模型,把隐藏在客户需求下的原则传授给开发人员

(8)程序员分担任务的过程支解了对他们商业模型的理解

(9)参加设计过程

(10)和程序员一起找出Metaphor,导引设计方向

(11)在Metaphor的帮助下,定义更有效更实际的功能测试,给程序员的设计制定了规范XP特点3——现场客户客户是Team成员,在开发现41XP特点4——小规模发布降低开发风险。保证客户有足够的依据调控开发过程(增加、删除或改变UserStory)。客户使用发布的系统,可以保证频繁地反馈和交流。发布过程应该尽可能地自动化、规范化。不断地发布可用的系统可以告诉客户你在做正确的事情。低风险智能化适应调整频繁交流知会客户频繁发布经过验证随着开发的推进,发布越来越频繁。所有的发布都要经过功能测试。小规模发布XP特点4——小规模发布降低开发风险。保证客户有足够42Scrum方法Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作;把一个开发流程的名字取名为Scrum,我想你一定能想象出你的开发团队在开发一个项目时,大家像打橄榄球一样迅速、富有战斗激情、人人你争我抢地完成它,你一定会感到非常兴奋的。而Scrum就是这样的一个开发流程,运用该流程,你就能看到你团队(7人以下)高效的工作。【Scrum开发流程中的三大角色】产品负责人(ProductOwner)主要负责确定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,同时有权力接受或拒绝开发团队的工作成果。

流程管理员(ScrumMaster)主要负责整个Scrum流程在项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发。

开发团队(ScrumTeam)主要负责软件产品在Scrum规定流程下进行开发工作,人数控制在5~10人左右,每个成员可能负责不同的技术方面,但要求每成员必须要有很强的自我管理能力,同时具有一定的表达能力;成员可以采用任何工作方式,只要能达到Sprint的目标。Scrum方法Scrum的英文意思是橄榄球运动的一个专业术语43Scrum流程图Scrum流程图44如何进行Scrum开发?1、确定ProductBacklog(按优先顺序排列的一个产品需求列表):这是由ProductOwner负责的ScrumTeam根据ProductBacklog列表,做工作量的预估和安排;2、SprintBacklog:通过SprintPlanningMeeting(Sprint计划会议)来从中挑选出一个Story作为本次迭代完成的目标,这个目标的时间周期是1~4个星期,然后把这个Story进行细化,形成一个SprintBacklog;每个成员根据SprintBacklog再细化成更小的任务(细到每个任务的工作量在2天内能完成)3、DailyScrumMeeting(每日站立会议):每次站立会议控制在15分钟左右,每个人都必须发言,并且要向所有成员当面汇报你昨天完成了什么,并且向所有成员承诺你今天要完成什么,同时遇到不能解决的问题也可以提出,每个人回答完成后,要走到黑板前更新自己的

Sprintburndown(Sprint燃尽图);4、每日集成:也就是每天都要有一个可以成功编译、并且可以演示的版本;支持每次有成员进行签入操作的时候,在服务器上自动获取最新版本,然后在服务器中编译,如果通过则马上再执行单元测试代码,如果也全部通过,则将该版本发布,这时一次正式的签入操作才保存,中间有任何失败,都会用邮件通知项目管理人员;5、SrpintReviewMeeting(演示会议):当一个Story完成,也就是SprintBacklog被完成,这时要进行评审会议,产品负责人和客户都要参加(最好本公司老板也参加),每一个ScrumTeam的成员都要向他们演示自己完成的软件产品(这个会议非常重要,一定不能取消);6、SprintRetrospective

Meeting(回顾会议):也称为总结会议,以轮流发言方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中;如何进行Scrum开发?1、确定ProductBacklo45Scrum开发中的产品BackLogScrum开发中的产品BackLog46Scrum开发中的SprintBacklogScrum开发中的DailyScrumMeetingScrum开发中的SprintBacklogScrum开发47目录/Catalog敏捷开发简介敏捷开发方法敏捷开发的注意事项目录/Catalog敏捷开发简介48敏捷开发的误区误区一:敏捷是"一个”过程误区二:敏捷仅是个软件过程误区三:敏捷是反文档的误区五:重做就是重构误区四:为了敏捷而敏捷敏捷开发的误区误区一:敏捷是"一个”过程误区二:敏捷仅是个软49敏捷不是一个过程,是一类过程的统称,它们有一个共性,就是符合敏捷价值观,遵循敏捷的原则。最高目标是能持续地、及早地向客户交付软件;拥抱变化;频繁地发布可运行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论