System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于加权有向耦合网络的软件结构风险识别方法与装置制造方法及图纸_技高网

基于加权有向耦合网络的软件结构风险识别方法与装置制造方法及图纸

技术编号:39996546 阅读:8 留言:0更新日期:2024-01-09 02:49
本发明专利技术提供一种基于加权有向耦合网络的软件结构风险识别方法与装置,该方法包括:根据软件结构的源代码中的全局数据结构和软件函数进行节点建模;根据软件函数的复杂度量化指标计算出节点复杂度权值;利用网络节点之间的有向耦合关系边计算出节点耦合度权值;基于节点复杂度权值和节点耦合度权值分析节点的网络结构,并根据节点的关联结构计算出对应的结构风险度指标;将结构风险度指标按照预设排序规则进行排序,并从排序结果中筛选出目标软件函数,以实现软件结构的风险识别。本发明专利技术采用节点耦合度与节点复杂度评价节点的结构风险性,为提升软件可靠性与安全性设计水平提供必要技术方法。

【技术实现步骤摘要】

本专利技术涉及程序分析与软件工程,特别涉及一种基于加权有向耦合网络的软件结构风险识别方法与装置


技术介绍

1、随着软件技术的迅猛发展,软件的形态呈现出规模化、复杂化、开放式的发展。巨型软件、复杂软件的出现,导致软件结构已由传统的线性简单网络结构向着非线性的复杂网络结构转变。软件工程人员发现,软件复杂度与耦合度与软件结构风险存在显著正相关性,随着软件结构越是复杂,耦合度越紧密,一旦这些高度耦合的组件发生失效,软件稳定性将受到灾难性的打击,甚至导致软件程序整体崩溃。软件模块的高复杂和高耦合导致软件结构更为脆弱和不安全成为当前行业面临的一大挑战。

2、因此,如何有效地识别出软件结构中高风险的模块,成为行业研究人员关注的一个热点。如果能够在软件编码阶段获取软件模块中关于风险的先验知识,这种信息一方面能够为软件开发人员提供软件结构风险的预警,为软件设计人员优化软件架构和调整软件结构提供了重要参考依据。另一方面,该信息可被作为缺陷预测的关键信息源,可以有效地指导软件测试人员对软件模块测试的优先级进行决策,帮助软件测试以较小的代价尽早地发现软件缺陷。

3、传统软件关键模块识别方法主要采用软件度量指标评价方法,如统计软件模块的复杂度,扇入/扇出度等指标。但是,这些度量指标仅对软件结构的粗粒度统计,不能细粒度地体现软件模块与其他模块的耦合关系。对软件模块之间的耦合性未有充分考虑,难以适用复杂软件的结构风险度的评价。一些学者针对该问题采用复杂网络的思想,试图利用软件结构网络模型,通过分析复杂网络的“小世界”和“无标度”特性,以准确识别软件结构中关键的模块。但在当前的软件结构网络模型更多偏向考虑网络的连通性以确定软件结构中关键的模块节点或关键路径。对自身节点的复杂度却考虑不足,存在软件节点复杂度风险识别不精确问题。

4、因此,如何同时考虑模块自身复杂度与模块影响其他模块的耦合性两个方面,提供一种高效、准确的软件结构风险定量识别的技术,成为了当前软件开发和软件测试行业均存在的迫切需求。


技术实现思路

1、基于此,本专利技术的目的是提供一种基于加权有向耦合网络的软件结构风险识别方法与装置,以至少解决上述技术中的不足。

2、本专利技术提出一种基于加权有向耦合网络的软件结构风险识别方法,包括:

3、提取软件结构的源代码中的全局数据结构和软件函数,并根据所述全局数据结构和所述软件函数进行加权有向耦合网络中的节点建模;

4、提取所述软件函数的复杂度量化指标,并根据所述复杂度量化指标计算出节点复杂度权值;

5、建立网络节点之间的有向耦合关系边,并利用所述有向耦合关系边计算出节点耦合度权值;

6、基于所述节点复杂度权值和所述节点耦合度权值分析节点的网络结构,并根据所述节点的关联结构计算出对应的结构风险度指标;

7、将所述结构风险度指标按照预设排序规则进行排序,并从排序结果中筛选出目标软件函数,以实现所述软件结构的风险识别。

8、进一步的,提取软件结构的源代码中的全局数据结构和软件函数,并根据所述全局数据结构和所述软件函数进行节点建模的步骤包括:

9、识别软件结构的源代码中的全局数据结构和软件函数,并以所述软件函数作为节点;

10、抽取所述软件函数中存在的源代码信息,并以所述全局数据结构作为节点,以完成对应的节点建模。

11、进一步的,提取所述软件函数的复杂度量化指标,并根据所述复杂度量化指标计算出节点复杂度权值的步骤包括:

12、从所述节点的源代码中提取函数的复杂度量化指标,以作为加权有向耦合网络中节点的属性;

13、按照以下公式计算出所述节点的节点复杂度权值,并将节点的节点复杂度权值设为恒定值:

14、;

15、式中,、、、以及分别为节点 node代码函数、圈复杂度、嵌套深度、扇出与扇入5个复杂度指标参数标准化后的结果, cdf为正态分布的累积分布函数,该函数将度量值映射到0-1区间。

