论文部分内容阅读
伴随着20世纪60年代末“软件危机”的提出,软件工程得到了快速的发展,它的宗旨是产生高质量的应用软件或产品。软件可靠性是软件质量的重要特性之一,IEEE给出了它的具体定义,即在规定的条件和时间内,软件不发生失效的概率。ISO9000又将失效定义为软件运行时,出现不正确的输出。很多原因诸如软件缺陷、硬件故障及人为因素等引起软件失效,工作人员若每观察到一次失效,就能够发现一个或多个软件缺陷,则纠正这些缺陷必定可以减免失效的重复发生,提高软件可靠性。记录质量的重要线索是软件缺陷,且它又是软件可靠性的重要体现。发现软件中存在的缺陷,并修正这些缺陷是软件测试的目的,然而软件技术发展至今,任何检测技术并不能发现及排除所有的缺陷,总会有一些不为人知的原因导致缺陷产生,而这些潜在却不被发现的缺陷势必影响软件的质量。合理地预测缺陷可以统计尚未发现但仍存在的缺陷数目及缺陷分布,这样能够帮助测试人员快速地、准确地定位并纠正缺陷,达到提高软件可靠性和保证软件质量的目的。软件缺陷预测是对软件产品的缺陷数量或者缺陷分布进行静态或动态地预测。静态缺陷预测,主要是基于缺陷相关的度量数据预测缺陷的数量或者分布;动态缺陷预测,则是基于缺陷或者失效发生的时间预测缺陷随时间的分布。常见的预测软件缺陷的度量元有代码度量元、Halstead度量元以及McCabe度量元等。相关软件缺陷的度量元较多,目前研究界并没有得出预测缺陷一致的、尽可能完全、准确的度量元,尚缺乏综合模型来分析度量元同软件缺陷之间的复杂关系。在此基础上,本文综合多种度量元预测缺陷数量及分布情况。鉴于度量元数据收集的冗杂性,部分度量元对缺陷预测的积极影响不大或具有消极影响,本文首先采用输入输出关联法计算度量元相关缺陷的重要性并排序它们;其次利用误差反传神经网络与粒子群优化算法相结合的技术构建一种提取有效度量元的智能模型,达到剔除无效度量元和减少预测工作量的目的。最后利用提取的有效度量元结合粒子群优化支持向量机的分类方法构建软件缺陷预测模型。通过实验分析,该模型相比早期的预测模型能够减少预测成本,提高预测精度,提升泛化性能。