CN103092762B - 一种适用于快速软件开发模式的实时软件缺陷检测方法 - Google Patents
一种适用于快速软件开发模式的实时软件缺陷检测方法 Download PDFInfo
- Publication number
- CN103092762B CN103092762B CN201310053478.6A CN201310053478A CN103092762B CN 103092762 B CN103092762 B CN 103092762B CN 201310053478 A CN201310053478 A CN 201310053478A CN 103092762 B CN103092762 B CN 103092762B
- Authority
- CN
- China
- Prior art keywords
- software module
- defect
- software
- model
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开一种适用于快速软件开发模式的实时软件缺陷检测方法,首先初始化模型使其对任意模块的检测结果置信度为0;等待并接收一个刚完成编码的软件模块;利用当前缺陷检测模型对所接收的软件模块进行实时检测;若缺陷检测模型的缺陷检测置信度低于预设阈值,将所接收的软件模块送交测试人员进行详细测试,输出其缺陷情况,否则直接输出检测结果;利用接收到的软件模块对当前模型进行实时增量式建模;返回等待步骤接收新的软件模块直至所有软件模块开发完毕。该方法能够在编码过程中同步利用不断积累的软件模块进行实时建模,并在每个模块开发完成后及时为开发人员提供该模块的缺陷预警。
Description
技术领域
本发明涉及一种适用于快速软件开发模式的实时软件缺陷检测方法,属于自动化软件质量辅助控制技术领域。
背景技术
软件是信息系统的灵魂,是各行各业实现信息化的基础和重要支柱。为适应于真实世界问题中纷繁复杂的应用需求,软件系统功能变得越来越多,其复杂性也越来越高。面对庞大复杂的软件系统,通过对所有模块进行详细测试从而发现包含缺陷的模块已变得十分困难,因此开发团队必须借助自动化软件质量辅助控制装置对软件模块进行扫描,发现包含缺陷的模块,才能尽可能多的去除软件缺陷,提高软件质量。自动化软件质量辅助控制装置的核心是缺陷检测模型。为构建性能好的缺陷检测模型,现有技术必须等待编码后对相当数量模块进行详细测试以获得其缺陷情况,从中获取该软件独有的缺陷模型用于对其余模块中的缺陷实施有效检测。
然而,对一定数量的模块进行详细测试、对缺陷模式的建模都需要消耗大量时间。在该过程中,开发人员无事可干,必须被动等待该过程结束才能利用模型发现有缺陷模块,造成了开发资源的闲置,延缓了开发进度。在软件快速开发模式下,现有技术的这一局限显得更加明显。事实上,如果开发过程、建模过程、检测过程可以同步进行,在开发人员每完成一个模块的开发时,自动化软件质量辅助控制装置就能对该模块的缺陷情况进行有效检测,并实时地向开发人员反馈其缺陷情况,以便及时修改,就可以减少等待时间,提高软件质量和生产率。然而,现有建模技术难以突破这一障碍。
发明内容
发明目的:目前软件缺陷检测方法必须在编码完成并对相当数量软件模块实行人工缺陷检测后方能建立检测模型,而开发人员需等待模型建立完毕后才能根据检测结果定位缺陷模块并对其修改,难以适应快速软件开发的需求。针对这一问题,本发明提出了一种在编码过程中进行实时软件缺陷预警的软件缺陷检测方法,即一种适用于快速软件开发模式的实时软件缺陷检测方法。该方法能够在编码过程中同步利用不断积累的软件模块进行实时建模,并在每个模块开发完成后及时为开发人员提供该模块的缺陷预警。
技术方案:一种适用于快速软件开发模式的实时软件缺陷检测方法,通过以下步骤实现对刚完成编码的软件模块实时地缺陷检测:
步骤(1)初始化模型,使其对任意模块的检测结果置信度为0;
步骤(2)等待并接收一个刚完成编码的软件模块;
步骤(3)利用当前缺陷检测模型对所接收的软件模块进行检测;
步骤(4)若缺陷检测模型的缺陷检测置信度低于预设阈值,则转入步骤(5),否则转入步骤(7);
步骤(5)将所接收的软件模块送交测试人员进行详细测试,获取其缺陷情况;
步骤(6)利用所接收的软件模块及其缺陷情况对当前缺陷检测模型进行增量式建模,并将软件模块有缺陷情况反馈模块开发者,转入步骤(8);
步骤(7)利用所接收的缺陷情况未知的软件模块当前缺陷检测模型进行增量式建模,并将模型的检测结果反馈模块开发者;
步骤(8)若还有软件模块尚未开发完毕,转步骤(2),否则结束。
其中,缺陷检测模型的输出为缺陷检测结果(即“有缺陷”或“无缺陷”)和相应的缺陷检测置信度(取值(0~1))。检测置信度越接近1,表明缺陷检测器对相应的检测结果就越肯定。例如:如果结果是“有缺陷”,置信度为0.9,则说明检测模型非常肯定软件模块里包含缺陷。对于不同的软件模块,其检测结果和检测置信度由模块自身及当前模型唯一确定。
有益效果:与现有技术相比,本发明提供的适用于快速软件开发模式的实时软件缺陷检测方法,能够将建模过程、检测过程和软件模块开发过程相融合,当一个模块完成开发后,利用缺陷检测模型对该模块进行检测,并输出缺陷结果,同时还利用此模块对当前检测模型进行实时增量式建模,以提升模型的检测性能。
附图说明
图1为基于自动化软件质量辅助控制装置的软件开发过程图;
图2为现有的软件缺陷检测器工作过程图;
图3为本发明实施例的实时软件缺陷检测器工作流程图;
图4为本发明实施例的实时软件缺陷检测与建模流程图;
图5为本发明实施例的软件缺陷检测模型实时建模流程图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
基于自动化软件质量控制装置的软件开发过程如图1所示。在需求分析、软件设计、程序模块编码过程后,将所有程序模块提交自动化软件质量辅助控制装置进行处理,并输出每个模块的缺陷情况。若尚有模块包含缺陷,则通知开发人员对其进行调试和修改,然后再对修改后的代码进行缺陷检测,直至没有模块包含缺陷,最后对外发布软件。现有自动化软件质量辅助控制装置的核心——软件缺陷检测器的工作过程如图2所示。该检测器在对模块进行缺陷检测之前,需要利用一定数量的模块进行训练,以建立缺陷检测模型。训练模块集的生成需借助人工代码检测或详细测试,通常需要消耗大量时间;同时,缺陷检测模型的构建过程同样需要消耗一定的时间。因此,在能够输出对模块的自动缺陷检测结果之前,需要等待生成训练模块集及建立模型,在此过程中,所有开发人员将无事可做,造成了开发资源的闲置,延缓了开发进度。难以适应快速软件开发的需求。
本实施例的实时软件缺陷检测器如图3所示,本实施例的实时软件缺陷检测器能够将建模过程、检测过程和模块开发过程相融合,当一个模块完成开发后,利用当前的缺陷检测模型对该软件模块进行检测,并输出缺陷结果,同时还利用此模块对当前缺陷检测模型进行实时增量式建模,以提升模型的检测性能。该缺陷检测器的实时缺陷检测及建模方法流程在图4和图5中进行详细介绍。
如图4所示,适用于快速开发模式的实时软件缺陷检测方法:
步骤0是起始动作。
步骤1进行模型的初始化,在此步骤中将当前缺陷检测模型初始化,使得该缺陷检测模型对任意给定的软件模块x进行缺陷检测的置信度F0(x)=0。
步骤2进入缺陷检测过程,等待开发人员进行软件开发,并接收在t时刻由开发人员向自动化软件质量辅助控制装置提交的一个软件模块xt。
步骤3利用时刻t对应的缺陷检测模型Ft对软件模块xt的缺陷情况进行检测。
步骤4判断检测置信度Ft(xt)是否小于一个预设的阈值θ,若不小于该阈值,则转入步骤6,否则转入步骤5;
步骤5通过人工代码检查或详细测试获取软件模块xt是否包含缺陷。
步骤6向提交该软件模块的开发人员输出软件模块xt的缺陷情况。
步骤7利用软件模块xt进行实时增量式建模,用建模所得缺陷检测模型Ft+1替换当前缺陷检测模型Ft,建模过程详细说明见图5。
步骤8判断是否整个软件项目仍然存在需要进行缺陷检测的软件模块,若有则转入步骤9,若没有转入步骤10;
步骤9时间计数器t加1,并转入步骤2继续等待模块提交。
步骤10软件缺陷检测过程结束。
图5详细说明了图4中步骤7实时增量式建模的子流程,正是该过程使得建模过程可以在接收到每一个模块后实时地进行。
步骤70是建模过程起始动作。
步骤71接收训练模块xt以及其缺陷情况,在此,缺陷情况表示该软件模块是否包含软件缺陷,其获取可以通过图4步骤5人工代码检查或详细测试,亦可通过图4步骤4的缺陷检测模型Ft。
步骤72判断软件模块xt的缺陷情况是否通过人工代码检查或测试获得,如果是转入步骤73,否则转入步骤74。
步骤73通过式(3)和式(4)利用软件模块xt及对应缺陷情况进行增量式的学习建模,获得用于在t+1时刻对软件模块进行缺陷检测的缺陷检测模型Ft+1。
步骤74通过式(3)和式(5)利用软件模块xt进行增量式的学习建模,获得用于在t+1时刻对模块进行缺陷检测的缺陷检测模型Ft+1。
步骤75实时增量式建模过程结束。
本发明中采用多个增量式支持向量机SVM(式(1))来作为软件缺陷检测的模型,每个SVMfv,t使用不同的核函数(kernelfunction)来进行计算。缺陷检测模型Ft通过结合V个fv,t来产生(式(2)),其中二元函数kv(.,.)为第v个SVMfv,t所采用的核函数(1≤v≤V)。由于核函数在建模之前需要人工给定,因此,第v个SVMfv,t由一组{αv,i}唯一确定(1≤i≤t),而αv,i的计算则通过学习建模过程来完成。
增量式SVM通过式(3)~式(5)进行学习建模,以确定第v个模型fv参数{αv,i},其中1≤v≤V,1≤i≤t。具体来说,对所有αv,i(i<t),采用式(3)来进行参数增量式更新。对αv,t,则根据缺陷情况的获取途径选择更新公式。当软件模块xt的缺陷情况yt通过人工代码检查或详细测试获取时,采用式(4)计算第v个模型的参数αv,t;当软件模块xt的缺陷情况通过模型自动检测而得时,采用式(5)计算第v个模型参数αv,t。其中,λ1,λ2,m,n,T,ηt(t=1,…,T)为增量式SVM的人工预设参数,二元函数l’(.,.)为SVM采用的损失函数HingeLoss的一阶导函数,yt为软件模块xt的缺陷情况标注,yt=+1表示软件模块xt包含缺陷,yt=-1表示软件模块xt没有缺陷。
αυ,i←αυ,i(1-ηtλ1)(3)
Claims (1)
1.一种适用于快速软件开发模式的实时软件缺陷检测方法,其特征在于,包括如下步骤:
步骤(1)初始化模型,使其对任意模块的检测结果置信度为0;
步骤(2)等待并接收一个刚完成编码的软件模块;
步骤(3)利用当前缺陷检测模型对所接收的软件模块进行检测;
步骤(4)若缺陷检测模型的缺陷检测置信度低于预设阈值,则转入步骤(5),否则转入步骤(7);
步骤(5)将所接收的软件模块送交测试人员进行详细测试,获取其缺陷情况;
步骤(6)利用所接收的软件模块及其缺陷情况对当前缺陷检测模型进行增量式建模,并将软件模块有缺陷情况反馈模块开发者,转入步骤(8);
步骤(7)利用所接收的缺陷情况未知的软件模块对当前缺陷检测模型进行增量式建模,并将模型的检测结果反馈模块开发者;
步骤(8)若还有软件模块尚未开发完毕,转步骤(2),否则结束;
下面是增量式建模的子流程,正是该子流程使得建模过程可以在接收到每一个模块后实时地进行:
步骤70是建模过程起始动作;
步骤71接收软件模块xt以及其缺陷情况,在此,缺陷情况表示该软件模块xt是否包含软件缺陷;
步骤72判断软件模块xt的缺陷情况是否通过人工代码检查或测试获得,如果是转入步骤73,否则转入步骤74;
步骤73通过式(3)和式(4)利用软件模块xt及对应缺陷情况进行增量式的学习建模,获得用于在t+1时刻对软件模块进行缺陷检测的缺陷检测模型Ft+1;
步骤74通过式(3)和式(5)利用软件模块xt进行增量式的学习建模,获得用于在t+1时刻对模块进行缺陷检测的缺陷检测模型Ft+1;
步骤75实时增量式建模过程结束;
采用多个增量式支持向量机SVM来作为软件缺陷检测的模型,每个SVMfv,t使用不同的核函数来进行计算;缺陷检测模型Ft通过结合V个fv,t来产生,其中二元函数kv(.,.)为第v个SVMfv,t所采用的核函数,1≤v≤V,由于核函数在建模之前需要人工给定,因此,第v个SVMfv,t由一组{αv,i}唯一确定,1≤i≤t,而αv,i的计算则通过学习建模过程来完成;
增量式SVM通过式(3)~式(5)进行学习建模,以确定第v个模型fv,t参数{αv,i},其中1≤v≤V,1≤i≤t;具体来说,对所有αv,i(i<t),采用式(3)来进行参数增量式更新;对αv,t,则根据缺陷情况的获取途径选择更新公式;当软件模块xt的缺陷情况yt通过人工代码检查或详细测试获取时,采用式(4)计算第v个模型的参数αv,t;当软件模块xt的缺陷情况通过模型自动检测而得时,采用式(5)计算第v个模型参数αv,t;其中,λ1,λ2,n,T,ηt为增量式SVM的人工预设参数,t=1,…,T,二元函数l’(.,.)为SVM采用的损失函数HingeLoss的一阶导函数,yt为软件模块xt的缺陷情况标注,yt=+1表示软件模块xt包含缺陷,yt=-1表示软件模块xt没有缺陷;
αv,i←αv,i(1-ηtλ1)(3)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310053478.6A CN103092762B (zh) | 2013-02-19 | 2013-02-19 | 一种适用于快速软件开发模式的实时软件缺陷检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310053478.6A CN103092762B (zh) | 2013-02-19 | 2013-02-19 | 一种适用于快速软件开发模式的实时软件缺陷检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103092762A CN103092762A (zh) | 2013-05-08 |
CN103092762B true CN103092762B (zh) | 2016-02-03 |
Family
ID=48205363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310053478.6A Active CN103092762B (zh) | 2013-02-19 | 2013-02-19 | 一种适用于快速软件开发模式的实时软件缺陷检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103092762B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103399817B (zh) * | 2013-08-13 | 2017-05-31 | 清华大学 | 基于模块建模与模型检测一体化系统检测装置 |
CN104461864A (zh) * | 2014-11-03 | 2015-03-25 | 北京邮电大学 | 一种基于Eclipse插件的Java源代码缺陷检测方法及其系统 |
CN107679683B (zh) * | 2016-12-28 | 2020-03-24 | 平安科技(深圳)有限公司 | 软件开发进度预警方法和装置 |
CN109240859B (zh) * | 2017-07-11 | 2021-11-19 | 展讯通信(上海)有限公司 | 处理器验证系统及方法 |
CN109408389B (zh) * | 2018-10-30 | 2020-10-16 | 北京理工大学 | 一种基于深度学习的代码缺陷检测方法及装置 |
CN111060514B (zh) * | 2019-12-02 | 2022-11-04 | 精锐视觉智能科技(上海)有限公司 | 缺陷检测方法、装置及终端设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7434200B2 (en) * | 2003-12-11 | 2008-10-07 | Sap Ag | Using incremental generation to develop software applications |
CN1760881A (zh) * | 2005-11-14 | 2006-04-19 | 南京大学 | 在计算机辅助诊断装置中利用未诊断病例的预测建模方法 |
CN101556553B (zh) * | 2009-03-27 | 2011-04-06 | 中国科学院软件研究所 | 基于需求变更的缺陷预测方法和系统 |
CN102541736B (zh) * | 2011-11-30 | 2014-07-16 | 北京航空航天大学 | 一种软件可靠性执行过程加速测试方法 |
-
2013
- 2013-02-19 CN CN201310053478.6A patent/CN103092762B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN103092762A (zh) | 2013-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103092762B (zh) | 一种适用于快速软件开发模式的实时软件缺陷检测方法 | |
CN102393882B (zh) | 在线监控和诊断室内空气质量传感器的方法 | |
CN112799898B (zh) | 基于分布式故障检测的互联系统故障节点定位方法及系统 | |
CN105930257B (zh) | 一种确定目标测试用例的方法及装置 | |
WO2020019681A1 (zh) | 采油设备故障诊断方法及装置 | |
CN104462757A (zh) | 基于监测数据的Weibull分布可靠性序贯验证试验方法 | |
CN109470946B (zh) | 一种发电设备故障检测方法及系统 | |
CN102880545A (zh) | 一种测试用例优先级排序动态调整方法 | |
RU2439647C1 (ru) | Способ поиска неисправного блока в непрерывной динамической системе | |
RU2541857C1 (ru) | Способ поиска неисправностей в непрерывной динамической системе на основе введения пробных отклонений | |
CN104182623A (zh) | 一种基于当量变化率计算的热工过程数据检测方法 | |
WO2019019429A1 (zh) | 一种虚拟机异常检测方法、装置、设备及存储介质 | |
CN117764422B (zh) | 智慧节能运维管理云平台 | |
CN110083076A (zh) | 一种燃气轮机气动执行器故障半实物仿真平台及仿真方法 | |
CN116664846A (zh) | 基于语义分割实现3d打印桥面施工质量监测方法及系统 | |
CN117313019B (zh) | 一种基于深度强化学习的数据异常检测方法 | |
CN104216397B (zh) | 智能驱动桥系统故障识别与检测的方法 | |
CN108932197A (zh) | 基于参数Bootstrap重抽样的软件失效时间预测方法 | |
CN105699043B (zh) | 一种提高风洞传感器测量稳定性和精准度的方法 | |
RU2486568C1 (ru) | Способ поиска неисправного блока в непрерывной динамической системе | |
CN113901649A (zh) | 一种频率仿真中负荷参数辨识方法、系统及存储介质 | |
RU2616512C1 (ru) | Способ поиска топологического дефекта в непрерывной динамической системе на основе введения пробных отклонений | |
RU2562428C1 (ru) | Способ поиска неисправного блока в непрерывной динамической системе на основе смены позиции входного сигнала | |
CN104572455A (zh) | 一种基于马尔科夫链的构件化软件可靠性评估方法 | |
RU2613402C1 (ru) | Способ поиска топологического дефекта в непрерывной динамической системе на основе функции чувствительности |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |