• No se han encontrado resultados

Evolución y Mantenimiento Software

N/A
N/A
Protected

Academic year: 2022

Share "Evolución y Mantenimiento Software "

Copied!
16
0
0

Texto completo

(1)

Master Oficial

en Sistemas Telemáticos e Informáticos

TEMA I

Evolución y Mantenimiento Software

1

2

OBJETIVOS

URJC – Master en Sistemas Telemáticos e Informáticos

9 Describir los problemas del Mantenimiento y Evolución del Software

9 Concepto y Leyes de Evolución del Software 9 Tipos de Mantenimiento Software

9 Reingeniería y Mantenimiento 9 Caso teórico-práctico

Tema 1: Evolución y Mantenimiento Software

‰ Dificultad para mantener los programas

‰ Dificultad para que el software evolucione

‰ Cambios frecuentes en los requisitos

‰ Diseño pobre / rígido

‰ Problemas de obsolescencia

‰ Cambios tecnológicos

Problemas del Mantenimiento y Evolución del Software

(2)

4

El concepto de Evolución de Softwareimplica un cambio continuo desde un estado menor, más simple o peor a uno superior o mejor

‰ Mantener operativo al sistema

‰ Mantener contentos a los usuarios

‰ Maximizar la inversión y reducir costes

‰ Alargar la vida del software

‰ Adaptarlo a nuevos cambios o requisitos

URJC – Master en Sistemas Telemáticos e Informáticos

5 Leyes de Lehman

1ª Ley: Un programa grande que es utilizado se somete a un cambio persistente o se convierte en menos útil progresivamente.

El proceso de cambio continua hasta que se juzga como más rentable reemplazar el sistema por una nueva versión.

2ª Ley: Como un programa grande cambia de forma continua, su complejidad la cual refleja una estructura deteriorándose, se incrementa a menos se realice un trabajo para mantenerla o reducirla.

URJC – Master en Sistemas Telemáticos e Informáticos

1.1 Concepto y leyes de la Evolución de Software

Tema 1: Evolución y Mantenimiento Software

Leyes de Lehman

3ª Ley: Las medidas de un proyecto global y atributos del sistema se auto regulan cíclicamente con tendencias e invariantes estadísticamente determinables.

4ª Ley: El ratio de actividad global en un gran proyecto de programación es invariante.

5ª Ley: En una evolución fiable y planificada, un gran programa sometido a un cambio debe estar disponible para una ejecución regular del usuario en el máximo intervalo determinado por su crecimiento neto. Es decir, el sistema desarrolla un promedio característico de crecimiento seguro, que de ser excedido, causa problemas

1.1 Concepto y leyes de la Evolución de Software

Tema 1: Evolución y Mantenimiento Software

(3)

7 Ley de Pareto

La evolución o mantenimiento del software consume un 80 % del presupuesto, mientras que el desarrollo es el 20%

restante.

El 20 % de el 80 % de

Módulos

Errores Mejoras Herramientas

Consumen Contribuyen Consumen

Recursos Errores Tiempo de ejecución

Consumen Consumen Experiencia

Costes de reparación Costes de mantenimiento adaptativo Uso de herramientas

URJC – Master en Sistemas Telemáticos e Informáticos

1.1 Concepto y leyes de la Evolución de Software

Tema 1: Evolución y Mantenimiento Software

8 Construcción

Mantenimiento

Evolución

URJC – Master en Sistemas Telemáticos e Informáticos Esfuerzo del mantenimiento en el ciclo de vida

1.1 Concepto y leyes de la Evolución de Software

Tema 1: Evolución y Mantenimiento Software

Windows 3.1

Diferencia entre mantenimiento y evolución

Windows 2000

Windows NT Windows 2000

Server Windows NT

Server Windows Me

Windows XP

Windows Vista

EVOLUCIÓN (resultado de operaciones de mantenimiento)

MANTENIMIENTO

(tareas, proceso, técnicas, herramientas)

1.1 Concepto y leyes de la Evolución de Software

Tema 1: Evolución y Mantenimiento Software

