Sie sind auf Seite 1von 45

MANTENIMIENTO

DE SOFTWARE

LIC. MARÍA ELENA CHÁVEZ BARCÉS


AGENDA
Introducción
Mantenimiento de software
Tipos de mantenimiento
Costos de mantenimiento
Proceso de mantenimiento
Métricas del proceso
Dificultades en el mantenimiento
Sistemas heredados (legacy)
Reingeniería
Roles y responsabilidades
Artefactos
INTRODUCCIÓN
Las grandes organizaciones tienen grandes inversiones en
software y lo consideran activos críticos del negocio, debe
cambiarse y actualizarse para mantener el valor de estos
activos.
La evolución de software consiste en un conjunto de
actividades necesarias para:
       -  Mantener operativo un sistema software, 
       -  Mantener satisfecho a los usuarios, 
       -  Maximizar la inversión y reducir costos, 
       -  Alargar la vida del software, 
       -  Adaptarlo a nuevos cambios o requisitos.
Los cambios en el software son inevitables
       -  Surgen nuevas exigencias;
       -  Cambios en el entorno empresarial;
       -  Los errores deben ser reparados;
       -  Se agregan nuevos equipos al sistema;
       -  Tiene que mejorarse el rendimiento o la confiabilidad
          del software.
Un problema fundamental para las organizaciones es la
aplicación y gestión de cambios, en sus sistemas de software
existentes.
MANTENIMIENTO DE SOFTWARE

“La modificación de un producto software después


de su liberación para corregir fallas, mejorar su
desempeño u otros atributos de calidad o adaptar
el producto ante un cambio en su entorno de
operación [que lo hace incompatible con el
entorno de operación originalmente definido al
definir la configuración]”

IEEE Standard 610.12:1990, Glossary of Software Engineering


IEEE Standard 1219-1998. Software Maintenance
“El mantenimiento de software es la modificación al
código y/o documentación asociada debido a un
problema o necesidad de mejora. El objetivo
consiste en modificar el producto software vigente
mientras se preserva su integridad”.

Perspectiva de ISO/IEC 12207


EVOLUCIÓN DE SOFTWARE
(Resultado de las operaciones de mantenimiento).
El concepto de evolución de software implica un
cambio continuo desde un estado menor, más
simple o peor a uno superior o mejor.
Objetivos:
-  Mantener operativo al sistema
-  Mantener contentos a los usuarios
-  Maximizar la inversión y reducir costos
-  Alargar la vida del software
-  Adaptarlo a nuevos cambios o requisitos
La evolución del software es una
garantía frente a su
obsolescencia
LEYES DE LEHMAN
TIPOS DE MANTENIMIENTO

Mantenimiento correctivo
Mantenimiento adaptativo 
Mantenimiento perfectivo 
Mantenimiento preventivo
MANTENIMIENTO CORRECTIVO
Se define como aquel proceso orientado a la reparación de
defectos existentes en un sistema software que se encuentra
en producción, ya sea porque :
       -  Falla o aborta el programa.
       -  El programa produce resultados no acorde con las
           especificaciones.
       -  Los diseños y requisitos no están acordes con el software
           que lo soporta.
       -  La documentación del usuario lleva hacia actividades que
           provocan resultados incorrectos o fallas en el sistema.
La reparación de errores en el mantenimiento correctivo tiene
dos problemas:
       1)  Reparar un defecto tiene una probabilidad de introducir 
              otro defecto.
       2)  Incrementar las pruebas.

Tipos de mantenimiento correctivo básicos:


       1)  Reparaciones de emergencia: ejecutadas en corto tiempo y 
              generalmente sobre un único programa.
       2)  Reparaciones planificadas: arreglan defectos que no 
              requieren una atención inmediata y re-examinan todas las 
              reparaciones de emergencia.
MANTENIMIENTO ADAPTATIVO
El mantenimiento adaptativo  garantiza cambiar el software
para adaptarlo a aquellos cambios que se producen en su
entorno de operación:
      -  Cambio de configuración
      -  Sistema operativo
      -  Interfaz de comunicación, etc.

Modificar el software para que interaccione con el entorno


