"Modeling" has become one of the primary concerns in modern Software
Engineering. The reason is simple: starting development processes from clear
and succinct models has proven to foster not only quality but also productivity.
With the advance of modeling there also came a desire for automatic code
generation from models. This way, the costly and error-prone implementation
in terms of low-level languages should be saved. To this end, the models need
to be "executable" in the widest sense.
In this general picture the concepts of constraint programming obtain
a new and economically important role. Even though they are not in the
current mainstream of UML-style graphical languages, they are extremely
well suited for describing models. This is evident by considering the very
nature of constraints: one formulates the properties that a software system
shall fulfill; the implementation is done automatically by the constraint solver.
So the time is ripe for constraint-based programming to come out of the more
academic world, to which it still is constrained to a large extent, and show its
potential for modeling real-world applications.
However, there is no silver bullet. Classical constraint systems in their pure
forms are not expressive enough to be used in a large variety of application
domains. Therefore they need to be augmented by other styles and concepts
for programming and modeling. This leads into the realm of so-called "multiparadigm
languages". There have been all kinds of approaches in Computer
Science to address the "no-silver-bullet" issue. Examples range from voluminous
languages such as PL/1 or Ada (which failed miserably), huge libraries
(which are non-standardized and thus lead to severe problems in the long run),
or Microsoft’s .Net approach (which solves the problem at least on the low
level of machine code). The keyword DSLs (domain-specific languages) can
be viewed as the general circumscription for all kinds of attempts to address
the multiparadigm idea. By contrast to .Net the emphasis here is on the
integration at the level at which the users formulate their intentions.