敏捷开发基本要素

什么是敏捷开发流程? 大家好,我是IT修真院武汉分院第15期学员,一枚正直善良的JAVA程序员。 今天给大家分享一下,java项目中需要使用的敏捷开发流程   1.背景介绍   在很久以前,软件项目的开发都是以年来计算的,这代表什么意思呢 ?需求设计了半年多,方案设计做了半年多,开发了三年多, 测试了半年多,修改Bug用了半年多。总计花了很长很长的时间,然后上线后发现有很多需求已经不存在了,同时又出现了很多新... 阅读详情
 1. 敏捷是“一个”过程


敏捷不是一个过程,是一类过程的统称,它们有一个共性,就是符合敏捷价值观,遵循敏捷的原则。


敏捷的价值观如下:

个体和交互 胜过 过程和工具

可以工作的软件 胜过 面面俱到的文档

客户合作 胜过 合同谈判

响应变化 胜过 遵循计划

由价值观引出的12条敏捷原则:

我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。

即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。

经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。

在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。

围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。

在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈。

工作的软件是首要的进度度量标准。

敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。

不断地关注优秀的技能和好的设计会增强敏捷能力。

简单——使未完成的工作最大化的艺术——是根本的。

最好的构架、需求和设计出自于自组织的团队。

每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。

建立敏捷联盟的17位大师所创立的敏捷方法包括:极限编程,Scrum,特征驱动开发,动态系统开发方法,自适应软件开发,水晶方法,实用编程方法。这些方法统称为敏捷方法。

其实每个人都可以从敏捷宣言和原则出发,明确问题,找出一些解决方法,形成自己的过程。我觉得国内的软件环境这么复杂,程序员的自主精神又这么强,敏捷方法应该是在中国首先提出才对,只是国人都有唯标准唯规范至上的心理定式,即使找出好办法,也觉得不规范,没有深入形成理论,无法提升高度,始终是跟着鬼子屁股后面走,我想这也是国外软件行业不成熟的表现之一吧。



2. 敏捷仅仅是一个软件过程

如果仅仅从软件过程的角度去认识敏捷实施敏捷,效果不会太好。敏捷相对以前的软件工程最大的革新之处在于把人的作用提高到了过程至上,正如敏捷宣言的第一条“个体和交互胜过过程和工具”所说的。

涉及到人的问题,就已经不再是过程所能覆盖的了,就到了企业管理的层面上了,包括企业的价值观和文化。这也是敏捷在国内实施的最大障碍:

把客户当作合作伙伴而不是对手,从客户角度出发去想问题,充分的跟客户沟通,而不是出了问题推诿责任。目标是让软件实现客户的价值,而不是收钱就完事儿。

把人的能动性调动起来,给动力而不是给压力。

要实用而不是要规范。让开发人员理解并实施,体验到敏捷的好处,而不是盲目机械地实施规范。

没有绝对的权威,每个人都有可取之处。



3. 迭代就是敏捷,UP属于敏捷。

看到这么多人都把UP归入敏捷,我都开始怀疑是不是自己搞错了。但是在我的印象中:

UP是重型的过程,虽然引入了迭代,但是其原则和价值观与敏捷是不同的。敏捷注重的是反馈,迭代周期尽量的短,重在客户的参与,通过客户的参与,获取持续的反馈,不断调整使整个项目走在正确的方向上。同时也给客户一个感受和思考的机会,因为对于大多数客户而言,目标是明确的(不排除有些客户目标也不明确),但是具体怎么做,开始时是没有想法的,只有看到具体的东西的时候,才知道“噢,原来可以这样,那我想把这里调整一下”。



4. 敏捷是彻底革命的。

敏捷,特别是XP,让人有耳目一新的感觉,觉得以前的所有软件工程理论,设计方法都可以抛弃掉了,推翻一切,从头再来。抱着这种想法实施敏捷,那就错了,敏捷不是“石头里蹦出个孙大圣”,以前的软件过程中也有敏捷的影子,只是没有像敏捷一样上升到价值观和原则的高度,比如快速原型法。敏捷是在对已有的软件过程方法的改进,抛弃的是传统软件工程低效的外表,以往的软件过程中很多技巧都是很实用的。实施敏捷应该以现有的软件过程为基础,从敏捷宣言和原则出发,利用敏捷的方法来改善过程。