cambiante.
Beneficios del mantenimiento adaptativo:
       -  Mejorar la productividad automatizando actividades.
       -  Incrementar la satisfacción del usuario.
       -  Incrementar las ganancias mediante la mejora de
           respuestas a las oportunidades de negocio.

Otros factores:
       -  Necesidades internas.
       -  Competición.
       -  Requisitos externos.
MANTENIMIENTO PERFECTIVO
Acciones llevadas a cabo para mejorar la calidad interna de los
sistemas y su documentación en cualquiera de sus
características:
       -  Reestructuración del código, 
       -  Definición más clara del sistema,
       -  Satisfacer nuevos requisitos,
       -  Optimización del rendimiento y 
       -  Aumentar la eficiencia. 
El objetivo principal es mejorar la calidad del software para
hacerlo más fácilmente mantenible y reducir el costo e impacto
de los cambios.
Actividades del mantenimiento perfectivo:
       -  Reingeniería
       -  Reescritura
       -  Actualización de la documentación.

El proceso de mantenimiento perfectivo consta de dos etapas:


 1)  Identificación de candidatos (antes de planificar la versión)
 2)  Corrección de los problemas de calidad identificados para 
        maximizar los beneficios.
MANTENIMIENTO PREVENTIVO
Cambiar el software para facilitar el futuro mantenimiento. 
Permite detectar y corregir fallas latentes en el producto
software antes de que estas se manifiesten como fallas efectivas.
Sus técnicas son:
       -  Análisis de complejidad: complejidad de los módulos
       -  Análisis de funcionalidad: ayuda a estimar su valor
       -  Ingeniería inversa/recuperación de diseño: Debido a que el 
           código no está acorde con la documentación
       -  Reingeniería por partes: para sistemas de vida corta y cambios 
       -  Traslación / reestructuración : Migración de plataforma.
COSTOS DE MANTENIMIENTO

Por lo general, mayores que los costos de desarrollo (dependiendo de la


aplicación). Afectados por factores tanto técnicos como no técnicos.
El envejecimiento del software puede tener altos costos de soporte
(ejemplo, lenguajes de programación antiguos, compiladores, etc.).
DISTRIBUCIÓN DEL ESFUERZO DEL
MANTENIMIENTO

Sommerville
FACTORES QUE INFLUYEN EN EL COSTO DEL
MANTENIMIENTO
Con el tiempo la estructura de los programas se degrada y se
hace más difícil de entender y cambiar.
Los desarrolladores del sistema pueden no tener la
responsabilidad contractual del mantenimiento, por lo que no
hay incentivo para diseñar los cambios en el futuro.
El costo de mantenimiento se reduce, si el mismo personal
participa en el mantenimiento.
El personal de mantenimiento a menudo no tienen experiencia y
tienen un conocimiento limitado de dominio.
PREDICCIÓN DEL CAMBIO

Predecir el número de cambios requiere la comprensión de


las relaciones entre el sistema y su entorno.
Las predicciones del mantenimiento se puede hacer mediante
la evaluación de la complejidad de los componentes del sistema.
La complejidad depende de:
       -  La complejidad de las estructuras de control;
       -  La complejidad de las estructuras de datos;
       -  Objeto, método (procedimiento) y el módulo
CICLOS DE MANTENIMIENTO

Construcción de una nueva versión como una simple


extensión.
Si los cambios no afectan la arquitectura y no hay
mayores riesgos que mitigar.
El mantenimiento constituye la última fase del ciclo de vida del
software. 
Una vez finalizado el desarrollo, el producto entra en la fase
de operación y mantenimiento.
El mantenimiento debe asegurar que el producto sigue
satisfaciendo las expectativas del cliente.
Para facilitar el mantenimiento del producto es necesario un
desarrollo de calidad.
PROCESO DE MANTENIMIENTO

Desarrollar mecanismos de evaluación, control e


implementación de modificaciones.
Establecer una organización de mantenimiento.
Prescribir procedimientos de evaluación y de
información.
Definir una secuencia estandarizada de sucesos
para cada solicitud.
Establecer un sistema de registro de
información de las actividades.
Definir criterios de revisión y de evaluación de las
tareas de mantenimiento.
ACTIVIDADES DEL PROCESO DE MANTENIMIENTO

Ian Sommerville
SOLICITUDES DE CAMBIO

El mantenimiento de un producto software se


