• Knowledge base - a declarative representation of the expertise, often in IF THEN rules;
• Working storage - the data which is specific to a problem being solved;
• Inference engine - the code at the core of the system which derives recommendations from the knowledge base and problem-specific data in working storage;
• User interface - the code that controls the dialog between the user and the system.
To understand expert system design, it is also necessary to understand the major roles of individuals who interact with the system. These are:
• Domain expert - the individual or individuals who currently are experts solving the problems the system is intended to solve;
• Knowledge engineer - the individual who encodes the expert's knowledge in a declarative form that can be used by the expert system;
• User - the individual who will be consulting with the system to get advice which would have been provided by the expert.
Many expert systems are built with products called expert system shells. The shell is a piece of software which contains the user interface, a format for declarative knowledge in the knowledge base, and an inference engine. The knowledge engineer uses the shell to build a system for a particular problem domain.
Expert systems are also built with shells that are custom developed for particular applications. In this case there is another key individual:
• System engineer - the individual who builds the user interface, designs the declarative format of the knowledge base, and implements the inference engine.