Maintenance des logiciels
Contexte
La maintenance est la phase la plus coรปteuse du cycle de vie du logiciel. Ceci peut, entre autres, sโexpliquer par le fait quโelle est la phase la plus longue qui ne sโach ve quโavec le retrait du logiciel. Par ailleurs, le ratio du coรปt de la maintenance par rapport au coรปt total du logiciel est passรฉ de 40 ร 60 % dans les annรฉes 80 ร plus de 80% au d but de lโan 2000 [52]. Le coรปt รฉlevรฉ de la maintenance pousse les chercheurs et les industriels ร se focaliser sur cette phase du cycle de vie dโun syst me afin dโessayer de la comprendre pour mieux la contrรดler. Pour y arriver, il existe des techniques telles que la visualisation qui sert ร montrer les tendances g n r ales du syst me dโune fa on intuitive [41]. Par ailleurs selon les lois dโ volution des logiciels, comme indiqu dans [ 44], un syst me doit tre continuellement changรฉ. Autrement, il apportera moins de satisfaction dans son environnement. En effet, durant la phase de maintenance, les programmeurs sont amenรฉs ร faire des changements aux systรจmes pour de multiples raisons. Par exemple, les changements rรฉalisรฉs peuvent permettre de rรฉpondre ร de nouveaux besoins des utilisateurs. On parle dans ce cas, de maintenance perfective. La maintenance peut aussi consister ร apporter des changements afin de prรฉvenir les bogues (pr ventive), de sโadapter un nouvel environnement (adaptative), ou pour corriger des erreurs (corrective). Ainsi, les logiciels doivent subir plusieurs changements pour prolonger la durรฉe de leur vie.
Origine et Dรฉfinition de la rรฉtro-ingรฉnierie
Dโaprรจs [4], la rรฉtro-ingรฉnierie revient aux annรฉes de la rรฉvolution industrielle. Elle est semblable ร la recherche scientifique oรน les chercheurs essayent dโinventer des plans et des cartes aux phรฉnomรจnes naturels. La seule diffรฉrence est que la rรฉtro-ingรฉnierie concerne les objets crรฉรฉs par lโhomme (des appareils mรฉcanique, des composants รฉlectronique, des programmes informatique, โฆ). Dโune faรงon gรฉnรฉrale, la rรฉtro-ingรฉnierie est le processus dโextraction de connaissances ou de concevoir des reprรฉsentations ร partir de tout ce qui est construit par lโhomme. Dans le contexte de lโingรฉnierie logicielle, le terme rรฉtro-ingรฉnierie a รฉtรฉ dรฉfini en 1990 par Chikofsky et Cross dans [3] comme le processus dโanalyse dโun systรจme pour (1) identifier les composants du systรจme et leurs interrelations, et (2) crรฉer des reprรฉsentations du logiciel dans une autre forme ou dans un niveau dโabstraction plus รฉlevรฉ.
La rรฉtroingรฉnierie a รฉtรฉ traditionnellement vue comme un processus en deux รฉtapes : lโextraction des informations et lโabstraction. Lโรฉtape dโextraction des informations analyse les artefacts du logiciel pour recueillir des donnรฉes brutes, tandis que lโรฉtape dโabstraction crรฉe des vues et documents orientรฉs utilisateur ร partir des donnรฉes brutes [25]. Chikofsky et Cross ont prรฉsentรฉ une structure de base pour les outils implรฉmentant la rรฉtro-ingรฉnierie . Le logiciel รฉtudiรฉ est analysรฉ et les rรฉsultats de cette analyse sont stockรฉs dans une base dโinformations. Par la suite, ces informations sont utilisรฉes pour produire diffรฉrentes vues du logiciel, comme les diagrammes, les rapports, et les mรฉtriques.[34] La rรฉtro-ingรฉnierie est trรจs utile aux dรฉveloppeurs des logiciels. En effet, ils lโutilisent comme un moyen de coopรฉration et collaboration autour des logiciels qui ne disposent pas[36] (ou qui disposent partiellement) de la documentation. Ils peuvent lโutiliser aussi pour รฉtudier et amรฉliorer les logiciels concurrents. De plus, la rรฉtro-ingรฉnierie permet dโรฉvaluer la qualitรฉ et la robustesse dโun logiciel. Elle est รฉgalement le moyen essentiel dans les diffรฉrentes taches de lโรฉtape de maintenance qui reprรฉsente une รฉtape trรจs importante dans le cycle de vie de logiciel. En effet, une enquรชte effectuรฉe aux USA en 1986 auprรจs de 55 entreprises a rรฉvรฉlรฉ que 53% du budget total dโun logiciel est affectรฉ ร la maintenance [27]. La rรฉtro-ingรฉnierie facilite les taches de maintenances car elle permet de proposer aux personnes intervenant dans la maintenance des reprรฉsentations plus abstraites qui leur permet de comprendre le logiciel pour le tenir ร jour en fonction des nouveaux besoins des utilisateurs.
Impact de changement
La modification des systรจmes est une tรขche ร la fois difficile et porteuse de consรฉquence sur la suite de lโรฉvolution de ces systรจmes. Les effets des changements subis par le systรจme doivent donc รชtre pris en considรฉration. La motivation de notre travail est dโamรฉliorer la maintenance des systรจmes orientรฉs objet, et dโintervenir plus prรฉcisรฉment dans la tรขche de lโanalyse de lโimpact de changement[40]. Nous visons principalement la rรฉduction de lโeffort ainsi que le coรปt de la maintenance. La rรฉduction de cet effort peut รชtre accomplie par la rรฉduction du temps entre la proposition du changement, son implantation et sa rรฉalisation, tout en assurant la qualitรฉ du systรจme. Lโeffort peut รชtre aussi rรฉduit si on peut prรฉdire le comportement du systรจme face ร dโรฉventuels changements. Notre travail se situe beaucoup plus dans cet axe de recherche. Plus lโanalyse et la prรฉdiction dโimpact de changement est systรฉmatique, plus la rรฉduction dโeffort est ร notre avis optimale. Ainsi les bonnes dรฉcisions peuvent รชtre prises avant dโinitier les changements. En identifiant lโimpact potentiel dโune modification, on rรฉduit le risque de sโembarquer dans des changements coรปteux et imprรฉvisibles. Plus un changement affecte de classes, plus le coรปt de sa rรฉalisation nโest รฉlevรฉ. Lโanalyse des impacts de changement permettra ainsi dโรฉvaluer le coรปt dโun changement et de faire un compromis entre les diffรฉrents changements suggรฉrรฉs.
Un impact, dans son sens le plus large est lโeffet ou lโinfluence dโune chose sur une autre. Dans notre รฉtude, lโimpact est la consรฉquence dโun changement. Lโanalyse dโimpact est lโรฉtude de la portรฉe de cet impact. Lโanalyse dโimpact du changement est lโestimation des consรฉquences dโun changement sur le reste du systรจme. Elle a รฉtรฉ pratiquรฉe de diffรฉrentes maniรจres pendant des annรฉes. Pfleeger et Bohner [78] dรฉfinissent lโanalyse dโimpact du changement comme : โthe evaluation of the many risks associated with the change, including effects on resources, effort, and schedule estimatesโ. Arnold et Bohner [78] dรฉfinissent lโanalyse dโimpact par : โimpact analysis is the activity of identifying what to modify to accomplish a change or of identifying the potential consequences of a changeโ. Le dรฉveloppement des logiciels consomme beaucoup de temps et de ressources. Mais, les coรปts de dรฉveloppement sont de loin infรฉrieurs aux coรปts de maintenance. En fait, ces coรปts de maintenance reprรฉsentent un souci majeur, mรชme pour systรจmes conรงus avec des techniques avancรฉes telle que lโorientรฉ objet[41]. Dans les systรจmes, un flot continu de changements doit รชtre pris en compte sinon ces systรจmes risquent de devenir dรฉsuets ou mรชme dโรชtre abandonnรฉs. Il devient donc nรฉcessaire que les systรจmes objets dรฉveloppรฉs soient รฉvolutifs et capables dโabsorber facilement tout changement. Une analyse dโimpact permet en gรฉnรฉral dโรฉvaluer les consรฉquences dโune modification avant de lโimplรฉmenter et dโestimer ainsi les coรปts et risques associรฉs ร la modification.
Conclusion gรฉnรฉrale et perspectives
Rรฉduire le coรปt de la maintenance nรฉcessite de se procurer les moyens nรฉcessaires pour lโaccomplir. Lโanalyse de lโimpact du changement est lโune des techniques qui a connu de lโimportance dans le domaine de la maintenance ces derniรจres annรฉes. Le but de cette technique est de permettre aux gens responsables de la maintenance dโรฉvaluer le coรปt du changement ร priori, i.e., avant dโentamer lโimplรฉmentation du changement. Cette รฉvaluation se fait de deux faรงons : technique et gestion. La premiรจre, รฉvaluation technique, se base sur la comprรฉhension du logiciel en modification et sur lโidentification du changement, son impact et ses effets de propagation sur tout le systรจme. Suite ร cette analyse technique, lโรฉquipe de maintenance est en mesure de conclure sur la faisabilitรฉ technique du changement et proposer des solutions optimales qui ne compromettent pas les fonctionnalitรฉs du systรจme existant. La deuxiรจme, รฉvaluation du point de vue gestion (ressources humaines et financiรจres), est รฉtablie habituellement par les gestionnaires. Ces derniers peuvent choisir parmi les solutions proposรฉes celle qui satisfait les besoins ou dรฉcider de rรฉรฉtudier le changement pour des solutions plus sรปres. Lโanalyse dโimpact du changement a รฉtรฉ รฉtudiรฉe de diffรฉrentes maniรจres par diffรฉrents utilisateurs, en se basant sur un ensemble de concepts.
Notre approche dโaide ร la dรฉcision pour la gestion des projets de maintenance logicielle utilise lโanalyse dโimpact de changement dans les programmes ร objets ร base des mรฉtriques qui mesurent une propriรฉtรฉ architecturale des logiciels qui est le couplage. En premier lieu, nous avons procรฉder ร lโextraction de certaines mรฉtriques relatives ร la propriรฉtรฉ architecturale que lโon veut รฉvaluer ; il sโagit du couplage. Nous avons dรฉveloppรฉ un outil sous la plate-forme ECLIPSE qui permet dโanalyser un programme orientรฉ objet Java et dโextraire les mรฉtriques nรฉcessaires. Cette รฉtape sโest avรฉrรฉe importante pour mener notre expรฉrience. Notre approche aide le manager de maintenance ร choisir une solution parmi plusieurs en tenant en compte de deux aspect : la nature de changement et sa propagation dans le reste du systรจme.
|
Table des matiรจres
Introduction gรฉnรฉrale
1.1 Contexte
1.2 Problรฉmatique
1.3 Contribution
1.4 structure du mรฉmoire
Chapitre I : Maintenance des logiciels
1.Introduction
2.Les logiciels
2.1 L’รฉvolution des logiciels
2.2 Le gรฉnie logiciel
2.3 Qualitรฉ des logiciels
3.Cycle de vie d’un logiciel
4.Modรจles de cycle de vie d’un logiciel
4.1. Modรจle en cascade
4.2. Modรจle en V
4.3. Modรจle en spirale
4.4. Modรจle par incrรฉment
5.Maintenance des applications
5.1. Types de maintenance
5.2. Activitรฉs de maintenance
5.3. Problรจmes de maintenance
5.4. Techniques de maintenance
1.Rรฉtro-ingรฉnieurie
2.Rรฉeingenieurie
3.Analyse dโimpact
Chapitre II : Retro-ingรฉnierie des logiciels
1.Introduction
2.Origine et dรฉfinition de la rรฉtro-ingรฉnierie
3.Apporte la rรฉtro-ingenieurie logicielle
4.Demarche de la rรฉtro-ingenieurie logicielle
5.La dรฉmarche de la retro*ingenieurie des logicielle orientรฉ objet
Conclusion
Quelques Outils pour la Rรฉtro-ingรฉnierie
I.ptidej
prรฉsentation de ptidej
Fonctionnalitรฉs de la solution : PEPS, Ptidej for EcliPSe
3.Crรฉation dโ une extension pour Peps
Argo uml
Introduction
Caractรฉristiques
Intรฉgration de lโoutil Argo uml a netbeans pour la retro-ingรฉnierie
III.Entreprise Architect
reprรฉsentation entreprise architect
Chapitre III : Impact de changement
Introduction
Dรฉfinition lโimpact de changement
Intรฉrรชt de lโImpact de changement orientรฉ objet
Impact de changement orientรฉ objet
4.1 Objectif
4.2 Model conceptuel
4.2.1. Changement
4.2.2. Liens
4.3 Firewall de classe
Adaptation de model en java
Conclusion
ChapitreI V : Approche proposรฉ
Introduction et contribution
Approche proposรฉ
2.1. Extraction des composants
2.3. Prรฉsentation graphique
Rรฉalisation
3.1. Outil de dรฉveloppement
3.2 :mise en oeuvre de lโoutil
Conclusion
Conclusion gรฉnรฉrale et perspective
Bibliographie
ANNEXE
Tรฉlรฉcharger le rapport complet