La ingeniería inversa de software es un proceso de recuperación del diseño, las especificaciones de requisitos y las funciones de un producto a partir de un análisis de su código. Construye una base de datos del programa y genera información a partir de esto.
El propósito de la ingeniería inversa es facilitar el trabajo de mantenimiento al mejorar la comprensión de un sistema y producir los documentos necesarios para un sistema heredado.
Objetivos de ingeniería inversa:
- Hacer frente a la complejidad.
- Recuperar información perdida.
- Detectar efectos secundarios.
- Sintetizar mayor abstracción.
- Facilitar la reutilización.
Pasos de la ingeniería inversa de software:
- Información de recopilación:
este paso se enfoca en recopilar toda la información posible (es decir, documentos de diseño fuente, etc.) sobre el software. - Examen de la información:
La información recopilada en el paso 1 se estudió para familiarizarse con el sistema. - Extracción de la estructura:
este paso se refiere a la identificación de la estructura del programa en forma de diagrama de estructura donde cada Node corresponde a alguna rutina. - Registro de la funcionalidad:
durante este paso, se procesan los detalles de cada módulo de la estructura, los gráficos se registran utilizando un lenguaje estructurado como la tabla de decisiones, etc. - Registro del flujo de datos: a
partir de la información extraída en los pasos 3 y 4, se deriva un conjunto de diagramas de flujo de datos para mostrar el flujo de datos entre los procesos. - Flujo de control de grabación:
se registra la estructura de control de alto nivel del software. - Revisar el diseño extraído: el
documento de diseño extraído se revisa varias veces para garantizar la coherencia y la corrección. También asegura que el diseño represente el programa. - Generar documentación:
finalmente, en este paso, la documentación completa, incluido el SRS, el documento de diseño, el historial, la descripción general, etc., se registra para uso futuro.
Herramientas de ingeniería inversa:
La ingeniería inversa, si se realiza manualmente, consumiría mucho tiempo y mano de obra humana y, por lo tanto, debe estar respaldada por herramientas automatizadas. Algunas de las herramientas se dan a continuación:
- CIAO y CIA: un navegador gráfico para software y repositorios web junto con una colección de herramientas de ingeniería inversa.
- Rigi: una herramienta de comprensión de software visual.
- Bunch: una herramienta de agrupación/modularización de software.
- GEN++: Un generador de aplicaciones para soportar el desarrollo de herramientas de análisis para el lenguaje C++.
- PBS: herramientas de biblioteca de software para extraer y visualizar la arquitectura de los programas.
Publicación traducida automáticamente
Artículo escrito por anonymous007 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA