SlideShare a Scribd company logo
1 of 38
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 y
Reingenierí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
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
Ingeniería Inversa

 No es generar códigos, sino que, el código fuente es
examinado, analizado y convertido en entidades para el
deposito. Su primer paso es cargar, en el conjunto de
herramientas el código de programas existen, según ese
conjunto de herramientas.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Reingeniería de Software


 Se puede definir como el proceso completo de convertir el
código de programa al diseño CASE, modificar el diseño y
volver a generar el nuevo código. El termino se usa en
distintas áreas de la ingeniería, programación y negocios.
Reingeniería de software


 Con respecto a los negocios, es una forma de darle una nueva
orientación a los procesos claves de una organización, de esta
manera el rol de los analistas de sistemas radica en el uso de
tecnologías de información novedosas, como consecuencia a
los cambios requeridos.
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.
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.
Pasos para la Reingeniería de
          software
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.
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.
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.
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.
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.
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.
Análisis y Diseño de Sistemas
    Orientados a Objetos

  Se puede definir como el enfoque con el propósito de
facilitar el desarrollo de sistemas que deben cambiar con
rapidez en respuesta a entornos de negocios dinámicos. Se
utilizan el estándar de la industria para la modelación de los
mismos, en su defecto el lenguaje unificado de modelación
(UML), para analizar los sistemas en forma de modelo de caso
de uso.
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.
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.
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.
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.
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.
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.
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.
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.
Programación Extrema (XP)


Es un metodología de desarrollo de software más exitosas de
los tiempos recientes. Es el enfoque de desarrollo, usando
prácticas de desarrollo y las lleva a los extremos valiéndose de
valores para ello.
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.
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.
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.
Ingeniería Inversa y Reingeniería de Software

More Related Content

What's hot

Estandares y modelos de calidad del software
Estandares y modelos de calidad del softwareEstandares y modelos de calidad del software
Estandares y modelos de calidad del softwareaagalvisg
 
Linea de productos de software y Metodo Watch
Linea de productos de software y Metodo WatchLinea de productos de software y Metodo Watch
Linea de productos de software y Metodo WatchGrabielleBarreto
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicaslandeta_p
 
Planificación de proyectos de software
Planificación de proyectos de softwarePlanificación de proyectos de software
Planificación de proyectos de softwarehrubenleiva21
 
Fundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareFundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareNelson Guanipa
 
Planificacion De Proyectos De Software
Planificacion De Proyectos De SoftwarePlanificacion De Proyectos De Software
Planificacion De Proyectos De SoftwareIván Sanchez Vera
 
Tecnicas de estimacion de software
Tecnicas de estimacion de softwareTecnicas de estimacion de software
Tecnicas de estimacion de softwareAdes27
 
Ingeniería del software basada en componentes
Ingeniería del software basada en componentesIngeniería del software basada en componentes
Ingeniería del software basada en componentesjose_macias
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de softwareLiliana Pacheco
 
Desarrollo de software basado en lineas de productos
Desarrollo de software basado en lineas de productosDesarrollo de software basado en lineas de productos
Desarrollo de software basado en lineas de productosJOSEPHPC3000
 
Principios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwarePrincipios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwareJose Patricio Bovet Derpich
 

What's hot (20)

Estandares y modelos de calidad del software
Estandares y modelos de calidad del softwareEstandares y modelos de calidad del software
Estandares y modelos de calidad del software
 
Linea de productos de software y Metodo Watch
Linea de productos de software y Metodo WatchLinea de productos de software y Metodo Watch
Linea de productos de software y Metodo Watch
 
Proyecto de reingenieria de software
Proyecto de reingenieria  de softwareProyecto de reingenieria  de software
Proyecto de reingenieria de software
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicas
 
Planificación de proyectos de software
Planificación de proyectos de softwarePlanificación de proyectos de software
Planificación de proyectos de software
 
Patrones diseño y arquitectura
Patrones diseño y arquitecturaPatrones diseño y arquitectura
Patrones diseño y arquitectura
 
Fundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareFundamentos del Diseño de Software
Fundamentos del Diseño de Software
 
Planificacion De Proyectos De Software
Planificacion De Proyectos De SoftwarePlanificacion De Proyectos De Software
Planificacion De Proyectos De Software
 
