一、数据挖掘技术在软件工程中的应概述
1、挖掘执行记录
其应用的本质是通过跟踪相应的执行路径,然后通过逆向建模实现其目的,其作用在于维护、验证和了解程序。执行记录挖掘的应用过程,通常是先初步插装被分析的系统,并对由挖掘软件对应用编程接口,或是基本的系统和模块调用的状态变量进行记录,最后约简、聚类和过滤目标跟踪所得的信息,最终使其成为能够表征系统功能的模型。
2、检测漏洞
软件漏洞检测的目的,主要在于及时的找出软件开发中存在的漏洞或错误,确保能够得到尽快的修复和完善,确保软件的质量及可靠性。一般数据挖掘技术应用于软件漏洞的检测,首先需确定对应的软件测试项目,并基于用户的需求,规划出软件测试的具体内容,进而决定该用什么样的方式进行测试,从而制定出对策和计划;然后收集漏洞库数据,实施数据的清理和转换。对所需采集的数据和信息进行分析,选取和软件缺陷相关联的数据集,将多余的、不需要的数据清理后,再对丢失的项目采取补充措施,转换数据属性为数值表示。其次选取恰当的数据模型,进行验证和训练。需结合项目的实际需求,对其挖掘方式进行选择,促使其成为测试集、训练机集,进而比较所有的结果,找出最合理和符合需求的方式。同时还需应用上面所提的方法,描述、定位和分类软件的漏洞,并将漏洞库数据的收集应用到软件的数据库,并将未知漏洞找出,然后结合相应规则描述其漏洞,进一步的分类;并在最后把挖掘出的数据知识用到软件测试的项目中。
3、挖掘开源软件
开源软件挖掘项目的开发环境具有开放性、全局性和动态性,因此,对于该类软件的开发管理,需和其他的传统软件相区别。通常情况下,比较成熟的开源软件项目,对于参与其中的错误报告、开发者活动和软件的应用具有较为完整的记录。参与开发的人员,能够组成典型的社会网络,但因为其具有的开放性,致使参与的人员处于不断的变化当中。同时对于开源软件中具有的动态性特征的挖掘,可实现开源项目的优质管理。例如,由牛津大学所开发的系统Sima,便可对开源项目的使用者和跟踪者实施系统性的跟踪管理。
4、挖掘版本控制的信息
版本控制系统的应用,主要是为保证项目参与者共同编辑的同一档案的统一性,以便全局性的更新。当前的软件工程开发应用中,大部分均会应用版本控制系统实施软件开发工作的管理和保护。并且挖掘版本信息控制的应用方式,主要是对变更历史信息的挖掘,其应用可找出不同模块,以及子系统之间所存在的相互依存的关系,并深化对程序中未来变化和引入方式可能存在漏洞的检测。这类挖掘技术的应用,能够有效的将系统后期维护成本降低,避免因为后期变更所产生的漏洞,进而具有对后期的软件维护、警示作用。
二、数据挖掘技术在软件工程中的应用方法
1、关联方法
挖掘技术应用与软件工程中的关联方法,其规则在于发现大量数据中所具有的相关联系及有趣关联。并且关联规则具有两个重要特征,其一为支持度,表示为P(A∪B),表明A、B两个子集在事物集中出现的概率是相同的;其二为置信度,可表示为P(B|A),说明A在事物集中所具有的概率,同样B也会出现。
2、分类方法
分类方式的应用,主要是对离散值和分类标号进行操作,一般情况下,首先需建立起相应的模型,对其概念集和数据类集进行描述,之后应用模型完成分类。常用的分类方法是判定树法,主要包括神经网络分类法、贝叶斯法、K-最临近法和支持向量机法等。其中判定树法的应用基础为贪心算法,应用自上至下递归的构造方式,对其树、叶子节点等实施相应的类别标号,并确定最终的分类结果。另外常用的判定树法为支持向量机和K-最临近分类法等。K-最临近分类法应用的基本理为:若某个样本位于特征空间中时,应有K个最相似样本的大多数,称为一个类别,并且其样本也归属于这一类别。这类计算方法对于容量较大的自动分类较为适用,若是用以样本容量比较的分类,则很容易导致错误产生。
3、聚类方法
聚类方式的应用,顾名思义,便是把对象数据分为多个簇或类,并且保证统一类或簇中的数据的相似度较高,同时不同类或簇中的对象具有明显的差别。常用的聚类方法主要有划分方法、基于密度的方法、基于模型的方法、基于网格的方法和层次方法。聚类分析的输入为一组有序对(X,d)或(X,s),其中X所代表的是一组样本,d和s表示的是相异度或相似度。聚类系统的输出为某个分区C={C1,C2,…,Ck},Ci为X子集,也被称为类。本文就划分聚类法为例进行分析,其基本的应用理论为根据所给出的n个对象数据集加以应用。其中划分聚类方法的应用,便为应用构造出k的划分,并且每一个划分区域均代表某一个簇,并且需保证k≤n。k个划分应满足相关的条件。首先应让每个簇中均含一个对象;其次,每个对象有且仅属于某个簇。而给定k的算法,应在结合划分方法,通过迭代的改变来划分,确保每一次的迭代后,均优于未迭代之前,划分最好的标准为统一簇中的对象最为接近,不同簇中的对象差异最明显。
三、结束语
由于软件工程的复杂化发展,促使软件的开发更加需要能够量化且测量精准的工具,数据挖掘的应用可较大的满足软件开发者对于这一方面的需求。特别在近年来,数据挖掘技术应用于软件工程,具有较好的经济效益,并且其验证测试,以及开发过程均能为应用者提供可靠的决策信息。因此,应推进数据挖掘技术在软件工程中的应用,促进其更深层次的发展和应用。
作者:雷蕾 单位:南阳理工学院