ingenieria inversa

Embed Size (px)

DESCRIPTION

ingenieria inversa

Citation preview

Introduccin.

Como caso final de la primera unidad de la materia de procesos de manufactura y como complemento se analizara la utilizacin de UML (Unified Modeling Language) como mtodo o herramienta para la aplicacin de la ingeniera Inversa. Primero se dar un breve repaso de los conceptos ms importantes del artculo y de la materia.

Qu es la Ingeniera inversa?Podemos encontrar en la red multitud de definiciones para la Ingeniera Inversa. De todas ellas, podemos extraer la siguiente, como vlida, aunque algo ambigua:

La ingeniera inversa es el proceso de descubrir los principios tecnolgicos de un dispositivo, objeto o sistema, a travs de razonamiento abducido de su estructura, funcin, forma y/o operacin.

Bien, dicho esto, vamos a concretar un poco ms: La ingeniera inversa nos permite obtener la base de fabricacin, programacin, instalacin o concepcin de cualquier objeto, software o proceso.La ingeniera inversa es el proceso de extraer el conocimiento o el diseo del proyecto de todo lo hecho por el hombre. El concepto ha existido desde hace mucho tiempo antes de los ordenadores o la tecnologa moderna, y probablemente se remonta a los das de la revolucin industrial. La ingeniera inversa se lleva a cabo normalmente para obtener conocimientos que faltan, ideas y la filosofa de diseo cuando dicha informacin no est disponible. En algunos casos, la informacin es propiedad de alguien que no est dispuesto a compartir. En otros casos, la informacin se ha perdido o destruido.

La ingeniera inversa es el proceso de extraer el conocimiento o el diseo del proyecto de todo lo hecho por el hombre. El concepto ha existido desde hace mucho tiempo antes de los ordenadores o la tecnologa moderna, y probablemente se remonta a los das de la revolucin industrial. La ingeniera inversa se lleva a cabo normalmente para obtener conocimientos que faltan, ideas y la filosofa de diseo cuando dicha informacin no est disponible. En algunos casos, la informacin es propiedad de alguien que no est dispuesto a compartir. En otros casos, la informacin se ha perdido o destruido. (SEI, 2004)

Objetivos.

-Elaborar un reporte sobre la ingeniera inversa, explicando principalmente que es, cules son sus usos, y un ejemplo.

-Llevar la investigacin en fsico a la clase, para compartir puntos de vista e informacin.

-El alumno tendr conocimientos bsicos sobre la ingeniera inversa.

Objetivo de la ingeniera inversa:

El objetivo de la ingeniera inversa es obtener informacin a partir de un producto accesible al pblico, con el fin de determinar de qu est hecho, qu lo hace funcionar y cmo fue fabricado. Los productos ms comunes que son sometidos a la ingeniera inversa son los programas de computadoras y los componentes electrnicos, pero bsicamente casi cualquier proceso puede ser sometido a un anlisis de Ingeniera Inversa.

Desarrollo. (Usos y ejemplo)

"La reingeniera se define como el examen y la alteracin de un sistema de software para reconstituirlo y re implementarlo en una nueva forma". El proceso de la reingeniera involucra la recuperacin del diseo de una aplicacin existente y el uso de esa informacin para reconstituirla mejorando su calidad y disminuyendo el costo de su mantenimiento. Aun cuando la reingeniera re implementa funciones existentes del sistema de una manera ms eficiente, a menudo tambin se agregan funciones nuevas o perfeccionadas. El proceso de la reingeniera puede combinar varios subprocesos (vase figura 1), como la ingeniera inversa, la reestructuracin, la re documentacin o la ingeniera directa.

Usos de la ingeniera inversa-La ingeniera inversa suele ser empleada por las 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) lastecnologasde otras naciones, sin obtener planos ni detalles de su construccin o desarrollo.

-En elsoftwarey en elhardware, 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 laseguridadde un producto, generarkeygensdeaplicaciones, reparacin de productos, etc.

-La ingeniera inversa es utilizada por las empresas para analizar si los productosdelacompetenciainfringenlaleyoparasimplemente hacer un producto mejorado.

-En el rea militar utilizan la ingeniera inversa para investigar y copiarlas tecnologas y armamentos de otras naciones.

-En el rea de software y hardware es utilizada la ingeniera inversa para desarrollar productos que sean compatibles con otros productos.

