ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Patrones de diseño programacion concurrente


Enviado por   •  27 de Noviembre de 2020  •  Apuntes  •  1.734 Palabras (7 Páginas)  •  557 Visitas

Página 1 de 7


[pic 1]

“Programación Concurrente”

Alfredo Mendez Elias

Profesor

Benito Ramírez

Examen III

Grupo: 2720-IS

De la Carrera de

INGENIERÍA EN SOFTWARE

Técamac, 31 de Noviembre del 2020

INDICE

INTRODUCCIÓN        3

PATRONES DE DISEÑO        4

HALF SYNC/HALF ASYNC        4

LEADER/FOLLOWERS        5

ACTIVE OBJECT        6

MONITOR OBJECT        7

GUARDED SUSPENSION        7

FUTURE        8

THREAD SAFE INTERFACE        9

SCOPED LOCKING        9

INMMUTABLE VALUE        10

OTROS PATRONES        10

CONCLUSIÓN        10

REFERENCIAS BIBLIOGRÁFICAS        11

TABLA DE CONTENIDOS

IMAGEN 1: DIAGRAMA HALF SYNC        5

IMAGEN 2: DIAGRAMA LEADER        6

IMAGEN 3: DIAGRAMA ACTIVE OBJECT        6

 IMAGEN 4: DIAGRAMA MONITOR OBJECT        7

 IMAGEN 5: DIAGRAMA SUSPENCIÓN        8

 IMAGEN 6: DIAGRAMA FUTURE        8

 IMAGEN 7: DIAGRAMA THREAD SAFE INTERFACE        9

 IMAGEN 8: DIAGRAMA SCOPED LOCKING        9

 IMAGEN 9: DIAGRAMA INMMUTABLE VALUE        10

INTRODUCCIÓN

Un patrón de diseño es la descripción de una solución repetible a un problema frecuente dentro del diseño de software. Sin embargo, no se puede considerar que sea una solución final aplicable directamente. Se puede ver como una plantilla con una solución efectiva y probada a una clase específica de problemas dentro de un entorno determinado.

Los patrones de diseño permiten la reutilización del conocimiento aplicado al diseño de una solución particular. Es por eso que la documentación de dichas soluciones permite un vocabulario universal que facilita la comprensión de arquitecturas complejas.

Los patrones pueden ser utilizados de forma “reactiva” o “proactiva”. El primer caso corresponde a la documentación de un diseño terminado, con un formato estándar para poder almacenar el trabajo de análisis y resolución del problema en cuestión. El segundo implica la aplicación de los patrones previamente conocidos en un problema en particular, adaptándolos al entorno específico según los lineamientos que provee.

Uno de los grandes inconvenientes asociados a la mayoría de los patrones de diseño es la imposibilidad de realizar una implementación reutilizable utilizando POO. Esto quiere decir que cada vez que se desee implementar un patrón en un entorno distinto, se deberá repetir el código utilizado en otros entornos. Si bien el problema tiene varios motivos que dependen del patrón en particular, se ha hallado que muchos de esos casos tienen que ver con la falta de un mecanismo de abstracción de intereses transversales. En este trabajo se analizará el grado de avance en este sentido con la aplicación de la POA como técnica de abstracción transvers

PATRONES DE DISEÑO

El arte de un buen diseño es elegir la mejor forma de cubrir una serie de requisitos. El arte de un buen diseño de sistema concurrente a menudo es elegir el modo más simple de satisfacer las necesidades de la concurrencia.

Una de las primeras normas de los diseñadores debería ser evitar volver a inventar la rueda.

Los patrones de diseño son unas técnicas para resolver problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.

No es posible seguir aplicando técnicas clásicas para garantizar el funcionamiento de los programas concurrentes.

Los modelos clásicos:

  • Communicating Sequential Process), transacional…
  • La poo ha madurado hacia un modelo basado en la

Un Patrón define estilos, técnicas, reglas y políticas para resolver problemas de diseño determinado.

La P. Concurrente ahora consiste en:

  • Análisis y diseño del núcleo central del problema
  • Enfoque y metodología
  • Conjunto de técnicas, reglas, protocolos y algoritmos expresados como patrones

Algunos patrones han estado ligados históricamente a diseños y enfoques particulares.

Los patrones permiten expresar de forma constructiva, los pasos esenciales para la solución de un problema.

HALF SYNC/HALF ASYNC

Muchas aplicaciones concurrentes tienen procesos síncronos y asíncronos simultáneamente.

Por ejemplo, un servidor Web :

  • Recibe peticiones http de forma asíncrona
  • Ejecuta servicios de forma síncrona para no producir retrasos en la respuesta al usuario.

Es esencial coordinar los procesos síncronos y asíncronos para dar un servicio eficiente.

Descomponer los servicios de software concurrente en dos niveles separados síncrono y asíncrono y añadir un nivel intermedio de colas para permitir la comunicación entre ellos.

 

[pic 2]

IMAGEN 1: DIAGRAMA HALF SYNC

LEADER/FOLLOWERS

Muchas aplicaciones controladas por eventos utilizan varios hilos para procesar múltiples eventos concurrentemente.

  • Es muy difícil asignar tareas a los hilos de una forma simple, eficiente  y predecible.
  • En el diseño de servidores es frecuente disociar tareas y threads. (recordad los Thread Pools).

Usar un pool de threads para coordinar la detección y tratamiento de eventos. En el pool, un thread el líder espera un evento. Cuando llega, promociona a otro thread como nuevo líder y pasa a despachar el evento.

...

Descargar como (para miembros actualizados)  txt (11 Kb)   pdf (449 Kb)   docx (2 Mb)  
Leer 6 páginas más »
Disponible sólo en Clubensayos.com