Microservices are becoming the defacto design choice for software architecture. It involves partitioning the software components into finer modules such that the development can happen independently. It also provides natural benefits when deployed on the cloud since resources can be allocated dynamically to necessary components based on demand. Therefore, enterprises as part of their journey to cloud, are increasingly looking to refactor their monolith application into one or more candidate microservices; wherein each service contains a group of software entities (e.g., classes) that are responsible for a common functionality. Graphs are a natural choice to represent a software system. Each software entity can be represented as nodes and its dependencies with other entities as links. Therefore, this problem of refactoring can be viewed as a graph based clustering task. In this work, we propose a novel method to adapt the recent advancements in graph neural networks in the context of code to better understand the software and apply them in the clustering task. In that process, we also identify the outliers in the graph which can be directly mapped to top refactor candidates in the software. Our solution is able to improve state-of-the-art performance compared to works from both software engineering and existing graph representation based techniques.
翻译:微缩服务正在成为软件结构的“自成一体”设计选择。它涉及将软件组件分割成更细的模块,这样可以独立地进行开发。它在云层上部署时也带来自然的好处,因为资源可以动态地分配到基于需求的必要组件。因此,企业作为云的旅程的一部分,正在日益寻求将其单体应用重新纳入一个或更多的候选微缩服务;其中每个服务都包含一组负责共同功能的软件实体(例如,类别)。图表是代表软件系统的自然选择。每个软件实体都可以作为节点代表,其与其他实体作为链接的依附关系。因此,重构的问题可以被视为基于图表的集群任务。在这项工作中,我们提出了一个新的方法,在代码方面调整图形神经网络的最新进展,以更好地了解软件,并将其应用到集群任务中。在这个过程中,我们还确定了图表中的外端,可以直接被映射到软件系统顶端的候选人。我们的解决方案能够改进基于状态的图像显示技术,从软件的工程到现有工程,我们的解决办法可以改进基于状态的图像显示技术。