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. |