(计算机软件与理论专业论文)基于贝叶斯网络的软件风险分析.pdf_第1页
(计算机软件与理论专业论文)基于贝叶斯网络的软件风险分析.pdf_第2页
(计算机软件与理论专业论文)基于贝叶斯网络的软件风险分析.pdf_第3页
(计算机软件与理论专业论文)基于贝叶斯网络的软件风险分析.pdf_第4页
(计算机软件与理论专业论文)基于贝叶斯网络的软件风险分析.pdf_第5页
已阅读5页,还剩52页未读 继续免费阅读

(计算机软件与理论专业论文)基于贝叶斯网络的软件风险分析.pdf.pdf 免费下载

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

文档简介

中山大学硕士学位论文基于贝叶斯网络的软件风险分析 基于贝叶斯网络的软件风险分析 计算机软件与理论唐军彪 指导老师:陈炬桦副教授 摘要 软件开发过程的不确定性,给客户方和承建方都带来了巨大的风险。如果能 够在项目事前和事中阶段对可能影响软件项目的成本,质量和进度的风险进行估 计和监控,则可以大大的减少风险带来的损失。贝叶斯网络是针对不确定推理的 理想工具,但是在软件项目的风险管理中给出准确的网络结构和条件概率表是解 决问题的难点和核心。 本文参考前人的调查结果来建立网络结构。我们首先根据文献中对因子重要 程度和相关事件的描述,对因子进行筛选,并用筛选得到的因子根据相关性对前 人的网络结构进行扩充,并使网络的结果输出结点统一为时间延迟,质量问题和 成本超支的概率分布。最终,根据因子的分类,我们建立了开发团队相关风险, 开发工程相关风险,项目环境相关风险,组织相关风险等4 个软件风险分析子网 络。综合4 个子网络的风险指标水平,便得到总体风险水平。 为了使分析模型具有更高的可信度,本文通过贝叶斯参数学习来获取条件概 率表。通过引入贝叶斯参数学习,能够根据样本数据进行学习并且更新条件概率 表初值,得到更客观的分析网络,并且能够在应用中不断地调整条件概率表,使 分析模型适应不断变化的软件项目开发环境。同时,本文在参数学习时引入e m 算法,提高对由于软件项目差异而存在隐含结点情况的处理能力。 通过实验,我们发现贝叶斯网络本身强大的分析推理给软件风险分析提供了 有力的支持。我们利用贝叶斯推理进行软件风险的预测,利用贝叶斯网络置信更 新功能进行软件风险的模拟和原因分析。为了获得完整的网络和验证分析模型, 我们进行了问卷调查。样本验证的结果表明,本文的分析模型具有较高的置信度。 关键字:软件风险管理,软件风险分析,贝叶斯网络,参数学习,e l 算法 a b s 兀u l c t s o f t w a r er i s k a n a l y s i su s i n gb a y e s i a nb e l i e fn e t w o r k c o m p u t e rs o f t w a r ea n dt h e o r yt a n gj u n b i a o s u p e r v i s o r :c h e nj u - h u a ,a s s o c i a t e dp r o f e s s o r t h eu n c e r t a i n t yd u r i n gt h ep r o c e s so fs o r w a r ep r o j e c td e v e l o p m e n tw i l lb r i n g h u g er i s k st oc o n t r a c t o r sa n dc l i e n t s 1 fw ec a nf m d a ne f f e c t i v em e t h o dt op r e d i c tt h e c o s ta n dq u a l i t yo fs o f t w a r ep r o j e c t sb a s eo l ls o m ef a c t sl i k et h ep r o j e c tc h a r a c t e ra n d t w o s i d ec o o p e r a t i n gc a p a b i l i t ya tt h eb e g i n n i n go ft h ep r o j e c t ,w ec a l lr e d u c et h er i s k b a y e s i a nb e l i e fn e t w o r k ( b b n ) i sag o o dt o o lf o ra n a l y z i n gu n c e r t a i nc o n s e q u e n c e s , b u ti ti sd i f f i c u l tt op r o d u c ep r e c i s en e t w o r ks t r u c t u r ea n dc o n d i t i o n a lp r o b a b i i i t y t a b l e i nt h i sp a p e r , w ec o n s t r u c t e dt h en e t w o r kb yr e f e r r i n gt h er e s u l to fo t h e r s i n v e s t i g a t i o n s w es e l e c t e dt h ei m p o r t a n tr i s kf a c t o r s , a n de x p a n d e do t h e r sn e t w o r k a c c o r d i n gt ot h e i rr e l a t i o n s h i p s i no r d e rt og a i nau n i f i e ds t a n d a r do ft h es o f t w a r er i s k , w em a d et h eo u t p u to ft h en e t w o r kt ob et h r e ef a c t o r s :q u a l i t y , s c h e d u l ea n dc o s t a c c o r d i n gt o t h ec a t e g o r yo fd i f f e r e n tr i s k f a c t o r s ,w ec o n s t r u c t e d4s u b o r d i n a t e n e t w o r k s :r i s ko ft h ed e v e l o p i n gt e a mn e t w o r k , r i s ko fe n g i n e e r i n gn e t w o r k , r i s ko f t h ep r o j e c te n v i r o n m e n tn e t w o r k ,r i s ko ft h eo r g a n i z a t i o nn e t w o r k t h ed e g r e eo ft h e w h o l ep r o j e c ti st h eu n i o no ft h er i s kd e g r e eo ft h e4s u b o r d i n a t en e t w o r k s i no r d e rt og a i nam o r ep r e c i s ec o n d i t i o n a lp r o b a b i l i t yt a b l e ,w eu s et h eb a y e s i a n p a r a m e t e rl e a r n i n g i tc a nl e a r na n du p d a t et h eo r i g i nv a l u eo ft h ec o n d i t i o n a l p r o b a b i f i t yt a b l ef r o mt h es a m p l ed a t aa n dm a k et h en e t w o r km o r es u b j e c t i v e a n di t c a na d j u s tt h en e t w o r kd u r i n gt h ea p p l i c a t i o n ,t h i sm a k et h en e t w o r km o r ea d a p t i v e w ei n t r o d u c et h ee ma l g o r i t h mi n t ot h ep a r a m e t e rl e a r n i n g ,a n dt h i s i m p r o v et h e n e t w o r k sa b i l i t yo fs o l v i n gt h es i t u a t i o nw h i c ht h en e t w o r kc o n t a i n sh i d i n gn o d e s a c c o r d i n gt ot h ee x p e r i m e n t s ,w ef m dt h a tt h es t r o n gr e a s o n i n ga b i l i t yo ft h e b b n p r o v i d e sag r e a ts u p p o r tt ot h es o f t w a r er i s ka n a l y z e w ei m p l e m e n ts o f t w a r e 中山大学硕士学位论文 基于贝叶斯网络的软件风险分析 r i s kp r e d i c t i o nu s i n gt h er e a s o n i n go fb b n m e a n w h i l e ,w ed e m o n s t r a t e dh o wt o s i m u l a t et h es o f t w a r er i s ka n df i n dt h er i s ks o u r c eo ft h ee x i t i n gr i s ke v e n t su s i n gt h e b e l i e fu p d a t i n ga b i l i t yo ft h eb b n w ed e l i v e r e daq u e s t i o n n a i r et oc o m p l e t et h e n e t w o r ka n dv a l i d a t et h ea n a l y s i sm o d u l e a n dt h er e s u l ts h o w st h a to u rm o d u l ei s a p p l i c a b l ea n db e l i e v a b l e k e yw o r d s :s o f t w a r er i s km a n a g e m e n t ,s o f t w a r er i s ka n a l y z e s ,b a y e s i a nb e l i e f n e t w o r k ,e ma l g o r i t h m i i i 中山大学硕士学位论文基于贝叶斯网络的软件风险分析 1 1 问题背景 第1 章绪论 软件系统本来是为了减少现实系统的不确定性而存在的,但其自身的产生过 程却充满了不确定性。单纯信息技术的发展不但没有减弱,反而还助长了这一现 象,特别随着应用的广泛和深入、随着项目规模的增大,这种现象更突出。 美国g a r t n e rg r o u p2 0 0 0 年1 1 月通过其下属t e c hr e p u b l i c 公司发表了有关 软件项目的调查结果。该调查以北美的1 3 7 5 个i t 专家实施问卷调查进行的。据此 调查,4 0 的项目是失败的。而早在1 9 9 5 年美国s t a n d i s hg r o u p 对涉及信息技术 的8 4 0 0 个项目进行统计,结果表明:3 4 的项目彻底失败;5 0 的项目需要补救; 只有1 6 的项目获得成功。所有项目中,有8 4 未能按时完成,超出预算或者不能 达到预定的目标n ,。 正是软件项目的高失败率引起了软件开发业界和学者们的关注,自1 9 8 9 年, b o e h m 等人提出软件风险管理以来,对软件风险管理的研究逐步升温。i e e e 的研 究认为:软件系统中5 0 7 0 的风险可以被检测到,9 0 的风险可以被避免,风险 管理的杠杆作用,一般的投资回报率是7 0 0 到2 0 0 0 ,风险评估中耗时、耗力的工 作可以借助软件包得到减轻“1 。 一方面,软件风险的普遍存在及其带来的巨大危害已经成为软件开发业界的 共识;另一方面,人们普遍认为引入风险管理,能大大地减少风险事件的发生或 减轻其后果。正是这两个方面的原因,使得软件风险管理的研究近年来在国内迅 速升温。据方德英等人的统计,截至在2 0 0 2 年,国内研究风险管理相关文献,包 括论文,学术报告和专著才11 篇。而根据我们不完全的统计,0 2 年以后相关文 献就达n 5 6 篇之多。方德英等认为由于目前我国软件项目的负责人普遍是信息技 术专家,而非项目管理专家,更缺少复合型人才,他们在实践中对项目风险的管理 多靠直觉和经验,缺乏主动的、有目的的、系统的风险管理思想指导“1 。这就更 显出在我国开展软件风险管理研究,提供具有较强可操作性的项目风险管理体系 的紧迫性。 第1 章绪论 1 2 软件风险定义 1 2 1 风险的基本概念 风险的概念由来已久。w i l l e t t 首次给出了风险的定义,指出风险是关于不 愿发生的事件发生的不确定性之客观体现“1 。而现代汉语词典把风险定义为“可 能发生的危险”,韦伯字典将风险定义为“遭到伤害或者损失的可能性”。由此可 见,风险的定义有许多种,有的着眼于结果,有的着眼于目标,有的着眼于心理, 根据不同的行业、不同的决策行为、不同的决策目标以及不同的风险成因,可以 分为具有特定内涵的各种风险”1 。主要可以归纳为以下4 种: 第一种是“不确定性”说。该学说认为当事件的结果存在不确定性时则该事 件为风险性事件。1 9 2 1 年,美国经济学家奈特( f hk n i g h t ) 教授认为,风险是可 测定的不确定性,而不可测定的不确定性才是真正意义上的不确定性”1 。 第二种是“变动”说。又分为变幅说和预期实际变动说两种。前者认为,当 事物的未来结果不固定或可能发生变化时,则存在风险:而后者认为,当实际结 果与预期结果不符时即存在风险,这主要来源于金融风险的研究。1 9 6 4 年,美 国明尼苏达大学的威廉姆斯( w i l lj a m s c a ) 和汉斯( h a s s r m ) 在其风险管理和 保险中分析了风险和不确定性,他们认为风险是在给定的情况下和特定时间内, 那些可能发生的结果之间的差异。他们也认为风险是客观的状态,而不确定性却 是认识者的主观判断n ,。 第三种是“概率”说。该学说认为事件的状态概率可测时则为风险事件,它 源于决策论。1 9 8 3 年,日本学者武井勋在其著作风险理论中,归纳了风险 定义本身应当具有3 个基本因素,即:风险与不确定性存在差异:风险是客观存在 的:风险是可测量的。阎春宁在风险管理学一书中认为风险就是特定的客观 情况下,特定的时期内,某一事件的预期结果和实际结果之间的变动程度的概率 分布。变动程度的期望值与方差越大,风险越大;反之,风险越小旧。 第四种是“可能性”说。认为风险是发生损失或失败的可能性。这源于经济 学关于风险的研究,也是最为人们所接受的风险定义。美国学者j o h nh a y n e s 认为风险意味着损害的可能性”。 虽然风险的定义很多,但是一般来说,风险是指损失的不确定性,它具体表 现为预期和结果之间的差距。要全面理解风险的含义,应当注意一下几点:第一, 2 中山大学硕士学位论文基于贝叶斯网络的软件风险分析 风险是与人们的行为相联系的,这种行为包括个人的行为,也包括群体或组织的 行为。而行为受决策左右,因此风险与人们的决策有关:第二,客观条件的变化 是风险的重要成因,尽管人们无力控制客观状态,却可以掌握客观状态变化的规 律性,对相关的客观状态作出科学的预测,这也是风险管理的重要前提:第三, 风险是指可能的后果与目标发生的负偏离,负偏离是多种多样的,且程度不同, 而在复杂的现实经济生活中,好与坏是很难截然分开,需要根据具体情况加以分 析。 项目风险指的是导致项目损失的不确定性。项目的一次性使其不确定性要比 其他一些经济活动大许多,因而项目风险的可预测性也就差很多“1 。它主要具有 以下一些特点: ( 1 ) 客观性和普遍性。作为损失发生的不确定性,项目风险是不以人的意志 为转移并超越人们主观意识的客观存在,而且在项目的全生命周期内,项目风险 是无所不在的。 ( 2 ) 某一具体风险发生的偶然性和大量同类风险发生的必然性。任一个具体 风险的发生都是在项目运行过程中许多风险因素和其他因素共同作用的结果,是 一种随机现象。而且每一因素的作用时间、作用点、作用强度等都必须满足一定 条件,才能导致项目风险事故的发生虽然个别风险事故的发生是偶然的、无序的、 杂无章的,但对大量同类风险事故资料的观察和统计分析,发现其呈现出明显规 律性,这就使得人们有可能用概率和损失程度去预测和把握,同时也导致项目风 险管理的迅猛发展。 ( 3 ) 可变性。是指项目运行的整个过程中,各种项目风险在质上和量上可变 的特性。随着项目的进行,有些风险会得到控制,有些风险会发生并得到处理, 同时在项目的每一阶段可能出现新的风险。 ( 4 ) 可测性。项目风险是不确定的,但这并不意味着人们对它的变化全然无 知。项目风险是客观存在的,人们可以对其发生的概率及其所造成的损失程度做 出主观判断,从而对发生的风险进行预测和评估。 1 2 2 风险的形式化定义 不确定性是风险的核心,而我们在考察风险时,通常关心的是:“发生的有 害事件是什么”、“事件发生的可能能性有多大”、“事件发生会引起什么后果”等 三个方面。基于此,k a p l a n 和g a r r i c k 认为,风险不是一个单一的数字,也不 第1 章绪论 是一条曲线或者一个向量,而应该是一个三元组的完备集,即 r ,m = c 墨,f ;,t ,) 。,其中,r 。代表风险,代表第i 个有害事件,f l 代表第f 有 害事件发生的几率( 1 i k e l i h o o d ) ,置表示第f 个有害事件的结果,是一种损失指 标:c 下标表示这个集合是一个完备集n 0 1 。集合中的元素,即三元组c 毛,f 。,t ,只 是风险的一个答案,整个集合才是全部风险。在1 9 9 7 年风险分析学会的大会报 告中,k a p l a n 进一步完善了这种完备集的定义1 。他从一百多年来学术界对概 率定义的争论出发,指出可能性有三种表达:频率、概率和频率的概率,其中频 率的概率是最有说服力、最适用的,基于此方面的认识,风险的形式化定义可以 转化为: r m = 毛,p i ( 毋) ,p f 瓴) ) 。 ( 1 1 ) 其中j i 仍然代表第f 个有害事件,竹为第f 个事件发生的频率,p 。( 劬) 代表第f 个 事件发生频率为竹的概率。p i “) 为第i 个事件的结果为t 的概率,它是一个向 量,与事件相关。这个完备集是对风险的一个形式化的定义,为后来基于概率的 风险分析方法提供了基础。 1 2 3 软件项目风险的特点 软件风险作为风险的其中一种,既有普通风险的特性,又有着自己的特征。 风险分析在工程领域已经得到广泛的应用,也相对比较成熟,但是软件项目的风 险分析却不能直接的套用其他工程项目的分析方法与模型。其原因也就在于软件 项目风险有着它自己的特点。 软件项目与其他项目相比,其目标并不是在项目一开始就很清晰的。往往是 随着需求分析的深入,设计,测试甚至是部署的进行,才使得目标逐步的清楚。 正是因为其目标的不确定性,导致了软件项目需求的变动比较频繁。软件项目是 “知识转移型”的,其知识密集的性质使得人的影响大大的增加。项目组成员的 构成、责任心、能力和稳定性对项目的最终质量和是否成功有重要的影响。 n o r m a nf e n t o n 提出,软件的错误是设计时期已经存在的,而不是因为软件 在使用过程中老化的结果“”。这个就是软件产品和其他一些产品的主要区别,如 4 中山大学硕士学位论文基于贝叶斯网络的软件风险分析 果它所依赖的软硬件环境不更换,它就不存在老化而出现风险的问题。我们主要 研究的是它在设计,开发,测试,部署等阶段的风险。也就是说,我们只要控制 好软件项目在这些阶段的风险水平,我们就可以大大的提高软件项目的成功率, 这也使得软件项目的风险管理比其他项目的风险管理具有更明显的效果。 1 3 文献综述 1 3 1 软件风险管理的发展和现状 b o e h m 在1 9 8 9 年提出了软件风险管理的概念“,奠定了该领域的理论基础, 被业界誉为软件风险管理之父。同期c h a r e t t e 从不同角度也构造出了类似的风险 管理结构。此后,软件风险管理吸引了越来越多的专家学者和研究机构的重视。 当然,软件风险作为普通工程风险的一种,其出现和发展和普通工程风险的发展 是分不开的。我们首先来看看工程风险管理的发展历程。 在软件项目也外,人们在一切社会经济活动中,都面临着各种各样的风险。 从总体上看,风险是一种客观存在,是不可避免的,而且在一定条件下还带有某 些规律性“。因此,人们只能把风险缩减到最小的程度,而不可能将其完全消除。 这就要求社会经济各部门、各行业主动地认识风险,积极管理风险,有效地控制 风险,把风险减至最低的程度,以保证社会生产和人民生活的正常进行。正是在 这样的背景下,随着生产力和科学技术的不断发展,风险管理学作为系统的科学 产生于本世纪初的西方工业化国家。 风险管理问题最先起源于第一次世界大战后的德国。1 9 3 1 年美国管理协会首 先倡导风险管理,并在以后的若干年里,以学术会议及研究班等多种形式集中探 讨和研究风险管理问题。风险管理问题逐渐得到了理论探讨和一些大企业的初步 实践,但风险管理问题真正在美国工商企业中引起足够的重视并得到推广则始于 5 0 年代。1 9 6 3 年,美国出版的企业的风险管理一文,引起欧美各国的普遍重 视。此后,对风险管理的研究逐步趋向系统化,专门化,使风险管理成为企业管 理中一门独立学科。 在西方发达国家,各企业都相继建立风险管理机构,专门负责风险的分析和 处理方面的工作。美国还成立了全美范围的风险研究所和美国保险与风险管理协 第1 章绪论 会等专门研究工商企业风险管理的学术团体,拥有3 5 0 0 多家大型工商企业会员。 风险管理协会的建立和风险管理教育的普及,表明风险管理已渗透到社会的 各个领域。美国的风险与保险管理协会( r i m s ) 和美国风险与保险协会( a r i s ) 是美 国最重要的两个风险管理协会。1 9 7 8 年日本风险管理协会( j r m s ) 成立。英国建立 有工商企业风险管理与保险协会( a i 跚i c ) 。风险管理方面的课程及论著数量大 增。7 0 年代中期,全美大多数大学工商管理学院普遍开设风险管理课。美国还设 立了a r m ( a s s o c i a t ei nr i s km a n a g e m e n t ) 证书,授予通过风险管理资格考试者。 协会的活动为风险管理在工商企业界的推广、风险管理教育的普及和人才培养诸 方面做出了突出的贡献。 1 9 8 3 年在美国风险与保险管理协会年会上,云集纽约的各国专家学者,讨论 并通过了“1 0 1 条风险管理准则”,作为各国风险管理的一般原则。这标志着风 险管理已经达到一个新的水平。1 9 8 6 年1 0 月在薪加坡召开的风险管理国际学术讨 论会表明,风险管理运动己经成为全球范围的国际性运动。 进入二十世纪九十年代后,随着计算机技术的飞速发展,软件产业获得了爆 炸性的增长,与此同时软件项目所涉及的不确定因素日益增多,面f 临的风险也越 来越多,风险所致损失规模也越来越大,这些都促使科研人员和实际管理人员从 理论上和实践上重视对软件项目的风险管理。软件项目风险管理与工程项目风险 管理相比起步较晚,相关的技术和标准还很不成熟,但是人们已极为重视对项目 风险管理理论的研究。在实践中,现已涌现出不少新一代面向项目的企业项目 型公司,国外甚至还出现了专门从事风险管理工作的所谓风险管理公司。 软件项目迫切需要加强风险管理,这主要表现在以下两个方面:第一,风险 管理方法的不断改进及其在许多典型项目中的成功应用吸引了许多项目组进行 自身风险管理。一方面,风险管理以对风险的预测、识别、评估和科学分析为基 础,为管理人员运用各种对策的最佳组合对风险进行全面、合理的处置提供了可 能性,是现代管理风险的种科学而直接的方法:另一方面,风险管理克服了那 种传统的以某种单一手段处理风险的局限性,综合利用各种控制风险的措施,并 使管理风险的方法日益完善,这些都使得越来越多的项目组自觉地争相采用风险 管理方法。第二,风险管理是各项目组的内在要求。由于软件技术的飞速发展和 软件系统在社会生产各方面的广泛应用,从而使各种风险因素及风险发生的可能 6 中山大学硕士学位论文基于贝叶斯网络的软件风险分析 大大增加,并且扩大了风险事件造成的损失规模,这就对各项目组所负担的责任 提出了更高的管理要求,使风险管理的各种手段倍受青睐。 我国的软件行业为了加紧步伐,非常重视吸取国外软件行业科学的管理理念 与方法。软件项目风险管理在整合内外部资源、实施全过程监控、提供决策信息 等方面,特别适合行业高动态、高风险的特点。但是纵观国内软件企业的项目风 险管理的整体水平,还存在着很多不足和问题,主要表现在以下几个方面: 第一,我国在项目风险管理的研究和实践方面起步较晚,虽然现在项目风险 管理受到越来越多软件企业的重视,但是往往停留在概念层面,缺乏具体管理制 度和方法的支持。 第二,国内软件企业主要依靠项目管理人员的个人经验,实行以定性分析为 主的风险管理。因此,风险管理水平参差不齐,具有一定的随意性,实际效果往 往不能得到正确评价和对待,也难以在较大范围内推广。 第三,由于在项目风险管理过程中缺乏定量分析方法的使用,因此有关项目 资料和数据的搜集缺乏目的性,从而导致该领域的知识不能得到有效的积累,影 响了管理水平的提高。 第四,现有的一些风险识别和分析方法一般只能解决某一方面的问题,对项 目风险的管理形不成体系,缺乏系统性。 1 3 2 软件风险分析方法 b o e h m 把软件风险管理分为风险评估和风险控制两个部分“。在该文中b o e h m 提出把风险评估分为风险识别,风险分析,风险排序等三个步骤。对于风险识别, 普遍采取的方法是列表法力h d e l p h i 法,而对风险分析的研究是一个大热门。c l y d e c h i t t i s t e r 提出软件风险分析要回答三个问题:哪里会出现问题? 出现问题的概 率是多少? 问题的后果是什么? “。从分析方法是否涉及数值分析上,现有的软 件项目风险分析可以分为定性分析方法和定量分析方法,由于定量分析方法很 多,分析的模型也各自不同,软件风险的定量分析方法又可以分为基于树的定量 分析方法、基于网络的定量分析方法和基于动态系统技术的分析方法等三类。 7 第1 章绪论 1 3 3 定性分析方法 定性风险分析主要是根据经验,利用已有的指标体系或者评价标准,对项目 各方面的因素进行主观的评估。然后给出软件项目可能出现的风险情况。定性风 险分析的目的是界定风险源,初步判明风险的严重程度,给出具体软件项目风险 的综合印象u ”。 定性风险分析主要包括风险评估指数法( r a c ,r i s ka s s e s s m e n tc o d e ) ,总 风险暴露指数法( t r e c ,t o t a lr i s ke x p o s u r ec o d e ) ,直接风险评估法( s c r a m , s h o r t c u tr is ka s s e s s m e n tm e t h o d ) 等一些工程上普遍通用的风险分析方法。 定性软件风险分析,基本上能完成“哪里会出现问题”这个任务,对问题的 后果也能得到一些概念上的结果,但不一定能有具体的数值体现。然而,它对问 题出现的概率这个方面却无能为力。这些定性分析方法可以用来分析小型软件项 目的风险,也可以用作大型软件项目最早期阶段风险管理的辅助性分析方法。 1 3 4 基于树的定量分析方法 基于树的方法主要用于找出导致不期望事件的原因。故障树和事件树己被广 泛用于概率风险评估中量化事故发生的概率和不期望事件导致的寿命折损和经 济利益的损失。l a u r al p u l ll ! m 提出了利用事故树识别软件项目风险的模型,这 个一个典型的事故树应用于软件风险分析的例子“”。基于事故树的分析模型,引 入了事件的概率,而且事故的后果在事故树模型里面简单明了,通过概率推理, 可以解决诸如“最大的风险是什么? ”,“怎么做可以规避风险? ”,“项目的 最大弱点在哪里? ”等一些人们比较关注的问题。然而,故障树和事件树只能用 于事故场景的静态、逻辑的建模,而影响人类行为的因素不能被明确地建模,这就 影响了事件之间独立性的评估。 1 3 5 基于网络的定量分析方法 基于图的软件项目风险分析方法,模型比基于树的方法要复杂,但是更接近 事物之间的本质联系。在软件开发项目风险研究中,学者们更青睐于这种分析模 型。r o g e rs p r e s s m a n 参考美国空军的风险评估方法,提出了风险驱动的评估 8 中山大学硕士学位论文基于她叶斯网络的软件风险分析 模型( r i s kd r i v e rm e t h o d ) “”,驱动模型有完整的网络结构,是较早的基于图的 软件风险分析模型。 c v r a m a m o o r t h y 提出利用基于规则的专家系统和基于影响图的知识系统 来进行风险评估”1 。影响图( i d ,i n f l u e n c ed i a g r a m ) 就是一个由有向图组成的, 且无有向回路的网络。图中的每一个结点都对应于问题的一个变量。当每一个结 点都对应着各自的概率分布的时候,该网络就称为概率影响图。影响图对应着删 除价值结点,弧逆转等一系列数学操作,最后得到特定概率事件对最终目标( 在 这里是软件风险) 的影响。影响图有着严格的数学理论作为基础,推理过程非常 完善,结果的可信度较高,但是对于中间结点比较多的网络,它的推理比较复杂, 而且只能从顶层结点往目标结点推理,不能反过来更新结点的置信度。 人工神经网络( a n n ,a r t i f i c i a ln e u r a ln e t w o r k ) 强大的学习和分析能力, 也被不少专家引入到了软件风险分析领域。t a g h im k h o s h g o f t a a r ,提出利用 历史数据训练神经网络模型,用于对项目涉及的程序模块进行风险分类,以识别 高风险的程序模块o “。他还特别的提到了在大型的通讯系统中,怎样利用神经网 络的风险分析能力来提高软件的质量和可靠性。“。d o n a l de n e u m a n n 则提出用 一种改进的a n n 来预测软件错误率等风险水平。神经网络在风险等非确定问题 的分析上有使用简便,并且结果准确等优势。但是,训练神经网络模型往往需要 大量的数据样本,并且,神经网络的分析由于其中问结点的不可视性,我们往往 只能得到预测的结果,而无法进行跟踪和模拟。 基于贝叶斯置信网络( b b n ,b a y e s i a nb e l i e fn e t w o r k ) 的软件风险分析模型 能很好地回答c l y d ec h i t t i s t e r 提出的三个问题,网络结点对应的风险事件可以 回答第一个问题,结点的置信度可以回答第二个问题,结点问的条件概率关系可 以回答第三个问题。正是因为贝叶斯置信网络对不确定性问题的较好的分析预测 能力,它在软件成本估计,软件错误率预测,软件质量管理,风险预测等领域已 经得到广泛的应用。 n o r m a nf e n t o n 和m a r t i nn e i l 很早就把贝叶斯置信网络引入软件开发质量的 预测和控制中来了。他们提出利用贝叶斯网络可以解决复杂的软件开发环境中的 错误预测,检测和预防问题,是进行软件错误率预测的理想工具1 。他根据一些 重要文献提到的模型加以扩展来获取贝叶斯网络的结构,通过专家们共同的意见 9 第1 章绪论 来确定条件概率表,并且利用h u g i ne x p l o r e r 的引擎来建立模型和执行模型推 理。在这个基础上,他们进一步提出应用贝叶斯网络进行软件质量管理,这个模 型可以集软件错误率预测和控制于一身“。n o r m a nf e n t o n 通过对比利用软件规 模和复杂度指标预测的模型,利用开发过程质量标准预测的模型等5 类软件错误 率预测模型的比较,指出基于贝叶斯网络的预测从数学理论方面和实际应用方面 都体现了很大的优越性。5 4 1 。n o r m a nf e n t o n 等人的工作,让我们看到了贝叶斯 网络跟软件开发环境的良好结合,通过适当的建模,贝叶斯网络完全能够适应不 断变化的软件开发环境。 s u n i t ac h u l a n i 提出把贝叶斯网络应用于软件成本估计,能够很好的结合先 验,后验和样本数据信息,并且对不完全和稀疏数据样本的学习功能突出,同时, 探讨了贝叶斯网络的置信度更新能力”。p a r a gc p e n d h a r k a r 提出把贝叶斯网 络用于软件成本评估模型,整合历史数据信息和专家主观估计,以获得更准确的 成本预测1 。以上两位在各自的文献中,探讨了贝叶斯置信网络对软件成本进行 了预测,充分肯定了它在软件项目不确定性环境里的预测能力,但是没有进一步 把模型扩展到成本以外的其他不确定性,比如错误率,工期等。 对于软件风险的影响,时间,质量和成本三个指标是密不可分的。单一的一 个方面并不能完全的体现软件项目的风险水平。上面提到的贝叶斯应用分别专注 于质量和成本两个方面,缺乏一个综合的模型。a n t h o n yk w o kt a ih u i 等介绍了 一种建立用于软件风险评估的贝叶斯网络的方法”1 。他利用一份专家调查报告作 为建立贝叶斯网络和确定条件概率表( c o n d i t i o n a lp r o b a b i l i t yt a b l e ,c p t ) 的依据。他的模型由2 4 个顶层因子引出2 4 个局部贝叶斯网络,可以分别进行贝叶 斯推理。利用得到的评估网络对初始的输入进行贝叶斯推理,可以得出各种风险 事件的概率分布。a n t h o n yk w o kt a ih u i 等韵做法把贝叶斯网络应用于软件风险 的评估的整个过程,具有较强的可靠性但是有两方面的缺陷:第一,由于评估网 络的条件概率表是根据专家经验获得的,主观性较强:第二,如果网络增加结点, 则要重新进行调查以获得新的条件概率表,扩展性差。 1 4 基于贝叶斯网络的软件分析模型 正如上面总结的,目前有不少的软件风险分析方法和模型,这些方法和模型 1 0 中山大学硕士学位论文基于贝叶斯网络的软件风险分析 也得到了较好的应用。但普遍存在主观性强,扩展能力不好等缺陷。本文研究的 目标是建立一种更接近软件项目客观环境,具有更强分析和预测能力的模型。模 型是具有实际操作性的软件风险评估工具,能够给项目的管理团队在项目初期对 项目的风险进行分析和把握。一方面,本模型能辅助项目客户方对承建方的能力 进行评估。另一方面,也可以帮助承建方在承建一个软件项目前进行风险分析和 自评,或者在承建项目之后,帮助进行资源配置,规避风险。围绕着贝叶斯网络 的建立,参数学习,风险分析预测,样本收集和再学习的过程。我们确立了一个 具备完整的学习和分析功能的软件风险分析模型。模型结构如图卜1 所示。 由图卜1 可以看出,用于软件风险分析的贝叶斯网络结构,主要是参考文献 和已有的模型和结点关系得来的。我们根据文献调查的结果和贝叶斯网络的限制 做了因子的筛选和关系调整。而贝叶斯网络的条件概率表,却是一个不断学习更 新的过程。我们首先通过问卷调查,获得的数据初始化样本库,启动贝叶斯参数 学习,得到的c p t 与已有的网络结构模型组成完整的贝叶斯置信网络。再利用这 个网络进行软件具体项目的风险分析,得到各个实际项目的风险数据。而在应用 的同时,我们又把项目的风险数据连同项目最后的产出情况加入到样本库中,作 为下一次参数学习的样本。这个不断在应用中学习更新的功能,保证了分析模型 对软件项目环境发展的适应性。 1 5 本文工作 本文的工作围绕着上述的软件风险分析网络的建立和应用。具体工作包括以 下几点: ( 1 ) 查阅现有的软件风险管理方面的文献,学习已经有的分析方法和模型。 给需要了解各种分析方法的人提供必要的资料。 ( 2 ) 参照前人的模型,根据文献的风险因子,扩充模型,建立贝叶斯置信网 络。并且参考文献的模型和调查结果确定条件概率表的初值。 ( 3 ) 探讨贝叶斯网络参数学习的方法,寻找适合软件项目特点的学习方法, 并且利用调查得到的数据样本进行学习,得到完整的风险分析网络。 ( 4 ) 演示利用贝叶斯置信网络进行软件项目风险预测,模拟和分析。 ( 5 ) 进行问卷调查,并利用获得的数据验证模型。 第1 章绪论 1 6 本文结构 图1 - 1 基于贝叶斯网络的软件风险分析模型 第1 章介绍软件风险管理、软件风险分析的概念,介绍现有的软件风险分析 方法。综述有关的文献。 第2 章利用列表法进行软件风险识别。 第3 章利用软件风险因子,建立贝叶斯分析网络,并提出参数学习的方法。 第4 章分析模型应用演示和相关理论。 第5 章模型的验证,总结模型的优缺点和改进的方向。 中山大学硕士学位论文基于贝叶斯网络的软件风险分析 第2 章软件风险识别 所谓软件风险识别,就是从软件项目环境中,抽取主要的风险事件,作为研 究的对象。软件风险识别是软件风险管理的第一步,也是风险分析的基础。本文 采用的识别方法为列表法,即整理文献中提到的风险因子,把软件项目环境普遍 存在的因子制成列表。制作风险因子列表的目的是把这些因子作为完善分析模型 的概率结点。 2 1 文献中的软件风险因子 2 1 1 主要参考的风险因子 j o n e s 在他1 9 9 4 年的著作中,通过详尽的调查,提出了6 0 个软件开发环境 中包括企业,员工,用户,软件技术环境等各方面的风险因子。而且具体给出了 风险因子的体现事件,风险事件出现的频率,造成的损失等。1 。是软件分析分析 各类文献的重要参考文献。 a n t h o n yk w o kt a ih u i 提出了包括项目开发组员工经验、士气等员工相关 风险因子,软件项目需要的技术、环境等项目特点相关因子,另外还有软件接口, 组织结构等等一共2 4 个直接风险因子及其引发的其他风险事件啪1 。 m a r v i nj c a r r 通过分类来识别软件风险因子,他把软件风险分为产品工 程,开发环境和程序限制等三大类,其中产品工程又包括了需求、设计、编码与 测试、整合测试、工程特性等5 小类,开发环境包括了开发过程、开发系统、管 理过程、管理方法和工作环境等5 小类,程序限制包括了资源、合同和程序接口 等3 小类。每一个小类又各自包含了多个具体风险因子。一共提出5 4 个具体风 险因子o ”。 b e o h m 提出软件项目中最致命的十大风险因素是:员工个人缺陷( 天分,技 能,责任感等) ,不切实际的日程安排和预算,开发错误的功能和特性,目标的 错误理解,开发错误的用户接口,频繁的需求更改,外部已完成构件的缺陷,项 第2 章软件风险识别 目事务的缺陷,实时性能的缺陷,违背计算机科学“”。 l i n d aw a l l a c e 和m a r kk e i l 在2 0 0 4 年的著作中提出软件风险存在于六个 维度:团队风险,组织环境风险,需求风险,计划和控制风险,用户风险,复杂 度风险。而每个维度又各自包含多个风险因子眦1 。 以上提到的文献是我们选定风险因子列表的主要依据,另外,还参考了 h b a r m 等提到的3 5 个风险因子,当然还有其他文献提到的一些因子“”。 2 2 筛选得到的风险因子分类列表 在综合了这些文献提出的风险因子之后,本文参考分类的思想整理出风险因 子的列表如表2 1 等所示。 表2 - 1 员工相关风险 风险因子相关事件出处 团队组成稳定性人员流动,团队的颠覆 l i n d aw a l l a c e ,1 9 9 9 员工技术技术熟悉程度,经验,知识l i n d aw a l l a c e ,1 9 9 9 团队合作气氛团队结构沟通情况l i n d aw a l l a c e ,1 9 9 9 责任分配 团队的分工,承担责任的情况 l i n d aw a l l a c e 1 9 9 9 员工主动性 组织的激励机制,文化,员: 素质 l i n d aw a l l a c e ,1 9 9 9 沟通的有效性团队的大小,沟通的机制l i n d aw a l l a c e ,1 9 9 9 项目经理的能力项目经理的技术,经验,受教育程度 l i n d aw a l l a c e ,1 9 9 9 依赖部分员工工作分配,团队组成 a n t h o n yk w o kt a ih u i ,2 0 0 4 专业化水平资格分类,人才技能鉴别 j o n e s ,1 9 9 4 员工流动性企业激励制度,人才策略 a n t h o n yk w o k t a ih u i ,2 0 0 4 生产力水平与行业平均水平对比a n t h o n yk w o kt a ih u i ,2 0 0 4 项目任务分配项目经理能力a n t h o n yk w o kt a ih u i ,2 0 0 4 员工经验员工流失a n t h o n yk w o kt a ih u i ,2 0 0 4 高级管理者责任感团队组成稳定性a n t h o n vk w o kt a ih u i ,2 0 0 4 报告能力项目经理能力a n t h o n vk w o kt a ih u i ,2 0 0 4 员工培训员工经验,技术a n t h o n yk w o kt a ih u i ,2 0 0 4 员工技术熟练性员工经验,使用不成熟技术a n t h o n v

温馨提示

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

评论

0/150

提交评论