SlideShare una empresa de Scribd logo
1 de 24
Tema 11.
Mantenimiento del
Software
Profesor: Juan Antonio López Quesada.
Facultad de Informática.
http://dis.um.es/~lopezquesada
Ingeniería del Software
Mantenimiento del software 2
Mantenimiento del software.
Estructura
Tipos de mantenimiento
Coste de las actividades de mantenimiento
Dificultades del mantenimiento
El proceso de mantenimiento en el ciclo de vida del sw.
Métodos de mantenimiento del software
Redocumentación
Ingeniería inversa y reingeniería
Ingeniería inversa de procesos (comprensión de programas)
Identificación y recopilación de los componentes funcionales
Asignar valor semántico a los componentes funcionales
Ingeniería inversa de ficheros y BDs
Ingeniería inversa y reingeniería de interfaces de usuario
Reconstrucción de programas
Mantenibilidad o facilidad de mantenimiento del sw.
Métricas para mantenibilidad
Mantenimiento del software 3
Mantenimiento del software.
Bibliografía
(Piattini et al. 98) M. Piattini, J. Villalba, F. Ruiz, I.
Fernández, M. Polo, T. Bastanchury, M.A. Martínez.
“Mantenimiento del software. Conceptos, métodos,
herramientas y outsourcing.” Ed. Ra-Ma. 1998.
(Piattini et al. 96) M. Piattini, José A. Calvo-Manzano, J.
Cervera, L. Fernández. “Análisis y diseño detallado de
Aplicaciones Informáticas de Gestión”. Ed. Ra-Ma.
1996. Capítulo 16.
Mantenimiento del software 4
Mantenimiento del software
“El mantenimiento del sw. es la modificación de un
producto sw. después de su entrega al cliente o usuario
para corregir defectos, para mejorar el rendimiento u
otras propiedades deseables, o para adaptarlo a un
cambio de entorno” (IEEE 83).
Es la parte más costosa del ciclo de vida del sw.:
60-90% del coste total (y coste creciente).
El coste relativo de reparar un defecto aumenta en las
últimas etapas del ciclo de vida (de 1 a 100).
En algunas empresas coste del 95% ⇒
(no se pueden desarrollar nuevos productos sw.)
Barrera del
mantenimiento
Mantenimiento del software 5
Costes del mantenimiento
Oportunidades de desarrollo que se pierden.
Insatisfacción del cliente cuando no se puede
atender en un tiempo aceptable una petición de
reparación que parece razonable.
Los errores ocultos que se introducen al
cambiar el sw. durante el mantenimiento
reducen la calidad global del producto.
Perjuicio en otros proyectos de desarrollo
cuando la plantilla tiene que dejarlos, total o
parcialmente, para atender peticiones de
mantenimiento.
Mantenimiento del software 6
Tipos de mantenimiento
Correctivo
Adaptativo
Coste de mantenimiento
Correctivo
17%
Adaptativo
18%Perfectivo
60%
Preventivo
5%
Perfectivo
Mantenimiento de ampliación
Mantenimiento de eficiencia
Preventivo
Mantenimiento para la reutilización
Mantenimiento del software 7
Coste de las actividades de
mantenimiento
Categoría Actividad % Tiempo
Comprensión del sw. y Estudiar las peticiones 18%
de los cambios a Estudiar la documentación 6%
realizar Estudiar el código 23%
Modificación del sw. Modificar el código 19%
Actualizar la documentación 6%
Realización de pruebas Diseñar y realizar pruebas 28%
⇒ Nótese cómo la comprensión del software y de los
cambios supone casi un 50% del coste total de
mantenimiento
Mantenimiento del software 8
Dificultades del
mantenimiento
Aplicaciones antiguas heredadas (legacy code):
restricciones de tamaño y espacio de almacenamiento
herramientas desfasadas, sin métodos
una o varias migraciones a nuevas plataformas
múltiples modificaciones para adaptarlos o mejorarlos
desarrolladores no localizables
¿desechar el sw. y reescribirlo? No factible:
gran carga financiera de su desarrollo
necesidad de amortización
⇒ sw. que sigue funcionando con baja calidad
Mantenimiento del software 9
Dificultades del
mantenimiento (II)
Ausencia de métodos (se realiza de forma ad hoc).
Cambio tras cambio, los programas tienden a ser
menos estructurados.
Ausencia de documentación.
No captura adecuada de requisitos ⇒ mayores
esfuerzos de mantenimiento futuros.
No existen registros de pruebas ⇒ imposibilidad de
pruebas de regresión.
Problemas de gestión (considerado “trabajo poco creativo”,
asignado a las personas con menos experiencia).
Mantenimiento del software 10
El proceso de mantenimiento en
el ciclo de vida del sw.
Proceso ppal. de mantenimiento en el std. IEEE
12207.
Actividades:
Implementación del proceso.
Análisis de problemas y modificaciones.
Implementación de las modificaciones.
Revisión y aceptación del mantenimiento.
Migración.
Retirada del sw.
Mantenimiento del software 11
Métodos de mantenimiento
del software
Reingeniería: examen y modificación del sistema para
reconstruirlo en una nueva forma.
Ingeniería inversa: análisis de un sistema para identificar sus
componentes y las relaciones entre ellos, así como para crear
representaciones del sistema en otra forma o en un nivel de
abstracción más elevado.
Reestructuración del software: consiste en la modificación del
software para hacerlo más fácil de entender y cambiar o menos
susceptible de incluir errores en cambios posteriores.
Transformación de programas: técnica formal de
transformación de programas
Mantenimiento del software 12
Ingeniería directa, inversa,
reingeniería y redocumentación
Definición Diseño Implementación
Ingeniería directa (1) Ingeniería directa (2)
Reing.(6) Reing.(8)
Redocumentación
(5)
Redocumentación
(7)
Redocumentación
(8)
Ing. inversa
(4)
Ing. inversa
(3)
(Piattini et al. 98)
Mantenimiento del software 13
Redocumentación (Pressman 98) p.511
a) Si el sistema funciona y la redocumentación
consume muchos recursos, tal vez mejor no
redocumentar.
b) Si es preciso actualizar la documentación, pero
recursos limitados, puede ser útil “documentar
cuando se modifica”. Con el tiempo, se formará
una colección de información interesante.
c) Si el sistema es fundamental para la
organización, redocumentar por completo. Se
puede reducir la documentación al mínimo.
Mantenimiento del software 14
Ingeniería inversa y
reingeniería
Objetivo: métodos para reconstruir el sw.:
reprogramarlo
redocumentarlo
rediseñarlo
rehacer alguna/s característica/s del producto
Ingeniería inversa: “el proceso de construir
especificaciones abstractas del código fuente de un
sistema heredado, de manera que estas
especificaciones puedan ser utilizadas para construir
una nueva implementación del sistema hacia delante”
Mantenimiento del software 15
Ingeniería inversa y
reingeniería (II)
Ingeniería inversa: El pto. de partida no es
necesariamente el código fuente (Piattini et al. 96)
Ingeniería inversa. Beneficios (Piattini et al. 96):
Reducir la complejidad del sistema.
Generar vistas alternativas.
Recuperar la información perdida (cambios que no se documentaron en
su momento).
Detectar efectos laterales.
Facilitar la reutilización.
Reingeniería: “la modificación de un producto sw., o de ciertos
componentes, usando para el análisis del sistema existente técnicas
de ingeniería inversa y, para la etapa de reconstrucción,
herramientas de ingeniería directa”
Mantenimiento del software 16
Ingeniería inversa de procesos
(comprensión de programas)
Tareas necesarias: (Biggerstaff 94) (Weide 95)
(No se realizan secuencialmente.)
1. Identificación y recopilación de los
componentes funcionales del sistema.
rutinas, variables, constantes, tipos de datos,
TAD, objetos, llamadas a funciones, etc.
2. Asignar significado a los componentes
“sustanciales” anteriores.
Mantenimiento del software 17
Identificación y recopilación de
los componentes funcionales
Muy subjetiva e intuitiva.
Algunas ideas:
cada componente suele ocupar un módulo, o bien aparecen
próximos unos a otros.
las series de componentes funcionales suelen aparecer junto a
muchos comentarios.
los identificadores de los componentes funcionales suelen
constar de muchos caracteres.
Algunos problemas:
sinonimia
polisemia
comentarios no actualizados
Mantenimiento del software 18
Asignar valor semántico a los
componentes funcionales
Se recorren las sentencias del componente,
para confirmar su calidad de componente
funcional.
Análisis estático (creación de DFDs...)
Análisis dinámico (ejecución del programa)
Detectar y registrar bucles infinitos, código
inalcanzable, etc.
que no se corrigen en esta fase, sólo se documentan
se corrigen después, en la fase de reingeniería
Mantenimiento del software 19
Ingeniería inversa de
ficheros y BDs
Diseño
conceptual
Diseño lógico Diseño físico
Esquema
conceptual
Esquema
lógico
Estructuras
estáticas y
dinámicas en
soporte físico
Normalización
conceptual
Eliminación de los
constructores
propios
(desoptimización)
Detección de los
constructores
propios del
sistema real
(destraducción)
Conceptualización de las estructuras
Extracción de la
estructura:
recuperación de
las tablas y reglas
de integridad
Mantenimiento del software 20
Ingeniería inversa de ficheros -
Extracción de la estructura
Considerar cada fichero como una posible tabla, y cada campo del
fichero como un campo de la tabla.
Determinar un conjunto de campos que puedan ser clave primaria
de sus respectivos ficheros (buscar ID, #).
Determinar las claves ajenas.
Determinar los ficheros que no pueden tratarse como tablas
(aquellos sin claves).
Buscar generalizaciones:
grandes grupos de claves ajenas.
valores repetidos de atributos en una tabla.
datos con valores mutuamente excluyentes.
Encontrar asociaciones.
(Premernali et al. 94)
Mantenimiento del software 21
Ingeniería inversa y reingeniería
de interfaces de usuario
Adaptar aplicaciones a las necesidades de los
usuarios, respetando su lógica anterior:
1. Recopilación de documentación, manuales de
usuario, etc.
2. Entrevistas a distintos grupos de usuarios, y
observación de sus métodos de trabajo.
3. Uso del sistema por el propio equipo de
mantenimiento. Se puede modificar el código para, p.ej.,
introducir contadores.
4. Reconstrucción y redocumentación de la
interfaz.
Mantenimiento del software 22
Reconstrucción de
programas
A partir de los productos de ingeniería inversa se
construye el programa mediante técnicas de ingeniería
directa.
Reestructuración de datos
eliminar sinonimias y polisemias
Reestructuración de procesos
transformar el código no estructurado en código
estructurado
en un diagrama de flujo estructurado, es posible
hacer transformaciones sucesivas hasta que su
complejidad ciclomática se iguale a 1 (Piattini et al.
96) p.547
Mantenimiento del software 23
Mantenibilidad o facilidad de
mantenimiento del sw.
Medida cualitativa de la facilidad de
comprender, corregir, adaptar y/o mejorar el sw.
(Pressman 98)
“Facilidad con que un sistema o componente
sw. puede ser modificado para corregir
defectos, mejorar el rendimiento u otros
atributos, o adaptarse a un cambio de entorno”.
Muy ligada a la calidad del sw. ⇒ métricas de
mantenibilidad = métricas de calidad
También ligada a la complejidad del sw.
Mantenimiento del software 24
Métricas para
mantenibilidad (Mc Call)
Mantenibilidad
SIMPLICIDAD
CONCISIÓN
AUTODESCRIPTIVO
LEGIBILIDAD
FACILIDAD DE PRUEBA
Nº ciclomático V(G)
Nº de sentencias
Frecuencia de operandos
Longitud de programa
Nivel de módulo
Frecuencia de comentarios
Longitud de programa
Niveles anidados (MAX)
Nº de sentencias
V(G)
Niveles anidados (MAX)
CRITERIOS MÉTRICAS

Más contenido relacionado

La actualidad más candente (19)

Ciclo de vida software
Ciclo de vida softwareCiclo de vida software
Ciclo de vida software
 
AMSI
AMSIAMSI
AMSI
 
Análisis del Proyecto de Software
Análisis del Proyecto de SoftwareAnálisis del Proyecto de Software
Análisis del Proyecto de Software
 
Metodologia De Desarrollo De Software
Metodologia De Desarrollo De SoftwareMetodologia De Desarrollo De Software
Metodologia De Desarrollo De Software
 
Ingenieria inversa
Ingenieria inversaIngenieria inversa
Ingenieria inversa
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
 
Metodologia elicitacion
Metodologia elicitacionMetodologia elicitacion
Metodologia elicitacion
 
Ciclo De Vida
Ciclo De VidaCiclo De Vida
Ciclo De Vida
 
Metodologías de desarrollo de software
Metodologías de desarrollo de softwareMetodologías de desarrollo de software
Metodologías de desarrollo de software
 
Apuntes ing-sof-unidad-4-1-2015
Apuntes ing-sof-unidad-4-1-2015Apuntes ing-sof-unidad-4-1-2015
Apuntes ing-sof-unidad-4-1-2015
 
Software
SoftwareSoftware
Software
 
Tipos de ciclos de vida
Tipos de ciclos de vidaTipos de ciclos de vida
Tipos de ciclos de vida
 
Ingeniería del software
Ingeniería del softwareIngeniería del software
Ingeniería del software
 
Ciclo de vida estructurado de un proyecto
Ciclo de vida estructurado de un proyectoCiclo de vida estructurado de un proyecto
Ciclo de vida estructurado de un proyecto
 
unidad 4
unidad 4unidad 4
unidad 4
 
Proceso software
Proceso softwareProceso software
Proceso software
 
PROCESOS DE INGENIERIA DEL SW
PROCESOS DE INGENIERIA DEL SWPROCESOS DE INGENIERIA DEL SW
PROCESOS DE INGENIERIA DEL SW
 
Trabajo 2 exposicion
Trabajo 2 exposicionTrabajo 2 exposicion
Trabajo 2 exposicion
 
Dpss u3 a2_macm
Dpss u3 a2_macmDpss u3 a2_macm
Dpss u3 a2_macm
 

Destacado

La paradojas del viaje en el tiempo
La paradojas del viaje en el tiempoLa paradojas del viaje en el tiempo
La paradojas del viaje en el tiempomarcela alexandre
 
Crank Out Your Book - The 30-Day Plan
Crank Out Your Book - The 30-Day PlanCrank Out Your Book - The 30-Day Plan
Crank Out Your Book - The 30-Day PlanChristopher Mohritz
 
Paradigmas emergentes diana g
Paradigmas emergentes diana gParadigmas emergentes diana g
Paradigmas emergentes diana gDiana Bernal
 
Tema 1 -_participacion_de_los_padres
Tema 1 -_participacion_de_los_padresTema 1 -_participacion_de_los_padres
Tema 1 -_participacion_de_los_padresSaanDpz
 

Destacado (7)

La paradojas del viaje en el tiempo
La paradojas del viaje en el tiempoLa paradojas del viaje en el tiempo
La paradojas del viaje en el tiempo
 
Crank Out Your Book - The 30-Day Plan
Crank Out Your Book - The 30-Day PlanCrank Out Your Book - The 30-Day Plan
Crank Out Your Book - The 30-Day Plan
 
Paradigmas emergentes diana g
Paradigmas emergentes diana gParadigmas emergentes diana g
Paradigmas emergentes diana g
 
Tema 1 -_participacion_de_los_padres
Tema 1 -_participacion_de_los_padresTema 1 -_participacion_de_los_padres
Tema 1 -_participacion_de_los_padres
 
GUIA DIDACTICA
GUIA DIDACTICAGUIA DIDACTICA
GUIA DIDACTICA
 
Plasticidad2
Plasticidad2Plasticidad2
Plasticidad2
 
On the road survey
On the road surveyOn the road survey
On the road survey
 

Similar a R 5

Mantenimiento de Software
Mantenimiento de SoftwareMantenimiento de Software
Mantenimiento de SoftwareCARMEN
 
CLASES DE METODOLOGIA DEL DESARROLLO DE SOFTWARE
CLASES DE METODOLOGIA DEL DESARROLLO DE SOFTWARECLASES DE METODOLOGIA DEL DESARROLLO DE SOFTWARE
CLASES DE METODOLOGIA DEL DESARROLLO DE SOFTWAREMilagrosCz
 
clases3metodmetodlgiaherra.ppt
clases3metodmetodlgiaherra.pptclases3metodmetodlgiaherra.ppt
clases3metodmetodlgiaherra.pptTereBestene
 
clases3metodmetodlgiaherra.ppt
clases3metodmetodlgiaherra.pptclases3metodmetodlgiaherra.ppt
clases3metodmetodlgiaherra.pptronald flores
 
Ingeniería inversa
Ingeniería inversaIngeniería inversa
Ingeniería inversakarin0902
 
Proceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de softwareProceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de softwaresergio
 
Proceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de softwareProceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de softwaresergio
 
Mantenimiento De Softtware
Mantenimiento De SofttwareMantenimiento De Softtware
Mantenimiento De SofttwareRamon Rivera
 
Curso ingeniería de software parte i
Curso ingeniería de software parte iCurso ingeniería de software parte i
Curso ingeniería de software parte iparafernalico
 
Mantenimiento del software unidad # 9
Mantenimiento del software unidad # 9Mantenimiento del software unidad # 9
Mantenimiento del software unidad # 9Vanessa Toral Yépez
 
Mantenimiento del software_unidad___9
Mantenimiento del software_unidad___9Mantenimiento del software_unidad___9
Mantenimiento del software_unidad___9naviwz
 
Tecnicas de ingenieria de software
Tecnicas de ingenieria de softwareTecnicas de ingenieria de software
Tecnicas de ingenieria de software'Jorge Martinez
 

Similar a R 5 (20)

Mantenimiento de Software
Mantenimiento de SoftwareMantenimiento de Software
Mantenimiento de Software
 
CLASES DE METODOLOGIA DEL DESARROLLO DE SOFTWARE
CLASES DE METODOLOGIA DEL DESARROLLO DE SOFTWARECLASES DE METODOLOGIA DEL DESARROLLO DE SOFTWARE
CLASES DE METODOLOGIA DEL DESARROLLO DE SOFTWARE
 
clases3metodmetodlgiaherra.ppt
clases3metodmetodlgiaherra.pptclases3metodmetodlgiaherra.ppt
clases3metodmetodlgiaherra.ppt
 
clases3metodmetodlgiaherra.ppt
clases3metodmetodlgiaherra.pptclases3metodmetodlgiaherra.ppt
clases3metodmetodlgiaherra.ppt
 
Ingeniería inversa
Ingeniería inversaIngeniería inversa
Ingeniería inversa
 
Ingeniería inversa
Ingeniería inversaIngeniería inversa
Ingeniería inversa
 
Proceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de softwareProceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de software
 
Proceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de softwareProceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de software
 
Tema Introducción IS
Tema Introducción ISTema Introducción IS
Tema Introducción IS
 
Ingenieria De Software
Ingenieria De SoftwareIngenieria De Software
Ingenieria De Software
 
Mantenimiento De Softtware
Mantenimiento De SofttwareMantenimiento De Softtware
Mantenimiento De Softtware
 
Trabajo espoch
Trabajo espochTrabajo espoch
Trabajo espoch
 
Georgy jose sanchez
Georgy jose sanchezGeorgy jose sanchez
Georgy jose sanchez
 
Curso ingeniería de software parte i
Curso ingeniería de software parte iCurso ingeniería de software parte i
Curso ingeniería de software parte i
 
Mantenimiento del software unidad # 9
Mantenimiento del software unidad # 9Mantenimiento del software unidad # 9
Mantenimiento del software unidad # 9
 
Mantenimiento del software_unidad___9
Mantenimiento del software_unidad___9Mantenimiento del software_unidad___9
Mantenimiento del software_unidad___9
 
Investiga
InvestigaInvestiga
Investiga
 
Julio 3
Julio 3Julio 3
Julio 3
 
Tecnicas de ingenieria de software
Tecnicas de ingenieria de softwareTecnicas de ingenieria de software
Tecnicas de ingenieria de software
 
titulo de pdf
titulo de pdftitulo de pdf
titulo de pdf
 

Más de clarivelth

Redes ad hoc inalambrica
Redes ad hoc inalambricaRedes ad hoc inalambrica
Redes ad hoc inalambricaclarivelth
 
Requerimientos de hw
Requerimientos de hwRequerimientos de hw
Requerimientos de hwclarivelth
 
Presentación1
Presentación1Presentación1
Presentación1clarivelth
 
Computacion e informatica (1)
Computacion e informatica (1)Computacion e informatica (1)
Computacion e informatica (1)clarivelth
 
Computacion e informatica
Computacion e informaticaComputacion e informatica
Computacion e informaticaclarivelth
 
Mantenimiento preventivo ugt(1)
Mantenimiento preventivo ugt(1)Mantenimiento preventivo ugt(1)
Mantenimiento preventivo ugt(1)clarivelth
 
Historia de las computadoras digitales
Historia de las computadoras digitalesHistoria de las computadoras digitales
Historia de las computadoras digitalesclarivelth
 
Microprocesadores
MicroprocesadoresMicroprocesadores
Microprocesadoresclarivelth
 
Microprocesadores
MicroprocesadoresMicroprocesadores
Microprocesadoresclarivelth
 
Dispositivos de almacenamiento
Dispositivos de almacenamientoDispositivos de almacenamiento
Dispositivos de almacenamientoclarivelth
 
Microprocesadores
MicroprocesadoresMicroprocesadores
Microprocesadoresclarivelth
 

Más de clarivelth (14)

la polvora
la polvorala polvora
la polvora
 
Redes ad hoc inalambrica
Redes ad hoc inalambricaRedes ad hoc inalambrica
Redes ad hoc inalambrica
 
Requerimientos de hw
Requerimientos de hwRequerimientos de hw
Requerimientos de hw
 
Presentación1
Presentación1Presentación1
Presentación1
 
Computacion e informatica (1)
Computacion e informatica (1)Computacion e informatica (1)
Computacion e informatica (1)
 
Computacion e informatica
Computacion e informaticaComputacion e informatica
Computacion e informatica
 
Mantenimiento preventivo ugt(1)
Mantenimiento preventivo ugt(1)Mantenimiento preventivo ugt(1)
Mantenimiento preventivo ugt(1)
 
S i 05
S i 05S i 05
S i 05
 
Virus
VirusVirus
Virus
 
Historia de las computadoras digitales
Historia de las computadoras digitalesHistoria de las computadoras digitales
Historia de las computadoras digitales
 
Microprocesadores
MicroprocesadoresMicroprocesadores
Microprocesadores
 
Microprocesadores
MicroprocesadoresMicroprocesadores
Microprocesadores
 
Dispositivos de almacenamiento
Dispositivos de almacenamientoDispositivos de almacenamiento
Dispositivos de almacenamiento
 
Microprocesadores
MicroprocesadoresMicroprocesadores
Microprocesadores
 

Último

2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfMARIAPAULAMAHECHAMOR
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 

Último (20)

2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdf
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 

R 5

  • 1. Tema 11. Mantenimiento del Software Profesor: Juan Antonio López Quesada. Facultad de Informática. http://dis.um.es/~lopezquesada Ingeniería del Software
  • 2. Mantenimiento del software 2 Mantenimiento del software. Estructura Tipos de mantenimiento Coste de las actividades de mantenimiento Dificultades del mantenimiento El proceso de mantenimiento en el ciclo de vida del sw. Métodos de mantenimiento del software Redocumentación Ingeniería inversa y reingeniería Ingeniería inversa de procesos (comprensión de programas) Identificación y recopilación de los componentes funcionales Asignar valor semántico a los componentes funcionales Ingeniería inversa de ficheros y BDs Ingeniería inversa y reingeniería de interfaces de usuario Reconstrucción de programas Mantenibilidad o facilidad de mantenimiento del sw. Métricas para mantenibilidad
  • 3. Mantenimiento del software 3 Mantenimiento del software. Bibliografía (Piattini et al. 98) M. Piattini, J. Villalba, F. Ruiz, I. Fernández, M. Polo, T. Bastanchury, M.A. Martínez. “Mantenimiento del software. Conceptos, métodos, herramientas y outsourcing.” Ed. Ra-Ma. 1998. (Piattini et al. 96) M. Piattini, José A. Calvo-Manzano, J. Cervera, L. Fernández. “Análisis y diseño detallado de Aplicaciones Informáticas de Gestión”. Ed. Ra-Ma. 1996. Capítulo 16.
  • 4. Mantenimiento del software 4 Mantenimiento del software “El mantenimiento del sw. es la modificación de un producto sw. después de su entrega al cliente o usuario para corregir defectos, para mejorar el rendimiento u otras propiedades deseables, o para adaptarlo a un cambio de entorno” (IEEE 83). Es la parte más costosa del ciclo de vida del sw.: 60-90% del coste total (y coste creciente). El coste relativo de reparar un defecto aumenta en las últimas etapas del ciclo de vida (de 1 a 100). En algunas empresas coste del 95% ⇒ (no se pueden desarrollar nuevos productos sw.) Barrera del mantenimiento
  • 5. Mantenimiento del software 5 Costes del mantenimiento Oportunidades de desarrollo que se pierden. Insatisfacción del cliente cuando no se puede atender en un tiempo aceptable una petición de reparación que parece razonable. Los errores ocultos que se introducen al cambiar el sw. durante el mantenimiento reducen la calidad global del producto. Perjuicio en otros proyectos de desarrollo cuando la plantilla tiene que dejarlos, total o parcialmente, para atender peticiones de mantenimiento.
  • 6. Mantenimiento del software 6 Tipos de mantenimiento Correctivo Adaptativo Coste de mantenimiento Correctivo 17% Adaptativo 18%Perfectivo 60% Preventivo 5% Perfectivo Mantenimiento de ampliación Mantenimiento de eficiencia Preventivo Mantenimiento para la reutilización
  • 7. Mantenimiento del software 7 Coste de las actividades de mantenimiento Categoría Actividad % Tiempo Comprensión del sw. y Estudiar las peticiones 18% de los cambios a Estudiar la documentación 6% realizar Estudiar el código 23% Modificación del sw. Modificar el código 19% Actualizar la documentación 6% Realización de pruebas Diseñar y realizar pruebas 28% ⇒ Nótese cómo la comprensión del software y de los cambios supone casi un 50% del coste total de mantenimiento
  • 8. Mantenimiento del software 8 Dificultades del mantenimiento Aplicaciones antiguas heredadas (legacy code): restricciones de tamaño y espacio de almacenamiento herramientas desfasadas, sin métodos una o varias migraciones a nuevas plataformas múltiples modificaciones para adaptarlos o mejorarlos desarrolladores no localizables ¿desechar el sw. y reescribirlo? No factible: gran carga financiera de su desarrollo necesidad de amortización ⇒ sw. que sigue funcionando con baja calidad
  • 9. Mantenimiento del software 9 Dificultades del mantenimiento (II) Ausencia de métodos (se realiza de forma ad hoc). Cambio tras cambio, los programas tienden a ser menos estructurados. Ausencia de documentación. No captura adecuada de requisitos ⇒ mayores esfuerzos de mantenimiento futuros. No existen registros de pruebas ⇒ imposibilidad de pruebas de regresión. Problemas de gestión (considerado “trabajo poco creativo”, asignado a las personas con menos experiencia).
  • 10. Mantenimiento del software 10 El proceso de mantenimiento en el ciclo de vida del sw. Proceso ppal. de mantenimiento en el std. IEEE 12207. Actividades: Implementación del proceso. Análisis de problemas y modificaciones. Implementación de las modificaciones. Revisión y aceptación del mantenimiento. Migración. Retirada del sw.
  • 11. Mantenimiento del software 11 Métodos de mantenimiento del software Reingeniería: examen y modificación del sistema para reconstruirlo en una nueva forma. Ingeniería inversa: análisis de un sistema para identificar sus componentes y las relaciones entre ellos, así como para crear representaciones del sistema en otra forma o en un nivel de abstracción más elevado. Reestructuración del software: consiste en la modificación del software para hacerlo más fácil de entender y cambiar o menos susceptible de incluir errores en cambios posteriores. Transformación de programas: técnica formal de transformación de programas
  • 12. Mantenimiento del software 12 Ingeniería directa, inversa, reingeniería y redocumentación Definición Diseño Implementación Ingeniería directa (1) Ingeniería directa (2) Reing.(6) Reing.(8) Redocumentación (5) Redocumentación (7) Redocumentación (8) Ing. inversa (4) Ing. inversa (3) (Piattini et al. 98)
  • 13. Mantenimiento del software 13 Redocumentación (Pressman 98) p.511 a) Si el sistema funciona y la redocumentación consume muchos recursos, tal vez mejor no redocumentar. b) Si es preciso actualizar la documentación, pero recursos limitados, puede ser útil “documentar cuando se modifica”. Con el tiempo, se formará una colección de información interesante. c) Si el sistema es fundamental para la organización, redocumentar por completo. Se puede reducir la documentación al mínimo.
  • 14. Mantenimiento del software 14 Ingeniería inversa y reingeniería Objetivo: métodos para reconstruir el sw.: reprogramarlo redocumentarlo rediseñarlo rehacer alguna/s característica/s del producto Ingeniería inversa: “el proceso de construir especificaciones abstractas del código fuente de un sistema heredado, de manera que estas especificaciones puedan ser utilizadas para construir una nueva implementación del sistema hacia delante”
  • 15. Mantenimiento del software 15 Ingeniería inversa y reingeniería (II) Ingeniería inversa: El pto. de partida no es necesariamente el código fuente (Piattini et al. 96) Ingeniería inversa. Beneficios (Piattini et al. 96): Reducir la complejidad del sistema. Generar vistas alternativas. Recuperar la información perdida (cambios que no se documentaron en su momento). Detectar efectos laterales. Facilitar la reutilización. Reingeniería: “la modificación de un producto sw., o de ciertos componentes, usando para el análisis del sistema existente técnicas de ingeniería inversa y, para la etapa de reconstrucción, herramientas de ingeniería directa”
  • 16. Mantenimiento del software 16 Ingeniería inversa de procesos (comprensión de programas) Tareas necesarias: (Biggerstaff 94) (Weide 95) (No se realizan secuencialmente.) 1. Identificación y recopilación de los componentes funcionales del sistema. rutinas, variables, constantes, tipos de datos, TAD, objetos, llamadas a funciones, etc. 2. Asignar significado a los componentes “sustanciales” anteriores.
  • 17. Mantenimiento del software 17 Identificación y recopilación de los componentes funcionales Muy subjetiva e intuitiva. Algunas ideas: cada componente suele ocupar un módulo, o bien aparecen próximos unos a otros. las series de componentes funcionales suelen aparecer junto a muchos comentarios. los identificadores de los componentes funcionales suelen constar de muchos caracteres. Algunos problemas: sinonimia polisemia comentarios no actualizados
  • 18. Mantenimiento del software 18 Asignar valor semántico a los componentes funcionales Se recorren las sentencias del componente, para confirmar su calidad de componente funcional. Análisis estático (creación de DFDs...) Análisis dinámico (ejecución del programa) Detectar y registrar bucles infinitos, código inalcanzable, etc. que no se corrigen en esta fase, sólo se documentan se corrigen después, en la fase de reingeniería
  • 19. Mantenimiento del software 19 Ingeniería inversa de ficheros y BDs Diseño conceptual Diseño lógico Diseño físico Esquema conceptual Esquema lógico Estructuras estáticas y dinámicas en soporte físico Normalización conceptual Eliminación de los constructores propios (desoptimización) Detección de los constructores propios del sistema real (destraducción) Conceptualización de las estructuras Extracción de la estructura: recuperación de las tablas y reglas de integridad
  • 20. Mantenimiento del software 20 Ingeniería inversa de ficheros - Extracción de la estructura Considerar cada fichero como una posible tabla, y cada campo del fichero como un campo de la tabla. Determinar un conjunto de campos que puedan ser clave primaria de sus respectivos ficheros (buscar ID, #). Determinar las claves ajenas. Determinar los ficheros que no pueden tratarse como tablas (aquellos sin claves). Buscar generalizaciones: grandes grupos de claves ajenas. valores repetidos de atributos en una tabla. datos con valores mutuamente excluyentes. Encontrar asociaciones. (Premernali et al. 94)
  • 21. Mantenimiento del software 21 Ingeniería inversa y reingeniería de interfaces de usuario Adaptar aplicaciones a las necesidades de los usuarios, respetando su lógica anterior: 1. Recopilación de documentación, manuales de usuario, etc. 2. Entrevistas a distintos grupos de usuarios, y observación de sus métodos de trabajo. 3. Uso del sistema por el propio equipo de mantenimiento. Se puede modificar el código para, p.ej., introducir contadores. 4. Reconstrucción y redocumentación de la interfaz.
  • 22. Mantenimiento del software 22 Reconstrucción de programas A partir de los productos de ingeniería inversa se construye el programa mediante técnicas de ingeniería directa. Reestructuración de datos eliminar sinonimias y polisemias Reestructuración de procesos transformar el código no estructurado en código estructurado en un diagrama de flujo estructurado, es posible hacer transformaciones sucesivas hasta que su complejidad ciclomática se iguale a 1 (Piattini et al. 96) p.547
  • 23. Mantenimiento del software 23 Mantenibilidad o facilidad de mantenimiento del sw. Medida cualitativa de la facilidad de comprender, corregir, adaptar y/o mejorar el sw. (Pressman 98) “Facilidad con que un sistema o componente sw. puede ser modificado para corregir defectos, mejorar el rendimiento u otros atributos, o adaptarse a un cambio de entorno”. Muy ligada a la calidad del sw. ⇒ métricas de mantenibilidad = métricas de calidad También ligada a la complejidad del sw.
  • 24. Mantenimiento del software 24 Métricas para mantenibilidad (Mc Call) Mantenibilidad SIMPLICIDAD CONCISIÓN AUTODESCRIPTIVO LEGIBILIDAD FACILIDAD DE PRUEBA Nº ciclomático V(G) Nº de sentencias Frecuencia de operandos Longitud de programa Nivel de módulo Frecuencia de comentarios Longitud de programa Niveles anidados (MAX) Nº de sentencias V(G) Niveles anidados (MAX) CRITERIOS MÉTRICAS

Notas del editor

  1. El mantenimiento perfectivo aumenta cuando un producto software tiene éxito comercial y es usado por muchos usuarios: más peticiones se reciben solicitando mejoras o nuevas funcionalidades. El mantenimiento preventivo consiste en la modificación del software para mejorar las propiedades de dicho software (p.ej. Aumentando su calidad o su mantenibilidad) sin alterar sus especificaciones funcionales: incluir sentencias que validen los datos de entrada reestructurar los programas para mejorar su legibilidad incluir nuevos comentarios (es el tipo de mantenimiento que más usa las técnicas de reingeniería e ingeniería inversa.) Mantenimiento para la reutilización: mantenimiento preventivo que trata de mejorar la propiedad de reusabilidad del software.
  2. Una de las principales razones de que existan tantos costes de mantenimiento son estas aplicaciones de más de 10 años, las aplicaciones heredadas. El sw. heredado sigue funcionando, pero adolece de... diseño pobre de las estructuras de datos mala codificación lógica defectuosa documentación escasa
  3. Estas técnicas se utilizan conjuntamente a menudo.
  4. Ver ejemplo (Piattini 98) pp.48-49 (función en C “quitacomillas”)
  5. Poner ejs. p.48/49 (Piattini 98)
  6. Eliminación de los constructores propios: son constructores no semánticos. Se pasa de tablas optimizadas a tablas Detección de constructores propios del sistema real: por ejemplo, de tablas ORACLE a tablas SQL2.
  7. Si no se detectan las generalizaciones, se dará la sensación de que sobran campos. Resulta de utilidad realizar consultas de forma que se pueda ver si se atienen a los resultados esperados.