Implémentation Java moderne de Blackboard Pattern?

11

Y a-t-il de la place pour une application moderne et pratique en Java du Blackboard Pattern détaillé dans "The Pragmatic Programmer" ? Existe-t-il une bibliothèque particulière qui tente d'aider à la mise en œuvre de ce concept? Quel est le consensus général sur ce modèle dans la communauté actuelle des logiciels (en particulier Java)?

Bien que l'idée soit intrigante, j'ai le sentiment que cette partie du livre peut être dépassée.

Dans le cas où vous n'êtes pas familier avec ce concept: http://flylib.com/books/en/1.315.1.55/1/

smp7d
la source
Pourrait également vérifier cela: stackoverflow.com/questions/1204667/…
Steven Evers
Le premier lien de la question est rompu. Le second est un long article qui va dans une profondeur raisonnable sur plusieurs autres modèles, puis répertorie les tableaux noirs comme liés, mais ne dit rien à leur sujet. Quelqu'un connaissant le terme peut-il modifier la question et ajouter une brève définition ou un exemple?
Jules
@Jules Quelques lectures: flylib.com/books/en/1.315.1.56/1 et en.wikipedia.org/wiki/Blackboard_system
CET UTILISATEUR A BESOIN D'AIDE

Réponses:

6

Mon opinion est que la plupart des frameworks modernes d'injection de dépendance sont plus ou moins une implémentation du modèle de tableau blanc pour l'architecture d'application. Google Guice en particulier vous permet d'obtenir des instances particulières d'un objet à partir de "l'injecteur" (ou du tableau blanc comme vous aimeriez l'appeler) en annotant les objets qu'il crée de plusieurs façons (y compris par nom en utilisant l'annotation @Named) . Il permet également à différents modules de collaborer pour apporter des services à l'injecteur (tableau blanc).

Spring est similaire, chaque fichier XML de contexte (par exemple) peut contribuer et utiliser des objets du contexte Spring (tableau blanc).

OSGi et son registre de services sont un autre exemple d'implémentation d'un tableau blanc. Voici une description de la façon dont OSGi utilise et prend en charge le modèle de tableau blanc pour son inversion du contrôle de la gestion des événements dans les systèmes OSGi.

Voici un didacticiel sur la relation entre les modules dynamiques Spring, OSGi et le modèle de tableau blanc (page 51).

D'après mon expérience, Guice en particulier est également très puissant pour prendre en charge votre propre implémentation du modèle de tableau blanc. Si la plupart de vos objets sont injectés à partir de l'injecteur Guice (tableau blanc), il est facile de les injecter avec tout autre tableau blanc dont une classe particulière a besoin. Vous pouvez donc amorcer un tableau blanc spécifique (par exemple, un contenant des faits sur votre domaine) en utilisant le tableau blanc de l'architecture d'application Guice. (Vous pouvez faire de même avec Spring, OSGi ou plusieurs autres aussi bien que peut-être pas aussi directement).

pingouin flamant
la source
3
Au cas où quelqu'un d'autre s'interrogerait à ce sujet, les tableaux blancs et les tableaux noirs semblent être des termes interchangeables. Les tableaux blancs sont ce que Barbara Liskov les appelait, mais ce terme semble avoir (surtout) été utilisé, au profit des tableaux noirs.
Wouter
2

Eh bien, les modèles de conception sont exactement cela; modèles conceptuels pour le développement d'algorithmes, pas nécessairement des implémentations dudit modèle qui fonctionnent dans le cas général. En tant que telles, les bibliothèques qui fournissent des fonctionnalités "intégrées" peuvent utiliser un modèle particulier, et peuvent même être des exemples brillants de l'utilisation dudit modèle, mais elles ne sont PAS LE modèle. Vous n'avez pas besoin d'une classe StrategyProvider qui peut être configurée pour répondre à n'importe quel besoin, il vous suffit de définir un ensemble de classes et de les structurer pour suivre le modèle de stratégie.

L'idée intrigue. Il semble que cela fonctionnerait bien pour l'organisation de documents, les diagrammes de flux, les réseaux sociaux, etc. etc. Cependant, sa mise en œuvre dans chacun de ces scénarios serait assez différente, et bien qu'il y ait chevauchement, il peut être impossible de créer une mise en œuvre qui réponde aux exigences de tous ces scénarios, sans présenter "d'effet de plate-forme interne" (un objet / bibliothèque / application si complexe et configurable qu'il devient fondamentalement une réimplémentation de l'IDE utilisé pour le construire).

KeithS
la source
1
Je pense que les retaggers sont devenus un peu trop zélés. Je considérerais cela plus comme un modèle architectural que comme un modèle de conception. Plus conforme à SOA qu'au modèle d'usine. Peut-être que je n'aurais pas dû utiliser le mot 'pattern'
smp7d
Je pense que ma réponse est valable; Blackboard est un "modèle" utilisé pour créer des implémentations spécifiques aux exigences, et le modèle lui-même n'est pas destiné à avoir une implémentation de cas général. Votre exemple de SOA n'est encore qu'un concept; vous ne pouvez pas construire un "moteur SOA" significatif sans savoir quelle sera l'utilisation prévue (le WCF de Microsoft peut être considéré comme un "moteur SOA", mais en réalité c'est une architecture proxy qui peut être appliquée à une conception SOA pour simplifier les communications détails; c'est inutile sans votre implémentation et les frontières de la plate-forme interne, mais c'est .NET donc nous nous attendons à ce que).
KeithS
Votre réponse n'est certainement pas sans mérite. Cependant, il peut y avoir des technologies qui aident à l'utilisation de ce modèle. Le fait qu'il n'y ait pas d'implémentation unifiée de la fonctionnalité de service Web pour satisfaire toutes les exigences ne signifie pas qu'il n'y a pas de bibliothèques et de packages en Java pour vous aider dans ce domaine. Néanmoins, je modifierai ma question pour la clarifier. Merci.
smp7d
0

OpeBBS (Open BlackBoard System) ressemble à une implémentation Java pour prendre en charge l'utilisation du modèle Blackboard.

Depuis leur site Web :

OpenBBS est un système de tableau noir ouvert et extensible pour le développement de workflows flexibles. La flexibilité est obtenue grâce à l'adoption du modèle de tableau noir. OpenBBS est modulaire et intégrable, ce qui en fait une solution légère pour les flux de travail.

La source, le pot et le javadoc peuvent être trouvés sur Sourceforge . Le Javadoc semble mentionner la plupart des classes auxquelles vous vous attendez (Blackboard, BlackboardControl, ControlPlan, KnowledgeSource, ...).

Le seul inconvénient est que la dernière version (et la seule?) Semble être de 2007.

Wouter
la source