A Conceptual Framework for API Refactoring in Enterprise Application Architectures

Fabrizio Montesi, Marco Peressotti, Valentino Picotti, Olaf Zimmermann [2024].
In CoRR abs/2407.07428.

Abstract
Enterprise applications are often built as service-oriented architectures, where the individual services are designed to perform specific functions and interact with each other by means of well-defined APIs (Application Programming Interfaces). The architecture of an enterprise application evolves over time, in order to adapt to changing business requirements. This evolution might require changes to the APIs offered by services, which can be achieved through appropriate API refactorings. Previous studies on API refactoring focused on the effects on API definitions, with general considerations on related forces and smells. So far, instead, the development strategy for realising these refactorings has received little attention. This paper addresses exactly this aspect. We introduce a conceptual framework for the implementation of API refactorings. Our framework elicits that there are important trade-offs and choices, which significantly affect the efficiency, maintainability, and isolation properties of the resulting architecture. We validate our framework by implementing several refactorings that introduce established API patterns with different choices, which illustrates the guiding principles offered by our framework. Our work also elicits, for the first time, how certain programming language features can reduce friction in applying API refactoring and open up more architectural choices.
Links
doi.org
Additional notes
None
Cite (BibTeX)
Click to expand
@article{DBLP:journals/corr/abs-2407-07428,
  author       = {Fabrizio Montesi and
                  Marco Peressotti and
                  Valentino Picotti and
                  Olaf Zimmermann},
  title        = {A Conceptual Framework for {API} Refactoring in Enterprise Application
                  Architectures},
  journal      = {CoRR},
  volume       = {abs/2407.07428},
  year         = {2024},
  url          = {https://doi.org/10.48550/arXiv.2407.07428},
  doi          = {10.48550/ARXIV.2407.07428},
  eprinttype    = {arXiv},
  eprint       = {2407.07428},
  timestamp    = {Fri, 16 Aug 2024 14:50:24 +0200},
  biburl       = {https://dblp.org/rec/journals/corr/abs-2407-07428.bib},
  bibsource    = {dblp computer science bibliography, https://dblp.org}
}