Logo Studenta

Sesión N 05(1) - Stiven

¡Este material tiene más páginas!

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

Continuar navegando