inicia desde el momento que, una vez
colocado el producto en producción /
operación, se comienzan a generar las
solicitudes de cambio sobre algún aspecto del
producto software. 
Las solicitudes realizadas determinan la
naturaleza del mantenimiento requerido sobre
el producto software. 
SOLICITUDES DE CAMBIO URGENTE
Cambios urgentes pueden llevarse a la práctica sin pasar por todas
las etapas del proceso de ingeniería de software
       -  Si  tiene que ser reparada una falla grave del sistema;
       -  Si tienen efectos inesperados los cambios en el entorno del
           sistema (por ejemplo, una actualización del sistema operativo);
       -  Si hay cambios de negocio que requieren una reacción muy
           rápida (por ejemplo, el lanzamiento de un producto de la
           competencia).
ANÁLISIS DE IMPACTO
Determina el ámbito de los cambios requeridos
como base para su implementación.
Las actividades principales del análisis de impacto
son:
-  Evaluar las solicitudes de cambio sobre los
sistemas existentes, otros sistemas, hardware,
estructuras de datos, etc.
-  Desarrollar una estimación preliminar de
recursos.
-  Documentar el ámbito del cambio y actualizar la
solicitud realizada.
PLANIFICACIÓN DE VERSIONES
Implica determinar el contenido y tiempo de las versiones del
sistema.

Sus actividades incluyen:


       -  Ordenar y seleccionar las solicitudes de cambio para la
           próxima versión.
       -  Organizar el trabajo y procesar los cambios.
       -  Preparar un documento sobre el plan de la versión del
           sistema.
       -  Actualizar las solicitudes de cambio aprobadas.
IMPLEMENTACIÓN DE CAMBIOS
Para asegurar la conformidad de los cambios
aprobados con los requisitos originales.
Las actividades principales de las pruebas son
las siguientes:
       -  Implementar y revisar los cambios en el 
          código.
       -  Restaurar el código fuente bajo control 
           del sistema de gestión de la 
           configuración.
       -  Actualizar las solicitudes de cambio de 
           los módulos modificados.
MANTENIMIENTO DEL CÓDIGO
Estudiar el programa, el flujo de control general.
Evaluar la documentación existente.
Utilizar los listados de referencias cruzadas.
Hacer cambios con el mayor cuidado.
No eliminar código hasta estar totalmente
seguro.
Insertar variables propias para evitar problemas.
Mantener un registro de las actividades de
mantenimiento.
Evitar la necesidad de tener que tirar el programa
y volverlo a escribir.
(Yourdon, 1975)
PRUEBAS
Para asegurar la conformidad de los cambios
aprobados con los requisitos originales.
Las actividades principales de las pruebas son
las siguientes:

     -  Pruebas manuales
     -  Pruebas automatizadas
     -  Pruebas de integración
     -  Pruebas del sistema
     -  Pruebas de aceptación
VERSIÓN DEL SISTEMA

El objetivo de la versión del sistema es entregar


el sistema y su documentación actualizada a los
usuarios para su instalación y configuración.
       -  Establecer una planificación de las versiones
       -  Determinar el contenido de cada versión
MÉTRICAS DEL PROCESO
Para evaluar la mantenibilidad pueden ser
utilizados algunas métricas del proceso:
       -  Número de solicitudes de mantenimiento 
           correctivo;
       -  Tiempo promedio requerido para el 
           análisis de impacto;
       -  Tiempo medio para implementar una 
           solicitud de cambio;
       -  Número de solicitudes de cambios pendientes....
Si alguno o todos estos van en aumento, esto puede
indicar una disminución de la capacidad de
mantenimiento…
MODELO DEL ESFUERZO DE MANTENIMIENTO
Esfuerzo total (M)
M = p + K·exp(c - f)
Esfuerzo productivo (p)
Constante empírica (K)
Medida de la complejidad atribuida a la falta de un buen
diseño y documentación (c)
Medida del grado de familiaridad con el software (f)

Se distribuye entre...
Actividades productivas. Análisis, evaluación, modificación del diseño y
codificación.
Actividades menos productivas. Interpretación y compresión.
DIFICULTADES EN EL MANTENIMIENTO

Dificultad para seguir la evolución del software a través de varias


