基于在软件工程中对贝叶斯网络的循证决策
摘要:在软件工程中的推荐系统应该设计成集成依据并成为从业人员的经验。贝叶斯网络为以证据为基础的决策提供了自然统计框架,通过结合现有证据的综合概要与相关的不确定性(结果的不确定性)。在这次学习中,我们从事计算生物学中的铅含量、医疗决策和软件工程中贝叶斯网络的研究应用,根据1)软件工程中主要解决的挑战,2)贝叶斯网络技术过去用于学习变量之间的因果关系,3)贝叶斯网络技术过去用于推理参数,4)变量类型作为BN编码。我们施行了系统定位研究用来研究这四个方面中的每一个和用SE中的两个域来比较BNs当前的使用方法。随后,我们强调了在SE中的BNs使用的局限性并且提出一种混合的BN去改进SE中的基于正式的决策方式。在两个工业案例中,我们开发了样本混合BNs和对它们的性能进行评价。结果是我们的实证分析表明了混合BNs是强大的框架,这个框架结合了有定量数据的专业知识。就像在SE中的研究人员越来越意识到BNs的基本动力学,这个提出的模型也将会向前推进并且顺其自然的为循证决策作出贡献。
指数条款-----循证决策,贝叶斯统计,软件可靠性,软件韵律学,发布后的缺陷。
1、 介绍
决策起着积极作用并且在许多相互关联的因素之间是一项复杂的任务(以往的经验,依据数据的历史事实和环境问题)。一名决策者经常面临一系列可能的行为(选择/决定),并且每一个行为联系着可能的(短期的与长期的)结果,这个结果是不确定的。这个决策的标准原理需要每一个行为引起每一个结果所获得的的概率和对每一个结果的实用性。概率提供了在决策过程期间处理不确定性的量化证据。这个挑选的行为,即,这个决定,将最终在给定的环境下有着最高的实用性。对于提供严格框架的决策过程是必要的,这个框架能够提供重要的性质和性质上的领悟作为指导计算的假设分析和灵敏度分析。
随着循证医学兴趣上的探索,Kitchenham等人认为软件从业人员也需要收集证据,通过案例学习、观察、现场试验、通过系统综述积累证据和在在特殊环境下统和分析提供给他们的决定。即使有成百上千的出版物在软件工程的论题中,根据不同的设置在这些出版物中,关于可用性,局限性,风险性,收益以及所提出的技术医生也没有根据。因此,我们需要“基于证据的软件工程”去提供和提高由软件从业人员在使用和采用具体的技术所做的决定。
因此到目前为止,循证医学软件已经为进行实证研究提供了指导方针和为当前的研究结果,系统的聚集也提供了指导方针。与医疗保健相似,软件工程中的循证决策必须把这个研究方法放到实践中去,为了缩短两者之间的差距。为了完成这个,推荐系统/预测模型应该在某种程度上设计成他们能够集成证据,随即,事实和概率系统地收集或者是从真实的数据中进行测量和观察,成为从业者的经验。
贝叶斯方法向循证决策提供一个自然的统计框架通过现有证据的综合概要和联系不确定(的结果)通过对实用性的评估。更具体地说,贝叶斯网络提供了如下优点:1)保持意见、统计分布、之前的假设和在一个简易模型中专业知识的判断,2)在变量之间的因果关系编码为了预测未来的行为,3)“通过网络信息传播”随即,在网络游戏看到所有可能的方案和它们的结果得到了最佳的行动。最后但并非最不重要的,4)模仿人类思考的过程,超越了人类的基于事实推理能力,通过大量的历史数据获得的错误情报。
由于以上对好处的描述,BNs已经严格的广泛用于许多领域中,例如生物计算,更具体地说是生物信息学,和医疗保健,BNs根据研究设计与指导方针变的更成熟了。在这些领域中,BNs已经被着手研究了,根据过去用来建造网络结构的技术和用来估算最后参数的技术。我们认为经验软件工程研究应该遵循这些主要领域的领导,这些领域以BN应用占主导地位。
BNs也是非常有用的并且实际的机制提供了软件工程中的决策,因为在变量之间的因果关系中具有代表性,它们对于软件从业人员具有意义。这些图形模型防止圈内人通过向从业人员提供灵活性来执行性能权衡分析。因此,这些模型自从1980s就已经在解决各种问题上普遍使用了,例如预测缺陷,项目成本/工作量,时间,生产力。在软件风险评估上的开拓性研究已经由Fenton和Neil来指导,他们两个人在其最近的一本书中总结了贝叶斯网络决策的重要性,和通过工具AgenaRisk提供了从真实的应用中获得的的例子。
一个最近由Radlinski所作的关于工作量评估的调查,总结了BNs的强大尚且还不能很好的被理解并且被软件工程界所公认。这些模型主要是用来作黑盒模型,并且它们的开发由专业知识高度主导。我们对软件性能上的初步分析也确认了这个事实,这个事实就是BNs比我们现在的理解更为强大,但是我们需要更多地来源于相关研究的证据汇总来支持这些说法。基于当前的情势,我们的目的是提出改进BNs在实践中使用的解决方案。
在这项研究中,我们开始于一个一般性的问题“我们如何来利用BNs的强大提高在软件工程中的循证决策?”,进一步缩小我们的研究重点,来回答一下问题:“BNs在软件工程领域中当前的用途是什么?”和“我们怎样改进和提高BNs在软件工程中的用途?”。
为了回答这些问题,我们设定了以下的研究目标:
1) 延长Radlinski工作和我们通过指导在软件工程主题中BNs的使用进行全面的定位研究;
2) 确认当前在软件工程中最好的实践,然后,使用技术来定义因果关系,参数估计,和推导产生结果的概率;
3) 突出局限性,通过对我们的领域上的BNs的使用与其他应用上BNs的使用进行比较,特别是生物计算和医疗保健决策方面。
4) 制定一个新的方法,用来考虑在软件工程中存在的当前的局限性和提高决策的风险。
5) 在两个产业的案例研究中的评估性能的新方法。
在本文中,我们提出我们的研究成果,如下。我们提出了在软件工程中BNs的系统映射。我们总结了用于构建贝叶斯网络的最先进的技术,并且把它们与其他领域上对BNs的应用进行比较。根据我们的调查结果,我们设计出了一款混合型BN,这种BN提出了不同的技术(来自其他领域的灵感),为了构造这个网络结构和评估两个产业案例中的性能。紧接着,我们讨论了在系统映射中潜在的有效威胁和BN建造步骤和通过总结从业人员和研究人员对这项工作所做的贡献得出的结论
2、 背景
因此,到目前为止,在软件工程中BNs的决策在细节上还没有研究。在这一节中,我们首先描述贝叶斯网络的基础,和怎样用这些模型做出预测。然后,我们介绍之前在生物学计算和医疗保健方面对BN是的使用,和总结调查的结果,是在软件工程中以一个具体问题进行学习BNs,随即,努力估算软件性能。
2.1 基于贝叶斯网络的准备工作
BNs是图形模型,它表示一组变量概率之间的关系。在BN中变量X={X1,X2,…,Xn}表示为节点,而变量之间的因果关系表示为有向边。在一个BN结构中,变量中的一组条件独立主张被编码。尤其是,对给定的模型结构,我们计算的联合概率分布如下:
在这里,parents(Xi)表示父母节点(Xi),p(X)被叫做X的联合分布,是父母节点X的条件概率的乘积,这个条件概率可以被定义为一个分布,如果Xi给定连续得值,或者是如果需要分类值而作为一个概率表。如图Fig.1,表明一个简易的BN有不同的变量类型。这个例子的联合分布可以写为p(A,B,C,D,E)=p(C|D,E)p(D|B)p(E|A)p(A)p(B)。
当构造一个BN时,定量和定性两个方面需要被考虑,定性方面解决了确定在变量和建筑模型的最终结构中的因果关系。定量方面,解决了参数评估,例如填充前条件概率表分类情况,或者是在连续情况中参数的分布。大体上,一种概率的计算称为推理。理论上,这两个方面可以由数据推断出。但是,如果这些数据是不足以进行推理的,专业的判断经常被使用。而且,工具也被用来构建带有不同的运算法则和不足的推断统计的结构。
2.2在其他领域的BNs
BNs已广泛用于计算生物学中的决策(在生物医学和生物信息学的临床研究)和医疗(医疗系统运营管理)。在计算生物学中,BNs已用于在基因,建立疾病模型,和基因表达分析解释方面有重要的相互作用。在医疗领域中,它们也在诊断疾病和不同的治疗方案也很受影响,主要用于处理不确定性的影响。威尔金森和温克勒总结了贝叶斯网络在建筑结构和推理技术这两个领域中的的决策使用,并且还讨论了BNs实际使用时可扩展。
Wilkinson研究了关于计算机生物学方面的文献,并且得出贝叶斯的方法,尤其是Monte Carlo (MC) Markov Chain方法,例如吉布斯抽样和Metropolis Hasting算法,都被广泛的应用于复杂的数据和多个来源的推理。这个最受欢迎的BNs的定义是基于离散变量的,即使BNs可以描述任何的概率的条件独立结构。另一个受欢迎的类型是动态BNs,这种BNs用于生物模型。Wilkinson也提到在构造BNs过程中,存在着计算需求的挑战;但是,BN工具使用的增加或多或少解决了这个问题。Xiong等人提出了一个在生物信息学上很有影响力的工作,这些人配制RNA剪接模式成为统计推断的一个问题和介绍BNs来预测独特的分层模式不同的组织类型。
温克勒讨论了为什么贝叶斯方法不经常使用在医疗决策中,并且可以做什么来增加对它们的使用。Winkler也提及到哲学上的不同和在实际问题上防止这些方法的广泛使用。以一个实践的观点看,三个主要的解决方案是会鼓励研究员在医疗保健方面按照以下几点来使用贝叶斯理论:1)更好的开发贝叶斯,2)程序使贝叶斯分析更容易理解和使用(例如,工具),3)“可以接受”,然后,用决策者的教育使他们信服,这个教育是贝叶斯方法是有利的,受欢迎的,而不是其他更多的统计方法。
2.3在软件工程中的贝叶斯网络
在软件工程中,即使有成百上千的研究表示BNs的使用会解决不同的问题,Radlinski是一名唯一的研究并总结了BNs在“软件开发工作量估算的问题方面的应用。这则研究否定了23项采用贝叶斯网络的项目规划的出版物,然后,预测项目成果,生产率,持续时间,和缺陷。作者详细地调查了这些研究,根据他们主要的的目的,结构类型,用数据/知识库建筑模型,和验证性能指标。分析显示自从2002年大量被发表的论文已经在不断增加,65%的出版物是在2008到2010年出版的。大多数的模型是基于专业的判断来构建的,并且这些参数也是由专家定义的,这些专家的信念也是通过经验数据的支持。
Radlinski在建造BNs上讨论了专业知识的优势因为如果有大量的概率表需要被填写,那么这将是耗时并且也会产生矛盾。他也表示数值变量的离散化中设置几组区间用来降低精度,除非有更动态的方法,如在[ 24 ]提出的。就像在医疗保健领域中,Radlinski表示对从业人员来说理解和解释这些模型的概率输出是困难的。
我们的研究是受这一事实的影响,这个事实就是BN是一个实践性的并且是自然统计框架,这个框架指导着在软件工程中的循证决策。Hence,在许多方面,本文的是对以前工作的补充。首先,我们扩展我们以前的工作和覆盖所有的软件工程主题,并且在113年前分析了117篇出版文章,因为最早的出版日期可以追溯到1999年。第二,我们确认了主要的软件工程领域,在这个领域中BNs被广泛的应用于决策方面。第三,我们为参数和结构学习,通过我们的结果与计算生物学和医疗保健的比较从而突出的局限性确认了国家最先进的技术。第四,我们确认了方法来改进在软件工程中BNs的使用,和制定了一个新的混合模型。最后,我们在两个产业的案例研究中评估所提出的方法和报告我们的研究结果。
3、在SE中关于BNs的系统映射
3.1 研究方法
我们实行了定位研究,用来实现我们的研究项目#1和#2,就像在第一节中定义的那样,映射研究是一种次要的研究,它的目的是为任何一种研究搜索到一个更广泛的领域来施行,为了得到先进国家的实践或主题。这是进行判断是否这个研究问题对于文献概述是广泛的,或者对这个领域探索较少。映射研究遵循了相同的原则过程和作为系统文献概述的协议;但是,这个目标和研究问题更多的是通用的,搜索策略的标准与系统文献相比是不严格的。定位研究的主要目的只是区分相关的文献中定义的类别,与系统的文献相对,定位研究是初步研究,根据研究结果和调查是否这些成果是一致的。
基于Kitchenham等人和Wohlin等人的开拓性的指导方针。我们提出了一个系统映射研究,为了更好地理解BNs在软件工程中的使用。我们根据由Petersen等人制作的定义审查协议。系统映射研究是:“研究问题的界定”,“进行搜索相关的论文”,“论文”的筛选(纳入/排除标准),定义的分类方案”(类别),和“数据提取和映射的过程。”
3.2 研究问题
我们进一步将研究的第一个问题(BNS在软件工程领域目前使用的是什么?)子问题,并回答他们在第3节:
rq1a:哪一个主题说明了软件工程的研究采用了贝叶斯网络?
rq1b:哪一种技术被用于在贝叶斯网络的结构学习?
rq1c:哪一种技术被用于学习贝叶斯网络参数的建设?
rq1d:在贝叶斯网络中什么类型的变量表示为节点?
3.3 主要的研究探寻
我们定义的搜索字符串如下:
(贝叶斯网络)与软件工程。我们搜索以下四个数据库,因为他们已经被广泛的使用文学方面的其他研究:IEEE Xplore数字图书馆,ACM数字图书馆,科学指导,科学网。对于我们的研究和探寻研究问题的答案,我们没有设置任何时间限制。
3.4 筛选文件(找相关文件)
我们包括所有的发表于国际会议,讲习班,研讨会和期刊上的论文,具体地描述了在软件工程中使用BNs来解决特别的问题。由于我们只选定了数字出版物数据库,我们没有在这项研究中完成工作或报告工作。如果几篇论文报道了相同的研究(模型细节和验证数据),我们只能包括最近出版的。
在软件工程之外的文章,并且被不同的语言编著(及时摘要是用英文写的),就会被丢弃。另外,下列主题的论文也会被排除:
l 采用贝叶斯统计的文件(例如,蒙特卡罗方法估计回归系数)但是没有建立一个网络。
l 论文是以前的研究,比较了几种BNs。
l 描述一个特定的问题采用简单的贝叶斯的论文。
3.5 分类设计(哪一个主题说明了软件工程的研究采用了贝叶斯网络)
主要内容是在研究问题的基础上建造的。关于rq1a,我们阅读了摘要,题目,论文的中心思想和由Knowledge Areas定义的(2004年版)文章。因此,第一个定义的内容被作为软件工程的题目。
关于rq1b和rq1c,刻面分类,结构学习,和第三面,是来自文件的参数学习,阅读元数据(标题,摘要,关键词)是不足以了解哪些技术是在研究过程中是采用的BN结构。因此,我们阅读那些文章中的选节,在那些选节里,作者解释了怎样构造BNs去解决具体问题和提取的方法列表,算法,和/或技术。然后,我们归纳地形成更高层次的分类来覆盖这些方法中的每一个列表中。我们最终的分类在下一节中以文学的角度进行描述。
关于rq1d,第四方面是指表示为节点的网络变量类型。这方面也是通过阅读整篇文章进行研究。这方面的分类其实是微不足道的,主要有三种类型,可以用一个BN代表节点:1)分类(也称为离散的),2)连续,并,3)两者。
基于这四个方面,我们已经将所有基础的研究进行了分类,并且在下一节中回答研究问题。在分类之前,这项研究的作者公布映射协议,和四个研究问题相关的术语。在分类过程期间,通过阅读文章,作者为这四个方面制定了分类,防备充满疑虑的任务,指导方针如下:作者阅读文章和讨论有疑虑的工作,直到他们达成了协议才结束。
3.6 rq1 的答案
我们的搜索返回的出版物的数量如表1所示。在这个表中,公司代表包括出版物的数量,除了代表排除的出版物的数量(基于排除标准),然而Dup/Repl代表复制出版物。这种情况下,重复的记录是从许多数据库检索得到的,或者相同的文件发表在多个地点,被我们的研究排除在外。第一次筛选后(阅读摘要,标题,和关键词)我们选择了145个文件,使用贝叶斯网络用于软件工程的研究。rq1b回答。(database是收集数据的数据库,结果,潜在的研究成果,主要的研究成果)
Rq1c和rq1b,我们也详细地阅读了BNs文章的相同章节。在第二次筛选之后,基于我们的排除标准我们排除了28篇,117篇论文在本研究中进行分类。这117个主要的研究结果发表在53个不同的国际会议,研讨会及工作坊,和13种期刊。所有文章的列表和主要研究的分销会议也会提供辅助材料,可以在计算机学会数字图书馆中找到,网址是http://doi.ieeecomputersociety.org/10.1109/TSE.2014.2321179.
图二描述了一个多年来增长的趋势(根据数量和比例的出版物的数量),它也描述了在BNs方面一个越来越大的兴趣作为解决许多问题的方法。Radlinski也在经历了在出版物中类似的增长趋势,利用贝叶斯网络进行的软件工作量估算(百分之65出版物出版于2008-2010年)。但是,我们不能根据这些趋势得出结论。第一,当我们根据百分比值观察图2时,很明显,2010是最好的一年(17出版),有百分之十四的出版量,并且自从2008年采用NBs是就没有发生平稳的增长。第二,报告一件令人信服的事情,这件事情就是增加对BNs的兴趣,我们不得不比较这些趋势与其他人工智能的应用。
已经有一些研究,总结人工智能在不同的软件工程问题中的应用,例如:在软件需求分析的自然语言处理,遗传算法(气)的软件架构,自动化测试与项目规划,基于案例的推理(CBR)的软件编码,重用和预测。Shepperd指出CBR是一个相对较新的技术,建立于上世纪80年代many exciting opportunities can befound for employing it in our field;,许多令人兴奋的机会就是可以在我们的领域中使用它;然而,也有开放性的挑战,例如规则的适应与人类专家的合作。GAs,另一方面,在项目规划设计中很流行。虽然人工智能技术在GAs增长率之与其他技术主题之间没有比较,但是它强调了BNs的使用可能在实践中更具有吸引力,由于它对从业人员是透明的。图2一般支持这种说法。
3.6.1 rq1a的回答(哪一个主题说明了软件工程的研究采用了贝叶斯网络)
基于SWEBOK的分类,表二列出了所有软件工程的题目,在这个表里,BNs根据他的欢迎度被采用(例如,出版计数)。大量的出版物在名叫softwarequality这本书中报导,用来预测使用BNs时出现的错误/故障/软件可靠性。下一个书名叫做software engineering management,带有其子区域的“项目计划和评估,”或者是更多的,特别是对资源的决定,利用贝叶斯网络预测成本/工作量/计划/产能或者是用贝叶斯网络进行权衡分析。
我们也在图3中看到前五年的趋势,在这张图里每个区域都代表一个不同的模式。这张图表明,自从1999年,BNs已经在前两个KAs中占据主导地位,也就是说软件质量(黑色)和软件工程管理(深灰色)。对于第三个KA,软件设计(浅灰),我们看到了近几年BNs的使用,分别是2012, 2008, 2007, 2005, 和2000年。这种形式也包括软件测试(灰色与白色小点),然而,多年来,软件需求(白色的斜线)是随机分布。一个更详细的年度趋势图,每年大量的出版物为前两个KAs提供材料并是在线提供。
Rq1a:大约72%的BN应用在软件需求领域中被提出,然后,预测错误,故障和软件工程管理,随即,项目和资源规划。在软件测试、设计和构建方面的BNs的使用在2000s之后就变的更受欢迎了。
3.6.2 rq1b的答案(哪一种技术被用于在贝叶斯网络的结构学习?)
我们的论文作者提供的描述结构学习的分类文件。使用这五不同的文件方法如下:
1、 专业知识。专家(研究人员,软件从业人员,或两者)反映自己的知识或者是关于因果关系的影响的看法,然后在BN中捕捉到他们,通过识别主节点和他们的关系(边)。他们也调查研究不同的变量/指标及其关系中反映他们以前的经验。
2、 一些其他正式的知识/模型的类型的使用。专家自动合成的BN基于正式的结构设计,例如数据流模型,故障树,质量模型,或其他方法,这种BN积极应用于软件开发生命周期。例如,从需求上使用域的知识和用结构图建立一个BN把用户的需求转化为系统需求。在【32】中,作者将知识表示的累计成本缺陷转为BN预测缺陷修正的成本模型。另一个例子提出了BN基于状态和用来预测软件缺陷的过渡模型
3、 从一个带有算法/启发式的数据中学习。这种结构是基于不同结构的算法或探索法,这种探索法确认变量之间的因果关系。在这些主要的研究中,我们已经看到,最常用的算法是K2,这种算法是为学习BNs的结构而著名的积分求解。大多数的文章,作者使用已有的程序或工具并包括不同结构的学习技巧。
4、 使用自动化工具进行数据学习。这个网络的结构由基于作者提供的数据决定的。这一类的研究中经常缺乏工具中的结构学习的技术说明,或者是涉及其他研究使用类似的工具。而且,没有解释被提供在工具或嵌入在工具技术中。一些主要研究工具的例子是WEKA bayesialab 和powersoftbn,causal explorer package
我们的分类也补充了Darwiche对rq1b近期的分析,这个人解释了BN结构是怎样形成的。作者描述了构造BN结构三个主要的方式:1)专业知识,2)其他类型知识的自动合成,3)从数据中学习。我们的分类包括和扩展这些在软件工程研究的环境。因此,我们增加了多于一个的类别和在这些类别里的文件,这个类别没有提供详细的模型构建。
对于分类统计汇总于表3。这个最受欢迎的技术被用来定义是专业知识的网络结构。其次最受欢迎的技术是一种基于可在整个软件开发生命周期对知识或模型的使用。我们发现117项研究中提到的多于一个的最终网络结构技术。一种受欢迎的方式是更改这种网络结构,它定义了通过专业知识来使用一种算法/启发式。如果我们将1、1和2、1和3结合起来,那么可以看出,专业知识实际上在64项研究(百分之55)中都有使用,然而第二个与第三个方法共有35和20项的初步研究中分别被使用。
Rq1b:在软件工程55%的研究中,专业知识在定义网络结构中被当做最重要的资源。四分之一的研究也是基于软件工具来构建网络的。
3.6.3 rq1c的答案(哪一种技术被用于学习贝叶斯网络参数的建设?)
在这项研究中的参数学习是指:a)定义在网络中的节点分布和条件,b)估计(推断)的连续变量的分布参数,或者为绝对变量设置条件概率表。我们已经按照上述的方法将论文进行了分类。
为rq1c的分类包含了类似于rq1b的分类方法,被列为如下:
1、 专业知识:专家反映自己的知识或感知节点分布和参数分布或者是概率表,并且他们捕获到一个BN。通常,对于最后的推理(输出)节点应采用精确算法和近似(或工具)算法。但是,在这些研究中,这部分没有被精确的解释。因此,我们将论文分类,只用基于定义的操作来使用专业知识。推理提供了另一种方式的研究是分为多途径的。例如,在【45】中,这种分布是由专家设置的,而推理是基于条件期望估算方法来做的。
2、 使用正规知识其他的一些类型。专家综合知识,然后,分布参数基于以前的研究。另外,他们使用著名的分布,例如,父节点的故障时间分布。这种方法经常与另一种用于推理方法结合。例如,在【47】中,AgenaRisk工具被用来推理初始分步中最后的参数,这种分布的定义是基于正规化知识的。
3、 利用算法从数据中学习。在这个方法中,推理是使用著名的精确或近似算法。在重要的研究之中,我们观察到一个常见的方法用于概率推理,这是将BNs转化为节点树并且通过使用消息传递算法更新条件概率表。作者还采用近似推理技术,例如:MonteCarlo方法。超过一半的研究采用推理算法,这个过程是自动完成的,通过一个工具,或有作者改进的应用程序。
4、 从使用自动化工具的数据中学习。在BN研究中通过具有历史数据的工具来推理参数。在对结构的学习中,对类别的研究缺乏技术上的说明,这种技术用来设置参数和推理,或者是涉及其他的使用类似工具的研究。一些工具用作推理和结构学习。然而,在一些研究中,作者用一个单独的工具只进行推断。
在rq1b中,我们增加了多于一个的分类和集合这类的文章,是否在这些报纸没有报道设置分布和学习参数。
我们经历了它是不可能区分出版物之间的参数学习方法。例如,在[47]中,作者使用正规知识来解释父节点的失效的正规分布;但是,他们还基于专家得判断的建立了均匀分布。与[50]中相似,作者表明条件概率表只是基于历史数据计算的,但是他们也提到工具的使用,这种工具实际上是概率推断算法,例如节点树。因此,我们将许多研究分成了许多的途径。
表4为rq1c进行了统计。由此可见在研究的27%中,作者为参数学习使用了多途径的方法。在软件工程里,我们可以得出结论:研究人员更喜欢使用工具,或者是只使用一个工具,或者是用其他的一些方法。大约18%的研究采用了算法,而初始分布/概率表设置与其他方法(专家知识)被设置为初步研究的5%(117篇中的6篇)。
Rq1c:软件工程研究员在网络推理方面提供的非常少。大约研究的一半用工具估计参数,在推理技术的采用上,也没有任何的理由。最普通的算法也是精确的推理技术,就是联合树。
3.6.4 rq1d的答案(在贝叶斯网络中什么类型的变量表示为节点?)
在这项研究中,我们提到了变量的类型,在BNs中表示节点,列举如下:a)连续的,b)分类(也称为离散变量)如果名义或有序尺度收集(有限个值),或转化为绝对连续与离散技术,或者c)两者都是,如果这些混合物在使用中没有任何变换。我们将在BNs中基于变量类型的初步研究来表示,不管在构造模型之前,数据类型采集的是什么样的。也就是,如果采用离散化,我们将研究进行分类。表5显示了统计结果,在这个表中超过研究的一半,用绝对变量构建BNs。由Wilkison表示,这个最受欢迎的定义,这个定义是基于绝对变量,即使算法表示了近似的推理过程和对分类与连续变量都不需要离散化。这表明了BNs经常被当做是黑盒技术或者是工具盒,并且他们的推理机制,研究员还没有很好的进行说明。
图4是一个总结,气泡图显示分布在三个维度的初步研究:结构学习,参数学习和变量类型。Y轴代表第一和第二维度的分类,如表3和4,而X轴代表变量类型维度。
Rq1d:在大约80%的研究中,BN节点代表了绝对变量,因为1)为绝对变量定义概率表很容易,2)研究员能用工具在绝对的数据中做精确的推理。
3.7 在其他领域中BN的应用
Rq1的结果表明BNs是用来解决两个主要的软件工程问题,并且他们的使用对于一些结构学习和参数技术学习是有限的。我们认为在我们的领域中扩展这些概率模型的使用,只可能强调BNs的功能和在其他领域上的应用。因此,我们在生物学计算和医疗保健中寻找了文献概述,这些概述总结了在BN建设中流行的技术。我们通过以下几个原因挑选了两个领域:1)BNS的应用与其他领域上的技术相比占主导地位的。2)用数据来构造贝叶斯网络是丰富的,复杂的,且容易在软件工程中产生议论。
Daly和Lucas等人,在医疗保健研究中总结学习网络结构的技术。Wilkinson [列出本课题更具体地研究计算生物学,生物信息学,并总结了在不同的情况下不同的技术对于BN推理(参数学习)有哪些帮助。Liu和Logvinenko也关注了计算生物学的一个分支和强调贝叶斯推理技术的重要性。在这一选节中,我们列出了流行的技术,从以往的研究中进行总结,比较他们与软件工程研究中艺术状态的方法。
结构学习。贝叶斯网络结构可以纯粹的定义为以下:a)专业知识的判断,b)经验数据,或c)结合使用专家判断和经验数据。在软件工程中,BN结构大多是基于有经验的从业人员的共识。但是,基于专家的方法是主观的并且是持久的。他们需要足够的知识,关于因果关系,概率推理和隐藏的变量,特别是,基于专家经验的方法是不足以支持基于证据的软件工程的,然后,决策应该基于事实,观察和经验。
Daly等人,大致总结了医疗保健文学,根据在BNs中的结构学习,使用数据,和强调这些技术可以根据手头上的问题进行选择。大多数的技术用于绝对变量;但是,每一个变量都用于具体的来处理输入的类型。最受欢迎的技术如下:
l 转换成树和树上的网络形式
l 启发式算法
l 评分功能
l 条件的无关性(CI)的统计试验
l 混合算法
l 为其他技术,结合先验知识,即,专业知识,
由Lucas等人将独立分析和搜索评分算法已经成为受欢迎的BN学习技术,用于医疗保健上的决策。在上面提到的不同领域,软件工程是动态的并且在不断变化的领域中技术、程序语言和开发方法也在快速进步。因此,在现实生活中满足各种不同的结构学习方法将更具有挑战性。总的来说,公司采用不同的管理方案,或者是优先考虑生命周期的不同阶段,并且只收集这些阶段的数据。在一个小规模的组织中,专业知识可能比在手里的数据需要更多的积累和稳定,而在大规模的组织中,工程改进和管理活动都被当作是公司文化的一部分,因此,软件数据库可能比开发团队的个人思想更可靠。
由于这些变化,对于软件工程来说,一个更合适的方式将要被使用,那就是有混合贝叶斯方法来学习结构,这将会包含从业者的看法和以知识的因果依赖关系为基础的算法。
参数学习。理论上,在BN中的参数可以在数据中推断出。在BN文学中这是精确的并且是近似推理算法。精确算法的计算时间随着网络的增长而明显。近似推理,在另一方面上,可以用模拟、抽样和Monte Carlo方法,和其他的像EM的近似算法。
在生物计算上,Monte Carlo方法的优点是被高度认可的,也就是,处理分类变量和连续变量和丢失的数据的混合能力。因此,他们在可用的软件中是很受欢迎的,例如:BUGS。在生物序列分析中,计算生物学的子区域中,Liu和Logvinenko也综述了Monte Carlo方法和Expectation Maximization,并且自从在图形模式中使用了这些推理方法,这个区域就已经彻底改变了。
在软件工程方面,我们相信,有关“推理”或“参数学习的BNs还不成熟,因为9.4%的研究在推理技术上面没有解释,而大多数的研究把推理部分的一个工具。称为专业知识的优先分布,也就是,概率表大多是为了统计绝对变量,并且用于工具推理最终概率表使用的是流行的精确推理算法。当有一个分类变量和连续变量的混合BNs,研究人员使用迭代算法,这个算法结合了动态离散结点树来进行精确的推断。假使连续变量,有其他学科流向工具的帮助,也很少有研究者倾向于使用抽样的Monte Carlo方法,例如Gibbs采样。
我们相信在软件工程中的研究院应该了解推理后面的理论(哪些因素影响推理过程和推理技术的输出是什么),Bayesian统计学(它是如何不同于频率统计的方法【7】),并且用统计学方法去构建更好的贝叶斯模型,根据模型的性能和可用性方面。这个方法将给研究员与实践者灵活性,去适应不同条件下的模型。
比较其他的学科,BNs的功能在软件工程方面还没有获得很高的公认。构建BNs应该减少构建和参数学习的算法。
4、基于贝叶斯决策的实证分析
根据我们的研究的第一个问题,我们提出了一个混合贝叶斯网络来解决一个具体的软件工程的方面的挑战,也就是,根据缺陷来预测软件的可靠性。一个开拓性的研究,预测使用BNS时软件可靠性已经由Fenton等人提出。研究员构建了BN模型的综合,在这个模型里,生命周期的每一个阶段都代表着一个小的子网。子网的节点,他们以前的分布和因果关系被软件开发机构的高级管理人员所定义。他们也开发了BN工具,AgenaRisk,用来进行一般的风险评估,并且估计工具使用完之后有缺陷的最终的概率。对于模型中的数据,可以通过问卷调查获取,这些问卷调查中包括生命周期中重要阶段的一些问题。作者采用动态离散化方法进一步改进BN模型。
我们的研究和扩展最先进的模型的几种方法:第一,我们提出了一种“混合数据”模型来代表软件生命周期阶段,通过专业的判断,从软件库中收集定量数据。在以前的工作中,作者也使用通过添加项目规模等的混合数据方法。但是,这种模型主要是提供给调查方面的。在我们的研究中,我们决定两个收集数据的任何一种方法,用来表示软件生命周期阶段,这取决于公司的本地数据的可用性。
第二,我们构建了混合型BN,这种BN结合了连续性与绝对型变量。之前的工作也提出了混合式模型;但是在这个模型里通过使用动态的连续型变量转换成了绝对型变量,和一个精确的概率推理算法。在我们的研究中,我们选择合适的参数和结构学习方法,在其他领域中用混合的分类方法和连续节点来掌握推理,也被高度公认。设置初始参数,我们用统计测试来配合适当的分布。为了定义连续变量间的因果关系,我们用依赖与独立的测试图形的分析。最后,在混合BN中,我们使用Gibbs抽样,不对任何变量类型进行转换。
我们对比较技术和预测性能提出三种不同的模型:纯粹的专业基础模型、基于数据的模型和混合模型。我们最终的目标是解释混合模型的优点,并且表明BNs是自然的合适的框架。我们相信两个典型案例实验将为软件研究员和从业人员强调一些建议,并且指导我们回答第二个问题“我们如何能促进BNS在软件工程中的使用?”。
4.1上下文的定义
我们进行了个案研究,在土耳其不同软件组织利用贝叶斯网络建立可靠性预测模型自然合适的框架。这些组织在开发团队的大小方面是相似的,产品的尺寸,并且根据领域不同而不同,开发方法,过程改进活动,和文化测量。在表6中,我们简要总结了两家公司的描述性信息(A和B)。
公司A有更大的动态性和在组织结构中有频繁变化的不稳定的环境和软件构建,而公司B有源远流长的文化发展管理,在公司A中的技术和研发团队的知识领域比公司B的要低端,因为公司B的员工一起工作了很长一段时间。我们认为这种变化可能影响专业的模型,因此,基于数据的或者是混合的BN对软件公司来说都是很好的选择,而像B公司,基于专业的模型可能与结合专业知识的混合型BN一样好。在下面的章节中,我们描述了数据收集,分析,和更详细的模型构建步骤。
4.2 数据收集:一种混合的方法
建立一个全面的BN模型,像在【55】里一样,我们收集可用的日期和地点与高级管理者的公司举行的讨论。我们发现有定量方面数据的指标和在库的开发中有存档的原始数据,和测试阶段,而这里没有数据表示规范的要求和设计阶段。随着公司的高级管理人员,我们决定构建BN模型表示三个主要的阶段:规范要求,开发和测试。我们使用一种混合的数据收集方法获得的定性和定量来建立三个子网需要的证据(即子网):1)调查收集了有关规范的要求的相定性证据,2)度量和软件数据库来收集的定量证据的开发和测试阶段。
定量证据。我们开采的版本控制系统,问题库,测试执行日志和提取的13个指标表示两家公司的测试阶段的发展。选择我们的理由是对所有指标的描述、对指标之间关系的相关工作、并且在表8中总结了使用完之后缺陷。我们定义的基础是两家公司的本地数据的可用性度量集和以往对软件的可靠性和质量的度量研究。
在公司A中,我们收集了13个方面的9各方面,也就是流失,人,编辑次数和年龄,复杂性,测试用例,测试缺陷,测试用例的质量,和试运行,44个发布在2009和2001年。除了这些方面,使用后的缺陷,也就是,每次发布后的故障报告,都收集作为模型的因变量。
在公司B中,我们收集了13中的12个方面,也就是增加LOC,删除LOC,编辑的复杂性,频率,测试用例,测试用例失败与错误,测试用例,测试与状态变化,测试缺陷和测试套件,用于2011年每周的软件说明。不同于公司A,总流失率分为添加和删除每星期编辑的代码行,而由于对源代码的访问限制年龄无法测量。在测试阶段,我们设法为公司B每周测试并执行日志,在这个阶段可以使我们能够比A公司提取更多的指标。
定性的证据。测量两公司的规范阶段是一个具有挑战性的任务,主要因为没有正式的文件或者是公认的度量集,这个度量集可以很容易地从自动化系统提取专门用于这一阶段的事物。而且,更稳定的专业知识可以从高级管理人员和具有多年经验的分析师那里进行收集,并且相比于有限的数据,我们可以从软件库收集关于这些工程上的知识。
Fenton等人【55】,发表五个主要议题关于开发生命周期的不同阶段的调查问卷。在这个调查问卷中,每个主题都表示定性因素,公司的作者和其他的伙伴相信软件项目的结果都会有重大的影响。这些描述性问题进行专门的裁决。
我们用这个调查问卷,原先由五大主题代表开发生命周期的不同阶段;但是我们让开发团队在企业应对问题,只是遵循以下两个主题:i)规范和文档,ii)项目管理。规范和文献[ 55 ]提出了子网,包括来自相同程序的四种因素,并且两种因素来源于项目管理程序。那些因素在表7中有说明。每一种因素与其它问题的解释和估计都是雇用了5种类型的参与者:非常低,低,中等,高,非常高。
在公司A中,我们进行了15个团队领导和项目经理为每个发布填写调查问卷。每一个阶段都由3到5人评估,这取决于团队的积极努力。对于每一个问题最普遍的回答会添加到最终的数据集。在公司B中,我们采访了15人,包括开发人员,测试人员,分析师,在每周一次的基础上,让他们评价他们对软件的成熟过程。
4.3 BN的建设
在本研究中,我们提出了三种不同的BN模型和预测软件可靠性方面来比较它们的性能。第一种模型包括开发和测试子网,并且完全是基于专业知识的判断,这是一种在软件工程的研究中建立贝叶斯网络最流行的方式。第二种模型,也代表了开发和测试的子网,结构是只具有定量的数据。第三种模型是最后的混合模型,在这个模型中规范要求子网是基于专业知识的收集,而开发和测试子网是从模型# 2得到的。用于每个人的模型和技术,总结归纳在表9。
在下面的章节中,我们描述了这些技术对参数和结构的学习。
4.3.1 因果关系
模型1。这种关系是从专业判断并基于尼尔等人的指导定义[ 68 ]的语法的方法:Neil等人的方法的灵感来源于系统的自底向上的方法和软件工程,还有面向对象的贝叶斯网络。作者提出基本构建块语法的使用,这个构建块是小的,并且网络中的可重用软件是可以很容易地来管理复杂中的事物。然后,他们通过形成语法来建立软件开发生命周期过程模型。
我们用下面的一些语法定义[ 68 ]构建的第一个模型:定义,因果,和测量。而且,我们询问了资深管理员来调查这些因果关系,避免在建模过程中潜在的偏差。模型1的最终表示使用了这些语法,可以在图8a和9a中看出。
定义语法在BNs中使用,也就是说,合成节点是由其他节点定义的。在公司A中,我们使用语法来定义合成码与3个开发过程方面的关系:流失,复杂性,和编辑频率。而且,我们已经通过三种测试过程来定义发布后的缺陷:测试用例的质量,测试的缺陷,和平均测试运行。在公司B中,我们使用了ChangedLOC,它是添加和删除LOC的总和,并且将第一个定义的关系在A公司中使用。
因果语法用来根据因果关系将过程塑造成模型。在A公司里,我们已经用了这个模型来定义时代的复杂性,人的流失,和测试用例的测试缺陷之间的关系。所有的关系都是基于(表8)先前的实证来选择的。基于这些工作,我们选择输入年龄、人和测试用例到预测过程,选择复杂性(由于年龄),流失(由于人),和测试的缺陷(由于测试用例)作为输出。
在公司B中,我们用AddedLOC和Deleted LOC取代了Churn,并且形成了与公司A中一样的因果关系。因为有一个强大的,测试用例和测试误差之间的正向关系在失败的测试和测试套件之间,所以我们决定排除前免得,并建立了一个测试的缺陷和后三者之间的因果关系。
最后,BNs中测量语法被用来测量基于另一个事件上的一个事件。在A公司,我们已经使用了这个语法去定义测试用例的质量和测试用例之间的关系,因为第一个变量实际上的价值取决于为确定测试用例的质量计算第二变量。在公司B中,我们在提交和编辑频率,之间设置测量关系,因为后者是通过数天提交的代码量来测量。
模型2。因果关系是基于叫做chi-plots【69】的图形化的相关性分析来定义的。在两个变量X,Y之间需要考虑到对的散点(X1,Y1),…,(Xn,Yn)。而且将关于X,Y之间的依赖信息,散点图也将关于它们的边缘分布【70】的信息。Copula模型用边缘分布提供了一个数据的转换(H(x,y)=C{F(X),G(Y)}),在这个公式里F(X)和G(Y)是边缘分布,C是连系,为了数据转换可以进行研究。在这个模型中最重要的事情是在一个合适的参数化家族中对F,G和C的选择。
一旦边缘分布,F和G被选择,选定的copula函数的唯一特征是共同依赖。在一个简单的例子中,如果X和Y是相互依赖的,C(u1,u2)=u1*u2,在这个公式里u1和u2是X和Y的转换,为标准统一的边缘分布【71】。U1和U2基于X和Y的等级,除以1/n+1等价于【0,1】^2的规模
Copula模型有不同的类别,可以应用于模型的两个变量之间的依赖关系。现有的模型,通过视觉检查依赖关系是否存在是必要的。一种工具是chi-plots,这种工具在【69】【72】中被提出。Fisher和Switzer【69】【72】认为二元关系的图形视图比各种非参量统计检验更加丰富。散点图是一种基本的数据分析工具;但是,如果独立性,对于通过肉眼判断它的随机性是非常困难的。因此,chi-plots解决了这一问题,通过提供取决于变量的特色模式:i)式独立的,ii)有一定程度的单调关系,或(iii)有更复杂的关系【69】。
这些情节只取决于变量的行列,通过基于X和Y的队列来引入新的坐标轴X和λ。具体为:
画一个chi-plot,每对数据(Xi,Yi)被转换成(Hi,Fi,Gi),像等式2中那样,然后,这两个坐标轴(λi,Xi)像这样被提出了:
为了避免异常值,作者建议应该被绘制的只是λi<4这一块。在图5中,额外的控制范围绘成,Cp是1.78,用来定义95%的控制限之间的值。这个图说明公司A用Test Casesand Post-release Defects。一中连系,在两变量之间,也被称为依赖,在图5中,我们可以看到,有一个积极的单调依赖性在测试用例和缺陷之间,用作数据对从中心转向右边。
模型2中,基于chi-plot的因果关系在变量之间被定义为界限,在图8b和9b中有显示,分别表示A公司与B公司。
模型3。它采用模型# 2的因果关系来开发和测试子网,并且采用模型1的专业知识。规范和文档的子网的图形化模型是通过从[ 55 ],图6显示出来的,根据表7的问题用蓝色填充节点因素,和虚节点作为隐节点。这个子网中的节点表示最终避免规范缺陷的概率,而在模型#2的最后的节点表明开发和测试活动的概率。在模型3中,我们假设,这些独立的双输出节点之间,定义它们作为一个新的输出节点的父母节点,这也被称为缺陷。模型3的图形表示是图8c和图9c,分别表示公司A与公司B。
4.3.2设定先验分布
在评估网络最后一个参数之前,设置所有的变量的先验与条件分布是必要的。研究员可以与其他的参与者一起工作根据他们以前的知识来制定概率表/分布和参数。另外,统计分布拟合试验,和采用图形化分析,来决定分布的类型,而参数可以使用精确或近似推理技术评估。
模型#1中,我们用专业知识,也就是研究员与从业者基于数据的图形化表示的经验,来设定所有变量的分布。
模型#2中,我们将所有的变量和缺陷都采用统计测试(表8)。本试验是与检验的零假设拟合试验Kolmogorov-Smirnov相同(H0):样品来自正常家庭的分布。但是,Lilliefors提供了当样本大小是小于50的更好的解决方法,和为其他分布测试检验零假设【73】。这个测试检查了是否样本来自与具体的分布(也就是正常的,对数,指数,和威布尔)。因此,我们使用Lilliefors检查是否在模型#2的变量来源于具体的分布。这个结果就是本试验(H)是0,如果零假设不能被95%的意义拒绝。但是如果零假设被拒绝了,这表明抽样没有来源于具体的分布。
如果lilliefors测试导致不同的分布,而这些分步是不确定的(在所有的案例里H=0),我们用图形化技术,也就是,由Chambers提出的正常的概率基址,这些图形化测试主要地用来评估数据是否是正常分步的。如果一个数据抽样像图7c一样,然后这个抽样可能是正常分布的。而且,它也可能用来理解不同性质的数据:如果一个数据抽样有向左偏的曲线,这个分布可以解释为一条很长的尾状,像t-分布一样(也就是图7b中),比正常的分布有更大的变化。类似地,如果数据抽样有一条偏曲线,在这个曲线上,点集中于曲线尾部范围的上下处(如图7a),这很可能是抽样来源于指数分布。
在这些案例中方法不能提供任何关于一些潜在的分布信息,我们使用度量值作为线性方程形式的常数,或在估计的初始参数时的分布。例如,在数据集A中,复杂性的度量,被设置为初始metric度量。
基于上述统计方法的总结,列出了数据集的度量和它们在模型2中的相关分布,在表10中有所显示。
模型3. 规范要求子网直接用于基于专业知识的分布,和包括了模型2中子网的开发与测试,在模型2中,变量基于显著性的测试被设计成不同的分布。
4.3.3 推理
在所有的模型中,我们的目标是利用贝叶斯学习使用Monte Carlo方法复杂的模型,特别是Gibbs 抽样【7】,如果没有足够的统计,也就是,分布中的未知参数,或不完整的数据,这些方法在实践与广泛使用中都做得很好,比如说在机器学习,生物信息学,医学领域,与其他工程学科中【7】。这个基础的想法是在Gibbs 抽样之后提出来的,这是一种MC方法中最后欢迎的一个,是来源于贝叶斯模型中的每一个节点的后分布的样本。MC技术是十分成功的对于概率分布中的未知参数或者是指导实证分析来推出样本的真正的价值。一个Gibbs抽样的例子,显示其迭代过程,解释[ 75 ]如下:
推理是在BNs构建期间的最后一步,因为这一步对分布中的未知参数产生了评估,最重要是是输出变量的后验概率分布。给出的参数评估见表10,很容易从这些分布中产生新的样本数据集。对于来自于输出编码的后验分布从而产生简单的价值是基于一个单一的场景。Gibbs抽样也能够使我们对未来的场景去作出预测即使一些输入变量丢掉了,因为我们知道分布的组成,然后我们将生成合成样品来填补缺失值。
4.4 提出的模型
这个图形化表示了三个提出的模型,这三个模型在图8,图9中,分别表示A,B公司。如前所述,第一个模型,模型1用来表示开发和测试子网,并且专业知识是主要的方法来定义的原因和现有/条件分布的影响关系。模型2根据统计技术的不同而与模型1不一样。模型3是基于专业知识构建的。因此,第三个模型是为参数和结构学习成立的一个混合模型,他是根据数据源和技术建造的。
在这些贝叶斯图解模型蓝色节点表示的发展指标,而白色节点表明测试指标。节点有虚边界的隐藏节点,基本上代表了一个公式,线性方程,在一般情况下,是父节点的数学表示。最后一个节点,是深灰色,表示在释放之后有缺陷的概率。
显然,所有这些模型都有各种各样的因果关系,和连续和分类变量的混合,因此,推理后验分布通过手工计算是不容易的。因此,我们建立了有WinBugs工具的模型【52】,这个模型为推理复杂的模型提供了强大的框架。WinBugs工作如下:通过定义输入输出变量,建立了一个模型,分配给变量分配,并且对分布参数设置初始值。一个迭代循环被建立,在这个迭代循环里变量间的因果关系被定义,也就是,定义两个变量之间的数学关系有多种方法。在模型构建之后,一组数据集被编制并且检查Gibbs 样本的近似值是否是易处理的。推理机运行了多次迭代和返回了未知参数的估计值。为了做预测,一个样本由使用变量的输出变量的分布和估计参数的分布组成。
4.5 性能鉴定
在BNs中,一个比较两个模型的自然方式是用基于数据模型和模型[ 79 ]的复杂性之间的配合的折中准则。偏差信息准则(DIC)是这些中的一种,它更容易运行在Monte Carlo中。它的计算方法如下:
在(6)中,第一项是从数据的对数似然计算偏差。在参数的数目(PD)模型中的复杂性是计算的“越轨行为”后均在“负偏差的评估后的参数值”。模型有着更小的DIC比数据提供的更好。我们报道DIC的价值为所有模型的输出和评估模型拟合数据。
5 、结果(讨论A,B公司在使用模型是的问题或者是更适用于哪一种模型)
BN模型的预测性能是在表11中有表示。Bold cells显示显着的改善性能的措施。
表11表明通过统计技术构建的模型可以创造更好的性能预测。在A公司中,我们设法预测双周刊发布用百分之39平均使用模型# 2的MRE。而57%的释放比30%的MRE预测的要少。比较模型1,模型2也更适合数据,也就是,显着降低DIC。在B公司中,模型2也根据MdMRE实现更好的性能。这表明模型是基于数据量构建的。
混合模型,在两个公司的操作是不同的:在A公司。模型3比模型2实现了更显著的特性,通过依据MMRE和MdMRE中60%的近似改善和根据Pred(25)中75%的改善。因此,对定量数据的定性证据通过统计技术帮助了公司A的从业者,来预测释放后的缺陷。因为Gibbs抽样可以成功的掌握BNs的推理,用一个连续和分类变量的混合,并且它不需要使用任何离散化技术,为了采用推理算法。
RQ2:软件工程研究员和从业者应该在BNs创建期间根据环境采用混合方法。一种混合方法将会减少知识的独立性通过结合收集来的定量数据。研究员也应该知道BNs的动态来选择合适的算法。
在B公司,我们观察混合方法不能改善模型2的预测表达,即使我们t通过增加新子网来增加信息含量。这有可能是多个原因。一种解释是与调查收集到的数据质量相关。这项调查是从[ 55 ]中得到的,每个问题对应于子网节点的要求规范。这些问题可能不适合B公司基本规范活动,因此,相应的子网找不到整个BN提供的有价值的信息。;另一种解释可能与软件开发实践有关,和B公司开发团队的特征有关。像B公司一样的软件公司,有着相对较小的和凝聚力的团队,这些团队是由经验丰富的员工组成,并且也没有员工离职。由资深开发商制作的本地数据已经通过测量程序和工具收集起来了。因此,本地数据实际上可能代表了有效的专业知识。因此,通过调查收集到的知识可能不会在模型中作为新的证据。在这种情况下,定量的数据充分地反映了软件过程实施,和在BN的建设中可以优先于专家判断。但是,像A公司那样的公司,混合数据的收集方法可能会用于表示专业知识、定量数据和构建混合系统。
6 讨论
在模型构建期间,我们根据数据收集做了确定的决策。在本节中,我们讨论了我们的选择带来的的影响,在对模型的准确性和普遍性方面。
6.1 定性数据
在这项研究中使用的问卷是以前设计在开发生命周期阶段的代表软件,并在不同的设置中进一步验证。但是,其中一个案例,关于要求规范过程的问卷调查没有帮助我们改善混合模型的性能。我们考虑到这些问题的可能性可能在我们的工业案例不具有足够的代表性。因此,对于混合模型的强大对于A公司和B公司所产生的结果是不一样的。Fenton等人也讨论了测量过程的因素问题,因为这些因素可能不是重要的或者对于开发人来说甚至是适用的。作者称因为这个模型是不普遍的,对于测量是不需要的。因此,我们认为用一个更好的仪器用来在各组织中收集专业知识应被视为未来的工作。我们研究也表示集合专业知识不是一个容易的任务并且在不同的设置中也有着偏见。因此,仅使用专业知识不是很安全的选择在BN建设中。
6. 2 模型概化
在这些实证分析我们的意图不是要建立一个广义混合模型,这种模型可以用在任何工业环境中。但是研究表明BNs可以自动地用不同的算法技术构建,而这些算法在3.7节中有讲述,并且混合BNs实际上根据他们的预测能力可以更强大,捕获的定性和定量的证据,并确定因果关系。因此,我们认为研究员与从业者应该学习BNs的动态性能,能够使用和改变它们,基于环境和手头上的问题。
7 对效率的威胁
在本节中,我们考虑到效率的潜在威胁,在系统映射和BN建设中。
7.1 映射研究
映射的研究有一个更广阔的范围和搜索能力,可能限制一个或多个数据库【80】。在这项研究中,我们也限制了对四个主要的数据库的搜寻,并且旨在出版的研究中调查。在进行自动搜索这些数据库时我们可能错过了一些相关的研究;但是,我们认为最后重要的研究列表导致在软件工程领域BN文章的主要性。而且,我们的映射研究为第一个问题也提供了证据。
我们基于摘要、标题和关键字挑选了主要的研究,只可能在映射研究中有介绍性的错误,因为关于BN建设的具体信息常常会丢失。因此,我们也阅读了相关的选节,如果必要的话,全篇的文章解决了歧义。为了解决潜在的错误,我们讨论了一系列可疑分类的文章,直到我们达成了协议。
根据文章的分类,我们人工合成的初步研究得到的所有信息和为RQ1c与RQ1d形成的分类。在这个过程期间,我们可能丢失了建设学习和参数学习方面的肯定的技术。但是,我们已经验证了我们最后的分类,事实上与Darwiche的方法相似。因此,我们成功地用先前的研究验证了推理。
7.2 试验以及BNs
在本节中,我们强调内部,外部可能的威胁,构建及实验评价结论的有效性的混合贝叶斯网络。
内部效力:在观察其内部有效性关系的措施,我们应该在收集数据考虑可能出现的偏差。建立预测模型的数据采集是软件组织的一个具有挑战性的任务。为了避免数据收集的偏差,我们提供了该组织发布的管理团队和编写的脚本来提取所需的指标进行了验证。而且,我们调查在数据中可能的异常值,这些异常值有可能由于错误的度量引起的。我们手动追踪的极端值和讨论这些原因以及在将来的版本中,这种值在此处想的可能性。
我们国家在实验设计的主要结构的因果关系编码应以确定这些结构产生的可能的影响,也就是,度量,软件可靠性。简单的回归模型不能识别代表不同的工艺指标之间的因果关系和残留缺陷,即使他们已普遍使用在以前的研究中。贝叶斯网络解决了我们的问题,其目的是对数据的因果关系和用现有证据预测的后验分布。事实上,如果我们考虑软件度量的独立和建立一个简单的回归模型,我们发现,软件度量只能解释百分之32的变量。但是,考虑因果关系领域是很好的预测率,除了提供一个良好的了解开发生命周期的动态。因此,我们可以得出这样的结论:贝叶斯网络使我们能够确定是否有变化在独立变量中,使得因变量能观察到变化。
结合贝叶斯网络贝叶斯统计为避免过拟合的一个有效途径【7】。这是没有必要的单独训练建立网络和基于预测模型的测试数据中,因为MC技术避免了抽样偏差。另外,变量之间的因果关系基于不同的统计测试发现的,包括相关的统计,独立的测试,和图形的相关性分析。虽然我们不考虑一种由于其他的方法,我们发现对于这个问题,chi-plot作为一个例子。结果表明,贝叶斯网络是支持以证据为基础的软件工程决策的自然框架。
建构效率。软件过程的量化过程中,所有的开发和测试的指标,是根据前面的实证研究选择的。虽然没有研究根据本地数据指导了所有有代表性的过程,我们回顾了文献,形成更大的一组代表开发和测试过程的度量。我们还论了对这些指标的表8中的现有研究。定性因素,另一方面,以前被验证为有效的预测发布后的缺陷的一些商业软件系统。但是,作为未来的研究预测中,数据收集过程应该避免数据收集中的偏差。
8.结论
在本次研究中,我们关注了软件工程中的循证决策,和它与贝叶斯决策的密切的联系。一个BN对于结合证据总结和不确定的联系是一个很好的自然框架。更具体的事,BNs有掌握不同类型证据的能力,也就是,来自于真实数据、统计分布总结和专业判断的调查,在一个简单的混合模型中。BNs的建设是灵活的,有不同的推断算法和结构学习技术。因此,BNs在一些领域中很受欢迎,例如计算生物学与医疗保健中。在本次研究中,我们的目的是调查BNs在软件工程中是怎样被对待的,是否在我们的领域的最新技术不同于其他学科,和在软件工程中怎样使用BNs。为了完成这个,我们首先实施了系统映射研究和关于以下四个主要方面综合现有文献:主题,结构学习,参数学习,和变量类型。
在软件工程BNs应用的系统映射中表明BNS是没有得到很好的利用,并且研究员主要是用它作为黑盒工具(黑盒测试是通过测试来检测每个功能是否都能正常使用,是软件测试的主要方法之一)。在这个领域的许多研究中使用了专业的判断来识别因果关系和为了更容易推理喜欢变换成属性值的连续数据。其他的领域,例如计算生物学与医疗保健,另一方面,利用贝叶斯网络采用不同的结构和参数的学习技术。研究实践的更多的BNs,他们设法建立有效的援助医疗模式循证决策。
与计算生物学和医疗保健相似,我们需要使用多个数据源做出不确定条件下的决策。因此,我们提出了混合BN,这种BN利用广泛应用于其他学科的技术,例如:为结构学习和Gibbs抽样的独立性分析。在两个工业项目中,我们已经进行了实证研究,来评估混合模型对软件可靠性预测。我们的分析表明BNS的混合数据与不同的学习技术给从业人员提供更多的灵活性,使模型变得不那么依赖于专业。而且,推断的不确定性,提高软件工程决策。
当我们了解BNS的动力学和用于模型学习技术,这些模型使我们能够发现隐藏的变量之间的关系,这不能通过专业的推理就能得出。而且,BNS能够决定采用定性和定量的数据量和构建混合模型。理解了BNs的理论也能给我们带来使用这些模型的机会。事实上,由此产生的模型在视觉上比其他的人工智能技术更容易解释,因为此图也可以提供相关变量的见解和他们之间的关系。
未来,我们希望BNs的使用会有更大改进和变化和通过从其他领域转移的知识和工具,利用这些模型。关于软件可靠性预计,我们今后的研究方向是在指标和不同类型的缺陷之间建立专门的BN模型来捕捉独特的因果关系。
Acknowledge