Acquiring and managing software in an organization is the subject of many
Competition has been shown to be useful up to a certain point and no further, but cooperation … begins where competition
leaves off.—Franklin Delano Roosevelt
Chapter 6 addressed the industrial organization of the software value chain from software creation to use. Software creation, one of the more important links of the chain, starts with a set of requirements and culminates in a software distribution that can be provisioned, including analysis of
This chapter addresses the internal structure of the software creation industry. It is common for a total solution to be
A relation between software architecture and industrial organization was pointed out in section 6.1; industry responsibility must follow interfaces of software modules at the top level of architectural decomposition. Is the architecture determined by the
The most fundamental architectural concept in software is the decomposition into application and infrastructure. With some notable exceptions, firms in the industry
Example
There are three major types of exceptions. One is firms that combine the businesses of infrastructure supplier and application software supplier, for instance, Apple (particularly historically) and Microsoft. They strongly
While both applications and infrastructure require technical development skills, the
Example The playing of audio and video media was originally built into specialized applications. Today much of the required support is found in common infrastructure, usually at the level of operating systems. Individual productivity applications (such as office suites) have been augmented with ever richer user programmability support, so many interesting specialized applications now build on them (see section 4.2.7).
From a business perspective, application software has the advantage over infrastructure of providing value directly to the end-user, who ultimately pays for everything in the software value chain. This direct relationship provides rich opportunities to differentiate from
In some cases there are considerable marketplace obstacles to application adoption that make business difficult for application suppliers, such as lock-in and network effects (see chapter 9), but in other cases these are less important. Application software suppliers who provide variations on competitive applications find lock-in a greater
As
Second, application diversity is enhanced by doing whatever is necessary to make it faster, cheaper, and requiring less development skill. This includes incorporating more needed functionality in the infrastruture. Making use of software
Third, application diversity is enhanced by an experimental approach seeking inexpensive ways to try out and refine new application ideas (see section 3.1.6). Applications should be a target for industrial and academic research, because a research environment is well suited to low-cost experiments and the refinement of ideas unfettered by the immediate goal of a commercially
Fourth, innovative new applications are a good target for venture capital funding and startup companies. The funding of competing
Returning to the separation of application and infrastructure, the successes here also build on the economics underlying infrastructure (see chapter 9). If a new application requires a new infrastructure, then the required investment (as well as investment risk) is much larger than if the application is built on existing infrastructure. Thus, the separation of applications from infrastructure reduces barriers to entry and encourages small companies.
Example
The history of the telephone industry illustrates these factors. Telephone companies are historically application service providers with one primary application—telephony. They are also infrastructure service providers, providing not only the infrastructure supporting telephony but also data communications (e.g., the Internet) and video (e.g., broadcast television distribution). They have shown interest in expanding their application offerings, primarily in directions with mass market
The telecommunications industry strategy addresses one serious challenge following from the complementarity of applications and infrastructure and from indirect network effects: an infrastructure supporting a diversity of available applications offers more value to users, and an application
The computer industry has generally followed the different strategy of deploying a generic infrastructure that supports a diversity of applications. In part this can be attributed to the culture of the industry,
However, a pure strategy of deploying a generic infrastructure and waiting for applications to
Another difference between the computer and telecommunications industries is the long-standing role of a service provider in telecommunications. Selling applications as a service bundled with a supporting infrastructure is advantageous in providing a single integrated solution to customers and freeing them of responsibility for provisioning and operation. The software industry is moving in this direction with the application service provider model.
The goal should be to combine the most desirable features of these models, and indeed the separation of application and infrastructure at the technological level is not inconsistent with a service provider model and a bundling of application and infrastructure as sold to the user. One of the trade-offs involved in these strategies is summarized in the fundamental relationship (Shapiro and Varian 1999b):
Revenue = Market share × Market
An infrastructure that encourages and supports a diversity of applications exchanges market share (by ceding many applications to other suppliers or service providers) for an increase in total market size (by providing more diversity and value to users). Just as software suppliers must decide on their degree of application/infrastructure separation, service providers face similar issues. They can offer only applications bundled with infrastructure, or enhance the diversity of application offerings while ceding revenues and part of the customer relationship by giving third-party application providers access to their infrastructure. To maximize
The growing cost of software development and the shortage of programming professionals concerns software development organizations. This is exacerbated by the increasing specialization and diversity of applications (see section 3.1.5); specialized applications may be economically
The idea behind expanding infrastructure is to observe what kind of functionalities application developers reimplement over and over, and to capture those functionalities in a generic and flexible way within the infrastructure. It is important to capture these capabilities in a generic and general way so that they can meet the needs of a wide range of present and future applications. End-users for infrastructure software include application developers and operators.
Example Many applications need authentication and access control for the end-user (see section 5.4). Many aspects of this capability are generic and separated from the specific needs of each application. If authentication and access control are included within the infrastructure to be invoked by each application for its own purposes, reimplementation is avoided and users benefit directly by being authenticated only once for access to multiple applications.
These economic realities create an opportunity for the infrastructure to expand in capability over time. This may happen directly, or sometimes software developed as part of an application can be made available to other software and subsequently serve as infrastructure.
Example
Early applications had to manage much of the graphical user interface on their own, but later this capability was moved to the operating system (initially in the Apple Macintosh). Software to format screen documents based on the Web markup language (HTML) was first developed in the Web browser but was also
Sometimes, an entire application that becomes ubiquitous and is frequently
Example
The Web was originally conceived as an information access application for scholarly communities (World Wide Web Consortium 2002) but has evolved into an infrastructure supporting e-commerce and other applications. Many new distributed applications today
Valued-added infrastructure adds additional capability to an existing infrastructure.
Example
A major area for innovation in infrastructure is
middleware
, defined
Market forces encourage these additions because of the smaller incremental investments compared to starting anew and because of the ability to support legacy applications utilizing the earlier infrastructure. From a longer-
Example
Early Internet research did not anticipate streaming audio and video services. The core Internet infrastructure therefore does not include mechanisms to ensure bounded delay for transported packets, a capability that would be useful for delay-sensitive applications like telephony or video conferencing.
[2]
While acceptable quality can be achieved without these delay guarantees, better quality could be achieved with them. Unfortunately, once a packet is delayed too much, there is no way to make up for this, as time moves in only one direction. Hence, no value-added infrastructure built on the existing Internet technologies can offer delay
The chicken-and-egg conundrum—which comes first, the applications or the infrastructure they depend on—is a significant obstacle to establishing new infrastructure capability. One successful strategy has been to move infrastructure with a compelling suite of applications into the market
Example
The Internet illustrates this, as it benefited from a couple of decades of refinement in the academic research community before commercialization. A key was developing and refining a suite of "killer apps" (e.g., file transfer, e-mail, Web browsing). This, plus an established substantial community of users, allowed the Internet to reach commercial viability and success quickly once it was made commercially available. This is an oft-cited example of the important role of government-funded research (see chapter 8), subsidizing experimentation and refinement of infrastructure and allowing a suite of compelling applications to be developed. Such externally
Middleware illustrates another strategy. Applications and (future) infrastructure can be developed and sold as a bundle while maintaining strict modularity so that the infrastructure can later be unbundled and sold separately. A variation is to establish APIs to allow independent use of capabilities within an application.
Example A way to establish a message-oriented middleware (MOM) product might be to develop and bundle it with an enterprise work flow application, such as a purchase order and accounts payable application. By providing open APIs to the MOM capabilities, other application suppliers are encouraged to add application enhancements or new application capabilities that depend on the MOM. If this strategy is successful, eventually the MOM assumes a life of its own and can be unbundled and sold separately as infrastructure.
The modularity of infrastructure is changing in fundamental ways, driven primarily by the convergence of the computing (processing and storage) and telecommunications industries. By
convergence
, we mean two industries that were formerly independent becoming competitive, complementary, or both. This convergence is manifested primarily by the Internet's enabling of globally distributed software (see section 4.5), leading to applications that
The top-level vertical architecture of both the telecommunications and computer industries prior to this convergence resembled a
stovepipe
(see figure 7.1). This architecture is based on market segmentation, defining different platforms for different application regimes. In the case of computing, mainframes, servers (originally minicomputers and later microprocessor-based) and desktop computers were introduced into distinct market segments (see table 2.3), each segment offering typically two or three major competitive platforms. Each segment and platform within that segment
Figure 7.1:
Historically, the telecommunications and computing industry both used an architecture resembling a stovepipe.
Similarly, the telecommunications industry segmented the market by application or information medium into telephony, video, and data. Each of these media was
Example Telecommunications firms have always shared right-of-way for different applications and media, and also defined a digital multiplexing hierarchy (a recent example is SONET, or synchronous optical network) that supported a mixture of voice, data, and video services.
While the telecommunications and computer architectures look superficially similar, historically the approach has been different, primarily arising out of the importance of the service provider in telecommunications but not in computing. With notable exceptions, in telecommunications the infrastructure and application suppliers sold to service providers, who did the provisioning and operation, and the service providers sold application services (and occasionally infrastructure services) to users. In computing, it was common for infrastructure suppliers to sell directly to users or end-user organizations, who acquire (or develop themselves) applications and do their own provisioning and operation. This is partly due to the different cultures and the relative weakness of data networking technologies (necessary to sell application services based on processing and storage) in the early phases of the computer industry.
These distinct industry structures led to fundamental differences in business models. Firms in the telecommunications industry historically saw themselves as application service providers, viewed the application (like telephony or television-video distribution) as their business opportunity, and
In contrast, the relatively minor role of a service provider in the computer industry and the cultural influence of the technical genesis of computing (programmability, and the separation of application from infrastructure) resulted in a strikingly different business model. Infrastructure and application suppliers sold independently to end-user organizations, and the users integrated the two. As a result,
To summarize the difference in the telecommunications and computing business strategies, in telecommunications the infrastructure chased the applications, whereas in computing the applications chased the infrastructure. While there are many necessary qualifications and notable exceptions to this statement, for the most part it rings true. In a sense, the telecommunications business model formed a clearer path to dealing with the indirect chicken-and-egg network effects mentioned earlier. Regardless of whether applications chase infrastructure or the reverse, investments in new infrastructure technologies have to proceed on faith that there will be successful applications to exploit new infrastructure. In the telecommunications industry this was accomplished by directly coordinated investments, and in the computer industry an initial suite of applications was viewed as the cost of establishing a new infrastructure.
Example To complement its PC, IBM initially supplied a suite of personal productivity applications, as did Apple Computer with the Macintosh. In both cases, open APIs in the operating system encouraged outside application developers, and it was not long before other application software suppliers supplanted the original infrastructure supplier's offerings (particularly for the PC).
This is all historical perspective, and not an accurate view of the situation today, in part because of the convergence of these two industries. The infrastructure has shifted away from a stovepipe form and toward a horizontal architecture called
layering
. The layered architecture organizes functionality as horizontal
Figure 7.2:
The layered architecture for infrastructure modularizes it into homogeneous horizontal layers.
Example
As illustrated in figure 7.3, the Internet is built on a foundation layer called the internet protocol (IP) and on top of that two widely used layers, transmission control protocol (TCP) and user datagram protocol (UDP). IP offers a service that conveys packets from one host to another with no guarantee of delivery order or reliability (analogous to sending postcards through the postal system). TCP and UDP invoke the services of IP to direct packets to a specific application running on the host. TCP also offers reliability and
Figure 7.3:
A simplified architecture of the Internet illustrates how new layers are added while future layers and applications can still invoke services of previous layers.
Since the layered architecture dominates the
Example The virtual machine and associated environment for code portability can be viewed as a layer added to the operating system within each platform (see section 4.4.3). As illustrated in figure 7.4, this new layer adds a uniform execution model and environment for distributed software applications. It can be viewed as a homogeneous layer that sits on top of existing heterogeneous platforms (like Windows, Mac OS, and different forms of UNIX). Further, there is no reason (other than inconvenience in provisioning and application composability) not to have two or more parallel virtual machine layers supporting different groups of applications.
Figure 7.4:
The widely deployed virtual machine can create a homogeneous spanning layer for applications that hides the heterogeneity of platforms.
A layer that hides the horizontal heterogeneity of the infrastructure below and is widely deployed and available to applications is called a spanning layer . The most important spanning layer today, the internet protocol, was specifically designed to hide heterogeneous networking technologies below. The virtual machine is another example of a spanning layer, arguably not yet widespread enough to deserve this appellation. One way to view the relation between these spanning layers was illustrated earlier in the "hourglass" of figure 4.6.
A second driver for layering is the trend toward applications that integrate processing, storage, and communication and mix data, audio, and video (see section 3.1). In contrast to the stovepipe, each horizontal layer (and indeed the entire infrastructure) supports a variety of technologies, applications, and media.
Example Within the communication infrastructure, the IP layer has been extended to support data by the addition of the TCP layer and extended to support streaming audio media by the addition of an RTP layer on top of UDP (see figure 7.3). A given application can mix these media by accessing the TCP layer for data and the RTP layer for audio and video.
A third and related driver for layering is value added to infrastructure that can support the composability of different applications (see section 3.2.12), which is one of the most important roles of infrastructure. By binding different applications to different
A fourth driver for layering is its allowance for incremental extension and elaboration while continuing to support existing applications. This reduces the
Modularity introduces inefficiency, and layering is no exception. Compared to a monolithic stovepipe, layering tends to add overhead, no small matter in a shared infrastructure where performance and cost are often important. The processes described by Moore's law are thus an important
Layering fundamentally shifts the structure of industry competition. Each layer depends on the layers below (they are complementary), and an application requires the provisioning and operation of all layers upon which it depends. This creates complementary infrastructure suppliers, and a
Layering fundamentally changes the core expertise of industry players. Expertise about particular application segments no longer resides with infrastructure suppliers but primarily within application suppliers. Market forces encourage infrastructure suppliers to extend the capabilities they supply to serve all (or at least a broader range of) applications because this increases market size. This
Example
The physical layer of communication (transporting a stream of bits via a communication link) is a ripe area for startup companies, especially in light of the variety of media available (optical fiber, radio,
It is useful to examine the appropriate modularity of layering in more detail. It is striking that no single organization has responsibility for consciously designing the overall layered architecture. Rather, it is determined by research and company initiatives, collaborations among companies, and standardization bodies. The result is "creative chaos" that introduces strengths and weaknesses. On the plus side, innovations are welcome from many
Example
The first successful attempt at enabling cross-platform middleware as a spanning layer was the Object Management Group's common object request broker architecture (CORBA), a suite of standards to enable distributed object-oriented applications. CORBA has been successful in intraenterprise integration, where platform variety arises out of acquisitions and mergers and yet cross-platform integration is required. CORBA did not achieve similar success in interenterprise integration, where heterogeneous platforms are even more
Historically, the approach was very different in the telecommunications industry. This arguably resulted in less change and innovation (but still a
Example
Until about two decades ago, each country had a monopoly national telephone service provider (often combined with the post office). In the United States this was the Bell System, with its own research, equipment, software development, and manufacturing. Suppliers and providers coordinated through standardization bodies in Geneva, predominantly the International Telecommunication Union (ITU), formerly called Comit$e Consultatif International Tlphonique et T$el$egraphique (CCITT). Through these processes, the national networks and their interconnection were carefully planned top-down, and changes (such as direct distance dialing) were
Since the networked computing infrastructure has not followed a top-down process, beyond the core idea of layering there is no overall architectural vision that guides the industry. Rather than pointing to a guiding architecture, we must resort to an analysis of the current state of the industry. An attempt at this analysis is shown in figure 7.5 (Messerschmitt 1999b). It illustrates three stovepipes of lower layers, one specific to each technology (processing, storage, and connectivity). Distributed applications (as well as nondistributed applications that combine processing and mass storage) want a homogeneous infrastructure that combines these three technologies in different ways, and thus the top layers are common to all three (see table 7.1).
|
|
|
Layer |
Description |
Examples |
|---|---|---|
|
|
||
|
Applications |
A diversity of applications provide direct and specific functionality to users. |
|
|
Segmented application services |
Captures functionality useful to a narrower group of applications, so that those functions need not be reimplemented for each application. This layer has horizontal heterogeneity because each value-added infrastructure element is not intended to serve all applications. |
Message-oriented middleware emphasizes work flow applications; information brokering serves as an intermediary between applications or users and a variety of information sources. |
|
Integrated services layer |
Provides capabilities that integrate the functions of processing, storage, and connectivity for the benefit of applications. |
Directory services use stored information to capture and identify the location of various entities—essential to virtually all distributed applications. |
|
Generic services layer |
Provides services that integrate processing, storage, and connectivity in different ways. |
The reliable and ordered delivery of data (connectivity); the structured storage and retrieval of data (storage); and the execution of a program in an environment including a user interface (processing and display). |
|
Common representations |
Provides abstract representations for information in different media (like processing instructions, numerical data, text, pictures, audio, and video) for purposes of processing, storage, and communication. They are deliberately separated from specific technologies and can be implemented on a variety of underlying technologies. |
A virtual machine representing an abstract processing engine (even across different microprocessors and operating systems); a relational table representing the structure of stored data (even across different platforms); and a stream of bytes (eight-bit data) that are delivered reliably in order (even across different networking technologies). |
|
Processing, storage, and connectivity |
Provide the core underlying technology-dependent services. |
Microprocessors, disk
|
|
|
Figure 7.5:
A layered architecture for distributed applications and the supporting infrastructure.
The essential idea behind figure 7.5 is illustrated in figure 7.6. The intermediate layers provide a common set of services and information representations widely used by applications. The goal is to allow a diversity of technologies to coexist with a diversity of applications without
Figure 7.6:
Layering provides separation of a diversity of technologies from a diversity of applications.
Of particular importance is the spanning layer. Assuming it is not bypassed—all layers above make use of its services but do not interact directly with layers below—a well-designed spanning layer can eliminate the dependence of layers above from layers below, allowing each to evolve independently. Successfully establishing a spanning layer creates a large market for solutions (application and infrastructure) that build upon it, both above and below. The spanning layer
Example
The internet protocol can be viewed as a spanning layer, although it is limited to the connectivity stovepipe. As illustrated by the hourglass of figure 4.6, the IP layer does effectively separate applications from underlying networking technologies and has become virtually ubiquitous. Suppliers creating new communication and networking technologies assume they must support an IP layer above, and application suppliers assume they can rely on IP layers below for connectivity. Applications need not be redesigned or reconfigured when a different networking technology (e.g., Ethernet local-area network, wireless local-area network, fiber-
There are, however, limitations to layering. Mentioned earlier is the added overhead necessary to implement any strong modularity, including layering. In addition, intermediate layers can hide functionality but not performance characteristics of the underlying technology from applications.
Example When the user substitutes a slow network access link for a faster one, the delay in packet delivery due to transmission time will be increased. Nothing in the intermediate layers can reverse this.
The preferred approach today to dealing with performance variations is to make applications robust and adaptive to the actual performance characteristics. [4] Applications should be able to take advantage of higher-performance infrastructure and offer the best quality they can subject to infrastructure limitations.
Example
A Web
Many current industry standardization and commercialization efforts would support the layered model (see figure 7.7 for examples). For each standard illustrated, there are standards competing for adoption. At the common representation layer, the Java virtual machine, the relational table, and the Internet's TCP are widely adopted. At the generic services layer are shown three standards that support objectoriented programming (OOP), a standard programming technique that emphasizes and supports modularity (see section 4.3). Programs constructed according to this model consist of interacting modules called objects, and the generic services layer can support execution, storage, and communication among objects. Java supports their execution, the object-relational database management system (ORDBMS) supports the storage of objects, and IIOP allows objects to interact over the network in much the same way as they would interact within a single host.
Figure 7.7:
Examples of industry standards fitting the layered model of figure 7.5.
At the integrative services layer, CORBA attempts to identify and standardize a set of common services that integrate processing and connectivity (by incorporating Java mobile code capabilities) and processing and storage (by providing for the storage of objects). Examples include the creation or storage of objects on demand, and directories that discover and locate objects and services on the network to make distributed applications easier to develop. The Web was mentioned earlier as an application that "grew up" to become an infrastructure supporting applications that access and update information over the network. On the other hand, the Web does not support all applications (e.g., those not based on a client-server architecture). Thus, the Web-as-infrastructure
Earlier, the historical approaches of the telecommunications and computer industries were contrasted. This contrast raises an important issue for industrial organization: Who is responsible for provisioning and operation? As described in section 6.2, there are three primary options: an independent service provider (the historical telecommunications industry model), the application or infrastructure supplier (rare), or the user (the historical computer industry model). Of course there are other options, such as splitting responsibility for provisioning and operation, application and infrastructure, or different
The increasing role of application service providers in the software industry, and the trend in the telecommunications industry to focus on the provisioning and operation of infrastructure and not applications (particularly in the Internet segment of their market) suggests that
These observations provide hints as to how the industrial organization may evolve in the future. Like good software architecture (see section 4.3), market forces encourage an industrial organization with weak coupling of functions and expertise across different companies and strong cohesion within companies. These properties can be interpreted in different ways, such as transaction costs and coupling of expertise. In the long term, it seems that market forces reward firms that specialize in certain responsibilities but share core competencies, because many
This suggests a fresh look at the software value chain (see section 6.2), not in terms of responsibilities but in terms of core competencies. Seven core competencies can be identified (see table 7.2).
|
|
|
Competency |
Description |
|---|---|
|
|
|
|
Business function |
An end-user organization should understand its business functions, which in most cases are not directly related to software or technology or software-based services. |
|
User needs and requirements |
Industry
|
|
Application needs |
Infrastructure suppliers should understand needs common to a wide variety of applications and application developers, and also market forces that strongly influence the success or failure of new infrastructure solutions. |
|
Software development |
Both application and infrastructure software suppliers need software development and project management skills, with technical, organizational, and management challenges. Application suppliers must also be competent at human-centered considerations such as user interfaces. |
|
Provisioning |
Constrained by the built-in flexibility and configurability of the application, the system integrator and business consultant must understand unique organizational needs and be skilled at choosing and integrating software from different firms. |
|
Operation |
Operators must be competent at the technical aspects of achieving availability and security, administrative functions like trust and access, and customer service functions such as monitoring, billing, and helpdesk. |
|
|
To the extent that industrial organization is presaged by natural groupings of core competencies, the independent service provider (as embodied in the application service provider model) seems a likely outcome, because the core competencies resident there are quite distinct from those of the other roles. Telecommunications service providers should not try to be exclusive application suppliers; rather, they should focus on making their infrastructure services suitable for a wide range of applications and encourage a diversity of applications from many sources. They may exploit their core competency in operations by extending it from today's narrow range of applications (telephony, video distribution) to a wider range acquired from independent application suppliers, increasing the diversity of application service providers' offerings.
The increasing diversity and specialization of applications, and the need to consider the organizational and process elements of information technology and the interface between organization and technology, have profound implications for application software suppliers. As these core competencies
For end-user organizations, focusing on core competencies would imply outsourcing application development to application software suppliers, and provisioning and operation to system integrators, consultants, and service providers. In fact, this is becoming prevalent.
From a technical perspective, an infrastructure layer that is horizontally homogeneous is advantageous (see section 7.1.3). This is an important property of a spanning layer because it creates a large market for layers above and below that can evolve independently. However, as shown in figure 7.5, it is entirely appropriate for horizontal heterogeneity to creep into the layers near the top and the bottom. Near the top, this segments the market for infrastructure to specialize in narrower classes of applications. With platforms supporting applications, one size does not fit all.
Example Distributed applications benefit from an infrastructure that hides the underlying host network structure, but this is unnecessary overhead for applications executing on a single host. Work flow applications benefit from a message and queuing infrastructure, and online transaction processing applications benefit from a database management system.
Near the bottom, it is desirable to support a diversity of technologies. This diversity arises out of, as well as encourages, technological innovation.
Example
Innovation in microprocessor architecture has accompanied Moore's law as an important enabler for improving performance. Sometimes these architectural innovations can be accomplished without changing the instruction set—which clearly
History and legacy technologies are another reason for heterogeneity.
Example
Many historical operating system platforms remain, and several
It was argued earlier that unconditional software portability is neither a practical nor a desirable goal (see section 4.4.3), and for the same reason evolving toward a single platform is not desirable. There is no predetermined definition of which functionalities belong in applications and which in infrastructure, but rather capabilities that many applications find valuable (or that keep appearing in multiple applications) work their way into the underlying platform. The
Example
Sun's Java effort, including the Java programming language, runtime environments (including virtual machines), libraries, and interfacing standards, created such a candidate for spanning layer,
However, given the difficulties of establishing a totally new layer that achieves a high enough market penetration to
Example The Web migration from application to infrastructure resulted from two factors. First, it had become ubiquitous enough to attract application developers, who were not ceding much market potential by adopting it as a foundation. Second, the Web provided open APIs and documented internal interfaces that made it relatively straightforward to exploit as an infrastructure. This illustrates that an application that is more open or less proprietary is more likely to be adopted as the basis for other applications, that is, as infrastructure.
Another response to heterogeneous platforms is to design an application to be relatively easy to port to different platforms. This places special requirements on interfaces between the application and its underlying platform; if they are designed in a relatively platform-independent and open way, the porting becomes easier (but exploiting the strengths of specific platforms becomes harder).
Example
The Web is a good illustration of this. As a distributed application, the Web had to deal with two primary challenges. First, if the Web was to be more than simply a vehicle for displaying static stored pages (its original purpose), it had to allow other applications to display information via the Web browser and server. For example, dynamic Web pages based on volatile information stored in a database management system required an intermediary program (encompassing what is usually called the application logic) that requested the appropriate information from the database and displayed it in the proper formats in the browser. For this purpose, an open and relatively platform-independent API called the common gateway interchange (CGI) was standardized. The second challenge was the interoperability between browser and server running on different platforms. Fortunately, this problem was already partially
Another approach is to embrace horizontal heterogeneity but arrange the infrastructure so that interoperability and even composability are achieved across different platforms by appropriate industry standards or by platform-specific translators.
Example Different platforms for both servers and desktop computers tend to use different protocols and representations for file storage and print services. Users, on the other hand, would like uniform access to their files across all platforms (including Mac OS, the different forms of UNIX, and Windows), for example, to access files or print services on a UNIX server from a desktop (Linux or Mac OS or Windows) platform. Various open source solutions (e.g., Samba) and commercial solutions (e.g., Netware, NFS, Appletalk, Banyan Vines, and Decnet) provide this capability. See section 7.3 for additional examples in the context of software components and Web services.
Instead of tackling protocols (which specify how information gets from one platform to another) other industry standards focus on providing a common, flexible representation for information (without addressing how that information gets from one platform or application to another). These are complementary, since information must be transferred and must be understandable once it has been transferred.
Example XML is a flexible and extensible language for describing documents. It allows standardized tags that identify specific types of information to be identified. A particular industry can standardize these tags for its own context, and this allows different firms to exchange business documents and then extract the desired information from those documents automatically. For example, one industry might define an XML-based standard for describing purchase orders, and then each company can implement translators to and from this common representation for purchase orders within its (otherwise incompatible) internal systems. Unlike HTML, XML separates the formatting of a document from its content. Thus, workers can display XML purchase orders in presentations specific to their internal needs or practices.
A fourth approach to dealing with heterogeneous platforms is to add a service provider who either acts as an intermediary or centralizes the application.
Example
Some companies have created a common intermediary exchange as a place to
Distinct types of infrastructure can be identified in the layered architecture of figure 7.5. In classifying a particular type of infrastructure, it is important at minimum to ask two basic questions. First, does this infrastructure support a broad range of applications (in the extreme, all applications), or is it specialized to one segment of the application market? Second, is the infrastructure
|
|
|
Not Application-Dependent |
Particular to One Application Market Segment |
|
|---|---|---|
|
|
||
|
Not technology-dependent |
The Internet TCP transport layer is widely used by applications desiring reliable, ordered delivery of data. The specific networking technologies present are hidden from TCP and layers above by the Internet IP spanning layer. |
Message-oriented middleware supports work flow applications, and the Web supports information access and presentation. Each emphasizes distributed applications across heterogeneous platforms. |
|
Particular to one technology platform |
Operating systems are specific to a computer platform, although some (like Linux, Solaris, Windows NT, and Windows CE) have been ported to several. Each is designed to support a wide variety of applications on that platform. |
Information appliances typically support a single application, and build that application on a single infrastructure technology platform. |
|
|
Application- and technology-independent infrastructure clearly has the greatest market potential as measured by adoptions or unit sales. However, this type offers little opportunity for differentiation as to functions or features. To actually achieve universality, it must be highly standardized and hence commoditized. If it is well differentiated from other options, it is likely struggling for acceptance. Thus, this type of infrastructure probably represents the least opportunity for profit but is nevertheless quite important and beneficial. The current trend is therefore to use community-based development methodologies to create and maintain this type of software (as illustrated by the Samba example earlier; also see section 4.2.4), although not exclusively. Its universal appeal and wide use lend themselves to community-based development. This is leading to new types of software licensing approaches that mix the benefits of community-based development such as open source with commercial considerations such as deriving revenue and profit (see chapter 8).
Example
Sun Microsystems has been a leading proponent of community-based development of infrastructure, examples being its Java middleware layer for portable execution (see section 4.4.3) and Jini, a platform for plug-and-play interoperability among information appliances (Sun
At the other extreme, application- and technology-dependent infrastructure is characteristic of the stovepipe architecture (see section 7.1.3), and for the reasons discussed earlier is
This section has enumerated some global architectural alternatives and their relation to industry structure. Architecture, because it defines the boundaries of competition and complementarity, is an important strategic issue for software suppliers (see section 6.1), and successfully defining and promulgating an architectural model is an important element of long-term success (Ferguson and Morris 1994). In contrast, suppliers who provide point solutions or who must plug solutions into an architecture defined elsewhere lose some control over their own destiny and have less strategic maneuvering room. Doubtless because of its significance, architectural control has also been a source of industry controversy and even government antitrust complaints (see chapter 8).
Within a given architecture, competition exists at the module level, and where a supply chain is created by hierarchical decomposition, at the submodule level as well. On the other hand, interacting modules are complementary. Suppliers naturally try to avoid direct competition in modules, particularly because high creation costs and low replication and distribution costs for software make competitive pricing of substitutes problematic (see chapter 9). Generally, open standardized interfaces (see section 7.2.3) make head-on competition more difficult to avoid, and for this reason industry standards are increasingly defined with a goal of enabling competitive suppliers to differentiate themselves with custom features or extensions while maintaining interoperability. In contrast, if suppliers choose not to offer complementary modules themselves, they encourage competitive options for those modules so that customers have a wider range of options with attractive prices and features and so that the overall system pricing is more attractive.
The architectural options and evolution discussed here have considerable implications for competition. Applications and infrastructure are complementary, and thus suppliers of each generally encourage competitive options in the other. While the expansion of infrastructure capabilities is a way to improve economic efficiency through sharing (see chapter 9) and to improve performance and quality, it also changes the competitive landscape by shrinking some application markets or at least introducing new competition.
No architectural issue has had more effect than the evolution from stovepipe toward layering architecture. This shifts the landscape from horizontal market segmentation, with an inclination toward vertical integration within each segment, to a vertical segmentation of functions where multiple complementary suppliers must cooperate to realize a full system solution.
The spanning layer is a key element of a layered architecture. Because it allows greater independence of evolution in the layers below and above, it is another form of common intermediary that makes practical a larger diversity of interoperable options below and above. Even if not initially defined with open interfaces, the ubiquity of a spanning layer implies that its interfaces below and above become de facto standards. In order for the entire infrastructure to evolve, a spanning layer and its interfaces must also evolve over time, insofar as possible through extensions rather than changes. While the spanning layer offers compelling advantages, commercial control of such a layer raises complaints of undue influence over other layers and overall system evolution. One response is government-imposed limits on the business practices of the owner of a spanning layer (see chapter 8). Another is to abandon the spanning layer in a way that
[1]
Within the limit of supporting a very specific application, this strategy is more accurately described as relying less on infrastructure and instead building more capability into the application. The telecommunications industry definitely
[2] In contrast, the telephone network uses a different transport mechanism called circuit switching that does guarantee delay but also fixes the bit rate and does not achieve statistical multiplexing (see chapter 9).
[3] The telecommunications industry developed new networking technologies such as asynchronous transfer mode and frame relay, whereas the Internet arose from the interconnection and interoperability of local-area networking technologies such as Ethernet. The Internet eventually dominated because of the positive feedback of direct network effects and because of decades of government investment in experimentation and refinement.
[4]
When high-performance infrastructure
[5] MIME stands for multipurpose Internet mail extensions (Internet Engineering Task Force draft standard/best current practice RFCs 2045-2049).
[6] The advantage of HTTP in this case is that it penetrates corporate firewalls because so many users want to browse the Web. Groove thus shares files among users by translating them into HTTP.

Invisible Engines: How Software Platforms Drive Innovation and Transform Industries

Business Model Generation: A Handbook for Visionaries, Game Changers, and Challengers

The Business of Software: What Every Manager, Programmer, and Entrepreneur Must Know to Thrive and Survive in Good Times and Bad

Profit from Software Ecosystems