Ingeniera Inversa
El trmino ingeniera inversa tiene sus orgenes en el mundo del hardware. Una cierta compaa desensambla un producto de hardware competitivo un esfuerzo por comprender los-secretos del diseo y fabricacin de su competidor.
Ingeniera Inversa
La ingeniera inversa del software es algo bastante similar. Sin embargo, en la mayora de los casos, el programa del cual hay que hacer una ingeniera inversa no es el de un rival, sino, ms bien, el propio trabajo de la compaa (con frecuencia efectuado hace muchos aos).
Ingeniera Inversa
La ingeniera inversa del software es el proceso de anlisis de un programa con el fin de crear una representacin de programa con un nivel de abstraccin ms elevado que el cdigo fuente. La ingeniera inversa es un proceso de recuperacin de diseo. Con las herramientas de la ingeniera inversa se extraer del programa existente informacin del diseo arquitectnico y de proceso, e informacin de los datos. Cmo Funciona?
Ingeniera Inversa
Se deben afrontar tres enfoques de ingeniera inversa: nivel de abstraccin, completitud y direccionalidad.
Ingeniera Inversa
Antes de que puedan comenzar las actividades de ingeniera inversa, el cdigo fuente no estructurado (sucio) se reestructura para que solamente contenga construcciones de programacin estructurada.
Esto hace que el cdigo fuente sea ms fcil de leer, y es lo que proporciona la base para todas las actividades subsiguientes de ingeniera inversa.
Ingeniera Inversa
El ncleo de la ingeniera inversa es una actividad denominada extraccin de abstracciones. El ingeniero tiene que evaluar el viejo programa y a partir del cdigo fuente (que no suele estar documentado) tiene que extraer una especificacin significativa del procesamiento que se realiza, la interfaz de usuario que se aplica, y las estructuras de datos de programa o de base de datos que se utiliza.
La primera actividad real de la ingeniera inversa comienza con un intento de comprender y extraer despus abstracciones de procedimientos representadas por el cdigo fuente. Para comprender las abstracciones de procedimientos, se analiza el cdigo en distintos niveles de abstraccin: sistema, programa, componente, configuracin y sentencia.
La funcionalidad general de todo el sistema de aplicaciones deber ser algo perfectamente comprendido antes de que tenga lugar un trabajo de ingeniera inversa ms detallado. Esto es lo que establece un contexto para un anlisis posterior, y se proporcionan ideas generales acerca de los problemas de interoperabilidad entre aplicaciones dentro del sistema. Cada uno de los programas de que consta el sistema de aplicaciones representar una abstraccin funcional con un elevado nivel de detalle.
La ingeniera inversa de datos se aplica sobre algn cdigo de bases de datos (aplicacin, cdigo SQL, etc.) para obtener los modelos relacionales o sobre el modelo relacional para obtener el diagrama entidad-relacin. Hay que tener en cuenta que la ingeniera inversa se puede dar entre distintos productos del ciclo de vida de una aplicacin.
Una corresponde al anlisis de los datos internos. Otra al estudio de las estructuras globales de datos (archivos, bases de datos, etc.).
Las tcnicas de ingeniera inversa para datos de programa internos se centran en la definicin de clases de objetos5. Esto se logra examinando el cdigo del programa en un intento de agrupar variables de programa que estn relacionadas. En muchos casos, la organizacin de datos en el seno el cdigo identifica los tipos abstractos de datos. Por ejemplo, las estructuras de registros, los archivos, las listas y otras estructuras de datos que suelen proporcionar una indicacin inicial de las clases.
Independientemente de su organizacin lgica y de su estructura fsica, las bases de datos permiten definir objetos de datos, y apoyan los mtodos de establecer relaciones entre objetos. Para definir el modelo de datos existente como precursor para una reingeniera que producir un nuevo modelo de base de datos se pueden emplear los pasos siguientes:
Construccin de un modelo de objetos inicial. Las claves definidas como parte del modelo se podrn conseguir mediante la revisin de registros de una base de datos de archivos planos o de tablas de un esquema relacional. Los elementos de esos registros o tablas pasarn a ser atributos de una clase. Determinacin de los candidatos a claves. Los atributos se examinan para determinar si se van a utilizar o no para sealar a otro registro o tabla. Aquellos que sirvan como punteros pasarn a ser candidatos a claves.
Refinamiento de las clases provisionales. Se determina si ciertas clases similares pueden o no combinarse dentro de una nica clase. Definicin de las generalizaciones. Para determinar si se debe o no construir una jerarqua de clases con una clase Descubrimiento de las asociaciones. Mediante el uso de tcnicas anlogas al enfoque de CRC se establecen las asociaciones entre clases.
El nuevo desarrollo de interfaces de usuario ha pasado a ser uno de los tipos ms comunes de las actividades de reingeniera
La notacin de modelado de comportamiento puede proporcionar una forma de desarrollar las respuestas de las dos primeras preguntas indicadas anteriormente. Gran parte de la informacin necesaria para crear un modelo de comportamiento se puede obtener mediante la observacin de la manifestacin extema de la interfaz existente.
Es preciso extraer del cdigo la informacin adicional necesaria para crear el modelo de comportamiento. Es importante indicar que una IGU de sustitucin puede que no refleje la interfaz antigua de forma exacta (de hecho, puede ser totalmente diferente). Con frecuencia, merece la pena desarrollar metforas de interaccin nuevas.
La reestructuracin
La reestructuracin del software modifica el cdigo fuente y/o los datos en un intento de adecuar10 a futuros cambios.
Programas de mayor calidad. Reduce la frustracin entre ingenieros del software. que deban trabajar con el programa. Reduce el esfuerzo requerido para llevar a cabo las actividades de mantenimiento. Hace que el software sea ms sencillo de comprobar y de depurar.
La reestructuracin del cdigo se lleva a cabo para conseguir un diseo que produzca la misma funcin pero con mayor calidad que el programa original.