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.
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.
The blackboard pattern allows multiple processes to work closer together on separate threads, polling and reacting if needed.
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
↑ Return to Top
XAML guy edited Revision 10. Comment: tweak
XAML guy edited Revision 9. Comment: added link to C# WPF example
XAML guy edited Revision 8. Comment: typo
XAML guy edited Revision 7. Comment: tweak
XAML guy edited Revision 6. Comment: spelling
XAML guy edited Revision 5. Comment: added
XAML guy edited Revision 4. Comment: tweak
XAML guy edited Revision 3. Comment: added reference
XAML guy edited Revision 2. Comment: tidied sections
XAML guy edited Revision 1. Comment: removed unneeded tag
XAML guy edited Original. Comment: spelling