Software Reverse Engineering: Reversing.El software es una de las tecnologas ms complejas y fascinantes que nos rodean hoy en da, e ingeniera de software contrario se trata de la apertura de un programa de "Caja", y mirar en su interior. Por supuesto, no ser necesario ningn destornillador en este viaje. Al igual que la ingeniera de software, ingeniera inversa de software es un proceso puramente virtual, que implica slo una computadora, y la mente humana. La ingeniera de software inversa requiere una combinacin de habilidades y una exhaustiva comprensin de las computadoras y desarrollo de software, pero como la mayora temas que valen la pena, el nico requisito real es una gran curiosidad y el deseo para aprender. La ingeniera de software inversa integra varias artes: el desciframiento de cdigos, la resolucin de rompecabezas, programacin y anlisis lgico. El proceso es utilizado por una variedad de diferentes personas para una variedad de diferentes propsitos.UMLEl Lenguaje Unicado de Modelado prescribe un conjunto de notaciones y diagramas estndar para modelar sistemas orientados a objetos, y describe la semntica esencial de lo que estos diagramas smbolos signican.

Ingeniera Inversa: Un Mtodo con UMLEste trabajo analizado presenta un mtodo aplicable a sistemas de software que se desarrollaron con tcnicas y herramientas orientadas a objetos, pero carecen de la documentacin adecuada y consistente que facilite el mantenimiento. A partir de la tecnologa de la ingeniera inversa, se pretende que el mtodo sea una aproximacin prctica que permita generar modelos, utilizando el estndar UML, de aquellos sistemas cuya documentacin es escasa, desactualizada o inexistente. Para analizar el producto de software, se aplica el enfoque oportunstico, que es una combinacin de los enfoques descendente y ascendente. El anlisis ascendente se emplea en la reconstruccin de los casos de uso que modelan la funcionalidad de la aplicacin. Luego, se utiliza el enfoque descendente para recuperar los elementos estructurales que componen el sistema y las interfaces entre ellos, es decir, la arquitectura. La arquitectura del software se puede describir con diferentes vistas que dependen del aspecto arquitectnico en estudio. Es aqu donde resulta muy til el "modelo de vistas 4+1" para organizar las descripciones lgica, de proceso, de desarrollo y fsica, amalgamadas por la vista de escenarios...

Recuperacin del Modelo Descriptivo mediante Ingeniera InversaLa aplicacin de la ingeniera inversa involucra una serie de actividades que comienza habitualmente con la definicin de estrategias para la comprensin de los programas. El modelo cognitivo obtenido sirve como gua o referencia para la manipulacin de datos, informacin y conocimiento, en las etapas posteriores. En esta etapa se comienza con la re documentacin y recuperacin del diseo y la arquitectura actual del sistema.Para efectuar la reingeniera del software, los desarrolladores deben conocer la funcionalidad, los objetivos, la estructura interna y los requisitos de operacin del sistema. Por lo tanto, es necesario disponer de la mayor cantidad posible de informacin acerca del software, de tal forma que s que facilite la comprensin del cdigo fuente heredado.Como complemento de la documentacin disponible, pero no menos importante, es necesario que se realicen entrevistas a los responsables del desarrollo original del software. Estas entrevistas pueden suministrar toda la informacin ausente en el caso de encontrarnos con especificaciones pobres o inexistentes.Los documentos y artefactos que pueden suministrar informacin importante durante el proceso de ingeniera inversa son los siguientes: -Especificaciones de requisitos -Especificaciones de diseo -Especificaciones de implementacin -Cdigo fuente -Manuales de usuario -Ayudas en lnea