16、进一步的,建立网络节点之间的有向耦合关系边,并利用所述有向耦合关系边计算出节点耦合度权值的步骤包括:

17、以节点为对象,分别统计所述节点与其他节点之间的控制耦合关系数据、数据耦合关系数据、公共耦合关系数据以及调用耦合关系数据;

18、将所述控制耦合关系数据、所述数据耦合关系数据、所述公共耦合关系数据以及所述调用耦合关系数据进行融合,以得到综合耦合强度;

19、构建加权有向耦合网络模型,将所述节点与有向耦合关系边组合,实现节点的关联边的构建,完成加权有向耦合网络模型,以得到对应的节点耦合度权值。

20、进一步的,所述综合耦合强度的表达式为:

21、;

22、式中,、、、分别为控制耦合、数据耦合、公共耦合以及调用耦合的耦合强度,、、以及分别为控制耦合、数据耦合、公共耦合以及调用耦合的权重系数,且满足的约束。

23、进一步的,基于所述节点复杂度权值和所述节点耦合度权值分析节点的网络结构,并根据所述节点的关联结构计算出对应的结构风险度指标的步骤包括:

24、基于节点之间的耦合关系对单个节点的多个耦合边进行归纳,以得到对应的节点影响度;

25、将所述节点影响度和所述节点复杂度权值作为计算因子,以计算出对应的结构风险度指标。

26、进一步的,所述节点影响度的计算公式为:

27、;

28、式中,为第 i个节点的前驱节点集合,为节点 i与前驱节点 k的综合耦合权值,为节点 k与该节点的后继节点集合的所有边的权值总和;

29、所述结构风险度指标的计算公式为:

30、;

31、式中, d为阻尼因子,取值为0.85,为所有节点复杂度的总和,表示节点复杂度权值。

32、本专利技术还提出一种基于加权有向耦合网络的软件结构风险识别装置,包括:

33、代码解析模块,用于提取软件结构的源代码中的全局数据结构和软件函数,并根据所述全局数据结构和所述软件函数进行加权有向耦合网络中的节点建模;

34、节点复杂度计算模块,用于提取所述软件函数的复杂度量化指标,并根据所述复杂度量化指标计算出节点复杂度权值;

35、节点耦合度计算模块,用于建立网络节点之间的有向耦合关系边,并利用所述有向耦合关系边计算出节点耦合度权值;

36、结构风险识别模块,用于基于所述节点复杂度权值和所述节点耦合度权值分析节点的网络结构,并根据所述节点的关联结构计算出对应的结构风险度指标;

37、风险排序模块,用于将所述结构本文档来自技高网...

【技术保护点】

1.一种基于加权有向耦合网络的软件结构风险识别方法,其特征在于,包括:

2.根据权利要求1所述的基于加权有向耦合网络的软件结构风险识别方法,其特征在于,提取软件结构的源代码中的全局数据结构和软件函数,并根据所述全局数据结构和所述软件函数进行节点建模的步骤包括:

3.根据权利要求2所述的基于加权有向耦合网络的软件结构风险识别方法,其特征在于,提取所述软件函数的复杂度量化指标,并根据所述复杂度量化指标计算出节点复杂度权值的步骤包括:

4.根据权利要求3所述的基于加权有向耦合网络的软件结构风险识别方法,其特征在于,建立网络节点之间的有向耦合关系边,并利用所述有向耦合关系边计算出节点耦合度权值的步骤包括:

5.根据权利要求4所述的基于加权有向耦合网络的软件结构风险识别方法,其特征在于,所述综合耦合强度的表达式为:

6.根据权利要求1所述的基于加权有向耦合网络的软件结构风险识别方法,其特征在于,基于所述节点复杂度权值和所述节点耦合度权值分析节点的网络结构,并根据所述节点的关联结构计算出对应的结构风险度指标的步骤包括:

7.根据权利要求6所述的基于加权有向耦合网络的软件结构风险识别方法,其特征在于,所述节点影响度的计算公式为:

8.一种基于加权有向耦合网络的软件结构风险识别装置,其特征在于,包括:

9.根据权利要求8所述的基于加权有向耦合网络的软件结构风险识别装置,其特征在于,所述代码解析模块包括:

10.根据权利要求9所述的基于加权有向耦合网络的软件结构风险识别装置,其特征在于,所述节点复杂度计算模块包括:

...

【技术特征摘要】

1.一种基于加权有向耦合网络的软件结构风险识别方法,其特征在于,包括:

2.根据权利要求1所述的基于加权有向耦合网络的软件结构风险识别方法,其特征在于,提取软件结构的源代码中的全局数据结构和软件函数,并根据所述全局数据结构和所述软件函数进行节点建模的步骤包括:

3.根据权利要求2所述的基于加权有向耦合网络的软件结构风险识别方法,其特征在于,提取所述软件函数的复杂度量化指标,并根据所述复杂度量化指标计算出节点复杂度权值的步骤包括:

4.根据权利要求3所述的基于加权有向耦合网络的软件结构风险识别方法,其特征在于,建立网络节点之间的有向耦合关系边,并利用所述有向耦合关系边计算出节点耦合度权值的步骤包括:

5.根据权利要求4所述的基于加权有向耦合网络的软件结构风险识...

【专利技术属性】
技术研发人员:肖鹏聂嘉浩吴博吴婷
申请(专利权)人:南昌航空大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1