Université BADJI MOKHTAR ANNABA Faculté des sciences de l’ingéniorat Département d’informatique Réalisés par : BOUNAB SAMIA BOURITA A/REZAK Introduction Travaux connexes Applications de data mining en génie logiciel Techniques de data mining Les tâches d'ingénierie logicielle qui bénéficient de data mining Les limites et les défis de data mining Conclusion 2 Au cours du développement logiciel, une grande quantité de données est produite, telles que les référentiels d'attributs logiciels et la trace d'exécution du programme, ce qui peut aider dans les futures activités de développement et de gestion de projet. Un développement logiciel efficace nécessite une quantification, une mesure et une modélisation des artefacts logiciels précédents. Le développement de systèmes logiciels volumineux et complexes est un formidable défi qui nécessite des activités supplémentaires pour soutenir le développement de logiciels et les processus de gestion de projet. Dans ce scénario, le data mining (fouille de données) peut fournir une main utile dans le processus de développement logiciel. 3 Bien que l'application de data mining aux artefacts de génie logiciel soit relativement nouveau, il existe des lieux spécifiques dans lesquels des articles connexes sont publiés et des auteurs ont créé des ressources similaires à cette enquête. Rapport sur l'état de l'art du DACS (Mendonca et Sunderhaft, 1999) enquête résumant l'état de datamining pour le génie logiciel pour le DACS (Centre de données et d'analyse pour les logiciels). Au fils des 10 ans (Xie ,2010) Création d’une bibliographie en ligne sur les données de génie logiciel d'exploitation L'atelier Mining Software Repositories (MSR), (2004) Création de la 1 ère Conférence internationale sur le génie logiciel par MSR Enquête complète (Kagdi et al. 2007) Une étude complète des approches de la MSR dans le contexte de l'évolution des logiciels. 4 La première étape du processus de découverte des connaissances consiste à mieux comprendre les données disponibles et les objectifs commerciaux qui animent le processus . Il existe de nombreuses sources de données en génie logiciel, nous nous concentrons uniquement sur quatre grands groupes et décrivons comment ils peuvent être utilisés pour extraction de données d'ingénierie logicielle. Bugzilla Mailings Code CVS Execution repository traces 5 La majorité des organisations de développement de logiciels collaboratifs utilisent des logiciels de gestion de versions (par exemple, CVS, Subversion, Git, etc.) Permet de gérer le développement continu des actifs numériques sur lesquels une équipe de personnes peut travailler. Conserver un historique de chaque révision. Autorisez les utilisateurs à accéder aux versions précédentes et à revenir à celles-ci. Fournit un moyen d'analyser les artefacts historiques produits pendant le développement du logiciel. Tels que le nombre de lignes écrites, les auteurs qui ont écrit des lignes particulières ou un certain nombre de métriques logicielles courantes. 6 La plupart des grandes organisations (et de nombreuses petites) utilisent également un système de gestion des bogues (tel que Bugzilla ) . Peut être exploité pour découvrir des modèles dans les processus de développement logiciel, y compris le temps de réparation, les composants sujets aux défauts,les auteurs problématiques, etc. Certains suiveurs de bogues sont capables de corréler les défauts avec le code source dans un système de révision. 7 Pratiquement toutes les équipes de développement de logiciels utilisent une forme de communication électronique (e-mail, messagerie instantanée, etc.) Fait partie du développement collaboratif (la communication en petites équipes peut être principalement ou exclusivement verbale, mais de tels cas sont sans conséquence du point de vue de l'exploitation de données). Les techniques d'exploitation de texte peuvent être appliquées aux archives de ces communications pour mieux comprendre les processus de développement, les bogues et les décisions de conception. 8 La documentation logicielle et les bases de connaissances peuvent être extraites pour fournir des informations supplémentaires sur les processus de développement logiciel. Utile pour les organisations qui utilisent les mêmes processus sur plusieurs projets et souhaitent examiner un processus en termes d'efficacité globale ou d'adéquation pour un projet donné. Les bases de connaissances peuvent contenir du code source, cette approche se concentre principalement sur la récupération d'informations à partir de langues naturelles. 9 1. Règles d'association et modèles fréquents : Une des techniques les plus populaires de la fouille de données .Un modèle fréquent est un modèle (ensemble d'éléments, de sous-séquences, de sous-graphiques, etc.) qui se produit fréquemment dans un ensemble de données. Proposé pour la première fois par Agrawal et al en 1993 dans le contexte d'ensembles d'articles fréquents et d'exploration de règles d'association pour l’analyse de base de données de transactions de ventes. 10 2. 3. 4. Classification : La classification est une fonction d' exploitation de données qui affecte des éléments d'une collection à des catégories ou des classes cibles. L'objectif de la classification est de prédire avec précision la classe cible pour chaque cas des données . Clustering : Le cluster est un groupe d'objets appartenant à la même classe. En d'autres termes, des objets similaires sont regroupés dans un cluster et des objets différents sont regroupés dans un autre cluster. Exploitation de texte : L'exploration de texte, également appelée exploration de données de texte, à peu près équivalente à l'analyse de texte, est le processus de dérivation d'informations de haute qualité à partir de texte. Des informations de haute qualité sont généralement obtenues par la conception de modèles et de tendances par des moyens tels que l'apprentissage de modèles statistiques 5. 11 aperçu du domaine d'exploration de données de génie logiciel programming defect detection testing debugging maintenance software engineering tasks data mining techniques code bases change history program states structural entities bug reports/nl software engineering data 12 Le data mining en génie logiciel aide : au processus de développement, à l'aspect gestion, et au processus de recherche pour le développement d'un logiciel ou d'un programme. Lors du développement d'un logiciel, les développeurs veulent savoir s'il existe un autre logiciel similaire et ce que les gens n'aiment pas à ce sujet, alors lorsqu'ils développent, ils peuvent améliorer ces plaintes. Il s'agit d'être meilleur que vos concurrents avec votre logiciel sinon vous perdrez ou serez dans le même bateau que votre concurrent. Si votre programme est plus productif et fonctionne plus efficacement, vous aurez l'avantage. 13 il y aura toujours des limites et des défis à l'exploitation de données dans n'importe quel domaine et ce champ ne sera pas exclu. Trouver des informations pertinentes est toujours très important , Car: vous pouvez parfois collecter beaucoup d'informations mais si elles ne sont pas pertinentes, elles sont inutiles. la quantité de données qu'ils collectent et stockent :Ils peuvent collecter beaucoup d'informations qu'ils n'auront peut-être même jamais la possibilité de consulter. le type de données lui-même. Comme indiqué dans cette revue :«Les ingénieurs logiciels utilisent généralement des types de données individuels pour effectuer une tâche d'ingénierie logicielle. Cependant, le domaine du génie logiciel peut être complexe et, par conséquent, les tâches de génie logiciel exigent de plus en plus l'exploitation de plusieurs types de données corrélées pour obtenir les résultats les plus efficaces. En outre, il y a des cas où des informations importantes ne sont pas seulement associées à des éléments de données individuels mais au lien entre eux. Ainsi, l'exigence de techniques qui analysent des types de données complexes en tenant également compte des liens entre les données SE est plus forte que jamais en génie logiciel.» (Halkidi, 2011). 14 Les processus de génie logiciel sont complexes et les activités connexes produisent souvent un grand nombre et une grande variété d'artefacts, ce qui les rend bien adaptés à l'exploration de données. Ces dernières années, l'utilisation de techniques de datamining sur tels artefacts a augmenté dans le but d'analyser et d'améliorer les processus logiciels pour une organisation ou un projet donné.Le datamining peut faire une contribution importante au succès des efforts actuels de génie logiciel, mais elle a toujours ses défis et ses limites. 15 16