Intentional Programming

What does Intentional Programming mean?

Intentional Programming (IP) is the name given to a development environment that can be used both for application development and for meta-programming. Application developers can use extension libraries that were implemented with the very same development environment.

The goal is to combine the different levels of design and programming in order to eliminate the barrier between design and implementation into a program source.

The models and the ASCII text are merely flip sides of the same "active" source. This active source includes methods defining its behavior in translation, representation or debugging. This way, you can even implement language abstractions for special areas of use (domains).

These language abstractions, which are called "intentions", provide a higher degree of abstraction than the object-oriented method. In object-oriented programming, you work with classes – of course, the system pre-defines the concept of a "class". In the context of IP the object-oriented class construct itself would be an "intention".

Back-end code generators map the active sources onto machine code or directly compilable source code.

IP was originally the name given to a project at Microsoft. Although the project has since been put on hold, its concepts remain just as important for us today, becoming a paradigm of its own called IP.

Priority: Economic efficiency

There are many different approaches to improve efficiency in software development. This is also a goal that IP pursues.

In principle, implementing intentions offers a higher level of abstraction than common programming languages: Intentions can define the terms and contexts of any application domain that can in turn become an active source presentable in any textual or graphic form.

This level can neither be attained by means of object-oriented programming languages nor through UML modeling tools; it is possible with application-specific programming languages, however. This is where cost-effectiveness comes in.

Application-specific programming languages cause much effort as their development only covers one application domain, or even only one application. Additional application-specific programming languages must be developed completely from scratch – and paid for all over again.

IP, on the other hand, propagates a basic development system that is uniform in nature with application-specific extension libraries. These libraries are themselves implemented in a uniform and standardized manner using the basic system. This is where the expandability and reusability of the entire system pays off.

IP more current than ever – Start-up gains wide attention

In August 2002 two well-known IT personalities, Charles Simonyi and Gregor Kiczales, established a new company devoted to IP. The strategic objective of the new company, Intentional Software Corporation (ISC), is to combine the development areas of

into one new product. This new provider confirms what Delta Software Technology has been doing all along.

Intentions and aspects – a contradiction in terms?

Aspect-oriented programming (AOP) is based on the observation that in all common programming languages – including object-oriented ones – it is not always possible to centralize a new task, property or feature with the available technology.

In other words, the implementation cannot always be done at a central location. But this is precisely what is to be done to make software easy-to-maintain.

In object-oriented systems, it’s easy to implement many new features by defining new methods or new classes. However, every OO developer has personally experienced situations where entire class hierarchies were affected by one single modification: for example, when an exception handling was belatedly introduced into already existing systems. Such requirements are called "aspects".

The term AOP summarizes techniques that allow hard-to-summarize features to be defined at a central location.

IP is such a technique: it allows aspects from the application domain to be centrally defined as intentions, together with the technical mapping onto the code in a specific – but basically arbitrary – programming language.

However, IP is not just a framework for integrating AOP programming techniques: the different visual representation forms (renderings) of active sources also support aspect-oriented representations; this can mean either emphasizing or suppressing aspects, for example suppressing the display of coding that only serves the purpose of handling exceptions. This is also called "alternative rendering", one of the core ideas of AOP. The IP paradigm thus completes and perfects the AOP approach.

The HyperSenses Technology

Based on the available technologies ANGIE and Pattern By Example (PBE), a new technology was developed at Delta Software Technology that puts essential components of IP into practice: HyperSenses.

HyperSenses is a technology that has been implemented as three tools: Active Intent, Pattern Composer and Meta Composer. They allow you to implement real active sources as defined by IP from simple code artifacts.

A particular highlight is that several different views of the sources are provided, each of which is equipped with its own, user-definable, intelligence.

With the HyperSenses technology, Delta Software Technology is taking a pioneering step towards the practical realization of IP.