As a preliminary to focusing on the software portion of IT, it is useful to appreciate its technological context. We largely ignore sensors and transducers, and focus on the core technologies that process, store, and communicate information. Examining the complementary role of these technologies, and the complementary and mutually dependent role of hardware and software, foreshadows the importance of cooperation and coordination in the industry (see chapter 7).
It is useful to make a distinction between a material and an immaterial good. A material good has a physical manifestation; among other things, it is distinguished by physical properties (like mass, momentum, and temperature). An immaterial good is merely logical, like an idea or a stock price. Software and information are immaterial. A popular (although somewhat flawed) metaphor for the material-immaterial distinction is atoms versus bits.
Information is the basic commodity that is captured, stored, manipulated, and retrieved by the information technologies. At its most basic level, software comprises the set of instructions created by a human programmer that controls all aspects of this process, specifying precisely what actions to take in each circumstance.
While their roles are quite different, both software and information are immaterial but cannot exist or function without a material support infrastructure. Information uses a material medium for storing, conveying, and accessing its logical significance, such as paper, disk, or display. Software needs a computer processor to realize its intentions. Software is thus the immaterial sequence of instructions for a processor that controls its specific behaviors. Because software works only in concert with a material processor (and other material technologies like power supplies, network routers, communication links, and disks), in practice it assumes some properties similar both to immaterial information and material goods, which like software (but unlike information) are often valued for their behaviors and actions. The properties of software as an economic good are discussed in more detail in chapter 9. Information may also incorporate behavior (such as an animation), but that behavior is in reality a manifestation of software.
Aside from sensors and transducers, the physical embodiment of IT has three constituents: processing modifies digital information under the direction of the software; storage conveys digital information from one time to another (by storing it and later retrieving it from storage); and communication conveys digital information from one place to another. Each constituent has suppliers that tend to specialize because the three technologies are distinctly different, and so the economies of scope (for example in controlling all three technologies) are relatively weak.
Example Intel, Sun Microsystems, and Compaq (now Hewlett-Packard) focus most of their research and development energies on processing, EMC on storage, and CISCO on communication. In each case, vendors may wish to provide integrated products in which they get other necessary constituents from other manufacturers. IBM is an example of a large vertically integrated company that devotes considerable development effort to two constituents, processing and storage.
Hardware is the material portion of IT based directly on physical laws, like electronics, magnetics, or optics. In principle, any IT system can be constructed exclusively from hardware. Given any external behavior, it is possible in principle to reproduce that behavior by building hardware, or software (with a supporting hardware processor, of course), or various combinations. Given this interchangeability, it is useful to view software as immaterial hardware. Over time, the boundary between hardware and software changes, largely as an effect of Moore's law (see section 2.3).
The hardware-software distinction is further blurred by the existence of hardware description languages (such as Verilog), which allow digital hardware to be specified through a computer language. This language can be directly executed on a processor (like any software language) to check if the hardware will work, or automatically translated into a form that can be fabricated as an integrated circuit (this is similar to the compilation of software source code into object code; see chapter 4). However, there are severe limits on the complexity of software that can be translated into hardware (see section 2.2.4).
An operating IT system conveys streams of bits through time and space. Bits flow through space via a communication link from a sender to one or more receivers. Storage conveys bits through time: a sender stores bits at one time and a recipient retrieves these bits at some later time. Processing modifies bits at specific points in space-time. When controlled by software, processing is performed by hardware specialized for interpreting the bits representing that software. A fundamental requirement is for material hardware to underpin all bit-level operations: the material structure (including atoms, electrons, photons) brings the immaterial bits into existence and carries out the processing, storage and retrieval, and communication.
From the interchangeability of hardware and software one might conclude that hardware and software are simply implementation options, where choices can be relegated to the bowels of some development organization. This is incorrect, because in many characteristics that affect its business and economic properties, software profoundly differs from hardware.
Various forms of flexibility can be incorporated into products. Paper is manufactured without presupposing what will later be written or printed on it, and automobiles are manufactured without presupposing where they will be driven. The central idea behind the computer is programmability, a new and much more powerful form of flexibility. The computer was conceived as a product whose basic function is not determined at the time of manufacture but is defined later with the addition of software. Of course, many earlier products could be put to new uses (for instance, paper's becoming a paper airplane), and the computer's programmability has its limits (it cannot fly), but when it comes to capturing and manipulating information, the computer is completely flexible because most of its functionality is determined by the postmanufacture addition of software.
Software is a superior implementation for functionality that is highly complex, diverse, or irregular (as opposed to highly repetitive), because it makes economic sense to share a single processor over varied uses at different times. The only cost penalty is the storage to retain the diverse functionality and invoke it as needed, whereas it is usually necessary to duplicate hardware for each different function it serves. The whole IT infrastructure generalizes this concept of sharing (see chapter 9).
What is fundamentally different about software is that it is not manufactured into a product. It can be bundled with a product as it is sold initially, or it can be sold separately and deployed to hardware that is already in use. It can be installed initially, or it can be added later. It can be static, or it can be changed and upgraded later. These properties make the market for software irrevocably and profoundly different from the market for material products (including computer hardware).
The boundary between what is relegated to software and what is relegated to hardware changes with time, driven by issues of complexity, performance, and security. With advances in computer-aided design tools and hardware description languages, hardware design has come increasingly to resemble software programming, requiring similar skills but utilizing different languages and tools. A primary driver for the changing boundary between hardware and software is Moore's law (see section 2.3).
Like many industries, software and its supporting industries are layered, as a natural outcome of market forces (see figure 2.4). (Layering is also an important software architectural technique; see chapter 7.) The central idea is to build new capabilities not from scratch but rather by the addition of a new top layer that extends or specializes the capabilities of the layers below without modifying them.
Figure 2.4: Layers of complementary supporting software. (The arrows mean "built on".)
Example When a new business is started, it does not reproduce much existing infrastructure (post office and transportation systems, for example) but will subsume those capabilities into its business. It may extend those capabilities (extend postal delivery from the mailroom to individual offices) or specialize them (use the highway for a specific vehicle suitable for its purposes).
The bottom layer of IT is semiconductor and photonics devices. Devices may be discrete, like lasers and transistors, which have a single simply described function and cannot be further decomposed. Or they may be integrated devices that combine large numbers of discrete devices into physically small (although often very complex) packages, such as integrated circuits (ICs) or integrated circuits and photonics. This is the hardware.
The next layer is IT equipment (like a computer or router), which comprises a complex system composed of hardware and bundled software. By bundled, we mean they are sold as a unit, and it is hard for the user to distinguish what is accomplished in hardware and what in software. Such software is often called embedded.
Example A personal computer as shipped has two types of software: the basic input-output system (BIOS) controls low-level functioning of the computer (for example, how it retrieves the operating system from disk as part of an initial boot) and is specific to a given computer design. The operating system is not an integral part of the computer. It is designed to run on multiple computer designs. Nevertheless, it is installed by the manufacturer.
Equipment with similar functionality from two suppliers may have a very different partitioning of software and hardware—this is another manifestation of the interchangeability of hardware and software.
The infrastructure software layer provides many services of value to a wide range of applications. This "pure software" layer includes the operating system and an expanding range of other useful capabilities as well (see chapters 4 and 6). One of its roles is to isolate application software from the particulars of the equipment. This allows the application software to offer a diversity of options at the equipment layer, and equipment and application software to largely evolve independently (innovations in each realm are minimally dependent and require minimal coordination). Infrastructure software also provides the commonality that allows applications to work together (a property of applications called composability; see chapter 4).
The top layer is application software, which provides capabilities specific to the context of the end-user or end-user organization. This software builds on capabilities of the infrastructure software, which in turn builds on capabilities of the equipment.
An application (and indeed infrastructure and other software) may incorporate software components, which are ready-to-use elements of functionality that can be purchased and incorporated into the application as is, without modification. Components create a software supply chain, in which one supplier builds on software acquired from others (see chapter 7).
As discussed in section 2.2.5, there are at least four distinct types of software: embedded, infrastructure, component, and application. Embedded software is integral to and bundled into equipment or information appliances (see chapter 10) and is largely indistinguishable from the supporting hardware, from the user's perspective. The infrastructure software is separately available to the operator (for example, it can be replaced or upgraded) even if it is initially bundled with the equipment (see chapter 7). Components are bought and sold in the market and incorporated into applications, do not themselves constitute a complete application, and can be independently upgraded or replaced after deployment (see chapter 7). These four types of software have quite distinct value propositions and business challenges.
Example The screen and keypad in a cell phone is controlled by embedded software. In a desktop computer, the operating system is infrastructure and an e-mail reader is an application. The e-mail reader may incorporate a text editor component; that same component is also incorporated into a number of other applications, such as word processors, presentation generators, and spreadsheets, to perform text editing.
Software is essential in all three areas of IT. While software always requires a processor to execute, embedded software (like the BIOS) may also be integral to the processor itself. Similarly, embedded software is an important part of all storage and communication equipment.
The material world, especially in IT, involves more than just atoms. Nonatomic particles like electrons and photons play an essential role also. A more appropriate metaphor might be particles versus bits.
Occasionally software has been used to denote information content (Shy 2001). For example, the available DVD movies might be called the "software for consumer video equipment." This is confusing and is avoided here. Fortunately it seems to be disappearing from common usage.
In the past IBM has had considerable ambitions in the area of communication but more recently has deemphasized this. Examples include its acquisition of Rolm and Satellite Data Services in the 1970s and its development of its Global Network, which it subsequently divested to AT&T.
The distinction among the three technologies is somewhat less sharp. In reality, storage cannot work without a little communication (the bits need to flow to the storage medium) and communication cannot work without a little storage (the bits cannot be communicated in zero time). Processing cannot work without both a little storage (creation of intermediate results) and a little communication (moving bits from communication or storage to processing units and back).