Está en la página 1de 10

INGENIERA INVERSA

NORMAS DE CALIDAD APLICADAS

CARMEN LUCA ORELLANA


14004129

INDICE
1. INGENIERA INVERSA...................................................................3
1.1

NIVEL DE ABSTRACCIN.........................................................4

1.2

COMPLETITUD.......................................................................4

1.3

INTERACTIVIDAD...................................................................4

1.4

DIRECCIONALIDAD.................................................................5

1.5

EL PROCESO DE INGENIERA INVERSA.....................................5

1.5.1. Ingeniera inversa para comprender el procesamiento.........6


1.6

REESTRUCTURACIN..............................................................7

1.7

REDOCUMENTACIN...............................................................7

1.8

USOS DE LA INGENIERA INVERSA...........................................8

BIBLIOGRAFA..................................................................................8

1.INGENIERA INVERSA
La ingeniera inversa es un procedimiento mediante el cual se toma un objeto
por separado para ver como funciona con la finalidad de duplicarlo o mejorarlo.
Aunque esta practica era empleada por las antiguas industrias, en la actualidad
su uso se ha extendido al software y hardware, en cuyo caso, la ingeniera
inversa aplicada al software implica la reversin de un programa que est
codificado en lenguaje maquina (lenguaje de bajo nivel) a el cdigo fuente de
alto nivel en el que fue escrito originalmente.
La ingeniera inversa tiene la misin de desentraar los misterios y los secretos
de los sistemas de uso. Consiste principalmente en recuperar el diseo de una
aplicacin a partir de un cdigo.
Esto se realiza principalmente mediante herramientas que extraen la
informacin de los datos, procedimientos y arquitectura del sistema existente.
Es aplicable a sistemas con las siguientes caractersticas:

Documentacin inexistente o totalmente obsoleta

Programacin en bloques de cdigos muy grandes y sin estructurar

Inexistencia de documentacin interna en programas, o bien esta es


incomprensible o est desfasada

La aplicacin cubre gran parte de los requisitos y del rendimiento


esperado

La aplicacin est sujeta a cambios frecuentes, que pueden afectar a


parte del diseo.

Se prev que la aplicacin aun pueda tener larga vida.

La ingeniera inversa puede extraer informacin de diseo de cdigo fuente,


pero el nivel de abstraccin, la completitud de la documentacin, el grado con
3

el cual trabajaban al mismo tiempo las herramientas y el analista humano, y la


direccionalidad del proceso son sumamente variables.

1.1

NIVEL DE ABSTRACCIN

El nivel de abstraccin es un proceo de ingeniera inversa y las herramientas


quee se utilizan para realizarlo aluden a la sofisticacin de la informacin de
diseo que se pueden extraer del cdigo fuente. El nivel de abstraccin ideal
deber ser lo

ms alto posible, es decir, el proceso de ingeniera inversa

deber ser capaz de derivar:

Sus representaciones de diseo de procedimiento (con un bajo nivel de


abstraccin).

La informacin de las estructuras de datos y de programas (un nivel de


abstraccin ligereamente ms elevado)

Modelos de flujs de datos y de control ( un nivel de abstraccin


relativamente alto)

Modelo de entidades y relaciones (un elevado nivel de abstraccin).

A medida que crece el nivel de abtraccin se proporciona al ingeniero de


software

informacin

que

permitir

comprender

ms

fcilmente

estos

programas.
1.2

COMPLETITUD

La completitud de un proceso de ingeniera inversa alude al nivel de detalle


que

se

proporciona en un determinado nivel de abstraccin. En la mayora de los


casos,

la

completitud decrece a medida que aumenta el nivel de abstraccin. Por


ejemplo,
dado un listado del cdigo fuente, es relativamente sencillo desarrollar una
representacin de diseo de procedimientos completa. Tambin se pueden
derivar
representaciones sencillas del flujo de datos, pero es mucho ms difcil
desarrollar

un

conjunto completo de diagramas de flujo de datos o un diagrama de transicin


de

