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

Post on 15-Apr-2017

47 views 0 download

Transcript of 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

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

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

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

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

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

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

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

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

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)

11

Prototipaje (II)

Especificaciones incompletas

Selección del prototipo

Desarrollo delprototipo

Evaluación delprototipo

Especificaciones completas

Fase de prototipado

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

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

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?

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

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

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?

18

Productos

PBS

NQS

IBM - Tivoli Workload Scheduler

JMS