Breve explicación de los distintos tipos de técnicas de la Ingeniería Inversa de Datos.
La ingeniería inversa de datos se aplica sobre algún código de bases de datos (aplicación, código SQL, etc.) para obtener los modelos relacionales o sobre el modelo relacional para obtener el diagrama entidad-relación. Hay que tener en cuenta que la ingeniería inversa se puede dar entre distintos productos del ciclo de vida de una aplicación.
Existen muchas técnicas para hacer ingeniería inversa de base de datos, algunos de los cuales se pueden ver resumidos en la siguiente tabla:
Baltín et al (1992):
Suposiciones: 3FN. Consistencia en el nombrado de los atributos. Sin homónimos. Clave principal y clave candidata.
Características: Requiere el conocimiento acerca del nombre de los atributos. Propone un marco de trabajo para la evaluación de los métodos de ingeniería inversa. Identifica claramente los casos en los que las entradas de los humanos son necesarias.
Davids&Arora (1987):
Suposiciones: 3FN. Sin homónimos ni sinónimos.
Entradas: Esquemas de relación. Restricciones de claves ajenas.
Salidas: Conjunto de entidades. Relaciones binarias. Relaciones n-aria.
Características: Apunta a una transformación reversible desde el esquema relacional al esquema conceptual.
Johannessin (1994):
Suposiciones: 3FN. Consultas de dominio independientes.
Entradas: Dependencias funcionales y de inclusión. Esquemas de relación.
Características: Requiere un alto nivel de entrada de los humanos. Enfatiza en el análisis de las claves.
Sotou (1997,1998):
Suposiciones: Sin nombres únicos de atributos. Dependencias desconocidas.
Entradas: Esquema de datos. Instancia de datos. Diccionario de datos.
Salidas: Cardinalidad de las restricciones de relaciones n-arias.
Características: Proceso automatizado completamente para SQL.
Entre las distintas técnicas de Ingeniería Inversa de datos, se propone el método de Hainaut et al () para explicarla.
El método pasa por dos fases. En la 1ª fase se realiza la extracción de estructuras y en la 2ª la conceptualización de las mismas:
FASE I: Extracción de estructuras
Considerar cada fichero una posible tabla.
Considerar cada campo del fichero como un posible campo de la tabla.
Identificar las claves primarias.
Identificar claves ajenas.
“Filtrar” las tablas (por ejemplo, despreciar aquellos ficheros sin clave principal).
Detección de campos obligatorios.
Detección de asociaciones entre tablas
FASE II: Conceptuación de las estructuras
Sustitución de constructores propios del sistema real por constructores independientes (ej: una tabla que es un elemento físico es sustituida por el concepto de entidad que es un elemento lógico).
Detección y eliminación de los constructores no semánticos del esquema lógico, paso inverso a la optimización del esquema (ej: deshacer la normalización de un SGBD relacional).
Normalización conceptual para obtener estructuras de alto nivel.