2009-01-26 18 views
18

He estado interesado en el Blackboard pattern durante años (especialmente cuando estudiaba AI), sin embargo, todavía no he podido encontrar una buena implementación fuera del ámbito académico, aunque parece un patrón muy útil para el las tendencias actuales en el desarrollo de software, no puedo pensar en ningún gran marco construido en torno al patrón.¿Alguien sabe de una implementación exitosa del patrón Blackboard?

¿Alguien aquí sabe de historias de éxito o fracaso relacionadas con este patrón?

Nota: Otros enlaces

Editar: Ahora me pregunto si el patrón podría tener uso como un patrón para un mashup-poder ecosistema o algo así

Editar: Después de investigar un poco más encontré un interesante paper que propone cosas como Wikipedia es una pizarra, pero depende de los humanos como agentes. Eso solo me llevó a darme cuenta de que StackOverflow es prácticamente un sistema de Blackboard, con nosotros como agentes, compartiendo nuestro conocimiento experto sobre los problemas indeterminados establecidos en la pizarra ... de todos modos es algo de reflexión.

Respuesta

4

Tenga una mirada en tuplespaces y sus implementaciones. Nunca tuvo un gran impacto, pero sigue siendo un enfoque interesante hacia la construcción de aplicaciones distribuidas.

+0

He usado Blitz para este propósito en el pasado. ¡Funcionó bien! –

9

El patrón de pizarra es bueno para aplicaciones colaborativas. Aparte de eso, tiendo a pensar que realmente no es una muy buena idea.

La pizarra tiene una tendencia a terminar como una gran bolsa de estado compartido que crea todo tipo de patrones de acceso interesantes. Los lenguajes y las técnicas modernas intentan encapsular y controlar la gestión del estado tanto como sea posible, la pizarra es todo lo contrario.

Las veces que he encontrado que se utiliza en los algoritmos es generalmente un signo revelador de no tener una comprensión inicial adecuada del problema que se va a resolver. Entonces, "para estar seguro", usted pone demasiado estado a disposición de demasiados actores.

me han eliminado este patrón a partir de dos aplicaciones y lo reemplazó con buenas interfaces, sólidos que representaban los funcionalidad bases de datos en las necesidades reales, y fue un éxito en ambas ocasiones;)

+1

Así que su evaluación es que el patrón no es tan genial después de todo. Yo mismo no he encontrado un problema que requiera uno, pero he tenido ganas de usarlo durante años, pero nunca he encontrado un buen uso para él. Su respuesta puede ser la razón por la cual ... de todos modos por ahora espero escuchar algunas opiniones más. Gracias –

+0

@Robert Gould Lo siento, pero sí;) También me gustó cuando trabajé con sistemas de IA, pero eso fue hace 10 años: si trabajé con AI hoy, sospecho que todavía me desagrada. O tal vez funciona bien en ese dominio. No puede estar 100% seguro de cuál es;) – krosenvold

+0

Todo ese estado compartido puede ser una buena cosa en el caso de cálculos masivamente paralelos. –

3

Es común en los sistemas C4I, donde muchos de los actores que actualizan el estado son humanos, pero algunos son agentes de software.

También he visto espacios Tuple utilizados en sistemas SCADA, pero generalmente no se llaman así, y sin tanto énfasis en el aspecto del agente de software.(aunque generalmente hay un sistema de reglas simple conectado al espacio para monitorear)

5

Mi opinión es que un patrón de pizarra funcionaría muy bien cuando tiene un conjunto restringido de datos, que varios actores pueden trabajar en paralelo, y donde el conjunto de datos debe ser refinado y redefinido. Permite que los actores se escriban completamente separados, con una interfaz muy simple y todos ejecutando de forma asíncrona.

Como un buen candidato para esto sería nuestro sistema.

Nuestro sistema de visión tiene algunos datos fundamentales (imágenes) y tenemos muchos algoritmos que producen nuevos datos a partir de estos. Muy a menudo vemos que un algoritmo podría hacer un buen uso de la información que producen otros algoritmos, pero tenemos maneras muy pobres de compartirlos, ya que los argumentos normales a través de los mensajes en un oosistema harían rápidamente una lista para manejar. También tenemos el problema de que parte de la información que encontramos al final del proceso podría mejorar las suposiciones tempranas, pero hacerlo requeriría un mayor flujo de argumentos.

desgracia sería una refactorización tales requerir más recursos que hay actualmente disponibles :(

-1

Un ejemplo de una versión ligeramente modificada de la Pizarra-patrón se implementa por Mojang en Minecraft.

una entidad como zombis, ovejas representan la pizarra Cada PathfinderGoal es una fuente de conocimiento que está modificando el estado de la entidad

Para ovejas:... hierba alta si está en frente de la entidad // executeCheck -> la entidad que consume hierba y incremen ts el contador de crecimiento para lana // executeAction

Se ha modificado ligeramente porque la entidad tiene acceso al denominado PathfinderGoalSelector que es el controlador. Este controlador tiene un método tic (Minecraft está basado en ticks 20 s/s, equivalente al método de bucle). El hilo principal es recorrer cada entidad y llamar al método tic de la entidad. La entidad misma está delegando eso al PathfinderGoalSelector.

Cuestiones relacionadas