一种上下游软件系统间耦合面的建模与识别方法技术方案

技术编号:36536881 阅读:11 留言:0更新日期:2023-02-01 16:23
本发明专利技术公开了一种上下游软件系统之间耦合面构建及识别方法,首先基于上游和下游项目的实体依赖信息,得到各项目版本的依赖图,然后基于下游及上游项目代码仓的提交历史,通过git blame命令对组成实体的commit进行历史回溯确定commit的归属,同时使用Refactor

【技术实现步骤摘要】
一种上下游软件系统间耦合面的建模与识别方法


[0001]本专利技术属于软件演化及再开发领域,涉及一种上下游软件系统间耦合面的建模与识别方法。

技术介绍

[0002]上下游软件系统之间耦合面,是一种下游项目耦合上游系统时产生的依赖子图。下游项目由上游开发的上游源代码和下游开发的大量代码组成,故将下游建模为具有不同属性的依赖图,并将上下游软件系统之间耦合面定义为子图。在安卓操作系统生态下的上下游软件系统之间耦合面举例:移动设备供应商开发的基于谷歌安卓的定制安卓操作系统,即安卓开源项目(AOSP)中,以增强安卓操作系统功能,支持新功能,并添加定制功能。AOSP的定制系统包括MiUI、MagicUI、LineageOS等。定制的安卓系统通常被称为下游项目,而谷歌维护的AOSP被称为上游。除了独立的开发之外,下游还需要定期地将来自上游的新版本的变化合并到它们的开发分支中,并与上游保持同步。由于要合并大量Commit,如果自动合并操作失败,VCS(版本控制系统)如Git将报告大量的代码冲突(命名为文本冲突)。
[0003]目前,对于下游是如何依赖于上游的,以及代码冲突是如何与这种耦合相关联的仍缺少研究,已有工作关注于上游和下游合并造成的冲突,调查项目的历史提交和上游项目的提交之间的重叠变化,同时复现下游合并的变化,揭示了代码冲突对安卓移动应用程序的影响,但并未从系统架构角度研究具体的耦合形式,以及不同的耦合形式带来的问题与影响。最后还有一个工业案例研究调查了在Microsoft Edge开发的背景下,上游合并导致的冲突问题。然而这些工作都是通过提交分析来研究合并冲突的。

技术实现思路

[0004]本专利技术的目的在于克服上述现有研究对下游耦合上游,以及对代码冲突与这种耦合的关联性的研究的缺失,提供一种上下游软件系统之间耦合面构建与识别的方法,其特征在于,包括:
[0005]依赖抽取模块,获取上游项目与下游项目的实体依赖图;归属方识别模块,根据项目仓库中的版本信息及提交历史,得到下游项目中实体的归属方;侵入式修改识别模块,根据组成实体commit信息归属,识别发生侵入式修改操作的上游实体;限制级别标定模块,用于对依赖图中各实体进行限制级别标定。上下游软件系统之间耦合面识别模块,根据所述上下游软件系统之间耦合面规则进行项目上下游软件系统之间耦合面识别。
[0006]为达到上述目的,本专利技术采用以下技术方案予以实现:
[0007]上下游软件系统之间耦合面的建模包括以下部分:
[0008]S1:上游和下游项目的依赖图;
[0009]S2:下游项目对上游上游实体的侵入式修改和归属方;
[0010]S3:上游项目和下游项目实体的限制级别;
[0011]S4:下游项目合并上游项目新版本时产生的文本冲突。
[0012]上下游软件系统之间耦合面识别方法包括以下步骤:
[0013]S201:使用ENRE工具获取上游项目与下游项目的实体依赖图;
[0014]S202:根据项目仓库中的版本信息及提交历史,得到下游项目中实体的归属方;
[0015]S203:根据组成实体commit信息归属,结合依赖图分析、Refactor

Miner和git blame结果来检测各种修改操作,识别发生侵入式修改操作的实体;
[0016]S204:根据项目的限制级别信息,得到依赖图中各实体的限制级别。
[0017]与现有技术相比,本专利技术具有以下有益效果:
[0018]本专利技术上下游软件系统之间耦合面构建及识别方法,首先基于上游和下游项目的实体依赖信息,借助ENRE工具构建完备的上下游软件系统耦合模型,包含信息全面,从实体依赖的角度解读下游耦合上游的具体形式,得到各项目版本的依赖图,然后基于下游及上游项目代码仓的提交历史,通过git blame命令对组成实体的commit进行历史回溯确定commit的归属,同时使用Refactor

