13.6.3 敏捷开发的缺点
1.采用敏捷开发,对开发团队的人员素质要求比较高
敏捷开发的首要任务是快速,目前提出的“全栈软件工程师”(参见参考文献【16】),它要求软件开发工程师在开发的各方面,即从需求,设计,编码,软件测试一直到系统搭建都要求是行家里手,这样可以减少因彼此沟通带来的时耗,这才能保证他在一个Sprint中能独立完成产品中某个特定的任务。显然这样的软件开发工程师的素质一定要求很高的,而在软件开发行业中,人员流动率高,新手多的情况下,要做到这一点是比较困难的。
2.采用敏捷开发,开发工程师与软件测试工程师混为一体,彼此分工不明晰
敏捷开发要求软件开发工程师会软件测试,软件测试工程师会软件开发,这实施起来是比较困难的。因为软件开发和软件测试工程师关注的重点是不同的:开发关注技术实现比较多,一般都采用正向思维;而软件测试关注业务比较多,多采用逆向思维。所以一个产品要保证有高的品质,就必须要有独立的软件测试工程师,因此测试和开发要有比较清晰明确的分工。正如古话所说:“闻道有先后,术业有专攻”。
3.采用敏捷开发,是“短平快”的开发方式,由于产品发布周期短,所以产品的软件测试、维护、升级等操作的频率也增加了
这必然增大开发工程师、软件测试工程师以及运行维护工程师的工作压力,在这样高压的环境下工作很容易出错,从而影响产品的质量。
4.采用敏捷开发,不利于文档的建立和修改
敏捷开发有一句口号“拥抱变化”。然而客户需求的变更是经常变化的,正如当今社会流行的“唯一不变的是变化”。为了缩短版本发布周期,特别是在版本发布之前,当客户的需求发生变更时,敏捷开发团队仅仅是修改代码而没有时间修改所对应的文档,这就造成了产品和文档的开发不一致性这就给产品的后期优化、调整或二次开发,带来了极大的麻烦,在人员频繁流动中更是灾难性的。
13.6.4 总结
敏捷开发是一个新方法,存在优点也存在缺点,我们不要一味赶时髦,要根据自己的企业现状和产品特点,选择符合自己的软件工程方法,只要这个方法可以给企业提高质量,带来效益,那就是一个好的方法。敏捷开发的特点是版本发布速度快,然而中国又有一句古话:“慢工出细活”,现在又提出“工匠精件”活干得快,往往会影响质量,所以笔者认为对于一些版本发布频率要求不高,或者涉及严格质量要求的产品,比如航空航天、金融等领域的产品,不一定要采用敏捷开发的方法,可采用更适合于自身产品特性的软件开发方法。笔者有一位同行在美国工作,从事金融软件的开发业务,可以想象,这种产品的质量要求是很高的,容不得半点差错,所以他们仍旧采用传统的瀑布模型开发方法,他每天从软件设计工程师拿来设计文档,该文档写得很详细,然后按照设计文档进行编码,另外,他经常在家里通过互联网工作(每年只要去公司一到两次,公司Office只有40个平方米,这样省去了为员工租用Office带来的开销),公司效益很好,已经维持了近二十年。
顾翔凡言:
不是好的工作会给你带来好的心情,而是好的心情会给你带来好的工作。