(4)

10 Gestión de

Cambios Análisis de

Impacto Plan de versión del sistema

Adaptativo

Correctivo

Perfectivo Código Tests Versión del Sistema

Preventivo

URJC – Master en Sistemas Telemáticos e Informáticos

11 Los procesos de gestión y administración de cambiosson clave para la evolución y creación del sistema. De esta manera es posible controlar las distintas versiones y cambios de un sistema durante su ciclo de vida.

Las actividades principales en la gestión de cambiosson:

‰ Introducir las peticiones de cambios

‰ Registrar dichas peticiones y proporcionar informes sobre el estatus de las peticiones

‰ Proporcionar un registro de auditorias de los cambios

‰ Proporcionar entrada a la administración del proyecto

URJC – Master en Sistemas Telemáticos e Informáticos

1.2 Tipos de Mantenimiento y Proceso

Tema 1: Evolución y Mantenimiento Software

El análisis de impactodetermina el ámbito de los cambios requeridos como base para su implementación.

Las actividades principales del análisis de impactoson:

‰ Evaluar las peticiones de cambios 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 petición realizada.

1.2 Tipos de Mantenimiento y Proceso

Tema 1: Evolución y Mantenimiento Software

(5)

13 Planear la versión del sistemaimplica determinar el contenido y tiempo de las versiones del sistema.

Sus actividades incluyen:

‰ Ordenar y seleccionar las peticiones de cambios para la próxima versión

‰ Procesar los cambios y organizar el trabajo

‰ Preparar un documento sobre el plan de la versión del sistema

‰ Actualizar las peticiones de cambios aprobadas

URJC – Master en Sistemas Telemáticos e Informáticos

1.2 Tipos de Mantenimiento y Proceso

Tema 1: Evolución y Mantenimiento Software

14 Los cambios en el diseñoconsisten en revisar el diseño lógico (nivel de sistema) y físico (nivel de programa) para los cambios aprobados.

Sus principales actividades son:

‰ Analizar los cambios aprobados y revisar la estructura del programa

‰ Revisar o desarrollar los diseños lógicos y físicos

‰ Diseñar los cambios de hardware si fueran necesarios

‰ Actualizar los documentos del sistema y del programa

‰ Restaurar los documentos bajo control del sistema de gestión de cambios

‰ Actualizar las peticiones de cambios para reflejarlos en los documentos

URJC – Master en Sistemas Telemáticos e Informáticos

1.2 Tipos de Mantenimiento y Proceso

Tema 1: Evolución y Mantenimiento Software

La codificación consiste en cambiar el software con el fin de reflejar los cambios aprobados y representados en el diseño.

Esta tarea implica:

‰ 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 peticiones de cambios de los módulos modificados

1.2 Tipos de Mantenimiento y Proceso

Tema 1: Evolución y Mantenimiento Software

(6)

16 Las pruebas o testsasegurar 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

URJC – Master en Sistemas Telemáticos e Informáticos

17 El objetivo de la versión del sistemaes 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

URJC – Master en Sistemas Telemáticos e Informáticos

1.2 Tipos de Mantenimiento y Proceso

Tema 1: Evolución y Mantenimiento Software

Un proceso demantenimientocomienza cuando existe una petición de cambio a propuesta de un usuario.

Existen 4 tipos de mantenimiento principales, que son:

1. Mantenimiento CORRECTIVO 2. Mantenimiento PERFECTIVO 3. Mantenimiento ADAPTATIVO 4. Mantenimiento PREVENTIVO 1.2 Tipos de Mantenimiento y Proceso

Tema 1: Evolución y Mantenimiento Software

(7)

19 Mantenimiento CORRECTIVO: Se define como aquel proceso orientado a la reparación de defectos existentes en un sistema software.

Suele ser necesario en alguna de las siguientes ocasiones:

‰ Cuando el programa falla o aborta.

‰ Un programa produce un resultado que no es acorde con los requisitos.

‰ Los diseños y requisitos no están acordes con el software que los soporta.

