Abstract
Knowledge-based systems have often been criticized for the limited theoretical base on which they are constructed. The partially valid view, held by many, is that systems are often constructed in an
ad hoc, individual way, which leads to unmaintainable, unreliable, and unrigorous systems. This holds even though there have been several attempts at producing development methodologies to assist the knowledge engineer in the construction process
1−7. A large contributing reason for the limited applicability of these methodologies is that they often too closely follow the waterfall model approach used for the development of conventional software systems
8. This approach forces developers to make large jumps in the system state during development, which is not necessarily the most conductive way to model the domain accurately.
The paper therefore aims to introduce a new alternative approach that shows the benefits of taking a software engineering philosophy towards the development of knowledge-based systems. The methodology breaks down the process of creating a knowledge-based system into constituent parts and discusses ways of creating rigorous specifications for those parts, as applicable. This includes specifying the knowledge base, the representation, the control architecture, etc., thus promoting quality systems that are better specified, more reliable, and easier to maintain.