> 文章列表 > 软件挖掘|软件缺陷|蜕变关系

软件挖掘|软件缺陷|蜕变关系

软件挖掘|软件缺陷|蜕变关系

目录

软件无处不在 

软件发展不是一个简单的任务

识别软件缺陷 

软件缺陷定位 

使用bug报告识别有缺陷的源代码

使用标准IR方法建模相关性

VSM

rVSM

根据bug报告和源代码学习共享主题,并根据主题衡量相关度

学习结合大量手工制作的特性

如何建模?


软件无处不在 

~游戏机

~电子书

~电视机

~飞机

~广播医疗

~电子签名

~娱乐游戏机

~打印机

~汽车

~移动手机

~智能手机

~相机

软件发展不是一个简单的任务

 挑战:

-更大

-更复杂

-更多功能

传统的软件工程正在努力管理软件开发过程。

解决方法:软件挖掘

将软件视为一种特殊类型的数据,挖掘有用的知识,以促进软件开发。

~挖掘软件缺陷识别

~挖掘成本/工作量估算

~挖掘软件遗留问题管理

~挖掘资源分配

~挖掘过程控制 

识别软件缺陷 

识别软件整个生命周期中的软件缺陷

编码——>引导测试——>释放——>处理bug报告——>打软件补丁——>释放

软件缺陷定位 

Bug报告使用自然语言描述程序的错误功能行为。

表示源代码中隐藏的软件缺陷,根据Bug报告,我们有望识别出有bug的源文件。

使用bug报告识别有缺陷的源代码

 软件代码看作自然语言 相似度排序 找到最相似的code段落

使用标准IR方法建模相关性

VSM

-使用TF-IDF表示bug报告和源代码

-使用余弦相似度测量相关性

rVSM

-测量与VSM的相关性

-找到类似的错误报告和相关的源文件

-融合得分值产生最终排名

根据bug报告和源代码学习共享主题,并根据主题衡量相关度

-LDA

-LSI

学习结合大量手工制作的特性

-手工制作的特性(修复bug的近日性、频率...)

-词汇特征+文本相似特征+元数据

 前期学习:程序代码 等同于🟰 自然语言

相同的特征表示 vs 不同的语义 

如何建模?

两种可能的方式:

~将图分解为一组路径

~直接将图作为一个整体

 

法1:  把CFG图看作paths

 

 法2: as a whole

bug报告通常提供意外程序行为的高级描述。这样就很难直接匹配关系。

(2023年 4月18日 12:08首次发布)