Vous êtes sur la page 1sur 24

ARP – chapitre 3

SITW – L3
Dr I. Labed
 Ingénierie (engineering)= ensemble des
prestations consistant à "étudier, concevoir et
faire réaliser un ouvrage ou un système
d'ouvrages".

Cela sous-entend que des études préalables


sont réalisées et qu'une gestion de projet est
assurée selon une méthodologie clairement
définie.

2
 réingénierie = repenser ce qui a été conçu
dans une démarche d'ingénierie.
= extraire une connaissance ou
un savoir d’une réalisation

 En informatique
◦ la réingénierie des logiciels,
◦ la réingénierie des systèmes d'information,
◦ la réingénierie des processus.

3
L'idée est, selon les cas :
o d'améliorer la qualité d'un logiciel
existant - en nettoyant ou en
restructurant son code source -,
o de s'adapter à de nouvelles contraintes
réglementaires,
o d'ajouter des fonctionnalités, ou
o de faciliter sa maintenance.
4
 Remise à plat de tout ou partie d'un système
d'information, afin d'atteindre de meilleurs
niveaux de performances globales.

 Objet d’un investissement méthodologique


important qui conduit à l’émergence des
techniques de réingénierie

5
 Etablir le schéma conceptuel de données à
partir du schéma physique de données, du
code déclaratif de la BD et du code source
des programmes qui l’utilisent.

 migration de l'entreprise vers l'e-commerce,


la création d'un système unifié de gestion des
bases de données, le déploiement d'outils de
mobilité pour une certaine catégorie de
personnel, le réduction des coûts, la
compression des délais, etc.

6
 Suite de tâches produisant de la valeur, les
processus opérationnels vont donc à leur tour
être revus et, le plus souvent, refondus,
réinventés, afin que les objectifs que
l'entreprise s'est fixés soient atteints.

Exemple: choisir les processus qui ne


fonctionnent pas correctement; qui ont un
impact important sur le client; qui peuvent
être modifiés facilement.

7
 Une des composantes de la réingénierie
 Permet de remonter les phases de conception
d’un système (dans le logiciel: partir du code
et remonter vers la modélisation, voir la
spécification)

Exemple: Le diagramme de classes obtenu par


rétro-conception permet de comprendre
globalement le logiciel, les dépendances
entre classes et packages

8
 Entreprise:
- Assurer l’interopérabilité
- Vérifier que le produit ne fait que ce qu’il est
censé faire
- Accéder aux technologies mises au point par des
sociétés concurrentes

 Organisation étatique:
- Vérifier que les logiciels ne possèdent pas de
fonctions cachées ou de vulnérabilités pouvant
dégrader la sécurité du système
- Rechercher des vulnérabilités afin de les exploiter
dans un contexte opérationnel
9
 Particulier:
- Enlever les mécanismes de protection lui
interdisant l’utilisation de certains logiciels
- Modifier les logiciel afin d’incorporer des
fonctionnalités particulières

 Pirates:
- Supprimer les différents mécanismes de
protection des logiciels pour les distribuer
(gratuitement/ en contrepartie).
- Rechercher des vulnérabilités afin de les
exploiter.

10
Le Schéma général de la RE est composé de
trois étapes:

1.Collection de
3.Visualisation
données
2.Extraction
d’informations
Analyse: pertinentes
statique / Formes
dynamique / personnelles
hybride et standards
Échantillonnage/
filtrage/
compression, ..

11
 Analyser le système pour obtenir les données
nécessaires à la compréhension de ses aspects
structurels et comportementaux

 Techniques de collection de données:

- Analyse statique

- Analyse dynamique

- Analyse hybride

12
 Collecte des informations directement auprès du code
compilé ou du code source
 Recueil des informations par le contrôle de flux de données
ou par l’insertion d’annotations dans le code pour guider
l’analyse
 Utilisation d’outils:
- désassembleurs: obtenir un texte dans un langage assembleur à
partir du code machine binaire
- Décompilateurs: produire du code source de haut niveau à partir du
code binaire

13
 Analyse des propriétés d’un programme au cours
d’exécution
 Précision des informations: collecter de façon précise
les informations pertinentes qui ne comprennent que
des comportements possibles
 Dépendance aux entrées du programme: les résultats
de l’analyse sont liés aux données d’entrée/sorties du
programme.

14
 Techniques d’analyse dynamique: outils de contrôle
du système; instrumentation du code source ou du
code intermédiaire ou de la machine virtuelle;
utilisation des débogueurs personnalisés
 Collection des informations traduite par la génération
de traces qui montre les valeurs des variables d’un
programme, l’état de la pile d’exécution, les
occurrences d’appels des méthodes, l’état des
threads, ..

15
 Combine de façon conjointe les l’analyse
statique et l’analyse dynamique:

◦ Les informations collectées par l’analyse statique


fournissent une connaissance générale sur le
comportement du système;
◦ L’analyse dynamique permet d’améliorer ce
comportement.

16
 Nettoyer les données brutes collectées avant
leur visualisation
 Durant l’analyse dynamique, la trace d’un
grand volume peut poser le problème de
pertes d’informations utiles
 Apparition de techniques d’extraction:
Échantillonnage, cacher les composants, ..

17
 Échantillonnage: réduit la taille de la trace.
Choisir seulement un échantillon de la trace de
l’analyse
 Cacher des composants: autre façon de réduire
la taille de la trace.
Exemple: l’analyste peut décider de cacher
toutes les invocations d’une méthode spécifique

18
 Étape cruciale pour la réingénierie
 La façon de présenter l’information aux
développeurs ou aux mainteneurs affecte
fortement l’utilité de l’étape d’analyse
 Il existe deux choix de visualisation:
- Utiliser des diagrammes bien définis (UML)
- Utiliser des notations propres à l’analyste

19
Exemples d’outils capables de visualiser
l’information extraite statiquement:
- Rigi: montre des vues d’architecture,
- CodeCrawler: combine la capacité de montrer les
entités des logiciels et leurs relations,
- Program Explorer: visualise des informations
dynamiques (interactions entre les objets) en les
modélisant sous forme de graphe orienté

20
 La compréhension des applications OO est une
tâche difficile
 Le polymorphisme et les liaisons dynamiques
rendent les traditionnels outils d’analyse
inadéquats
 L’objectif de la réingénierie OO est d’analyser le
système par une description dans le niveau
d’abstraction adéquat :

21
 Niveau instruction: inclut l’exécution de chaque

instruction du code. Exemple d’outils: débogueurs.

Convient aux activités de maintenance (fixation de bugs)

 Niveau communication inter-thread: visionner les

interactions entre les threads du système. Peu d’outils ∃

 Niveau objet: visualisation des interactions des

méthodes entre les objets. Utile pour vérifier les

performances. Supporté par la majorité des outils

22
 Niveau classe: les objets de la même classe sont
supportés par le nom de leur classe. Supporté par la
majorité des outils. Convient à la compréhension du
comportement du système

 Niveau architectural: grouper les classes dans des


clusters et montrer comment les composants du
système interagissent les uns avec les autres

23
La réingénierie
 est très importante POUR améliorer;
maintenir; réutiliser; ..
 Permet de comprendre un système existant
après son analyse et le restructurer ou le
représenter à un niveau plus abstrait
Présence importante dans l’industrie

24