小灰经过千辛万苦,终于拿到了心仪的offer,

今天小灰上班的第一天……

下班后,小灰找到同学大黄来请教……

场景一:小灰在餐厅

场景二:无奈的项目经理

什么是敏捷开发?

敏捷开发(Agile)是一种以人为核心、迭代、循序渐进的开发方法。

在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。

简单地来说,敏捷开发并不追求前期完美的设计、完美编码,而是力求在很短的周期内开发出产品的核心功能,尽早发布出可用的版本。然后在后续的生产周期内,按照新需求不断迭代升级,完善产品。

这一切正如某人的名言:

是谁这么厉害,提出了敏捷开发思想?是一位名叫Martin Fowler的美国大叔。

大叔不但是敏捷开发的创始人之一,还在面向对象开发、设计模式、UML建模领域做出了重要贡献。目前担任ThoughtWorks公司的首席科学家。

敏捷开发模式的分类

敏捷开发的实现主要包括 SCRUM、XP(极限编程)、Crystal Methods、FDD(特性驱动开发)等等。其中SCRUMXP最为流行。

同样是敏捷开发,XP 极限编程 更侧重于实践,并力求把实践做到极限。这一实践可以是测试先行,也可以是结对编程等,关键要看具体的应用场景。

SCRUM则是一种开发流程框架,也可以说是一种套路。SCRUM框架中包含三个角色,三个工件,四个会议,听起来很复杂,其目的是为了有效地完成每一次迭代周期的工作。在这里我们重点讨论的是SCRUM。

SCRUM的工作流程

学习Scrum之前,我们先要了解几个基本术语:

Sprint:冲刺周期,通俗的讲就是实现一个“小目标”的周期。一般需要2-6周时间。

User Story:用户的外在业务需求。拿银行系统来举例的话,一个Story可以是用户的存款行为,或者是查询余额等等。也就是所谓的小目标本身。

Task:由User Story 拆分成的具体开发任务。

Backlog:需求列表,可以看成是小目标的清单。分为Sprint Backlog和Product Backlog。

Daily meeting:每天的站会,用于监控项目进度。有些公司直接称其为Scrum。

Sprint Review meeting: 冲刺评审会议,让团队成员们演示成果。

Sprint burn down:冲刺燃尽图,说白了就是记录当前周期的需求完成情况。

Rlease:开发周期完成,项目发布新的可用版本。

 

如上图所示,在项目启动之前,会由团队的产品负责人(Product owner)按照需求优先级来明确出一份Product Backlog,为项目做出整体排期。

随后在每一个小的迭代周期里,团队会根据计划(Sprint Plan Meeting)确定本周期的Sprint Backlog,再细化成一个个Task,分配给团队成员,进行具体开发工作。每一天,团队成员都会进行Daily meeting,根据情况更新自己的Task状态,整个团队更新Sprint burn down chart。

当这一周期的Sprint backlog全部完成,团队会进行Spring review meeting,也就是评审会议。一切顺利的话,会发布出这一版本的Release,并且进行Sprint回顾会议(Sprint Retrospective Meeting)。

那么,现实中的Scrum是什么样的情景呢?看看下面的照片就知道了:

敏捷开发与Devops

Devops是Development和Operations的合成词,其目标是要加强开发人员、测试人员、运维人员之间的沟通协调。如何实现这一目标呢?需要我们的项目做到持续集成持续交付、持续部署

时下流行的JenkinsBamboo,就是两款优秀的持续集成工具。而Docker容器则为Devops提供了强大而有效的统一环境。

关于Devops以及Docker,在以后的文章中会做出更详细的介绍。