5. 敏捷是反文档的。

文档只是为了达成目标的一种手段,如果这种手段是低效的,那就换一种手段。可是完全抛弃了文档,怎样解决沟通的问题?难道你想每次沟通都完全用手比划,用嘴说,跟不同的人重复表述同样的想法,那样更是低效的。

应该清楚文档的本质是把知识显性化。在一个项目中存在很多需要沟通的知识,知识具备两种形态,显性的和隐性的,传统的观念是尽量把隐性知识显性化,即文档化,而忽略了这其中的代价(特别是更新同步文档的代价)。

因此,在实施敏捷的时候,需要在团队内明确哪些知识是必须显性的,这些知识可以通过文档交流。哪些知识是可以隐性的,这些知识则完全可以通过口头的方式进行交流,以达到沟通的最佳效率。

文档不是目的,有效沟通才是目的。



6. 为了敏捷而敏捷

“嗯,敏捷这么好,我们也敏捷吧”,可能很多人会有这种想法。忘了以前是在哪儿看的大师采访录:

Q:“我们现有的过程很好,不知道怎么用敏捷改进?”

A:“既然很好,那就不要用敏捷”。

做什么事情都要有明确目标的,敏捷虽好,得看你需不需要,能不能解决你现在头疼的问题,如果不是,那就不要给自己找麻烦了。



7. 敏捷是CMM的反义词

在桂林会议的讨论中,很多人把CMM作为敏捷的反义词,我觉得这不是很合适。CMM只是一种衡量软件成熟度的标准,并非过程,和敏捷不是一类概念。如果要给敏捷找一个反义词,我觉得传统的瀑布式开发应该更合适一些。

并且,我认为,如果CMM还能继续流行下去的话,应该会有公司可以用敏捷改善的过程通过CMM认证。



8. 敏捷是自由的,无约束的。

敏捷强调的是自组织团队,发挥人的能动性,以动力代替压力,让人有绝对自由的错觉。但是应该清楚,凡是都是要讲究一个平衡,人也是两面的,消极的一面和积极的一面同时并存,绝对的自由会放纵人消极的一面。敏捷并非是绝对自由,无约束的。作为管理者,有一个职责,就是引导团队成员用自己积极的一面去压制消极的一面,不能放任团队中出现搭便车的现象,否则将打击整个团队的士气。如果实在无效,那就只能将其排除出团队了,这个惩罚够有约束力吧?



9. 重做就是重构

重做不等于重构,很多场合这两个概念是混淆的。但是在敏捷中,重构的一个特征是必须可控的。当对系统结构进行大的调整时,如果没有测试驱动辅助的话,那么可控性就会很差,这不能叫做重构。

来源:http://bluejavatree.spaces.live.com/Blog/cns!B01391FDED3D3EDC!113.entry

什么叫敏捷开发 前言        软件开发是一种对人类智慧的管理,对人大脑思维的“工厂化”管理。人是有感情的、有情绪的、变化的、相对独立的工作单元,这与冰冷的机器是不可比的,所以在中国的历史上,管理人是最难的工作;“学而优则仕”的观点就是让最聪明的人应该选出来做官,做官就是管理人的。软件开发不仅是代码编程,而是人员的有效组织,如何既发挥人的主观能动性,避免情绪变化对工作的影响,又可以让大家有效的交流,让多个大 阅读详情

相关推荐

敏捷开发流程总结

一套个人在敏捷开发中总结的敏捷开发流程规范与流程每一步的输出制品。

【DevOps核心理念基础】2. 敏捷开发与DevOps关系

一、什么是敏捷开发 ? 1.1 敏捷开发的核心模型 二、敏捷开发的要点 2.1 敏捷开发 > 执行细节 2.2 敏捷开发 > 思路的转变 客户需求:提升出行速度 三、敏捷开发 与 DevOps 四、DevOps 实践的度量标准 4.1 怎样判断DevOps实践好与坏?

ladymorgana的博客 537

scrum敏捷开发流程经验分享

详细介绍敏捷开发流程的特点,要点,以及如何实践,应用

敏捷开发实践的要点

迭代复盘会 -- 总结过去,指导将来,改进团队生产力。迭代规划会 -- 规划迭代版本,评估故事点。迭代评审会 -- 功能演示,获取客户反馈。每日站立会 -- 更新看板,调整策略。可视化看板 -- 信息辐射源。

