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.

A Financial Workbench - DSL for setting up data feeds and input.

A Finance Workbench – DSL for setting up data feeds and input.

Finance Workbench - a DSL to "program" a report.

Finance Workbench – a DSL to define the processing of a parameterized report.

Finance Workbench - Report as published after knowledge has been processed against the input data.

Finance Workbench – Report as published after processing the input parameters and data sets.

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 Intentional Domain Workbench, is a special Knowledge Workbench, also known as a Language Workbench, that builds other Knowledge Workbenches making heavy use of various meta technologies. It makes the definition, creation, editing, combination, extension, and processing of  Domain Languages more practical. The Intentional Domain Workbench supports the definition of schema, syntax, semantics, as well as the combination, extension, and processing of domain languages. Key features of are the uniform representation of multiple interrelated domains, the ability to project the domains in multiple editable notations, and direct access to the domain code by a program generator. The domain languages are given meaning – semantics – by applying a set of transformations to content expressed in these languages. One of these transformations is a compiler for the domain languages if a separate application is required. Users can view and run the knowledge in many forms including tables and diagrams, and can compile the knowledge into popular languages like Java, C#, JavaScript, C/C++, or Objective-C.

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
  • DSL Engineering 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.