简单说一下什么是敏捷开发?

敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发;而这种开发方式的主要驱动核心是人;它采用的是迭代式开发;为什么说是以人为核心?我们大部分人都学过瀑布开发模型,它是以文档为驱动的,为什么呢?因为在瀑布的整个开发过程中,要写大量的文档,把需求文档写出来后,开发人员都是根据文档进行开发的,一切以文档为依据;而敏捷开发它只写有必要的文档,或尽量少写文档,敏捷开发注重的是人与人之间,面对面的交流,所以它强调以人为核心。

下面介绍一下Scrum和XP

前面说了敏捷它是一种指导思想或开发方式,但是它没有明确告诉我们到底采用什么样的流程进行开发,而Scrum和XP就是敏捷开发的具体方式了,你可以采用Scrum方式也可以采用XP方式;Scrum和XP的区别是,Scrum偏重于过程,XP则偏重于实践,但是实际中,两者是结合一起应用的,这里我主要谈一下Scrum。

什么是Scrum?

Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作;把一个开发流程的名字取名为Scrum,我想你一定能想象出你的开发团队在开发一个项目时,大家像打橄榄球一样迅速、富有战斗激情、人人你争我抢地完成它,你一定会感到非常兴奋的。而Scrum就是这样的一个开发流程,运用该流程,你就能看到你团队高效的工作。

Scrum通常用三三五五归纳

简单来说就是:

三个角色:Product Owner,Development Team,Scrum Master。Scrum Master

三个产出:Product Backlog,Sprint Backlog,Work Dliverable Software

五个会议:Sprint Planing Meeting,Sprint, Daily Stand up Meeting, Sprint Review, Sprint Retrospective

五个价值观:Courage,Commitment,Focus,Respect,Openness

详细进行介绍就是:

产品负责人(Product Owner)

主要负责确定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,同时有权力接受或拒绝开发团队的工作成果。

流程管理员(Scrum Master)

主要负责整个Scrum流程在项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发。

开发团队(Scrum Team)

主要负责软件产品在Scrum规定流程下进行开发工作,人数控制在5~10人左右,每个成员可能负责不同的技术方面,但要求每成员必须要有很强的自我管理能力,同时具有一定的表达能力;成员可以采用任何工作方式,只要能达到Sprint的目标。

3个产出:产品Backlog, Sprint Backlog,潜在可交付软件增量

5个会议:产品待办梳理会,Sprint计划会,每日站会,Sprint评审会,Sprint回顾会

5个价值观:公开,专注,勇气,承诺,尊重

那么怎么进行Scrum开发呢?

1、我们首先需要确定一个Product Backlog(按优先顺序排列的一个产品需求列表),这个是由Product Owner 负责的;

2、Scrum Team根据Product Backlog列表,做工作量的预估和安排;

3、有了Product Backlog列表,我们需要通过 Sprint Planning Meeting(Sprint计划会议) 来从中挑选出一个Story作为本次迭代完成的目标,这个目标的时间周期是1~4个星期,然后把这个Story进行细化,形成一个Sprint Backlog;

4、Sprint Backlog是由Scrum Team去完成的,每个成员根据Sprint Backlog再细化成更小的任务(细到每个任务的工作量在2天内能完成);

5、在Scrum Team完成计划会议上选出的Sprint Backlog过程中,需要进行 Daily Scrum Meeting(每日站立会议),每次会议控制在15分钟左右,每个人都必须发言,并且要向所有成员当面汇报你昨天完成了什么,并且向所有成员承诺你今天要完成什么,同时遇到不能解决的问题也可以提出,每个人回答完成后,要走到黑板前更新自己的 Sprint burn down(Sprint燃尽图);

6、做到每日集成,也就是每天都要有一个可以成功编译、并且可以演示的版本;很多人可能还没有用过自动化的每日集成,其实TFS就有这个功能,它可以支持每次有成员进行签入操作的时候,在服务器上自动获取最新版本,然后在服务器中编译,如果通过则马上再执行单元测试代码,如果也全部通过,则将该版本发布,这时一次正式的签入操作才保存到TFS中,中间有任何失败,都会用邮件通知项目管理人员;

7、当一个Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,这时,我们要进行 Srpint Review Meeting(演示会议),也称为评审会议,产品负责人和客户都要参加(最好本公司老板也参加),每一个Scrum Team的成员都要向他们演示自己完成的软件产品(这个会议非常重要,一定不能取消);

8、最后就是 Sprint Retrospective Meeting(回顾会议),也称为总结会议,以轮流发言方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中;

TDD与BDD

在敏捷开发里一直都有一种说法叫“代码即文档”,而且测试代码也成了功能代码的使用文档。敏捷里强调的TDD(Test-driven developmenet, 测试驱动开发),就主要体现了这种思想:根据设计编写测试-> 实现设计的功能 -> 用测试代码验证 -> 重构实现代码 -> 改善设计 -> 再次回到根据改善的设计编写测试。反复循环下去,就是TDD所倡导的流程。

TDD的好处:1. 能驱使系统最终的实现代码,都可以被测试代码所覆盖到,也即“每一行代码都可测”。2. 测试代码作为实现代码的正确导向,最终演变为正确系统的行为,能让整个开发过程更加高效。TDD的不足之处或者说还不够完善的地方,是对设计和测试的编写没有一个明确的方针。作为整个循环中的向导部分,如何保证根据设计编写的测试就是最终用户所期望的系统行为?如果这一部分模糊了,那么后续所有环节几乎都要受到影响。所以,再次基础上,敏捷社区又有人提出了BDD的概念,即“行为驱动开发”。

