7. Mantenimiento de Software

30
7. Mantenimiento de Software Ingeniería de Software UTM 2017 Junio 2015

Transcript of 7. Mantenimiento de Software

Page 1: 7. Mantenimiento de Software

7. Mantenimiento de SoftwareIngeniería de Software

UTM 2017

Junio 2015

Page 2: 7. Mantenimiento de Software

2

Page 3: 7. Mantenimiento de Software

3

Page 4: 7. Mantenimiento de Software

4

Page 5: 7. Mantenimiento de Software

5

Page 6: 7. Mantenimiento de Software

6

Page 7: 7. Mantenimiento de Software

Introducción

✤ Durante su ciclo de vida, el software se ve presionado a cambiar. Estas presiones son las consecuencias inevitables de la naturaleza del software y el constante cambio en el medio ambiente en el que se usa.

✤ Una forma de reducir este impacto es de diseñar, desarrollar y mantener un sistema que facilite el cambio y reduzca el impacto de cambios individuales.

✤ Estos esfuerzos se encuentran englobados en el mantenimiento de software.

7

Page 8: 7. Mantenimiento de Software

7.1 Aspectos Generales

✤ El mantenimiento de software es la modificación de un producto de software después de su entrega, con el objetivo de corregir fallas, mejorar su ejecución u otros atributos. Un error común es pensar que es sólo corregir defectos.

8

Page 9: 7. Mantenimiento de Software

Cambios

✤ Cambios adaptativos - para volver el software más acorde con condiciones diferentes

✤ Cambios correctivos - para quitar defectos

✤ Cambios perfectivos - para mejorar el software

✤ Cambios preventivos - para detener el deterioro

9

Page 10: 7. Mantenimiento de Software

Ventajas

✤ Reducir costos de mantenimiento

✤ Desarrollo de un diseño modular

✤ Extender la vida del sistema

✤ Diferir el reemplazo del sistema

✤ Reutilizar módulos o componentes

10

Page 11: 7. Mantenimiento de Software

Mantenimiento Óptimo

Maximiza ganancias y minimiza costos

Los costos dependen de la disponibilidad y capacidad de manutención del sistema para determinar los parámetros a minimizar.

Ejemplos de parámetros:

✤ costo de fallo, costo de downtime, costo de mantenimiento correctivo, preventivo y reemplazo del sistema

11

Page 12: 7. Mantenimiento de Software

Costo de Mantenimiento

✤ Reportes sugieren que el costo de mantenimiento es alto, aproximadamente el 67% de el total del ciclo de desarrollo

✤ En promedio, es aproximadamente del 50%. ¿Por qué?

http://www.tutorialspoint.com/software_engineering/software_maintenance_overview.htm12

Page 13: 7. Mantenimiento de Software

Actividades de Mantenimiento

✤ Identificación y rastreo

✤ Análisis

✤ Diseño

✤ Implementación

✤ Pruebas del sistema

✤ Pruebas de Aceptación

✤ Entrega

✤ Administración del Mantenimiento 13

Page 14: 7. Mantenimiento de Software

Distribución de las Actividades de Mantenimiento

http://www.slideshare.net/rajeevsharan/software-maintenance-984184214

Page 15: 7. Mantenimiento de Software

Problemas de Mantenimiento

✤ Es el programa de alguien más

✤ El desarrollador no está disponible

✤ La documentación no existe

✤ No fue diseñado con el cambio en mente

✤ El mantenimento no es una actividad primordial

15

Page 16: 7. Mantenimiento de Software

7.2 Características del Mantenimiento

Razones del costo tan elevado del mantenimiento

1. Estabilidad del Equipo de Desarrollo - los equipos de desarrollo se disuelven. Se invierte mucho tiempo y dinero en volver a comprender lo esencial del sistema

2. Responsabilidad Contractual - contrato de desarrollo puede ser diferente al contrato de mantenimiento

3. Habilidades de Personal - el mantenimiento no se aprecia igual que el desarrollo de software

4. Edad y Estructura del Sistema

16

Page 17: 7. Mantenimiento de Software

Predicción del Mantenimiento

Somerville pp 45517

Page 18: 7. Mantenimiento de Software

Complejidad del Mantenimiento

1. El número y la complejidad de las interfaces del sistema

2. El número de requerimientos del sistema intrínsecamente volátiles

3. Los procesos de negocios en los que se utiliza el sistema

18

Page 19: 7. Mantenimiento de Software

7.3 Categorías de Mantenimiento: Correctivo, Adaptativo, Preventivo, PerfectivoExisten tres tipos diferentes de mantenimiento de software:

1. Mantenimiento para depurar defectos de software. Generalmente, los errores de código son relativamente baratos de corregir; los errores de diseño son mucho más caros ya que implican reescribir varios componentes de los programas. Los errores de requerimientos son los más caros de reparar debido a que puede ser necesario un rediseño extenso del sistema.

