# Right On the Blackboard!!

The blackboard model is an approach to collaborative problem solving. It used to record, coordinate, and communicate the efforts of two or more software-based problem solvers. There are two primary types of components in the blackboard model -- the Blackboard and the problem solvers.

The blackboard is a centralized object that each of the problem solvers has access to. The problem solvers may read the blackboard and change the contents of the blackboard. The contents of the blackboard at any given time will vary. The initial content of the blackboard will include the problem to be solved.

In addition to the problem to be solved, other information representing the initial state of the problem, problem constraints, goals, and objectives may be contained on the blackboard. As the problem solvers are working towards the solution, intermediate results, hypothesis, and conclusions are recorded on the blackboard. The intermediate results written by one problem solver on the blackboard may act as a catalyst for other problem solvers reading the blackboard. Tentative solutions are posted to the blackboard. If the solutions are determined not to be sufficient, these solutions are erased and other solutions are pursued. The problem solvers use the blackboard as opposed to direct communication to pass partial results and findings to each other. In some configurations the blackboard acts as a referee informing the problem solvers when a solution has been reached or whether to start work or stop work. The blackboard is an active object not simply a storage location. In some cases the blackboard determines which problem solvers to involve and what content to accept or reject for the blackboard.

The blackboard may also organize the incremental or intermediate results of the problem solvers. The blackboard may translate or interpret the work from one set of problem solvers so that it may be used by another set of problem solvers.

The problem solver is a piece of software that typically has specialized knowledge or processing capabilities within some area or problem domain. The problem solver can be as simple as a routine that converts from Celsius to Farenheit or as complex as a smart agent that handles medical diagnosis. In the blackboard model, these problem solvers are called " |

blackboards, two or more knowledge sources are needed and each knowledge source usually has a different area of focus or specialty. The blackboard is a natural fit for problems that can be divided into separate tasks that can be solved independently or semi-independently. In the basic blackboard configuration, each problem solver tackles a different part of the problem. Each problem solver only sees the part of the problem that it is familiar with. If the solutions to any part of the problem are dependent on the solutions or partial solutions to other parts of the problem, then the blackboard is used to coordinate the problem solvers and the integration of the partial solutions.

*This is an excerpt from our book, "Professional Multicore Programming: Design and Implementation for C++ Developers".*