Ingenieria de Sofware

download Ingenieria de Sofware

of 24

Transcript of Ingenieria de Sofware

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 mantenibilidadMantenimiento 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

3

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

4

Costes del mantenimientoOportunidades 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 mantenimientoCorrectivo Adaptativo PerfectivoMantenimiento de ampliacin Mantenimiento de eficiencia

Preventivo Mantenimiento para la reutilizacinCoste de mantenimientoPreventivo 5% Correctivo 17% Adaptativo 18%6

Perfectivo 60%

Mantenimiento del software

Coste de las actividades de mantenimientoCategora 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 mantenimientoMantenimiento del software 7

Dificultades del mantenimientoAplicaciones 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 calidadgran carga financiera de su desarrollo necesidad de amortizacin

Mantenimiento del software

8

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

9

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 parareconstruirlo en una nueva forma.

Ingeniera inversa: anlisis de un sistema para identificar suscomponentes 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 delsoftware 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 redocumentacinIngeniera 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 reingenieraObjetivo: 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 delanteMantenimiento 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 directaMantenimiento 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 funcionalesMuy 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 actualizadosMantenimiento del software 17

Asignar valor semntico a los componentes funcionalesSe 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 BDsDiseo 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 estructurasMantenimiento del software

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

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 usuarioAdaptar 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 datoseliminar sinonimias y polisemias

Reestructuracin de procesostransformar el cdigo no estructurado en cdigo estructurado en un diagrama de flujo estructurado, es posible96) 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 MTRICASN 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