Mantenimiento Software

Descargar como ppt, pdf o txt
Descargar como ppt, pdf o txt
Está en la página 1de 24

Ingeniería del Software

Mantenimiento del Software


Mantenimiento del software. Estructura
 Tipos de mantenimiento
 Coste de las actividades de mantenimiento
 Dificultades del mantenimiento
 El proceso de mantenimiento en el ciclo de vida del sw.
 Métodos de mantenimiento del software
 Redocumentación
 Ingeniería inversa y reingeniería
 Ingeniería inversa de procesos (comprensión de programas)
 Identificación y recopilación de los componentes funcionales
 Asignar valor semántico a los componentes funcionales
 Ingeniería inversa de ficheros y BDs
 Ingeniería inversa y reingeniería de interfaces de usuario
 Reconstrucción de programas
 Mantenibilidad o facilidad de mantenimiento del sw.
 Métricas para mantenibilidad

Mantenimiento del software 2


Mantenimiento del software. Bibliografía

 (Piattini et al. 98) M. Piattini, J. Villalba, F. Ruiz, I. Fernández,


M. Polo, T. Bastanchury, M.A. Martínez. “Mantenimiento del
software. Conceptos, métodos, herramientas y
outsourcing.” Ed. Ra-Ma. 1998.
 (Piattini et al. 96) M. Piattini, José A. Calvo-Manzano, J.
Cervera, L. Fernández. “Análisis y diseño detallado de
Aplicaciones Informáticas de Gestión”. Ed. Ra-Ma. 1996.
Capítulo 16.

Mantenimiento del software 3


Mantenimiento del software

 “El mantenimiento del sw. es la modificación de un


producto sw. después de su entrega al cliente o usuario para
corregir defectos, para mejorar el rendimiento u otras
propiedades deseables, o para adaptarlo a un cambio de
entorno” (IEEE 83).
 Es la parte más costosa del ciclo de vida del sw.:
60-90% del coste total (y coste creciente).
El coste relativo de reparar un defecto aumenta en las últimas
etapas del ciclo de vida (de 1 a 100).
 En algunas empresas coste del 95%  Barrera del
mantenimiento
(no se pueden desarrollar nuevos productos sw.)
Mantenimiento del software 4
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.
Mantenimiento del software 5
Tipos de mantenimiento

 Correctivo  Perfectivo
 Adaptativo  Mantenimiento de ampliación
 Mantenimiento de eficiencia
 Preventivo
 Mantenimiento para la reutilización

Coste de mantenimiento

Preventivo Correctivo
5% 17%

Adaptativo
Perfectivo 18%
60%
Mantenimiento del software 6
Coste de las actividades de mantenimiento

Categoría Actividad % Tiempo


Comprensión del sw. y Estudiar las peticiones 18%
de los cambios a Estudiar la documentación 6%
realizar Estudiar el código 23%
Modificación del sw. Modificar el código 19%
Actualizar la documentación 6%
Realización de pruebas Diseñar y realizar pruebas 28%

 Nótese cómo la comprensión del software y de los


cambios supone casi un 50% del coste total de
mantenimiento
Mantenimiento del software 7
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
¿desechar el sw. y reescribirlo? No factible:
 gran carga financiera de su desarrollo
 necesidad de amortización
 sw. que sigue funcionando con baja calidad

Mantenimiento del software 8


Dificultades del mantenimiento (II)

 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).

Mantenimiento del software 9


El proceso de mantenimiento en el ciclo
de vida del sw.
 Proceso ppal. de mantenimiento en el std. IEEE
12207.
 Actividades:
 Implementación del proceso.
 Análisis de problemas y modificaciones.
 Implementación de las modificaciones.
 Revisión y aceptación del mantenimiento.
 Migración.
 Retirada del sw.

Mantenimiento del software 10


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.
 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

Mantenimiento del software 11


Ingeniería directa, inversa, reingeniería y
redocumentación
Ingeniería directa (1) Ingeniería directa (2)

Reing.(6) Reing.(8)
Definición Diseño Implementación

Ing. inversa Ing. inversa


(4) (3)
Redocumentación Redocumentación Redocumentación
(5) (7) (8)

Mantenimiento del software


(Piattini et al. 98)
12
Redocumentación (Pressman 98) p.511

a) Si el sistema funciona y la redocumentación


consume muchos recursos, tal vez mejor no
redocumentar.
b) Si es preciso actualizar la documentación, pero
recursos limitados, puede ser útil “documentar
cuando se modifica”. Con el tiempo, se formará una
colección de información interesante.
c) Si el sistema es fundamental para la organización,
redocumentar por completo. Se puede reducir la
documentación al mínimo.

Mantenimiento del software 13


Ingeniería inversa y reingeniería

 Objetivo: métodos para reconstruir el sw.:


 reprogramarlo
 redocumentarlo
 rediseñarlo
 rehacer alguna/s característica/s del producto
 Ingeniería inversa: “el proceso de construir especificaciones
abstractas del código fuente de un sistema heredado, de
manera que estas especificaciones puedan ser utilizadas para
construir una nueva implementación del sistema hacia
delante”

Mantenimiento del software 14


