Sie sind auf Seite 1von 34

MANTENIMIENTO DE SOFTWARE

Mantenimiento de
software

1 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Distribución del costo en el ciclo de vida

7 8 7
5
67 6 Mantenimiento
Análisis de requisitos
Diseño
Codigo
Pruebas modulares
Pruebas de
integración

2 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Mantenimiento en el ciclo de vida

Fase que se inicia con la finalización de las Pruebas


Fase más costosa del ciclo de vida.
El 80% del presupuesto de los costos en los
proyectos de desarrollo en 1987 y el 95% en 1995.
Generalmente alcanza la Barrera de mantenimiento
(sobrepasa límite de recursos).

3 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Factores que afectan el Costo

Considerada actividad poco creativa, supuestamente mas


sencilla y menos importante.
Se realizan bajo presión de tiempo.
Poca participación del usuario durante el desarrollo del
sistema.

4 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Dificultades del mantenimiento


Aplicaciones antiguas heredadas (legacy code):
Restricciones de tamaño y espacio de almacenamiento
Herramientas desfasadas, sin métodos
Una o varias migraciones a nuevas plataformas
Múltiples modificaciones para adaptarlos o mejorarlos
Desarrolladores no localizables
No es factible desechar el software y reescribirlo
Gran carga financiera de su desarrollo y necesidad de
amortización
Software que sigue funcionando con baja calidad

5 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Dificultades del mantenimiento


Ausencia de métodos (se realiza de forma ad hoc).
Cambio tras cambio, los programas tienden a ser menos
estructurados.
Ausencia de documentación.
No captura adecuada de requisitos  mayores esfuerzos de
mantenimiento futuros.
No existen registros de pruebas  imposibilidad de pruebas de
regresión.
Problemas de gestión (considerado “trabajo poco creativo”,
asignado a las personas con menos experiencia).

6 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Definición

Proceso de modificar un sistema o componente software


después de su entrega para corregir defectos, mejorar el
rendimiento u otros atributos o adaptarlo a un entorno
cambiante (IEEE 1990).
Corrección de defectos en el software.
Creación de nuevas funcionalidades en el software por
nuevos requisitos de usuario.
Mejora de la funcionalidad y del rendimiento.

7 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Costes del mantenimiento

Oportunidades de desarrollo que se pierden.


Insatisfacción del cliente cuando no se puede atender en
un tiempo aceptable una petición de reparación que
parece razonable.
Los errores ocultos que se introducen al cambiar el sw.
durante el mantenimiento reducen la calidad global del
producto.
Perjuicio en otros proyectos de desarrollo cuando la
plantilla tiene que dejarlos, total o parcialmente, para
atender peticiones de mantenimiento.

8 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Tipos de Mantenimiento

Perfectivo:
También llamado evolutivo
Mejoras al rendimiento
Aumento de facilidad para mantener un programa
ante cambios.
Nuevas funcionalidades (de ampliación) y mejoras de
eficiencia de ejecución (Gorla,1991).

9 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Tipos de Mantenimiento

Adaptativo:
Conjunto actividades para adaptar el sistema a los
cambios (HW o SW) en su entorno tecnológico.
El entorno de datos:
Cambio de soporte de los datos de una aplicación,
ej. archivos a sistema Relacional.
El entorno de Proceso:
Nueva plataforma de explotación
Nuevo Sistema Operativo
10 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Tipos de Mantenimiento

Correctivo:
Corrección de defectos en el HW o SW detectados por
el usuario en la explotación .
Terminaciones anormales o salidas incorrectas…
Procesamiento
Tiempos de respuestas altos….Rendimiento
Violación de estándares de programación o
inconsistencias del diseño…Implementación
Pruebas y actualización de documentación luego de
las modificaciones.
11 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Tipos de Mantenimiento

Preventivo:
Actividades para facilitar el mantenimiento futuro.
Validación de datos entrada
Mejoras en su legibilidad

12 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Costos por Tipo Mantenimiento

18
5
60 17

Perfectivo
Correctivo
Preventivo
Adaptativo

13 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Distribución del tiempo en tareas de


mantenimiento

19 23
6 Implementar cambio
28 Realizar pruebas
18
6 Actualizar
documentación
Estudiar peticiones
Estudiar
documentación
Estudiar código

14 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

El Proceso de Mantenimiento

Varía considerablemente dependiendo del tipo de


Software
Proceso informal o formal.
Actividades fundamentales:
Análisis del cambio
Planificación de la versión
Implementación del sistema
Entrega

15 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

El Proceso de Mantenimiento

Correctivo

Perfectivo
Peticiones Análisis de Planificación Implementación Liberación
de Cambio Impacto de versiones de cambios del Sistema
Adaptativo

Preventivo

16 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

El Proceso de Mantenimiento

Mito:
Una vez que se escribe un programa y se hace funcionar el
mismo, el trabajo de programación ha terminado.
Realidad:
Los datos indican que entre el cincuenta y sesenta por
ciento de todo el esfuerzo dedicado a un programa se
realizará después de la primera entrega del software al
cliente.
"cuanto más pronto se comience a escribir
código, más se tardara en terminarlo"
17 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

El Proceso de Mantenimiento

Mito:
Hasta que no se cuente con un programa ejecutable,
realmente no se puede comprobar su calidad.
Realidad:
Desde el inicio de un proyecto de software debe aplicarse
uno de los mecanismos más efectivos para garantizar la
calidad del software: la revisión técnica formal.
La revisión del software es un filtro de calidad que es
mucho más efectivo que la prueba, para encontrar ciertas
clases de defectos en el software.

