INGENIERÍA INVERSA NORMAS DE CALIDAD APLICADAS
CARMEN LUCÍA ORELLANA 14004129
INDICE 1. INGENIERÍA INVERSA...................................................................3 1.1
NIVEL DE ABSTRACCIÓN.........................................................4
1.2
COMPLETITUD.......................................................................4
1.3
INTERACTIVIDAD...................................................................4
1.4
DIRECCIONALIDAD.................................................................5
1.5
EL PROCESO DE INGENIERÍA INVERSA.....................................5
1.5.1. Ingene!"# n$e!%# !# '()&!en*e! e+ &!('e%#)en,(.........1.-
REESTRUCTURACIÓN..............................................................
1.
REDOCUMENTACIÓN...............................................................
1./
USOS DE LA INGENIERÍA INVERSA.........................................../
BIBLIOGRAÍA................................................................................../
2
1.INGENIERÍA INVERSA La ingeniería inversa es un procedimiento mediante el cual se toma un o!eto por separado para ver como "unciona con la #nalidad de duplicarlo o me!orarlo$ Aun%ue esta practica era empleada por las antiguas industrias& en la actualidad su uso se 'a e(tendido al so"t)are * 'ard)are& en cu*o caso& la ingeniería inversa aplicada al so"t)are implica la reversi+n de un programa %ue est, codi#cado en lengua!e ma%uina -lengua!e de a!o nivel. a el c+digo "uente de alto nivel en el %ue "ue escrito originalmente$ La ingeniería inversa tiene la misi+n de desentra/ar los misterios * los secretos de los sistemas de uso$ Consiste principalmente en recuperar el dise/o de una aplicaci+n a partir de un c+digo$ Esto se reali0a principalmente mediante 'erramientas %ue e(traen la in"ormaci+n de los datos& procedimientos * ar%uitectura del sistema e(istente$ Es aplicale a sistemas con las siguientes características1 •
Documentaci+n ine(istente o totalmente osoleta
•
Programaci+n en lo%ues de c+digos mu* grandes * sin estructurar
•
Ine(istencia de documentaci+n interna en programas& o ien esta es incomprensile o est, des"asada
•
La aplicaci+n cure gran parte de los re%uisitos * del rendimiento esperado
•
La aplicaci+n est, su!eta a camios "recuentes& %ue pueden a"ectar a parte del dise/o$
•
Se prev %ue la aplicaci+n aun pueda tener larga vida$
La ingeniería inversa puede e(traer in"ormaci+n de dise/o de c+digo "uente& pero el nivel de astracci+n& la completitud de la documentaci+n& el grado con 3
el cual traa!aan al mismo tiempo las 'erramientas * el analista 'umano& * la direccionalidad del proceso son sumamente variales$
4
1.1
NIVEL DE ABSTRACCIÓN
El nivel de astracci+n es un proceo de ingeniería inversa * las 'erramientas %uee se utili0an para reali0arlo aluden a la so#sticaci+n de la in"ormaci+n de dise/o %ue se pueden e(traer del c+digo "uente$ El nivel de astracci+n ideal deer, ser lo m,s alto posile& es decir& el proceso de ingeniería inversa deer, ser capa0 de derivar1 •
Sus representaciones de dise/o de procedimiento -con un a!o nivel de astracci+n.$
•
La in"ormaci+n de las estructuras de datos * de programas -un nivel de astracci+n ligereamente m,s elevado.
•
Modelos de 5u!s de datos * de control - un nivel de astracci+n relativamente alto.
•
Modelo de entidades * relaciones -un elevado nivel de astracci+n.$
A medida %ue crece el nivel de atracci+n se proporciona al ingeniero de so"t)are in"ormaci+n %ue permitir, comprender m,s ",cilmente estos programas$ 1.2
COMPLETITUD
La completitud de un proceso de ingeniería inversa alude al nivel de detalle %ue se proporciona en un determinado nivel de astracci+n$ En la ma*oría de los casos& la completitud decrece a medida %ue aumenta el nivel de astracci+n$ Por e!emplo& dado un listado del c+digo "uente& es relativamente sencillo desarrollar una representaci+n de dise/o de procedimientos completa$ 6amin se pueden derivar representaciones sencillas del 5u!o de datos& pero es muc'o m,s di"ícil desarrollar un con!unto completo de diagramas de 5u!o de datos o un diagrama de transici+n de
7
datos$ La completitud me!ora en proporci+n directa a la cantidad de an,lisis e"ectuado por la persona %ue est, e"ectuando la ingeniería inversa 8Pressman& 2993:$ 1.3 INTERACTIVIDAD La interactividad alude al grado con el cual el ser 'umano se ;integra< con las
'erramientas automati0adas para crear un proceso de ingeniería inversa e"ectivo$ En la ma*oría de los casos& a medida %ue crece el nivel de astracci+n& la interactividad deer, incrementarse& o si no la completitud se ver, reducida 8Pressman& 2993:$
1.4 DIRECCIONALIDAD Si la direccionalidad del proceso de ingeniería inversa es monodireccional& toda
la in"ormaci+n e(traída del c+digo "uente se proporcionar, a la ingeniería del so"t)are %ue podr, entonces utili0arla durante la actividad de mantenimiento$ Si la direccionalidad es idireccional& entonces la in"ormaci+n se suministrar, a una 'erramienta de reingeniería %ue intentar, reestructurar o regenerar el vie!o programa 8Pressman& 2993:$ 1.5 EL PROCESO DE INGENIERÍA INVERSA El proceso de ingeniería se representa en la #gura$ Antes de %ue puedan
comen0ar las actividades de ingeniería inversa& el c+digo "uente no estructurado -;sucio<. se reestructura para %ue solamente contenga construcciones de programaci+n estructurada$ Esto 'ace %ue el c+digo "uente sea m,s ",cil de leer& * es lo %ue proporciona la ase para todas las actividades susiguiente de ingeniería inversa$
=
El n>cleo de la ingeniería inversa es una actividad denominada e(tracci+n de astracciones$ El ingeniero tiene %ue evaluar el vie!o programa * a partir del c+digo "uente -%ue no suele estar documentado. tiene %ue e(traer una especi#caci+n signi#cativa del procesamiento %ue se reali0ar,& la inter"a0 de usuario %ue se aplica * las estructuras de datos de programa o de ase de datos %ue se utili0a 8Pressman& 2993:$ Para el caso especí#co de esta tesis& se anali0+ * se llevo a cao la astracci+n para comprender el procesamiento& por lo tanto& solo trataremos esa parte del proceso de ingeniería inversa del so"t)are$ ?$7$?$ Ingeniería inversa para comprender el procesamiento La primera actividad real de la ingeniería inversa comien0a con un intento de comprender * e(traer despus astracciones de procedimientos representadas por el c+digo "uente$ Para comprender las astracciones de procedimientos& se anali0a el c+digo en distintos niveles de astracci+n1 sistema& programa& componente& con#guraci+n * sentencia$ La "uncionalidad general de todo el sistema de aplicaciones deer, ser algo per"ectamente comprendido @
antes de %ue tenga lugar un traa!o de ingeniería inversa m,s detallado$ Esto es lo %ue estalece un conte(to para un an,lisis posterior& * se proporciona ideas generales acerca de los prolemas de interoperailidad entre aplicaciones dentro del sistema$ Cada uno de los programas de %ue consta el sistema de aplicaciones representar, una astracci+n "uncional con un elevado nivel de detalle$ 6amin se crear, un diagrama de lo%ues como representaci+n de la iteraci+n entre estas astracciones "uncionales$ Cada uno de los componentes e"ect>a una su "unci+n& * representa una astracci+n de#nida de procedimientos$ En cada componente se crea una narrativa de procesamiento$ En algunas situaciones *a e(isten especi#caciones de sistema& programa * componente$ Cuando ocurre tal cosa& se revisan las especi#caciones para evaluar si se a!ustan al c+digo e(istente$ 6odo se complica cuando se considera el c+digo %ue reside en el interior del componente$ El ingeniero usca las secciones de c+digo %ue representan las con#guraciones genricas de procedimientos$ En casi todos los componentes& e(iste una secci+n de c+digo %ue prepara los datos para su procesamiento -dentro del componente.& una secci+n di"erente de c+digo %ue e"ect>a el procesamiento * otra secci+n de c+digo %ue prepara los resultados del procesamiento para e(portarlos de ese componente$ En el interior de cada una de estas secciones& se encuentran con#guraciones m,s pe%ue/as$ Por e!emplo& suele producirse una veri#caci+n de los datos * una comproaci+n de los límites dentro de la secci+n de c+digo %ue prepara los datos para su procesamiento$ Para los sistemas grandes& la ingeniería inversa suele e"ectuarse mediante el uso de un en"o%ue semiautomati0ado$ Las 'erramientas CASE se utili0an para ;anali0ar< la sem,ntica del c+digo e(istente$ La salida de este proceso se pasa entonces a unas 'erramientas de reestructuraci+n * de ingeniería directa %ue completar,n el proceso de reingeniería 8Pressman& 2993:$ 1.REESTRUCTURACIÓN La reestructuraci+n del so"t)are modi#ca el c+digo "uente *Bo los datos en un
intento de adecuarlo a "uturos camios$ En general& la reestructuraci+n no
modi#ca la ar%uitectura gloal del programa$ 6iene a centrarse en los detalles de dise/o de m+dulos individuales * en estructuras de datos locales de#nidas dentro de los m+dulos$ Si el es"uer0o de la reestructuraci+n se e(tiende m,s all, de los límites de los m+dulos * aarca la ar%uitectura del so"t)are& la reestructuraci+n pasa a ser ingeniería directa -"or)ard engineering. 8Pressman& 2993:$ 8Arnold& ?: de#ne un cierto n>mero de ene#cios %ue se pueden lograr cuando se reestructura el so"t)are1 •
Programas de ma*or calidad con me!or documentaci+n * menos comple!idad& * a!ustados a las pr,cticas * est,ndares de la ingeniería del so"t)are moderna$
•
Reduce la "rustraci+n entre ingenieros del so"t)are %ue dean traa!ar con el programa& me!orando por tanto la productividad * 'aciendo m,s sencillo el aprendi0a!e$
•
Reduce el es"uer0o re%uerido para llevar a cao las actividades de mantenimiento$
•
ace %ue el so"t)are sea m,s sencillo de comproar * de depurar$
La reestructuraci+n se produce cuando la ar%uitectura ,sica de la aplicaci+n es s+lida& aun cuando sus interioridades tcnicas necesiten un reto%ue$ Comien0a cuando e(isten partes considerales del so"t)are %ue son >tiles todavía& * solamente e(iste un sucon!unto de todos los m+dulos * datos %ue re%uieren una e(tensa modi#caci+n3 8Pressman& 2993:$ 1.
REDOCUMENTACIÓN
La redocumentaci+n es tamin una "orma de ingeniería inversa$ Es el proceso mediante el %ue se produce documentaci+n retroactivamente desde un sistema e(istente$ Si la redocumentaci+n toma la "orma de modi#caci+n de comentarios en el c+digo "uente& puede ser considerada una "orma suave de reestructuraci+n$ Sin emargo& puede ser considerada como una su,rea de la ingeniería inversa por%ue la documentaci+n reconstruida es usada para a*udar al conocimiento del programa$ Se piensa en ella como una trans"ormaci+n
desde el c+digo "uente a pseudoc+digo *Bo prosa& esta >ltima considerada como m,s alto nivel de astracci+n %ue la primera$ Aun%ue la aparici+n de multitud de 'erramientas "acilita las laores de la ingeniería inversa& es la laor 'umana -'uman)are. la decisiva a la 'ora de completar el estudio del sistema 86ille*& ?7:$ 1./ USOS DE LA INGENIERÍA INVERSA La ingeniería inversa suele ser empleada por empresas& para anali0ar si el
producto de su competencia in"ringe patentes de sus propios productos$ Muc'as veces& la ingeniería inversa es utili0ada en el ,rea militar para investigar -* copiar. las tecnologías de otras naciones& sin otener planos ni detalles de su construcci+n o desarrollo$ En el so"t)are * en el 'ard)are& la ingeniería inversa& muc'as veces es empleada para desarrollar productos %ue sean compatiles con otros productos& sin conocer detalles de desarrollo de stos >ltimos$ En otras palaras& %uien desarrolla los nuevos productos& no puede acceder a los detalles de "aricaci+n de los productos de los %ue intenta ser compatiles$ La ingeniería inversa tamin es empleada para comproar la seguridad de un producto .
FIFLIOGRAHA 'ttp1BBdsp$m(BlogBsistemasdein"ormacionB=2%ueesingenieriainversa 'ttp1BBcatarina$udlap$m(BuJdlJaBtalesBdocumentosBlisBlope0JaJaaBcapitulo4$p d" 'ttp1BB)))$uenastareas$comBensa*osBIngenieriaInversaB7?2=@4$'tml 'ttp1BB)))$alegsa$com$arBDicBingenieriaK29inversa$p'p
?9