BDD(Behavior-driven development)把TDD中模糊的那一部分给明确了,强调开发、测试、BA、客户等所有项目相关人员都用自然语言来描述系统的行为。大家看到的描述一致,读到的内容一致,于是最终测试驱动开发产出的结果也应该是最符合用户期望的。

CI很容易理解,就是持续集成。但是CD既可以指代码持续交付,也可理解为代码持续部署。CI和CD之间有很多相似的部分,但是也有很大的区别。

持续集成(CONTINUOUS INTEGRATION)

在持续集成环境中,开发人员将会频繁的提交代码到主干。这些新提交在最终合并到主线之前,都需要通过编译和自动化测试流进行验证。这样做是基于之前持续集成过程中很重视自动化测试验证结果,以保障所有的提交在合并主线之后的质量问题,对可能出现的一些问题进行预警。

持续交付(CONTINUOUS DELIVERY)

持续交付就是讲我们的应用发布出去的过程。这个过程可以确保我们尽可能快的实现交付。这就意味着除了自动化测试,我们还需要有自动化的发布流,以及通过一个按键就可以随时随地实现应用的部署上线。

通过持续交付,您可以决定每天,每周,每两周发布一次,这完全可以根据自己的业务进行设置。

但是,如果您真的希望体验持续交付的优势,就需要先进行小批量发布,尽快部署到生产线,以便在出现问题时方便进行故障排除。

敏捷下的scrim、xp、3355、TDD、BDD、CI、DI及四个仪式、十二原则汇总相关推荐

  1. 敏捷宣言和敏捷的十二原则

    敏捷宣言和敏捷的十二原则 1.为什么需要敏捷 在我们的项目实施的过程常常会使用不同的开发模型,例如瀑布型:"项目立项-需求分析-软件设计-软件开发-软件测试-项目验收",前一个工作 ...

  2. 敏捷开发相关(四大价值观+十二原则)

    ● 为什么需要敏捷? ● 敏捷怎么做? ● 敏捷做些什么? 在这里插入图片描述](https://img-blog.csdnimg.cn/495f7164c242465d8fe5c9c04173438 ...

  3. 质量管理14条原则、敏捷开发宣言、敏捷开发十二原则

    一.质量管理大师爱德华·戴明博士经典的质量管理14条原则 1. Create constancy of purpose toward improvement of product and servic ...

  4. xp计算机限制打开u盘,禁止xp系统U盘写入文件的四个方法

    禁止xp系统U盘写入文件的四个方法:我们平时在用电脑办公的时候,经常会接触到U盘,U盘以其小巧便于携带.存储容量大.价格便宜.性能可靠的优点,深受大家的喜爱.U盘连接到电脑USB接口后,U盘的资料可与 ...

  5. Atitit各种SDM 软件开发过程SDP sdm的ddd tdd bdd设计

    Atitit各种SDM 软件开发过程SDP sdm的ddd tdd bdd设计 1.1. software development methodology (also known as SDM 1 1 ...

  6. XP框架开启debug模式_敏捷方法之极限编程(XP)和 Scrum

    敏捷软件开发(Agile software development),又叫敏捷开发,是一种应对开发过程中需求快速频繁变更的软件开发能力.敏捷开发强调开发团队与业务专家之间的紧密协作.面对面的沟通.频繁 ...

  7. ATDD,TDD,BDD的区别

    ATDD: Acceptance Test Driven Development(验收测试驱动开发) 是一种在编码开始之前将客户带入测试设计过程的技术.也是一个协作实践,用户,测试人员和开发人员定义了 ...

  8. VMware下ghost安装XP后无法从硬盘启动的问题

    在VMware上安装Ghost版本的XP后,却怎么都无法顺利引导,更进不了系统.VMware下ghost安装XP后无法从硬盘启动的问题 总是提示:No boot filename received.O ...

  9. 安装VM及在VM下安装Ghost XP系统图文教程,附PQ分区及VM共享教程 z

    安装VM及在VM下安装Ghost XP系统图文教程,附PQ分区及VM共享教程 z http://blog.sina.com.cn/s/blog_58dae96501000710.html 第一章:安装 ...

最新文章

  1. 巩固好基础,才能学好Linux
  2. onkeyup,onkeydown和onkeypress
  3. scp命令 – 远程拷贝文件
  4. asp.net core 使用newtonsoft完美序列化WebApi返回的ValueTuple
  5. tomee_微服务系列:MicroProfile和Apache TomEE
  6. Js引擎解析执行 阅读笔记
  7. 運輸配送信息Delivery_Information
  8. 【LeetCode+51nod】股票低买高卖N题
  9. Logrotate操作手册
  10. 64位计算机安装xp,Windows XP(64位)如何安装语言包
  11. 用vue-cli搭建vue项目
  12. Idea安装MarkDown插件
  13. mac用u盘安装linux系统教程视频,教你如何用u盘重装mac系统教程
  14. 通过poi导出带图片的Excel表格
  15. 网站账号中密码的加密方式
  16. 在 Half-Life MOD 中创建自己的武器及弹药
  17. 【华为机试真题 Python实现】查找众数及中位数
  18. 九龙证券|看好2-4月份汽车月度销量增速的逐月改善
  19. struct 和 typedef struct 的区别
  20. 一款免费的容器安全 SaaS 平台使用记录

热门文章

  1. HDU 1847 Good Luck in CET-4 Everybody! 尼姆博弈
  2. App推广中常用名词
  3. python麦克劳林级数展开
  4. CDA Level1知识点总结之数据分析概述与职业操守
  5. ICS文件说明和创建(以Outlook为例)
  6. 关于(广义)代数特征值问题的一点注记
  7. 通达信macd接口指标
  8. pytorch基础(九)- 自定义数据集训练模型 和 迁移学习
  9. java 验证码 字母_使用java生成字母验证码
  10. appleID有必要开双重认证吗!