Mantenimiento y evolucion del software

luis13711 156 views 58 slides Dec 04, 2021
Slide 1
Slide 1 of 58
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58

About This Presentation

Maestría Ingeniería de Sistemas Mención Ingeniería de Software


Slide Content

MANTENIMIENTO Y
EVOLUCIÓN DEL SOFTWARE
MAX HOUSTON RAMIREZ MARTEL
[email protected]

SAUL QUICHCA MANCILLA
[email protected]

KEYSI ARIANA ATO FERNANDEZ
[email protected]





HANS CASTRO QUISPE
Ausente
,
[email protected]








HANS CASTRO QUISPE
[email protected]

LUIS MIGUEL CAVERO AVENDAÑO
[email protected]

LUIS ENRIQUE CORDOVA SALDAÑA
[email protected]

Fundamentos de mantenimiento de software.





SWEBOK® Guide V3.0
Cuerpo de conocimientos de ingeniería de software V3.0
Desglose de temas para mantenimiento de software por KA

5-2 SWEBOK® Guide V3.0
Breakdown of Topics for the
Software Maintenance KA

1.1 .- .-definiciones y terminologías
ISO/IEC 14764
Todas las definiciones y terminologías están dadas en la ISO/IEC 14764 que es
una estándar que amplía "gestión del proceso de mantenimiento descrito en la
norma ISO/IEC 12207".
Pero básicamente lo que el objetivo del mantenimiento del software es
modificar un software existente pero preservando su integridad.

1.2 .- .Naturaleza del mantenimiento
En esta sección nos ilustra todo lo que implica hacer mantenimiento de un
software desde diseño, desarrollo y pruebas; esto produce a una nueva
versión con esto se tiene que entrenar al usuario para que pueda usar
estas nuevas funciones del software.

1.3.- Necesidad de mantenimiento.
Este proceso es necesario para asegurar el correcto funcionamiento del software
según los requerimientos del usuario.
Se hace mantenimiento en los siguientes casos.
-Solucionar fallas.
-Mejorar el diseño.
-Implementar mejoras
-Conexiones con otro software.
-Adaptar hardware, software Y telecomunicaciones que faciliten al usuario.
-Migrar legacy software.
-Retire software.

5-2 SWEBOK® Guide V3.0
Breakdown of Topics for the
Software Maintenance KA

1.4 Mayoría de los costos de mantenimiento
El mantenimiento consume una parte importante de los recursos financieros en el
ciclo de vida del software.
Estudios y encuestas a lo largo de los años han indicado que la mayor parte, más
del 80 por ciento, del mantenimiento del software es utilizado para acciones no
correctivas.
Los costos de mantenimiento incluyen lo siguiente:
●El entorno operativo se refiere al hardware. y software.
●El entorno organizacional se refiere a políticas, competencia, proceso,
producto y personal.

1.5. Evolución del software
Durante un período de veinte años, la investigación condujo a la formulación de
ocho "Leyes de la evolución". Los hallazgos clave incluyen un Propuesta de que
el mantenimiento es un desarrollo evolutivo y que se ayuda a las decisiones de
mantenimiento.
El gran software existente nunca está completo y continúa evolucionando; a
medida que evoluciona, se vuelve más complejo.

1.6. Categorías de mantenimiento
Tres categorías de mantenimiento tienen definido: correctivo, adaptativo y
perfectivo. IEEE 14764 incluye un cuarto categoría: preventivo.
●Mantenimiento correctivo
●Mantenimiento adaptativo
●Mantenimiento perfectivo
●Mantenimiento preventivo

IEEE Xplore - Evolution of Software

IEEE Xplore - Categories of Maintenance

5-2 SWEBOK® Guide V3.0
Breakdown of Topics for the
Software Maintenance KA

2. Cuestiones clave en el mantenimiento del software
Se presenta algunos de los problemas técnicos y de gestión relacionados con el
mantenimiento del software que han sido agrupados bajo los siguientes títulos:

A.Problemas técnicos
B.Asuntos gerenciales
C.Estimación de costos de mantenimiento
D.Medicion de mantenimiento de software

