Guidelines for prototyping, validation and maintenance of knowledge-based systems software