Sie sind auf Seite 1von 24

Ingeniera del Software

Profesor: Juan Antonio Lpez Quesada. Facultad de Informtica. http://dis.um.es/~lopezquesada

Tema 11. 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. Mtodos de mantenimiento del software
Redocumentacin Ingeniera inversa y reingeniera Ingeniera inversa de procesos (comprensin de programas)
Identificacin y recopilacin de los componentes funcionales Asignar valor semntico a los componentes funcionales

Ingeniera inversa de ficheros y BDs Ingeniera inversa y reingeniera de interfaces de usuario Reconstruccin de programas

Mantenibilidad o facilidad de mantenimiento del sw. Mtricas para mantenibilidad


Mantenimiento del software 2

Mantenimiento del software. Bibliografa


(Piattini et al. 98) M. Piattini, J. Villalba, F. Ruiz, I. Fernndez, M. Polo, T. Bastanchury, M.A. Martnez. Mantenimiento del software. Conceptos, mtodos, herramientas y outsourcing. Ed. Ra-Ma. 1998. (Piattini et al. 96) M. Piattini, Jos A. Calvo-Manzano, J. Cervera, L. Fernndez. Anlisis y diseo detallado de Aplicaciones Informticas de Gestin. Ed. Ra-Ma. 1996. Captulo 16.

Mantenimiento del software

Mantenimiento del software


El mantenimiento del sw. es la modificacin de un producto sw. despus 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 ms 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).
Barrera del En algunas empresas coste del 95% mantenimiento

(no se pueden desarrollar nuevos productos sw.)


Mantenimiento del software

Costes del mantenimiento


Oportunidades de desarrollo que se pierden. Insatisfaccin del cliente cuando no se puede atender en un tiempo aceptable una peticin de reparacin 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 Adaptativo Perfectivo
Mantenimiento de ampliacin Mantenimiento de eficiencia

Preventivo
Mantenimiento para la reutilizacin
Coste de mantenimiento
Preventivo 5% Correctivo 17% Adaptativo 18%
6

Perfectivo 60%

Mantenimiento del software

Coste de las actividades de mantenimiento


Categora Comprensin del sw. y de los cambios a realizar Modificacin del sw. Actividad % Tiempo Estudiar las peticiones 18% Estudiar la documentacin 6% Estudiar el cdigo 23% Modificar el cdigo 19% Actualizar la documentacin 6% Realizacin de pruebas Disear y realizar pruebas 28%

Ntese cmo la comprensin 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 tamao y espacio de almacenamiento herramientas desfasadas, sin mtodos una o varias migraciones a nuevas plataformas mltiples modificaciones para adaptarlos o mejorarlos desarrolladores no localizables

desechar el sw. y reescribirlo? No factible:


sw. que sigue funcionando con baja calidad
gran carga financiera de su desarrollo necesidad de amortizacin

Mantenimiento del software

Dificultades del mantenimiento (II)


Ausencia de mtodos (se realiza de forma ad hoc). Cambio tras cambio, los programas tienden a ser menos estructurados. Ausencia de documentacin. No captura adecuada de requisitos mayores esfuerzos de mantenimiento futuros. No existen registros de pruebas imposibilidad de pruebas de regresin. Problemas de gestin (considerado trabajo poco creativo,
asignado a las personas con menos experiencia).

Mantenimiento del software

El proceso de mantenimiento en el ciclo de vida del sw.


Proceso ppal. de mantenimiento en el std. IEEE 12207. Actividades:
Implementacin del proceso. Anlisis de problemas y modificaciones. Implementacin de las modificaciones. Revisin y aceptacin del mantenimiento. Migracin. Retirada del sw.
Mantenimiento del software 10

Mtodos de mantenimiento del software


Reingeniera: examen y modificacin del sistema para
reconstruirlo en una nueva forma.

Ingeniera inversa: anlisis 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 abstraccin ms elevado.

Reestructuracin del software: consiste en la modificacin del


software para hacerlo ms fcil de entender y cambiar o menos susceptible de incluir errores en cambios posteriores. transformacin de programas

Transformacin de programas: tcnica formal de

Mantenimiento del software

11

Ingeniera directa, inversa, reingeniera y redocumentacin


Ingeniera directa (1)

Ingeniera directa (2)

Reing.(6) Definicin Diseo

Reing.(8) Implementacin

Ing. inversa Ing. inversa (4) (3) Redocumentacin Redocumentacin Redocumentacin (5) (7) (8)
Mantenimiento del software

(Piattini et al. 98)


12

Redocumentacin

(Pressman 98) p.511

