Conception, maintenance and break-free evolution of REST APIs (Conception, maintenance et évolution non-cassante des API REST) Cheron, Antoine - (2021-12-17) / Universite de Rennes 1 - Conception, maintenance and break-free evolution of REST APIs
| |||
Langue : Anglais Directeur(s) de thèse: Barais, Olivier; Bourcier, Johann Discipline : Informatique Laboratoire : IRISA Ecole Doctorale : MATHSTIC Classification : Informatique Mots-clés : Web, API, REST, co-évolution logicielle, comparaison, Web sémantique
| |||
Résumé : Le World Wide Web est principalement composé de deux types de composants applicatifs : les applications et les services. Les applications, qu'elles soit des applications mobiles ou Web, c-a-d ayant vocation à être utilisées depuis un navigateur, ont en commun qu'elles sont une sorte de texte à trous et communiquent avec les services pour personnaliser l'application pour chaque utilisateur. C'est donc le service qui possède et gère les données. Pour rendre possible cette communication, les services rendent disponible des APIs suivant l'architecture REST. La gestion du cycle de vie d'une API REST est alors un élément central du développement de systèmes dans le Web. La première étape de ce cycle de vie est la définition des exigences d'une API (fonctionnalité et propriétés logicielles). Ensuite, les technologies qui permettront de la concevoir, l'implémenter et la documenter sont choisies. Elle est ensuite implémentée et documentée puis mise en ligne. Dès lors, des applications peuvent l'utiliser. S'ensuit alors une phase de maintenance et d'évolution de l'API, dans laquelle les bogues sont corrigés et les fonctionnalités évolues pour s'adapter aux changements des attentes de ses utilisateurs. Dans cette thèse, nous passons en revue les méthodes et technologies qui accompagnent le développeur au cours de ce cycle de vie. Nous identifions deux challenges restant sans réponse. Premièrement, il existe de nombreuses technologies pour créer et documenter une API. Choisir les technologies les plus pertinentes pour un projet est une tâche difficile. Comme première contribution de cette thèse, nous établissons des critères permettant de comparer ces technologies. Ensuite, nous utilisons ces critères pour comparer les technologies existantes et proposons ainsi trois matrices de comparaison. Enfin, pour simplifier cette selection, nous avons développé un assistant open-source disponible sur le Web, qui guide le développeur dans son choix. Le second challenge que nous avons identifié est lié à la maintenance et l'évolution des APIs REST. La littérature existante ne permet pas de faire évoluer une API REST librement, sans risquer de rendre inopérantes les applications qui s'en servent (leurs clients). La seconde contribution de ce travail est une nouvelle approche à la co-évolution des APIs REST et de leurs clients. Nous avons identifié qu'en suivant 7 règles régissant la documentation de l'API et les données qu'elles renvoient en répondant à ses clients, il est possible de créer des interfaces utilisateur Web capable de s'adapter à la majorité des évolutions des APIs REST sans produire de bogues, ni les casser et sans même nécessiter la modification de leur code source. Abstract : The World Wide Web is mainly composed of two types of application components: applications and services. Applications, whether they are mobile or Web applications, i.e. intended to be used from a browser, have in common that they are a kind of text to holes and communicate with the services to customize the application for each user. It is therefore the service that owns and manages the data. To make this communication possible, the services offer APIs following the REST architecture. The management of the life cycle of a REST API is then a central element of the development of systems on the Web. The first step in this life cycle is the definition of the requirements of an API (functionality and software properties). Then, the technologies that will allow it to be designed, implemented and documented are chosen. It is then implemented and documented and put online. From then on, applications can use it. Then follows a phase of maintenance and evolution of the API, in which bugs are fixed and functionalities evolve to adapt to the changes of its users' expectations. In this thesis, we review the methods and technologies that accompany the developer during this life cycle. We identify two open challenges. First, there are many technologies for creating and documenting an API. Choosing the most relevant technologies for a project is a difficult task. As a first contribution of this thesis, we establish criteria to compare these technologies. Then, we use these criteria to compare existing technologies and propose three comparison matrices. Finally, to simplify this selection, we have developed an open-source wizard available on the Web, which guides the developer in his choice. The second challenge we have identified is related to the maintenance and evolution of REST APIs. The existing literature does not allow a REST API to evolve freely, without the risk of breaking the applications that use it (their clients). The second contribution of this work is a new approach to the co-evolution of REST APIs and their clients. We have identified that by following 7 rules governing the documentation of the API and the data they return in response to its clients, it is possible to create Web user interfaces capable of adapting to the majority of evolutions of REST APIs without producing bugs, nor breaking them and without even requiring the modification of their source code. |