A.Problemas técnicos
Comprensión
limitada
Se refiere a la rapidez con la
que un desarrollador puede
comprender dónde hacer un
cambio en un software que
no desarrolló
Pruebas
La prueba de regresión
es un concepto de
prueba importante en el
mantenimiento.
Análisis de
impacto
Describe cómo realizar, de
manera rentable, un
análisis del impacto de un
cambio en el software.
Mantenibilidad
Es la capacidad del
producto de software
para ser modificado

B. Asuntos gerenciales
Outsourcing ●
Las organizaciones están
subcontratando carteras completas de
software, incluido el mantenimiento.
Aspectos organizativos
del mantenimiento


Describen cómo identificar qué
organización será responsable del
mantenimiento del software
Proceso ●
Se refiere al proceso del ciclo de
vida del software.
Dotación de personal ●
La dotación de personal se refiere a
cómo atraer y mantener al personal
de mantenimiento de software.
Alineación con los
objetivos
organizacionales

Describen cómo demostrar el retorno
de la inversión de las actividades de
mantenimiento de software

C. Estimación de costos de mantenimiento
Estimación de
costos
Las estimaciones de costos de mantenimiento se ven
afectadas por muchos factores técnicos y no técnicos.
Modelos
paramétricos
El modelado paramétrico de costos se ha aplicado al
mantenimiento de software.
Experiencia
Se utiliza a menudo para estimar el esfuerzo de
mantenimiento.

IEEE - Technical issues in Software Maintenance

IEEE - Cost estimation in software maintenance

5-2 SWEBOK® Guide V3.0
Breakdown of Topics for the
Software Maintenance KA

Se presenta algunos de los problemas técnicos y de gestión relacionados con el
mantenimiento del software que han sido agrupados bajo los siguientes títulos:

A.Problemas técnicos.
B.Asuntos gerenciales.
C.Estimación de costos de mantenimiento.
D.Medición del mantenimiento de software.
Hay varias medidas de software que pueden derivarse de los atributos del software.

-El tamaño, la complejidad, la calidad, la capacidad de mantenimiento y el esfuerzo.



2. Cuestiones clave en el mantenimiento del software

Medidas específicas


Se debe determinar qué medidas son apropiadas para una organización específica en función
del contexto de esa organización.

• Medidas para identificar las partes que deben modificarse.
• Medidas para una modificación específica.
• Medidas del comportamiento inesperado del software.

5-2 SWEBOK® Guide V3.0
Breakdown of Topics for the
Software Maintenance KA

3. Proceso de mantenimiento

Modelo Madurez :: Capacidad de mantenimiento de Software > Metodologías Ágiles
Implementación del proceso
Análisis de problemas y modificaciones Revisión de mantenimiento / aceptación
Implementación de la modificación
Retiro de software. Migración (Aplicación, Sistema, Cloud)

3.2. Actividades de mantenimiento
El proceso de mantenimiento contiene las actividades y tareas necesarias
para modificar un producto de software existente preservando su integridad.
Muchas actividades de mantenimiento son similares a las del desarrollo de
software. Los encargados del mantenimiento realizan análisis, diseño,
codificación, pruebas y documentación. Deben realizar un seguimiento de los
requisitos en sus actividades, tal como se hace en el desarrollo, y actualizar la
documentación a medida que cambian las líneas de base.
ANÁLISIS > DISEÑO > CODIFICACIÓN > PRUEBAS > DOCUMENTACIÓN

3.2.1. Actividades propias de mantenimiento.
Hay una serie de procesos, actividades y prácticas que son exclusivos del mantenimiento de
software:
• Comprensión del programa: actividades necesarias para obtener un conocimiento general de lo
que hace un producto de software y cómo funcionan juntas las partes.
• Aceptación / rechazo de la solicitud de modificación: los encargados de mantenimiento pueden
rechazar las modificaciones que soliciten trabajo más allá de un cierto tamaño / esfuerzo /
complejidad y desviarlas a un desarrollador.
• Análisis de impacto: una técnica para identificar áreas impactadas por un cambio potencial;
• Acuerdos de nivel de servicio de mantenimiento (SLA) y licencias y contratos de
mantenimiento: acuerdos contractuales que describen los servicios y los objetivos de calidad.

