Developing Smart Applications
Historically speaking, there has always been a ‘disconnect’ between developers of Knowledge Based Systems (KBS) and traditional Information Systems (IS). The primary reasons for this ‘disconnect’ is due to the different development lifecycles and programming paradigms being employed by the two respective genres. The developers of KBS have primarily preferred declarative programming languages, whereas procedural programming languages have been used by software engineers developing traditional applications.
However, with the availability of a declarative programming environment as an integral component of the Windows Workflow Foundation (WWF), the gap between the two forms of systems development will become narrower, which will in turn facilitate and accelerate the development of new generation of smart applications.
Declarative programming has always had less of a mindshare amongst the traditional software developer community who have been more accustomed to learning and using procedural languages. The notable exceptions are those individuals that have been exposed to developing KBS and have indulged in creating systems using Expert System Shells with Inference Engines like CLIPS, etc.
A declarative programming language is a language in which one codifies knowledge and asserts facts, but most importantly, it does not require the developer to specify how the facts must be utilized. This is in sharp contrast to procedural languages in which not only the facts need to be specified but how they will be put to use by the system also needs to be specified. Examples of procedural languages are all the common programming languages such as Visual Basic, C#, Java, etc.
Hence, a declarative programming language only requires that a developer specify all the known and relevant facts. Subsequently, the order in which those represented facts are utilized is dynamically determined by an Inference Engine which is typically a major component of all declarative programming environments. A much known example of a declarative programming language is Prolog in which most of the knowledge is represented as logical statements and the in-built Inference Engine automatically uses rules of deductive logic to infer new knowledge from asserted facts.
Declarative languages are generally preferred over procedural languages for developing KBS since much of research also indicates that humans store sizable chunks of knowledge in declarative form. Hence, a typical knowledge elicitation task for developing KBS revolves around extracting the declarative knowledge of the experts and representing them in the form of rules which are then put to use by the Inference Engine.
Unfortunately, because of the difference in development and programming paradigm to create a KBS as opposed to a traditional Information Systems, the two types of systems are usually created in isolation from each other utilizing different developer tools and platforms. This isolated development approach has greatly limited the possibility of designing and developing applications that are able to provide timely and meaningful Information, as well as having embedded expert-level subcomponents to support the key operational and business requirements.
With the availability of Forward Chaining Inference Rule Engine and a comprehensive declarative programming environment as part of Windows Workflow Foundation, it will become possible to seamlessly develop new, integrated and very smart applications