您的当前位置:首页正文

软件项目风险评估的研究报告

2021-06-17 来源:独旅网
软件项目风险评估的研究报告

软件项目风险评估的研究 【最新资料,WORD文档,可编辑修改】

摘要:随着IT产业的发展和软件规模的提高,软件项目开发和使用过程中超

支、延时、技术缺陷等现象越来越严重。如何在项目实施的过程中进行有效地评估和预防这些风险,以达到识别和消除不利因素对软件开发的影响,都属于软件项目风险管理问题。在软件项目的开发过程中,准确地识别项目中存在的风险、对风险加以分析并采取有效的预防措施是保证项目成功的关键因素之一。风险评估是软件开发风险管理的重要组成部分,目前已经发展成为软件项目开发与控制的常用管理方法。本文研究Boehm关于风险评估的经典理论、SEI基于问卷调查的风险评估法、基于成本估算的风险评估法以及该领域的其它最新研究进展。

关键词:软件项目;风险评估;评估模型

Abstract:With the development of IT industry and the improvement of

software scale, the Phenomena of delaying delivering end products, overrunning budget and technical defects are becoming more and more serious in software development process.In the process of implementing projects, how to conduct effective evaluation and prevent these risks so as to identify and eliminate the negative factors’ effects upon software development belongs to problem of software project risk

management.In software development process, risk identification, risk analysis and risk prevention are three key measurements ensuring project success.Risk assessment is an important part of risk management, and now is becoming a management technique in common use in software development and control.This paper studies Boehom's classical risk assessment theory,SEI's TBQ risk assessment method,cost-based risk assessment method and other recent advanced risk assessment methods. Keyword: software project; risk evaluation; assessment model

1、软件项目风险管理

在讨论如何对软件项目进行风险管理之前,先要清楚什么是软件项目的风险管理。 1.1项目 1、项目的定义

根据 LongmanDictionaryofTheEnglishLanguage(1991),字典中对“项目”的定义包括:“一个特定的计划或设计”,“一个以计划的任务”,“一项大型任务”。这只是对项目的一种解释,没有对项目更细致的描述,下面介绍几种很有代表性的定义[15]。

(1)美国项目管理协会 pMI(projectManagementInstitute)提出:项目是为了创造特定产品或服务的一项有时限的任务。其中“时限”指每个项目都有明确的起点和终点;“特定”指一个项目所形成的产品或服务在关键特性上不同于其它相似的产品和服务。

(2)德国DIN69901认为,项目是指在总体上符合如下条件的唯一任务:.具有预

定的目标;

.具有时间、财务、人力和其它限制条件;具有专门的组织。

(3)美国专家约翰·宾 (JohnBen)指出;“项目是要在一定时间里,在预定范围内需要达到预定质量水平的一项一次性任务”。虽然对项目的定义还很多,上面提到的几个定义只是其中的一些,但是其本质是相同的,可以综合地把项目定义为:有限的时间、资源、环境等条件下,为了达到特定的目标,满足一定性能、质量、技术指标等要求,所做的一次性任务。 2、项目的特点

为了更深刻的理解项目的概念,需要清楚项目的主要特点。对于一般项目,有以下几个特点: (l)实施的一次性

这是项目与日常运作最大的区别。项目有明确的开始时间和结束时间,不是周而复始的,也不是无休止的活动,项目在此之前从来没有发生过,而将来也不会在同样的条件下发生。 (2)目标的明确性

每个项目都有自己明确的目标,项目的目标就是在时间、资源、标准的约束条件下,达到预定的目的。项目经理在项目实施的过程中,首先会在项目实施之前周密的计划,然后围绕着预定的目标实施项目。 (3)组织的临时性和开放性

通常在项目开始时要建立一个项目组,项目组的成员及其职能在项目的实施中是不断地变化的,一旦项目完成,该项目组就要解散,因此项目组织具有临时性。项目的完成要跨越若干部门的界限,往往需要多个甚至几百上千个单

位共同协作,它们之间是通过合同、协议进行沟通联系,项目组织没有严格的界限。

(4)项目包含一定的风险

项目的建设过程是很复杂的,在此过程中存在很多不确定性,稍有不慎将导致整个项目不能达到预定的目标,因此在项目的实施中风险管理显得尤为重要。

1.2软件项目的概念

软件项目是以软件为产品的项目。软件是计算机系统中与硬件相依存的部分,它包括程序、数据及其相关文档的完整集合。其中,程序是按实现涉及的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文材料。软件产品具有某些与其它项目的产品不同的特征。

(1)抽象性。软件是脑力劳动的成果,是一种逻辑实体,没有具体的物理制造过程。

(2)不可见性。在整个软件生产过程中,软件都是以脑力劳动成果来体现的,无法做到可视化。不像建筑工程项目那样,能够明显地看到房屋由钢筋、水泥筑成地基、柱子、楼板,最终形成楼房的整个过程。

