扫盲贴:敏捷开发,你真的够了解吗?

Posted 华为开发者社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扫盲贴:敏捷开发,你真的够了解吗?相关的知识,希望对你有一定的参考价值。



2001年,敏捷开发被提出。15年后的今天,敏捷开发依旧很火热。“敏捷”如此流行,作为开发人员的你,是否真的够了解?


今天,我们站在前人的肩膀上,一起来看看火了15年的敏捷开发到底是什么?它与传统开发模式又有何区别?敏捷开发的实施又能为开发人员带来什么?


一、什么是敏捷开发?


简单来讲,敏捷开发不是一门技术,而是一种开发模式、开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发。


敏捷开发以人为中心,注重开发者体验;敏捷开发强调:快速反应、快速迭代、价值驱动。


扫盲贴:敏捷开发,你真的够了解吗? 什么?你对于敏捷开发的整体概念还没有清晰的认识?看完下面这几点,你就会懂更多:


扫盲贴:敏捷开发,你真的够了解吗?
首先,敏捷开发是一种过程控制论,通俗的说,就是一种做事情的方法;


  • 它适用于软件,因为软件是软的,可以改。要是硬件,改起来就没那么方便了;


  • 它适用于客户不知道自己要啥的情况,其实,这样的客户占绝大多数。因为客户不知道要啥,所以你需要不断帮客户弄明白他到底想要啥。换句话说,你需要和客户沟通、合作、倾听反馈、持续改进;


扫盲贴:敏捷开发,你真的够了解吗?


  • 它适用于竞争激烈的市场,这样的情况下,赶在竞争对手前交付一个不完美但至少能用的产品非常重要;


  • 它适用于快速变化的市场,你在埋头造一辆汽车的时候,客户已经想开飞机满天飞了,这就需要你能一步步的把汽车改成飞机,还能按时交付。

扫盲贴:敏捷开发,你真的够了解吗?

其次,敏捷开发是一套工具集,里面有形形色色的工具,你可以不搞敏捷,但可以用那么一两个来提高工作效率;


扫盲贴:敏捷开发,你真的够了解吗?

再其次,敏捷开发是一种企业管理方式。



二、为什么要实施敏捷开发?


敏捷开发模式可以增强应对需求变化的能力、提高产品质量、提升开发效率、缩短支付周期。


根据Scott Ambler在2008年发起的网上调查结果显示:敏捷对生产率、质量、满意度、成本都有明显改进:


扫盲贴:敏捷开发,你真的够了解吗?

(点击图片,查看大图)


三、敏捷开发与传统开发有何区别


敏捷开发模式出现之前,开发者一直采用的是传统开发模式。那,敏捷开发与传统开发模式有何区别?敏捷开发的优势何在?


扫盲贴:敏捷开发,你真的够了解吗?


1
传统开发模式以文档为驱动,而敏捷开发提倡少写文档。


传统开发模式:开发人员和项目参与人员接到客户开发需求之后,会事先整理出一套开发文档,开发过程按照这个文档来进行,过程中客户基本上不参与到产品的验收和体验中,待项目成品出来之后才与客户进行项目交接,这样的开发模式可能会导致最后开发出来的成品并不是客户想要的,而这时候再去修改会产生很大的问题。


敏捷开发模式:按照规定模式/流程来开发,少写文档,只写必要的文档,传统开发模式里出现的问题也完全可以避免。


2
敏捷模式采取迭代式开发,传统模式采用瀑布式开发。


敏捷开发采取迭代式开发的形式,即每个阶段有每个阶段需要完成、并且能使用的产品,这一阶段只要开发某几个功能,不多增加其他功能,且这些功能的产品必须是可以使用的,这一阶段产品完成之后与客户进行对接交付,客户没意见之后,在进行下一阶段的开发。


3
传统开发模式认为开发过程可预测,敏捷开发模式认为开发过程变数较多。


传统开发模式里,软件开发过程是确定的、可测的。只要在一开始努力收集到需要的信息并制定好计划,然后忠实的执行计划就应该可以成功。而在敏捷开发模式里,世界是变化的,有很多不确定性的。


