一种用于软件缺陷预测的方法和装置制造方法

文档序号:6489617阅读:210来源:国知局
一种用于软件缺陷预测的方法和装置制造方法
【专利摘要】本发明涉及一种用于软件缺陷预测的方法和装置,其中,该装置包括:计算模块,用于根据与软件架构项相关的软件项目管理信息,计算可指示所述软件架构项的复杂度的至少一个度量值;以及,执行模块,用于根据所计算的至少一个度量值,执行所述软件架构项的缺陷预测。利用该方法和装置,能够在没有历史数据的情况下进行软件缺陷预测。
【专利说明】一种用于软件缺陷预测的方法和装置
【技术领域】
[0001]本发明涉及软件缺陷预测领域,尤其涉及一种用于软件缺陷预测的方法和装置。【背景技术】
[0002]软件己经成为影响国民经济、军事、政治乃至社会生活的重要因素,高可靠和复杂的软件系统非常依赖于其采用的软件的可靠性。然而,软件本身固有的属性使得软件系统中的缺陷是软件开发过程中不可避免的“副产品”,并且软件的缺陷通常会导致相关系统出错、失效甚至崩溃。
[0003]为此,人们通常会对编制出来的软件进行测试以发现软件中存在的缺陷并修正这些缺陷。然而任何检测技术并不能发现和排除所有的缺陷,总会有一些不为人知的原因导致缺陷产生,而这些潜在却不被发现的缺陷影响了软件的质量。
[0004]如果能预测出软件中尚未发现但仍存在的缺陷数目及缺陷分布,那么测试人员就能够快速地、准确地定位并纠正缺陷,从而提高软件的可靠性。为此,自20世纪70年代起,人们就开始发展软件缺陷预测技术,以对软件的缺陷数量或者缺陷分布进行预测。
[0005]现有的软件缺陷预测技术通常基于例如非线性回归分析等这样的常规建模方法利用历史数据,即对所开发软件的过去版本,或与所开发软件相类似的软件以及相关项目的度量数据,来预测软件中的缺陷。例如,采集软件所有过去版本的缺陷数量统计以及软件规模的度量值(常用的比如代码行数,L0C)做回归分析,建立统计模型,并以此为依据来预测新版本软件的缺陷密度。然而,在实际的软件项目开发环境中,常常没有历史数据或者没有足够的历史数据可用,从而无法使用现有的软件缺陷预测技术来进行软件缺陷预测。

【发明内容】

[0006]考虑到现有技术的以上问题,本发明实施例提供一种用于软件缺陷预测的方法和装置,其能够在没有历史数据的情况下进行软件缺陷预测。
[0007]按照本发明实施例的一种由计算机实现的用于软件缺陷预测的方法,包括:根据与软件架构项相关的软件项目管理信息,计算可指示所述软件架构项的复杂度的至少一个度量值;根据所述计算的至少一个度量值,确定影响因子,其中所述影响因子表示所述软件架构项对所述软件架构项所属的软件的质量的影响;以及根据所确定的影响因子,确定所述软件架构项存在缺陷的可能性。
[0008]其中,所述影响因子由所述度量值的乘积确定。
[0009]其中,所述至少一个度量值可以包括以下至少一个:参与开发和修改所述软件架构项的开发人员数目;开发和修改所述软件架构项所花费的时间;以及,开发和修改所述软件架构项所涉及的任务数目。
[0010]其中,所述软件架构项可以是软件的任一源文件、构成软件的任一软件模块或软件的任一软件版本。
[0011]其中,所述根据所确定的影响因子,确定所述软件架构项存在缺陷的可能性的步骤具体包括:根据所述计算的至少一个度量值,确定所述软件架构项的缺陷密度;以及,根据所确定的缺陷密度,确定所述软件架构项存在缺陷的可能性。
[0012]按照本发明实施例的一种用于软件缺陷预测的装置,包括:计算模块,用于根据与软件架构项相关的软件项目管理信息,计算可指示所述软件架构项的复杂度的至少一个度量值;以及缺陷可能性确认模块,用于根据所计算的至少一个度量值,确定影响因子,其中所述影响因子表示所述软件架构项对所述软件架构项所属的软件的质量的影响;以及根据所确定的影响因子,确定所述软件架构项存在缺陷的可能性。
[0013]其中,所述影响因子由所述度量值的乘积确定。
[0014]其中,所述至少一个度量值可以包括以下至少一个:参与开发和修改所述软件架构项的开发人员数目;开发和修改所述软件架构项所花费的时间;以及,开发和修改所述软件架构项所涉及的任务数目。
[0015]其中,所述软件架构项可以是软件的任一源文件、构成软件的任一软件模块或软件的任一软件版本。
[0016]其中,所述缺陷可能性确认模块包括:缺陷密度确认模块,用于根据所述计算的至少一个度量值,确定所述软件架构项的缺陷密度,从而确定所述软件架构项存在缺陷的可能性。
[0017]从上面的描述可以看出,本发明实施例的方案不使用历史数据而是利用软件项目管理信息来进行软件缺陷预测。因此,相对于现有技术,本发明实施例的方案能够在没有历史数据的情况下进行软件缺陷预测。并且,本发明实施例所使用的软件项目管理信息,在大多数的软件研发项目中都能够很方便的获取(比如通过项目管理软件,或是软件项目中常见的配置管理系统来获取),因而具有较高的实用性。
【专利附图】

