Beneficios de la ingeniería inversa
·
Reducir la complejidad del sistema: al intentar
comprender el software se facilita su mantenimiento y la complejidad existente
disminuye
·
Generar diferente alternativas: del punto de
partida del proceso, principalmente código fuente, se generan representaciones
graficas lo que facilita su comprensión
·
Recuperar o actualizar la información perdida (cambios
que no se documentaron en sus momentos): 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 a que surjan efectos no deseados, esta
serie de anomalías pueden ser detectados por la ingeniería inversa.
·
Facilitar la reutilización: por medio de la
ingeniería inversa se puede detectar componentes de posible reutilización de
sistemas existente, pudiendo aumentar la productividad, reducir los costes y
los riesgos de mantenimiento.
Tipos de ingeniería inversa
1.
Ingeniería inversa de interfaces
de usuarios: 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
2.
Ingeniería inversa de datos: se aplica sobre
algún código de base de datos (aplicación, código SQL, etc.) para obtener los
modelos o sobre el modelo relacional para obtener el diagrama entidad-
relación.
3.
Ingeniería inversa de lógica o de proceso:
cuando la ingeniería inversa se aplica sobre códigos de un programa para
averiguar su lógica o sobre cualquier documento de diseño para obtener
documentos de análisis o de requisitos.
Herramientas para la ingeniería
inversa:
1.
Los depuradores: Un
depurador es un programa que se utiliza para controlar otros programas. Permite
avanzar paso a paso por el código, rastrear fallos, establecer puntos de
control y observar las variables y el estado de la memoria en un momento dado
del programa que se esté depurando. Los depuradores son muy valiosos a la hora
de determinar el flujo lógico del programa.
2.
Herramientas de
inyección de fallos: las herramientas de inyección de fallos puede
determinar entradas malformadas con formato inadecuado a proceso de software
objetivo para provocar errores son una de clase de herramientas de inserción de
fallos. los errores del programa puedes ser analizados para determinar si los
errores existen en el software objetico.
Algunos fallos tienen implicaciones en la seguridad, como los fallos que
permiten un acceso directo del asaltante al ordenador principal.
3.
Los desensambladores: se
trata de una herramienta que convierte código máquina en lenguaje ensamblador. El
lenguaje ensamblador es una forma legible para los humanos del código máquina. Los
desensambladores revelan que instrucciones máquinas son usadas en el código.
El código máquina normalmente es específico
para la arquitectura dada el hardware. De forma que los desensambladores son
escritor expresamente para la arquitectura del hardware del software a
desensamblar.
4.
Los descompiladores: un
descompilador es una herramienta que transforma código en ensamblador o máquina
en código fuente en lenguaje de alto nivel. También existen descompiladores que
transforman lenguaje intermedio en código fuente en lenguaje de alto nivel. Estas
herramientas son sumamente útiles para determinar la lógica a nivel superior
como bucles o declaraciones if – then de los programas que son descompilados.
5.
Herramienta CASE: Las herramientas de la ingeniería
de sistemas asistidas por ordenador ( Computer – Aided Systems Engineering –
CASE) aplican la tecnología informática a las actividades, las técnicas y las
metodologías propias de desarrollo para automatizar o apoyar una o más fases
del ciclo de vida del desarrollo de sistemas.
Reingeniería de Software.
se puede definir como el proceso completo de convertir el
código de programa al diseño CASE, modificar el diseño y volver a generar el
nuevo código . el termino se usa en distintas áreas de la ingeniería,
programación, negocios.
En lo que respecta a los negocios, es una forma
de darle una nueva orientación a los proceso claves de una organización, de
esta manera el rol de los analistas de sistemas radica en el uso de tecnologías
de información novedosas, como consecuencia a los cambios recurridos.