Thèse de doctorat (2014)
Résumé
L'identification de concepts est l'activité qui permet de trouver et localiser l'implémentation d'une fonctionnalité d'un logiciel dans le code source. L'identification de concepts permet d'aider les développeurs à comprendre les programmes et de minimiser l'effort de maintenance et d'évolution des logiciels. Dans la littérature, plusieurs approches statiques, dynamiques et hybrides pour l'identification des concepts ont été proposées. Les deux types statiques et dynamiques ont des avantages et des inconvénients et se complètent mutuellement en approches hybrides. Par conséquent, de nombreux travaux récents ont porté sur des approches hybrides pour améliorer les performances en terme de temps et de précision du processus d'identification de concepts. De plus, les traces d'exécution sont souvent trop larges (en termes de nombre de méthodes invoquées) et elles ne peuvent pas être utilisées directement par les développeurs pour les activités de maintenance. Dans cette thèse, nous proposons d'extraire l'ensemble des concepts des traces d'exécution en se basant sur des approches hybrides. En effet durant la maintenance d'un logiciel, les développeurs cherchent à trouver et à comprendre le(s) segment(s) qui implémente(nt) le concept à maintenir au lieu d'analyser en détails toute la trace d'exécution. L'extraction de concepts facilite les tâches de maintenance et d'évolution des logiciels en guidant les développeurs sur les segments qui implémentent les concepts à maintenir et ainsi réduire le nombre de méthodes à analyser. Nous proposons une approche basée sur la programmation dynamique qui divise la trace d'exécution en segments qui représentent des concepts. Chaque segment implémente un et un seul concept et est défini comme une liste ordonnée des méthodes invoquées, c'est-à-dire une partie de la trace d'exécution. Un concept peut être implémenté par un ou plusieurs segments. Ensuite, nous proposons une nouvelle approche (SCAN) pour attacher des étiquettes aux segments de la trace d'exécution. Nous utilisons la recherche d'information (IR) pour extraire une étiquette formée par des mots clés qui définissent le concept implémenté par un segment. Les étiquettes permettent aux développeurs d'avoir une idée du concept implémenté par les méthodes du segment et de choisir les segments qui implémentent les concepts à maintenir. Les segments qui implémentent les concepts à maintenir peuvent être de larges tailles en terme de nombre de méthodes invoquées et ainsi difficiles à comprendre. Nous proposons de diminuer la taille des segments en gardant juste les plus importantes méthodes invoquées. Nous réalisons des expériences pour évaluer si des participants produisent des étiquettes différentes lorsqu'on leur fournit une quantité différente d'informations sur les segments. Nous montrons qu'on conserve 50% ou plus des termes des étiquettes fournies par les participants tout en réduisant considérablement la quantité d'informations, jusqu'à 92% des segments, que les participants doivent traiter pour comprendre un segment. Enfin, nous étudions la précision et le rappel des étiquettes générées automatiquement par SCAN. Nous montrons que SCAN attribue automatiquement des étiquettes avec une précision moyenne de 69% et de un rappel moyen de 63%, par rapport aux étiquettes manuelles produites par au moins deux participants. L'approche SCAN propose aussi l'identification des relations entre les segments d'une même trace d'exécution. Ces relations fournissent une présentation globale et de haut niveau des concepts misent en œuvre dans une trace d'exécution. Ceci permet aux développeurs de comprendre la trace d'exécution en découvrant les méthodes et invocations communes entre les segments. Nous montrons que SCAN identifie les relations entre les segments avec une précision supérieure à 75% dans la plupart des logiciels étudiés. À la fin de cette thèse, nous étudions l'utilité de la segmentation automatique des traces d'exécution et l'affectation des étiquettes durant les tâches d'identification des concepts. Nous prouvons que SCAN est une technique qui supporte les tâches d'identification de concepts. Nous démontrons que l'extraction de l'ensemble des concepts des traces d'exécution présentée dans cette thèse guide les développeurs vers les segments qui implémentent les concepts à maintenir et ainsi réduire le nombre de méthodes à analyser.
Statistiques
Total des téléchargements à partir de PolyPublie
Téléchargements par année
Provenance des téléchargements