5. Métodos de Prueba de Software
5. Métodos de Prueba de Software5. Métodos de Prueba de Software
5. Métodos de Prueba de Software
 
Arquitectura del software
Arquitectura del softwareArquitectura del software
Arquitectura del software
 
Tecnicas de estimacion de software
Tecnicas de estimacion de softwareTecnicas de estimacion de software
Tecnicas de estimacion de software
 
Ingeniería del software basada en componentes
Ingeniería del software basada en componentesIngeniería del software basada en componentes
Ingeniería del software basada en componentes
 
Arquitectura de Software
Arquitectura de SoftwareArquitectura de Software
Arquitectura de Software
 
Metodologia estructurada
Metodologia estructuradaMetodologia estructurada
Metodologia estructurada
 
Metodologia para el proyecto
Metodologia para el proyectoMetodologia para el proyecto
Metodologia para el proyecto
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
 
Desarrollo de software basado en lineas de productos
Desarrollo de software basado en lineas de productosDesarrollo de software basado en lineas de productos
Desarrollo de software basado en lineas de productos
 
Metricas de calidad
Metricas de calidadMetricas de calidad
Metricas de calidad
 
Arquitectura de aplicaciones
Arquitectura de aplicacionesArquitectura de aplicaciones
Arquitectura de aplicaciones
 
Principios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwarePrincipios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del software
 

Viewers also liked

PROCESOS DE INGENIERIA DEL SW
PROCESOS DE INGENIERIA DEL SWPROCESOS DE INGENIERIA DEL SW
PROCESOS DE INGENIERIA DEL SWRaquel Solano
 
modelos del proceso del software
 modelos del proceso del software  modelos del proceso del software
modelos del proceso del software Brihany Rossell
 
Proceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de softwareProceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de softwaresergio
 
El ciclo de vida del desarrollo de los sistemas de información
El ciclo de vida del desarrollo de los sistemas de informaciónEl ciclo de vida del desarrollo de los sistemas de información
El ciclo de vida del desarrollo de los sistemas de informaciónJose Daniel Pacheco Mejia
 
Etapas de Desarrollo Software
Etapas de Desarrollo SoftwareEtapas de Desarrollo Software
Etapas de Desarrollo SoftwareDaniel Román
 

Viewers also liked (7)

La monografía
La monografíaLa monografía
La monografía
 
PROCESOS DE INGENIERIA DEL SW
PROCESOS DE INGENIERIA DEL SWPROCESOS DE INGENIERIA DEL SW
PROCESOS DE INGENIERIA DEL SW
 
Mo Pro Soft
Mo Pro SoftMo Pro Soft
Mo Pro Soft
 
modelos del proceso del software
 modelos del proceso del software  modelos del proceso del software
modelos del proceso del software
 
Proceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de softwareProceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de software
 
El ciclo de vida del desarrollo de los sistemas de información
El ciclo de vida del desarrollo de los sistemas de informaciónEl ciclo de vida del desarrollo de los sistemas de información
El ciclo de vida del desarrollo de los sistemas de información
 
Etapas de Desarrollo Software
Etapas de Desarrollo SoftwareEtapas de Desarrollo Software
Etapas de Desarrollo Software
 

Similar to Ingeniería Inversa y Reingeniería de Software

Mantenimiento de Software
Mantenimiento de SoftwareMantenimiento de Software
Mantenimiento de SoftwareCARMEN
 
Topicos de ingeniería de software
Topicos de ingeniería de softwareTopicos de ingeniería de software
Topicos de ingeniería de softwareAlex Hurtado
 
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1Jose Garcia
 
Ingeniería inversa
Ingeniería inversaIngeniería inversa
Ingeniería inversakarin0902
 
Ingeniería de software
Ingeniería de software Ingeniería de software
Ingeniería de software jevo1994
 
Tarea semana 1
Tarea semana 1Tarea semana 1
Tarea semana 1preciadoag
 
Unidad 1 Ingenieria de software
Unidad 1 Ingenieria de softwareUnidad 1 Ingenieria de software
Unidad 1 Ingenieria de softwareJahiro Bojorquez
 
Mantenimiento del software unidad # 9
Mantenimiento del software unidad # 9Mantenimiento del software unidad # 9
Mantenimiento del software unidad # 9Vanessa Toral Yépez
 
