软件行业普遍利润率低,软件项目的成本超支司空见惯,到底成本到哪儿去了?
软件工程师天天加班加点,说到底还是返工问题。软件项目的返工成本几乎达到
项目成本的一半以上。到底什么算返工,目前业界好像还没有确切的定义,我总结
了一下,一下情况应该算是返工:
返工的定义可以理解为应该并有能力做到返工后的水平的却因为各种主观因素
却没有一次性达到,只能用返工甚至多次返工的方法来达到目前的要求。
1. 隐含需求的变更;
2. 由潜在的需求引起的变更;
3. 架构选型不当引起的移植、变更;
4. 需求或设计的理解错误造成的变更;
5. 在项目范围、技术平台、技术路线决策失误造成的变更;
6. 设计的抽象不够,造成的开发过程中的浪费、合并、再抽象等工作;
7. 评审遗漏缺陷造成的变更;
8. 测试遗漏造成的反复修复工作量。
其实对比其他行业,软件行业似乎是返工最大的了,很少听说哪个大楼把地基扒
了三次再盖的,但是很多软件项目确实不止一次的扒掉重来。甚至很少听说哪个项目
是一直一步一步往前走的,都是来来回回、反反复复完成的。
第一版确认的需求VS最后交付的系统之间的变动分析:
| 
 变动内容和原因  | 
 变动的可能性(非互斥关系)  | 
 对工作量的影响(进度、成本),但是在质量上是改进的  | 
| 
 界面元素、界面风格、界面的易用性、前台的业务逻辑  | 
 80%+  | 
 较小  | 
| 
 设计上的变更、后台业务处理逻辑、数据库的变更、易用性设计的变化  | 
 50%~60%+  | 
 较大  | 
| 
 返工的需求、局部返工或推倒重来  | 
 20%+  | 
 大  | 
| 
 增加的需求、范围的扩大  | 
 20%~30%+  | 
 大  | 
上表是根据以前项目的经验得到的关于软件在开发过程中的变化情况的总结,大部分都是应用类型的项目。
分析造成这种情况的原因:
1. 是客户不成熟,拼命要求进度;导致项目赶进度,前面工作做的不到位,返工是必然的;
2. 项目中做需求和设计的人员的能力和经验,经验的欠缺往往导致后期才发现隐含的需求和设计的不到位;
3. 项目管理经验如果不成熟,一个重要的表现就是进度狂。要减少返工就要做到胸有成竹、处乱不惊、从容应对。按照计划行事是很重要的,项目过程中突发事情和压力是很多的,做到项目组内部阵脚不乱是非常重要的。