1 |
Vérification des patrons temporels d’utilisation d’API sans exécution du code : une approche et un outilRaelijohn, Erick F. 07 1900 (has links)
La réutilisation est une pratique courante lors du développement de logiciel.
Bien souvent, cette réutilisation se fait à travers l’utilisation des
librairies. Cette dernière met ses fonctionnalités à disposition des
développeurs en utilisant les Interfaces de Programmation d’Application (API).
En théorie, les développeurs qui utilisent les API n’ont pas forcément besoin de
se préoccuper de comment les éléments internes de cette API fonctionnent. En
effet, les API mettent leurs fonctionnalités à disposition des développeurs sans
forcément dévoiler ce qui se passe à l’interne. Cependant, pour utiliser
correctement une API il est nécessaire de respecter des contraintes
d’utilisation qui sont à la fois implicites et explicites ainsi que des modèles
d’utilisation.
L’usage des librairies et des API est très commun dans le domaine du
développement de logiciel. Cela permet aux développeurs d’utiliser les
fonctionnalités proposées par l’API et ainsi de se concentrer directement sur la
tâche qu’ils doivent effectuer. Toutefois, apprendre et se familiariser avec les
contraintes d’usage des API sont des tâches ardues et exigent un effort cognitif
considérable de la part du développeur. Les chercheurs ont tenté de corriger ce
problème en étudiant les modèles d’utilisation et en analysant les traces
d’utilisation de code client pour s’assurer de leurs conformités. Néanmoins, les
analyses dynamiques ne sont pas possibles pendant les phases précoces de
développement du logiciel, car cela requiert une implémentation minimum et
l’exécution du code.
Nous proposons l’outil Temporal Usage PAttern Checker (Tupac). Une approche
basée sur l’analyse statique interprocédural pour vérifier la conformité du code
client aux modèles d’utilisation pendant la phase de développement. Tupac peut
être déployé dans un envi- ronnement de développement (IDE) et ainsi fournir des
informations relatives à l’utilisation des API plus tôt pendant la phase de
développement du logiciel. Nous avons évalué notre approche sur quatre projets
Java avec quatre API. Les résultats ont démontré que Tupac a une bonne précision
et un taux de rappel intéressant. De plus, nous avons pu conclure qu’en moyenne
cela prend une demi-seconde pour vérifier la confor- mité d’un patron pour un
projet tout entier. Cela démontre que Tupac peut être déployé dans un rythme de
codage régulier. / In modern software development, reuse takes the form of using libraries that
expose their functionality via Application Programming Interfaces (APIs). In
theory, APIs allow developers to write client code that reuses library code
without needing to know its internals. In practice, correctly using APIs
requires respecting explicit and implicit constraints and usage patterns. This
allows developers to use functionality proposed by API so that they can focus
directly on the task they want to achieve. APIs require a significant effort
from the developer to learn various usage constraint. Ignoring such patterns
could lead to errors and design flaws. These often cannot be detected prior to
integration and system testing. Researchers have attempted to solve this problem
by extracting API usage patterns and analyzing client code traces for
conformance. However, dynamic analysis is still impossible to perform early
without a minimum of integration and execution. We propose the Temporal Usage
PAttern Checker (Tupac) for API, an interprocedural static analysis approach
that can verify that client code conforms to temporal API usage patterns as it
is being developed. Tupac can be deployed inside an Integrated Development
Environment (IDE), thus providing developers with feedback about API usage much
earlier in the development process. We evaluated the effectiveness of our
approach on four projects with four different APIs. Our evaluation shows that
Tupac has good precision and interesting recall. Crucially, we also show that it
takes, on average, half a second to check an entire project for conformance to a
pattern, meaning that it can realistically be deployed in the regular coding
rhythm
|
Page generated in 0.0555 seconds