一文总览敏捷软体开发术语

1. 什么是Agile?

Agile是一种软件开发的理念,是对Software Development的价值观。不是所有Project都应该使用Agile。Agile只是对现在商业模式急速变化,商机稍纵即逝,软件开发相对应用于降低风险,快速体现价值的方法。

2. 什么是敏捷开发?

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

它不是一门技术,它是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发;而这种开发方式的主要驱动核心是人;它採用的是迭代式开发。敏捷开发之所以採用迭代的方式,实际上是利用蚕食方式逐步完成开发任务。将一个宏伟的目标切割为一个个小目标,会给予团队成员更大的信心,并且能够更加清晰地明确目标。而每次迭代后的回顾,则使得团队成员可以更加清晰地明确我们在这个征途中,已经走到了哪里,未来还有多远的路程。

Agile就像一把大伞,Scrum、XP等都是其中的一员,Scrum是一种框架,更注重于一些过程,XP更注重于实践。

agile umbrella visual paradigm的圖片搜尋結果
敏捷方法论有一个共同的特点,那就是都将矛头指向了“文档”,它们认为传统的软件工程方法文档量太“重”了,称为“重量级”方法,而相应的敏捷方法则是“轻量级”方法。

3. 敏捷开发方式

3.1、什么是XP?

XP:极限编程(eXtreme Programming)
XP是一种轻量(敏捷)、高效、低风险、柔性、可预测、科学而且充满乐趣的软件开发方式。

extreme programming visual paradigm的圖片搜尋結果

与其他方法论相比,其特点有:

1.在更短的周期内,更早地提供具体、持续的反馈信息。

2.在迭代的进行计划编制,首先在最开始迅速生成一个总体计划,然后在整个3.项目开发过程中不断的发展它。

3.依赖于自动测试程序来监控开发进度,并及早地捕获缺陷。

4.依赖于口头交流、测试和源程序进行沟通。

5.倡导持续的演化式设计。

6.依赖于开发团队内部的紧密协作。

7.尽可能达到程序员短期利益和项目长期利益的平衡。

3.2、什么是scrum?

Scrum (英式橄榄球争球队):软件开发模型是敏捷开发的一种;

extreme programming visual paradigm的圖片搜尋結果

Sprints(冲刺/迭代)

(1)Scrum的项目过程由一系列的Sprint组成。

(2)Sprint就是一个迭代开发週期

(3)通常每个Sprint长度为1~4週

(4)通过固定的周期保持良好的节奏。

(5)产品的设计、开发、测试都在Sprint期间完成。

(6)Sprint结束时交付可以工作的软件。

(7)在Sprint过程中Product Backlog及Sprint结束时间不允许发生变更;Sprint计划前,Product Backlog可以调整。

3.2.1 Scrum的基本假设:

开发软件就像开发新产品,无法一开始就能定义软件产品最终的规程,过程中需要研发、创意、尝试错误,所以没有一种固定的流程可以保证专案成功。Scrum 将软件开发团队比拟成橄榄球队,有明确的最高目标,熟悉开发流程中所需具备的最佳典範与技术,具有高度自主权,紧密地沟通合作,以高度弹性解决各种挑战,确保每天、每个阶段都朝向目标有明确的推进。

Scrum模型的一个显着特点就是响应变化,它能够尽快地响应变化。

3.2.2 有关Scrum的几个名词

backlog :可以预知的所有任务,包括功能性和非功能性的所有任务。
Sprint:“冲刺”的意思,把一次迭代的开发内容以最快的速度完成它,这个过程我们称它为Sprint。
sprint backlog :一个sprint週期内所需要完成的任务。
scrum Master :负责整个Scrum进程,修订计划的一个团队成员。
time-box :一个用于开会时间段。比如每个daily scrum meeting的time-box为15分钟。
sprint planning meeting :在启动每个sprint前召开的会议。

Daily Scrum meeting:每日站会。每个成员简短汇报,通过该会议,团队成员可以相互了解项目进度。

Sprint review meeting:每个Sprint结束后的评审会议,演示成果。

Sprint retrospective meeting:对刚结束的Sprint进行总结。

3.2.3 实施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分钟左右,每个人都必鬚髮言,并且要向所有成员当面汇报你昨天完成了什么,并且向所有成员承诺你今天要完成什么,同时遇到不能解决的问题也可以提出,每个人回答完成后,更新自己的kanban;

6、做到每日集成,也就是每天都要有一个可以成功编译、并且可以演示的版本;;

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

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

9、这样周而复始,按照同样的步骤进行下一次Sprint。

3.2.4 scrum中“3355”是指:

3355 visual paradigm的圖片搜尋結果

