Software Ecosystems

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.