文档章节

敏捷开发探寻本质

疯狂的兔子
 疯狂的兔子
发布于 2014/06/24 10:47
字数 1218
阅读 25
收藏 0

我们需要坐下来好好谈谈,什么事敏捷开发。

1.什么是敏捷开发?

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

怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发;而这种开发方式的主要驱动核心是人;它采用的是迭代式开发;

 我有一个朋友(大家都这么说,我有一个朋友如何如何,我有一个同学如何如何,故事往往是这样开始的),在一个大型的软件公司工作,他们公司是典型的瀑布模型,文档驱动。每个类,每个方法,都需要在文档里面注明。这样开发人员在开发的过程中就有了大量的维护工作来去做。你修改一个类之前,先要去修改一个文档。更重要的是我这个兄弟在日企工作。你联想到了什么?纯真的笑 :-D

曾将有一位先贤曾经说过,在软件的生命周期当中,除了需求确认和软件编码之外,所有的其他的工作都是shit! fuck!and if in chinese is 艹艹。

为什么说是以人为核心?

我们大部分人都学过瀑布开发模型,它是以文档为驱动的,为什么呢?因为在瀑布的整个开发过程中,要写大量的文档,把需求文档写出来后,开发人员都是 根据文档进行开发的,一切以文档为依据;而敏捷开发它只写有必要的文档,或尽量少写文档,敏捷开发注重的是人与人之间,面对面的交流,所以它强调以人为核 心。

注意,敏捷开发不是不要文档,而是删繁就简,把有限的精力集中到最重要的文档上面去。比如需求文档,这个必须有!

什么是迭代?

迭代是指把一个复杂且开发周期很长的开发任务,分解为很多小周期可完成的任务,这样的一个周期就是一次迭代的过程;同时每一次迭代都可以生产或开发出一个可以交付的软件产品。

里程碑式的意义,通过迭代不断地得到反馈。然后让软件满足客户的需求。分解任务一方面是激励团队,另一方面是把控任务。


关于Scrum和XP

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

 

什么是Scrum?

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

而Scrum就是这样的一个开发流程,运用该流程,你就能看到你团队高效的工作。

 

【Scrum开发流程中的三大角色】

产品负责人(Product Owner)

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

 

流程管理员(Scrum Master)

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

 

开发团队(Scrum Team)

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

 敏捷开发的要义是把对文档的依赖转化为对人的依赖,要求每个人都是一个自我管理特别牛叉的人。








© 著作权归作者所有

共有 人打赏支持
下一篇: 敏捷开发
疯狂的兔子
粉丝 34
博文 178
码字总数 101541
作品 0
北京
后端工程师
私信 提问
何勉:第一性原理和精益敏捷的规模化实施

导读:什么是第一性原理?第一性原理如何指导我们的精益敏捷开发?阿里资深解决方案架构师、畅销书《精益产品开发:原则、方法与实施》作者何勉,结合实践案例,详述第一性原理和精益敏捷的规...

Mr_zebra
01/23
0
0
福利丨技术芳菲四月天,送你一份书单静享春光

今天,人人皆言敏捷,可你的团队是否真的敏捷高效?你的软件开发能力是否过硬?为此,小编联合@图灵教育 给大家推荐两本热门书籍:《学习敏捷:构建高效团队》、《软件开发本质论》,送书福利...

DBAplus社群
2017/04/27
0
0
敏捷与面向对象

我们在工作中采用的是敏捷的开发方式。其实对于这个开发方式,大家不必太较真。敏捷好是好,但是有很多的要求。比如,敏捷没有文档,代码就是文档。但是代码充当文档是有前提的,那就是这个代...

崔钢
2011/06/16
370
3
开放产品开发(OPD):产品负责人的工作原则和方法

产品backlog是如何从产品概念开始而形成的?产品负责人需要定义产品是什么、了解为什么要做,还需要决定何时交付、如何交付,敏捷开发中对产品负责人并没有明确的进行指导。去年在一些大会上...

jingen_zhou
06/29
0
0
iOS底层原理总结 - 探寻Runtime本质(三)

方法调用的本质 本文我们探寻方法调用的本质,首先通过一段代码,将方法调用代码转为c++代码查看方法调用的本质是什么样的。 通过上述源码可以看出c++底层代码中方法调用其实都是转化为 函数...

xx_cc
07/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

小白带你认识netty(三)之NioEventLoop的线程(或者reactor线程)启动(一)

在第一章中,我们看关于NioEventLoopGroup的初始化,我们知道了NioEventLoopGroup对象中有一组EventLoop数组,并且数组中的每个EventLoop对象都对应一个线程FastThreadLocalThread,那么这个...

天空小小
今天
3
0
PHP动态扩展Redis模块

查看已有模块 [root@test-a ~]# /usr/local/php/bin/php -m[PHP Modules]bz2Core...zlib[Zend Modules] 下载包,解压,生成configure文件 [root@test-a ~]# cd /usr/local/src/[ro......

野雪球
今天
3
0
在Ignite中使用线性回归算法

在本系列前面的文章中,简单介绍了一下Ignite的机器学习网格,下面会趁热打铁,结合一些示例,深入介绍Ignite支持的一些机器学习算法。 如果要找合适的数据集,会发现可用的有很多,但是对于...

李玉珏
今天
5
0
Mybatis应用学习——简单使用示例

1. 传统JDBC程序中存在的问题 1. 一个简单的JDBC程序示例: public class JDBCDemo {public static void main(String[] args) {Connection con=null;PreparedStatement statemen...

江左煤郎
今天
4
0
使用JavaScript编写iOS应用业务逻辑

JSAUIKitCocoa使你可以使用JavaScript编写对性能要求不高但可能变动性很大的iOS应用的业务逻辑部分,View组件、需要多线程支持的Model等则直接使用原生对象。 编写方式与React Native相似,但...

neal01
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部