软件模块大小与缺陷密度关系的研究

发表时间:2019/8/8   来源:《知识-力量》2019年9月37期   作者:何伟文
[导读] 在软件开发过程中,软件开发者面临着将缺陷数量降到最低程度的挑战。采用缺陷密度指标,开发者可以明确产品优化的可能性。由于缺陷总数取决于模块大小,因此开发者需要计算模块的最佳大小使得缺陷密度降到最低。本文阐述了一种改进模型,可以反映缺陷密度和不同模块大小之间的关系。

(广州南洋理工职业学院,广东 广州 510510

摘要:在软件开发过程中,软件开发者面临着将缺陷数量降到最低程度的挑战。采用缺陷密度指标,开发者可以明确产品优化的可能性。由于缺陷总数取决于模块大小,因此开发者需要计算模块的最佳大小使得缺陷密度降到最低。本文阐述了一种改进模型,可以反映缺陷密度和不同模块大小之间的关系。通过设定参数约束条件获取不同的变量和参数值,使用拟建模型与相关方面的三组有效数据进行检验。并且采用曲线拟合法来获取具有缺陷密度最小的模块尺寸。实验结果表明:利用有效的软件模块大小分布,可对缺陷密度进行优化;大的模块可分割成小的模块,小的模块可合并在一起,从而使得整体缺陷密度最小化。

关键词:模块大小;缺陷密度;最佳模块大小;最小缺陷密度

Research on The Relationship between Software Module Size and Defect Density

HE WeiWen

(Guangzhou Nanyang College,Guangzhou 510510,China)

AbstractSoftware developers are facing challenges in minimizing the number of defects during the software development.Using defect density parameter,developers can identify the possibilities of improvements in the product.Since the total number of defects depends on module size,so there is need to calculate the optimal size of the module to minimize the defect density.In this paper,an improved model has been formulated that indicates the relationship between defect density and variable size of modules.Three available data sets related to concern aspect have been examined with the proposed model by taking the distinct values of variables and parameter by putting some constraint on parameters.And curve fitting method has been used to obtain the size of module with minimum defect density.The experimental results show that the defect density can be optimized by effective distribution of size of software modules.The larger modules can be broken into smaller modules and smaller modules can be merged to minimize the overall defect density.

Keywordsmodule sizedefect densityoptimal size of moduleminimum defect density

 


引言

软件产品的可靠性是一个重要因素,开发者在正式发布产品前会对其进行考虑。缺陷密度(DD)是影响软件可靠性的重要因素。研究表明,分布于软件系统中的缺陷具有随机性,而软件模块的大小会影响缺陷密度。

1 相关工作

小型模块的软件设计相对于大型模块来讲较为容易。因此通过缩小模块的大小可以改善软件设计。BasiliPerricone[1]提到过大型模块有较低的缺陷密度。他们的分析是根据小型模块的数据集做出来的。Withrow[3]的研究显示缺陷密度随着模块大小的增加而下降,直到某一点后缺陷密度随着模块大小的增加而增加。MalaiyaDenton[4]提出既考虑到缺陷密度上升也考虑到下降这两种趋势的模型。他们为缺陷密度设定两种不同的范围。

本文主要讨论MalaiyaDenton设计的缺陷密度模型,并提出一个改进后的具有两个附加参数的模型,该模型可以更加精准地反映缺陷密度和不同模块大小之间的关系。

2 拟建模型

本文首先研究在软件系统中负责对缺陷进行分类的两种机制。

在目前的方案中,大多数的软件系统由模块组成,模块本身由指令组成。基于这两个因素,MalaiyaDenton提出一个复合模型[4],使用参数控制缺陷密度。在该模型中,仅仅建立缺陷密度与模块大小之间的关系,而它未能给出为减少缺陷密度而改变模块大小的参数。因此,为了分析由于减少缺陷密度而产生的模块大小变化,需要在模型中加入一些参数。

第一类的缺陷可能与其他模块相互作用时相关的。第二类的缺陷可能是与指令相关。在拟建模型中,𝐷𝑚表示与模块相关缺陷的缺陷密度,𝐷𝑖 表示与指令相关缺陷的缺陷密度,D表示总体的缺陷密度。

第一类的缺陷。这种类型的缺陷与在模块间传递的参数相关。其中的一些缺陷可能与模块相互间的假定和全局数据有关。对于这种类型的缺陷,模块间的均匀分布一直受到关注。

设模块大小为s,与模块大小相关的缺陷密度𝐷𝑚为:

其中l为任意非零整数,它加入模型是用来以指数比例降低缺陷密度;为比例常数。(2)中s的最小数值为1为一个合适的参数。

第二类缺陷。这种类型是由于错误执行指令或模块而产生的缺陷。因此这些缺陷可以被看作是指令缺陷。为了得到这些缺陷的缺陷密度,首先要考虑错误指令的可能性。该可能性由两部分组成:第一个部分被设定为常数,另一个部分取决于指令间的相互作用。因此第二个组成部分与模块大小Sn是成比例的。所以,与指令相关的缺陷密度可以表示为:

其中是另一个比例参数,n是加入的非零整数,它以指数比例降低缺陷密度。结合(2)和(3),总缺陷密度可由以下方程得出:

方程(4)表示与模块相关的缺陷和与指令相关的缺陷而产生的总缺陷密度,其中是因变量,s是自变量。

从上述方程可明显看出相对于模块大小s,总缺陷密度可以被优化,并且可以使用最大值和最小值(基于微积分)计算最小缺陷密度,假设给定方程定义明确并在域内可微分。

为找出缺陷密度最小值,对s微分(4),得出:

为得出最大最小值,使(5)等于0并且使

思考下列方程:

方程式(7)给出模块大小s的最小值。为了计算相对于这个最小模块大小的最小缺陷密度,二次微分(5)。思考下列方程:

将(7)中的S值带入(8),得出

只有常数𝛼𝛽都是正数并且ln都是非零正整数时(9)才是正值。因此在s=这一点,并在某些限制下缺陷密度值最小。

所以最小缺陷密度为:

也可为缺陷密度与模块大小建立模型,带有更多变量参数,但是证明关于这些参数的假设可能会很复杂。

下面,我们以特殊情况进行分析:

i)如果𝑙=1𝑛=1,即可得出

