System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及软件测试与验证领域,具体涉及一种软件源代码数据耦合覆盖分析方法和装置。
技术介绍
1、作为faa和caac共同认可的机载软件的适航取证的标准,do-178b/c《机载系统和设备合格审定中的软件考虑》在其附表a-7.8中定义了“完成软件结构的测试覆盖(数据耦合与控制耦合)”的验证目标。
2、ldra testbed、vectorcast、sa-covalyzer等少量商业工具开发了配套的数据耦合分析插件,可以支持数据耦合分析,但是仅能辅助完成数据耦合与控制耦合分析的部分工作,需要事先对待分析对象(输入)进行预处理,即在人工分析软件架构功能部件定义的基础上,对提供给商业工具的输入信息进行简化;或事后对分析结果(输出)开展补充分析。无论是对工具输出结果进行分析,还是为简化输入提供分析结果,目前都需要大量文档信息提取的人工操作,自动化程度及工作效率较低。无论使用什么商业工具,都需要结合工具进一步开展配套定制工作,才能得到完整的耦合分析结果。
3、对于上述问题,开发了一种从软件开发生命周期数据两端(高层需求、源代码)向中间(低层需求、软件架构)双向逼近、正向/逆向结合的软件数据耦合分析方案。为了在机载软件验证实践中全面落实该方案,需要将其中的各个数据耦合分析子流程进一步分解和细化。
4、对于其中的基于源代码的数据耦合分析的子流程,目前有一些商用软件静态分析工具可以部分支持数据耦合分析功能,如基于源代码进行静态数据流/控制流分析、动态数据流的方法,但是所得结果难以直接表明对于适航目标的符合性
技术实现思路
1、以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。
2、本专利技术的目的在于解决上述问题,提供了一种软件源代码数据耦合覆盖分析方法和装置,将软件静态控制流分析与静态/动态数据流分析成果进行有机融合以形成完整的数据耦合分析结果,能够将数据耦合分析的工作量降低到工程上可行的程度。
3、本专利技术的技术方案为:本专利技术揭示了一种软件源代码数据耦合覆盖分析方法,方法包括:
4、步骤1:执行源代码静态控制流分析,划分执行部件;
5、步骤2:执行源代码静态数据流分析,以执行部件为对象,汇总计算执行部件输入、输出变量表;
6、步骤3:执行源代码动态数据流分析,生成不同执行部件之间的定义-使用对,并结合控制流评审所生成的定义-使用对的有效性;
7、步骤4:扩充执行部件输入、输出变量表,增加并填充表中的输入来源、输出去向列,形成源代码执行部件数据耦合关系表;
8、步骤5:通过检查源代码执行部件数据耦合关系表中的输入来源与输出去向是否存在空数据,判断源代码数据流是否存在异常;
9、步骤6:完成关联执行部件之间的数据耦合关系分析以及函数模块间数据耦合关系分析,作为判断源代码数据耦合是否符合软件架构、低层需求,判断其正确性的逆向输入。
10、根据本专利技术的软件源代码数据耦合覆盖分析方法的一实施例,步骤1进一步包括:
11、执行源代码静态控制流分析,查找未被其他函数调用的所有函数,其中未被其他函数调用的所有函数简称0层函数,形成0层函数清单;同时汇总所有函数之间的调用关系,得到原始函数调用关系表,生成完整的0层函数调用树,每个0层函数调用树中包含的各层被调用函数,构成以该0层函数命名的执行部件。
12、根据本专利技术的软件源代码数据耦合覆盖分析方法的一实施例,步骤2进一步包括:
13、执行源代码静态数据流分析,以执行部件为对象,提取每个函数的输入、输出变量表,形成函数输入、输出变量表;然后结合0层函数调用树信息,间接生成基于函数的执行部件输入、输出变量表,进而简化形成执行部件输入、输出变量表。
14、根据本专利技术的软件源代码数据耦合覆盖分析方法的一实施例,步骤3进一步包括:
15、执行源代码动态数据流分析,通过以源文件为单位的组织,将动态数据流分析表中分隔开的所有表格合并为一张完整的表格,同时将所有空白单元格以相邻的最近值按列填充,然后提取各数据的定义与使用信息,生成所有可能的同名数据定义-使用对,并从中筛选出所有全局变量的定义-使用对,然后依次首先消除定义与使用同属于一个模块的定义-使用对,形成函数之间的定义-使用对表;然后消除定义与使用同属于一个执行部件的定义-使用对,只保留不同执行部件之间的定义-使用对;最后结合控制流,评审所保留的、不同函数、不同执行部件之间的定义-使用对的有效性,分别得到基于函数和执行部件的全局变量有效d-u对表。
16、根据本专利技术的软件源代码数据耦合覆盖分析方法的一实施例,步骤4进一步包括:
17、利用基于执行部件的全局变量有效d-u对表中的信息,扩充步骤2形成的执行部件输入、输出变量表,增加并填充输入来源、输出去向列,形成源代码执行部件数据耦合关系表。
18、根据本专利技术的软件源代码数据耦合覆盖分析方法的一实施例,步骤5进一步包括:
19、检查源代码执行部件数据耦合关系表中的输入来源与输出去向列是否存在空数据,如是则表示源代码数据流存在异常,应进一步完善源代码。
20、根据本专利技术的软件源代码数据耦合覆盖分析方法的一实施例,步骤6进一步包括:
21、参考步骤4、5,扩展函数输入、输出变量表,补充输入来源与输出去向两列,识别执行部件内部是否存在数据流异常,完成关联函数模块之间的数据耦合关系分析,生成源代码数据耦合关系表,作为判断源代码数据耦合是否符合软件架构、低层需求的正确性依据。
22、本专利技术还揭示了一种软件源代码数据耦合覆盖分析装置,装置包括:
23、执行部件划分模块,用于执行源代码静态控制流分析,划分执行部件;
24、执行部件输入、输出变量表汇总模块,用于执行源代码静态数据流分析,以执行部件为对象,汇总计算执行部件输入、输出变量表;
25、执行部件间定义-使用对本文档来自技高网...
【技术保护点】
1.一种软件源代码数据耦合覆盖分析方法,其特征在于,方法包括:
2.根据权利要求1所述的软件源代码数据耦合覆盖分析方法,其特征在于,步骤1进一步包括:
3.根据权利要求2所述的软件源代码数据耦合覆盖分析方法,其特征在于,步骤2进一步包括:
4.根据权利要求3所述的软件源代码数据耦合覆盖分析方法,其特征在于,步骤3进一步包括:
5.根据权利要求4所述的软件源代码数据耦合覆盖分析方法,其特征在于,步骤4进一步包括:
6.根据权利要求5所述的软件源代码数据耦合覆盖分析方法,其特征在于,步骤5进一步包括:
7.根据权利要求6所述的软件源代码数据耦合覆盖分析方法,其特征在于,步骤6进一步包括:
8.一种软件源代码数据耦合覆盖分析装置,其特征在于,装置包括:
9.根据权利要求8所述的软件源代码数据耦合覆盖分析装置,其特征在于,执行部件划分模块进一步配置为:
10.根据权利要求9所述的软件源代码数据耦合覆盖分析装置,其特征在于,执行部件输入、输出变量表汇总模块进一步配置为:
12.根据权利要求11所述的软件源代码数据耦合覆盖分析装置,其特征在于,源代码执行部件数据耦合关系表生成模块进一步配置为:
13.根据权利要求12所述的软件源代码数据耦合覆盖分析装置,其特征在于,源代码数据流异常判断模块进一步配置为:
14.根据权利要求13所述的软件源代码数据耦合覆盖分析装置,其特征在于,关联函数模块间数据耦合关系分析模块进一步配置为:
...【技术特征摘要】
1.一种软件源代码数据耦合覆盖分析方法,其特征在于,方法包括:
2.根据权利要求1所述的软件源代码数据耦合覆盖分析方法,其特征在于,步骤1进一步包括:
3.根据权利要求2所述的软件源代码数据耦合覆盖分析方法,其特征在于,步骤2进一步包括:
4.根据权利要求3所述的软件源代码数据耦合覆盖分析方法,其特征在于,步骤3进一步包括:
5.根据权利要求4所述的软件源代码数据耦合覆盖分析方法,其特征在于,步骤4进一步包括:
6.根据权利要求5所述的软件源代码数据耦合覆盖分析方法,其特征在于,步骤5进一步包括:
7.根据权利要求6所述的软件源代码数据耦合覆盖分析方法,其特征在于,步骤6进一步包括:
8.一种软件源代码数据耦合覆盖分析装置,其特征在于,装置包括:
...
【专利技术属性】
技术研发人员:王影,陶金伟,李舒怡,赵岩,
申请(专利权)人:中国航发商用航空发动机有限责任公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。