Knowledge Based Engineering (KBE) defines a wide range of methods and processes. We define KBE as:
Automating non-creative design tasks by utilizing object oriented programming.
It is not uncommon for KBE to be compared to knowledge-based systems (KBS) with a focus on engineering. Essentially there are no clear distinctions between the two, but generally KBS is pointed to when describing the system proposed to enable KBE.
One of the distinct characteristics of KBS is the separation of the knowledge base and the functions, which make use of the knowledge, called the inference engine. Hence, the principal difference between KBS and conventional programs is the separation of the domain knowledge and the controlling routines.
A reliable and steadily growing resource, defying the global economic trend, is computing capacity. In many fields computers and machines have replaced their human counterparts, such as time-consuming numerical processes and routine-like manufacturing processes.
Undoubtedly, once a task is fully defined, computers and machines are unparalleled in executing the task repeatedly with great speed and sustained accuracy.
To this end "computers have therefore been able to remove the tedium from many tasks that were previously performed manually".
The key phrase here is many manual tasks have been removed and a natural question would be, why not remove the tedium from all manual tasks? In order to do so, the following challenges need to be addressed by a KBS:
Only automate non-creative and routine like processes of design
Implement a modular modeling architecture with highly reusable models
Do not limit engineering creativity by allowing users to add, modify and remove models
The modeling methodology should support easy maintenance of the system