MAECENAS SED 
DIAM EGET RISUS 
VARIUS BLANDIT 
SIT AMET NON. 
AENEAN LAC 
BIBENDUM NULLA 
CONSECTETUR. 
INGENIERÍA DE SOFTWARE 
LOREM IPSUM 
DOLOR AMET, 
CONSECTETUR 
ADIPISCI ELIT. 
CRAS JUSTO 
ODIO, DAPIBUS 
AC FACILISIS IN, 
EGESTAS EGET 
QUAM. 
REINGENIERÍA 
MAECENAS 
FAUCIBUS MOLLIS 
INTERDUM. 
ETIAM PORTA 
MALESUADA 
MAGNA MOLLIS 
EUISMOD.
MAECENAS SED 
DIAM EGET RISUS 
VARIUS BLANDIT 
SIT AMET NON. 
LA REINGENIERÍA ES EL REDISEÑO DE UN PROCESO EN UN 
NEGOCIO O UN CAMBIO DRÁSTICO, ES COMENZAR DE CERO, ES 
UN CAMBIO DE TODO O NADA, ADEMÁS ORDENA A LA EMPRESA 
AENEAN LAC 
BIBENDUM NULLA 
CONSECTETUR. 
ALREDEDOR DE LOS PROCESOS. PARA QUE UNA EMPRESA 
ADOPTE EL CONCEPTO DE REINGENIERÍA, TIENE QUE SER 
CAPAZ DE DESHACERSE DE LAS REGLAS Y POLÍTICAS 
LOREM IPSUM 
DOLOR AMET, 
CONSECTETUR 
ADIPISCI ELIT. 
REINGENIERÍA 
CRAS JUSTO 
ODIO, DAPIBUS 
AC FACILISIS IN, 
EGESTAS EGET 
QUAM. 
MAECENAS 
FAUCIBUS MOLLIS 
INTERDUM. 
ETIAM PORTA 
MALESUADA 
MAGNA MOLLIS 
CONVENCIONALES EUISMOD. 
QUE APLICABA CON ANTERIORIDAD Y ESTAR 
ABIERTA A LOS CAMBIOS POR MEDIO DE LOS CUALES SUS
ANÁLISIS DE 
INVENTARIOS 
INGENIERÍA 
AVANZADA 
REESTRUCTURACI 
ÓN DE LOS 
DATOS 
REESTRUCTURACI 
ÓN DE 
DOCUMENTOS 
INGENIERÍA 
INVERSA 
REESTRUCTURACI 
ÓN DEL CÓDIGO 
Las organizaciones de software deberían tener un 
inventario de todas sus aplicaciones. El inventario 
tal vez no sea más que un modelo en una hoja de 
cálculo que contenga información que proporcione 
una descripción detallada (tamaño, edad, 
importancia para el negocio) de las aplicaciones 
activas. 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, cambiaran las prioridades para 
la reingeniería.
ANÁLISIS DE 
INVENTARIOS 
INGENIERÍA 
AVANZADA 
REESTRUCTURACI 
ÓN DE LOS 
DATOS 
REESTRUCTURACI 
ÓN DE 
DOCUMENTOS 
INGENIERÍA 
INVERSA 
REESTRUCTURACI 
ÓN DEL CÓDIGO 
La documentación débil es la marca de muchos 
sistemas heredados. ¿Pero que se hace acerca de 
ello? ¿Cuáles son las opciones?. 
1. Crear documentación consume mucho tiempo, si 
el sistema funciona vivirá con lo que tenga. No 
es posible recrear documentación para cientos 
de programa de computadora. Si un programa 
es relativamente estático está llegando al final 
de su vida útil, por lo que es improbable que 
experimente un cambio significativo.
ANÁLISIS DE 
INVENTARIOS 
INGENIERÍA 
AVANZADA 
REESTRUCTURACI 
ÓN DE LOS 
DATOS 
REESTRUCTURACI 
ÓN DE 
DOCUMENTOS 
INGENIERÍA 
INVERSA 
REESTRUCTURACI 
ÓN DEL CÓDIGO 
2. La documentación debe actualizarse pero se 
tiene recursos limitados. Se utilizara un enfoque 
de “documentar cuando se toque”. Tal vez sea 
innecesario volver a documentar por completo la 
aplicación. En cambio, se documentan 
completamente aquellas porciones del sistema 
que en la actualidad experimentan cambios. Con 
el tiempo evolucionará una colección de 
documentación útil y relevante.
ANÁLISIS DE 
INVENTARIOS 
INGENIERÍA 
AVANZADA 
REESTRUCTURACI 
ÓN DE LOS 
DATOS 
REESTRUCTURACI 
ÓN DE 
DOCUMENTOS 
INGENIERÍA 
INVERSA 
REESTRUCTURACI 
ÓN DEL CÓDIGO 
3. 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.
ANÁLISIS DE 
INVENTARIOS 
INGENIERÍA 
AVANZADA 
REESTRUCTURACI 
ÓN DE LOS 
DATOS 
REESTRUCTURACI 
ÓN DE 
DOCUMENTOS 
INGENIERÍA 
INVERSA 
REESTRUCTURACI 
ÓN DEL CÓDIGO 
Es el proceso de analizar un programa con la 
finalidad de crear una representación del programa 
en un mayor grado de abstracción que el código 
fuente. La ingeniería inversa es un proceso de 
recuperación de diseño. Las herramientas de la 
ingeniería inversa obtienen información del diseño 
de datos, arquitectónico y de procedimientos a 
partir de un programa existente.
ANÁLISIS DE 
INVENTARIOS 
INGENIERÍA 
AVANZADA 
REESTRUCTURACI 
ÓN DE LOS 
DATOS 
REESTRUCTURACI 
ÓN DE 
DOCUMENTOS 
INGENIERÍA 
INVERSA 
REESTRUCTURACI 
ÓN DEL CÓDIGO 
El tipo más común de reingeniería es la 
reestructuración de código, se lo puede hacer con 
módulos individuales que se codifican de una 
manera que dificultan comprenderlos, probarlos y 
mantenerlos. 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 el código se reestructura. 
El código reestructurado resultante se revisa y 
prueba para garantizar que no se han introducido 
anormalidades. La documentación del código 
interno se actualiza.
ANÁLISIS DE 
INVENTARIOS 
INGENIERÍA 
AVANZADA 
REESTRUCTURACI 
ÓN DE LOS 
DATOS 
REESTRUCTURACI 
ÓN DE 
DOCUMENTOS 
INGENIERÍA 
INVERSA 
REESTRUCTURACI 
ÓN DEL CÓDIGO 
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 atributo, y 
después se revisa la calidad de las estructuras de 
datos existentes. 
Cuando la estructura de datos es débil, los datos se 
someten a reingeniería. 
Puesto que la arquitectura de datos tiene una fuerte 
influencia sobre la arquitectura del programa y los 
algoritmos que lo prueban, los cambios a los datos 
invariablemente resultarán en cambios 
arquitectónicos o al nivel de código.
ANÁLISIS DE 
INVENTARIOS 
INGENIERÍA 
AVANZADA 
REESTRUCTURACI 
ÓN DE LOS 
DATOS 
REESTRUCTURACI 
ÓN DE 
DOCUMENTOS 
INGENIERÍA 
INVERSA 
REESTRUCTURACI 
ÓN DEL CÓDIGO 
La ingeniería avanzada, también llamada 
renovación o reclamación, 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 mejora el desempeño global.
Características: 
• Defina las metas del negocio. 
• Identifica y evalúa los procesos vigentes del negocio. 
• Crea procesos de negocios renovados que cumplen mejor las metas actuales. 
• La finalidad de la reingeniería es crear versiones de programas existentes que 
muestren mayor calidad y mejor facilidad de mantenimiento. 
• Se produce una diversidad de productos de trabajo de reingeniería (por ejemplo, 
modelos de análisis, modelos de diseños, procesamientos de prueba).
Ventajas: 
• El ser humano esta "integrado" con las herramientas automatizadas para crear un 
proceso de ingeniería inversa efectivo. 
• Entrega código bien documentado. 
• Es aplicable a grandes proyectos. 
• Facilita el mantenimiento del software. 
• Entrega software de buena calidad.
Desventajas: 
• Se requiere de personal con un nivel de abstracción tan alto para poder aplicar el 
proceso de ingeniería inversa. 
• Suele ofrecer poca visión de los conflictos de interoperabilidad entre las 
aplicaciones dentro del sistema. 
• Requiere de mucho tiempo, puede llegar a durar años. 
• Cuesta cantidades significativas de dinero y absorbe recursos que de otro modo se 
ocuparían en problemas inmediatos.
Aplicación: 
• Cuando una aplicación de cierto sistema ha funcionado durante varios años, y el 
paso del tiempo se ha vuelto inestable debido a las correcciones, adaptaciones y 
mejoras que se le realizaron. 
• Es aplicable cuando alguna de las partes de un gran sistema requiere 
mantenimiento frecuente. 
• Cuando los cambios en el sistema se hacen mayormente sobre una parte de un 
sistema, entonces dicha parte puede ser objeto de reingeniería. 
• Cuando el soporte hardware o software se queda obsoleto. 
• Cuando se dispone de herramientas automáticas para reestructurar el sistema.
PRIMERA FUENTE: 
Pressman , R. (2014). INGENIERÍA DE SOFTWARE Un enfoque práctico (Sexta ed., 
Vol., pp. 902-917). McGrawHill.
REINGENIERÍA: 
En una compañía los programas pueden haber sido optimizados originalmente para 
su rendimiento o utilización de la memoria a expensas de su comprensibilidad o, a lo 
largo del tiempo, la estructura inicial del programa puede haberse corrompido por la 
serie de cambios. 
Para simplificar los problemas de cambiar sus sistemas heredados, una compañía 
puede decidir hacer reingeniería sobre esos sistemas para mejorar su estructura y 
comprensibilidad. La reingeniería de software se refiere a la reimplementación de los 
sistemas heredados para hacerlos mas mantenibles. La reingeniería puede implicar 
re-documentar el sistema, organizar y reestructurar el sistema, traducir el sistema a 
un lenguaje de programación mas moderno y modificar y actualizar la estructura y 
valores de los datos del sistema.
REINGENIERÍA: 
La distinción crítica entre reingeniería y nuevo desarrollo de software es el punto de 
partida del desarrollo. En lugar de empezar con una especificación escrita, el sistema 
antiguo actúa como un especificación para el nuevo sistema. 
Especificación del 
sistema 
Diseño e 
implementación 
Sistema nuevo 
Sistema de software 
existente 
Comprensión y 
transformación 
Sistema con 
reingeniería 
Ingeniería directa 
Reingeniería de software
Etapas: 
La entrada del proceso es un programa heredado y la salida es una versión 
modularizada y estructurada del mismo programa. Durante la reingeniería del 
programa, los datos del sistema también sufren reingeniería. Las actividades de este 
proceso de reingeniería son: 
1. Traducción del código fuente: El programa es convertido desde un lenguaje de 
programación a una versión más moderna del mismo lenguaje o a un lenguaje 
diferente. 
2. Ingeniería inversa: El programa se analiza y se extrae información a partir de él. 
Esto ayuda a documentar su organización y funcionalidad. 
3. Mejora de la estructura de los programas: La estructura de control del 
programa se analiza y modifica para hacerla más fácil de leer y comprender.
Etapas: 
4. Modularización de los programas: Se agrupan las partes relacionadas del 
programa y se elimina la redundancia en donde resulta adecuado. En algunos 
casos, esta etapa puede implicar una transformación arquitectónica en la que un 
sistema centralizado pensado para una única computadora se modifica para 
ejecutarse sobre una plataforma distribuida. 
5. Ingeniería inversa: Los datos procesados por el programa se cambian para 
reflejar los cambios en él.
Ingeniería 
inversa 
Mejora de la 
estructura del 
programa 
Traducción del 
código fuente 
Modularización 
del programa 
Reingeniería de 
datos 
Programa original 
Documentación 
del programa 
Programa 
estructurado 
Programa 
modularizado 
Datos originales 
Datos con 
reingeniería 
El proceso de reingeniería
Características: 
• Define las metas del negocio. 
• Identifica y evalúa los procesos vigentes del negocio. 
• Crea procesos de negocios renovados que cumplen mejor las metas actuales. 
• La finalidad de la reingeniería es crear versiones de programas existentes que 
muestren mayor calidad y mejor facilidad de mantenimiento. 
• Se produce una diversidad de productos de trabajo de reingeniería (por ejemplo, 
modelos de análisis, modelos de diseños, procesamientos de prueba).
Ventajas: 
❖ Hacer reingeniería de un sistema de software tiene dos ventajas clave sobre 
aproximaciones más radicales a la evolución del sistema: 
• Riesgo reducido: Existe un alto riesgo en volver a desarrollar software crítico para 
los negocios. Los retrasos en la introducción del nuevo software pueden significar 
perdidas en el negocio e incurrir a costos adicionales. 
• Coste reducido: El coste de hace reingeniería es significativamente menor que el 
coste de desarrollar el nuevo software. No obstante se presume que, con la 
tecnología moderna del software, el coste relativo de la reimplementación 
probablemente sea menor, pero aun así supera de forma considerable los costes 
de la reingeniería.
Desventajas: 
• La reingeniería como parte de una migración arquitectónica, es la opción más cara. 
• Se necesita de personal experto en las etapas de la reingeniería. 
• La desventaja principal de la reingeniería del software es que existen límites 
prácticos a la extensión del sistema que puede ser mejorada mediante reingeniería. 
• Aunque la reingeniería puede mejorar la mantenibilidad, el sistema al que se va a 
aplicar reingeniería probablemente no será tan mantenible como un nuevo sistema 
desarrollado utilizando métodos modernos de ingeniería del software.
Aplicación: 
• Si ocurre un defecto serio en el sistema que tenga que ser reparado para permitir la 
continuación del funcionamiento normal. 
• Si los cambios en el entorno del sistema operativo tienen efectos inesperados que 
impiden el funcionamiento normal. 
• Si hay cambios no anticipados en las empresas que utilizan el sistema, tales como 
la aparición de nuevos competidores o la introducción de una nueva legislación. 
• En sistemas donde se busca mejorar su estructura y comprensibilidad
SEGUNDA FUENTE: 
Sommerville , I. (2005). INGENIERÍA DE SOFTWARE (Séptima ed., Vol. 1, pp. 458- 
461). Madrid: Pearson.

