RéingenierieRéingenierie: : Thi lTechnique pour la ...

32
Faculté des Sciences de l’Ingéniorat Faculté des Sciences de l’Ingéniorat partement d’informatique partement d’informatique Réingenierie Réingenierie: : T hi l T hi l Technique pour la Technique pour la Maintenance de logiciels Maintenance de logiciels 1 Maintenance de logiciels Maintenance de logiciels 1 Présenpar: Dr Nora BOUNOUR Dr Nora BOUNOUR

Transcript of RéingenierieRéingenierie: : Thi lTechnique pour la ...

Page 1: RéingenierieRéingenierie: : Thi lTechnique pour la ...

Faculté des Sciences de l’Ingéniorat Faculté des Sciences de l’Ingéniorat Département d’informatiqueDépartement d’informatiquep qp q

RéingenierieRéingenierie: : T h i lT h i lTechnique pour la Technique pour la

Maintenance de logicielsMaintenance de logiciels1 P é té

Maintenance de logicielsMaintenance de logiciels1 Présenté par:

Dr Nora BOUNOURDr Nora BOUNOUR

Page 2: RéingenierieRéingenierie: : Thi lTechnique pour la ...

RÉINGÉNIERIE “REENGINEERING”

La Réingénierie “Reengineering” est définit comme suit :

C’est l’examen et la modification du système pour corrigerles fautes, améliorer la conception ou les performances, etmodifier le produit pour satisfaire des exigencesmodifier le produit pour satisfaire des exigencesd’amélioration ou de changement [Chikovsky 90].

C’est l’altération d’un logiciel dans le but de le reconstruiresous une nouvelle forme censée être meilleure. Même sielle peut être utilisée pour des changements mineurs, elleelle peut être utilisée pour des changements mineurs, elleest souvent utilisée pour remplacer les logiciels âgés(héritage) «Legacy systems » [Swebock 04].

2

Master 2 ILC Maintenance: Techniques et Outils

2

Page 3: RéingenierieRéingenierie: : Thi lTechnique pour la ...

Fondamentalement un nouveau système est Fondamentalement, un nouveau système estgénéré à partir d'un système opérationnel, tel quele nouveau système possède de meilleurs facteursle nouveau système possède de meilleurs facteursde qualité. Les facteurs de qualité de logicielssouhaités comprennent la fiabilité, l'exactitude,

é é é él'intégrité, l'efficacité, la maintenabilité, laconvivialité, la flexibilité, la testabilité,l'interopérabilité la réutilisation et la portabilitél interopérabilité, la réutilisation et la portabilité.

3

Master 2 ILC Maintenance: Techniques et Outils

3

Page 4: RéingenierieRéingenierie: : Thi lTechnique pour la ...

LES CONCEPTS DE LA RÉINGÉNIERIE

L’abstraction et le raffinement sont les concepts cléstili é d l dé l t d l i i l t l dutilisés dans le développement de logiciels, et les deux

concepts sont également utiles dans la réingénierie.

Principe de l’abstraction. Le niveau d'abstraction de lareprésentation d'un système peut être progressivementreprésentation d un système peut être progressivementdéveloppé en remplaçant successivement les détails parune information abstraite.

Principe de raffinement. Le niveau d'abstraction de lac pe de a e e t e eau d abst act o de areprésentation du système est progressivement diminuéen remplaçant successivement certains aspects du

è é 4

Master 2 ILC Maintenance: Techniques et Outils

système avec plus de détails 4

Page 5: RéingenierieRéingenierie: : Thi lTechnique pour la ...

5

Figure 1. Levels of abstraction and refinement. © 1992 IEEE

Master 2 ILC Maintenance: Techniques et Outils

5

Page 6: RéingenierieRéingenierie: : Thi lTechnique pour la ...

Niveau conceptuel Au plus haut niveau Niveau conceptuel. Au plus haut niveaud'abstraction, le logiciel est décrit en termes deconcepts de très haut niveau et sa raison d'êtreconcepts de très haut niveau et sa raison d être(pourquoi ? pourquoi le système existe-t-il ?)

Niveau des besoins. A ce niveau, lescaractéristiques fonctionnelles (quoi ?) du systèmesont décrites à un niveau élevé, (que permet defaire le système ?)

6

Master 2 ILC Maintenance: Techniques et Outils

6

Page 7: RéingenierieRéingenierie: : Thi lTechnique pour la ...

Niveau de la conception Au niveau de la Niveau de la conception. Au niveau de laconception-raffinement, les caractéristiques dusystème (quoi ? et comment ?), à savoir, lessystème (quoi ? et comment ?), à savoir, lesprincipaux composants, le style architectural descomposants, les interfaces entre les composants,

