● 摘要
软件缺陷的引入是增加软件生命周期费用,拖延项目进度,降低系统可靠性,甚至造成灾难性事故的罪魁祸首。自软件工程概念提出以来,人们已提出多种工程技术防止软件缺陷的引入,但效果不容乐观。迄今为止,大量资源被投入软件测试的同时,软件缺陷仍是系统可靠性的最大威胁。软件缺陷的主动防御在降低费用,提高系统可靠性方面显得尤为重要,具有巨大的应用价值。但是,传统的缺陷预测和预防技术难以从根本上防止缺陷的引入。究其原因,传统方法多从改进软件生产过程着手,忽略了软件缺陷的深层次机理。软件在本质上是人类思维的“表达”,软件缺陷主要是由于个体的认知失效导致的。传统的软件工程技术,只能控制和改进软件生产过程,只能部分地间接地作用于软件的质量,而无法直接作用于引起缺陷的核心因素——程序员的个体认知。忽略了机理,传统的预防方法只能间接影响缺陷的引入,精确的缺陷预测更是无从谈起。 基于以上问题,本文从软件缺陷的人因失误机理出发,提出综合防御软件缺陷的理念。常理而言,“预”与“防”应是两项相辅相成的技术,“预”为“防”服务。然而,由于忽略了机理,传统的缺陷预测无法在软件开发早期阶段提供足够的预测精度,难以为缺陷预防服务,因此,传统缺陷预测与预防是两项毫不相干的技术。本文以人因失误机理为纽带,二者有机结合,共同防御软件缺陷的引入。首先,在总结程序设计认知机理基础上,构建了程序设计的综合认知模型。再以心理学领域经典的认知失误理论为基础,结合程序设计的领域特点,构建了软件缺陷的人因失误模式库。程序设计的综合认知模型和软件缺陷的人因失误模式库,是软件缺陷防御的两项基础。在此基础上,提出、设计并验证了三套方法。基于结构化根源分类的传统缺陷预防方法是在传统缺陷预防框架下所做的改进。传统的缺陷预防框架对于预防过程管理不当而引入的软件缺陷具有一定效果。然而目前该方法过于依赖专家经验和头脑风暴识别缺陷根源,导致经验不足的小公司无法企及,过程成熟度高的大公司也难以取得良好效果。本文提出一种结构化的根源分类方法,并将根源识别所需的知识固化在知识库中。应用案例表明,使用改进后的传统缺陷预防方法,即使经验不足的小公司也能顺利开展传统缺陷预防工作。基于人因失误元认知训练的缺陷预防方法(HEDP)是完全不同于传统缺陷预防框架的方法。传统方法无法作用于软件主体的认知失效,而个体的认知失效是导致缺陷引入的最主要的原因。该方法通过训练程序员在易错情景下的意识和调节能力来预防缺陷的引入。该方法以元认知训练为框架,其过程包括两大阶段,第一阶段为人因失误元认知知识训练,第二阶段为人因失误元认知调节体验。其中元认知知识训练包括关于程序设计认知过程、人因失误机理和人因失误预防措施等方面的知识。元认知调节体验通过问题解决过程中的反省和缺陷发现后的自我评价等方式开展。开展了两组案例研究,结果表明 HEDP有助于提高程序员缺陷预防方面的元认知能力,进而预防缺陷的引入。并且HEDP不依赖于传统过程能力,所有需要的企业均可使用。HEDP还可用于程序员在缺陷预防方面的认知能力的自我提升。基于人因失误机理的软件缺陷预测方法(HEFP)以人因失误场景分析为核心,在软件开发的需求和设计阶段识别缺陷的位置和形式。验证实验结果表明,HEFP在预测共性缺陷方面具备非常高的精度,能够精确预测的缺陷个数占总共性缺陷的88.9%,占共性缺陷总人次的96.5%。同时,HEFP在高风险缺陷预测方面表现优异,HEFP精确预测的缺陷个数占总缺陷个数的30.8%,其人次却占了总缺陷人次的78.6%。相比之下,传统基于程序度量的缺陷预测方法只能解释总缺陷的26.8%变异量,且无法给出缺陷的具体位置,HEFP的预测精度和预测效率均具明显优势。且HEFP在软件开发的早期进行,能够为缺陷预防提供有价值的指导意见,在应用价值方面具有明显优势。至此,两个基础,三套方法,有机结合,构成了软件缺陷的综合防御体系。
相关内容
相关标签