Information Technology Reference
In-Depth Information
Just as driving a car needs no engineer , steering a computer should need no
programmer and the development of user-specific software should be in the
hands of the user [208]. Clearly, there is an inherent semantic gap between the
natural languages that are used for software description at the user level and
the machine languages that are required for software implementation at the
hardware level. Abstraction from implementation details is key for minimizing
this gap and eventually lifting software development to an intuitive, user-
accessible level.
As depicted in Figure 1.1 in simplified terms, the various existing low-level
and high-level programming languages already provide different levels of ab-
straction from the machine level. They are, however, only suciently conve-
nient for programmers, but not for average users, so that still a considerable
semantic gap remains that needs to be bridged. Accordingly, research on end-
user development (cf., e.g., [188, 251, 74, 61]) is concerned with software devel-
opment methods, techniques and tools that explicitly put the user in the posi-
tion to develop application-specific software on his own, flexibly according to
his needs. In essence,an adequateuser-levelsoftwaredevelopmentenvironment
has to be:
simple enough to be accessible by the user, and
generic enough to cope with the variability of his applications.
A technology is regarded simple if it is easy to learn for its users and if little
programming and IT skills are required for its application. Generality refers
to the capability of a technology to be used for different application areas.
Fig. 1.2 Trade-off between simplicity and generality in software environments
Apparently, however, there is an inherent tradeoff between the simplicity
and generality of a technology (cf., e.g., [224, Chapter 18] and [356]), as
Figure 1.2 illustrates: Special-purpose software tools are easy to use, but
provide only a fixed, limited range of functionality that is hard to extend
by the user. In contrast, full programming languages provide a maximum
of generality, but demand proper technical or programming skills for fruitful
application. Configurable software offers a little more generality, and software
libraries and APIs simplify programming to some extent, but there is still a
gap between these kinds of software environments that needs to be bridged
in order to adequately balance simplicity and generality. Finding the level of
Search WWH ::




Custom Search