摘 要:软件项目开发成功率低是软件行业的共识,主要是因为在软件开发过程中众多的风险因素造成。文章拟从以客户为中心的软件开发思想,以客户为主导的角度研究软件项目风险的规避行为,降低软件项目的风险。
关键词:软件项目;以客户为中心;风险工程项目管理软件文章
信息技术的发展促进了软件产业的飞速发展,使得软件产品在众多领域的应用越来越重要。然而,软件产品的开发成功率相对于其它工程项目产品要低得多,这主要是由于软件产品的特殊性造成的,软件产品的特殊性使得软件项目在开发过程中具有众多的风险因素,而且风险因素错综复杂。
从软件项目风险管理的研究成果来看,风险辨识和评估的研究比较丰富和深入,而软件项目风险因素的识别、评估的最终目的是为了能够制订科学的风险管理和控制方法,从而有效地进行软件项目风险管理。然而,如何在风险辨识与评估的基础上采取风险规避行为,文章从以客户为中心的软件开发思想出发,提出基于客户满意度的软件开发能够在一定程度上减少软件项目的风险,即在软件开发过程中,客户满意度越高软件项目成功的概率越大。
1、全生命周期的客户风险
以客户为中心的软件项目开发思想是敏捷软件项目管理中的核心思想,时刻与客户保持合作关系,使得客户能参与到软件项目开发中。由于软件是一种特殊的逻辑产品,不具备实体的可见性,它是由经过智力劳动而产生出来,具有特殊物质的复杂事物,因此在软件开发过程中将有众多的不确定因素存在,如客户需求不断变化。采用以客户为中心的软件开发更适用于软件行业,Ilieva et al.(2004)等人在研究敏捷开发中发现:客户在软件开发过程中对开发进程监控,使得项目在签收时受到客户的高度评价,即项目成功。但是Tore Dyb与Torgeir Dings?yr(2008)指出客户在敏捷开发中表现出不持续性将对项目带来更大的风险[1]。
客户风险主要是客户对中间产品或最终产品的不满意,或客户的意见未被采纳或更改,造成产品最终无法满足客户的要求;客户对规划、原型和规格的审核决策周期比预期的长;客户提供的组件质量欠佳等。客户风险体现在软件项目生命周期中的各个阶段。
软件项目在其生命周期中,分为以下四个阶段:需求分析阶段、制定方案阶段、实施阶段与结束项目阶段。
①需求分析阶段。对于软件项目组织来说,该阶段需精确识别客户的真实需求,因此项目组织必需密切与客户沟通,在将收集到的信息加以汇总时对不明确之处反馈于客户,以期客户解答。此阶段中,若客户不予以配合或不完全表达其意思,则软件项目必定失败。项目组织在需求分析过程中,需要时时以客户为中心,使得客户能够顺利方便地参与到项目中,做好软件项目工作的第一阶段。因此,与客户的沟通程度、客户的参与程度将是客户风险在该阶段的体现。
②制定方案阶段。该阶段项目团队的主要任务就是与客户一起制定一个以前期明确的需求、双方的资源、项目开始实施的时间约定、项目费用限制等为基础的具有可操作性的项目计划,从本阶段开始争取客户全面参与项目的管理,需要双方共同考虑项目实施的具体计划落实和风险规避。
③实施项目阶段。此阶段为项目成功的主要阶段,伴随着项目工程的推进,在前两个阶段中不确定性的事件可能会成为该阶段的主要事件,客户在本阶段也会因为外界环境的变化而使得第一阶段中的需求发生改变,如客户所处公司的环境。此时项目团队应实时对客户满意度进行评估,实时了解客户的需求。在本阶段中,客户风险体现在原需求的改变、项目进度达不到客户需要、软件项目的成本、软件项目的质量(如软件界面设计)等。若此阶段项目团队不能与客户密切沟通与合作,客户风险将导致项目的夭折。
④结束项目阶段。此阶段也可以称为软件产品验收阶段,软件项目经理将软件产品交付客户使用。客户对软件产品的满意程度将直接决定是否签收该软件产品,如果客户对软件产品不满意,意味着软件产品的开发失败,修改软件产品将需要更多的成本与时间。因此,客户对产品的质量、成本控制、项目是否延时等问题都将成为影响客户满意度的因素。
2、风险规避模型建立
在软件项目全生命周期中,客户风险时刻存在。为了达到客户满意度,采用一般风险管理中常用的规避风险的四个策略:“避免”、“转移”、“接受”、“遏制”和“深入探讨”。所谓“避免”策略是指通过改变产品设计或开发过程,避免或消除风险可能造成的严重后果。“转移”策略常用于保险分担或合同分担,风险出现的概率并没有因此而降低,但是降低了风险出现后某一方遭受损失的程度。“接受”策略指听任风险的自然发展,一方面不需付出风险控制成本,另一方面也没有消除风险可能的危害。“遏制”策略通常有两条途径,一条是加强高风险因素的薄弱环节,降低风险发生的概率;另一条是调整设计方案或管理方法,减轻风险出现后的影响后果。“深入探讨”策略是为掌握风险的具体特性而开展的各项活动,以便取得更多的信息,使风险决策更为科学和明智。