tema16 mantenimiento software

37
MANTENIMIENTO DEL SOFTWARE 16.010 DISTRIBUCION DEL COSTE DEL CICLO DE VIDA DISTRIBUCION DEL COSTE DEL CICLO DE VIDA 67 % 5 % Mantenimiento Análisis de requisitos Diseño Código Pruebas modulares Pruebas de integración 6 % 7 % 8 % 7 %

Upload: nanti-mantela

Post on 28-Dec-2015

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.010

DISTRIBUCION DEL COSTE DEL CICLO DE VIDADISTRIBUCION DEL COSTE DEL CICLO DE VIDA

67 %

5 %

Mantenimiento

Análisisde requisitos

Diseño

Código

Pruebasmodulares

Pruebasde integración

6 %

7 %8 % 7 %

Page 2: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.020

FACTORESFACTORES

Inexistencia de métodos, técnicas y herramientas que puedanproporcionar una solución global al mantenimiento

La complejidad de los sistemas se incrementa paulatinamentepor la realización de continuas modificaciones

La documentación del sistema es defectuosa o inexistente

Se considera el mantenimiento como una actividad pococreativa, a diferencia del desarrollo

Las actividades del mantenimiento se suelen realizar bajo presión de tiempo

Poca participación del usuario durante el desarrollo del sistema

Page 3: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.030

ACTUACIONES COMUNES PARA MANTENERACTUACIONES COMUNES PARA MANTENERLA OPERATIVIDAD DEL SOFTWARELA OPERATIVIDAD DEL SOFTWARE

Corrección de defectos en el software

Creación de nuevas funcionalidades en el softwarepor nuevos requisitos de usuario

Mejora de la funcionalidad y del rendimiento

Page 4: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.040

TIPOS DE MANTENIMIENTOTIPOS DE MANTENIMIENTO

Mantenimiento perfectivo: conjunto de actividades paramejorar o añadir nuevas funcionalidades requeridas por el usuario Mantenimiento adaptativo: es el conjunto de actividadespara adaptar el sistema a los cambios (hardware o software) en su entorno tecnológico

Mantenimiento correctivo: es el conjunto de actividadesdedicadas a corregir defectos en el hardware o en elsoftware detectados por los usuarios durante la explotacióndel sistemaMantenimiento preventivo: conjunto de actividades parafacilitar el mantenimiento futuro del sistema

Page 5: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.050

TIPOS DE MANTENIMIENTO Y COSTE RELATIVOTIPOS DE MANTENIMIENTO Y COSTE RELATIVO

Perfectivo

Adaptativo

Preventivo

Correctivo 60 %

18 %5 %

17 %

Page 6: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.060

DISTRIBUCION DEL TIEMPO EN TAREAS DISTRIBUCION DEL TIEMPO EN TAREAS DE MANTENIMIENTODE MANTENIMIENTO

19 %6 % 23 %6 %

18 % 28 %

Pruebas

Actualizardocumentación

Estudiardocumentación

Implementarcambio

Estudio delcódigo

Estudiarpeticiones

Page 7: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.070

LA REINGENIERÍA DEL SOFTWARELA REINGENIERÍA DEL SOFTWARE

TECNOLOGÍA DE LA REINGENIERÍA

MEJORA DEL SOFTWARE Reestructuración.Redocumentación, Anotación, actualización de documentación.Ingeniería para reutilización.Remodularización.Reingeniería de procesos de negocio (BPR)Reingeniería de datos.Análisis de facilidad de mantenimiento, análisis económico.

COMPRENSIÓN DEL SOFTWARE VisualizaciónAnálisis, mediciones.Ingeniería inversa, recuperación de diseño.

CAPTURA, CONSERVACIÓN YEXTENSIÓN DELCONOCIMIENTO SOBRE ELSOFTWARE

Descomposición.Ingeniería Inversa y recuperación de diseño.Recuperación de objetos.Comprensión de programas.Transformaciones y bases de conocimiento.

Page 8: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.080

LA IMPORTANCIA DE LA REINGENIERÍA LA IMPORTANCIA DE LA REINGENIERÍA DEL SOFTWAREDEL SOFTWARE

☺ Puede reducir los riesgos evolutivos de una organización

☺ Puede ayudar a las organizaciones a recuperar sus inversiones en software

☺ Puede hacer el software más fácilmente modificable

☺ Amplía las capacidades de las herramientas CASE

☺ Es un catalizador para la automatización del mantenimientodel software

