(计算机系统结构专业论文)混合神经网络在软件风险评估中的研究.pdf_第1页
(计算机系统结构专业论文)混合神经网络在软件风险评估中的研究.pdf_第2页
(计算机系统结构专业论文)混合神经网络在软件风险评估中的研究.pdf_第3页
(计算机系统结构专业论文)混合神经网络在软件风险评估中的研究.pdf_第4页
(计算机系统结构专业论文)混合神经网络在软件风险评估中的研究.pdf_第5页
已阅读5页,还剩58页未读 继续免费阅读

(计算机系统结构专业论文)混合神经网络在软件风险评估中的研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

混合神经网络在软件风险评估中的研究 专业:计算机系统结构 硕士生:容振邦 指导教师:陈炬桦副教授 摘要 软件风险是影响软件开发项目成功的重要因素。软件开发项目的成功,不仅 依靠先进的软件开发方法和工具,而且有赖于成功的软件项目管理。成功的软件 项目管理是离不开风险管理的。如果项目在实施之前能够进行风险评估,那么项 目实施的成功率将大大提高。到目前为止,我国在软件风险管理领域的研究仍然 处于一个起步阶段,开展软件风险管理研究不仅具有很大的研究意义,而且对软 件业的发展具有深远的现实意义。 本文主要研究软件开发项目的影响因素和项目产出之间的关系。首先,在前 人研究的基础上,通过阅读大量的参考文献,归纳总结出一个包括3 6 个风险因 素的软件分类模型。然后通过对有多年软件项目经验的从业人员进行问卷调查的 方式来获取实验数据。最后,建立混合神经网络模型进行风险评估。针对风险因 素众多而且相关性大的特点,采用主成分分析来减少风险因素之间的相关性,降 低模型复杂性,提高模型评估的稳定性。针对神经网络结构和初始权值阈值难以 确定的特点,通过引入遗传算法来达到优化的效果。实验结果表明,采用混合的 神经网络模型能够提高软件风险评估的准确率。 关键词:软件风险评估,主成分分析,b p 神经网络,遗传算法 r e s e a r c ho nm i x e dn e u r a ln e t w o r k a p p l i e dt o s o f t w a r er i s ke v a l u a t i o n m a j o r :c o m p u t e rs c i e n c e n a m e :r o n gz h e n b a n g s u p e r v i s o r :c h e nj u - h u a a b s t r a c t s o f t w a r ep r o j e c tr i s ki st h ek e ye l e m e n tt h r e a t e n e dt ot h es u c c e s so ft h ep r o j e c t t h es u c c e s so fs o r w a r ep r o j c c td e p e n d so nn o to n l ya d v a n c e dm e t h o d sa n dt o o l so f s o f t w a r e d e v e l o p m e n t ,b u t a l s oo ns u c c e s s f u l p r o j e c tm a n a g e m e n t s u c c e s s f u l s o f t w a r ep r o j e c tm a n a g e m e n tc a n n o te x i s tw i t h o u tr i s km a n a g e m e n t i fr i s ke v a l u a t i o n w a sa p p l i e dt os o f t w a r ep r o j e c tb e f o r ei t sa c t u a l i z a t i o n ,i tw o u l db eh e l p f u lt ot h e s u c c e s so ft h ep r o j e c t b yf a r , t h er e s e a r c ho fs o f t w a r er i s km a n a g e m e n ti nc h i n ai s s t i l lu n d e r w a y ;t h ed e v e l o p m e n to fs o f t w a r er i s km a n a g e m e n tw i l ln o to n l yh a v eg r e a t r e s e a r c hs i g n i f i c a n c e ,b u ta l s oh a v eaf a r - r e a c h i n gi m p a c tt ot h es o f t w a r ei n d u s t r yi n c h i n a t h i sp a p e ra i m sa tt h er e l a t i o n s h i pb e t w e e nt h er i s kf a c t o r sa n dt h eo u t c o m eo f s o f t w a r ep r o j e c t f i r s t l y , b a s e do nt h ed o m e s t i ca n df o r e i g nr e f e r e n c e s ,as o f t w a r er i s k m o d e li n c l u d i n g3 6f a c t o r si sc o n c l u d e d s e c o n d l y s o m ee x p e r i e n c e dp r o f e s s i o n sa r e a s k e dt oa n s w e raq u e s t i o n n a i r ea b o u ts o f t w a r ep r o j e c t t h i si st h es o u r c eo ft e s td a t a l a s t l y , m i x e da n nm o d e li sd e s i g n e dt oe v a l u a t et h es o f t w a r er i s k i no r d e rt o m i n i m i z et h ec o r r e l a t i o no ft h ef a c t o r sa n dt h ec o m p l e x i t yo ft h em o d e lp c ai s i n t r o d u c e dt ot h em o d e l c o n s i d e r i n ga n ni sh a r dt od e s i g nt h en e t w o r ks t r u c t u r ea n d s e tt h ei n i t i a lw e i g h ta n dt h r e s h o l d ,g ai sa d o p t e dt oi m p r o v et h i sf i m i t a t i o n t h e r e s u l ts h o w st h a tm i x e da n nm o d e lc a ni n c r e a s et h ea c c u r a c yo fs o f t w a r er i s k e v a l u a t i o n k e yw o r d s :s o f t w a r er i s ke v a l u a t i o n , p r o p a g a t i o n ,g e n e t i ca l g o r i t h m s p r i n c i p a lc o m p o n e n t sa n a l y s i s ,b a c k 第1 章引言 软件项目开发失败对全世界的软件企业和软件组织来说,是一件经常发生的 事情。每年伴随着软件项目失败的代价是数以百万美金计算的金钱损失,并且在 大多数情况下,使公司的f 常运作陷入困境。软件开发项目是一项风险很大的活 动,因此软件企业必须采取相应的风险管理办法来防止丌发失败所造成的严重后 果。 1 1研究意义 2 1 世纪的主要特征之一将是社会的全面信息化和计算机的极大普及应用。 但是,如何高效、高质量地开发计算机软件至今仍然是妨碍计算机广泛应用的一 个瓶颈。研究新的软件开发方法、技术和工具以提高软件的生产率和质量一直是 软件工程研究的热点。直到2 0 世纪8 0 年代中期,软件工程研究人员大都还认为 “只要有好的软件开发方法和工具就可开发出高质量的软件,并且就能提高软件 的生产率”。但是,历史上很多大型软件系统的开发经验和教训表明,事隋并不是 那么简单【“。由于缺乏有效的软件风险管理方法,无论在国内还是国外,软件开 发项目成功率仍然不高,项目往往在工期、费用或性能上超出人们的预期。到目 前为止,我国对软件风险管理的研究仍然处于一个起步阶段,开展软件风险管理 研究不仅具有很大的研究意义,而且对我国软件业的发展具有深远的现实意义。 1 1 1 理论意义 软件项目与传统的基础性项目不一样。传统性项目都有一套既定的模式,只 要按照该模式办事,一般都能取得成功。但是与传统性项目相比,软件项目具有 以下特点。 第一,软件项目更多的是强调人的因素,而人的因素是很容易受到外界影响 的。软件工程领域的很多标准都是建立在实践经验的基础上的,所以不可避免地 带有一定的主观因素。这些标准与现实的偏差,给软件项目的成功带来了很大的 不确定性,因此也增加了软件风险管理的必要性。 t 1 山大学硕士学位论文 第1 章引卉 第二,软件项目具有独特性。传统的建筑项目,一般根据建筑图纸来施工就 可以j i l 哽n 完工,而且在图纸设计完成之后,基本上没有额外的需求,所以传统项 目的成功率是比较高的。相对传统项目来说,软件项目的设计更加复杂和困难, 根据不同用户的需求,开发出不同的产品。并且用户的需求在项目进行的任何阶 段都有可能改变,这就增加了丌发成功的风险。因此,严格来说,不存在着两个 完全相同的项目。 第三,软件项目是很难预见的。传统的项目都是实实在在的,可以看得见摸 得着的,项目实施过程都是可以监督的,比如说建筑项目的实施进度。但是,软 件是人脑力劳动的产品,软件项目从设计到编码都是在人脑中进行的,是没法用 肉眼看出来的,因此软件项目带有一定的风险。 1 1 2 现实意义 软件项目开发具有很高的失败率。s t a n d i s hg r o u p 对美国超过8 0 0 0 个民用军 用的各种软件项目的调查结果显示,1 9 9 6 年,2 0 0 0 年和2 0 0 4 年的软件项目的成 功率分别为2 7 ,2 8 年12 9 ,其他则部分或者完全失败【2 l 【”,如表1 所示。可 见软件项目的开发是高风险的。 表1 - 1 历年软件项目完成情况 概率 1 9 9 4 年1 9 9 6 芷 1 9 9 8 年 2 0 0 0 盆2 0 0 4 住 成功率 1 6 2 7 2 6 2 8 2 9 部分失败率3 l 4 0 2 8 2 9 5 3 完全失败率5 3 3 3 4 6 4 3 1 8 河南科技大学的方德英在他的博士论文里面总结了1 9 7 6 年至2 0 0 1 年美国、 中国和欧洲三个地区l t 项目的失败比率【4 】。最后得出的结论是:即使把i t 项目 风险哪怕只降低1 ,产生的实际效益也相当可观的。可见风险管理在软件开发 中的重要性。在软件项目开发的早期采取有效的风险分析方法来预测风险是项目 成功的关键。 1 2国内外研究现状 软件项目风险管理的理论始创于国外,我国在此领域的研究起步较晚,还远 不成系统。 2 中山大学硕士学位论文第1 章引言 在1 9 9 9 年之前,国内尚没发现有关软件风险管理领域的文章。从1 9 9 9 年开 始才陆续出现关于这方面的研究,直到最近两三年数量才开始增多。这些文章以 综述性的研究居多,对方法、模型和工具的研究较少。在国内软件风险管理领域, 河南科技大学管理学院的方德英是成果最多的学者之一。他在天津大学的博士论 文是国内比较全面的一篇关于软件项目风险管理的综述性的论文,并且他发表了 多篇关于信息项目监理机制,信息系统理论体系建构等方面文章。 但是,国外对该领域的研究比较成熟。1 9 8 9 年,软件风险管理之父b o e h m 将风险管理的概念引入软件界,从而奠定了该领域的理论基础【5 l 。同一年c h a r e t t e 从不同角度也构造出了类似的风险管理结构f “。软件工程研究所( s o f t w a r e e n g i n e e ri n s t i t u t e ,s e i ) 是1 9 9 0 年以来研究和实践软件风险管理的最大基地,是 软件工程研究与应用的权威机构,旨在领导、改进软件工程实践,提高以软件为主 导的系统的质量。i e e e 于2 0 0 1 年制订了i e e e1 5 4 0 2 0 0 1 标准【”,结合软件生命 周期模型给出了风险管理过程规范。这个过程适合于软件企业的软件开发项目也 可以应用于个人软件开发。虽然这个标准是用来管理软件项目的风险,但也同样 适用于管理各种系统级和组织级的风险。能力成熟度模型集成【8 】( c a p a b i l i t y m a t u r i t ym o d ei n t e g r a t i o n c m m i ) 是由s e i 在能力成熟度模型( c a p a b i l i t y m a t u r i t ym o d e ,c m m ) 基础上发展而来,并在全世界推广实施的一种软件能力成 熟度评估标准,主要用于指导软件开发过程的改进和进行软件开发能力的评估。 风险管理过程域是在c m m i 第三级一己定义级中的一个( 第十个) 关键过程域 ( k e yp r o c e s sa r e a ,k p 柚。 表1 2 是最近几年来国内外在软件风险管理领域内发表的文章数目的一个不 完全统计。从该表可以看得出来,2 0 0 2 年之前,我国对软件风险管理领域的研 究比较少,但是2 0 0 3 年之后的研究还是明显有上升的趋势。其中,国内的数据 来自中国期刊网,维普资讯和万方数据库。国外数据来自下列数据库:i e e e , a c m ,e b s c o h o s t ,s p r i n g e r ,a b i ,e l s e v i e r 等。 表1 - 21 9 9 9 - 2 0 0 5 年国内外软件项目风险管理论文对照( 不完全统计) 数量1 9 9 9 年 2 0 0 0 芷 2 0 0 1 年 2 0 0 2 正 2 0 0 3 缸 2 0 0 4 篮2 0 0 5 芷 国内 1031 01 22 02 3 国外 3 94 04 86 2 5 7 8 04 2 3 - 山大学硕士学位电文 第1 章引言 1 3本文的主要研究内容 1 3 1 研究目的和内容 面对如此高的软件项目失败率,软件界迫切需要引入科学、系统的风险管理 方法。但是我国的软件行业起步得比较晚,各个领域的研究还很不成熟,对软件 风险的研究则更为缺乏。风险管理可以控制软件项目的进度、成本和质量,提高 用户的满意度,增强客户的竞争能力,提高项目收益。如何币确理解实际过程中 各种风险因素对项目进度、成本和质量的影响非常重要。本文的研究目的和内容 在于: ( 1 ) 软件项目风险因素识别:在前人研究的基础上,通过阅读大量国内外参 考文献,总结归纳出一个包括3 6 个风险因素的软件风险分类模型。 ( 2 ) 风险评估问卷调查:通过对软件开发项目有深入接触的从业人员进行问 卷调查,得到软件风险因素预防和控制程度列表以及项目最终产出情况。 ( 3 ) 风险评估学习:运用数据挖掘和机器学习的方法建立混合神经网络评估 模型,并且通过实际数据对模型进行训练和验证。 1 3 2 研究对象 本文的研究对象为软件开发项目,包括管理信息系统、系统软件、军事软件、 商业软件和外包软件的开发项目。 1 3 3 研究特色 软件风险管理在国内属于刚起步阶段,这些研究为企业成功开发软件项目提 供了一个很好的辅助作用。但是就目前的研究现状和研究水平来说,还是没法满 足人们的需求。虽然如此,软件风险管理的研究已经在国内有了一个良好的开始, 并且朝着正确的方向不断地努力和发展。本文将对该领域的研究起到一个添砖加 瓦的作用。 首先,在风险因素的识别上,尽可能包含跟软件活动密切相关的风险因素。 其次,风险因素之间可能存在相关性,采用统计学的主成分分析法( p r i n c i p a l c o m p o n e n t sa n a l y s i s ,p c a ) ,有利于减少因素相关给模型带来的不利影响,并且 4 中山大学硕士学位论文第1 章引言 可以起到降维的作用,将复杂的问题简化。最后,考虑到标准的神经网络b p 算 法容易陷入局部最优,引入遗传算法可以使b p 算法收敛到全局最优。 1 3 4 论文框架 本文总体结构分成六部分: 第1 章:讲述了软件风险管理的理论意义,现实意义,国内外研究现状;介 绍了本文的研究对象和研究特色,摄后是本文的框架。 第2 章:总结了软件风险管理的理论基础,给出了风险和风险管理的定义, 介绍了软件风险管理的基本内容。 第3 章:陈述了本次研究的思路,包括软件风险分类模型设计,问卷调查和 评估方法。 第4 章:介绍了本文用到的三种技术,包括主成分分析,神经网络b p 算法 和遗传算法,最后给出了本文的主要算法流程。 第5 章:这是本文的重点。详细描述了本次实验的主要过程,包括数据预处 理,风险评估,模型训练、验证和分析。 第6 章:总结了本文的主要工作,并指出以后需要改进的地方。 第2 章软件风险管理理论基础 软件风险管理不仅是实践性很强的学科,l 司时也离不开相关的理论基础。在 1 9 8 9 年,软件风险管理之父b o e h m 就将风险管理的概念引入软件界,从而奠定 了该领域的理论基础1 5 i 。本章首先介绍风险管理的相关概念,然后介绍一下现有 的经典风险管理体系。 2 1基本概念 2 1 1 软件风险的定义 在高级汉语词典中,风险的意思是指危险或者是遭受损失、伤害、不利或毁 灭的可能性。但是软件风险跟一般风险的概念略有不同。b a r k i 等【9 l j 备软件项目 风险定义为软件项目开发过程中不确定性的产物和项目失败造成损失的程度。软 件开发项目过程中的不确定性被归结为威胁项目成功的因素。g l u t c h 1 0 】认为风险 是异常失败事件和该失败对系统操作者,用户或者环境造成的后果。风险的范围 可以大到灾难性的也可以小到从微乎其微。w i e g e r s i “】将风险简单定义为影响项 目成功的但是还没有发生的问题。这些可能的问题对项目成本、进度、性能或者 开发团体的士气都有负面的影响。 尽管在表达上略有不同,但是这三个定义都有一个共同点,就是不确定性可 能对项目成功造成损失。换句话况,如果不清楚风险的构成因素和风险管理策略, 对任何人来说都不是一个好消息。 2 1 2 软件风险管理的定义 为了提高软件开发的成功率,计算机科学家将风险管理引入了软件工程领 域。软件项目风险管理成为了减少项目失败的一种机制。 软件风险管理的倡导者b o e h m l l 2 1 和c h a r e t t e l 6 】认为,如果将注意力更多地投 入到高风险元素的识别和解释上,很多软件项目的失败就可以避免。 s e i 1 3 1 认为,风险管理是项目中带有过程、方法和工具的管理风险实践,它 6 中山大学硕士学位论文第2 章软件风险管理理论撼础 建立了预先决策的规范环境,使得:( 1 ) 连续地评估什么可能会出错( 风险) ;( 2 ) 明确了哪些风险因为重要而需要处理;( 3 ) 实施处理这些风险的战略。 目前,关于风险管理最流行的观点是将其分成两个步骤来实施:风险评估和 风险控制【1 4 】。风险评估包括识别影响项目成功的可能性因素。风险控制包括应付 已发生风险的方法。 2 2经典风险管理体系 2 2 1b o e h m 体系 b o e h m 于1 9 9 1 年详细描述了他的思想体系【1 4 】。b o c h m 认为:软件风险管理 这门学科的出现就是试图将影响项目成功的风险形式化为一组易用的原则和实 践的集合,是在风险成为软件项目返工的主要因素并由此威胁到项目的成功运作 前,识别、描述并消除这些风险项。他将风险管理过程归纳成二个基本步骤:风险 评估和风险控制。其中风险评估包括风险识别、风险分析、风险排序;风险控制 包括制定风险管理计划、解决风险、监控风险。如表2 - 1 所示。 表2 - 1b o c h m 软件风险管理体系 阶段步骤含义 风险识别找出项目特定的风险事件清单 风险 估计 风险分析评估风险事件的概率和后果:评估风险事件交互作用形成的组合风险 风险排序产生识别出的并经过分析了的有序风险事件清单 编制风险 编制处理各个风险事件的计划 风险 管理计划 综合个别风险事件计划形成总体计划 控制 风险解决确定化解和消除风险的环境和活动:跟踪风险解决过程 风险监督为进一步细化排序和计划提供反馈信息 b o c h m 风险管理理论的核心是维护和更新十大风险列表。他通过对一些大 型项目进行调查总结出软件项目十大风险列表,其中包括( 1 ) 人员短缺;( 2 ) 不切 实际的进度和预算:( 3 ) 不合时宜的需求;( 4 ) 开发了错误的软件功能:( 5 ) 开发 了错误的用户界面;( 6 ) 过高的非实质性能要求;( 7 ) 连续不断的需求改变;( 8 ) 可外购部件不足:( 9 ) 外部已完成任务不及时;( 1 0 ) 实时性能过低和计算机能力 有限。在软件项目开始时归纳出当前项目的十大风险列表,在项目的生命周期中 定期召开会议去对列表进行更新、评比。十大风险列表是让高层经理的注意力集 7 中山大学硕士学位论文第2 章软件风险管理理论蟮础 中在使项目成功的关键路径上,可以有效地管理风险并减少高层的时间和精力。 2 2 2 c h a r e t t e 体系 1 9 8 9 年c h a r e t t e l 4 删【1 5 】设计了称为风险分析和管理的体系,两大阶段分别为 风险分析阶段和风险管理阶段,每个阶段都包含三个过程,如表2 2 所示。每个 阶段内的过程活动并不能完全分离,有相互重叠甚至交错反复的现象。c h a r e t t e 同时为各个过程提供了相应的战略思路、方法模型和技术手段,特别在风险的识 别和估计过程中,其中大多数是运筹学、系统科学中的模型应用。 表2 - 2c h a r e t t e 风险分析和管理体系 阶段过程含义 识别从风险分类结构入手识别风险 风险 估计 确定识别出风险的发生概率和发生厉果;从信息的价值山发,估计是否有 分析 必要为此取得更多的信息 从成对风险、组合风险到系统风险。综合度量各风险网素与参照层次相 评价 比较确定风险当虽,最j i 彳排序各个风险因素 计划 选择决策方案的行动路线,确保行动路线不影响其它决策;依据路线选择 风险 风险规避战略 管理 控制计划的执行机制,涉及资源分配年【j 必要时的计划变更 监督检查决策的后果,寻求故进行动计划的机会,反馈执行状态 c h a r e t t e 体系从结构上和b o e h m 体系非常类似,只是在表达方面上略有不 同,两者不同的就是c h a r e t t e 体系认为风险管理是一个不断循环的过程,因此其 六个步骤的关系应当是重叠并交错反复的。同时,c h a r e t t e 认识到风险的投机性, 从步骤上强调了对组合风险的评价,但是对如何获得单一风险估计值,还缺乏可 行的手段和措施,在实施上还无法看到真正的效用。同时在考虑风险因素的效用 问题上,只考虑到目标效用,没有对项目参与双方人的因素进行详细的研究。 2 2 3s e i 体系 s e l l 4 1 在软件风险管理方面作了大量的工作,1 9 9 9 年前后分别以技术报告和 手册等形式公布了基于分类的风险辨识0 6 1 ( t a x o n o m y b a s e dq u e s t i o n n a i r e , t b q ) 、连续风险管理( c o n t m u o u sr i s km a n a g e m e n t ,c r m ) 、软件风险评估f 1 3 1 ( s o f t w a r er i s ke v a l u a t i o n ,s r e ) 、软件采购风险管理成熟度模型 1 a l ( r i s k m a n a g e m e n tc a p a b i l i t ym a t u r i t ym o d e l , r m c m m ) 和团队风险管理( t e a mr i s k 中山大学硕士学位论文第2 章软件风险管理理论基础 m a n a g e m e n t ,t r m ) 。完整思想是以t r m 为框架,贯穿c r m 思想,依托s r e 过程,以t b q 等为基本手段,配合软件能力成熟度模型( s o f t w a r ec a p a b i l i t y m a t u r i t ym o d e l ,s w = c m m ) 和软件获取能力成熟度模型( s o f t w a r ea c q u i s r i o n c a p a b i l i t ym a t u r i t ym o d e ls a - c m m ) 完成软件的风险管理。s r e 过程控制分为合 同签订,风险辨识和分析,中间报告,缓和战略计划和最终报告5 个阶段。如图 2 1 所示。 m o d e l s 模型 p r a c t i c e s 实践 c o b s t r u c t s 构建 厂百而匦匦f 、 基于生命周期 图2 - 1s e l 软件项目风险的方法框架 其中c r m 模型的思想如图2 2 所示。其风险管理原则是:不断地评估可能 造成恶劣后果的因素:决定最迫切需要处理的风险:实现控制风险的策略;评测 并确保风险策略实施的有效性。c r m 模型要求在项目生命周期的所有阶段都关 注风险管理,它将风险管理划分为五个步骤:风险识别、分析、计划、跟踪、控 制。它强调的是对风险管理的各个组成部分的通讯。 图2 - 2s e i 连续风险管理模式 s e i 体系最明显的特点就是可操作性,注重了与软件开发过程的紧密结合。 体系中的理性思考都以指导实践为主要目的,基本上摒弃了复杂的数学运算。其 设计的1 9 4 个揭示风险的问题,详细地描述了各项实施的场景,有些活动甚至规 9 中山大学硕十学位论文 第2 章软件风险管理理论基础 定需要在多少时间内完成。该体系的管理步骤多于技术、方法和工具,可以看出 主题思想是以简单的学术背景要求和方便的日常事务应用,加上严格的管理规定 达成软件项目风险管理的效果1 1 5 】。 2 2 4i e e e 体系 i e e e l 7 1 风险管理标准定义了软件开发生命周期中的风险管理过程。这个过程 既适合于软件企业的软件开发项目,又适合于个人软件开发。虽然这个标准是用 来管理软件项目的风险,但也同样适用于管理系统级和组织级的风险。这个风险 管理过程是一个持续的过程,它系统地描述和管理在产品或服务的生命周期中出 现的风险。它包括以下活动:计划并实施风险管理,管理项目风险列表,分析风 险,监控风险,处理风险,评估风险管理过程。风险管理过程如图2 3 所示。 图2 - 3i e e e 风险管理过程模型 图2 4c m m i 风险管理体系 1 0 一 堡黢 险程一风西一理 照墼 和措焉 一策一 一 堕 一 要一 一 需一 l 中山大学硕士学位论文第2 章软件风险管理理论基础 2 2 5c m m i 体系 c m m i 是由s e i 在c m m 基础上发展而来,并在全世界推广实施的一种软件 能力成熟度评估标准,主要用于指导软件开发过程的改进和进行软件开发能力的 评估。风险管理过程域是在c m m i 第三级一已定义级中的一个关键过程域。 c m m i 认为风险管理是种连续的前瞻性的过程。它要识别潜在可能危及关键 目标的因素,以便策划应对风险的活动和在必要时实施这些活动,缓解不利的影 响,最终实现组织的目标【1 9 】。 c m m i 的风险管理被清晰地描述为实现三个目标,每个目标的实现又通过 一系列的活动来完成,如上图2 - 4 所示。 2 2 6 风险管理体系比较 以上介绍的是自从风险管理概念引入到软件业以来国际上出现的一些经典 的软件风险管理模型,表2 - 3 是对这些模型的对比分析。 表2 - 3 经典风险管理模型对比 模型特点模型复杂度模型核心活动 b o e h m 识别、维护十大风险列表低风险识别 c h a r e t t e 风险分类低风险识别 s e l c r m持续风险管理,强调对风险的沟通低沟通 持续风险管理;持续改进;高层管理者制订 既e 由 风险管理描述表 标准;可以管理项目级或组织级风险 c m m i 持续的、前瞻性的风险管理;持续过程改进 由 风险库 2 3风险因素识别综述 风险管理的首要任务是确定风险源。只有确定了风险的源头,才能采取进一 步的方法来控制风险。风险识别最终要求得到一份风险清单,而主要的问题在于 如何能够使所有合理有用的风险充分暴露出来。风险识别通常采用定性的识别方 法,采取头脑风暴法,s w o t 分析和危害场面假想等方法结合使用来确保特定风 险源的识别和汇聚。其它的方法还包括因果关系映射,列表和调查表,p e e r 会 谈,文献调查。关于这些方法的详细说明,可以参考j o h nm c m a n u s 在2 0 0 4 年出 版的r i s km a n a g e m e n ti ns o f t w a r ed e v e l o p m e n tp r o j e c t s 一书 2 0 l 。 b o e h m 在他的风险管理体系里面提到了一个十大风险列表,该列表是让高 1 1 中山大学硕士学位论文第2 章软件风睑管理理论基础 层经理的注意力集中在使项目成功的关键路径上,可以有效地管理风险并由此减 少高层的时问和精力。s e i 的c a r t 等l ”】在1 9 9 3 年提出了基于分类的风险识别方 法,并设计了一份包含1 9 4 个问题,用于揭示项目风险的软件风险调查问卷。该 问卷涵盖了软件丌发方,软件采购方大部分的风险问题。s p r 的j o n e s l 2 1 l 在它的 著作a s s e s s m e n t a n d c o n t r o l o f s o f t w a r e r i s k s 里面提到了影响软件项目的6 0 个风 险因素。他按照医学的写作模式列出了每个风险的定义、严重程度、发生频率、 发生后果、感染情况和抵抗情况、产生的根源、前因后果、预防和控制方法。s p r 的风险清单是不可多得的风险识别资料。h o u s t o n l 2 2 l 在前人研究的基础上,通过 二次调查的方法得出了一份包含2 9 个风险因素的风险列表,其中不正确的成本 估计,需求不稳定,进度压力过大,人员流失,员工缺乏责任心和士气低落,缺 乏高级管理支持是其中六个最重要的风险因素。w a l l a c e 和k e i l 2 3 】在2 0 0 4 年发表 了一篇关于软件风险与产出的文章,其中列出了一个包括客户、需求、实施和环 境4 个分类,一共5 3 个风险因素的风险列表。x i a 和k e 【2 4 】在2 0 0 5 年提出一个 关于信息系统开发项目的复杂度模型,模型包括四个部分:结构组织复杂性,结 构i t 复杂性,动态组织复杂性和动态i t 复杂性,总共包括1 5 个风险因素。 2 4风险评估技术综述 1 风险评估方法 早期出现的估计方法大多以经验估计为基础【“。其中b a r k i 等9 1 在1 9 9 3 年发 表的关于软件开发风险评估的文章,把所有的不确定性都看成是风险因素,再把 风险产出统一为导致项目失败的程度。他们经过对加拿大7 0 个软件组织,1 2 0 个软件项目的项目成员进行调查和分析,筛选出3 5 类1 1 4 项风险因素,最后借 用回归分析等数学工具来评估方法的可靠性和有效性。 随着评估经验的积累,特别是软件项目管理的逐渐规范,不少研究开始转向 依靠历史数据而不只是专家经验上【4 l 。k a r o l a k l 2 5 1 在1 9 9 6 年提出了s e r i m 方法, 这种方法的特点在于从多个角度对软件开发中的风险因素进行了评估,并可在开 发周期的任何时候根据评估结果监控风险。k o n t j o l 2 6 】在1 9 9 7 年提出了r i s k i t 方 法,该方法旨在对风险的起因、触发事件及其影响等进行完整的体现和管理,并 使用合理的步骤评估风险。r i s k i t 方法将近乎完美的理论溶入可靠的过程和技术。 】2 中山大学硕士学位论文第2 章软件风险管理理论基础 根据在一些组织中的研究调查显示,r i s k i t 方法在实践中被认为是可行的,它可导 致更详细的风险分析和描述,也可以改善风险管理过程的结果f 2 7 】。y a c o u b 等田1 推崇客观评估方法,他们认为,评估应该基于产品的属性,而不仅仅是专家的经 验,所以必须尽可能地采用项目度量体系得到的量化数据,掌握好风险评估的时 机。s e i 在1 9 9 9 年提出的全面的风险管理方法以t r m 为框架,贯穿c r m 思想, 依托s r e 过程,以t b 0 等为基本手段,配合软件能力成熟度模型( s w - c m m ) 和软件获取能力成熟度模型( s a - c m m ) 完成软件的风险管理,是一种目前比较流 行的方法。 2 风险评估工具 评估工具是常常伴随着评估方法以系统整体的形式出现。评估技术很多都是 定性的。最常见的评估技术包括贝叶斯网络1 2 9 1 1 3 0 3 ”,影响图【3 2 】例,神经网络【”, 决策树,系统动力学。其它的定性工具【4 】【2 0 】还有很多,如关键路径法( c r i t i c a lp a t h m e t h o d ,c p m ) ,甘特图( g a n t tc h a r t ) ,计划评审技术( p r o g r a me v a l u a t i o na n d r e v i e wt e c h n i q u e p e r t ) ,图形评审技术( g r a p h i c a le v a l u a t i o na n dr e v i e w t e c h n i q u e ,g e r t ) ,p e r t r i 网络,投资回报法( r e t u r no ni n v e s t m e n t ,r 0 1 ) ,故障 模式和效果分析( f a i l u r em o d ea n de f f e c ta n a l y s i s ,f m e a ) ,风险组合分析( r i s k p r o f i l ea n a l y s i s ) ,符号模型( s y m b o l i cm o d e 曲,概率分析( p r o b a b i l i t ya n a l y s i s ) , 结果分析( c o n s e q u e n c ea n a l y s i s ) ,蒙特卡洛分析( m o n t ec a r l oa n a l y s i s ) ,风险和 投资决策( r i s ka n di n v e s t m e n td e c i s i o nm a k e ) ,净现值( n e tp r e s e n tv a l u e ) ,成本 价值分析( c o s t b e n e f i ta n a l y s i s ) ,定性市场研究( q u a n t i t a t i v em a r k e tr e s e a r c h ) 。 第3 章研究思路设计 本文研究的对象是软件开发项目。运用混合神经网络模型,通过历史数据的 训练,拟出项目风险因素和项目产出之间的复杂关系。在此基础上,利用训练完 成的混合神经网络模型对软件开发项目进行有效的风险评估。 为了进行有效的风险评估,首先必须确定软件项目的风险源。第二章已经介 绍了很多风险泌别的方法,考虑到人力和时间的限制,本文采取历史文献学习的 方法来收集软件项目风险因素。通过广泛阅读国内外软件风险领域的相关文献, 并参考了国外软件工程界( s e l 和s p r ) 的优秀成果,经过归纳总结,将软件项目 风险分成五类,包括了3 6 个风险因素。这就是调查问卷的主要依据。浚分类方 法主要参考了s e l l “】基于分类的风险识别方法和w a c e 【3 5 】的分类方法,下面首 先简要介绍一下这两个分类方法,然后给出本文的分类模型,最后引入本文的评 估方法。 3 1 软件风险分类模型 c a r r 等在1 9 9 3 年提出了基于分类的风险识别方法,他们将软件风险归为三 大类:产品工程类,开发坏境类和外部约束类。每个类又细分为不同的元素,每 个元素又具有不同的属性。图3 - 1 显示了s e l 分类的一个二级结构。 这个分类方法既包括开发方的风险,又考虑了采购方的风险。其中开发方的 风险包括了产品工程类和开发环境类。而且c a r r 等提供了一个包括1 9 4 个问题 的风险调查问卷,基本上涵盖了软件开发项目的风险。 w a l l a c e 在她的博士论文中提出了一个软件项目风险模型,她将软件项目风 险分成6 个部分,分别是团队风险,组织环境风险,需求风险,过程管理风险, 用户风险和复杂性风险。该分类在某种程度上可以看成是s e i 模型的一种简化。 它将需求分析的风险取代了软件开发生命周期的其它方面,本文认为,虽然需求 分析阶段在软件开发中的作用很重要,但是设计、编码、测试和维护等阶段也是 不可忽视的。 , 虽然s e i 的分类非常全面,对每一个细节都有具体的规定,但是因为模型比 1 4 中山大学硕士学位论文 第3 章研究思路设计 较庞大和烦琐,实际操作起来有些困难。在参考s e i 和w a l l a c e 的模型的基础上, 本文提出一个3 层的分类模型,软件项目风险分成5 类:客户方风险,开发团队 风险,项目工程风险,项目管理风险和技术复杂性风险。 图3 - 1s e i 软件开发风险二级结构 客户方风险是指软件采购方对软件项目外包进行一系列的管理活动中存在 的不确定性因素。软件的开发根源于客户的需求。没有客户方的采购,开发商的 工作就是失去了存在的意义。同时,软件开发是根据需求来开展的,而需求又是 可以随时变动的,因此软件开发必须要求客户方的积极参与。并且客户方代表必 须具备一定的业务知识,能够跟开发商进行及时的沟通,这样有利于避免双方的 误会。如果软件项目影响到客户方关键部门利益的时候,客户代表会产生抵触情 绪,不利于项目的顺利实施。 项目团队风险是指软件项目开发团队对项目产出所带来的不确定性因素。软 件开发是智力密集型的活动,人为因素影响特别严重。人是容易受到外界的影响, 因此必须考虑到开发人员的士气和由此而来的人员流失的影响。软件项目开发离 不开经验丰富的项目经理和开发团队的核心骨干,他们的存在是项目成功开发的 重要保证。软件开发又是一项工程性的团队合作性项目,必须依靠开发团队通力 合作,因此,有效的沟通渠道是必不可少的。 一 - 山大学硕士学位论文第3 章研究思路设计 项目技术风险是指项目开发团队外部的客观存在的技术复杂度对项目的工 程实现造成的外部困难。项目成功的难易程度和项目规模,项目实施难度是相关 的。一般来说,项目规模越大,性能要求越高,其成功的难度也越大。 项目工程风险是指完成递交给用户的软件产品所进行的工程活动中存在的 风险,包括工程的需求,设计,实现、测试和工程文档,以及相应的工程确认与 验证活动。需求阶段的风险是软件项目中最严重的风险。需求的准确性,清晰性 和稳定性对以后的设计和编码阶段影响是至关重要的。为了获得正确的软件需 求,项目的所有干系人必须参与到需求的分析上。同时,软件丌发方法和开发模 型的选取,软件测试和可维护性等都会对项目的产出带来影响。 项目管理风险是指为完成软件产品所进行的一系列的项目管理和控制存在 的风险,包括对资源的估计,计划,并按照计划进行控制和跟踪质量保证,以及 管理支持活动等。 通过参考国外文献,可以收集到一个超过一百个风险因素的清单,但是由于 不同学者对同一风险因素的表达不一定相同,并且不同风险因素对项目产出的影 响程度也不尽相同。基于这两个原因,本文要在不失全面性的情况下,将冗余和 相对不重要的风险因素剔除。将各个风险因素按照分类模型进行归类,目的就是 为了更加完整地识别出风险,并不是为了表示同一类别下的风险具有相关特性。 而且,不同研究人员对软件风险分类标准不一样,软件风险因素在不同的分类标 准下所属的类别也不一样,该分类模型也不具有唯一性。分类模型中每个风险因 素详细的文献出处如表3 1 所示。 3 2调查问卷设计 调查问卷是以软件风险分类模型为基础的。问卷主要包括三个部分:基本情 况,项目产出情况以及各个风险因素在项目中的预防和控制程度。 基本情况包括调查者个人基本情况,项目基本情况和公司基本情况。这些基 本情况,有利于分析项目的规模和公司的成熟度。能收集到不同成熟度企业的数 据,对提高风险评估的准确性是很有帮助的。项目产出情况主要是关于项目进度, 成本和质量三个方面。项目有没有延期,有没有超过预计成本,开发产品的错误 率究竟有多高,这些指标都是软件工程研究的重点。最后是模型的各个风险因素 在具体项目中的预防和控制程度。关于问卷的详细内容,请参考附录1 。 1 6 中山大学硕士学位论文第3 章研究思路设计 表3 - 1 风险因素清单 分类风险因素参考文献 客户方风险( r 1 ) 项目的最终用户缺乏认同乖i 参与 【2 3 1 ( r 2 ) 项目对原有业务流程和管理体制的冲击 【1 5 】 ( r 3 ) 缺乏客户方决策层对项目的支持和介入 【1 5 2 3 2 4 3 6 l ( r 4 ) 客户关键部门利益冲突,消极抵制改革 【9 1 2 3 1 1 2 4 1 1 3 6 l ( r 5 ) 客户方代表缺乏业务知识 【2 3 1 1 3 6 】 项目团队风险 (

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论