Bayesian Belief Networks and other modeling to enhance collaboration between programmers and other disciplines

In my experience, programs involving software often have the intention of automating or otherwise encapturing expertise for reproduction in a reliable and repeatable manner. In such cases, a common issue is effectively extracting the knowledge from the domain experts and confirming the "data" and "processes" gleamed from the domain expert.

One method that I have often proposed and championed is the use of Bayesian Belief Networks, especially causal networks. The main value of Bayesian Belief Networks in this context is they are understandable by technical and non-technical folks alike, as an acyclic directed graph of direct dependencies and local distributions is an intuitive structure. Furthermore, I think both the programmer/software architect and the domain expert benefit from the exercise in developing the model. The domain expert often benefits in becoming more secure in understanding their knowledge from seeing it represented as a model and thinking about it in terms of probabilities. In general, software architects generally are concrete sequential people and benefit from seeing the knowledge represented in a structured, probabilistic method.

The downside to Bayesian Network modeling is a difficult exercise for someone not familiar with the process, and may take several iterations to provide a decent model. In addition, the current crop of Bayesian networking tools are very immature and do not deliver an experience anywhere near that of a Microsoft Excel or similar widely known software tool.

I look forward to hearing your thoughts on this on Twitter @brianmokeefe