Blackboard Pattern

The Blackboard architectural pattern is useful for problems for which no determlnlstic solution strategies are known. In Blackboard several specialized subsystems assemble their knowledge to bulld a possibly partial or approximate solution.

Example: A software system for speech recognition.

This is in contrast to functional decomposition, in which several solution steps are arranged so that the sequence of their activation is hard-coded.

The idea behind the Blackboard architecture is a collection of independent programs that work cooperatively on a common data structure. Each program is specialized for solving a particular part of the overall task, and all programs work together on the solution. These specialized programs are independent of each other. They do not call each other, nor is there a predetermined sequence for their activation. Instead, the direction taken by the system is mainly determined by the current state of progress.

A central control component (called moderator) evaluates the current state of processing and coordinates the specialized programs. This data-directed control regime is referred to as opportunistic problem solving.

The name blackboard was chosen because it is similar to the situation in which human experts sit in front of a real blackboard and work together to solve a problem. Each expert separately evaluates the current state of the solution, and may go up to the blackboard at any time and add, change or delete information. Humans usually decide themselves who has the next access to the blackboard.

Divide your system into a component called blackboard, a collection of knowledge sources, and a control component.

The blackboard is the central data store. Elements of the solution space and control data are stored here. We use the term vocabulary for the set of all data elements that can appear on the blackboard. The blackboard provides an interface that enables all knowledge sources to read from and write to it.

Problems in the Blackboard pattern:
Difficulty of testing, No good (best) solution is guaranteed, Low Efficiency, High development effort, No support for parallelism, etc.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License