a) Si el sistema funciona y la redocumentacin consume muchos recursos, tal vez mejor no redocumentar. b) Si es preciso actualizar la documentacin, pero recursos limitados, puede ser til documentar cuando se modifica. Con el tiempo, se formar una coleccin de informacin interesante. c) Si el sistema es fundamental para la organizacin, redocumentar por completo. Se puede reducir la documentacin al mnimo.
Mantenimiento del software 13

Ingeniera inversa y reingeniera


Objetivo: mtodos para reconstruir el sw.:
reprogramarlo redocumentarlo redisearlo rehacer alguna/s caracterstica/s del producto

Ingeniera inversa: el proceso de construir

especificaciones abstractas del cdigo fuente de un sistema heredado, de manera que estas especificaciones puedan ser utilizadas para construir una nueva implementacin del sistema hacia delante
Mantenimiento del software 14

Ingeniera inversa y reingeniera (II)


Ingeniera inversa: El pto. de partida no es

necesariamente el cdigo fuente (Piattini et al. 96)


(Piattini et al. 96):

Ingeniera inversa. Beneficios

Reducir la complejidad del sistema. Generar vistas alternativas. Recuperar la informacin perdida (cambios que no se documentaron en

su momento). Detectar efectos laterales. Facilitar la reutilizacin.

Reingeniera: la modificacin de un producto sw., o de ciertos

componentes, usando para el anlisis del sistema existente tcnicas de ingeniera inversa y, para la etapa de reconstruccin, herramientas de ingeniera directa
Mantenimiento del software 15

Ingeniera inversa de procesos (comprensin de programas)


Tareas necesarias:
(Biggerstaff 94) (Weide 95)

(No se realizan secuencialmente.)

1. Identificacin y recopilacin 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

Identificacin y recopilacin de los componentes funcionales


Muy subjetiva e intuitiva. Algunas ideas:
cada componente suele ocupar un mdulo, o bien aparecen prximos 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 semntico a los componentes funcionales


Se recorren las sentencias del componente, para confirmar su calidad de componente funcional.
Anlisis esttico (creacin de DFDs...) Anlisis dinmico (ejecucin del programa)

Detectar y registrar bucles infinitos, cdigo inalcanzable, etc.


que no se corrigen en esta fase, slo se documentan se corrigen despus, en la fase de reingeniera

Mantenimiento del software

18

Ingeniera inversa de ficheros y BDs


Diseo conceptual Diseo lgico Diseo fsico

Esquema conceptual

Esquema lgico

Estructuras estticas y dinmicas en soporte fsico

Normalizacin conceptual

Eliminacin de los constructores propios (desoptimizacin)

Deteccin de los constructores propios del sistema real (destraduccin)

Conceptualizacin de las estructuras


Mantenimiento del software

Extraccin de la estructura: recuperacin de las tablas y reglas de integridad


19

Ingeniera inversa de ficheros Extraccin 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.

Mantenimiento del software

20 (Premernali et al. 94)

Ingeniera inversa y reingeniera de interfaces de usuario


Adaptar aplicaciones a las necesidades de los usuarios, respetando su lgica anterior: 1. Recopilacin de documentacin, manuales de usuario, etc. 2. Entrevistas a distintos grupos de usuarios, y observacin de sus mtodos de trabajo. 3. Uso del sistema por el propio equipo de mantenimiento. Se puede modificar el cdigo para, p.ej.,

4. Reconstruccin y redocumentacin de la interfaz.


Mantenimiento del software 21

introducir contadores.

Reconstruccin de programas
A partir de los productos de ingeniera inversa se construye el programa mediante tcnicas de ingeniera directa.

Reestructuracin de datos
eliminar sinonimias y polisemias

Reestructuracin de procesos
transformar el cdigo no estructurado en cdigo estructurado en un diagrama de flujo estructurado, es posible
96) p.547

hacer transformaciones sucesivas hasta que su complejidad ciclomtica se iguale a 1 (Piattini et al.
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. mtricas de mantenibilidad = mtricas de calidad Tambin ligada a la complejidad del sw.
Mantenimiento del software 23

Mtricas para mantenibilidad (Mc Call)


CRITERIOS MTRICAS
N ciclomtico V(G) N de sentencias Frecuencia de operandos

SIMPLICIDAD

CONCISIN

Longitud de programa Nivel de mdulo Frecuencia de comentarios Longitud de programa Niveles anidados (MAX) N de sentencias V(G) Niveles anidados (MAX)

Mantenibilidad

AUTODESCRIPTIVO LEGIBILIDAD FACILIDAD DE PRUEBA

Mantenimiento del software

24

Das könnte Ihnen auch gefallen