‰ La documentación de usuario lleva a conclusiones erróneas al propio usuario hacia actividades que provoquen resultados incorrectos o fallos en el sistema.

URJC – Master en Sistemas Telemáticos e Informáticos

1.2 Tipos de Mantenimiento y Proceso

Tema 1: Evolución y Mantenimiento Software

20 La reparación de errores en el mantenimiento correctivotiene dos problemas:

1. Reparar un defecto tiene una probabilidad de introducir otro defecto.

2. Incrementa las operaciones de testeo.

Existen dos tipos básicos de mantenimiento correctivo:

1. Reparaciones de emergencia: ejecutadas en cortos periodos de 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.

URJC – Master en Sistemas Telemáticos e Informáticos

1.2 Tipos de Mantenimiento y Proceso

Tema 1: Evolución y Mantenimiento Software

Mantenimiento ADAPTATIVO: se define como el proceso para mejorar la funcionalidad del software, hardware y su documentación. Sus pasos son:

1.2 Tipos de Mantenimiento y Proceso

Tema 1: Evolución y Mantenimiento Software

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.

(8)

22 Mantenimiento PERFECTIVO: es un método tratar de pulir o refinar

la calidad del software y su documentación.

El objetivo principal del mantenimiento perfectivoes mejorar la calidad del software para hacerlo más fácilmente mantenible y reducir el coste e impacto de los cambios de los procesos de mantenimiento.

URJC – Master en Sistemas Telemáticos e Informáticos

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

URJC – Master en Sistemas Telemáticos e Informáticos

1.2 Tipos de Mantenimiento y Proceso

La selección de candidatos al mantenimiento perfectivoutiliza como técnica el Análisis de Pareto, para trata de identificar el 20% de los programas que consumen el 80% del presupuesto y recursos de personal.

Tema 1: Evolución y Mantenimiento Software

‰ Análisis de complejidad: Medir la complejidad de los módulos (Halstead, Complejidad ciclomática)

‰ Análisis de funcionalidad: Medir la funcionalidad de un sistema ayuda a estimar su valor

‰ Ingeniería inversa/recuperación de diseño: Debido a que el código no es acorde con la documentación

‰ Reingeniería por partes (Piecewise reengineering): Para sistemas de vida corta y cambios evolucionarios necesarios

‰ Traslación / reestructuración / modularización: Migración de

1.2 Tipos de Mantenimiento y Proceso

Mantenimiento PREVENTIVO: es el que se ejecuta para prevenir fallos Antes de que éstos ocurran. Por ejemplo, un chequeo de tipos antes de compilar y ejecutar una aplicación. Sus técnicas son:

Tema 1: Evolución y Mantenimiento Software

(9)

25

Ejemplo de evolución de un sistema Linux Tema 1: Evolución del Software y Mantenimiento

URJC – Master en Sistemas Telemáticos e Informáticos

Release Codename Date Num. of packages Distinct versions Dependencies RP RD RP-RD 1.3 Bo 1997-06-02 2088 1402 5111 N/A N/A N/A 2.0 Hamm 1998-07-24 2757 1946 7379 1.32 1.44 0.12 2.1 Slin 1999-03-09 3601 2691 10841 1.31 1.47 0.16 2.2 Potato 2000-08-14 5583 4311 19284 1.55 1.78 0.23 3.0 Woody 2002-07-19 10771 8693 44164 1.93 2.29 0.36 3.1 Sarge 2005-06-05 19300 15305 96981 1.79 2.20 0.40

Numero de paquetes y sus dependencias in versiones estables de Debian.

RP: Ratio entre el numero de paquetes de las ultimas dos versiones RD: Ratio entre el numero de dependencias de las ultimas dos versiones

26

‰ La Reingeniería consiste en la automatización del proceso de mantenimiento software.

‰ La Reingeniería es también el proceso de examinar sistemas de software existentes y/o modificarlos con ayuda de herramientas de forma automática o semi-automática.

‰ Analizar sistemas existentes para entender su diseño y desarrollar estrategias para extraer y reutilizar componentes. Implica la rehabilitación y modernización de los componentes.

