CN107341101A - 度量fpga软件静态质量的方法 - Google Patents
度量fpga软件静态质量的方法 Download PDFInfo
- Publication number
- CN107341101A CN107341101A CN201710405699.3A CN201710405699A CN107341101A CN 107341101 A CN107341101 A CN 107341101A CN 201710405699 A CN201710405699 A CN 201710405699A CN 107341101 A CN107341101 A CN 107341101A
- Authority
- CN
- China
- Prior art keywords
- measurement
- metric
- measurement metric
- software
- fpga
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开的一种度量FPGA软件静态质量的方法,旨在提供一种能够有效减少验证测试次数和量化软件代码静态测试质量方法,本发明通过下述技术方案予以实现,在包含VHDL和Verilog两种语言的FPGA软件中,筛选出体现软件质量价值的度量元,对FPGA软件度量元进行分类加权;选出体现覆盖面广且影响程度高的评价规则集,提取度量元相关加权系数,依据对质量影响的严重程度,确定评价度量元的数量,建立分析度量元和FPGA软件质量评价模型和规则集分类附录表;根据参考标准GJB 2423A的故障统计次数,计算出度量元缺陷总数A和度量元与规定的度量元比分,运用度量元缺陷总数计算公式和评价规则,给出度量评价结果。
Description
技术领域
本发明涉及一种包括度量元分类、度量元加权系数设计、度量计算方法、评价规则和评价流程的度量可编程逻辑器件(FPGA)软件静态质量方法。
背景技术
目前信息安全设备和专用芯片设计的主流趋势是以HDL(Hardware DescriptionLanguage)表达设计意图、FPGA作为硬件载体、计算机为设计开发工具、EDA软件为开发环境的设计方式。为提高信息安全设备的设计质量,必须对其研究设计的各个环节进行评审。FPGA具有集成度高、功耗低、使用灵活和开发周期短等特点,在数字系统设计领域中得到广泛采用。对FPGA软件测试受到越来越多的行业重视和研究。如今已经发展成为可以完成超大规模的复杂组合逻辑与时序逻辑的现场可编程逻辑硬件(FPGA)和复杂可编程逻辑硬件(CPLD)。随着工艺技术的发展与市场需要,超大规模、高速、低功耗的新型FPGA/CPLD不断推陈出新,新一代的FPGA甚至集成了中央处理器(CPU)或数字处理器(DSP)内核。随着软件规模的日益复杂和庞大,软件的开发与管理也日益复杂。作为有效保证和验证软件质量的重要环节和依据,软件测试已逐渐成为软件研制成本最高的阶段。软件质量是软件的生命,它直接影响着软件的使用和维护。随着FPGA设计软件规模的不断增大和复杂度的上升,软件的开发与管理也日益复杂,验证任务已成为整个设计流程的瓶颈。软件质量是软件的生命,它直接影响着软件的使用和维护。软件质量评价的目的是为了直接支持开发并获得能满足用户要求的软件。其最终目标是保证产品能提供所要求的质量。因此,对FPGA设计进行高效和充分的验证是提高FPGA设计可靠性的关键。传统的功能仿真验证采用HDL语言对被验证对象(DUT)编写定向测试用例,人工观察输出波形并判断验证结果。缺点是难以达到预期覆盖率、抽象层次低、通用性差。单元测试作为软件项目中最早介入的测试活动,易于发现程序的错误和度量元缺陷,也易于实现代码测试的完全覆盖,因此单元测试的好坏对于软件质量的保证起着非常关键的作用。然而由于嵌入式软件的特殊性,如实时性强、与硬件紧密相关、访问硬件麻烦,在开发环境下模拟整个系统存在困难性,这使得测试一直是个难点,特别是单元测试,由于项目周期不允许,一些嵌入式软件没有进行单元测试或单元测试不彻底;有些嵌入式软件代码具有较高的耦合性,使单元测试难以进行;测试人员对于嵌入式软件单元测试过于依赖自动化测试工具,使测试效果不能令人满意,测试不规范,效率低,且无法确保嵌入式软件单元测试的充分性和有效性。依据FPGA软件生命周期模型中,代码检查是测试的第一道门户,这道门户检查质量的好坏不仅对代码本身质量带来影响,而且对后续工作产生很大影响,后续各个环节出现问题都会反馈回代码本身,产生反复的迭代工作。因此,只有尽早的在设计阶段中完成代码检查,才越能减少后续的设计工作重复性,减轻后续工作的压力。代码检查要比仿真投入时间少得多,效率更高,从早期的设计阶段开始代码检查能够避免错误发生,能在修改设计和功能仿真所带来的影响和成本还可见的时候,指出设计中各种隐藏的问题,降低设计返工带来的风险。评价FPGA软硬件的一种常用方法是基准测试,然而构造一个对FPGA软硬件性能精确合理的基准测试是十分复杂困难的事情,且差的基准测试规范将导致不确定的甚至是错误的结果。系统测试是软件开发过程中的重要环节。FPGA软硬件性能的测试方法变得十分复杂。基准测试是用一个基准设计集按照统一的测试规范评估和量化目标系统的软件或硬件性能,是目前计算机领域应用最广泛、最主要的性能测试技术。FPGA软件测试常用方法可分为动态测试和静态测试,只有动态测试和静态测试有效结合,才能更好的完成软件测试工作。代码审查是软件静态测试中常用的软件测试方法之一。代码审查是在不执行软件的条件下有条理的仔细审查软件代码,从而找出软件度量元缺陷的过程。代码审查可以找出动态测试难以发现或隔离的软件度量元缺陷。在开发过程初期让测试人员集中精力进行软件代码审查非常有价值:可以提高代码质量;在项目的早期发现度量元缺陷,将损失降至最低;促进团队沟通、促进知识共享、共同提高。通过代码审查,可以确定有问题或者容易产生软件度量元缺陷的特性范围。代码审查过程通常可分为:代码审查策划阶段、代码审查实施阶段以及代码审查总结阶段。测试的主要评测方法包括覆盖和质量。测试覆盖是对测试完全程度的评测,它建立在测试覆盖基础上,测试覆盖是由测试需求和测试用例的覆盖或已执行代码的覆盖表示的。质量是对测试对象(系统或测试的应用程序)的可靠性、稳定性以及性能的评测。静态分析一般采用静态分析工具进行,主要分析软件的代码规模、模块数、模块调用关系、扇入、扇出、圈复杂度、注释率等软件质量度量元。静态分析的结果能够帮助测试人员从代码内部结构信息中开展工作,帮助质量管理人员从软件质量度量中进行质量监督。通过对软件静态分析的总结,可以从降低代码的圈复杂度和提高代码的注释率两方面提高软件代码质量。圈复杂度是应用最广泛的静态度量之一,用来衡量一个函数判定结构的复杂程度,圈复杂度公式V(G)=P+1,P是代码中判定结点的数量。程序的可能存在错误数和圈复杂度有着很大的相关性,圈复杂度越大代表程序代码的质量低并且难以维护和测试。动态测试过程中无法及时提供测试运行所需的真正目标机及其操作系统,必须正确配置开启仿真模拟器并将其作为虚拟目标机,将Testbed经过编译环境链接后生成的测试驱动程序下载到仿真模拟器中运行。自动化静态分析存在一定的机械性,测试人员需逐项进行分析确认出真正的问题所在。在测试工作中,需要接触到各种类型的测试工具。测试工具可划分为:支持对程序源代码进行静态规则检查和质量评估的静态分析工具,研究人员需要开发高质量的数据库和环境,并允许具负责任的人员存取高质量数据库。一般来说,有以下一些类型的工具:测试管理工具:可以帮助完成测试计划、跟踪测试运行结果等的工具。这类工具还包括有助于需求、设计、编码测试及度量元缺陷跟踪的工具。静态分析工具:分析代码而不执行代码。这种工具检测某些度量元缺陷比用其它方法更有效,开销也更小。这种工具一般可以度量代码的各种指标,如McCabe测定复杂度,Logiscope度量代码和规范的复合度等等。
覆盖率工具:这种工具评估通过一系列测试后,软件被执行的程度。这种工具大量的被应用于单元测试中,如PureCoverage、TrueCoverage、Logiscope等。动态分析工具:这种工具评估正在运行的系统。例如,检查系统运行过程中的内存使用情况,是否有内存越界、内存泄露等等,这类工具有Purify、BoundChecker等。
测试执行工具:这类工具可使测试能够自动化进行,并且各个层次(单元测试、集成测试、系统测试)的执行工具都有。例如系统测试阶段有功能测试自动化工具,如Robot、Winrunner、SilkTest等;还有性能测试工具,如Loadrunner、SilKPerformer等。必要时,可建立常见软件代码度量元缺陷数据库,为软件代码审查人员培训和执行代码审查提供数据支持,也可以为软件编码规则制定规范提供实践依据。软件代码审查是重要的软件测试方法之一,软件测试单位应建立完善的代码审查规程,规范代码审查过程。
虽然目前厂商在不断挖掘工艺极限的基础上推出容量更大、性能更优、集成模块更多的新器件同时,第三方验证厂商也对于其配套的测试软件进行更新。但由于其更新的速度往往滞后于器件的发展,很难有大的突破和创新。这也导致了目前通常的HDL代码检查普遍存在的软件故障暴露率,软件失效率高的质量问题,缺少一套完善严谨的代码质量要求,检查后的工作质量缺少科学严谨的方法去评价代码质量。
另一方面,随着行业内FPGA软件测试质量的逐渐重视和强烈要求,也希望有一套科学严谨的方法去评价代码质量。其次,FPGA软件测试质量通常的做法是采用软件的代码质量评价标准,也有失公平化且过于粗糙化。因此,为了真实地反映出代码的质量,迫切需要提出一种能够对FPGA软件进行质量评价的新方法。
目前,行业内的规则集主要分为三类,首先是外国的DO-254、STARC、RMM等规则集,其次是第三方厂商提供,如Aldec、Mentor、Synopsys、Xilinx、Altera等国外公司,最后是国内的一些单位以及个人等整理或者定制的编码规则集。具体Verilog HDL语言编码规则分类如下表A1所示。VHDL语言编码规则分类如下表A2所示。
表A1Verilog HDL语言编码规则
表A1 Verilog HDL语言编码规则
表A2 VHDL语言编码规则
发明内容
为了解决上述技术问题,本发明的目的是提供一种能够有效减少验证测试次数,有效量化软件代码静态测试质量,提高软件可靠性测试效率和可靠性评估准确性,度量FPGA软件测试的静态阶段的软件静态质量方法,以提升软件测试的质量。
本发明的上述目的可以通过以下措施来达到,一种度量FPGA软件静态质量的方法,其特征在于包括如下步骤,第1步,分析度量元:在包含VHDL和Verilog两种语言的FPGA软件中,分析评价违反的度量元组成类型,筛选出体现软件质量价值的度量元,设定度量元及其度量元加权系数,对FPGA软件度量元进行分类加权,并对软件代码质量影响大且与其它度量元相差大的则赋予较大的数值;第2步,度量元计算:根据对代码质量带来的影响程度分别对VHDL和Verilog语言选出体现覆盖面广且影响程度高的评价规则集,提取度量元相关加权系数,依据对质量影响的严重程度,按照度量元缺陷严重性等级的不同进行不同的加权比,确定评价度量元的数量,建立分析度量元和FPGA软件质量评价模型和FPGA软件规则集分类附录表;第3步,度量结果评价:根据参考标准GJB 2423A的故障统计次数,计算出度量元缺陷总数A和度量元与规定的度量元比分,提出度量计算公式、评价规则和评价流程,运用度量元缺陷总数计算公式和评价规则,给出度量评价结果,输出FPGA软件质量度量的分值和归一化处理的分值区间分布。
本发明的优点和积极效果在于:
能够有效减少验证测试次数。本发明在现有面向对象软件度量方法和度量准则的基础上,结合面向对象技术特性,分析评价违反的度量元组成类型,提取相关加权系数,确定评价度量元的数量;按照公式计算出违反的度量元与规定的度量元比分;根据公式和评价规则,给出评价结果。建立分析度量元和FPGA软件质量评价模型,提出度量计算方法、评价规则和评价流程,分析证明有效性。通过软件静态质量分析可以定量评价软件代码的质量,以量化数据表示代码的质量水平,能够有效地对软件静态质量进行度量,为设计师了解软件代码质量水平提供了客观依据,减少了软件质量评估中的主观性。软件测试中,静态度量和测试的预测,能够有效减少验证测试次数,可以有效提高测试的效率,降低测试成本。
能够有效量化软件代码静态测试质量。在包含VHDL和Verilog两种语言的FPGA软件中,通过严格设定度量元及其度量元加权系数计算,建立一套行之有效的计算方法和评价机制和一个FPGA软件代码静态质量度量评价方法,给出了度量元与加权系数计算公式,评价方法、评价规则和评价流程,可以有效量化软件代码静态测试质量,为FPGA软件测试的代码静态度量建立了一套有效避免传统一刀切的处理方式的评价标准。克服了传统评价指标的单一性度量元缺陷,有利于确定影响软件质量的因素及其影响程度,是一种综合、有效评价软件的质量的方法。
提高软件可靠性测试效率和可靠性评估准确性。本发明运用于在FPGA测试的静态阶段,对度量元分类、加权系数计算、度量计算、度量评价四个评价步骤完成评价,建立了一套科学化的数学评价的质量度量方法,量化了软件测试质量;突出特点:针对性强,分步骤实施,量化了评价结果,提高了测试质量。依据静态分析输出的质量度量模型值定量地评价了软件内在源码的质量,并基于圈复杂度度量值提出了一种优先级的动态分析测试策略,用监控到的控制流信息来分析程序的覆盖率,从而确保FPGA测试的充分性和有效性,提高测试效率,保证软件的质量。
本发明针对性强,方法完善,实现了FPGA软件质量的量化度量,为软件静态质量提供了一种适应于最新FPGA软件测试领域有效的度量方法。
附图说明
图1是本发明度量FPGA软件静态质量的流程示意图。
为使本发明的目的、技术方案和优点更加清楚,同时也为了便于本领域普通技术人员理解和实施本发明,下面结合附图对本发明作进一步详细、深入的描述。应当理解,此处所描述的实施仅用作说明和解释本发明,并不用于限定本发明。
具体实施方式
参阅图1。为了能够客观的评价检查结果的质量,评价流程需要分为“三步走”。
在下图1所示的整个评价流程中,步走包含了分析、计算和评价三个过程,评价流程中更加注重度量元的分析计算,不同与传统的FPGA软件质量度量评价过程,新的流程将对该工具进行改造,并给出最终评价结果。
第1步,分析度量元:在包含VHDL和Verilog两种语言的FPGA软件中,分析评价违反的度量元组成类型,筛选出体现软件质量价值的度量元,设定度量元及其度量元加权系数,对FPGA软件度量元进行分类加权,并对软件代码质量影响大且与其它度量元相差大的则赋予较大的数值;
第2步,度量元计算:根据对代码质量带来的影响程度分别对VHDL和Verilog语言选出体现覆盖面广且影响程度高的评价规则集,提取度量元相关加权系数,依据对质量影响的严重程度,按照度量元缺陷严重性等级的不同进行不同的加权比,确定评价度量元的数量,建立分析度量元和FPGA软件质量评价模型和FPGA软件规则集分类附录表;
第3步,度量结果评价:根据参考标准GJB 2423A的故障统计次数,计算出度量元缺陷总数A和度量元与规定的度量元比分,提出度量计算公式、评价规则和评价流程,运用度量元缺陷总数计算公式和评价规则,给出度量评价结果,输出FPGA软件质量度量的分值和归一化处理的分值区间分布。
具体包括:
1)FPGA软件度量元分类
FPGA软件质量的好坏取决于规则集的制定,不同的规则集对检查代码的质量影响不同。因此,度量元是选取规则集及其包含的具体规则。在包含VHDL和Verilog两种语言FPGA软件中,对应规则分为VHDL和Verilog两种,但通常设计都是采用两者混合语言使用,因此,度量元将两者规则集混合起来统计。总结分析,FPGA软件的度量元选取主要涉及到安全性设计、可综合性设计、基本结构设计、IP核设计和自定义设计等。在包含VHDL和Verilog两种语言FPGA软件中,将对应规则分为VHDL和Verilog两种,采用两者混合语言,度量元将两者规则集混合起来统计,根据选取规则集及其包含的具体规则对FPGA软件度量元分类,Ⅰ类~Ⅴ类规则度量元加权表,具体分类情况如下表2FPGA软件度量元分类表所示。
2)FPGA软件度量元加权系数计算
由于FPGA软件选取度量元的每个成员函数的准则值对所属类准则值的影响权重不相同,依据对质量影响的严重程度按照度量元缺陷严重性等级的不同而进行不同的加权比,同时每个度量元缺陷发生的数量多少也会影响评价效果,加权的计算要和自身规则的影响程度应符合考标准GJB 2423A的故障统计次数计算。选取度量元的每个成员函数的准则值对所属类准则值,依据对质量影响的严重程度按照度量元缺陷严重性等级的不同而进行不同的加权比,按照参考标准GJB 2423A,计算每个度量元缺陷发生的数量和故障统计次数及其度量元缺陷总数A,计算出FPGA软件度量元的加权系数,
中:pj-某类度量元缺陷的加权系数;rj-某类度量元缺陷发生的次数;j-度量元缺陷类型;n-度量元缺陷类型数。
其中,确定加权系数的原则,在参考标准GJB 2423A中描述,对度量元缺陷进行分类、定级,分析度量元缺陷的原因、潜在的影响及对人员的危害性,对实现功能的影响程度等。根据影响程度结合文献和其他相关文献,在参考标准GJB 2423A中描述,对度量元缺陷进行分类、定级,分析度量元缺陷,对FPGA软件度量元进行分类加权,加权情况如下表3~6所示:Ⅰ类~Ⅴ类规则度量元加权表。其中,安全性规则主要涉及对设计起着重要作用且影响严重程度最高的规则集,分配比分最高。亚稳态是FPGA软件中典型的度量元缺陷,是首要查找的度量元缺陷,只要有异步元件存在,亚稳态就无法避免;其次,复位逻辑电路是FPGA软件中最核心的组成部分之一,设计中的任何一个设计模块都必须要附加复位逻辑电路,以保证电路能够从错误状态中恢复,可靠地工作;其他规则都按照影响程度不同做了不同的加权。尽管加权带有一定的主观性,但加权都是在总结实际经验和参考其他文献的基础上客观地反应出每个规则对FPGA软件的安全性、设计性、可综合性和可移植性带来的影响程度。
3)FPGA软件度量计算方法
创建Ⅰ类~Ⅴ类规则度量元加权表,依据Ⅰ类~Ⅴ类规则度量元加权表(表3~6),计算FPGA软件度量,计算出最终FPGA软件质量度量值:
式中B是参照GJB 16260标准对代码质量评价计算公式:
X=1-A/B (3)
将公式(1)代入上述公式(3)得出公式(2),A定义为在测试中规定的可靠性的依从性还未完全实现的项数,B定义为规定的可靠性的依从性项总数。公式2表明,当随着度量元缺陷次数、权重和度量元缺陷类型数n值各自增大时,则评价值越小,表明质量越坏;反之,当随着度量元缺陷次数rj、权重和度量元缺陷类型数n值各自减小时,则评价值越大,表明质量越好。
4)FPGA软件度量评价
在标准GJB 5236中有过描述,用于质量需求度量的测量标度可以根据需求将测量度分为三个级别:达到目标(良好)、最低可接受(合格)和不可接受(不合格),至于在何种程度加以评价标准中没有给出明确规定。那么根据FPGA软件度量具有归一化的处理特性,因此定义FPGA软件质量度量值评价规则如下:
当X>0.8,认为良好;当0.5<X≤0.8,认为合格;当0.5≤X,认为不合格。
代码质量度量评价问题实际上是一个多目标决策问题,在处理多目标问题时,往往要考虑各目标的相对重要性。最后,代码质量评价还需求经过实际工程验证,经过多次反复证明才是有用,只有这样,才能确保使用的评价方法和实际需求是一致。
首先分析违反的度量元组成类型,提取相关加权系数,确定度量元的数量;其次是按照公式计算出违反的度量元与规定的度量元比分;最后依据设计的FPGA软件质量度量值X计算公式(2)和评价规则,将表3~6的Ⅰ类~Ⅴ类规则度量元加权表中的加权系数和其他相关参数(如类别、次数),代入计算,输出FPGA软件质量度量的分值,通过归一化处理,分值区间分布,给出评价结果。整个流程如图1所示;具体步骤包括:
步骤1、分析评价度量元的组成类型,是软件测试质量度量策划开展的前提,软件质量特性是通过度量元特性反应出来,而度量元具体细化表现很多,如何能从众多度量元中选出主要体现软件质量价值的度量元显得尤为重要。在FPGA代码静态质量度量中,度量元是通过规则体现出来,FPGA的规则在目前业内众多,通过调研和整理最有影响的分别是来自美国FAA机构的DO-254,来自日本半导体研究中心的STARC,来自Synopsysand和mentor的第三方厂商,以及华为公司与个人等,根据FPGA软件由VHDL和Verilog两种语言构成,具体分类参阅FPGA软件规则集分类附录表A1和A2,统计分类请见下表1。
表1 FPGA软件规则集分类
通过全面科学的分析度量元并进行筛选,最终筛选出安全性设计、可综合性设计、基本结构设计、IP核设计和自定义设计共五类规则集,每个规则集又包含不同的规则和数量。为了方便管理,进一步对五类规则集定义为Ⅰ类规则、Ⅱ类规则、Ⅲ类规则、Ⅳ类规则、Ⅴ类规则,见FPGA软件度量元分类表2。
表2 FPGA软件度量元分类
Ⅰ类规则 | Ⅱ类规则 | Ⅲ类规则 | Ⅳ类规则 | Ⅴ类规则 |
安全性 | 可综合性 | 基本结构 | IP核 | 自定义 |
由于规则众多,不可能罗列出所有的规则来进行分类和评价,而且也没有必要,因此,根据对代码质量带来的影响程度分别对VHDL和Verilog语言选出前118个规则,体现出覆盖面广且影响程度高的规则,具体划分Ⅰ类-Ⅴ类规则度量元加权表见表A1和A2。
步骤2、度量元加权系数计算,是软件测试质量评价策划开展的关键,加权的好坏关系到软件质量特性准确反映,而度量元的具体细化表现,也是从众多度量元的加权系数中体现出来,根据附录表1和表2提供的信息,以及结合公式(1),结合相关文献,下表3~6是典型的加权系数设计。
表3Ⅰ类规则度量元加权表
评价标准 | 类别 | 次数 | 权重 | 分数 |
跨时钟域发生 | Ⅰ | 0|1 | 8 | |
异步信号未作同步化 | Ⅰ | 0|1 | 8 | |
门控时钟 | Ⅰ | 0|1 | 5 | |
异步复位未做同步化处理 | Ⅰ | 0|1 | 8 | |
同步和异步复位混淆 | Ⅰ | 0|1 | 5 | |
复位不成功 | Ⅰ | 0|1 | 5 | |
复位信号极性和沿触发极性不匹配 | Ⅰ | 0|1 | 5 | |
case语句缺少default分支导致锁死 | Ⅰ | 0|1 | 8 | |
If条件语句缺少else分支导致锁死 | Ⅰ | 0|1 | 8 | |
数据运算超出定义范围 | Ⅰ | 0|1 | 8 |
表4Ⅱ类规则度量元加权表
评价标准 | 类别 | 次数 | 权重 | 分数 |
敏感列表中敏感信号缺失 | Ⅱ | 0…4 | 2 | |
敏感列表中敏感信号冗余 | Ⅱ | 0…4 | 2 | |
敏感列表中既有边沿触发又有电平触发 | Ⅱ | 0…4 | 2 | |
进行关系运算的操作数位宽不匹配 | Ⅱ | 0…4 | 2 | |
阻塞与非阻塞赋值 | Ⅱ | 0…4 | 2 | |
重复赋值 | Ⅱ | 0…4 | 2 | |
IF语句的三态赋值 | Ⅱ | 0…4 | 3 | |
初始状态不定 | Ⅱ | 0…4 | 2 | |
不能达到条件 | Ⅱ | 0…4 | 3 | |
变量在赋值前被使用 | Ⅱ | 0…4 | 2 |
表5Ⅲ类规则度量元加权表
评价标准 | 类别 | 次数 | 权重 | 分数 |
输出信号没有驱动 | Ⅲ | 0…6 | 1 | |
丢失括号 | Ⅲ | 0…6 | 1 | |
设计中使用空块 | Ⅲ | 0…6 | 1 | |
设计有多余信号 | Ⅲ | 0…6 | 1 |
表6Ⅳ和Ⅴ类规则度量元加权表
表3~6分别对FPGA软件评价标准的度量元在五个类别的基础上再次细分,评价准则分别包含类别、次数、权重和分数。次数0|1表示分配数选取是0和1,次数0…4表示分配数选取是0到4之间。在本发明中,其权重表明度量元在软件评测中所占的比重,对软件代码质量影响大且与其它度量元相差大的则赋予较大的数值。
步骤3、度量计算是依据设计的计算公式(2),将表3~6的权系数和其他相关参数(如类别、次数),代入计算,输出FPGA软件质量度量的分值,通过归一化处理,分值区间分布满足[0,1],分值越小,越趋近0,则表明质量越坏;反之,当分值越大,越趋近1,则表明质量越好。
步骤4、度量评价是相对简单,由于目前没有固定的格式,需要根据实际情况进行确定,参考标准GJB 5236的指导思想,将软件的度量评价分为三个级别级别:达到目标(良好)、最低可接受(合格)和不可接受(不合格)。
假设某项目有两类FPGA软件进行测试,被评的两类软件度量元取数都为66个。测试人员对类1软件进行了编码规则检查,共发现度量元缺陷7个(其中致命度量元缺陷0个,严重度量元缺陷1个,一般度量元缺陷4个,建议改进2个)。测试人员对类2软件进行了编码规则检查,共发现度量元缺陷9个(其中致命度量元缺陷0个,严重度量元缺陷0个,一般度量元缺陷5个,建议改进4个)。具体类1和类2违反的规则情况如类1软件FPGA软件度量元分类加权评价表7和类2软件FPGA软件度量元分类加权评价表8所示。类1是针VHDL做检查,相应表7是对应表A2的VHDL语言编码规则;类2是针Verilog HDL做检查,相应表8是对应表A1的Verilog HDL语言编码规则。
表7类1软件FPGA软件度量元分类加权评价
表8类2软件FPGA软件度量元分类加权评价
根据式(1)和式(2)的计算的比分数值,结合本发明,对代码检查工具Alint进行了改造,然后进行自动分析软件代码静态质量,给出类1和类2代码评价后的结果如下类1和类2代码的评价结果表9所示。
表9类1和类2代码的评价结果
软件 | 类1 | 类2 |
评价结果 | 0.78(合格) | 0.81(良好) |
从类1和类2代码的评价结果表9中可以看出,被评软件中软件类1评分结果为0.78,达到了合格水平,软件类2评分结果为0.81,达到了良好水平。总体上看,类1的安全性较差,可综合性和基本结构设计相对较好,而类2的安全性较好,可综合性和基本结构设计相对较差。经对数据做人工分析,从安全性的影响严重程度上可以看出评价的结果和新设计的计算准则是基本吻合。
如此,对项目的FPGA软件代码测试静态质量进行了完整的评价,有数据有结论,量化了测试质量,提高了测试效果,积累了测试经验,提升了测试技能。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和原则下,所作的任何修改、等同替换、改进等,均包含在本发明的保护范围之内。
Claims (10)
1.一种度量FPGA软件静态质量的方法,其特征在于包括如下步骤,第1步,分析度量元:在包含VHDL和Verilog两种语言的FPGA软件中,分析评价违反的度量元组成类型,筛选出体现软件质量价值的度量元,设定度量元及其度量元加权系数,对FPGA软件度量元进行分类加权,并对软件代码质量影响大且与其它度量元相差大的则赋予较大的数值;第2步,度量元计算:根据对代码质量带来的影响程度分别对VHDL和Verilog语言选出体现覆盖面广且影响程度高的评价规则集,提取度量元相关加权系数,依据对质量影响的严重程度,按照度量元缺陷严重性等级的不同进行不同的加权比,确定评价度量元的数量,建立分析度量元和FPGA软件质量评价模型和FPGA软件规则集分类附录表;第3步,度量结果评价:根据参考标准GJB 2423A的故障统计次数,计算出度量元缺陷总数A和度量元与规定的度量元比分,提出度量计算公式、评价规则和评价流程,运用度量元缺陷总数计算公式和评价规则,给出度量评价结果,输出FPGA软件质量度量的分值和归一化处理的分值区间分布。
2.如权利要求1所述的度量FPGA软件静态质量的方法,其特征在于:在包含VHDL和Verilog两种语言FPGA软件中,将对应规则分为VHDL和Verilog两者混合的语言,度量元将两者规则集混合起来统计,根据选取规则集及其包含的具体规则对FPGA软件度量元分类,Ⅰ类~Ⅴ类规则度量元加权表。
3.如权利要求1所述的度量FPGA软件静态质量的方法,其特征在于:选取度量元的每个成员函数的准则值对所属类准则值,依据对质量影响的严重程度按照度量元缺陷严重性等级的不同而进行不同的加权比,按照参考标准GJB 2423A,计算每个度量元缺陷发生的数量和故障统计次数及其度量元缺陷总数A,计算出FPGA软件度量元的加权系数,
<mrow>
<mi>A</mi>
<mo>=</mo>
<msubsup>
<mi>&Sigma;</mi>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
<mi>n</mi>
</msubsup>
<msub>
<mi>p</mi>
<mi>j</mi>
</msub>
<msub>
<mi>r</mi>
<mi>j</mi>
</msub>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
</mrow>
式中:pj为某类度量元缺陷的加权系数;rj为某类度量元缺陷发生的次数;j为度量元缺陷类型;n为度量元缺陷类型数。
4.如权利要求3所述的度量FPGA软件静态质量的方法,其特征在于:在参考标准GJB2423A中描述,对度量元缺陷进行分类、定级,分析度量元缺陷,对FPGA软件度量元进行分类加权。
5.如权利要求1所述的度量FPGA软件静态质量的方法,其特征在于:创建Ⅰ类~Ⅴ类规则度量元加权表,依据Ⅰ类~Ⅴ类规则度量元加权表,计算FPGA软件度量,计算出最终FPGA软件质量度量值:
<mrow>
<mi>X</mi>
<mo>=</mo>
<mn>1</mn>
<mo>-</mo>
<mfrac>
<mn>1</mn>
<mi>B</mi>
</mfrac>
<msubsup>
<mi>&Sigma;</mi>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
<mi>n</mi>
</msubsup>
<msub>
<mi>p</mi>
<mi>j</mi>
</msub>
<msub>
<mi>r</mi>
<mi>j</mi>
</msub>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>)</mo>
</mrow>
</mrow>
式中B是参照GJB 16260标准对代码质量评价计算公式:
X=1-A/B (3)
将公式(1)代入公式(3)得出公式(2),A定义为在测试中规定的可靠性的依从性还未完全实现的项数,B定义为规定的可靠性的依从性项总数。
6.如权利要求5所述的度量FPGA软件静态质量的方法,其特征在于:当随着度量元缺陷次数rj、权重pj和度量元缺陷类型数n值各自增大时,则评价值X越小,表明质量越坏;反之,当随着度量元缺陷次数rj、权重pj和度量元缺陷类型数n值各自减小时,则评价值X越大,表明质量越好。
7.如权利要求6所述的度量FPGA软件静态质量的方法,其特征在于:FPGA软件质量度量值X评价规则为:当X>0.8,认为良好;当0.5<X≤0.8,认为合格;当0.5≤X,认为不合格。
8.如权利要求1所述的度量FPGA软件静态质量的方法,其特征在于:如权利要求1所述的度量FPGA软件静态质量的方法,其特征在于:在FPGA代码静态质量度量中,度量元是通过规则体现出来。
9.如权利要求1所述的度量FPGA软件静态质量的方法,其特征在于:在FPGA代码静态质量度量中,度量元是通过规则体现出来,首先分析违反的度量元组成类型,提取相关加权系数,确定度量元的数量;其次是按照公式(3)计算出违反的度量元与规定的度量元比分;最后依据设计的FPGA软件质量度量值X计算公式(2)和评价规则,将Ⅰ类~Ⅴ类规则度量元加权表中的加权系数和其他类别、次数相关参数代入计算,输出FPGA软件质量度量的分值,通过归一化处理,分值区间分布,给出评价结果。
10.如权利要求1所述的度量FPGA软件静态质量的方法,其特征在于:根据对代码质量带来的影响程度分别对VHDL和Verilog语言选出前118个规则,体现出覆盖面广且影响程度高的规则,划分Ⅰ类-Ⅴ类规则度量元加权表;分别对FPGA软件评价标准的度量元在五个类别的基础上再次细分,评价准则分别包含类别、次数、权重和分数,次数0|1表示分配数选取是0和1,次数0…4表示分配数选取是0到4之间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710405699.3A CN107341101A (zh) | 2017-06-01 | 2017-06-01 | 度量fpga软件静态质量的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710405699.3A CN107341101A (zh) | 2017-06-01 | 2017-06-01 | 度量fpga软件静态质量的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107341101A true CN107341101A (zh) | 2017-11-10 |
Family
ID=60220500
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710405699.3A Pending CN107341101A (zh) | 2017-06-01 | 2017-06-01 | 度量fpga软件静态质量的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107341101A (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107942733A (zh) * | 2017-12-15 | 2018-04-20 | 四川汉科计算机信息技术有限公司 | 模型测试系统 |
CN109144848A (zh) * | 2018-06-30 | 2019-01-04 | 南京理工大学 | 一种Verilog HDL代码白盒测试辅助平台及其工作过程 |
CN109542510A (zh) * | 2018-11-16 | 2019-03-29 | 北京广利核系统工程有限公司 | 一种基于贝叶斯理论的软件v&v有效性度量方法 |
CN109684681A (zh) * | 2018-12-06 | 2019-04-26 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 应用uvm验证平台的高层次化验证方法 |
CN110221976A (zh) * | 2019-05-28 | 2019-09-10 | 广西电网有限责任公司电力科学研究院 | 一种基于度量技术的计量终端软件质量量化评价方法 |
CN111190636A (zh) * | 2018-11-14 | 2020-05-22 | 上海哔哩哔哩科技有限公司 | 分支代码持续集成中的自动探测方法、装置及存储介质 |
CN111221720A (zh) * | 2018-11-26 | 2020-06-02 | 湖南中车时代电动汽车股份有限公司 | 一种软件质量度量方法及系统 |
CN111338972A (zh) * | 2020-03-30 | 2020-06-26 | 北京计算机技术及应用研究所 | 基于机器学习的软件缺陷与复杂度关联关系分析方法 |
CN111837109A (zh) * | 2019-11-22 | 2020-10-27 | 深圳海付移通科技有限公司 | 一种代码质量和缺陷的分析方法、服务器及存储介质 |
CN111881055A (zh) * | 2020-08-03 | 2020-11-03 | 北京计算机技术及应用研究所 | 军用软件评测规范的Simulink模型设计方法 |
CN112488534A (zh) * | 2020-12-03 | 2021-03-12 | 福建省农村信用社联合社 | 一种银行软件上线前的风险预警方法、系统、设备和介质 |
CN112506787A (zh) * | 2020-12-16 | 2021-03-16 | 北京机电工程研究所 | 基于测试结果的多维特性综合决策的软件质量评估方法 |
CN112711530A (zh) * | 2020-12-28 | 2021-04-27 | 航天信息股份有限公司 | 一种基于机器学习的代码风险预测方法及系统 |
WO2021115039A1 (zh) * | 2019-12-02 | 2021-06-17 | 深圳先进技术研究院 | Fpga平台及其性能评估与设计优化的方法、存储介质 |
CN113448821A (zh) * | 2020-03-25 | 2021-09-28 | 北京京东振世信息技术有限公司 | 一种识别工程缺陷的方法和装置 |
CN114090463A (zh) * | 2022-01-20 | 2022-02-25 | 航天中认软件测评科技(北京)有限责任公司 | 基于自然语言处理技术的可定制软件测试分析评价系统 |
CN116450517A (zh) * | 2023-04-19 | 2023-07-18 | 中物院成都科学技术发展中心 | 基于侧信道信息的hdl脆弱性分析工具的评估方法 |
-
2017
- 2017-06-01 CN CN201710405699.3A patent/CN107341101A/zh active Pending
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107942733A (zh) * | 2017-12-15 | 2018-04-20 | 四川汉科计算机信息技术有限公司 | 模型测试系统 |
CN109144848A (zh) * | 2018-06-30 | 2019-01-04 | 南京理工大学 | 一种Verilog HDL代码白盒测试辅助平台及其工作过程 |
CN109144848B (zh) * | 2018-06-30 | 2021-06-29 | 南京理工大学 | 一种Verilog HDL代码白盒测试辅助平台及其工作过程 |
CN111190636A (zh) * | 2018-11-14 | 2020-05-22 | 上海哔哩哔哩科技有限公司 | 分支代码持续集成中的自动探测方法、装置及存储介质 |
CN109542510A (zh) * | 2018-11-16 | 2019-03-29 | 北京广利核系统工程有限公司 | 一种基于贝叶斯理论的软件v&v有效性度量方法 |
CN111221720A (zh) * | 2018-11-26 | 2020-06-02 | 湖南中车时代电动汽车股份有限公司 | 一种软件质量度量方法及系统 |
CN109684681A (zh) * | 2018-12-06 | 2019-04-26 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 应用uvm验证平台的高层次化验证方法 |
CN110221976A (zh) * | 2019-05-28 | 2019-09-10 | 广西电网有限责任公司电力科学研究院 | 一种基于度量技术的计量终端软件质量量化评价方法 |
CN110221976B (zh) * | 2019-05-28 | 2023-08-22 | 广西电网有限责任公司电力科学研究院 | 一种基于度量技术的计量终端软件质量量化评价方法 |
CN111837109A (zh) * | 2019-11-22 | 2020-10-27 | 深圳海付移通科技有限公司 | 一种代码质量和缺陷的分析方法、服务器及存储介质 |
WO2021097824A1 (zh) * | 2019-11-22 | 2021-05-27 | 深圳海付移通科技有限公司 | 一种代码质量和缺陷的分析方法、服务器及存储介质 |
WO2021115039A1 (zh) * | 2019-12-02 | 2021-06-17 | 深圳先进技术研究院 | Fpga平台及其性能评估与设计优化的方法、存储介质 |
CN113448821A (zh) * | 2020-03-25 | 2021-09-28 | 北京京东振世信息技术有限公司 | 一种识别工程缺陷的方法和装置 |
CN113448821B (zh) * | 2020-03-25 | 2023-12-08 | 北京京东振世信息技术有限公司 | 一种识别工程缺陷的方法和装置 |
CN111338972A (zh) * | 2020-03-30 | 2020-06-26 | 北京计算机技术及应用研究所 | 基于机器学习的软件缺陷与复杂度关联关系分析方法 |
CN111881055A (zh) * | 2020-08-03 | 2020-11-03 | 北京计算机技术及应用研究所 | 军用软件评测规范的Simulink模型设计方法 |
CN112488534A (zh) * | 2020-12-03 | 2021-03-12 | 福建省农村信用社联合社 | 一种银行软件上线前的风险预警方法、系统、设备和介质 |
CN112506787A (zh) * | 2020-12-16 | 2021-03-16 | 北京机电工程研究所 | 基于测试结果的多维特性综合决策的软件质量评估方法 |
CN112506787B (zh) * | 2020-12-16 | 2024-06-11 | 北京机电工程研究所 | 基于测试结果的多维特性综合决策的软件质量评估方法 |
CN112711530A (zh) * | 2020-12-28 | 2021-04-27 | 航天信息股份有限公司 | 一种基于机器学习的代码风险预测方法及系统 |
CN114090463B (zh) * | 2022-01-20 | 2022-04-05 | 航天中认软件测评科技(北京)有限责任公司 | 基于自然语言处理技术的可定制软件测试分析评价系统 |
CN114090463A (zh) * | 2022-01-20 | 2022-02-25 | 航天中认软件测评科技(北京)有限责任公司 | 基于自然语言处理技术的可定制软件测试分析评价系统 |
CN116450517A (zh) * | 2023-04-19 | 2023-07-18 | 中物院成都科学技术发展中心 | 基于侧信道信息的hdl脆弱性分析工具的评估方法 |
CN116450517B (zh) * | 2023-04-19 | 2024-03-22 | 中物院成都科学技术发展中心 | 基于侧信道信息的hdl脆弱性分析工具的评估方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107341101A (zh) | 度量fpga软件静态质量的方法 | |
Briand et al. | Measuring and assessing maintainability at the end of high level design | |
CN100507923C (zh) | 带有可编程组件的基于块的设计方法 | |
Keshava et al. | Post-silicon validation challenges: How EDA and academia can help | |
Coleman et al. | The application of software maintainability models in industrial software systems | |
CN107545349A (zh) | 一种面向电力大数据的数据质量分析评价模型 | |
Grbac et al. | A second replicated quantitative analysis of fault distributions in complex software systems | |
CN109409628A (zh) | 基于计量大数据聚类模型的采集终端生产厂商评价方法 | |
CN114065677A (zh) | 用于集成电路硬件设计的故障注入测试的方法和系统 | |
CN114692875A (zh) | 一种故障诊断用gis知识图谱的构建方法 | |
CN105956755A (zh) | 电力综合线损率影响因子量化关系建立方法及系统 | |
Dayanandan et al. | A fuzzy analytical hierarchy process (FAHP) based software quality assessment model: maintainability analysis | |
CN115827353A (zh) | 故障诊断方法及装置 | |
Patel et al. | A study of component based software system metrics | |
Graham | Software testing tools: A new classification scheme | |
Ouimet et al. | Automated verification of completeness and consistency of abstract state machine specifications using a sat solver | |
Alagar et al. | Assessment of maintainability in object-oriented software | |
Santiesteban et al. | Cirfix: Automated hardware repair and its real-world applications | |
Farren et al. | System test cost modelling based on event rate analysis | |
Leping et al. | Research on key test methods of the smart meter software based on failure modes | |
Li et al. | The influence ranking for software classes | |
Kundu et al. | Selection and classification of common factors affecting the maintainability on the basis of common criteria | |
Li et al. | FPGA software testing process management | |
Mondal et al. | Fault coverage of a test set on structure-preserving siblings of a circuit-under-test | |
Jiang et al. | Software-oriented Test Capability Evaluation Model Design And Implementation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20171110 |