SlideShare una empresa de Scribd logo
1
INGENIERIA EN SISTEMAS COMPUTACIONALES
INGENIERIA DE SOFTWARE
UNIDAD II
MODELOS DE INGENIERIA DEL SOFTWARE
INVESTIGACION: REINGENIERIA DE SOFTWARE
ISC GIL SANTANA ESPARZA, MCA
S501
10-10-2016
HERNANDEZ MEDINAJOSUE
SOSA MEJIA ANEL VERONICA
VIZCAINO NUÑEZ JOSUE ALFONSO
Fecha de entrega:17/10/2016
2
INTRODUCCION
La siguiente investigación trata sobre la reingeniería de software, que no es más
que una forma de modernización para mejorar las capacidades de los sistemas
de información heredados mediante la aplicación de tecnologías y practicas
modernas esto quiere decir que la reingeniería es una forma de pulir o dar
mantenibilidad a los sistemas como Roger pressman dice que la reingeniería de
software abarca una serie de actividades que incluye: análisis de inventario,
reestructuración de documentos, ingeniería inversa, reestructuración de
programas y datos y la ingeniería directa, dentro de este tema se incluirá los
objeticos de la reingeniería, entre ellos reducir los errores de costos y
mantenimiento, hacer fáciles sistemas fáciles de entender, cambiar y probar etc.
Enseguida los costes y riesgos de la reingeniería estos dependen de la magnitud
del trabajo que tiene que llevarse a cabo, tal y como muestra la figura Somerville
dice los costes se incrementan desde la izquierda hacia la derecha para que la
traducción de código fuente sea la opción más económica. Así también tenemos
un enfoque a los principales factores que afectan a los costes de reingeniería, y
como todo, la reingeniería tiene sus ventajas y desventajas que es nuestro último
punto incluido según Ian Sommerville, tiene dos ventajas clave sobre
aproximaciones más radicales a la evolución del sistema: Riesgo reducido y
Coste reducido.
La principal desventaja 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, estos puntos se pueden leer a más detalle en la página cuatro de
esta investigación.
REINGENIERIA DE SOFTWARE
Reingeniería de Software es una forma de modernización para mejorar las
capacidades y/o mantenibilidad de los sistemas de información heredados
mediante la aplicación de tecnologías y prácticas modernas. La Reingeniería de
Software ofrece una disciplina de preparación para migrar un sistema de
información heredado hacia un sistema evolucionable. El proceso aplica principios
de ingeniería para un sistema existente para encontrar nuevos requerimientos.
3
Para Roger Pressman una definición completa de reingeniería implica: “La
reingeniería del software abarca una serie de actividades entre las que se incluye
el análisis de inventario, la reestructuración de documentos, la ingeniería inversa,
la reestructuración de programas y datos, y la ingeniería directa. El objetivo de
esas actividades consiste en crear versiones de los programas existentes que
muestren una mayor calidad, y una mejor mantenibilidad.”
La reingeniería cuenta entre sus objetivos con:
 Proporcionar asistencia automatizada para el mantenimiento.
 Reducir los errores y costos del mantenimiento.
 Incrementar la intercambiabilidad del grupo de mantenimiento.
 Hacer sistemas fáciles de entender, cambiar y probar.
 Habilitar la conversión y migración de sistemas.
 Reforzar el apego a estándares.
 Mejorar la respuesta a peticiones de mantenimiento.
 Mejorar el estado de ánimo del grupo de mantenimiento.
 Proteger y extender la vida del sistema.
 Usar CASE para apoyar sistemas existentes
 Re-usar componentes de sistema existentes.