datos. La completitud mejora en proporcin directa a la cantidad de anlisis


efectuado

por

la persona que est efectuando la ingeniera inversa [Pressman, 2003].


1.3

INTERACTIVIDAD

La interactividad alude al grado con el cual el ser humano se integra con las
herramientas automatizadas para crear un proceso de ingeniera inversa
efectivo.

En

la mayora de los casos, a medida que crece el nivel de abstraccin, la


interactividad
deber incrementarse, o si no la completitud se ver reducida [Pressman,
2003].

1.4

DIRECCIONALIDAD

Si la direccionalidad del proceso de ingeniera inversa es monodireccional, toda


la
informacin extrada del cdigo fuente se proporcionar a la ingeniera del
software
que podr entonces utilizarla durante la actividad de mantenimiento. Si la
direccionalidad es bidireccional, entonces la informacin se suministrar a una
herramienta de reingeniera que intentar reestructurar o regenerar el viejo
programa [Pressman, 2003].
1.5

EL PROCESO DE INGENIERA INVERSA

El proceso de ingeniera se representa en la figura. Antes de que puedan


comenzar

las

estructurado

actividades
(sucio)

se

de

ingeniera

reestructura

inversa,
para

que

el

cdigo

solamente

fuente

no

contenga

construcciones de programacin estructurada. Esto hace que el cdigo fuente


sea ms fcil de leer, y es lo que proporciona la base para todas las actividades
subsiguiente de ingeniera inversa.

El ncleo de la ingeniera inversa es una actividad denominada extraccin de


abstracciones. El ingeniero tiene que evaluar el viejo programa y a partir del
cdigo
fuente (que no suele estar documentado) tiene que extraer una especificacin
significativa del procesamiento que se realizar, la interfaz de usuario que se
aplica

las estructuras de datos de programa o de base de datos que se utiliza


[Pressman,
2003].
Para el caso especfico de esta tesis, se analiz y se llevo a cabo la abstraccin
para comprender el procesamiento, por lo tanto, solo trataremos esa parte del
proceso de ingeniera inversa del software.
1.5.1. Ingeniera inversa para comprender el procesamiento
La primera actividad real de la ingeniera inversa comienza con un intento de
comprender y extraer despus abstracciones de procedimientos representadas
por el cdigo fuente. Para comprender las abstracciones de procedimientos, se
analiza

el

cdigo en distintos
niveles

de

abstraccin:
sistema,
programa,
componente,
configuracin

sentencia.
La

funcionalidad

general de todo el
sistema

de

aplicaciones
deber

ser

algo

perfectamente
comprendido
7

antes

de

que

tenga

lugar

un

trabajo

de

ingeniera

inversa ms detallado. Esto es lo que establece un contexto para un anlisis


posterior, y se proporciona ideas generales acerca de los problemas de
interoperabilidad entre aplicaciones dentro del sistema. Cada uno de los
programas de que consta el sistema de aplicaciones representar una
abstraccin funcional con un elevado nivel de detalle. Tambin se crear un
diagrama de bloques como representacin de la iteracin entre estas
abstracciones funcionales. Cada uno de los componentes efecta una subfuncin, y representa una abstraccin definida de procedimientos. En cada
componente se crea una narrativa de procesamiento. En algunas situaciones
ya existen especificaciones de sistema, programa y componente.
Cuando ocurre tal cosa, se revisan las especificaciones para evaluar si se
ajustan al cdigo existente. Todo se complica cuando se considera el cdigo
que reside en el interior del componente. El ingeniero busca las secciones de
cdigo que representan las configuraciones genricas de procedimientos. En
casi todos los componentes, existe una seccin de cdigo que prepara los
datos para su procesamiento (dentro del componente), una seccin diferente
de cdigo que efecta el procesamiento y otra seccin de cdigo que prepara
los resultados del procesamiento para exportarlos de ese componente. En el
interior de cada una de estas secciones, se encuentran configuraciones ms
pequeas. Por ejemplo, suele producirse una verificacin de los datos y una
comprobacin de los lmites dentro de la seccin de cdigo que prepara los
datos para su procesamiento.
Para los sistemas grandes, la ingeniera inversa suele efectuarse mediante el
uso de un enfoque semi-automatizado. Las herramientas CASE se utilizan para
analizar la semntica del cdigo existente. La salida de este proceso se pasa
entonces a unas herramientas de reestructuracin y de ingeniera directa que
completarn el proceso de reingeniera [Pressman, 2003].
1.6

