软件工程中的数据挖掘技术研究

(整期优先)网络出版时间:2022-09-21
/ 2

软件工程中的数据挖掘技术研究

张松松

山西农业大学 030600

摘要:数据挖掘技术应用于软件工程,可以根据软件操作目的自动搜索有效信息数据,搜索过程需要按照一定的算法进行数据分类和排序,并建立与之匹配的分析模型,探究不同数据之间的内在联系和发展规律,从而为后续软件开发和运行维护管理提供可靠的数据支持。基于此,本文将对软件工程中的数据挖掘技术进行分析。

关键词:软件工程;数据挖掘技术;对策

1 数据挖掘技术的内涵

数据挖掘技术是一种基于大数据建立的综合性现代信息数据处理技术,能够根据工作实际需要对数据进行转化、处理和分析,不但可以提升信息数据处理效率和处理质量,而且还能挖掘数据背后蕴涵的价值,具有程序复杂度高、运算计算量大等特点。数据挖掘是数据收集的动态过程,通过借助人工智能、数据库、机器学习、知识工程、统计学、信息检索、数据可计算等多种技术实现从海量数据中筛选出符合条件的信息数据,然后通过数据分析挖掘出有应用价值和研究价值的数据。

数据挖掘流程主要包括数据的预处理、挖掘、整合三个环节。其中,数据预处理主要是对原始数据采用合适的数学计算方法进行整体脉络梳理和识别、转化,同时剔除无效数据,并对预处理后获得的数据进行抽样检测;数据挖掘主要是对预处理后的数据和系统新生数据采用系统算法和对应的分析模型进行分类和预测处理;数据整合主要是对得到的结果数据进行评价,用户可以根据自身实际需要对数据进行选择性应用,彰显数据最终价值,提升用户体验效果。

2 数据挖掘技术在软件工程中的应用分析

2.1 挖掘克隆代码

所谓的克隆代码,就是一副以应用为主要目的而所复制、粘贴的代码段,面向实际应用中的不同需求,有时也会做部分修改等特殊化处理。通常情况下,克隆代码在软件工程开发中会占到总代码量的7%~25%,针对克隆代码进行充分挖掘,有助于防止软件工程开发项目中的拷贝性故障,同时有助于软件测试过程中的安全维护。

(1)基于标识符对比的应用方式。最为典型的应用方式便是对分词所形成的标识符序列构造前缀树进行分析与检测,并以此为基础,利用Dup、CCFinder等软件对克隆代码进行对比分析。

(2)基于程序结构的应用方法。主要运用抽象语法树抑或是抽象语法前缀树以及程序依赖图等方式表达软件工程中程序代码的语法信息。以此为基础,在相关前缀树、程序依赖图纸上进行深入挖掘,检测重复代码。现阶段可使用的工具主要有CloneDR、GPLAG等。

(3)基于文本对比的应用方法。主要通过对比软件工程程序代码中的语句来判断其重复率,而后采用Hash函数等技术提升程序代码字符串的匹配效率,以达成有效挖掘克隆代码、降低重复代码的目标。

2.2 基于数据挖掘的软件工程分析框架

数据挖掘是以海量、庞杂的各类数据为对象,发现数据的潜在信息、获取有价值信息是其根本目标,数据挖掘过程主要包含五部分内容,分别为数据采集、数据清洗、数据挖掘算法确定、挖掘结果分析及数据交互呈现。数据挖掘是将底层抽象数据转换为人们可理解的知识的过程。

(1)数据采集层。启动软件运行程序,通过字节码工具采集软件运行行为数据,与软件运行故障报告一并存入到软件运行信息记录库中。(2)预处理层。软件运行行为数据预处理是数据挖掘分析的基础工作,软件运行行为数据及错误报告信息经过空缺值、错误数据及清洗处理后将存储于软件工程数据库中。(3)数据库层。用于存储处理后的软件运行数据。(4)数据挖掘层。数据挖掘层从数据库中调取软件运行数据,对其进行分析处理后,通过软件错误预警模块提示预警信息,通过软件错误诊断模块实现软件错误的检测、诊断。(5)知识表达层。该层用于呈现软件错误预警结果及诊断结果,实现与用户的信息交互。