趣文:三分钟了解敏捷开发相关推荐

  1. 漫画:三分钟了解敏捷开发

    转载自 漫画:三分钟了解敏捷开发 什么是敏捷开发? 敏捷开发(Agile)是一种以人为核心.迭代.循序渐进的开发方法. 在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备 ...

  2. 【视觉运控一体机小课堂】三分钟搭建机器视觉开发环境

    回顾之前课程正运动技术与大家分享了,VPLC系列机器视觉运动控制一体机快速入门和应用案例等系列课程. 今天,我们来讲解一下正运动技术VPLC系列控制器ZDevelop编程软件如何来建立ZVision软 ...

  3. 从IT的角度思考BIM(三):敏捷开发

    人们看到了远处BIM的美丽胜景和阻挡在眼前的宽广河流.有些人自信满满地跳入河中打算孤身游过彼岸,可是却失败了.有些人匆匆忙忙地造了船胡乱地滑向彼岸,可是也失败了. 要如何继续这段探索之旅? 无论是&l ...

  4. react安装_「React实战」三分钟搭建React开发环境

    其实16年的时候就已经接触到React,那个时候也只是入门,时隔多年,工作上一直都没有接触到相关的业务,不知不觉,前端的天也开始渐变,看到 了很多招聘要求上都是要求会React,三大框架怎么也得熟悉使 ...

  5. Android学习教程三分钟学会安卓开发

    1.创建页面(activity_main是默认主页面) 可拖拽控件,点击下方text切换到代码 下图红框中的是控件的默认id 2.创建activity class(与layout一一对应) 在清单文件 ...

  6. 用微软Custom Version识别水果:三分钟开发人工智能小应用

    微软Custom Vision提供了成熟开源的计算机视觉开发框架,你只需要上传十张训练图片,即可一键训练图像分类模型(比如识别不同的水果.花卉.地标.人脸).不需要具备任何深度学习算法知识,小学生都能 ...

  7. \t\t【体会】敏捷开发 - 固本 + 持续小跑

    1) 注重概念和架构设计,而轻详细设计 敏捷开发中,注重概念和架构设计,而轻详细设计.这里的概念设计,可以看成是为什么要做这个产品或模块,强调的是产品的路线规划.市场趋势.客户价值.技术趋势等.架构设 ...

  8. 105.敏捷开发模型

    文章目录 1.什么是敏捷开发? 2.敏捷开发宣言 3.站立会议的意义 4.敏捷开发想解决什么问题? 5.如果用敏捷的方式盖房子 6.敏捷开发和瀑布模型的差异 (1)敏捷开发是怎么做需求分析的? (2) ...

  9. 浅谈一下“敏捷开发”

    为什么需要敏捷开发 在以前,软件项目的开发都是以年来计算的,这代表什么意思呢 ?需求设计了半年多,方案设计做了半年多,开发了三年多,测试了半年多,修改Bug用了半年多.总计花了很长很长的时间,然后上线 ...

最新文章

  1. CSS弹出二级多列菜单和DIV布局实例 - 仿IBM官网首页
  2. C++模板中的函数式参数
  3. 【2019暑假刷题笔记-树的遍历】总结
  4. (转)Cairngorm初学者入门教程 第四节--通过 Model Locator 控制管理 Views
  5. oracle使用sqlplus查询sql格式
  6. 产品经理经验谈100篇(三)-如何才能打造出一款好的SaaS产品?
  7. java代码嵌入html代码是什么_用java给html文件添加必要的控制html代码片
  8. 手机吃鸡登显示服务器繁忙,国际版吃鸡登录一直显示服务器繁忙 | 手游网游页游攻略大全...
  9. Anaconda3 | Ubuntu(python3.6)环境下安装opencv
  10. 测试只描述现象,不下结论
  11. 遗传算法的Python实现(通俗易懂)
  12. abaqus 录制结果动画_后处理动画录制
  13. 微博html5版开视频怎么退出,微博怎么取消视频号?微博视频号怎么关闭
  14. 西安电子科技大学计算机学院简介,西安电子科技大学计算机学院简介
  15. 一切前端概念,都是纸老虎(附送书的抽奖结果)
  16. js调用高德地图API接口——返回坐标和省市区地理位置信息
  17. php怎么插入图层,PS制作-把图片添加到图层的4种方法
  18. [翼灵物联网工作室例会分享]
  19. 在职计算机培训班,计算机科学与技术在职研究生招生院校有哪些?
  20. 矩阵求逆(全选主元高斯-约当消去法)

热门文章

  1. K8S (kubernetes)
  2. Nvidia Jetson Nano刷机保姆级教程
  3. 数据库分库分表解决方案
  4. 使用 PLINK 把 vcf 的0/0,0/1,1/1转为字母格式的基因型(比如AA,AG,GG)
  5. jmeter压测结果分析
  6. _stdcall _cdec区别
  7. 二进制与十进制间的转化
  8. System.Diagnostics.Stopwatch
  9. python的yield是什么意思,python生成器是怎么使用的 python中yield是什么意思
  10. bzoj4668: 冷战