敏捷开发实践培训教程

上传人:206****923 文档编号:54207788 上传时间:2018-09-09 格式:PPT 页数:32 大小:1.36MB
返回 下载 相关 举报
敏捷开发实践培训教程_第1页
第1页 / 共32页
敏捷开发实践培训教程_第2页
第2页 / 共32页
敏捷开发实践培训教程_第3页
第3页 / 共32页
敏捷开发实践培训教程_第4页
第4页 / 共32页
敏捷开发实践培训教程_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《敏捷开发实践培训教程》由会员分享,可在线阅读,更多相关《敏捷开发实践培训教程(32页珍藏版)》请在金锄头文库上搜索。

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

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

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

4、t Backlog/燃尽图) 的基础上,你可以根据公司或者项目的情况,因地制宜引入任何有利于缩短开发周期、提高产品质量的实践,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. 隐喻 是让项目参与人员都必须对一些抽象的概念理解一致,也就是我们常说的行业术语,开始要先明确双方使用的隐喻,避免歧异。 1

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

8、开发中的定位,1,3,2,解决产品开发的问题: 由于公司有些产品的需求总是在不断的变化,很多时侯产品全部开发完了才发现这不是客户想要的东西,这样就大大浪费了开发资源,并导致产品开发周期无限延长,我们需要找到一种应对需求不断变化的产品开发流程,敏捷开发能解决这一问题。,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的框架。他们是两个离岸的开发团队,因为地点、时区和语言的差异,很容易就会导致沟通和交流不畅,这时候再生硬的引入SCRUM,无异是火上浇油,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号