background image

软件工程数据挖掘研究分析

   摘 要:计算机软件系统规模的不断壮大,以及构成的日益复杂,为软件工程的管理和控
制活动带来了困难,而应运而生的数据挖掘技术为上述难题提供了妥善的解决方法,其不
仅可以便捷的获取有效信息,而且为知识智能型软件工程的实现提供了机遇。对此,本文对
软件工程数据挖掘作了概述,并着重分析了其在软件工程中的应用。

 

  关键词:软件工程;数据挖掘;代码缺陷

 

\  广泛收集软件产品及其过程数据是软件开发者掌握软件相关信息的重要手段,也已成
为当下的标准惯例,但在海量信息面前,仅凭手工活动显然难以奏效,这促使数据挖掘技
术得以广泛应用,因其对提高软件开发质量和效率,增强其实用性与可信性具有很大的促
进作用,因此软件工程数据挖掘不仅具有不容忽视的学术价值,而且应用前景十分广阔,
值得我们深入研究。

 

  一、软件工程数据挖掘概述

 

  (一)基本含义

 

  软件工程数据主要是指开发软件过程中所涉及的各类数据,如需求分析、可行性分析、
设计等文档,开发商通信、软件注释、代码、版本、测试用例和结果、使用说明、用户反馈等信
息数据,一般情况下其是软件开发者获取软件数据的唯一来源;而数据挖掘是指在海量数
据中集中发现有用知识或信息的过程。

 

  (二)工作原理

 

  软件工程数据挖掘主要分为三个阶段,一是数据预处理阶段。二是挖掘阶段,主要运用
分类、统计、关联、聚类、异常检测等一系列算法的过程。三是评估阶段,数据挖掘的意义在于
其结果应易被用户理解,因此其结果评估主要分为模式过滤和模式表示两个环节。

 

  二、软件工程数据挖掘应用分析

 

  (一)数据挖掘在软件开发环节的应用

 

  软件开发环节主要包括程序编写及其成果提交两大步骤,因此数据挖掘的应用可从这
两点着手。

 

  一是编写程序时,应在理解程序结构和功能的基础上检索和发现有用信息。

 

  首先要在现有的代码库中搜寻符合要求的模式,即检索软件重用模式,鉴于手工寻找
方式耗费精力效果差,因此可以在代码库中输入关键字,筛选出对应的代码段,并基于用
户实际需求加以排序,以此便捷重用模式的寻找,但应保证所输入代码库的查询信息的属
性、类型、方法符合规范,并以相关的启发式规则对其进行评分,然后将排序完毕的例程以
及带有标注的代码段反馈给软件开发者。

 

  其次应注意发掘上述模式的静态规则,主要包括调用、重载、多重继承等关系,具体应
查看并记录具备上述关系特征的类间关系,然后借助

Apriori 等算法发现频繁项集,并利用

递归测试对其进行细致划分,计算项间关联度的可信程度;由于与要求吻合的规则数量较
多,因此可按照无用剔除规定对其进行局部修剪和全局裁剪;若查询的是某一类代码,可
在遵循规则组的前提下以列表的形式对其进行排序,并通过建立

AST 图体现开发者所需的

数据信息。

 

  最后是充分利用动态规则,其是当下自动发现编程信息领域研究最为深入的一面,其
典型应用方法如下:通过将挖掘对象设定为静态代码,使其

hash 函数为 ID 值,并将其映

射后的序列存储到数据库中,利用

FPClose 算法生成 I

→(C?I)规则,即寻找公共子集,

然后对程序中可能存在缺陷的代码段进行查找,以此保证数据挖掘的可靠性。

 

  二是在修改提交的编程结果环节,该阶段不仅要排除其中的缺陷代码,还要保证其符
合软件开发的行业规定,如标识、注释、函数设计等。在具体实践中用于定位缺陷代码的测试