汕头大学硕士学位论文 基于神经网络算法的风险管理模型 基于神经网络算法的风险管理模型 A Risk Management model based on Neural network Algorithms 姓名:张书瑞 学号:10809034 学院:工学院 导师:孙浩军教授 专业:计算机应用技术 入学:2008/09/10 答辩:2011/06/08 - I -
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 学位论文原创性声明 本论文是我个人在导师指导下进行的工作研究及取得的研究成果。论文中除了特别加以标注和致谢的地方外,不包含其他人或其它机构已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在论文中以明确方式标明。本人完全意识到本声明的法律责任由本人承担。 作者签名: 日期: 年 月 日 学位论文使用授权声明 本人授权汕头大学保存本学位论文的电子和纸质文档,允许论文被查阅和借阅;学校可将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或其它复制手段保存和汇编论文;学校可以向国家有关部门或机构送交论文并授权其保存、借阅或上网公布本学位论文的全部或部分内容。对于保密的论文,按照保密的有关规定和程序处理。 本论文属于:保密( ),在 年解密后适用本授权声明。 不保密( )。 (请在以上括号内打“√”) 作者签名: 导师签名: 日期: 年 月 日 日期: 年 月 - I I -
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 摘要 软件风险管理一直以来都是软件项目管理方面的热门研究领域,对该领域的研究可以直接推动企业项目管理的质量,提高软件的可用性,改善企业的对外形象,使企业的软件过程能力更加成熟。然而,实际情况是:每年有大约一半的软件质量不过关或者没有达到预定的目标。损失的不仅仅是金钱,还有市场、客户和信誉,甚至承担法律责任。因此,提高企业的风险管理水平,降低企业项目开发风险是关乎企业的生存大计。从Boehm首次提出软件风险管理的理念到现在,出现了很多经典的风险管理模型,但是这些模型要么偏向于理论研究,要么实施代价很大,并且对中国企业的软件行业了解不够,照搬往往达不到预期的效果,还有的仅仅适合某一类软件。因此,希望能够有一套以本国企业的实际研发情况为背景,同时借鉴国外优秀管理理念的风险管理系统。基于以上目的,本文提出了一套以经典的Boehm和CRM(Continuous Risk Management)软件风险管理模型为基础,使用人工神经网络做事先预测,进行风险识别的理论和方法,并对这两个模型进行了补充和修订。该模型采用了持续管理的理念,希望在开发阶段尽早的识别和控制风险,逐步提高软件项目的质量。本文最后以我们所做过的一个项目为实验数据,该项目在开发过程中实施了本文提出的风险管理模型,并和未经本模型管理之下的软件质量预测数据进行了对比。实验结果表明,在本模型的管理之下,软件的质量有明显的改善。也就证明了该模型对于软件质量的提高是有帮助的。 关键词:神经网络;软件项目风险;风险管理模型;软件产出 - 1 -
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 Abstract Software Risk Management is always a hot research field in software project management industry. Study in this field could push forward the quality of enterprise’s project management. Also improve software’s availability, external image and company’s software process capability. But the true is that over half of software could not get the previous quality level or goal in every year. We waste not only money but also business market, client, prestige and get into trouble with the law if even worse. So, enhance the level of risk management, reduce the development risk is your company's survival plan. From Doctor Boehm bring the theory of Software Risk Management up now on, appear many classic models. But most of all only stay in theoretical stage. The others either too difficult to operate or take practical situation of Chinese company into account. We can not get desired effects if copy these Ready-Made model. Based on this purpose, this paper design a new model based Boehm and CRM software risk management model. It using Neural Network as its risk forecast and identification, also amend these two classic models. This new model chose continuous management method, hope identify and control risk earlier and improve software's quality step by step. At the end, we use an actual project which used the model as empirical data, compared with software quality without the model. Experimental result show that under the model, software quality improved obviously. Meanwhile, this can prove this new model do well in controlling software Risk. Keywords: Neural Network; Risk of software; Risk management; Software output - 2 -
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 目录 摘要 ...................................................................................................................................................................... 1 Abstract ................................................................................................................................................................ 2 目录 ...................................................................................................................................................................... 3 第一章 绪论 .................................................................................................................................................. 5 . 研究背景及选题意义 ...................................................................................................................... 5 . 国内外的研究现状 .......................................................................................................................... 6 . Boehm风险管理模型 ......................................................................................................... 7 . CMU/SEI 持续风险管理模型(CRM) ........................................................................... 8 . 本文的主要工作 .............................................................................................................................. 9 . 论文结构安排 ................................................................................................................................ 10 第二章 风险管理综述 ................................................................................................................................. 11 . Barry Boehm理论 ............................................................................................................. 13 . SEI的CRM模型 .............................................................................................................. 13 . Riskit方法 ......................................................................................................................... 15 . SoftRisk风险管理模型 ..................................................................................................... 16 . IEEE 风险管理标准 ......................................................................................................... 17 . CMMI(软件能力成熟度模型集成) .................................................................................. 18 . 各种模型的对比分析 ........................................................................................................ 18 第三章 神经网络综述 ................................................................................................................................ 20 . 神经网络的发展历史 .................................................................................................................... 20 . 神经网络的研究意义 .................................................................................................................... 21 . 生物神经元概述 ............................................................................................................................ 23 . 人工神经元网络模型 .................................................................................................................... 24 . 神经元的结构模型 ............................................................................................................ 24 . 人工神经网络的互联模式 ................................................................................................ 25 . 人工神经网络的基本模型 ................................................................................................ 26 第四章 基于BP算法的软件风险管理模型 ............................................................................................. 32 . 模型的建立 .................................................................................................................................... 32 . 风险因子的采集 ............................................................................................................................ 34 . 风险因子的重要性量化 .................................................................................................... 35 . 风险识别 ........................................................................................................................................ 35 . 风险识别的量化 ................................................................................................................ 36 . 风险分析 ........................................................................................................................................ 37 . BP模型的输出 .................................................................................................................. 38 . BP训练 .............................................................................................................................. 40 . BP判定 .............................................................................................................................. 40 . 风险控制 ........................................................................................................................................ 40 . 软件质量跟踪和监控 .................................................................................................................... 42 . 风险因子跟踪 ................................................................................................................................ 42 . 试验结果 ........................................................................................................................................ 42 第五章 总结与展望 .................................................................................................................................... 45 . 总结 ................................................................................................................................................ 45 . 展望 ................................................................................................................................................ 45 - 3 -
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 参考文献 ............................................................................................................................................................ 47 致谢 .................................................................................................................................................................... 50 攻读硕士学位期间作者参与的科研项目及成果 ............................................................................................ 51 - 4 -
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 第一章 绪论 . 研究背景及选题意义 众所周知,近几年来软件开发技术,管理理念、辅助工具都有了很大的进步,然而软件项目开发超支、超时甚至不能满足用户需求而根本没有得到实际使用的情况仍然比比皆是,过高的失败风险仍然没有得到过多的改善。实际上,软件项目开发和管理中一直存在着种种不确定性,开发团队中也没有一个专门的组织对软件的开发过程中的风险进行监督管理。开发过程是一种随机状态,在项目投放市场前,开发人员无法得知产品的质量,无法预知项目的成败。有时候在开发过程中,管理人员已经发现了影响项目进度及质量的因素,却不知道该如何处理,更不知道这么处理会对已经风险重重的软件项目造成什么影响。就是这些种种的不可知因素,严重影响着项目的顺利完成和提交。据Standish Group在2009年对美国软件行业项目的调查显示[1],软件项目的成功率持续底下,仅仅只有32%的项目在预算、时间、功能性方面同时满足预期要求,44%的项目在某一方面失败,大约24%的项目落入了完全失败的境地。另据美国SPR(Software Productivity Research)公司2003年的调查[2],30%以上的软件开发项目在中途放弃夭折;60%超过了原定的开发期限;46%的项目超出了原计划的费用预算;52%的项目没有达到预期的目标。同样中国的相关研究表明[3],软件项目成功率不足30%。 上个世纪八十年代,美国机动车协会新泽西分部负责开发计算机系统的小组由于使用了该领域从未使用过的第四代开发语言Ideal,导致了美国国内700万摩托车驾驶者中成千上万的人无法完成注册或持有无效执照,无数个与该部门打交道的人遇到了系统错误,从而导致无法对外提供服务。而因此为雇员们处理积压的工作而支付的加班费高达上百万美元[4]。 在90年代初,BAE公司在美国丹佛市新的国际机场的行李处理系统项目中,需求分析出现重大失误,导致机场的使用时间一再推迟,最终丹佛市和BAE对簿公堂,要求BAE支付5000万美元的赔偿[5]。 由此可见,软件项目的失败往往危害重大,甚至是灾难性的,项目不可控甚至失败都会导致数以百万计的财产损失。从这些失败的案例中分析得知,在这些项目开发的初期,导致项目失败的种种因素已经显现,但是人们没有方法来得到该风险的重要性如何,对项- 5 -
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 目的影响如何,该风险出现的几率会有多大。或者捕获了风险因子,却不知道如何处理能够更好规避风险,处理不当反而增加软件风险。最终,项目失控,无法达到预定的目标。因此,软件开发阶段风险的识别,项目风险的有效管理对于最终软件的成败有关键性的影响,对该方向的研究也是意义非凡。 对处在开发阶段的项目实施风险管理是解决上述问题,缓解风险矛盾,提高软件质量和成功率最直接也是最有效的方法。然而从上个世纪80年代开始,软件风险管理的鼻祖Barry Boehm[6]博士提出风险管理的理论到现在,该方向的理论研究却进展不大,真正应用到企业中去的,也是少之又少[7]。根据2009年出炉的《中国软件质量研究报告》显示,国内普遍存在软件质量不高、开发能力不强等问题,虽然中国获得的CMM/CMMI(Capability Maturity Model for Software/Capability Maturity Model Integration)评估证书多达1300张,世界排名第二,但是52%的企业仅仅作为企业良好品质的体现,超过70%的公司并没有将风险管理部署到开发的每一个步骤中去[49]。企业中并没有一个良好的质量保证文化,并不信任风险管理的帮助,他们更加依赖于专家的丰富经验。这就是造成行业内软件质量不高,失败率高居不下的主要因素。因此,我们期待一种能以企业真实的研发情况为基础,易于实施,结果数据真实可信的模型。 . 国内外的研究现状 现如今,传统的软件项目风险管理模型有Barry Boehm理论[6]、CRM模型[8]、Riskit方法[9]、SoftRisk风险管理模型[10]、IEEE风险管理标准[11]、软件能力成熟度模型集成的风险管理[12,36]、Microsoft的MSF(Microsoft Solution Framework)风险管理模型[13]等几种。但是大部分都是基于2个基本框架:(1)根据前人的经验而来的Boehm风险分析控制方法;(2)SEI(Software Engineering Institute)基于CMM(Capability Maturity Model for Software)的持续软件风险管理[8]。前一种方法着重于对风险管理模型的理论研究,后一种方法则完全基于管理者的经验。这两种方法都是依赖于人的主观判断,缺乏客观数据和公式的支持。在当下,基于CMM的软件风险管理被越来越多的软件企业应用。其突出特点就是风险管理与软件过程工程、过程管理整合在同一个框架里。在CMM2(CMM二级—可重复级)中的项目计划KPA(Key Practice Area) [14]、CMM3(CMM三级—已定义级)的集成软件管理KPA中[15,45],以及项目跟踪与控制KPA,都对软件风险管理的目标、要求和活动作了详细约定。 - 6 -
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 在SEI推出的CMMI(Capability Maturity Model Integration) [16]中,风险管理模块已经作为一个独立的PA(Process Area)并得到重视,该模型特别强调对风险管理过程中出现的数据的发掘和使用,同时认为风险管理应该具有持续性,存在于软件开发周期的每一个环节,而且该模型还包含了一个过程数据库(包含风险数据库),它在风险管理中扮演核心角色[16,17]。在风险评估方面,Alfred[19]等人对基于过程的风险评估也作了深入研究,Elaine[18]研究并设计了用于识别和分析软件风险的提问单、风险列表。这些规定和研究成果显著的增强了软件风险预测的能力。 另外,软件项目风险管理领域的相关研究还有: Sherer[38]使用了用事件树(Event trees)和泊松估计(Bayesian estimation)对软件风险进行估计; Chittister、Haimes[41]从技术角度关注了软件项目风险管理,尤其对于技术变化的风险管理; Heikkinen[39]使用功能配置的方法来确定软件项目风险驱动的各项活动的次序; Higuera、Haimes[42]对SEI在软件风险管理技术、方法和成就进行了总结和回顾; Gluch[40]认为风险是由环境、转变、结果构成的;并使用系统分析的思想描述风险; Fairley[43]结合COCOMO成本预算模型和Mente Carlo模型来识别软件项目风险因子; Moynihan[44]把个人行为理论应用到软件项目风险管理领域,通过软件项目经理的个人经验总结来识别项目风险因子。 由于Boehm风险管理模型和CRM模型是研究领域中比较经典的模型,后来的模型都是基于该模型的演变,因此,我们先将这两个模型简要的介绍如下: . Boehm风险管理模型 早在20世纪80年代,Barry Boehm博士就比较详细的对软件开发中的风险进行了论述,并提出了Boehm软件风险管理模型。Boehm认为,软件风险管理指的是“试图以一种可行的原则和实践,规范化地控制影响项目成功的风险”,风险管理目的是“辨识、描述和消除风险因子,以免它们威胁软件的成功”[6]。 该模型首次提出了“风险暴露量”的概念,可以简单解释为风险事件的严重程度由不尽人意的结果产生的可能性和该结果发生后产生的损失决定,并利用决策树的方法来识别软件风险项,另外还提出了Top10风险识别列表[37],主要是优先级排名前十位的风险和对应的风险控制办法,该“办法”用来降低软件开发过程中的“风险暴露量”。模型如图所示: - 7 -
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 图 Boehm风险管理模式 Boehm risk management model 前十位的风险识别列表,帮助使用者识别那些高优先级的对成本、进度以及质量有重大影响的风险因子。这十个风险因子包括:人员不足、不实现的进度和预算、开发错误的软件功能、开发错误的用户接口、需求不明确、需求不断变化、设备部件短缺、外包任务出差错、外包任务出差错、实时履行不足、计算能力不足。 . CMU/SEI 持续风险管理模型(CRM) CRM模型由美国软件工程研究所(SEI)提出。SEI将风险管理过程划分为两个部分:风险评估和风险处理。前者包括风险识别和风险分析,后者包括风险计划、风险跟踪和风险控制。由处于核心地位的交流沟通作为联系每个部分的纽带。 图 持续风险管理模式 CRM risk management model 在这6个部分中,风险识别依靠问卷完成,问卷覆盖了194个问题,一共涉及到13个主要领域。该风险管理模型体现了循环反复进行风险管理的理念,它强调风险管理是一个持续的过程,它和我们日常活动所产生的信息流密切相关,交流沟通在模型中处于中心位置,它是所有模型中每一个环节的沟通渠道,也是风险管理的核心环节。 从图可以看出,每个环节动态的影响着下一个环节。其中沟通交流又影响着其他- 8 -
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 5个环节,通过这种持续动态反馈风险管理系统,能够更加精准有效的定位和跟踪风险。 比较分析: Boehm的软件风险管理模式侧重于理论研究,注重清晰的结构和相应的方法和技术,在构建模型的过程中旁征博引,大量借鉴了其它学科的研究成果和思想,同时还采用了很多前人的经验。然而研究范围局限于软件项目的核心风险管理。他提出的Top10风险识别列表思想是通过对美国几个大型航空或国防系统软件项目深入调查而成,存在局限性,需要根据不同的项目更新风险清单。另外研究对象主要是开发过程中的技术风险,很少论及实现体系思想所需要的保障措施,基本上只站在开发者一方讨论风险管理问题,很难应用到实际情况当中去。当然这种方法实施成本较低,提供独特的风险解决方法和风险管理技巧,目前主要适用于中小型公司[6,20]。 持续风险管理模型最明显的特点是可操作性,注重了与软件开发过程的紧密结合,明确提出了软件采购方在项目风险管理中的地位和作用。基本摒弃了复杂的数学运算。虽然技术要求不高,但实施成本很高。目前仅仅应用于大型公司或开发大型项目[8,20]。 . 本文的主要工作 根据国内的软件行业调查显示,绝大多数中国软件开发公司并没有一套软件风险管理体系,其中不乏1000人以上大中型企业。究其原因,可以总结如下两点:(1)国内软件行业的环境造成。国内软件管理方面的研究和应用起步晚,人们并不会花费太大的代价来实施的一套风险管理模式。(2)我们的管理人员不信任风险管理系统的有效性,每个公司,每个项目的情况都各有不同,管理人员往往依赖经验丰富的项目经理来对该开发风险做出判断。(3)企业内部并没有形成相关的企业文化。这三点原因直接造成了国内软件行业质量不高、开发能力不强等问题。因此,我们需要开发出符合国内企业的软件开发模型,紧贴企业开发现状,既需要实施成本低,又需要预测精确度高。 本文以经典的Boehm和CRM风险管理模型为基础,使用人工神经网络的方法,对这两个模型取长补短,提出了基于BP(Error Back Propagation)算法的风险管理模型。该模型采用持续风险管理的思想,循环迭代的方式逐步的提高软件项目的质量。最后以我们所做过的一个项目为实验数据,该项目在开发过程中实施了本文提出的风险管理模型。并和未经本模型管理之下的软件质量预测数据进行了对比,实验结果表明,在本模型的管理之下,软件的质量有明显的改善。也就证明了该模型对于软件质量的提高是有帮助的。 - 9 -
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 本文的主要创新工作介绍如下: (1)在风险识别阶段,根据CRM模型中基于分类的风险识别框架,将该识别框架进行了重建,因为原有的识别框架较为复杂,很多问卷模棱两可,且不切合实际,并没有考虑到不同项目的不同情况。在这里,我们根据每个实际项目的不同,删除了大量无关紧要的问卷调查。问卷对象可以根据自己的需要选择性的回答问题,经过统计,每个问卷对象从原来的200个左右的问题减少到平均56个问题的水平,极大的降低了问卷数据的获取难度,同时也提高了模型的工作效率和适应度。 (2)在风险分析阶段,细化了DELONE的6维软件质量评价模型[22],将基于分类的理念应用到软件的质量评估上来。根据实际需要和先前的一些理论研究,提出了基于分类的软件质量评估模型。用来对目标软件进行质量的评估和量化。 (3)在风险控制阶段,我们使用了Boehm的Top10软件风险列表,并在市场调查和经验的基础上根据需要加入了其余44个风险因子的管理办法。主要用来对风险因子出现后的应对进行规范。 . 论文结构安排 本文共分为五章,主要研究和提出了基于神经网络算法的风险管理模型。各章节的主要内容如下: 第一章,绪论。介绍了本文的研究背景、选题意义及国内外的研究现状。并对本文要做的工作做了概述。 第二章,风险管理综述。主要介绍了风险管理的基本概念,基本管理流程和几种经典的风险管理模型。 第三章,神经网络综述。介绍了神经网络的发展历史、基本概念、几种典型的神经网络算法和算法的应用。 第四章,基于神经网络算法的软件风险管理模型的建立。这是本文的重点部分,详细阐述了本文所做的工作,针对国内软件行业的开发现状,在CRM和Boehm风险管理模型的基础上,提出了基于神经网络算法的风险管理模型。最后根据我们实际开发过的项目数据,验证了模型预测的准确性和对于软件质量的帮助。 第五章,总结与展望。总结本文的研究工作并对下一步的研究方向进行展望。 - 1 0-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 第二章 风险管理综述 . 风险管理的基本概念 风险的概念: 风险的概念是风险管理理论研究的基础。风险存在于自然科学、经济、军事、政治和生活的方方面面,但是人们至今还未能给“风险”一个统一的定义。现代汉语字典把风险定义为“未来可能发生的危险”,新华字典中将风险定义为“受到伤害或损失的可能性”,美国Cooper D.F在《大项目风险分析》一书中给出了大家普遍认可的定义:“风险是人们在从事的某项特定活动过程中由于存在的不确定性而产生的经济、财产、自然的破坏、损失或损伤的可能性”。在美国国防部(DOD) [26]将风险定义为:可能危及计划或系统工程的潜在问题,度量时用问题发生的可能性及其后果(经度量或评估)的综合影响的方法。Kaplan和Garrick[27]认为:任何风险都包括三个方面:“发生的有害事件是什么?该事件发生的可能性有多大?如果发生引致的后果如何?”这三者构成了风险评估的基础,因此,风险不是一个数字,也不是一条函数曲线或是一个向量,而应该是一个三元组的完备集。即Rrisk { si 其中,,li,xi}Rc代表风险,。代表第i个有害事件发生risk !s为第i个有害事件ili的概率(1ikelihood),x表示第i个事件发生后的结果,是一种损失指标;;C表示这个集合i是一个完备集,集合中的元素,即3元组 s的一个答案,整个集合才是i,li,xi 只是 风险!对全部风险的描述。在1997年风险分析学会的大会中,Kaplan[28]进一步完善了这种完备集风险的定义。他从100多年来学术界对概率定义的争论出发,指出可能性的三种表达:频率、概率和频率的概率,其中频率的概率是最有说服力、最适用的表达方式,基于此方面的认识。上式可转化为Rrisk { si ,P。 i( iΜ),Pi(xi)}c !其中s依然为第i个有害事件;i Μ为第i个有害事件发生的概率,iP件i( iΜ为第i个事)发生的频率为 Μ的概率;iP指第i个ix事件发生频率为(i)x的概率;它是一个向量,与事件i不独立。很明显,该完备集风险的定义在有害事件的量化上是一个巨大的进步。 软件风险: 软件风险有多种不同的定义,美国国防部认为[29]:软件风险是指软件在预定的成本、- 11 -
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 工期和技术约束下,可能无力全面达到计划目标的度量指标。KONTIO[30]认为,软件风险就是软件发生损失的可能性。WIEGER[31]认为,软件风险就是还没有发生的软件问题,但它若发生则可能引起某种损失或威胁项目成功的因素。以上概念表明,软件项目风险强调的是项目中对产出产生负面影响的因素。 软件风险管理: 软件风险管理就是为降低或者消除影响软件项目、开发过程或产品的风险而施行的一整套管理方法,目的是要识别出软件开发过程中的风险因子,对其进行管理,以便规避风险或是减少风险事件发生后对软件项目的危害。软件风险管理的目标在于识别软件开发过程中的风险因子并采取行动,风险的严重性是风险管理的动力。风险管理是软件项目管理的重要内容。在进行软件项目风险管理时,要辨识风险,评估它们出现的概率及产生的影响,然后建立一个规划来管理风险。软件项目风险会影响项目计划的实现,如果项目风险变成现实,就有可能影响项目的进度,破坏项目的质量,增加项目的成本,甚至使软件项目不能实现[32]。 如果对项目进行风险管理,就可以最大限度的减少风险的发生。但是,目前国内的软件企业不太关心软件项目的风险管理,结果造成软件项目经常性的延期、超过预算,甚至失败。成功的项目管理一般都对项目风险进行了良好的管理。因此任何一个系统开发项目都应将风险管理作为软件项目管理的重要内容。 风险控制: 风险控制是指利用某些技术。如原型化、软件自动化、软件心理学、可靠性工程学以及某些项目管理方法等设法避开或转移风险。我们项目风险所做的一切研究,目的就在于实现良好的风险控制,减少风险真正发生造成的损害。在这里,一般需要结合大量的实际项目管理经验,才能进行有效的风险控制。风险的控制在于防范风险的发生,降低风险照成的影响。很多项目到最后失败,很大原因是由于在项目开发过程中没有做好风险管理。 . 风险管理的基本流程 风险管理涉及的主要活动包括:风险识别,风险量化,风险应对计划制定和风险监控,风险识别在项目的开始时就要进行,并在项目执行中不断进行。就是说,在项目的整个生命周期内,风险识别是一个连续的过程。 风险识别:风险识别包括确定风险的来源,风险产生的条件,描述其风险特征和确定- 1 2-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 哪些风险事件有可能影响本项目。风险识别不是一次就可以完成的事,应当在软件的生命周期内定期进行。 风险量化:涉及对风险及风险的相互作用的评估,是衡量风险概率和风险对项目目标影响程度的过程。风险量化的基本内容是确定那些事件需要制定应对措施。 风险应对计划制定:相当于风险控制。主要是指针对风险量化的结果,为降低项目风险的负面效应制定风险应对策略和技术手段的过程。风险应对计划依据风险管理计划、风险排序、风险认知等依据,得出风险应对计划、剩余风险、次要风险以及为其它过程提供的依据。 . 经典的风险管理模型 . Barry Boehm理论 软件管理之父Boehm将风险管理的概念引入软件界。Boehm认为[6]:软件风险管理就是试图将影响项目成功的风险形式化为一组易用的原则和实践的集合,它的目标是在风险成为软件项目返工的主要因素或者威胁到项目的成功运作前,识别、描述并消除这些风险项。Boehm将风险管理过程归纳成二个基本步骤:风险评估和风险处理。其中风险评估包括风险识别、风险分析、风险排序;风险处理包括制定风险管理计划、解决风险、监控风险。 Boehm用公式[6]:RE P(UO)*L对(风U险O进)行度量,其中RE表示风险所带来的影响,P(UO)表示令人不满意结果发生的概率;L(UO)表示令人不满的结果所带来的损失。 Boehm风险管理理论的核心是维护和更新十大风险列表。他通过对一些大型项目进行调查总结,得出了软件项目十大风险列表,其中包括需求分析不当、不现实的时间和费用预算、功能错误、人员匮乏等,并且给出了相应的处理意见。在软件项目开始时归纳出最有可能影响项目成功的十大风险列表,在项目的生命周期中定期讨论以便对列表进行更新、评比。十大风险列表是让高层经理的注意力集中在项目关键成功因素上的有效途径,可以有效地管理风险并由此减少高层的时间和精力[6]。 . SEI的CRM模型 SEI[8,33] 是软件工程研究与应用的权威机构,目的在于领导、改进软件工程实践,提高以软件为主导的系统的质量。SEI的软件风险管理原则包括7点:1)全局观点;2)积极的- 1 3-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 策略;3)开放的沟通环境;4)综合管理;5)持续的过程;6)共同的目标;7)协调工作。SEI提出的CRM模型要求在项目生命周期的每个环节都关注风险识别、分析与管理。模型基于风险分类结构模型来辨识风险因子,提出了194个揭示风险的问题,设计了各项实施措施的场景。它将风险管理划分为6个步骤。如图所示, 1.Identify:风险识别。在风险被管理起来之前,必须要被识别出来,要求在风险成为影响项目成功的因素之前就能够被发现和找到。 2.Analyze:风险分析。将产生的风险数据转化成决策,它能够让管理者更加有效的处理暴露出的风险。另外,风险对软件造成的影响也在这一步完成。 3.Plan:做出计划以便将风险转化为对应的决策和活动。计划涉及到采取的一些措施降低或者规避该风险。选择风险活动,并且创建一个完善的风险管理计划。计划一些具体的风险处理活动有很多的形式。例如: 开发一些紧急规避的计划来缓和风险出现时候所造成的影响; 改变产品设计和开发过程来避免风险。 总之,对风险活动做出计划的关键就是考虑今天做出的决定对未来的影响。 4.Track:这一步对已经出现的风险和施加到风险上的措施的影响做出监控,看是否达到满意的效果。合理的风险度量能够合理的估计和监视风险自身和风险计划的工作情况。 5.Control:风险控制用来纠正所计划的风险活动的偏差。风险计划的活动也可能会对项目造成不好的影响。因此,出现偏差,需要对该偏差进行修订。风险控制会融合到项目管理中去并且依赖项目管理的过程去控制风险活动的计划。 6.Communicate:风险的交流和沟通处于模型的核心位置,强调了该流程的普遍性和关键性。如果没有有效的交流和沟通,就没有一个风险管理方法能很好的工作。同时交流和沟通促进了模型之间元素的相互作用。为了分析和管理的正确性,风险一定要被交流在合适的组织和实体中。这包括开发团队之间的交流,和用户之间的交流。 在整个模型中,每个环节动态的影响着下一个环节。其中沟通交流又影响着其他5个环节,通过这种持续动态反馈风险管理系统,能够更加精准有效的定位和跟踪风险。 在这个模型中比较有意义的是风险识别阶段——基于分类的风险识别方法。该方法将风险分为产品工程、开发环境、程序约束3个大类及相应的13个元素,并以此为基础设计出包含194个问题的问卷,如图所示: - 1 4-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 图 基于分类的风险因子模型 Taxonomy-Based risk identification . Riskit方法 如果开发组织在项目早期采用系统化的风险管理过程和技术,那么就有能力避免很多问题。Riskit方法[9]就提供了这种系统化的风险管理过程和技术,该方法是由Maryland大学首次提出的,旨在对风险的起因、触发事件及其影响等进行完整的描述和管理,并使用合理的步骤进行风险评估。对于风险管理中的每个活动,Riskit都提供了详细模板,包括活动描述、进入标准、输入、输出、采用的方法和工具、资源、结束标准。 Riskit方法的特点: 1、提供风险的新的明确定义:损失的定义建立在期望的基础上,即项目的实际结果没有达到项目相关者对该项目期望的程度; 2、明确定义项目期望达到的目标、影响项目成功的因素; 3、采用图形化的工具Riskit分析图来对风险进行建模,定性地记录风险; 4、使用应用性损失的概念,按照预测风险造成损失的大小来排列风险的损失; Riskit风险管理过程如图所示: 图 Riskit 风险管理模型 Riskit risk management model - 1 5-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 在项目生命期内,这些活动可以重复多次。 表 Riskit方法的各活动功能概述 Riskit method’s outline in active function Riskit方法活动名称 活动功能描述 风险管理标准定义 定义风险管理的范围、频率,识别所有的项目相关项 审查所定义的项目审查已经确立的项目目标,完善它们,重新定义不明确的目目标 标和限制;找出目标相关项 风险识别 识别出能够危害项目的潜在威胁 风险分析 分类和合并风险;构造出风险分析图,估计风险出现的可能性和由此造成的损失 风险控制计划 将重要的风险列入风险控制计划,选择合适的风险控制方案 风险控制 实施风险控制方案 风险监控 监控风险状态 表列出了Riskit方法的各活动功能概述。Riskit方法将一些经典的理论溶入可靠的过程和技术。经过在一些组织的研究调查显示,Riskit方法在实践中被认为是可行的,它可导致更详细的风险分析和描述,也可以改善风险管理过程的结果[9,34]。 . SoftRisk风险管理模型 SoftRisk[10]模型是由Keshlaf和Hashim提出的,它基于这样一种理念:将风险管理的注意力集中在高可能性和高破坏性的风险上是进行风险管理的有效途径。这样可以大大节省软件开发过程中的时间成本和人力成本,并可以有效地减轻风险的破坏性。此模型确保在软件项目进行中持续地进行风险管理,见图所示: 图 SoftRisk风险管理模型 SoftRisk risk management model - 1 6-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 步骤如下: 1) 风险识别; 2) 预测风险发生的可能性和由此造成的损失; 3) 对所有出现的风险管理数据进行统计和文档化,方便跟踪项目状态; 4) 风险评估。依据公式:RE = 风险发生的概率*风险造成的损失; 5) 排序。按照上述公式对风险的大小进行排序,找出十大风险; 6) 监控。利用图形来表示风险的重要性级别、状态; 7) 控制。再估计- 再评估- 再排序; 8) 统计操作。如果有新的风险,则再转到步骤1。 该模型在项目开始阶段采用八个步骤来完成一次风险管理流程,一旦发现新的风险则再次启动该八个步骤进行循环。在采取相应措施缓解风险后,启动内部的循环:再估计、再评估、再排序,然后再监控、控制,直到风险得到缓解或消除。由此可见,该模型的核心是持续地发现和控制风险,并通过更新、维护基于Boehm理论的十大风险列表来管理风险[10,35]。 . IEEE 风险管理标准 IEEE风险管理标准定义了软件开发生过程中的风险管理过程。这个过程适合于大中型软件的风险管理。虽然这个标准是用来管理软件项目的风险,但也同样适用于管理各种系统级和组织级的风险。 该风险管理过程也是一个持续循环的过程,它的目的是系统地描述和管理在软件的生命周期中出现的风险。该模型包括以下活动:计划并实施风险管理、管理项目风险列表、风险监控、风险分析、采取措施、处理风险、评估风险管理过程。风险管理过程详见图所示: 图 IEEE风险管理模型 IEEE risk management model - 1 7-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 . CMMI(软件能力成熟度模型集成) CMMI[12,36]是由SEI 在CMM基础上发展而来的,并在全世界推广实施的一种软件过程能力成熟度评估标准,主要用于指导软件开发过程的改进、进行软件开发能力的评估等工作。风险管理过程域是在CMMI第三级—已定义级中的一个关键过程域。CMMI认为风险管理是一种持续的前瞻性的控制过程。它要识别潜在的可能危及软件中关键目标的因子,以便策划应对风险的活动和在必要时实施这些风险控制策略,缓解不利的影响最终预定的软件目标。CMMI 的风险管理被清晰地描述为实现三个目标,每个目标的实现又通过多个活动来完成,如图所示: 图 CMM风险管理模型 CMM risk management model 该管理模型的核心是风险库,实现各个目标的每个活动都会更新、修改这个风险库。其中活动“制订并维护风险管理策略”与风险库的联系是一个双向的交互过程,即通过采集风险库中相应的数据并结合前一活动的输入来制订风险管理策略。 . 各种模型的对比分析 以上介绍的是自从风险管理概念引入软件业以来国际上一些经典的软件项目风险管理模型,表是对这些模型的对比分析。 Boehm模型:特点是识别、维护Top10风险列表。但缺乏动态性和可操作性,只能称之为理论模型。 CRM模型:特点是明确了软件需求方在风险管理体系中的作用,基于风险分类辨识结构来识别软件风险,为了简化风险管理的实施成本和实施难度,该体系将风险发生的可能性定义为非常可能、可能和不可能3种,把风险造成的后果定义为灾难性的、严重的、次要的和可以忽略的4级,两项因素组合成的风险当量简化为高、中和低3档结果,不过这- 1 8-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 种做法在降低管理成本的同时也降低了管理精度。同时问卷调查复杂,不利于数据的收集。 Riskit模型:该模型是基于软件工程的管理方法,特点是以风险分析图的方式来描述风险,并且将风险造成的损失建立在期望的基础上,即项目的实际结果没有达到项目相关人员对其的期望的程度,但是太过庞大,使用起来代价高昂。 SoftRisk模型:特点是将注意力集中在高可能性和高破坏性的风险上。核心是持续地发现和控制风险,并更新、维护基于Boehm理论的Top10风险列表来管理风险。但是风险的量化和评估会有很多问题,很难得到风险造成的真正损失,仅仅停留在理论研究阶段。 表 主流模型分析比较 Comparison of the mainstream model 模型 特点 缺点 Boehm 识别、维护Top10风险控制列表 偏理论,控制列表不完善 CRM 持续风险管理,强调对风险沟通 问卷复杂,不利于实际使用。 Riskit 持续风险管理;风险的定义基于主要相模型复杂,实施难关者的期望;用图形化的工具Riskit分度大 析图对风险建模,有软件支持 SoftRisk 持续风险管理;维护十大风险列表;风险的量化和评估风险统计;有软件支持 不够完善 - 1 9-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 第三章 神经网络综述 . 神经网络的发展历史 人类在很多方面已经成功采用机器来完成繁重和重复的体力劳动,同样没有放弃让机器具有人类思维能力的努力。由于计算机的出现,使这种梦想有了实现的可能,特别是人工智能理论的提出,使得人们又向智能机器的研究方向迈进了一步。如今,人工神经网络技术的发展又为我们进一步研究怎样模拟人类智能以及了解人脑思维的奥秘开辟了一条新的途径。 人们研究人工神经元网络已有几十年的历史。40年代初,美国的MC Culloch和Pitts从处理信息的角度,研究了神经细胞行为数学模型的表达,提出了二值神经元模型理论—MP模型。该模型的提出开始了人工神经网络的研究历程。1949年提出了著名的Hebb学习规则,即通过神经元之间结合强度的改变来实现学习的方法。虽然Hebb学习规则在人们研究神经网络初期就已提出,但是在现在,其基本思想在神经网络的研究中仍然发挥着重要作用。 50年代末,Rosenblatt提出感知机(Perceptron)理论,率先从工程角度出发,研究了用于信息处理的神经网络模型。这是一种学习和自组织的生理学模型,它符合神经生理学的基本原理。Perceptron虽然简单,却已经具有神经网络的一些基本性质。如分布式存储、并行处理、可学习性等。该神经网络的特性与当时流行的人工智能技术有本质的不同,因此引起了许多学者的兴趣,在60年代掀起了神经网络研究的第一次高潮。研究者认为只要将这些神经元联成一个网络,就可以模拟人脑思维的工作。然而,后来的研究结果发现,达到这个目的,还有很长的路要走。 在60年代末,美国著名人工智能专家Minsky和Papert对Rosenblatt的工作进行了深入的研究,指出了感知机的功能和处理能力的局限性,甚至连“异或”这样简单的学习问题都不能解决,同时也指出如果在感知器模型中加入隐含神经元,增加神经网络的层次,可以提高神经网络的处理能力。然而,由于当时对大脑的工作原理,对神经网络计算的优点、缺点、可能性及局限性等还不清楚。使得对神经网络的研究进入了低潮。 低潮时期,仍然有一些学者继续着神经网络模型和学习算法的理论研究,并提出了许多有意义的理论和方法。其中,等提出了自适应共振理论,Kohonen提出了自- 2 0-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 组织映射理论,Fukushima提出了认知机网络模型理论等等,为神经网络后来的发展奠定了理论基础。 进入80年代,首先是基于“知识库”的专家系统的研究和应用,在该方面取得了较大成就。但在经过一段时间深入研究过后,发现专家系统并不像人们所希望的那样解决很多难题,特别是在处理视觉、听觉、形象思维、联想记忆以及运动控制等方面,人工智能技术面临着重大困难。因此,模拟人脑的智能信息处理过程,使用串行逻辑和符号处理模式的神经网络理论又再次受到人们的重视。对神经网络的研究又开始复兴,并掀起了第二次研究高潮。 1982年Hopfield率先提出了一种新的神经网络模型—HNN,并引入了“能量函数”概念,使得网络稳定性研究有了明确的理论依据。同时,HNN的电子电路物理实验为神经计算机的研究奠定了基础,并将其应用于目前计算机尚难解决的NP完全型问题,例如著名的“TSP”问题就取得了很好的效果。从事并行分布处理研究的学者,如Hinton、Sejnowsky和Rumelhart等,于1985年对HNN模型引入随机机制,提出了Boltzmann机。1986年Rumelhart等人在多层神经网络模型的基础上,提出了BP算法,解决了多层前向神经网络的学习问题。 近几十年来,许多具备不同信息处理能力的神经网络模型已经被提出来并应用于许多信息处理领域,如模式识别、信号处理、决策辅助、人工智能等方面。神经计算机的研究也为神经网络的理论研究提供了许多有利的条件。各种神经网路模拟软件包、神经网络芯片以及电子神经计算机的出现,体现了神经网络领域的各项研究均取得长足进展。虽然人们已经对神经网络在人工智能领域的巨大研究潜力达成共识,但是,人类对自身大脑的研究,尤其是对其中智能信息处理机制的了解,还很肤浅。现有的研究成果仅仅处于起步阶段,要需要我们付出不懈的努力。 概括以上简要介绍,可以看出,当前又处于神经网络理论的研究高潮,特别是神经网络在不同领域的应用。不仅给新一代计算机的研究带来巨大影响,而且将推动整个人工智能研究领域的发展。但另一方面,由于问题本身的复杂性,不论是神经网络原理自身,还是正在努力进行探索和研究的神经计算机,目前都还处于发展起步阶段。它的应用影响力和最终所能达到的目标,目前还不十分明确,还有待于继续深入的研究。 . 神经网络的研究意义 人工神经网络的研究一般采用自下而上的方法,从脑的神经系统结构出发来研究脑的- 2 1-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 功能,研究大量简单的神经元的信息处理能力及其行为。目前神经网络的研究使得对多年来困扰计算机学和符号处理的一些难题可以得到比较令人满意的解答,特别是对信息存储及并行搜索、预测、联想记忆等一般性问题的求解,更显出独特的能力。由此引起了智能研究者们的广泛关注,并普遍认为神经网络方法适合于较低层次的模式处理。 符号处理与神经网络是一种互补关系。神经网络的研究重点在于模拟和实现人的认知过程中的感知过程、形象思维、分布式记忆和自学习自组织过程。而符号处理则偏重于模拟人的逻辑思维。符号处理的优点正好弥补了神经网络的不足,因此,神经网络与符号处理相结合的研究,可能会使人们对人的认知过程有一个较全面的理解。在这一领域内的任何一项基础理论上的进展,必将对计算机科学和人工智能产生实际的影响。 神经网络是在多学科的基础上发展起而来的,对它研究也必将会带动相关学科的发展。神经生物学家也正期待着另一次理论上的飞跃,这将使他们能够解释已知的各种现象,并提出一些可以验证的假说。虽然他们已经积累的大量关于大脑组成、外形以及运转基本要素等知识,但仍然解释不了有关大脑信息处理的一些实质性的问题。而神经网络理论,作为人的认知过程的一种定量描述,则为生物神经科学家提供了一个独一无二的机会来发展和验证大脑的工作原理。神经网络理论的发展,可在神经科学中推动生物神经科学理论的发展,为计算神经科学提供必要的理论和模型,同时也促进脑科学向定量、精确和理论化方向发展。 现如今,人工神经元网络的研究工作主要包括以下一些基本内容[48]: (1)人工神经网络模型的研究 (2)神经网络基本理论的研究 (3)神经网络智能信息处理系统的应用,包括认知与人工智能,其中包括模式识别、特征提取、计算机视觉与听觉、语音识别、专家系统、语言翻译、联想记忆、智能机器人、逻辑推理、知识工程等。优化与控制,其中包括优化求解、决策与管理、系统识别、并行控制、鲁棒性能控制、自适应控制、分布控制、智能控制等。信号处理,其中包括自适应信号处理和非线性信号处理。传感器信息处理,信息集成、模式预处理变换、多传感器数据融合。 (4)神经网络计算机的实现 (5)神经网络的软件模拟和硬件实现 - 2 2-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 . 生物神经元概述 人工神经网络是对生物神经系统的模拟。它的信息处理能力是由网络单元(即神经元)的输入输出特性(即激活特性)、网络的拓扑结构(即神经元的连接方式)、连接权的大小(即突触联系强度)和神经元的阀值(可视为特殊的连接权)等参数所决定的。神经网络在拓扑结构固定时,其学习过程归结为连接权的变化。在对生物神经系统进行模拟之前,我们需要对真实生物神经系统有一个大致的了解。 生物神经系统是一个有高度组织和相互作用的数量巨大的细胞组织群体。人类大脑的神经细胞大约在10亿个左右。神经细胞也称神经元,是组成神经系统的基本单元,数量众多的神经元按照不同的结合方式构成了复杂的神经网络。通过神经元及其连接的可塑性,使得大脑具有学习、记忆和认知等各种智能。 人工神经网络的研究出发点是以生物神经元学说为基础的。生物神经元学说认为,神经细胞即神经元是神经系统中独立的功能单元。生物神经系统,包括中枢神经系统和大脑,均是由各类神经元相互连接组成。其独立性是指每一个神经元均有自己的核和自己的分界线或原生质膜。 生物神经元之间的相互连接以便让信息传递的部位被称为突触。突触按其不同信息传递机制,可以分为化学突触和电突触,其中化学突触占大多数,其神经冲动的传递借助于化学传递质的作用。生物神经元的结构如图所示: 图 生物神经元 Biological neuron 基本神经元由细胞体和延伸部分组成。延伸部分按照功能分为两类,一类称为树突,占延伸部分的大多数,用来接收来自其他神经元传递过来的信息;另一种用来传递和输出信息,称为轴突。神经元对信息的接收和传递全部都是通过突触来进行的。一个神经元可以从别的神经元接收多至上千个突触输入。这些输入可以到达神经元的树突、胞体和轴突等不同部位,分布点各不相同,对神经元影响的程度也不同。 - 2 3-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 当神经细胞受到一定强度信号的神经刺激时,则会引起兴奋性反应,并出现一次传导的动作电位(即神经冲动),所产生的动作电位可以通过突触,由一个神经元传播到另一个神经元。神经元对信息的接受和传递都是通过突触来进行的。单个神经元可以从别的细胞接收多个输入。由于输入分布于神经元不同的部位,对神经元的影响比例是不同的。另外,各突触输入抵达神经元的先后时间也不一样。因此,一个神经元接收的信息,在时间和空间上常呈现出非常复杂多变的形式,需要神经元对它们进行积累和整合加工,从而决定其输出的实际和强度。 多个神经元以突触连接形成了一个神经网络。研究表明,生物神经网络的功能决不是单个神经元信息处理功能的简单叠加,而是一个动态信息处理系统。它们有其独特的运行方式和控制机制,以接受生物内外环境的输入,加以综合分析处理,然后调节控制集体对环境做出适当的反应。 . 人工神经元网络模型 神经网络是由大量的信息处理单元(即神经元)互相连接而成的网络。为了模拟大脑的基本功能,在现代神经科学研究的基础上,人们提出了人工神经网络的模型。人工神经网络的信息处理能力由神经元之间的相互作用来实现,与信息的存储表现为网络元件互联分布式的物理联系,人工神经网络的学习和识别决定与神经元连接权系数的动态演化过程[48]。 . 神经元的结构模型 神经元是神经网络的基本信息处理单元。它一般是一个多输入的非线性模型,其一般的结构模型如图所示: 图 人工神经元 Artifical neural 其中u为神经元i的内部状态,i iΤ为阀值,x为输入信号,元jw表示与神经ijx连接的权i值,s表示一个外部输入的控制信号。 i- 2 4-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 神经元模型常用一阶微分方程来描述(模拟生物神经网络突触膜电位随时间变化的规律),即: dui u (t) ƒ wx(t)Ω, Τdtiijjiy(t) f[u(t)].神经元的输出由函数f表示。常用非线性函数来表示,例如: 。其中c为常数。 f(ui) 11exp( ui/c) . 人工神经网络的互联模式 根据神经元的连接方式的不同,人工神经网络的互联模式分为: (1)前向网络 (2)有向反馈的前向网络 (3)层内有相互结合的前向网络 (4)相互结合型网络 下面简要介绍如下: 前向网络:前向网络如图所示:神经元分层排列,分别组成输入层,中间层(也称为隐含层)和输出层。每一层的神经元只接收来自前一层神经元的输入。后面的层对前面层没有反馈信号。输入模式经过各层次的顺序传输,最后在输出层上得到输出。感知器和误差反向传播算法所采用的网络均属于前向网络互联模式。 图 前向网络 Forward neural network 有向反馈的前向网络:如图所示,从模型的输出层对输入层有信息反馈。这种网络可以用来存储某种模式序列,如神经认知机即属于此类。 - 2 5-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 图 有反馈的前向网络 Forward neural networks with feedback 层内有相互结合的前向网络:如图所示,通过层内神经元的相互信息互联,可以实现同一层内神经元之间的横向抑制或兴奋机制。 图 层内有相互结合的前向网络 Layer are combined with each other prior to the network 相互结合型网络:如图所示,这种网络在任意两个神经元之间都可能有信号连接,信息在神经元之间反复传递,网络处于一种不断改变状态的动态之中。 图 相互结合型网络 Combined network . 人工神经网络的基本模型 MP模型:人工神经网络基本模型主要指研究早期的几个有代表性的模型,根据需要,在本文主要介绍MP模型。 MP模型属于阀值元件模型,是最早提出的一种神经元模型。这种模型和前面所提到的基本神经元没有太大的差异,是大多数神经网络模型的基础。 通常考虑一个神经元要受到其他多个神经元的作用,因而表示为以n个模型相互连接形- 2 6-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 成神经元计算模型。见图所示,一个神经元具备相应的输入和输出。但是神经元自身的状态,决定了其输出的有无,也就是,每一个神经元从其它n-1个神经元接收传过来的信息,产生神经兴奋和冲动,在其它条件不变的情况下,不论何种刺激,只要输入总和达到预定的阀值以上,就能产生一个动作电位,并以最快的速度输出。一旦输入的总和小于阀值,神经元处于抑制状态,没有被激活,那么久没有产生任何输出[48]。 图 MP神经元模型 Figure MP neuron model 对n个互联的神经元中的第i个神经元,外界输入的总和影响其状态,第i个神经元的状态以某种函数的形式形成输出,即: iu ƒwv Τ, iijjij 1 v f(u).ii式中: w------代表神经元i与神经元j之间的连接强度(模拟生物神经元之间突触的连接强度),ji在这里,我们称之为连接权值; u------代表神经元i的状态; iv------代表神经元j的输出,同样也是是神经元i的一个输入; j iΤ------代表神经元i的阀值。 函数f反映了神经元的输入输出特性。在MP模型中,f定义为阶跃函数: vi 1,ui 0 ; !vi 0,ui 0 . δ一般我们用连续性的函数表达神经元的非线性变换能力,常用S型函数: f(ui) 1 1 e u iMP模型并没有给出一个学习算法来调整神经元之间的连接权。但是为达到学习的目- 2 7-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 的,根据需要,可以采用一些常见的算法来调整神经元连接权。例如Hebb学习规则: 神经网络具有学习功能。在人工神经网络中,这种学习可以归结为神经元之间连接权的变化。调整w的原则为:若第i和第j个神经元同时处于兴奋状态,则他们之间的连接应ij该加强,即: w ij∋ ∆u ivj 。这里的 ∆是表示学习速度的比例常数。感知器模型:感知器模型[48]首次引入了学习的概念,使人脑所具备的学习功能在基于符号处理的数学模型中得到了一定程度的模拟。该模型实际上依然是MP模型的结构,但是它采用监督学习的方式来逐步增强模式划分的能力,达到学习的目的。它们之间的区别在于神经元之间连接权的变化方式。 感知器的训练(学习)是通过监督学习过程来实现的。样本矢量X输入到感知器中,感知器中的各处理单元按照 nyf(wixi Τ) i 1 ƒ计算得到实际输出,将其与期望输出d的差进行比较来修正下一步计算步的权值。这种误差学习算法是神经网络中的一个重要算法。现介绍如下: (1)选择一组初始化后的权值w。 i(0)(2)计算某一输入模式对应的实际输出与期望输出的误差 Γ。 (3)如果 Γ小于给定值,结束,否则继续。 (4)更新权值(阀值可以视为输入恒为1的一个权值): wi(t 1 ) w 。 i(t1) wi( t) [Κd y(t)]xi 式子中 Κ为在区间(0,1)上的一个常数,称为学习步长,它的取值与训练速度和w收敛的稳定性有关;d和y为神经元的期望输出和实际输出;x为神经元的第i个输入。 i(5)返回(2)重复,直到对所有训练样本模式,网络输出均能满足要求。 简单感知器只能进行线性划分,而对非线性样本的划分无法实现。这个局限决定了它只有较差的归纳性,而且通常需要较长的学习时间才能达到收敛。 在感知器模型中所提出的分类算法在神经网络研究中具有重要的意义和地位,它具有神经网络一些自学习的特性。对于线性可分的模式空间,其算法是严格收敛的。在后来的神经网络研究中,许多模型都是在这种指导思想下建立的。 多层感知器模型:如果在简单感知器模型的基础上,在输入和输出层间加上一层或- 2 8-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 者多层的神经元(隐层神经元),就构成了多层前向神经元网络[48]。我们称之为多层感知器。但需要了解,多层感知器只允许调节一边的连接权。如图所示: 图 多层感知器 Multilayer perceptron 在该三层感知器中,有两层连接权,输入层与隐含层单元之间的连接权值是随机设置的固定值,不被调节。输出层和隐含层之间的连接权是可调节的。我们可以证明,只要隐含层和隐含层的单元数足够多,多层感知器网络可以实现任何模式的划分。但是如何确定多层网络的权值却一直没有一个很好的解决方法。 EBP网络模型:该模型是本论文的重点,在我们的研究中,主要就是基于该网络模型的预测。采用BP算法的多层神经网络模型一般被称为BP网络[48]。其模型结构如图所示: 图 多层前向BP网络 Multi-layer BP network BP网络的学习过程由两个部分组成:正向传播和反向传播。当正向传播时,输入信息从输入层经隐含层处理后传向输出层,每一层神经元的状态只影响下一层的神经元状态。如果在输出层得不到符合条件的输出,则转入反向传播,将误差信号沿着原来的神经元连接通路返回。并返回过程中,逐一修改各层神经元连接的权值。这种过程不断迭代,最后使得信号误差达到允许的范围之内。BP网路中可以采用有一定阀值特性的连续可微的Sigmoid函数作为神经元的激发函数。 Sigmoid函数:f(x) 1。 1 e x在这里,我们将BP网络的学习规则简单介绍如下: - 2 9-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 有P个训练样本,即P个输入—输出对(Xk,T。其中,),(1,2,...,X为第k个样本输kk Pk)入向量:Xk x,M为输入向量的维数;第k个样本的输出向量(期望输(k1,xk2,...,xkM)T为k出):Tk ,N为输出向量的维数。网络的实际输出向量为:(tk1,tk2,...,tkn)Ok (ok1,o;k2,...,okN)Tw为前一层第i个神经单元输入到后一层第j个神经单元的权重。 ji当神经元为输入层单元时,Ok X。 k对于第k个样本,第j个神经元的状态定义为: Netkj ƒ。 wjiokii则第j个神经元的输出为: okj fj(Ne。 tkj)Sigmoid函数激发下的BP算法: 当确定将Sigmoid函数作为神经元的激发函数时,我们有如下的BP算法[48]: 假设我们有多个训练样本,每个训练样本的有M个输入和N个输出。采用非线性可导的激发函数Sigmoid:f(Netj)1k 1 e Netkj其中为Ne网络单元的状态:为网络单tkjujNetkj ƒ。k为第k个训练样本,wo Τjjiki Τj i元u的阀值,o为第k个训练样本的实际输出向量jki(ok1,ok2,o中k3,...,o第i个输出值,kN)Twji为前一层第i个网络节点输入到后一层第j个网络节点的权重。 则第k个训练样本的输出为:,在1这种激发函数下,o1kj1 exp( ƒwjioki Τj) 1 Ne e tkji有:o。 f'(Net)kjjkj ω Nωe o kj(1ok j) tkj故对输出层单元: 第j个网络节点的训练误差,为第kΓj (tkj ok 。其中j)okj(1 kΓ是jok j) tkjk个训练样本的期望输出向量Tk 中第j个(tk1,tk2,tk3,...tkN)T输出值。 对隐层单元:。 kj okj(1 okj) m ƒΓkmwm jΓ权值调节为:wji(t 1) Κ。其k joΓ中ki Κ是按梯度搜索的步长。为了使学习速度足够快而- 3 0-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 不易产生震荡,在 Γ规则中加入“势态项”,即变成:wji(t 1 ) Κ, 其oΓ中 ∆kjki w∆ji(t)是一个常量,它决定过去权重的变化对目前权值变化的影响程度。 综上所述,BP算法的步骤如下: (1) 置各权值或者阀值的初始值:wji(0), Τ为小的随机数值。w为前一层第i个网络j(0)ji节点输入到后一层第j个网络节点的权重。 Τ为网络单元ju的阀值。 j(2) 提供训练样本:输入矢量Xk,k 1;,2,3,...P期望输出dk,k 1;对每个输入,2,3,...P样本进行下面(3)到(5)的迭代。 (3) 计算网络的实际输出及隐层单元的状态:okj o为第k个训练样fj( ƒ。wokijiki Τj) i本的实际输出向量(ok1,ok2,o中k3,...,o第i个输出值。 kN)T(4) 计算训练误差: kΓj okj(1 ok (输出层)。 为第k个训练样本的期望输出j)(tkjokj)tkj向量Tk 中第j个输出值。 (tk1,tk2,tk3,...tkN)T (kj okj(1 okj) 隐m ƒ含层) Γkmwm j Γ(5) 修正权值和阀值:wjt(t 1 ) w ji(t) Κ k joΓki[w j ∆i(t)wji(t 1)] Τj(t 1 ) 。 j(Τt) k jΚ Γ[ j (t )∆ j(Τt 1 )] Τ (6) 当k每经历1至P后,判断指标是否满足精度要求:E δ Η; Η:精度。其中E 1 ƒt2k2(kj ,okE ) ƒE。 kj (7) 结束。 BP模型虽然在各方面都有重要意义,而且应用也非常广泛,在本论文中,我们就使用BP算法作为提出模型的基础,主要用来进行风险分析和预测工作。但它也存在一些不足之处。从数学上看,这是一个线性优化问题,不可避免的会存在局部极小点,学习算法的收敛速度很慢;网络隐含层节点数选取带有很大的盲目性和经验性,还没有理论上的指导;新加入的样本要影响已经学完的样本。种种的缺陷使得后来人不断的对BP算法进行了改进,大都集中在如何加快学习速度和尽可能避免陷入局部极小。在本论文中,该方向不是我们研究的重点,所以不再探讨这些优化算法。 - 3 1-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 第四章 基于BP算法的软件风险管理模型 软件开发项目的风险存在于软件项目在整个生命周期内,由于受各种环境的不确定性因素的影响,实际发生的成本、进度、质量等与预期结果会产生不利偏差。由第二章的描述可以看出,软件项目的风险具有以下的四个特点:第一,对于项目各组成部分间的复杂关系,我们不可能彻底的了解。第二,项目各个组成部分之间不是简单的线性关系。第三,项目时刻处于动态变化之中,平衡状态即使出现也只能是短暂的。第四,项目管理者不仅要面对技术和经济问题,还要面临一些非常复杂、非线性和不确定性极高的问题。 根据第二章的分析,Boehm的软件风险管理模式偏重于理论结构,研究范围较为狭窄,考虑问题不够周全,主要集中在开发过程,没有考虑到开发辅助等关键因素。无法保障风险的识别和有效管理。CRM风险管理模型虽然考虑全面,可应用领域广泛,操作简便,但是成本过高,特别是风险识别阶段,需要每一个循环都做一遍风险识别。效率低下,往往错过了最佳风险规避时间。其它的一些现成的风险管理模式往往应用在专业领域,或者没有站在使用者的角度看待问题,可信度不高。因此,期待一种灵活简便,管理高效的管理模式。我们在先前已有的理论基础上,结合国内软件行业的基本开发特点,提出了基于神经网络算法软件风险管理模型。该模型在Boehm风险控制理论[6]中Top10风险控制清单、CRM模型[8]的基于分类的风险因子识别模型的基础上,并结合了BP算法[21]处理非线性问题的优势,使得该模型具有了预测、分析、控制风险方面的特性。下面将予以详细介绍。 . 模型的建立 依据CRM管理模式为基础,我们将风险管理分如下六个步骤:风险因子采集、风险识别、风险分析、风险控制、软件质量跟踪和监控和风险因子跟踪。这六个阶段自上而下,动态反馈,不断降低软件项目的风险,提高软件的质量和可用性。 1.风险因子采集就是根据经验和先前的一些理论研究成果首先罗列出在项目开发中经常出现的风险因子,然后通过有效的途径找出最有可能影响项目质量且最为重要的风险因子。 2.风险识别就是根据实际的项目,考察其在开发过程中出现的种种表现,分析出现的不确定因素,同时将这些不确定性因素转化为可以描述和度量的风险因子的过程。该过程的目的是找出项目中可能会导致软件质量下降的风险因子,并评价它们出现的概率和重要- 3 2-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 性。该过程是风险管理模型的基础,只有对项目有整体的风险认识才有可能有后续的工作。 3.风险分析过程则对识别出的风险因子加以详细分析,并依据这些识别出来的风险因子来判定未来软件的质量,并将该质量因子量化。作为其评价标准。分析风险的基本属性包括发生概率、对最终软件的影响程度,同时我们还需要根据风险识别过程的量化结果确定风险因子的优先级。该阶段我们将其分为两个步骤:BP训练阶段和BP判定阶段。其中BP训练阶段主要对实际的训练项目数据进行训练,以期找到对应风险和最终软件质量的函数关系。有了该函数关系,BP判定阶段就可以对被分析的项目数据进行判断和预测,根据输入的风险因子的量化结果,预测该软件的质量水平。因为整个模型与该BP算法预测准确率尤其相关,所以在第一次进入风险分析的过程中,要求不断的更改BP算法的参数,直到可以达到较高的预测成功率。 4.风险控制是决定对风险项需要采取哪些措施并分配风险责任的过程。经过了风险分析过程,我们已经能够了解到软件的风险因子的度量,未来的质量全貌,这时,就需要根据风险因子出现的紧急性和重要性,对开发过程进行调控,并预测经过该调控以后软件的质量变化。具体的调控方法是基于我们的风险控制模型来进行的。 5.软件质量跟踪和监控就是根据已经识别出来的风险,对软件的质量进行跟踪和监控。经过风险控制阶段,已经根据所暴漏风险的优先级进行的相应的调控,但是,由于软件开发过程的非线性特性,经过调控后极有可能出现软件质量的下降,甚至会有新的风险因子出现,因此,在这个阶段,需要对修改软件开发过程后的软件质量进行重新的预测。在这里就需要返回到风险分析的BP判定阶段。并最终打印一份软件质量的详细报告。该报告包括:风险控制阶段所做出的改动,改动前和改动后的风险因子的度量值,当前软件的质量预测度量以及预测软件质量的走向。 6.风险因子跟踪就是对已经先前出现的风险因子进行监督,看是否风险加大或者出现新的风险。前面的风险控制阶段所做的改动会有可能加重风险因子出现的概率,甚至会加入新的风险因子。因此,在这里,就需要对风险因子进行跟踪和监控。跟踪监控的方法包括重新作风险识别,对风险因子重新量化等。 具体的风险管理流程图如图所示。 - 3 3-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 图 基于BP算法的软件风险管理模型 BP algorithm based on the software risk management model 接下来就对该模型的每一个模块进行详细的描述 . 风险因子的采集 一个风险因子代表项目中出现的一个风险,在CRM风险管理模式的识别阶段,整个项目风险分为了“产品工程”、“开发环境”、“程序约束”3个大类及相应的13个元素。每个元素又分为了多个属性,其中每个属性都代表一个风险因子。总共64个风险因子,涉及到了软件开发的方方面面。但由于软件行业的特殊性,对每个软件项目,风险因子的重要性并不相同,例如拿“安全性”风险因子来说,对于涉及到网上交易的软件来说,安全性至关重要。但是一般的家用软件对安全性要求不高。在研究中我们发现,非重要性的风险因子会对测量结果的准确性产生较大影响。因此,为保证模型的有效性,首先验证模型输入的风险因子的有效性。在这里,我们采用了问卷调查的方式(见附录1—风险因子重要性问卷),对15位专家做了深度访谈,其中,包括软件工程和项目管理系统方面的教授,大型企业的项目经理,软件客户方的项目领导。在64个风险因子中,每个风险因子设计一- 3 4-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 个简单的问题,例如“需求稳定性风险”问卷: Stability——需求稳定性风险 (最重要 比较重要 重要 比较不重要 不重要) Q:当软件产品在开发的过程中,需求是否会发生变化?[是] [否] . 风险因子的重要性量化 问卷量化采用模糊范围的5点法(即最重要为1、比较重要为、重要为、比较不重要为、不重要为)。重要性问卷主要用来判定该风险因子对项目的影响程度和重要性。如上例所示,问卷对象选择“比较重要”,则该风险因子的重要性为。 问卷总共收回108份,地区覆盖广州、深圳、西安、上海、哈尔滨五个地区。对每个风险因子的重要性求均值,可以得到“Hardware Constraints”,“safety”,“Human Factors”,“Deliverability”,“Type of Contract”,“Restrictions”,“Dependencies”,“Prime Contractor”,“Corporate Management”,“Vendors”均值低于,即该10个风险因子不重要,可以剔除掉。 经过风险因子的采集步骤,留下的相对重要的风险因子为54个。每个因子对应的重要性已经量化。 . 风险识别 在模型中,风险识别和量化是风险分析和管理的关键环节。风险识别的准确性直接影响到后续工作的进行。经过风险因子的采集步骤,我们筛选出来54个风险因子,CRM风险管理模型根据每个风险因子为我们设计了一份长达196个问题的问卷调查,该问卷覆盖面广,考虑到了软件开发周期中的每一项步骤。然而,正是因为涵盖面广,从而导致问题复杂多变。我们从中总结出缺点如下: 1.提问过多,问卷对象往往疲于回答,影响问卷的真实性,可操作性不强。 2.考虑到问卷调查的主观性,有些风险无法在开发阶段暴露出来,例如:“可靠性”和“可用性”风险。是需要在不断的使用中发现的。 3.提问的设计有待改进。有的提问甚至会引导调查对象作错误的回答。 例如: Project Organization——项目组织风险 Q1:项目管理总是能够有效的实施吗?[是] [否] 作为一个管理者,回答这个问题的时候总是肯定的。 - 3 5-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 4.并没有从描述开发行为的角度来设计问卷,导致回答时模棱两可,影响精确度。例如: System——系统集成风险。 Q1:是否有大量的系统集成?[是] [否] 5.有的问卷,不同的人回答会有不同的结论。例如: Management Experience——管理经验风险。 Q1:团队中拥有富有经验的管理者吗?[是] [否] 6.并没有考虑到所考察项目的实际情况。有的项目需要外包团队的参与,有的项目对硬件要求较高,不同的项目情况应该有不同的问卷。 因此,基于以上种种问题,我们对问卷调查进行了修改(见附录2——风险输入问卷调查)。修改方案简单描述如下: (1).在软件的整个开发周期中考虑软件风险的管理。 (2).问卷要本着客观真实的原则,只描述软件过程的行为,不描述感受。 (3).对问卷调查分类处理,问卷对象可以寻找对应软件开发过程中出现的较为重要的风险进行回答。 (4).每个项目安排多种不同的角色进行调查。根据角色的不同,安排不同的问卷。例如管理者、开发人员、测试人员、设计人员。 经过上述方法的修正,平均下来每位调查对象只需要回答56个问题。大大的减少了调查对象的工作量,同时也提高了问卷的准确率。在调查活动中,共发放了125份,收回108份。问卷地区分布包括广州、深圳、上海、成都、南京、哈尔滨和杭州7个地区。 . 风险识别的量化 同样,该问卷涉及到量化的问题,在问卷调查中,为54个风险因子中的每一个都设计了多个问题,调查对象只需要回答“是”或者“否”,根据回答的具体情况,对该风险因子的出现进行量化。如果该问题的答案有利于提高该风险因子的出现概率,那么该问题的贡献率为正,否则为负。具体的数字视每个因子的问题而定。如果该风险因子有4个一级问题,那么每个问题的贡献率为+或者。对于某些一级问题后面又有二级问题的,也是根据二级问题的个数计算具体的贡献率。举例如下: Stability——需求稳定性风险。 Q1:在该项目中,需求是否稳定?[是] [否] :如果不稳定,你是否知道造成不稳定的因素是什么? - 3 6-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 [是] [否] Q2:第三方系统对该项目的接口的定义是否在项目开发过程中变化了? [是] [否]0 “需求稳定性风险”有两个提问,如果该提问的回答提高了该因子出现的风险,那么该提问的影响因子为1/提问的个数。相反,影响因子就为0。根据每个的实际问题,我们还设计了子问题,子问题的回答情况会影响父问题的影响因子。最终,该风险因子出现的风险量化为所有提问的影响因子之和。数字越大,表明该风险出现的概率越大。 考虑到每个风险因子的重要性不同,在该阶段,不能仅仅靠上面的量化方式进行。为了简单起见,我们约定,如果该因子量化与因子重要性量化乘积达到以上,我们就识别该因子为高风险因子,需要加以关注。 . 风险分析 风险分析过程则对识别出的风险项加以详细分析,并根据风险预测软件的质量。 在本研究中,我们将风险分析阶段分为两个步骤:一个为BP训练方面,该方面主要对通过问卷调查得到的输入和输出数据进行训练。一个为BP判定阶段,根据BP模型的输入进行软件质量的评估和判定。 软件项目风险分析常用的测量评估方法包括影响图(influence diagram,ID)、贝叶斯置信网络(bayesian belief network,BBN)和人工神经网络(artificial neural network,ANN)等等。其中,BBN和ID存在2 方面的缺陷:它们的网络关系和条件概率表是根据专家经验获得,主观性较强;若给网络增加节点,则需要重新调查以获得新的条件概率表,所以,它们的网络扩展性差。以上缺陷对模型的推广使用十分不便。通过对20多位专家进行深度访谈,发现软件项目风险对软件质量的影响有非线性的特性,而ANN处理该类非线性问题,有着很好的理论基础。因此,比较之下,我们采用了ANN中的BP算法进行风险分析。 BP网络[21]是一组有连接的输入输出单元,其中,每个连接都与一个权值(V,W)相联,网络结构包括输入层(X)、输出层(O)和隐藏层(Y)。神经网络的输入输出处理由转移函数及其阈值决定,权值由训练样本训练获得。在各种神经网络中,BP网络是应用最广泛的神经网络,典型的BP网络见图。 - 3 7-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 图 BP网络模型 BP network model 在BP模型中,首先要对样本数据进行训练,这里的样本数据包括之前的调查问卷——风险输入问卷调查(见附录二);还包括下面我们提到的风险输出问卷调查(见附录三),该问卷主要是用来评估目标项目的质量。前者作为BP模型的输入,即将风险因子的量化结果作为输入。后者作为BP模型的输出,即软件的质量。前面提到过,进行BP训练的目的就是期待能够找到一个以风险因子作为自变量,以软件的质量为值的函数。因此,接下来来看一下我们的第三份调查问卷——风险输出调查问卷(见附录三) . BP模型的输出 在BP模型中,输出部分是软件项目产出,即软件的质量。较有里程碑意义的软件项目产出结果的测量框架包括DELONE等的6维软件质量评估模型[23],SEDDON[24]和HU[25]等对评估模型进行的修正。在这里,为方便起见,我们采用了DELONE的6维软件质量评估模型。如下图所示: 图 六维软件质量评估模型 Six-dimensional software quality evaluation model 该模型将对项目质量的评价分为6维,每一维从某一个角度描述了系统的质量,其中每一维描述的范围如下: System Quality:从系统本身的角度来进行评估,即软件的功能和经过该系统进行处理过后的输出是否是用户真正想要的。 Information Quality:从软件的输出来进行评估。即经过该系统处理过后的输出质量如何,包括输出的精确性、时间性、和是否真的有意义。 Use:从用户的实际使用情况考虑,例如使用的次数,使用的频率等。 User Satisfaction:用户使用系统的满意度。 - 3 8-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 Individual Impact:使用该系统后,对使用者本人的影响。 Organizational Impact:用户所在的机构使用该系统后,对机构的影响。 可以从图中看出,Use和User Satisfaction互相影响。该模型从各个方面对软件的质量进行描述,非常全面,但是全面的代价往往是实施起来代价高昂。特别是User Satisfaction、Individual Impact、Organizational Impact很难进行调查,量化起来也很困难,但是该模型是第一个完整意义上的软件质量评价模型,后来的经典质量评价模型都在此基础上发展而来。然而,在该模型中,对于每一维的参数,却没有介绍。以后介绍的一些文章[46,47],虽然介绍到了,但是没有所站的研究角度各异,且不一定适合国内企业的需要。例如:有些I/S研究者主要关注System Quality,然而有的关注Information Quality等。Ives和Olson[46]就采用了System Quality和User Satisfaction作为软件的质量评价标准。受到了CRM模型中基于分类的风险识别模型的启发,根据经验,对该六维软件质量评估模型进行了改进:其中,将每一维分成多个元素,每个元素又分为多质量评价因子。如图和图所示:分别为系统质量维和信息质量为的划分方法。 图 System Quality角度评价软件质量 Assessing the software quality system quality 图 Information Quality角度评价软件质量 Assessing the software quality information Quality 由于数据获取遇到了极大的困难,我们只取得了System Quality、Information Quality和Use三维的数据。并在此基础上制作了一份风险输出调查问卷(见附录三),软件质量的量化和前面风险因子采集的量化方式类似,都是采用模糊范围的五点法。风险输出调查问卷同样一共108份。 - 3 9-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 . BP训练 BP模型的输入和输出数据都已经准备完毕,为了增加模型的准确度,我们在这3套都为108份的问卷中任意选择了80份作为训练样本,参加BP模型的训练。 下表展示了在BP算法中,BP模型的神经网络参数。 表 BP模型的神经网络参数 Parameters of BP neural network model 类型 连接方式 层数 输入节点数 隐藏节点数 输出节点数 学习速率 惯性系数 激发函数 误差最小值 感知器 前向 3 54 8 46 0.06 0.05 Sigmoid 0.01 可以看出,BP模型有46个输出。为了最后的统计分析,我们将这46个输出的数据求和,得出一个较大的数字表示目标项目的质量,数字越大,表明该项目的质量越好。 . BP判定 第一次运行该风险管理模型的时候,为了确保我们的预测系统的准确性,在这里需要对BP算法的预测准确性进行下评价。在剩下的28个样本数据中,我们随机的选择了20个数据。将数据输入到训练过后的BP模型中去。这20个数据的输出为实际输出,经过BP模型计算过后的输出为期望输出。然后计算预测输出的准确率。这个实验一共做了6次,预测的准确率分别是:%;%;%;%;%;%。可以看出,预测的性能很不错,达到了神经网络方法在同类研究中的85%、%准确水平。 以后再进行BP判定的时候直接得到软件的输出总质量。 . 风险控制 风险控制是决定对风险因子需要采取哪些措施并分配风险责任的过程。经过风险分析阶段,我们已经找出了用户在开发过程中出现的这样或那样的行为所导致的软件质量差别的对应关系,即哪些风险导致了哪部分质量的下降。因此我们就可以对这些导致质量下降的风险因子进行处理,改变当前不恰当的开发过程,提高软件质量。 一般来讲,风险应对策略主要有以下四种。 ●规避。通过变更项目计划消除风险或风险的触发条件,使目标免受影响。这是一种事前的风险应对策略。例如,在风险苗头刚刚出现的时候,改变对应的不良开发习惯等。 ●转移。不消除风险,而是将项目风险的结果连同应对的权力转移给第三方。这也是一- 4 0-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 种事前的应对策略,例如,将数据移植项目的成败交给监理方控制或与用户签订补偿性合同。 ●弱化。将风险事件的概率或影响力降低到一个可以接受的程度。例如,在正式的数据移植之前在测试系统上多次演练,增加备份设计等。 ●接受。不改变项目计划,而考虑发生后如何应对。例如当数据移植出现问题时按事先制定好的应急计划或退却计划执行。 早在Boehm风险管理时代,就已经给出了Top10的风险控制办法,这10个风险因子是在开发过程中最为常见的风险,这是一种事前控制措施。在这里,我们征询了很多富有经验的项目经理的开发经验,制作了一份风险控制计划表。在该风险控制计划中,我们对每一个风险因子都设计了对应的控制技巧。篇幅关系,只列出部分如表所示,详细的清单请查阅(附录四—风险控制清单): 表 风险控制清单 Risk control list 风险因子 风险控制 团队成员风险 招聘高级人才;团队建设;激励士气;交叉培训; 预先计划关键人员 项目日程风险/项目预算风险 详细的、多方来源的成本日程估计;成本计划;增 量开发;软件复用;需求清晰 功能性设计风险/可靠性、可用性风险 组织分析;任务分析;操作概念形成;用户调研;原型;早期用户手册 用户接口风险 任务分析;原型;场景分析;用户特色描述 需求准确性风险 明晰需求;原型;成本效益分析 需求稳定性风险 信息隐藏;增量开发 开发设备风险 检查;兼容性分析 外包风险 跟踪检查;优化设计;团队建设 项目组织风险/管理经验风险 激励;模块化;原型 设计能力风险/系统内部接口设计风险 技术分析;算法分析;成本效益分析;原型 如表所示,对于每一个风险因子,我们都有多个对应的风险控制策略,在实际的应用中,有可能采取的策略反而会降低软件的质量,这时,建议撤销所做的改变,重新选择下一个策略。另外要根据风险的轻重缓急来顺序实施。考虑到软件开发的复杂性,要求- 4 1-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 每进行一次风险控制,我们都要进入风险识别阶段重新识别风险并判定软件的质量。 . 软件质量跟踪和监控 软件质量的跟踪和监控就是根据现有的风险数据,对未来的软件开发质量进行预测评估。经过了第一次风险控制阶段,项目本身已经做了一次自我完善了,这个阶段会返回到BP判定阶段,并打印一份软件质量评估报告。查看是否由于软件控制阶段的改变导致软件质量的下降。如果导致质量下降,则启动应急计划,在这里,为了简单起见,我们撤销该软件控制阶段所做出的改变,选择其他的风险控制策略。如果质量得到改善,说明管理收到了成效,继续对原有的风险因子进行监控。并定期对被监控软件的质量。 . 风险因子跟踪 经验告诉我们,试图为减少软件风险所做的一切努力都有可能加入新的风险或者提高现有风险因子的出现概率。因此,该阶段是必不可少的,该阶段需要管理层介入,定期对项目的开发过程进行自省甚至重新做调查问卷。 . 试验结果 为了验证该风险管理模型的有效性,我们将试验步骤总结罗列如下: 1.发出调查问卷。一套问卷包括3份:《风险因子重要性调查问卷》、《风险输入调查问卷》、《风险输出调查问卷》。问卷调查的对象为国内大中型IT企业中有5年以上开发经验的项目经理(40%)、开发人员(20%)、测试人员(20%)和管理人员(20%)。 2.回收问卷112套。对数据进行汇总,量化,筛选。留下108套。 3.风险因子的采集。根据108份《风险因子重要性调查问卷》的量化结果,对每份问卷的风险因子求平均值,从中提取54个重要性超过的风险因子。余下10个风险因子因为重要性极低,被剔除掉。 4.风险识别。将108份《风险输入问卷调查》所获得的每个风险因子的量化结果与《风险因子的重要性调查问卷》中对应的风险因子重要性量化结果相乘,找出乘积大于的风险因子,这些因子作为我们重点关切的风险因子。 5.风险分析。在这108套问卷调查中,随意找出80套作为BP训练阶段的训练数据,- 4 2-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 输入为风险识别阶段找出的严重风险,输出(即《风险输出调查问卷》的量化结果) 为软件实际质量。在BP模型中进行训练。训练完成后,从剩余的28套问卷中随机的选择20套作为我们的测试数据。由于我们整个风险管理模型是基于预测的,所以BP模型预测水平的好坏直接关系到最终管理模型的质量。于是,我们将验证预测能力的实验做了6次,BP模型的准确率分别为:%;%;%;%;%;%。达到了很高的标准。由此可以确定,我们未来所做的实验的准确性是值得信任的。 6、试验数据整理。该实验数据是基于我们在机电系的一个软件开发项目——《面向轻工业的项目管理系统》。在开发这个系统的过程中,根据问卷的数据进行了风险识别和风险分析。 7.风险控制。根据我们的风险控制模型,依据该项目识别的风险改变项目的开发过程。在这里,我们的目的是验证整个管理模型的有效性,因此,重新问卷进行风险识别。 8.软件质量跟踪和监控。跟踪软件的质量,将降低后的风险度作为BP模型新的输入,预测出经过风险控制之后软件的整体质量。 9.比较风险控制阶段之前和之后的软件质量,如果软件质量有所下降,则启动应急预案,在这里,为简单起见,我们撤销风险控制阶段所做出的改变,并同时返回风险控制阶段,重新选择控制策略。 10.风险因子跟踪。在项目的开发中,我们对几个高风险的因子进行关注,经常自省,该风险是否严重。 11.返回2继续执行。 试验结果如图所示:横坐标是循环的次数,纵坐标是软件的质量,蓝色条代表对该项目实施该模型后软件质量的变化趋势(实际变化趋势),橙色的条代表未实施该模型后软件质量的变化趋势(预测变化趋势)。循环试验了20次。 图 软件质量的趋势预测 Software quality prediction - 4 3-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 从该图可以清晰的看见,软件在该模型管理之下,质量的改善的比较明显,而未实施该模型,质量波动较小。这就充分的证明了该模型对于改善软件质量是有所帮助的。 - 4 4-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 第五章 总结与展望 . 总结 风险可以称之为一种事件、状态发生的可能性,这种可能性会带来严重的后果或者潜在的问题。风险是客观存在的,并且与效益同存,只有正视风险才能有效的规避风险。我们要学会在风险带来的负面影响和潜在的收益中找到平衡点。由于软件项目开发和管理中的种种不确定性,使得软件业成为高风险产业。对很多失败的软件开发项目进行事后分析说明:如果在项目刚开始时就关注于识别或解决项目中的高风险因子,那么就会很大程度的减少甚至避免这种失败。本文基于改善软件质量,提高软件开发的成功率的目的,在前人的基础上,结合国内软件开发企业的开发环境,设计了基于神经网络算法的风险管理模型。神经网络算法中的BP模型能够很好的处理非线性问题,最后用我们所开发的一个项目作为实际的数据进行了实验,结果表明,该算法对于预测项目风险,进行风险识别,提高软件质量是有帮助的。 . 展望 从我国软件产业的发展和国内对于该领域的关注,可以预见到,项目风险管理未来必将作为一门学科而逐渐成熟并完善。 本文基于软件的开发阶段,在Boehm和CRM风险管理模型的基础上,结合DELONE的软件质量评估模型,提出了一种基于BP算法的软件风险管理模型。研究上还存在一定的不足和需要进一步深入的方面,主要有: 1、风险管理贯穿于项目的整个生命周期,包括从项目可行性分析到项目发布后的后期维护。本文主要是面向项目的开发阶段的风险管理,只是其中一个过程,对于其他过程的风险管理问题还需要在今后的学习中进一步研究。 2、问卷的数据较少,仅仅只有108个数据,这对于BP训练是不够的。并且并没有确定该数据的可信度。会一定程度的影响风险识别和预测。 3、验证模型对于提高软件质量有效性的数据还太少,仅仅只有一个,不能完全说明问题。还需要在今后的工作中进一步验证。 - 4 5-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 4、模型中没有建立一个风险库,在当代,风险库的对于风险管理是至关重要的。但是国内研究起步较晚,资料少,技术管理和管理都不健全,很难有丰富的经验和教训得到继承和借鉴。所以,建立有效的风险库和积累更新机制,使之更好的服务于风险管理服务是需要我们进一步研究的问题。 - 4 6-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 参考文献 [1] The Standish Group. Extreme Chaos [EB/ OL]. ( 2009-04-23). http: / / . [2] The Software Productivity Research Group. http: / / . [3] 左美云, 邝孔武. 信息系统的开发与管理教程[ M] . 北京: 清华大学出版社, 2001. [4] Cavid Kull 软件开发的滑铁卢—重大失败项目的经验与教训——4GL灾难剖析 [5] Cavid Kull 软件开发的滑铁卢—重大失败项目的经验与教训—丹佛国际机场行李处理系统 [6] BOEHM B W. Software Risk Management [ M ]. Washington D C: IEEE Computer Society Prcess,1989. [7] 牟玲玲,陈立文,张建军.软件项目风险管理研究综述.计算机工程与应用。2007,43(10):202-205 [8] CARR M J, KONDA S L, MONARCH I. Taxonomy-Based Risk Identification[R]. SEI Technical Report SEI -93-T R-006, Pittsburgh, PA: Software Engineering Institute, 1993. [9] Kontio J . The Riskit Method for Software Risk Management. Version . Computer Science Technical Reports. [ R]. University of Maryland. College Park. MD. 1996. [10] Ayad Ali Keshlaf, Khairuddin Hashim, A Model and Prototype Tool to Manage Software Risks, IEEE 2000. [11] IEEE Std 1540 - 2001, IEEE Standard for Software Life Cycle Processes- Risk Management[S]. 2001. [12] Xu Ruzhi, Qian Leqiu, Jing Xinhai, CMM based software risk control optimization, Journal Information Reuse and Integration, IEEE 2003, Pages 499-503 [13] Microsoft Solutions Framework White Paper. MSF Risk Management Discipline . [R]. V1. 1. 2002. [14] Hansen, 8. , Rose, 1. and Tjornehoj, G. Prescription, description, reflection: the shape of the software process improvement field. International Journal of Information Management, 24, 6 (2004), 457-472. 7 [15] Herbsleb, J., Zubrow, D., Goldenson, D., Hayes, W. and Paulk, M. Software quality and the capability maturity model. Association for Computing Machinery. Communications of the ACM, 40, 6 (1997), 30-40. [16] CMM I Distilled: A Practical Introduction to Integrated Process Improvement. Translated by Zhou B S. China Machine Press. 2002:79-84 [17] Jalote R CMM in Practice: Process for Executing Software Projects at Infosys Addison—WesIey. 2000: 5-117 [18] Elaine M. Managing Risk: Method for Software Systems Development Addison—Wesley,1998: 69-101 [19] AIfred B. Process—based Software Risk Assessment. Proceedings of the 4 European Workshop on Software Process Technology, Nordwijkerhout, Netherlands, 1995-04 [20] 梁涛. 基于风险关系研究的软件项目风险管理. 西北工业大学硕士学位论文. [21] 王旭等 人工神经元网络原理与应用 东北大学出版社 2007. [22] DELONE W H, MCLEAN E R. Information System Success: T he Quest for the Dependent Variables [J]. Information Systems Research. 1992, 3 ( 1) : 60~95. [23] DELONE W H,MCLEAN E R. Information System Success: T he Quest for the Dependent Variables[J] . Information Systems Research. 1992, 3 ( 1) :60~95. [24] SEDDON P B. A Respecification and Extension of the Delone and Mclean Model of IS Success[J]. Information System Research, 1997, 8( 3) : 240~253. [25] HU Y, XIAO J H, PANG J F, et al. A Research on the Appraisal Framework of E-Government Project Success[C] / / T he Proceedings International Conference of Electronic Commerce, Xi' an, China, 2005. [26] Software Engineering Institute. The SEI Approach to Managing Software Technical Risks. Bridge, - 4 7-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 1992,(20): 19-21. [27] 尼尔.怀特. 管理软件开发项目[M]. 北京:电子工业出版社,2002. [28] Kaplan. Journals. . [29] RAZ O, SHAW M. Software Risk Management And Insurance[C] / / The 23rd International Conference on Software Engineering (Workshop on Economics-Driven Software Engineering Research) , NY, 2001. [30] KONT IO J. Software Engineering Risk Management: A Method, Improvement Framework, and Empirical Evaluation[D]. Espoo, Finland: T he Center for Excellence, Helsinki University of Technology, 2001. [31] WIEGERS K E. Know Your Enemy: Software Risk Management [J]. Software Development, 1998,6( 10) : 38~42. [32] Md. Forhad Rabbi, Khan Olid Bin Mannan. A Review of Software Risk Management for Selection of best Tools and Techniques. IEEE Computer Society. 2008:773-778 [33] Ray C. Williams, George J. Pandelios, Sandra G. Behrens. Evaluation (SRE) Method Description (Version ), CMU/SEI-99-TR-029, ESC-TR-99-029, 1999 [34] Kontio, J., Risk Management in Software Development: A Technology Overview and the Riskit Method, The Proceedings of the International Conference of Software Engineering ICSE’99, Los Angles CA, 1999, Pages 679-680. [35] Jamie L. Smith Shawn A. Bohner D. Scott McCrickard, Project Management for the 21st Century: Supporting Collaborative Design through Risk Analysis. 43rd ACM Southeast Conference, Kennesaw, GA, USA, March 18-20, 2005. [36] Pankaj Jalote. CMM in Practice: Process for Executing Sofmare Projects at Infosys. Addison- Wesley, -117, 2000. [37] Williams R. Putting Risk Management into Practice [J] IEEE Software 1997-05/06: 75-82 [38] Sherer . Software Failure Risk: Measurement and Management[M]. New York: Plenum Press,1992 [39] Heikkinen, et al. Risk and QFD Prototyping of Graphical Animation Software[M]. New York: Springer-Verlag,1992 [40] Gluch. A Construct for Describing Software Development Risks. Technical Report, Pittsburgh PA: CarnegieMellon University, CMU/SEI-94-TR-14 [41] Chittister, Haimes. Risks Associated with Software Development: Aholistic FrameWork for Assessment and Management[J]. IEEE Transactions on Systems, Man and Cybernetics, 1993(3):710-723 [42] Higuera, Dorofee, Walker, Williams. Team Risk Management: A New Model for Customer-Supplier Relationships. Technical Report, Pittsburgh(PA): SEI, Carnegie Mellon University, CMU/SEI-94-SR-005. [43] Fairley. Risk Management for Software Projects[J]. IEEE Software, 1994(3): 57-67 [44] Moynihan. How experienced Project Managers access risk[J]. IEEE Software, 1997(3): 35-41 [45] Zhiying, Z. CMM in uncertain environments. Association for Computing Machinery. Communications of the ACM, 46, 8 (2003), 115-119. [46] Ives, Blake, Margrethe Olsen and Jack J. Baroudi. The Measurement of User Information Satisfaction. Communication of the ACM, 26, 10(October 1983), 785-793. [47] Zmud, Robert W., An Empirical Investigation of the Dimensionality of the Concept of Information. Decision Sciences, 9,2(April 1978), 187-195. [48] 杨建刚 人工神经元网络实用教程 浙江大学出版社 2007. - 4 8-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 [49] 2009年中国软件质量报告 2009. - 4 9-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 致谢 本研究及学位论文是在我的导师孙浩军教授的亲切关怀和悉心指导下完成的。他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,孙老师都始终给予我细心的指导和不懈的支持。三年来,孙教授不仅在学业上给我以精心指导,同时还在思想、生活上给我以无微不至的关怀,在此谨向孙老师致以诚挚的谢意和崇高的敬意。 同时,我还要感谢张承钿副教授,在论文的撰写过程抽出了大量的时间中给了我很多的建议和意见。 感谢姜大志副教授,在工作和学习上为我提供了很多很好的建议,姜老师思维缜密、治学严谨,与他的每次讨论都让我受益匪浅,他勤恳的工作态度给我留下了深刻的印象,同时感谢他为我们实验室营造良好的学习氛围及科研环境做出的积极贡献。 感谢数据挖掘实验室的王志飞、杜育林、姚燕、曾庆楠,罗彩云,感谢他们热情的帮助、支持和包容,与他们一起学习生活的日子是我今后美好的回忆,感谢在计算机系一起成长3年的同学们。 在此,我还要感谢在一起愉快度过研究生生活和学习的同门,正是由于你们的帮助和支持,我才能克服一个一个的困难和疑惑,直至本文的顺利完成。 在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意! 我要特别感谢我的家人,没有你们的支持,就没有今天的我。愿把我的幸福和快乐都送给关心和支持过我的人,也愿他们一切如意。 最后,由衷的感谢在百忙中评阅论文以及答辩回的各位专家、导师! 张书瑞 2011年5月30日 - 5 0-
汕头大学硕士学位论文 基于神经网络算法的风险管理模型 攻读硕士学位期间作者参与的科研项目及成果 参与科研项目 轻工装备研究院科研项目“面向轻工装备的产品开发项目管理系统” - 5 1-