2. Plan
• Présentation générale du LaBRI
• Etat de l’art ciblé sur l’évolution logicielle
• La plate-forme Harmony
• Etudes réalisées
• Perspectives de recherche
9. Composants sujets aux fautes
• Exploiter les metriques
pour identifier les
composants sujets aux
fautes
• Focaliser la
maintenance sur ces
composants
15. Harmony: Observatoire Logiciel
• La plate-forme Harmony propose des outils
pour réaliser des études sur l’évolution des
logiciels
Analyse de code source
Analyse des versions
Analyse des bugs
16. Fonctionnement Général
• Harmony construit un modèle de l’évolution
• Harmony lance des analyses sur ce modèle
=> Le modèle et les analyses sont stockés dans une BD
Versioned Items
(Git, Mercurial, BugZilla)
Harmony Data BaseHarmony Core
Harmony Analysis
Harmony - Tutorial 16
17. Le modèle d’évolution Harmony
• Une Source est un dépôt
• Un Item est un artefact
versionné (fichier de source
code file ou un bug)
• Un Event se produit à un
instant donné (commit,
merge, bugs, etc.)
• Une Action est exécuté sur
un item (ajout,
changement, suppression)
• Un Author réalise des
actions
Source
ItemEvent
Action
Author
Harmony - Tutorial 17
18. Actuellement
• Source code
– Mainly Java, C est supporté, AST
• Version Control
– Git, Mercurial, SVN
• Bugs
– BugZilla, GitHub
• Analysis
– OO Metrics, Team Metrics, Library usage,
20. Migration de bibliothèques
• Observation de 40000 projets Maven pour
identifier les migrations de bibliothèques
• Connaitre les bibliothèques « tendance »
21. Classification des développeurs
• Observation d’un ensemble de projets pour
classifier les développeurs en fonction de
l’usage des bibliothèques
22. MFAS / Bugs
• Echantillonnage de projets GitHub
• Calcul des composantes fortement connexes
• Corrélation avec les bugs
24. Principes d’architecture
• Définir des métriques mesurant des principes
d’architecture
– « program to an interface »
• Valider ces métriques sur des projets
=> Pas de corrélation sur l’effort de
maintenance?
25. Age d’une application
• Proposer un prédicteur permettant de
connaître la maturité d’une application
• Savoir quand migrer
• Identifier les parties risquées (pas à jour)
26. Style de programmation
• Pouvoir identifier les styles de programmation
des développeurs
• Savoir qui est expert
• Savoir anticiper des besoins de framework
technique
• Mesurer la distance à parcourir en terme de
migration
27. Et d’autres
• Evolution web
• Techniques de sampling
• Bug triaging
• Métriques et temps
• …
29. Etude d’évolution
• Mesurer l’évolution logiciel
• Exploitation des outils statistiques
• Observation de projets industriels
• Liens avec les processus de développement