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

上传人:小飞机 文档编号:6438038 上传时间:2023-10-31 格式:PPT 页数:32 大小:601KB
返回 下载 相关 举报
敏捷开发实践培训教程.ppt_第1页
第1页 / 共32页
敏捷开发实践培训教程.ppt_第2页
第2页 / 共32页
敏捷开发实践培训教程.ppt_第3页
第3页 / 共32页
敏捷开发实践培训教程.ppt_第4页
第4页 / 共32页
敏捷开发实践培训教程.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《敏捷开发实践培训教程.ppt》由会员分享,可在线阅读,更多相关《敏捷开发实践培训教程.ppt(32页珍藏版)》请在三一办公上搜索。

1、产品敏捷开发实践培训教程,(2010年01月),目录,引言 什么是敏捷?什么是SCRUM?极限编程(XP)的12个核心实践 术语表 敏捷能带给我们什么?敏捷开发实施标准 敏捷开发的案例分析 总结,引言什么是敏捷开发(一),敏捷开发(agile development):敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。敏捷方法强调以人为本,专注于交付对客户有价值的软件。在高度协作的开环境中,使用迭代式的方式进行增量开发,经常使用反馈进行思考、反省和总结,不停的进行自我调整和完善,开发流程,敏捷

2、宣言 我们通过身体力行和帮助他人来揭示更好的软件开发方式。经由这项工作,我们形成了如下价值观:个体与交互 重于 过程和工具可用的软件 重于 完备的文档客户协作 重于 合同谈判响应变化 重于 遵循计划 在每对比对中,后者并非全无价值,但我们更看重前者,引言什么是敏捷开发(二),周期,短周期开发,提供及早的、具体的、持续的反馈。,增量,增量开发。迅速地提出总体计划,并在项目生命周期中不断演化。,反应,灵活安排功能地实现,以对变化的业务需求作出反应。,自动,使用由程序员和测试人员编写的自动化测试来监控开发进度,支持系统演化,并尽早发现缺陷。,交流,通过口头沟通、测试和源代码来交流系统的结构和意图。,

3、设计,渐进式的设计过程贯穿整个系统生命周期。,协作,依赖于能力普通但能积极参与的程序员之间的紧密协作,实践,各种实践兼顾项目成员的短期直觉和项目的长期利益。,敏捷开发特点,引言什么是SCRUM(一),Scrum是一个迭代性、增量性的敏捷流程,适用于任何的产品开发以及工作管理,其中包含了风险控制,解决最优先需求,团队高效协作等各种思想。在每个迭代结束后,Scrum都会产生一套可以交付的功能性产品。,Scrum是一个“检查并适应”的框架:在三个角色(产品负责人/Scrum Master/团队)、三种仪式(Sprint计划/Sprint回顾/每日例会)和三种制品(产品Backlog/Sprint B

4、acklog/燃尽图)的基础上,你可以根据公司或者项目的情况,因地制宜引入任何有利于缩短开发周期、提高产品质量的实践,Scrum过程,Scrum的“3个三”,Scrum定义,引言什么是SCRUM(二),团队目标重于岗位职责团队工作优于独立作战高效沟通强于标准化的文档高能动性的、自组织的团队胜于角色划分清晰的流水线务实的解决问题的方法好于经典理论快速实践,快速反馈,持续优化,什么样的项目适合SCRUM,Scrum精神,SCRUM的项目通常会有一些共性:项目的需求多变。项目周期较长(通常大于3次迭代)项目分期开发,迭代增量。,适用症:重量级流程导致的软件开发环节复杂面向任务、面向职责的开发模式导致

5、的各司其职、流程环节衔接不畅,项目进度的掌控困难以上两条导致的项目/产品开发周期过长 原理:目标驱动,在统一的软件交付目标下组织团队 依靠团队的智慧做项目评估、计划乃至设计、开发、测试抓住最基本的项目开发属性:周期+质量,1.完整团队 XP项目的所有参与者(开发、客户、测试等)一起工作在一个开放的场所中。2.计划游戏 计划是持续的、循序渐进的。每2周一次,根据成本和商务价值来选择要实现的特性。3.客户测试 客户可以根据脚本语言来定义出自动验收测试来表明该特性可以工作。4.简单设计 团队保持设计恰好和当前的系统功能相匹配,尽可能简单。5.结对编程 开发是由两个程序员、并排坐在一起在同一台机器上进

