Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther...

21
Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández

Transcript of Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther...

Page 1: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

Herramientas CASE para el mantenimiento del Software

Herramientas CASE – 4GL2007 / 2008

Esther Peloche PachecoJavier Álvarez Mateos

Oscar Román Fernández

Page 2: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

ÍNDICE

• Introducción a Herramientas CASE.

• Mantenimiento del SW.

• Métodos de mantenimiento.

• Algunas herramientas para el mantenimiento de SW.

• Caso práctico.

Herramientas CASE para el mantenimiento de software

Page 3: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

INTRODUCCIÓN - HERRAMIENTAS CASE

• El conjunto de metodologías y herramientas que dan un soporte automatizado a la ingeniería del software en todas o algunas de las etapas del desarrollo del software.

Cuando se hace la planificación de una aplicación, en la primera etapa del ciclo de vida, se puede escoger una herramienta CASE ( Computer-Aided Software Engineering ) que permita llevar a cabo el resto de tareas del modo más eficiente y efectivo posible.

Herramientas CASE para el mantenimiento de software

Page 4: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

MANTENIMIENTO DEL SW

• ¿Qué es?• Ubicación dentro del ciclo de vida.• Tipos de mantenimiento.• Coste de las actividades de mantenimiento.• Dificultades del mantenimiento.

Herramientas CASE para el mantenimiento de software

Page 5: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

1. IEEE 1219: “modificación de un producto software después de haber sido entregado [a los usuarios o clientes] con el fin de corregir los defectos, mejorar el rendimiento u otros atributos, o adaptarlo a un cambio de entorno”.

2. Estándar ISO 12207: “el proceso de mantenimiento contiene las actividades y tareas realizadas por el mantenedor. Este proceso se activa cuando el producto software sufre modificaciones en el código y la documentación asociada, debido a un problema o a la necesidad de mejora o adaptación. El objetivo es modificar el producto software existente preservando su integridad. Este proceso incluye la migración y retirada del producto software. El proceso termina con la retirada del producto software”. Asumiremos que el mantenedor es la organización que proporciona el servicio de mantenimiento.

MANTENIMIENTO DEL SW - ¿Qué es?

Herramientas CASE para el mantenimiento de software

Page 6: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

Ubicación dentro del ciclo de vida• Con el comienzo del mantenimiento termina el ciclo de

desarrollo, y éste se prolonga durante el resto del ciclo de vida (hasta la retirada del producto).

Definición de

requisitos

Diseño

Codificación y

pruebas unitarias

Integración y

pruebas

Mantenimiento

Herramientas CASE para el mantenimiento de software

Page 7: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

Tipos de mantenimiento1. Correctivo: cambios precisos para corregir errores del

software.

2. Adaptativo: modificaciones para adaptar el software a los entornos en los que el sistema opera.

3. Perfectivo: mejorar o añadir nuevas funcionalidades debido a un cambio en los requisitos.

4. Preventivo o evolutivo: mejora la calidad del software sin modificar los requisitos fundamentales.

Herramientas CASE para el mantenimiento de software

Page 8: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

Coste de las actividades de mantenimiento

• Parte más costosa del ciclo de vida (60%-90% del coste total).

• El coste de reparar un defecto aumenta según avanza el ciclo de vida.

Coste del mantenimiento

(% tiempo)

Estudiar las peticiones

18%Estudiar la

documentación 6%

Estudiar el código 23%

Modificar el código 19%

Actualizar la documentac

ión 6%

Diseñar y realizar pruebas

28%

Herramientas CASE para el mantenimiento de software

Page 9: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

Dificultades del mantenimiento• Gran parte del software actual es antiguo y está limitado por

restricciones de tamaño y espacio de almacenamiento

• Problemas por migraciones a nuevas plataformas.

• Programas menos estructurados por múltiples cambios, de mejora o adaptación.

• Los sistemas de origen poseen una escasa calidad debido a:

– Estructuras de datos con un diseño pobre.– Mala codificación.– Lógica defectuosa.– Documentación escasa o errónea.

