软件故障预测:逻辑回归与人工神经网络的比较
1. 数据与指标集描述
1.1 数据集
本次研究使用了公开数据集 KC1,该数据集来自 NASA 指标数据计划网站。数据源于一个用 C++ 实现的地面数据接收/处理存储管理系统,包含 145 个类,2107 个方法,共 40K 行代码。其中 60 个类存在故障,其余无故障。
1.2 指标集
研究采用了多种预测软件指标作为自变量,这些指标均为类级别的静态面向对象指标。具体指标及定义如下表所示:
| 指标 | 定义 |
| — | — |
| 对象间耦合度 (CBO) | 一个类所依赖的非继承相关的不同类的数量 |
| 继承深度 (DIT) | 类在其类层次结构中的层级 |
| 内聚性缺失 (LCOM) | 没有共同属性的方法对的数量 |
| 扇入 (FANIN) | 来自更高模块的调用次数 |
| 类响应 (RFC) | 类中实现的方法数加上由于继承可访问的方法数 |
| 类加权方法数 (WMPC) | 类中实现的方法数(而非类层次结构中可访问的所有方法数) |
| 子类数量 (NOC) | 从指定类派生的类的数量 |
| 圈复杂度 (CC) | 模块决策结构的复杂度度量,即线性独立路径的数量 |
| 源代码行数 (SLOC) | 仅包含代码和空白的源代码行数 |
| 类方法数 (NMC) | 每个类的方法数 |
传统的静态复杂度和规模指标,如 McCabe 的圈复杂度和可执行代码行数,也被转换为类级别并使用其平均值。因变量是缺陷级别指标,用于判断模块是否易出错,将其转换为