República Bolivariana de Venezuela    Gobierno del Distrito Metropolitano de Caracas     Secretaría de Educación del Distr...
Contenido:   Ingeniería Inversa    * Beneficios de la Ingeniería Inversa    * Tipos de Ingeniería Inversa    * Herramient...
Ingeniería Inversa No es generar códigos, sino que, el código fuente esexaminado, analizado y convertido en entidades para...
Beneficios de la Ingeniería              Inversa   Reducir la complejidad del sistema: al intentar comprender    el softw...
Beneficios de la Ingeniería              Inversa   Recuperar y/o actualizar la información perdida (cambios    que no se ...
Beneficios de la Ingeniería              Inversa   Detectar efectos laterales: los cambios que se puedan    realizar en u...
Tipos de Ingeniería Inversa   Ingeniería inversa de interfaces de usuario: Se aplica con    objeto de mantener la lógica ...
Tipos de Ingeniería Inversa   Ingeniería inversa de datos: Se aplica sobre algún código de    bases datos (aplicación, có...
Herramientas para la            Ingeniería Inversa   Los Depuradores: Un depurador es un programa que se    utiliza para ...
Herramientas para la            Ingeniería Inversa   Las Herramientas de Inyección de Fallos: Las herramientas    que pue...
Herramientas para la              Ingeniería Inversa   Los Desensambladores: Se trata de una herramienta que convierte   ...
Herramientas para la            Ingeniería Inversa   Los Descompiladores: Un descompilador es una herramienta    que tran...
Herramientas para la            Ingeniería Inversa   La Herramienta CASE: Las herramientas de ingeniería de    sistemas a...
Reingeniería de Software Se puede definir como el proceso completo de convertir elcódigo de programa al diseño CASE, modif...
Reingeniería de software Con respecto a los negocios, es una forma de darle una nuevaorientación a los procesos claves de ...
Beneficios de la Reingeniería            de Software     Entre los beneficios de aplicar reingeniería a un producto    exi...
Beneficios de la Reingeniería            de Software   Amplía las capacidades de las herramientas CASE.   Es un cataliza...
Pasos para la Reingeniería de          software
Pasos para la Reingeniería de             Software   Análisis de inventario: Todas las organizaciones de software    debe...
Pasos para la Reingeniería de             Software   Restauración de documentos: La documentación debe actualizarse    pe...
Pasos para la Reingeniería de             Software   Ingeniería Inversa: La Ingeniería inversa es un proceso de    recupe...
Pasos para la Reingeniería de             Software   Restructuración de códigos: Llevar a cabo esta actividad    requiere...
Pasos para la Reingeniería de             Software   La reestructuración de datos: Es una actividad de reingeniería    a ...
Pasos para la Reingeniería de             Software   Ingeniería directa: La ingeniería directa no solo recupera la    inf...
Análisis y Diseño de Sistemas    Orientados a Objetos  Se puede definir como el enfoque con el propósito defacilitar el de...
Principios del Análisis y Diseño de Sistemas Orientados a Objetos    La idea básica del análisis y diseño de sistema orien...
Principios del Análisis y Diseño de Sistemas Orientados a Objetos   Herencia: Las clases pueden tener hijos, esto es, una...
Principios del Análisis y Diseño de Sistemas Orientados a Objetos   Objetos: Un objeto es una representación en          ...
Principios del Análisis y Diseño de Sistemas Orientados a Objetos   Atributo: dato asociado a un objeto.   Mensajes: Se ...
Principios del Análisis y Diseño de Sistemas Orientados a Objetos   Polimorfismo: El término polimorfismo se refiere a   ...
Metodologías Orientadas al        Análisis y Diseño de Sistema            Orientado a Objetos    Existen diferentes metodo...
Metodologías Orientadas al        Análisis y Diseño de Sistema            Orientado a Objetos   El método de Booch: Const...
Metodologías Orientadas al        Análisis y Diseño de Sistema            Orientado a Objetos   El método de Jacobson: Es...
Programación Extrema (XP)Es un metodología de desarrollo de software más exitosas delos tiempos recientes. Es el enfoque d...
Valores de la programación              Extrema   Simplicidad: Es la base de la programación extrema. Se    simplifica el...
Valores de la programación              Extrema   Retroalimentación: Al realizarse ciclos muy cortos tras los    cuales s...
Fuentes Consultadas   De la Morena, Verónica (2009 a). ¿Qué es la ingeniería inversa? Documento en línea.    Disponible e...
Ingeniería inversa y reingeniería de software
Próxima SlideShare
Cargando en…5
×

Ingeniería inversa y reingeniería de software

29.613 visualizaciones

Publicado el

Ingenieria Inversa y Reingenieria de Software

Publicado en: Tecnología
0 comentarios
7 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

Sin descargas
Visualizaciones
Visualizaciones totales
29.613
En SlideShare
0
De insertados
0
Número de insertados
2.471
Acciones
Compartido
0
Descargas
860
Comentarios
0
Recomendaciones
7
Insertados 0
No insertados

No hay notas en la diapositiva.

Ingeniería inversa y reingeniería de software

  1. 1. República Bolivariana de Venezuela Gobierno del Distrito Metropolitano de Caracas Secretaría de Educación del Distrito Capital E. T. C. R “Juan España” El Valle - Caracas Ingeniería Inversa yReingeniería de Software Prof.: Ana Toro Asignatura: Sistemas de información Sección: 5 “A” Autores: Moisés Aldana #09 Norelys Delgado #10 Moisés Medina #15
  2. 2. Contenido: Ingeniería Inversa * Beneficios de la Ingeniería Inversa * Tipos de Ingeniería Inversa * Herramientas para la Ingeniería Inversa Reingeniería de Software * Beneficios de la Reingeniería de Software * Pasos de la Reingeniería de Software Análisis y Diseño de Sistemas Orientados a Objetos * Principios del Análisis y Diseño de Sistemas Orientados a Objetos * Metodologías Orientadas al Análisis y Diseño de Sistemas Orientados a Objetos Programación Extrema * Valores de la Programación Extrema
  3. 3. Ingeniería Inversa No es generar códigos, sino que, el código fuente esexaminado, analizado y convertido en entidades para eldeposito. Su primer paso es cargar, en el conjunto deherramientas el código de programas existen, según eseconjunto de herramientas.
  4. 4. Beneficios de la Ingeniería Inversa 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.
  5. 5. Beneficios de la Ingeniería Inversa 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.
  6. 6. Beneficios de la Ingeniería Inversa 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.
  7. 7. Tipos de Ingeniería Inversa 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.
  8. 8. Tipos de Ingeniería Inversa 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.
  9. 9. Herramientas para la Ingeniería Inversa Los Depuradores: Un depurador es un programa que se utiliza para controlar otros programas. Permite avanzar paso a paso por el código, 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 lógico del programa.
  10. 10. Herramientas para la Ingeniería Inversa Las Herramientas de Inyección 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 inserción 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.
  11. 11. Herramientas para la Ingeniería Inversa Los Desensambladores: Se trata de una herramienta que convierte código máquina en lenguaje ensamblador. El lenguaje ensamblador es una forma legible para los humanos del código máquina. Los desensambladores revelan que instrucciones máquinas son usadas en el código. El código máquina normalmente es específico para una arquitectura dada del hardware. De forma que los desensambladores son escritor expresamente para la arquitectura del hardware del software a desensamblar.
  12. 12. Herramientas para la Ingeniería Inversa Los Descompiladores: Un descompilador es una herramienta que transforma código en ensamblador o código máquina en código fuente en lenguaje de alto nivel. También existen descompiladores que transforman lenguaje intermedio en código fuente en lenguaje de alto nivel. Estas herramientas son sumamente útiles para determinar la lógica a nivel superior como bucles o declaraciones if-then de los programas que son descompilados.
  13. 13. Herramientas para la Ingeniería Inversa La Herramienta CASE: Las herramientas de ingeniería de sistemas asistida por ordenador (Computer-Aided Systems Engineering – CASE) aplican la tecnología informática a las actividades, las técnicas y las metodologías propias de desarrollo de sistemas para automatizar o apoyar una o más fases del ciclo de vida del desarrollo de sistemas.
  14. 14. Reingeniería de Software Se puede definir como el proceso completo de convertir elcódigo de programa al diseño CASE, modificar el diseño yvolver a generar el nuevo código. El termino se usa endistintas áreas de la ingeniería, programación y negocios.
  15. 15. Reingeniería de software Con respecto a los negocios, es una forma de darle una nuevaorientación a los procesos claves de una organización, de estamanera el rol de los analistas de sistemas radica en el uso detecnologías de información novedosas, como consecuencia alos cambios requeridos.
  16. 16. Beneficios de la Reingeniería de Software Entre los beneficios de aplicar reingeniería a un producto existente se puede incluir: Pueden reducir los riegos evolutivos de una organización. Puede ayudar a las organizaciones a recuperar sus inversiones en software. Puede hacer el software más fácilmente modificable.
  17. 17. Beneficios de la Reingeniería de Software Amplía las capacidades de las herramientas CASE. Es un catalizador para la automatización del mantenimiento del software. Puede actuar como catalizador para la aplicación de técnicas de inteligencia artificial para resolver problemas de reingeniería.
  18. 18. Pasos para la Reingeniería de software
  19. 19. Pasos para la Reingeniería de Software Análisis de inventario: Todas las organizaciones de software deberían tener un inventario de todas sus aplicaciones. Los candidatos a la reingeniería aparecen cuando se ordena esta información en función de su importancia para el negocio, longevidad, mantenibilidad actual y otros criterios localmente importantes. Es importante señalar que el inventario deberá visitarse con regularidad, el estado de las aplicaciones puede cambiar en función del tiempo y, como resultado, cambiarán las prioridades para la reingeniería.
  20. 20. Pasos para la Reingeniería de Software Restauración de documentos: La documentación 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 documentación a un mínimo esencial. Cada una de estas opciones es viable. Una organización de software debe elegir la más apropiada para cada caso.
  21. 21. Pasos para la Reingeniería de Software Ingeniería Inversa: La Ingeniería inversa es un proceso de recuperación de diseño. Con las herramientas de la ingeniería inversa se extraerá del programa existente información del diseño arquitectónico y de proceso, e información de los datos.
  22. 22. Pasos para la Reingeniería de Software Restructuración de códigos: Llevar a cabo esta actividad requiere analizar el código fuente empleando una herramienta de reestructuración, se indican las violaciones de las estructuras de programación estructurada, y entonces se reestructura el código (esto se puede hacer automáticamente). El código reestructurado resultante se revisa y se comprueba para asegurar que no se hayan introducido anomalías.
  23. 23. Pasos para la Reingeniería de Software La reestructuración de datos: Es una actividad de reingeniería a gran escala. En la mayoría de los casos, la reestructuración de datos comienza con una actividad de ingeniería 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 después se revisa la calidad de las estructuras de datos existentes.
  24. 24. Pasos para la Reingeniería de Software Ingeniería directa: La ingeniería directa no solo recupera la información de diseño a partir del software existente, también utiliza esta información para alterar o reconstruir el sistema existente con la finalidad de mejorar su calidad global. En la mayoría de los casos el software sometido a reingeniería vuelve a implementar la función del sistema existente y también añade nuevas funciones o mejoras.
  25. 25. Análisis y Diseño de Sistemas Orientados a Objetos Se puede definir como el enfoque con el propósito defacilitar el desarrollo de sistemas que deben cambiar conrapidez en respuesta a entornos de negocios dinámicos. Seutilizan el estándar de la industria para la modelación de losmismos, en su defecto el lenguaje unificado de modelación(UML), para analizar los sistemas en forma de modelo de casode uso.
  26. 26. Principios del Análisis y Diseño de Sistemas Orientados a Objetos La idea básica del análisis y diseño de sistema orientados a objetos se basa en 8 principios, que se muestran para un mejor entendimiento de la metodología: Clases: Una clase es una categoría de objetos similares. Los objetos se agrupan en clases.
  27. 27. Principios del Análisis y Diseño de Sistemas Orientados a Objetos 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.
  28. 28. Principios del Análisis y Diseño de Sistemas Orientados a Objetos Objetos: Un objeto es una representación en una computadora de alguna cosa o evento del mundo real. Encapsulación: Típicamente, la información 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.
  29. 29. Principios del Análisis y Diseño de Sistemas Orientados a Objetos Atributo: dato asociado a un objeto. Mensajes: Se puede enviar información de un objeto a otro. Método: proceso que realiza un objeto cuando recibe un mensaje.
  30. 30. Principios del Análisis y Diseño de Sistemas Orientados a Objetos Polimorfismo: El término 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.
  31. 31. Metodologías Orientadas al Análisis y Diseño de Sistema Orientado a Objetos Existen diferentes metodologías orientadas al análisis y diseño de sistema orientado a objetos, entre estas se encuentran: El método de Rumbaugh: este método mejor conocido como OMT, se utiliza para el análisis, diseño del sistema y diseño a nivel de objetos. La de análisis crea tres modelos: el modelo de objetos, el modelo dinámico y el modelo funcional. El diseño se divide en dos actividades diseño de sistemas y diseño de objetos.
  32. 32. Metodologías Orientadas al Análisis y Diseño de Sistema Orientado a Objetos El método de Booch: Consta de un micro proceso y un macro proceso de desarrollo tanto para el análisis y el diseño. El micro proceso identifica clase y objetos, define relaciones entre clases y objetos y realizan una serie de refinamientos para elaborar el modelo del análisis. El macro proceso, en el diseño, engloba una actividad de planificación arquitectónica, identifica situaciones relevantes, crea un prototipo de diseño y valida el prototipo aplicándolo a situaciones de uso.
  33. 33. Metodologías Orientadas al Análisis y Diseño de Sistema Orientado a Objetos El método de Jacobson: Este método, en el análisis, se diferencia de los otros por la importancia que da al caso de uso. En principio, el modelo idealizado del análisis se adapta para acoplarse al ambiente del mundo real. Después los objetos de diseño primarios, llamados bloques, son creados y catalogados como bloques de interfaz, bloques de entidades y bloques de control. La comunicación entre bloques durante la ejecución se define y los bloques se organizan en subsistemas.
  34. 34. Programación Extrema (XP)Es un metodología de desarrollo de software más exitosas delos tiempos recientes. Es el enfoque de desarrollo, usandoprácticas de desarrollo y las lleva a los extremos valiéndose devalores para ello.
  35. 35. Valores de la programación Extrema Simplicidad: Es la base de la programación extrema. Se simplifica el diseño para agilizar el desarrollo y facilitar el mantenimiento. Comunicación: Para los programadores el código comunica mejor cuanto más simple sea. El código autodocumentado es más fiable que los comentarios ya que éstos últimos pronto quedan desfasados con el código a medida que es modificado.
  36. 36. Valores de la programación Extrema Retroalimentación: 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 más importante. Valentía: La valentía le permite a los desarrolladores que se sientan cómodos con reconstruir su código cuando sea necesario. Esto significa revisar el sistema existente y modificarlo si con ello los cambios futuros se implementaran mas fácilmente.
  37. 37. Fuentes Consultadas De la Morena, Verónica (2009 a). ¿Qué es la ingeniería inversa? Documento en línea. Disponible en: [http://cnx.org/content/m17432/latest/]. Recuperado: 10/ 02/ 2012 – 07:23 p.m. De la Morena, Verónica (2009 b). ¿Qué es la reingeniería del software? Documento en línea. Disponible en: [http://cnx.org/content/m17438/latest/]. Recuperado: 10/ 02/ 2012 – 07:27 p.m. Fundación Wikipedia, Inc. (2012) Programación Extrema, Documento en línea. Disponible en: [http://es.wikipedia.org/wiki/Programaci%C3%B3n_extrema]. Recuperado: 10/ 02/2012 – 10:53 p.m. Galeano, Abraham; Porras, Reinaldo; Gutiérrez, Osman (2005) Análisis y diseño orientado a objetos. Documento en línea. 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) Análisis y Diseño de Sistemas (6 ed.) México: Pearson Educación.

×