The present invention provides a method for selecting the smallest code subset covering all source code structures, which includes: a. Source code of the software to be analyzed is classified according to high-level language, assembly language and library function, and the high-level language code set, assembly code set and library function set are obtained; B. The grammar structure and compiled of each function in the high-level language code set are analyzed and compiled. The structure of additional code may be generated in the program, and the typical structure code subset which minimizes the workload of source code target code comparative analysis is selected under the condition that the structures are covered at least once; and C. The minimum code subset of the software to be analyzed is obtained by combining the typical structure code subset, the assembly code subset and the library function subset.
【技术实现步骤摘要】
选取覆盖所有源代码结构的最小代码子集的方法
本专利技术主要涉及航空机载软件验证领域,尤其涉及一种选取覆盖所有源代码结构的最小代码子集的方法。
技术介绍
民用航空机载软件设计中,A级软件作为最高安全等级的软件,必须确保其安全、可靠。FAA和CAAC均认可DO-178C即《机载系统和设备合格审定中的软件考虑》作为机载软件适航取证的标准,针对A级软件明确提出“满足对不可追溯至源代码的额外代码进行验证的目标”。当前,机载软件功能越来越复杂,规模也越来越大。对于A级软件,需要进行编译器、链接器或者其它工具引入额外代码的识别,在现有的解决方案中,或者基于源代码级结构覆盖测试并补充源码目标码对比分析,或者在目标码级开展结构覆盖分析。目前结合源代码级别的结构覆盖进行源码目标码对比分析有两种方法:1)分析整个软件;2)针对软件编码规则罗列各种可能的规则组合,生成独立的测试程序进行分析。由于待分析软件中会存在相同的程序结构或者待分析软件并不会涉及所有编码规则下结构组合,因此采用这两种方法都会因为存在冗余的语法结构而导致人工识别源码目标码差异的工作量增大。同时在现有技术中,如CN104360949A公开了一种符合DO-178B/CA级软件目标码覆盖分析方法,但是其需要首先通过识别的源码目标码对应关系以及源码目标码的差异来创建编码规则表以及额外映射表,再进行目标码覆盖分析,其未提供具体可操作的典型源代码结构定义和选择算法;CN104461882A公开了一种符合DO-178B/CA级的模型验证方法,但其是在模型验证领域中涉及从生成验证程序集选出验证程序子集的方法,此验证程序是与软件 ...
【技术保护点】
1.一种选取覆盖所有源代码结构的最小代码子集的方法,其包括:a.将待分析软件的源代码按照高级语言、汇编语言和库函数进行分类,得到高级语言代码集合、汇编代码集合和库函数集合;b.对所述高级语言代码集合中的每个函数分析语法结构和编译过程中可能产生附加代码的结构,在确保所述各结构至少被覆盖一次的条件下选出使源代码目标码对比分析的工作量最小的典型结构代码子集;以及c.合并所述典型结构代码子集、所述汇编代码集合和所述库函数集合,以得到所述待分析软件的所述最小代码子集。
【技术特征摘要】
1.一种选取覆盖所有源代码结构的最小代码子集的方法,其包括:a.将待分析软件的源代码按照高级语言、汇编语言和库函数进行分类,得到高级语言代码集合、汇编代码集合和库函数集合;b.对所述高级语言代码集合中的每个函数分析语法结构和编译过程中可能产生附加代码的结构,在确保所述各结构至少被覆盖一次的条件下选出使源代码目标码对比分析的工作量最小的典型结构代码子集;以及c.合并所述典型结构代码子集、所述汇编代码集合和所述库函数集合,以得到所述待分析软件的所述最小代码子集。2.根据权利要求1所述的方法,其特征在于,步骤b包括:b1.对所述每个函数分析语法结构和编译过程中可能产生附加代码的结构,形成所述每个函数与各结构的追溯关系表;b2.对所述各结构进行分类、统一编号,同类结构的编号全局唯一,同时记录所述每个函数对应的源代码目标码对比分析的所述工作量;b3.对所述每个函数的结构编号进行汇总,形成具有结构类别编号、所述工作量的源代码结构分析表;b4.根据所述源代码结构分析表构造结构-函数矩阵;b5.在确保所述各结构至少被覆盖一次的条件下,根据所述结构-函数矩阵和所述每个函数对应的所述工作量构建数学模型;以及b6.对所述数学模型进行求解,选取出使所述工作量最小的所述典型结构代码子集。3.根据权利要求2所述的方法,其特征在于,在步骤b1中,对所述每个函数分析语法结构包括分析函数的返回类型、参数类型、参数个数、基本类型、构造类型、预处理、运算符、过程控制类型和嵌套次数中的一个或多个。4.根据权利要求2所述的方法,其特征在于,在步骤b1中...
【专利技术属性】
技术研发人员:钱杰,王影,刘卉,殷锴,
申请(专利权)人:中国航发商用航空发动机有限责任公司,
类型:发明
国别省市:上海,31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。