敏捷开发流程与方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1 1.1
1.2 1.3 1.4 2 3
敏捷开发简介
敏捷的起源 敏捷方法体系 敏捷宣言
为什么要敏捷?
敏捷系列 敏捷开发的误区
我们为什么需要敏捷
项目为什么失败?
1)
软件工程试图解决这些问题:
1)
2) 3) 4)
5) 6)
7)
对用户需求理解得不清楚,甚至有 错误; 用户需求变化; 软件很难维护或扩展; 在项目后期阶段发现很严重的设计 缺陷; 软件质量或性能不合格; Test - Build - Release过程的可操作 性、可维护性很差; 人员流动; ……
失败 通过
功 能 测 试
时间
小组实践1:持续集成(Continuous integration)
1
2
3
自动化编译 质量度量
自动化测试
持续反馈
团队实践2:隐喻(System Metaphor)
“The system metaphor is a story that everyone - customers, programmers, and managers - can tell about how the system works.” — Kent Beck
Team将Domain/Sub-Domain Model,Design/Sub-Design Model以及一些关键概念等等抽象 化为比喻。通过这些比喻,加强客户和程序员之间的相互理解,消化积累知识,指导设计开发的方 向。
例:
Market —发布/浏览,价格洽谈,生成和履行合同;
String,Tree,Package,Chartroom,Spider,Robot ……;
Kent Beck, Ward Cunningham, Martin Fowler, Ron Jeffries于2000年创立 XP是软件开发过程中的纪律,它规定你:必须在编程前些测试,必须两个人一
起编程,必须遵守编程规范……。
XP是把最好的实践经验提取出来,形成了一个崭新的开发方法。
Extreme Programming
FDD-特性驱动 Feature Driven Development,
– 由Peter Coad、Jeff de Luca 、Eric Lefebvre共同开发,是一套针对中小型软件开发项目的开发模式。 它强调的是简化、实用、 易于被开发团队接受,适用于需求经常变动的项目。
DSDM-Dynamic System Development Methodology,
探索阶段
产生和评估 User Story
计划阶段
调整阶段
增加/改变 需求
发布计划
调整开发 速度 / 内容
迭代计划1
迭代计划2 ………… 实施迭代1 实施迭代2 …………
迭代计划n
1..N个发布
实施迭代n
交付和管理3:现场客户(On-Site Customer)
客户是Team成员,在开发现场和开发人员一起工作。 传统的客户任务一般是讲解需求,运行验收
所有的小组成员应在同一个工作地点工作。
成员中必须有一个用户代表(On-site User),由他/她来提出需求,确定
开发优先级,把握开发的动向。 通常还设一个教练(Coach)角色,来指导XP方法的实施及与外部的沟通协 调等。 小组每个成员都应围绕用户代表,充分贡献自己的技能。
交付和管理2: 计划游戏(Planning Game)
13个实践 以拥抱变化的思想,协作的团队,简单的规则等为原则的13个具体实践 是知名度最高的敏捷开发方法
XP方法的贡献
Extreme Programming
XP的计划/反馈循环
XP开发工作流
XP的关键实践:
编程方法
小组实践
交付和管理
XP的关键实践
完整的 团队
编程方法
代码集体所有 测试驱动开发 现场客户
越来越多的公司开始使用敏捷开发过程
敏捷开发成功的因素
自组织团队
文化和氛围
知识和技能
开放的心态
目录
1 2 2.1
敏捷开发简介 敏捷系列
XP -eXtreme Programing
SCRUM
2.2
3
敏捷开发来自百度文库误区
敏捷实践
在敏捷的两个门派:XP、Scrum中,整理归纳了很多可以用 于协助软件开发的实践,后面统称为敏捷实践。
2) 3)
4)
5)
为了规范化开发过程,引进传统工程的 概念(瀑布型); 为了理解需求,提出原型法; 为了提高设计开发的效率和扩展性,提 出重用和面向对象等思想; 为了让开发过程更灵活,提出了开发框 架的概念; 为了降低风险,提出了风险评估、成本 控制和增量开发等思想;
我们为什么需要敏捷
部门: 1) 培养团队合作精神,稳定开发队伍;
萌芽--产生敏捷方法
敏捷方法是从上个世纪 90年代开始发展起来的
同起草了敏捷软件开发 宣言,总结出方法之间 的共同点,最终就是价
HP,Microsoft,IBM等
一组方法学的总称,包
括极限编程等等。这些 方法学之间有一些差异, 但是差异不是特别大
值,并且用敏捷这个词
给这种方法学一个统称
上个世纪90年代
频繁交流
客户使用发布的系统,可以保证 频繁地反馈和交流。
小组实践
小组实践1:持续集成(Continuous integration)
持续集成指不断地把完成的功能模块整合在一起。目的在于不断获得客户反馈以及尽早发现 BUG。
随时整合,越频繁越好;集成及测试过程的自动化程度越高越好。
“A Test a day ,takes the bugs away”---Siemens
目录
1 1.1
敏捷开发简介
敏捷的起源
敏捷方法体系 敏捷宣言 为什么要敏捷?
敏捷系列 敏捷开发的误区
1.2 1.3
1.4 2 3
敏捷宣言
个体和交互胜过过
程和工具
可以工作的软件胜过面 面俱到的文档
核心理念: 适应和以人为本
响应变化胜过遵 循计划 客户合作胜过合 同谈判
敏捷规则
最高目标是能持续地、及早地向客户交付软件; 拥抱变化; 频繁地发布可运行的软件; 客户和开发人员在一起工作; 以人为本; 最重要的衡量开发过程的手段,是可工作的软件; 稳定的开发速度; 敏捷高效的设计; 简单有效; 重视Teamwork; 积极的调整。
测试,接收发布的系统。XP新增加的任务:
(1) 写User Story (2) 评估User Story的商业优先级
(3) 为每个User Story定义验收测试
(4) 计划开发内容 (5) 调控开发过程 (6) 建立商业模型,把隐藏在客户需求下的原则传授给开发人员 (8) 程序员分担任务的过程支解了对他们商业模型的理解 (9) 参加设计过程 (10)和程序员一起找出Metaphor,导引设计方向 (11)在Metaphor的帮助下,定义更有效更实际的功能测试,给程序员的设计制定了规范
敏捷开发流程与方法
BGCN交付管理部
Strictly Private and Confidential
目录
1 1.1 1.2 1.3 1.4 2 3
敏捷开发简介
敏捷的起源 敏捷方法体系 敏捷宣言 为什么要敏捷?
敏捷系列 敏捷开发的误区
敏捷开发的起源
发展—开始广为流行 正规—成立敏捷联盟
每种方法学的领导人共 500强公司中众多公司 应用敏捷;如
– 它倡导以业务为核心,快速而有效地进行系统开发, 在英国等欧洲国家比较流行。
ASD-Adaptive Software Development,
– 由Jim Highsmith在1999年正式提出。ASD强调开发方法的适应性(Adaptive)
敏捷开发特点
敏捷开发包括很多方法,例如XP和FDD,同重量级的文档驱动 的开发过程相比较,敏捷方法在灵活性等方面更有吸引力。这个方 法的创始人强调了在软件实践过程中的变更而不是孤立的进行一些 实践。
什么是XP
XP is a lightweight methodology for small to medium sized teams developing software in the face of vague or rapidly changing requirements. -- Kent Beck.
2) 提高开发人员的水平;
3) 提高项目成功率,降低开发成本,提升软件开发效率 项目经理: 1) 更好地和用户沟通,更清晰地理解用户需求; 2) 更充分地使用资源,更科学地调配资源,更精确地掌握开发进度。 系统分析设计: 1) 设计更加完善; 2) 更有效地更新知识,得到其他成员更多的尊重。 程序员: 1) 学习系统设计和项目管理; 2) 提高学习和工作效率,受到重视,减少加班时间,工作更高效
什么是XP
极限的含义:软件开发中的优点发挥到极致(Kent Beck).
XP:给程序员提供了明确的方法,使得程序员尽管面对需求的改变,却 能够从容应对,即使着重变化发生在项目的后期,仍然能够编出代码。
XP核心:沟通、简明、反馈和勇气
XP重视沟通,客户、开发人员、管理者共同组成团队。 XP是一个实践系统
电影后期制作 —> 邮递 —> 电影院播放电影。
小组实践2:隐喻(System Metaphor)
Metaphor的形成过程,是客户建立并抽象商业模型和商业概念的过程,是程序员建立 并抽象设计模型和设计概念的过程。 Metaphor使客户和程序员用共通的模型和语言进行交流 — “One Team, one language”。 Metaphor可以帮助减少“知识泄露”和“支解知识”。 Metaphor是设计过程的航标 —— 真正灵活有效的设计是针对商业原则的设计,而不 是针对商业原则表现形式的设计,更不是脱离商业需求目的的学术设计。 随着开发的继续,Team会找到更好的Metaphor。这是知识细化、深化的结果,是 “持续学习”(Continuous learning)的过程;是对商业模型和设计模型的持续重构。
交付和管理4:小规模发布
低风险
降低开发风险。
频繁发布
随着开发的推进,发布越 来越频繁。
经过验证
小规模发布
所有的发布都要经过 功能测试。
智能化
发布过程应该尽可能 地自动化、规范化。
适应调整
保证客户有足够的依据调控 开发过程(增加、删除或改变 User Story)。
知会客户
不断地发布可用的系统可以告 诉客户你在做正确的事情。
编码标准
结对编程 简单 设计
隐喻
重构
计划游戏
持续集成
稳定高速的步伐
小组实践
交付和管理
小规模发 布
交付和管理
交付和管理1:完整的团队(Whole Team)
Product Manager/Project manager Coach Team lead Developers Tracker Tester (On-Site) Customers
谁在用敏捷
Fortune 500 公司中成功应用XP的公司包括Ford,Daimler-Chrysler,First Union National Bank,IBM,HP 等等。 通信业NS,Ericsson, Alcatel等都号称在转向敏捷 更多是小规模开发队伍(小规模开发队伍 小规模项目)
很多方法很难独立的使用。如:测试驱动的开发,结对开发,计 划调整周期以及持续改进,不过,后来的结果证实,这些方法都取 得了成功。
使用这些方法并不能保证一定成功。开发者的经验和技术仍旧 是影响开发结果的最主要因素。对于合适的人,基于敏捷原则的开 发方法可以产生更好的结果,同时形成一个愉快地、有激情的工作 环境
2001年
2004年以后
什么是敏捷开发?
敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。
子项目特征
各个子项目的成果都经过测试 - 具备集成和可运行的特征 - 小项目相互联系
-
目录
1
1.1 1.2 1.3 1.4 2
敏捷开发简介
敏捷的起源 敏捷方法体系 敏捷宣言
为什么要敏捷?
敏捷系列 敏捷开发的误区
3
敏捷方法
XP -eXtreme Programing极限编程:
– 思想源自Kent Beck和Ward Cunningham在软件项目中的合作经历。
SCRUM:
– 是一种迭代的增量化过程,用于产品开发或工作管理 。
水晶方法Crystal:
– 由Alistair Cockburn在1990年代末提出。把不同类型的项目采用不同的方法。