3.2.2. Actividades de apoyo.
Los encargados del mantenimiento también pueden realizar actividades de soporte, como
documentación, verificación y validación, resolución de problemas, aseguramiento de la calidad del
software, revisiones y auditorías.
3.2.3. Actividades de planificación de mantenimiento.
La actividad de planificación de lanzamiento / versión requiere que el encargado de mantenimiento:
• Recopilar las fechas de disponibilidad de solicitudes.
• Estar de acuerdo con los usuarios sobre el contenido de lanzamientos / versiones posteriores,
• Evaluar el riesgo de una liberación determinada y desarrollar un plan de retirada en caso de que surjan
problemas
• informar a todas las partes interesadas.
Mientras que los proyectos de desarrollo de software suelen durar desde algunos meses hasta
algunos años, la fase de mantenimiento suele durar muchos años.

3.2.4. Gestión de la configuración de software
Los procedimientos de gestión de la configuración del software deben permitir la
verificación, validación y auditoría de cada paso necesario para identificar,
autorizar, implementar y liberar el producto de software. No basta con realizar un
seguimiento de las solicitudes de modificación o los informes de
problemas. Se debe controlar el producto de software y cualquier cambio
que se le realice. Este control se establece mediante la implementación y
aplicación de un proceso de gestión de configuración de software aprobado.
revisiones y auditorías deben seleccionarse en conjunto con todos los demás
procesos para lograr el nivel de calidad deseado.

Búsqueda palabra clave: Software Maintenance Process
(proceso de mantenimiento de software)
329,823
resultados

www.sciencedirect.com
266,064
resultados


Artículos de
investigación

5 Años de
Antigüedad

93,290
resultados



Ciencias de la
Computación


578
resultados

António Amado, Fernando Paulo Belfo,
Maintenance and Support Model within the ERP
Systems Lifecycle: Action Research in an
Implementer Company,
Procedia Computer Science,
Volume 181,
2021,
Pages 580-588,
ISSN 1877-0509,
https://doi.org/10.1016/j.procs.2021.01.205.

Modelo de Mantenimiento y Soporte dentro del
Ciclo de vida de los sistemas ERP: investigación activa
en una empresa implementadora
Maintenance and Support Model within the
ERP Systems Lifecycle: Action Research
in an Implementer Company

5-2 SWEBOK® Guide V3.0
Breakdown of Topics for the
Software Maintenance KA

TÉCNICAS PARA EL MANTENIMIENTO
DEL SOFTWARE
TECHNIQUES FOR MAINTENANCE
MATERIAL DE REFERENCIA
SWEBOK® Guide V3.0
Topics for the Software Maintenance KA

•4.1. Conocimiento del programa |
Program Comprehension [2*, c6, c14s5]







Facilitar el entendimiento de la forma en que esta digitado el codigo fuente, a fin de
reducir el tiempo de asimilación y poder proyectar los cambios o correcciones
necesarias cuando sean solicitadas.
Los navegadores de código son herramientas clave para la comprensión de programas y
se utilizan para organizar y presentar el código fuente.
La documentación clara y concisa también puede ayudar en la comprensión del
programa.

•4.2. REINGENIERÍA | Reengineering [2*, c7]



La reingeniería se define como el examen y la alteración del software para reconstituirlo en una nueva
forma, esta incluye la implementación posterior de nuevo producto.
Por lo general, NO se lleva a cabo para mejorar la capacidad de mantenimiento, sino para reemplazar
el software heredado obsoleto.
La refactorización es una técnica de reingeniería que tiene como objetivo reorganizar un programa
sin cambiar su comportamiento.
Busca mejorar la estructura de un programa y su mantenibilidad.
Las técnicas de refactorización se pueden utilizar durante cambios menores.
reestructurar (el código fuente de una aplicación o pieza de software) para mejorar el funcionamiento
sin alterar la funcionalidad.
Se puede pedir a los desarrolladores que revisen la arquitectura y, cuando sea posible, que refactoricen
el código para crear componentes más pequeños y manejables.

