说到敏捷开发,不得不先说起在大学上讲的一种软件开发的思想:瀑布模型
瀑布模型
所谓瀑布模型思想就是:瀑布模型主张按照工程化的方法,一步一步的非常严谨的去开发我们的项目。拿到一个项目的时候,我们先做一个可行性研究,先看一下这个项目是不是一个可行的事,这事咋们能不能干,从团队的技术能力,工期,报酬等各个观点,看是不是可行。
如果可行,接下来需求分析,要想达到这个项目的目标,我们要做哪些需求,需求分析完了做概要设计,大概的分析下要做哪些功能,哪些模块。概要设计就比需求分析详细很多了,概要设计相当于确定了我们有哪些模块了,哪些模块有哪些功能。下一步就是详细设计了,就是确定到功能里面有哪些功能了,具体到某个页面,哪些功能啥的。然后参考我们的详细设计这些个文档来进行编码了,编码完成之后开始测试。测试通过后上线,然后就进入到运维。至此,这个项目就进入了维护阶段了。
其中任何一个环节出了问题,都需要去追溯上一个环节是不是需要进行调整,总体分为:计划阶段、开发阶段、维护阶段。瀑布模型是非常典型的,把我们软件开发的过程用工程化的方法变成了一个好像工业产品的过程一样。追求的是一种严谨,一种标准化。
- 可能会有点观点认为:严谨,标准不是挺好的吗。让我们的产品更加的可靠,降低软件开发的风险,干嘛还要去改呢?其实这种模型理论上是说得通,但是实际操作起来却没有那么简单。
- 实际越复杂的项目,做起来是非常复杂的。举个例子,一个工程,比如10个人干完需要一个月,那么100个人是不是只需要十分之个月,也就是3天呢就能完成呢?其实不是的,有可能100个人完成还会超过1个月的时间才能完成。因为100个人和10个人相比,100个人的沟通成本,组织机构,人的团队结构,就会复杂的很多。
- 所以如果说以这个角度将软件看做是一个工业化的过程来生产,其实还是不能适应我们全部的情况的。
- 并且特别是互联网这种日异月新的情况下,更新迭代特别快,瀑布模型就显得非常的死板了,就跟不上我们时代的需求。
因此,敏捷开发就运运而生了。
敏捷开发
关于敏捷开发网上有很多文章介绍,大家有兴趣可以去详细了解(看得有点头疼。)所以呢,我就以通俗的方式来简单介绍一下敏捷开发。分别以技术角度和商业角度来介绍。
技术角度
让一个需求可以更快的变成可以运行的代码。
或者说,
加快了根据需求开发出来可以运行的代码这个过程。
那为什么能做到这一点呢:因为敏捷开发不追求瀑布模型的那么严谨,是根据我们的需求,直接制作一个项目原型,然后我们再根据这个原型直接开始编码。
商业角度
加速了用户体验新功能 的过程。互联网公司有一个词叫:“”小步快跑“”,意思就是让每一个功能都做尽量小的修改,但是加大更新的频率。
这有什么好处呢:
- 能够非常快的响应用户的需求,增强用户体验。比如某个功能有任何问题后,我们可以及时的调整。
- 从而加强和用户的联系性,紧密性
所以,综合来说,敏捷开发还是更适合互联网环境下的项目开发。因为互联网开发需要及时的更新,才能更好的留住用户。
本质
从本质上来说:瀑布模型是把软件产品看成是一个工业化的标准品,以工厂生产产品的流水线思路来进行开发。敏捷开发则是把一个软件产品看成是一个生物,每一个小功能的细微的迭代就好像是生物逐渐在进化一样。