A Framework for the Design of Uncertain Reasoning Systems