Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INVERSA
SEMANA 08
CUARTA GENERACIÓN V
LIC. YUSSELIN MURCIA
¿QUÉ ES INGENIERÍA INVERSA?
• Las GUI (interfaces de usuario gráficas) sofisticadas se han vuelto obligatorias para productos y
sistemas basados en computadora de todo tipo. Por tanto, el redesarrollo de las interfaces de
usuario se ha convertido en uno de los tipos más comunes de actividad de reingeniería. Pero antes
de poder reconstruir una interfaz de usuario, debe realizarse ingeniería inversa.
• Para comprender completamente una interfaz de usuario existente, deben especificarse la
estructura y el comportamiento de la interfaz. Merlo et al. [Mer93] sugieren tres preguntas
básicas que deben responderse conforme comienza la ingeniería inversa de la UI.
• ¿Cuáles son las acciones básicas (por ejemplo, golpes de tecla y clics de ratón) que debe procesar la interfaz?
• ¿Cuál es la descripción compacta de la respuesta de comportamiento del sistema a dichas acciones?
• ¿Qué se entiende por “reemplazo” o, más precisamente, qué concepto de equivalencia de interfaces es
relevante aquí?
REESTRUCTURACIÓN
• La reestructuración de software modifica el código fuente y/o los datos con la intención de
hacerlos sensibles a cambios futuros. En general, la reestructuración no modifica la
arquitectura global del programa. Tiende a enfocarse sobre detalles de diseño de módulos
individuales y sobre estructuras de datos locales definidas dentro de módulos. Si el esfuerzo
de reestructuración se extiende más allá de las fronteras del módulo y abarca la arquitectura
del software, la reestructuración se convierte en ingeniería hacia delante.
• La reestructuración ocurre cuando la arquitectura básica de una aplicación es sólida, aun
cuando el interior técnico necesite trabajarse. Se inicia cuando grandes partes del software
son aprovechables y sólo un subconjunto de todos los módulos y datos necesitan modificación
extensa.
REESTRUCTURACIÓN DE CÓDIGO
• La reestructuración de código se realiza para producir un diseño que produzca la misma función
pero con mayor calidad que el programa original. En general, las técnicas de reestructuración de
código (por ejemplo, las técnicas de simplificación lógica de Warnier [War74]) modelan la lógica
del programa usando álgebra booleana y luego aplican una serie de reglas de transformación
que producen lógica reestructurada. El objetivo es tomar una “ensalada” de código y derivar un
diseño procedimental que se conforme con la filosofía de programación estructurada.
• También se han propuesto otras técnicas de reestructuración para su uso con herramientas de
reingeniería. Un diagrama de intercambio de recursos mapea cada módulo de programa y los
recursos (tipos de datos, procedimientos y variables) que se intercambiarán entre él y otros
módulos. Al crear representaciones de flujo de recursos, la arquitectura del programa
puedereestructurarse para lograr un mínimo acoplamiento entre módulos.
REESTRUCTURACIÓN DE DATOS
• Antes de que pueda comenzar la reestructuración de datos debe realizarse una actividad de
ingeniería inversa llamada análisis de código fuente. Se evalúan todos los enunciados de lenguaje
de programación que contienen definiciones de datos, descripciones de archivo I/O y descripciones
de interfaz.
• La intención es extraer ítems de datos y objetos, obtener información acerca del flujo de datos y
entender las estructuras de datos existentes que se implementaron. Esta actividad en ocasiones se
llama análisis de datos. Una vez completado el análisis de datos, comienza el rediseño de datos.
En su forma más simple, un paso de estandarización de registro de datos clarifica las definiciones
de los datos para lograr consistencia entre nombres de ítem de datos o formatos de registro físico
dentro de una estructura de datos existente o dentro de un formato de archivo.
• Otra forma de rediseño, llamada racionalización de nombre de datos, garantiza que todas las
convenciones de nomenclatura de datos se establezcan de acuerdo con estándares locales y que
los sobrenombres se eliminen conforme los datos fluyen a través del sistema. Cuando la
reestructuración avanza más allá de la estandarización y la racionalización, se realizan
modificaciones físicas a las estructuras de datos existentes para hacer que el diseño de datos sea
más efectivo. Esto puede significar una traducción de un formato de archivo a otro o, en algunos
casos, traducción de un tipo de base de datos a otra.