CN116909542B - 一种汽车软件模块划分系统、方法及存储介质 - Google Patents
一种汽车软件模块划分系统、方法及存储介质 Download PDFInfo
- Publication number
- CN116909542B CN116909542B CN202310775195.6A CN202310775195A CN116909542B CN 116909542 B CN116909542 B CN 116909542B CN 202310775195 A CN202310775195 A CN 202310775195A CN 116909542 B CN116909542 B CN 116909542B
- Authority
- CN
- China
- Prior art keywords
- module
- software
- port
- network structure
- division
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 239000011159 matrix material Substances 0.000 claims abstract description 35
- 230000003993 interaction Effects 0.000 claims abstract description 22
- 238000012545 processing Methods 0.000 claims abstract description 9
- 238000007781 pre-processing Methods 0.000 claims abstract description 8
- 238000000638 solvent extraction Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 claims description 9
- 230000002452 interceptive effect Effects 0.000 claims description 9
- 238000000605 extraction Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 4
- 230000008878 coupling Effects 0.000 abstract description 11
- 238000010168 coupling process Methods 0.000 abstract description 11
- 238000005859 coupling reaction Methods 0.000 abstract description 11
- 238000013461 design Methods 0.000 description 10
- 238000011161 development Methods 0.000 description 9
- 239000010410 layer Substances 0.000 description 6
- 238000012360 testing method Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000007621 cluster analysis Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/01—Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及软件工程技术领域,具体公开了一种汽车软件模块划分系统、方法及存储介质,其中方法包括如下内容:S1、导入汽车软件的项目配置文件夹和目录结构,从目录结构中获取模块组件对应关系;通过解析项目配置文件获得架构中端口信息;S2、对端口进行预处理,根据端口和软件组件的发送、接收对应关系创建边集,遍历边集获得软件组件之间的交互关系,根据交互关系得到软件组件的依赖矩阵;S3、对依赖矩阵进行处理作为社区发现算法的输入,采用不同社区发现算法对组件进行模块划分,计算划分后的模块度;S4、对比不同社区发现算法得到的模块度和模块数,得出推荐的划分结果。采用本发明的技术方案能够有效的降低组件耦合,提高模块的内聚性。
Description
技术领域
本发明涉及软件工程技术领域,特别涉及一种汽车软件模块划分系统、方法及存储介质。
背景技术
软件模块聚类是软件工程中一个重要而富有挑战性的问题。聚类分析是一种无监督的数据挖掘技术,将一组数据点分组为几个模块。当几个点落在一个模块内时,它们在某些特征上是相似的。相似性和相异性的测量取决于数据点共享相同特征的程度。通常来说,一个好的软件工程是兼具高内聚性和低耦合性的模块结构,具有这种结构的软件系统对于开发人员而言更容易进行开发和后期维护。但是,随着软件的发展,软件的功能变得越发复杂,随之规模增大,导致其模块化结构往往会出现退化的情况,从而持续增加后续软件维护和测试所花费的时间,同时也会消耗人力资源进行维护和测试,增加软件开发的成本。
此外,汽车嵌入式系统是汽车的安全关键系统,汽车软件开发必须在整个开发周期中保持着高安全的规范标准。为满足这些安全规范和复杂的功能要求,汽车软件采用基于模型的软件开发方式。在实际的应用当中,基于模型的软件开发通常采用正向开发流程(如经典的V模型),以保证开发的高效率和软件的高质量。正向开发过程定义了开发和测试的不同阶段,包括需求分析、架构设计(高级设计)、详细设计(低级设计)、代码开发、软件测试等等。成功的软件应用程序注定要不断地进化和发展,同时随着软件应用程序的发展和增长,其架构也在发展。相对于实现的物理体系结构,概念体系结构经常变得不准确。因此在软件开发生命周期中,软件架构设计阶段是最重要的阶段之一,因为它有助于实现软件重用,并对于后续的详细设计和编程具有指导意义。汽车软件架构设计将一个软件项目划分为多个模块,各模块下包含多个软件组件,并定义这些软件组件之间的交互关系,基于该交互关系便能很好的进行模块聚类,从而对汽车软件架构的模块设计进行重构。
随着技术的发展,由于人们对于汽车软件工程所包含的功能和特性的要求逐渐增加,软件系统从简单的单层或双层结构发展到多层体系结构,导致汽车软件应用程序的规模急剧增加,同时这反过来又导致这些汽车应用程序的模块数量增加,从而影响汽车软件的模块化。这导致工程师在设计架构时对于模块的设计主要基于主观的经验,可能会有偏差。同时,影响汽车软件架构度量质量的主要因素之一是汽车软件架构中组件之间的耦合性较大,如果能够降低耦合性、实现高内聚便能有效提升汽车软件的质量。
为此,需要一种能够有效的降低组件耦合,提高模块的内聚性,满足软件工程“高内聚低耦合”要求的汽车软件模块划分系统、方法及存储介质。
发明内容
本发明的目的之一在于,提供了一种汽车软件模块划分方法,能够有效的降低组件耦合,提高模块的内聚性。
为了解决上述技术问题,本申请提供如下技术方案:
一种汽车软件模块划分方法,包括如下内容:
S1、导入文件提取架构元素:导入汽车软件的项目配置文件夹和目录结构,从目录结构中获取模块组件对应关系;
通过解析项目配置文件获得架构中所有的软件组件以及每个软件组件所包含的端口,还根据解析出的节点值为端口赋予属性,整理得到包括端口信息和模块组件对应关系的架构元素;
S2、构建软件组件交互关系:根据提取出的架构元素,汇总端口集合,对端口进行预处理,根据端口和软件组件的发送、接收对应关系创建边集,遍历边集获得软件组件之间的交互关系,根据交互关系得到软件组件的依赖矩阵;
S3、进行模块划分:对依赖矩阵进行处理作为社区发现算法的输入,采用不同社区发现算法对组件进行模块划分,计算划分后的模块度;
S4、对比聚类前后架构情况:对比不同社区发现算法得到的模块度和模块数,得出推荐的划分结果。
进一步,所述步骤S3中,分别采用社区发现算法中的GN算法和CNM算法对组件进行模块划分,计算划分后的模块度;
步骤S4中,对比GN算法和CNM算法得到的模块度和模块数,得出推荐的划分结果。
进一步,所述步骤S4中,还将推荐划分方式和划分前的初始汽车软件架构进行对比,对比项包括模块度、模块数、各模块包含组件情况。
进一步,所述步骤S1具体包括:
读取汽车软件的目录结构,根据目录结构中,每个模块文件夹下包含的软件组件,得到模块组件对应关系,根据模块组件对应关系,生成模块关系映射表格;
读取汽车软件的项目配置文件夹;项目配置文件夹中包含多个xml文件,每个xml文件对应汽车软件架构中的一个软件组件;通过递归获取项目配置文件夹中所有的xml文件,获取xml文件的xml文档对象;查找xml文档对象中的指定节点,并递归查找指定节点下的所有子节点;根据子节点的节点名判断所属属性,将子节点的节点值赋予属性;整理节点的属性,根据节点的属性赋予端口属性,得到端口信息。
进一步,所述步骤S1中,属性包括所在软件组件名称、端口名称、端口类型、接口以及接口类型。
进一步,所述步骤S2具体包括:
S201、获得架构元素中的端口信息后,根据端口信息汇总端口集合,根据端口的元素属性划分为提供端口或为需求端口,分别为提供端口添加pp_前缀,为需求端口添加rp_前缀,将预处理后的端口及其元素属性汇总,形成端口集合;
S202、依据端口的名称进行排序;
S203、创建N个集合对具有相同名称的端口进行保存,遍历集合中的每个端口,若端口的前缀为pp_,则将该端口所在的软件组件标记为发送组件,将集合中的其他软件组件标记为接收组件;
S204、根据端口和软件组件的发送、接收对应关系创建边集,遍历边集获得软件组件之间的交互关系,得到软件组件的依赖矩阵。
进一步,所述步骤S3具体包括:
对依赖矩阵进行处理,将依赖矩阵中所有的软件组件以及软件组件之间的交互关系抽象成网络结构,将依赖矩阵中的非0值作为软件组件节点之间的边;
采用GN算法,遍历网络结构,找出网络结构中每一个软件组件节点到其他软件组件节点的最短路径,遍历网络结构中的边,统计所有最短路径经过每条边的次数作为每条边的边介数,找到边介数最大的边将其移除网络结构,重新计算移除后网络结构中剩余边的边介数,并保存当前的划分情况与模块度,重复以上两步操作,直到网络结构中每个软件组件节点都为一个独立的模块,选取每次划分后模块度最大的划分结果作为最终的划分结果;
采用CNM算法,将网络结构中的每个顶点都作为一个单独的模块,合并使得目前网络结构的模块度的增值最大的社区对;当网络结构中的所有节点属于同一社区时,则停止合并;得到一个树图,树图中的叶子节点表示网络结构中的顶点,每一层对应网络结构的某一划分过程,从所有层次划分中选择模块度值最大的划分为最终的划分结果。
进一步,所述步骤S4中,选择模块度更大的划分结果作为推荐划分结果。
本发明的目的之二,提供一种汽车软件模块划分系统,包括:
元素提取模块,用于获取汽车软件的项目配置文件夹和目录结构,从目录结构中获取模块组件对应关系;
还用于通过解析项目配置文件获得架构中所有的软件组件以及每个软件组件所包含的端口,还根据解析出的节点值为端口赋予属性,整理得到包括端口信息和模块组件对应关系的架构元素;
交互关系分析模块,用于根据提取出的架构元素,汇总端口集合,对端口进行预处理,根据端口和软件组件的发送、接收对应关系创建边集,遍历边集获得软件组件之间的交互关系,根据交互关系得到软件组件的依赖矩阵;
划分模块,用于对依赖矩阵进行处理作为社区发现算法的输入,分别采用社区发现算法中的GN算法和CNM算法对组件进行模块划分,计算划分后的模块度;
对比模块,用于对比GN算法和CNM算法得到的模块度和模块数,得出推荐的划分结果;还用于将推荐划分方式和划分前的初始汽车软件架构进行对比,对比项包括模块度、模块数、各模块包含组件情况。
本发明的目的之三在于,提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
在当前的汽车领域对汽车软件组件进行模块划分通常为工程师根据经验进行人工划分,欠缺在内聚性和耦合性方面的考虑。本方案采用社区发现算法,基于汽车软件组件的交互关系对汽车软件架构进行重构,得到的模块划分结果比工程师人为划分的模块更加合理,能有效的降低组件耦合,提高模块的内聚性,为架构工程师提供参考,满足软件工程“高内聚低耦合”的要求,从而缩短开发周期,提高开发效率,有效提高汽车软件系统的质量。
附图说明
图1为一种汽车软件模块划分方法实施例的流程图;
图2为一种汽车软件模块划分方法实施例中步骤S1导入文件提取架构元素的流程图;
图3为一种汽车软件模块划分方法实施例中步骤S2构建软件组件交互关系的流程图;
图4为一种汽车软件模块划分方法实施例步骤S3中采用GN算法进行模块划分的流程图;
图5为一种汽车软件模块划分方法实施例中采用CNM算法进行模块划分的流程图;
图6为一种汽车软件模块划分方法实施例中步骤S4对比聚类前后架构情况的流程图;
图7为一种汽车软件模块划分方法实施例中模块划分结构展示示意图;
图8为一种汽车软件模块划分方法实施例中聚类报告展示示意图。
具体实施方式
下面通过具体实施方式进一步详细说明:
实施例
如图1所示,本实施例的一种汽车软件模块划分方法,包括如下内容:
S1、导入文件提取架构元素:导入汽车软件的项目配置文件夹和目录结构,从目录结构中获取模块组件对应关系;
通过解析项目配置文件获得架构中所有的软件组件以及每个软件组件所包含的端口,还根据解析出的节点值为端口赋予属性,整理得到包括端口信息和模块组件对应关系的架构元素。
具体的,如图2所示,读取汽车软件的目录结构,根据目录结构中,每个模块文件夹下包含的软件组件,得到模块组件对应关系,根据模块组件对应关系,生成模块关系映射表格。
读取汽车软件的项目配置文件夹;项目配置文件夹中包含多个xml文件,本实施例中为arxml(AUTOSAR xml)文件;每个xml文件对应汽车软件架构中的一个软件组件。通过递归获取项目配置文件夹中所有的xml文件,获取xml文件的xml文档对象;xml文档对象是将xml文件转换为一个对象模型的集合,用树这种数据结构对信息进行储存。查找xml文档对象中的指定节点,本实施例中,指定节点为标签名称为“PORTS”的节点(查找“PORTS”节点是为了在xml文档中找到软件组件所包含的端口信息),并递归查找“PORTS”节点下的所有子节点;根据子节点的节点名判断所属属性,并将子节点的节点值赋予属性;整理节点的属性,根据节点的属性赋予端口属性,得到端口信息。
本实施例中,架构中的软件组件包含多个端口,得到端口的5个属性后,将对应的值作为参数传给端口类,为每个端口类赋予对应的属性值。架构中的一个端口对应一个代码中的端口类,只是在代码上增加了5个属性。
本实施例中,每一个端口包括所在软件组件名称、端口名称、端口类型、接口以及接口类型5个属性(由于端口只定义了信息传递的方向,因此AUTOSAR中利用接口来定义端口的属性)。
在查找到“PORTS”节点后,根据子节点的标签名称进行判断。首先arxml文件的文件名即为软件组件名称,“PORTS”节点的子节点为端口类型节点,例如“P-PORT-PROTOTYPE”为提供端口,若该子节点标签名为“R-PORT-PROTOTYPE”,表示该端口为需求端口。
端口类型节点的子节点中,子节点名为“SHORT-NAME”的节点值为端口名称,子节点名为“PROVIDED-INTERFACE-TREF”或“REQUIRED-INTERFACE-TREF”是接口节点,该节点的节点值为接口名称,DEST值为接口类型。
S2、构建软件组件交互关系:根据提取出的架构元素,汇总端口集合,对端口进行预处理,根据端口和软件组件的发送、接收对应关系创建边集,由于软件组件之间是通过端口进行信息传递的,遍历边集获得软件组件之间的交互关系,从而得到软件组件的依赖矩阵。
具体的,如图3所示,S201、获得架构元素中的端口信息后,根据端口信息汇总端口集合,对端口进行预处理。本实施例中,根据端口的元素属性划分为提供端口或为需求端口,分别为提供端口添加pp_前缀,为需求端口添加rp_前缀,将预处理后的端口及其元素属性汇总,形成端口集合。端口集合如表1所示:
表1端口集合表
组件名称 | 端口名称 | 端口类型 | 接口 | 接口类型 |
swc1 | pp_s1 | PPort | s1 | C/S |
swc1 | rp_s2 | RPort | s2 | S/R |
swc1 | rp_s4 | RPort | s4 | S/R |
swc2 | pp_s2 | PPort | s2 | S/R |
swc2 | pp_s3 | PPort | s3 | S/R |
swc3 | rp_s1 | RPort | s1 | C/S |
swc3 | rp_s3 | RPort | s3 | S/R |
swc3 | pp_s4 | PPort | s4 | S/R |
S202、依据端口的名称进行排序,便于后续遍历操作。本实施例中,名称不包含添加的前缀。
S203、创建N个集合对具有相同名称的端口进行保存,遍历集合中的每个端口,若端口的前缀为pp_,则将该端口所在的软件组件标记为发送组件,将集合中的其他软件组件标记为接收组件;
S204、根据上述端口和软件组件的发送、接收对应关系创建边集,遍历边集获得软件组件之间的交互关系,得到软件组件的依赖矩阵。依赖矩阵中的值表示软件组件交互关系的紧密程度。边集如表2所示,依赖矩阵如表3所示。获得架构元素中的软件组件信息。本实施例中,软件组件信息指软件组件中包含的端口数、组件的出入度以及所在模块,其中端口数是根据端口的组件名称属性进行统计,出入度根据依赖矩阵中的值得到,所在模块根据模块关系映射表格得到。
表2边集表
发送组件 | 接收组件 | 端口 | |
1 | swc1 | swc3 | pp_s1 |
2 | swc2 | swc1 | pp_s2 |
3 | swc2 | swc3 | pp_s3 |
4 | swc3 | swc1 | pp_s4 |
表3组件依赖矩阵
swc1 | swc2 | swc3 | |
swc1 | 0 | 0 | 1 |
swc2 | 1 | 0 | 1 |
swc3 | 1 | 0 | 0 |
S3、采用社区发现算法进行模块划分:获得依赖矩阵后,对依赖矩阵进行处理作为社区发现算法的输入,分别采用社区发现算法中的GN算法和CNM算法对组件进行模块划分,同时计算划分后的模块度,作为评价模块划分好坏的标准。
本实施例在进行模块划分时,使用模块度Q来评价模块划分的好坏,当Q越接近1时,表示该结构中社区结构越明显,社区划分情况越好,划分出的社区内部连接越紧密。当Q为0.3~0.7时,证明社区划分效果较好。
具体的,对依赖矩阵进行处理,将依赖矩阵中所有的软件组件以及软件组件之间的交互关系抽象成网络结构,将依赖矩阵中的非0值作为软件组件节点之间的边。本实施例选择自顶向下和自底向上两种社区发现算法,分别为基于网络边介数的社区检测(GN算法)和贪婪优化算法(CNM算法)。
如图4所示,采用GN算法,遍历网络结构,找出网络结构中每一个软件组件节点到其他软件组件节点的最短路径,遍历网络结构中的边,统计所有最短路径经过每条边的次数作为每条边的边介数,找到边介数最大的边将其移除网络结构,重新计算移除后网络结构中剩余边的边介数,并保存当前的划分情况与模块度。重复以上两步操作,直到网络结构中每个软件组件节点都为一个独立的模块。选取每次划分后模块度最大的划分结果作为最终的划分结果。
如图5所示,采用CNM算法,将网络结构中的每个顶点都看作是一个单独的模块,然后合并使得目前网络结构的模块度Q的增值最大的社区对;当网络结构中的所有节点属于同一社区时,则停止合并。最终将得到一个树图,即树的叶子节点表示网络结构中的顶点,树的每一层对应着网络结构的某个具体划分过程,从所有层次划分中选择模块度值最大的划分为最终的划分结果。
两种算法得到的模块划分结果会略有不同,本实施例使用上述两种算法,可以给架构工程师提供更加多样性的选择与参考。
S4、对比聚类前后架构情况:对比GN算法和CNM算法得到的模块度和模块数,得出推荐的划分方式,从而将推荐划分方式和划分前的初始汽车软件架构进行多方位对比,包括模块度、模块数、各模块包含组件情况。
如图6所示,本实施例将上一步中得到的两种模块划分结果以图文对应的形式进行展示,同时通过对比两种算法得到的模块度和模块数,选择模块度更大的划分结构作为推荐划分结果。
其次将推荐划分结果与划分前初始汽车软件架构的模块情况,从模块度、模块数、各模块包含的软件组件情况进行多方位对比,形成聚类报告,供架构设计师参考。
基于上述汽车软件模块划分方法,本实施例还提供汽车软件模块划分系统,包括:
元素提取模块,用于获取汽车软件的项目配置文件夹和目录结构,从目录结构中获取模块组件对应关系;
还用于通过解析项目配置文件获得架构中所有的软件组件以及每个软件组件所包含的端口,还根据解析出的节点值为端口赋予属性,整理得到包括端口信息和模块组件对应关系的架构元素;
交互关系分析模块,用于根据提取出的架构元素,汇总端口集合,对端口进行预处理,根据端口和软件组件的发送、接收对应关系创建边集,遍历边集获得软件组件之间的交互关系,根据交互关系得到软件组件的依赖矩阵;
划分模块,用于对依赖矩阵进行处理作为社区发现算法的输入,分别采用社区发现算法中的GN算法和CNM算法对组件进行模块划分,计算划分后的模块度;
对比模块,用于对比GN算法和CNM算法得到的模块度和模块数,得出推荐的划分结果。还用于将推荐划分方式和划分前的初始汽车软件架构进行对比,对比项包括模块度、模块数、各模块包含组件情况。
上述汽车软件模块划分方法如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一存储介质中,该计算机程序在被处理器执行时,可实现上述方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
本实施例实现的具体工具界面展示如图7、8所示。
本实施例的方案通过解析汽车软件项目配置文件对汽车软件架构中的软件组件进行模块划分,实现架构重构的自动化,通过参考架构聚类结果重构汽车软件架构,能有效降低软件组件耦合,提高模块内聚性。
以上的仅是本发明的实施例,该发明不限于此实施案例涉及的领域,方案中公知的具体结构及特性等常识在此未作过多描述,所属领域普通技术人员知晓申请日或者优先权日之前发明所属技术领域所有的普通技术知识,能够获知该领域中所有的现有技术,并且具有应用该日期之前常规实验手段的能力,所属领域普通技术人员可以在本申请给出的启示下,结合自身能力完善并实施本方案,一些典型的公知结构或者公知方法不应当成为所属领域普通技术人员实施本申请的障碍。应当指出,对于本领域的技术人员来说,在不脱离本发明结构的前提下,还可以作出若干变形和改进,这些也应该视为本发明的保护范围,这些都不会影响本发明实施的效果和专利的实用性。本申请要求的保护范围应当以其权利要求的内容为准,说明书中的具体实施方式等记载可以用于解释权利要求的内容。
Claims (8)
1.一种汽车软件模块划分方法,其特征在于,包括如下内容:
S1、导入文件提取架构元素:导入汽车软件的项目配置文件夹和目录结构,从目录结构中获取模块组件对应关系;
通过解析项目配置文件获得架构中所有的软件组件以及每个软件组件所包含的端口,还根据解析出的节点值为端口赋予属性,整理得到包括端口信息和模块组件对应关系的架构元素;
S2、构建软件组件交互关系:根据提取出的架构元素,汇总端口集合,对端口进行预处理,根据端口和软件组件的发送、接收对应关系创建边集,遍历边集获得软件组件之间的交互关系,根据交互关系得到软件组件的依赖矩阵;
具体包括:
S201、获得架构元素中的端口信息后,根据端口信息汇总端口集合,根据端口的元素属性划分为提供端口或为需求端口,分别为提供端口添加pp_前缀,为需求端口添加rp_前缀,将预处理后的端口及其元素属性汇总,形成端口集合;
S202、依据端口的名称进行排序;
S203、创建N个集合对具有相同名称的端口进行保存,遍历集合中的每个端口,若端口的前缀为pp_,则将该端口所在的软件组件标记为发送组件,将集合中的其他软件组件标记为接收组件;
S204、根据端口和软件组件的发送、接收对应关系创建边集,遍历边集获得软件组件之间的交互关系,得到软件组件的依赖矩阵;
S3、进行模块划分:对依赖矩阵进行处理作为社区发现算法的输入,采用不同社区发现算法对组件进行模块划分,计算划分后的模块度;
具体包括:
对依赖矩阵进行处理,将依赖矩阵中所有的软件组件以及软件组件之间的交互关系抽象成网络结构,将依赖矩阵中的非0值作为软件组件节点之间的边;
采用GN算法,遍历网络结构,找出网络结构中每一个软件组件节点到其他软件组件节点的最短路径,遍历网络结构中的边,统计所有最短路径经过每条边的次数作为每条边的边介数,找到边介数最大的边将其移除网络结构,重新计算移除后网络结构中剩余边的边介数,并保存当前的划分情况与模块度,重复以上操作,直到网络结构中每个软件组件节点都为一个独立的模块,选取每次划分后模块度最大的划分结果作为最终的划分结果;
采用CNM算法,将网络结构中的每个顶点都作为一个单独的模块,合并使得目前网络结构的模块度的增值最大的社区对;当网络结构中的所有节点属于同一社区时,则停止合并;得到一个树图,树图中的叶子节点表示网络结构中的顶点,每一层对应网络结构的某一划分过程,从所有层次划分中选择模块度值最大的划分为最终的划分结果;
S4、对比聚类前后架构情况:对比不同社区发现算法得到的模块度和模块数,得出推荐的划分结果。
2.根据权利要求1所述的汽车软件模块划分方法,其特征在于:所述步骤S3中,分别采用社区发现算法中的GN算法和CNM算法对组件进行模块划分,计算划分后的模块度;
步骤S4中,对比GN算法和CNM算法得到的模块度和模块数,得出推荐的划分结果。
3.根据权利要求2所述的汽车软件模块划分方法,其特征在于:所述步骤S4中,还将推荐划分方式和划分前的初始汽车软件架构进行对比,对比项包括模块度、模块数、各模块包含组件情况。
4.根据权利要求3所述的汽车软件模块划分方法,其特征在于:所述步骤S1具体包括:
读取汽车软件的目录结构,根据目录结构中,每个模块文件夹下包含的软件组件,得到模块组件对应关系,根据模块组件对应关系,生成模块关系映射表格;
读取汽车软件的项目配置文件夹;项目配置文件夹中包含多个xml文件,每个xml文件对应汽车软件架构中的一个软件组件;通过递归获取项目配置文件夹中所有的xml文件,获取xml文件的xml文档对象;查找xml文档对象中的指定节点,并递归查找指定节点下的所有子节点;根据子节点的节点名判断所属属性,将子节点的节点值赋予属性;整理节点的属性,根据节点的属性赋予端口属性,得到端口信息。
5.根据权利要求4所述的汽车软件模块划分方法,其特征在于:所述步骤S1中,属性包括所在软件组件名称、端口名称、端口类型、接口以及接口类型。
6.根据权利要求5所述的汽车软件模块划分方法,其特征在于:所述步骤S4中,选择模块度更大的划分结果作为推荐划分结果。
7.一种汽车软件模块划分系统,其特征在于,包括:
元素提取模块,用于获取汽车软件的项目配置文件夹和目录结构,从目录结构中获取模块组件对应关系;
还用于通过解析项目配置文件获得架构中所有的软件组件以及每个软件组件所包含的端口,还根据解析出的节点值为端口赋予属性,整理得到包括端口信息和模块组件对应关系的架构元素;
交互关系分析模块,用于根据提取出的架构元素,汇总端口集合,对端口进行预处理,根据端口和软件组件的发送、接收对应关系创建边集,遍历边集获得软件组件之间的交互关系,根据交互关系得到软件组件的依赖矩阵;具体包括:
用于获得架构元素中的端口信息后,根据端口信息汇总端口集合,根据端口的元素属性划分为提供端口或为需求端口,分别为提供端口添加pp_前缀,为需求端口添加rp_前缀,将预处理后的端口及其元素属性汇总,形成端口集合;
还用于依据端口的名称进行排序;
还用于创建N个集合对具有相同名称的端口进行保存,遍历集合中的每个端口,若端口的前缀为pp_,则将该端口所在的软件组件标记为发送组件,将集合中的其他软件组件标记为接收组件;
还用于根据端口和软件组件的发送、接收对应关系创建边集,遍历边集获得软件组件之间的交互关系,得到软件组件的依赖矩阵;
划分模块,用于对依赖矩阵进行处理作为社区发现算法的输入,分别采用社区发现算法中的GN算法和CNM算法对组件进行模块划分,计算划分后的模块度;具体包括:
用于对依赖矩阵进行处理,将依赖矩阵中所有的软件组件以及软件组件之间的交互关系抽象成网络结构,将依赖矩阵中的非0值作为软件组件节点之间的边;
还用于采用GN算法,遍历网络结构,找出网络结构中每一个软件组件节点到其他软件组件节点的最短路径,遍历网络结构中的边,统计所有最短路径经过每条边的次数作为每条边的边介数,找到边介数最大的边将其移除网络结构,重新计算移除后网络结构中剩余边的边介数,并保存当前的划分情况与模块度,重复以上操作,直到网络结构中每个软件组件节点都为一个独立的模块,选取每次划分后模块度最大的划分结果作为最终的划分结果;
还用于采用CNM算法,将网络结构中的每个顶点都作为一个单独的模块,合并使得目前网络结构的模块度的增值最大的社区对;当网络结构中的所有节点属于同一社区时,则停止合并;得到一个树图,树图中的叶子节点表示网络结构中的顶点,每一层对应网络结构的某一划分过程,从所有层次划分中选择模块度值最大的划分为最终的划分结果;
对比模块,用于对比GN算法和CNM算法得到的模块度和模块数,得出推荐的划分结果;还用于将推荐划分方式和划分前的初始汽车软件架构进行对比,对比项包括模块度、模块数、各模块包含组件情况。
8.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-6任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310775195.6A CN116909542B (zh) | 2023-06-28 | 2023-06-28 | 一种汽车软件模块划分系统、方法及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310775195.6A CN116909542B (zh) | 2023-06-28 | 2023-06-28 | 一种汽车软件模块划分系统、方法及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116909542A CN116909542A (zh) | 2023-10-20 |
CN116909542B true CN116909542B (zh) | 2024-05-17 |
Family
ID=88361977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310775195.6A Active CN116909542B (zh) | 2023-06-28 | 2023-06-28 | 一种汽车软件模块划分系统、方法及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116909542B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010000307A1 (en) * | 2008-06-30 | 2010-01-07 | Telefonaktiebolaget Lm Ericsson (Publ) | Apparatus and modules for an optical network |
CN102812486A (zh) * | 2010-03-25 | 2012-12-05 | 诺基亚公司 | 根据群体行为提供个性化信息资源推荐的方法和设备 |
WO2016018101A1 (ko) * | 2014-07-31 | 2016-02-04 | 엘지전자 주식회사 | 채널 추정을 수행하기 위한 방법 및 이를 위한 장치 |
CN107343382A (zh) * | 2014-09-02 | 2017-11-10 | Mbl有限公司 | 在具有电子微操纵库的仪器化环境中执行特定领域应用的机器人操纵方法和系统 |
CN109669999A (zh) * | 2018-11-09 | 2019-04-23 | 口碑(上海)信息技术有限公司 | 兴趣区域的生成方法及装置、存储介质、电子装置 |
CN113269467A (zh) * | 2021-06-15 | 2021-08-17 | 中国电信股份有限公司 | 基于图分割的区域规划方法及装置、存储介质、电子设备 |
CN113612749A (zh) * | 2021-07-27 | 2021-11-05 | 华中科技大学 | 一种面向入侵行为的溯源数据聚类方法及装置 |
CN116028025A (zh) * | 2023-02-28 | 2023-04-28 | 重庆长安汽车股份有限公司 | 一种汽车服务化模型框架生成方法、装置、设备及介质 |
CN116307078A (zh) * | 2023-02-03 | 2023-06-23 | 腾讯科技(深圳)有限公司 | 账户标签预测方法、装置、存储介质及电子设备 |
-
2023
- 2023-06-28 CN CN202310775195.6A patent/CN116909542B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010000307A1 (en) * | 2008-06-30 | 2010-01-07 | Telefonaktiebolaget Lm Ericsson (Publ) | Apparatus and modules for an optical network |
CN102812486A (zh) * | 2010-03-25 | 2012-12-05 | 诺基亚公司 | 根据群体行为提供个性化信息资源推荐的方法和设备 |
WO2016018101A1 (ko) * | 2014-07-31 | 2016-02-04 | 엘지전자 주식회사 | 채널 추정을 수행하기 위한 방법 및 이를 위한 장치 |
CN107343382A (zh) * | 2014-09-02 | 2017-11-10 | Mbl有限公司 | 在具有电子微操纵库的仪器化环境中执行特定领域应用的机器人操纵方法和系统 |
CN109669999A (zh) * | 2018-11-09 | 2019-04-23 | 口碑(上海)信息技术有限公司 | 兴趣区域的生成方法及装置、存储介质、电子装置 |
CN113269467A (zh) * | 2021-06-15 | 2021-08-17 | 中国电信股份有限公司 | 基于图分割的区域规划方法及装置、存储介质、电子设备 |
CN113612749A (zh) * | 2021-07-27 | 2021-11-05 | 华中科技大学 | 一种面向入侵行为的溯源数据聚类方法及装置 |
CN116307078A (zh) * | 2023-02-03 | 2023-06-23 | 腾讯科技(深圳)有限公司 | 账户标签预测方法、装置、存储介质及电子设备 |
CN116028025A (zh) * | 2023-02-28 | 2023-04-28 | 重庆长安汽车股份有限公司 | 一种汽车服务化模型框架生成方法、装置、设备及介质 |
Non-Patent Citations (2)
Title |
---|
Cupid: Congestion-free consistent data plane update in software defined networks;W. Wang 等;《IEEE INFOCOM 2016 - The 35th Annual IEEE International Conference on Computer Communications 》;20160728;1-9 * |
基于工程车网络控制系统的软件模块化研究;皮凯俊 等;《技术与市场》;20140422;第04卷(第04期);18-19 * |
Also Published As
Publication number | Publication date |
---|---|
CN116909542A (zh) | 2023-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10296307B2 (en) | Method and system for template extraction based on source code similarity | |
Valdes et al. | The recognition of series parallel digraphs | |
JP3323180B2 (ja) | 決定木変更方法およびデータマイニング装置 | |
US8126911B2 (en) | System and method for content-based partitioning and mining | |
CN103412853B (zh) | 一种针对文档转换器的测试用例自动生成方法 | |
KR20180069877A (ko) | 머신 러닝 기반 네트워크 모델 구축 방법 및 장치 | |
Ekanayake et al. | Slice, mine and dice: Complexity-aware automated discovery of business process models | |
CN106557307B (zh) | 业务数据的处理方法及处理系统 | |
EP3029581B1 (en) | Processing program, processing system, and processing method | |
CN109062565B (zh) | 数字卫星aos协议遥测源代码人工智能书写方法 | |
CN111159428A (zh) | 经济领域知识图谱事件关系自动抽取的方法和装置 | |
CN116415206B (zh) | 运营商多数据融合方法、系统、电子设备及计算机存储介质 | |
Saha et al. | Correlation clustering with same-cluster queries bounded by optimal cost | |
CN112506999B (zh) | 基于云计算和人工智能的大数据挖掘方法及数字内容服务器 | |
CN116909542B (zh) | 一种汽车软件模块划分系统、方法及存储介质 | |
US20040163044A1 (en) | Method and apparatus for information factoring | |
CN114330173B (zh) | 边界节点连接关系获取方法、装置、设备和存储介质 | |
CN115905353A (zh) | 关联数据导出、导入方法、装置、设备及存储介质 | |
CN115756395A (zh) | 一种基于注解配置的多维对象数据统计方法 | |
CN112486481B (zh) | 多模块分层架构实现方法、装置、电子设备及介质 | |
CN114610978A (zh) | 基于有序事件列表的复杂事件匹配方法、装置及存储介质 | |
CN114385845A (zh) | 基于图聚类的影像分类管理方法及系统 | |
CN109885953B (zh) | 一种模型构件的映射方法和装置 | |
CN113391812A (zh) | 应用程序模块的分析方法、装置以及分析工具 | |
Gold et al. | A flexible method for segmentation in concept assignment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |