Académique Documents
Professionnel Documents
Culture Documents
Contenido:
Ingeniera Inversa * Beneficios de la Ingeniera Inversa * Tipos de Ingeniera Inversa * Herramientas para la Ingeniera Inversa Reingeniera de Software * Beneficios de la Reingeniera de Software * Pasos de la Reingeniera de Software Anlisis y Diseo de Sistemas Orientados a Objetos * Principios del Anlisis y Diseo de Sistemas Orientados a Objetos * Metodologas Orientadas al Anlisis y Diseo de Sistemas Orientados a Objetos Programacin Extrema * Valores de la Programacin Extrema
Ingeniera Inversa
No es generar cdigos, sino que, el cdigo fuente es examinado, analizado y convertido en entidades para el deposito. Su primer paso es cargar, en el conjunto de herramientas el cdigo de programas existen, segn ese conjunto de herramientas.
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 cdigo fuente, se generan representaciones grficas lo que facilita su comprensin.
Recuperar y/o actualizar la informacin perdida (cambios que no se documentaron en su momento): en la evolucin del sistema se realizan cambios que no se suele actualizar en las representaciones de nivel de abstraccin ms alto, para lo cual se utiliza la recuperacin de diseo.
Detectar efectos laterales: los cambios que se puedan realizar en un sistema puede conducirnos a que surjan efectos no deseados, esta serie de anomalas puede ser detectados por la ingeniera inversa. Facilitar la reutilizacin: por medio de la ingeniera inversa se pueden detectar componentes de posible reutilizacin de sistemas existentes, pudiendo aumentar la productividad, reducir los costes y los riesgos de mantenimiento.
Ingeniera inversa de interfaces de usuario: Se aplica con objeto de mantener la lgica interna del programa para obtener los modelos y especificaciones que sirvieron de base para la construccin de la misma, con objeto de tomarlas como punto de partida en procesos de ingeniera directa que permitan modificar dicha interfaz.
Ingeniera inversa de datos: Se aplica sobre algn cdigo de bases datos (aplicacin, cdigo SQL, etc.) para obtener los modelos relacionales o sobre el modelo relacional para obtener el diagrama entidad-relacin. Ingeniera inversa de lgica o de proceso: Cuando la ingeniera inversa se aplica sobre cdigo de un programa para averiguar su lgica o sobre cualquier documento de diseo para obtener documentos de anlisis o de requisitos.
Los Depuradores: Un depurador es un programa que se utiliza para controlar otros programas. Permite avanzar paso a paso por el cdigo, rastrear fallos, establecer puntos de control y observar las variables y el estado de la memoria en un momento dado del programa que se est depurando. Los depuradores son muy valiosos a la hora de determinar el flujo lgico del programa.
Las Herramientas de Inyeccin de Fallos: Las herramientas que pueden proporcionar entradas malformadas con formato inadecuado a procesos del software objetivo para provocar errores son una clase de herramientas de insercin de fallos. Los errores del programa pueden ser analizados para determinar si los errores existen en el software objetivo. Algunos fallos tienen implicaciones en la seguridad, como los fallos que permiten un acceso directo del asaltante al ordenador principal o red.
Los Desensambladores: Se trata de una herramienta que convierte cdigo mquina en lenguaje ensamblador. El lenguaje ensamblador es una forma legible para los humanos del cdigo mquina. Los desensambladores revelan que instrucciones mquinas son usadas en el cdigo. El cdigo mquina normalmente es especfico para una arquitectura dada del hardware. De forma que los desensambladores son escritor expresamente para la arquitectura del hardware del software a desensamblar.
Los Descompiladores: Un descompilador es una herramienta que transforma cdigo en ensamblador o cdigo mquina en cdigo fuente en lenguaje de alto nivel. Tambin existen descompiladores que transforman lenguaje intermedio en cdigo fuente en lenguaje de alto nivel. Estas herramientas son sumamente tiles para determinar la lgica a nivel superior como bucles o declaraciones if-then de los programas que son descompilados.
La Herramienta CASE: Las herramientas de ingeniera de sistemas asistida por ordenador (Computer-Aided Systems Engineering CASE) aplican la tecnologa informtica a las actividades, las tcnicas y las metodologas propias de desarrollo de sistemas para automatizar o apoyar una o ms fases del ciclo de vida del desarrollo de sistemas.
Reingeniera de Software
Se puede definir como el proceso completo de convertir el cdigo de programa al diseo CASE, modificar el diseo y volver a generar el nuevo cdigo. El termino se usa en distintas reas de la ingeniera, programacin y negocios.
Reingeniera de software
Con respecto a los negocios, es una forma de darle una nueva orientacin a los procesos claves de una organizacin, de esta manera el rol de los analistas de sistemas radica en el uso de tecnologas de informacin novedosas, como consecuencia a los cambios requeridos.
Pueden reducir los riegos evolutivos de una organizacin. Puede ayudar a las organizaciones a recuperar sus inversiones en software.
Ampla las capacidades de las herramientas CASE. Es un catalizador para la automatizacin del mantenimiento del software.
Puede actuar como catalizador para la aplicacin de tcnicas de inteligencia artificial para resolver problemas de reingeniera.
Anlisis de inventario: Todas las organizaciones de software deberan tener un inventario de todas sus aplicaciones. Los candidatos a la reingeniera aparecen cuando se ordena esta informacin en funcin de su importancia para el negocio, longevidad, mantenibilidad actual y otros criterios localmente importantes. Es importante sealar que el inventario deber visitarse con regularidad, el estado de las aplicaciones puede cambiar en funcin del tiempo y, como resultado, cambiarn las prioridades para la reingeniera.
Restauracin de documentos: La documentacin debe actualizarse pero se tiene recursos limitados. Se utiliza un enfoque de documentar cuando se toque. El sistema es crucial para el negocio y debe volver a documentarse por completo incluso en este caso un enfoque inteligente es recortar la documentacin a un mnimo esencial. Cada una de estas opciones es viable. Una organizacin de software debe elegir la ms apropiada para cada caso.
Ingeniera Inversa: La Ingeniera inversa es un proceso de recuperacin de diseo. Con las herramientas de la ingeniera inversa se extraer del programa existente informacin del diseo arquitectnico y de proceso, e informacin de los datos.
Restructuracin de cdigos: Llevar a cabo esta actividad requiere analizar el cdigo fuente empleando una herramienta de reestructuracin, se indican las violaciones de las estructuras de programacin estructurada, y entonces se reestructura el cdigo (esto se puede hacer automticamente). El cdigo reestructurado resultante se revisa y se comprueba para asegurar que no se hayan introducido anomalas.
La reestructuracin de datos: Es una actividad de reingeniera a gran escala. En la mayora de los casos, la reestructuracin de datos comienza con una actividad de ingeniera inversa. La arquitectura de datos actual se analiza con minuciosidad y se define los modelos de datos necesarios, se identifican los objetivos de datos y los atributos, y despus se revisa la calidad de las estructuras de datos existentes.
Ingeniera directa: La ingeniera directa no solo recupera la informacin de diseo a partir del software existente, tambin utiliza esta informacin para alterar o reconstruir el sistema existente con la finalidad de mejorar su calidad global. En la mayora de los casos el software sometido a reingeniera vuelve a implementar la funcin del sistema existente y tambin aade nuevas funciones o mejoras.
Clases: Una clase es una categora de objetos similares. Los objetos se agrupan en clases.
Herencia: Las clases pueden tener hijos, esto es, una clase puede ser creada a partir de otra clase. La clase original, o madre, es llamada clase base. La clase hija es llamada clase derivada. Una clase derivada puede ser creada en forma tal que herede todos los atributos y comportamientos de la clase base.
Objetos: Un objeto es una representacin en computadora de alguna cosa o evento del mundo real.
una
Encapsulacin: Tpicamente, la informacin dentro de un objeto esta encapsulada por su comportamiento. Esto significa que un objeto mantiene datos acerca de cosas del mundo real a las que representa en un sentido verdadero.
Polimorfismo: El trmino polimorfismo se refiere a comportamientos alternos entre clases derivadas relacionadas. Cuando varias clases heredan atributos y comportamientos, pude haber casos en donde el comportamiento de una clase derivada debe ser diferente del de su clase base o de sus clases derivadas parientes.
El mtodo de Rumbaugh: este mtodo mejor conocido como OMT, se utiliza para el anlisis, diseo del sistema y diseo a nivel de objetos. La de anlisis crea tres modelos: el modelo de objetos, el modelo dinmico y el modelo funcional. El diseo se divide en dos actividades diseo de sistemas y diseo de objetos.
El mtodo de Booch: Consta de un micro proceso y un macro proceso de desarrollo tanto para el anlisis y el diseo. El micro proceso identifica clase y objetos, define relaciones entre clases y objetos y realizan una serie de refinamientos para elaborar el modelo del anlisis. El macro proceso, en el diseo, engloba una actividad de planificacin arquitectnica, identifica situaciones relevantes, crea un prototipo de diseo y valida el prototipo aplicndolo a situaciones de uso.
El mtodo de Jacobson: Este mtodo, en el anlisis, se diferencia de los otros por la importancia que da al caso de uso. En principio, el modelo idealizado del anlisis se adapta para acoplarse al ambiente del mundo real. Despus los objetos de diseo primarios, llamados bloques, son creados y catalogados como bloques de interfaz, bloques de entidades y bloques de control. La comunicacin entre bloques durante la ejecucin se define y los bloques se organizan en subsistemas.
Es un metodologa de desarrollo de software ms exitosas de los tiempos recientes. Es el enfoque de desarrollo, usando prcticas de desarrollo y las lleva a los extremos valindose de valores para ello.
Simplicidad: Es la base de la programacin extrema. Se simplifica el diseo para agilizar el desarrollo y facilitar el mantenimiento. Comunicacin: Para los programadores el cdigo comunica mejor cuanto ms simple sea. El cdigo autodocumentado es ms fiable que los comentarios ya que stos ltimos pronto quedan desfasados con el cdigo a medida que es modificado.
Retroalimentacin: Al realizarse ciclos muy cortos tras los cuales se muestran resultados, se minimiza el tener que rehacer partes que no cumplen con los requisitos y ayuda a los programadores a centrarse en lo que es ms importante.
Valenta: La valenta le permite a los desarrolladores que se sientan cmodos con reconstruir su cdigo cuando sea necesario. Esto significa revisar el sistema existente y modificarlo si con ello los cambios futuros se implementaran mas fcilmente.
Fuentes Consultadas
De la Morena, Vernica (2009 a). Qu es la ingeniera inversa? Documento en lnea. Disponible en: [http://cnx.org/content/m17432/latest/]. Recuperado: 10/ 02/ 2012 07:23 p.m. De la Morena, Vernica (2009 b). Qu es la reingeniera del software? Documento en lnea. Disponible en: [http://cnx.org/content/m17438/latest/]. Recuperado: 10/ 02/ 2012 07:27 p.m.
Fundacin Wikipedia, Inc. (2012) Programacin Extrema, Documento en lnea. Disponible en: [http://es.wikipedia.org/wiki/Programaci%C3%B3n_extrema]. Recuperado: 10/ 02/2012 10:53 p.m.
Galeano, Abraham; Porras, Reinaldo; Gutirrez, Osman (2005) Anlisis y diseo orientado a objetos. Documento en lnea. Disponible en: [http://docentes.uni.edu.ni/fec/Giovanni.Saenz/Ingenieria_de_Software/Analisis_y_DisenoO O.pdf]. Recuperado: 10/ 02/ 2012 07:42 p.m. Kendall, Kenneth; Kendall, Julie (2005) Anlisis y Diseo de Sistemas (6 ed.) Mxico: Pearson Educacin.