- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据挖掘在软件工程中的应用
在大数据时代,数据挖掘是从海量数据中获取信息的有效手段。这种手段同样可以用于软件的开发上。软件工程中数据挖掘是指:在海量的软件工程数据中利用已有的技术或者开发新的数据挖掘技术和算法,经过提取、分析、表示等步骤,发现对软件开发者有用的信息/知识的过程。为了了解数据挖掘在软件工程中的使用,我一共阅读了三篇文献:《软件工程数据挖掘的研究进展》是一篇概括性的综述类文章,它介绍了软件开发阶段,软件修复性维护阶段和软件改善性维护阶段可能用到数据挖掘的地方以及可能用到的算法。对开发阶段的数据挖掘技术深入讲解的文献是:《using Structural Context to Recommend Source Code Examples》.它通过一个自动返回代码模式的插件详细讲解了软件工程中需数据挖掘技术在软件开发阶段的运用原理。为了理解软件开发阶段数据挖掘技术推荐的代码复用模块中关联模式的挖掘,我又阅读了《基于FPclose算法挖掘强亲密地关联模式》。这篇文章让我了解了什么是强关联模式,怎么挖掘强关联模式,从而更好的理解数据挖掘技术返回重用代码模块所用到的机制。
软件工程中的数据挖掘和传统意义中的数据挖掘所需要的步骤大致一样,都需要经过数据预处理,数据挖掘,数据分析这三步。只是预处理的数据由传统的数字数据信息变成了软件开发中的必要元素:代码,注释,测试用例和缺陷报告等,单从这个角度上了说,对数据库中的数据进行预处理的难度就提升了不少。预处理后的格式化数据才可以用数据挖掘的手段进行挖掘并生成类别,频繁序列和关联规则等挖掘结果。最后再对结果进行分析和同化找到软件工程中重用的代码片段,缺陷位置等信息。
数据挖掘本身是一个近几年新晋的热门概念,软件工程中的数据挖掘的实际应用也是一个新概念。根据三篇论文的迭代和相关性,本篇报告主要阐述软件开发阶段遇到的问题。问题分为三种:第一,开发者在已有的代码库中寻找所需的代码结构;第二,开发者在数据库中寻找重用该模式的静态规则;第三,开发者进一步寻找重用模式的动态规则。下面依次介绍这三个问题所运用到的机制和算法。
= 1 \* ROMAN \* MERGEFORMAT I 重用模式的检索
重用模式的检索最基本的重用问题是开发者知道所需的类和方法 但不知道调用这一方法所需遵循的模式。手工寻找重用模式的方法需要大量浏览包含已知关键字(类或方法的标识符)的代码,根据经验在其中选择可能的重用模式, 不断尝试所选模式。其中,必然有许多代码与用户所需的模式无关,这种浏览和尝试会浪费开发者大量的时间和精力。因此,数据挖掘技术根据已知关键字从代码库中搜索包含重用模式的代码段, 并且按符合用户需求的程度对搜索结果进行排序,标注用户感兴趣的段和行。核心思想是:重用模式必然是相似的, 而这种相似性会通过上下文结构, 如类之间继承和调用关系体现出来。具体步骤包括构建代码库,用户向代码库提交查询信息,返回例程给开发者。在服务器搜索重用模式的过程中,用到了六种启发式规则。
基本启发式规则
子类规则
规则描述
继承式启发
从存储器中返回一个类的集合Cr。集合中的类按与被查询的类C有共同祖先(包括父类和实现的接口)的顺序从高到底排列。
调用式启发
基本调用式启发
返回与m调用相同目标的方法集Mr。按调用方法相同个数从高到低进行排序。
最优调用式启发
从Mr中选取匹配率最高的方法,一般而言阈值为0.4
继承调用式启发
从Mr,中选取那些包含了和类c有至少一个共同祖先的类的方法。
使用型启发
基本使用型启发
找到m所涉及的对象类型,然后返回用了相同对象类型的一个方法集Ur。按所用相同类型对象的数目从高到低排序
继承使用型启发
结合了继承的使用型启发式规则
表1 重用模式检索的六种启发式规则
= 2 \* ROMAN \* MERGEFORMAT II静态规则的发现
首先,遍历代码库中的类间关系,将每一个继承、重载、调用其他类的关系写在数据库中;其次,对上述数据库进行关联规则挖掘。关联规则挖掘可以划分为两个子问题Apriori算法发现频繁项集和关联规则的生成。接着,进行规则的全局和局部裁剪。最后,在开发者针对某一个类进行查询时,用列表的形式表示重用这个类必须遵循的规则。规则之间根据支持度进行排序。
= 3 \* ROMAN \* MERGEFORMAT III动态规则的发现
开发者预先设定程序所必须遵循的系统的动态规则,例如在调用函数A之前不能调用函数B;比如在解锁之前不能访问锁里的资源。事实上,由于缺乏文档等原因,在许多情况下开发者无法预先设
您可能关注的文档
- 履带拖拉机相比轮式拖拉机在农田作业等方面主要优势.doc
- 年度绿化养护管理计划和方案.doc
- 年度检查验收小班调查表填写和说明.doc
- 年会流程和会场布置.doc
- 尿激酶制取与检验.doc
- 平安保险送单员.doc
- 平板和冷风速冻机区别.doc
- 平凡职业铸就不平凡使命.doc
- 平菇栽培中常见问题和解决办法.doc
- 平价餐饮在产品差异化过程中成本管理.doc
- 金融产品2024年投资策略报告:积极适应市场风格,行为金融+机器学习新发现.pdf
- 交运物流2024年度投资策略:转型十字路,峰回路又转(2023120317).pdf
- 建材行业2024年投资策略报告:板块持续磨底,重点关注需求侧复苏.pdf
- 宏观2024年投资策略报告:复苏之路.pdf
- 光储氢2024年投资策略报告:复苏在春季,需求的非线性增长曙光初现.pdf
- 公用环保2024年投资策略报告:电改持续推进,火电盈利稳定性有望进一步提升.pdf
- 房地产2024年投资策略报告:聚焦三大工程,静待需求修复.pdf
- 保险2024年投资策略报告:资产负债匹配穿越利率周期.pdf
- 政策研究2024年宏观政策与经济形势展望:共识与分歧.pdf
- 有色金属行业2024年投资策略报告:新旧需求共振&工业原料受限,构筑有色大海星辰.pdf
文档评论(0)