敏捷开发培训
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四川省电信有限公司 - 6 -
Refactoring,重构
相信大家对它都很熟悉了,有很多很多的书用来介绍重构, 最著名的是Martin的《重构》,Joshua的《从重构到模式》 等。重构是在不改变系统外部行为下,对内部结构进行整 理优化,使得代码尽量简单、优美、可扩展。在以往开发 中,通常是在有需求过来,现在的系统架构不容易实现, 从而对原有系统进行重构;或者在开发过程中有剩余时间 了,对现在代码进行重构整理。但是在敏捷开发中,重构 贯穿于整个开发流程,每一次开发者check in代码之前, 都要对所写代码进行重构,让代码达到clean code that works。值得注意的是,在重构时,每一次改变要尽可能 小,用单元测试来保证重构是否引起冲突,并且不只是对 实现代码进行重构,如果测试代码中有重复,也要对它进 行重构
四川省电信有限公司 - 3 -
开发线路
四川省电信有限公司 - 4 -
Test-Driven Development,测试驱动开发
它是敏捷开发的最重要的部分。在ThoughtWorks,我们实 现任何一个功能都是从测试开始,首先对业务需求进行分 析,分解为一个一个的Story,记录在Story Card上。然后 两个人同时坐在电脑前面,一个人依照Story,从业务需 求的角度来编写测试代码,另一个人看着他并且进行思考, 如果有不同的意见就会提出来进行讨论,直到达成共识, 这样写出来的测试代码就真实反映了业务功能需求。接着 由另一个人控制键盘,编写该测试代码的实现。如果没有 测试代码,就不能编写功能的实现代码。先写测试代码, 能够让开发人员明确目标,就是让测试通过。
四川省电信有限公司 - 8 -
Stand up,站立会议
每天早上,项目组的所有成员都会站立进行一次会议,由于 是站立的,所以时间不会很长,一般来说是15-20分钟。 会议的内容并不是需求分析、任务分配等,而是每个人都 回答三个问题:1. 你昨天做了什么?2. 你今天要做什么? 3. 你遇到了哪些困难?站立会议让团队进行交流,彼此相 互熟悉工作内容,如果有人曾经遇到过和你类似的问题, 那么在站立会议后,他就会和你进行讨论
四川省电信有限公司 - 7 -
Pair-Programming,结对编程
在敏捷开发中,做任何事情都是Pair的,包括分析、写测试、 写实现代码或者重构。Pair做事有很多好处,两个人在一 起探讨很容易产生思想的火花,也不容易走上偏路。在我 们公司,还有很多事都是Pair来做,比如Pair学习,Pair 翻译,Pair做PPT,关于这个话题,钱钱同学有一篇很有 名的文章对它进行介绍,名为Pair Programming (结对编 程)。
敏捷开发培训
四川公司 2020/8/5
中国电信四川公司 - 1 -
目录
敏捷开发概述 敏捷开发的路线 敏捷开发的特点 敏捷开发的价值观 项目的敏捷开发方法 对敏捷开发的误解
中国电信四川公司 - 2 -
敏捷开发概述
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。 在敏捷开发中,软件项目的构建被切分成多个子项目,各 个子项目的成果都经过测试,具备集成和可运行的特征。 换言之,就是把一个大项目分为多个相互联系,但也可独 立运行的小项目,并分别完成,在此过程中软件一直处于 可使用状态。
对这些文档进行更新。一旦忘记更新文档,就会出现代码
和文档不匹配的情况,这更加会让人迷惑。而在敏捷中并
不会出现,因为只有测试变化了,代码才会变化,测试是
真实反应代码的。这时有人会问:代码不写注释行吗?一
般来说好的代码不是需要大量的注释吗?其实简单可读的
代码才是好的代码,既然简单可读了,别人一看就能够看
四川省电信有限公司 - 9 -
Frequent Releases,小版本发布
在敏捷开发中,不会出现这种情况,拿到需求以后就闭门造 车,直到最后才将产品交付给客户,而是尽量多的产品发 布,一般以周、月为单位。这样,客户每隔一段时间就会 拿到发布的产品进行试用,而我们可以从客户那得到更多 的反馈来改进产品。正因为发布频繁,每一个版本新增的 功能简单,不需要复杂的设计,这样文档和设计就在很大 程度上简化了。又因为简单设计,没有复杂的架构,所以 客户有新的需求或者需求进行变动,也能很快的适应。
四川省电信有限公司 - 10 -
Minimal Documentation,较少的文档
其实敏捷开发中并不是没有文档,而是有大量的文档,即测
试。这些测试代码真实的反应了客户的需求以及系统API
的用法,如果有新人加入团队,最快的熟悉项目的方法就
是给他看测试代码,而比一边看着文档一边进行debug要
高效。如果用书面文档或者注释,某天代码变化了,需要
懂,这时候根本不需要对代码进行任何注释。若你觉得这
段代码不加注释的话别人可能看不懂,就表示设计还不够
简单,需要对它进行重构
四川省电信有限公司 - 11 -
Collaborative Focus,以wk.baidu.com作为中心,表现为代码共享
四川省电信有限公司 - 5 -
Continuous Integration,持续集成
在以往的软件开发过程中,集成是一件很痛苦的事情,通常 很长时间才会做一次集成,这样的话,会引发很多问题, 比如 build未通过或者单元测试失败。敏捷开发中提倡持 续集成,一天之内集成十几次甚至几十次,如此频繁的集 成能尽量减少冲突,由于集成很频繁,每一次集成的改变 也很少,即使集成失败也容易定位错误。一次集成要做哪 些事情呢?它至少包括:获得所有源代码、编译源代码、 运行所有测试,包括单元测试、功能测试等;确认编译和 测试是否通过,最后发送报告。当然也会做一些其它的任 务,比如说代码分析、测试覆盖率分析等等。在我们公司 里,开发人员的桌上有一个火山灯用来标志集成的状态, 如果是黄灯,表示正在集成;如果是绿灯,表示上一次集 成通过,开发人员在这时候获得的代码是可用而可靠的; 如果显示为红灯,就要小心了,上一次集成未通过,需要 尽快定位失败原因从而让灯变绿。在持续集成上,我们公
Refactoring,重构
相信大家对它都很熟悉了,有很多很多的书用来介绍重构, 最著名的是Martin的《重构》,Joshua的《从重构到模式》 等。重构是在不改变系统外部行为下,对内部结构进行整 理优化,使得代码尽量简单、优美、可扩展。在以往开发 中,通常是在有需求过来,现在的系统架构不容易实现, 从而对原有系统进行重构;或者在开发过程中有剩余时间 了,对现在代码进行重构整理。但是在敏捷开发中,重构 贯穿于整个开发流程,每一次开发者check in代码之前, 都要对所写代码进行重构,让代码达到clean code that works。值得注意的是,在重构时,每一次改变要尽可能 小,用单元测试来保证重构是否引起冲突,并且不只是对 实现代码进行重构,如果测试代码中有重复,也要对它进 行重构
四川省电信有限公司 - 3 -
开发线路
四川省电信有限公司 - 4 -
Test-Driven Development,测试驱动开发
它是敏捷开发的最重要的部分。在ThoughtWorks,我们实 现任何一个功能都是从测试开始,首先对业务需求进行分 析,分解为一个一个的Story,记录在Story Card上。然后 两个人同时坐在电脑前面,一个人依照Story,从业务需 求的角度来编写测试代码,另一个人看着他并且进行思考, 如果有不同的意见就会提出来进行讨论,直到达成共识, 这样写出来的测试代码就真实反映了业务功能需求。接着 由另一个人控制键盘,编写该测试代码的实现。如果没有 测试代码,就不能编写功能的实现代码。先写测试代码, 能够让开发人员明确目标,就是让测试通过。
四川省电信有限公司 - 8 -
Stand up,站立会议
每天早上,项目组的所有成员都会站立进行一次会议,由于 是站立的,所以时间不会很长,一般来说是15-20分钟。 会议的内容并不是需求分析、任务分配等,而是每个人都 回答三个问题:1. 你昨天做了什么?2. 你今天要做什么? 3. 你遇到了哪些困难?站立会议让团队进行交流,彼此相 互熟悉工作内容,如果有人曾经遇到过和你类似的问题, 那么在站立会议后,他就会和你进行讨论
四川省电信有限公司 - 7 -
Pair-Programming,结对编程
在敏捷开发中,做任何事情都是Pair的,包括分析、写测试、 写实现代码或者重构。Pair做事有很多好处,两个人在一 起探讨很容易产生思想的火花,也不容易走上偏路。在我 们公司,还有很多事都是Pair来做,比如Pair学习,Pair 翻译,Pair做PPT,关于这个话题,钱钱同学有一篇很有 名的文章对它进行介绍,名为Pair Programming (结对编 程)。
敏捷开发培训
四川公司 2020/8/5
中国电信四川公司 - 1 -
目录
敏捷开发概述 敏捷开发的路线 敏捷开发的特点 敏捷开发的价值观 项目的敏捷开发方法 对敏捷开发的误解
中国电信四川公司 - 2 -
敏捷开发概述
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。 在敏捷开发中,软件项目的构建被切分成多个子项目,各 个子项目的成果都经过测试,具备集成和可运行的特征。 换言之,就是把一个大项目分为多个相互联系,但也可独 立运行的小项目,并分别完成,在此过程中软件一直处于 可使用状态。
对这些文档进行更新。一旦忘记更新文档,就会出现代码
和文档不匹配的情况,这更加会让人迷惑。而在敏捷中并
不会出现,因为只有测试变化了,代码才会变化,测试是
真实反应代码的。这时有人会问:代码不写注释行吗?一
般来说好的代码不是需要大量的注释吗?其实简单可读的
代码才是好的代码,既然简单可读了,别人一看就能够看
四川省电信有限公司 - 9 -
Frequent Releases,小版本发布
在敏捷开发中,不会出现这种情况,拿到需求以后就闭门造 车,直到最后才将产品交付给客户,而是尽量多的产品发 布,一般以周、月为单位。这样,客户每隔一段时间就会 拿到发布的产品进行试用,而我们可以从客户那得到更多 的反馈来改进产品。正因为发布频繁,每一个版本新增的 功能简单,不需要复杂的设计,这样文档和设计就在很大 程度上简化了。又因为简单设计,没有复杂的架构,所以 客户有新的需求或者需求进行变动,也能很快的适应。
四川省电信有限公司 - 10 -
Minimal Documentation,较少的文档
其实敏捷开发中并不是没有文档,而是有大量的文档,即测
试。这些测试代码真实的反应了客户的需求以及系统API
的用法,如果有新人加入团队,最快的熟悉项目的方法就
是给他看测试代码,而比一边看着文档一边进行debug要
高效。如果用书面文档或者注释,某天代码变化了,需要
懂,这时候根本不需要对代码进行任何注释。若你觉得这
段代码不加注释的话别人可能看不懂,就表示设计还不够
简单,需要对它进行重构
四川省电信有限公司 - 11 -
Collaborative Focus,以wk.baidu.com作为中心,表现为代码共享
四川省电信有限公司 - 5 -
Continuous Integration,持续集成
在以往的软件开发过程中,集成是一件很痛苦的事情,通常 很长时间才会做一次集成,这样的话,会引发很多问题, 比如 build未通过或者单元测试失败。敏捷开发中提倡持 续集成,一天之内集成十几次甚至几十次,如此频繁的集 成能尽量减少冲突,由于集成很频繁,每一次集成的改变 也很少,即使集成失败也容易定位错误。一次集成要做哪 些事情呢?它至少包括:获得所有源代码、编译源代码、 运行所有测试,包括单元测试、功能测试等;确认编译和 测试是否通过,最后发送报告。当然也会做一些其它的任 务,比如说代码分析、测试覆盖率分析等等。在我们公司 里,开发人员的桌上有一个火山灯用来标志集成的状态, 如果是黄灯,表示正在集成;如果是绿灯,表示上一次集 成通过,开发人员在这时候获得的代码是可用而可靠的; 如果显示为红灯,就要小心了,上一次集成未通过,需要 尽快定位失败原因从而让灯变绿。在持续集成上,我们公