Clounaq Tool: A Web-Based Application to model and evaluate quality aspects of software architectures of cloud-native applications
This tool implements the Clounaq (Cloud-native architectural quality) approach which is based on the quality model for cloud-native software architectures (https://r0light.github.io/cna-quality-model/).
The first prototype covering the modeling functionality has been developed at https://github.com/KarolinDuerr/CNA-ModelingApp. This prototype has been extended to build the tool as available here.
The application can be started using Vite.
To do so, Node.js needs to be installed. You can then set up the project using:
$ npm install
And run the application locally in development mode with:
$ npm run dev
Afterwards you can go to http://localhost:5173
The application uses:
- the open-source modeling library JointJS published under the Open Source Mozilla Public License Version 2.0. The modeling application uses the library as-is.
- Vue.js
- Mermaid
The totypa (TOSCA Typescript parser) library provides Typescript type definitions for the TOSCA standard and parsers for generating Javascript objects out of TOSCA Profile definitions so that they can be used within the app.
To be able to directly run Typescript files, install tsx
:
npm install tsx
Then run the profileParser in the following way:
cd src/totypa/parsers/v2dot0-parsers
npx tsx profileParser.ts
The tool is intended to be customizable. Therefore you can edit the underlying quality model and extend the evaluation through additional implementations. The underlying quality model is specified in JSON in the following file:
src/core/qualitymodel/specifications/qualitymodel.ts
Additional literature can be added in:
src/core/qualitymodel/specifications/literature.ts
Changes to these files will be directly reflected in the quality model after a restart of the application.
To also add implementations to specify additional evaluations, you can modify the following file:
src/core/qualitymodel/evaluation/measureImplementations.ts
to add measure implementations (The key for each attribute of the measureImplementations
constant needs to be unique and the same as specified in the quality model specification).
And in:
src/core/qualitymodel/evaluation/evaluationImplementations.ts
you can add implementations for the evaluations of product factors or quality aspects. (Again the key for example for each attribute in the productFactorEvaluationImplementation
constant needs to be unique and the same as specified in the quality model specification).
For the implementations of measures and evaluations, you can rely on the model of an application as represented by src/core/entities/system.ts and its related classes.
To generate a markdown representation of the quality model (based on src/core/qualitymodel/specifications/qualitymodel.ts ), a node script is included which you can run via:
cd src/core/qualitymodel
npx tsx exportToMarkdown.ts