La ingeniería hacia adelante comienza con una especificación del sistema e
implica el diseño e implementación de un nuevo sistema. La reingeniería comienza
con un sistema existente y el proceso de desarrollo para su reemplazo se basa en
comprender y transformar el sistema original. La entrada del proceso es un
programa heredado y la salida es una versión modularizada y estructurada del
mismo programa.
Ilustración 1 Ingeniería hacia adelante y reingeniería
4
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 antiguo 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 ¡a estructura de los programas. La estructura de control del programa
se analiza y modifica para hacerla más fácil de leer y comprender.
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. Reingeniería de datos. Los datos procesados por el programa se cambian para
reflejarlos cambios en él.
Ilustración 2 Proceso de Reingeniería
La reingeniería del sistema no requiere necesariamente todos los pasos de la
ilustración 2.La traducción de código fuente puede no ser necesaria si el lenguaje
de programación utilizado para desarrollar el sistema todavía está soportado por el
suministrador del compilador. Ian Somerville dice que Si la reingeniería se realiza
completamente con herramientas automáticas, entonces recuperar la
documentación mediante ingeniería inversa puede no ser necesario. La
reingeniería de datos sólo se requiere si las estructuras de datos del programa
cambian durante la reingeniería del sistema. Sin embargo, la reingeniería del
5
software siempre implica alguna reconstrucción del programa. Para hacer que el
sistema que ha sufrido reingeniería interopere con el nuevo software, tienen que
Desarrollarse adaptadores de componentes
La reingeniería es necesaria cuando:
o Existen frecuentes fallas de producción (fiabilidad cuestionable).
o Hay Problemas de rendimiento.
o Se cuenta con una tecnología obsoleta.
o Existen problemas de integración del sistema.
o Se tiene un código de calidad pobre.
o Hay una dificultad (peligroso) al cambio.
o Hay una dificultad para probar.
o Existe un mantenimiento caro.
o Existe un incremento de problemas del sistema.
A pesar de estas razones, y antes de reconstruir un sistema en uso, es
conveniente analizar las diversas alternativas disponibles como es el dejar el
producto como está, adquirir uno en el mercado que realice la misma función o
reconstruirlo.
6
COSTES Y RIESGOS
Los costes de la reingeniería obviamente dependen de la magnitud del trabajo que
tiene que llevarse a cabo, tal y como muestra la figura [Somerville], los costes se
incrementan desde la izquierda hacia la derecha para que la traducción de código
fuente sea la opción más económica.
Ilustración 3 Incremento de costos
Los principales factores que afectan a los costes de reingeniería son
[Sommerville]:
1. La calidad del software sobre el que se va a hacer reingeniería. Cuanto más
baja sea la calidad del software y su documentación asociada (si la hay), más
altos serán los costes de reingeniería.
2. Las herramientas de soporte disponibles para la reingeniería. Normalmente no
es rentable hacer reingeniería sobre un sistema software a menos que puedan
utilizarse herramientas CASE para automatizar la mayor parte de los cambios en
los programas.
3. La amplitud de la conversión de datos requerida. Si el sistema sobre el que se
va a hacer reingeniería requiere que se conviertan grandes volúmenes de datos.
El coste del proceso se incrementa de forma significativa.
4. La disponibilidad de personal experto. Si el personal responsable de mantener
el sistema no puede implicarse en el proceso de re ingeniería, los costes se
incrementarán debido a que los ingenieros encargados de la reingeniería tienen
que invertir una gran cantidad de tiempo en comprender el sistema.
7
VENTAJAS Y DEVENTAJAS
Hacer reingeniería de un sistema software, según Ian Sommerville, tiene dos
ventajas clave sobre aproximaciones más radicales a la evolución del sistema:
l. Riesgo reducido. Existe un alto riesgo en volver a desarrollar software crítico
para los negocios. Pueden cometerse errores en la especificación, o puede haber
problemas en el desarrollo. Los retrasos en la introducción del nuevo software
pueden significar pérdidas en el negocio e incurrir en costes adicionales. Por
ejemplo, en 1999 una gran compañía de comida en Estados Unidos tuvo retrasos
en la introducción de un nuevo sistema de pedidos, lo que condujo a retrasos en
las entregas de productos valoradas en 100 millones de dólares en una estación
de máxima venta.
2. Coste reducido. El coste de hacer reingeniería es significativamente menor que
el coste de desarrollar nuevo software. Ulrich (Ulrich, 1990) cita un ejemplo de un
sistema comercial en el que los costes de re implementación se estimaron en 50
millones de dólares. Al sistema se le aplicó reingeniería con éxito por 12 millones
de dólares. Se presume que, con la tecnología moderna del software, el coste
relativo de la re implementación probablemente sea menor. Pero aun así supera
de forma considerable los costes de la reingeniería.
La principal desventaja 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. No es posible. Por ejemplo, convertir un sistema diseñado utilizando
una aproximación funcional en un sistema orientado a objetos. Los cambios
arquitectónicos mayores o la reorganización radical de la gestión de datos del
sistema no pueden realizarse de forma automática, por lo que se incurrirá en
costes adicionales elevados. 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.
8
CONCLUSION
En la presente investigación se abordaron los temas principales de la ingeniera
tales como ventajas, desventajas, costes y riesgos. La reingeniería principalmente
nos sirve para simplificar los problemas de cambiar sus sistemas heredados, es
una forma de modernización para mejorar las capacidades y/o mantenibilidad de
los estos sistemas mediante la aplicación de tecnologías y prácticas modernas. La
Reingeniería de Software ofrece una disciplina de preparación para migrar un
sistema de información heredado hacia un sistema evolucionable. El proceso
aplica principios de ingeniería para un sistema existente para encontrar nuevos
requerimientos, una compañía puede decidir hacer reingeniería sobre esos
sistemas para mejorar su estructura y comprensibilidad.
Ian Somerville dice que La reingeniería del software se refiere a la re
implementación de los sistemas heredados para hacerlos más mantenerles.
Un punto de vista es que la reingeniería puede implicar re documentar el sistema,
organizar y reestructurar el sistema, traducir el sistema a un lenguaje de
programación más moderno, y modificar y actualizar la estructura y valores de los
datos del sistema. La funcionalidad del software no se cambia y, normalmente, la
arquitectura del sistema también sigue siendo la misma.
La ingeniería directa trabaja de manera que se tiene la especificación del sistema,
se diseña e implementa y por último se tiene el sistema nuevo.
En general La reingeniería comienza con un sistema existente y el proceso de
desarrollo para su reemplazo se basa en comprender y transformar el sistema
original.
Ian Somerville nos dice que La reingeniería del sistema no requiere
necesariamente todos los pasos. Dice que Si la reingeniería se realiza
completamente con herramientas automáticas, entonces recuperar la
documentación mediante ingeniería inversa puede no ser necesario.
La reingeniería de datos sólo se requiere si las estructuras de datos del programa
cambian durante la reingeniería del sistema.