URJC – Master en Sistemas Telemáticos e Informáticos

1.3 Concepto y tipos de Reingeniería

Tema 1: Evolución y Mantenimiento Software

‰ Proporcionar asistencia automatizada a las tareas de mantenimiento y evolución del software.

‰ Reducir errores y costes.

‰ Mejorar los procesos de conversión y migración.

‰ Extender el ciclo de vida de las aplicaciones.

‰ Facilitar el entendimiento de los programas.

1.3 Concepto y tipos de Reingeniería

Ventajas de los procesos de Reingeniería Tema 1: Evolución y Mantenimiento Software

(10)

28

‰ Formas de Reingeniería Software.

‰Análisis: proceso de examinar sistemas existentes para entender mejor el sistema y sus componentes.

‰Reestructuración: cambios en la forma del software

(ej: código, re-documentación, re-formateo) pero no su funcionalidad

‰Ingeniería Inversa: analizar software y reconstruir las relaciones entre sus partes.

‰Migración: conversión de software o actualización de tecnología (datos, lenguajes, plataforma)

URJC – Master en Sistemas Telemáticos e Informáticos

29

‰ La Ingeniería Inversa trata de analizar sistemas de software para reconstruir las descripción de alto nivel a partir de las de bajo nivel.

‰ Básicamente consiste en analizar el código para extraer relaciones y el diseño de todo o parte del sistema.

‰ La ingeniería inversa trata de re-documentar el sistema y descubrir información de diseño con el fin de poder entenderlo mejor.

URJC – Master en Sistemas Telemáticos e Informáticos

1.4 Técnicas y Herramientas de I. Inversa I. Directa

Tema 1: Evolución y Mantenimiento Software

Modelo Antiguo

Código Fuente Ingeniería Inversa

(reverse engineering)

Nivel Físico Nivel Lógico (DISEÑO)

Nuevo Modelo Rediseño

Código Modificado Ingeniería hacia

Adelante

(forward engineering)

1.4 Técnicas y Herramientas de I. Inversa I. Directa

Tema 1: Evolución y Mantenimiento Software

(11)

URJC – Master en Sistemas Telemáticos e Informáticos 31

‰ En otras situaciones conviene analizar el código fuente NO para obtener un diseño del sistema, sino para conocer que componentes de un sistema son similares y cuales no.

‰ La identificación de componentes y partes reutilizables de los mismos es un aspecto clave.

‰ Los procesos de análisis estático, análisis dinámico y clustering se utilizan para alcanzar estos objetivos.

Tema 1: Evolución y Mantenimiento Software

1.4 Técnicas y Herramientas de I. Inversa I. Directa

URJC – Master en Sistemas Telemáticos e Informáticos 32

Análisis estático

Análisis dinámico Aplicación en ejecución (logs) Código

fuente

Clustering Diseño Recuperado Componentes y relaciones

Relaciones dinámicas

Clases UC Secuencia

Componentes similares Tema 1: Evolución y Mantenimiento Software

1.4 Técnicas y Herramientas de I. Inversa I. Directa

‰ Constituye una tarea de Ing. Inversa que analiza ficheros de código fuente y trata de determinar su estructura, elementos y relaciones sin ejecutar el código.

‰ Trata de abstraer la lógica de negocio de los datos.

‰ Obtención de relaciones estructurales y partes

funcionales de la aplicación (funciones, rutinas, métodos).

‰ Identificación de partes comunes de código.

Análisis Estático

Tema 1: Evolución y Mantenimiento Software

1.4 Técnicas y Herramientas de I. Inversa I. Directa

(12)

URJC – Master en Sistemas Telemáticos e Informáticos 34

Tareas de Análisis Estático

ANALISIS ESTATICO Código

Fuente

PARSER

EXTRACTOR Recupera información relevante del código fuente

ABSTRACTOR Diagramas

UML

Analizan y reconocen la información relevante.

Puede convertirse a un formato intermedio

Abstrae información y documentos de la información recuperada Formato

intermedio

