1 引言(Introduction)
数据挖掘技术既是在海量的数据当中将需求信息挖掘出来的过程[1].软件工程数据挖掘则是数据挖掘技术在软件工程领域的重要应用[2].软件工程数据挖掘技术可以有效地提高软件的开发效率,增强软件的稳定性以及可用性,随着软件工程数据挖掘技术的不断提升,其应用范围更加的广泛[3].因此,对其的研究工作不仅具有重要的学术价值,更具有重大的实际应用价值。本文重点探索软件工程数据挖掘技术面临的挑战以及将来的发展趋势。
2 软件工程数据挖掘(Software engineering datamining)
(1)软件工程数据挖掘的必要性
软件工程数据主要是指在软件开发阶段积累的相关数据,其中包括软件的可行性分析以及需求分析文本,软件的注释或者代码等等。这些信息是软件开发者获取软件相关数据的唯一来源。随着软件研发技术以及规模的不断提升,其中包括的软件工程数据也是成指数性增长。例如:Linux操作系统软件,其仅代码一项就超过了500万行。这在无形中增加了软件开发者获取软件相关数据的难度。因此,借助于数据挖掘技术的软件工程信息搜索技术是十分必要的。
(2)软件工程数据挖掘任务及其过程
一般来讲,软件工程的数据挖掘工作主要包括:
a.软件数据的预处理。这一过程主要是将未曾加工的数据变为便于挖掘出来的形式。其主要涉及到不同来源以及格式数据的融合,进而转化成为统一格式的数据。选取数据挖掘任务有关的数据记录,并对数据中的噪音以及重复值进行清理。目前,数据挖掘的预处理技术主要采用的是LSA、PLSA、LDA等。
b.数据挖掘。这一过程主要是要将海量数据中能够反映出软件本质或者规律的信息搜取出来。其中运用了大量的算法。输入的是结构规整的数据,而将关联、分类等信息模式进行输出,这些信息模式与挖掘任务有关。
c.结果评估。这一过程的目的就是要是用户获得有用的信息。主要包括提出信息质量不高的部分结果数据,以及将计算机处理以及理解的信息模式转换成为用户能够理解的信息模式,并传递给用户。
2 软件工程数据挖掘存在的挑战(Challenge ofsoftware engineering data mining)
(1)软件工程数据复杂度高
目前的软件工程数据主要包括结构化和非结构化两类数据。其中,结构化数据主要涉及到软件的版本相关信息以及缺陷报告等。非结构化数据主要包括一些软件代码、文档等。这两类数据不能采取同一种算法,但是两类数据之间却又存在着诸多相关性。因此,在数据挖掘算法开发上,要充分的考虑到两类数据的复杂联系,无形中增加了不小的难度。
(2)分析方法并非传统模式
软件工程数据挖掘工作的最后阶段是将获取的挖掘信息呈现给所需用户。在传统的数据挖掘应用过程中,例如:银行或者电子商务,都是将其转化为文字或者图表的形式。但是,软件开发者所需的信息并没有如此简单。其囊括了编程模板、缺陷定位等客户信息。因此,这对数据挖掘技术提出了更高要求。
(3)数据挖掘结果评价标准不一
数据挖掘技术在很多行业都已经广泛应用,并且,在结果表示以及评价标准制定等方面较为成熟,但是,在软件工程数据挖掘领域却不是这样。软件开发者需要获取的信息不仅详细而且极为复杂,同时,信息的表示方法也不尽相同,这样一来,为信息对比增加了不小的难度,因此,很难对数据挖掘结果进行定量准确分析。
3 软件工程数据挖掘问题的解决方案(Solution ofsoftware engineering data mining)
(1)数据复杂性解决方法
软件工程数据的复杂性主要包括三方面:
a.数据的类型相对复杂。关于这一类型,目前一些学者提出可以从软件程序的结构图以及文本数据等方面进行信息挖掘。
b.数据间联系复杂。这一类型可以利用算法的改进,增强发现数据之间联系能力来提升数据挖掘结果的准确程度,例如:社会网络分析法比较适用于尚未存在大量研究工作的领域。
c.数据中存在噪音或缺失。这一类型可以采用类似于半监督学习的方法以达到有效控制因数据缺失所带来的不良影响程度。
总而言之,通过数据挖掘算法的不断改进,能够有效地解决数据复杂性问题。
(2)非传统分析的解决方法
相对于文字、图表等信息形式,软件开发者往往更需要软件使用范例。目前,很多研究成果会涉及到软件使用例程以及编程规则等。同时,在软件工程当中,程序可视化作为一种信息表示方法正在逐渐成为趋势,其与数据挖掘技术相结合,将会极大的满足更多的非传统分析需求。
(3)挖掘结果评估问题解决方法
传统的评估体系很难在软件工程数据挖掘中应用。为了解决这一问题,一些研究者试图利用缺陷检测效果评估法进行挖掘数据评价,但是,这种方法有点以偏概全的嫌疑。还有一些学者采用用户体验评价方法,但是在用户较少的情况下,结果评价的客观性不足。软件工程领域无论是理论研究还是实际应用,其服务对象始终都是人,由此可见,软件工程数据挖掘的结果评价方法会越来越贴近人类心理学以及管理学中的分析方法。
4 软件工程数据挖掘的发展趋势(Developmenttrend of software engineering data mining)
(1)基于现有问题,开法高性能挖掘算法
a.软件工程数据的检索由精确的关键词检索向模糊检索、甚至不受格式限制的自然语言检索发展,检索返回的内容从简单的语句向完整的文档发展。
b.缺陷检测工具从仅能够检测缺陷的原因向更加复杂、范围更加广泛的缺陷发展。
c.用人类自然语言表达行为方法及软件行为的模型将更加丰富,对应的表达能力也会大幅度提升。
(2)提出更为复杂的问题及其解决方法。
a.将研究基于数据挖掘技术的软件结构分析方法。
b.将研究软件行为的评价方法和恶意软件检测方法。
c.通过数据挖掘方法定量分析、评估与预测软件的稳定性,从而指导软件的开发和维护。
d.进一步发现数据之间的关系,综合利用多方面的数据源进行挖掘。
(3)高效预处理,改进挖掘算法
研究更高效的数据预处理方法,最主要研究特征提取和数据降维方法;推进异构数据的管理和整合技术,如数据融合、数据空间等,以及分布式数据的并行处理技术。
(4)引入新的软件工程理念,指导数据挖掘工作
随着计算机网络技术的不断发展,软件开发工作逐渐呈现出了高效化、智能化,网络化特征。这些更是成为软件开发人以及数据的基本特征。正因为如此,软件模块的开发工作更加趋向于功能性以及可重用性。这样发展趋势势必会导致软件工程数据挖掘技术研究方向的改变。利用数据挖掘技术采集、整合网络数据,获得信息的方法;以及利用数据挖掘工具设计软件重用的规范和模式,以辅助可重用模块的开发。
5 结论(Conclusion)
随着计算机技术的快速发展,人们的生活也逐渐的进入到了网络化时代。各种应用软件的开发速度之快令人震惊,而这也对软件工程数据挖掘工作提出了更多、更高的要求。本文首先对软件工程数据挖掘技术的相关概念进行分析,然后,对其遇到的挑战和应对措施进行探索,最后,研究其未来的发展趋势。希望能够为有关的研究工作者提供一些参考性的建议。
参考文献(References)
[1] 毛澄映,卢炎生,胡小华。数据挖掘技术在软件工程中的应用综述[J].计算机科学,2009(05):1-6.
[2] 李新,张晓静,米燕涛。软件开发过程中的数据挖掘[J].石家庄职业技术学院学报,2007(02):31-33.
[3] 赵志升,罗德林,李海英。数据挖掘技术与应用[J].河北北方学院学报(自然科学版),2006(06):63-66.