【附图说明】
[0018]本发明的其它特点、特征、优点和益处通过以下结合附图的详细描述将变得更加显而易见。其中:
[0019]图1示出了按照本发明一个实施例的用于软件缺陷预测的方法的流程图;
[0020]图2示出了按照本发明一个实施例的计算影响因子的示例;
[0021]图3示出了按照本发明一个实施例的用于软件缺陷预测的装置的示意图;
[0022]图4A示出了按照本发明一个实施例的执行模块的示意图;
[0023]图4B示出了按照本发明另一实施例的执行模块的示意图;以及
[0024]图5示出了按照本发明一个实施例的用于软件缺陷预测的设备的示意图。
【具体实施方式】
[0025]发明人经过调查发现:目前在开发软件时,通常把所开发的软件作为一个项目来看待,并且在软件的整个开发过程中,会把软件的各种软件项目管理信息存储在项目开发数据库中。这里,软件项目管理信息可以包括但不局限于:参与开发软件的每一个软件架构项的各个开发人员、参与修改软件的每一个软件架构项的各个开发人员、每一个开发人员在开发所参与的每一个软件架构项时所付出的时间、每一个开发人员在修改所参与的每一个软件架构项时所付出的时间、开发每一个软件架构项所涉及的各个任务、修改每一个软件架构项所涉及的各个任务等。这里,软件架构项可以是软件的任一源文件、构成软件的任一软件模块或者软件的任一软件版本。
[0026]此外,发明人经过大量研究还发现:软件的缺陷往往与软件的复杂度有关。软件越复杂,软件存在缺陷的概率越大,出现缺陷的数量也越多。
[0027]基于以上发现,发明人提出了本发明实施例的方案:首先根据与软件架构项相关的软件项目管理信息来计算可指示该软件架构项的复杂度的至少一个度量值,然后根据所计算的至少一个度量值来执行该软件架构项的缺陷预测。可见,本发明实施例的技术方案不使用历史数据而是利用软件项目管理信息来执行软件缺陷预测。因此,与现有技术相比,本发明实施例的技术方案能够在没有历史数据的情况下进行软件缺陷预测。
[0028]下面,将结合附图详细描述本发明的各个实施例。
[0029]现在参见图1,其示出了按照本发明一个实施例的用于软件缺陷预测的方法的流程图。本领域技术人员应当理解,图1所示的方法可以由计算机来实现。如图1所示,在步骤S100,从软件R的项目开发数据库中查找出与软件R的软件架构项X相关的以下软件项目管理信息:参与开发软件R的软件架构项X的各个开发人员、参与修改软件R的软件架构项X的各个开发人员、参与开发软件架构项X的每个开发人员开发软件架构项X的时间、参与修改软件架构项X的每个开发人员修改软件架构项X的时间、开发软件架构项X所涉及的各个任务、修改软件架构项X所涉及的各个任务。这里,软件架构项X可以是软件R的任一源文件、构成软件R的任一软件模块或者软件R的任一软件版本。
[0030]在步骤S110,利用所查找的软件项目管理信息,计算参与开发和修改软件架构项X的开发人员数目、开发和修改软件架构项X所花费的时间、以及开发和修改软件架构项X所涉及的任务数目,作为用于指示软件架构项X的复杂度的三个度量值。
[0031]其中,通过统计参与开发软件架构项X的开发人员的数目和参与修改软件架构项X的开发人员的数目并相加得到参与开发和修改软件架构项X的开发人员数目,通过把参与开发软件架构项X的每个开发人员开发软件架构项X的时间和参与修改软件架构项X的每个开发人员修改软件架构项X的时间相加得到开发和修改软件架构项X所花费的时间,以及通过统计开发软件架构项X所涉及的任务数目和修改软件架构项X所涉及的任务数目并相加得到开发和修改软件架构项X所涉及的任务数目。
[0032]在步骤S120,把参与开发和修改软件架构项X的开发人员数目、开发和修改软件架构项X所花费的时间、以及开发和修改软件架构项X所涉及的任务数目三者相乘,计算得到影响因子,其表示软件架构项X对软件R的质量的影响。
[0033]在步骤S130,根据所计算的影响因子,确定软件架构项X存在缺陷的可能性。通常,影响因子越大,软件架构项X存在缺陷的可能性就越大。
[0034]现在参见图2,其示出了按照本发明一个实施例的计算影响因子的示例。其中,d表示参与开发和修改软件架构项的开发人员数目,e表示开发和修改软件架构项所花费的时间,以及c表示开发和修改软件架构项所涉及的任务数目。
[0035]从图2可以看出,软件的其中一个软件版本1.0包括软件模块I和软件模块2,其中,软件模块I包括源文件1.1和源文件1.2,软件模块2包括源文件2.1、源文件2.2和源文件2.3。
[0036]源文件1.1的d、e、c分别为2、36、2,从而源文件1.1的影响因子是2*36*2=144。源文件1.2的d、e、c分别为1、16、1,从而源文件1.2的影响因子是1*16*1=16。源文件2.1的d、e、c分别为2、40、4,从而源文件2.1的影响因子是2*40*4=320。源文件2.2的d、e、c分别为3、96、7,从而源文件2.2的影响因子是3*96*7=2016。源文件2.3的d、e、c分别为1、12、1,从而源文件2.3的影响因子是1*12*1=12。
[0037]因为软件模块I包括源文件1.1和源文件1.2,所以软件模块I的d、e、c分别为源文件1.1和源文件1.2的d、e、c之和,即软件模块I的d、e、c分别为3、52、3,从而软件模块I的影响因子是3*52*3=468。因为软件模块2包括源文件2.1、源文件2.2和源文件
2.3,所以软件模块2的d、e、c分别为源文件2.1、源文件2.2和源文件2.3的d、e、c之和,即软件模块2的d、e、c分别为6、148、12,从而软件模块2的影响因子是6*148*12=10656。
[0038]因为软件版本1.0包括软件模块I和软件模块2,所以软件版本1.0的d、e、c分别为软件模块I和软件模块2的d、e、c之和,即软件版本1.0的d、e、c分别为9、200、15,从而软件版本1.0的影响因子是9*200*15=27000。
[0039]这里,从源文件的层次来看,源文件1.1、源文件1.2、源文件2.1和源文件2.3的影响因子相对较小,而源文件2.2的影响因子相对较大,因此,源文件1.1、源文件1.2、源文件2.1和源文件2.3存在缺陷的可能性较小,而源文件2.2存在缺陷的可能性较大。
[0040]从软件模块的层次来看,软件模块I的影响因子相对较小,而软件模块2的影响因子相对较大,因此,软件模块I存在缺陷的可能性较小,而软件模块2存在缺陷的可能性较大。
[0041]其它变型
[0042]本领域技术人员应当理解,虽然在上面描述的实施例中,用于指示软件架构项的复杂度的度量值包括参与开发和修改软件架构项X的开发人员数目、开发和修改软件架构项X所花费的时间以及开发和修改软件架构项X所涉及的任务数目,然而,在本发明中,用于指示软件架构项的复杂度的度量值并不局限于此。在本发明的其他一些实施例中,用于指示软件架构项的复杂度的度量值也可以仅包括参与开发和修改软件架构项X的开发人员数目、开发和修改软件架构项X所花费的时间以及开发和修改软件架构项X所涉及的任务数目三者的其中一个或两个,或者用于指示软件架构项的复杂度的度量值也可以是除了参与开发和修改软件架构项X的开发人员数目、开发和修改软件架构项X所花费的时间以及开发和修改软件架构项X所涉及的任务数目三者之外的可指示软件架构项的复杂度的其他度量值,或者,用于指示软件架构项的复杂度的度量值也可以包括参与开发和修改软件架构项X的开发人员数目、开发和修改软件架构项X所花费的时间以及开发和修改软件架构项X所涉及的任务数目三者的至少一个和可指示软件架构项的复杂度的其他度量值。
[0043]本领域技术人员应当理解,虽然在上面描述的实施例的步骤S120中,通过把用于指示软件架构项的复杂度的度量值相乘来计算影响因子,然而,本发明并不局限于此。在本发明的其他一些实施例中,也可以利用其它的计算方式来计算影响因子。例如,可以通过把用于指示软件架构项的复杂度的度量值相加来计算影响因子。
[0044]本领域技术人员应当理解,虽然在上面描述的实施例中,通过利用用于指示软件架构项的复杂度的度量值计算影响因子并根据所计算的影响因子确定软件架构项X存在缺陷的可能性,来执行软件架构项X的缺陷预测,然而,本发明并不局限于此。
[0045]在本发明的其他一些实施例中,也可以通过利用用于指示软件架构项的复杂度的度量值计算缺陷密度并根据所计算的缺陷密度确定软件架构项存在缺陷的可能性的方式,来执行软件架构项X的缺陷预测。
[0046]例如,利用参与开发和修改软件架构项X的开发人员数目以及开发和修改软件架构项X所涉及的任务数目根据以下等式(I)来计算软件架构项X的缺陷密度,从而根据该缺陷密度来确定软件架构项X存在缺陷的可能性。通常,缺陷密度越大,软件架构项X存在缺陷的可能性就越大。
[0047]
【权利要求】
1.一种由计算机实现的用于软件缺陷预测的方法,包括: 根据与软件架构项相关的软件项目管理信息,计算可指示所述软件架构项的复杂度的至少一个度量值;以及 根据所述计算的至少一个度量值,确定影响因子,其中所述影响因子表示所述软件架构项对所述软件架构项所属的软件的质量的影响;以及 根据所确定的影响因子,确定所述软件架构项存在缺陷的可能性。
2.如权利要求1中的任意一个所述的方法,其中,所述影响因子由所述度量值的乘积确定。
3.如权利要求1和2中任意一个所述的方法,其中,所述度量值包括以下至少一个: 参与开发和修改所述软件架构项的开发人员数目; 开发和修改所述软件架构项所花费的时间;以及 开发和修改所述软件架构项所涉及的任务数目。
4.如权利要求1所述的方法,其中,所述软件架构项是软件的任一源文件、构成软件的任一软件模块或软件的任一软件版本。
5.如权利要求1和2中任意一个所述的方法,其中,所述根据所确定的影响因子,确定所述软件架构项存在缺陷的可能性的步骤具体包括: 根据所确定的影响因子,确定所述软件架构项的缺陷密度;以及根据所确定的缺陷密度,确定所述软件架构项存在缺陷的可能性。
6.一种用于软件缺陷预测的 装置,包括: 计算模块,用于根据与软件架构项相关的软件项目管理信息,计算可指示所述软件架构项的复杂度的至少一个度量值;以及 缺陷可能性确认模块,用于根据所计算的至少一个度量值,确定影响因子,其中所述影响因子表示所述软件架构项对所述软件架构项所属的软件的质量的影响;以及根据所确定的影响因子,确定所述软件架构项存在缺陷的可能性。
7.如权利要求6中的装置,其中,所述影响因子由所述度量值的乘积确定。
8.如权利要求6和7中任意一个所述的装置,其中,所述度量值包括以下至少一个: 参与开发和修改所述软件架构项的开发人员数目; 开发和修改所述软件架构项所花费的时间;以及 开发和修改所述软件架构项所涉及的任务数目。
9.如权利要求6所述的装置,其中,所述软件架构项是软件的任一源文件、构成软件的任一软件模块或软件的任一软件版本。
10.如权利要求6-8中的任意一个所述的装置,其中,所述缺陷可能性确认模块进一步包括: 缺陷密度确认模块,用于根据所述计算的至少一个度量值,确定所述软件架构项的缺陷密度,从而确定所述软件架构项存在缺陷的可能性。
11.一种用于缺陷预测的设备,包括: 存储器,用于存储可执行指令;以及 处理器,用于根据所存储的可执行指令,执行权利要求1-5中的任意一个所包括的步骤。
12.一种机器可读介质,其上存储有可执行指令,当所述可执行指令被执行时,使得机器执行权利要求 1-5中的任意一个所包括的步骤。
【文档编号】G06F11/36GK103713990SQ201210376046
【公开日】2014年4月9日 申请日期:2012年9月29日 优先权日:2012年9月29日
【发明者】彭飞 申请人:西门子公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1