![Page 1: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación](https://reader035.vdocumento.com/reader035/viewer/2022070602/587433e21a28ab72188b81fb/html5/thumbnails/1.jpg)
Lenguajes de Programación: Hilos, Ciclo de Vida, sincronización, Animación
Autor(es): • Mtr. Luis Fernando Aguas
![Page 2: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación](https://reader035.vdocumento.com/reader035/viewer/2022070602/587433e21a28ab72188b81fb/html5/thumbnails/2.jpg)
2
Problemas y Causas
• Problemas– Proyectos fuera de plazo– Desajuste con el
presupuesto– Baja calidad– No cumplir las
especificaciones– Código no mantenible
• Causas– Disciplina joven– Naturaleza del software– Complejidad– Gestión
![Page 3: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación](https://reader035.vdocumento.com/reader035/viewer/2022070602/587433e21a28ab72188b81fb/html5/thumbnails/3.jpg)
3
• Para obtener un producto software final se distinguen una serie de fases diferenciadas
• El conjunto de estas fases, cómo se organizan y cómo se relacionan es lo que se conoce como el ciclo de vida del software
• Existen diferentes ciclos de vida
Ciclo de vida
![Page 4: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación](https://reader035.vdocumento.com/reader035/viewer/2022070602/587433e21a28ab72188b81fb/html5/thumbnails/4.jpg)
4
Proceso Ingeniería – C. Vida Clásico
Análisis
Especificación
Diseño
Implementación
Pruebas
Mantenimiento
Análisis
Generación
Selección
Especificación
Implementación
Mantenimiento
![Page 5: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación](https://reader035.vdocumento.com/reader035/viewer/2022070602/587433e21a28ab72188b81fb/html5/thumbnails/5.jpg)
5
• Análisis y toma de requerimientos (analistas)– Consiste en determinar qué ha de hacer el sistema
• Especificación (analistas)– Formalización de los requerimientos
• Diseño (arquitectos)– Elección de la arquitectura y planificación del sistema
• Implementación (programadores)– Codificación del sistema
• Testing (testers)– Verificación de que todo funcionar conforme a la especificación
• Instalación (deployers)• Mantenimiento (explotación)
Ciclo de vida: algunas definiciones
![Page 6: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación](https://reader035.vdocumento.com/reader035/viewer/2022070602/587433e21a28ab72188b81fb/html5/thumbnails/6.jpg)
6
Ciclo de vida en cascada (I)
• El más tradicional• No se empieza una fase
hasta que ha acabado la anterior
• Cada fase genera documentación que es la entrada de la siguiente
• Cada fase puede tener personal especializado
Análisis
Especificación
Diseño
Implementación
Pruebas
Mantenimiento
![Page 7: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación](https://reader035.vdocumento.com/reader035/viewer/2022070602/587433e21a28ab72188b81fb/html5/thumbnails/7.jpg)
7
Ciclo de vida en cascada (II)• Ventajas
– Planificación “sencilla”– Calidad del producto– Permite trabajar con perfiles
con grados de especialización (y sueldos) diferentes en cada fase
• Inconvenientes– Normalmente los
requerimientos nunca están al 100% bien definidos
– Si ha habido errores, es difícil volver a una fase anterior
– No hay producto hasta el final– Difícil determinar el progreso
real– Lento– Mayor coste
![Page 8: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación](https://reader035.vdocumento.com/reader035/viewer/2022070602/587433e21a28ab72188b81fb/html5/thumbnails/8.jpg)
8
Ciclo de vida iterativo (I)
Análisis
Especificación
Diseño
Implementación
Pruebas
Versión 1
Análisis
Especificación
Diseño
Implementación
Pruebas
Versión 2
![Page 9: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación](https://reader035.vdocumento.com/reader035/viewer/2022070602/587433e21a28ab72188b81fb/html5/thumbnails/9.jpg)
9
Ciclo de vida iterativo (II) • Ventajas
– Planificación sencilla– Calidad del producto– Permite trabajar con personal
poco cualificado en algunas etapas
– Se tienen versiones antes de acabar el proyecto
– Disminuye los problemas por toma de requerimientos incorrecta
• Inconvenientes– No hay producto hasta el final– Difícil determinar el progreso
real– Lento– Mayor coste
![Page 10: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación](https://reader035.vdocumento.com/reader035/viewer/2022070602/587433e21a28ab72188b81fb/html5/thumbnails/10.jpg)
10
• Se construye un prototipo antes de hacer el producto final
• Útil cuando se usan nuevas tecnologías o que no se conocen o cuando los requerimientos son muy vagos
• Permite evaluar si la solución adoptada es satisfactoria antes de implementar toda la funcionalidad
Prototipaje (I)
![Page 11: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación](https://reader035.vdocumento.com/reader035/viewer/2022070602/587433e21a28ab72188b81fb/html5/thumbnails/11.jpg)
11
Prototipaje (II)
Especificaciones incompletas
Selección del prototipo
Desarrollo delprototipo
Evaluación delprototipo
Especificaciones completas
Fase de prototipado
![Page 12: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación](https://reader035.vdocumento.com/reader035/viewer/2022070602/587433e21a28ab72188b81fb/html5/thumbnails/12.jpg)
12
Ciclo de vida evolutivo• Se usa en proyectos
donde se van conociendo los requerimientos poco a poco
• En cada iteración se implementa el requerimiento que se conoce
• Al final de cada iteración tenemos una versión
![Page 13: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación](https://reader035.vdocumento.com/reader035/viewer/2022070602/587433e21a28ab72188b81fb/html5/thumbnails/13.jpg)
13
Ciclo de vida en espiral
• Conocemos todos los requerimientos al principio (no es evolutivo)
• En cada iteración:– Planificación: selección
de requerimientos– Análisis de riesgos– Implementación– Evaluación por parte del
cliente
![Page 14: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación](https://reader035.vdocumento.com/reader035/viewer/2022070602/587433e21a28ab72188b81fb/html5/thumbnails/14.jpg)
14
• Normalmente un sistema se construye por más de una persona (o equipo)
• Cada desarrollador trabaja de formaaislada en su código y su máquina
• En la fase de integración se pone en común el trabajo de todos los desarrolladores
• Muchos problemas: las piezas no “encajan”, el testeo se hace tedioso, se introducen defectos, siempre lleva más tiempo del previsto (a veces MUCHO más), etc.
¿Qué es la integración?
![Page 15: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación](https://reader035.vdocumento.com/reader035/viewer/2022070602/587433e21a28ab72188b81fb/html5/thumbnails/15.jpg)
15
• Los desarrolladores integran muy a menudo (al menos una vez al día) todo su trabajo
• Detecta malentendidos rápidamente
• La integración forma parte del trabajodiario conviertiéndolo en un procesomucho más previsible que si fuera un último gran paso
• Generalmente se tiene un entorno de integración automatizado que informa de posibles problemas a los desarrolladores tan pronto se producen
Integración continua
![Page 16: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación](https://reader035.vdocumento.com/reader035/viewer/2022070602/587433e21a28ab72188b81fb/html5/thumbnails/16.jpg)
16
• Una llamada o petición síncronabloquea al llamador hasta que la operación invocada no termina
• Una llamada o petición asíncrona devuelve el control inmediatamente al llamador. Tanto el llamador como la operación llamada pueden mantener flujos de ejecución separados y concurrentes
Sincronía y asincronía
![Page 17: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación](https://reader035.vdocumento.com/reader035/viewer/2022070602/587433e21a28ab72188b81fb/html5/thumbnails/17.jpg)
17
1. El cliente (llamador) hace la petición asíncrona
2. El servidor encola la petición del cliente en una cola de tareas a hacer
3. El servidor va ejecutando las tareas de la cola según la carga que pueda soportar y las políticas que se hayan definido (número de tareas simultáneas, prioridades, etc.)
¿Cómo implementar la asincronía?
![Page 18: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación](https://reader035.vdocumento.com/reader035/viewer/2022070602/587433e21a28ab72188b81fb/html5/thumbnails/18.jpg)
18
Productos
PBS
NQS
IBM - Tivoli Workload Scheduler
JMS