(3)检测的困难性。在软件的生产过程中,为了在一定的约束下,避免开发过程中的错误,生产出能满足业主的需要的产品,需要进行一系列的软件测试活动来降低软件的错误率,由于软件开发大部分是脑力劳动,没有物理制造过程,因此,导致缺陷检测的困难。

(4)可变性。由于软件产品渗透到应用、用户、法律和机器设备等中,而这些

都在不断的变化,因此也促使软件产品发生变化。软件实体经常变化,它不像人工制造的东西在制造后是不会频繁地改变的。软件很容易变化—它纯粹是一种头脑中想的事情,有无限的可塑性。而建筑物改变的成本很高,不会轻易做出改变的决定。

(5)可重复性。不像硬件那样,软件一旦研制成功,就可以重复制造,而且复制非常容易。

(6)依赖性。软件的开发和运行对硬件、操作系统有一定的依赖性,它不能完全摆脱硬件单独运行。

(7)社会性。软件工作涉及的社会因素比较多。软件的开发和运行涉及的机构比较多,而且涉及到人的脑力劳动和人的心理,如果不能正确认识到这些因素,或者对这些因素重视不够,就会遇到很多麻烦。 1.3软件项目风险管理概述

仿照风险的定义,可以把软件开发项目的风险定义为:软件项目在整个生命周期内,由于受各种环境的不确定性因素的影响,实际发生的成本、进度、质量等与预期结果的不利偏差。

对于项目来说,项目的一次性使其不确定性要比其它一些重复性的活动大许多,因而项目风险的可预测性也就差得多,而且一旦出现问题就没有机会进行补偿。软件项目的风险具有以下的几个特点:

第一,对于项目各组成部分之间的复杂关系,任何个人都不可能彻底地了解。 第二,项目各个组成部分之间不是简单的线性关系。

第三,项目时刻处于动态变化之中,平衡状态即使出现也只能是短暂的。 第四,项目管理者不仅要面对技术和经济问题,还要面临一些非常复杂、非线

性和不确定性极高的问题。

为了进行风险识别和风险分析,本文还引入了风险因素和风险驱动因子的概念。风险因素是指一组项目的基本组成部分,这些基本组成部分的性质和功能以及彼此之间的联系和相互作用以及它们组成项目整体的方式能够决定项目整体的性质和功能。风险驱动因子是指能产生或增加损失概率和损失影响程度的潜在原因。

2、软件项目风险管理

下图表示了围绕风险的几个概念的关系。 1.1 软件项目风险管理 (l)项目风险管理

据美国项目管理学会把项目风险管理 (Projeetriskmanagemeni)的概念做出了三种表述:

1)项目风险管理是在项目期间识别、分析风险因素,采取必要对策的决策科学和决策艺术的结合。

2)项目风险管理是系统识别和评估风险因素的形式化工程。

3)项目风险管理是识别和控制能够引起不希望的变化的潜在领域和实践的形式、系统方法。

我们可以总结为:项目风险管理是风险管理的主体对潜在的意外损失进行识别、评估,并根据具体情况采取相应的措施进行管理。即做到主观上有备无患或是在风险无法避免时采取补救措施,从而避免或降低风险造成的损失。 (2)软件项目风险管理

软件项目风险是有关软件项目、软件开发过程和软件产品损失的可能性,

它涉及操作过程、组织过程和合同等相关参数,主要包括资源制约、外界因素、供应商关系或合同制约。Boehom认为软件风险管理指的是“试图以一种可行的原则和实践,规范化地控制影响项目成功的风险,其目的是辨识、描述和消除风险因素,以免它们威胁软件的成功运作”。H求1认为软件风险管理是对影响软件项目、过程或产品的风险进行估计和控制的实践过程,该实践围绕目标设定、项目计划、执行、度量、改进和发现新信息六大科目展开。 SEI(software Engineering Institute)在软件工程体系中提出软件风险管理是有关管理威胁开发软件产品计划风险的概念、方法和技术,包括风险辨识、分析、监控、减轻和计划。具体分成三个知识单元:风险分析、风险管理计划和风险监控。通过以上软件风险项目管理的不同观点,可以归纳出软件风险管理是一个为了避免和减小软件项目失败的风险,对软件风险进行识别、分析、计划、监控的管理过程。

3、软件开发中的风险评估及其实践

风险管理由风险评估和风险控制两部分组成。其中,风险评估包括风险识别、风险分析和风险优先级排序;风险控制主要由风险计划过程、风险解决过程和风险监控过程组成。风险评估是风险控制的前提和基础,从上个世纪80年代开始,很多软件工程专家和组织在这方面进行了卓有成效的探索。 3.1Boehm的风险评估基本概念 Boehm把风险评估归纳为以下三个步骤:

步骤1一一风险识别。风险识别的主要作用是识别对项目成功可能产生负面影响的因素。典型的风险识别技术包括检查表、决策因子分析、假定性分析和分解法;

步骤2—风险分析。风险分析的作用是对每个风险项评估其发生的可能性、发生后对项目的破坏度大小。以及风险项之间的相互影响关系。典型的分析技术包括性能模型、成本模型、网络分析法、统计决策分析法和质量指标(包括可靠性、可用性、安全性等)分析法;

