1 数据挖掘技术的概述
数据挖掘是将存放在数据库中的各种数据有目的的挖掘的过程。数据挖掘一般包括三个流程 :数据预处理,其主要包括对数据的收集、清洗、抽样以及数据交换 ;数据挖掘,在确定具体的挖掘数据之后,就需要根据相应的方式方法比如总结、分类、关联规则等确定具体的挖掘算法 ;模式评价与知识表示,也就是数据挖掘技术在软件工程中的应用探究吴彦彰 湖北幼儿师范高等专科学校 湖北武汉 430071在确定了数据挖掘的算法之后,根据挖掘的结果,评价结果的过程。通过对数据挖掘流程的分析,数据挖掘的主要任务就是发现隐藏在数据中的有趣模式,由于在海量的数据中用户很难快速找到与自己有用的信息,因此这就需要数据挖掘技术寻求与用户需求相密切联系的信息模式,以此满足用户的期望与需求。描述模型与预测模型是数据挖掘的主要功能。数据挖掘技术的基础是数据库,因此数据挖掘技术主要是面向应用的,数据挖掘技术应用与软件工程的时间是在二十
世纪末期,随着计算机技术的不断发展,数据挖掘技术在软件工程的应用越来越广泛。
2 数据挖掘技术在软件工程中的具体应用
软件工程包含许多关于软件的资料,这些资料都会存放在软件代码库中,通过运用这些数据库可以提高软件系统开发人员的工作效率,使得系统维护人员可以对系统的框架有一个清晰的了解,比如程序人员对软件工程进行组化任务时,他们可以快速的了解到系统组件的独立性。软件工程的每一次 RUP 循环的阶段都会产生大量的数据,这些数据都是挖掘的对象,基于软件工程的生命周期,我们将其分为 :分析和设计阶段的应用、迭代开发设计阶段的应用和维护阶段的应用,(具体见图 1)。
2.1 需求和设计阶段
需求和设计阶段主要是根据软件工程设计的要求给出一个项目的概念解决方案,在软件工程需求和设计阶段都在发生着变化,一旦需求出现变化,软件工程设计要求也就会出现变化,因此需要程序设计人员要具有良好的设计方法,通过数据挖掘技术研究软件代码重构问题,实现对程序代码的模块抽取。
2.2 迭代开发阶段
迭代开发阶段是应用数据挖掘技术最多的阶段,该阶段主要包括 :编码、调试、测试以及错误检测。(1) 应用在编码的数据挖掘技术。在软件工程编码过程中,基于是根据软件工程开发的需要,对编码程序进行记录,以此找到程序代码中的关联关系。比如我们所应用的基于迭代模式挖掘的规范发现的算法,其主要是通过挖掘程序的运行轨迹数据获得程序运行时序模式,其运行模式就是通过利用关联规则中面向Aprior 的特性挖掘频繁闭合时序项集模式,把程序里的每一个调用定义为 ei .i 是这些事项组合的集合, si=(e1,e2,e3,,,,,,)其中 e 称之为程序的一次运行轨迹模式。当然除了上述的算法之外,数据挖掘技术在编码中的应用算法还包罗复用模式算法、检测 API 潜在调用顺序的方法等等。(2) 应用于调试的数据挖掘技术。软件工程的调试工作主要是由软件开发人员完成的,其目的就是提高软件系统的实际应用价值,满足设计需求的要求。软件系统调试属于高耗时工作,其需要调试人员按照规范要求一步一步的进行,尤其是当软件工程的系统比较复杂时,就会加剧调试的难度。调试的任务就是分析 bug 报告、定位软件错误信息,并且及时修正错误的程序信息,对于这些调试的任务采取数据挖掘技术则可以有效的降低调试难度。以数据挖掘技术对软件工程漏洞的检测调试为例,调试的主要目的就是为了尽快的找出系统的漏洞,以便应用到实际中,首先通过对软件工程测试项目的确定,根据用户的实际需要,确定具体的检测方式,从而制定出具体的检测计划。目前我们常用的检测方法有自动分类方法、半自动化分类(文档分类技术)以及 bug报告筛选等等 ;然后根据确定的具体检测方法对软件工程的数据进行收集与分析,按照预定的计划对收集的数据进行清理与转换,将多余的数据清理出去,并且对丢失的数据进行补充 ;最后要选择相应的数据模型,进行检验以此保证系统的稳定。(3) 应用于软件工程错误检测。任何软件工程都会存在错误或者 bug,据不完全统计,一般软件工程的错误系统会给用户造成巨大的损失,比如美国在 1996 年出现的航天飞船坠毁事件就是因为系统软件的 bug 所引起的。而且对于软件系统的错误检测所要消耗的时间要占到系统开发设计周期的 30% 左右。因此数据挖掘技术应用到软件工程中的错误检测技术主要包括 :从源代码中推断错误、复制粘贴错误检测和函数匹配检测。以从源代码中推断错误为例,首先使用频繁项集挖掘算法找出代码中频繁项集,找出满足最小支持度的程序规则,然后根据程序对规则的遵守程度进行推断,如果只有少部分不遵守程序,那么不遵守程序规则就有可能是错误的 bug 规则,比如在规则(sosi-host-alloc-scsi-add-host) →(scsiscan-hostg)的函数中出现了 27 次,那么只有 2 个函数出现了 (scsi-host-alloc-scsi-add-host), 那么这 2 个函数就是错误 bug。
应用于维护阶段。维护阶段是软件工程的重要工作,需要维护人员要对系统有一个清晰的框架认识。一般软件维护的工作主要包括改正程序中的错误和缺陷、改进设计的环境以及按照实际需要增加相应的程序应用。数据挖掘技术在软件工程维护阶段的应用主要包括 :一是引导的软件修改。在软件系统中如果修改一个代码,那么与之关联的代码也就需要修改,而数据挖掘技术则是找到这些修改模式,避免出现频繁修改模块的可能 ;二是切面挖掘。也就是面向对象编程的有益补充,其主要目的就是增强系统的可理解性和维护性。
3 数据挖掘技术在软件工程中的应用方法
数据挖掘技术在软件工程中应用的方法主要有 :一是关联方法。挖掘技术应用与软件工程中的关联方法,其规则在于发现大量数据中所具有的相关联系及有趣关联。并且关联规则具有两个重要特征,其一为支持度,表示为 P(A ∪ B),表明 A、 B 两个子集在事物集中出现的概率是相同的 ;其二为置信度,可表示为 P(B | A),说明 A 在事物集中所具有的概率,同样 B 也会出现 ;二是聚类方法。聚类方式的应用,顾名思义,便是把对象数据分为多个簇或类,并且保证统一类或簇中的数据的相似度较高,同时不同类或簇中的对象具有明显的差别 ;三是分类方法。分类方式的应用,主要是对离散值和分类标号进行操作,一般情况下,首先需建立起相应的模型,对其概念集和数据类集进行描述,之后应用模型完成分类
4 结束语
总之,在软件工程项目中合理的应用数据挖掘技术确实具备着极强的应用价值,对于软件工程项目的发展和提升来说意义重大,并且根据其具体的应用过程来看,其涉及到的应用内容和应用环节也是比较多的,这也进一步体现出了数据挖掘技术的巨大应用价值,值得相应的研究人员在今后针对这种数据挖掘技术及其在软件工程项目中的应用进行深入的研究和探讨,进一步的提升其自身的水平及其应用的价值。
【参考文献】
[1] 马保平,关于对软件工程中的数据挖掘技术的探讨 [J]. 电子技术与软件工程2015 年 09 期
[2] 许文杰,数据挖掘技术在软件工程中的应用研究 [J]. 电子技术与软件工程 2015 年11 期