Ing. Inversa
Enviado por francofjb • 28 de Agosto de 2012 • 481 Palabras (2 Páginas) • 737 Visitas
¿Qué es Ingeniería Inversa?
La ingeniería inversa se define como el proceso de construir especificaciones de un mayor nivel de abstracción partiendo del código fuente de un sistema software o cualquier otro producto (se puede utilizar como punto de partida cualquier otro elemento de diseño, etc.).
Esto también aplica a dispositivos electrónicos, donde la ingeniería inversa sirve para recuperar diagramas esquemáticos, levantar circuitos impresos, hasta el recupero del código fuente de microcontroladores o microprocesadores, para con esta información, desarrollar nuevos dispositivos, productos equivalentes o ampliar prestaciones a los mismos.
Estas especificaciones pueden volverse a usar para construir una nueva implementación del sistema utilizando, por ejemplo, técnicas de ingeniería directa.
Tipos de Ingeniería Inversa:
Ingeniería inversa de datos: Se aplica sobre algún código de bases datos (aplicación, código SQL, etc) para obtener los modelos relacionales o sobre el modelo relacional para obtener el diagrama entidad-relación
Ingeniería inversa de lógica o de proceso: Cuando la ingeniería inversa se aplica sobre código de un programa para averiguar su lógica o sobre cualquier documento de diseño para obtener documentos de análisis o de requisitos.
Ingeniería inversa de interfaces de usuario: Se aplica con objeto de mantener la lógica interna del programa para obtener los modelos y especificaciones que sirvieron de base para la construcción de la misma, con objeto de tomarlas como punto de partida en procesos de ingeniería directa que permitan modificar dicha interfaz.
Ingeniería inversa de protocolos de comunicación: Independientemente del medio físico, se analiza el comportamiento de la comunicación, analizan tramas y documentan protocolos, para la implementación de nuevos sistemas, replicas o interfaces.
Beneficios del uso de Ingeniería Inversa:
La aplicación de ingeniería inversa normalmente no cambia la funcionalidad del software sino que permite obtener productos que indican cómo se ha construido el mismo.
Gracias al uso de Ingeniería Inversa se obtienen los siguientes beneficios:
Reducir la complejidad del sistema: al intentar comprender el software se facilita su mantenimiento y la complejidad existente disminuye.
Generar diferentes alternativas: del punto de partida del proceso, principalmente código fuente, se generan representaciones gráficas lo que facilita su comprensión.
Recuperar y/o actualizar la información perdida (cambios que no se documentaron en su momento): en la evolución del sistema se realizan cambios que no se suele actualizar en las representaciones de nivel de abstracción más alto, para lo cual se utiliza la recuperación de diseño.
Detectar efectos laterales: los cambios que se puedan realizar en un sistema puede conducirnos
...