敏捷软件开发VS传统软件工程

软件工程的概念早在1968年便被提出,一路发展至今,也演变为了一门学科,而其中的方法也是层出不穷。这里,咱们便讨论一下敏捷软件开发与传统软件工程的异同。说到敏捷软件开发,其实很早便有这类方法在实践中运用了,不过在2001年,一些牛人搞出了一个“敏捷宣言”,今后便明确了敏捷软件开发的方法。html

个体和互动:高于 流程和工具。

工做的软件:高于 详尽的文档。

客户合做:高于 合同谈判。

响应变化:高于 遵循计划。

 

对咱们而言,最重要的是经过尽早和不断交付有价值的软件知足客户须要。

咱们欢迎需求的变化,即便在开发后期。敏捷过程可以驾驭变化,保持客户的竞争优点。

常常交付能够工做的软件,从几星期到几个月,时间尺度越短越好。

业务人员和开发者应该在整个项目过程当中始终朝夕在一块儿工做。

围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,知足他们的须要,并相信他们可以完成任务。

在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈。

能够工做的软件是进度的主要度量标准。 敏捷过程提倡可持续开发。出资人、开发人员和用户应该老是维持不变的节奏。

对卓越技术与良好设计的不断追求将有助于提升敏捷性。

简单——尽量减小工做量的艺术相当重要。

最好的架构、需求和设计都源自自我组织的团队。

每隔必定时间,团队都要总结如何更有效率,而后相应地调整本身的行为。

 

敏捷软件开发又是在何种背景下产生的呢?程序员

 

随着软件行业发展壮大,软件系统的规模也愈来愈大,复杂程度愈来愈高,开发周期与开发成本便面临极大的挑战,与此同时,软件的可靠性也没法很好的保证。为解决这一系列问题,软件行业便开始借鉴传统的工程学、管理学方法。算法

以“瀑布模型”为表明的传统软件开发模型开始出现,它们针对软件生命周期的各个阶段提供了一套规范,以期使工程的进展达到预期的目的。核心强调在软件开发活动中,全部的活动计划,日程安排,交付工做都要直接或间接的和需求保持一致,同时强调软件需求必须造成“文档”。最初的软件(20世纪60-70年代)的顾客都是大型研究机构,军方,NASA这些,他们须要软件系统来搞科学计算,军方项目,和登月项目等,这些系统至关庞大,对准确度要求至关高。20世纪80年代到90年代中,软件进入了桌面软件的时代,开发的周期明显缩短,各类新的方法开始进入实用阶段。可是软件发布的媒介仍是软盘,CD,DVD,作好一个发布须要较大的经济投入,不能频繁更新版本。互联网时代,大部分的服务是经过网络服务器端实现,在客户端有各类方便的推送(push)渠道。因为网络的转播速度和广度,知识的获取更加容易,不少软件服务能够由一个小团队来实现。同时技术更新的速度在加快,那种一个大型团队用一个固定技术开发2-3年再发布的时代已通过去了。用户需求的变化也在加快,开发流程必须跟上这些快速变化的节奏。编程

这种基于计划的生命周期的软件开发方法曾极大地促进了软件行业的发展,但现现在却并不能很好的适应社会。为了适应现代的商业环境,与之对应的敏捷软件开发方法提了出来。服务器

 

那敏捷软件开发又是如何运做的呢?网络

 

个体和交互 赛过 过程和工具架构

其实即是更注重人与人的交流,而不是文档的约束。敏捷开发强调把关注点定位到“人”上,其背后的哲学思想可追溯到康德的“人即目的”。同时,主张面对面交流和客户参与开发,弥补了缺乏文档而产生信息流通不顺畅问题,认为开发人员之间、开发人员和客户之间相互协做、相互信任、彼此尊重是保证沟通成功的必要条件。工具

看似一个深奥的算法能够节省不少硬件上的压力与花销,但在现今这种人力花销更加巨大的环境,易读易扩展的程序节省的人力将为公司带来更多利益。不少聪明的程序员也许能够发现奇妙的方法节省20%的硬件开销,然而他们使得源程序难懂而且难以维护,表面上他们节省了许多硬件的开销。但财务事实告诉咱们,若是程序简单并且容易扩展,咱们将至少节省10%的人力开销,这将是一笔更大的节省。同时,软件开发的职业自己也决定了数量少但精干的团队的效率与产出大于臃肿、混乱的大团队。敏捷开发通常适用于20-40人、甚至更少。spa

 

能够工做的软件 赛过 面面俱到的文档设计

区别于传统的软件开发模式,客户只有在系统被开发完成之后才能真正去体会它。敏捷编程经过要求不断交付可用的软件,周期越短越好,增强客户的反馈来缩短开发的周期,同时得到足够的时间来改变功能和得到用户的认同。

可用的软件可让客户更直观的提出更多建议与需求,区别于工业社会的利用流水线、规模化的生产模式,信息时代更强调对用户需求的快速响应。标准化生产所带来的低成本、高可靠性的特色不能直接保证市场的高份额。相反,对用户需求的细腻把握和快速响应倒是以用户为导向的服务型公司的生命线。

 

客户合做 赛过 合同谈判

敏捷开发要求在项目过程当中,业务人员与开发人员必须在一块儿工做,参与开发,采用高效信息的交互平台以及可以减小歧义沟通和交流的方式进行支持。敏捷方法完成了从重视文本到重视对话,从重视书写到重视理解的转换。

很简单的道理,那即是用户没法对其自身需求进行有效描述。就像iPhone,在乔布斯没有推出iPhone前,用户并不知道他们须要智能机,更准确地来讲就是没法对智能机的需求进行有效描述的,他们不知道他们想要触屏,想要在手机上作什么,换句话说实际上是用户并不知道什么能够实现,什么没法实现,怎么样的实现会有一个良好的化学反应。这也就是为何诸如诺基亚、摩托罗拉等公司失败的缘由之一。他们不是没有市场部门,不是没有进行市场调研、用户需求分析,问题在于通常用户在缺少相关知识与指导的状况下是没法对自身需求进行有效描述。这一缺陷在市场竞争随着节奏的加快显得愈发致命。

 

响应变化 赛过 遵循计划

敏捷开发的口号是拥抱变化,即欢迎对需求提出变动,甚至是在项目开发后期。要善于利用需求变动,帮助客户得到竞争优点。

信息世界发展如此之快,创业公司更是数不胜数,一个想法的成功,势必会带领一个热潮,占得先机才能获得更多利益。现代社会最重要的特色就是多元化,用所谓的“互联网思惟”就是“去中心化”,具体到我的应该就是Open mind。这一社会现实反应在软件开发上就是 把想法变成实际的成本变得至关较低。但与此同时,快速变化的商业大环境也对执行力提出了高要求,而执行力的关键指标就是对变化的快速响应。

 

说到底敏捷软件开发即是适应现实社会的一种软件工程方法,我想咱们也不能把精力局限于文档,局限于我的,咱们也应从敏捷软件开发中学到咱们做为社会的一份子怎样更好地融入现实社会。

 

[1] https://zh.wikipedia.org/wiki/%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91 维基百科

[2] http://www.cnblogs.com/xinz/archive/2011/04/27/2031118.html 博客园 博文

[3]专题讨论做业提示

相关文章
相关标签/搜索