●Reconstruir el código fuente
de un software
●Entender las reglas de un
protocolo de comunicación.
Con la ayuda de un sniffer, una herramienta de software
para analizar el tráfico de datos en una red,
●Crear el modelo de un
software con posterioridad

PUNTOS ABORDAR

– Reducir la complejidad del sistema: al intentar comprender el software se facilita su mantenimiento y la
complejidad existente disminuye.
– Generar diferentes alternativas: del punto de partida del proceso, principalmente código fuente, se generan
representaciones gráficas lo que facilita su comprensión.
– Recuperar y/o actualizar la información perdida (cambios que no se documentaron en su momento): en la
evolución del sistema se realizan cambios que no se suele actualizar en las representaciones de nivel de abstracción más
alto, para lo cual se utiliza la recuperación de diseño.
– Detectar efectos laterales: los cambios que se puedan realizar en un sistema puede conducirnos a que surjan
efectos no deseados, esta serie de anomalías puede ser detectados por la ingeniería inversa.
– Facilitar la reutilización: por medio de la ingeniería inversa se pueden detectar componentes de posible
reutilización de sistemas existentes, pudiendo aumentar la productividad, reducir los costes y los riesgos de
mantenimiento.
Beneficios de Ingeniería Inversa del Software

4.3. LA INGENIERÍA INVERSA | Reverse
Engineering [1*, c6s2] [2*, c7, c14s5]

Analiza el software para identificar: Componentes del software y sus interrelaciones y para crear
representaciones del software en otra forma o en niveles más altos de abstracción.
La ingeniería inversa es pasiva; no cambia el software ni da como resultado un nuevo software.
Los esfuerzos de ingeniería inversa producen gráficos de llamadas y gráficos de flujo de control a
partir del código fuente.
Un tipo de ingeniería inversa es la redocumentación.
Otro tipo es la recuperación del diseño.
Finalmente, la ingeniería inversa de datos, en la que los esquemas lógicos se recuperan de bases de
datos físicas, ha ganado importancia en los últimos años.
Las herramientas son clave para la ingeniería inversa y tareas relacionadas, como la redocumentación
y la recuperación del diseño.

EXPLORACIÓN DE INFORMACIÓN:
Program Comprehension

EXPLORACIÓN DE INFORMACIÓN: Reengineering

EXPLORACIÓN DE INFORMACIÓN:
Reverse Engineering

5-2 SWEBOK® Guide V3.0
Breakdown of Topics for the
Software Maintenance KA

4.4. MIGRATION (1 *,
c5s5)
•Durante la vida útil del software, es posible que deba modificarse para correr en
diferentes entornos.
•Debe de haber un plan de migración que cubra los requisitos de migración,
herramientas de migración, conversión de producto y datos, ejecución, verificación
y soporte

MIGRACIÓN IMPLICA UNA SERIE DE ACTIVIDADES:
Notificación de Intenciónperaciones Paralelas
Operaciones Paralelas
Notificación Finalización

Operaciones Paralel

4.5. RETIREMENT (1 *,
c5s6)
●Este análisis debe incluirse en el plan de retiro, que cubre los requisitos de retiro,
impacto, reemplazo, cronograma y esfuerzo.
●La accesibilidad de copias de archivo de datos también puede ser incluido. Retirar el
software implica una serie de actividades análogas a la migración.

5. SOFTWARE MAINTENANCE TOOLS
(1 *, c6s4 2 *, c14)
•Este tema abarca herramientas que son particularmente
importante en el mantenimiento de software donde
exista que se está modificando el software.

Ejemplos con respecto a la comprensión del
programa incluyen:


. División de programas

. Analizadores estáticos

. Analizadores dinámicos

. Analizadores de flujo de datos

. Referencias cruzadas

. Analizadores de dependencia

MATRIX OF TOPICS VS REFERENCE MATERIAL

MATRIX OF TOPICS VS REFERENCE MATERIAL

EXPLORACIÓN DE LA INFORMACIÓN
FUENTE: IEEE XPLORE

EXPLORACIÓN DE LA INFORMACIÓN
FUENTE: ACM DIGITAL
LIBRARY

GRACIAS.
Tags