A systematic literature review on software detect prediction using artificial intelligence: Datasets, Data Validation Methods, Approaches, and Tools

软件缺陷预测的系统文献综述:从数据集、数据验证方法、缺陷检测和预测方法、工具以及对未来研究人员的建议几个角度展开

缺陷预测方法框架

发现缺陷的方法:使用传统方法检测缺陷和使用AI方法预测缺陷

缺陷检测:手动测试用例执行(具体可分类为黑盒/白盒/冒烟/用户验收/可用性/性能测试,非常耗时)、自动化缺陷检测(软件框架驱动测试用例)、运行静态代码分析器(检查预定义的规则)、手动代码审查、同行审查

缺陷预测:基于软件项目分类、基于缺陷预测指标分类、统计分类、基于AI技术分类

基于软件项目分类(使用项目本身信息):项目内缺陷预测WPDP、跨项目缺陷预测CPDP、跨版本缺陷预测CVDP、异构缺陷预测HDP

基于指标分类:类(RFC)、代码行(LOC)和缺乏编码质量(LOCQ)等指标,过程度量、代码度量、面向对象度量

基于AI技术分类

评价指标:AUC、PF、F-Measure、Recall、Precision

数据集:主要来自于 NASA、PROMISE 和 AEEEM 数据集

具有类不平衡(解决方法:Bagging、过采样、欠采样、综合少数过采样技术 SMOTE、两阶段成本敏感学习)、维度过高(解决方法:降维、筛选部分特征)、预测特征不足、分类标签不足

特征选择:基于相关性/过滤器/聚类/前向选择/贪心前向选择/遗传蚁群优化/相似性度量/卡方/信息增益/PCA/KPCA等方法

高质量、平衡且无噪音的数据非常重要。毫无疑问,数据预处理是机器学习或人工智能相关任务中的重要一步

数据集(进一步丰富以添加有助于预测缺陷估计、资源分配和修复缺陷的代码参考的附加功能)

A deep tree-based model for software defect prediction

研究背景

机器学习方法:提取特征(代码大小、复杂度、流失指标),交给分类器(朴素贝叶斯、支持向量机、随机森林),不能真正理解代码的语法语义

自然语言处理技术:词袋BoW,依旧具有语义理解方面的局限

实例:具有相似的软件度量、代码标记和频率,不同的句法和语义结构

研究成果

提出了一个树形结构的LSTM模型(每个AST节点对应网络中一个LSTM单元),在项目内预测和跨项目预测任务上取得各类指标的突破

模型实现

1)解析源代码:将源代码文件解析为抽象语法树。AST的根代表一个完整的源文件,其子项都是文件的顶部元素,例如导入和类声明。每个类声明节点都有多个子节点,它们代表类的字段或方法。一个方法声明节点也有多个子节点,代表它的名称、参数参数、返回类型和主体。在 SimpleName 节点的情况下,我们用其 AST 类型(例如 FieldDeclaration、MethodDeclaration、BlockStmt 和 WhileStmt)或它的 AST 名称(例如变量名称、类名称和方法名称)标记每个树节点

2)嵌入AST节点:将AST节点映射为一个固定长度的连续值向量。嵌入矩阵随机初始化,然后在训练过程中学习

3)缺陷预测模型:Tree-LSTM 单元被建模为函数 t-lstm(),它以 AST 节点 t 作为输入并输出两个向量:h(表示隐藏的输出状态)和 c(表示它记住的上下文仍远在 AST 中)。这是通过聚合后代的输出来完成的,即在子节点上递归调用 t-lstm()

数据集

1)三星提供的开源项目,由三星的静态分析工具对有缺陷的文件进行识别

2)PROMISE数据集

网络空间安全论文笔记3——缺陷相关推荐

  1. 网络空间安全论文笔记2——漏洞

    Exploitability prediction of software vulnerabilities 预测漏洞:基于计数的方法(侧重于预测特定时间范围内软件系统中存在的漏洞数量,在理解安全趋势. ...

  2. 网络空间安全论文笔记4

    VulDeePecker: A Deep Learning-Based System for Vulnerability Detection. (NDSS 2018) VulDeePecher:一种基 ...

  3. 2019 DGF(深度引导滤波网络) 相关的论文笔记

    文章目录 *Fast End-to-End Trainable Guided Filter* *KeyPoint* *overview* *keywords* *extends* 摘要 引言 相关工作 ...

  4. 2019寒假训练营寒假作业(三) MOOC的网络空间安全概论笔记部分

    目录 第五章 网络攻防技术 5.1:网络信息收集技术--网络踩点 信息收集的必要性及内容 网络信息收集技术 网络踩点(Footprinting) 网络踩点常用手段 5.2:网络信息收集技术 --网络扫 ...

  5. usermode linux网络空间,(RHCE笔记)linux基础之三 用户、组及权限

    一.user 1.每个用户将指派唯一用户ID(UID) root的ID为0 普通用户ID从500开始(0-500系统使用) 2.用户名和用户ID存在 /etc/passwd中 3.当用户登陆时系统自动 ...

  6. 论文笔记目录(ver2.0)

    1 时间序列 1.1 时间序列预测 论文名称 来源 主要内容 论文笔记:DCRNN (Diffusion Convolutional Recurrent Neural Network: Data-Dr ...

  7. Deep Learning论文笔记之(七)深度网络高层特征可视化

    Deep Learning论文笔记之(七)深度网络高层特征可视化 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文,但老感 ...

  8. 【论文笔记】—低照度图像增强—ZeroShot—RUAS网络—2021-CVPR

    论文介绍 ​题目:Retinex-Inspired Unrolling With Cooperative Prior Architecture Search for Low-Light Image E ...

  9. 论文笔记(FCN网络,语义分割):Fully Convolutional Networks for Semantic Segmentation

    FCN论文笔记:Fully Convolutional Networks for Semantic Segmentation 语义分割模型结构时序: FCN SegNet Dilated Convol ...

最新文章

  1. Jenkins maven 编译一些问题
  2. 计算机里的音乐都是什么名字,PAPI
  3. golang中的爬虫
  4. selinux关闭后mysql_centos下关闭selinux不重启的方法
  5. cookie session token区别_cookie、session与token的真正区别
  6. 迪杰特斯拉算法的实现
  7. [导入]值得收藏经典民间偏方
  8. Java反射机制介绍
  9. WinFom中经典小游戏(含源码)
  10. mysql建表语句转oracle_MYSQL事务他快你慢,都是你自己惹的祸
  11. Android桌面隐藏图标
  12. 基于fabric的行业联盟链技术研究/司帅帅
  13. 免费云服务器申请攻略!白嫖党乐开了花
  14. 第九次java课堂笔记
  15. 诗词格律[1] 诗词入门
  16. JavaScript的字符串去空格
  17. 【毕业设计】大数据电商销售预测分析 - python 数据分析
  18. ubantu提交代码Warning:subject >50 characters; use shorter first paragraph怎么解决
  19. erdas图像增强步骤_ERDAS图像增强处理.ppt
  20. 简单又好用的5款小工具软件

热门文章

  1. FastReport.Net发布2013版!新增支持AJAX和云端存储
  2. Reverse-1.X86汇编
  3. 如何使用性能监视器监控内存
  4. [汇编语言]CALL和RET指令
  5. 10本投行必读书籍+10个必用网站
  6. Google Earth Engine(GEE)最基础代码学习笔记6——计算坡度坡向
  7. django返回对象Response
  8. Python 标准库之 fileinput 和 文件迭代器
  9. python IDLE 的调试器
  10. Java Comparator比较器