A Large-scale Empirical Assessment of Web API Size Evolution
DOI:
https://doi.org/10.13052/jwe1540-9589.2167Keywords:
Web API, API Evolution, Software Evolution, OpenAPIAbstract
Like any other type of software, also Web Application Programming Interfaces (APIs) evolve over time. In the case of widely used API, introducing changes is never a trivial task, because of the risk of breaking thousands of clients relying on the API. In this paper we conduct an empirical study over a large collection of OpenAPI descriptions obtained by mining open source repositories. We measure the speed at which Web APIs change and how changes affect their size, simply defined as the number of operations. The dataset of API descriptions was collected over a period of one year and includes APIs with histories spanning across up to 7 years of commits. The main finding is that APIs tend to grow, although some do reduce their size, as shown in the case study examples included in the appendix.
Downloads
References
OpenAPI Initiative. https://www.openapis.org/. Accessed: 2020-12-30.
Prance. https://pypi.org/project/prance/. Accessed: 2020-12-28.
open-api-spec-validator. https://github.com/p1c2u/openapi-spec-validator. Accessed: 2020-12-29.
Alberto Abelló, Claudia P. Ayala, Carles Farré, Cristina Gómez, Marc Oriol, and Oscar Romero. A data-driven approach to improve the process of data-intensive API creation and evolution. In Proc. of the Forum and Doctoral Consortium Papers Presented at CAiSE, volume 1848, pages 1–8. CEUR-WS.org, 2017.
Gámez-Díaz Antonio, Fernandez Pablo, and Antonio Ruiz-Cortés. An analysis of restful apis offerings in the industry. In Proc. International Conference on Service-Oriented Computing (ICSOC), pages 589–604, 2017.
R. Arnold. Software change impact analysis. 1996.
Gabriele Bavota, Mario Linares-Vasquez, Carlos Eduardo Bernal-Cardenas, Massimiliano Di Penta, Rocco Oliveto, and Denys Poshyvanyk. The impact of api change-and fault-proneness on the user ratings of android apps. IEEE Transactions on Software Engineering, 41(4):384–407, 2014.
Gleison Brito and Marco Tulio Valente. REST vs GraphQL: A Controlled Experiment. In 2020 IEEE International Conference on Software Architecture (ICSA), pages 81–91. IEEE, mar 2020.
E. Burd and M. Munro. An initial approach towards measuring and characterising software evolution. In Sixth Working Conference on Reverse Engineering (Cat. No.PR00303), pages 168–174, 1999.
A. Cimitile, A.R. Fasolino, and G. Visaggio. A software model for impact analysis: a validation experiment. In Sixth Working Conference on Reverse Engineering (Cat. No.PR00303), pages 212–222, 1999.
Danny Dig and Ralph Johnson. How do apis evolve? a story of refactoring. Journal of software maintenance and evolution: Research and Practice, 18(2):83–107, 2006.
Anna Maria Eilertsen and Anya Helene Bagge. Exploring api/client co-evolution. In 2nd IEEE/ACM International Workshop on API Usage and Evolution (WAPI@ICSE), pages 10–13, 2018.
Tiago Espinha, Andy Zaidman, and Hans-Gerhard Gross. Web api growing pains: Stories from client developers and their code. In Proc. IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE). IEEE, 2014.
Roy Thomas Fielding. REST: Architectural Styles and the Design of Network-based Software Architectures. Doctoral dissertation, University of California, Irvine, 2000.
Nicolas Gold and Andrew Mohan. A framework for understanding conceptual changes in evolving source code. In Proceedings of the International Conference on Software Maintenance, ICSM ’03, page 431, USA, 2003. IEEE Computer Society.
Olaf Hartig and Jorge Pérez. Semantics and complexity of GraphQL. In Proc. World Wide Web Conference, pages 1155–1164, 2018.
Florian Haupt, Frank Leymann, Anton Scherer, and Karolina Vukojevic-Haupt. A framework for the structural analysis of rest apis. In 2017 IEEE International Conference on Software Architecture (ICSA), pages 55–58. IEEE, 2017.
Florian Haupt, Frank Leymann, and Karolina Vukojevic-Haupt. Api governance support through the structural analysis of rest apis. Computer Science-Research and Development, 33(3):291–303, 2018.
A. Hora, A. Etien, N. Anquetil, S. Ducasse, and M. T. Valente. APIEvolutionMiner: Keeping api evolution under control. In Proc. IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE), pages 420–424, 2014.
André Hora, Romain Robbes, Marco Tulio Valente, Nicolas Anquetil, Anne Etien, and Stéphane Ducasse. How do developers react to api evolution? a large-scale empirical study. Software Quality Journal, 26(1):161–191, 2018.
Daqing Hou and Xiaojia Yao. Exploring the intent behind api evolution: A case study. In 2011 18th Working Conference on Reverse Engineering, pages 131–140. IEEE, 2011.
Holger Knoche and Wilhelm Hasselbring. Continuous api evolution in heterogenous enterprise software systems. In 2021 IEEE 18th International Conference on Software Architecture (ICSA), pages 58–68, 2021.
R. Koçi, X. Franch, P. Jovanovic, and A. Abelló. Classification of changes in api evolution. In Proc. 23rd International Enterprise Distributed Object Computing Conference (EDOC), pages 243–249, 2019.
Maxime Lamothe, Yann-Gaël Guéhéneuc, and Weiyi Shang. A systematic review of api evolution literature. ACM Computing Surveys (CSUR), 54(8):1–36, 2021.
Arnaud Lauret. The Design of Web APIs. Manning, 2019.
Fabio Di Lauro, Souhaila Serbout, and Cesare Pautasso. Towards large-scale empirical assessment of web apis evolution. In 21st International Conference on Web Engineering (ICWE2021), Biarritz, France, May 2021. Springer, Springer.
J. Law and G. Rothermel. Whole program path-based dynamic impact analysis. In 25th International Conference on Software Engineering, 2003. Proceedings., pages 308–318, 2003.
M.M. Lehman, D.E. Perry, and J.F. Ramil. Implications of evolution metrics on software maintenance. In Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272), pages 208–217, 1998.
M.M. Lehman, J.F. Ramil, P.D. Wernick, D.E. Perry, and W.M. Turski. Metrics and laws of software evolution-the nineties view. In International Software Metrics Symposium, pages 20–32, Albuquerque, NM, November 1997.
Jun Li, Yingfei Xiong, Xuanzhe Liu, and Lu Zhang. How does web service API evolution affect clients? In Proc. 20th International Conference on Web Services (ICWS), 2013.
Daniel Lübke, Olaf Zimmermann, Cesare Pautasso, Uwe Zdun, and Mirko Stocker. Interface evolution patterns — balancing compatibility and flexibility across microservices lifecycles. In Proc. 24th European Conference on Pattern Languages of Programs (EuroPLoP 2019). ACM, 2019.
Tarek Mahmud, Mujahid Khan, Jihan Rouijel, Meiru Che, and Guowei Yang. Api change impact analysis for android apps. In 2021 IEEE 45th Annual Computers, Software, and Applications Conference (COMPSAC), pages 894–903. IEEE, 2021.
Cesare Pautasso and Olaf Zimmermann. The Web as a software connector: Integration resting on linked resources. IEEE Software, 35:93–98, January/February 2018.
Clément Quinton, Michael Vierhauser, Rick Rabiser, Luciano Baresi, Paul Grünbacher, and Christian Schuhmayer. Evolution in dynamic software product lines. Journal of Software: Evolution and Process, 33(2):e2293, 2021.
Souhaila Serbout, Fabio Di Lauro, and Cesare Pautasso. Web apis structures and data models analysis. In Proc. International Conference on Software Architecture (ICSA). IEEE, 2022. to appear.
Souhaila Serbout, Cesare Pautasso, Uwe Zdun, and Olaf Zimmermann. From OpenAPI fragments to api pattern primitives and design smells. In Proc. European Conference on Pattern Languages of Programs (EuroPLoP), 2021.
S. M. Sohan, Craig Anslow, and Frank Maurer. A case study of Web API evolution. In Proc. IEEE World Congress on Services, pages 245–252, 2015.
Shaohua Wang, Iman Keivanloo, and Ying Zoua. How do developers react to RESTful API evolution? In Proc. International Conference on Service-Oriented Computing, page 245–259. Springer, 2014.
Erik Wittern, Alan Cha, James C Davis, Guillaume Baudart, and Louis Mandel. An empirical study of graphql schemas. In International Conference on Service-Oriented Computing, pages 3–19. Springer, 2019.
J. Yang, E. Wittern, A. T. T. Ying, J. Dolby, and L. Tan. Towards extracting web api specifications from documentation. In 2018 IEEE/ACM 15th International Conference on Mining Software Repositories (MSR), pages 454–464, 2018.
Jerin Yasmin, Yuan Tian, and Jinqiu Yang. A first look at the deprecation of restful apis: An empirical study. In 2020 IEEE International Conference on Software Maintenance and Evolution (ICSME), pages 151–161. IEEE, 2020.
T. Zimmermann, A. Zeller, P. Weissgerber, and S. Diehl. Mining version histories to guide software changes. IEEE Transactions on Software Engineering, 31(6):429–445, 2005.