Here we collect definitions of quality attributes and their relationships .
It's powered by Jekyll and a modified TTSCK theme (see below). We use Liquid for extensive automatic hyperlinking along the dependencies you see in the model above.
As all of the arc42 content, this FAQ is free to use under a liberal Creative-Commons license:
This work is licensed under a
Creative Commons Attribution-ShareAlike 4.0 International License.
For documentation on this theme, see the original documentation.
We implemented several enhancements over the original theme (e.g. responsive navigation, thx to Falk Hoppe)
You have an environment that allows to run
- a bash script (
/bin/bash
) - docker and docker-compose
In the root directory, run docker compose up
.
This will build the site and start a web server on port 4000.
In case you already had the environment spun up, run docker compose down
to stop the server so that changes in the
docker-compose.yml file are applied.
Create a fork of https://github.com/arc42/quality.arc42.org-site. Change files and create a pull request with your changes using your fork.
Hint: _todo-qualities
contains qualities whose definitions are missing. You may fill those files with content. Then
move them to the appropriate folder (e.g. qualities/<letter>/_posts
).
Hint: If you add new files you have to clean-rebuild the whole application.
The quality graph visualizations are implemented using D3.js forced graphs.
The graph data is stored in JSON files in the assets/data
directory and loaded by the JavaScript code in the src/graphs
directory.
TODO: Later, these json files shall be auto-generated by a GitHub action. Currently, we create them locally, then commit and push them to the public repo.
This site uses Jekyll to generate a static website from a set of Markdown files and templates. The following sections explain the key concepts and configurations used in this site.
Jekyll's collections are a powerful feature that allows you to group related content together. This site uses collections to manage the different types of content:
- Qualities: These are the quality attributes of a system, such as "Performance" or "Security".
The 'qualities' collection is stored under
./_qualities
. - Requirements: These are specific quality requirements, which are related to one or more qualities.
The 'requirements' collection is stored under
./_requirements_
. - Standards: These are industry standards related to quality, such as "ISO-25010".
The collections are defined in the _config.yml
file:
collections:
posts:
hide: true
articles:
output: true
hide: true
qualities:
output: true
hide: true
requirements:
output: true
hide: true
standards:
output: true
hide: true
Qualities are stored in the _qualities
directory.
Each quality is a Markdown file with a YAML front matter that contains metadata about the quality.
Here is an example of a quality file (_qualities/A/accountability.md
):
---
title: Accountability
tags: secure
related: security, accessibility, confidentiality, privacy, intrusion-detection, intrusion-prevention
permalink: /qualities/accountability
standards: iso25010
---
Definition:
> ...
The front matter contains the following fields:
title
: The title of the quality.tags
: A list of tags related to the quality.related
: A list of related qualities.permalink
: The URL of the quality's page.standards
: A list of standards that this quality is related to.
Requirements are stored in the _requirements
directory.
Each requirement is a Markdown file with a YAML front matter that contains metadata about the requirement.
Here is an example of a requirement file (_requirements/A/access-control-policy.md
):
---
title: Access Control Policy
tags: secure
related: access-control
permalink: /requirements/access-control-policy
---
Context:
> ...
The front matter contains the following fields:
title
: The title of the requirement.tags
: A list of tags related to the requirement.standards
: A list of standards (like iso25010) where this quality is used/defined/part-ofrelated
: A list of related qualities.permalink
: The URL of the requirement's page.
The site uses a system of layouts and includes to render the content of the collections.
- Layouts: Layouts are templates that define the structure of a page.
- The layouts are stored in the
_layouts
directory. - For example, the
standards.html
layout is used to render the pages for the standards collection. - Includes: Includes are snippets of code that can be reused in different layouts.
- The includes are stored in the
_includes
directory. - For example, the
related-qualities.html
include is used to display the list of qualities related to a standard.
This architecture allows for a clean separation of content and presentation, making it easy to manage and extend the site.