REESTRUCTURACIN

La reestructuracin del software modifica el cdigo fuente y/o los datos en un


intento de adecuarlo a futuros cambios. En general, la reestructuracin no

modifica la arquitectura global del programa. Tiene a centrarse en los detalles


de diseo de mdulos individuales y en estructuras de datos locales definidas
dentro de los mdulos. Si el esfuerzo de la reestructuracin se extiende ms
all de los lmites de los mdulos y abarca la arquitectura del software, la
reestructuracin pasa a ser ingeniera directa (forward engineering) [Pressman,
2003].
[Arnold, 1989] define un cierto nmero de beneficios que se pueden lograr
cuando se reestructura el software:

Programas de mayor calidad con mejor documentacin y menos


complejidad, y ajustados a las prcticas y estndares de la ingeniera del
software moderna.

Reduce la frustracin entre ingenieros del software que deban trabajar


con el programa, mejorando por tanto la productividad y haciendo ms
sencillo el aprendizaje.

Reduce el esfuerzo requerido para llevar a cabo las actividades de


mantenimiento.

Hace que el software sea ms sencillo de comprobar y de depurar.

La reestructuracin se produce cuando la arquitectura bsica de la aplicacin


es slida, aun cuando sus interioridades tcnicas necesiten un retoque.
Comienza cuando existen partes considerables del software que son tiles
todava, y solamente existe un subconjunto de todos los mdulos y datos que
requieren una extensa modificacin3 [Pressman, 2003].
1.7

REDOCUMENTACIN

La redocumentacin es tambin una forma de ingeniera inversa. Es el proceso


mediante el que se produce documentacin retroactivamente desde un
sistema
existente.

Si

la

redocumentacin

toma

la

forma

de

modificacin

de

comentarios en el cdigo fuente, puede ser considerada una forma suave de


reestructuracin. Sin embargo, puede ser considerada como una sub-rea de la
ingeniera inversa porque la documentacin reconstruida es usada para ayudar
al conocimiento del programa. Se piensa en ella como una transformacin
9

desde el cdigo fuente a pseudocdigo y/o prosa, esta ltima considerada


como ms alto nivel de abstraccin que la primera.
Aunque la aparicin de multitud de herramientas facilita las labores de la
ingeniera inversa, es la labor humana (humanware) la decisiva a la hora de
completar el estudio del sistema [Tilley, 1995].
1.8

USOS DE LA INGENIERA INVERSA

La ingeniera inversa suele ser empleada por empresas, para analizar si el


producto de su competencia infringe patentes de sus propios productos.
Muchas veces, la ingeniera inversa es utilizada en el rea militar para
investigar (y copiar) las tecnologas de otras naciones, sin obtener planos ni
detalles de su construccin o desarrollo.
En el software y en el hardware, la ingeniera inversa, muchas veces es
empleada para desarrollar productos que sean compatibles con otros
productos, sin conocer detalles de desarrollo de stos ltimos. En otras
palabras, quien desarrolla los nuevos productos, no puede acceder a los
detalles de fabricacin de los productos de los que intenta ser compatibles.
La ingeniera inversa tambin es empleada para comprobar la seguridad de un
producto.

BIBLIOGRAFA
http://dsp.mx/blog/sistemas-de-informacion/62-que-es-ingenieria-inversa
http://catarina.udlap.mx/u_dl_a/tales/documentos/lis/lopez_a_aa/capitulo4.p
df
http://www.buenastareas.com/ensayos/Ingenieria-Inversa/5812674.html
http://www.alegsa.com.ar/Dic/ingenieria%20inversa.php

10

También podría gustarte