𝐷𝑚(𝑠)=𝛼/𝑠 and 𝐷𝑖(𝑠)=𝛽+𝛾𝑠,总缺陷密度为:

s微分(11),得出

所以最小缺陷密度的模型大小 为:

常数𝛼,𝛽𝛾在一些限制情况下,该种模型可分成两个明确的域。在第一个域中,缺陷密度随着模块大小的增加而减少,在另外一个域中,缺陷密度随着模块大小的增加而增加。

3 关于拟建模型的分析

上述的讨论中曾提及建立该模型是为了说明软件缺陷密度和模块大小之间的关系。在这一部分,我们为了分析拟建模型而进行数据收集,探索计算两种特殊情况下的参数值所采用的方法,并利用参数值计算缺陷密度,最后,研究了与最小缺陷密度相对应的最佳模块大小。

3.1.数据收集

𝑙=1,n=1𝑙=2,n=2两组数值下分析拟建模型;也可在𝑙n为其他不同数值的情况下分析拟建模型。但是在本文中仅使用特殊情况(i)和(ii)来验证该模型。本文使用三组不同的数据分析该模型。BasiliPerricone收集的数据为第一组分析数据。该数据组由小尺寸模块组成并且模块大小很少大于200。该数据组在表3中列出。使用Withrow收集的数据为第二组。

该数据组由尺寸较大的模块组成并在表4中列出。第三组数据从PDRPromise数据库)[6]中收集,该数据组收集源自23个全封闭的源项目,其中包含模块数量,模块大小和缺陷密度。该组数据在表5中列出。

1 特殊情况(i)下的参数值

数据来源

参数值

最佳模块大小

