In the lifetime of a service-oriented architecture, the Application Programming Interfaces (APIs) offered by services may need to be refactored in order to adapt to changing business and technical requirements. Previous studies focused on the effects that such API refactorings have on API definitions, with general considerations on related forces and smells. By contrast, the development strategies for realising these refactorings have received little attention. This paper addresses this aspect. We introduce EMI, a conceptual framework for the implementation of API refactorings. Our framework is designed to elicit the trade-offs and choices that significantly affect the efficiency, maintainability, and isolation of the resulting architecture. We evaluate our framework by evolving a use case through the implementation of several refactorings, illustrating the different implementation choices that can be made. Based on our experience, we illustrate how to derive mechanical recipes for API refactoring that can follow different strategies in our framework.

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

A Conceptual Framework for API Refactoring in Service-Oriented Architectures

  • Fabrizio Montesi,
  • Marco Peressotti,
  • Valentino Picotti,
  • Olaf Zimmermann

摘要

In the lifetime of a service-oriented architecture, the Application Programming Interfaces (APIs) offered by services may need to be refactored in order to adapt to changing business and technical requirements. Previous studies focused on the effects that such API refactorings have on API definitions, with general considerations on related forces and smells. By contrast, the development strategies for realising these refactorings have received little attention. This paper addresses this aspect. We introduce EMI, a conceptual framework for the implementation of API refactorings. Our framework is designed to elicit the trade-offs and choices that significantly affect the efficiency, maintainability, and isolation of the resulting architecture. We evaluate our framework by evolving a use case through the implementation of several refactorings, illustrating the different implementation choices that can be made. Based on our experience, we illustrate how to derive mechanical recipes for API refactoring that can follow different strategies in our framework.