Más contenido relacionado

PPTX
Proceso del software
PPT
Arquitectura de sistemas distribuidos
PDF
Requerimientos en Ingenieria de Software
PPTX
MODELO DE PROCESOS DEL SOFTWARE
PPTX
Modelos de los sistemas distribuidos
PPTX
Metodologías de desarrollo de software
DOC
Requerimientos norma ieee830
PDF
Cuadro comparativo entre moprosoft y cmmi
Proceso del software
Arquitectura de sistemas distribuidos
Requerimientos en Ingenieria de Software
MODELO DE PROCESOS DEL SOFTWARE
Modelos de los sistemas distribuidos
Metodologías de desarrollo de software
Requerimientos norma ieee830
Cuadro comparativo entre moprosoft y cmmi

La actualidad más candente (20)

PPTX
Modelo cascada
PPT
costos del software
PPTX
Modelo basado en prototipos - Ingeniería de Software
PDF
Ingeniería de requisitos e ingeniería de requerimientos
PPTX
GESTIÓN DE LA CONFIGURACIÓN DEL SOFTWARE (GCS)
PPT
Unidad 3 Modelo De Negocio
PPTX
DOC
Guia 02 Diagramas De Casos De Uso
PDF
Fases de un proyecto de desarrollo de software
PDF
Tabla comparativa- metodologías de desarrollo
DOCX
Metodologia web
PPTX
Tecnicas de estimacion de costos de proyecto software
PPT
Diseño a Nivel de Componentes
PPTX
Gestión del riesgo de software
PDF
Cuadro comparativo modelos para el desarrollo de software
PPTX
calidad de los sistemas de informacion
DOCX
Ingeniería de requisitos
PPTX
Diagrama de despliegue
PDF
Metodologías de Desarrollo de Software Tradicionales y Emergentes
PPTX
Planificacion de un Proyecto de Software
Modelo cascada
costos del software
Modelo basado en prototipos - Ingeniería de Software
Ingeniería de requisitos e ingeniería de requerimientos
GESTIÓN DE LA CONFIGURACIÓN DEL SOFTWARE (GCS)
Unidad 3 Modelo De Negocio
Guia 02 Diagramas De Casos De Uso
Fases de un proyecto de desarrollo de software
Tabla comparativa- metodologías de desarrollo
Metodologia web
Tecnicas de estimacion de costos de proyecto software
Diseño a Nivel de Componentes
Gestión del riesgo de software
Cuadro comparativo modelos para el desarrollo de software
calidad de los sistemas de informacion
Ingeniería de requisitos
Diagrama de despliegue
Metodologías de Desarrollo de Software Tradicionales y Emergentes
Planificacion de un Proyecto de Software
Publicidad

