APP下载

数据挖掘技术在软件工程中的应用探究

2022-02-06孙鹏飞

现代工业经济和信息化 2022年3期
关键词:漏洞调试数据挖掘

孙鹏飞

(洛阳职业技术学院,河南 洛阳 471099)

引言

软件工程在很多领域都有良好的应用,为人们生产、生活、学习和教育等方面提供了便利条件,随着计算机技术的飞速发展,现有的软件工程管理技术,已经难以满足资源管理的需求。数据挖掘技术的出现,可有效解决这一问题。通过数据挖掘技术可大幅度提升数据采集、数据分析、数据汇总、数据处理以及数据管理的效率和质量,从海量数据库中,快速提取有利于软件设计、开发、管理的数据,既能降低软件工程的研发成本,还能提升软件工程质量,对软件事业的发展有良好的推动作用。基于此,开展数据挖掘技术在软件工程中的应用研究具有非常重要的意义。

1 数据挖掘技术的应用过程分析

在软件工程应用数据挖掘技术时,其应用过程可细分为三个步骤:数据准备、规律发现和表示规律。

在数据准备环节,其主要的目标是对原始数据库中的各项数据进行处理,确定挖掘的目标或者对象,对有效的数据进行分离,而且在数据准备阶段,还涉及到对原始数据库中数据的清理,要清除那些无用的数据,并对缺失的数据进行补充,以便能够形成相对完整的数据链条,为软件的研发、设计、运行、评测和管理等提供必要的数据支持。

在规律发现环节,为更好地保证数据挖掘质量,需要准备环节提供的数据进行科学合理的分类、归纳和总结,选择出有针对性的挖掘方法,并结合数据的特点以及软件工程的实际要求,合理调整数据挖掘方法,保证数据挖掘的有效性。

在表示规律环节,为保证数据挖掘结果表达的完整性,可通过知识表示方式,或者是模型评价方法,将挖掘到的数据展示出来,以便软件工程工作人员能够在数据结构的支持和引导下,有针对性地开展软件研发、设计、测评和管理等工作,促使后期各道工序能够有序开展。

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

软件工程的性能不同,对数据的要求不同,适用的数据挖掘技术也不相同,需要根据实际情况,合理选择数据挖掘技术,才能获得更加全面、完整的数据。

2.1 遗传算法

遗传算法是数据挖掘技术的关键技术,主要是以达尔文的进化原理为背景,算法求解也是一个不同繁衍、遗传、淘汰和进化的过程.

生物自然选择和遗传激励的随机搜索算法,是数据挖掘中常用的方法之一,和其他方法相比,遗传算法最显著的优势是虽然一些数据从表面上毫无关系,但在模型建立之间具有相互联系,具有共同发展的特点。随着遗传基因技术的发展,软件工程领域愈发重视遗传算法的应用。

2.2 决策树

决策树通常应用在数据分类和数据整合等方面,软件工程从设计研发到后期运行,会形成海量的数据,数据量非常大,难以快速找到有价值的数据。而采用决策树算法,可在极短的时间内就找到关键信息,使信息的分类更加简单,同时保证各项信息数据的准确性。但也存在一定的缺点,就是决策树算法的抗噪性比较差,难以对复杂的数据进行全面挖掘。

2.3 统计分析算法

利用统计学和分析学相互结合的方法,来分析数据库各字段之间存在的联系,数据库字段之间,既存在相关关系,也存在函数关系。函数关系主要是通过不同的函数来表示,相关关系则不能用函数表示。通过统计分析算法,可促使字段之间的关系更加清楚,从而提升数据挖掘的效率。

2.4 可视化技术

可视化技术的主要作用是将看不见的数据,通过其他图表或者是符号将其显示出来,以便更好地理解数据,一目了然地分析数据,让原本抽象的数据,更加形象化、具体化[1]。常用的可视化方式包括尺寸可视化、颜色可视化、图形可视化、空间可视化和概念可视化等。实现数据可视化常用的工具有Echart、FineBI 和PowerBI 等。

2.5 神经网络技术

设计网络技术也是数据挖掘技术的关键技术,类似于人脑神经元,以MP 模型和Hebb 学习规则为基础,通过一些具体的权值来表示数据。

一个完整的神经网络结构由三部分共同组成,红色的是输入层,绿色的是输出层,紫色的是中间层(也叫隐藏层)。输入层有3 个输入单元,隐藏层有4个单元,输出层有2 个单元。连接是神经网络的重中之重,每个连接之上都有一个权重,在数据挖掘中可通过训练算法,将权重值调整到最佳位置,从而快速检索出有价值的数据。例如:如果用a 来表示输入层,w 来表示权值,那么一个表示连接的有向箭头,就可以解释为,在初始端所传递的信号大小是a,中间权重值为w,经过加权之后,此信号就会转变为a和w 的乘积,末端信号大小就是a×w。在神经网络中,每一个有向箭头都表示权值的加权传递。

3 数据挖掘技术在软件工程中的应用

3.1 在软件工程编码中的应用

