. Doberkat, E.-E. and Fox, D. (1989) but also heuristic knowledge to achieve the functionality in an efficient manner. Often, this heuristic knowledge exists only implicitly as human expertise. Large parts of this expertise are based on tacit knowledge (Berry, 1987). Knowledge acquisition is a modelling activity which tries to come up with an explicit model of this knowledge. There is a high need for tools which support this modelling process by evaluating these models. Prototyping is a very useful tool for this purpose. The development of formally correct specifications and implementations is of less concern during this activity. An exception is the work of Aben (1995) who provides a formal calculus based on a pre-and post-condition notions for inference actions.:A further difference, which probably stems from the same reason, is that knowledge specification languages make much more use of semiformal specification techniques than comparable techniques in software engineering. Actually, most of the knowledge specification languages were developed to formally refine semiformal specification techniques like the KADS model of expertise. Therefore, these languages provide strong support during the conceptual modelling process, and formal specifications are structured using different modelling primitives and knowledge types stemming from semiformal techniques. The understandability of formal specifications is improved and the process of writing formal specifications is simplified. On the one hand, the use of semiformal specification techniques can also be found in software engineering, especially by specification languages which are designed for the early phase during software development (called requirements engineering) or as a result of the current trend of object-oriented specification techniques. On the other hand, the use of modelling primitives at a high conceptual level for kbs is not just a question of emphasis but it is enabled by introducing assumptions about the type of system which can be meaningfully specified with such a language. Specification languages for kbs are special-purpose languages which provide support at a higher level by restricting their scope of applicability.
30Finally, a difference between knowledge specification languages and specification languages in Software Engineering lies in the fact that most of the latter aim for a declarative specification of the functionality of a system. They try to abstract from how this functionality is achieved. As already mentioned, in knowledge-based system development part of the "how" is regarded as essential expertise which must be specified. Therefore, an inference layer in (ML) 2 or KARL specifies the significant inferences of a problem-solving process and the task layer supplements these definitions with a control flow which should ensure an effective and efficient computation of a solution. They specify in an abstract manner (i.e., by defining control over functionally specified substeps) how a solution is achieved instead of only describing wh...