<  Back to the Polytechnique Montréal portal

Improving Program Comprehension and Recommendation Systems Using Developers' Context

Zéphyrin Soh

PhD thesis (2015)

[img]
Preview
Download (2MB)
Cite this document: Soh, Z. (2015). Improving Program Comprehension and Recommendation Systems Using Developers' Context (PhD thesis, École Polytechnique de Montréal). Retrieved from https://publications.polymtl.ca/2034/
Show abstract Hide abstract

Abstract

RÉSUMÉ Avec les besoins croissants des utilisateurs ainsi que l’évolution de la technologie, les programmes informatiques deviennent de plus en plus complexes. Ces programmes doivent évolués et être maintenus afin de corriger les bogues et–ou s’adapter aux nouveaux besoins. Lors de la maintenance des programmes, la compréhension des programmes est une activité indispensable et préliminaire à tout changement sur le programme. Environ 50% du temps de maintenance d’un programme est consacré à leur compréhension. Plusieurs facteurs affectent cette compréhension. L’étude de ces facteurs permet non seulement de les comprendre et d’identifier les problèmes que peuvent rencontrer les développeurs mais aussi et surtout de concevoir des outils permettant de faciliter leur travail et d’améliorer ainsi leur productivité. Pour comprendre le programme et effectuer des tâches de maintenance, les développeurs doivent naviguer entre les éléments du programme (par exemple les fichiers) dans l’objectif de trouver le(s) élément(s) à modifier pour réaliser leurs tâches. L’exploration du programme est donc essentielle. Notre thèse est que l’effort de maintenance n’est pas seulement lié à la complexité de la tâche, mais aussi à la façon dont les développeurs explorent un programme. Pour soutenir cette thèse, nous utilisons les données d’interaction qui contiennent les activités effectuées par les développeurs durant la maintenance. D’abord, nous étudions les bruits dans les données d’interaction et montrons qu’environ 6% du temps de réalisation d’une tâche ne sont pas contenus dans ces données et qu’elles contiennent environ 28% d’activités faussement considérées comme modifications effectuées sur le programme. Nous proposons une approche de nettoyage de ces bruits qui atteind une précision et un rappel jusqu’à 93% et 81%, respectivement. Ensuite, nous montrons que ces bruits impactent les résultats de certains travaux précédents et que le nettoyage des bruits améliore la précision et le rappel des systèmes de récommendation jusqu’à environ 51% et 57%, respectivement. Nous montrons également utilisant les données d’interaction que l’effort de maintenance n’est pas seulement lié à la complexité de la tâche de maintenance mais aussi à la façon dont les développeurs explorent les programmes. Ainsi, nous validons notre thèse et concluons que nous pouvons nettoyer des données d’interaction, les utiliser pour calculer l’effort de maintenance et comprendre l’impact de l’exploration du programme sur l’effort. Nous recommendons aux chercheurs de nettoyer les traces d’interaction et de les utiliser lorsqu’elles sont disponibles pour calculer l’effort de maintenance. Nous mettons à la disposition des fournisseurs d’outils de monitoring et de recommendation des résultats leur permettant d’améliorer leurs outils en vue d’aider les développeurs à plus de productivité.----------ABSTRACT Software systems must be maintained and evolved to fix bugs and adapted to new technologies and requirements. Maintaining and evolving systems require to understand the systems (e.g., program comprehension) prior to any modification. Program comprehension consumes about half of developers' time during software maintenance. Many factors impact program comprehension (e.g., developers, systems, tasks). The study of these factors aims (1) to identify and understand problems faced by developers during maintenance task and (2) to build tools to support developers and improve their productivity. To evolve software, developers must always explore the program, i.e., navigate through its entities. The purpose of this navigation is to find the subset of entities relevant to the task. Our thesis is that the maintenance effort is not only correlated to the complexity of the implementation of the task, but developers' exploration of a program also impacts the maintenance effort. To validate our thesis, we consider interaction traces data, which are developers' activities logs collected during maintenance task. We study noise in interaction traces data and show that these data miss about 6% of the time spent to perform the task and contain on average about 28% of activities wrongly considered as modification of the source code. We propose an approach to clean interaction traces. Our approach achieves up to 93% precision and 81% recall. Using our cleaning approach, we show that some previous works that use interaction traces have been impacted by noise and we improve the recommendation of entities by up to 51% precision and 57% recall. We also show that the effort is not only correlated to the complexity of the implementation of the task but impacted by the developers' exploration strategies. Thus, we validate our thesis and conclude that we can clean interaction traces data and use them to assess developers' effort, understand how developers spend their effort, and assess the impact of their program exploration on their effort. Researchers and practitioners should be aware of the noise in interaction traces. We recommend researchers to clean interaction traces prior to their usage and use them to compute the effort of maintenance tasks instead of estimating from bug report. We provide practitioners with an approach to improve the collection of interaction traces and the accuracy of recommendation systems. The use of our approach to improve these tools will likely improve the developers' productivity.

Open Access document in PolyPublie
Department: Département de génie informatique et génie logiciel
Dissertation/thesis director: Yann-Gaël Guéhéneuc, Giuliano Antoniol and Khomh Foutse
Date Deposited: 01 Apr 2016 15:28
Last Modified: 24 Oct 2018 16:12
PolyPublie URL: https://publications.polymtl.ca/2034/

Statistics

Total downloads

Downloads per month in the last year

Origin of downloads

Repository Staff Only