El objetivo de la Ingeniería inversa es obtener información o un diseño a partir de un producto accesible al público, con el fin de determinar de qué está hecho, qué lo hace funcionar y cómo fue fabricado.
Hoy en día (principios del siglo XXI), los productos más comúnmente sometidos a ingeniería inversa son los programas de computadoras y los componentes electrónicos, pero en realidad, cualquier producto puede ser objeto de un análisis de ingeniería inversa.
La tarea relacionada con la ingeniería inversa suele ser compleja
y pesada debido a que en muchos casos, el sustrato matemático
en el que están basadas algunas de estas técnicas hace que su
aplicación manual sea prácticamente inabordable. Por eso, son
muchos los autores que proponen alguna herramienta que ofrezca
soporte al método del que versa su publicación. El disponer de
una herramienta o familia de herramientas que automatizan, de
forma total o parcial, el proceso de recuperación de las
especificaciones abstractas, revoca en un ahorro importante de
tiempo y dinero, además de facilitar la comprensión del mismo
mediante la posibilidad de visualizar el sistema desde distintos
puntos de vista.
Beneficios de la Ingeniería Inversa
Permite la facilidad de mantenimiento, reutilización, optimización y evolución de sistemas de software para de esta manera ofrecer un producto de calidad.
Antecedentes Históricos
En 1970 Edgar F. Codd publicó un trabajo proponiendo un nuevo modelo de datos que perseguía como objetivo general la flexibilidad y sencillez.
Para llevar a cabo el modelo relacional propuesto por Frank Codd es necesario aplicar ciertas reglas:
Formas normales (FN): Conjunto de restricciones sobre tablas relacionales que evitan los problemas de redundancia de datos y de anomalías de modificación, inserción y borrado de datos.
Primera forma normal (1FN): Es una tabla que satisface cierto conjunto mínimo de criterios, Estos criterios se refieren básicamente a asegurarse que la tabla es una representación fiel de una relación y está libre de "grupos repetitivos".
Segunda forma normal (2FN): Una tabla 1NF está en 2NF y sólo si, dada una clave primaria y cualquier atributo que no sea constituyente de la clave primaria, el atributo no clave depende de toda la clave primaria en vez de solo de una parte de ella.
Tercera forma normal (3FN): Una tabla está en 3FN si y solo si, está en 2FN y ningún campo o atributo no primario es dependiente transitivamente de una clave primaria.
Durante el proceso de reingeniería de una base de datos, denominada base de datos fuente, se distinguen dos fases:
Fase de Extracción
Se accede a la base de datos fuente con el fin de recuperar la información.
Fase de Conceptualización
Recibe como entrada la información recuperación en la fase de extracción, y a partir de aquí generar un modelo Entidad Relación.