☺ Puede actuar como catalizador para la aplicación de técnicas deinteligencia artificial (IA) para resolver problemas de reingeniería

Page 9: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.090

RELACIONES ENTRE LOS TERMINOS RELACIONES ENTRE LOS TERMINOS ASOCIADOS CON LA REINGENIERIAASOCIADOS CON LA REINGENIERIA

Reestructuración Reestructuración ReestructuraciónRedocumentación

Ingenieríadirecta

Ingenieríadirecta

Ingenieríainversa

Ingenieríainversa

Recuperacióndiseño

Recuperacióndiseño

Reingeniería Reingeniería

DISEÑO IMPLEMENTACIONREQUISITOS

Page 10: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.100

INGENIERIA DIRECTAINGENIERIA DIRECTA

«Corresponde al desarrollo de software tradicional»

REESTRUCTURACIONREESTRUCTURACION

«Es la transformación de una forma de representacióna otra en el mismo nivel de abstracción relativo,mientras se mantenga el comportamiento externo delsistema (funcionalidad y semántica)»

«Es la modificación del software para hacerlo más fácilde entender y cambiar»

Page 11: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.110

INGENIERIA INVERSAINGENIERIA INVERSA

«Es el proceso de análisis de un sistema paraidentificar sus componentes e interrelacionesy crear representaciones del sistema en otraforma o a un nivel más alto de abstracción»

Page 12: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.120

AREAS EN LA INGENIERÍA INVERSAAREAS EN LA INGENIERÍA INVERSA

Redocumentación: «es la creación o revisión de una representación equivalente semánticamentedentro del mismo nivel de abstracción relativo»

Recuperación de diseño: «es un subconjuntode la ingeniería inversa, en el cual, aparte delas observaciones del sistema, se añadenconocimientos sobre su dominio de aplicación,información externa, y procesos deductivos conel objeto de identificar abstracciones significativasa un mayor nivel»

Page 13: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.130

REDISEÑOREDISEÑO

«Consiste en consolidar y modificar los modelosobtenidos, añadiendo nuevas funciones requeridaspor los usuarios»

REINGENIERÍA DEL SOFTWAREREINGENIERÍA DEL SOFTWARE

«Es el examen y alteración de un sistema parareconstruirlo de una nueva forma y la subsiguienteimplementación de esta nueva forma»

Page 14: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.140

OTRAS TECNOLOGIASOTRAS TECNOLOGIAS

La remodularización consiste en cambiar la estructuramodular de un sistema de forma que se obtenga unanueva estructura siguiendo los principios del diseñoestructurado

Análisis de la facilidad de mantenimiento. Normalmentela mayor parte del mantenimiento se centra relativamenteen unos pocos módulos del sistema

Visualización. El proceso más antiguo para la comprensión del software

Análisis y mediciones. Son importantes tecnologías queestudian ciertas propiedades de los programas

Page 15: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.150

PROCESO DE REINGENIERIA DEL SOFTWAREPROCESO DE REINGENIERIA DEL SOFTWARE

Mejorar su facilidad de mantenimiento futuro

Facilitar su migración, que el proceso de traducir un programa de un lenguaje a otro, moverlo de un entorno operativo a otro o actualizar su tecnología

Aumentar su esperanza de vida

Capturar sus componentes en un repositorio que puedeser gestionado por herramientas CASE

Incrementar la productividad de mantenimiento

Page 16: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.160

PASOS DE LA REINGENIERIA DEL SOFTWAREPASOS DE LA REINGENIERIA DEL SOFTWARE

REPOSITORIO

ANÁLISISDE CÓDIGOANÁLISIS

DE CÓDIGO

REESTRUCTURACIÓNREESTRUCTURACIÓN

INGENIERÍAINVERSA

INGENIERÍAINVERSA

INGENIERÍADIRECTA

INGENIERÍADIRECTA

NuevoCódigoNuevoCódigo

Códigoantiguo

Códigoantiguo

PASOS DE LA REINGENIERÍA DEL SOFTWARE

HERRAMIENTA CASE

CONVERSORDE CÓDIGO

Page 17: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.170

ANALISIS DE CÓDIGO FUENTEANALISIS DE CÓDIGO FUENTE

Comprensión

VerificaciónImplantacióndel cambio

47 %

28 %

25 %

Page 18: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.180

ANALISIS DE CÓDIGO FUENTEANALISIS DE CÓDIGO FUENTE

Análisis estático

