敏捷软件开发与传统软件开发的比较
敏捷软件开发与传统软件工程比较,我们可以化简一下,“开发”与“工程”这两个部分只是一个类似的名词,在我们的比较中可以先不以与考虑,所以我们要比较的其实就是是“敏捷”与“传统”的区别。
所以何谓敏捷,何为传统?
首先我们给出传统软件开发主要有以下步骤
可行性分析和项目开发计划
↓
需求分析
↓
概要设计
↓
详细设计
↓
编码
↓
测试
↓
维护
这就是我们平时学系的软件开发流程,在此不再过多分析了。
而敏捷在字面上首先理解的就是速度快,节省时间,这确实也是敏捷开发产生的原因。
敏捷软件开发的定义是:一种应对快速变化的需求的一种软件开发方法。基于迭代和增量开发,通过自组织,跨团队,沟通协作完成开发工作。
定义中与“敏捷”对应的就是“应对快速变化的需求”。看似我们看字面上首先的理解是错了,但是真的是这样吗?
我认为不是的,我们认真考虑在我们传统的软件开发中,我们会遇到快速变化吗?我们在最开始经过了漫长的可行性分析和项目开发计划、需求分析。然后我们才开始设计我们的软件。
难道我们分析了那么久,做了那么久计划,没有任何作用吗?
难道我们做了那么久计划还会仅仅在后面的软件开发接下来的几个部分中就在计划上又发生很大变化吗?
要是那样的话岂不是软件工程师在自己啪啪啪打着自己的脸=。=
所以笔者认为我们在传统软件开发中时是很少会遇到快速变化的项目的。但在定义中,“敏捷”又是对应着“应对快速变化”,这就说明敏捷软件开发从最初始的动机上就与传统软件开发存在着差异。
敏捷开发主要在最开始的时候是只有很少成型的计划的,在开发的过程中,不断跟着客户的需求变化,要求变化,对软件的功能进行着更改。
于是我想问大公司、成型的企业会不清楚自己想要的是什么吗?对于在市场中已经摸爬滚打这么多年的企业家会不清楚自己需要的是什么样的软件吗?我觉得他们是不需要再软件开发过程中不断对自己的需求进行更改的。
同时对于一个成型的大公司,他们的工作流程是固定统一的,同时上层的决策人物是没有那么多时间来不断处理软件方面的问题的,所以我认为已经成型的大企业是不需要这种再软件开发过程中需要快速变化的,他们需要的是有效率的,正确的,产品开发流程。
所以什么情况需要我们敏捷开发呢?
那就是当我们项目只有一个大的方向,一个最主要的功能,还没有规划好更多的细节以及分支,这时我们在一边软件开发的同时,我们的项目也在同时发展,所以这时我们的软件开发需要应对项目不断变化的需求。
我觉得值得注意的是,我们这时的变化,不是由我们软件开发这边引起的,而是项目的延伸发展引起的。
所以这时对于一个刚起步的项目来说,敏捷开发是极为适合的。
敏捷开发的特点是:
人与人的交互优先于过程和工具
可以工作的软件有限欲求全责备的文档
客户协作优先于合同谈判
随时应对变化优先于循规蹈矩
这样的特点、加上不断对用户的需求变化产生快速应对,所以我们的敏捷开发也就是为了快速而生的。
它有益于我们最初始的项目快速占领市场,有益于我们逐渐了解我们的项目所踏入的领域,更是有益于我们的逐渐晚上我们的产品。
所以我们所谈到的敏捷开更加适合我们正在逐渐发展的项目。
讲到这里我们可以对这两种开发的使用情况举一个例子。
试想一下我们现在大家苦苦寻觅男女朋友。
对于还没有过另一半人们我们找寻找另一半时,更多的是抱着试试的心里,是想要在谈恋爱时,逐渐了解自己的需求,逐渐形成自己对另一半的要求。
在不断的深入感情发展中,我们会有不同的要求,不同的矛盾,我们会不断地解决,不断的找到崭新的方法来解决问题,最终形成一对完美的情侣!
但对于那些已经很成熟的,曾经有过女朋友的人来说,在和之前的另一半分手后,会有很多已经规划好的条条框框,会知道自己想找到的另一半死什么样子,所以他不会急急忙忙开始一段感情,而是要经过我们的可行性分析以及需求分析,才能决定我们需要的另一半是不是眼前的这个她,或者是不是心中想的那个她。
到此我们已经到该知道了敏捷开发与传统开的区别了,就像我们男女盆友一样,没有绝对的好坏,在不同的时候,都会起到很好的效果。