25
LOREM IPSUM DOLOR AMET, CONSECTETUR ADIPISCI ELIT. AENEAN LAC BIBENDUM NULLA CONSECTETUR. MAECENAS SED DIAM EGET RISUS VARIUS BLANDIT SIT AMET NON. CRAS JUSTO ODIO, DAPIBUS AC FACILISIS IN, EGESTAS EGET QUAM. MAECENAS FAUCIBUS MOLLIS INTERDUM. ETIAM PORTA MALESUADA MAGNA MOLLIS EUISMOD. REINGENIERÍA INGENIERÍA DE SOFTWARE

Reingeniería

Embed Size (px)

Citation preview

LOREM IPSUM DOLOR AMET, CONSECTETUR ADIPISCI ELIT.

AENEAN LAC BIBENDUM

NULLA CONSECTETUR.

MAECENAS SED DIAM EGET

RISUS VARIUS BLANDIT SIT AMET NON.

CRAS JUSTO ODIO, DAPIBUS AC FACILISIS IN, EGESTAS EGET

QUAM.

MAECENAS FAUCIBUS MOLLIS

INTERDUM.

ETIAM PORTA MALESUADA

MAGNA MOLLIS EUISMOD.

REINGENIERÍAINGENIERÍA DE SOFTWARE

LOREM IPSUM DOLOR AMET, CONSECTETUR ADIPISCI ELIT.

AENEAN LAC BIBENDUM

NULLA CONSECTETUR.

MAECENAS SED DIAM EGET

RISUS VARIUS BLANDIT SIT AMET NON.

CRAS JUSTO ODIO, DAPIBUS AC FACILISIS IN, EGESTAS EGET

QUAM.

MAECENAS FAUCIBUS MOLLIS

INTERDUM.

ETIAM PORTA MALESUADA

MAGNA MOLLIS EUISMOD.

REINGENIERÍALA 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 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

CONVENCIONALES QUE APLICABA CON ANTERIORIDAD Y ESTAR

ABIERTA A LOS CAMBIOS POR MEDIO DE LOS CUALES SUS

NEGOCIOS PUEDAN LLEGAR A SER MÁS PRODUCTIVOS.

REESTRUCTURACIÓN DE LOS

DATOS

INGENIERÍA AVANZADA

ANÁLISIS DE INVENTARIOS

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.

REESTRUCTURACIÓN DE LOS

DATOS

INGENIERÍA AVANZADA

ANÁLISIS DE INVENTARIOS

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.

REESTRUCTURACIÓN DE LOS

DATOS

INGENIERÍA AVANZADA

ANÁLISIS DE INVENTARIOS

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.

REESTRUCTURACIÓN DE LOS

DATOS

INGENIERÍA AVANZADA

ANÁLISIS DE INVENTARIOS

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.

REESTRUCTURACIÓN DE LOS

DATOS

INGENIERÍA AVANZADA

ANÁLISIS DE INVENTARIOS

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.

REESTRUCTURACIÓN DE LOS

DATOS

INGENIERÍA AVANZADA

ANÁLISIS DE INVENTARIOS

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.

REESTRUCTURACIÓN DE LOS

DATOS

INGENIERÍA AVANZADA

ANÁLISIS DE INVENTARIOS

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.

REESTRUCTURACIÓN DE LOS

DATOS

INGENIERÍA AVANZADA

ANÁLISIS DE INVENTARIOS

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 sis tema 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.