Thèse de doctorat (2014)
|
Libre accès au plein texte de ce document Conditions d'utilisation: Tous droits réservés Télécharger (3MB) |
Résumé
Les cadres d'applications sont intensivement utilisés dans le développement de logiciels modernes et sont accessibles au travers de leur Application Programming Interface (API), qui définit un ensemble de fonctionnalités que les programmes clients peuvent utiliser pour accomplir des tâches. Les cadres d'applications ne cessent d'évoluer au cours de leurs vies pour satisfaire la demande de nouvelles fonctions ou pour rapiécer des vulnérabilités de sécurité. L'évolution des cadres d'applications peut engendrer des modifications de l'API auxquelles les programmes clients doivent s'adapter. Les mises à jour vers les nouvelles versions des cadres d'applications prennent du temps et peuvent même interrompre le service. Aider les développeurs à mettre à jour leurs programmes est d'un grand intérêt pour les chercheurs académiques et industriels. Dans cette thèse, nous réalisons une étude exploratoire de la réalité des évolutions des API et de leurs usages dans le dépôt central de Maven et dans deux grands cadres d'applications avec de larges écosystèmes : Apache et Eclipse. Nous découvrons que les API changent dans environ 10 % des cadres d'applications et touchent 50 % des programmes clients. Il arrive plus souvent que des classes et des méthodes manquent et disparaissent dans les cadres d'applications. Ces classes et méthodes affectent les programmes clients plus souvent que les autres changements des API. Nous montrons aussi qu'environ 80 % des utilisations des API dans les programmes clients peuvent être réduits par refactoring. Forts de ce constat, nous faisons une expérience pour vérifier l'effectivité des règles de changement des API générés par les approches existantes, qui recommandent les remplacements pour les API disparues pendant l'évolution des cadres d'application. Nous confirmons que les règles de changement des API aident les développeurs à trouver des remplacements aux API manquantes plus précisément, en particulier pour des cadres d'applications difficiles à comprendre. Enfin, nous étudions l'efficacité des caractéristiques utilisées pour construire les règles de changement des API et différentes manières de combiner plusieurs caractéristiques. Nous soutenons et montrons que des approches basées sur l'optimisation multi-objective peuvent détecter des règles de changement des API plus précisément et qu'elles peuvent prendre en compte plus facilement de nouvelles caractéristiques que les approches précédentes.
Abstract
Frameworks are widely used in modern software development and are accessed through their Application Programming Interfaces (APIs), which specify sets of functionalities that client programs can use to accomplish their tasks. Frameworks keep evolving during their lifespan to cope with new requirements, to patch security vulnerabilities, etc. Framework evolution may lead to API changes to which client programs must adapt. Upgrading to new releases of frameworks is time-consuming and can even interrupt services. Helping developers upgrade frameworks draws great interests from both academic and industrial researchers. In this dissertation, we first present an exploratory study to investigate the reality of API changes and usages in Maven repository and two framework ecosystems: Apache and Eclipse. We find that API changes in about 10% of frameworks affect about 50% of client programs. Missing classes and missing methods happen more often in frameworks and affect client programs more often than other API changes. About 80% API usages in client programs can be reduced by refactoring. Based on these findings, we conduct an empirical study to verify the usefulness of API change rules automatically built by previous approaches, which recommend the replacements for missing APIs due to framework evolution. We show that API change rules do help developers find the replacements of missing APIs more accurately, especially for frameworks difficult to understand. We describe another empirical study to evaluate the effectiveness of features used to build API change rules and of different ways combining multiple features. We argue and show that multi-objective-optimization-based approaches can detect more correct change rules and are easier to extend with new features than previous approaches.
Département: | Département de génie informatique et génie logiciel |
---|---|
Programme: | Génie informatique |
Directeurs ou directrices: |
Yann-Gaël Guéhéneuc et Giuliano Antoniol |
URL de PolyPublie: | https://publications.polymtl.ca/1642/ |
Université/École: | École Polytechnique de Montréal |
Date du dépôt: | 02 avr. 2015 10:52 |
Dernière modification: | 08 avr. 2024 08:48 |
Citer en APA 7: | Wu, W. (2014). Understanding and Tooling Framework API Evolution [Thèse de doctorat, École Polytechnique de Montréal]. PolyPublie. https://publications.polymtl.ca/1642/ |
---|---|
Statistiques
Total des téléchargements à partir de PolyPublie
Téléchargements par année
Provenance des téléchargements