Mantenimiento del software_unidad___9
Mantenimiento del software_unidad___9Mantenimiento del software_unidad___9
Mantenimiento del software_unidad___9naviwz
 
El producto y el proceso
El producto y el procesoEl producto y el proceso
El producto y el procesojenmer
 
software
softwaresoftware
softwarealkosto
 

Similar to Ingeniería Inversa y Reingeniería de Software (20)

Mantenimiento de Software
Mantenimiento de SoftwareMantenimiento de Software
Mantenimiento de Software
 
Proyect
ProyectProyect
Proyect
 
Topicos de ingeniería de software
Topicos de ingeniería de softwareTopicos de ingeniería de software
Topicos de ingeniería de software
 
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1
 
Ingeniería inversa
Ingeniería inversaIngeniería inversa
Ingeniería inversa
 
Ingeniería inversa
Ingeniería inversaIngeniería inversa
Ingeniería inversa
 
Ingeniería de software
Ingeniería de software Ingeniería de software
Ingeniería de software
 
Tarea semana 1
Tarea semana 1Tarea semana 1
Tarea semana 1
 
Tareasemana1
Tareasemana1Tareasemana1
Tareasemana1
 
Omar,luis,daniel
Omar,luis,danielOmar,luis,daniel
Omar,luis,daniel
 
Fundamentos de ingenieria del software (2)
Fundamentos de ingenieria del software (2)Fundamentos de ingenieria del software (2)
Fundamentos de ingenieria del software (2)
 
Unidad 1 Ingenieria de software
Unidad 1 Ingenieria de softwareUnidad 1 Ingenieria de software
Unidad 1 Ingenieria de software
 
Mantenimiento del software unidad # 9
Mantenimiento del software unidad # 9Mantenimiento del software unidad # 9
Mantenimiento del software unidad # 9
 
Mantenimiento del software_unidad___9
Mantenimiento del software_unidad___9Mantenimiento del software_unidad___9
Mantenimiento del software_unidad___9
 
El producto y el proceso
El producto y el procesoEl producto y el proceso
El producto y el proceso
 
Presentación case
Presentación casePresentación case
Presentación case
 
Diapositivas-Ing-SW-napa
Diapositivas-Ing-SW-napaDiapositivas-Ing-SW-napa
Diapositivas-Ing-SW-napa
 
software
softwaresoftware
software
 
Conceptos
ConceptosConceptos
Conceptos
 
Tema Introducción IS
Tema Introducción ISTema Introducción IS
Tema Introducción IS
 

Recently uploaded

#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxCarolina Bujaico
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaYeimys Ch
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y maslida630411
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nóminacuellosameidy
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armadob7fwtwtfxf
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 

Recently uploaded (20)

#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptx
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y mas
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nómina
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armado
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 

Ingeniería Inversa y Reingeniería de Software

  • 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 y Reingenierí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. 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. Ingeniería Inversa No es generar códigos, sino que, el código fuente es examinado, analizado y convertido en entidades para el deposito. Su primer paso es cargar, en el conjunto de herramientas el código de programas existen, según ese conjunto de herramientas.
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Reingeniería de Software Se puede definir como el proceso completo de convertir el código de programa al diseño CASE, modificar el diseño y volver a generar el nuevo código. El termino se usa en distintas áreas de la ingeniería, programación y negocios.
  • 15. Reingeniería de software Con respecto a los negocios, es una forma de darle una nueva orientación a los procesos claves de una organización, de esta manera el rol de los analistas de sistemas radica en el uso de tecnologías de información novedosas, como consecuencia a los cambios requeridos.
  • 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. 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. Pasos para la Reingeniería de software
  • 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. 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. 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. 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. 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. 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. Análisis y Diseño de Sistemas Orientados a Objetos Se puede definir como el enfoque con el propósito de facilitar el desarrollo de sistemas que deben cambiar con rapidez en respuesta a entornos de negocios dinámicos. Se utilizan el estándar de la industria para la modelación de los mismos, en su defecto el lenguaje unificado de modelación (UML), para analizar los sistemas en forma de modelo de caso de uso.
  • 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. 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. 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. 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. 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. 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. 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. 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. Programación Extrema (XP) Es un metodología de desarrollo de software más exitosas de los tiempos recientes. Es el enfoque de desarrollo, usando prácticas de desarrollo y las lleva a los extremos valiéndose de valores para ello.
  • 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. 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. 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.