2.3 开源软件数据挖掘

开源软件是给用户提供的免费试用软件,其中克隆代码检测应用非常普遍,主要包括文本对比、程序结构对比、标识符对比、语义应用和索引对比等四种检测方法,在软件工程中的应用需要根据实际需求选择相应的检测方法。克隆代码技术能够根据软件开发相关标准实现代码快速拷贝和复制,然后根据软件开发目标和要求对拷贝的代码进行修改、完善和进一步检测,避免错误代码传递,确保系统正常运行。克隆代码技术不但改善了复制与粘贴的效率,提高了克隆代码检测速度,同时可以规避代码漏洞对软件系统影响,为开源软件开发和系统后期维护管理提供更多便利条件。但是,克隆代码技术的应用会受到环境开放性与动态性、数据多样性、Web软件开发大众化等因素影响,给用户使用带来管理和安全方面的问题。随着数据挖掘技术的不断进步与完善,其中对软件应用情况、错误报告、开发者详细信息等都会进行有效跟踪和自动记录,有助于软件开发人员构建出典型的社会网络,详细了解和准确把握网络动态变化,从而提高开源软件开发质量,提升开源项目管理整体效果。

2.4 故障定位

往往程序的多次崩溃、失效等都引发于同一个故障,因此无需在每次程序失效后都对其进行大规模的调试,仅需要对其故障进行定位以及聚类分析便可有效避免此类问题的再次发生。程序切片是最传统、最有效的故障定位技术之一,但基于现阶段愈发复杂的软件工程开发工作,传统的技术已经无法满足当下大型、复杂系统的切片,从而导致难以准确定位故障。基于此,可以在切片结果抑或是切片程序、切片记录上。进一步开展数据统计分析工作,从而有效缩小故障定位的范围、降低故障定位的难度。第一步:确定软件错误定位的检测用例集,将其运行于目标软件程序中,对该用例集的语句覆盖情况进行获取,并分析其运行结果。第二步:基于检测用例集获得的软件运行数据,判断是否存在失败检测用例集,若存在,则对其进行聚类处理,获得不同错误的检测用例子集。第三步:利用基于深度神经网络的软件错误诊断方法求解各检测用例子集中各语句的错误嫌疑性,根据错误嫌疑性大小进行排序,依此顺序完成软件可疑代码检测,并对其进行修复。若检测用例子集中存在数个错误,一次错误诊断未能排除全部错误时,则通过反复检测实现全部错误的排除。第四步:通过对软件错误诊断结果进行评价,分析错误诊断效果。

2.5 软件执行记录挖掘

数据挖掘技术在软件执行记录中的应用,主要是通过插装、跟踪、记录、分析等几个步骤实现对软件执行记录数据挖掘,其实质是利用对软件跟踪来逆向建模的过程。①在目标测试代码中插装跟踪模型,完整记录软件执行过程。②对预处理后的软件执行记录信息采用分类、类聚、关联等方式展开分析,加深对软件作用、功能理解。③根据分析结果提取关键信息,再次进行跟踪分析,探究不同系统模块程序代码之间的关联性。④绘制系统整体结构,建立系统功能模块,方便软件开发人员管理和维护软件系统。

3 结束语

得益于数据挖掘技术在软件工程中的应用范围较为广泛、应用技术体系及流程较为成熟的优势,使其成为适合应用在软件工程开发中各项环节的主流技术之一,但是在实际软件工程开发及应用过程中需要明确挖掘对象和挖掘技术。笔者谨以本文抛砖引玉,以期望能为相关研究者的研究工作提供一定理论参考,助力其更好地投入研究工作中,从而推动我国整体软件工程领域的不断发展。

参考文献:

[1]阿迪娅·扎曼别克.计算机软件工程中的数据挖掘技术应用研究[J].电子技术与软件工程,2022(10):183-186.

[2]张雪英.软件工程中数据挖掘技术研究[J].网络安全技术与应用,2022(04):43-44.

[3]卢珊.数据挖掘技术在软件工程中的应用分析[J].长江信息通信,2022,35(04):113-115+118.