URJC – Master en Sistemas Telemáticos e Informáticos 35

Análisis Dinámico

‰ Constituye una tarea de Ing. Inversa que analiza la ejecución de un sistema para obtener información de flujo del sistema.

‰ Complementa al análisis estático y a veces lo usa como fuente.

‰ Puede aplicar técnicas de clustering.

Tema 1: Evolución y Mantenimiento Software

1.4 Técnicas y Herramientas de I. Inversa I. Directa

Técnicas de Análisis Dinámico

‰ Para cada fichero fuente en ejecución identificar la siguiente información:

‰ Representar el código de la página por un grafo de flujo del control del fichero (PCFG).

‰ Identificar caminos linealmente independientes (LIP)

‰ Identificar LIPs para cada fichero

‰ Identificar las trazas de los caminos ejecutados o de combinación de caminos

‰ Agrupar ficheros equivalentes en caminos del mismo LIP

Tema 1: Evolución y Mantenimiento Software

1.4 Técnicas y Herramientas de I. Inversa I. Directa

(13)

URJC – Master en Sistemas Telemáticos e Informáticos 37

Técnicas de Análisis Dinámico i 1 2

3 4

5

6 7

f

PCFG 3 LIPs

(a) i, 1,2,4,6,7,f (b) i, 1,2,4,5,4,6,7 (c) I,1,2,3,7,f

Tema 1: Evolución y Mantenimiento Software

1.4 Técnicas y Herramientas de I. Inversa I. Directa

Ejemplo: Seguir los logs o visitas de un Web

URJC – Master en Sistemas Telemáticos e Informáticos 38

Herramientas de Análisis Estático y Dinámico

WEB

‰ ReWeb, F. Ricca y P. Tonella

Analizador de flujo estático con capacidades dinámicas a partir de logs.

‰ WARE (Web Application Reverse Engineering), G. di Lucca et al.

Es básicamente un analizador estático. Obtiene entre otros documentación en forma de diagramas UML (Casos de uso, secuencia y clases).

‰ WANDA (Web ApplicatioN Dynamic Analyzer), G. di Lucca et al.

Complementa a WARE con un análisis dinámico para obtener mayor información.

‰ Vaquista, J. Vanderdonckt

Recupera la arquitectura de aplicaciones Web.

Tema 1: Evolución y Mantenimiento Software

1.4 Técnicas y Herramientas de I. Inversa I. Directa

Clustering

‰ Trata de agrupar partes comunes de código.

‰ Se basa en técnicas de abstracción, generalización y especialización.

‰ Ayuda a reducir el número de ficheros fuente y compactar la funcionalidad del sistema.

‰ Puede facilitar la construcción de componentes reutilizables.

Tema 1: Evolución y Mantenimiento Software

1.4 Técnicas y Herramientas de I. Inversa I. Directa

(14)

URJC – Master en Sistemas Telemáticos e Informáticos 40

Clone Analysis

‰ Trata de agrupar identificar porciones de código duplicadas o similares denominadas “clones” o conglomerados.

‰ Se puede usar para detectar componentes potencialmente reutilizables mediante la identificación de sus partes comunes.

‰ Se suele utilizar una medida de distancia para detectar componentes de código similares (Euclídea, Levenshtein, Frecuencias).

URJC – Master en Sistemas Telemáticos e Informáticos 41

Distancia de Levenshtein

‰ Requiere un alfabeto de símbolos distintos.

Ejemplo para código Web

<td width = “18%”>

<img src =“/master/logo.jpg” width=“92” height=“30”></td>

Secuencia identificada (td, width, img, src, width, height, /td) Tabla del alfabeto

/div /td align div height img src td width

a b c d e f g h i

Secuencia: v = h i f g i e b

Tema 1: Evolución y Mantenimiento Software

1.4 Técnicas y Herramientas de I. Inversa I. Directa

Distancia de Levenshtein

‰ Comparación de secuencias

Ejemplo 1: u = h i d c f g i e a b Ejemplo 2: v = h i f g i e b Distancia D(u,v) = 3

