敏捷开发实践培训教程.ppt





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

限制150内