闫若琨
北京交通大学 北京 100044
软件开发技术的复杂度逐步提升,更易造成后续使用过程中的产品缺陷。特别是对于通信类软件,由于产品质量问题会导致软件用户的通信间断,从而会给用户的日常生活造成不良影响。因此,在软件开发的过程中便应该尽早发现缺陷,在开发时提高通信软件的质量要远比开发完成后再进行反复测试更为有效。而通信软件质量的提升需要企业加大整体研发的投入金额,所以通信软件企业在软件质量方面的管理成本呈现逐年增加的态势。要想得到高质量的通信软件,需要通信软件生产企业在软件缺陷预防方面付出更大的努力,这样才能在避免软件缺陷重复出现的同时提升企业的经济效益。
通信软件缺陷预防指的是在通信软件未出现缺陷时,开发人员便提前采取积极有效的一系列预防措施,将缺陷扼杀在萌芽状态的一种先进型技术。美国质量保证研究所曾对软件修复成本做过一项统计,结果表明软件上线后期发现缺陷的修复成本要远远高于软件开发初期,且修复成本会随着软件上线时间的推进而大幅增加。这是由于通信软件发生缺陷后,开发人员需要修改最初的设计与编码,且需要重新进行测试以及考虑对其他相关模块的影响。该研究所的数据表明,若将软件初始设计时修复一个缺陷的成本记作1,那么软件正式上线后进行修复的成为则为100,成本属于成百倍的增长。因此,为了降低软件发布后的巨幅修复成本,最好的方法便是在初始开发是进行缺陷预防[1]。
工作人员在尝试修复通信软件已经发生的问题或缺陷时,往往会将表面结果作为修复衡量指标,解决问题后便不再深入挖掘剖析。这样的操作便会存在通信软件缺陷表面已经处理完毕但实际还存在深层次问题,无法找寻到缺陷存在的根本原因,从而导致软件的缺陷反复发生,浪费大量时间成本和修复成本。除此以外,当一个通信软件发生缺陷时,通常会由一整个团队进行修复,有时团队成员在解决缺陷的策略上有不同想法,成员间缺乏团队内部的沟通确认和交流分享,这样导致通信软件缺陷处理具备延后性,无法快速高效地制定有效的缺陷解决策略。
由于缺乏对研发人员的明确分工,会导致通信软件缺乏整体性规划,降低通信软件系统运行的稳定性和可扩展度。且现阶段缺乏专业的通信软件测试员,软件的测试工作通常是由程序开发者来完成。由于软件开发者拥有定性思维,且存在个人思维的局限性,往往难以发现软件设计过程中存在的固有缺陷,这样会导致研发人员无法在开发阶段发现大量的程序错误,为通信软件日后发生缺陷埋下巨大的隐患[2]。
(1)通信软件缺陷预防体系理论概述
通信软件缺陷预防体系主要由两部分构成:首先是对通信软件缺陷的整体化分析过程,通俗来讲便是对通信软件缺陷的解决策略和风险分析过程。其次是建立系统化的缺陷资产库,对通信软件经常出现的缺陷数据和预防流程进行系统化梳理。通信软件缺陷预防体系的建立主要包括以下四个步骤。
首先,应该设立处理通信软件缺陷问题的专业化团队,并赋予专业化团队一定的责任指标。设立一个团队负责人,一般由通信软件项目的经理来担任,团队负责人进行任务分配、团队矛盾协调。团队人员负责系统化处理通信软件缺陷,人员构成包括缺陷领域的专业人才、通信软件开发人员等。
第二,要根据具体问题构建长期及短期的通信软件缺陷应对策略。根据对通信软件缺陷各项指标的记录,用记录数据分析缺陷的轻重程度,按照轻重程度将缺陷划分为严重缺陷、一般缺陷和轻微缺陷,从而据等级制订专业性的长短期缺陷应对策略。
第三,追根溯源,对缺陷的源头进行梳理。在通信软件缺陷的处理过程中,要将缺陷原因分析放到首要地位。分析缺陷为什么会发生、在何种情况下发生、缺陷发生的因果关系、编程的内部逻辑是否有误等根源性问题,并针对根源性问题提出相应的改进措施。在溯源处理的过程中,要注重溯源的过程而非溯源的结果,专注于一次性彻底解决通信软件存在的缺陷问题。
最后,要进行缺陷预防的档案整理,将已有的缺陷库规范化,避免缺陷日后的反复发生。根据缺陷处理的实际过程将缺陷系统化分类,为日后缺陷的鉴定及预防提供完备的材料基础。
(2)通信软件缺陷预防体系注意点
首先,要明确开发人员的职责与义务,做到团队内分工明确。并且做到团队内的信息沟通及时化透明化,实现缺陷修复进度的团队同步共享,避免信息传递阻塞的不良现象发生。
其次,要将通信软件缺陷处置流程系统化规范化,通过溯源处理规避日后的缺陷复发,并按照严格的流程进行缺陷数据收集及信息处理分析。
第三,要将通信软件缺陷的信息流和故障流做可视化性处理,对缺陷修复过程中遇到的困惑进行归类和预防,同时建立完善的责任人制度,保障缺陷预防体系权责分明。
第四,要建立完备的缺陷预防库。在缺陷预防库中列明常见缺陷的清单,写明修复方法与后续跟进反馈记录,根据反馈记录进行措施调整。这样可以高效预防下次同类缺陷的发生。
最后,要充分深入检查缺陷的根源,发掘本源并进行问题跟踪,对缺陷修复活动要进行定期复盘,不断吸取经验教训,大幅提升缺陷处理的效率。下图为典型的通信软件缺陷预防体系。
图1 通信软件项目缺陷预防体系图示
3.2.1 传统通信软件缺陷预测方法测评
通信软件缺陷预测是提升通信软件质量的基础,只有在通信软件设计的实际过程中对缺陷进行准确预测,才能及时对日后可能产生的缺陷进行针对性的预防。按照缺陷预测的不同技术,可将缺陷预测方法分为三大类,分别是类比预测法、Delphi估算预测法、数学模型预测法。现阶段的研究可以证实前两种预测方法具有无法克服的局限性,因此目前在通信软件缺陷预测领域,研究者们大多采用数学模型预测法。常用的数学模型预测方法有以下几种:线性判别分析预测法(LDA);布尔判别函数预测法(BDF);贝叶斯网络预测法(BN);分类回归树预测法(CART);优化集精简预测法(OSR);聚类分析预测法(CA);支持向量机预测法(SVM);人工神经网络预测法(ANN)以及平均单一相关评估器预测法(AODE)等方法。不同的缺陷预测方法有着不同的优缺点,可以根据实际缺陷解决不同的问题,但也存在着各自应用的局限性。有研究者曾将上述提及的数学模型预测法进行了详细比较,具体比较结果见下表1和表2。
表1 数学模型缺陷预测方法比较
表2 不同缺陷预测模型的预测结果比较
结合上述表一和表二的预测结果数据分析,可以看出与其他预测模型相比较,多元化相关评估器预测法的预测平均准确率最高。但是75.8%的预测准确率仍旧有大幅的提升空间,为了进一步提升该模型预测的准确度,可以在多元化相关评估器预测法的基础上进行改进优化。
3.2.2 基于多元化相关评估器预测法的缺陷预测改进体系设计
首先,可以在原有预测模型上增加度量元素的个数,保证增加的度量元素具备易操作、易估计、与通信软件缺陷相关度高的特征。同时要细化度量准则,以提升通信软件缺陷预测的准确性。在此操作过程中要注意,不要单纯增加度量元素的数量,仅以增加数量为目标反而会使预测结果与设计初衷背道而驰。对于可以影响通信软件质量的重要度量元素,应该适度提升其在预测模型中的权重值。
其次,可以调整I类/II类错误率的比例。I类错误是指预测模型将低风险缺陷错误预测为高风险缺陷,II类错误是指预测模型将高风险缺陷错误预测为低风险缺陷。这两种不同的错误会造成不同的软件修复成本,可以通过调整度量元素的数量和权重比例、细化度量标准,尽可能地将风险模型优化。为保证通信软件的使用质量,可以选择牺牲I类错误比率保证II类错误比率的准确度,提升通信软件用户的使用体验[3]。
本文从现阶段通信软件缺陷预防存在的问题入手,分析通信软件缺陷预防的必要性。根据缺陷防控过程具体存在的问题,提出完善的通信软件缺陷预防理论体系。在理论架构的支撑下,对传统通信软件缺陷预测的不同方法进行分类测评,以筛选出最优的缺陷预测模型。在最优缺陷预测模型的基础上,提出两点模型优化改进的实际建议,为通信软件缺陷预防管理提供借鉴。随着缺陷预防流程的标准化以及缺陷预防模型的进一步优化,通信软件缺陷预测模型一定会更加丰富和完善,预防效果也会越来越好。