敏捷开发培训
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2021/2/24
18
开发流程
开发人员随时可以和客户进行有效沟通,撰写 以确认需求。 简易快速的系统设计,撰写独立的验证程序以解决特殊困难的问
题,找出算法即可丢弃验证程序。 规划多次小型阶段的项目计划,以最快速度完成每一阶段的程序
交付客户,客户负责 ; 前必须完成 与 程序,所有模块整合前都须经过 ; 开发人员必须快速响应 与需求变更; 要求二人一组使用一台计算机设计程序,当一人 时,另一人负
不要长时间的加班,大多数加班并不能挽回已有的延 迟,连续超过两个星期的加班说明有问题存在。向 一个已经延迟的项目填加人员也不是一个好的选择。
2021/2/24
33
原则和实践1
所有的代码都有单元测试 单元测试是的基 石,中的单元测试应该是可以自动进行的,
所以可以很快的进行所有的单元测试,单元测试应该在编码之 前创建。单元测试的代码和代码一起, 没有单元测试的代码 不能够。使用自动单元测试可以系统整合时节省大量的发现错 误和改正的时间。单元测试越完善,节省的时间越多。 代码在前必须通过所有的单元测试 发现后,首先增加测试 在实际运行中发现,首先增加 ,然后增加 ,在增加完测试后在 查找和修改代码,增加的测试保证同样的错误不会再出现
敏捷开发
() 09/28/2010
2021/2/24
1
介绍
2021/2/24
2
- 敏捷的开发流程
(敏捷的开发流程) 是一种软件开发流程的泛称, 几项共通的特性 :
客户与开发人员形成密切合作的团队,因为客户 无法于初期定义完整的规格,而开发人员于开发 过程中也常常无法知悉外在环境或业务的变动, 所以需要两者密切合作方能开发适用的软件。
2021/2/24
7
敏捷开发-迭代计划
验收测试
发布计划
最新版本 开发
项目周期
迭代计划
2021/2/24
8
敏捷开发-迭代计划
2021/2/24
9
名词解释
故事
故事 是客户想要系统做的事情,适合在一至
两个迭代内完成,并且是可测试的,他不一定 是商业价值的直接体现。
迭代
迭代 是一个周期在2-4周,能够完成当前团队
险、商业风险、技术风险等因素在内的一个衡 量数字,优先级越高通常意味着其商业价值越 高
风险系数
风险系数 综合商业环境、项目资源、技术以
及项目环境等等因素在内的一个衡量数字,它 是优先级的重要衡量指标之一。它通常出现在 故事中。风险系数较大意味着优先级也较大。
负载因子
负载因子 是综合项目成员的技术能力、技能
2021/2/24
12
1. 2. 3.
2021/2/24
13
为 提出的软件开发流程
内容含盖 , , , , , 等软件开发生命周 期的直接工作
与 , & , 等支持性工作。
2021/2/24
14
的主要精神
1. 项目进行采用 程序分阶段渐进地完 成项目功能;
2. 广泛使用 于商业需求分析、系统分 析与系统设计;
强调客户所要的是 的执行码,所以把 与撰写程序无关的工作降至最低,并 要求客户与开发人员最好以 的方式一 起工作
2021/2/24
17
强调4个因素
交流(),要求程序员之间以及和用户之间有 大量而迅速的交流
简单(),要求设计和实现简单和干净 反馈()通过测试得到反馈,尽快提交软件
并根据反馈修改 勇气()。勇敢的面对需求和技术上的变化
2021/2/24
31
原则和实践2
是的特色,它要求两个程序员在一台计算机上同时 进行编程工作。共用鼠标和键盘,通常一个人进行 战略上的思考,程序架构和函数, 类之间的关系, 一个人进行输入和战术上的思考,完成函数和类。 两个人可以经常交换角色。
要保证源代码库的状态是可标识的,同一时间,只 允许一个的程序进行整和和测试,这样可以缩小问 题产生的范围。不同的可以在自己的机器上随时进 行整和和测试.
项目最终的目标是可执行的程序,因此所有的中 间产品必须经过审慎评估,确认有助于最终目标, 才需要制作中间产品。
采用 与 方式分阶段进行,密集 是否符合需求。 流程可以简单,但规划与执行必须严谨。 强调团队合作,赋予高度的责任,团队有自主权
得以因应变化做调整
2021/2/24
3
敏捷开发是一种以人为核心、迭代、 循序渐进的开发方法
2021/2/24
30
原则和实践1
用户是项目组的成员之一,用户的参加贯穿整个开发过程,用户 与开发人员之间的交流是重要的
使用统一的编码标准,这是保持代码整洁和共享代码的基础
是的一个特点,在编写代码之前先编写单元测试代码,单元测 试代码和代码由同一个程序员完成。先编写测试代码可以使程序 员更好的理解需求,避免直接编码造成的理解偏差,对需求的不 清晰,可以在编写测试代码时就发现。测试代码也是检验程序是 否完成的标准。编码工作应该是以下工作的循环: 1 编写测试代码 2 运行测试程序,确认失败 3 编写实现这个测试程序要求功能的代码,不需要实现其他的功 能,只需要实现刚刚满足测试程序的功能 4 运行测试程序,确认成功 实践证明, 方式需要的编码实践少于先编码,后写测试代码
所能实现的,最具商业价值的功能,并可以提 供一个可工作的小版本供发布。
Velocity
Velocity 翻译为项目周转时间。代表团队在
给定周期内能够完成多少商业价值,以便用于 衡量将来该团队能够提供的商业价值。也即昨 天的天气。
2021/2/24
10
名词解释
优先级
优先级 主要考虑商业价值,同时兼顾市场风
集、精神状态等等因素,对于团队成员的一个 负载系数。
2021/2/24
11
名词解释
理想时间 排除一切可能的外界干扰,同时排 理想时间 除自身的精神状态,职业态度等等因素,完成
某项工作所需要的时间。
实际时间 理想时间乘上负载因子
实际时间
任务
任务 分配到项目成员,从故事切分的出来。通 常任务时间不应该超过10个实际工作日。
何人提出想法和建议 9. 持续改进设计和编码 10. 鼓励正常工作,减少长时间加班 11. 保持简单,减少不必要的部分,认识到简单的设计比复杂的
设计更难( ) 12. 定期调整过程,获得更高效率
2021/2/24
6
敏捷开发的设计原则
单一职责原则: 开放封闭原则:- 替换原则: 依赖倒置原则: 接口隔离原则:
1. 最高目标是通过快速的和经常的发布软件满足客户的需要 2. 提交软件的周期为几个星期到几个月 3. 产生正确的软件是衡量进度的首要标准 4. 主动接受需求的改变而不是拒绝 5. 商务人员和开发人员工作在一起 6. 个人必须有动力,要创造环境支持他们的要求,信任他们 7. 最有效的交流方法是面对面的交流 8. 最好的结构,需求和设计来自于自组织的团队( ),允许任
2021/2/24
25
原则和实践
不要使每个开发人员局限于一项工作, 不要使某项工作依赖于一个开发人员, 增加知识共享,减少信息孤岛,多进 行交流和培训。当项目中的所有人对 所有模块都了解并可以进行开发时是 效率最高的,鼓励开发人员在不同中 开发不同的模块。
2021/2/24
26
原则和实践
每天工作 开始之前,开5-10分钟的会 议(站立会议),站立的目的是为了
3. 强调架构设计;
4. 对每项工作所需要的技术、工具、做 法、模板、检查项目均有详细的定义, 架构完备且具有可调整的弹性。
2021/2/24
15
1. 2. 3.
2021/2/24
16
-
极限编程,最轻量级的开发流程,其 最主要的精神是『在客户有系统需求 时,给予及时满意的可执行程序』, 所以最适合需求快速变动的项目
2021/2/24
21
原则和实践
是的一个原则,每个完成一些用户有 意义的功能集合,尽快的提交给用户 以获得反馈,及时调整,提交的越晚, 调整越困难。
2021/2/24
22
原则和实践
团队在开发过程中要收集数据,以便 于对自己的开发速度进行评估,用于 以后的
2021/2/24
23
原则和实践
每个 的周期称为,每个约为1-3周,在一个 项目中保持每个的时间相等,不要超前制定 计 划,每个的计划在的开始时制定。这样能 够更灵活的应付变化。不要急于完成本次没 有包括的功能。要 注重每个的时间限制,当 团队觉得不能按时完成时,召开一次 会议, 重新评估,减少一些 。
根据 在 会议上创建,它也应该可以自动运行以便可以经常运 行。
2021/2/24
20
原则和实践
召开一个 会议,产生 。 将用于指定每个的 计划。开发人员对每个 估计开发时间(在不 被打断,无其他工作情况下的开发时间,包 括测试),用户对 给出优先级, 会议并不 制订每个的计划。 要用户,开发人员和管理 者都同意,在完成功能范围(),使用资源 (),时间()和质量()上达 成一致(一般质 量是不能改变的)
2021/2/24
24
原则和实践
在每个 开始的时候召开会议,从 中选择还 没有实现的用户最迫切需要的 。上一个中没 有通过验收测试的功能也要在这个中实现。 可以根据上一个的实践调整团 队速度。 和 失败的测试被分解成 ,使用技术语言编写, 作为 的详细描述。程序员主动领取并估计完 成时间,每个应该在1-3天内完成,超过3天 的应该被细分。如果整个团队需要的时间 多 于或少于规定的时间,调整 。
只要有可能 就进行代码整合,周期可以在几个小时, 最好不要超过一天。
2021/2/24
32
原则和实践3
共同拥有代码
鼓励每个人对项目中的任何人提 出新的想法,任何开 发人员对项目中的任何代码都可以进行增加功能, 改正错误和重构。
优化工作放在最后
先使系统能够正常工作,不要猜测系统的瓶颈,要实 际测量
强迫节省时间,会议的目的是交流,
提出存在的问题,但不要在会议上解
决问 题。开一个所有人员参加的短会
比多个个别人员参加的会议要高效。
在会议上提出的问题可以由少数人讨
论解决,这个少数人参加的会议如果
涉及到代码,可以在计算机前讨论。
2021/2/24
27
原则和实践
并不是一成不变的,当团队觉得需要 修改的时候,可以根据自己的情况进 行修改,任何修改都要经过整个团队 的讨论和达成一致
2021/2/24
28
原则和实践1
保持简单的设计,在完成同样的功能的情况下,选择简单的设 计,不要急于设计没有计划的功能,应该认识到: a
使用统一的术语描述系统,在用户,管理者和开发人员之间使 用统一的术语。这将使交流清晰。
使用(, , ) 进行系统设计,鼓励更多的人参加设计。每个卡片 表示系统中一个对象,写上对象的名字,责任和每个责任需要 交互的其他对象。可以模拟对象之间 的交互。卡片是易于理 解的,但是是非正式的,如果需要正式的文档,要将卡片转换 为相应的文档。
2021/2/24
29
原则和实践2
使用 减低风险,当遇到技术难题或设计问题 时,使用简单的程序进行测试,找出问题, 在不同的解决方法之间进行评估。在早期进 行实验可以有效的降低风险。
不要过早的设计没有计划的功能,在一个需 求经常变化的环境中,过早的设计经常是没 有用的。
鼓励对设计和代码经常进行重构(),目的 是去除冗余,提高质量,保持设计简单。重 构必须以完全测试为检验条件
在敏捷开发中,项目的构建被切分成 多个子项目,各个子项目的成果都经 过测试,具备集成和可运行的特征 。
2021/2/24
4
Biblioteka Baidu
敏捷开发核心价值 ( )
个人和交流重于过程和工具
正在运行的软件本身重于复杂的文档
与客户的沟通和交流重于使用合同约束客户
a
对变化的快速响应重于跟随计划
2021/2/24
5
敏捷开发原则()
责思考与设计; 程序必须符合程序规范,并常做程序的重构 ()。
2021/2/24
19
原则和实践
类似 , 描述用户所见的系统功能,但避免使用大 量的文档, 由用户编写(不仅限于描述用户界面)。 使用用户的语言编写,不使用技术性的语言,每个 限于几句话。 用于在 会议上对开发时间进行评估, 也用于产生验收测试( ),必须使用可以自动进行 的验收测试保证软件的正确性。 与传统的用户需求 的区别在于详细的程度, 并不会确定需求的每个细 节,它只是用来简单的描述系统功能,供开发人员 进行估计开发进度,在开发过程中开发人员和用户 会不断的交流以讨论细 节问题。 应该专注于功能, 不应该过分注重用户界面等细节。一般一个 在1-3 周的时间完成,如果估计超过3周,说明 太大了, 需要细分 .