In the real world, software touches the personal and professional lives of most individuals. Of course, for most people this is in the sense of being a user and beneficiary of software. For a smaller (but still very significant) number of people, their professional lives are directly involved in facilitating the creation and use of software, or understanding its effects on individuals, organizations, or society. This book is primarily dedicated to capturing the perspective of these professionals.
This book is organized around the perspectives of different professions regarding software. Following an introductory chapter on information technology (chapter 2), the remaining chapters are organized around six such perspectives, and each chapter also relates its own perspective to the others. Users (chapter 3) are affected by what software does on their behalf. Software engineers and other professionals involved in software creation (chapter 4) start with a good understanding of what users want to accomplish and end by creating software code. Throughout the software lifecycle, managers (chapter 5) must deal with a number of issues, such as acquiring the necessary infrastructure to run the software, organizing the people and business processes that surround the software, and operating the software applications and infrastructure. Industrialists (chapters 6 and 7) organize themselves into companies to create and manage software and are concerned about ownership and business relationships and bringing together the complementary infrastructure and functions that together make the benefits of software available to users. Policy experts and lawyers (chapter 8) are concerned with ensuring a healthy and innovative industry, mitigating possible negative effects of information technology, and resolving various conflicts among the industry participants. Economists (chapter 9) offer many useful insights into the workings of the software marketplace. The book concludes with a look into the future (chapter 10).
Many issues affect more than one of these perspectives. In each case, we locate that issue in the chapter that seems most relevant but also relate it to the other perspectives as well.
A greater appreciation for the variety of issues surrounding software and their interdependence can be facilitated by starting with an overview of the book. Software works in conjunction with information content and the information technologies, as described in chapter 2. All information, as well as software itself, can be represented by data (collections of bits), manipulated by a processor, stored for future access, and communicated over a network. Information is valued for how it teaches or influences us, whereas software is valued for what it does, that is, its behavior. Many legal, economic, and business considerations for information and software are influenced by the simplicity of creating perfect replicas of information and software. Software depends on a complementary material technological infrastructure for its execution, including both hardware (processor) and infrastructure software (e.g., operating system). The software industry has benefited from several decades of geometric advance in the performance per unit cost in processing, storage, and communication technologies, an observation known as Moore's law. To understand the future of software, it is important to understand among other things the driving forces behind Moore's law and how it may evolve in the future.
The primary value of software is in the features and capabilities it provides the end-user, as described in chapter 3. Historically, applications have been largely driven by the addition, one after the other, of processing, storage, and communication to the suite of information technologies. The major classes of applications include scientific modeling and simulation, databases and transaction processing, information publication and access, collaboration and coordination, and software embedded in larger systems. Today, many applications strongly exploit all three technologies. Many of the most valuable generic applications supporting large numbers of users have doubtless been invented and refined, so today applications are becoming increasingly specialized to meet the needs of particular vertical industries, types of organization, or organizational functions. Sociotechnical applications, one growth category, emphasize the integration of a human organization with information, information technology, and software. As a result of the deeper integration of software applications into human and organizational activities, the process of understanding user needs and how the features and capabilities of software applications can meet them has become an important design activity separate from technical software implementation.
A number of factors contribute value to the user of software, including specific features and capabilities, effects on an organization, amount of use, quality, performance, usability, flexibility, and extensibility. One consideration that recurs throughout the book is network effects, wherein the value to the user depends on the number of other adopters of particular software.
The process of creating software, and some of the technical characteristics of software most relevant to business models and economic properties of software, is considered in chapter 4. A major issue in creating software is the software development process, which deserves careful attention and must be highly principled because of the increasing size of investments in and the complexity of software. The development process has come to be focused on iterative refinement, agility to meet changing needs and requirements, and ways to bring the user experience more directly to bear. For some types of infrastructure software, the market is experimenting with community-based models in which multiple individuals and companies participate in advancing and maintaining the software.
Software architecture is the first stage of software implementation. It decomposes and partitions a software system into modules that can be dealt with somewhat independently. This modularity has significant business implications, including open interfaces and application programming interfaces (APIs), system integration, and the composition of different applications and infrastructure.
Program distribution and execution options bring to the fore many business and legal issues, including whether the customer is offered source code, whether the software is interpreted or compiled, and whether software is dynamically distributed as it is needed. Increasingly software applications are distributed across multiple computers and organizations.
The management of the entire software life cycle is considered in chapter 5. The major steps in its life cycle include analysis of user needs, development of the software (architecture design, programming, testing, integration, and other functions), provisioning of the equipment and software in the user environment (including user training and often organizational changes), operation and administration of the software, and use. These steps form a value chain, where each step depends upon the successful completion of previous steps and adds value to them. The entire cycle is typically repeated multiple times, and the software supplier faces interesting challenges in managing the process of maintenance and upgrade of coexisting versions of the software while it is in use. Distributed applications often cross organizational boundaries, and this leads to many management challenges and also increases the importance of standardization (discussed in chapter 7). The management of security and privacy is used as an example of the types of issues that arise in a distributed administrative environment.
The software industry past and present and how it is changing are discussed in chapters 6 and 7. The value chain in software can be partitioned into cooperative and competitive companies; some of the most common ways of doing this are discussed in chapter 6. There is a trend toward offering software as a service over a network, moving responsibility for provisioning and operations from end-user organizations to service providers.
One step in the value chain is software creation, and this is considered in depth in chapter 7. A typical software application draws upon equipment and software from at least a few, if not many, individual firms, leading to issues about business relationships within the software industry as well as between software and end-user firms. Coordination among firms is essential to getting operational software into the hands of the users. Standardization is one way in which software suppliers coordinate themselves, and it is growing in importance as distributed applications move across administrative and organizational boundaries.
Driven largely by the rapid success of the Internet and distributed applications and new requirements for mixing different information media within a single application, the industry organization has been moving from a vertical to a horizontal structure, the latter consonant with an architecture concept called layering. Layering provides a relatively flexible way to partition an infrastructure to provide a wealth of services, with the possibility of adding additional features and capabilities by building layers on top of an existing infrastructure.
There is growing interest in software reuse and component software as a way of improving the productivity of development organizations, addressing complexity, and improving quality. The idea is to assemble applications largely from existing components, which are modules created independently of any particular system context and constructed for multiple uses. To derive the full benefit, component software will require a marketplace for buying and selling components, which would in turn result in marked changes in the organization of the software industry. A related direction is Web services, in which applications are assembled from services made available over a network such as the Internet.
Government plays many roles in the software industry, as considered in chapter 8. A successful industry depends on government-sanctioned and -enforced intellectual property rights, but information and software present many special challenges that remain to be fully explored and settled. Software technologies can help in enforcing intellectual property rights, for example, through copy protection, although this presents some controversies. Some aspects of the software market are regulated by government, for better or worse. Security and privacy are areas of regulation, both to protect the rights of citizens and to enhance law enforcement and national security. Free speech and civil liberties are areas of controversy, and software plays multiple roles in potentially restricting access to offending materials, and collecting and amassing personal information that may potentially violate individual privacy. Government regulation attempts to insure a competitive software industry and fair business practices through antitrust laws. Government also plays a major role in ensuring an adequate workforce in the software industries through its direct support of education and publicly funded research and through immigration laws.
Some insights and perspectives on software from the economics profession are described in chapter 9. On both the supply and demand sides, software displays a number of characteristics that, while not unique to software, are mixed in unusual ways. Software shares characteristics with many other types of goods and services, including information, services, material goods, and even plans for a manufacturing factory. Insights that are relevant to understanding business strategies and relationships in the software industry include network effects, lock-in, economies of scale, and risk. Software is arguably the most flexible of any economic good in pricing options, and it can even be self-aware and autonomously initiate payment. The economic rationale for infrastructure includes sharing and economies of scale as well as some special characteristics in mitigating congestion.
Some trends in software use and markets that will have a marked effect on the future of the industry are discussed in chapter 10. These include information appliances, nomadic and mobile users and applications, and pervasive computing (software embedded in many everyday material products).