views:

755

answers:

4

I've been interested in the Blackboard pattern for years (especially back when I was studying AI), however I still haven't been able to find a good implementation of it outside of academia, although it seems a very useful pattern for the current trends in software development, I can't think of any big framework built around the pattern.

Does anyone here know of success or failure stories related to this pattern?

Note: Other links

Edit: Now I'm wondering if the pattern might have use as a pattern for a mashup-able ecosystem or something like that

Edit: After investigating some more I found an interesting paper which proposes stuff like Wikipedia is a Blackboard however it depends on Humans as agents. That just led me to realize StackOverflow is pretty much a Blackboard system, with us as agents, sharing our expert knowledge about the undetermined problems set on the board... anyways its some food for thought.

+2  A: 

The blackboard pattern is good for collaborative applications. Other than that I tend to think it's really not a very good idea.

The blackboard has a tendency to end up as a big bag of shared state that create all sorts of interesting access patterns. Modern languages and techniques all try to encapsulate and control state management as much as possible, the blackboard is quite the opposite.

The times I have found it used in algorithms its usually a tell-tale sign of not having a proper up-front understanding of the problem to be solved. So "to be on the safe side", you make too much state available to too many actors.

I have removed this pattern from two applications and replaced it with good, solid interfaces that represented the actual functionality and data-requirements, and it was a success both times ;)

krosenvold
So your assessment is that the pattern isn't that cool after all. Myself I haven't found a problem that required one, but I've been itching for years to use it but never found a good use for it. Your answer may be the reason why.. anyways for now I hope to hear a few more opinions. Thanks
Robert Gould
@Robert Gould Sorry, but yes ;) I also liked it when I worked with AI systems, but that was 10 years ago: If I worked with AI today I suspect I'd still dislike it. Or maybe it works good in that domin. Can't be 100% sure of which it is ;)
krosenvold
+2  A: 

Have a look at tuplespaces and its implementations. It never had a big impact, but still an interesting approach towards building distributed applications.

+2  A: 

It's common in C4I systems, where many of the actors updating the state are human, but some are software agents.

I've also seen Tuple spaces used in SCADA systems, but usually not called as such, and without so much of an emphasis on the software agent aspect. (though usually there is a simple rule system connected to the space for monitoring)

Pete Kirkham
A: 

My view is that a blackboard pattern would work very fine when you have a constrained set of data, which several actors can work on in parallel, and where the dataset should be refined and re-refined. It allows for actors to be written completely seperate, with a very simple interface, and all running asynchronously.

As a good candidate for this would be our system.

Our vision system has some fundamental data (images) and we have many algorithms that produce new data from these. Very often we see that one algorithm could make good use of information that other algorithms produce, but we have very poor ways of sharing these, as normal arguments through messages in a oo-system would quickly make a list to large to handle. Also we have the problem that some information we find late in the process could improve earlyer guesses, but doing this would require more pipelining of arguments.

Unfortunately would such a refactoring require more resources than we currently have :(

daramarak