Architectural Stability Reasoning using Self-Awareness Principles: Case of Self-Adaptive Cloud Architectures
This addresses the need for stable software architectures to support continuous changes in dynamic environments like cloud systems, but it appears incremental as it builds on existing self-awareness techniques.
The paper tackles the problem of ensuring architectural stability in long-lived software systems, particularly self-adaptive cloud architectures, by proposing a framework that uses self-awareness principles like runtime goals and online learning, with experimental results showing efficiency in maintaining stable behavior during runtime.
With the increased dependence on software, there is a pressing need for engineering long-lived software. As architectures have a profound effect on the life-span of the software and the provisioned quality of service, stable architectures are significant assets. Architectural stability tends to reflect the success of the system in supporting continuous changes without phasing-out. The \textit{behavioural} aspect of stability is essential for seamless operation, to continuously keep the provision of quality requirements stable and prevent architecture's drifting and phasing-out. In this paper, we present a framework for reasoning about stability during runtime, leveraging on self-awareness principles. Specifically, we employ runtime goals for managing stability goals, online learning for reasoning about stability on the long-run, and stochastic games for managing associated trade-offs. We evaluate the proposed work using the case of cloud architectures for its highly dynamics during runtime. The experimental results have shown the efficiency of self-awareness techniques in realising the expected behaviour stable during runtime operation.