Académique Documents
Professionnel Documents
Culture Documents
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".
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.
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.
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.
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)
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
- 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:
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
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
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