Similar a Reingenieria (20)

PPTX
Presentaciã³n1adsi
PDF
7. Mantenimiento de Software
PPTX
PPTX
TECNICAS DE MANTENIMIENTO DE SW.pptx
PDF
7. cambios en el software y mejora de procesos
PPTX
Mantenimieto de Software
PPTX
Reingeniería
PPTX
Reingeniería
PPTX
Exposicion 3
PPTX
Topicos de ingeniería de software
PPTX
Procesos de evolución del software
PPS
Mantenimiento de Software
DOCX
Proyecto de reingenieria
PPTX
Mantenimiento del software_unidad___9
PPTX
Mantenimiento del software unidad # 9
PPT
Reingenieria inversa
PPTX
Dpss u3 a2_maoa
PPT
Reingenieria
PPTX
Evolucion del software
PPT
Proyecto de reingenieria de software
Presentaciã³n1adsi
7. Mantenimiento de Software
TECNICAS DE MANTENIMIENTO DE SW.pptx
7. cambios en el software y mejora de procesos
Mantenimieto de Software
Reingeniería
Reingeniería
Exposicion 3
Topicos de ingeniería de software
Procesos de evolución del software
Mantenimiento de Software
Proyecto de reingenieria
Mantenimiento del software_unidad___9
Mantenimiento del software unidad # 9
Reingenieria inversa
Dpss u3 a2_maoa
Reingenieria
Evolucion del software
Proyecto de reingenieria de software
Publicidad

Más de Anel Sosa (20)

DOCX
Codigo Visual Studio: Galeria de imagenes
DOCX
Comandos sql
PDF
Codigo ensamblador
DOCX
INVESTIGACION “SOLUCION DE SISTEMAS DE ECUACIONES: METODO DE JACOBY”
DOCX
APLICACIONES DE LAS ECUACIONES DIFERENCIALES
DOCX
SISTEMA OPERATIVOS
DOCX
INVESTIGACIÓN DE CHIPSET
PDF
SIMMAN 3G
PPTX
Metodologia incremental
DOCX
Paradigmas de programacion
PPTX
Escenario socioeconomico
DOCX
Investigacion calculo derivadas e integrales
PDF
Lenguajes de simulacion
PDF
maquinas de turing jflap
PDF
Panuco Veracruz
DOCX
que es un Curriculum
PDF
maquinas de turing
PDF
automatas finitos
PDF
Programa expresiones regulares
PDF
ESPRESIONES REGULARES
Codigo Visual Studio: Galeria de imagenes
Comandos sql
Codigo ensamblador
INVESTIGACION “SOLUCION DE SISTEMAS DE ECUACIONES: METODO DE JACOBY”
APLICACIONES DE LAS ECUACIONES DIFERENCIALES
SISTEMA OPERATIVOS
INVESTIGACIÓN DE CHIPSET
SIMMAN 3G
Metodologia incremental
Paradigmas de programacion
Escenario socioeconomico
Investigacion calculo derivadas e integrales
Lenguajes de simulacion
maquinas de turing jflap
Panuco Veracruz
que es un Curriculum
maquinas de turing
automatas finitos
Programa expresiones regulares
ESPRESIONES REGULARES

Último (20)

