APP下载

基于社会网络的软件缺陷预防的研究

2015-09-26侯中伟任洪敏上海海事大学信息工程学院上海201306

现代计算机 2015年21期
关键词:软件缺陷测试者社团

侯中伟,任洪敏(上海海事大学信息工程学院,上海 201306)

基于社会网络的软件缺陷预防的研究

侯中伟,任洪敏
(上海海事大学信息工程学院,上海201306)

0 引言

在软件开发的过程中,难免会遇到各种各样的缺陷问题,而这些缺陷的产生,在不同程度上给软件企业带来了极大的困扰。为了使软件企业部门能够生产出高质量的产品,在缺陷方面,各领域也做了大量的研究,包括各种软件缺陷管理工具的开发以及应用,有效地管理缺陷,这在很大程度上帮助开发者或许测试者尽量避免缺陷问题的产生。然而,软件缺陷很难一次性解决,更不可能全部解决,需要开发者或测试者从软件开发的初始阶段就要尽量预防,了解清楚缺陷问题的产生,包括缺陷产生的根本原因、分布密度,以及缺陷在整个软件开发过程中的严重性等级、优先级等。只有这样,才能生产出更高效的产品,减少不必要的人力、财力的浪费。

1 软件缺陷数据的存储

软件缺陷数据的存储可以说在整个软件开发过程中起着关键作用,它不仅能够有效地实现数据的存储,而且好的数据存储方式有助于开发者或测试者快速地提取、操作数据,从根本上提高软件缺陷分析与预防的效率。

首先,我们给缺陷数据定义几个比较重要的属性,如表1。

表1 缺陷数据定义表

从表中我们可以直观地看出缺陷数据定义过程中用到的一些重要属性,例如,通过Title属性我们可以直接找到某缺陷,Type属性可以很明确地告知我们哪些缺陷为同一类型缺陷,从而找到缺陷的归属,Cause属性、Severity属性、Priority属性指出缺陷产生原因以及不同程度的等级,这从一定程度上可以让开发者或测试者了解缺陷内容。

根据列出的缺陷数据属性,我们运用两种方法存储数据,一种方法利用关系数据库MySQL,另一种方法利用图形数据库Neo4j,比较两者在存储数据过程中的区别。

关系数据库中,根据需求,我们可以给出E-R图,实体Person与Defect的关系如图1。

图1 E-R图

用户与缺陷之间是多对多的关系,一个用户可以管理多个缺陷,而每个缺陷的管理者可能由多个用户共同来管理;用户与用户、缺陷与缺陷之间利用本身拥有的属性关联,这里由于属性过多就不一一列出,只是简单列出用户与缺陷之间的关系。

图形数据库中,根据需求,我们也可以给出数据库的图形表现形式,即将点、边、属性联系在一起,构成一个基于社会网络的缺陷数据模型,如图2。

图2 基于社会网络的缺陷数据模型

该缺陷数据模型比较容易理解:由用户和缺陷两个实体组成,然后用户实体通过特殊的关系与缺陷实体连接。Person实体包含两个关系:多个Person实例之间通过Colleague关系连接,但不能连接自己,Management连接到最近的Defect实体;Defect实体也包含两个关系:多个Defect实体之间通过next关系连接,可以表示主线上的下一个Defect实体,Management连接到最近的Person实体。

通过对数据的存储结构图,可以看出:若缺陷数据之间有一定的关系网,那么利用关系数据库描述这一过程会很复杂,不仅占用存储空间,而且查找效率也不是很高,所以利用图形数据库,可以通过边的关系很容易找到缺陷数据;若给数据库表添加一些额外的数据,我们很可能需要重构关系数据库,带来不必要的麻烦,而使用图形数据库的话,我们只需要动态地添加几个节点或边。

2 软件缺陷中的社会网络划分

从传统意义上讲,社交网络指的是由一些个人或组织通过他们之间的关系所构成的一个复杂的网络结构,而这种关系可以是同学、朋友、同事或亲戚。本文则依靠这种特殊的网络结构,利用社交网络的划分算法对网络结构中的软件缺陷与缺陷之间的关系进行分析,从而得到一定的缺陷社团划分。

本文主要利用Newman等人的优化模块度的快速算法,即FN算法,它是一个启发式算法,主要引入了一个模块性函数Q,通过最大化Q函数,来实现缺陷社团的发现。

FN算法的具体步骤如下:

(1)网络中的每个缺陷节点作为一个小网络,这样n个缺陷节点的网络就有n个小网络,初始化后,eij=缺陷节点i与j相连,表示缺陷节点i 0其他的度,2m表示网络结构中边的总数);

