Evaluating the Quality of Cloud-native Software Architectures

Cloud-native applications are developed specifically for modern cloud platforms. They are designed and built to maximally exploit the benefits offered by cloud computing. This comprises several aspects, such as a fine-grained modular architecture, using existing cloud services instead of custom solutions, exploiting the rapid elasticity of cloud computing, achieving robustness by distributing an application over independent nodes, and finally a faster and more agile development process through the fast and on-demand availability of resources in the cloud.
The goal of this project is to analyze how the development of such cloud-native applications can be supported and improved with regard to the already mentioned aspects. The focus is on the overarching architecture of a cloud-native application, specifically how the individual components are operated, combined, and how they interact, rather than focusing on individual components.

Therefore, a quality model is envisioned which covers the various characteristics of cloud-native applications and describes their impacts on higher-level quality aspects within a hierarchy. Those impacts can be of a positive or negative nature and individual characteristics might have impacts on several quality aspects. By using a suitable architectural representation it should then be possible to apply this quality model to such architectural representations using suitable metrics in order to evaluate the different quality aspects. On the one hand it should be possible to evaluate the quality of a software architecture focusing on a certain quality aspect to potentially improve it, and on the other hand it should be possible to highlight quality tradeoffs on the basis of different architectural alternatives.

Thus, the quality model should be applicable in several contexts, such as the initial design and planning of an architecture, the evolution of an architecture during the lifetime of an application, as well as the analysis and improvement of an existing application.

To make the envisioned quality model practically applicable, a suited tool-support is essential. Therefore, a prototypical implementation of tooling should accompany the project. The tooling should enable the modeling of cloud-native software architectures so that based on such architectural models, quality evaluations using the envisioned quality model are possible. A high degree of automation should be a core aspect for such tooling to reduce the usage overhead. And additionally, the integration with other established tools and framework should be possible to increase their practical value.