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.
1软件发展危机1.1软件的定义及特点软件是按照顺序组织的计算机数据和指令的集合。一般软件被分为系统软件、应用软件和编程语言。其中系统软件为计算机使用提供最基本的功能,最基础的软件就是操作系统;应用软件是在系统软件的基础上衍生出来的为用户提...
随着网络信息时代的到来,人们的生活中越来越离不开手机、电脑等电子产品。他们可以通过软件购买商品、点餐、预约车等服务。...
1软件工程需求分析综述.通常情况下一个完整的软件开发链条中包括前期的需求分析与软件综合设计与中期的软件代码编写以及后期的软件测试以及维护过程.而其中最重要的就是前期进行良好的软件工程需求分析,只有在深入、准确分析的基础之上才能有序、合理的进...
数据挖掘技术是软件工程领域中一项新的应用技术,可以将数据信息转化成知识与信息的方式,能够满足人们对信息的大量需求.在软件工程领域中,数据挖掘技术可以应用到漏洞数据库、源代码库、版本信息记录等数据库中进行大量数据信息的挖掘.因此,数据挖掘技术也称...
作为计算机软件开发的主体,技术人员负责软件工程规划、生产和检验等多个环节,并在其中起到了重要的作用。...
随着管理信息系统研究以及应用的不断深入,越来越多的相关研究人士意识到,如果在管理信息系统研究的过程中不应用软件工程思想,那么则会在很大程度上制约管理信息系统开发领域的进步。我国管理信息系统开发领域虽然对软件工程思想的应用有了一定的研究,并...
随着我国经济的飞速增长,计算机软件的开发规模不断扩大,单纯的软件升级已经无法满足我国越来越高要求的市场需要,为满足我国软件工程数据快速增长的技术需求,软件工程数据挖掘技术的建设逐渐成为我国信息化发展过程中需要着重关注的重点。1软件工程数据...
软件工程课程是培养学生具有计算机软件项目的分析和设计能力的核心课程。课程设计则是软件工程课程的一个重要教学环节,是对学生进行计算机软件项目的训练。...
工程基础建设是软件开发的重要方面,提升软件工程化开发水准,在预算范围内开发符合要求的高质量应用软件,是软件工程化建设发展的关键。软件工程化发展的过程中应该根据实际情况出发,利用现有工作经验进行软件工程化建设。1软件工程化的基本形式软件工...
计算机软件开发从理论上进行理解就是:计算机的软件开发人员通过对计算机的内部进行屏蔽工作的开展,直观地以图形界面的形式为使用者进行操作方式的呈现。...