Université de Tiaret 01/12/2016 Département d’informatique Module : Maintenance
Université de Tiaret 01/12/2016 Département d’informatique Module : Maintenance des logiciels Promotion : 2ème année Master Génie Logiciel Fiche de TD N° : 3 Exercice 1 : Expliquer les principes de l'abstraction, le raffinement et l'altération dans le contexte de la réingénierie du logiciel. Exercice 2 : Quelles sont les différences entre la réingénierie, la rétro-ingénierie, l’ingénierie directe et le rehosting. Exercice 3 : Expliquer les différences entre la translation et le rephrasing d’un programme. Discuter différents types de translation et de rephrasing d’un programme. Exercice 4 : Expliquer les stratégies de réingénierie « Rework » et le « Replace » en présentant des exemples concrets. Exercice 5 : Expliquer les concepts de représentation et de visualisation. Est-ce qu’un objet graphique peut être à la fois une représentation dans un contexte et une visualisation dans une autre ? Expliquer avec un exemple. Exercice 6 : Dessinez le CFG pour l'exemple de code suivant. Déterminer le nombre cyclomatique du graphique. Exercice 7 : Donner des tranches séparément sur nw, nc, nl, inword, et c du programme suivant de comptage de mot. Solution de l’exercice 1 : Principe de l'abstraction : L'augmentation progressive du niveau d'abstraction d'une représentation du système est créée par le remplacement successif de l’information détaillée existante par une information plus abstraite. L’abstraction produit une représentation qui souligne certaines caractéristiques du système en éliminant des informations sur d’autres caractéristiques. Principe de raffinement : La diminution progressive du niveau d'abstraction d'une représentation du système est causée par le remplacement successif de certains aspects du système existant avec des informations plus détaillées. Le principe de l‘altération est définie comme suit : Principe de l‘altération : l‘altération est la réalisation d'un ou plusieurs changements à une représentation du système sans changer le degré d'abstraction, y compris l'ajout, la suppression et la modification des informations. Solution de l’exercice 2 : Le Reengineering est l'examen, l'analyse et la restructuration d'un système logiciel existant pour le rétablir sous une nouvelle forme, et l’implémentation ultérieure de la nouvelle forme. L'objectif est de comprendre les artefacts du logiciel existant (spécification, conception, implémentation) pour améliorer la fonctionnalité, la performance, la réutilisation, la maintenabilité ou l'évolutivité du système. L’ingénierie directe (Forward Engineering) suit une séquence d’activités depuis la formulation des concepts à l'identification des besoins à la conception du système à l’implémentation de la conception. Abstraction est un mouvement ascendant à travers les niveaux d'abstraction. Le mouvement ascendant est appelé reverse engineering (rétro-ingénierie). La rétro-ingénierie logicielle est définie par le processus d'analyse d'un logiciel pour identifier les composants du système logiciel et leur interrelations et la création de représentations du système à un niveau supérieur d'abstraction. Des exemples de reverse engineering sont : La décompilation dans lequel un programme objet est traduit en un programme de haut niveau, l'extraction de l'architecture dans laquelle la conception d'un programme est dérivée, Rehosting signifie la réingénierie du code source sans addition ou réduction de fonctionnalités dans le code source cible transformée. Il comprend le portage, la migration ou de la conversion du code ou des données existant d’une plate-forme informatique à une autre, d'un système d'exploitation à un autre, d'un langage à un autre, mais sans aucune nouvelle fonctionnalité ajoutée au code. Solution de l’exercice 3 : La translation et le rephrasing sont les changements de niveau de code source. Dans un scénario de translation, un programme est transformé à partir d'un langage source vers un programme dans un autre langage cible, alors que le rephrasing est la transformation d’un programme dans un autre programme dans le même langage. Des exemples de scénarios de translation sont la compilation, la décompilation et la migration. La compilation est une forme de transformation dans laquelle un programme dans un langage de haut niveau est transformé en code machine. Décompilation est une forme de transformation par laquelle un code source de haut niveau pour un programme exécutable est découvert. Dans la migration un programme est transformé dans un autre langage au même niveau d'abstraction, par exemple, le portage d’un programme écrit en Pascal en langage C. Les principaux scénarios de rephrasing sont : la normalisation, l'optimisation, le refactoring, et la rénovation. Une normalisation réduit un programme à un programme dans un sous- langage, dans le but de diminuer sa complexité syntaxique. Une optimisation est une transformation qui améliore le temps d'exécution et / ou la performance de l'espace mémoire utilisé par un programme. Un refactoring est une transformation qui améliore la conception d'un programme en le restructurant telle qu'il devient plus facile à comprendre tout en préservant sa fonctionnalité. Un exemple est la conversion d'un programme pour utiliser la monnaie DINAR au lieu de l’Euro. Solution de l’exercice 4 : La Stratégie « Rework » intègre les principes de l'abstraction, l’altération, et de raffinement. Dans le but de changer une caractéristique du système existant, l'abstraction est utilisé pour reconstruire une représentation du système au niveau d'abstraction approprié. L’altération est alors utilisée pour transformer la représentation du système reconstruite dans la représentation du système cible au même niveau d'abstraction. Enfin, le raffinement est utilisé pour créer une représentation appropriée du système de cible à un niveau inférieur d’abstraction. La Stratégie « Replace» intègre les principes de l'abstraction et de raffinement. Dans le but de changer une caractéristique du système existant, l'abstraction est utilisé pour reconstruire une représentation du système à un niveau d'abstraction qui ne contient pas d'informations sur la caractéristique. Le raffinement est ensuite utilisé pour créer une représentation appropriée du système cible à un niveau inférieur d'abstraction. Un avantage de cette stratégie est que les caractéristiques du système remplacé ne proviennent pas de la caractéristique de système existant. Considérons un projet de réingénierie qui consiste à restructurer le flux de contrôle d’un programme, à savoir, remplacer les composants du flux de contrôle non structurées tels que GOTO par des composants de contrôle de flux structurés. Une méthode courante consiste à analyser le code source et construire un graphe de contrôle de flux du programme (abstraction). Un algorithme de restructuration est appliqué au graphe du flux de contrôle produisant un graphe de flux de contrôle transformé avec des composants structurés (altération). Le graphe du Contrôle de Flux restructuré est ensuite traduit de nouveau dans le langage de programmation (de raffinement). Cette méthode est basée sur la stratégie rework. La méthode de remplacement pour la restructuration du flux de contrôle consiste à utiliser l'abstraction pour reconstruire la représentation du programme à un niveau d'abstraction plus élevé qui ne contient aucune information sur le flux de contrôle. Une telle représentation est à un degré d'abstraction plus élevé que le graphe de flux de contrôle. Par exemple, la représentation pourrait décrire l'effet net d'appeler une routine, mais sans donner aucune information sur le flux de contrôle de la routine. Une représentation du système cible à un niveau inférieur de l'abstraction est ensuite produite en utilisant le raffinement. Cette méthode se traduit par le remplacement complet du flux de contrôle du programme. Un avantage de cette stratégie est que les caractéristiques du système remplacé ne découlent pas des caractéristiques du système existant. Le degré de biais introduit dans le système cible est réduit. Solution de l’exercice 5 : La représentation est définie comme une représentation graphique (ou avec d’autres médias) d'un seul composant. Alors que la visualisation est définie comme une collection ou une configuration de représentations individuelles (en plus d’autres informations) qui comprennent une composante de niveau supérieur. A la base, les représentations sont les symboles graphiques utilisés dans une visualisation pour représenter chacun de ses sous-composants. Par exemple, dans un graphique comme graphe d'appel ou graphe de flux de contrôle, le graphique lui-même est la visualisation tandis que les nœuds et les arcs sont les représentations. Ces deux concepts peuvent être interchangeables et ceci dépend en grande partie du niveau d'abstraction et de la quantité de détail présenté. Par exemple, si un nœud dans un graphe d’appel de fonction fourni des informations complémentaires sur la structure ou les qualités de la fonction qu'il représente. Dans le cadre du système de logiciel qui est le graphique, il est une représentation, alors que dans le contexte de la fonction qui est le nœud, il est une visualisation sur plus d'informations sur cette fonction. Solution de l’exercice 6 : Le graphe du flux de contrôle est illustré à la figure 1. La complexité cyclomatique V (G) = e - n +2 = 7-6 + 2 = 3. Solution de l’exercice 7 : uploads/Finance/ fiche-td-3-etudiants.pdf
Documents similaires
-
18
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Mar 05, 2021
- Catégorie Business / Finance
- Langue French
- Taille du fichier 0.2710MB