Ejemplo.Ahora se comienza a realizar el anlisis por el cual obtendremos el modelo conceptual de una base de datos a partir de un modelo fsico.Esta aplicacin est implementada en Delphi, con un Oracle Server 8i Lite, por lo tanto los ejemplos estn basados en dichos productos. De todas formas, el anlisis es el mismo a seguir independientemente del lenguaje o base de datos que utilicemos.Lo primero que se debe de hacer es obtener toda la informacin posible de la estructura de la base de datos (no de los datos que contiene), es decir, nombre de las tablas, atributos de las tablas, etc. Dicha informacin se encuentra almacenada en el catlogo de la base de datos (el cual se consulta fcilmente utilizando SQL). La informacin obtenida a partir del catlogo se debe almacenar en algn lado (se suele crear una serie de clases que permitan almacenar toda la informacin y adems a dichas clases se les agrega cierta funcionalidad que permita manejar fcilmente la informacin almacenada en ellas).Para realizar la obtencin de todas las tablas que componen la base de datos se debe efectuar una consulta SQL. En dicha consulta se obtiene los nombres de las tablas, atributos que componen las tablas con sus caractersticas ms generales (tipos de datos y si admite valores nulos).La consulta SQL que utilice es la siguiente:SELECT at.table_name, attc.column_name, attc._data_type, attc.nullableFROM all_tables at, all_tab_columns attcWHERE at.table_name = attc.table_nameEl resultado de dicha consulta ser el siguiente: por cada fila habrn cuatro columnas. Las columnas significan lo siguiente: nombre de la tabla, nombre del atributo, tipo de dato del atributo y si el atributo puede ser nulo. Por lo tanto, cada tabla tendr tantas filas en el resultado de la consulta como atributos posea.Una vez realizada esta consulta se procede a guardarla en las estructuras de almacenamiento. Una vez hecho se puede analizar cuales atributos de las tablas corresponden a la clave primaria, cuales son claves forneas y cuales son claves nicas (que en el modelo de normalizacin seran las claves candidatas).Para obtener aquellos atributos que componen la clave primaria de una tabla dada se realiza la siguiente consulta, que se debe realizar para cada tabla existente en la base de datos, cambiando en la siguiente consulta Nombre Tabla por el nombre de la tabla que se consulta (a partir de este momento, cada vez que se coloque Nombre Tabla se entender que es la tabla que nos encontramos analizando). Aqu va la consulta SQL realizada:SELECT column_nameFROM all_constraints ac, all_cons_columns accWHERE ac.table_name = 'NombreTabla'AND ac.constraint_type = 'P'AND ac.constraint_name = acc.constraint_nameORDER BY acc.position;El resultado de esta consulta es una fila para cada atributo que forma parte de la clave primaria. Dichos atributos se desplegarn en orden ascendente segn su posicin, para as poder ingresarlos en el orden por el cual fueron definidos.A continuacin se obtendrn los atributos que forman las claves forneas de una tabla, y las tablas a las cuales hace referencia dicha clave fornea perteneciente a una determinada tabla, que se llamar nuevamente Nombre Tabla.SELECT ac.constraint_name, column_name, r_constraint_nameFROM all_constraints ac, all_cons_columns accWHERE ac.table_name = 'NombreTabla'AND ac.constraint_type = 'R'AND ac.constraint_name = acc.constraint_nameORDER BY acc.position;Como resultado se obtiene una fila por cada atributo que compone a una clave fornea. Cada constraint (clave fornea en este caso) tendr tantas filas como atributos los compongan. Por cada columna tenemos la siguiente informacin en el siguiente orden: nombre del constraint, nombre del atributo y nombre del constraint al cual hace referencia.A partir de los constraints a los cuales se hacen referencia, se puede obtener fcilmente a que tabla pertenecen por medio de la siguiente consulta:SELECT table_nameFROM all_constraintsWHERE constraint_name = 'NombreConstraint'Con la consulta anterior obtenemos a que tabla pertenece el constraint NombeConstraint y por lo tanto, si una clave fornea hace referencia al constraint NombreConstraint, entonces ahora sabemos a qu tabla hace referencia dicha clave fornea.Finalmente, para la carga de datos slo falta averiguar cules son los atributos que componen a las claves nicas. Para esto se realiza la siguiente consulta:SELECT ac.constraint_name, column_nameFROM all_constraints ac, all_cons_columns accWHERE ac.table_name = 'NombreTabla'AND ac.constraint_type = 'U'AND ac.constraint_name = acc.constraint_nameORDER BY acc.position;La consulta anterior devuelve todas las claves nicas que existen en una tabla. Cada clave nica tendr tantas filas en el resultado de la consulta como atributos la compongan. El significado de las columnas es el siguiente: nombre del constraint (o sea, de la clave nica en este caso) y nombre del atributo.Conclusin y Recomendaciones.

En la actualidad existen diversas tecnologas similares para realizar este proceso, aunque la baseFundamental de ellas es la misma en casi todos los casos: Obtener datos del objeto sobre el quequeremos realizar la ingeniera inversa, y poderlos manipular y tratar hasta ser capaces de reproducirdicho objeto mediante la tecnologa de fabricacin ms adecuada en cada uno de los diferentes casos.

Muchas veces se ha asociado a la ingeniera inversa como el mtodo para obtener copias, muchas vecessin licencia, de objetos o piezas que se hallen en el mercado. Este sera uno de sus mltiples usos, peroen realidad, la aplicacin de estas tecnologas va mucho ms all.

La ingeniera inversa, tiene su lado bueno y su lado malo, como toda cosa en este universo, el usar ellado bueno depende de los ingenieros que la utilizan. En lo personal, hacer copias de algo que ya secreo, es bueno, al menos claro, que se cuente con el permiso de la persona que tiene los derechos dedicho objeto.

Sin recomendaciones por mi parte, en el sentido del trabajo.

En el sentido de la ingeniera inversa, podra decir que es muy interesante, pero podramos invertirtiempo y recursos, en nuevas ingenieras que an faltan descubrir, o bien en ingenieras ya existentes quese han vuelto un poco olvidadas.

Bibliografa.-Artculo del caso analizado: La Tecnologa de la Ingeniera Inversa: Un Mtodo con UML, Diana Palliotto; Gabriel Romano-Migracin de sistemas heredados: Una metodologa de apoyo basada en el uso de herramientas de KDD, M. Anglica Caro Gutirrez-Anlisis y Diseo de sistemas (6 ed.), Pearson Educacin.