6、行的。6.测试驱动开发 编写单元测试避免了相当数量的反馈循环,尤其是功功能能验证方面的反馈循环,7.重构 随时利用重构方法改进已经腐化的代码,保持代码尽可能的干净、具有表达力。8.持续集成 团队总是使系统完整地被集成。一个人Check in后,其它所有人责任代码集成。9.集体代码所有权 任何结对的程序员都可以在任何时候改进任何代码。10.编码标准 系统中所有的代码看起来就好像是被单独一人编写的。11.隐喻 是让项目参与人员都必须对一些抽象的概念理解一致,也就是我们常说的行业术语,开始要先明确双方使用的隐喻,避免歧异。12.可持续的速度 团队只有持久才有获胜的希望。他们以能够长期维持的速度努力工

7、作,他们保存精力,他们把项目看作是马拉松长跑,而不是全速短跑。,引言极限编程(XP)的12个核心实践,极限编程(XP)是敏捷方法中最著名的一个,它是由一系列简单却互相依赖的实践组成,能帮软件团队养成良好的习惯。,目录,引言 术语表 敏捷能带给我们什么?敏捷在公司产品开发中的定位 敏捷能解决的具体问题 敏捷的应用范围敏捷开发实施标准 敏捷开发的案例分析 总结,术语表,目录,引言 术语表 敏捷能带给我们什么 敏捷在公司产品开发中的定位 敏捷解决的具体问题 敏捷的应用范围 敏捷开发实施标准 敏捷开发的案例分析 总结,敏捷能带给我们什么敏捷在公司产品开发中的定位,1,3,2,解决产品开发的问题:由于公

8、司有些产品的需求总是在不断的变化,很多时侯产品全部开发完了才发现这不是客户想要的东西,这样就大大浪费了开发资源,并导致产品开发周期无限延长,我们需要找到一种应对需求不断变化的产品开发流程,敏捷开发能解决这一问题。,SCRUM框架+XP实践:管理的框架上是采用的SCRUM,指导如何编码实现上就采用了一些XP的实践。同时在实践的过程中也引入了精益、消除浪费的思想。应用范围:主要应用在一些需求经常发生变更的高复杂度/高风险的产品开发,提升最终的产品价值:敏捷能够灵活安排功能实现,以对变化的业务需求作出反应,这样就缩短了产品版本的发布周期,及时展现给客户,从而提升了最终的产品价值,敏捷能带给我们什么敏

9、捷开发解决的具体问题,提倡短周期发布,这样任何延迟的范围都是有限的。一个发布周期内,计划许多小任务以保证团队可以在该周期内解决问题。提倡优先实现高优先级的功能。,最小发布必须是满足最大商业意义的,选择团队中面向业务的成员来承担。,自动化测试,每次代码改动后运行,确保质量底线。保证系统处于可部署状态,不允许出现问题的积累。,减少进度延迟,避免系统恶化,由于缩短了发布周期,因此极大减少变更带来的影响。拥抱变化,利用重构解决变更带来的技术问题。,减小项目取消的代价,应对业务需求的频繁变更,1,2,3,4,敏捷能带给我们什么敏捷开发的适用范围,瀑布模型,特点项目需求比较明确,后期改动较少大型项目,技术

10、参与人数很多项目工期比较紧开发人员水平有限,敏捷模型,特点项目需求经常发生变更项目团队的人数不能太多项目工期较为宽裕高复杂度/高风险的项目实施开发人员可以参与决策,适用项目 公司产品:需求不明确,开发周期较长 内部IT项目:功能持续、不断完善 其它二次开发:功能少、开发周期短,适用项目 外部项目:需求明确、开发周期紧 重要业务:功能明确、重点保障,CMM与敏捷比较,目录,引言 术语表 敏捷能带给我们什么?敏捷开发实施 团队建设 工具选择 产品开发实施过程 敏捷开发的案例分析 总结,敏捷开发实施,软件产品开发的三要素:人(团队)产品开发团队的建设 工具管理工具的选择 过程管理对整个产品开发过程的

