Next: A Breakthrough
Up: AN EXAMPLE OF TECHNOLOGY
Previous: AN EXAMPLE OF TECHNOLOGY
For several years the author was involved in a research project at a
major aerospace corporation. The project studied
techniques for program synthesis, automatic code generation, very
high-level languages, graphical design tools and similar topics. The
goal was to simplify specification of software systems and to make code
synthesis practical by working in a restricted domain.
As in most industrial research laboratories there was the pressure to show
practical relevance of the work. To that end, the project
developed a number of prototype tools that were considered practical and
useful by academic standards (e.g.[3,2,8,4,5]).
But academic standards are not good enough to be accepted by those responsible
for real products. Several attempts to transition some of the lab's
technology to product divisions were met with universal rejection. There
were several reasons for this rejection, most of them non-technical in
nature.
- Academics tend to develop tools in the abstract, i.e., they
solve an intellectually interesting problem without regard to actual
applications. When scientists talk about concepts such as
``completeness of decision procedures'' of ``expressiveness of
languages,'' their value will not be apparent to decision makers.
Technology must be sold by describing the concrete problems being
solved, how much time is saved, and how quality is improved.
The technology is irrelevant, it is its impact that matters.
- People in charge of software projects are extremely concerned about
schedule risk. Even if a new tool promises great time savings, it
will be rejected if there is even minimal risk that it might negatively
impact the schedule. Large potential time savings are often not
realistic due to a steep learning curve.
- Researchers tend to build tools in isolation without consideration of
the environment and the work process of software production.
Tools that require changes in an established software development
process are difficult to sell.
- An important reason for rejection is the perceived and often real lack
of maintenance and support for systems that come out of research labs.
- One frequent objection to the use of machine generated code was
readability. From the academic point of view, machine generated
Ada code is no different than compiler generated assembly code.
But the programmer in the field will be skeptical of the new technology
and will want to inspect and understand the code. As a
consequence significant effort was spent on
generating human readable, commented code.
Next: A Breakthrough
Up: AN EXAMPLE OF TECHNOLOGY
Previous: AN EXAMPLE OF TECHNOLOGY
Wolfgang Polak
1999-06-02