TAXONOMIE DE LA MAINTENANCE ET DE L’ÉVOLUTION DES LOGICIELS
Contexte
La maintenance ou l’évolution est une étape incontournable dans le cycle de vie d’un logiciel. Plusieurs travaux ont, depuis de nombreuses années, mis en évidence l’importance de la maintenance et/ou évolution de logiciel et ont dressé des taxinomies, (Kitchenham et al., 1999). Les plus anciens ont permis de considérer trois sortes de maintenance (Swanson, 1976) : la maintenance corrective consistant à réaliser des opérations de changement dans le logiciel afin de supprimer des erreurs ou fautes pouvant être originales ou résultant d’effets de bord de changements induits par le processus de maintenance; la maintenance adaptative consistant à adapter le logiciel aux changements de son environnement tels que le changement des infrastructures de déploiement; la maintenance perfective consiste en des changements visant à améliorer le logiciel en y introduisant notamment de nouvelles fonctionnalités ou en améliorant ses performances, etc. A ces trois sortes de maintenance s’est ajoutée la maintenance dite préventive (Chapin, Hale, Khan, Ramil, & Tan, 2001) dont le but est d’améliorer l’aptitude du logiciel à évoluer.
En d’autres termes cette dernière sorte de maintenance permet l’amélioration du critère de maintenabilité ou d’évolutivité du logiciel sans que cela se traduise par des modifications de ses fonctionnalités ou de ses performances. Dans nos travaux, nous ne faisons pas de différence entre maintenance et évolution bien que ces deux concepts ont été sujets à de nombreuses comparaisons. La maintenance est souvent vue comme un processus d’ingénierie dans lequel les travaux de recherche académiques ont consisté à en délimiter et caractériser les étapes, les activités à mener, les acteurs et les ressources à mettre en oeuvre,…etc. En d’autres termes le concept de maintenance est le résultat d’une sorte de morphisme entre le monde industriel et l’activité de développement de logiciels. Le terme évolution de logiciel est le résultat de travaux (Belady & Lehman, 1976; Meir M Lehman, 1980; Meir M Lehman, Ramil, Wernick, Perry, & Turski, 1997)) ayant pour but de comprendre le phénomène de changement affectant les artefacts logiciels. Les lois d’évolution de Lehmann (Meir M Lehman et al., 1997) par exemple tentent d’expliquer la manière dont les logiciels évoluent jusqu’à devenir obsolètes. Ces lois sont le résultat d’études empiriques menées pendant plusieurs années sur des logiciels de taille réelle.
Dans le même ordre d’idée, les auteurs dans (V. T. Rajlich & Bennett, 2000) ont dressé dans un cycle de vie du logiciel conçu non comme un moyen de développer le logiciel mais comme une explication de la manière dont les logiciels sont produits, évoluent, sont maintenus pour finir par être retirés des systèmes d’information. En ce qui nous concerne, nous utiliserons de façons indifférentes les termes maintenance ou évolution. Ce qui nous intéresse particulièrement est la notion de changement et au-delà la maîtrise du processus de changement et plus particulièrement l’analyse de l’impact de ces changements. Il est clair que l’une des préoccupations majeures des acteurs du développement est de maîtriser le processus du changement. En effet, un changement non maîtrisé peut induire rapidement à un glissement en termes de coût et de délais pouvant conduire à des échecs de projets de maintenance/évolution de logiciels. Cela est d’autant plus critique que plusieurs études ont, depuis longtemps, montré l’influence de la maintenance sur le coût global d’une application informatique (Ferens, 1999). Par ailleurs, selon la norme ISO 250010 Model (ISO/ IEC CD 25010 2007) (José, Mauricio, & Rodríguez, 2014), la maintenabilité ou évolutivité constitue une des principales composantes de la qualité d’un logiciel.
Problématique
Dans cette thèse, nous nous intéressons à l’estimation de l’impact du changement du logiciel mais d’un point de vue quantitative. En d’autres termes nous essayons de produire une modélisation à base d’équations mathématiques nous permettant d’estimer, en quelque sorte, le coût du changement d’un logiciel donné. En effet, une modification dans un objectif d’évolution d’un logiciel se traduit par des changements opérés dans le code source dans le but d’améliorer ou corriger son fonctionnement. Ces changements englobent toute modification apportée à l’un des éléments du logiciel (variable, méthode ou classe). Par exemple, la suppression d’une variable, la modification de la portée d’une méthode, ou le déplacement du lien entre une classe et son parent, etc. Un changement peut avoir des effets considérables et inattendus sur le reste du système. Le danger encouru lors d’une modification se manifeste par des effets de bord indésirables. Pour éviter ces situations, il serait intéressant d’estimer l’impact de changement avant même d’opérer le changement. La question qui se pose à ce stade est le choix des connaissances à utiliser pour réaliser cette estimation. Selon Chidamber et Kemerer (Chidamber & Kemerer, 1994), un code est caractérisé par un certain nombre de mesures qui reflètent sa structure. Ceci constitue à notre avis une base intéressante permettant d’estimer l’effet de changement. Pour cela, nous proposons dans nos travaux d’étudier la faisabilité de l’estimation de l’impact de changement à travers des métriques. Autrement dit, nous proposons de modéliser le lien qui existe entre l’impact de changement et les métriques dites de couplage.
Travaux connexes
Le changement est une caractéristique cruciale et inévitable du logiciel tout au long de son cycle de vie. Ceci est dû aux efforts de maintenance et/ou d’évolution nécessaires concernant les différents artefacts logiciels conduisant inévitablement à des opérations de changement les affectant. Depuis plus de quatre décennies, de nombreux travaux ont été consacrés à ce domaine de l’ingénierie logicielle, donnant lieu à de nombreuses définitions et taxonomies (Meir M. Lehman & Ramil, 2002). Les travaux dans ce domaine peuvent être globalement classés selon différentes approches : ceux qui concernes les artefacts touchés par le changement; d’autres qui s’intéressent aux métriques mesurant les attributs de tels artefacts ; et certaines études empiriques qui traitent principalement les données historiques des logiciels. Ci-après, nous considérons quatre approches basées respectivement sur la représentation graphique du logiciel, l’utilisation de métriques logicielles, l’utilisation de modèles, et l’utilisation de données historiques. Les approches concernant la représentation logicielle à base de graphes consistent à extraire un graphe basé sur les artefacts logiciels afin d’illustrer la propagation de l’impact du changement.
Dans (Abdi & Dinedane, 2015), un graphe de dépendance du système a été extrait. L’idée sous-jacente est de mesurer l’accessibilité des différents noeuds du graphe. Il s’agit du calcul des fermetures transitives des relations représentées par les arêtes du graphe. Considérons que cette fermeture détermine la force de la dépendance entre les noeuds en tant que composants liés ou fortement lié. Par conséquent, cette fermeture peut informer sur la propagation de l’impact du changement. Ce dernier est souvent calculé à l’aide d’un algorithme largement appliqué, appelé algorithme de Warshall (Warshall S., 1962). Dans (Bouneffa & Ahmad, 2013), le logiciel est représenté par un modèle basé sur un système de réécriture de graphes où les composants logiciels sont liés par des relations significatives. Dans ce contexte (Musco, Monperrus, & Preux, 2014) proposent un modèle générique de graphes de dépendance logicielle qui synthétise les graphes où la distribution des degrés est proche de celle empirique observée dans les systèmes logiciels réels.
Ce modèle fournit de nouvelles informations sur les règles fondamentales potentielles de l’évolution du logiciel. Dans (Ahmad, Basson, & Bouneffa, 2017), les auteurs proposent une approche de modélisation globale pour interroger les interdépendances structurelles et qualitatives d’un logiciel lors de l’intégration de plusieurs modifications. Dans (Bhattacharya, Iliofotou, Neamtiu, & Faloutsos, 2012), les auteurs construisent des graphes qui capturent les structures logicielles, puis exploitent les avancées récentes en matière d’analyse de la topologie des graphes pour mieux comprendre l’évolution du logiciel. Dans (Abdeen, Bali, Sahraoui, & Dufour, 2015), les indicateurs d’impact de changement sont tirés des graphiques d’impact de changement antérieurs, extraits de l’historique des versions, ainsi que de leurs associations avec différents facteurs déterminants de la propagation du changement.
|
Table des matières
INTRODUCTION GÉNÉRALE
CONTEXTE
PROBLÉMATIQUE
TRAVAUX CONNEXES
ORGANISATION DE LA THÈSE
EVOLUTION DE LOGICIEL
INTRODUCTION
ÉVOLUTION VERSUS MAINTENANCE
TAXONOMIE DE LA MAINTENANCE ET DE L’ÉVOLUTION DES LOGICIELS
a) Caractéristiques de la maintenance de logiciel
b) Réutilisation des modèles orientés
c) Itératif Vs. Incrémentale
d) Evolution de logiciel
e) Maintenance de logiciel
f) Normes de maintenance de logiciel
g) Modèles et processus d’évolution des logiciels
a) Modèles itératifs.
b) Modèles de changement en mini‐cycles.
GESTION DE L’ÉVOLUTION DE LOGICIEL
a) Gestion de configuration logicielle
b) Réingénierie
c) Rétro ingénierie
d) Analyse d’impact
CRITÈRES D’ÉVALUATION DE LA QUALITÉ DU CODE SOURCE D’UN LOGICIEL
LES MÉTRIQUES DE LOGICIEL
a) Différents types de métriques
b) Quelques métriques de conception orientée objet
CONCLUSION
IMPACT DE CHANGEMENT
INTRODUCTION
DÉFINITION DE L’IMPACT DE CHANGEMENT
PROCESSUS DU CHANGEMENT
DÉFINITIONS DE L’ANALYSE DE L’IMPACT DE CHANGEMENT
INTÉRÊTS DE L’ANALYSE DE L’IMPACT DE CHANGEMENT
TECHNIQUES D’ANALYSE D’IMPACT
a) Analyse de traçabilité
b) Analyse de dépendance
c) Analyse de l’effet d’entraînement
d) Propagation du changement
EFFET DE VAGUE’’RIPPLE EFFECT ’’
APPROCHES D’ANALYSES D’IMPACT DE CHANGEMENT
EVALUATION ET PROPAGATION D’IMPACT
OUTILS D’ANALYSE D’IMPACT
a) Chianti
b) FaultTracer
c) ImpactMiner
d) JRipples
e) Lattix
f) JArchitect
CONCLUSION
LA TECHNIQUE DE PLAN D’EXPÉRIENCES ″DESIGN OF EXPERIMENTS″ (DOE)
INTRODUCTION
DÉFINITION
ESPACE EXPÉRIMENTAL
MODÉLISATION MATHÉMATIQUE
DOMAINE EXPÉRIMENTAL
LES PLANS D’EXPÉRIENCES
b) Plans à plusieurs niveaux
c) Plans pour surfaces de réponse
d) Plans de mélanges
e) Plans Booléens
f) Plans pour simulations numériques
CONCLUSION
EXPÉRIMENTATION ET RÉSULTATS
1) INTRODUCTION
a) Coupling Between Objects (CBO)
b) Response For a Class (RFC)
c) Message Passing Coupling (MPC)
3) MÉTHODOLOGIE DE RECHERCHE
4) CONTEXTE DE L’ÉTUDE
5) MODÉLISATION D’ÉQUATIONS MATHÉMATIQUES
6) VALIDATION EMPIRIQUE
7) PLAN D’EXPÉRIENCES
8) OUTIL PROTOTYPE
9) AJUSTEMENT DES PARAMÈTRES POUR LA DOE
10) APPLICATION DES PARAMÈTRES DOE AJUSTÉS
11) EXÉCUTION DE LA MÉTHODE DOE
12) TEST DE ROBUSTESSE DU MODÈLE
13) ANALYSE DE DONNÉES
14) CONCLUSION
CONCLUSIONS ET PERSPECTIVES
A. CONCLUSIONS
B. PERSPECTIVES
RÉFÉRENCES
ANNEXES
Télécharger le rapport complet