敏捷软件开发的不同声音
再次读《敏捷软件开发》
,有了更深的理解,敏捷软件开发有好处,也有弊端,但对于
成规模的公司,成型的项目来说,弊端是大于好处的。书中列举了一个
Rufus
公司的例子,
该项目的情况和油田应用开发部的项目非常相同。
首先,
项目需求基本不疗机的情况下,
让
项目经理排出一个需求完成的时间,
又硬要一个设计的时间,
最后整体项目控制在一定时间
内完成。
当项目经理带领项目组人员进行需求调研后,
也没有发现项目需求的大概量是多少,
更没有细化每一个需求,所以做到什么地步只有跟着感觉走。最后项目不得不延期的时候,
才发现系统完成的功能只有
50
%不到。然而到了此时,项目需求依然仍有很多没有搞清楚,
完成的结束时间依然不能预计出来,
试想一下,
这样的项目即使继续下去,
也一定不会有一
个完美的结果,
要么是进度不知所终,要么是成本大大超出预算。
但是再试想一下,如果需
求搞的清楚了,
并划定了优先级,
对不能确定的需求进行一步步的细化一步步的深入,
设计
也针对优先级排定的顺序进行设计,
编码过程中采用多次增量或者迭代开发,
让用户尽早的
试用和熟悉功能,
我想最后虽然不一定按期完成项目,
但至少知道需求做了多少,
还有多少
的工作量,目前离着预估的时间还能做完哪些。所以,敏捷软件开发并不一定是适用的。
下面将从几个方面进行分析敏捷软件开发和过程的优缺点
1.
敏捷软件开发号称个体和交互胜过软件过程和工具
这一点听起来好像是有道理的,
但到底是否真的对于一些公司适用呢,
到底对哪些项目
适用呢?首先公司的重点资源是人没有错,
沟通和交互是项目中最重要的手段也没有错,
但
是没有过程控制的个体无异于会做的五花八门,
没有过程的个体没有统一的原则,
最后将不
得不为这些个性而付出代价。所以,个体是重要的,但只有过程控制的个体才是有效的。
如果没有过程控制,
就不知道哪些是该记录的哪些是不该记录的,
记录了不该记录的内
容没有错,
但没有记录该记录的内容,
则等有一天发生意想不到的争吵的时候,
没有一个记
录,
则会因为没有证据而无奈。
所以个体有着更多的随意性,
去除这些随意性则是过程的优
点。
2.
可以工作的软件胜过面面俱到的文档
这一点是正确的,
但关键的理解是,
面面俱到的文档,
什么又是面面俱到呢?或许每个
人有每个人的解释,
感觉作者的面面俱到指的是一点都不遗漏的记录下来,
有用的没用的都
记录,所以成了面面俱到的文档。但这点和过程文档的规定是不同的,比如拿
CMMI
为例
子,
CMMI
虽然文档众多,
但非常灵活,
大量的针对不同项目的裁剪形成了独有的灵活体系。
所以对于敏捷软件和
CMMI
的过程来说,都不希望有大量文档,只要有有效有用文档就足
够了。
3.
客户合作胜过合同谈判
客户合作是重要的,
敏捷软件开发中强调这一点,
无非是想说明与客户建立良好的沟通
关系。
但是一般的过程中对这点也是没有详细规定的,因为对待客户一定要灵活、
有效、适
用。所以在这一点上,过程和敏捷开发的要求是相同的。
但有一点不同,就是敏捷软件提到
的客户合作更加注重让用户参与,
而实际过程中用户参与的程度哪里是项目开发方所能控制
的呢,所以,制定有效的计划,加强和客户沟通及时调整计划才是更有效的做法。
4.
响应变化胜过遵循计划
或许作者认为做了
CMMI
的人,
或者做了
IPD
的人,
他们的计划就按部就班的执行了,
或
QIT
的人就可以照章办事了,但其实不然,做了计划也可以更改,因为计划是人做的,
只要是人,
肯定会有计划变更,
因为人的思维意识是不断推进,理解不断加强的。
所以响应
变化是及时的,
但计划更新却是有章可循的,
如果随便就调整了计划,
计划调整的频次过多