论文部分内容阅读
【摘 要】提出了一種基于分层体系结构模型识别的软件体系结构重构技术。该技术使用目标软件源代码作为输入,筛选出与分层体系结构无关的代码,然后利用代码词汇信息探索程序实体之间的语义关联,提取并计算程序实体与之间的角色相似性通过结合基于软件集合的分层模型图像属性,确定软件层次结构和软件体系结构模型。基于方案识别,将系统中的违规定位为重建点,并生成和实施相应的重建建议案。最后,在开源Github和SourceForge社区中,选择了10个开放源码软件系统作为试点项目。与传统方法相比,本文提出的基于层次模型识别的软件体系结构重构技术大大提高了模型识别的有效性、重构点识别的效果以及重构建议的实施效果。它可以有效地帮助开发人员识别软件体系结构模型,获取重建点并生成重建建议,帮助开发人员实施体系结构重组,改善系统违规情况,并提高软件质量。
【关键词】架构重构;分层架构模式;架构模式识别;重构点定位
前言
软件体系结构是提高软件系统质量并支持软件开发和再利用的重要手段。在实际软件开发中应用软件体系结构的最大困难在于实际开发中不断变化的需求,使得实际系统和软件体系结构难以有效地指导软件开发实践。因此,重要的是从系统的实施中探讨提取、分析和重组软件体系结构的有效方法,以便更好地了解和分析现有系统,提高软件系统的维护效率,降低维护成本。同时,软件体系结构的重构可以有效地评估系统的实现是否符合设计体系结构,并检查系统的实现是否违反设计,从而提高开发质量。因此,它已成为当前软件体系结构研究的热点之一。
一、分层架构模式识别方法
1.代码预处理
与系统体系结构无关的代码信息可能会严重干扰软件体系结构模式识别过程,从而影响识别的准确性和有效性。本文使用一般规则、域规则和用户定义的规则来筛选目标系统的源代码。
2.软件职责恢复
预处理的源代码类文件将转换为抽象语法树(AST),并从每个类文件中通过AST节点提取术语信息。由于软件责任的程序实体分组层是系统的软件包层,因此必须根据每个类文件所属的软件包合并从每个类文件中提取的术语,并为每个软件包生成一个词汇文档。将包装词汇文档中的复合词分为由子词分隔的词,将所有词的树干或根部抽出来,然后删除不能传递有效信息的词以消除噪声。单词的重要性因地点而异,因此可以根据出现次数加权。
3.软件层次识别
软件层次识别是指基于软件组件在组件之间填充结构相关性信息,生成组件的完整示意图,通过组合层次模型图像属性执行层次识别,以及获取目标系统的层次结构。首先,将目标系统的类文件转换为AST格式,并通过浏览AST节点提取所需类之间的结构相关性信息。最后来说,它生成类间结构依赖关系图,定义g <类,边>类结构依赖关系图,该图由类节点集类和类间依赖关系边集组成,在相邻表的抽象中表示,为目标系统中的实体类I生成相应的顶点关键点。将所有图元类顶点存储在一维数组中,并保存指向每个类顶点的从属类,以这些顶点作为从属关系的起点。
二、基于模式识别结果的分层软件架构重构
1.基于模式识别的重构点定位
本文使用模型的一致性判断,以图形方式表示三个违规作为重建点。SKIP、BACK和INTERFACE是分别违反邻近相关性规则、单向相关性规则和接口规则的程序实体。查找三个违规的过程定义如下:“跳过”和“后退”分别根据数据包结构相关性卡标识非法使用其不相邻的底层和顶层服务的数据包。被认为是违反等级从属关系的起点。该接口基于底层类结构的依赖关系图。如果packageB包含依赖于其packageka子软件包中cls gamma实体类的cls实体类,并且该cls gamma类不是接口形式,而是直接函数实现类,则视为在package-agea中发生了非表面接口违规。
2.重构建议生成
本文根据重构点的定位,按照自下而上的原则提出了体系结构和代码重构建议。如图5所示,PA在分层结构图中非法调用非直接相邻子实体的PB函数。因此,在构造点放置阶段,pa将被添加到SKIP集合中。要使目标系统与分层模型的使用规范相匹配,建议您取消对pa到PB依赖性的重新构建。经过进一步分析,发现pa-pb依赖关系源自其内部类文件之间的依赖关系,因此切断pa-pb依赖关系的重构建议映射到代码层,而消除四个类之间依赖关系的重构建议{C1→C5,C3→C4,C3→C5,C2→C4 重组建议分为两种类型:取消套装程式之间的非法相依性,以及调整套装程式的内部实体介面,以移除类别之间的非法相依性和抽象实体类别作为介面的相依性。
3.重构实施与效果评估
若要评估重建的影响,您必须采取适当的措施,包括针对层次间违规的措施、针对反向违规的措施以及针对非介面违规的措施。
结束语
综上所述可知,提出了一种基于分层体系结构模型识别的软件体系结构重建技术,通过使用代码词汇信息恢复软件责任,并使用类图生成组件结构依赖图,实现了软件体系结构模型识别。根据模式识别结果找到重建点并生成重建建议。最后,实验分析证实,技术大大提高了模型识别的效率、确定重建点的效率以及与传统方法相比执行重建建议的效率。它可以有效地帮助软件开发人员识别软件的结构模型,找到重建点并生成重建建议,帮助开发人员进行结构重建,改善系统违规情况,提高软件质量。
参考文献:
[1]杜鹏程.基于软件职责和结构的分层架构模式识别及重构[D].江苏南京∶东南大学,2019.
[2]任武.通过用况聚类促进软件结构恢复的方法[J].电子学报,2013,41(7)∶166-172.
(作者单位:广西智汇佳人力资源有限公司)
【关键词】架构重构;分层架构模式;架构模式识别;重构点定位
前言
软件体系结构是提高软件系统质量并支持软件开发和再利用的重要手段。在实际软件开发中应用软件体系结构的最大困难在于实际开发中不断变化的需求,使得实际系统和软件体系结构难以有效地指导软件开发实践。因此,重要的是从系统的实施中探讨提取、分析和重组软件体系结构的有效方法,以便更好地了解和分析现有系统,提高软件系统的维护效率,降低维护成本。同时,软件体系结构的重构可以有效地评估系统的实现是否符合设计体系结构,并检查系统的实现是否违反设计,从而提高开发质量。因此,它已成为当前软件体系结构研究的热点之一。
一、分层架构模式识别方法
1.代码预处理
与系统体系结构无关的代码信息可能会严重干扰软件体系结构模式识别过程,从而影响识别的准确性和有效性。本文使用一般规则、域规则和用户定义的规则来筛选目标系统的源代码。
2.软件职责恢复
预处理的源代码类文件将转换为抽象语法树(AST),并从每个类文件中通过AST节点提取术语信息。由于软件责任的程序实体分组层是系统的软件包层,因此必须根据每个类文件所属的软件包合并从每个类文件中提取的术语,并为每个软件包生成一个词汇文档。将包装词汇文档中的复合词分为由子词分隔的词,将所有词的树干或根部抽出来,然后删除不能传递有效信息的词以消除噪声。单词的重要性因地点而异,因此可以根据出现次数加权。
3.软件层次识别
软件层次识别是指基于软件组件在组件之间填充结构相关性信息,生成组件的完整示意图,通过组合层次模型图像属性执行层次识别,以及获取目标系统的层次结构。首先,将目标系统的类文件转换为AST格式,并通过浏览AST节点提取所需类之间的结构相关性信息。最后来说,它生成类间结构依赖关系图,定义g <类,边>类结构依赖关系图,该图由类节点集类和类间依赖关系边集组成,在相邻表的抽象中表示,为目标系统中的实体类I生成相应的顶点关键点。将所有图元类顶点存储在一维数组中,并保存指向每个类顶点的从属类,以这些顶点作为从属关系的起点。
二、基于模式识别结果的分层软件架构重构
1.基于模式识别的重构点定位
本文使用模型的一致性判断,以图形方式表示三个违规作为重建点。SKIP、BACK和INTERFACE是分别违反邻近相关性规则、单向相关性规则和接口规则的程序实体。查找三个违规的过程定义如下:“跳过”和“后退”分别根据数据包结构相关性卡标识非法使用其不相邻的底层和顶层服务的数据包。被认为是违反等级从属关系的起点。该接口基于底层类结构的依赖关系图。如果packageB包含依赖于其packageka子软件包中cls gamma实体类的cls实体类,并且该cls gamma类不是接口形式,而是直接函数实现类,则视为在package-agea中发生了非表面接口违规。
2.重构建议生成
本文根据重构点的定位,按照自下而上的原则提出了体系结构和代码重构建议。如图5所示,PA在分层结构图中非法调用非直接相邻子实体的PB函数。因此,在构造点放置阶段,pa将被添加到SKIP集合中。要使目标系统与分层模型的使用规范相匹配,建议您取消对pa到PB依赖性的重新构建。经过进一步分析,发现pa-pb依赖关系源自其内部类文件之间的依赖关系,因此切断pa-pb依赖关系的重构建议映射到代码层,而消除四个类之间依赖关系的重构建议{C1→C5,C3→C4,C3→C5,C2→C4 重组建议分为两种类型:取消套装程式之间的非法相依性,以及调整套装程式的内部实体介面,以移除类别之间的非法相依性和抽象实体类别作为介面的相依性。
3.重构实施与效果评估
若要评估重建的影响,您必须采取适当的措施,包括针对层次间违规的措施、针对反向违规的措施以及针对非介面违规的措施。
结束语
综上所述可知,提出了一种基于分层体系结构模型识别的软件体系结构重建技术,通过使用代码词汇信息恢复软件责任,并使用类图生成组件结构依赖图,实现了软件体系结构模型识别。根据模式识别结果找到重建点并生成重建建议。最后,实验分析证实,技术大大提高了模型识别的效率、确定重建点的效率以及与传统方法相比执行重建建议的效率。它可以有效地帮助软件开发人员识别软件的结构模型,找到重建点并生成重建建议,帮助开发人员进行结构重建,改善系统违规情况,提高软件质量。
参考文献:
[1]杜鹏程.基于软件职责和结构的分层架构模式识别及重构[D].江苏南京∶东南大学,2019.
[2]任武.通过用况聚类促进软件结构恢复的方法[J].电子学报,2013,41(7)∶166-172.
(作者单位:广西智汇佳人力资源有限公司)