步骤3一一风险优先度分析。风险优先度分析主要是确定众多风险项的优先级,以便在资源有限的情况下对关键风险项采取预防计划和减缓措施。 3.2 SEI的风险评估方法

SEI最早于1993年提出了系统的风险管理方法,之后得到了进一步完善。在风险评估方面,SEI着重于简单易行的风险识别方法,建立了一套风险分类法和基于该分类法的调查问卷TBQ(Taxonomy一 BasedQuestionnaire)。sEI的分类法把软件开发的特征和各个风险项建立一种对应关系。TBQ则由一系列隐式的问题去发现软件开发中存在的问题、风险以及其它不确定因素。问卷的目的是要保证能系统化地找出所有潜在的风险领域。

4、软件项目风险评估模型的建立

近年来,风险分析与评估技术依据项目所能提供的经验数据的多少及信息详细程度[36],可分为定性[7]和定量分析两种。典型的定性分析技术有场景分析法、因果关系分析等;定量分析方法包括敏感度分析、风险树分析法等。无论采用哪种方法,在应用软件项目的实际开发中,风险的评估往往因为经验数据不足而更多地依赖于人的评估。同时评估专家所使用的评估语言本身带有一定的模糊性,很难用传统的数理统计来计算风险的各个参数,这就给评估带来了更大的困难。但模糊理论采用隶属函数的描述方法,运用多值逻辑,可以很好地解决现实中的不确定性和模糊问题。

本文采用一种基于模糊函数的软件项目风险评估法 (Fuzzy theory based software project risk evaluation,FUspRE),该模型考虑到软件项目中普遍存在的经验数据不足及评估语言的不确定性,引入模糊学概念,使专家用模糊语言对风险发生的可能性及危害进行评估。专家给出的评估数据有相当的权威性,但也存在专家决策的偏好问题。为此,该模型引入专家信任度平衡其对评估结果造成的影响,使评估数据尽可能地客观和科学。该模型既能计算出风险因素对各种后果事件的综合影响,还引入风险权重度量多种风险的组合影响。评估结果以量化数据和自然语言两种方式表述。软件项目风险评估模型是以模糊集合论为基础、专家综合评估为核心的评估模型。在该模型中,专家使用模糊语言进行评估,通过模糊数的截集运算计算出风险的概率及影响,度量数据解模糊化后计算出风险的综合影响并进行排序,使用模糊数间的语义距离将评估结果转化为自然语言描述。

软件项目风险评估模型如图4.1所示,主要包括风险识别、风险因素权重、 模糊评价集、专家信任度、风险评估、风险影响综合评估和语义还原7部分内容。 4.1风险识别 1、识别风险源

项目初期,软件项目经常存在未制定项目计划、项目需求不确定、技术或方法选择不恰当等风险,而风险识别的目的是在风险发生之前,挖掘出潜在的风险,并评估其发生的可能性及危害,以便采取措施缓解或避免,使风险危害降到最低。常见的识别方法有:头脑风暴法、Top-10风险列表法、Delphi法、访谈法等。其中SEI基于TBQ的风险分类系统[8],问卷设计合理、科学,组织规

范,系统性强,应用较为广泛,本文采用这种方法。 2、初始风险清单

将识别出的风险因素通过合并相似、删除重复、添加遗漏等操作,整合成用自然语言描述的风险清单,包括风险产生的原因、风险触发的条件、关于该风险的描述、风险产生的后果及可能造成的影响。

5、小结

风险评估是对风险事件的发生概率和给项目所带来的损失大小进行量化分析的关键环节,科学的风险评估是风险评价以及选择风险管理方案的依据和基础。传统的风险评估方法虽然可以大大提高风险的可识别、可控制性,但在软件项目风险评估过程中,由于对风险驱动因子隶属于各个评价等级的问题往往是不确定的,具有模糊分类的特征,因此本文采用一种基于模糊函数的软件项目风险评估法。

整体而言,本文对软件项目风险评估方法从两大方面进行了研究: 1、研究以往的软件风险管理与风险评估理论。对软件项目风险评估的不同方法和相关文献进行了总结归纳,并分析了各自理论的优缺点。

2、从模糊理论的角度出发,提出基于模糊函数的软件项目风险评估模型。该模型考虑到软件项目中普遍存在的经验数据不足及评估语言的不确定性,引入模糊学概念,使专家用模糊语言对风险发生的可能性及危害进行评估。专家给出的评估数据有相当的权威性,但也存在专家决策的偏好问题。为此,该模型引入专家信任度平衡其对评估结果造成的影响,使评估数据尽可能地客观和科学。该模型既能计算出风险因素对各种后果事件的综合影响,还引入风险权重度量多种风险的组合影响。评估结果以量化数据和自然语言两种方式表述。实验证

明,该模型具有较好的适用性。

因篇幅问题不能全部显示,请点此查看更多更全内容