System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于软件工程域,涉及一种基于依赖结构矩阵(dependency structurematrix,dsm)的软件架构评估方法。
技术介绍
1、“软件危机”这一概念几乎从计算机诞生之初便出现,并且至今仍然是软件开发领域面临的主要挑战之一。其核心表现为,软件的性能往往未能跟上硬件技术的快速发展;软件开发的研究进展与实际应用需求之间存在显著的差距;在面对大型软件项目开发时,开发人员往往力不从心,导致项目预算超支和交付时间一再拖延。此外,从软件质量角度来看,随着软件系统规模的扩大,尤其是大型软件的开发,维护困难性增加,软件的可移植性和可复用性变得较差,进一步加剧了这一问题。
2、随着互联网和大数据技术的快速发展,软件系统的规模和复杂性也在不断增加。为了应对这些变化,软件架构的重要性日益凸显。软件架构是系统的骨架和基本结构,它决定了系统的性能、可靠性、可扩展性等多个方面,直接影响系统的可维护性和长期稳定性。因此,如何评估软件架构,尤其是在复杂系统中,评估架构是否存在技术债务和潜在问题,成为了软件开发和维护过程中的一项关键任务。
3、目前,已经出现了很多基于程序和源代码的软件度量方法,这些方法成功地应用于软件的开发、优化和维护。然而,从软件架构的角度进行系统度量的研究仍然处于探索阶段,现有的架构度量方法往往难以全面涵盖系统的质量属性,尤其是在处理大规模和复杂系统时,相关研究和应用仍显不足。因此,如何设计一种能够全面评估软件架构质量、定位潜在问题并提供有效优化策略的方法,成为了一个亟待解决的挑战。
5、由于系统软件的复杂性和庞大规模,很多时候难以在不借助专门的架构分析工具的情况下,全面管理和优化软件架构。架构设计的合理性直接关系到软件开发的效率和质量。架构混乱和不合理不仅影响系统的性能,还会增加开发、维护和扩展的难度,甚至可能导致项目的失败。因此,对软件架构进行全面、系统的评估显得尤为重要。
技术实现思路
1、针对上述存在的问题,本专利技术提供一种基于依赖结构矩阵的软件架构评估方法,该方法通过对软件系统中的各模块及其间依赖关系的分析,全面评估软件架构质量,并通过机器学习算法提供潜在问题的定位和优化建议。
2、上述的目的通过以下技术方案实现:
3、一种基于依赖结构矩阵的软件架构评估方法,该方法按照以下步骤实施:
4、步骤1:构建依赖结构矩阵:获取待评估软件的源代码,解析源代码以识别软件系统中的模块、类及方法;基于解析结果提取各软件实体之间的依赖关系,包括但不限于模块间依赖、类间调用关系、方法调用关系;依据上述依赖关系构建依赖结构矩阵dsm,其中,dsm中每一行和每一列代表软件中的一个模块,dsm中元素的值则表示模块之间的依赖强度;
5、步骤2:基于dsm的多维特征计算:基于构建的依赖结构矩阵dsm中提取多尺度特征,所述多尺度特征涵盖基础特征、架构复杂度、耦合内聚性、系统平衡性四个维度的特征;
6、步骤3:软件架构评估指标标准化:对从依赖结构矩阵中提取的多尺度特征,使用z-score标准化方法进行标准化处理,以消除不同特征量纲的影响,标准化过程将各特征值映射至统一数值范围内,以保证各特征在同一尺度下进行后续评估;
7、步骤4:基于多层感知机的架构评估:利用多层感知机模型mlp融合步骤3中标准化后的多尺度特征进行训练,学习各特征指标与架构评价标签之间的映射关系,将步骤3标准化后的评估特征作为输入,经过多层感知机模型mlp的多个隐藏层进行非线性特征融合和模式学习,捕捉特征之间的复杂关系;采用监督学习方法,通过已标注的架构评价标签优化模型参数;训练完成后,使用训练好的多层感知机模型mlp对待评估的软件架构进行评分或分类;
8、步骤5:架构评估结果分析与优化建议生成:基于步骤4中多层感知机模型的评估结果,分析各特征对最终评分或分类结果的贡献度,确定影响软件架构质量的关键因素。
9、进一步地,步骤2具体包括以下步骤:
10、步骤2.1.计算基础特征指标:通过直接统计源代码的方法得到代码行数l、头文件计数h、总元素个数n,通过统计dsm中非零元素的和得到边数e,通过统计dsm中模块所在行所有非零元素的和得到模块的依赖关系出边数o,通过统计dsm中模块所在列所有非零元素的的得到模块的依赖关系入边数目i;
11、步骤2.2:计算架构复杂度指标:架构复杂度的指标包括架构复杂度ca、路径复杂度cp、圈复杂度cc、系统循环量sl,其中:
12、复杂度ca=v×e;
13、路径复杂度cp通过统计控制流图中的独立路径数目得到;
14、圈复杂度cc=e-n+2,n表示节点数,即源代码中模块、组件的总数量;
15、系统循环量sl通过系统中在循环中的数量计数得到;
16、步骤2.3:计算耦合内聚性指标:耦合内聚性指标包括内聚性ch、耦合强度cs、耦合性富集度ce、连通富集度cne,以模块moi为例算,其中:
17、内聚性n(moi)表示模块moi包含的方法和类的数量,为模块中类、方法的总数量,μ(aj)表示模块中与方法或类aj有依赖关系的方法或类的总数量;
18、耦合强度n(moi)表示模块moi包含的方法和类的数量,lsc(moi,moj)表示包含模块moi和模块moj之间的最短环的长度,为模块中类、方法的总数量;
19、耦合性富集度co(moi)表示模块耦合度,eco(moi)表示期望耦合度,模块moi的耦合度为模块中方法、类之间的可达路径数量,为模块中类、方法的总数量,期望耦合度为对模块中的类、方法之间的依赖关系进行打乱重新连接后,再计算得到的实际耦合度;
20、连通富集度conn(moi)表示实际连通性,econn(moi)表示期望连通性。实际连通性计算公式为为模块中边的数量,为模块中类、方法的总数量,期望连通性为对模块中的类、方法之间的依赖关系进行打乱重新连接后,再计算得到的实际连通性;
21、步骤2.4:计算系统平衡性指标:系统平衡性的指标包括路径比例pr、平衡性fb、模块重要性im,其中:
22、路径比例pr为依赖结构矩阵中上三角中的依赖关系数量占总依赖关系的比值;
23、模块重要性im通过pagerank算法计算而得到的模块的pagerank值;
24、平衡性kl(moi)表示模块moi的类、方法在依赖结构矩阵中的度分布与平均分布的本文档来自技高网...
【技术保护点】
1.一种基于依赖结构矩阵的软件架构评估方法,其特征在于,该方法按照以下步骤实施:
2.根据权利要求1所述的一种基于依赖结构矩阵的软件架构评估方法,其特征在于,步骤2具体包括以下步骤:
3.根据权利要求2所述的一种基于依赖结构矩阵的软件架构评估方法,其特征在于,步骤3具体包括以下步骤:
4.根据权利要求3所述的一种基于依赖结构矩阵的软件架构评估方法,其特征在于,步骤4具体包括以下步骤:
5.根据权利要求4所述的一种基于依赖结构矩阵的软件架构评估方法,其特征在于,所述步骤5具体包括以下步骤:
【技术特征摘要】
1.一种基于依赖结构矩阵的软件架构评估方法,其特征在于,该方法按照以下步骤实施:
2.根据权利要求1所述的一种基于依赖结构矩阵的软件架构评估方法,其特征在于,步骤2具体包括以下步骤:
3.根据权利要求2所述的一种基于依赖结构矩阵的软件架构评估方法...
【专利技术属性】
技术研发人员:孟青,胡鹤轩,游辉敏,闵绘宇,李剑松,任思尚,
申请(专利权)人:河海大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。