11、有效管理,敏捷开发实施团队建设(一),开发项目经理,技术,产品、内容,交互设计师,UI设计师,.,拓展、营销,开发工程师,测试工程师,拓展经理,职责 产品需求的提出 产品的推广 对客户负责,产品经理,营销经理,职责产品的功能策划对最终产品功能负责,职责产品功能的技术实现对技术成果负责,产品经理:确定产品的功能,定义开发目标,需要实现的feature和优先级,开发项目经理:需求分析,项目任务分解,开发周期制定,主持会议,进度检查,问题协调解决,项目成员:开发人员:设计,编码,编写测试用例,单元测试 测试人员:编写产品周期版本测试方案、测试用例,集成测试,敏捷开发核心团队角色:,.,敏捷开发实施团

12、队建设(二),理想敏捷团队的要求:项目人数较少。这有助于项目成员之间的彼此了解,也有助于开发项目经理了解每个人的状况。项目成员乐于沟通。由于需求的不断变化,敏捷团队往往比其他的团队需要更多的沟通;而团队成员之间的交流和了解也有助于提高项目的开发效率(比如碰到新技术时,直面的请教要比摸索需要的时间短的多)。项目成员有较强的凝聚力,能够在工作时间全身投入,在休息时间好好放松。就像字面理解sprint一样,要冲刺的时候,自然要精神集中;而要不断的冲刺,又要学会放松自己。,一支出色敏捷团队靠的不是技术,不是流程,而是有良好素质的团队成员。良好素质包括进取心、责任心、良好的习惯、热情,敏捷开发实施工具选

13、择,产品策略管理平台,VSS,Mercury,Xplanner,JUNIT,产品策略平台是一个公司内部针对所开展的项目进行的分目标用户的需求及产品设计成果的讨论平台,全称为 Visual Source Safe。它主要任务就是负责项目文件(源码、文档)的管理,质量管理工具集,用到其中的缺陷管理功能,JUNIT是基于面向对象构建的java单元测试框架,是一个基于Web的敏捷开发团队计划和跟踪工具,敏捷开发实施产品开发实施过程管理(一),技术,产品、内容,拓展、营销,产品讨论审核,产品策略管理平台,客户,产品决策团队,产品经理(产品策划团队),拓展经理(营销经理),敏捷开发管理平台,开发项目经理(

14、技术开发团队),SCRUM流程,为客户作产品演示,增量交付的产品,产品需求提出,产品策划,需求调查,演示反馈,产品开发流程图,敏捷开发实施产品开发实施过程管理(二),开发需求策划阶段,1,2,技术开发阶段(一),敏捷开发实施产品开发实施过程管理(二),2,技术开发阶段(二),接上页,敏捷开发实施产品开发实施过程管理(二),接上页,3,给客户演示产品阶段,营销经理把每次与客户交流的反馈建议重新提高给产品经理 产品经理负责把这些建议进行功能化放入产品的功能列表以供下一次迭代选择进入下一次技术开发阶段,项目切分原则:优先考虑底层的、核心的模块 优先考虑通用工具和框架的实现 先难后易的原则 任务开发时

15、长最好在完整的开发周期内相关联的任务能够安排在相邻的开发周期,4,后续流程说明,目录,引言 术语表 敏捷能带给我们什么?敏捷开发实施 敏捷开发的案例分析 某部门敏捷实战案例 实战案例分析与总结 典型的失败案例典型的成功案例 总结,敏捷开发的案例分析某部门敏捷实战案例,敏捷开发的案例分析实战案例分析与总结(一),归纳用到的实践(一),敏捷开发的案例分析实战案例分析与总结(二),归纳用到的实践(二),接上页,敏捷开发的案例分析案例分析与总结(三),未用到的实践,接上页,还没找到很好的方式促进开发和QA融合为统一的Scrum团队有些有价值的实践没有实施到很有意义的程度,执行不坚决深入持续的方法改进工