‰ Problemas:

‰ Detección de similaridad engañosa (Ej: secuencias iguales de atributos HTML pero referidas a distintos tags=> secuencias HTML iguales pero con distintas distancias) => similaridad léxica pero no estructural

‰ No detectar similaridades significativas (tags compuestos en los que producen el mismo resultado que tags simples.

Tema 1: Evolución y Mantenimiento Software

1.4 Técnicas y Herramientas de I. Inversa I. Directa

(15)

URJC – Master en Sistemas Telemáticos e Informáticos 43

Herramientas de Ingeniería Inversa y Directa IBM RATIONAL ROSE

‰ I. Inversa: C, C++, Java, CORBA, XML_DTD, Ada

‰ I. Directa: Idénticos lenguajes

‰ Obtención de diagramas UML desde código

‰ Generación de esqueletos de código anotados

‰ Visualizador

‰ Modelado físico de la arquitectura (diagramas de componentes)

‰ Modelado de datos (Oracle)

‰ Integración con Requisite Pro

Tema 1: Evolución y Mantenimiento Software

1.4 Técnicas y Herramientas de I. Inversa I. Directa

URJC – Master en Sistemas Telemáticos e Informáticos 44

Herramientas de Ingeniería Inversa y Directa TELELOGIC TAU

‰ I. Inversa: C, C++, Java, CORBA, XML_DTD, Ada

‰ I. Directa:

‰ Obtención de diagramas UML 2.0 desde código

‰ Comparación gráfica y fusión de modelos UML

‰ Soporte de símbolos gráficos específicos de dominio Tema 1: Evolución y Mantenimiento Software

1.4 Técnicas y Herramientas de I. Inversa I. Directa

Herramientas de Ingeniería Inversa y Directa OTRAS

‰ ARMIN

‰ ReWeb, WARE, WANDA (Dominio Web)

‰ VAQUISTA

‰ TERESA

‰ Altova Umodel (Java, C# ÆUML)

‰ Imagix 4D (C/C++ Æ UML)

‰ Compiladores inversos

‰ Visualizadores (VCG, Dotty, Rigi): No específica de Ing. Inv.

Tema 1: Evolución y Mantenimiento Software

1.4 Técnicas y Herramientas de I. Inversa I. Directa

(16)

URJC – Master en Sistemas Telemáticos e Informáticos 46

9 Todo sistema software evoluciona y debe mantenerse a lo largo de su ciclo de vida.

9 Existencia de diversas técnicas con diferente propósito pero con el mismo objetivo.

9 Importancia del coste de mantenimiento.

9 Necesidad de utilizar herramientas para

disminuir el esfuerzo.

Referencias

Documento similar

Algunos ejemplos fueron el caso de los Temas Transversales relacionados con la Educación Ambiental que comenzaron a aparecer en la cultura escolar con la LOGSE

Las solicitudes de reconocimiento presentadas, en las que se aleguen créditos obtenidos en títulos universitarios oficiales de Máster Universitario o Doctor (Períodos de

Dentro del complejo conjunto de factores que explican el control y la reducción de los problemas de salud y los episodios de enfermedad que afectaban a los más pequeños, destacan

Los equipos GOLD con intercambiador de calor de placas/de batería (PX/CX) y los equipos GOLD de tratamiento del aire de impulsión o del aire de retorno independientes (SD) también se

Biscardi utiliza la concepción germana de la obligatio, aplicando la distinción entre el debitum (“Schuld”) y la responsabilidad (“Haftung”), como instrumento conceptual

Analizando el contenido legislativo de la reforma introducida en el 326 (o menos probablemente del 313) a.C. 28 nos hayamos en situación de valorar sobre el plano h histórico toda

Voy a hablar, así, de una evolución del derecho de aguas tomando como fecha crono- lógica inicial la de la Ley de Aguas de 1866-1879 (2) y llegando hasta los momentos actuales, en

Usted ha adquirido un nuevo vehículo Hyundai; por lo que es importante recordar que para mantener la garantía que ofrece el fabricante, debe realizar todos los