最小缺陷密度

/KLOC

     

Basili

6.136

18.384

0.0489

Withrow

36.41

4.13

0.0009

203.388

4.486

PDR

704.71

0.125

0.00005

3760.904

0.496

2 特殊情况(ii)下的参数值

数据来源

参数值

最佳模块大小

最小缺陷密度

/KLOC

 

Basili

6960.4

13.6

0.0001

Withrow

2253.3

4.544

0.000000154

332.461334

4.574212

PDR

98450

0.5499

7𝐸10

3443.73259

0.566503

3.2.参数计算

在前部分,我们探讨了用于研究拟建模型的三组数据,现在使用曲线拟合法计算𝛼,𝛽𝛾三个参数值。从三组数据并且在情况(i)(ii) 𝑙𝑛 为不同数值的条件下获得这三个参数值。第一组数据仅由小尺寸模块组成,因此根据拟建模型,参数𝛾起很小的作用。该组数据在第二域没有显示任何数值,仅在第一域内可见:缺陷密度随着模块大小的增加而减小。因此在表1和表2中第一组数据最佳模块大小和最小缺陷密度的区域保持空白。表1和表2中给出各个参数值。应用公式(13)计算情况(i)下模块大小的最佳数值;应用公式(14)计算相对于该最佳大小的最小缺陷密度并在表1中列出。同样,表2列出在情况(ii),模块大小的最佳值和最小缺陷密度。

3.3 计算缺陷密度

计算两种情况下的参数值后,就可以算出相对于拟建模型的缺陷密度。我们分别对比了两种特殊情况下的缺陷密度数值和使用图表观察到的缺陷密度数值。

3.3.1 使用Basili数据计算缺陷密度

【见表3,并在图1中标出】

根据BasiliPerricone[1]数据分析缺陷密度随着模块大小的增长而减小。分析表明:在情况(i)和(ii)下观测到的数据和合适的数值之间的关系。

3.3.2使用Withrow的数据计算缺陷密度

Basili的数据中,没有使用较大的模块,而分析Withrow[3]的数据,该组数据的模块尺寸较大。由于有较大的模块尺寸,两个域皆可见。表4中列出这些数据(来自于已算出缺陷密度值的Ada模块),并在图2中绘出。

我们的拟建模型显示两种趋势,在两种特殊情况中皆可见这两种趋势。较大型模块的缺陷密度有上升趋势,有可能是因为相对于小型模块,大型模块被彻底检测的几率减少了,导致大型模块的缺陷密度相对较大。从图表可以观测到随着模块大小的增加,情况(ii)得出的最小缺陷密度更为理想。

3 Basili数据

序号