18 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

El Proceso de Mantenimiento

Mito:
Lo único que se entrega al terminar el proyecto es el
programa funcionando.
Realidad:
Un programa que funciona es sólo una parte de una
configuración de software que incluye programas,
documentos y datos.
La documentación es la base de un buen desarrollo y, lo
que es más importante, proporciona guías para la tarea de
mantenimiento de software

19 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

El Proceso de Mantenimiento

Predecir el numero de peticiones de cambios para un sistema


requiere entender la relación entre el sistema y sus entorno
¿Qué partes del sistema
¿Qué partes del sistema serán más costosas de
son mas probables de mantener?
afectarse por las
peticiones de cambio? Mantenimiento
Previsto
¿Cuáles serán los costos
de mantenimiento durante
Cambios
Costos el período de vida del
previstos sistema?
del Sistema previstos de
mantenimiento

¿Cuántas peticiones de ¿Cuáles serán los costos de


cambios se esperan? mantenimiento de este
sistema el próximo año?

20 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Evaluación relación sistema y su entorno

Número y complejidad de las interfaces del sistema.


Número de requerimientos inherentemente volátiles
del sistema.
Los procesos de negocios en los que se utiliza el
sistema.

21 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Mantenibilidad

Medida cualitativa de la facilidad de comprender,


corregir, adaptar y/o mejorar el software (Pressman 98)
“Facilidad con que un sistema o componente software
puede ser modificado para corregir defectos, mejorar el
rendimiento u otros atributos, o adaptarse a un cambio
de entorno”.
Muy ligada a la calidad del software.
Métricas de mantenibilidad = Métricas de calidad
También ligada a la complejidad del software.

22 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Ejemplos de métricas para evaluar la


mantenibilidad

Número de peticiones de mantenimiento correctivo.


Tiempo promedio requerido para el análisis de
impacto.
Tiempo promedio para implementar una petición de
cambio.
Número de peticiones de cambio pendientes.
COCOMO 2

23 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Ejemplos de métricas para evaluar la


mantenibilidad
Nº ciclomático V(G)
Nº de sentencias
Frecuencia de operandos

SIMPLICIDAD Longitud de programa


Nivel de módulo
CONCISIÓN
Mantenibilidad AUTODESCRIPTIVO Frecuencia de comentarios

LEGIBILIDAD Longitud de programa


Niveles anidados (MAX)
FACILIDAD DE PRUEBA
Nº de sentencias

V(G)
Niveles anidados (MAX)

24 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Estrategias de cambio del Software

Transformación Arquitectónica:
Cambios del SW para seguir dándole
mantenimiento conforme se implementan
cambios más importantes en la arquitectura del
Sistema de Software.
Evolución de una arquitectura centralizada a
una Cliente-Servidor

25 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Estrategias de cambio del Software

Reingeniería del Software:


No se agrega funcionalidad al sistema. Se
modifica el SW para hacerlo más fácil de
comprender y cambiar.
Comprende algunas modificaciones
estructurales y no cambios arquitectónicos
mayores

26 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Leyes de Cambios del Sistema.

Cambio Continuo
Un programa utilizado en un entorno real
necesariamente debe cambiar o llegar a ser
progresivamente menos útil en ese entorno.
El mantenimiento es un proceso inevitable.

27 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Leyes de Cambios del Sistema.

Incremento de la Complejidad
Puesto que un programa evolutivo cambia, su
estructura tiende a ser mas compleja.
Se deben dedicar recursos extra para preservar y
simplificar la estructura.
Puesto que el sistema cambia su estructura se
degrada.
Invertir en mantenimiento preventivo evita que
esto pase.
28 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Leyes de Cambios del Sistema.

Evolución prolongada del Programa


La evolución del programa es un proceso
autoregulatorio.
Los atributos del sistema, como el tamaño , el
tiempo entre entregas y el número de errores
reportados son aproximadamente invariantes
para cada entrega del sistema

29 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Leyes de Cambios del Sistema.

Estabilidad organizacional
En el tiempo de vida de un programa, su tasa de
desarrollo es aproximadamente constante e
independiente de los recursos dedicados al
desarrollo del sistema.
Un cambio a los recursos o al personal tiene
efectos imperceptibles en la evolución a largo
plazo del sistema

30 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Leyes de Cambios del Sistema.

Conservación de la familiaridad
En el tiempo de vida del sistema , el cambio
incremental en cada entrega es
aproximadamente constante.
Incorporar nuevas funcionalidades al sistema
introduce nuevas fallas al sistema.

31 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Métodos de mantenimiento del


software

Reingeniería:
Examen y modificación del sistema para reconstruirlo
en una nueva forma.
Ingeniería inversa:
Análisis de un sistema para identificar sus
componentes y las relaciones entre ellos, así como
para crear representaciones del sistema en otra forma
o en un nivel de abstracción más elevado.

32 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Métodos de mantenimiento del


software

Reestructuración del software:


Consiste en la modificación del software para hacerlo
más fácil de entender y cambiar o menos susceptible
de incluir errores en cambios posteriores.
Transformación de programas:
Técnica formal de transformación de programas

33 aulas.aprendiendoaprogramar.com apdaza@gmail.com
MANTENIMIENTO DE SOFTWARE

Métodos de mantenimiento del


software

Ing. directa Ing. directa

Definición Diseño Implementación

Ing. inversa Ing. inversa

Redocumentación Redocumentación Redocumentación

34 aulas.aprendiendoaprogramar.com apdaza@gmail.com

Das könnte Ihnen auch gefallen