(2)当两个节点之间有边时,对节点进行合并,然后计算模块度增量ΔQ,其中ΔQ=eij+eji-2aiaj=2(eij-aiaj);

(3)选择ΔQ变化最大的缺陷节点进行合并,更新矩阵eij;

(4)重复执行第(2)步与第(3)步,直到整个原网络构成为一个大的社团。

从一定程度上讲,软件缺陷的有效划分一部分取决于软件缺陷数据的存储,另一部分则取决于社会网络的社团划分算法。在算法优化改进方面,我们在FN算法的步骤(2)中,主要是将图形数据库Neo4j自带的一些求最短路径的方法运用到社会网络中节点合并的过程,这样不仅可以减少我们的工作量,而且还可以在很大程度提高算法的效率,从而对缺陷数据进行有效的社团划分。那么根据上面论述的FN算法步骤和存储的缺陷数据,我们可以初步得到FN算法的层次聚类树,如图3。

3 结语

本文区别于传统的软件缺陷的分析与预防方法,引入社会网络的相关概念,即利用社会网络的社团划分算法对软件缺陷进行划分。一方面借助图形数据库Neo4j实现软件缺陷的存储,减少内存的占有率,提高软件缺陷数据的存储效率;另一方面利用社团网络的聚类算法FN算法,划分软件缺陷的社团,进而有助于开发者或测试者提前预知缺陷存在的模块,提高软件开发的效率。

图3 FN算法的层次聚类树

[1]刘海,郝克刚.软件缺陷数据的定义[J].计算机应用,2008(1).

[2]闰振兴,郑骏.软件缺陷属性度量与软件过程管理方法研究[J].计算机与数字工程,2010.

[3](美)Houman Younessi.面向对象的软件缺陷管理[M].赵文耘.机械工业出版,2004.

[4]尹相乐,马力,关昕.软件缺陷分类的研究[J].计算机工程与设计,2008,29(7):4910-4912.

[5]邹琴.动态社交网络中社区划分算法研究[D].硕士学位论文,2012(1):23~24

[6]王伟欣.复杂网络社团结构挖掘算法的研究[D].硕士学位论文,2013(6):28

[7]Newman M E J.Fast algorithm for detecting community structure in networks[J].Physical Review E,2004,69(6):066-133.

[8]Clauset A.Finding local community structure in networks[J].Physical Review E,2005,72(2):026-132

[9]Girvan M,Newman M E J.Community structure in social and biological networks[J].Proceedings of the National Academy of Sciences,2002,99(12):7821-7826

[10]Neo4j.org官方网站.Neo4j中文[S/OL].[2014-6-10].http://www.neo4j.org.cn/.

Software Defects;Data Storage;Social Network;Partitioning Algorithm;Defects Prevention

Research on the Software Defects Prevention Based on Social Network

HOU Zhong-wei,Ren Hong-min
(College of Information Engineering,Shanghai Maritime University,Shanghai 201306)

1007-1423(2015)21-0011-03

10.3969/j.issn.1007-1423.2015.21.003

侯中伟(1988-),女,山东邹城人,硕士研究生,研究方向为软件开发方法与软件项目管理

2015-05-05

2015-07-01

随着软件需求的不断增加,软件规模也不断地扩大,软件缺陷问题接踵而来。如何有效地预防软件缺陷,成为软件开发过程中重要的一部分。从两方面论述软件缺陷处理问题,一方面是软件缺陷数据的存储问题,另一方面是利用社会网络的社团划分算法划分历史软件缺陷,找到缺陷的隶属社团,根据缺陷的隶属社团,开发者或测试者可以得到缺陷与缺陷之间的隶属关系以及缺陷产生的根源,从而更好地预防缺陷,大大提高软件产品质量。

软件缺陷;数据存储;社会网络;社团划分算法;缺陷预防

任洪敏(1969-),男,上海浦东人,博士,副教授,研究方向为软件体系结构、构件技术、软件复用、过程工程等

With the increasing demand of software,software size has continued to expand,software defects follow.How to effectively prevent software defects has become an import part of the software development process.Discusses two ways to deal with the problem of software defects,one is the storage problem of the data in the software defects,the other is using the partitioning algorithm of social network to divide the history of software defects and finding their membership associations,according to their membership associations,developer or tester can get the affiliation between defects and defects and the root of defects,so as to better prevent defects,greatly improve the quality of software products.

猜你喜欢

软件缺陷测试者社团
缤纷社团
基于源文件可疑度的静态软件缺陷检测方法研究
搜救犬幼犬挑选测试
最棒的健美操社团
指纹收集器
软件开发项目的质量管理策略探讨
K-BOT拼插社团
小议语法测试
基于度量元的静态软件缺陷预测技术*
很多英国人不会拼常用词