2. Mantenimiento para adaptar el software a diversos entornos operativos. Se requiere cuando se cambia algún aspecto del entorno del sistema, por ejemplo el hardware, la plataforma del sistema operativo u otro software de soporte. El sistema de aplicaciones debe modificarse para adaptarse a estos cambios en el entorno.

3. Mantenimiento para añadir o modificar funcionalidades al sistema. Es necesario cuando los requerimientos del sistema cambian como respuesta a cambios organizacionales o del negocio. La escala de los cambios requeridos en el software es a menudo mucho mayor que en los otros tipos de mantenimiento.

19

Page 20: 7. Mantenimiento de Software

✤ En la práctica, no existe una clara distinción entre estos tipos de mantenimiento. Cuando se adapta el sistema a un nuevo entorno, pueden añadirse funcionalidades para aprovechar las ventajas de las nuevas características del entorno.

✤ Los defectos del software a menudo se muestran debido a que los usuarios utilizan el sistema en formas no anticipadas. La mejor forma de reparar estos defectos consiste en realizar cambios en el sistema que se adapten a su forma de trabajo.

20

Page 21: 7. Mantenimiento de Software

✤ Normalmente se reconocen estos tipos de mantenimiento, pero varias personas les dan distintos nombres. El mantenimiento correctivo se utiliza generalmente para referirse al mantenimiento para reparación de defectos. Sin embargo, el mantenimiento adaptativo algunas veces significa adaptarse a un nuevo entorno y puede significar adaptar el software a nuevos requerimientos.

✤ El mantenimiento perfectivo puede significar perfeccionar el software implementando nuevos requerimientos; en otros casos significa mantener la funcionalidad del sistema, pero mejorando su estructura y su rendimiento.

21

Page 22: 7. Mantenimiento de Software

Costos de Mantenimiento

Los costos de mantenimiento depende de la naturaleza del sistema:

✤ Los costos de mantenimiento para sistemas de aplicaciones corporativas son en general compatibles con los costos del desarrollo de los sistemas

✤ Para sistemas de tiempo real embebidos, los costos de mantenimiento pueden ser hasta cuatro veces mayores que los costos de desarrollo

22

Page 23: 7. Mantenimiento de Software

Costos de Mantenimiento

Ingeniería de Software de Sommerville pp. 45323

Page 24: 7. Mantenimiento de Software

7.4 Reingeniería de Sistemas

✤ Como hemos visto, el proceso de mantenimiento de sistemas puede ser complicado, especialmente para sistemas heredados. Estos sistemas son difíciles de comprender y de mejorar.

✤ Una manera de poder hacer mantenimiento a sistemas heredados es utilizando un proceso de reingeniería. La reingeniería de sistemas consiste en en la reimplementación de sistemas heredados para hacerlos más mantenibles.

✤ Reingeniería implica redocumentar el sistema, organizar y restructurar, traducir el sistema a un lenguaje moderno y modificar y actualizar la estructura de los datos. Su funcionalidad y arquitectura no se cambia.

24

Page 25: 7. Mantenimiento de Software

Ventajas de la Reingeniería

1. Riesgo reducido. Existe un alto riesgo en volver a desarrollar software crítico para 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 costos 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. Costo reducido. El costo de hacer reingeniería es significativamente menor que el costo de desarrollar nuevo software. Ulrich (Ulrich, 1990) cita un ejemplo de un sistema comercial en el que los costos de reimplementació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 costo relativo de la reimplementación probablemente sea menor, pero aún así supera de forma considerable los costos de la reingeniería.

25

Page 26: 7. Mantenimiento de Software

Diferencias entre Ingeniería y Reingeniería

Ingeniería de Software de Sommerville pp. 45926

Page 27: 7. Mantenimiento de Software

Actividades de Reingeniería

27

Page 28: 7. Mantenimiento de Software

Actividades de Reingeniería

1. Traducción del código fuente. El programa es convenido 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. Ésto ayuda a documentar su organización y funcionalidad.

3. Mejora de la estructura del sistema. 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. Esta etapa puede implicar una transformación de un sistema centralizado a una plataforma distribuida.

5. Reingeniería de datos. Los datos procesados por el programa se cambian para reflejar los cambios en él.28

Page 29: 7. Mantenimiento de Software

Costos en Reingeniería

1. La calidad del software en el que se va a hacer reingeniería. Cuanto más baja sea la calidad del software y su documentación asociada, más altos serán los costos 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 costo del proceso se incrementa de forma significativa.

4. La disponibilidad de personal experto. Si el personal responsable de mantener el sistema no puede involucrarse en el proceso de reingeniería, los costos 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.

29

Page 30: 7. Mantenimiento de Software

Fin.Ingeniería de Software

UTM 2017

16 de Junio, 2015

30