The research reported in this thesis has been carried out at Vrije Universiteit Amsterdam under the auspices of SIKS, the Dutch Research School for Information and Knowledge Systems.
The architecture of a system of systems (SoS) is created by composing systems, with each constituent system retaining independent authority over its operation and evolution. These SoS are increasingly prevalent in practice, for example, as we integrate devices in the Internet of Things (IoT) and as we build data-intensive systems to harness the information produced by disparate sources. In this SoS context, the forces produced by the independent systems cause long-held architecture practices to be ineffective, and different practices are needed. For example, rather than the traditional practice of choosing technologies to satisfy our architecture drivers, SoS architects make selections early in the design cycle and then build their architecture around those selections. Managerial independence restricts stakeholder collaboration, limiting the effectiveness of traditional architecture documentation practices. Finally, the runtime environment of the SoS is ever-evolving, and so architecture evaluation practices must extend from design time to include approaches like runtime monitoring.
This dissertation presents three replacements for traditional architecture practices, addressing the practice areas of Architecture Design, Architecture Documentation, and Architecture Evaluation. Each of these replacement practices is sensitive to the forces created by the independence of the constituent systems in an SoS.
The Architecture Design practice area was addressed with a knowledge model that bridges between abstract architecture reasoning based on quality attributes, patterns, and tactics, and concrete features of specific technologies in a particular domain (in this case, NoSQL data storage). A prototype decision support tool based on this knowledge model was developed and evaluated.
In the Architecture Documentation practice area, an architecture documentation viewpoint was defined. The viewpoint specifies and organizes the information that an SoS architect needs about a constituent system that will be introduced into an SoS. The viewpoint was evaluated for completeness.
Finally, in the Architecture Evaluation practice area, this dissertation introduces and evaluates a prototype of a reference architecture that uses a model-driven engineering approach for runtime observability of a large scale SoS with 100s or 1000s of nodes. The reference architecture combines model-driven engineering with architecture style modeling. Model-driven engineering provides the automation needed for systems of this scale, and architecture styles provide reuse of architecture knowledge about metrics and qualities.
No practice is intrinsically good or bad. As a software engineer, our task is to choose or create a practice that is fit for use, given our design context. The contribution of this dissertation is the guidance for doing this in the SoS context.