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

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

ID:19956836

大小:156.50 KB

页数:4页

时间:2018-10-08

数据挖掘在软件工程中的应用_第1页
数据挖掘在软件工程中的应用_第2页
数据挖掘在软件工程中的应用_第3页
数据挖掘在软件工程中的应用_第4页
资源描述:

《数据挖掘在软件工程中的应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、数据挖掘在软件工程中的应用在大数据时代,数据挖掘是从海量数据中获取信息的有效手段。这种手段同样可以用于软件的开发上。软件工程中数据挖掘是指:在海量的软件工程数据中利用已有的技术或者开发新的数据挖掘技术和算法,经过提取、分析、表示等步骤,发现对软件开发者有用的信息/知识的过程。为了了解数据挖掘在软件工程中的使用,我一共阅读了三篇文献:《软件工程数据挖掘的研究进展》是一篇概括性的综述类文章,它介绍了软件开发阶段,软件修复性维护阶段和软件改善性维护阶段可能用到数据挖掘的地方以及可能用到的算法。对开发阶段的数据挖掘技术深入讲解的文献是:《usingStru

2、cturalContexttoRecommendSourceCodeExamples》.它通过一个自动返回代码模式的插件详细讲解了软件工程中需数据挖掘技术在软件开发阶段的运用原理。为了理解软件开发阶段数据挖掘技术推荐的代码复用模块中关联模式的挖掘,我又阅读了《基于FPclose算法挖掘强亲密地关联模式》。这篇文章让我了解了什么是强关联模式,怎么挖掘强关联模式,从而更好的理解数据挖掘技术返回重用代码模块所用到的机制。软件工程中的数据挖掘和传统意义中的数据挖掘所需要的步骤大致一样,都需要经过数据预处理,数据挖掘,数据分析这三步。只是预处理的数据由传统的

3、数字数据信息变成了软件开发中的必要元素:代码,注释,测试用例和缺陷报告等,单从这个角度上了说,对数据库中的数据进行预处理的难度就提升了不少。预处理后的格式化数据才可以用数据挖掘的手段进行挖掘并生成类别,频繁序列和关联规则等挖掘结果。最后再对结果进行分析和同化找到软件工程中重用的代码片段,缺陷位置等信息。数据挖掘本身是一个近几年新晋的热门概念,软件工程中的数据挖掘的实际应用也是一个新概念。根据三篇论文的迭代和相关性,本篇报告主要阐述软件开发阶段遇到的问题。问题分为三种:第一,开发者在已有的代码库中寻找所需的代码结构;第二,开发者在数据库中寻找重用该模

4、式的静态规则;第三,开发者进一步寻找重用模式的动态规则。下面依次介绍这三个问题所运用到的机制和算法。I重用模式的检索重用模式的检索最基本的重用问题是开发者知道所需的类和方法但不知道调用这一方法所需遵循的模式。手工寻找重用模式的方法需要大量浏览包含已知关键字(类或方法的标识符)的代码,根据经验在其中选择可能的重用模式,不断尝试所选模式。其中,必然有许多代码与用户所需的模式无关,这种浏览和尝试会浪费开发者大量的时间和精力。因此,数据挖掘技术根据已知关键字从代码库中搜索包含重用模式的代码段,并且按符合用户需求的程度对搜索结果进行排序,标注用户感兴趣的段和

5、行。核心思想是:重用模式必然是相似的,而这种相似性会通过上下文结构,如类之间继承和调用关系体现出来。具体步骤包括构建代码库,用户向代码库提交查询信息,返回例程给开发者。在服务器搜索重用模式的过程中,用到了六种启发式规则。基本启发式规则子类规则规则描述继承式启发从存储器中返回一个类的集合Cr。集合中的类按与被查询的类C有共同祖先(包括父类和实现的接口)的顺序从高到底排列。调用式启发基本调用式启发返回与m调用相同目标的方法集Mr。按调用方法相同个数从高到低进行排序。最优调用式启发从Mr中选取匹配率最高的方法,一般而言阈值为0.4继承调用式启发从Mr,中

6、选取那些包含了和类c有至少一个共同祖先的类的方法。使用型启发基本使用型启发找到m所涉及的对象类型,然后返回用了相同对象类型的一个方法集Ur。按所用相同类型对象的数目从高到低排序继承使用型启发结合了继承的使用型启发式规则表1重用模式检索的六种启发式规则II静态规则的发现首先,遍历代码库中的类间关系,将每一个继承、重载、调用其他类的关系写在数据库中;其次,对上述数据库进行关联规则挖掘。关联规则挖掘可以划分为两个子问题Apriori算法发现频繁项集和关联规则的生成。接着,进行规则的全局和局部裁剪。最后,在开发者针对某一个类进行查询时,用列表的形式表示重用

7、这个类必须遵循的规则。规则之间根据支持度进行排序。III动态规则的发现开发者预先设定程序所必须遵循的系统的动态规则,例如在调用函数A之前不能调用函数B;比如在解锁之前不能访问锁里的资源。事实上,由于缺乏文档等原因,在许多情况下开发者无法预先设定动态规则,这时就需要用挖掘的方法在代码和其他软件工程数据中发现这些规则。具体步骤:①以静态代码为挖掘对象,将软件代码中调用的函数hash为ID值,将程序映射为ID序列,存入数据库。②对上述序列数据库执行FPClose算法挖掘频繁闭项集,对所得的频繁项集再次执行支持度为2的FPClose算法,在闭项集中挖掘公共

8、子集,对每个子集I和他所属的每个闭项集C,生成规则I->(C-I).③查找程序中违反规则的代码段,这些代码段可能蕴含缺陷。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。