Abstract
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.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsReferences
Aué, J., Aniche, M., Lobbezoo, M., van Deursen, A.: An exploratory study on faults in web API integration in a large-scale payment company. In: Proceedings of the 40th International Conference on Software Engineering Software Engineering in Practice - ICSE-SEIP 2018, pp. 13–22. ACM Press, Gothenburg, Sweden (2018). https://doi.org/10.1145/3183519.3183537
Bogart, C., Kästner, C., Herbsleb, J., Thung, F.: How to break an API: cost negotiation and community values in three software ecosystems. In: Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering - FSE 2016, pp. 109–120. ACM Press, Seattle, WA, USA (2016). https://doi.org/10.1145/2950290.2950325
Brito, A., Xavier, L., Hora, A., Valente, M.T.: APIDiff: Detecting API breaking changes. In: 2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER). pp. 507–511. IEEE, Campobasso, March 2018. https://doi.org/10.1109/SANER.2018.8330249, http://ieeexplore.ieee.org/document/8330249/
Costa, A., et al.: Verigraph: a system for specification and analysis of graph grammars. In: Ribeiro, L., Lecomte, T. (eds.) Formal Methods: Foundations and Applications, LNCS, pp. 78–94. Springer, Cham (2016). https://doi.org/10.1007/978-3-319-49815-7_5
Cravo, D.R.: Module integration using graph grammars (MIGRATE) (2021). https://lume.ufrgs.br/handle/10183/226284. Accepted 8 2021-28T04:39:53Z
Decan, A., Mens, T., Grosjean, P.: An empirical comparison of dependency network evolution in seven software packaging ecosystems. Empir. Softw. Eng. 24(1), 381–416 (2019). https://doi.org/10.1007/s10664-017-9589-y
Duarte, L.M., Ribeiro, L.: Graph grammar extraction from source code. In: Cavalheiro, S., Fiadeiro, J. (eds.) Formal Methods: Foundations and Applications, LNCS, vol. 10623, pp. 52–69. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-70848-5_5
Ehrig, H. (ed.): Fundamentals of algebraic graph transformation. In: Monographs in Theoretical Computer Science, Springer, Berlin (2006). oCLC: ocm69242087
Foo, D., Chua, H., Yeo, J., Ang, M.Y., Sharma, A.: Efficient static checking of library updates. In: Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering - ESEC/FSE 2018, pp. 791–796. ACM Press, Lake Buena Vista, FL, USA (2018). https://doi.org/10.1145/3236024.3275535
Fowler, M.: Tolerantreader (2011). https://martinfowler.com/bliki/TolerantReader.html
Fowler, M.: Integrationtest (2018). https://martinfowler.com/bliki/IntegrationTest.html
Godefroid, P., Lehmann, D., Polishchuk, M.: Differential regression testing for REST APIs. In: Proceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis. pp. 312–323. ACM, Virtual Event USA, July 2020. https://doi.org/10.1145/3395363.3397374
Grochau Azzi, G., Corradini, A., Ribeiro, L.: On the essence and initiality of conflicts in M-adhesive transformation systems. J. Log. Algebr. Methods Program. 109, 100482 (2019). https://doi.org/10.1016/j.jlamp.2019.100482, https://www.sciencedirect.com/science/article/pii/S2352220818301639
Hausmann, J.H., Heckel, R., Lohmann, M.: Model-based discovery of web services. In: Proceedings of the IEEE International Conference on Web Services, ICWS 2004, p. 324., IEEE Computer Society, USA, June 2004
Heckel, R., Küster, J.M., Taentzer, G.: Confluence of Typed Attributed Graph Transformation Systems. In: Corradini, A., Ehrig, H., Kreowski, H.J., Rozenberg, G. (eds.) Graph Transformation, LNCS, pp. 161–176. Springer, Berlin (2002). https://doi.org/10.1007/3-540-45832-8_14
Lambers, L., Ehrig, H., Orejas, F.: Efficient conflict detection in graph transformation systems by essential critical pairs. Electr. Notes Theor. Comput. Sci. 211, 17–26 (2008). https://doi.org/10.1016/j.entcs.2008.04.026, https://www.sciencedirect.com/science/articleii/S1571066108002417
Lübke, D., Zimmermann, O., Pautasso, C., Zdun, U., Stocker, M.: Interface evolution patterns: balancing compatibility and extensibility across service life cycles. In: Proceedings of the 24th European Conference on Pattern Languages of Programs - EuroPLop 2019, pp. 1–24. ACM Press, Irsee, Germany (2019). https://doi.org/10.1145/3361149.3361164
Møller, A., Torp, M.T.: Model-based testing of breaking changes in Node.js libraries. In: Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering - ESEC/FSE 2019, pp. 409–419. ACM Press, Tallinn, Estonia (2019). https://doi.org/10.1145/3338906.3338940
Mora, F., Li, Y., Rubin, J., Chechik, M.: Client-specific equivalence checking. In: Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering - ASE 2018, pp. 441–451. ACM Press, Montpellier, France (2018). https://doi.org/10.1145/3238147.3238178
Preston-Werner, T.: Semantic Versioning 2.0.0 (2020). https://semver.org/
Raemaekers, S., van Deursen, A., Visser, J.: Semantic Versioning versus breaking changes: a study of the maven repository. In: 2014 IEEE 14th International Working Conference on Source Code Analysis and Manipulation, pp. 215–224. IEEE, Victoria, BC, Canada, September 2014. https://doi.org/10.1109/SCAM.2014.30, http://ieeexplore.ieee.org/document/6975655/
Runge, O., Ermel, C., Taentzer, G.: AGG 2.0 – New features for specifying and analyzing algebraic graph transformations. In: Schürr, A., Varró, D., Varró, G. (eds.) Applications of Graph Transformations with Industrial Relevance, LNCS, pp. 81–88. Springer, Berlin (2012). https://doi.org/10.1007/978-3-642-34176-2_8
Soldani, J., Tamburri, D.A., Van Den Heuvel, W.J.: The pains and gains of microservices: a systematic grey literature review. J. Syst. Softw. 146, 215–232 (2018). https://doi.org/10.1016/j.jss.2018.09.082, https://linkinghub.elsevier.com/retrieve/pii/S0164121218302139
Taentzer, G., Toffetti Carughi, G.: A graph-based approach to transform XML documents. In: Baresi, L., Heckel, R. (eds.) Fundamental Approaches to Software Engineering, LNCS, pp. 48–62. Springer, Berlin (2006). https://doi.org/10.1007/11693017_6
Xavier, L., Brito, A., Hora, A., Valente, M.T.: Historical and impact analysis of API breaking changes: A large-scale study. In: 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER), pp. 138–147. IEEE, Klagenfurt, Austria, February 2017. https://doi.org/10.1109/SANER.2017.7884616, http://ieeexplore.ieee.org/document/7884616/
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2021 Springer Nature Switzerland AG
About this paper
Cite this paper
Cravo, D.R., Ribeiro, L. (2021). Module Integration Using Graph Grammars (MIGRATE). In: Campos, S., Minea, M. (eds) Formal Methods: Foundations and Applications. SBMF 2021. Lecture Notes in Computer Science(), vol 13130. Springer, Cham. https://doi.org/10.1007/978-3-030-92137-8_6
Download citation
DOI: https://doi.org/10.1007/978-3-030-92137-8_6
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-92136-1
Online ISBN: 978-3-030-92137-8
eBook Packages: Computer ScienceComputer Science (R0)