The complexity of software code is the result of the intermingling of domain knowledge with implementation information. Domain Specific Languages and Generative Programming are known techniques for factoring and reducing the total complexity, but they are limited in use today and have artificial constraints to them. Domain Specific Languages have successfully been used for a long time in the software industry, but mostly as traditional text oriented languages targeted for use by software engineers.
Domain experts in a specific knowledge domain have informal ways to express knowledge that have been proven effective in that domain. For example, accountants have their own accounting language they use. These languages are great starting points of what to say and how to say it for a certain knowledge domain. Analyzing these languages, one or more domain specific languages can be developed and integrated for the domain.
The Intentional technology allows a business professional to record their knowledge into a new type of software we call a Knowledge Workbench. The knowledge workbench provides the editor to record knowledge using these languages. It integrates these languages so that business users can express and validate their domain knowledge in a correct and consistent way. A Knowledge Workbench uses a set of integrated domain languages that are chosen by the user to express their knowledge. The users embody their knowledge using the domain languages which are suitable for the domain at hand. These domain languages are not limited to text, but can use any type and mix of notation like tables, graphics, formulas, diagrams, symbols, and text. Programmers are still involved, but focused on the task they do best – creating a clean, generic and robust implementation for the domain languages and their generators.
The foundation for a workbench is a set of integrated Domain Languages. Multiple languages can be integrated together and various notations can be mixed to fit the knowledge domain closely. Existing languages and data formats can also be reused and integrated. The knowledge workbench is developed together with the domain expert. The languages are executed either using an interpreter or a generator if the knowledge is the base for a separate application.
The benefit is that Intentional technology better represents the multidisciplinary knowledge needed to solve real world problems.
The key underlying technologies are:
- Intentional Tree – provides a uniform representation of languages (schema) and knowledge (domain code) with resolution of references by identity rather than by name.
- Reversible Transformation – provides semantics to languages through a chain of bi-directional transformations between nodes in Intentional Trees.
- Projectional editor – a special reversible transformation to project domains onto a display allowing flexible notations independent of the underlying representation. Works
- in two directions: display and editing.
For a detailed description of how to create a Knowledge Workbench see Chapter 22 “DSLs for Business Users” in the book DSL Engineering.