大小(LOC

模块(个)

 

观测值

缺陷密度

/KLOC

情况(i)

情况(ii

1

0–50

258

16

15.817

16.084

2

51–100

70

12.6

13.433

13.096

3

101–150

26

12.4

11.008

11.209

4

151–200

13

7.6

8.574

8.794

5

>200

3

6.4

6.135

6.211

观测的数值

    情况(i

情况(ii

 

1 情况(i)和(ii)中Basili数据的缺陷密度变化

4 Withrow数据

序号

规格(LOC

模块(个)

 

观测值

缺陷密度

情况(i)

情况(ii

1

4–62

93

5.4

4.765

5.112

2

64–97

39

4.9

4.584

4.771

3

103–154

52

3.4

4.503

4.638

4

161–250

53

1.8

4.501

4.589

5

251–397

46

5.2

4.580

4.583

6

402–625

31

5.6

4.755

4.611

7

651–949

22

6.8

5.066

4.700

8

1050–5160

26

8.3

5.240

4.767

       观测的数值

情况(i

               情况(ii)       

2 情况(i)和(ii)中Withrow数据的缺陷密度

3.3.3使用PDR的数据计算缺陷密度

第三组数据收集自PDR[6]。这些数据和情况(i)和(ii)中计算出的缺陷密度在表5和图3中列出。

该数据组也体现了缺陷密度下降和上升两种趋势的两个域。从图3可推断相对于情况(i),情况(ii)给出改进后的结果。对该数据组的分析结果表明对于非常大的模块尺寸,缺陷密度有很小的变化。因此可以推论一旦模块大小呈几何级增长,缺陷密度的增长率随着模块的大小而降低。

序号

规格(LOC

模块(个)

 

观测值

缺陷密度

情况(i)

情况(ii

1

1–132

30197

5.6

5.470

6.200

2

133–465

5209

1.39

1.664

1.005

3

466–1263

1065

0.77

0.746

0.613

4

1266–2927

222

0.66

0.512

0.567

5

2928–9878

40

0.61

0.690

0.619

观测的数值

      情况(i

      情况(ii

3:情况(i)和(ii)中PDR数据的缺陷密度变化

4 性能评价

MalaiyaDenton[4]提出的模型说明了在系统生命周期中,模块尺寸和缺陷密度之间的关系。在该模型中,模块尺寸的变动区间很小;而相对于Malaiya的模型,我们的拟建模型的模块尺寸范围是通过采用两个附加参数(𝑙n)和模块大小(s)的整数次幂而变化的。

相对于Malaiya的模型,采用我们的拟建模型和数据组(MalaiyaDenton使用的两组数据和PDR数据),可观测到最小缺陷密度和最佳模块尺寸的完善。图1表明模块尺寸2次幂(即:S2)时得到的结果与观测的缺陷密度相似。同样,图2表示模块尺寸2次幂(S2)时,缺陷密度得到优化。从图3可以看到采用PDR数据组合并模块尺寸2次幂(S2)后得到的更加优化的结果;而且,当模块尺寸的幂数增加时,拟建模型可提供更准确的结果。

5 结语

本文提出一种模型来阐述模块大小对缺陷密度的影响。缺陷密度会随着模块大小的增加而下降,而当模块大小超出最优值时,缺陷密度会逐渐增加。本文在Malaiya等人提出的模型基础上增添了两个参数,并利用Malaiya等人使用的数据集和从PDR收集的数据集对拟建模型进行分析。通过分析两个特殊情况(iii),反映了相对于原先的观测值,缺陷密度得到优化。所以,我们可以利用所提出的模型,确定模块的最佳大小,从而可以在软件开发生命周期中,有效地设置模块的大小。本文还确定了对模块大小进行最佳分布的条件。通过本文提出的方法,可以利用软件模块大小的有效分布,来实现缺陷密度的优化。

参考文献

[1]V.R.Basili and B.R.Perricone,“Software errors and complexity,” Communications of the ACM,vol.27,no.1,pp.42–52,1984.

[2]I.Alsmadi and H.Najadat,“Evaluating the change of software fault behavior with dataset attributes based on categorical correlation,”Advances in Engineering Sotware,vol.42,no.8,pp.535–546,2011.

[3]C.Withrow,“Error density and size in Ada software,”IEEE otware,vol.7,no.1,pp.26–30,1990.

[4]Y.K.Malaiya and J.A.Denton,“Module size distribution and defect density,”in Proceedings of the 11th International Symposium on Software Reliability Engineering (ISSRE '00),pp.62–71,October 2000.

[5]李冬.L公式基于Scrum流程的软件质量研究[D].上海交通大学,2015.

[6]http://promisedata.googlecode.com/

[7]尤艺,段洪栋,王瀚超.缺陷密度法的软件测试质量度量分析技术[J].计算机仿真,2015,32(8):451-454.

[8]陈翔,顾庆,刘望舒,刘树龙,倪超.静态软件缺陷预测方法研究[J].软件学报,2016,27(01):1-25.

[9]杨腾翔,万琳,王钦钊,马振宇,韩志贺.基于支持向量回归的软件缺陷密度预测模型[J].装甲兵工程学院学报,2017,31(05):86-90.

 

作者简介:何伟文(1970-),男,广东省广州市人,硕士,高级工程师,研究方向:系统工程与算法分析。
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: