-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathsoftware-requirements-specification.md.j2
More file actions
122 lines (89 loc) · 6.1 KB
/
software-requirements-specification.md.j2
File metadata and controls
122 lines (89 loc) · 6.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
---
title: "Software requirements specification for amp-devcontainer"
author: ["@rjaegers"]
colorlinks: true
date: "{{ sbdl['doc_control']['custom:generated_at'] }}"
keywords: [Software, Requirements, SRS, amp-devcontainer]
lang: "en"
titlepage: true
titlepage-color: "0B5ED7"
titlepage-text-color: "FFFFFF"
titlepage-rule-color: "FFFFFF"
titlepage-rule-height: 2
toc: true
toc-own-page: true
header-includes:
- \AtEndDocument{\label{lastpage}}
{% if sbdl['doc_control']['custom:is_release'] != 'true' %}
watermark: "DRAFT"
{% endif %}
footer-right: "\\thepage \\hspace{1pt} of \\pageref*{lastpage}"
...
# Introduction
## Purpose
This document describes the software system requirements for amp-devcontainer.
## Scope
This document covers the requirements for the amp-devcontainer project: a set of devcontainers tailored towards modern, embedded, software development.
The following is in scope:
- Container image flavors for C++ and Rust development
- Tooling for compilation, debugging, static and dynamic analysis
- Compatibility with IDEs, container runtimes, and ci/cd systems
- Security properties of released container images
- Maintainability of the container images and their build system
The following is out of scope:
- Application-level software built using the containers
- Deployment of end-user products
- Requirements for third-party tools and dependencies included in the containers
## References
| Identifier | Title |
|------------|------------------------------------------------------------------------------------------------------------------------------------------|
| RFC 2119 | [Key words for use in RFCs to Indicate Requirement Levels](https://www.rfc-editor.org/rfc/rfc2119) |
| OCI | [Open Container Initiative Image Specification](https://github.com/opencontainers/image-spec/blob/main/spec.md) |
| SLSA | [Supply-chain Levels for Software Artifacts v1.0](https://slsa.dev/spec/v1.0/levels) |
| SemVer | [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html) |
| DevC | [Development Containers Specification](https://containers.dev/) |
## Document Control
| Property | Value |
|-------------------|-------------------------------------------------------|
| Document version | {{ sbdl['doc_control']['custom:version'] }} |
| Generation date | {{ sbdl['doc_control']['custom:generated_at'] }} |
| Source revision | {{ sbdl['doc_control']['custom:git_sha'] }} |
| Source branch/tag | {{ sbdl['doc_control']['custom:git_ref'] }} |
| Model | SBDL {{ sbdl['doc_control']['custom:sbdl_compiler_version'] }} (DSL {{ sbdl['doc_control']['custom:sbdl_dsl_version'] }}) |
This document is generated from a formal model defined in [sbdl](https://sbdl.dev) and versioned alongside the source code in Git.
The authoritative source of change history is the [Git log](https://github.com/philips-software/amp-devcontainer/commits/) of the source material from which the model is built.
Changes to requirements are tracked at the individual requirement level through the version control system and are part of the project's standard change control process.
## Definitions of key words
The key words *MUST*, *MUST NOT*, *REQUIRED*, *SHALL*, *SHALL NOT*, *SHOULD*, *SHOULD NOT*, *RECOMMENDED*, *MAY*, and *OPTIONAL* in this document are to be interpreted as described in [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119).
## Abstract
amp-devcontainer is a set of [devcontainers](https://containers.dev/) tailored towards modern, embedded, software development.
The containers may be used both for local development and continuous integration (ci).
## Terminology and Abbreviations
| Term | Description/Definition |
|-----------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ARM | A family of RISC architectures for computer processors and micro controllers, formerly an acronym for Advanced RISC Machines and originally Acorn RISC Machine |
| Continuous Delivery (cd) | Extends ci by automating the release of validated code, extending test automation to ensure that code is production-ready |
| Continuous Integration (ci) | The practice of continuously integrating developers' work to a shared code-base; including automation for build and test |
| ELF | Executable and Linkable Format, formerly named Extensible Linking Format |
| RISC | Reduced Instruction Set Computer |
# Requirements
{%- macro reencode(text) -%}
{{ text.encode('utf-8').decode('unicode_escape') }}
{%- endmacro -%}
{%- macro strip_gherkin_prefix(text) -%}
{{ text | replace('Rule: ', '') | replace('Feature: ', '') }}
{%- endmacro -%}
{%- for aspect_id, aspect in sbdl.items() %}
{%- if aspect.type == 'aspect' %}
## {{ reencode(strip_gherkin_prefix(aspect['custom:title'])) }}
{{ reencode(aspect.description) }}
{%- if 'requirement' in aspect %}
{%- for req_ref in aspect.requirement %}
{%- set req = sbdl[req_ref.identifier] %}
### {{ req_ref.identifier }}: {{ reencode(strip_gherkin_prefix(req['custom:title'])) }}
{{ reencode(req.description) }}
{{ reencode(req.remark) }}
{%- endfor %}
{%- endif %}
{%- endif %}
{%- endfor %}