您好,欢迎访问三七文档
讲师:陈浩2016-9-28中国▪广州软件研发的优化实践中国移动目录CONTENTS01.02.03.04.敏捷开发持续交付测试驱动开发全息化生产01.02.03.集成产品开发体系产品型研发活动游戏化研发实践高效研发实践高价值化研发高效研发实践11▪敏捷开发▪背景简介PARTONE敏捷开发高效研发实践互联网时代的软件特点:复杂性:软件越来越复杂可变性:需求越来越多变一致性:过程越来越规范项目为什么失败PARTONE敏捷开发高效研发实践项目为什么失败?软件工程试图解决这些问题:1)对用户需求理解得不清楚,甚至有错误;2)用户需求变化;3)软件很难维护或扩展;4)在项目后期阶段发现很严重的设计缺陷;5)软件质量或性能不合格;6)Test-Build-Release过程的可操作性、可维护性很差;7)人员流动;1)为了规范化开发过程,引进传统工程的概念(瀑布型);2)为了理解需求,提出原型法;3)为了提高设计开发的效率和扩展性,提出重用和面向对象等思想;4)为了让开发过程更灵活,提出了开发框架的概念;5)为了降低风险,提出了风险评估、成本控制和增量开发等思想;软件工程应用现状PARTONE敏捷开发高效研发实践6软件工程的应用现状:“特色”问题还是难以解决:1)国内因为资源限制,软件工程的实施流于形式;2)国内软件工程的研究及推广工作,和实践脱钩;3)旧的软件工程方法一直不能有效地支持变化。4)在北美,虽然软件工程提高了项目成功率,但耗费巨大资源;5)以前的软件工程方法无法摆脱传统工程方法的束缚。1)需求难以量化;2)软件从开发到维护及扩展,需求都有可能发生大变化;3)编程对设计的反馈非常重要;4)项目中的设计可能会经常变化;5)代码的可读性和可维护性;……为什么要敏捷开发PARTONE敏捷开发高效研发实践需要敏捷的理由部门培养团队合作精神,稳定开发队伍;提高开发人员的水平;提高项目成功率,降低开发成本,提升软件开发效率项目经理更好地和用户沟通,更清晰地理解用户需求;更充分地使用资源,更科学地调配资源,更精确地掌握开发进度。系统分析设计更加完善;更有效地更新知识,得到其他成员更多的尊重。程序员学习系统设计和项目管理;提高学习和工作效率,受到重视,减少加班时间,工作更高效敏捷开发PARTONE敏捷开发高效研发实践2001年初,一批业界专家聚集在一起概括出了一些可以让软件开发团队具有快速工作、响应变化能力的价值观和原则,他们称自己为敏捷(Agile)联盟。在随后的几个月中,他们创建出了一份价值观声明。也就是敏捷联盟宣言(TheManifestooftheAgileAlliance)。敏捷宣言PARTONE敏捷开发高效研发实践核心理念:适应和以人为本客户合作胜过合同谈判响应变化胜过遵循计划可以工作的软件胜过面面俱到的文档个体和交互胜过过程和工具敏捷宣言PARTONE敏捷开发高效研发实践知识和技能文化和氛围自组织团队开放的心态敏捷开发PARTONE敏捷开发高效研发实践敏捷开发(AgileDevelopment)是一种以人为核心、迭代、循序渐进的开发方法子项目特征-各个子项目的成果都经过测试-具备集成和可运行的特征-小项目相互联系敏捷开发体系PARTONE敏捷开发高效研发实践•XP-eXtremePrograming极限编程:思想源自KentBeck和WardCunningham在软件项目中的合作经历。•SCRUM:是一种迭代的增量化过程,用于产品开发或工作管理。•水晶方法Crystal:由AlistairCockburn在1990年代末提出。把不同类型的项目采用不同的方法。•FDD-特性驱动FeatureDrivenDevelopment,由PeterCoad、JeffdeLuca、EricLefebvre共同开发,是一套针对中小型软件开发项目的开发模式。它强调的是简化、实用、易于被开发团队接受,适用于需求经常变动的项目。•DSDM-DynamicSystemDevelopmentMethodology,它倡导以业务为核心,快速而有效地进行系统开发,在英国等欧洲国家比较流行。•ASD-AdaptiveSoftwareDevelopment,由JimHighsmith在1999年正式提出。ASD强调开发方法的适应性(Adaptive)敏捷开发的特点PARTONE敏捷开发高效研发实践敏捷开发包括很多方法,例如XP和FDD,同重量级的文档驱动的开发过程相比较,敏捷方法在灵活性等方面更有吸引力。这个方法的创始人强调了在软件实践过程中的变更而不是孤立的进行一些实践。很多方法很难独立的使用。如:测试驱动的开发,结对开发,计划调整周期以及持续改进,不过,后来的结果证实,这些方法都取得了成功。使用这些方法并不能保证一定成功。开发者的经验和技术仍旧是影响开发结果的最主要因素。对于合适的人,基于敏捷原则的开发方法可以产生更好的结果,同时形成一个愉快地、有激情的工作环境敏捷模式理念PARTONE敏捷开发高效研发实践•最高目标是能持续地、及早地向客户交付软件;•拥抱变化;•频繁地发布可运行的软件;•客户和开发人员在一起工作;•以人为本;•最重要的衡量开发过程的手段,是可工作的软件;•稳定的开发速度;•敏捷高效的设计;•简单有效;•重视Teamwork;•积极的调整。RUP与XPPARTONE敏捷开发高效研发实践RUP是软件开发的最佳实践,是最完整、最完善的过程标准。CMM是一个标准,它要求我们应该做到什么,而没有告诉我们应该如何做。XP告诉我们如何做,但是没有明确的指出,做到以后该如何改进。RUP和CMM结合,把RUP的九个工作流和CMM2、3级的KPA结合起来是一种趋势。软件过程点评软件标准过程RUPPARTONE敏捷开发高效研发实践由来Rational公司源自建筑业的灵感:过程化、文档化,强调项目的可控性。是开发组织用以分配与管理任务和职责的一种规范化方法,目的是在预定的进度和预算范围内,开发出满足最终用户需要的高质量软件。指引开发团队和个人的活动步骤;开发团队在这个步骤中该做什么,输出什么文档;开发个体什么时候做什么,做了输出什么报告;怎么评估一个系统的进展和质量。*解决软件开发的可操作性问题,帮助开发人员尽可能少地依赖那些“不可描述的经验”软件标准过程RUPPARTONE敏捷开发高效研发实践核心以体系结构为核心(建:框架)以用例驱动开发(建:图纸)迭代和增量控制(建:招式)软件标准过程RUPPARTONE敏捷开发高效研发实践iter.#1iter.#2iter.#niter.#n+1iter.#n+2iter.#miter.#m+1需求设计实现测试分析核心工作流程先启精化构造转移精化过程中的反复过程初步的反复过程软件标准过程RUPPARTONE敏捷开发高效研发实践是文档化的软件工程产品,所有RUP的实施细节及方法导引均以Web文档的方式集成在一张光盘上,由Rational公司开发、维护并销售。RUP又是一套软件工程方法的框架,各个组织可根据自身的实际情况,以及项目规模对RUP进行裁剪和修改,以制定出合乎需要的软件工程过程。与统一建模语言(UnifiedModelLanguage,以下简称UML)的良好集成、多种CASE工具的支持、不断的升级与维护,迅速得到业界广泛的认同,越来越多的组织以它作为软件开发模型框架。软件标准过程RUPPARTONE敏捷开发高效研发实践六个‘核心工程工作流’:商业建模工作流、需求工作流、分析和设计工作流、实现工作流、测试工作流、分发和项目管理工作流三个‘核心支持工作流’:配置工作流、变更控制工作流、环境工作流RUP的五个活动:需求、分析、设计、实现和测试RUP的四个阶段:初始、细化、构造、交付每个阶段以严格的里程碑为结束标准,由一到多个迭代组成,每次迭代都可能执行所有工作流。软件标准过程RUPPARTONE敏捷开发高效研发实践相关特点过程非常严格细致,投入非常多人力,产生非常多文档可靠性非常高,实施成本非常高,特别适合大型项目容易陷入文山会海,产生官僚主义。与其他软件开发过程比较而言,维度(3D)最高软件工艺的法宝XPPARTONE敏捷开发高效研发实践敏捷开发方法是2000年左右兴起的一系列轻量级软件过程,相比RUP等重型过程,在非大型开发团队中效率更高。3~10人的小规模开发队伍小规模开发队伍小规模项目目前形态:将其与UML,甚至RUP结合使用。软件工艺的法宝XPPARTONE敏捷开发高效研发实践由来由KentBeck大师提出的。大师在经历传统软件开发的痛苦之后,希望能够找到一种优秀的软件开发方法。他总结了大量的软件的成功和失败的因素之后,提出了改进软件开发方法的四个要素:沟通:开发、设计、客户简单:保护代码简单反馈:尽快获得用户的反馈勇气:勇于变化,勇于修改代码*属于轻量级开发。所谓轻量级,就是轻文档化、优化过程软件工艺的法宝XPPARTONE敏捷开发高效研发实践内容程序员进行的是有创造性的脑力活动更好的CodeReview和测试对设计过程的重新思考开发过程应该更多地面向代码而不是文档增量开发的趋势结合“有组织、有纪律”和“灵活、高效”以人为本测试驱动开发简单设计轻量级迭代越来越频繁发展得很高XP的哲学观PARTONE敏捷开发高效研发实践交流(Communication)勇气(Courage)简单(Simplicity)反馈(Feedback)PARTONE敏捷开发高效研发实践特点XP强调发挥人的作用,强调代码的价值。抓住了软件开发的关键。与此对应的是实施许多其它过程时,容易陷入文档之中,而忽视了这两个关键问题,导致低效。XP也许把人的能动性和代码的作用发挥到了极至,当它能满足要求的时候,具有很高的投入产出比。在大型项目中仅仅这样可能就不够了,因为人所关注的事务,人所拥有的时间在真正的大型项目中无法承受。此时应该考虑RUP,更正式、严格地进行阶段划分、架构设计、抽象和风险管理XP部分满足或大部分满足了CMM2-3级KPA的要求,而基本上没有涉及CMM4-5级的KPA。软件工艺的法宝XPPARTONE敏捷开发高效研发实践XP到RUP的转化(映射)先启精化构建转移需求用户素材小型发布接纳测试测量分析CRC卡片迭代计划任务计划、迭代编程接受背后设计系统隐喻单元测试重构持续集成实现编码标准简单设计集体代码所有权运行所有测试•CRC卡片:Class-Responsibility-CollaboratorPARTONE敏捷开发高效研发实践XP的增量过程简单设计迭代计划测试驱动Pair开发持续集成重构1..N个Iteration发布计划1..N个Release小发布发布1..N个TaskPARTONE敏捷开发高效研发实践后起之秀SCRUMPARTONE敏捷开发高效研发实践后起之秀SCRUMSCRUM开发流程是AgileProcess的一种,以英式橄榄球争球队形(Scrum)为名,基本假设是『开发软件就像开发新产品,无法一开始就能定义FinalProduct的规程,过程中需要研发、创意、尝试错误,所以没有一种固定的流程可以保证项目成功』。Scrum将软件开发团队比拟成橄榄球队,有明确的最高目标,熟悉开发流程中所需具备的最佳典范与技术,具有高度自主权,紧密地沟通合作,以高度弹性解决各种挑战,碓保每天、每个阶段都朝向目标有明确的推进,因此SCRUM非常适用于产品开发项目。PARTONE敏捷开发高效研发实践后起之秀SCRUMSCRUM开发流程通常以30天为一个迭代周期,每个迭代周期叫做一个Sprint,由客户提供新产品的需求规格开始,开发团队与客户于每一个阶段开始时挑选该完成的规格部份,开发团队必须尽力于30天后交付成果,团队每天用15分钟开会检视每个成员的进度与计划,了解所遭遇的困难并设法排除,决定第二天的任务安排.SCRUM较为有特色的,是它特别强调开发队伍和管理层的交流协作。每天,开发队伍都会向管理层汇报进度,如果有问题,也会向管理层要求
本文标题:1敏捷开发1
链接地址:https://www.777doc.com/doc-5711823 .html