The sociotechnical ecosystem surrounding an organization that produces software-intensive products is based on the interactions of suppliers, competitors, customers, and more. The glue holding these intricate relationships together is more than a shared business model. It is also an architecture. It is the ability of that architecture to support the goals of multiple organizations, which cooperate, collaborate, and sometimes compete within the market segment, which in turn contributes to the success of the ecosystem that surrounds that market segment.
In an ecosystem, collaboration among organizations happens indirectly through architecture. Business goals shared among ecosystem participants drive the design and evolution of the architectures. The health of an ecosystem is measured by its robustness, niche creation ability, and productivity. The architecture contributes to robustness if its mechanisms are sufficiently flexible to accommodate emergent technologies and behaviors. The architecture contributes to niche creation if the architecture can be extended and specialized to provide unique variations that support new ideas. The architecture contributes to productivity if it is easy to combine architecture fragments into new architectures and products.
Ecosystem modeling, which captures both business and software concerns, aids the software architect in understanding the influences that will be exerted on products developed within the ecosystem. The STRategic Ecosystem Analysis Model (STREAM), an ecosystem modeling technique developed in collaboration with the Software Engineering Institute, creates a model of the ecosystem organized around the three major facets of the ecosystem: business, software, and innovation. Each facet is critical to the success of the ecosystem, but we will focus on the software facet and, more specifically, the software architecture in this presentation. The software facet of the model comprises the software architectures used for software components and products in the ecosystem and the implementations of those architectures.
The models produced by STREAM make more obvious the linkages among the business, software, and innovation facets. One particular link between the software and business facets is the supply network in the ecosystem. Most products today are an aggregation of smaller, simpler products from a number of vendors. This is often hidden behind APIs and the indirect links to suppliers. This aspect of the model allows analysis of the flow of technical debt and other software metrics through the supply network to the final product.
STREAM consists of five practices and progresses through four phases. We will discuss the planning phase in this presentation. The planning phase explores the specific questions that are to be answered by the model. As the plan is exploited, data is collected and modeled, and information is produced from the analyses of the data. Finally, the planning phase evaluates the results and evolves the modeling plan in preparation for the next iteration through the process.
STREAM has been used to understand a number of existing ecosystems, including those of commercial and governmental organizations that must remain confidential, an Army development project whose results have been approved for release, the emerging communities around two international research projects, and the well-established Eclipse and Hadoop open-source communities.