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