Consiste en una evaluación que estudia la estructuradel código sin ejercitar o ejecutar dicho código.

Auditoría de código: revisión del código paraidentificar errores de sintaxis y para comprobarel seguimiento de los estándares de codificación

Métricas de producto: permiten obtener un conjuntode métricas sobre distintos atributos del software

Análisis de flujo:identifica el flujo de control y dedatos para determinar dónde están los errores

Page 19: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.190

TIPOS DE MÉTRICAS DE PRODUCTOTIPOS DE MÉTRICAS DE PRODUCTO

PRODUCTO

MEDIDAS DE COMPLEJIDADESTRUCTURAL

DE PROGRAMAS

MEDIDAS DECOMPLEJIDAD TEXTUAL

DE MÓDULOS

MEDIDAS DECOMPLEJIDADESTRUCTURALDE MÓDULOS

Page 20: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.200

ALGUNAS METRICAS DE PRODUCTOALGUNAS METRICAS DE PRODUCTO

Métricas de la complejidad estructural de los programas

Número de caminosAccesibilidad de un móduloFacilidad de prueba de un móduloComplejidad jerárquicaComplejidad estructuralFacilidad de prueba del sistemaEntropía del grafo de llamadasImpureza del grafo de llamadasComplejidad del flujo de información

Métricas de la complejidad estructural de los módulos

Número ciclomático de McCabeDensidad de controlNúmero de nodos pendientesNúmero máximo de gradoNúmero máximo de niveles

Métricas de la complejidad textual de los módulos

Métricas de Halstead

Page 21: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.210

REPRESENTACION DE UN DIAGRAMA DE KIVIATREPRESENTACION DE UN DIAGRAMA DE KIVIAT

Valoresde referencia

Valores dentrodel estándar

Valores fuera del estándar

Valores realesdel módulo

Page 22: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.220

ANALISIS DE CÓDIGO FUENTEANALISIS DE CÓDIGO FUENTE

Análisis dinámico o pruebas

Es un proceso por el que se detectan defectosejecutando el código al comparar los resultadosobtenidos con los esperados

Page 23: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.230

UNA SELECCIÓN DE MÉTRICAS PARA MEDIRUNA SELECCIÓN DE MÉTRICAS PARA MEDIREL FACTOR «FACILIDAD DE MANTENIMIENTO»EL FACTOR «FACILIDAD DE MANTENIMIENTO»

FACTORES

FACILIDADDE

MANTENIMIENTO

CRITERIOS

SIMPLICIDAD

CONCISION

AUTODESCRIPTIVO

LEGIBILIDAD

MÉTRICAS

FACILIDAD DE PRUEBA

Número Ciclomático V(G)

Niveles anidados (MAX)

Frecuencia de comentarios

V(G)

Número de sentenciasFrecuencia de operandos

Longitud de programaNivel de Módulo

Longitud de programaNiveles anidados (MAX)Número de sentencias

Page 24: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.240

EJEMPLO DE DEFINICION DE MÉTRICAS Y SUEJEMPLO DE DEFINICION DE MÉTRICAS Y SUASIGNACION A LOS CRITERIOS DE CALIDADASIGNACION A LOS CRITERIOS DE CALIDAD

Definición de métricas de móduloLongitud de programa : LENGNúmero de sentencias : NSTMFrecuencia comentarios : COMFFrecuencia operandos : OPEFNúmero ciclomático : V(G)Niveles anidados (máx) : NESTNivel de módulo : MLEVSelección de límitesLENG 1 100NSTM 1 50COMF 0.15 1.0OPEF 1.0 3.0V(G) 1 20NEST 0 4MLEV 0.03 1.00Definición de criterios de calidadFACILIDAD DE PRUEBA: V(G), NESTSIMPLICIDAD : V(G), NSTM, OPEFCONCISION : LENG, MLEVLEGIBILIDAD : LENG, NEST, NSTMAUTODESCRIPTIVO : COMF

Page 25: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.250

GRAFICO DE CRITERIOSGRAFICO DE CRITERIOS

CRITERIO CLASELEGIBILIDAD : CRÍTICOSIMPLICIDAD : CRÍTICOCONCISIÓN : ACEPTADOTOLERANCIA : ACEPTADOAUTODESCR. : RECHAZADO

SIMPLICIDAD

CONCISIÓN

TOLERANCIA

LEGIBILIDAD

AUTODESCRIPCIÓN

P_SIZE

T_COM

T_COM

C_D VG

NB_STMT