Ingeniería inversa y reingeniería (II)

 Ingeniería inversa: El pto. de partida no es necesariamente el


código fuente (Piattini et al. 96)
 Ingeniería inversa. Beneficios (Piattini et al. 96):
 Reducir la complejidad del sistema.
 Generar vistas alternativas.
 Recuperar la información perdida (cambios que no se documentaron en su
momento).
 Detectar efectos laterales.
 Facilitar la reutilización.
 Reingeniería: “la modificación de un producto sw., o de ciertos
componentes, usando para el análisis del sistema existente técnicas de
ingeniería inversa y, para la etapa de reconstrucción, herramientas de
ingeniería directa”

Mantenimiento del software 15


Ingeniería inversa de procesos
(comprensión de programas)
Tareas necesarias: (Biggerstaff 94) (Weide 95)
(No se realizan secuencialmente.)
1. Identificación y recopilación de los componentes funcionales del
sistema.
 rutinas, variables, constantes, tipos de datos, TAD, objetos, llamadas a
funciones, etc.
2. Asignar significado a los componentes “sustanciales” anteriores.

Mantenimiento del software 16


Identificación y recopilación de los
componentes funcionales
 Muy subjetiva e intuitiva.
 Algunas ideas:
 cada componente suele ocupar un módulo, o bien aparecen
próximos unos a otros.
 las series de componentes funcionales suelen aparecer junto a
muchos comentarios.
 los identificadores de los componentes funcionales suelen constar de
muchos caracteres.
 Algunos problemas:
 sinonimia
 polisemia
 comentarios no actualizados

Mantenimiento del software 17


Asignar valor semántico a los
componentes funcionales
 Se recorren las sentencias del componente, para
confirmar su calidad de componente funcional.
Análisis estático (creación de DFDs...)
Análisis dinámico (ejecución del programa)
 Detectar y registrar bucles infinitos, código
inalcanzable, etc.
 que no se corrigen en esta fase, sólo se documentan
 se corrigen después, en la fase de reingeniería

Mantenimiento del software 18


Ingeniería inversa de ficheros y BDs

Diseño Diseño lógico Diseño físico


conceptual

Estructuras
Esquema Esquema estáticas y
conceptual lógico dinámicas en
soporte físico

Detección de los
Eliminación de los Extracción de la
constructores
Normalización constructores estructura:
propios del
conceptual propios recuperación de
sistema real
(desoptimización) las tablas y reglas
(destraducción)
de integridad
Conceptualización de las estructuras
Mantenimiento del software 19
Ingeniería inversa de ficheros -
Extracción de la estructura
 Considerar cada fichero como una posible tabla, y cada campo del
fichero como un campo de la tabla.
 Determinar un conjunto de campos que puedan ser clave primaria de
sus respectivos ficheros (buscar ID, #).
 Determinar las claves ajenas.
 Determinar los ficheros que no pueden tratarse como tablas (aquellos
sin claves).
 Buscar generalizaciones:
 grandes grupos de claves ajenas.
 valores repetidos de atributos en una tabla.
 datos con valores mutuamente excluyentes.
 Encontrar asociaciones.

(Premernali et al. 94)


Mantenimiento del software 20
Ingeniería inversa y reingeniería de
interfaces de usuario
Adaptar aplicaciones a las necesidades de los
usuarios, respetando su lógica anterior:
1. Recopilación de documentación, manuales de
usuario, etc.
2. Entrevistas a distintos grupos de usuarios, y
observación de sus métodos de trabajo.
3. Uso del sistema por el propio equipo de
mantenimiento. Se puede modificar el código para, p.ej.,
introducir contadores.
4. Reconstrucción y redocumentación de la interfaz.

Mantenimiento del software 21


Reconstrucción de programas

 A partir de los productos de ingeniería inversa se construye el


programa mediante técnicas de ingeniería directa.
 Reestructuración de datos
 eliminar sinonimias y polisemias
 Reestructuración de procesos
 transformar el código no estructurado en código
estructurado
 en un diagrama de flujo estructurado, es posible hacer
transformaciones sucesivas hasta que su complejidad
ciclomática se iguale a 1 (Piattini et al. 96) p.547

Mantenimiento del software 22


Mantenibilidad o facilidad de mantenimiento
del sw.
 Medida cualitativa de la facilidad de comprender,
corregir, adaptar y/o mejorar el sw. (Pressman 98)
 “Facilidad con que un sistema o componente sw.
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 sw.  métricas de
mantenibilidad = métricas de calidad
 También ligada a la complejidad del sw.

Mantenimiento del software 23


Métricas para mantenibilidad (Mc Call)

CRITERIOS MÉTRICAS
Nº ciclomático V(G)
Nº de sentencias
Frecuencia de operandos

SIMPLICIDAD Longitud de programa


Nivel de módulo
CONCISIÓN
Frecuencia de comentarios
Mantenibilidad AUTODESCRIPTIVO
Longitud de programa
LEGIBILIDAD Niveles anidados (MAX)
FACILIDAD DE PRUEBA Nº de sentencias

V(G)
Niveles anidados (MAX)

Mantenimiento del software 24

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy