Exploratory Analysis of the Structural Evolution of public REST APIs
Resumo
The software industry is in continuous evolution, forcing developers to quickly adapt to new requirements to catch up with the latest trends. A clear example is the huge demand for web-based APIs to connect all kinds of services among them. Like any other piece of software, a Web API is continuously changing, and with each change, all client applications must evolve. This adaptation process is critical and essential for software developers. In this paper, we present an exploratory evaluation of the most common changes occurring during the evolution of REST APIs. We define a taxonomy of structural API changes, which we classify according to their impact on client-side software; and propose a repository mining process to identify these changes in real Web APIs. We apply this process to a large set of Azure APIs from APISGURU, a well-known Open Source API repository. Based on the analyzed dataset from APISGURU, we found that breaking changes tend to decrease when a new version of an API from this dataset is released. Other useful findings and insights are discussed throughout the article.
Referências
Bartolomei, T. T., Czarnecki, K., and Lämmel, R. (2010). Swing to SWT and back: Patterns for API migration by wrapping. In 26th IEEE International Conference on Software Maintenance (ICSM 2010), September 12-18, 2010, Timisoara, Romania, pages 1–10.
Cao, H., Falleri, J.-R., and Blanc, X. (2017). Automated generation of rest api specification from plain html documentation. In Service-Oriented Computing, pages 453–461, Cham. Springer International Publishing.
Di Lauro, F., Serbout, S., and Pautasso, C. (2021). Towards large-scale empirical assessment of web apis evolution. In Brambilla, M., Chbeir, R., Frasincar, F., and Manolescu, I., editors, Web Engineering, pages 124–138, Cham. Springer International Publishing.
Dig, D. and Johnson, R. (2006). How do apis evolve? a story of refactoring. J. Softw. Maint. Evol., 18.
D.Rivières (2019). Evolvingjava-basedapis2.
Eclipse Fundation (2019). Emf compare.
Halili, F. and Ramadani, E. (2018). Web services: A comparison of soap and rest services. Modern Applied Science, 12.
Henkel, J. and Diwan, A. (2005). Catchup! capturing and replaying refactorings to support api evolution. Int. Conf. on Software Engineering, 27:274 – 283.
Hora, A., Etien, A., Anquetil, N., Ducasse, S., and Valente, M. (2014). Apievolution-miner: Keeping api evolution under control. Int. Conf. on Software Maintenance, Reengineering, and Reverse Engineering.
Huppe, S., Saied, M. A., and Sahraoui, H. (2017). Mining complex temporal api usage patterns: An evolutionary approach. In 2017 IEEE/ACM 39th International Conference on Software Engineering Companion (ICSE-C), pages 274–276.
Koçi, R., Franch, X., Jovanovic, P., and Abelló, A. (2021a). Improving web api usage logging. In Cherfi, S., Perini, A., and Nurcan, S., editors, Research Challenges in Information Science, pages 623–629, Cham. Springer International Publishing.
Koçi, R., Franch, X., Jovanovic, P., and Abelló, A. (2021b). Patternlens: Inferring evolutive patterns from web api usage logs. In Nurcan, S. and Korthaus, A., editors, Intelligent Information Systems, pages 146–153, Cham. Springer International Publishing.
Koçi, R., Franch, X., Jovanovic, P., and Abelló, A. (2019). Classification of changes in api evolution. In 2019 IEEE 23rd International Enterprise Distributed Object Computing Conference (EDOC), pages 243–249.
Koçi, R., Franch, X., Jovanovic, P., and Abelló, A. (2020). A data-driven approach to measure the usability of web apis. In 2020 46th Euromicro Conference on Software Engineering and Advanced Applications (SEAA), pages 64–71.
Lamothe, M. (2020). Bridging the divide between api users and api developers by mining public code repositories. In 2020 IEEE/ACM 42nd International Conference on Software Engineering: Companion Proceedings (ICSE-Companion), pages 178–181.
Lamothe, M., Guéhéneuc, Y.-G., and Shang, W. (2021). A systematic review of api evolution literature. ACM Comput. Surv., 54(8).
Li, J., Xiong, Y., Liu, X., and Zhang, L. (2013). How does web service api evolution affect clients? Int. Conf. on Web Services.
Nguyen, H., Nguyen, T. T., Jr., G. W., Nguyen, A., Kim, M., and Nguyen, T. (2010). A graph-based approach to api usage adaptation. ACM SIGPLAN Notices - OOPSLA ’10, 45:302–321.
Polák, M. and Holubová, I. (2015). Rest api management and evolution using mda. Int. Conf. Proceeding Series, 13:102–109.
Romano, D. and Pinzger, M. (2012). Analyzing the evolution of web services using fine-grained changes. In 2012 IEEE 19th International Conference on Web Services, pages 392–399.
Sawant, A., Robbes, R., and Bacchelli, A. (2019). To react, or not to react: Patterns of reaction to api deprecation. Empiric Software Engineering, 24:3824–3870.
Sawant, A. A. and Bacchelli, A. (2015). A dataset for api usage. In 2015 IEEE/ACM 12th Working Conference on Mining Software Repositories, pages 506–509.
Sohan, S., Anslow, C., and Maurer, F. (2015). A case study of web api evolution. IEEE World Congress on Services.
SOM RESEARCH LAB (2018). Apicomposer.
Wang, C., Yang, Y., Liu, H., and Kang, L. (2019). Statistical api completion based on code relevance mining. In 2019 IEEE Workshop on Mining and Analyzing Interaction Histories (MAINT), pages 7–13.
Wang, S., Keivanloo, I., and Zou, Y. (2014). How do developers react to restful api evolution? Int. Conf. in Service-Oriented Computing, 8831:245–259.
Wu, W., Adams, B., Guéhéneuc, Y., and Antoniol, G. (2014). Acua: Api change and usage auditor. In Int. Conf. on Source Code Analysis and Manipulation, pages 89–94.
Wu, W., Khomh, F., Adams, B., Guéhéneuc, Y., and Antoniol, G. (2016). An exploratory study of api changes and usages based on apache and eclipse ecosystems. Emp. Softw. Eng., 21:2366–2412.
Xavier, L., Brito, A., Hora, A., and Valente, M. T. (2017). Historical and impact analysis of api breaking changes: A large-scale study. Int. Conf. on Software Analysis, Evolution and Reengineering, pages 138–147.
Yasmin, J., Tian, Y., and Yang, J. (2020). A first look at the deprecation of restful apis: An empirical study. In 2020 IEEE INTERNATIONAL CONFERENCE ON SOFTWARE MAINTENANCE AND EVOLUTION (ICSME 2020), Proceedings-IEEE International Conference on Software Maintenance, pages 151–161. IEEE; IEEE Comp Soc. 36th IEEE International Conference on Software Maintenance and Evolution (ICSME), ELECTR NETWORK, SEP 27-OCT 03, 2020.
Zhong, H., Xie, T., Zhang, L., Pei, J., and Mei, H. (2009). Mapo: Mining and recommending api usage patterns. Europ. Conf. on Object-Oriented Programming, 5653:318–343.