另外,我们可以依据风险条目检查表,制作风险控制概图(见图1),让项目管理和实施人员能很直观的看到在项目开发个阶段的风险存在状况和各风险的大小,并采取相应措施。从风险发生的概率来看,需求风险和管理风险对项目成败影响大,当一个软件项目开发团队接手项目后,都是按照习惯性的方式来开发软件。需求风险意识比较淡薄,软件需求分析阶段的完成的不够细致,忽略和很多软件开发必要的内容。在整个软件开发过程中需求分析阶段的风险控制尤为重要,如果控制不好,对软件开发项目影响巨大,甚至是失败。管理风险实际上是项目开发管理层,对项目开发的风险的意识反映。国内的软件企业大多规模较小,企业年轻,开发经验不足,软件工程师较年轻,缺少开大型软件项目的经验,在管理方面缺少经验,特别是风险管理,更是缺乏。
2、风险管理
风险管理应是贯穿软件项目开发始末的一项重要任务,其中包括风险识别、风险评估、风险计划、风险解决和风险监控。它能让风险管理者主动“规避”风险,进行有效的风险管理。风险管理模型有:SEI风险管理模型、Riskit风险管理模型、SoftRisk风险管理模型、IEEE风险管理过程模型、CMMI风险管理模型、MSF风险管理模型等。在项目管理中,建立风险管理策略,在项目的生命周期中不断控制风险是非常重要的,风险管理主要包括五个阶段:
(1)风险识别:识别风险的方法常用的有现场观察法、座谈法、流程图法、财务报表法、相关部门配合法和环境分析法等。
(2) 风险评估:对已识别的风险要进行估计和评价,风险估计的主要任务是确定风险发生的概率与后果,风险评价则是确定该风险的经济意义及处理的费/效分析,常用的方法有:概率分布、外推法、多目标分析法等。
(3) 计划进度:按照评估后的风险结果,制定相应的风险管理进度表,为后续的风险管理提供参考。
(4) 风险处理:一般而言,风险处理有三种方法,① 风险控制法,即主动采取措施避免风险,消灭风险,中和风险或采用紧急方案降低风险。② 风险自留,当风险量不大时可以余留风险。③ 风险转移。
(5) 风险监控:包括对风险发生的监督和对风险管理的监督,前者是对已识别的风险源进行监视和控制,后者是在项目实施过程中监督人们认真执行风险管理的组织和技术措施。
3、风险控制
(1)建立有效的风险控制的组织机构
①设置风险管理岗位:在软件开发项目管理过程中设置风险管理岗位,该岗位的主要职责是在制订与评估规划时,从风险管理的角度对项目规划或计划进行审核并发表意见,不断寻找可能出现的任何意外情况,试着指出各个风险的管理策略及常用的管理方法,以随时处理出现的风险,风险管理者好是由项目主管以外的人担任。风险管理岗位的人数依据项目大小来决定,一般2—3人较为适合。
②双项目经理:为项目开发项目设定两个项目经理岗位,一个负责技术岗位,另一个负责管理岗位。目前,国内的软件开发企业的项目经理一般都是一名,而且是技术出生的占多数,他们主要擅长的是技术研发,在管理方面先天不足,这不利于项目风险管理和控制。通过增加专门的管理经理岗位,可以弥补技术出生的项目经理的不足,提升软件开发项目的管理水平。而且这样的经验也已得到了国外业界大多企业的认可。
(2) 建立有效的风险控制管理过程
风险管理过程包括培训,风险识别、风险分析、风险计划、执行计划、跟踪计划等活动,有效的风险管理过程应是学习型的、持续的和不断改进的。软件企业应建立自己的风险管理数据库作为风险管理的基础,并在实施中不断地更新和完善。
根据企业和项目的实际情况,进行科学的项目风险和控制,对项目的成功研发有着举足轻重的意义。在项目开发的过程中,进行必要的项目风险分析,制定符合项目特点的风险评估和监督机制,特别是要定期对项目的风险状况进行评估和监管,发现意外风险或者是风险超出预期的一定要重点关照。发现问题要立即上报,尽快解决。并建立风险监管日志,实行“岗位负责制”,将软件开发项目的风险降到低。