21 May 2013: Discussion Note “Software Ecosystems” Author Dr. T V Gopal Professor & Chairman, Division II [Software] Department of Computer Science and Engineering Anna University Chennai – 600 025, India e-mail: [email protected] Home Page: http://www.csi-india.org/web/csi/division2 Software Ecosystem is a book written by David G. Messerschmitt and Clemens Szyperski that explains the essence and effects of a "Software Ecosystem", defined as a set of businesses functioning as a unit and interacting with a shared market for software and services, together with relationships among them. These relationships are frequently underpinned by a common technological platform and operate through the exchange of information, resources, and artifacts. Richard Stallman argues that software has nothing in common with an ecosystem which is a natural system of combined physical and biological components of a natural environment. “It is a mistake to describe the free software community, or any human community, as an "ecosystem", because that word implies the absence of (1) intention and (2) ethics.” A human ecosystem consists of actors, the connections between the actors, the activities by these actors and the transactions along these connections concerning physical or non-physical factors. We further distinguish between commercial and social ecosystems. In a commercial ecosystem the actors are businesses, suppliers and customers, the factors are goods and services and the transactions include financial transactions, but also information and knowledge sharing, inquiries, pre- and post-sales contacts, etc. Social ecosystems consist of users, their social connections and the exchanges of various forms of information. Software Ecosystems (SECOs) are an effective way to construct large software systems on top of a software platform by composing components developed by actors internal and external to the organization developing the platform. In this setting, software engineering is spread outside the traditional borders of software companies to a group of companies, private persons, or legal entities. While software ecosystems are thus arguably gaining importance, research in software ecosystems is in its infancy. “Traditionally, a software ecosystem refers to a collection of software products that have some given degree of symbiotic relationships.” - Messerschmitt et al “We define a software ecosystem as a set of businesses functioning as a unit and interacting with a shared market for software and services, together with the relationships among them. These relationships are frequently underpinned by a common technological platform or market and operate through the exchange of information, resources and artifacts.” - Jansen et al “A software ecosystem consists of the set of software solutions that enable, support and automate the activities and transactions by the actors in the associated social or business ecosystem and the organizations that provide these solutions.” - Bosch et al “A software ecosystem consists of a software platform, a set of internal and external developers and a community of domain experts in service to a community of users that compose relevant solution elements to satisfy their needs.” - Bosch et al “A software ecosystem is a collection of software projects which are developed and evolve together in the same environment.” - Lungu Service Application software Middleware Services Systems Software Hardware Figure 1: Typical “Software Ecosystem” Stack The software stack divides the software activity into layers that are complementary to each other. Most companies specialize on one or few layers and rely on other companies to offer the complementary components. Each of these components is layered above the other, and communicates through more or less standard interfaces, with closer layers being more related to each other than layers that are further apart on the stack. Figure 2: Example “Industry Stack” for a Software Ecosystem The value of a merger between software companies depends a great deal on how easy it is to technical integrate the products of both companies. The “Stack Distance” is a useful metric in estimating the efficacy of collaborations, mergers and acquisitions amongst the various companies. Very often the outcome of mergers between similar software companies is not very successful because these companies have problems with the technical integration of the software products. When companies produce in different layers of the stack, products are already working as complementary as components of a network system, through a common platform, and technical integration is not an uncertainty. Mergers and acquisitions, allowing firms to hold equity stakes in complementary companies, may lead to the realization of value from the internalization of complementary network externalities. “Software ecosystem is an informal network of (legally independent) units that have a positive influence on the economic success of a software product and benefit from it”. - Kittlaus and Clough Figure 3: From Verticals to Horizontals – The Impact of “Software Ecosystems” The systems that we are interested in - information systems, organizations, and industries - share a common set of characteristics that lead to the emergence and desirability of stacks. They are all goal (individual, organizational, or societal) directed, complex systems that mediate the gap between core capabilities and resources (raw materials, skills, knowledge) and the expectations of stakeholders (consumers, users, managers, shareholders, and so on). The challenge is, of course, that the raw materials and core capabilities change, expectations across stakeholders are divergent and changing, and our understanding of both the starting point (the core capabilities and resources) and the end point (the expectations) is poorly specified. Nevertheless, the existence of information systems, successful companies, and a robust economy are a testament to our success at doing a fairly reasonable job at building these complex systems. If the “Software Ecosystem” is modeled as a stack, then the following seven operators indicate the effective inter-layer collaborations, mergers and acquisitions. 1. Splitting: takes a single component from the system and converts it into hierarchical design with a core set of independent modules. 2. Substituting: replaces an existing component with a new component that performs the same operations as the replaced component. 3. Augmenting: means adding a module 4. Excluding: means leaving one out. 5. Inverting: makes public previously hidden information about a module. It combines the common functions into a new module that the existing modules can utilize. 6. Porting: is the property of a system that permits it to be mapped from one context or infrastructure instance (operating systems, processor architectures, programming language, or development environment) to a different context or infrastructure instance. 7. Linking: connects two previously unconnected modules Figure 4: A taxonomy of “Software Ecosystems” Figure 5: Governance Model for the “Software Ecosystem” Figure 6: Open Source Software Ecosystem Software product line companies increasingly expand their platform outside their organizational boundaries, in effect transitioning to a software ecosystem approach. References 1. Bala Iyer and David Dreyfus, Architecture in Design Science: The Case of Stacks 2. Bala Iyer, David Dreyfus and Per Gyllstrom, A Network-based View of Enterprise Architecture 3. Bosch, Jan (2009). From Software Product Lines to Software Ecosystems. Accepted for SPLC 2009 (13th International Software Product Line Conference), August 2009 4. Bosch, J. & P.M. Bosch-Sijtsema (2009). From Integration to Composition: On the Impact of Software Product Lines, Global Development and Ecosystems. Accepted for publication in the Journal of Systems and Software. 5. Bosch, J. & P.M. Bosch-Sijtsema (2009). Software Product Lines, Global Development and Ecosystems: Collaboration in Software Engineering. Chapter to appear in Collaborative Software Engineering, I. Mistrik (Ed.), Springer Verlag. 6. Konstantinos Manikas and Klaus Marius Hansen, Software Ecosystems: A Sytematic Literature Review, Technical Report no. 2012/02, Department of Computer Science, University of Copenhagen, ISSN: 0107-8283 7. Lucia S. Gao and Bala Iyer, Partnerships between Software Firms: Is There Value from Complementarities? 8. Lucia Gao and Bala Iyer, Analyzing Complementarities Using Software Stacks for Software Industry Acquisitions, Journal of Management Information Systems, Fall 2006. 9. Slinger Jansen and Michael Cusumano, Defining Software Ecosystems: A Survey of Software Platforms and Business Network Governance. 10. Slinger Jansen, Anthony Finkelstein and Sjaak Brinkkemper, A Sense of Community: A Research Agenda for Software Ecosystems.
© Copyright 2026 Paperzz