SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

La actualidad más candente

Metodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliudMetodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliudEliud Cortes
 
Análisis de riesgos de un proyecto de software
Análisis de riesgos de un proyecto de softwareAnálisis de riesgos de un proyecto de software
Análisis de riesgos de un proyecto de softwareAngel Reyes
 
Metricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccionMetricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccionJose Diaz Silva
 
Presentación Modelo de Datos
Presentación Modelo de DatosPresentación Modelo de Datos
Presentación Modelo de DatosEnrique Cabello
 
modelos del proceso del software
 modelos del proceso del software  modelos del proceso del software
modelos del proceso del software Brihany Rossell
 
Modelos de ciclo de vida del software
Modelos de ciclo de vida del softwareModelos de ciclo de vida del software
Modelos de ciclo de vida del softwareIEO Santo Tomás
 
Métricas de Proceso y proyecto de software
Métricas de Proceso y proyecto de softwareMétricas de Proceso y proyecto de software
Métricas de Proceso y proyecto de softwareLorena Quiñónez
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicaslandeta_p
 
Calidad Del Producto Software
Calidad Del Producto SoftwareCalidad Del Producto Software
Calidad Del Producto Softwarealbert317
 
Fundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareFundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareNelson Guanipa
 
Proyecto de software
Proyecto de softwareProyecto de software
Proyecto de softwaremonik1002
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicoslandeta_p
 
Metodologías de desarrollo de software
Metodologías de desarrollo de softwareMetodologías de desarrollo de software
Metodologías de desarrollo de softwareWilfredo Mogollón
 

La actualidad más candente (20)

Diseño de Software
Diseño de SoftwareDiseño de Software
Diseño de Software
 
Metodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliudMetodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliud
 
Análisis de riesgos de un proyecto de software
Análisis de riesgos de un proyecto de softwareAnálisis de riesgos de un proyecto de software
Análisis de riesgos de un proyecto de software
 
Metricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccionMetricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccion
 
Metodología RUP
Metodología RUPMetodología RUP
Metodología RUP
 
Herramientas case full informacion
Herramientas case full informacionHerramientas case full informacion
Herramientas case full informacion
 
Presentación Modelo de Datos
Presentación Modelo de DatosPresentación Modelo de Datos
Presentación Modelo de Datos
 
Sqa
SqaSqa
Sqa
 
Metodologia kendall y Kendall
Metodologia kendall y KendallMetodologia kendall y Kendall
Metodologia kendall y Kendall
 
modelos del proceso del software
 modelos del proceso del software  modelos del proceso del software
modelos del proceso del software
 
Modelos de ciclo de vida del software
Modelos de ciclo de vida del softwareModelos de ciclo de vida del software
Modelos de ciclo de vida del software
 
Métricas de Proceso y proyecto de software
Métricas de Proceso y proyecto de softwareMétricas de Proceso y proyecto de software
Métricas de Proceso y proyecto de software
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicas
 
Calidad Del Producto Software
Calidad Del Producto SoftwareCalidad Del Producto Software
Calidad Del Producto Software
 
Diseño arquitectónico
Diseño arquitectónicoDiseño arquitectónico
Diseño arquitectónico
 
Fundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareFundamentos del Diseño de Software
Fundamentos del Diseño de Software
 
Proyecto de software
Proyecto de softwareProyecto de software
Proyecto de software
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
 
Metodologías de desarrollo de software
Metodologías de desarrollo de softwareMetodologías de desarrollo de software
Metodologías de desarrollo de software
 
Rational rose
Rational roseRational rose
Rational rose
 

Destacado

PROCESOS DE INGENIERIA DEL SW
PROCESOS DE INGENIERIA DEL SWPROCESOS DE INGENIERIA DEL SW
PROCESOS DE INGENIERIA DEL SWRaquel Solano
 
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
 

Destacado (7)

Proyecto de reingenieria de software
Proyecto de reingenieria  de softwareProyecto de reingenieria  de software
Proyecto de reingenieria de software
 
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
 
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 a 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 a 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
 

Último

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 

Último (10)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 

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.