Reingeniería

  • 1.
    MAECENAS SED DIAMEGET RISUS VARIUS BLANDIT SIT AMET NON. AENEAN LAC BIBENDUM NULLA CONSECTETUR. INGENIERÍA DE SOFTWARE LOREM IPSUM DOLOR AMET, CONSECTETUR ADIPISCI ELIT. CRAS JUSTO ODIO, DAPIBUS AC FACILISIS IN, EGESTAS EGET QUAM. REINGENIERÍA MAECENAS FAUCIBUS MOLLIS INTERDUM. ETIAM PORTA MALESUADA MAGNA MOLLIS EUISMOD.
  • 2.
    MAECENAS SED DIAMEGET RISUS VARIUS BLANDIT SIT AMET NON. LA REINGENIERÍA ES EL REDISEÑO DE UN PROCESO EN UN NEGOCIO O UN CAMBIO DRÁSTICO, ES COMENZAR DE CERO, ES UN CAMBIO DE TODO O NADA, ADEMÁS ORDENA A LA EMPRESA AENEAN LAC BIBENDUM NULLA CONSECTETUR. ALREDEDOR DE LOS PROCESOS. PARA QUE UNA EMPRESA ADOPTE EL CONCEPTO DE REINGENIERÍA, TIENE QUE SER CAPAZ DE DESHACERSE DE LAS REGLAS Y POLÍTICAS LOREM IPSUM DOLOR AMET, CONSECTETUR ADIPISCI ELIT. REINGENIERÍA CRAS JUSTO ODIO, DAPIBUS AC FACILISIS IN, EGESTAS EGET QUAM. MAECENAS FAUCIBUS MOLLIS INTERDUM. ETIAM PORTA MALESUADA MAGNA MOLLIS CONVENCIONALES EUISMOD. QUE APLICABA CON ANTERIORIDAD Y ESTAR ABIERTA A LOS CAMBIOS POR MEDIO DE LOS CUALES SUS
  • 3.
    ANÁLISIS DE INVENTARIOS INGENIERÍA AVANZADA REESTRUCTURACI ÓN DE LOS DATOS REESTRUCTURACI ÓN DE DOCUMENTOS INGENIERÍA INVERSA REESTRUCTURACI ÓN DEL CÓDIGO Las organizaciones de software deberían tener un inventario de todas sus aplicaciones. El inventario tal vez no sea más que un modelo en una hoja de cálculo que contenga información que proporcione una descripción detallada (tamaño, edad, importancia para el negocio) de las aplicaciones activas. 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, cambiaran las prioridades para la reingeniería.
  • 4.
    ANÁLISIS DE INVENTARIOS INGENIERÍA AVANZADA REESTRUCTURACI ÓN DE LOS DATOS REESTRUCTURACI ÓN DE DOCUMENTOS INGENIERÍA INVERSA REESTRUCTURACI ÓN DEL CÓDIGO La documentación débil es la marca de muchos sistemas heredados. ¿Pero que se hace acerca de ello? ¿Cuáles son las opciones?. 1. Crear documentación consume mucho tiempo, si el sistema funciona vivirá con lo que tenga. No es posible recrear documentación para cientos de programa de computadora. Si un programa es relativamente estático está llegando al final de su vida útil, por lo que es improbable que experimente un cambio significativo.
  • 5.
    ANÁLISIS DE INVENTARIOS INGENIERÍA AVANZADA REESTRUCTURACI ÓN DE LOS DATOS REESTRUCTURACI ÓN DE DOCUMENTOS INGENIERÍA INVERSA REESTRUCTURACI ÓN DEL CÓDIGO 2. La documentación debe actualizarse pero se tiene recursos limitados. Se utilizara un enfoque de “documentar cuando se toque”. Tal vez sea innecesario volver a documentar por completo la aplicación. En cambio, se documentan completamente aquellas porciones del sistema que en la actualidad experimentan cambios. Con el tiempo evolucionará una colección de documentación útil y relevante.
  • 6.
    ANÁLISIS DE INVENTARIOS INGENIERÍA AVANZADA REESTRUCTURACI ÓN DE LOS DATOS REESTRUCTURACI ÓN DE DOCUMENTOS INGENIERÍA INVERSA REESTRUCTURACI ÓN DEL CÓDIGO 3. 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.
  • 7.
    ANÁLISIS DE INVENTARIOS INGENIERÍA AVANZADA REESTRUCTURACI ÓN DE LOS DATOS REESTRUCTURACI ÓN DE DOCUMENTOS INGENIERÍA INVERSA REESTRUCTURACI ÓN DEL CÓDIGO Es el proceso de analizar un programa con la finalidad de crear una representación del programa en un mayor grado de abstracción que el código fuente. La ingeniería inversa es un proceso de recuperación de diseño. Las herramientas de la ingeniería inversa obtienen información del diseño de datos, arquitectónico y de procedimientos a partir de un programa existente.
  • 8.
    ANÁLISIS DE INVENTARIOS INGENIERÍA AVANZADA REESTRUCTURACI ÓN DE LOS DATOS REESTRUCTURACI ÓN DE DOCUMENTOS INGENIERÍA INVERSA REESTRUCTURACI ÓN DEL CÓDIGO El tipo más común de reingeniería es la reestructuración de código, se lo puede hacer con módulos individuales que se codifican de una manera que dificultan comprenderlos, probarlos y mantenerlos. 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 el código se reestructura. El código reestructurado resultante se revisa y prueba para garantizar que no se han introducido anormalidades. La documentación del código interno se actualiza.
  • 9.
    ANÁLISIS DE INVENTARIOS INGENIERÍA AVANZADA REESTRUCTURACI ÓN DE LOS DATOS REESTRUCTURACI ÓN DE DOCUMENTOS INGENIERÍA INVERSA REESTRUCTURACI ÓN DEL CÓDIGO 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 atributo, y después se revisa la calidad de las estructuras de datos existentes. Cuando la estructura de datos es débil, los datos se someten a reingeniería. Puesto que la arquitectura de datos tiene una fuerte influencia sobre la arquitectura del programa y los algoritmos que lo prueban, los cambios a los datos invariablemente resultarán en cambios arquitectónicos o al nivel de código.
  • 10.
    ANÁLISIS DE INVENTARIOS INGENIERÍA AVANZADA REESTRUCTURACI ÓN DE LOS DATOS REESTRUCTURACI ÓN DE DOCUMENTOS INGENIERÍA INVERSA REESTRUCTURACI ÓN DEL CÓDIGO La ingeniería avanzada, también llamada renovación o reclamación, 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 mejora el desempeño global.
  • 11.
    Características: • Definalas metas del negocio. • Identifica y evalúa los procesos vigentes del negocio. • Crea procesos de negocios renovados que cumplen mejor las metas actuales. • La finalidad de la reingeniería es crear versiones de programas existentes que muestren mayor calidad y mejor facilidad de mantenimiento. • Se produce una diversidad de productos de trabajo de reingeniería (por ejemplo, modelos de análisis, modelos de diseños, procesamientos de prueba).
  • 12.
    Ventajas: • Elser humano esta "integrado" con las herramientas automatizadas para crear un proceso de ingeniería inversa efectivo. • Entrega código bien documentado. • Es aplicable a grandes proyectos. • Facilita el mantenimiento del software. • Entrega software de buena calidad.
  • 13.
    Desventajas: • Serequiere de personal con un nivel de abstracción tan alto para poder aplicar el proceso de ingeniería inversa. • Suele ofrecer poca visión de los conflictos de interoperabilidad entre las aplicaciones dentro del sistema. • Requiere de mucho tiempo, puede llegar a durar años. • Cuesta cantidades significativas de dinero y absorbe recursos que de otro modo se ocuparían en problemas inmediatos.
  • 14.
    Aplicación: • Cuandouna aplicación de cierto sistema ha funcionado durante varios años, y el paso del tiempo se ha vuelto inestable debido a las correcciones, adaptaciones y mejoras que se le realizaron. • Es aplicable cuando alguna de las partes de un gran sistema requiere mantenimiento frecuente. • Cuando los cambios en el sistema se hacen mayormente sobre una parte de un sistema, entonces dicha parte puede ser objeto de reingeniería. • Cuando el soporte hardware o software se queda obsoleto. • Cuando se dispone de herramientas automáticas para reestructurar el sistema.
  • 15.
    PRIMERA FUENTE: Pressman, R. (2014). INGENIERÍA DE SOFTWARE Un enfoque práctico (Sexta ed., Vol., pp. 902-917). McGrawHill.
  • 16.
    REINGENIERÍA: En unacompañía los programas pueden haber sido optimizados originalmente para su rendimiento o utilización de la memoria a expensas de su comprensibilidad o, a lo largo del tiempo, la estructura inicial del programa puede haberse corrompido por la serie de cambios. Para simplificar los problemas de cambiar sus sistemas heredados, una compañía puede decidir hacer reingeniería sobre esos sistemas para mejorar su estructura y comprensibilidad. La reingeniería de software se refiere a la reimplementación de los sistemas heredados para hacerlos mas mantenibles. La reingeniería puede implicar re-documentar el sistema, organizar y reestructurar el sistema, traducir el sistema a un lenguaje de programación mas moderno y modificar y actualizar la estructura y valores de los datos del sistema.
  • 17.
    REINGENIERÍA: La distincióncrítica entre reingeniería y nuevo desarrollo de software es el punto de partida del desarrollo. En lugar de empezar con una especificación escrita, el sistema antiguo actúa como un especificación para el nuevo sistema. Especificación del sistema Diseño e implementación Sistema nuevo Sistema de software existente Comprensión y transformación Sistema con reingeniería Ingeniería directa Reingeniería de software
  • 18.
    Etapas: La entradadel proceso es un programa heredado y la salida es una versión modularizada y estructurada del mismo programa. Durante la reingeniería del programa, los datos del sistema también sufren reingeniería. Las actividades de este proceso de reingeniería son: 1. Traducción del código fuente: El programa es convertido desde un lenguaje de programación a una versión más moderna del mismo lenguaje o a un lenguaje diferente. 2. Ingeniería inversa: El programa se analiza y se extrae información a partir de él. Esto ayuda a documentar su organización y funcionalidad. 3. Mejora de la estructura de los programas: La estructura de control del programa se analiza y modifica para hacerla más fácil de leer y comprender.
  • 19.
    Etapas: 4. Modularizaciónde los programas: Se agrupan las partes relacionadas del programa y se elimina la redundancia en donde resulta adecuado. En algunos casos, esta etapa puede implicar una transformación arquitectónica en la que un sistema centralizado pensado para una única computadora se modifica para ejecutarse sobre una plataforma distribuida. 5. Ingeniería inversa: Los datos procesados por el programa se cambian para reflejar los cambios en él.
  • 20.
    Ingeniería inversa Mejorade la estructura del programa Traducción del código fuente Modularización del programa Reingeniería de datos Programa original Documentación del programa Programa estructurado Programa modularizado Datos originales Datos con reingeniería El proceso de reingeniería
  • 21.
    Características: • Definelas metas del negocio. • Identifica y evalúa los procesos vigentes del negocio. • Crea procesos de negocios renovados que cumplen mejor las metas actuales. • La finalidad de la reingeniería es crear versiones de programas existentes que muestren mayor calidad y mejor facilidad de mantenimiento. • Se produce una diversidad de productos de trabajo de reingeniería (por ejemplo, modelos de análisis, modelos de diseños, procesamientos de prueba).
  • 22.
    Ventajas: ❖ Hacerreingeniería de un sistema de software tiene dos ventajas clave sobre aproximaciones más radicales a la evolución del sistema: • Riesgo reducido: Existe un alto riesgo en volver a desarrollar software crítico para los negocios. Los retrasos en la introducción del nuevo software pueden significar perdidas en el negocio e incurrir a costos adicionales. • Coste reducido: El coste de hace reingeniería es significativamente menor que el coste de desarrollar el nuevo software. No obstante se presume que, con la tecnología moderna del software, el coste relativo de la reimplementación probablemente sea menor, pero aun así supera de forma considerable los costes de la reingeniería.
  • 23.
    Desventajas: • Lareingeniería como parte de una migración arquitectónica, es la opción más cara. • Se necesita de personal experto en las etapas de la reingeniería. • La desventaja principal de la reingeniería del software es que existen límites prácticos a la extensión del sistema que puede ser mejorada mediante reingeniería. • Aunque la reingeniería puede mejorar la mantenibilidad, el sistema al que se va a aplicar reingeniería probablemente no será tan mantenible como un nuevo sistema desarrollado utilizando métodos modernos de ingeniería del software.
  • 24.
    Aplicación: • Siocurre un defecto serio en el sistema que tenga que ser reparado para permitir la continuación del funcionamiento normal. • Si los cambios en el entorno del sistema operativo tienen efectos inesperados que impiden el funcionamiento normal. • Si hay cambios no anticipados en las empresas que utilizan el sistema, tales como la aparición de nuevos competidores o la introducción de una nueva legislación. • En sistemas donde se busca mejorar su estructura y comprensibilidad
  • 25.
    SEGUNDA FUENTE: Sommerville, I. (2005). INGENIERÍA DE SOFTWARE (Séptima ed., Vol. 1, pp. 458- 461). Madrid: Pearson.