This post originally appeared on steadbytes.com
See the first post in The Pragmatic Programmer 20th Anniversary Edition series for an introduction.
Would a blackboard-style system be appropriate for the following applications? Why, or why not?
Image processing. You’d like to have a number of parallel processes grab chunks of an image, process them, and put the completed chunk back.
Group calendaring. You’ve got people scattered across the globe, in different time zones, and speaking different languages, trying to schedule a meeting.
Network monitoring tool. The system gathers performance statistics and collects trouble reports, which agents use to look for trouble in the system
- No. Processing chunks of an image in parallel doesn't have complex interactions and/or feedback between processes; an image produces a fixed set of tasks, where the completion of one task doesn't inform the completion of another task. A simple queue would suffice in this case.
- Yes. There are multiple people (processes) operating at different times without direct interaction. However the decisions made by each person feedback into further decisions made by others. For example, one person can put up a time where they're definitely not available which may inform which times other people say they are available.
- Yes. The performance statistics and problem reports are gathered both independently and non-deterministically (things happen when they happen). Furthermore, a single statistic or problem report may not be an issue but some combination of statistics of given value and problem reports may signal trouble. Many such combinations are possible and separate agents (human or machine) can search the blackboard for a specific issue.