A similar difficulty applies in searching for the boundaries of a software industrial sector. Portions of this possible sector are readily recognized. The publishers and developers of software for the personal computers that are finding wide application in the business world are surely part of this industrial sector (e.g., Microsoft or Ashton-Tate). So also are the firms that deal in applications software for large computer systems (e.g., Electronic Data Systems). A substantial fraction of the business of the major computer companies (IBM, DEC, Fujitsu, etc.) is in software; yet these companies are frequently regarded, and probably regard themselves, as hardware companies.
Despite the difficulties we may have in defining the software industrial sector, we can agree that software and associated software technologies are playing a larger and larger role in other industries. Thus, there is widespread interest in software technology and in its associated advances as they affect and stimulate the global economy.
Although software technology is widely held to be critically important to the broad technological advance that now spurs the global economy, it is difficult to define. The new Software Engineering Institute being established with U.S. Department of Defense funding at Carnegie Mellon University is, according to its First Report in Carnegie Mellon Magazine, struggling to define what software engineering as a professional field really should be. “Unlike other engineering professions, software engineering does not have well-articulated goals, standards, or methods for its practice,” states the report.3 I would add that the key scientific and engineering underpinnings of software technology remain to be identified and organized into a course of instruction so that we might proceed to train a software technologist in the same way we train a metallurgical technologist, for example. Many of these difficulties relate to the earlier problems we encountered in attempting to segment software from hardware. Furthermore, I believe that complete separation of software considerations from hardware considerations can be done only at severe peril to the effective function and efficient performance of the overall supersystem, hardware plus software.
Consistent with this view, my list of the key technological advances contributing to effective software technology begins with the components and architecture of the hardware systems used for software development. Of paramount importance has been the decline in cost and the increase in speed of processing power and memory, putting at the disposal of the software developer a fast, fully interactive system with rapid access to memory and to data bases.
These hardware advances have made possible the second key advance, the advent of extremely powerful software development environments that combine advances in writing, editing, running, and debugging of software. Gains in effectiveness are afforded by windowing, bit-map displays characterized as WYSIWYG, and other programming innovations that are them-