互联网应用的迅速普及,推动了Web软件技术的飞速发展,同时也导致了传统应用软件的Web化趋势。SaaS、SOA、云计算这些响当当的技术名词,无一不是这种现象的最佳注解。不过,调查却显示Web软件项目在没有达到商业要求、没有具备应有的功能、延期和超支这四项失败情况的比例竟然分别达到了84%、53%、79%和63%。那么,Web软件项目与传统软件项目究竟有何不同,为什么它的失败率竟如此之高?它面临哪些风险,我们又该如何识别并管理这些风险以将损失降到最低呢?本文针对Web软件项目快速开发的特点,在总结前人对软件项目风险管理研究的基础之上,首先提出了适用于Web软件项目到风险管理模型设计原则,随后提出了针对Web软件项目的快速风险管理模型,并提出了Web软件项目风险的控制方法,最后对该模型提出了改进意见。
Web软件项目的风险
从实践中我们知道,软件项目的风险来源于不确定性。在软件项目建设过程中,项目本身的不确定性表现在以下几个方面:
(1)项目需求的不确定性。人们不可能在软件开发之前准确地把握当时的需求及其之后的走势,这一点已经由Peter Wegner利用数学的方法给出了严格的证明。
(2)从需求到设计和实施转换的不确定性。软件项目不同于传统的建筑项目,它既是现实的又是抽象的,至今也不能将设计和实施完全分离,人们很难确定需求规格说明对后续设计是否是完整、充分的。
(3)重用项目成果的不确定性。重用已有项目成果从理论上讲可以回避上述两个方面的不确定性,但在实践当中,仍然无法有效达到目的。重用构件的接口描述是否准确?如何确定现有构件或子系统可否满足当前任务的要求?
相较于传统软件项目,Web软件项目的特征可归纳为创新性、需求变化频繁、小团队、技术更新快、生命周期短等。首先,Web软件工程的研究起步较晚,Web软件的开发方法学还在不断地完善当中,目前多采用被称为敏捷(Agile)方法的轻量级开发方法。这里的“轻”指的就是这些方法不像传统方法那样强调管理和控制,追求项目的可预测性和过程状态的可视性,而是尽可能地减少开发过程中的中间制品(文档),从而减轻开发人员的负担。不过遗憾地是,这类方法通常只关注于软件开发的技术层面,还没有对项目的风险管理给予足够的重视,采用这类方法可能导致对风险管理的忽视。同时,由于Web软件项目涉及到的开发人员具有多学科性,项目成员之间的不同专业背景也给项目带来了更大的组织风险。其次,Web软件开发技术日新月异,特别是在开源软件模式兴起以后,各类技术框架(Framework)层出不穷,这为开发者带来很多可复用的组件,可以说Web软件项目是建立在大规模复用基础之上的。但是由于开源软件组织的松散性和开发人员对这些组件的不够精通,往往给项目带来额外的系统风险。再次,由于Web软件项目工期短以及要求尽快推向市场的特点,在项目实施时也容易因为盲目地追求开发速率而忽视对风险的管理,最终导致风险太晚被发现而需要消耗大量成本才能解决。最后,由于Web软件项目开发团队小、成员少,往往无力进行有效的风险管理。所有的这些特点使得Web软件项目面临高风险,同时还更加容易被人忽视。
国内外针对Web项目风险的研究现状
国外对于软件项目风险管理的研究始于上世纪70年代对软件缺陷预测的研究。普遍认为1989年Boehm发表的专著《软件风险管理》奠定了该领域的理论基础。Boehm软件风险管理体系把风险管理分成两大阶段,每一阶段具有三个步骤,如表1 Boehm软件风险管理体系所示。
自1990年以来,美国卡耐基-梅隆大学的软件工程研究所SEI在