éles algorithmes, structures de données internesmajeures, et les bases de données sont décrites endétaildétail.

Niveau d’implémentation Ceci est le plus bas Niveau d’implémentation. Ceci est le plus basniveau d'abstraction dans la hiérarchie. À ce niveau,le système est décrit à un niveau très faible en 7

Master 2 ILC Maintenance: Techniques et Outils

le système est décrit à un niveau très faible en 7

Page 8: RéingenierieRéingenierie: : Thi lTechnique pour la ...

PRINCIPE D'ALTÉRATION

En plus des deux principes de l'abstraction et de En plus des deux principes de l abstraction et deraffinement, un principe optionnel appelé altérationsous-tend de nombreuses méthodes desous tend de nombreuses méthodes deréingénierie.

Principe d'altération. Tout changement effectuép gà la représentation d’un système est connu commel'altération. L’altération n’implique aucunh t d é d l' b t ti t ’i lichangement au degré de l'abstraction, et n’implique

pas une modification, ou une suppression ou ajoutd’informationd information.

8

Master 2 ILC Maintenance: Techniques et Outils

8

Page 9: RéingenierieRéingenierie: : Thi lTechnique pour la ...

La Figure 2 montre l'utilisation des trois principes La Figure 2 montre l utilisation des trois principesfondamentaux pour expliquer les caractéristiques deréingénierie.

9

Master 2 ILC Maintenance: Techniques et Outils

9

Page 10: RéingenierieRéingenierie: : Thi lTechnique pour la ...

RESTRUCTURATION

Un autre terme étroitement liée à «l’Altération» est Un autre terme étroitement liée à «l Altération» estla restructuration.

Dans le contexte de la réingénierie, le terme«restructuration» est défini comme la«restructuration» est défini comme latransformation d'une forme de représentation à uneautre au même niveau d’abstraction tout enpréservant le comportement extérieur du système.

10

Master 2 ILC Maintenance: Techniques et Outils

10

Page 11: RéingenierieRéingenierie: : Thi lTechnique pour la ...

PROCESSUS DE RÉINGÉNIERIE

Avant qu'un système logiciel puisse être maintenu:

Il doit être analysé, en effet, un modèle mental du logiciel doit êtreconstruit dans lequel les décisions de conception sont bien représentéesconstruit dans lequel les décisions de conception sont bien représentées.

Les modifications sont ensuite implémentées.p

Les éléments du cycle de vie de la réingénierie de logiciely g gsont alors:

la rétro-ingénierie « Reverse Engineering »,t l dé l t F d E i i et le redéveloppement « Forward-Engineering »

11

Master 2 ILC Maintenance: Techniques et Outils

11

Page 12: RéingenierieRéingenierie: : Thi lTechnique pour la ...

Ce processus est formellement présenté par Ce processus est formellement présenté parJacobson et Lindstorm par l'expression suivante :

Reengineering = Reverse engineering + Δ + Forward engineering.

I Jacobson and F Lindstrom 1991 Re-engineeringI. Jacobson and F. Lindstrom. 1991. Re engineeringof Old Systems to an Object-oriented Architecture.Proceedings of the ACM Conference on ObjectOriented Programming Systems Languages andApplications, October 1991. ACM Press, New York,NY pp 340 350 12

Master 2 ILC Maintenance: Techniques et Outils

NY. pp. 340–350. 12

Page 13: RéingenierieRéingenierie: : Thi lTechnique pour la ...

CYCLE DE VIE DE LA RÉINGÉNIERIE DU LOGICIEL

13

Master 2 ILC Maintenance: Techniques et Outils

13

Page 14: RéingenierieRéingenierie: : Thi lTechnique pour la ...

REDÉVELOPPEMENT “FORWARD ENGINEERING”

C’est le processus traditionnel permettant de passer des C est le processus traditionnel permettant de passer desabstractions de haut niveau et de la conception logiqueindépendante de l’implémentation à la mise en œuvrephysique d'un système.

14

Master 2 ILC Maintenance: Techniques et Outils

14

Page 15: RéingenierieRéingenierie: : Thi lTechnique pour la ...

MODEL OF SOFTWARE REENGINEERING. 1992 IEEE1992 IEEE

15

Master 2 ILC Maintenance: Techniques et Outils

15

Page 16: RéingenierieRéingenierie: : Thi lTechnique pour la ...

LES TYPES DE MODIFICATION

Le modèle de la figure 3 suggère qu'un système existant peut Le modèle de la figure 3 suggère qu un système existant peut être restructuré par l'un des quatre chemins suivants :

(recode, redesign, respecify, rethink).

