Contact: Michael Baum, michael.baum@nist.gov
ATP FOCUSED PROGRAM:
Component-Based Software
FY 1994 NIST Funding: $20 million
Total FY 1994-98 NIST Funding: $150 million
Potential for U.S. Economic Benefit
When the average person thinks of "software," they think of
packaged, commodity software -- accounting spreadsheet programs for
home and office, PC-based word-processing programs, even
entertainment software such as games. But all the shrink-wrapped
packaging in neighborhood computer stores represents only a
relatively small fraction perhaps about 15 percent of the domestic
installed base of software. The vast majority of the work is in
major custom applications for large customers: complete systems for
financial services, manufacturing, or chemical processing, for
example.
And this 85 percent of the software industry bears a strong
resemblance to many industries of the early 19th century --
virtually all of the products are expensive, hand-crafted, error
prone, one of a kind. Large industrial software systems tend to be
monolithic. Individual pieces of the system cannot easily be reused
(except perhaps in the same company) because of the close
cooperation required between the programmer and the systems
integrator. By most estimates, over half of all application
development projects in this industry end in failure -- after all
the time and money is spent, the product still cannot be used
operationally.
The goal of the ATP Component-Based Software program is to develop
the technologies needed to enable systematically reusable software
components -- relatively small, carefully engineered software
elements suitable for a broad array of applications. These
technologies would enable software companies to build specialized
components that can be sold to systems integrators and custom
builders, who would combine them with other, largely purchased,
off-the-shelf components to create high-quality custom
applications.
From the point of view of system integrators and custom end users,
software tools would automatically match components to applications
systems, ensuring compatibility and reliability. Numerous sources
of cost and error in application development would be eliminated.
Major applications would no longer be large monolithic structures
built from the ground up but rather assemblies of smaller
components, competitively purchased from vendors who would have the
specialized skills to concentrate on issues such as quality and
reliability for the components they provide.
Far from relying on today's profusion of software interface
standards -- which many times have life expectancies shorter than
the standards-setting process -- the proposed technology should
make many existing software interface standards unnecessary.
Initial goals for the Component-Based Software program -- aspects
that would be enabled in the next five to seven years -- include:
> enabling automated assembly of software components, bringing
greater quality and reliability, reduced time to develop and
test new systems, and cost amortization from multiple use of
software components, which would lead to increased
productivity in software development;
> enabling increased productivity for software users, brought
about by increased quality of components, increased
dependability of systems; and
> enabling systematic reuse of components, increased
interoperation of software, and easier adaptation of software
for foreign markets, which may lead to expanded markets for
U.S. software products.
In the longer run -- maybe 10 years after successful completion of the
ATP program -- an established software-components industry would
provide a rapid, responsive channel for marketing software
innovations, while constantly improving quality, reliability, and
capability, in much the same fashion that the semiconductor
component industry has constantly reduced cost and improved
performance of computer chips since the invention of the integrated
circuit, through rapid infusion of technical innovations.
Technology Challenge
The production of easily reusable software components has been the
goal of a long stream of software innovations, including structured
programming, object-oriented programming, and computer-assisted
software engineering. Gains in productivity have remained elusive,
however, particularly in the world of large, custom-built software
systems.
Examples from the physical world often are invoked to explain
software systems -- in some systems, for example, standard software
interfaces for network communications are called sockets. The
analogies are insidious, however, because the realm of software is
nothing like the realm of physical objects. The idea of
manufacturing only one kind of light bulb, which would be
reconfigured automatically at the point of use to fit into any
desired socket at any voltage, is absurd. But for software
components, the idea is not only feasible -- it could be the
necessary enabling technology for the complex systems software
needed for new, advanced information technology applications.
The ATP program in Component-Based Software will enable this sort
of protean software by combining formal semantic methods, which are
effective but difficult to use, with more innovative automated
methods for software transformation and synthesis that would handle
the actual composition of software systems from formal
specifications of the desired product and the available components.
The technical goals of the Component-Based Software program
include:
> Enabling practical, automated composition of major software
applications based on semantic analysis of independently
produced components -- thus enabling systematic reuse of the
components.
> Developing automated tools and methods for component-based
software to expand the portion of the process that can be
automated and thus reduce the need for error-prone,
handcrafted solutions.
> Developing necessary technologies to overcome other barriers to
the widespread use and reuse of software components. This
includes problems such as:
Revenue collection -- how does the component vendor get paid?
Commercial security requirements.
Interoperation with existing systems.
New linguistic methods to allow for imprecise or incomplete
specifications of functionality, performance, and other
software characteristics.
Robustness -- so that critical systems can continue to perform
in the presence of errors.
Improved methods of confirming software dependability.
Industry Commitment
The ATP received over 100 "white papers" proposing program areas in
various fields of software and information technology. More than
half of these proposed programs contributed to this initiative.
Five regional workshops on software technology conducted by the ATP
confirmed broad general support for this program. Given the
disaggregate nature of the U.S. software industry -- roughly 4,500
firms with an average of fewer than 20 employees, and no
broad-based industry associations -- we expect the majority of
program participants to be small companies with new and innovative
approaches.
Significance of ATP Funds
The structure of the software industry and the nature of software
itself provide strong reasons for ATP support of the
Component-Based Software program:
> The Component-Based Software program addresses problems --
including quality, cost, interoperation, labor-intensity, and
the lack of a viable software-components industry -- which are
pervasive throughout all large-scale software developments,
but it involves broad-based solutions and significant
technical risks that are beyond the scope of any one company
or project.
> Any technology that addresses these pervasive problems will
succeed only if it is used broadly throughout the industry,
but this requires a program that can gain the support and
cooperation of competing companies to overcome non-technical
barriers to its use. Through the Component-Based Software
program, the ATP creates a needed forum for many individual
software firms to cooperate on problems
> Software is a key element of the technology infrastructure, so
ATP funds in this area are highly leveraged. The
Component-Based Software program, if successful, will enable
important advances in many other economically significant
areas, including manufacturing systems, healthcare information
systems, and the National Information Infrastructure.
April 1994