versiones al no existir documentación sobre los cambios.
Dificultad para comprender un programa ajeno.
Dificultad para contactar con los desarrolladores.
No existe una documentación apropiada
No se prevé el cambio cuando se diseña.
Diseño pobre/rígido.
Cambios tecnológicos.
El mantenimiento no se considera un trabajo atractivo.
...todos tienen su origen en las deficiencias del desarrollo
SISTEMAS HEREDADOS (LEGACY)
Las organizaciones que se basan en sistemas heredados deben
elegir una estrategia para la evolución de estos sistemas:
       -  Dividir completamente el sistema y modificar los procesos
           de negocio para que ya no sean necesarios;
       -  Continuar el mantenimiento del sistema;
       -  Transformar el sistema (reingeniería) para mejorar su
           capacidad de mantenimiento;
       -  Colocar el sistema como un sistema nuevo.
La estrategia elegida debería depender de la calidad del
sistema y su valor de negocio.
CATEGORÍAS EN SISTEMAS HEREDADOS

Baja calidad, bajo valor comercial.  Estos sistemas deben ser


desechados. 
Baja calidad, alto valor comercial.  Estos hacen una
importante contribución con las empresas, pero son caros de
mantener. En caso de hacer re-ingeniería o reemplazarlo.
Alta calidad y bajo valor comercial.  Reemplazar con COTS,
o mantener completamente.
Alta calidad, alto valor comercial.  Continuar con el
mantenimiento.
REINGENIERÍA

“Reingeniería es la transformación sistemática de un sistema


existente a una nueva forma para realizar mejoras de la
calidad en operación, capacidad del sistema, funcionalidad,
rendimiento o capacidad de evolución a bajo costo, con un
plan de desarrollo corto y con bajo riesgo para el cliente”.

Definición dada por el Reengineering Center


del Software Engineering Institute de la
Universidad Carnegie Mellon
REINGENIERÍA
Proceso de recuperación de la información del diseño de un
software existente para alterarlo o reconstruirlo en un esfuerzo
de mejorar la calidad general.
El software resultante implementa la función del sistema
existente.
El desarrollador añade nuevas funciones y/o mejora el
rendimiento general.
Se aplica en el mantenimiento preventivo. Los programas que
sean susceptibles de cambiar en un futuro cercano serán
preparados para ese cambio.
VENTAJAS DE LA REINGENIERÍA
Reducción de riesgos
       -  Hay un alto riesgo en el desarrollo de un nuevo software.
           Puede haber problemas de desarrollo,  de personal y de
           especificación.
Reducción de costos
       -  El costo de re-ingeniería es mucho menor que el costo de
           desarrollar un nuevo software.
INGENIERÍA DIRECTA Y REINGENIERÍA
INGENIERÍA INVERSA

La ingeniería inversa es el proceso de análisis de software para


identificar los componentes software y sus interrelaciones y
para crear representaciones del software en otra forma o en
niveles más altos de abstracción.
La ingeniería inversa es pasiva; no cambia el software, ni da
como resultado un nuevo software.
Los esfuerzos de ingeniería inversa producen gráficos de
llamadas y gráficos de flujo de control desde el código fuente.
Un tipo de ingeniería inversa es la redocumentación. Otro tipo
es la recuperación de diseño.
La refactorización es una transformación de programa que
reorganiza un programa sin cambiar su comportamiento, y es
una forma de ingeniería inversa que busca mejorar la
estructura del programa.
Finalmente, la ingeniería inversa de datos ha ganado
importancia en los últimos años, donde los esquemas lógicos
se recuperan de bases de datos físicas.

Elementos de ingeniería inversa


Nivel de abstracción, completitud, interactividad y direccionalidad
ROLES Y RESPONSABILIDADES

Administrador del mantenimiento


       -  Evaluación del impacto
       -  Planeamiento
       -  Análisis de costo-beneficio
Desarrollador
       -  Implementar los cambios al software
       -  Ejecutar pruebas unitarias
Revisor
       -  Implementar elementos de pruebas
       -  Revisión de código fuente
ARTEFACTOS

Solicitud de cambios
Plan de mantenimiento de software
Análisis de impacto
Análisis costo - beneficio
Lista de riesgos
Registro de resultados de las pruebas
Informe de revisiones

Das könnte Ihnen auch gefallen