扫盲贴:敏捷开发,你真的够了解吗? 啥?对于传统开发和敏捷开发之间的区别还不清楚?看完下面这张图,你就能了解:


扫盲贴:敏捷开发,你真的够了解吗?


如上图所示,软件更像一个活着的植物,软件开发是自底向上逐步有序的生长过程,类似于植物自然生长。


敏捷开发遵循软件客观规律,不断的进行迭代增量开发,最终交付符合客户价值的产品。就像上图所示的植物生长过程一样,一个阶段一个阶段的来,并不是一次性交付。


四、敏捷开发实践


上述段落阐述的都是敏捷开发的理论和指导思想,但是它没有明确告诉我们到底采用什么样的流程进行开发,而Scrum和XP就是敏捷开发的具体方式,你可以采用Scrum或XP方式进行敏捷开发。


扫盲贴:敏捷开发,你真的够了解吗?

(敏捷开发的内容)


敏捷软件开发是以短周期迭代为核心,包含团队、工作件、管理和技术优秀实践的集合。


1
Scrum和XP的区别


Scrum专注于如何管理和交付你的产品,Scrum会强调团队工作方式。XP却是考究于如何去做你的工作;


XP说的更多的是告诉程序员应该做什么,相对比,Scrum是一种项目管理方法论;


XP的与众不同之处在于它是一种体系,而不是一种解决方案。


2
Scrum开发流程


可以把Scrum理解为快速而富有激情的开发。


Scrum开发流程中包含三大重要角色:产品负责人(Product Owner)、流程管理员(Scrum Master)、开发团队(Scrum Team)。


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


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


开发团队:主要负责软件产品在Scrum规定流程下进行开发工作。


那么,如何进行Scrum开发呢?下面一张图就能解释清楚:


扫盲贴:敏捷开发,你真的够了解吗?


3
敏捷开发之XP


XP(Extreme Programming的缩写),中文译为极限编程。XP旨在通过具体工程实践的合理搭配,让开发者能够快速的响应客户需求。XP强调:客户与研发人员的反馈、测试与开发的反馈、结对之间的反馈……


在XP中,常见的工程实践有:


  • 测试驱动开发(TDD)


也叫单元测试先行,单元测试被认为是描述单元需求(大部分是函数的需求)一种手段,测试用例成为一种自动化的单元测试代码,首先通过单元测试确定要实现什么,即所谓WAHT的部分,再实现产品代码,即HOW的部分,产品代码的编写始终以需求来驱动。


扫盲贴:敏捷开发,你真的够了解吗?


  • 验收测试驱动开发(ATDD)


ATDD是对用户故事的级别的需求说明、分析、再驱动实现,他们都要求测试前置,即关注WHAT。


  • 结对编程


即两个人一起编写代码,共享显示器及键盘,一位同事担任的是navigator的角色,另一位是driver的角色。结对编程的前提是代码集体所有制,即代码为团队所共有,团队为代码的质量共同承担责任。


  • 持续集成

软件开发中,软件的代码由不同的人编写,需要将所有的代码从不同的位置收集到一处,然后进行编译,编译之后放到验证环境中进行部署。这就需要团队的成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。


五、敏捷开发总结


说了那么多敏捷的好处,但必须强调的是:


  • 敏捷不是说出来的,而是干出来的;

  • 敏捷不是不写文档,而是少写文档,只写必要性的文档;

  • 敏捷开发是一种软件过程方法和工具,敏捷开发本身并不能代表架构设计。



华为开发者社区

在一起 创梦想

官方微博:@华为开发者社区(新浪微博)


以上是关于扫盲贴:敏捷开发,你真的够了解吗?的主要内容,如果未能解决你的问题,请参考以下文章

521让小质用敏捷开发之Scrum为你扫盲

你真的了解Scrum吗?

产品经理需要自己的“敏捷开发”,你真的会吗?

敏捷开发的 4 个误区,你了解一下

你真的知道敏捷和迭代吗?

你觉得敏捷开发方法真的可以拯救我现在企业的IT现状吗?