PDF
Marcos legales de la gestion tecnologica en venezuela yefferson reyes.pdf
PDF
Copia de Presentación Propuesta de Marketing Corporativo Blanco y Negro.pdf
PDF
COMPARACION DE LA NUEVA LEY DE CONTRATAIONES DEL ESTADO 30269.pdf
PDF
fulguracion-medicina-legal-418035-downloable-2634665.pdf lesiones por descarg...
PDF
Armado de estructura Media tensión de 22.9
PDF
CALIDAD SSOMA AMBIENTE PRL UNIVERSIDADDD
DOC
informacion acerca de la crianza tecnificada de cerdos
PDF
FIJA NUEVO TEXTO DE LA ORDENANZA GENERAL DE LA LEY GENERAL DE URBANISMO Y CON...
PDF
MATRIZ IDENTIFICACIÓN EVALUACION CONTROL PRL.pdf
PDF
HISTORIA DE LA GRÚAA LO LARGO DE LOS TIEMPOSpdf
PDF
Primera formulación de cargos de la SEC en contra del CEN
PPTX
Seminario de telecomunicaciones para ingeniería
PDF
TESTAMENTO DE DESCRIPTIVA ..............
PDF
SUBDIVISIÓN URBANA PUEDE ENFRENTAR SERVIDUMBRE DE PASO.pdf
PDF
NORMATIVA Y DESCRIPCION ALCANTARILLADO PLUVIAL.pdf
PPTX
ISOTOPOS.pptx.universida.introduccion al tema
PPTX
Cortinas-en-Presas-de-Gravedad-Vertedoras-y-No-Vertedoras.pptx
PDF
GUÍA PARA LA IMPLEMENTACIÓN DEL PLAN PARA LA REDUCCIÓN DEL RIESGO DE DESASTRES
PDF
Oficio SEC de formulación de cargos por el apagón del 25F en contra del CEN
PDF
Informe Estudio Final Apagon del 25 de febrero
Marcos legales de la gestion tecnologica en venezuela yefferson reyes.pdf
Copia de Presentación Propuesta de Marketing Corporativo Blanco y Negro.pdf
COMPARACION DE LA NUEVA LEY DE CONTRATAIONES DEL ESTADO 30269.pdf
fulguracion-medicina-legal-418035-downloable-2634665.pdf lesiones por descarg...
Armado de estructura Media tensión de 22.9
CALIDAD SSOMA AMBIENTE PRL UNIVERSIDADDD
informacion acerca de la crianza tecnificada de cerdos
FIJA NUEVO TEXTO DE LA ORDENANZA GENERAL DE LA LEY GENERAL DE URBANISMO Y CON...
MATRIZ IDENTIFICACIÓN EVALUACION CONTROL PRL.pdf
HISTORIA DE LA GRÚAA LO LARGO DE LOS TIEMPOSpdf
Primera formulación de cargos de la SEC en contra del CEN
Seminario de telecomunicaciones para ingeniería
TESTAMENTO DE DESCRIPTIVA ..............
SUBDIVISIÓN URBANA PUEDE ENFRENTAR SERVIDUMBRE DE PASO.pdf
NORMATIVA Y DESCRIPCION ALCANTARILLADO PLUVIAL.pdf
ISOTOPOS.pptx.universida.introduccion al tema
Cortinas-en-Presas-de-Gravedad-Vertedoras-y-No-Vertedoras.pptx
GUÍA PARA LA IMPLEMENTACIÓN DEL PLAN PARA LA REDUCCIÓN DEL RIESGO DE DESASTRES
Oficio SEC de formulación de cargos por el apagón del 25F en contra del CEN
Informe Estudio Final Apagon del 25 de febrero