Herramientas CASE para el mantenimiento de software

Page 10: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

Métodos de mantenimiento del SW: Reingeniería• ¿Qué es?

La reingeniería es la modificación de un producto software, o de ciertos componentes usando el análisis del sistema existente, técnicas de Ingeniería Inversa y, para la etapa de reconstrucción, herramientas de Ingeniería Directa, de tal manera que se oriente este cambio hacia mayores niveles de facilidad en cuanto a mantenimiento, reutilización, comprensión o evolución.

• ¿Para qué lo uso?

“El objetivo de las ventajas existentes de la reingeniería es el ser más eficiente que desarrollar totalmente el sistema” (Carnegie, 1995).

– Mejorar la facilidad de mantenimiento.

– Facilitar la migración de un lenguaje a otro o de un entorno de operación a otro.– Aumentar la esperanza de vida.

– Capturar el comportamiento en repositorios gestionados por herramientas CASE .

– Incrementar la productividad del mantenimiento.

Herramientas CASE para el mantenimiento de software

Page 11: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

Reingeniería

• Relaciones entre los términos asociados con la reingeniería:

Herramientas CASE para el mantenimiento de software

Page 12: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

Reingeniería, soluciones técnicas para el mantenimiento:

• La ingeniería directa: desarrollo de software tradicional.

• Reestructuración: Cambio de representación de un producto software, pero dentro del mismo nivel de abstracción manteniendo el comportamiento externo del sistema (funcionalidad y semántica) para hacerlo más fácil de entender y cambiar o también menos susceptible de incluir errores en cambios posteriores.

• La ingeniería inversa: Es el proceso de análisis de un sistema para identificar sus componentes e interrelaciones y crear representaciones del sistema en otra forma o a un nivel más alto de abstracción.

• Redocumentación: es la creación o revisión de una representación equivalente semánticamente dentro del mismo nivel de abstracción relativo.

Herramientas CASE para el mantenimiento de software

Page 13: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

Ingeniería Inversa• Objetivos:

– Detectar efectos laterales no deseados

– Facilitar la reutilización del código detectando los componentes candidatos a reutilizar en futuros mantenimientos.

• Algunas áreas en la ingeniería inversa son:

– Recuperación de diseño: Añade conocimientos sobre el dominio de aplicación del sistema, información externa, y procesos deductivos para identificar abstracciones significativas a un mayor nivel.

– Rediseño: Consiste en consolidar y modificar los modelos obtenidos, añadiendo nuevas funciones requeridas por los usuarios.

– La remodularización: consiste en cambiar la estructura modular de un sistema siguiendo los principios del diseño estructurado.

– Análisis de la facilidad de mantenimiento: Se centra relativamente en unos pocos módulos del sistema.

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

– Análisis y mediciones: Tecnologías que estudian propiedades de los programas.

Herramientas CASE para el mantenimiento de software

Page 14: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

Métodos de mantenimiento del SW: Reingeniería

Tecnología de la reingeniería

Mejora del Software

Reestructuración, redocumentación, anotaciones, actualización de documentos.Ingeniería para la reutilización, remodularización.Reingeniería de procesos de negocio.Reingeniería de datos.Análisis de facilidad de mantenimiento, análisis económico.

Compresión del SoftwareVisualización.Análisis, mediciones.Ingeniería inversa, recuperación del diseño.

Captura, conservación y extensión del conocimiento sobre el software

Descomposición.Ingeniería inversa y recuperación del diseño.Recuperación de objetos.Compensación de programas.

Herramientas CASE para el mantenimiento de software

Page 15: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

Métodos de mantenimiento del SW: Reingeniería• ¿Por qué es interesante?:

– Reduce los riesgos de la evolución de la organización.

– Ayuda a recuperar las inversiones realizadas en SW.

– Cataliza la automatización del mantenimiento del SW.

• ¿Lo utilizamos?Durante el mantenimiento puede llegar un momento en el que la complejidad del proceso nos haga cuestionarnos la viabilidad de hacer reingeniería, entonces se nos plantea la siguiente pregunta…

¿Reingeniería o desarrollo?

