资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,产品敏捷开发实践,培训教程,(,2010,年,01,月),目录,引言,什么是敏捷?,什么是,SCRUM?,极限编程,(XP),的,12,个核心实践,术语表,敏捷能带给我们什么?,敏捷开发实施标准,敏捷开发的案例分析,总结,引言,什么是敏捷开发,(,一,),敏捷开发,(,agile development,):,敏捷开发是一种以,人为核心,、,迭代,、,循序渐进,的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。,敏捷方法强调,以人为本,,专注于交付对客户有价值的,软件,。在,高度协作,的开环境中,使用,迭代式的方式,进行,增量开发,,经常使用反馈进行思考、反省和总结,不停的进行自我调整和完善,开发流程,敏捷宣言,我们通过身体力行和帮助他人来揭示更好的软件开发方式。经由这项工作,我们形成了如下价值观:,个体与交互,重于,过程和工具,可用的软件,重于,完备的文档,客户协作,重于,合同谈判,响应变化,重于,遵循计划,在每对比对中,后者并非全无价值,但我们,更看重前者,引言,什么是敏捷开发,(,二,),周期,短周期开发,提供及早的、具体的、持续的反馈。,增量,增量开发。迅速地提出总体计划,并在项目生命周期中不断演化。,反应,灵活安排功能地实现,以对变化的业务需求作出反应。,自动,使用由程序员和测试人员编写的自动化测试来监控开发进度,支持系统演化,并尽早发现缺陷。,交流,通过口头沟通、测试和源代码来交流系统的结构和意图。,设计,渐进式的设计过程贯穿整个系统生命周期。,协作,依赖于能力普通但能积极参与的程序员之间的紧密协作,实践,各种实践兼顾项目成员的短期直觉和项目的长期利益。,敏捷开发特点,引言,什么是,SCRUM,(一),Scrum,是一个,迭代性,、,增量性,的,敏捷流程,,适用于任何的产品开发以及工作管理,其中包含了,风险控制,,,解决最优先需求,,,团队高效协作,等各种思想。在每个迭代结束后,,Scrum,都会产生一套可以交付的功能性产品。,Scrum,是一个“,检查并适应,”的框架,:,在,三个角色,(,产品负责人,/,Scrum Master,/,团队,)、,三种仪式,(,Sprint,计划,/,Sprint,回顾,/,每日例会,)和,三种制品,(,产品,Backlog,/,Sprint Backlog,/,燃尽图,),的基础上,你可以根据公司或者项目的情况,因地制宜引入任何有利于缩短开发周期、提高产品质量的实践,Scrum,过程,Scrum,的“,3,个三”,Scrum,定义,引言,什么是,SCRUM,(二),团队目标,重于岗位职责,团队工作,优于独立作战,高效沟通,强于标准化的文档,高能动性的、自组织,的团队胜于角色划分清晰的流水线,务实,的解决问题的方法好于经典理论,快速实践,快速反馈,持续优化,什么样的项目适合,SCRUM,Scrum,精神,SCRUM,的项目通常会有一些共性:,项目的需求多变。,项目周期较长(通常大于,3,次迭代),项目分期开发,迭代增量。,适用症:,重量级流程导致的软件开发环节复杂,面向任务、面向职责的开发模式导致的各司其职、流程环节衔接不畅,项目进度的掌控困难,以上两条导致的项目,/,产品开发周期过长,原理:,目标驱动,在统一的软件交付目标下组织团队,依靠团队的智慧做项目评估、计划乃至设计、开发、测试,抓住最基本的项目开发属性:周期,+,质量,1.,完整团队,XP,项目的所有参与者(开发、客户、测试等)一起工作在一个开放的场所中。,2.,计划游戏,计划是持续的、循序渐进的。,每,2,周一次,根据成本和商务价值来选择要实现的特性。,3.,客户测试,客户可以根据脚本语言来定义出自动验收测试来表明该特性可以工作。,4.,简单设计,团队保持设计恰好和当前的系统功能相匹配,尽可能简单。,5.,结对编程,开发是由两个程序员、并排坐在一起在同一台机器上进行的。,6.,测试驱动开发,编写单元测试避免了相当数量的反馈循环,尤其是功功能能验证方面的反馈循环,7.,重构,随时利用重构方法改进已经腐化的代码,保持代码尽可能的干净、具有表达力。,8.,持续集成,团队总是使系统完整地被集成。一个人,Check in,后,其它所有人责任代码集成。,9.,集体代码所有权,任何结对的程序员都可以在任何时候改进任何代码。,10.,编码标准,系统中所有的代码看起来就好像是被单独一人编写的。,11.,隐喻,是让项目参与人员都必须对一些抽象的概念理解一致,也就是我们常说的行业术语,开始要先明确双方使用的隐喻,避免歧异。,12.,可持续的速度,团队只有持久才有获胜的希望。他们以能够长期维持的速度努力工作,他们保存精力,他们把项目看作是马拉松长跑,而不是全速短跑。,引言,极限编程,(XP),的,12,个核心实践,极限编程,(XP),是敏捷方法中最著名的一个,它是由一系列简单却互相依赖的,实践,组成,能帮软件团队养成良好的习惯。,目录,引言,术语表,敏捷能带给我们什么?,敏捷在公司产品开发中的定位,敏捷能解决的具体问题,敏捷的应用范围,敏捷开发实施标准,敏捷开发的案例分析,总结,术语表,术语,解释,1.,Sprint,一次迭代过程,通常是,30,天,.,这个过程是不可被打断的,不能增加额外的需求,确保迭代结束时能够获得预期的可交付成果,2.,Productbacklog,一个最终会交付给客户的产品特性列表,它们根据商业价值来排列优先级,,Product backlog,应该涵盖所有用来构建满足客户需要的产品特性,包括技术上的需求,3.,Sprint backlog,一次迭代的特性列表,或者说工作列表,.,展示本次迭代的工作单元,源自产品特性列表,即素材(,User Story,),列表。,4.,Sprint task,是对素材(,User Story,)进行细分,在四到六小时内能完成的工作单元,(,即可独立分配的功能,),由队员主动认领。,Task,包括优先级,数字越高优先级越高。,5.,Sprint Burndown Chart,一次跌代的燃尽图,显示单次迭代过程的进度情况,6.,sprint planning meeting,单次迭代的计划会议,由,Team,与,Product Owner,之间商讨,sprint,目标集,决定哪些素材会被放进来,.,并对素材的任务进行分解,确定优先级,这个会议被限制在四个小时之内,.,7.,Daily Scrum meeting,每日站会,开发团队成员召开,一般为,15,分钟。每个开发成员需要向开发项目经理汇报三个项目:今天完成了什么?是否遇到了障碍?即将要做什么?通过该会议,团队成员可以相互了解项目进度。,8.,Sprint review meeting,Sprint,评审会,在,Sprint,结束的时候召开,.,最多不超过,4,个小时,.,前一半时间用来演示在这个,Sprint,中开发的产品功能给,Product Owner.Product Owner,会组织这阶段的会议并且邀请相关的利益相关者,(,业务、市场、技术,),参加相关的评审。由,Product Owner,来决定,Product Backlog,中的哪些功能已经开发完成。,9.,Sprint retrospective meeting,在,sprint,末期,评审会议之后召开,.Team,与开发项目经理共同讨论这次,sprint,中哪些地方做得比较好,哪些地方需要在下次,sprint,中进一步提高,.,会议时间被限制在三个小时之内,目录,引言,术语表,敏捷能带给我们什么,敏捷在公司产品开发中的定位,敏捷解决的具体问题,敏捷的应用范围,敏捷开发实施标准,敏捷开发的案例分析,总结,敏捷能带给我们什么,敏捷在公司产品开发中的定位,1,3,2,解决产品开发的问题,:,由于公司有些产品的需求总是在不断的变化,很多时侯产品全部开发完了才发现这不是客户想要的东西,这样就大大浪费了开发资源,并导致产品开发周期无限延长,我们需要找到一种应对需求不断变化的产品开发流程,,,敏捷开发能解决这一问题,。,SCRUM,框架,+XP,实践:,管理的框架上是采用的,SCRUM,,指导如何编码实现上就采用了一些,XP,的实践。同时在实践的过程中也引入了精益、消除浪费的思想,。,应用范围:,主要应用在一些需求经常发生变更的高复杂度,/,高风险的产品开发,提升最终的产品价值,:,敏捷能够灵活安排功能实现,以对变化的业务需求作出反应,这样就缩短了产品版本的发布周期,及时展现给客户,从而提升了最终的产品价值,敏捷能带给我们什么,敏捷开发解决的具体问题,提倡短周期发布,这样任何延迟的范围都是有限的。,一个发布周期内,计划许多小任务以保证团队可以在该周期内解决问题。提倡优先实现高优先级的功能。,最小发布必须是满足最大商业意义的,选择团队中面向业务的成员来承担。,自动化测试,每次代码改动后运行,确保质量底线。,保证系统处于可部署状态,不允许出现问题的积累。,减少进度延迟,避免系统恶化,由于缩短了发布周期,因此极大减少变更带来的影响。,拥抱变化,利用重构解决变更带来的技术问题。,减小项目取消的代价,应对业务需求的频繁变更,1,2,3,4,敏捷能带给我们什么,敏捷开发的适用范围,瀑布,模型,特点,项目需求比较明确,后期改动较少,大型项目,技术参与人数很多,项目工期比较紧,开发人员水平有限,敏捷,模型,特点,项目需求经常发生变更,项目团队的人数不能太多,项目工期较为宽裕,高复杂度,/,高风险的项目实施,开发人员可以参与决策,适用项目,公司产品:,需求不明确,开发周期较长,内部,IT,项目:,功能持续、不断完善,其它二次开发:,功能少、开发周期短,适用项目,外部项目:,需求明确、开发周期紧,重要业务:,功能明确、重点保障,类型,CMM,敏捷(,Agile,),不同点,更注重,质量,更注重,生产效率,强调,过程,的可观测性,强调可观测性的结果(,可运行的软件,),注重,管理和过程,(组织过程的有效性和过程的系统化改进),注重,技术,和,效率,注重,组织,注重,个人,提供了一个高度抽想的框架,具,广泛的应用范围,,无所不包(,Universal,),有,明确的适用范围,(,适用于小组织,需求不定,有用户紧密参与的情况,),强调应该,作什么,强调,怎么作,相同点,都包含了一些软件工程的好的,实践,CMM,与敏捷比较,目录,引言,术语表,敏捷能带给我们什么?,敏捷开发实施,团队建设,工具选择,产品开发实施过程,敏捷开发的案例分析,总结,敏捷开发实施,软件产品开发的三要素,:,人(团队),产品开发团队的建设,工具,管理工具的选择,过程管理,对整个产品开发过程的有效管理,敏捷开发实施,团队建设,(,一,),开发项目经理,技术,产品、内容,交互设计师,UI,设计师,.,拓展、营销,开发,工程师,测试,工程师,拓展经理,职责,产品需求的提出,产品的推广,对客户负责,产品经理,营销经理,职责,产品的功能策划,对最终产品功能负责,职责,产品功能的技术实现,对技术成果负责,产品经理:,确定产品的功能,定义开发目标,需要实现的,feature,和优先级,开发项目经理:,需求分析,项目任务分解,开发周期制定,主持会议,进度检查,问题协调解决,项目成员:,开发人员:,设计,编码,编写测试用例,单元测试,测试人员:,编写产品周期版本测试方案、测试用例,集成测试,敏捷开发核心团队角色,:,.,敏捷开发实施,团队建设,(,二,),理想敏捷团队的要求:,项目人数较少,。这有助于项目成员之间的彼此了解,也有助于开发项目经理了解每个人的状况。,项目成员,乐于沟通,。由于需求的不断变化,敏捷团队往往比其他的
展开阅读全文