Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software...

62
Tema 08. Mantenimiento de Sistemas So1ware Ingeniería del So1ware II Pablo Sánchez Barreiro DPTO. DE MATEMÁTICAS,ESTADÍSTICA Y COMPUTACIÓN [email protected] Este tema se publica bajo Licencia: CreaOve Commons BY‐NC‐SA 3.0

Transcript of Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software...

Page 1: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tema08.MantenimientodeSistemasSo1ware

IngenieríadelSo1wareII

PabloSánchezBarreiroDPTO.DEMATEMÁTICAS,ESTADÍSTICAY

COMPUTACIÓN

[email protected]

EstetemasepublicabajoLicencia:CreaOveCommonsBY‐NC‐SA3.0

Page 2: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Introduccion Mantenimiento de Sistemas Software

Mantenimiento Software

Análisis y Especificación

de Requisitos

Diseño Arquitectónico

Implementación

Pruebas Diseño Detallado

Despliegue

Mantenimiento

Pablo Sanchez (MATESCO) Mantenimiento Software 2 / 62

Page 3: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Introduccion Importancia Mantenimiento software

Importancia del Mantenimiento Software

Identificado como una de las causas de la crisis del software [7].

Pablo Sanchez (MATESCO) Mantenimiento Software 3 / 62

Page 4: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Introduccion Importancia Mantenimiento software

Mantenimento software vs sistemas clasicos

Permiten pequenas adaptaciones, pero su modificacion es muycostosa.

Suele implicar la construccion de un nuevo sistema.

Pablo Sanchez (MATESCO) Mantenimiento Software 4 / 62

Page 5: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Introduccion Importancia Mantenimiento software

Mantenimento software vs sistemas clasicos

El coste material de un producto software es despreciable.

Un producto software es altamente modificable. Hasta el punto depoder llegar a ser un producto completamente nuevo (ej. Linux).

Pablo Sanchez (MATESCO) Mantenimiento Software 5 / 62

Page 6: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Introduccion Importancia Mantenimiento software

Costes historicos mantenimiento software

Listas de bugs y foros de soporte en productos comerciales .

Actualizaciones de productos comerciales (ej. Windows Update,Acrobat Update)

Pablo Sanchez (MATESCO) Mantenimiento Software 6 / 62

Page 7: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Introduccion Importancia Mantenimiento software

Importancia mantenimiento software

Adaptacion al euro - Efecto 2000.

Pantallas tactiles moviles.

Sistemas de tarificacion telefonıa movil.

