以及衡量不同阶段目标的标准,在软件开发的各个阶段中,即需求分析阶段、软件设计阶段、编码阶段和测试阶段,我们可以发现存在于各阶段中的风险项。并由项目经理在启动、计划、执行、控制、结束五个阶段予以控制。此项目开发的目标是为了向审计公司提供辅助审计管理系统。开发流程也是比较遵从软件工程的规范的。但是最终的结果却不尽人意,投入了比预料多几倍的人力物力。根据当时参与项目的同事的分析,失败的原因主要是:
1)需求不明确
由于出发点和利益不同,系统开发者与用户对于同一问题常有不同看法,这样需求分析的风险就逐渐加大了。另外对需求变更的控制做得不好。需求的改变,就会产生连锁反应,有时候这种反应会导致程序的不稳定,严重的时候,一个错误的修改引起另一处程序的错误,而新的错误的修改会导致更新的错误,更严重的情况,不是所有的错误都能被修改。
2)技术风险
此软件数据结构复杂,逻辑关联性比较强。软件需要与第三方财务软件产品的数据库系统接口。带来了相当的技术开发困难,阻碍了项目的进行。由于以上原因到了测试阶段,未确定的需求和不断发现的bug成了灾难。结果测试当天就因为一个bug导致数据被误删和数据混乱。
于是暂停测试,改为封闭式开发,并且继续增加人员,第二次修改时是才发现整个数据结构也要发生变动,这就意味着无异于从新开发一次,所以最后不得不投入大量的人员予以弥补。分析原因,为什么这个项目会失败?看来好像是需求没有做好,其实是没有把风险放在整个项目这个大系统下来对待,没有建立一套完整的风险管理机制,这样一来风险因素就容易被忽略。
然而,软件项目前一阶段的失误会对下一阶段产生严重的影响。一旦发生了变化,就不得不修改设计、重写代码、修改测试用例、调整项目计划等等,为项目的正常的进展带来不尽的麻烦。所以,没有切实可行的风险管理过程机制,就很难有效地保证风险管理活动的效率。建立切实可行的风险管理过程机制是软件风险管理理论研究成果最终在实践中得到应用的最根本保证。