Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
FACULTAD DE INGENIERÍAS ESCUELA PROFESIONAL DE INGENIERÍA DE COMPUTACIÓN Y SISTEMAS CURSO MODELAMIENTO DE BASE DE DATOS TEMA INGENIÉRÍA INVERSA SESIÓN N° 05 DOCENTE: Mg. LUIS ALBERTO LOO PARIAN24/04/2023 Inicio INGENIERIA INVERSA Contenidos de la sesión: • Introducción • Conceptos y Técnicas • Ejemplo • Actividad Tema 1 Logro de la sesión: Al término de la sesión el estudiante, será capaz de conocer ingeniería inversa como herramienta de desarrollo de una base de datos, aplicado en entornos organizacionales. INGENIERIA INVERSA Tema 1 RECORDANDO ¿Qué y cuáles son las formas normales? Esta foto de Autor desconocido está bajo licencia CC BY-NC-ND https://www.xiskya.com/2012/12/21/una-pregunta-poderosa-por-favor/ https://creativecommons.org/licenses/by-nc-nd/3.0/ Tema 1 INTRODUCCIÓN La ingeniería inversa se ha definido como el proceso de construir especificaciones de un mayor nivel de abstracción partiendo del código fuente de un sistema software o cualquier otro producto (se puede utilizar como punto de partida cualquier otro elemento de diseño, etc.). Estas especificaciones pueden volver ser utilizadas para construir una nueva implementación del sistema utilizando, por ejemplo, técnicas de ingeniería directa. Tema 1 BENEFICIOS La aplicación de ingeniería inversa nunca cambia la funcionalidad del software sino que permite obtener productos que indican cómo se ha construido el mismo. Se realiza permite obtener los siguientes beneficios: •Reducir la complejidad del sistema: al intentar comprender el software se facilita su mantenimiento y la complejidad existente disminuye. •Generar diferentes alternativas: del punto de partida del proceso, principalmente código fuente, se generan representaciones gráficas lo que facilita su comprensión. •Recuperar y/o actualizar la información perdida (cambios que no se documentaron en su momento): 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 puede ser detectados por la ingeniería inversa. •Facilitar la reutilización: por medio de la ingeniería inversa se pueden detectar componentes de posible reutilización de sistemas existentes, pudiendo aumentar la productividad, reducir los costes y los riesgos de mantenimiento. Tema 1 TIPOS La ingeniería inversa puede ser de varios tipos: •Ingeniería inversa de datos: Se aplica sobre algún código de bases datos (aplicación, código SQL, etc) para obtener los modelos relacionales o sobre el modelo relacional para obtener el diagrama entidad-relación •Ingeniería inversa de lógica o de proceso: Cuando la ingeniería inversa se aplica sobre código de un programa para averiguar su lógica o sobre cualquier documento de diseño para obtener documentos de análisis o de requisitos. •Ingeniería inversa de interfaces de usuario: 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. Tema 1 INGENIERÍA INVERSA La Ingeniería Inversa de Bases de Datos es el conjunto de técnicas que permite la obtención de una representación conceptual de un esquema de base de datos a partir de su codificación. Sus aplicaciones son múltiples: • Re-documentar, reconstruir y/o actualizar documentación perdida o inexistente de bases de datos • Servir como pivote en un proceso de migración de datos • Ayudar en la exploración y extracción de datos en bases poco documentadas. La información que se puede extraer, dependiendo del punto de partida puede ser: Entidad, relaciones, atributos, claves primarias o ajenas, etc., a partir de estos elementos se crean modelos de datos, como por ejemplo Diagramas entidad-relación. Tema 1 INGENIERIA INVERSA A continuación se muestra un ejemplo gráfico de Ingeniería Inversa de Datos. A partir del código fuente (diseño físico), se realiza Ingeniería Inversa y se obtiene el Diseño Lógico. A este diseño se vuelve a aplicar Ingeniería Inversa y se obtiene el Diseño Conceptual. Tema 1 TECNICAS DE INGENIERÍA INVERSA 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: Tema 1 TECNICAS DE INGENIERÍA INVERSA 15 Minutos ACTIVIDAD INDIVIDUAL Actividad individual, normalizar el siguiente formato: CREATE TABLE COUNTRIES ( COUNTRY_ID CHAR(2 BYTE) NOT NULL , COUNTRY_NAME VARCHAR2(40 BYTE) , REGION_ID NUMBER , CONSTRAINT COUNTRY_C_ID_PK PRIMARY KEY ( COUNTRY_ID ) ENABLE ) ACTIVIDAD INDIVIDUAL Actividad individual, normalizar el siguiente formato: CREATE TABLE DEPARTMENTS ( DEPARTMENT_ID NUMBER(4, 0) NOT NULL , DEPARTMENT_NAME VARCHAR2(30 BYTE) NOT NULL , MANAGER_ID NUMBER(6, 0) , LOCATION_ID NUMBER(4, 0) ) ACTIVIDAD INDIVIDUAL CREATE TABLE EMPLOYEES ( EMPLOYEE_ID NUMBER(6, 0) NOT NULL , FIRST_NAME VARCHAR2(20 BYTE) , LAST_NAME VARCHAR2(25 BYTE) NOT NULL , EMAIL VARCHAR2(25 BYTE) NOT NULL , PHONE_NUMBER VARCHAR2(20 BYTE) , HIRE_DATE DATE NOT NULL , JOB_ID VARCHAR2(10 BYTE) NOT NULL , SALARY NUMBER(8, 2) , COMMISSION_PCT NUMBER(2, 2) , MANAGER_ID NUMBER(6, 0) , DEPARTMENT_ID NUMBER(4, 0) ) ACTIVIDAD INDIVIDUAL CREATE TABLE JOBS ( JOB_ID VARCHAR2(10 BYTE) NOT NULL , JOB_TITLE VARCHAR2(35 BYTE) NOT NULL , MIN_SALARY NUMBER(6, 0) , MAX_SALARY NUMBER(6, 0) ) CREATE TABLE LOCATIONS ( LOCATION_ID NUMBER(4, 0) NOT NULL , STREET_ADDRESS VARCHAR2(40 BYTE) , POSTAL_CODE VARCHAR2(12 BYTE) , CITY VARCHAR2(30 BYTE) NOT NULL , STATE_PROVINCE VARCHAR2(25 BYTE) , COUNTRY_ID CHAR(2 BYTE) ) ACTIVIDAD INDIVIDUAL CREATE TABLE REGIONS ( REGION_ID NUMBER NOT NULL , REGION_NAME VARCHAR2(25 BYTE) ) Realizar ingeniería inversa para obtener el modelo de datos. ACTIVIDAD INDIVIDUAL CREATE SCHEMA production; go CREATE SCHEMA sales; go -- create tables CREATE TABLE production.categories ( category_id INT IDENTITY (1, 1) PRIMARY KEY, category_name VARCHAR (255) NOT NULL ); CREATE TABLE production.brands ( brand_id INT IDENTITY (1, 1) PRIMARY KEY, brand_name VARCHAR (255) NOT NULL ); ACTIVIDAD INDIVIDUAL CREATE TABLE production.products ( product_id INT IDENTITY (1, 1) PRIMARY KEY, product_name VARCHAR (255) NOT NULL, brand_id INT NOT NULL, category_id INT NOT NULL, model_year SMALLINT NOT NULL, list_price DECIMAL (10, 2) NOT NULL, FOREIGN KEY (category_id) REFERENCES production.categories (category_id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (brand_id) REFERENCES production.brands (brand_id) ON DELETE CASCADE ON UPDATE CASCADE ); CREATE TABLE sales.customers ( customer_id INT IDENTITY (1, 1) PRIMARY KEY, first_name VARCHAR (255) NOT NULL, last_name VARCHAR (255) NOT NULL, phone VARCHAR (25), email VARCHAR (255) NOT NULL, street VARCHAR (255), city VARCHAR (50), state VARCHAR (25), zip_code VARCHAR (5) ); ACTIVIDAD INDIVIDUAL CREATE TABLE sales.stores ( store_id INT IDENTITY (1, 1) PRIMARY KEY, store_name VARCHAR (255) NOT NULL, phone VARCHAR (25), email VARCHAR (255), street VARCHAR (255), city VARCHAR (255), state VARCHAR (10), zip_code VARCHAR (5) ); CREATE TABLE sales.orders ( order_id INT IDENTITY (1, 1) PRIMARY KEY, customer_id INT, order_status tinyint NOT NULL, -- Order status: 1 = Pending; 2 = Processing; 3 = Rejected; 4 = Completed order_date DATE NOT NULL, required_date DATE NOT NULL, shipped_date DATE, store_id INT NOT NULL, staff_id INT NOT NULL, FOREIGN KEY (customer_id) REFERENCES sales.customers (customer_id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (store_id) REFERENCES sales.stores (store_id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGNKEY (staff_id) REFERENCES sales.staffs (staff_id) ON DELETE NO ACTION ON UPDATE NO ACTION ); ACTIVIDAD INDIVIDUAL CREATE TABLE sales.order_items ( order_id INT, item_id INT, product_id INT NOT NULL, quantity INT NOT NULL, list_price DECIMAL (10, 2) NOT NULL, discount DECIMAL (4, 2) NOT NULL DEFAULT 0, PRIMARY KEY (order_id, item_id), FOREIGN KEY (order_id) REFERENCES sales.orders (order_id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (product_id) REFERENCES production.products (product_id) ON DELETE CASCADE ON UPDATE CASCADE ); CREATE TABLE production.stocks ( store_id INT, product_id INT, quantity INT, PRIMARY KEY (store_id, product_id), FOREIGN KEY (store_id) REFERENCES sales.stores (store_id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (product_id) REFERENCES production.products (product_id) ON DELETE CASCADE ON UPDATE CASCADE ); ACTIVIDAD INDIVIDUAL 2. Además realizar una investigación de los conceptos asociados a ingeniería inversa, y responder las siguientes interrogantes. 1. ¿Qué entiendes por ingeniería inversa? 2. ¿Qué permite una ingeniería inversa de base de datos? 3. ¿Qué herramientas se utiliza en la ingeniería inversa? Cierre • ¿Qué aprendiste en la sesión de hoy? • ¿Para qué crees que te sirve lo aprendido? INGENIERÍA INVERSA INGENIERIA INVERSA Cierre • Conclusiones • Las bases de datos forman el núcleo central de las principales aplicaciones organizacionales. • En todos los casos hay herramientas de gestión y control que permiten verificar su funcionamiento y eventualmente corregirlo. • Tiene una elevada capacidad y solidez para administrar la información sin fallos ni errores. Gracias Diapositiva 1 Diapositiva 2 Diapositiva 3 Diapositiva 4 Diapositiva 5 Diapositiva 6 Diapositiva 7 Diapositiva 8 Diapositiva 9 Diapositiva 10 Diapositiva 11 Diapositiva 12 Diapositiva 13 Diapositiva 14: 15 Minutos Diapositiva 15 Diapositiva 16 Diapositiva 17 Diapositiva 18 Diapositiva 19 Diapositiva 20 Diapositiva 21 Diapositiva 22 Diapositiva 23 Diapositiva 24 Diapositiva 25 Diapositiva 26 Diapositiva 27
Compartir