16、作有待加强,做的还不到位的方面,敏捷开发的案例分析失败案例,案例描述,接上页,失败分析,一个离岸开发的某创业型公司。虽然团队比较特殊(离岸开发团队),但这个失败案例却非常典型和普遍。“某一天,国外的PM突然发来几个链接,一看讲的是一个闻所未闻的词,就是Scrum了。好像就给了一两天的时间去看Scrum的介绍文档,然后就开Stand-up Meeting(站立会议)。”这个案例的团队是真真的在推行SCRUM。从表明看,大家也是在按照SCRUM框架的方式工作:有相应划分的角色,有具体的分解任务,有会议,也有迭代(Sprint)。那又怎么会失败呢?,显然,他们是在照搬照套了SCRUM的框架。他们是两

17、个离岸的开发团队,因为地点、时区和语言的差异,很容易就会导致沟通和交流不畅,这时候再生硬的引入SCRUM,无异是火上浇油,敏捷开发的案例分析成功案例,案例描述,接上页,成功分析,“我们不是采用纯粹的Scrum,而是将Agile中的很多理念,包括XP的部分做法,然后结合现有的开发环境与要求,用Scrum的回顾不断地做改进,从而趟出自己的一条路。如果这个Sprint我们回顾时觉得自己代码Review(审查)做的不好,下个Sprint就会引入新的代码Review机制。这个Sprint觉得重复性的bug较多,下个Sprint就会引入缺陷预防机制。我们是自底向上,先做小范围试点,再全面推广,中间对过程进

18、行不断改进”。他们的具体做法如下:“其实我们一开始并没有把Scrum这个说法拿出来。就是首先和业务一起商量什么时候上线,商量出来的结果是每个月定期上线。于是就有了一月一个项目的进 度(我们是线上服务,没有版本的概念,有一堆需求过来,对技术来说就是在这一个月以内完成这些需求,把这一个月以内的工作叫一个项目)。然后为了管理,我 们开始开晨会。然后为了改进,我们开始开项目总结会,把Product review和Team retrospective放在一起,既有产品经理介绍现状,也有大家讨论成绩,不足和挑战。后来总结会上觉得质量不好,我们加入了单元测试和代码 Review机制。至于计划会议,一开始我们

19、就采用的Scrum的方法。项目小,MS Project太难调。我们就更换了Scrum的Excel计划表,后来又换了Xplanner。,无独有偶,这些成功案例的团队,就是通过这样的方式进行一步一步推进,把SCRUM成功的引入到了各自的项目中,目录,引言 术语表 敏捷能带给我们什么?敏捷开发实施 敏捷开发的案例分析 某部门敏捷实战案例 实战案例分析与总结 典型的失败案例典型的成功案例 总结,总结,敏捷就是一个团队持续不断的自我改进过程,直到那些优秀的品质成为大家的一种职业习惯一个自组织的团队。敏捷没有终点,我们一直在路上。思想和精神只可意会不可言传。这些只可以在每天的工作和问题中去领悟、体会和沉淀

20、。在学习敏捷方法的时候,我们 应该尽可能多和深入的学习,并融会贯通。在具体工作的时候,我们先要忘掉学到的条条框框。首先分析自己的上下文环境,找出最主要的矛盾,然后根据团队状 况,通过学到的经验和方法将这些问题进行平衡和解决。,好了,忘掉一切招数,看看软件开发最原始最淳朴的目标-,在资源一定的情况下,尽可能快地完成高质量的软件开发,附:敏捷宣言的12准则,我们的最高目标是,通过尽早和持续地交付有价值的软件来满足客户。欢迎对需求提出变更即使是在项目开发后期。要善于利用需求变更,帮助客户获得竞争优势。要不断交付可用的软件,周期从几周到几个月不等,且越短越好。项目过程中,业务人员与开发人员必须在一起工作。要善于激励项目人员,给他们以所需要的环境和支持,并相信他们能够完成任务。无论是团队内还是团队间,最有效的沟通方法是面对面的交谈。可用的软件是衡量进度的主要指标。敏捷过程提倡可持续的开发。项目方、开发人员和用户应该能够保持恒久稳定的进展速度。对技术的精益求精以及对设计的不断完善将提升敏捷性。要做到简洁,即尽最大可能减少不必要的工作。这是一门艺术。最佳的架构、需求和设计出自于自组织的团队。团队要定期反省如何能够做到更有效,并相应地调整团队的行为。,推荐参考书目:硝烟中的SCRUM和XP、Scrum+Checklists中文版,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号