3个工件: Product Backlog, Sprint Backlog, increment(可交付软件增量)

3个角色: Product Owner, Scrum Master, Scrum Team

5个会议:Product Backlog Refinement(产品任务细化)

Sprint Planning Meeting

Daily Scrum Meeting

Sprint Review Meeting

Sprint Retrospective Meeting

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

3.2.5 Scrum的四个仪式:

scrum events visual paradigm的圖片搜尋結果

(1)、Scrum仪式之Sprint计划

在启动一个正式Sprint之前,需要组织一些项目要做事宜(例如需求收集,成本评估,架构审核,发布计划等)

在Scrum框架下,没有“个人”的概念,Scrum依靠的是团队的力量。儘管Scrum Master在这个框架下的作用很重要,但这个人不是独裁者。做Sprint计划时,一定要让整个团队参加。

(2)、Scrum仪式之Scrum站会

站立会议是敏捷软件开发方法论Scrum的相关技术之一,亦可称之为Scrum的最佳实践。

具体形式为:每天同一时间,一个敏捷开发团队的所有成员面对面站在一起,进行一个为期15~20分钟的短会。

站立会议的意义和作用是:

站立会议不仅能要让所有人了解其他人在做什么,当前项目计划进展如何,还可以帮助大家解决那些阻碍做事情的问题,以及共享承诺。

(3)、Scrum仪式之Sprint评审

Sprint评审会用来演示在这个Sprint中开发的产品功能给Product Owner, Produc Owner会组织这阶段的会议并且邀请相关的干係人参加。

Sprint演示:在一个Sprint结束以后,进行Sprint评审,团队在此期间展示他们所完成的工作、可运行的软件。出席此会议的有Product Owner、开发团队、ScrumMaster、客户、等任何对此感兴趣的人。

(4)、Scrum仪式之Sprint回顾

Sprint回顾会议与项目总结会议不同:它不是要对项目进行盖棺定论,而是通过及时回顾,总结上一次Sprint中的得与失,找到改善与提高的办法,从而让下一个Sprint走得更好。

4. Agile的12原则
agile principles visual paradigm的圖片搜尋結果

1、我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。

Scrum:产品需求列表中的优先级及每次迭代后持续提交工作软件

2、欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。

Scrum:产品需求列表可以随时更新

3、经常地交付可工作的软件,相隔几星期或一两个月,倾向于採取较短的周期。

Scrum:1-4週的的迭代周期

4、业务人员和开发人员必须相互合作,项目中的每一天都不例外。

Scrum:跨职能团队及每日15分钟的站立会议

5、激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。

Scrum:团队自我管理原则

6、不论团队内外,传递信息效果最好和效率最高的方式是面对面的交谈。

Scrum:5~9人的小团队,kanban的使用以及开放环境的面对面沟​​通

7、可工作的软件是进度的首要度量标準。

Scrum:对工作的软件的关注,演示会要求提供可以被验收和演示的内容

8、敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。

Scrum:时间盒概念,迭代速率的使用

9、坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。

Scrum:要求对产品需求列表中每个用户故事都定义一个完成标準;

10、以简洁为本,它是极力减少不必要工作量的艺术。

Scrum:尽量製作正好够的东西已经在恰当时间做决策

11、最好的架构、需求和设计出自组织团队。

Scrum:如何做完全放在团队手中;

12、团队定期地反思如何能提高成效,并依此调整自身的举止表现。

Scrum:回顾会的作用

5. TDD、BDD、ATDD、DDD开发

(1)、TDD:测试驱动开发(Test-Driven Development)

测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论,TDD首先考虑使用需求(对象、功能、过程、接口等)

主要是编写测试用例框架对功能的过程和接口进行设计,而测试框架可以持续进行验证。

(2)、BDD:行为驱动开发(Behavior Driven Development)

实际上BDD可以看作是对TDD的一种补充,让开发、测试、BA以及客户都能在这个基础上达成一致,JBehave之类的BDD框架

(3)、ATDD:验收测试驱动开发(Acceptance Test Driven Development)

通过单元测试用例来驱动功能代码的实现,团队需要定义出期望的质量标準和验收细则,以明确而且达成共识的验收测试计划(包含一系列测试场景)来驱动开发人员的TDD实践和测试人员的测试脚本开发。面向开发人员,强调如何实现系统以及如何检验

(4)、DDD:领域驱动开发(Domain Drive Design)

DDD指的是Domain Drive Design,也就是领域驱动开发,DDD实际上也是建立在这个基础之上,因为它关注的是Service层的设计,着重于业务的实现,将分析和设计结合起来,不再使他们处于分裂的状态,这对于我们正确完整的实现客户的需求,以及建立一个具有业务伸缩性的模型


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章