Les modifications au sein d'un groupe particulier se traduisent Les modifications au sein d un groupe particulier se traduisentpar des modifications dans les niveaux d'abstractioninférieurs. Par exemple, un besoin se traduit par de nombreuxélé t d ti t t d ti téléments de conception, et un composant de conception estréalisée par un bloc de code source. Ainsi, un petitchangement dans un composant de conception peut

16

Master 2 ILC Maintenance: Techniques et Outils

nécessiter plusieurs modifications au code. 16

Page 17: RéingenierieRéingenierie: : Thi lTechnique pour la ...

RecoderRecoder.Les modifications au niveau du code source sontff t é d f l ti ( h i )effectuées au moyen de reformulation (rephrasing)

et de traduction du programme. Dans cettedernière approche un programme est transformédernière approche, un programme est transforméen un programme dans un langage différent.D'autre part, la reformulation maintient lep ,programme dans le même langage.

17

Master 2 ILC Maintenance: Techniques et Outils

17

Page 18: RéingenierieRéingenierie: : Thi lTechnique pour la ...

EXEMPLES

Normalization reduces a program to a program in a Normalization reduces a program to a program in a sublanguage, that is to a subset of the language, with the purpose of decreasing its syntacticwith the purpose of decreasing its syntactic complexity. Elimination of GOTO dans un programme sont des examples de normalization de programme.

Optimization is a transformation that improves the execution time or space performance of a program.

Refactoring is a transformation that improves the d i f b f t t i t 18

Master 2 ILC Maintenance: Techniques et Outils

design of a program by means of restructuring to better understand the new program

18

Page 19: RéingenierieRéingenierie: : Thi lTechnique pour la ...

Reconcevoir Reconcevoir.Les caractéristiques de conception du logiciel sont modifiéespar la reconception dusystème. Les Changements généraux de la conception dulogiciel incluent :

(i) la restructuration de l'architecture ;(ii) la modification du modèle de données du système ;(iii) l l t d' éd d' l ith t(iii) le remplacement d'une procédure ou d'un algorithme par un autre

plus efficace.

19

Master 2 ILC Maintenance: Techniques et Outils

19

Page 20: RéingenierieRéingenierie: : Thi lTechnique pour la ...

Respécifier Respécifier.Cela implique de changer les caractéristiques desbesoins du système de deux façons :besoins du système de deux façons :

(i) changement de la forme des besoins

(ii) (ii) changement de la portée des besoins. Lapremière façon se réfère seulement à lapremière façon se réfère seulement à lamodification de la forme des besoins existants, ledernier type de changements inclut lesmodifications comme l'ajout de nouveaux besoins,la suppression de certains besoins et la

difi ti d t i b i i t t 20

Master 2 ILC Maintenance: Techniques et Outils

modification de certains besoins existants. 20

Page 21: RéingenierieRéingenierie: : Thi lTechnique pour la ...

Repenser Repenser.Ceci implique de modifier les caractéristiquesconceptuelles du système ceci peut conduire leconceptuelles du système, ceci peut conduire lesystème à un changement fondamental. Latransition du développement pour les téléphonespp p pcellulaires ordinaires vers le développement dessmartphones est un exemple de « Rethink ».

21

Master 2 ILC Maintenance: Techniques et Outils

21

Page 22: RéingenierieRéingenierie: : Thi lTechnique pour la ...

les stratégies de la réingénierie logicielleg g g

Les Trois stratégies de la réingénierie sont : Les Trois stratégies de la réingénierie sont :

Réécriture (rewrite)Réécriture (rewrite),Retravailler (rework),R l ( l )Remplacer (replace).

22

Master 2 ILC Maintenance: Techniques et Outils

22

Page 23: RéingenierieRéingenierie: : Thi lTechnique pour la ...

BASE CONCEPTUELLE DES STRATÉGIES DERÉINGÉNIERIE. © 1992 IEEERÉINGÉNIERIE. © 1992 IEEE

23

Master 2 ILC Maintenance: Techniques et Outils

23

Page 24: RéingenierieRéingenierie: : Thi lTechnique pour la ...

La stratégie Rewrite Au moyen de l’altération La stratégie Rewrite. Au moyen de l altération,un système opérationnel est transformé en unnouveau système, tout en préservant le niveaunouveau système, tout en préservant le niveaud'abstraction du système initial.

24

Master 2 ILC Maintenance: Techniques et Outils

24

Page 25: RéingenierieRéingenierie: : Thi lTechnique pour la ...

La stratégie Rework La stratégie « Retravailler » La stratégie Rework. La stratégie « Retravailler »applique les trois principes. Tout d'abord, par lebiais du principe d'abstraction, permet d'obtenir unebiais du principe d abstraction, permet d obtenir unereprésentation du système avec moins de détailsque ce qui est disponible à un niveau donné.

