Knowledge engineering (KE) refers to all aspects involved in knowledge-based systems.
Background
Expert systems
One of the first examples of an expert system was MYCIN, an application to perform medical diagnosis. In the MYCIN example, the domain experts were medical doctors and the knowledge represented was their expertise in diagnosis.
Expert systems were first developed in artificial intelligence laboratories as an attempt to understand complex human decision making. Based on positive results from these initial prototypes, the technology was adopted by the US business community (and later worldwide) in the 1980s. The Stanford heuristic programming project led by Edward Feigenbaum was one of the leaders in defining and developing the first expert systems.
History
In the earliest days of expert systems, there was little or no formal process for the creation of the software. Researchers just sat down with domain experts and started programming, often developing the required tools (e.g. inference engines) at the same time as the applications themselves. As expert systems moved from academic prototypes to deployed business systems it was realized that a methodology was required to bring predictability and control to the process of building the software. There were essentially two approaches that were attempted:
- Use conventional software development methodologies
- Develop special methodologies tuned to the requirements of building expert systems
Many of the early expert systems were developed by large consulting and system integration firms such as Andersen Consulting. These firms already had well tested conventional waterfall methodologies (e.g. Method/1 for Andersen) that they trained all their staff in and that were virtually always used to develop software for their clients. One trend in early expert systems development was to simply apply these waterfall methods to expert systems development.
Another issue with using conventional methods to develop expert systems was that due to the unprecedented nature of expert systems, they were one of the first applications to adopt rapid application development methods that feature iteration and prototyping as well as or instead of detailed analysis and design. In the 1980s few conventional software methods supported this type of approach.
The final issue with using conventional methods to develop expert systems was the need for knowledge acquisition. Knowledge acquisition refers to the process of gathering expert knowledge and capturing it in the form of rules and ontologies. Knowledge acquisition has special requirements beyond the conventional specification process used to capture most business requirements.
These issues led to the second approach to knowledge engineering: the development of custom methodologies specifically designed to build expert systems. One of the first and most popular of such methodologies custom designed for expert systems was the Knowledge Acquisition and Documentation Structuring (KADS) methodology developed in Europe. KADS had great success in Europe and was also used in the United States.
See also
- Knowledge level modeling
- Knowledge management
- Knowledge representation and reasoning
- Knowledge retrieval
- Knowledge tagging
- Method engineering
References
- Feigenbaum, Edward; McCorduk, Pamela (1983). The Fifth Generation (1st ed.). Reading, MA: Addison-Wesley. ISBN 978-0-201-11519-2. OCLC 9324691.
- Schreiber, August Th.; Akkermans, Hans; Anjewierden, Anjo; Dehoog, Robert; Shadbolt, Nigel; Vandevelde, Walter; Wielinga, Bob (2000), Knowledge engineering and management: the CommonKADS methodology (1st ed.), Cambridge, MA: The MIT Press, ISBN 978-0-262-19300-9
External links
- Data & Knowledge Engineering – Elsevier Journal
- Knowledge Engineering Review, Cambridge Journal
- The International Journal of Software Engineering and Knowledge Engineering – World Scientific
- IEEE Transactions on Knowledge and Data Engineering
- Expert Systems: The Journal of Knowledge Engineering – Wiley-Blackwell
Knowledge representation and reasoning | |
---|---|
Expert systems | |
Reasoning systems | |
Ontology languages | |
Theorem provers | |
Constraint satisfaction | |
Automated planning |