【技术实现步骤摘要】
一种微服务软件架构识别与度量方法
本专利技术属于软件测试和软件缺陷预测领域,具体涉及一种微服务软件架构识别与度量方法。
技术介绍
软件架构是系统的骨架,描述的对象是直接构成系统的抽象组件,各组件之间的连接则明确和相对细致地描述组件之间的通信。软件架构风格又称软件架构惯用范型,是描述某一特定应用领域中系统组织方式的惯用范型,为软件设计与开发提供公共的术语空间,促进设计复用与代码复用[1]。软件架构风格多样,典型的软件架构风格包括管道-过滤器风格[2]、面向对象风格[3]、多层结构风格[4]等。随着云计算和大数据技术的发展,微服务因其轻量化、高可扩展性和弹性部署等优势,成为当前被广泛使用的软件架构。软件架构识别与度量一般采用逆向工程恢复软件系统结构,以及组件之间的关系。软件架构恢复通常有三种方法:自顶向下、自底向上和混合方法。自顶向下方法建立设计视图与代码之间的对应关系,对代码进行扫描,检查是否存在对应关系,评价结构是否合理,代表性方式是反射模型。自底向上方法从源代码提取各种不同信息,如依赖信息、模式信息等,然后将相关联的源代码实体聚合为一个组件,从而得到软件架构,如ARMIN、Alborn、DSM等。混合方法结合自顶向下和自底向上两种方法,一方面,来自底层的架构信息可以通过各种技术提取出来,在此基础上恢复出架构视图;另一方面,来自高层的架构信息可以用来校验恢复出来的架构实体是否合理,典型代表有Focus、ManSART[、DiscoTect等。然而,上述研究主要考虑如何恢复软件架构,进而对软件的可维护性、可靠性 ...
【技术保护点】
1.一种微服务软件架构识别与度量方法,其特征在于,包括如下步骤:/n对待检测的原始微服务JAR包进行预处理,将JAR包进行文件目录解构和冗余项过滤;/n根据微服务软件架构特征体系,提取待测软件的微服务规模特征、微服务构件特征和微服务拓扑特征,其中微服务规模特征采用子服务数量作为特征项,构件特征采用服务注册与发现组件、负载均衡组件作为特征项,微服务拓扑特征采用网关组件作为特征项;/n构建微服务软件架构符合度模型,计算待测软件遵循微服务架构的概率,决策得到待测软件是微服务程序的可能性。/n
【技术特征摘要】
1.一种微服务软件架构识别与度量方法,其特征在于,包括如下步骤:
对待检测的原始微服务JAR包进行预处理,将JAR包进行文件目录解构和冗余项过滤;
根据微服务软件架构特征体系,提取待测软件的微服务规模特征、微服务构件特征和微服务拓扑特征,其中微服务规模特征采用子服务数量作为特征项,构件特征采用服务注册与发现组件、负载均衡组件作为特征项,微服务拓扑特征采用网关组件作为特征项;
构建微服务软件架构符合度模型,计算待测软件遵循微服务架构的概率,决策得到待测软件是微服务程序的可能性。
2.根据权利要求1所述的微服务软件架构识别与度量方法,其特征在于,所述文件目录解构的目的是,将编译好的原始微服务JAR包进行软件架构恢复,将JAR包内的文件解构组织成多个子服务的树状结构文件,具体过程是:
将原始微服务JAR包作为最顶层根节点,对应一个顶层文件夹,采用解压缩方法,将原始微服务JAR包内每个子JAR包解构成一个子服务,作为根节点的子节点,并单独生成一个子文件夹存放在顶层文件夹中,子文件夹中包含该子服务的所有字节码和运行依赖包,据此,通过构造软件包的根节点和子节点,完成待测软件文件目录解构。
3.根据权利要求2所述的微服务软件架构识别与度量方法,其特征在于,所述冗余项过滤是从解构出的子服务节点中去除掉依赖型JAR包,具体过程是:
检测JAR包是否存在启动配置文件,如果存在,进一步判断配置文件中是否指定启动类,如果存在启动类,则该JAR包为可执行JAR包,并保持该JAR包的子服务标识;否则该JAR包为依赖型JAR包,去除该JAR包的子服务标识。
4.根据权利要求1所述的微服务软件架构识别与度量方法,其特征在于,所述提取待测软件的微服务规模特征、微服务构件特征和微服务拓扑特征是,采用软件粒度信息提取得到微服务规模特征,采用配置文件信息提取、构建工具信息提取和依赖包静态检测得到微服务构件特征,采用配置文件信息提取和服务间关系提取得到微服务拓扑特征,具体方法为:
①软件粒度信息提取:微服务程序预处理过程中,得到的可执行JAR包即为软件的子服务粒度实体,每个软件粒度实体包含子服务名、子服务路径;
②配置文件信息提取:不同微服务框架采用不同的配置文件,可归纳为xml、yml和properties三种类型,通过配置文件,能够获取到服务名、端口信息,如果服务本身是网关服务,还能提取到路由信息,配置文件信息提取的基本思路是:通过编写配置文件的解析代码,采用正则表达式对配置文件进行命中,并以键值对的形式记录提取的信息;
③构建工具信息提取:微服务工程在构建之前,所需要的依赖包通常无法从工程本身直接检测到,而是在构建之后才被打包引入,通过构建工具能够提取微服务工程的外部依赖,常见的构建工具包括Maven和Gradle,构建工具信息提取的基本思路是:对于Maven构建工具,解析pom.xml文件,其dependencies节点中内容即为引入的第三方依赖;对于Gradle构建工具,解析build.gradle文件,采用正则表达式来匹配外部依赖包;
④依赖包静态检测:检测微服务工程中实际引入的JAR文件,提取基本思路是:经过预处理得到的可执行JAR包,执行JAR解...
【专利技术属性】
技术研发人员:刘亮,王璐璐,冯斌,孟小峰,姜丽,孙靖爽,赵珂,
申请(专利权)人:中国科学院电子学研究所苏州研究院,东南大学,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。