è è éEnsuite, le modèle du système reconstitué esttransformé dans la représentation du système cible,au moyen d'une altération sans changer le niveauau moyen d une altération, sans changer le niveaud'abstraction. Enfin, par le biais de raffinement, unenouvelle représentation appropriée du système estou e e ep ése tat o app op ée du systè e estcréée à un niveau inférieur de l'abstraction.

25

Master 2 ILC Maintenance: Techniques et Outils

25

Page 26: RéingenierieRéingenierie: : Thi lTechnique pour la ...

La stratégie Replace Dans le but de changer La stratégie Replace. Dans le but de changerune certaine caractéristique d'un système :

(i) le système est reconstruit à un niveau d'abstractionplus élevé en cachant les détails de la caractéristique

(ii) une représentation appropriée pour le système ciblet é é é à i d' b t ti i fé iest générée à un niveau d'abstraction inférieur par

application de raffinement.

26

Master 2 ILC Maintenance: Techniques et Outils

26

Page 27: RéingenierieRéingenierie: : Thi lTechnique pour la ...

CLASSIFICATION DES TRANSFORMATIONS[ CHIKOVSKY 90]

27

Master 2 ILC Maintenance: Techniques et Outils

27

Page 28: RéingenierieRéingenierie: : Thi lTechnique pour la ...

TABLE 1. TAXONOMIE DE CHIKOFSKY ANDCROSS [CHIKOVSKY 90]CROSS [CHIKOVSKY 90]

28

Master 2 ILC Maintenance: Techniques et Outils

28

Page 29: RéingenierieRéingenierie: : Thi lTechnique pour la ...

LA RESTRUCTURATION

L’objectif premier de la restructuration est d’améliorer lamaintenabilité du code pour diminuer les coûts demaintenance.

Au-delà de cet objectif, la rénovation a des implications suré éla stratégie d’évolution des applications. En effet, lorsqu’une

application devient trop difficile à maintenir le managementa deux options :a deux options :

Réécrire l’application Réécrire l application. Remplacer l’application par une autre application.

29

Master 2 ILC Maintenance: Techniques et Outils

29

Page 30: RéingenierieRéingenierie: : Thi lTechnique pour la ...

LA RESTRUCTURATION

Elle désigne une activité qui transforme la structure interne d’ung qprogramme ou d’un logiciel sans changer de niveau d’abstraction etsans modifier ou ajouter de nouvelles fonctions. Elle visesans modifier ou ajouter de nouvelles fonctions. Elle visehabituellement à accroître la qualité technique d’une application ouà présenter un ou plusieurs composants sous une autre formeà présenter un ou plusieurs composants sous une autre forme.

Elle n’ajoute aucune fonctionnalité au système et ne répond pas àun besoin fonctionnel des utilisateurs.

30

Master 2 ILC Maintenance: Techniques et Outils

30

Page 31: RéingenierieRéingenierie: : Thi lTechnique pour la ...

LA RESTRUCTURATION

Cette activité de restructuration recouvre différents types d’actions, qui vonts’adapter à la façon dont est fait le logiciel. On va recourir souvent à troisétapes de travail :

1. la restructuration des flux : Le but de ce travail de nettoyage du code est deretrouver une structure globale tout à fait cohérente sur l’application.

on va tenté d’améliorer la structure globale des modulescomposants l’application. Ceci va se traduire par exemple par leregroupement de fonctions/méthodes éparpillées dans diversmodules, de classer les diverses fonctions avec plus decohérence. 31

Master 2 ILC Maintenance: Techniques et Outils

31

Page 32: RéingenierieRéingenierie: : Thi lTechnique pour la ...

LA RESTRUCTURATION

2 é l ’ ff l’ l h d d f2. La restructuration peut également s’effectuer sur l’algorithmique du code, afin

de le rendre plus efficace, ou plus clair.

On va dans cette phase supprimer le code mort et les variables non utilisées On va dans cette phase, supprimer le code mort et les variables non utilisées,supprimer les fichiers devenus inutiles,

remplacer par exemple les structures IF ELSE IF imbriqué par des structuresremplacer par exemple les structures IF ELSE IF imbriqué par des structuresCASE, plus clair, et surtout moins coûteux en temps de calcul (L’interprétationd’un case consomme une seule évaluation d’instruction booléenne, tandis qu’il ya autant d’instructions et de test évalués que de IF imbriqués).

3. Normalisation des noms dans code.

32

Master 2 ILC Maintenance: Techniques et Outils

32