华中科技大学硕士学位论文基于贝叶斯网络的软件风险管理模型研究与实现姓名:王勇申请学位级别:硕士专业:计算机软件与理论指导教师:徐政权2011-01-19
华 中 科 技 大 学 硕 士 学 位 论 文 摘 要 软件项目已经成为现代社会最为重要的一类工程项目,但是在开发过程中却存在大量的风险造成项目不能顺利完成。虽然软件开发的技术在不断的提高,也有众多的风险管理方法和模型,但是仍然不能有效地控制项目中的各种风险,针对这一现状,引入高效的数学推理模型,然后结合风险管理方法,给出了一种基于贝叶斯网络的软件项目风险管理模型。 针对风险管理过程的特点,分析了几种经典风险管理模型和贝叶斯网络结构,给出了基于贝叶斯网络的软件项目风险管理模型。模型主要包括以下几个部分:风险库模型、贝叶斯网络风险识别模型、贝叶斯网络风险分析模型、风险评估模型、风险处理模型和风险监控模型。利用历史风险库识别出项目风险构成风险清单;在此基础上构建出贝叶斯网络结构,并根据项目情况进一步完善贝叶斯网络结构;再利用贝叶斯网络推理算法对项目开发各阶段的项目数据持续分析和预测风险;计算风险当量,给出风险评估,根据评估结果采取相应措施应对风险。在模型中,给出了基于贝叶斯网络的软件项目风险管理过程与主要的管理活动,并引入风险数据库模型充分利用风险历史数据,便于案例学习和复用。给出了按软件项目开发流程进行风险管理,可以使软件项目人员将风险聚焦到每一个开发流程中。 根据给出的风险模型设计了模型的实现方案,并实现了该模型。将本系统应用到软件开发过程中能够有效预测风险发生的概率、分析风险之间的关系和风险影响,从而采取合理的控制措施,指导项目团队对工作进行调整,保证项目在既定目标下稳定的进行。本系统为有效地预测、分析和控制软件项目风险提供新的技术途径和实现手段,具有较高的理论研究意义和应用价值。 关键词:风险管理,软件项目,贝叶斯网络,管理模型 I
华 中 科 技 大 学 硕 士 学 位 论 文 Abstract Software development project is one of the most important engineering projects in our society, but a mass of risks existing in the procedure of project development give the project rise to failure. The technology of software development improves constantly, and there are a lot of methods and models of risk management, but still can’t control the risk effectively. Directing to this fact, introducing an effective mathematical reasoning model, combing with risk management, introducing a software project risk management model based on Bayesian network. Directing to feature of the procedure of risk management, analyzes some classical risk management models and the structure of Bayesian network, proposing a software project risk management model based on Bayesian network. The model consists of the following items: model of risk Database, model of identifying Bayesian network risk, model of analyzing Bayesian network risk, model of assessing risk, model of handling risk and model of monitoring risk. Firstly, identify risks exist in project according to historical risk library, and the list of risk is composed of these risks; construct the structure of Bayesian network based on the former work, perfect the structure of Bayesian network according to the project condition; analyze the project data of every stage of development continuously and predict risk using the reasoning algorithm of Bayesian network; lastly, calculate risk equivalent, provide risk assessment, adopt appropriate measures to reply risk according to risk assessment. In proposed model, presenting the procedure of software project risk management based on Bayesian network and the major management activities, and introducing model of risk database which can use historical risk library, user can study case conveniently. Proposing executing risk management according to the procedure of software development, participants of software project can focus risk on every development stage. II
华 中 科 技 大 学 硕 士 学 位 论 文 Design implementation scheme according to the model and implement the model. The application of our system can predict the probability of risk effectively, can analyze the relationship between risks and the influence of risks, so participants of software project can adopt appropriate measures and adjust work under the direction of the risk assessment, so the project can accomplish on plan. Our system provide a new technical approach and implementation for predicting, analyzing and controlling software project risk, and our research has a relative high research meaning and application value. Keywords: Risk Management, Software Project, Bayesian Network, Management Model III
独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到,本声明的法律结果由本人承担。 学位论文作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密□,在_____年解密后适用本授权书。 本论文属于 不保密□。 (请在以上方框内打“√”) 学位论文作者签名: 指导教师签名: 日期: 年 月 日 日期: 年 月 日
华 中 科 技 大 学 硕 士 学 位 论 文 1 绪 论 课题背景及选题意义 软件产业作为各国极其重要的战略性、支柱性和先导性产业,是智力密集型的高[1]技术产业,是信息产业的核心与灵魂,已经成为国际竞争焦点和战略制高点。随着互联网技术和电子商务的快速崛起,要求开发大型软件项目,这些软件项目往往是多个团队合作开发,并且开发周期长、人员关系复杂、技术含量高,在后期维护中还涉及到并发访问、海量数据处理和存储等问题。软件项目开发从需求分析到上线,自始至终都充满了风险,这些风险与其开发特性相关联,使得软件项目开发的整个过程都成为风险的聚集地,开发过程中的人员、经费、进度、成本、技术等在不同程度上对[1]软件项目风险造成影响。目前软件开发无论是技术方法还是开发工具都取得了很大的进步,但是软件项目开发超时、超支,甚至开发结果不能满足用户需求而根本没有[2]得到实际使用的情况仍然比比皆是。而且管理人员和开发人员往往不能对风险的全[3]部和整体有全面认识,这是导致大型软件项目失败的主要原因。由于对风险管理技[4]术和实践缺少了解,风险管理技术却没有得到广泛的应用。虽然软件开发的技术水平在不断提高,但是许多软件项目仍然以失败告终,如何有效地发现风险和分析风险之间的关系,从而在其发生时采取相应的应对措施,成为项目风险管理主要研究内容。 现在,高效的风险管理对于软件项目的重要性被逐渐认识到了。软件项目风险管理的研究开始得到国家和政府的重视,国家开始资助科研机构、企事业单位着手研究风险管理,但是风险管理水平低下,导致软件项目的风险管理不成体系,缺乏系统性、[5]规范化。 所以,科学、系统地研究软件项目的风险管理理论和方法具有十分重要的意义,也是软件工程领域目前着重研究的课题,对软件项目管理学科的发展建设具有重大贡献,可以发展项目管理理论,并找到新的技术手段提高风险管理的效率。其次,有助于提高软件行业的发展,为日益复杂的软件项目开发提供强有力的理论基础和解决方1
华 中 科 技 大 学 硕 士 学 位 论 文 案。 [6]贝叶斯网络是一种基于知识表达和概率推理的不定性因果关联模型。研究贝叶斯网络在风险管理方面的预测、分析和控制风险的能力,建立高效的风险管理模型,为软件风险管理提供一系列系统化建模方法;为有效地预测、分析和控制软件项目风险提供新的技术途径和实现手段。将贝叶斯网络推理过程应用到软件项目风险管理过程之中,构建出贝叶斯软件项目风险管理模型,为风险管理提供系统化的建模方法,[7]有利于丰富和拓展我国软件项目风险管理理论研究的内容、研究方法和研究领域。 [8]研究过程中还结合SoftMaker课题中软件复用的思想,充分利用软件项目开发过程的历史风险数据来构建风险历史数据库,实现历史知识和案例与当前项目风险的有机结合,便于贝叶斯网络推理数据的完善,有效提高风险管理的效果。 研究现状 国外研究现状 软件项目风险管理的理论研究最早是在美国,重心也在美国,而后欧洲各国开始研究。国外对软件项目风险管理的研究着重于方法体系和管理模型,其中应用最广、[9]管理效果最显著的是Boehm模型、SEI(Software Engineering Institution)的[10,11][12]CRM(Continuous Risks Management)模型、Leavitt模型。 Boehm模型是1991年由Boehm提出的风险管理模型,包括风险评估和风险控制两大部分,其中风险评估分为风险识别、风险分析、风险排序;风险控制为风险管理[9]计划、风险解决、风险监控。 模型用公式R=P(U)*L(U)计算风险造成的影响,P(U)表示不满意结果发生的EOOO[9]概率,L(U)表示不利结果可能产生的破坏程度。其核心是将风险影响作为权值对风O险进行排序,然后从中选取出前10大风险,针对选取出来的风险实现相应的一系列的风险管理措施。这样可以使风险管理者的注意目光放在高风险上。Boehm模型是最[9]早的风险管理模型,为风险管理奠定了理论模型基础。 这种风险模型有明显的缺陷,只适用于小型软件项目,对于较为复杂的项目就无2
华 中 科 技 大 学 硕 士 学 位 论 文 能为力,虽然管理过程成本低,但是没有形成有效地风险解决方案,特别是在风险量化上表现乏力。 CRM模型被称为持续风险管理模型,是SEI通过多年在软件项目管理领域的经[10,11]验提出来的。CRM模型提出在软件项目生命周期的所有阶段中都要重视风险识别和管理,它将风险管理划分为循环反复的5个部分:识别、分析、计划、跟踪和控制,又提出在软件开发过程中每一个阶段都存在风险,风险管理人员都必须关注,并评估其风险影响,确定风险大小,实施风险控制处理策略,最后还必须评估风险控制[10]的效果。对于每一个风险因素都要按照这5个步骤来进行管理,在管理过程中还提[11]倡管理人员多进行沟通,强调风险管理是一个持续的、共同参与、动态变化的活动。如图所示。 识别分析控制沟通计划跟踪 图 CRM风险管理模型 CRM风险管理模型比Boehm模型有很大的改进,但是其核心思想是按5个步骤顺序执行风险管理,没有能体现软件项目反复性的特征,且虽然指出了项目每个阶段都存在风险,但是没有将风险管理过程具体化到每一个开发阶段中。模型中还提出风险管理人员注意风险情况,并没有要求项目团队中其他成员对风险进行注意。 Leavitt模型将软件项目风险管理过程看作一个系统划分,分为4部分:任务、结构、角色和技术,与软件开发中风险因素对应,其关键思想是:模型是整体,各部分是组成整体的紧密结合的因素,某一部分的变化都将对整个模型造成影响和影响系统[12]其它部分,如果它们状态不一致就会产生比较差的管理效果,从而降低系统的性能。3
华 中 科 技 大 学 硕 士 学 位 论 文 如图所示。任何引起风险变动的因素都是模型的组成部分,每个部分又相互联系和作用。该模型广泛、系统地将风险及其风险因素结合起来,从4个方面分别识别和分析软件项目的风险,极其有条理并且比较全面,在现实风险管理系统中有很广泛的[13]应用。 任务结构技术角色 图 Leavitt风险管理模型 虽然Leavitt模型极有条理又全面的将风险管理概念融入管理模型之中,但是毕竟只是一个框架,没有有效地应用到实践之中,而且模型强调整体与部分的联系,但是没有具体的方法量化这种联系。表是对这几种模型的对比。 表 经典风险模型对比 模型名研究角研究步骤 优点 缺点 称 度 风险管理由风险评估、识别和维护十大关键只是基于对风险风险控制两部分组成,风险,让管理者把关心因素集合的归风险评估又可分为识目光投在比较高风险、纳,没体现风险Boehm模风险过别、分析、设置优先级高权重、严重影响项目之间的作用的关型 程 三个子步骤,风险控制成功的关键因素上,而系。也没有具体则包括制定管理计划、不需要考虑众多低优明确的指出要关解决和监督风险三步。先级的细节问题。 心风险的因素。风险管理划分为五个强调持续风险管理,在没有能体现风险风险过步骤:风险识别、分析、管理过程中注重风险交替或同时发生SEI的程、持计划、跟踪、控制。 沟通,要求在软件项目的情况,只是按CRM模型 续化 生命周期内不断的评顺序的执行风险估。 管理过程。 风险管理系统的组织广泛和系统地将软件没有核心关心的划分为四个组成部分:风险的相关信息组织风险表,对于以Leavitt风险系任务、结构、角色和技起来,从不同角度对软往的风险没有加模型 统 术。 件项目风险管理建立以利用,也没有模型。 学习过程。 4
华 中 科 技 大 学 硕 士 学 位 论 文 国内研究现状 我国由于技术基础、管理方法和社会环境等因素,造成起步晚、缺乏创新、研究不成体系、没有统一的理论框架,这是制约我国软件项目风险管理发展的主要因素。 理论基础方面,从2002年起,我国先后翻译出版一批经典的风险管理著作,如[14][15]《风险管理—软件系统开发方法》、《拯救IT:运用风险管理中止IT项目失败》、[16][17][18]《项目管理风险分析》。《项目风险管理》、《现代项目风险管理方法与实践》等书由国内学者编著出版,但都没有针对本国软件行业情况,这些书籍基本上都是强调风险管理的重要性和介绍管理流程。 在风险管理方法研究上,潘陈勇就如何从软件开发生命周期的角度来进行软件风险管理的问题提出了独特的观点,提出要从开发过程的动态性和不同开发阶段的特点[19]来进行动态风险管理和充分的阶段性风险管理。莫湘群用RE风险影响值法对软件项目中进度风险进行评估和排序,以时间为单位计算风险的大小,在项目进度风险失[20]控之前采取防范措施,有效地控制进度风险。王敏晰从人员管理入手提出频繁的人员流动会对项目造成很大的风险,为了解决这种风险,他给出了几种缓解的策略,提[21]出建立策略库来进行风险管理。卢新元将粗糙集方法和朴素贝叶斯分类器相结合,利用粗糙集对数据进行约简,然后利用分类器训练约简后的数据,不仅简化了数据的[22]规模,实现对风险因素权重的确定和聚类分析,为风险决策规划的挖掘奠定了基础。蒋国平针对软件项目的特点和软件项目风险定量评估任务,提出了基于面向对象贝叶斯网络的风险评估方法,通过分析软件项目生命周期中的具体风险与风险因素之间的因果关系,建立面向对象贝叶斯网络拓扑结构;由专家判断和工程经验确定网络中的[23]概率参数;采用概率推断工具,可定量估计风险的发生概率。涂争光结合软件风险定性、定量分析方法的角度,探讨了软件风险定性、定量分析方法的策略,同时结合软件开发过程中风险动态分布变化的特点,借鉴风险决策树方法,准确量化在软件开[24]发过程中的风险因素。 于进所论述的基于神经网络技术的软件综合风险分析方法,弥补了传统的风险分析方法中只对单独风险因素进行分析的不足,使综合风险分析定[25]量化成为可能。李师贤介绍了风险管理的经典理论,比较了几种主流的风险管理策略和模型,并根据信息管理系统的特点,在分析两个主流的风险管理方法的基础上,5
华 中 科 技 大 学 硕 士 学 位 论 文 [26]提出系统风险管理的优化和集成思路。 在风险管理模型研究方面,黄蒙提出基于用户需求的软件项目风险管理模型,该模型从用户需求角度出发,通过软件过程技术、产品工程技术和度量技术的支持可以有效地控制软件项目风险,保证了软件产品满足用户需求的能力,从而使软件项目达[27]到成功。季年芳针对如何将软件项目风险管理与项目进度计划有机地结合起来的问题,提出一种基于风险因子分析的软件项目管理模拟模型,能方便地帮助软件项目标[28]识出主要风险因子,并量化分析这些风险因子对项目进度的影响。曹文钊给出进度贝叶斯网络中的相关计算,提出采用进度贝叶斯网络评估,控制软件项目的进度风险[29]。方德英从3个方面归纳典型IT项目风险辨识思想的突出属性,提出理想的风险辨识框架,比较并选定描述该框架的影响图模型,最后提出规范的风险体系构建步骤[30][31]和方法。在文献方德英又提出了改进。胡志勇从风险管理过程出发,总结CMMI软件风险管理模型,建立风险管理数据库模型,将不断修正的数据积累值作为软件风[32]险的识别标准,保证风险识别的客观性。杨律青在建立和分析企业应用软件项目的风险指标体系基础上,提出企业应用软件项目实施方法的三维理论模型,并分析各维[33]度间关系,形成企业应用软件项目实施方法。 虽然国内有如此多的文献在做软件项目风险管理方面的研究,但是他们研究的重点是技术在风险管理的应用,没有形成系统化的理论框架,也有不少风险模型的研究工作,但是基本上都是倾向于软件项目中的某一类风险,没有针对软件项目总体风险的综合模型提出来,且在这些模型中没有提供一种精确的风险分析方法,使得风险管理的效率低下,并且也没有研究适用于本国情况的模型框架,在研究过程中也没有充分考虑将软件项目历史风险数据复用起来构建风险数据库并将之引入模型框架之中。因此基于高效的数学推理模型的风险管理的研究非常有必要。 主要研究工作 通过大量相关文献的阅读,分析了软件项目风险管理的理论方法和管理模型,将贝叶斯网络引入软件项目风险管理过程中,建立基于贝叶斯网络的软件项目风险管理6
华 中 科 技 大 学 硕 士 学 位 论 文 模型,为软件项目风险管理提供统一的、系统化的模型框架。论文主要的工作和创新点包括以下4点。 (1)基于贝叶斯网络的软件项目风险管理模型研究 研究过程中将贝叶斯网络应用到软件项目风险管理之中,以软件项目风险管理过程为主体,从软件开发流程来观察风险演化方向,引入贝叶斯网络数学推理算法,建立基于贝叶斯网络的软件风险管理模型框架。该框架分为贝叶斯网络风险识别模块、贝叶斯网络风险分析模块、风险评估模块、风险处理模块、风险监控模块,是随着软件开发进行先利用历史风险库识别出项目风险构成风险清单,在此基础上构建出贝叶斯网络结构,然后根据项目情况进一步完善贝叶斯网络结构,利用贝叶斯网络的推理算法对项目开发各阶段的项目数据持续分析和预测风险,确定软件项目的风险源、风险关系、风险概率、采取适当措施应对风险。 (2)按软件项目开发流程进行风险管理 基于软件开发的特点以及风险管理的基本流程,给出按软件项目开发流程进行风险管理,将每一个开发流程作为风险管理的单元,对该单元内的风险按照风险管理的基本流程实施管理,管理的结果作为下一个开发流程的输入,以此将风险管理工作分解,在局部过程中应用风险管理,有效降低风险管理复杂度,可以使软件项目人员将风险聚焦到每一个开发流程中,适合于软件开发过程。 (3)建立面向复用的软件风险数据数据库模型 构建软件项目历史风险数据库,便于风险数据的复用,反映出历史数据对风险管理的重要性。利用历史数据初步建立起贝叶斯网络结构,然后再根据软件项目情况丰富和完善结构,简化贝叶斯网络建模过程。并且历史数据越充分,贝叶斯网络推理就越精确,从而可以更加有效的对风险进行预测、分析和控制。 (4)设计和实现风险管理工具 在模型基础上,运用贝叶斯网络理论方法,结合风险管理的基础过程,按照软件开发的流程对论文中的模型进行了设计,并实现出风险管理工具。 7
华 中 科 技 大 学 硕 士 学 位 论 文 论文组织结构 本文首先从现目前存在的问题入手,对比分析风险管理模型和风险管理方法上的优缺点,引出将贝叶斯网络数学推理模型应用到风险管理过程中,以实现高效的预测、分析、控制风险。然后给出基于贝叶斯网络的软件项目风险管理模型,并在此基础上给出了模型的设计与实现。最后对模型的有效性做了分析。全文分为6章,每章内容安排如下: 第1章 绪论。主要从课题背景、选题意义、研究现状、研究工作、论文组织结构等方面揭示了软件开发过程中存在的问题,说明了本文研究的理论模型在现实应用的重要意义。 第2章 软件项目风险管理和贝叶斯网络理论基础。概括风险管理的基本过程,对比分析现目前的风险管理技术,引出贝叶斯网络。 第3章 基于贝叶斯网络的软件项目风险管理系统分析。建立基于贝叶斯网络的软件项目风险管理模型,研究风险管理的过程和主要活动,并将历史数据应用进来,构建风险历史数据库。从风险管理的基本过程入手,深入的剖析各个内部和之间的风险及其关系,运用贝叶斯推理算法对软件项目风险进行分析。 第4章 基于贝叶斯网络的软件项目风险管理系统设计与实现。以模型为基础,从贝叶斯网络风险识别、贝叶斯网络风险分析、风险评估、风险处理、风险监控等几个方面设计和实现系统。 第5章 系统使用和模型有效性分析。对开发出来风险管理系统工具进行了简要的说明,然后对模型运用实例进行有效性分析。 第6章 结论和展望。总结所做的工作,提出其中的不足,并对进一步的研究工作提出设想。 其中第3章和第4章是研究的重点。 本章小结 本章首先研究软件项目存在的风险问题以及风险管理的不足,引出研究的内容,8
华 中 科 技 大 学 硕 士 学 位 论 文 说明研究的重要性,然后就国内外的研究现状做了分析,总结出风险管理缺乏统一的、系统化的模型,并且指出风险管理过程中结合数学推理方法能有效地控制风险,最后给出了论文的组织结构。 9
华 中 科 技 大 学 硕 士 学 位 论 文 2 软件项目风险管理和贝叶斯网络理论基础 软件项目风险管理 风险是指在某一特定情况下,在某一特定时间段内,某种损失发生的可能性,是由风险因素、风险事故和风险损失等要素组成,是导致项目延迟、超预算或失败的因[34]素。风险往往表现为风险的不确定性,又分为:风险发生的原因、发生的时间、发生的地点、风险影响的不确定性。 软件项目风险是一种不确定的事件或情况,一旦发生,会对软件项目目标产生某[34]种正面或负面的影响。主要是指软件项目软件开发六大阶段中人员、费用、管理、进度、技术等引发的问题及其影响。在软件开发过程中,涉及的风险主要包括三类:[35]与软件开发直接相关的工程类风险、与管理相关的开发环境类风险、过程类风险。 [35]软件项目风险不同于一般的风险,来自于软件项目自身的特点: (1)复杂性:软件项目风险多种多样,其中的关系又错综复杂,而且风险及其关系呈现出动态变化性; (2)潜伏期长:软件项目中有些风险潜伏期特别长,在开发的前面几个阶段都很难发现,而软件项目的风险越往后越难处理; (3)共同参与性:要求软件开发人员、用户、管理人员都参与进来,共同发现和处理风险。 软件项目风险管理是一个管理过程,这个管理过程是针对软件项目风险的,目的是避免一些可避免的风险、预测可预测的风险、发现潜在风险并对它们采取相应的控[36]制策略使其达到项目风险管理要求,使成本和损失极小化。它要求软件项目参与人员不断的分析风险产生的原因和概率,以便确定如果风险发生可能对项目造成的影响并在此情况下采取何种风险应对策略可以合理的控制风险,其过程是一种循环反复的[37]过程,要求软件项目相关人员紧密配合。 10
华 中 科 技 大 学 硕 士 学 位 论 文 软件项目风险管理过程 风险管理的基本步骤流程大致相同,一般将其分为风险识别、风险分析、风险评[36]估、风险处理、风险监控。 风险识别是将软件项目开发流程中的风险识别出来的过程,即将项目的不确定性[38]转变为风险的陈述过程。主要工作是识别风险源、风险目标、确定风险产生因素、描述风险属性特征。常用的风险识别方法有:检查表法、专家法、德尔菲法、头脑风[26]暴法等,如表所示。在该阶段可以同时使用多种识别方法,并借鉴以往项目风险识别过程。 表 风险识别方法 识别方法 识别步骤或识别内容 特点 风险条目检查表能以表格方式来组织风险识别出产品规模、商业影响、客户子类型相关的风险,并可以根据项目研发情检查表法 特性、过程定义、开发环境、建造况进行具体作答,使得管理者能够有计划的技术、人员数目及经验。 估算风险的影响。 头脑风暴法包括收集意见和对意见营造一个无批评的自由发言的会议环境,使进行评价两个阶段或四个过程:人风险管理人员可以自由沟通、充分交流、相头脑风暴法 员选择;明确中心议题,并醒目标互启迪,这样可以发挥集体的智慧,充分发注;轮流发言并记录;对发言内容现风险。 进行评价; 匿名征求专家意见→归纳、统计→专家参与可以不用见面,不必认识,匿名反德尔菲法 匿名反馈→归纳、统计……,若干馈和评估,使得识别效果更好。 轮后得到稳定的意见,停止。 通过风险故障来建立故障树,然后故障树 通过树来演绎推理风险的起因,给从结果推导风险原因,能够查明各种风险因分析法 出风险发生的概率,为风险应对和素。 控制提供依据。 风险分析是风险管理活动中最重要的部分,其主要工作是对上一阶段识别出来的[11]风险进行分类,推算出风险概率,是定性分析和定量分析相结合的过程。 风险评估是根据风险分析阶段的结果对风险进行排序并作出评估,给出风险处理[7]建议,产生评估报告。 风险应对是以风险分析和风险评估为依据,为消除或减少风险不良后果而制定的11
华 中 科 技 大 学 硕 士 学 位 论 文 [36]风险应对措施。 风险监控是对风险进行跟踪预警,监视风险的状态和发展演变情况及时发出风险警告并启用相应的风险应对动作。 风险管理技术对比分析 现目前,有许多的风险管理技术方法,例如RE风险影响值法、粗糙集法、神经网络法等。将这些技术应用到软件项目风险管理之中,可以对项目风险进行管理和分析。下面对这几种方法进行介绍,对比其优缺点。 RE风险影响值法,是将风险看作是一种可能的损失,据此,风险影响值RE定义[20]为损失出现的概率乘以损失的程度,从概率论的观点来看,RE就是损失的期望。从RE的定义可以看出来,RE法只是对风险概率和损失的一种估算方法,对风险的量化只能是粗略的进行。但RE法对进度风险的管理效果还是显著的,RE法先将项目进度按时间单位进行划分,对损失的评估结合由熟悉系统的人员集体评议,然后进行RE值计算,再对结果进行排序,给出RE值较大的前几大风险,使风险管理具体到时间单位内,能够在进度风险失控之前发现风险,并采取相应措施。 [22]粗糙集法,作为一种新的处理不完全信息的数学工具,已经得到了广泛的应用。由于其不需要依靠先验概率,在既有知识条件下,可以使用不确定数学推理方法对风险进行分类,然后对分类后的风险使用对象属性集合表示方法对风险划分出风险属性特征,可以有效地的完成对不确定知识的表达和处理。但是该方法由于不需要依靠先验概率,使得该方法在推理精度上存在很大的缺陷。并且在计算组合权重时,只能分析了二元组合权重,无法对多元权重做有效分析。 神经网络法,具有大规模并行、分布式存储和处理、自组织、自适应和自学习能力,特别适用于处理需要同时考虑许多因素和条件的、不精确和模糊的信息处理问题[25]。该方法对于项目中有许多影响因素,且因素关系错综复杂的情况有很好的处理能力。该网络是模拟生物处理模式,同时处理加工多个神经元,所有对于复杂的项目风险关系表达和处理方面有很好的能力。但是该方法需要不停地学习风险样本,需要强12
华 中 科 技 大 学 硕 士 学 位 论 文 大的数据支持,且数据集的好坏直接影响到学习的效果,间接的反应到风险控制上。 软件项目风险管理方法有很多,但是没有任何一种可以说是能解决所有问题,他们都具有一定的适应领域,在某些方面具有很好的处理能力,但是在其他方面就会存在一些不足。表是对风险管理方法的一个对比。 表 风险管理技术比较 风险管理技术 适应范围 优点 缺点 RE风险影响 损失评估、进能够有效地给出风险损失评估,对风险量化只是一种粗略值法 度风险控制 对于进度风险按单位时间进行管的方法 理,可以有效地控制进度风险。粗糙集法 不确定风险分在既有知识下对不确定性进行推推理精度低、组合风险的多类、不依靠先理。可以有效地完成对不确定知元权重无法处理。 验概率 识的表达和处理 神经网络法 因素多、关系对于项目中有许多影响因素并且需要强大有效的风险历史复杂的网状风这些因素关系错综复杂的情况有案例数据集作为支持,学习险结构 很好的处理能力。 效果取决于样本数据集。 [6]贝叶斯网络是一种基于知识表达和概率推理的不定性因果关联模型。该网络有成熟的数学推理模型,可以对不确定知识进行准确表示和控制。对于风险因素众多、关系复杂的项目,贝叶斯网络因为其本身是网络结构,正好可以很好的表达这种关系;对于组合风险,贝叶斯网络有其强大的推理算法,可以在不需要其他知识参与下进行精确的数学推理;并且在样本集不完全的情况下也能进行推理,网络结构的构建虽然依赖于先验概率,但是可以在只有部分先验概率的情况下逐步完成网络结构的构建,不需要一次构建好。贝叶斯网络其在预测、分析、控制方面的能力正好可以应用到风险管理之中,并且与风险管理过程相吻合。因此,将贝叶斯网络作为风险管理的技术构建出高效地风险管理模型具有十分重要的应用价值。 贝叶斯网络 贝叶斯网络语义 给定一随机变量集X={X,X,...,X}和有向无环图G,其中X表示m维向量,i12n13
华 中 科 技 大 学 硕 士 学 位 论 文 [36]贝叶斯网络是描述X上的一条联合概率分布。 [39]贝叶斯信念网络定义如公式(2-1)所示。 BN=<G,θ> (2-1) 其中,G表示有向无环图结构,θ表示量化贝叶斯网络的一组参数,在G中节点对应于X,X,…,X,弧对应于函数依赖关系。一条从Y到X的弧,表示Y是X的前驱或双12n[40]亲节点,X是Y的后继或孩子节点。对于贝叶斯网络给定当前节点,那当前节点只与其前驱节点有关系,独立于其后继。设X的所有前驱变量用集合Pre(X)表示,则可ii以得到式(2-2)如下所示。 θ|PreX=P(x|Pre(X)() (2-2)xiii i对于每一个X的取值x下的Pre(X)表示在给定Pre(X)发生的条件下xi事件发生iiii的概率,相当于贝叶斯信念网络给定了变量集合X上的联合条件概率分布如式(2-3)所示。 P{X=x,X=x,...,X=x}0011nn=P{X=x|X=x,X=x,...,X=x}nn0011n−1n−{X=x,X=x,...,X=x}0011n−1n−1=P{X=x|X=x}.P{X=x,X=x,...,X=x} nnn−1n−10011n−1n−1=...=P{X=x|X=x}.P{X=x|X=x}...nnn−1n−1n−1n−1n−2n−{X=x|X=x}P{X=x} (2-3)110000其中,P(X=x| X=x)直观含义为系统在i-1时刻处于状态x的条件下,在时刻iii i-1i-1i-1系统处于状态x的概率,简称为转移概率。实际上,贝叶斯网络给定了变量集合X上i的联合概率分布可以简化表示为式(2-4)所示。 nP(X,X,...,X)=P(X|Pre(X)) (2-4) 01n∏iii=0即,在给定父节点集合Pre(X)的情况下,条件变量独立于除Pre(X)的所有节点,即无ii后效性:它是这样一种性质,某阶段的状态一旦确定,则此后过程的演变不再受此前各种状态及决策的影响,如果一个问题被划分各个阶段之后,阶段i中的状态只能从阶段i-1中的状态通过状态转移方程得来,与其它状态没有关系,特别是与未发生的14
华 中 科 技 大 学 硕 士 学 位 论 文 状态没有关系。 贝叶斯网络推理 贝叶斯网络推理发展了传统统计推断方式,能够充分利用变量之间的条件独立信[38]息,提高边缘和条件分布的计算效率。其推理有两方面工作:一方面是信念更新,是利用贝叶斯网络中变量之间的条件独立关系,通过局部化方法在已知X先驱节点集iPre(X),计算节点X的后验概率的过程;另一方面是信念修正,是确定除证据之外对ii其出现的偏差用其他变量予以修正的计算过程。 推理算法大致可分为两大类:精确推理和近似推理。精确推理要求最后的计算结果必须精确,由于贝叶斯网络推理的计算复杂性比较高,所以这种推理算法只适合于网络结构规模小、节点数量少、节点关系简单的贝叶斯网络推理;近似推理,与精确推理相反,旨在提高计算效率。目前有许多推理算法,如图所示。 消息传递算法条件算法精确推理算法联结树算法符号概率推理算法贝叶斯网络推理算弧反向/节点消减算法法随机抽样的算法近似推理算法基于搜索的算法模型化简算法 图 贝叶斯网络推理算法 [41][41][42]精确推理的算法很多,主要有:消息传递算法、条件算法、联结树算法、[43][43]符号概率推理算法、弧反向(节点消减)算法等。 精确推理运算复杂度随着网络结构中节点数目的增加而增加,为提高多变量复杂网络推理运算效率,出现了近似推理算法。其中效果最显著的有随机抽样算法、基于15
华 中 科 技 大 学 硕 士 学 位 论 文 [44]搜索的算法、模型化简算法。 任何一种算法都具有一定的适用范围,它们各有优缺点,在实际应用中要根据具体的情况选择适合的算法进行推理计算。表从精度、适用性、复杂度等方面对各种算法进行了对比。 表 贝叶斯网络各种推理算法对比表 算法名称 网络类型 算法复杂度 精度算法关键 优点 网络节点的多项消息传递 单连通 精确 消息传递方案 简单、快速 式 条件节点集的指寻找最小条件节点环路少效率条件 单、多连通 精确 数 集 高 最大团节点的指速度最快、稀联结树 单、多连通 精确 寻找最大团节点 数 疏网络 符号概率推因式分解中变量过程简单、应单、多连通 精确 寻找最优因式分解 理 的指数 用广泛 弧反向/节点弧反向的节点的单、多连通 精确 进行弧方向的计算 计算简单 消减 指数 与证据变量概率效果好、发展随机抽样 单、多连通 近似 抽样算法 成反比 完善 取决于网络概率基于搜索 单、多连通 近似 状态集求解 实时网络 的分布 模型化简 单、多连通 化简方法 近似 简化模型 简单、有效 贝叶斯网络的特点 贝叶斯网络在数学统计、概率推理、案例学习等方面有许多重要的应用,是处理[45]不确定关系信息的有力理论工具。它与统计技术相结合,使得其具有许多优点。研究中引入贝叶斯网络是基于其具有如下特性。 (1)贝叶斯网络以成熟的概率理论为基础。可以在无需外界干预的情况下进行推理,并且可以将知识表达和数学概率推理结合起来。 [45](2)贝叶斯网络对不确定性问题具有强大的处理能力。贝叶斯网络用条件概率表达各个信息要素之间的相关关系的大小,能在有限的、不完整的、不确定的信息条件下进行学习和推理。 (3)贝叶斯网络可以根据学习情况对节点信息进行更正。贝叶斯网络通过不断16
华 中 科 技 大 学 硕 士 学 位 论 文 的学习样本数据和历史数据,可以对当前节点情况进行修正,这种修正可以使概率表示更加接近于实际情况。 (4)贝叶斯网络有强大的预测能力。贝叶斯网络所表示的因果关系通过实践积累可以不断学习改进网络结构和节点参数,然后通过概率推理过程对节点事件概率分布进行预测。 本章小结 本章先给出了软件项目风险管理的相关概念,就软件项目风险管理的基本过程做了研究,然后对风险管理技术进行了分析和对比,总结出贝叶斯网络适用于软件项目风险管理的特点,这些特点是基于其坚实的数学概率理论基础,最后综述了贝叶斯网络推理算法,并对各种算法做了对比。 17
华 中 科 技 大 学 硕 士 学 位 论 文 3 基于贝叶斯网络的软件项目风险管理系统分析 基于贝叶斯网络的软件项目风险管理模型 贝叶斯网络可以解决分析、预测和控制方面的众多问题,能高效地将数据转化为知识,并利用这些知识进行推理,其有效性在信息融合、医疗诊断、系统控制、生物信息分析等许多领域得到了有效的验证。软件风险管理正是需要利用贝叶斯网络的这种能力来预测风险、分析风险的关系和风险影响概率、控制风险。基于贝叶斯网络的软件项目风险管理模型正是在这样的情况下被提出来的,模型如图所示。 风险分析贝叶斯网络初始生成贝叶斯转化为贝叶风险清单网络结构斯网络节点风险库贝叶斯网络风风险贝叶斯网络险概率学习文件识别风险源风险数据库风险条件概率表风险类别和等级风险识别专家参与提供专家知识历史软件项目风险案例库贝叶斯网络推理定义监控事件状态风险发生后验监控事件表事件改变概率跟踪事件状态风险损失评估风险影响计算风险监控风险报警定义风险采取风险风险处理风险评估报告评估结果归纳影响等级应对措施效果报告风险处理制定风险计划风险应对计划风险评估 图 基于贝叶斯网络的软件项目风险管理模型图 18
华 中 科 技 大 学 硕 士 学 位 论 文 研究过程中将贝叶斯网络应用到软件项目风险管理之中,以软件项目风险管理过程为主体,综合风险管理经典模型,从软件开发流程来观察风险演化方向,分析基于贝叶斯网络的软件项目风险管理模型。该模型随着软件开发流程的进行,先利用历史风险库识别出项目风险,然后利用项目开发各阶段的项目数据持续分析和预测风险,确定软件项目的风险源、风险关系、风险概率、采取适当措施应对风险。 管理模型分为风险数据库、贝叶斯风险识别、贝叶斯风险分析、风险报告、风险处理、风险监控6个模块。模型主要协助风险参与人员识别软件项目中的风险,对风险以及风险之间的关系进行分析,并推理出风险发生概率,制定风险发生应对计划,当风险发生时生成风险报告并实时对项目风险情况进行监控。 模型分析 模型先从软件项目风险库中识别出项目共有风险,生成贝叶斯网络风险初始清单,构建出贝叶斯网络结构,再在专家参与情况下利用贝叶斯网络推理算法对不确定风险进行推理,推算出风险发生的后验概率,然后根据后验概率和风险应对计划产生风险报告,风险参与人员根据风险报告采取相应的风险处理应对措施对风险进行处理,在整个过程中对风险进行监控,最后将项目的风险情况写入历史风险案例库,供后面项目的复用。 风险数据库模型 风险数据库分为两部分:一部分为,历史项目风险案例库,主要存放软件历史项目的风险管理信息,系统先从该数据库中进行学习识别出案例数据库中的通用风险,然后为计算出风险先验概率提供知识数据;另一部分是,贝叶斯风险库,库中是当前项目执行情况下的风险数据,为风险分类、风险等级划分、识别出项目当前风险、生成贝叶斯网络初始节点清单提供数据存取。 贝叶斯风险识别模型 贝叶斯风险识别模型由风险识别、风险分类和贝叶斯网络初始风险清单构成。该19
华 中 科 技 大 学 硕 士 学 位 论 文 过程是所有项目相关人员参与,包括用户在内,任何人发现风险都可以提交风险到风险库中。 风险识别先对软件项目中的风险进行分类,采用软件项目开发流程为阶段风险划分方法,结合风险源头和风险性质和内容划分风险类别。同类别再按照风险程度等级划分方法划分为极其严重、严重、一般、低、极低5类,可以在风险处理阶段对于不同程度等级采取不同的风险预防和处理措施。风险分类的相关数据参数存入风险数据库之中。 风险识别主要是识别出共有风险变量、特有风险变量、潜在风险源。共有风险变量是软件项目共有的风险,例如进度风险、人员风险、资金风险、管理风险等,特有风险是该软件项目特有的,与具体项目特征相关,例如涉及网络通讯的软件会有安全风险等,潜在风险是风险识别过程中要特别注意的风险,因为这种风险潜在性很强,如不能在前期识别出来,等真正发生的时候影响将极其严重,识别潜在风险可以依靠团队集团力量和专家经验知识。对于识别出来的风险分解出风险属性,这些属性作为判断相似性和重复性的依据。 生成贝叶斯网络初始风险节点清单是将识别处理的风险通过合并相似风险、删除重复风险、增添遗漏风险等操作来完成。整个过程是基于风险属性来整合,生成的节点清单将用作贝叶斯网络结构构建之中。风险清单通过自然语言描述,包含风险名、风险描述、风险产生原因、风险触发条件等。 贝叶斯风险分析模型 贝叶斯风险分析模型是用风险识别过程中识别出来的初始风险清单来构建贝叶斯网络结构,然后运用贝叶斯网络特有的不确定推理算法来推理软件项目当前阶段风险发生概率,指导软件项目团队制定应对计划策略。 该模型部分分为建立风险贝叶斯网络拓扑结构、构建风险概率贝叶斯网络、贝叶斯网络推理三部分。在构建风险概率贝叶斯网络时,网络中的节点是和项目中风险事件相对应的,弧和项目中风险影响关系相对应,节点的状态可以分解为发生和不发生状态。 20
华 中 科 技 大 学 硕 士 学 位 论 文 建立贝叶斯网络拓扑结构就是挖掘出风险识别阶段识别的风险清单中的风险因果关系、转移关系,这种关系就是网络结构中的弧。建立贝叶斯网络拓扑结构的方法是采用统计分析和案例学习相结合的方法,首先,我们从案例库中查找相似项目案例,查找方法是按照风险节点搜索,计算当前项目中风险节点和历史案例风险库中案例项目风险节点的相似程度,筛选出相似度最大的几个案例进行剪枝和重组,构建出一个贝叶斯网络初始拓扑结构;第二步,是利用统计分析和专家知识将项目风险清单中识别的风险进行分类,分为基本通用风险和项目特有风险,然后将这些风险反馈给项目相关人员,项目相关人员对这些风险通过专家配合在经验基础和项目执行情况上分别对风险及其相关性做出分析,最后将所有的知识信息进行统计分析,将分析出来的节点和弧加入初始结构中,即贝叶斯网络拓扑结构,存入风险案例库中,方便以后复用。 构建风险概率贝叶斯网络主要是获取拓扑结构上的概率信息,它们包括项目初始阶段的先验概率和该阶段到下一阶段的条件转移概率信息,以风险概率贝叶斯网络节点概率表形式存储。 初始阶段的先验概率的获取可以依赖专家知识,假设项目组中有n位专家参与,nw为第i位专家的风险概率归一化权重,其中w满足w=1。对于X,P(X)是第iiijij∑ii=1位项目专家发现的X风险发生概率,则先验概率可以得到式(3-1)。 jnP(X)=wP(X) (3-1) ∑jiji=1其中P(X)为X节点发生的先验概率。 jj对于条件转移概率信息,如果风险X将在下一阶段转移为X,则X到X之间有ksks一条弧,若X的双亲节点为Pre(X),在已知其双亲节点概率情况下,第i位专家识别kk出来的条件概率是P(X|Pre(X)),则X的条件转移概率可以由式(3-2)得到。 ikkknP(X|Pre(X)=wP(X|Pre(X) (3-2)kk∑ikki=1其中,P(X|Pre(X))从X转移到X定义m个转移属性,项目参与人员对这m个转移ikkks属性进行选择性识别判断,然后对于选择的转移属性进行1-10级的程度判断。设项目21
华 中 科 技 大 学 硕 士 学 位 论 文 当前阶段,P(X|Pre(X))表示风险X到风险X上第i位专家识别的第j个转移属性的ijkkks转移程度,则X到X的转移属性如式(3-3)所示。 ksmP(X|Pre(X)=(P(X|Pre(X))/m (3-3)∑ikkijkkj=1完整的构建风险贝叶斯网络的概率和风险影响结构是为了可以使用风险贝叶斯网络推理过程和算法对项目各阶段风险持续进行评估。 在推理过程中,采用桶消元法进行推理。该算法是由Dechter在符号概率推理算法的基础上提出的。算法最大特点是不需要引入过多的其他知识就能精确地推理,如图所示。其主要思想是在符号层面上利用链式乘积法则和条件独立性对公式进行[46]消元操作。 开始为每个变量X设置桶bucketii分解联合概率分布得到分解因子λXi将λ放入变量序号最大的桶Xip=n否是X=x?pp将X=x代入bucket中因子λp=ΣΠλι对因子计算新因子pppxpi=1将因子放到变量序号最大的桶p=p-1否p=1?是P(X/X=x)=P(X)Πλι1pp1i=1计算X的信度1结束 图 贝叶斯网络桶消元法 22
华 中 科 技 大 学 硕 士 学 位 论 文 如图是风险贝叶斯网络的一个片段,符号化后如图所示。其联合概率可以用式(3-4)表示。 P(x,x,x,x,x,x)=P(x/x)P(x/x,x)P(x/x,x)P(x/x)P(x/x)P(x) (3-4)6543216553242131211使用X,X,X,X,X,X做为消元顺序,在给定证据x=1的条件下,变量6234516X=x的信度由联合概率公式得: 11P(x/x=1)=P(x)P(x/x)P(x/x)P(x/x,x)P(x/x,x)P(x/x)161∑∑∑31∑21412523∑65xxxxx=154326=P(x1)λ(x)P(x/x)P(x/x)P(x/x,x)P(x/x,x)∑X5∑∑1∑1412523x56xxx432=P(x1)(x)P(x/x)λ(x,x,x,x)∑5∑∑1X1435x5xx43 =P(x1)λ(x)λ(x,x,x)∑X5∑X145x56x34=P(x1)λ(x)λ(x,x)∑X5X15x564=P(x1)λ(x)X15X人员分工1不合理需求文档需求不明确不完善X2X3概要设计文档不完善技术路线XX45不熟悉详细设计文档不完善X6 图 风险贝叶斯网络片段 图风险贝叶斯网络片段符号化按X,X,X,X,X,X做为消元顺序桶消元算法,从左到右序号递减,算法623451处理流程如图所示。23
华 中 科 技 大 学 硕 士 学 位 论 文 bucket= P(x|x),x=1X6656bucket = P(x|x,x),P(x|x,x),P(x|x)X252341221bucket = P(x|x),λ(x,x,x,x)X331X25314bucket =λ(x,x,x)X4X3154bucket =λ(x,x),λ(x)X5X415X65bucket = P(x),λ(x)X11X51 图 按X,X,X,X,X,X,X顺序消元执行过程 6234512将联合分布分解成函数因子,并将这些函数因子放入序号最大的桶里面,例如P(X/x,x)按照消元顺序X,X,X,X,X,X,X大于X、X,于是放入bucket,523623451253X2处理完后,每个bucket包含联合分布分解得到的因子;然后根据算法,从X开始消6元,由于X是证据变量,所以直接代入bucket桶中的因子函数P(x/x),消掉X得6X6656到λ,这是一个新的因子函数,是中间因子,放入buckte桶;消掉X之后开始X6(x5)X56消X,由于X不是证据变量,所以运用求和消元法λ,放入bucket,因为22X2(x5,x3,x1,x4)X3X序号最大;依次执行到最后,在桶bucket中X的信度P(X=x/X=1)=P(x)λ。 3X111161X5(x1)因为算法是对n各变量进行消元操作,通过算法流程图不难得出其时间复杂度为O(n);对于空间复杂度,由于n个变量需要n个buckets,每个bucket里面存放的是分解因子,最好情况下是n个变量均匀分布到n个buckets中,最坏情况是n个变量2分布到一个buckets,所有空间复杂度为O(n)。消元算法在选择最优消元顺序的问题上是一个NP难问题,所以,在文中对bucket中变量出现次数进行排序,按次数有多到少组织消元顺序,可以在执行之初先消掉更多的变量。 风险报告模型 风险报告模型主要是对风险影响做出评估并设计相应的评估模板提示风险应对策略。风险影响对项目造成不确定性,为了便于比较将风险影响划分5个等级,对这5个等级进行量化,VH:80%~100%,H:60%~80%,M:40%~60%,L:20%~40%,VL:0%~20%,然后结合风险影响贝叶斯网络结构的信念,计算出风险的影响均值。24
华 中 科 技 大 学 硕 士 学 位 论 文 对于风险节点X期望影响为E(I),P(X)为风险概率贝叶斯网络的发生概率,则风险iiiX的风险当量D由公式(3-5)计算。 iiD=P(X)⋅E(I) (3-5)iii对于风险当量D根据值划分等级,然后对于不同的等级从风险计划中查找匹配应i对计划,生成评估报告反馈给项目人员,项目人员可以按照该应对计划采取应对措施。 风险处理模型 项目团队对风险评估阶段的评估报告进行归纳,采取相应的应对措施,结合计划内容对工作进行调整部署。对风险计划的执行情况要进行反馈和评分,生成风险处理报告,对于久久没有处理的风险应该着重注意。该阶段的目的是采取应对措施使风险控制在可以接受的范围,但是也会出现反面现象,即采取的风险应对措施并没有起到预期的效果,还会适得其反,这时候需要的是反馈和调整应对计划,所有模型中加入风险处理结果的反馈功能。 风险监控模型 风险监控模型主要目的是帮助跟踪项目风险情况和识别潜在风险。该模型在项目整个执行过程中一直生效,先定义风险事件,构造出风险事件列表,对于列表中的风险进行监控,如果发现潜在风险则将风险加入列表并更新贝叶斯网络进行推理,如果发现风险的状态发生变化相应的更新风险事件列表,然后应用贝叶斯网络推理过程更新信念,并自动调用风险处理模块中的处理操作。 模型特点 该模型适用于软件项目中风险管理,之中加入专家知识,又将项目风险进一步划分出风险属性,对于风险进行先验概率和条件转移概率贝叶斯网络结构构建,然后基于软件项目风险特有的性质分开发阶段进行风险不确定性贝叶斯网络推理。模型的特点如下: (1)加入专家知识,在贝叶斯网络结构构建模型阶段为了充分体现软件项目风25
华 中 科 技 大 学 硕 士 学 位 论 文 险之间的因果联系; (2)将软件项目风险分为通用风险和项目特有风险,在建立网络拓扑结构时先建立初始网络结构,然后再根据专家知识和统计分析补全拓扑结构,可以在项目执行阶段根据项目执行情况逐步建立网络拓扑结构,降低复杂性; (3)构建贝叶斯网络时同时构建风险影响贝叶斯网络,这样风险之间的影响以及影响之间的关系都考虑进来,更加全面; (4)风险又划分风险属性和风险转移属性,更细更全面,项目人员在此基础上做出评估,减少专家的工作量; (5)贝叶斯网络推理过程是反复进行的,按照软件项目开发流程,项目每进行到一阶段都要进行推理,而且在风险状态发生变化和发现新风险时,及时更新网络信念; (6)模型包含了所有的风险管理过程,各模型之间的联系紧密,为风险管理提供反馈功能,而且模型还可以在以后项目中加以复用。 本章小结 本章是对基于贝叶斯网络的软件项目风险管理模型的研究,先给出了详细的模型框架结构,然后对模型中的风险库、贝叶斯网络风险识别模型、贝叶斯网络风险分析模型、风险报告模型、风险处理模型、风险监控模型依次做了分析,在贝叶斯网络风险分析模型中加入了基于桶消元的贝叶斯网络推理算法,给出了算法的具体实现,并结合例子给出了算法的一个执行过程,最后分析了该模型的特点。 26
华 中 科 技 大 学 硕 士 学 位 论 文 4 基于贝叶斯网络的软件项目风险管理系统设计与实现 系统框架 系统采用用户接入层、业务层、访问服务层、数据层四层C/S模式,这样可以将各层的逻辑和物理模式分离开来,减低各层之间的依赖性,可以更好的扩展和复用;系统为了适用于多用户多任务,在其中加入用户管理模块。具体系统框架设计如图所示。 用户接入层业务层访问服务层数据层用户用户权限控制管理用户操作贝叶斯网络风险识别数、贝据访叶访问斯问数据库控网贝叶斯网络风险分析服制络务、软数件贝叶斯网络风险报告据项显目示风险贝叶斯网络风险处理管理贝叶斯网络风险监控 图 系统框架图 系统的四层模型中,用户接入层主要工作是负责控制用户操作、访问控制和数据显示。这一层是软件项目人员接触到的部分,是用户在使用风险管理系统的视图。通27
华 中 科 技 大 学 硕 士 学 位 论 文 过这一层的操作用户可以很方便的进行登录、用户管理、风险管理等业务层操作。主要交互工作在业务层进行,它不用完成具体的风险管理方面的工作,通过界面向用户提供友好的业务层访问方式和界面,业务层将操作的结果以数据和图形方式反映到用户接入层上。 四层中,业务层是整个系统的重点部分。该部分包括用户管理、贝叶斯网络风险管理的所有过程。这一层主要是完成所有的管理工作,其中用户管理操作又包括添加用户、删除用户、更改用户信息、用户权限控制等;贝叶斯网络风险管理包括贝叶斯网络风险识别、贝叶斯网络风险分析、风险报告、风险处理、风险监控等。该层的风险报告、风险处理、风险监控是风险分析之后的操作,主要是帮助风险管理完成风险发生之后的一系列操作。 数据访问服务层是系统的网络访问、数据库访问、数据传输部分。该层提供这一系列的访问接口,便于业务层调用,是介于业务层和数据层之间的部分。该层采用TCP进行网络连接和访问。 数据层是四层架构的最后一层,该层负责数据的存储,包括用户数据信息、风险信息、历史风险案例信息等。数据分别存放在数据库之中,便于查询和修改。 四层架构便于系统的扩展和修改,任何一层的变化都不会对其他层造成影响,各层逻辑相互独立,便于设计和控制,降低了各层的依赖性,更加适合于复用。 系统模块设计与实现 基于贝叶斯网络的软件项目风险管理系统是按照风险管理的基本过程来设计,分为风险库模块、贝叶斯网络风险识别模块、贝叶斯网络风险分析模块、风险报告模块、风险处理模块、风险监控模块6个子模块。 风险库模块设计 风险数据库设计的目标是保障风险管理的持续性和项目风险数据的可复用性,是风险管理过程中相关数据的存储方案,如图所示。该模块以风险库为中心,以风险管理过程为主要活动。 28
华 中 科 技 大 学 硕 士 学 位 论 文 准备风险管理确定风险制定并维识别分析风险定义风险来源与分护风险管参数类理策略风险识别项目计划和监控风险库案例库学习实施风险建立风险分类、评案例入库缓解计划缓解计划估、排序缓解风险 图 风险数据库模块 在风险数据库模块中,分为准备风险管理、识别分析风险、缓解风险3部分,并在其中加入了案例学习和案例入库功能,这样可以便于风险数据的复用。在准备风险管理阶段,主要工作是确定风险的来源,并对其进行分类,便于风险的分类管理和查询,然后定义风险的相关参数、风险预警阀值等,最后将制定的风险管理策略加入库中,并实时维护库中的策略,用于风险处理阶段;识别分析风险模块是对风险进行识别,然后通过案例学习建立起贝叶斯网络结构,利用推理算法分析风险发生概率,并对结果进行排序,产生评估报告;缓解风险模块是在风险库中建立起风险缓解计划,以便风险触发条件满足时,采用计划中的措施对风险进行控制。 贝叶斯网络风险识别模块设计与实现 贝叶斯网络风险识别模块是系统项目风险管理的第一步,主要工作是识别软件项目中的风险、对风险进行分类和等级划分、定义风险属性和风险转移属性、生成初始风险节点清单。模块流程图如图所示。 贝叶斯网络风险识别模块的主要工作步骤是: (1)在识别模块中加入专家知识,保证识别出来的风险更加准确、更加全面; 29
华 中 科 技 大 学 硕 士 学 位 论 文 开始加入专家知识风险分类风险等级划分结束风险识别风险节点清单是否识别共有风险识别特有风险识别潜在风险风险识别结束?风险数据库数据定义风险属性定义风险转移属性风险交流根据属性判断相似性否否相似性相似性添加新风险大于70%?大于90%?是是合并相似风险删除相同风险图 贝叶斯网络风险识别流程图 (2)对软件项目的风险进行分类,按照经典划分方法在具体风险识别出来之前完成,节省识别时间,识别出来的风险直接放入已经划分好的类别之中; (3)对风险进行等级划分,以便在风险发生的时候根据风险的影响程度合理的采取风险应对计划; (4)具体风险识别过程分为共有风险识别、特有风险识别、潜在风险识别; (5)对识别出来的风险进行属性定义,从不同方面表现风险的特征,是风险的特征形式; (6)定义风险的转移属性,一个风险通过一系列操作和控制会降低、增加、转移,降低和增加时转移到自身的过程,转移是不同风险之间的过程; 30
华 中 科 技 大 学 硕 士 学 位 论 文 (7)根据风险属性对识别出来的风险在风险数据库中进行查询,判断相似性,如果风险相似性达到90%我们认为这是同一风险,给予删除(不加入),如果风险相似性在70%~90%则风险具有很大的相似性,给予合并操作,合并为一个风险,对于其中某些属性进行添加、删除、修改操作; (8)否则,这是一个识别出来的新的风险,对于新的风险项目团队进行交流; (9)如果风险识别在该阶段完成了则生成风险节点清单,识别过程结束,否则继续进行风险识别,转(4)。 贝叶斯网络风险分析模块设计与实现 贝叶斯网络风险分析模块是软件项目风险管理系统的重点,其中包括建立风险贝叶斯网络拓扑结构、构建风险概率贝叶斯网络、风险贝叶斯网络推理4部分。该模块主要任务是通过对风险历史案例库的学习构建出风险贝叶斯网络初始拓扑结构,然后对风险识别阶段识别出来的风险清单进行数据转换,清单中的风险节点转换为结构中的节点,风险之间的因果关系转换为结构中的弧,对初始拓扑结构进行加工形成风险贝叶斯网络拓扑结构;再在专家参与的情况下,项目团队人员对节点风险之间的关系程度进行定量分析得出先验概率,然后对风险转移属性进行估算得出风险转移概率,从而构造出完整的风险贝叶斯网络结构;在此基础上运用贝叶斯网络推理算法对风险网络进行推理,推算出风险的后验概率。模块流程图如图所示。 该模块是对案例学习结合识别出的风险清单构造出风险贝叶斯网络结构并运用贝叶斯网络推理计算后验概率的过程,具体步骤如下: (1)对风险历史案例库进行查询,找出其中包含当前项目风险属性的项目; (2)对这些项目进行学习,计算出它们之间的相似度; (3)如果相似性在80%以上,对该类项目进行节点剪枝和节点重组操作,去除其中冗余的节点; (4)通过风险历史案例库构造出风险贝叶斯网络初始拓扑结构,这种结构中,包含的节点和弧是历史项目中学习而得,是从他们的网络结构中提炼出来的,然后转(12); 31
华 中 科 技 大 学 硕 士 学 位 论 文 开始风险及其风险节点风险案例查询相关性分析清单处理风险发生定量风险转移属性风险案例学习分析估算提取风险提取风险计算案例风险关系变量风险先验概风险转移概的相似性率率否是相似性>80%数据转换生成风险概率?贝叶斯网络风险概率贝风险节点剪枝风险节点重组叶斯网络贝叶斯网络拓扑初始结构贝叶斯网络拓扑结构贝叶斯网络推理风险后验概率结束 图 贝叶斯网络风险分析模块流程图 (5)对上一阶段识别出来的风险节点清单进行加工处理,提取出其中的风险节点变量和风险关系; (6)对提取出的变量和关系进行转换,将变量转换为网络中的节点,关系转换为网络中的弧; (7)将转换后的节点和弧添加到第(4)步建立的风险贝叶斯网络初始拓扑结构中,完整构造出风险贝叶斯网络拓扑结构,转(12); (8)在专家知识参与条件下,项目团队人员对风险及其风险的相关性进行定量和定性分析; 32
华 中 科 技 大 学 硕 士 学 位 论 文 (9)对风险发生的发生概率进行定量分析,这是可以得出风险的先验概率; (10)对风险的转移属性进行估算,这种估算是在已知上一阶段风险发生的条件下,转移到下一阶段风险的概率,得出风险的条件转移概率; (11)将(9)和(10)生成风险概率贝叶斯网络; (12)将上一步的风险概率贝叶斯网络结合第(7)步产生的风险贝叶斯网络拓扑结构进行贝叶斯网络推理,计算出风险的后验概率; (13)将过程中产生的先验概率、转移概率以及结果产生的后验概率存储到风险数据库之中。 风险分析伪代码: for(each case in 风险库) ifor(each risk in case1) jriskCaseStudy(risk); jcalculateCasesimilarity(risk); jadd risk into BN拓扑结构 jget风险清单; for(each risk in 风险清单) ifor(each risk in 风险清单) jif( isRelativerisk(risk,risk)) add into BN拓扑结构; ijcalculateConditionalProbability(risk,risk)add into BN网络结构;//计算风险ij 条件概率calculatePriorProbability(risk)add into BN网络结构;// 计算先验概率ifor(each riski in 风险清单) bucketEliminationForecast(risk,BN);//运用桶消元算法预测风险发生概率 ibucketEliminationReasoning(risk,BN);//运用桶消元算法推理风险后验概率 iupdate Data in BN;//更新BN信念 insert BN Data into 风险库; 风险报告模块设计与实现 风险报告模型是根据先验概率进行风险影响计算、风险损失评估以及风险影响等33
华 中 科 技 大 学 硕 士 学 位 论 文 级划分等,并根据评估出来的风险损失、风险影响等级、制定的风险应对计划一起生成风险报告,报告中包括排序后的关键风险、风险的建议应对计划。该模型流程图如所示。 开始制定风险应对计风险影响计算划风险影响等级划风险损失评估分风险影响等级风险应对计划计算风险当量风险排序根据影响等级选择应对计划生成风险评估报告风险评估报告结束 图 风险报告模型流程图 风险报告是对风险发生情况下产生的应对风险影响的方案报告,其具体步骤如下: (1)从风险数据库中提取出分析阶段分析出的风险后验概率; (2)根据风险后验概率对风险影响进行计算,然后划分影响等级; (3)在专家知识参与下评估风险损失大小; (4)结合(2)和(3)的结果,根据式(3-5)计算风险当量; (5)对风险进行排序,提取出关键风险,项目团队可以重点关注这些风险,使34
华 中 科 技 大 学 硕 士 学 位 论 文 得这些风险优先被处理; (6)根据风险的影响等级、风险排序的优先级在风险应对计划中选取相应的应对计划,这就是建议的应对计划,项目团队可以根据建议的应对计划采取风险处理措施; (7)生成风险评估报告,并且将报告存储在数据库中。 风险处理模块设计与实现 风险处理模块是根据风险报告中的关键风险以及风险应对建议计划采取合适的风险处理措施,处理过程中产生处理报告,报告是对处理的前后对照,对报告进行评价,若评价的结果令人满意则更新贝叶斯网络的信念,以便于下一阶段精确的推理,如果结果差强人意则要对处理方案进行改进。处理过程如图所示。 开始提取风险评估报告归纳风险评估结果制定风险处理方案校正风险处理方案风险处理方案采取风险处理产生风险处理报告风险处理报告否评价风险报告通过?是更新贝叶斯网络信念结束 图 风险处理模块流程图 35
华 中 科 技 大 学 硕 士 学 位 论 文 风险处理是对风险采取控制措施,根据风险的严重性对风险进行化解,具体步骤如下: (1)从风险数据库中提出风险评估报告,并对风险评估报告进行归纳; (2)制定风险处理方案,项目团队根据风险处理方案采取相应的风险处理措施,这可以让专门的风险管理人员来做; (3)对处理的结果产生风险处理报告,并对处理报告进行评价; (4)如评价没有满足要求,则说明风险仍然很大,采取的应对措施不当,这时候需要对风险处理方案进行改进,然后再转(2)进行风险处理; (5)评价令人满意,则更新贝叶斯网络中的信念,使得相关数据得以更新,有利于提高下一次推理的精确性。 风险监控模块设计与实现 风险监控是帮助软件团队在软件开发阶段随时监控风险状态的变化情况,并且在风险状态发生变化之时及时通知相关人员。风险监控模块流程图如所示。 开始定义监控风险事件监控风险事件表跟踪风险事件更新风险事件表风险事件状态发生变化更新贝叶斯网络信念否达到风险预警阀值?是风险报警结束 图 风险监控模块流程图 36
华 中 科 技 大 学 硕 士 学 位 论 文 该模块是风险管理最后一步,但是该执行过程却是在软件开发的所有阶段,其详细步骤如下: (1)定义风险监控事件,这些事件就是风险管理系统从头至尾跟踪监控的对象; (2)风险状态发生变化之时同时更新监控风险事件列表; (3)如果风险事件达到预警阀值则发出风险报警,则执行相应的应对动作; (4)风险发生变化时更新贝叶斯网络的信念。 本章小结 本章给出了基于贝叶斯网络的软件项目风险管理模型的系统设计与实现,首先给出了系统的框架结构,该框架结构是基于C/S的四层模式,有效地将各层的逻辑和物理模式分离开来,减低各层之间的依赖性,体现更好的扩展性和复用性,然后分别给出了风险库模块、贝叶斯网络风险识别模块、贝叶斯网络风险分析模块、风险评估模块、风险处理模块、风险监控模块的详细设计与实现。 37
华 中 科 技 大 学 硕 士 学 位 论 文 5 系统使用与模型有效性分析 系统使用 系统采用C/S四层框架,在linux系统上,使用C/C++语言在QT4IDE平台上进行编写,后台数据库使用了MySQL数据库。 Qt是一个跨平台应用程序和UI开发框架。其有直观的C++类库,可以跨桌面、跨平台IDE实现集成。系统界面使用QT4自带的Qt-Designer进行设计,然后使用其自身的信号槽机制,可以方便地实现系统消息机制。系统开发有前台和后台服务器,前台负责用户操作和相应,后台负责数据处理和传输。可以实现多用户同时使用系统实行风险管理。后台服务器使用MySQL作为数据存储。系统使用QtSql模块实现数据库与前台的无缝集成。系统是在linux系统上编写的,但是可以跨平台进行移植,只需重新编译一次源代码即可。 系统的主要使用对象是软件项目团队中的成员,包括项目经理、风险分析人员、专家小组成员等,所有的数据存储和访问操作在后台执行,用户管理、风险管理以及相关显示工作在前台执行。作为系统的用户,主要是使用前台程序进行风险管理的相关操作。系统能够在以往的项目基础上继续进行风险管理,也能创建新项目。系统管理过程按照软件开发流程进行分解,在每一个开发流程中执行风险管理过程。每一个流程的风险管理过程包括:风险识别、风险分析、风险评估、风险处理、风险监控。当一个流程处理完成,及时更新风险信息,便于贝叶斯网络信念的更新。 风险识别先从历史案例库中筛选共有风险,筛选的原则是达到预定风险相似度。预定风险相似度是在项目建立时由用户指定,代表筛选的精度。识别出来的风险按风险识别模型分解成风险属性,并指定风险属性表现程度。然后再根据项目执行情况,在项目团队和专家知识配合下,对项目中特有的风险进行识别。风险识别结果如图所示。 38
华 中 科 技 大 学 硕 士 学 位 论 文 图 风险识别结果界面 用户可以根据项目风险情况,使用界面上的按钮进行添加、删除、修改风险等操作,可以方便地对项目中风险进行加工。风险分析根据风险识别的结果,构建出贝叶斯网络拓扑结构,再利用贝叶斯推理算法进行预测和分析得出风险发生的后验概率。分析后结果直接显示在界面上。 风险评估是对风险分析阶段的结果进行排序,按公式(3-5)计算出风险当量,然后给出风险的严重性,在系统中以红、黄、橙、绿、白五种颜色表示,颜色越深表示越严重。结合风险评估的结果,综合分析项目中人员、技术、管理、进度等情况,给出项目风险的综合评估结果,在评估结果中给出项目整体风险情况、建议应对措施;用户根据风险排序结果和建议措施,结合项目实际风险情况采取合理的风险应对措施;最后系统对用户采取的措施进行评定如图所示。 39
华 中 科 技 大 学 硕 士 学 位 论 文 图 风险综合评估报告 系统以友好的用户操作界面,为用户提供风险识别、风险分析、风险评估、风险处理、风险监控等风险管理操作,而且能够针对软件项目的特点按照软件开发流程的6个阶段,在每个阶段都实行风险管理过程,并在管理过程中运用贝叶斯网络构预测风险发生的概率、分析风险之间的关系并有效地控制风险的变化,能够更好的预测、分析和控制风险。 系统模型有效性分析 如图所示是一个需求分析阶段的风险贝叶斯网络结构。其中需求文档质量低下是风险,其他视为风险因素。管理不完善造成人员分工不合理和人员流动性大;资金不足造成技术低下和进度延迟;人员分工不合理、人员流动性大和进度延迟造成需求文档质量低下。已知在项目开发需求阶段发现需求文档质量低下,经过项目团队专家组对项目需求文档质量的审核认定其概率为。该风险条件转移概率表经分析如表所示。运用系统使用桶消元算法对风险因素进行贝叶斯网络推理结果如表
华 中 科 技 大 学 硕 士 学 位 论 文 所示。 资金不足管理不完D善A人员流动性大技术低下C人员分工E进度延迟B不合理F需求文档G质量低下 图 需求分析阶段的风险贝叶斯网络结构 表 需求分析阶段风险条件转移概率表A prob D prob B probC probF prob E prob B E G G G F C F 表 风险因素推理结果 风险因素probabilityA 从推理表中的结果可知,资金不足是造成需求文档质量低下的主要因素,应该对资金不足采取相应的应对措施。 现已知项目中A的发生概率是,D的发生概率是;条件转移概率表还是如表所示。运行系统使用贝叶斯推理算法对项目需求阶段的风险需求文档质量低下进行预测,结果如表所示。 表 需求文档质量低下风险预测结果 风险probability B C E F G 41
华 中 科 技 大 学 硕 士 学 位 论 文 现在使用系统评估阶段给出的综合建议措施对风险进行处理,处理后风险D的概率是。对风险D节点的概率调整,导致整个贝叶斯网络结构中的信念更新。更新后需求阶段风险分布如表所示。 表 更新贝叶斯网络结构信念后的需求阶段风险分布情况 风险probability B C E F G 经过上面的使用系统分析需求阶段风险的案例,可以看出,在软件项目风险管理过程中引入贝叶斯网络数学推理模型能够有效地预测风险、分析风险的关系以及风险发起因素,较好的控制风险。 42
华 中 科 技 大 学 硕 士 学 位 论 文 6 结论和展望 总结 软件在当今社会中起着很大的作用,但是软件项目往往因为没有较好的风险管理方法使得软件项目中失败。虽然项目开发技术越来越高,风险管理方法和模型也越来越多,但是仍然不能很好地控制项目风险。因此对软件项目风险管理的理论和方法研究有着重大的科学意义。本文介于软件项目的特点将贝叶斯网络应用到软件项目风险管理过程中,给出了基于贝叶斯网络的软件项目风险管理模型,然后在模型基础上进行系统设计和实现。 本文的主要研究成果如下: (1)对比分析和研究了风险管理的基本过程和技术,指出其中的不足; (2)对风险管理的经典模型进行分析和研究,客观评价各模型的优缺点,然后在此基础上提出按照软件项目开发流程分阶段,按照风险管理流程对风险进行管理,在模型中加入风险属性和风险转移属性,更准确的识别和分析风险; (3)给出基于贝叶斯网络的软件项目风险管理模型,该模型适用于软件项目的特性,利用贝叶斯网络的坚实的理论基础和对不确定信息的处理能力,对软件项目的风险进行管理; (4)在模型中加入了风险历史数据库,便于风险数据的复用和简化贝叶斯网络建模过程,并且使得贝叶斯网络推理更加精确; (5)详细设计和实现了基于贝叶斯网络的软件项目风险管理模型系统。 未来的工作 基于贝叶斯网络的软件项目风险管理模型对于软件项目过程中的风险管理取得了一定的成果,但是还有许多工作要做: 43
华 中 科 技 大 学 硕 士 学 位 论 文 (1)基于贝叶斯网络的软件风险管理模型框架的改进和完善 本文研究的模型适用于软件项目的风险管理,但是对于软件项目的反复出现的风险管理还有待进一步研究;模型在自动化风险进行管理方面的研究也应该可以更加深入。 (2)与其他系统的集成 现在许多系统都是有好几个异构系统构成,对于软件项目管理过程中的进度管理、人员管理、资源管理等都是重要的研究课题,现在有不少这方面的管理系统,但是都是独立的,彼此之间并没有关联,如果将这些系统集成到软件项目风险管理之中相信对风险管理会有很大的帮助。 (3)改进贝叶斯网络的推理算法 贝叶斯网络推理算法一直是学术界的研究热题,如何进行精确推理和如何在缺失数据严重情况下进行近似推理等都有着重要的研究意义。 (4)建立合理的、可复用性更高的风险历史数据库 文中给出的风险历史数据库不完善,其中有许多不合理的地方,设计出一个合理的、复用性高的风险历史数据库对风险管理过程中的风险复用将有很大帮助。 44
华 中 科 技 大 学 硕 士 学 位 论 文 致 谢 值此论文完成之际,我要向在这年来一直关心和帮助我的老师、家人、同学、朋友表示我由衷的感谢!谢谢你们的支持,如果没有你们,我想我这几年是不完整的,是你们给我的学业和生活注入了许多欢乐。 首先,我要感谢我的导师徐政权教授,你的敦敦教导为我指明前进的方向;你的关心和鼓励给我学业提供了动力;你高瞻远瞩,站在学术前沿,让我准确把握研究发展动向;你严谨求实、一丝不苟的学术态度,是我们学习的榜样;你对我言传身教使我终生受益。在你这里我学到最多的是怎样做学问,同时也学到了该如何做人,你平时老是教导我们要认真踏实,一步一个脚印,使我明白学问是一步一步做出来的。 其次,我要感谢软件工程实验室的所有师兄和同学。他们给以我的关心让我感受到家庭的温暖。感谢华盈韬、朱骏、王玉栋、沈伟伟师兄,与他们在学业上的探讨给以了我极大的帮助。感谢李娟同学,一起做学术是我最大的荣耀,是你们给了我启迪。 再次,我特别感谢我的父母、家人、朋友,是他们在我求知的道路上给以物质保障和精神支持,没有你们的无私奉献,我不可能毫无顾忌的完成好学业。 最后,对百忙之中审阅论文的所有老师表示感谢,谢谢你们的耐心审阅和提出的宝贵意见。 45
华 中 科 技 大 学 硕 士 学 位 论 文 参考文献 [1] 李俊. 关于软件项目风险管理的理论研究. 商业文化, 2009, (06): 26~27 [2] 李浩. 软件项目的风险管理. 项目管理技术, 2009, S1(122): 452~454 [3] 王秋芹, 冯勤超. 软件项目风险管理方法探讨. 项目管理技术, 2009, S1(122): 94~96 [4] 毛明志, 葛晓炜. 有效的软件开发项目风险管理模型. 科技管理研究, 2005, 32(12): 51~53 [5] 陈娜. 软件项目风险管理研究: [硕士学位论文]. 北京: 北京邮电大学, 2009. [6] 孙岩, 吕世聘, 唐一源等. 贝叶斯网络结构模型的构建. 小型微型计算机系统, 2008, 29(5): 859~862 [7] 唐爱国, 王如龙, 胡春华. 贝叶斯网络在软件项目风险评估中的应用. 计算机工程与应用, 2010, 46(7): 62~65 [8] 徐政权. SoftMaker-制作软件的软件. 应用科技, 2007, 34(4): 39~43 [9] Boehm B W. Software Risk Management. First Edition. Washington D. C: IEEE Computer Society Press, 1989. 45~48 [10] Ronald P, Yacov Y. Software Risk Management. Software Engineering Institute, Technical Report, CMU/SEI-96-TR-012, June 1996 [11] Dorofee J. Continuous Risk Management Guidebook. First Edition. Carnegie Mellon Univ : Pittsburgh, 1996. 89~97 [12] Lyytinen K, Mathiassen L, Ropponen J. Attention Shaping and Software Risk: A Categorical Analysis of Four Classical Approaches. Information Systems Research, 1998, 9(3): 233~255 [13] Karoak W. Software Engineering Risk Management. Los Alamitos, California: IEEE Computer Society Press, 1996. 1~2 [14] 伊莱恩, 霍尔著. 风险管理一软件系统开发方法. 影印版. 王海鹏, 周靖. 北京: 清华大学出版社, 2002. 1~2 [15] 雷曼伊. 拯救IT-运用风险管理中止IT项目失败. 第一版. 杨爱华, 肖艳颖, 黄北惠等. 北京: 机械工业出版社, 2002. 1~2 [16] 拉夫特里. 项目管理风险分析. 第一版. 李清立. 北京: 机械工业出版社, 2002. 46
华 中 科 技 大 学 硕 士 学 位 论 文 1~2 [17] 沈建民. 项目风险管理. 第一版. 北京: 机械工业出版社, 2004. 1~2 [18] 邱莞华主编. 现代项目风险管理方法与实践. 第一版. 北京: 科学出版社, 2003. 1~2 [19] 潘陈勇. 基于软件开发生命周期的风险管理: [硕士学位论文]. 浙江大学, 2002. [20] 莫湘群. 软件项目的进度风险管理. 电脑与信息技术, 2002, 12(4): 67~70 [21] 王敏晰. 软件项目管理中人员流动的风险管理. 商业研究, 2004, 17(301): 20~26 [22] 卢新元. 基于粗糙集的IT项目风险决策规则挖掘研究: [硕士学位论文]. 华中科技大学, 2005. [23] 蒋国平, 陈英武. 基于面向对象贝叶斯网络的软件项目风险评估. 系统工程与电子技术, 2005, 27(2): 353~356 [24] 涂争光. 软件风险管理方法量化研究: [硕士学位论文]. 重庆大学, 2005. [25] 于进. 软件风险管理系统关键技术的研究与实现: [硕士论文]. 大连海事大学, 2005. [26] 张络玲, 李师贤. 软件项目的风险管理方法比较和研究. 计算机工程, 2003, 29(3): 91~94 [27] 黄蒙. 基于用户需求的软件项目风险管理模型. 计算机工程与应用, 2003, 4(2): 14~18 [28] 季年芳, 张宏书. 基于风险因子分析的软件项目管理模拟模型. 科技进步与对策, 2005, 6(12): 172~175 [29] 曹文钊, 蒋国萍. 软件项目进度风险的贝叶斯网络模型研究. 科学技术与工程, 2008, 7(24): 6368~6373 [30] 方德英, 李敏强, 寇纪淞. 目标导向的IT项目开发风险影像图模型. 系统工程学报, 2004, 19(6): 601~606 [31] 冯楠, 李敏强, 方德英等. 一种改进的软件项目开发风险管理模型. 计算机工程与应用, 2007, 43(21): 1~7 [32] 尹明杨, 胡志勇. 软件风险管理的数据库模型. 数据库与信息管理, 2006, 32(2): 28~30 [33] 杨律青. 面向风险管理的企业应用软件项目实现模型与方法研究: [硕士学位论文]. 华中科技大学, 2008. [34] 鄢超, 薛质. 软件项目的风险管理策略. 项目管理技术, 2009, S1(136): 507~511 47
华 中 科 技 大 学 硕 士 学 位 论 文 [35] Linda W, Keil M. Software Project Risks and Their Effect on Outcomes. Information Systems Research, 2004, 16(4): 68~73 [36] Yong Hu, Jiaxing Huang, Juhua Chen. Software Project Risk Management Modeling with Neural Network and Support Vector Machine Approaches. Natural Computation, 2007, 10(3): 358~362 [37] Rousan T, Sulaiman S, Salam R. A Risk Identification Architecture Pattern Based on Bayesian Network. Information Technology, 2008, 23(4): 1~10 [38] 李旻. 基于CMMI的可信软件风险管理研究: [硕士学位论文]. 哈尔滨工业大学, 2009. [39] Tianzong Li, Qiang Wang. A Model of Software Project Risk Management Based on Bayesian Networks. E-Business and E-Government, 2010, 36(4): 3517~3520 [40] Jing Xie, Nan Feng. Risk Evaluation Process Modeling in Software Project Investment Based on Bayesian Networks. Artificial Intelligence, 2009, 45(7): 704~708 [41] Pearl J F. Propagation and Structuring in Belief Networks. Artificial Intelligence, 1986, 29(3): 241~288 [42] Lauritzen S L, Spiegelhalter D J. Local Computations with Probabilities on Graphical Structures and Their Applications to Expert Systems. Proceedings of the Royal Statistical Society, 1988, 13(50): 154~227 [43] Shachter R D, Delfavero B D. Symbolic probabilistic Inference in Belief Networks. In: unknown. Proceedings of the Eighth National Conference on Artificial Intelligence, Boston: MIT, 1990. 126~131 [44] 厉海涛, 金光, 周经伦等. 贝叶斯网络推理算法综述. 系统工程与电子技术, 2008, 12(5): 935~939 [45] Nan Feng, Minqiang Li, Jing Xie. A Data-Driven Model for Software Development Risk Analysis Using Bayesian Networks. Advanced Management of Information for Globalized Enterprises, AMIGE, 2008. 1~5 [46] Dechter R. Bucket Elimination: A Unifying Framework for Probabilistic Inference. In: unknown. Proceedings of the 12th Conference on Uncertainty in Artificial Intelligence. San Francisco, USA: Morgan Kaufmann, 1996. 211~219 48