Miner检测在项目演进和耦合过程中发生的重构信息,对git blame回溯信息进行校验,使得检测结果更加精确,提高结果可信度,得到各实体更为完整的变更历史,综合实体的commit组成,得到项目依赖图中各实体的归属方信息;进一步的,随着安卓系统的演进,谷歌的上游安卓系统(自Android 9以来)通过白名单/灰名单/黑名单提出非SDK接口的限制,以限制非SDK(即隐藏)接口的利用,以维护用户隐私和系统的接口稳定性,本专利技术将接口的限制级别与实体信息进行结合,输出更为完备的限制级别实体依赖图;最后根据上述实体的归属方信息,对发生侵入式修改的实体进行标定,输出上下游软件系统之间耦合面,该切面包含上述实体依赖信息,归属方信息,接口限制级别信息,得到下游依赖上游的具体形式。
附图说明
[0019]图1为本专利技术实施例的上下游软件系统之间耦合面识别方法模型框图,其中(a)为实体依赖图,(b)为带有侵入式修改标记的实体依赖图,(c)为带有限制级别标定的实体依赖图,(d)为结合文本冲突信息的实体依赖图。
[0020]图2为本专利技术实施例的上下游软件系统之间耦合面识别方法流程图;
[0021]图3为本专利技术实施例的实体限制级别解析图。
具体实施方式
[0022]为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分的实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。
[0023]需要说明的是,本专利技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本专利技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于
清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0024]下面结合附图对本专利技术做进一步详细描述:
[0025]参见图1,本专利技术一实施例中,提供一种上下游软件系统之间耦合面建模。
[0026]具体的,该上下游软件系统之间耦合面模型包括以下部分:
[0027]S1:上游和下游项目的依赖图;
[0028]S2:下游项目对上游上游实体的侵入式修改;
[0029]S3:上游项目和下游项目实体的限制级别;
[0030]S4:下游项目合并上游项目新版本时产生的文本冲突。
[0031]具体的,本专利技术上下游软件系统之间耦合面(DepFCD)模型通过将下游扩展项目表示为具有不同属性的依赖图,即将上下游软件系本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种上下游软件系统之间耦合面建模,其特征在于,包括:上游和下游项目的依赖图模型,顶点表示实体,边表示依赖;下游项目对上游上游实体的侵入式修改和实体归属方表示为图模型的属性信息;上游项目和下游项目实体的访问限制级别表示为图模型的属性信息;下游项目合并上游项目新版本时产生的文本冲突表示为图模型的附属信息。2.根据权利要求1所述的上下游软件系统之间耦合面建模,其特征在于,所述根据所述项目代码和提交历史,得到下游项目耦合上游的耦合面包括:将各个下游项目耦合不同版本上游项目的源代码转为抽象语法树,并使用抽象语法树抽取项目源代码中实体和依赖信息;获取上游项目和下游项目各版本提交历史中每条commit的归属方,并根据项目的源代码中实体的属性信息以及提交历史中每条commit修改的实体信息,获取提交历史中每条commit中修改的实体,得到各实体的归属信息。根据所述各实体对应的commit组成,判断上游实体是否发生了侵入式修改,是否是被上游弃用的过时的实体,从而将上游实体分为三类:活跃的上游实体(actively native),侵入式修改的上游实体(intrusively native),以及被上游弃用的过时的上游实体(obsoletely native)。3.根据权利要求1所述的上下游软件系统之间耦合面建模,其特征在于,根据上游安卓提出的非SDK接口的限制,得到实体的依赖限制级别信息包括:对于安卓操作系统类别的项目,将代码仓clone到本地后,在本地仓中执行“mout/soong/hiddenapi/hiddenapi

flags.csv”命令,获取项目的实体的访问限制级别(restriction level),并根据实体的属性信息对所述实体进行限制级别标定,得到项目的限制级依赖。4.根据权利要求1所述的上下游软件系统之间耦合面建模,其特征在于,所述根据所述项目代码和提交历史,得到下游项目耦合上游的耦合面包括:根据各实体的归属方信息以及commit组成,判断下游软件系统的实体依赖图中依赖边所连接的实体归属方,若一条依赖边连接着一个扩展实体和一个上游实体,则判定该边在耦合面上,从而得到下游项目耦合上游项目的耦合面子图模型。5.根据权利要求1所述的上下游软件系统之间耦合面建模,其特征在于,所述根据所述耦合面信息,结合合并冲突的发生情况包括:当存在文本合并冲突时,获取发生冲突的具体对应实体,并关注耦合面上实体及依赖与发生文本冲突实体的关联性。6.一种上下游软件系统之间耦合面识别方法,其特征在于,包括:获取上游项目与下游项目的实体依赖图;根据项目仓库中的版本信息及提交历史,检测下游项目中实体的归属方;根据组成实体commit信息归属,识别实体发生侵入式修改的操作;根据项目的限制级别信息和代码实...

【专利技术属性】
技术研发人员:晋武侠戴铱彤郑建国刘烃范铭
申请(专利权)人:西安交通大学
类型:发明
国别省市:

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

1