从找女朋友就可以体会出,敏捷与传统的区别

敏捷软件开发与传统软件开发的比较

敏捷软件开发与传统软件工程比较,我们可以化简一下,“开发”与“工程”这两个部分只是一个类似的名词,在我们的比较中可以先不以与考虑,所以我们要比较的其实就是是“敏捷”与“传统”的区别。

所以何谓敏捷,何为传统?

首先我们给出传统软件开发主要有以下步骤

  可行性分析和项目开发计划

  ↓
  需求分析
  ↓
  概要设计
  ↓
  详细设计
  ↓
  编码
  ↓
  测试
  ↓
  维护

这就是我们平时学系的软件开发流程,在此不再过多分析了。

而敏捷在字面上首先理解的就是速度快,节省时间,这确实也是敏捷开发产生的原因。

敏捷软件开发的定义是:一种应对快速变化的需求的一种软件开发方法。基于迭代和增量开发,通过自组织,跨团队,沟通协作完成开发工作。

定义中与“敏捷”对应的就是“应对快速变化的需求”。看似我们看字面上首先的理解是错了,但是真的是这样吗?

我认为不是的,我们认真考虑在我们传统的软件开发中,我们会遇到快速变化吗?我们在最开始经过了漫长的可行性分析和项目开发计划、需求分析。然后我们才开始设计我们的软件。

难道我们分析了那么久,做了那么久计划,没有任何作用吗?

难道我们做了那么久计划还会仅仅在后面的软件开发接下来的几个部分中就在计划上又发生很大变化吗?

要是那样的话岂不是软件工程师在自己啪啪啪打着自己的脸=。=

所以笔者认为我们在传统软件开发中时是很少会遇到快速变化的项目的。但在定义中,“敏捷”又是对应着“应对快速变化”,这就说明敏捷软件开发从最初始的动机上就与传统软件开发存在着差异。

敏捷开发主要在最开始的时候是只有很少成型的计划的,在开发的过程中,不断跟着客户的需求变化,要求变化,对软件的功能进行着更改。

于是我想问大公司、成型的企业会不清楚自己想要的是什么吗?对于在市场中已经摸爬滚打这么多年的企业家会不清楚自己需要的是什么样的软件吗?我觉得他们是不需要再软件开发过程中不断对自己的需求进行更改的。

同时对于一个成型的大公司,他们的工作流程是固定统一的,同时上层的决策人物是没有那么多时间来不断处理软件方面的问题的,所以我认为已经成型的大企业是不需要这种再软件开发过程中需要快速变化的,他们需要的是有效率的,正确的,产品开发流程。

所以什么情况需要我们敏捷开发呢?

那就是当我们项目只有一个大的方向,一个最主要的功能,还没有规划好更多的细节以及分支,这时我们在一边软件开发的同时,我们的项目也在同时发展,所以这时我们的软件开发需要应对项目不断变化的需求。

我觉得值得注意的是,我们这时的变化,不是由我们软件开发这边引起的,而是项目的延伸发展引起的。

所以这时对于一个刚起步的项目来说,敏捷开发是极为适合的。

敏捷开发的特点是:

人与人的交互优先于过程和工具

可以工作的软件有限欲求全责备的文档

客户协作优先于合同谈判

随时应对变化优先于循规蹈矩

这样的特点、加上不断对用户的需求变化产生快速应对,所以我们的敏捷开发也就是为了快速而生的。

它有益于我们最初始的项目快速占领市场,有益于我们逐渐了解我们的项目所踏入的领域,更是有益于我们的逐渐晚上我们的产品。

所以我们所谈到的敏捷开更加适合我们正在逐渐发展的项目。

讲到这里我们可以对这两种开发的使用情况举一个例子。

试想一下我们现在大家苦苦寻觅男女朋友。

对于还没有过另一半人们我们找寻找另一半时,更多的是抱着试试的心里,是想要在谈恋爱时,逐渐了解自己的需求,逐渐形成自己对另一半的要求。

在不断的深入感情发展中,我们会有不同的要求,不同的矛盾,我们会不断地解决,不断的找到崭新的方法来解决问题,最终形成一对完美的情侣!

但对于那些已经很成熟的,曾经有过女朋友的人来说,在和之前的另一半分手后,会有很多已经规划好的条条框框,会知道自己想找到的另一半死什么样子,所以他不会急急忙忙开始一段感情,而是要经过我们的可行性分析以及需求分析,才能决定我们需要的另一半是不是眼前的这个她,或者是不是心中想的那个她。

到此我们已经到该知道了敏捷开发与传统开的区别了,就像我们男女盆友一样,没有绝对的好坏,在不同的时候,都会起到很好的效果。

最后在此希望我们同学们都能找到适合自己的另一半,希望已经找的,可以敏捷的“应对快速变化”,磨合出幸福的一对  :p

时间: 2024-10-07 21:35:22

从找女朋友就可以体会出,敏捷与传统的区别的相关文章

毕业一年,分享下个人的找工作的体会

应届生毕业季选择了一家国企IT中心干运维工作,工作一年觉得工作没什么挑战性,直接裸辞了,找了两个星期工作,面了5家公司,收到4个邀请 昨天正式入职第二家公司,工资给我开了年薪120K,当然还有其他些福利,薪资方面基本符合个人预期(10K-12K/月) 这份工作是做基础软件开发(开发给程序员使用的工具和软件),个人觉得这份工作很有挑战性毅然选择了这家公司 今天项目经理找我谈心,谈到他为什么会招我这个第一年工作中都没写过一行代码的人进这个项目组,核心的意思是他愿意提供给一位有潜力的年轻人一个机会,让

程序员如何像写代码一样找女朋友

在程序员的世界里,妹子是稀有动物,女神就更是凤毛麟角了,大部分程序员由于经常面对电脑,缺乏与人的沟通交流,加上软件行业的工作特殊性,因此找女朋友更是难上加难.那么,程序员如何用自己的方法去追求心仪的女生呢?有这个冲动的朋友请继续看下去. 1.需求分析 根据自己的性格特点.经济实力,合理定位:适合自己的女性范围,也就是软件工程里常谈到:需求分析.自己最想找什么样的女孩,譬如:身高在什么范 围,年龄在什么范围,学历在什么范围,相貌有什么要求,对性格有什么偏好,喜静还是偏活泼.你越能更多了解自己,知道

只用这 6 个字符,就可以写出任意 JavaScript 代码!

你可能在网上见过有人用 几个不同的字符写的各种稀奇古怪的 JavaScript 代码,虽然看起来奇怪,但是能正常运行!比如这个: (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]] 复制代码 你猜运行结果是什么?你可以自己去控制台试一下. 看起来很神奇,但这到底是怎么回事呢? 事实上,你几乎可以用下面这 6 个字符写出任意的 JavaScript 程序: []()!+ 复制代码 很多人都知道这个技巧,但是没

子查询注意这几点, 就可以写出好的sql语句

执行sql时子查询的语句一般优先执行 理论上多表查询效率是高于子查询(根据子查询不值一个查询语句可能会有多个from但是多表查询只产生一个from), 但是在oracle中子查询效率一般会高于多表查询

Drak Time Summary、遇到任何问题,找书就可以了

Everybody life just like hourglass , inside the sand total about the same, the different is that,some hourglass top is fine,some hourglass is rough. top is fine have seize everybody time sand,even if sand total about the same,can also have longer fil

迭代、原型、螺旋、敏捷模型之间的区别

此前一直对于项目生命周期的模型中出现的各种模型不是非常了解,对于迭代.原型.螺旋.敏捷开发经常感觉都一样,这次细细思考了一会,有点感觉了,关键点就是这几种模型的侧重点不一样,就如同每个人虽然都是看同一个女人,但是眼睛的焦点是不一样的. 瀑布模型:强调开发工作(计划.设计.开发.测试.维护等)各阶段之间的先后顺序,不可以并行操作. 迭代模型:与瀑布模型不同,不再强调开发工作的序列化过程,而是将这些过程并行化,分为多个阶段,每个阶段都包含这些工作,只是不同阶段,不同的比例. v模型:强调将测试和开发

MOOC平台横空杀出,威胁传统IT教育市场

2014年9月19日,IT互联网巨头阿里巴巴在纳斯达克挂牌上市,至此,BAT均已完成上市融资,IT互联网行业新一轮大战硝烟弥漫.欲打胜仗,必先招兵买马,IT行业人才争夺愈演愈烈.受此影响,国内IT培训产业如雨后春笋一般忽至榻来,各家使尽浑身解数,希望争得更多学员关注. 作为老牌教育培训机构,北大青鸟敏锐嗅到了市场需求,顺势推出了IT菁英培训课程,向学员提供互联网PHP.SEO优化.程序设计等多专业课程选择,时间安排上,采取提前预约课程方式,兼顾了学员的灵活需求. 新贵尚德机构,则以学历教育形式开

backdrop-filter 和filter 写出高斯模糊效果 以及两者区别

http://www.w3cplus.com/css3/advanced-css-filters.html: backdrop-filter:blur(10px);只支持ios端:只作用于当前元素: 适用场景:为背景添加模糊效果:如果目标元素内包裹着其他内容 则应用filter属性: (不支持安卓,效果不明显) filter:blur(10px);              兼容性比较好,不仅仅作用于当前元素,后代元素也会继承这个属性,作用于一个空背景元素没有效果 适用场景:(效果其实还是通过作

说出 Servlet 的生命周期,并说出 Servlet 和 CGI 的区别。

Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方法,service 方法自动派 遣运行与请求对应的 doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候 调用其 destroy 方法. 与 cgi 的区别在于 servlet 处于服务器进程中,它通过多线程方式运行其 service 方法, 一个实例可以服务 于多个请求,并且其实例一般不会销毁,而 CGI 对每个请求都产生新的进程,服务完成后 就销毁,所以 效率上低于 se