编码是软件工程的核心环节,为给后期运行提供必要的数据支持,需要对编码的全过程进行详细记录,以便能够快速找到软件程序代码之间的相互关联。在软件编码中会形成大量数据,且都是有价值的数据,可采用基于迭代模式挖掘算法来对编码数据进行全面挖掘,通过提前设定好的数据挖掘程序,对运行轨迹数据进行充分挖掘,从而获得软件程序运行的时序模式。对软件工程而言,运行模式多为利用关联规则中面向Aprior 的特性挖掘频繁闭合时序项集模式[2]。如果将软件编码程序中每个调用定义为a1,i 为所有事项的组合集合,则Si=(a1,a2,a3,a4…),a就是程序一次运行轨迹模式。除此算法之外,在软件编码中还有很多可用的数据挖掘技术,如:复用模式算法、检测API 潜在调用顺序的算法等。这些算法都能对软件编码形成的数据进行充分挖掘,需要结合软件工程的实际情况,选择有针对性的算法技术。

3.2 在软件调试中的应用

软件调试也是软件工程的主要环节,整个调试过程由专业的软件开发人员来完成,开展软件调试的主要目的是发现软件存在的问题和不足,然后及时调整,以全面提升软件系统的实用价值,达到预期设计的要求。软件调试是一项非常复杂且耗时非常长的工作,需要对代码进行逐行调试。如果软件系统功能强大、结构复杂,则软件调试的难度和工作量也会成倍提升。软件调试不仅仅需要分析软件系统存在的问题,还要对形成的错误报告进行分析,定位软件的错误信息,并采取一定的方法和措施来纠正错误信息。

将数据挖掘技术应用到软件调试中,可大幅度提升调试的效率,降低调试的难度,减少软件调试的工作量。例如:在软件系统漏洞调试中,应用数据挖掘技术可快速定位漏洞的位置,并明确漏洞的种类。在具体应用中,要先确定软件工程调试的对象,然后再结合用户对软件的需求,确定调试方法,制定调试方案和计划。在软件系统漏洞调试中可选择的数据挖掘技术比较多,如:自动分类方法、半自动分类方法和bug 报告筛选等[3]。每种方法都有其独特的优势和不足,可选择其中的一种进行检测,也可以选择两种或者两种以上的方法同时使用。选择好检测调试方法之后,再用数据挖掘技术来采集软件工程的相关数据,按照既定的方案和计划,对挖掘到的数据进行全面清理和转移,清除掉多余的数据,补充丢失的数据,再选择出和软件漏洞检测调试相适宜的数据模型,进行分析检验,就能快速完成软件漏洞的检测调试,如果存在漏洞,还能对漏洞进行定位,分析漏洞的种类,为修复漏洞提供数据支持。

3.3 在软件工程错误检测中的应用

由于开发人员的局限性,开发的软件难免会存在一定的漏洞或者错误,如果不能及时检测出来,就会对用户造成严重影响,甚至是无法挽回的损失。1996 年,因软件漏洞未被检测出来,致使美国一艘航天飞船直接坠毁,对美国航天事业造成了巨大打击。错误检测是每款软件在投入应用前,必须进行检测的内容,耗时非常长,错误检测耗时占软件工程研发总时长的30%以上[4]。将数据挖掘技术应用到软件工程错误检测中,可大幅度提升错误检测的效率,缩短检测时长,促使软件工程能够尽快投入使用,形成经济效益。数据挖掘技术在软件错误检测中的应用方式主要有三种,一是从源代码中推演错误;二是对存在的错误粘贴,再进行检测;三是函数匹配检测。这三种应用方法各有优势,其中源代码错误检测的应用次数最多。

先通过频繁项集挖掘算法从软件源代码中找到频繁项集,以及满足最小支持度的程序规则,再按照软件程序对规则的遵守程度进行推演,如果发现只有少部分不遵循程序,则可能的错误是该软件系统中存在错误的bug 规则,如在规则中,sosi-host-alloc-scsi-add-host 和scsi-scan-hostg 函数共计出现了27 次,scsi-host-alloc-scsi-add-host 只有2 个函数出现,则这两个函数就是错误的bug。

4 结语

软件工程涉及范围非常广,影响因素比较多,从研发设计、投入使用以及后期运行,会形成大量数据,这些数据对软件工程性能的提升,后期拓展升级等有非常重要的意义。但这些数据有的是有价值、有用的数据,而有的则是毫无用处的数据,如何放弃无用数据,快速提取出有价值的数据,是软件工程领域亟待解决的问题。将数据挖掘技术应用到软件工程中,可大幅度提升数据采集、处理和分析的速度,提升数据使用质量,从而不断优化软件的性能,提供一个更加安全、便捷的软件服务。

猜你喜欢

漏洞调试数据挖掘
漏洞
探讨人工智能与数据挖掘发展趋势
数据挖掘技术在打击倒卖OBU逃费中的应用浅析
基于航拍无人机的设计与调试
FOCAS功能在机床调试中的开发与应用
核电厂主给水系统调试
无线通信中频线路窄带临界调试法及其应用
三明:“两票制”堵住加价漏洞
漏洞在哪儿
高铁急救应补齐三漏洞