Pourquoi et Comment réaliser un Reverse Engineering ?

Reverse-Engineering

Dans les situations où le logiciel d’un système existant a une documentation peu ou pas à jour et il est nécessaire de comprendre ce que le système fait réellement, la reverse engineering est une technique d’élicitation qui peut extraire les exigences mises en œuvre du code logiciel.

Description

L’ingénierie avancée est le processus traditionnel consistant à passer des abstractions de haut niveau à la mise en œuvre physique. L’ingénierie inverse ou retro-ingénierie est un processus d’analyse d’un système/produit pour décrire les processus métier, les données et les règles sous-jacents. Sur la base du travail d’identification, des représentations du système/produit peuvent être créées à un niveau d’abstraction plus élevé.

Il existe deux catégories générales de reverse engineering :

  • Black Box Reverse Engineering : Le système/produit est étudié sans examen de sa structure interne.
  • White Box Reverse Engineering : Le fonctionnement interne du système/produit est étudié.

Les résultats d’un reverse engineering peuvent fournir :

  • Une compréhension du fonctionnement d’un produit de manière plus globale qu’en l’observant simplement.
  • Un moyen d’enquêter sur les erreurs et les limites des programmes existants et une aide pour les corriger.
  • Détails pour aider à rendre les produits et les systèmes compatibles.
  • Détails pour aider à évaluer un produit et comprendre ses limites.
  • Déterminer si quelqu’un d’autre a littéralement copié des éléments de sa propre technologie.
  • Documentation d’un produit dont le fabricant ne répond pas aux demandes de service client.
  • Détails pour aider à transformer les produits obsolètes.

Mise en œuvre

Se préparer au reverse engineering

  • Déterminer la portée de la fonctionnalité qui doit être rétro-conçue.
  • Évaluer le rapport coût-bénéfice. Comme l’ingénierie inverse peut prendre du temps et être coûteuse, déterminez si l’investissement financier est justifié en évaluant les avantages potentiels tirés d’une documentation améliorée et/ou d’une abstraction dérivée en termes de maintenance du système existant ou de développement d’un nouveau système/produit.

Effectuer l’ingénierie inverse

  • Désassemblez ou décompilez le système d’origine.
  • Documenter les résultats d’une manière pouvant être examinée et vérifiée par un expert en la matière. Ceux-ci peuvent servir de détails de base pour susciter des exigences pour l’extension du système existant.

Usages et limites

Points forts

  • Protège l’investissement dans le système/produit existant en permettant aux analystes de « construire » la fonctionnalité/mise en œuvre commerciale existante.
  • Fournit des informations détaillées et actuelles qui peuvent être utilisées pour mettre à jour la documentation d’un système/produit existant.

Faiblesses

  • Cher
  • Chronophage.
  • Souvent restreint par les lois sur le droit d’auteur lorsqu’un système/produit d’un autre fabricant est impliqué.
  • Les outils existants qui prennent en charge la rétro-ingénierie ont des capacités limitées et nécessitent une formation pour être utilisés.
  • Nécessite des compétences spécialisées :
    • Capacité à faire abstraction de « spécifique » à « général ».
    • Capacité à tirer des déductions, en particulier, lors de la documentation des règles métier.
  • Capacité à corréler les fonctions des composants d’un système avec les processus opérationnels actuels et/ou prévus.