Assessing and Improving Rules to Support Software Evolution - Inria - Institut national de recherche en sciences et technologies du numérique Access content directly
Theses Year : 2014

Assessing and Improving Rules to Support Software Evolution

Évaluation et amélioration de règles pour supporter l'évolution logicielle

Abstract

Software systems evolve by adding new features, fixing bugs or refactoring existing source code. During this process, some problems may occur (e.g., backward-incompatibility, missing or unclear method deprecation) causing evolving systems and their clients to be inconsistent or to fail, decreasing code quality. As nowadays software systems are frequently part of bigger ecosystems, such problems are even harder to handle because the impact may be large and unknown.One solution to deal with such maintainability problems is the usage of rules to ensure consistency. These rules may be created by experts or extracted from source code repositories, which are commonly evaluated in small-scale case studies. We argue that existing approaches lack of: (i) a deep understanding of the benefits provided by expert-based rules, (ii) a better use of source code repositories to extract history-based rules, and (iii) a large-scale analysis of the impact of source code evolution on the actual clients.In this thesis we propose to analyze and improve rules to better support developers keeping track of source code evolution. We cover three aspects. The benefits provided by expert-based rules: we report on an investigation of rules created based on expert opinion to understand whether they are worthwhile to be adopted given the cost to produce them. The improvement of history-based rules: we propose two solutions to extract better rules from source code history. The impact of source code evolution on a software ecosystem: we undergo an investigation, in a large-scale ecosystem, on the awareness of the client systems about source code evolution.We evaluated the proposed approaches qualitatively and quantitatively in real-world case studies, and, in many cases, with the help of experts on the system under analysis. The results we obtained demonstrate the usefulness of our approaches.
Les systèmes logiciels evoluent continuellement pour ajouter de nouvelles fonctionnalités, corriger des bugs ou refactoriser du code source existant. Durant ce processus, certains problèmes peuvent survenir (par exemple, le manque de rétro-compatibilité, l’absence ou l’imprécision des deprecations explicites) provoquant l’inconsistance ou l’échec des systèmes en évolution et avec leurs clients, ce qui aboutit finalement à une baisse de la qualité du code. Comme de nos jours les systèmes logiciels font souvent partie de plus grands écosystèmes, ces problèmes sont encore plus difficiles à gérer car l’impact peut être grand et inconnu.Pour faire face à ces problèmes de maintenabilité et garantir la consistance du code source, il est possible d’utiliser des règles. Ces règles peuvent être créées par des experts ou extraites de précédentes versions du code source. Elles sont couramment évaluées dans des études de cas à petite échelle. Nous soutenons que les approches existantes : (i) n’analysent pas précisément les avantages des règles créées par des experts; (ii) gagneraient à mieux utiliser les dépôt de codes sources pour extraire des règles basées sur l’historique, et (iii) devraient analyser à grande échelle et sur des cas réels l’impact de l’évolution du code source sur les clients.Dans cette thèse, nous proposons d’analyser et d’améliorer les règles pour aider les développeurs à mieux suivre l’évolution du code source. Pour cela, nous étudions trois aspects différents. Les avantages prévus par les règles créées par des experts : nous analysons précisément ces règles pour comprendre si elles valent la peine d’être adoptées malgré le coût pour les produire. L’amélioration des règles basées sur l’historique : nous proposons deux solutions pour extraire de meilleures règles à partir du dépôt de codes sources. L’impact de l’évolution du code source sur un écosystème logiciel : nous étudions les conséquence de l’évolution de code source sur des systèmes clients dans le contexte d’un écosystème de grande échelle.Les approches proposées dans cette thèse ont été évaluées qualitativement et quantitativement avec des études de cas issues du monde réel. Pour plusieurs de ces études, nous avons pu bénéficier de l’aide d’experts sur les systèmes en cours d’analyse. Les résultats que nous avons obtenus démontrent l’utilité de nos approches.
Fichier principal
Vignette du fichier
thesis-AndreHora.pdf (3.38 Mo) Télécharger le fichier
Loading...

Dates and versions

tel-01087860 , version 1 (26-11-2014)

Identifiers

  • HAL Id : tel-01087860 , version 1

Cite

André Cavalcante Hora. Assessing and Improving Rules to Support Software Evolution. Software Engineering [cs.SE]. Université Lille 1 - Sciences et Technologies, 2014. English. ⟨NNT : ⟩. ⟨tel-01087860⟩
233 View
428 Download

Share

Gmail Facebook X LinkedIn More