Module Integration Using Graph Grammars (MIGRATE) - Cravo, Diogo Raphael; Ribeiro, Leila (Anais do Simpósio Brasileiro de Métodos Formais (SBMF); 2021: Anais do XXIV Simpósio Brasileiro de Métodos Formais, 2021)
Software, whether desktop, mobile or web, is becoming more and more connected. Software development is also becoming more connected with ecosystems comprised of networks of millions of packages. Engineering software today is writing code that weaves together libraries, services and applications. Such fabrics are under constant changes due to both internal requests, e.g. new features, or external demands, e.g. dependency updates. Avoiding integration bugs in this scenario can be a big challenge regardless of common strategies such as testing and versioning. We propose an approach, called Module Integration using Graph Grammars (MIGRATE), to describe/analyze integration points among software modules. We define module nets, a formalism to capture the essential information regarding module integration, whose semantics is defined in terms of graph transformations. This allows us to use the rich theory of graph transformation, specially critical pair analysis, to analyze the coupling among different modules and create warnings in case of possible integration problems. The approach is organized in three phases: (i) transformation of code into module nets (model extraction), (ii) translation of module nets into graph grammars (semantics of integration) and (iii) verification of module integration. We have built a prototype that implements the MIGRATE approach.