Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación

18
Lenguajes de Programación: Hilos, Ciclo de Vida, sincronización, Animación Autor(es ): Mtr. Luis Fernando Aguas

Transcript of Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación

Page 1: Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

18

Productos

PBS

NQS

IBM - Tivoli Workload Scheduler

JMS