Las aplicaciones que merecen el esfuerzo de la reingeniería son aquellas en la que se producen algunas de las siguientes situaciones:

– Fallos frecuentes, que son difíciles de localizar– Son poco eficientes, pero realizan la función esperada– Dificultades en la integración con otros sistemas– Calidad pobre del software final

Herramientas CASE para el mantenimiento de software

Page 16: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

Métodos de mantenimiento del SW: Reingeniería– Resistencia a introducir cambios– Pocas personas capacitadas para realizar modificaciones– Dificultades para realizar pruebas– El mantenimiento consume muchos recursos– Es necesario incluir nuevos requisitos, pero los básicos se mantienen.

Siempre habrá observar una serie de factores antes hacer reingeniería:

– Los costes de la reingeniería o del nuevo desarrollo, de las operaciones tras la

reingeniería o del nuevo desarrollo.– La duración que el trabajo de reingeniería o del nuevo desarrollo conlleve.– El período de vida del sistema que se va a implementar.

• Alternativas:– Dejar el software como está Cuesta mucho dinero– Comprar la aplicación– Desarrollar de nuevo– Aplicar reingeniería

Solución: realizar un análisis de costes y quedarse con lo que sea más beneficioso.

Herramientas CASE para el mantenimiento de software

Page 17: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

Criterios de selección de las herramientas

• La “Capacidad” o “Habilidad” de la herramienta para realizar la tarea.

• Las “características” de la herramienta• El análisis de los “beneficios / costes”.• El “entorno” o “plataforma” sobre el que corre dicha

herramienta.• El “lenguaje de programación” del código fuente.• “Facilidad de uso” y “familiaridad” con otras herramientas.• La “fácil integración” con otras herramientas• La “credibilidad” y “soporte” que nos dé el vendedor de

dicha herramienta.

Herramientas CASE para el mantenimiento de software

Page 18: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

Tipos de herramientas para el mantenimiento

• Generadores de referencias cruzadas: para localizar fácilmente en qué partes de la aplicación se encuentra un determinado objeto o elemento con el fin de analizar el impacto de un cambio o identificar los módulos afectados por un determinado error.(Rational Requisite Pro).

• Evaluadores del impacto de las modificaciones.• Herramientas de gestión de configuración: aún sin

ser específicas del mantenimiento, también facilitan dicha tarea. Ejemplo. Control de Versiones(CVS, Subversion).

• Herramientas de ingeniería inversa: – Recuperadores de diseño– Redocumentadores– Analizadores de código– Descompiladores(DCC Decompiler,REC,DJ Java Decompiler)

Herramientas CASE para el mantenimiento de software

Page 19: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

Tipos de herramientas para el mantenimiento

• Herramientas para el seguimiento de errores: diseñadas para asistir a las personas involucradas en el desarrollo y uso de sistemas informáticos en el seguimiento de los defectos de software.(Bugzilla)

• Herramientas para el perfeccionamiento del código.– Reformateadores de código fuente: a partir del código fuente

generan una salida con formato y presentación mejorados. – Reestructuradores de código fuente: para estructurar

programas poco o mal estructurados.

Herramientas CASE para el mantenimiento de software

Page 20: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

BIBLIOGRAFÍA

• Diapositivas Tema: Reingeniería (URJC)

• Apuntes: Fundamentos de Ingeniería del SW(URJC)

• J.R Álvarez y M. Arias “Análisis, diseño y mantenimiento del software”(Documentación electrónica UNED 2002)

• J.N. Ros(Universidad de Murcia) “Fundamentos de la ingeniería del software.

• Software Maintenance as Part of the Software Life Cycle(Departement of Computer Science. Tufts University) Prof. Stafford.

Page 21: Herramientas CASE para el mantenimiento del Software Herramientas CASE – 4GL 2007 / 2008 Esther Peloche Pacheco Javier Álvarez Mateos Oscar Román Fernández.

CASO PRÁCTICO

Herramienta de ingeniería inversa.

DESCOMPILADOR

Herramientas CASE para el mantenimiento de software