P_SIZE

INT_CONT

NB_ERROR INT_CONT

Page 26: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.260

REESTRUCTURACIONREESTRUCTURACION

Nivel de análisis: se transforman los modelos de análisisen otros más comprensibles

Nivel de diseño: se transforman unos modelos de diseñoen otros

Nivel de implementación: las representaciones obtenidaspueden enfocarse tanto a datos como a procesos

Page 27: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.270

REESTRUCTURACION DE DATOSREESTRUCTURACION DE DATOS

Un mismo dato puede nombrarse de distintas formasen un sistema (sinonimia).

Un mismo dato puede definirse varias veces de formadiferente en un sistema

Page 28: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.280

VENTAJASVENTAJAS

Mejorar la comprensión de los sistema

Incrementar la productividad del personalencargado del mantenimiento

Mejorar la documentación sobre los datosy forzar estándares sobre su utilización

Preparar el sistema antes de derivar modelosde diseño mediante técnicas de ingeniería inversa

Facilitar la reutilización de los datos para otrasaplicaciones

Page 29: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.290

HERRAMIENTA DE REESTRUCTURACIONHERRAMIENTA DE REESTRUCTURACIONDE DATOSDE DATOS

Reestructuradorde datos

• Código fuente• JCL• Módulos• Copias• Descripciones

de datos

• Nombres estándar• Código revisado• Nuevas copias• Referencias cruzadas

REPOSITORIO CASE

ENTRADA SALIDA

Page 30: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.300

REESTRUCTURACION DE PROCESOSREESTRUCTURACION DE PROCESOS

SECUENCIA

SELECCION

REPETICION while

repeat

if case

Page 31: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.310

CONSTRUCCIONES NO PERMITIDAS CONSTRUCCIONES NO PERMITIDAS EN UN PROGRAMA ESTRUCTURADOEN UN PROGRAMA ESTRUCTURADO

a) b) c) d)

Page 32: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.320

PROCESO NORMALMENTE EFECTUADO POR LASPROCESO NORMALMENTE EFECTUADO POR LASHERRAMIENTAS DE REESTRUCTURACION DE LAHERRAMIENTAS DE REESTRUCTURACION DE LA

LOGICA DEL PROGRAMALOGICA DEL PROGRAMA

Programa

Diagramade flujo

Diagramareestructurado

Programareestructurado

Funcionalmenteequivalente

Page 33: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.330

UN PROGRAMA ES ESTRUCTURADO SI UN PROGRAMA ES ESTRUCTURADO SI LA COMPLEJIDAD CICLOMATICA LA COMPLEJIDAD CICLOMATICA

ES REDUCIBLE A UNOES REDUCIBLE A UNOV(G) reducible a 1

a

ab

bc

c

Page 34: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.340

BENEFICIOS DE LA REESTRUCTURACION BENEFICIOS DE LA REESTRUCTURACION DE CODIGO DE CODIGO

Reducciónesfuerzo de mantenimiento

100%

50%

0 %

44 %

33%

44 %

1987Software

Maintenance Conference

1986Mellon Bank

1988U.S Defense

LogisticsAgency

Page 35: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.360

INGENIERÍA INVERSAINGENIERÍA INVERSA

Detectar efectos laterales: los cambios sobre unsistema pueden generar efectos laterales no deseados

Facilitar la reutilización: mediante las técnicas deingeniería inversa podemos detectar los componentescandidatos a reutilizar de sistemas existentes

OBJETIVOSOBJETIVOS

Page 36: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.370

INGENIERIA INVERSA DE DATOSINGENIERIA INVERSA DE DATOS

Código Fuente

Diccionario de datos

LDD

INGENIERÍAINVERSA

DE DATOS

INGENIERÍAINVERSA

DE DATOS

REPOSITORIO CASE

DATOS DEL SISTEMAEspecificación dedatos a nivel:

• CONCEPTUAL• LÓGICO• FÍSICO

Page 37: Tema16 Mantenimiento Software

MANTENIMIENTO DEL SOFTWARE16.380

INGENIERIA INVERSA DE PROCESOSINGENIERIA INVERSA DE PROCESOS

Modelos a nivel de análisis: como diagramas de flujode datos (DFD) y sus correspondientes descripcionesde proceso y el diccionario de datos

Modelos a nivel de diseño: como los diagramas deestructuras, que representa la jerarquía de llamadasa los módulos

Modelos de interfaz de usuario: jerarquías de menúsy pantallas