Negocios de software libre basados en consultorıa y mantenimiento(ej. openArchitecureWarehttp://www.openarchitectureware.org/).

Actualmente, facilidad de mantenimiento, adaptabilidad y evolucionson las caracterısticas mas importantes de la mayorıa de los sistemassoftware.

Pablo Sanchez (MATESCO) Mantenimiento Software 7 / 62

Page 8: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Introduccion Importancia Mantenimiento software

En Ingenierıa del Software no hay verdades universales

Pablo Sanchez (MATESCO) Mantenimiento Software 8 / 62

Page 9: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Introduccion Objetivos del tema

Este no es el objetivo del tema

Pablo Sanchez (MATESCO) Mantenimiento Software 9 / 62

Page 10: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Introduccion Objetivos del tema

Esto tampoco es el objetivo del tema

Pablo Sanchez (MATESCO) Mantenimiento Software 10 / 62

Page 11: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Introduccion Objetivos del tema

Objetivos del tema

Objetivos

Aprender a analizar, planificar, ejecutar y gestionar acciones demantenimiento software.

Pablo Sanchez (MATESCO) Mantenimiento Software 11 / 62

Page 12: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Mantenimiento Software Definiciones

Definiciones mantenimiento software

Estandar IEEE 1219

La modificacion de un producto software despues de su entrega al cliente ousuario para corregir defectos, para mejorar el rendimiento u otraspropiedades deseables, o para adaptarlo a un cambio de entorno [9].

Estandar ISO/IEC 14764

Conjunto de actividades destinadas a proporcionar soporteeconomicamente rentable para un determinado producto software. Estasactividades se realizan tanto antes de la entrega del producto comodespues de la entrega del mismo. Las actividades previas a la entregaincluyen las actividades destinadas a planificar, anticipar y prepararactividades de mantenimiento posteriores. Las actividades posteriores a laentrega incluyen modificaciones del producto software, formacion yasistencia al usuario [8].

Pablo Sanchez (MATESCO) Mantenimiento Software 12 / 62

Page 13: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Mantenimiento Software Definiciones

Definiciones mantenimiento software

Mantenibilidad (Maintainability)

Capacidad de un producto software de ser modificado. Estasmodificaciones incluyen correcciones, mejoras, o adaptaciones a cambiosen el entorno, los requisitos o las especificaciones funcionales [8].

Efecto domino (ripple effect)

Un determinado cambio en un producto software se dice que genera unefecto domino cuando a consecuencia del cambio debemos realizarcambios adicionales en el sistema.

Estabilidad de un diseno software

Capacidad de resistencia al efecto domino que tendra un sistema softwarederivado de dicho diseno cuando es modificado [13].

Pablo Sanchez (MATESCO) Mantenimiento Software 13 / 62

Page 14: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Mantenimiento Software Definiciones

Definiciones mantenimiento software

Sistema Heredado (Legacy Systems)

Un sistema heredado es un metodo, tecnologıa, computador o aplicacionantiguo que continua en uso porque aun satisface las necesidades de losusuarios, aun existiendo nuevas tecnologıas o metodos mas eficientesdisponibles (ej. aplicaciones COBOL en banca, Amadeus).

Pablo Sanchez (MATESCO) Mantenimiento Software 14 / 62

Page 15: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Mantenimiento Software Tipos de mantenimiento software

Tipos de acciones de mantenimiento software

1 Correctivo: localiza y corrige defectos en un programa tras suentrega (ej. IVA al 15%, agujeros de seguridad). Puede ser urgente ono urgente.

2 Adaptativo: Modificacion para adaptarse a un cambio en el entorno(ej. Euro, pantallas tactiles).

3 Perfectivo: Modificacion para detectar y corregir fallos latentes antesde que se conviertan en carencias [8]. Modificacion para modificar oanadir nuevas funcionalidades [11]. (Ej. firma digital en banca online).

4 Preventivo: Modificacion para detectar y corregir fallos latentesantes de que se conviertan en fallos operacionales [8]. Mejorar laspropiedades del software [11]. (Ej. recodificar para aplicar patrones dediseno).

Pablo Sanchez (MATESCO) Mantenimiento Software 15 / 62

Page 16: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Mantenimiento Software Tipos de mantenimiento software

Tipos de cambios en productos software

1 Anticipado: Un cambio se dice que es anticipado cuando ha sidoprevisto durante el desarrollo del sistema software y se han adoptadodecisiones de diseno que permiten acomodar la variacion (ej. uso deconstantes, patron estrategia, sistema de plugins de Eclipse).

2 No anticipado: Todo aquel que no es anticipado. There is not silverbullet [4].

Pablo Sanchez (MATESCO) Mantenimiento Software 16 / 62

Page 17: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Mantenimiento Software Principales Retos Mantenimiento Software

Principales Retos Mantenimiento Software

1 El efecto iceberg (o el efecto usillos/reforma).2 No es lo mismo producir que mantener:

◮ Diferentes medidas de productividad entre desarrollo ymantenimiento:40 LDC desarrollado por 1 LDC mantenido [11].

Pablo Sanchez (MATESCO) Mantenimiento Software 17 / 62

Page 18: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Mantenimiento Software Principales Retos Mantenimiento Software

Codigo heredado (legacy code)

Desarrollado con tecnologıas y tecnicas “anticuadas”.

No hay documentacion.

Si la hay, esta en notacion Benito & Manolo, que ya no trabajan en laempresa.

Reescribirlo entero no es factible (ej. Amadeus).

El sistema no tiene porque estar bien disenado, programado, ni habersido desarrollado siguiendo un proceso de ingenierıa.

Pablo Sanchez (MATESCO) Mantenimiento Software 18 / 62

Page 19: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Mantenimiento Software Principales Retos Mantenimiento Software

Cambios en sistemas heredados/indebidamentedocumentados

Pablo Sanchez (MATESCO) Mantenimiento Software 19 / 62

Page 20: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Mantenimiento Software Principales Retos Mantenimiento Software

Degradacion calidad producto software

class Bill {

float amountToBill;

float calculateTotalCharge() {

return amountToBill + (amountToBill * (16.0/100.0);

} // calculateTotalCharge()

} //Bill

Pablo Sanchez (MATESCO) Mantenimiento Software 20 / 62

Page 21: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Mantenimiento Software Principales Retos Mantenimiento Software

Degradacion calidad producto software

class Bill {

float amountToBill;

float calculateTotalCharge(int clientType) {

if (clientType == 0) {

return amountToBill + (amountToBill * (16.0/100.0);

} else {

return amountToBill + (amountToBill * (6.0/100.0);

}

} // calculateTotalCharge()

} //Bill

Pablo Sanchez (MATESCO) Mantenimiento Software 21 / 62

Page 22: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Mantenimiento Software Principales Retos Mantenimiento Software

Degradacion calidad producto software

class Bill {

float amountToBill;

float calculateTotalCharge(int clientType, int productType) {

if ((clientType == 0) && (productType == 0)) {

return amountToBill + (amountToBill * (16.0/100.0);

} else if ((clientType == 0) && (productType == 1)) {

return amountToBill + (amountToBill * (4.5/100.0);

} else if ((clientType == 1) && (productType == 0)) {

return amountToBill + (amountToBill * (12.0/100.0);

} else if ((clientType == 1) && (productType == 1)) {

return amountToBill + (amountToBill * (4.5/100.0);

}

} // calculateTotalCharge()

} //Bill

Pablo Sanchez (MATESCO) Mantenimiento Software 22 / 62

Page 23: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Mantenimiento Software Principales Retos Mantenimiento Software

Anadiendo iva al total mensual

class Bill {

float amountToBill;

float calculateTotalCharge(int clientType, int productType) {

float total, iva;

if ((clientType == 0) && (productType == 0)) {

iva = amountToBill * (16.0/100.0);

} else if ((clientType == 0) && (productType == 1)) {

iva = amountToBill * (4.5/100.0);

} else if ((clientType == 1) && (productType == 0)) {

iva = amountToBill * (12.0/100.0);

} else if ((clientType == 1) && (productType == 1)) {

iva = amountToBill * (4.5/100.0);

}

total = amountToBill + iva;

IvaLogger.addIva(iva);

return total;

} // calculateTotalCharge()

} //Bill

Pablo Sanchez (MATESCO) Mantenimiento Software 23 / 62

Page 24: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Mantenimiento Software Principales Retos Mantenimiento Software

Principales Problemas Mantenimiento Sw (Resumen)

1 Efectos domino y efecto iceberg.

2 Cambios ad-hoc, ausencia metodologica del cambio.

3 Ausencia de documentacion adecuada (decisiones de diseno).

4 Degradacion calidad del producto.

Pablo Sanchez (MATESCO) Mantenimiento Software 24 / 62

Page 25: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Mantenimiento Software Principales Retos Mantenimiento Software

Solucion para el mantenimiento software

Establecer procedimientos claramente definidos y estandarizados parael mantenimiento software, que se basen en tecnicas y herramientaspara el mantenimiento claramente definidas y validadas.

Asignarle los recursos adecuados, tanto fısicos y economicos comohumanos,

Usar tecnicas para control de calidad, tanto sobre el producto comosobre el proceso.

Ejemplo: S3M (http://www.s3m.ca/).

Pablo Sanchez (MATESCO) Mantenimiento Software 25 / 62

Page 26: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Metodologıas para el mantenimiento software Organizacion del equipo humano

Organigrama del equipo humano

Equipo de diseño

y desarrollo

Cliente

Atención al

usuario

Gestor de

peticiones

Planificador

Equipo de

Mantenimiento

Gestor de

Mantenimiento

Pablo Sanchez (MATESCO) Mantenimiento Software 26 / 62

Page 27: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Metodologıas para el mantenimiento software Procesos de mantenimiento software

MANTEMA [12]

Mantemaact [ ]

Evaluar,clasificar,

encolar

Encolar

Analizar

Evaluar yclasificar

Implementar

Seleccionarprimera tarea

cola

Atenderdirectamente

Diseñar

ElaborarInforme

Probar

Planificar

Petición de

Mantenimiento

¿tipo?

¿proceder?

¿Severidad?

Mejora

otro

AdaptaciónAlta

Si

Baja

error

No

Pablo Sanchez (MATESCO) Mantenimiento Software 27 / 62

Page 28: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Metodologıas para el mantenimiento software Procesos de mantenimiento software

Lowel Jay Arthur [1]

Proceso de evolucion de un sistema

Petición de

Cambio

Analisis de

Impacto

Planificación

de Versiones

Implementación

de Cambios

Entrega del

Sistema

Reparación de

defectos

Adaptación de

Plataforma

Perfeccionamiento

del Sistema

Proceso de cambios de urgencia

Petición de

Cambio

Analizar código

fuente

Parchear código

fuente

Entregar sistema

parcheado

Pablo Sanchez (MATESCO) Mantenimiento Software 28 / 62

Page 29: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Metodologıas para el mantenimiento software Procesos de mantenimiento software

Gestion de peticion de cambio en Bugzilla

UNCONFIRMED

NEW

ASSIGNED

RESOLVED

VERIFIEDREOPEN

CLOSED

New bug from auser with canconfirmor a product without

UNCONFIRMED state

Bug confirmed orreceives enough votes

Developer takespossession

Ownershipis changed

Developer takespossession

Possible resolutions: FIXED DUPLICATE WONTFIX WORKSFORME INVALID Development is

finished with bug

QA not satisfiedwith solution

QA verifiessolution worked

Bug is closed

Bug is closed

Developer takespossession

Issue isresolved

Bug is reopened

Bug is reopened

Development isfinished with bug

Bug is reopened,was never confirmed

Pablo Sanchez (MATESCO) Mantenimiento Software 29 / 62

Page 30: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Metodologıas para el mantenimiento software Documentacion de cambios software

Plantillas para documentacion cambios software

Tomada de Basili et al [2]

1 Descripcion del cambio.1 Localizacion.2 Subsistemas afectados.3 Modulos afectados.4 Entradas/salidas afectadas.

5 Tamano.6 Lıneas de codigo anadidas, modificadas y

eliminadas.7 Modulos examinados, anadidos, modificados y

eliminados.

8 Tipo del cambio (Correctivo — Perfectivo —

Preventivo — Adaptativo)

2 Descripcion del proceso decambio.

1 Esfuerzo dedicado.2 Experiencia del personal de mantenimiento

3 Tiempo del personal de mantenimientotrabajando en el sistema.

4 Tiempo del personal trabajando en el dominio.

5 Artefactos relacionados con el cambio.

3 Descripcion del problema.1 Descripcion del error.

⋆ Causa y origen del error.

⋆ Momento del proceso en que se

produjo el error.

2 Dificultad.

⋆ Causas que dificultaron la modificacion.

⋆ Actividad mas difıcil relacionada con la

modificacion.

3 Cantidad de esfuerzo desperdiciado.

4 Decisiones que se podrıan haber tomado para

disminuir la dificultad de los errores.

Pablo Sanchez (MATESCO) Mantenimiento Software 30 / 62

Page 31: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Metodologıas para el mantenimiento software Documentacion de cambios software

Plantillas para documentacion cambios software

Plantilla aleatoria encontrada en internet (moodle).

Plantilla modelo de bugzilla:https://landfill.bugzilla.org/bugzilla-3.6-branch/show_bug.cgi?id=1

Pablo Sanchez (MATESCO) Mantenimiento Software 31 / 62

Page 32: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Introduccion

Soluciones tecnicas para el problema de mantenimiento

1 Ingenierıa Inversa: Reconstruir el proceso de ingenierıa de unproducto a partir de ciertos artefactos de dicho producto.

2 Reingenierıa: Examen y modificacion de un sistema parareconstruirlo en una nueva forma. Puede precisar de un proceso deingenierıa inversa para reconstruir el proceso de ingenierıa delproducto.

3 Reestructuracion: Modificacion del software para hacerlo mas facilde entender y cambiar o menos susceptible de incluir errores encambios posteriores.

4 Transformaciones: Manipulacion, por medio de transformacionesautomaticas ejecutadas por un computador, del codigo o modelo deun sistema para anadirle/modificarle/eliminarle elementos. (ej. pasarun sistema a distribuido).

Pablo Sanchez (MATESCO) Mantenimiento Software 32 / 62

Page 33: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Introduccion

Soluciones tecnicas para el problema de mantenimiento

Pablo Sanchez (MATESCO) Mantenimiento Software 33 / 62

Page 34: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Ingenierıa Inversa

¿Que es Ingenierıa Inversa?

Pablo Sanchez (MATESCO) Mantenimiento Software 34 / 62

Page 35: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Ingenierıa Inversa

¿Que es Ingenierıa Inversa?

Pablo Sanchez (MATESCO) Mantenimiento Software 35 / 62

Page 36: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Ingenierıa Inversa

Ingenierıa Inversa de codigo Java a UML

class Persona { class Telefono {

String nombre; int numero;

int edad; String operador;

Set<Telefono> telefonos; int codigoInternacional;

String getName() { }

...

}

...

}

class Profesor extends Persona {

String centro;

}

Pablo Sanchez (MATESCO) Mantenimiento Software 36 / 62

Page 37: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Ingenierıa Inversa

Ingenierıa Inversa de codigo Java a UML

ReverseEngineeringclass [ ]

+numero : int+operador : String+codigoInternacional : int

Telefono

+centro : String

Profesor

+nombre : String+edad : Integer

Persona+telefonos

0..*

Pablo Sanchez (MATESCO) Mantenimiento Software 37 / 62

Page 38: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Ingenierıa Inversa

Ingenierıa Inversa de bases de datos relacionales

Sales

pnum

cid

volume

Regionrname

salesman_name

id

Productpnum

pname

id

Customer

cid

cname

address

phone

rname

id

ref

Pablo Sanchez (MATESCO) Mantenimiento Software 38 / 62

Page 39: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Ingenierıa Inversa

Ingenierıa Inversa de bases de datos relacionales

1 Por cada tabla sin referencias a otras tablas, creamos una entidad.

2 Para las entidades creadas, copiamos atributos y marcamos claves primarias.Marcamos las tablas como procesadas.

3 Por cada tabla con referencias externas, creamos una entidad.

4 Para las entidades creadas, copiamos atributos y marcamos claves primarias.

5 Por cada clave externa, creamos una relacion entre la entidad creada y lareferenciada.

6 Para dicha relacion, el extremo de tabla referenciada, tendra cardinalidad 1, salvorestriccion expresa.

7 Para dicha relacion, el extremo de la entidad creada, tendra cardinalidad 0..∗,salvo restriccion expresa.

8 Si una entidad tiene: (1) su clave primaria formada por la union de las clavesprimarias de tablas con las cuales se relaciona; y (2) los extremos de las relacionescon las otras entidades tiene como cardinalidad superior 1, convertir dicha entidaden una relacion n a m entre entidades.

9 Copiar los atributos de la entidad a atributos de la relacion.

Pablo Sanchez (MATESCO) Mantenimiento Software 39 / 62

Page 40: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Ingenierıa Inversa

Ingenierıa Inversa de bases de datos relacionales

Region

rname

salesman_name

id

Customer

cid

rname

cname phone

address

Product

pnum

id

pname

volume

Pablo Sanchez (MATESCO) Mantenimiento Software 40 / 62

Page 41: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Reestructuracion

Reestructuracion: Refactorings

Refactorizacion

Proceso de cambio de un sistema software de forma que su comprtamientoexterno no se vea afectado pero que mejora su estructura interna (ej.atributos relacionados a clase).

Malos olores (bad smells)

Indicios sobre potenciales problemas en el codigo (ej. codigo replicado,mismo metodo en varias subclases).

Pablo Sanchez (MATESCO) Mantenimiento Software 41 / 62

Page 42: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Reestructuracion

Esquema de una refactorizacion

1 Nombre

2 Sıntomas

3 Causas

4 Refactorizaciones propuestas

5 Beneficios esperados

6 Efectos colaterales y contraindicaciones

Pablo Sanchez (MATESCO) Mantenimiento Software 42 / 62

Page 43: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Reestructuracion

Refactorizaciones mas Populares [6]

1 Pull Up Method.

2 Move Method.

3 Add Parameter.

4 Move Field.

5 Rename Method.

6 Rename Field.

Pablo Sanchez (MATESCO) Mantenimiento Software 43 / 62

Page 44: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Reestructuracion

Pull Up Method

Descripcion

Existen metodos cuasi-identicos en las subclases

Refactoringsclass [ ]

UniversityMember

+setCourse( course : Course )

Teacher

+setCourse( course : Course )

Student⇒

Refactoringsclass [ ]

+setCourse( course : Course )

UniversityMember

Student Teacher

Pablo Sanchez (MATESCO) Mantenimiento Software 44 / 62

Page 45: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Reestructuracion

Move Method

Descripcion

Un metodo de una clase A es mas usado en una clase B que en la clasedonde esta definido.

MoveMethodclass [ ]

+isInCourse( course : Course )

StudentCourse +students

0..*⇒

MoveMethodclass [ ]

+isInCourse( student : Student )

Course Student+students

0..*

Pablo Sanchez (MATESCO) Mantenimiento Software 45 / 62

Page 46: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Reestructuracion

Add Parameter

Descripcion

A method needs more information from its caller.

AP(left) AP(left)class [ ]

+getContactData()

Student

AP(right) AP(right)class [ ]

+getContactData( faculty : Faculty )

Student

¡ OJO ! puede crear listas interminables de argumentos

Pablo Sanchez (MATESCO) Mantenimiento Software 46 / 62

Page 47: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Reestructuracion

Introduce Parameter Object

Descripcion

Existen grupos de parametros que estan naturalmente relacionados

IPO(left)class [ ]

+bookSession( day : int, month : int, year : int )+notifyExam( day : int, month : int, year : int )

Student ⇒

IPO(right)class [ ]

+bookSession( date : Date )+notifyExam( date : Date )

Student

+day : int+month : int+year : int

Date

Pablo Sanchez (MATESCO) Mantenimiento Software 47 / 62

Page 48: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Reestructuracion

Move Field

Descripcion

Un atributo de una clase A es mas usado en una clase B que en la clasedonde esta definido.

MoveField(left)class [ ]

ProductType

+vat : int

Product+kind

1⇒

MoveField(right)class [ ]

+vat : int

ProductTypeProduct+kind

1

Pablo Sanchez (MATESCO) Mantenimiento Software 48 / 62

Page 49: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Reestructuracion

Rename Field/Method

Descripcion

El nombre de un atributo o metodo no es significativo

MoveField(right)class [ ]

+c : int

PrdTPrd+t

1⇒

MoveField(right)class [ ]

+vat : int

ProductTypeProduct+kind

1

Pablo Sanchez (MATESCO) Mantenimiento Software 49 / 62

Page 50: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Reestructuracion

Replace Magic Number with Symbolic Constant

Descripcion

Tenemos una constante numerica con un significado bien definido

double calculateTotalCharge() {

return this.totalAmount +

(this.totalAmount*16.0/100.0);

}

refactors to

static final double NORMAL_VAT = 16.0;

double calculateTotalCharge() {

return this.totalAmount +

(this.totalAmount*NORMAL_VAT/100.0);

}

Pablo Sanchez (MATESCO) Mantenimiento Software 50 / 62

Page 51: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Reestructuracion

Replace Type Code with State/Strategy

Descripcion

Una clase tiene un atributo que indica tipo y que afecta alcomportamiento de la clase

TypeBasedclass [ ]

+calculateTotalCharge()

Product

+vat : float

ProductType+kind

1 ⇒

Strategyclass [ ]

+vat : float

+calculateTotalCharge()

Product

+calculateTotalCharge()

NormalProduct

+calculateTotalCharge()

ReduceVATProduct

+calculateTotalCharge()

BasicProduct

Pablo Sanchez (MATESCO) Mantenimiento Software 51 / 62

Page 52: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Deteccion de clones

Deteccion de codigo replicado

Problema del codigo replicado

Happiness

Sadness

M o dul e A M o dul e E Module D M o dul e C M o dul e B

Base Functionality

Fault Tolerance v 2 . 0

Access Control

Encryption

@#& �

Pablo Sanchez (MATESCO) Mantenimiento Software 52 / 62

Page 53: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Deteccion de clones

Deteccion de codigo replicado (Baxter et al [3])

Fragmento 1 en módulo A Fragmento 2 en módulo B

void Anadir(int e, lista l) {

int i:=1; boolean enc:=false;

while (not enc) {

if l[i].ocupado then

i++;

else enc=true;

}

l.info:=e;

l.ocupado:=true;

}

void Insertar(lista l, int info)

{

int cont; boolean enc;

Elemento e;

cont:=1;

enc:=false;

while (enc==false) {

e:=l[cont];

if (not e.ocupado) then {

e.ocupado:=true;

e.info:=info;

l[cont]:=e;

enc:=true;

} else cont:=cont+1;

}

}

Pablo Sanchez (MATESCO) Mantenimiento Software 53 / 62

Page 54: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Deteccion de clones

Deteccion de codigo replicado (Baxter et al [3])

...

if a=b then

for i=1 to f(n)

aux = aux + f(i, i-1)

end for

a=0

end if

....

Pablo Sanchez (MATESCO) Mantenimiento Software 54 / 62

Page 55: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Tecnicas de mantenimiento Deteccion de clones

Deteccion de codigo replicado (Baxter et al [3])

Clones=Æ

Para cada s Î Subárboles

Si s £ PesoMínimo entonces

TablaHash = TablaHash È {s}

Para cada (s1, s2) que están en la misma entrada de TablaHash

Si Similitud(s1,s2)³UmbralDeSimilitud entonces

Para cada s Î Subárboles(s1)

Si s Î Clones entonces

Clones=Clones - {s}

Para cada s Î Subárboles(s2)

Si s Î Clones entonces

Clones=Clones - {s}

Clones=Clones È {s1} È {s2}

Pablo Sanchez (MATESCO) Mantenimiento Software 55 / 62

Page 56: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Metricas para mantenimiento software

Metricas para disenos software orientados a objetos [5]

Weigthed Method per Class (WMC) WMC =∑n

i=1 ci

Depth of Inheritance Tree (DIT) maximum lenght to the root of the treeNumber of Children (NOC) number of inmediate subclasses of a classCoupling Between Objects (CBO) number of tother classes used by a classResponse For a Class (RFC) RFC = M +

⋃ni=1 Ri

Lack of Cohesion in Methods (LCOM) LCOM = P − Q

Regla informal

Un sistema sera mas mantenible cuanto mayor cohesion tenga y menor seasu acoplamiento [10].

Pablo Sanchez (MATESCO) Mantenimiento Software 56 / 62

Page 57: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Metricas para mantenimiento software

Metricas para disenos software orientados a objetos [5]

OBSComponentClassesLargeclass [ ]

+addItem( book : Book, quantity : Integer )+removeItem( book : Book )

+checkOut()

+creditNotification( ok : Boolean )+deliveryNotification( ok : Boolean )

ShoppingCart

+name : String

+creditCard : String

Customer

+author : String+title : String

Book

+register()+unregister()

System

+packOrder()

Clerk

+books

1..*

+customer

+quantity : Integer

SelectedBook

+books

0..*

+clerks

1..*

+customers

0..*

Pablo Sanchez (MATESCO) Mantenimiento Software 57 / 62

Page 58: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Conclusiones

Conclusiones

1 Importancia del mantenimiento software y diferencia con sistemasclasicos.

2 Defincion de mantenimiento software. Tipos de mantenimiento ycambio.

3 Importancia y problemas de los sistemas heredados.

4 Organizacion y gestion del mantenimiento.

5 Concepto y tecnicas de Ingenierıa Inversa.

6 Concepto y tecnicas de Refactorizacion.

7 Metricas para mantenimiento.

Pablo Sanchez (MATESCO) Mantenimiento Software 58 / 62

Page 59: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Bibliografıa

Referencias I

Lowell Jay Arthur.Software Evolution: A Software Maintenance Challenge.John Wiley & Sons, February 1988.

Victor Basili, Lionel Briand, Steven Condon, Yong-Mi Kim,Walcelio L. Melo, and Jon D. Valett.Understanding and Predicting the Process of Software MaintenanceRelease.In Proc. of the 18th Int. Conference on Software Engineering (ICSE),pages 464–474, Berlin, Germany, March 1996.

Ira D. Baxter, Andrew Yahin, Leonardo Moura, Marcelo Sant’Anna,and Lorraine Bier.Clone Detection Using Abstract Syntax Trees.In Proc. of the Int. Conference on Software Maintenance (ICSM),pages 368–377, Bethesda (Maryland, USA), November 1998.

Pablo Sanchez (MATESCO) Mantenimiento Software 59 / 62

Page 60: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Bibliografıa

Referencias II

Frederick P. Brooks.No Silver Bullet - Essence and Accidents of Software Engineering.IEEE Computer, 20(4):10–19, April 1987.

Shyam R. Chidamber and Chris F. Kemerer.A Metrics Suite for Object Oriented Design.IEEE Transactions on Software Engineering, 20(6):476–493, June1994.

Steve Counsell, Youssef Hassoun, George Loizou, and Rajaa Najjar.Common Refactorings, a Dependency Graph and Some Code Smells:an Empirical Study of Java OSS.In Guilherme Horta Travassos, Jose Carlos Maldonado, and ClaesWohlin, editors, Proc. of the Int. Symposium on Empirical SoftwareEngineering (ISESE), pages 288–296, Rio de Janeiro (Brazil),September 2006.

Pablo Sanchez (MATESCO) Mantenimiento Software 60 / 62

Page 61: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Bibliografıa

Referencias III

Edsger W. Dijkstra.The humble programmer.Communications of the ACM, 15(10):859–866, October 1972.

ISO/IEC/IEEE.Software engineering – software life cycle processes – maintenance.Technical Report International Standard ISO/IEC 14764:2006, IEEEStd 14764-2006, September 2006.

IEEE (The Institute of Electrical and Electronics Engineers).Standard for software maintenance.Technical Report IEEE Std 1219-1993, December 1992.

David L. Parnas.On the Criteria to be Used in Decomposing Systems into Modules.Communications of the ACM, 15(12):1053–1058, 1972.

Pablo Sanchez (MATESCO) Mantenimiento Software 61 / 62

Page 62: Ingeniería del Soware II - unican.es · Mantenimiento Software Tipos de mantenimiento software Tipos de cambios en productos software 1 Anticipado: Un cambio se dice que es anticipado

Bibliografıa

Referencias IV

Mario Piattini, Jose Villalba, Francisco Ruiz, Teresa Bastanchury,Macario Polo, Miguel Angel Martınez, and Cesar Nistal.Mantenimiento del Software. Modelos, Tecnicas y Metodos para laGestion del Cambio.

Macario Polo, Mario Piattini, Francisco Ruiz, and Coral Calero.MANTEMA: A Complete Rigorous Methodology for SupportingMaintenance Based On The ISO/IEC 12207 Standard.In Proc. of the 3rd European Conference on Software Maintenanceand Reengineering (CSMR), pages 178–181, Amsterdam (TheNetherlands), March 1999.

Stephen S. Yau and James S. Collofello.Design Stability Measures for Software Maintenance.IEEE Transactions on Software Engineering, 11(9):849–856, October1985.

Pablo Sanchez (MATESCO) Mantenimiento Software 62 / 62