Reingenieria

  • 1. 1 INGENIERIA EN SISTEMAS COMPUTACIONALES INGENIERIA DE SOFTWARE UNIDAD II MODELOS DE INGENIERIA DEL SOFTWARE INVESTIGACION: REINGENIERIA DE SOFTWARE ISC GIL SANTANA ESPARZA, MCA S501 10-10-2016 HERNANDEZ MEDINAJOSUE SOSA MEJIA ANEL VERONICA VIZCAINO NUÑEZ JOSUE ALFONSO Fecha de entrega:17/10/2016
  • 2. 2 INTRODUCCION La siguiente investigación trata sobre la reingeniería de software, que no es más que una forma de modernización para mejorar las capacidades de los sistemas de información heredados mediante la aplicación de tecnologías y practicas modernas esto quiere decir que la reingeniería es una forma de pulir o dar mantenibilidad a los sistemas como Roger pressman dice que la reingeniería de software abarca una serie de actividades que incluye: análisis de inventario, reestructuración de documentos, ingeniería inversa, reestructuración de programas y datos y la ingeniería directa, dentro de este tema se incluirá los objeticos de la reingeniería, entre ellos reducir los errores de costos y mantenimiento, hacer fáciles sistemas fáciles de entender, cambiar y probar etc. Enseguida los costes y riesgos de la reingeniería estos dependen de la magnitud del trabajo que tiene que llevarse a cabo, tal y como muestra la figura Somerville dice los costes se incrementan desde la izquierda hacia la derecha para que la traducción de código fuente sea la opción más económica. Así también tenemos un enfoque a los principales factores que afectan a los costes de reingeniería, y como todo, la reingeniería tiene sus ventajas y desventajas que es nuestro último punto incluido según Ian Sommerville, tiene dos ventajas clave sobre aproximaciones más radicales a la evolución del sistema: Riesgo reducido y Coste reducido. La principal desventaja 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, estos puntos se pueden leer a más detalle en la página cuatro de esta investigación. REINGENIERIA DE SOFTWARE Reingeniería de Software es una forma de modernización para mejorar las capacidades y/o mantenibilidad de los sistemas de información heredados mediante la aplicación de tecnologías y prácticas modernas. La Reingeniería de Software ofrece una disciplina de preparación para migrar un sistema de información heredado hacia un sistema evolucionable. El proceso aplica principios de ingeniería para un sistema existente para encontrar nuevos requerimientos.
  • 3. 3 Para Roger Pressman una definición completa de reingeniería implica: “La reingeniería del software abarca una serie de actividades entre las que se incluye el análisis de inventario, la reestructuración de documentos, la ingeniería inversa, la reestructuración de programas y datos, y la ingeniería directa. El objetivo de esas actividades consiste en crear versiones de los programas existentes que muestren una mayor calidad, y una mejor mantenibilidad.” La reingeniería cuenta entre sus objetivos con:  Proporcionar asistencia automatizada para el mantenimiento.  Reducir los errores y costos del mantenimiento.  Incrementar la intercambiabilidad del grupo de mantenimiento.  Hacer sistemas fáciles de entender, cambiar y probar.  Habilitar la conversión y migración de sistemas.  Reforzar el apego a estándares.  Mejorar la respuesta a peticiones de mantenimiento.  Mejorar el estado de ánimo del grupo de mantenimiento.  Proteger y extender la vida del sistema.  Usar CASE para apoyar sistemas existentes  Re-usar componentes de sistema existentes. La ingeniería hacia adelante comienza con una especificación del sistema e implica el diseño e implementación de un nuevo sistema. La reingeniería comienza con un sistema existente y el proceso de desarrollo para su reemplazo se basa en comprender y transformar el sistema original. La entrada del proceso es un programa heredado y la salida es una versión modularizada y estructurada del mismo programa. Ilustración 1 Ingeniería hacia adelante y reingeniería
  • 4. 4 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 antiguo 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 ¡a estructura de los programas. La estructura de control del programa se analiza y modifica para hacerla más fácil de leer y comprender. 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. Reingeniería de datos. Los datos procesados por el programa se cambian para reflejarlos cambios en él. Ilustración 2 Proceso de Reingeniería La reingeniería del sistema no requiere necesariamente todos los pasos de la ilustración 2.La traducción de código fuente puede no ser necesaria si el lenguaje de programación utilizado para desarrollar el sistema todavía está soportado por el suministrador del compilador. Ian Somerville dice que Si la reingeniería se realiza completamente con herramientas automáticas, entonces recuperar la documentación mediante ingeniería inversa puede no ser necesario. La reingeniería de datos sólo se requiere si las estructuras de datos del programa cambian durante la reingeniería del sistema. Sin embargo, la reingeniería del
  • 5. 5 software siempre implica alguna reconstrucción del programa. Para hacer que el sistema que ha sufrido reingeniería interopere con el nuevo software, tienen que Desarrollarse adaptadores de componentes La reingeniería es necesaria cuando: o Existen frecuentes fallas de producción (fiabilidad cuestionable). o Hay Problemas de rendimiento. o Se cuenta con una tecnología obsoleta. o Existen problemas de integración del sistema. o Se tiene un código de calidad pobre. o Hay una dificultad (peligroso) al cambio. o Hay una dificultad para probar. o Existe un mantenimiento caro. o Existe un incremento de problemas del sistema. A pesar de estas razones, y antes de reconstruir un sistema en uso, es conveniente analizar las diversas alternativas disponibles como es el dejar el producto como está, adquirir uno en el mercado que realice la misma función o reconstruirlo.
  • 6. 6 COSTES Y RIESGOS Los costes de la reingeniería obviamente dependen de la magnitud del trabajo que tiene que llevarse a cabo, tal y como muestra la figura [Somerville], los costes se incrementan desde la izquierda hacia la derecha para que la traducción de código fuente sea la opción más económica. Ilustración 3 Incremento de costos Los principales factores que afectan a los costes de reingeniería son [Sommerville]: 1. La calidad del software sobre el que se va a hacer reingeniería. Cuanto más baja sea la calidad del software y su documentación asociada (si la hay), más altos serán los costes de reingeniería. 2. Las herramientas de soporte disponibles para la reingeniería. Normalmente no es rentable hacer reingeniería sobre un sistema software a menos que puedan utilizarse herramientas CASE para automatizar la mayor parte de los cambios en los programas. 3. La amplitud de la conversión de datos requerida. Si el sistema sobre el que se va a hacer reingeniería requiere que se conviertan grandes volúmenes de datos. El coste del proceso se incrementa de forma significativa. 4. La disponibilidad de personal experto. Si el personal responsable de mantener el sistema no puede implicarse en el proceso de re ingeniería, los costes se incrementarán debido a que los ingenieros encargados de la reingeniería tienen que invertir una gran cantidad de tiempo en comprender el sistema.
  • 7. 7 VENTAJAS Y DEVENTAJAS Hacer reingeniería de un sistema software, según Ian Sommerville, tiene dos ventajas clave sobre aproximaciones más radicales a la evolución del sistema: l. Riesgo reducido. Existe un alto riesgo en volver a desarrollar software crítico para los negocios. Pueden cometerse errores en la especificación, o puede haber problemas en el desarrollo. Los retrasos en la introducción del nuevo software pueden significar pérdidas en el negocio e incurrir en costes adicionales. Por ejemplo, en 1999 una gran compañía de comida en Estados Unidos tuvo retrasos en la introducción de un nuevo sistema de pedidos, lo que condujo a retrasos en las entregas de productos valoradas en 100 millones de dólares en una estación de máxima venta. 2. Coste reducido. El coste de hacer reingeniería es significativamente menor que el coste de desarrollar nuevo software. Ulrich (Ulrich, 1990) cita un ejemplo de un sistema comercial en el que los costes de re implementación se estimaron en 50 millones de dólares. Al sistema se le aplicó reingeniería con éxito por 12 millones de dólares. Se presume que, con la tecnología moderna del software, el coste relativo de la re implementación probablemente sea menor. Pero aun así supera de forma considerable los costes de la reingeniería. La principal desventaja 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. No es posible. Por ejemplo, convertir un sistema diseñado utilizando una aproximación funcional en un sistema orientado a objetos. Los cambios arquitectónicos mayores o la reorganización radical de la gestión de datos del sistema no pueden realizarse de forma automática, por lo que se incurrirá en costes adicionales elevados. 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.
  • 8. 8 CONCLUSION En la presente investigación se abordaron los temas principales de la ingeniera tales como ventajas, desventajas, costes y riesgos. La reingeniería principalmente nos sirve para simplificar los problemas de cambiar sus sistemas heredados, es una forma de modernización para mejorar las capacidades y/o mantenibilidad de los estos sistemas mediante la aplicación de tecnologías y prácticas modernas. La Reingeniería de Software ofrece una disciplina de preparación para migrar un sistema de información heredado hacia un sistema evolucionable. El proceso aplica principios de ingeniería para un sistema existente para encontrar nuevos requerimientos, una compañía puede decidir hacer reingeniería sobre esos sistemas para mejorar su estructura y comprensibilidad. Ian Somerville dice que La reingeniería del software se refiere a la re implementación de los sistemas heredados para hacerlos más mantenerles. Un punto de vista es que la reingeniería puede implicar re documentar el sistema, organizar y reestructurar el sistema, traducir el sistema a un lenguaje de programación más moderno, y modificar y actualizar la estructura y valores de los datos del sistema. La funcionalidad del software no se cambia y, normalmente, la arquitectura del sistema también sigue siendo la misma. La ingeniería directa trabaja de manera que se tiene la especificación del sistema, se diseña e implementa y por último se tiene el sistema nuevo. En general La reingeniería comienza con un sistema existente y el proceso de desarrollo para su reemplazo se basa en comprender y transformar el sistema original. Ian Somerville nos dice que La reingeniería del sistema no requiere necesariamente todos los pasos. Dice que Si la reingeniería se realiza completamente con herramientas automáticas, entonces recuperar la documentación mediante ingeniería inversa puede no ser necesario. La reingeniería de datos sólo se requiere si las estructuras de datos del programa cambian durante la reingeniería del sistema.