This article describes the Blackboard design pattern. This is a
behavioral design pattern, a category of
design pattern used by software engineers, when writing computer programs.
Table of Contents
Introduction
The Blackboard pattern is a
design pattern, used in software engineering, to coordinate separate, disparate systems that need to work together, or in sequence, continually prioritizing the actors (or knowledge sources).
It is defined as a
behavioral design pattern because it affects when and how programs react and perform.
The blackboard consists of a number of stores or "global variables", like a repository of messages, which can be accessed by separate autonomous processes, which could potentially be physically separate. A "controller" monitors the properties on the blackboard
and decides which actors (or knowledge sources) to prioritize.
Benefits
The blackboard pattern allows multiple processes to work closer together on separate threads, polling and reacting if needed.
Examples of the Blackboard Pattern
A common example of this pattern is in speech recognition. Separate threads can process different parts of the sound sample, updating the blackboard with words that have been recognized. Then another process can pick up these words and perform grammar and
sentence formation. Meanwhile more words and meanings are coming in, and eventually even higher level processes can pick up the formed sentences and various alternative guesses and begin to formulate it's meaning, then further intelligence systems can start
to choose the most appropriate answer. All these systems have access to the blackboard and work together through it's central platform.
Another example is an autonomous robot, that has to perform several tasks, and must process inputs and prioritize actions.
For a complete WPF C# example of the Blackboard design pattern, see
Blackboard Design Pattern: A Practical Example - Radar Defense System
See Also
Link to domain parent articles and related articles in TechNet Wiki.
Community Resources
These are the external links, including links to Microsoft and TechNet sites that are non-Wiki- Two complementary patterns to build multi-expert systems, by Philippe Lalanda
References section
Use this section if you pulled source material and ideas from other sites, blogs, or forums. Make sure you have permission from authors to use their material.
- [Please contribute]