软件攻城狮 311

重构、重写、重载的区别

重构、重写、重载 重构:通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理。提高软件的扩展性和维护性。通俗点说,重构就是当你发现代码的不足之处时,去改动它的结构,去优化它。 重构的具体做法:可以通过重写或者重载等,但不限于此,更改注释、更改函数名类名等,都可以称之为重构; 重构的目的 :是为了让软件容易维护, 修改其Bug等。 ...

xxzh_pengpeng的博客 2183

敏捷软件开发》-方法论要素和原则

方法论的英文为Methodology,编程的方法论应该是指软件开发的一整套方法、过程、规则、实践、技术。不过我们一般提到的方法论都偏重于项目、过程和人员。《敏捷软件开发》的作者Alistair Cockburn提出方法论具有以下要素:角色、个性、技能、团队、技术、活动、过程、产品、里程碑、标准、质量、工具、团队价值,它们的关系可以用一幅图来表示:   对于方法和方法论的区别,我们要注意的是方...

绝圣弃智-零的博客 981

实施Scrum敏捷开发的关键要素

一、敏捷开发由来 2001年2月11日至13日,美国犹他州瓦萨奇山雪鸟滑雪胜地,17个人聚到一起,试图找到软件开发的共识,最终的成果就是《敏捷软件开发宣言》。参会者们包括来自于极限编程、Scrum、DSDM、自适应软件开发、水晶系列、特征驱动开发、实效编程的代表们。官方网站:http://www.agilemanifesto.org 《敏捷宣言》提出敏捷4条价值观: 1、个人与互动胜过过程与工具 (Individuals and interactions over processes..

2042

敏捷开发流程

转载:http://www.cnblogs.com/taven/archive/2010/10/17/1853386.html 现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP...   为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两个,一个是进行知识的总结,

滴水可以穿石 百炼才能成钢,谋全局而通一域 致广大而尽精微 669

敏捷开发之Scrum扫盲篇(转)

转:http://www.cnblogs.com/taven/archive/2010/10/17/1853386.html 现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP...   为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两个,一个是进行知识的总结,另外一个是觉得...

weixin_33691817的博客 83

敏捷开发中如何写好用户故事?

什么是用户故事? 用户故事(user story)是一个用来确认用户和用户需求的简短描述,作为什么用户,希望如何,这样做的目的或者价值何在。用户故事在软件研发中又被描述为需求。用户故事通常的格式为:作为一个<角色>, 我想要<功能>, 以便于<商业价值>。 因此,一个好的用户故事就包括了这三个要素: 1.角色:使用者。 2.功能:需要完成什么样的功能。 3.价...

2万+

什么是敏捷开发

敏捷开发(Agile)是一种以人为核心、迭代、循序渐进的开发方法。 在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。 简单地来说,敏捷开发并不追求前期完美的设计、完美编码,而是力求在很短的周期内开发出产品的核心功能,尽早发布出可用的版本。然后在后续的生产周期内,按照新需求不断迭代升级,完善产品。 是谁这么厉害,提出了敏捷开发思想?是一位名叫 Ma...

好记性不如烂笔头 16万+

什么是敏捷开发敏捷开发流程的8个步骤

敏捷开发(Agile)是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。简单地来说,敏捷开发并不追求前期完美的设计、完美编码,而是力求在很短的周期内开发出产品的核心功能,尽早发布出可用的版本。然后在后续的生产周期内,按照新需求不断迭代升级,完善产品。是谁这么厉害,提出了敏捷开发思想?是一位名叫 Martin Fowler 的美国大叔。

DreamSun的博客 5万+

敏捷开发思想

敏捷开发思想SCRUM 是什么?敏捷开发是什么?以人为核心是什么意思?迭代 是什么意思?SCRUM 与 敏捷开发思想有什么关系?敏捷开发的模式分类(摘抄至互联网):SCRUM 的工作流程(摘抄至互联网)流程: SCRUM 是什么? Scrum是敏捷开发中的名词。 敏捷开发是什么? 敏捷开发(Agile Development) 是一种以人为核心、迭代、循序渐进的开发方法。 简单的说的话: 它只是...

落笔丶的博客 3823
上一篇: root telnet 到linux上
下一篇: 敏捷的核心价值
hebji
博客等级 码龄25年 9粉丝 5原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值