You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: test/cpp/features/compatibility.feature
+5Lines changed: 5 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1,17 +1,20 @@
1
1
Feature: Compatibility
2
+
# @sbdl compatibility is aspect { description is "As a software craftsperson, I want my development environment to be compatible with commonly used tools and systems." }
2
3
3
4
As a software craftsperson,
4
5
to ensure that my development environment works well with a variety of tools and systems,
5
6
I want my development environment to be compatible with commonly used tools and systems.
6
7
7
8
@REQ-COMPAT-0001
8
9
Rule: Open Container Initiative (OCI) Image Specification
10
+
# @sbdl req-compat-0001 is requirement { description is "amp-devcontainer images *SHALL* be compatible with the [OCI image specification](https://github.com/opencontainers/image-spec/blob/main/spec.md)" aspect is compatibility }
9
11
amp-devcontainer images *SHALL* be compatible with the [OCI image specification](https://github.com/opencontainers/image-spec/blob/main/spec.md)
10
12
11
13
To guarantee compatibility with container runtimes and container- and image tooling; amp-devcontainer should be compatible with the OCI image specification.
12
14
13
15
@REQ-COMPAT-0002
14
16
Rule: Host architecture
17
+
# @sbdl req-compat-0002 is requirement { description is "amp-devcontainer *SHALL* be compatible with both the x86-64 (AMD64) *and* AArch64 (ARM64) host architectures." aspect is compatibility }
15
18
amp-devcontainer *SHALL* be compatible with both the x86-64 (AMD64) *and* AArch64 (ARM64) host architectures.
16
19
17
20
Supporting both x86-64 and AArch64 has several advantages:
@@ -21,6 +24,7 @@ Feature: Compatibility
21
24
22
25
@REQ-COMPAT-0003
23
26
Rule: Integrated Development Environment (IDE)
27
+
# @sbdl req-compat-0003 is requirement { description is "amp-devcontainer *SHOULD* be compatible with [VS Code](https://code.visualstudio.com/) *and* [GitHub Codespaces](https://github.com/features/codespaces)." aspect is compatibility }
24
28
amp-devcontainer *SHOULD* be compatible with [VS Code](https://code.visualstudio.com/) *and* [GitHub Codespaces](https://github.com/features/codespaces).
25
29
26
30
It should be possible to use amp-devcontainer and all of its features in both VS Code and GitHub Codespaces with minimal effort.
@@ -29,6 +33,7 @@ Feature: Compatibility
29
33
30
34
@REQ-COMPAT-0004
31
35
Rule: GitHub Actions
36
+
# @sbdl req-compat-0004 is requirement { description is "amp-devcontainer *SHOULD* support seamless integration with [GitHub Actions](https://github.com/features/actions) without additional configuration." aspect is compatibility }
32
37
amp-devcontainer *SHOULD* support seamless integration with [GitHub Actions](https://github.com/features/actions) without additional configuration.
33
38
34
39
Seamless integration with GitHub Actions allows users to easily incorporate amp-devcontainer into their ci/cd workflows.
Copy file name to clipboardExpand all lines: test/cpp/features/compilation.feature
+6Lines changed: 6 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,13 @@
1
1
Feature: Compilation
2
+
# @sbdl compilation is aspect { description is "As a software developer, source code needs to be compiled into working software." }
2
3
3
4
As a software developer,
4
5
to generate a working product, when using compiled languages,
5
6
source code needs to be compiled into working software.
6
7
7
8
@REQ-COMP-0001
8
9
Rule: Compile for container host architecture and operating system
10
+
# @sbdl req-comp-0001 is requirement { description is "amp-devcontainer *SHALL* be able to compile valid source code into a working executable targeting the container host architecture and operating system." aspect is compilation }
9
11
amp-devcontainer *SHALL* be able to compile valid source code into a working executable targeting the container host architecture and operating system.
10
12
11
13
Compiling valid source code into working software, able to run on the container host architecture and operating system,
@@ -17,13 +19,15 @@ Feature: Compilation
17
19
18
20
@flavor:cpp
19
21
Scenario: Compile valid source code into working software targeting the container host architecture
22
+
# @sbdl compile-valid-source-code-into-working-software-targeting-the-container-host-architecture is test { description is "Compile valid source code into working software targeting the container host architecture" requirement is req-comp-0001 }
20
23
Given build configuration "gcc" is selected
21
24
And build preset "gcc" is selected
22
25
When the selected target is built
23
26
Then the output should contain "Build finished with exit code 0"
24
27
25
28
@REQ-COMP-0002
26
29
Rule: Compile for ARM Cortex target architecture
30
+
# @sbdl req-comp-0002 is requirement { description is "amp-devcontainer *SHOULD* be able to compile valid source-code into a working ELF executable targeting the ARM Cortex architecture." aspect is compilation }
27
31
amp-devcontainer *SHOULD* be able to compile valid source-code into a working ELF executable targeting the ARM Cortex architecture.
28
32
29
33
Compiling valid source-code into working ELF executables, able to run on the ARM Cortex architecture,
@@ -32,6 +36,7 @@ Feature: Compilation
32
36
33
37
@REQ-COMP-0003
34
38
Rule: Compile for Microsoft® Windows operating system
39
+
# @sbdl req-comp-0003 is requirement { description is "amp-devcontainer *SHOULD* be able to compile valid source-code into a working executable targeting the Microsoft® Windows operating system." aspect is compilation }
35
40
amp-devcontainer *SHOULD* be able to compile valid source-code into a working executable targeting the Microsoft® Windows operating system.
36
41
37
42
Compiling valid source-code into working executables, able to run on the Microsoft® Windows operating system, can be necessary in several scenarios e.g.
@@ -41,6 +46,7 @@ Feature: Compilation
41
46
42
47
@REQ-COMP-0004
43
48
Rule: Compilation cache
49
+
# @sbdl req-comp-0004 is requirement { description is "amp-devcontainer *MAY* be able to cache the results of a compilation to speed-up subsequent compilations." aspect is compilation }
44
50
amp-devcontainer *MAY* be able to cache the results of a compilation to speed-up subsequent compilations.
45
51
46
52
Maintaining a compilation cache can be useful in both local and ci development scenarios. A compilation cache can provide benefits like:
Copy file name to clipboardExpand all lines: test/cpp/features/debugging.feature
+3Lines changed: 3 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,13 @@
1
1
Feature: Debugging
2
+
# @sbdl debugging is aspect { description is "As a software craftsperson, I want to be able to debug my source code within the development environment." }
2
3
3
4
As a software craftsperson,
4
5
to efficiently identify and resolve issues in my code,
5
6
I want to be able to debug my source code within the development environment.
6
7
7
8
@REQ-DBG-0001
8
9
Rule: Debugging support
10
+
# @sbdl req-dbg-0001 is requirement { description is "amp-devcontainer *SHALL* provide debugging support for the primary programming language(s) used within the container." aspect is debugging }
9
11
amp-devcontainer *SHALL* provide debugging support for the primary programming language(s) used within the container.
10
12
11
13
Providing debugging support within the development environment enhances the developer experience and productivity.
@@ -15,6 +17,7 @@ Feature: Debugging
15
17
16
18
@REQ-DBG-0002
17
19
Rule: Upload firmware to micro-controller
20
+
# @sbdl req-dbg-0002 is requirement { description is "amp-devcontainer *MAY* provide tools to upload compiled firmware to a connected micro-controller." aspect is debugging }
18
21
amp-devcontainer *MAY* provide tools to upload compiled firmware to a connected micro-controller.
19
22
20
23
Providing tools to upload compiled firmware to a connected micro-controller enhances the development workflow for embedded systems.
Copy file name to clipboardExpand all lines: test/cpp/features/maintainability.feature
+6Lines changed: 6 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,13 @@
1
1
Feature: Maintainability
2
+
# @sbdl maintainability is aspect { description is "As a software craftsperson, I want my development environment to be maintainable over time." }
2
3
3
4
As a software craftsperson,
4
5
to ensure that I have access to a stable and reliable development environment,
5
6
I want my development environment to be maintainable over time.
6
7
7
8
@REQ-MAINT-0001
8
9
Rule: Tool and dependency updates
10
+
# @sbdl req-maint-0001 is requirement { description is "amp-devcontainer *SHOULD* contain up-to-date tools and dependencies." aspect is maintainability }
9
11
amp-devcontainer *SHOULD* contain up-to-date tools and dependencies.
10
12
11
13
Keeping tools and dependencies up-to-date helps ensure that the development environment remains secure, stable, and compatible with the latest technologies.
@@ -14,6 +16,7 @@ Feature: Maintainability
14
16
15
17
@REQ-MAINT-0002
16
18
Rule: Automatic updates
19
+
# @sbdl req-maint-0002 is requirement { description is "amp-devcontainer *SHOULD* provide support for automatic updates when consumed as a dependency." aspect is maintainability }
17
20
amp-devcontainer *SHOULD* provide support for automatic updates when consumed as a dependency.
18
21
19
22
Providing support for automatic updates when amp-devcontainer is consumed as a dependency helps ensure that users always have access to the latest features, bug fixes, and security patches.
@@ -22,13 +25,15 @@ Feature: Maintainability
22
25
23
26
@REQ-MAINT-0003
24
27
Rule: Re-usable build system
28
+
# @sbdl req-maint-0003 is requirement { description is "amp-devcontainer *SHOULD* provide re-usable building blocks to enable building, publishing and testing derived containers." aspect is maintainability }
25
29
amp-devcontainer *SHOULD* provide re-usable building blocks to enable building, publishing and testing derived containers.
26
30
27
31
Providing re-usable building blocks for building, publishing and testing derived containers reduces duplication, and ensures consistent application of practices.
28
32
Derived containers (i.e. containers using amp-devcontainer as a base for further extension) should be able to build, push and test in the same way that amp-devcontainer does, without the need to duplicate the build system.
29
33
30
34
@REQ-MAINT-0004
31
35
Rule: Architectural decisions
36
+
# @sbdl req-maint-0004 is requirement { description is "amp-devcontainer *SHOULD* document its architectural decisions." aspect is maintainability }
32
37
amp-devcontainer *SHOULD* document its architectural decisions.
33
38
34
39
Documenting architectural decisions helps provide context and rationale for the design choices made in the development environment.
@@ -37,6 +42,7 @@ Feature: Maintainability
37
42
38
43
@REQ-MAINT-0005
39
44
Rule: Container image size
45
+
# @sbdl req-maint-0005 is requirement { description is "amp-devcontainer *SHOULD* aim to keep its container image size as small as possible without compromising functionality." aspect is maintainability }
40
46
amp-devcontainer *SHOULD* aim to keep its container image size as small as possible without compromising functionality.
41
47
42
48
Keeping the container image size small helps improve performance, reduce resource consumption, and minimize the time required to download and deploy the development environment.
Copy file name to clipboardExpand all lines: test/cpp/features/security.feature
+4Lines changed: 4 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,13 @@
1
1
Feature: Security
2
+
# @sbdl security is aspect { description is "As a security engineer, I want to have controls in place to identify and mitigate supply-chain vulnerabilities." }
2
3
3
4
As a security engineer and security conscious developer,
4
5
to have control over the security posture of my development environment,
5
6
I want to have controls in place to identify and mitigate supply-chain vulnerabilities.
6
7
7
8
@REQ-SEC-0001
8
9
Rule: Build provenance
10
+
# @sbdl req-sec-0001 is requirement { description is "amp-devcontainer *SHALL* include build provenance as specified in [SLSA v1.0 Build L3](https://slsa.dev/spec/v1.0/levels)." aspect is security }
9
11
amp-devcontainer *SHALL* include build provenance as specified in [SLSA v1.0 Build L3](https://slsa.dev/spec/v1.0/levels).
10
12
11
13
Including provenance gives confidence that the container images haven't been tampered with and can be securely traced back to its source code.
@@ -15,6 +17,7 @@ Feature: Security
15
17
16
18
@REQ-SEC-0002
17
19
Rule: Signing
20
+
# @sbdl req-sec-0002 is requirement { description is "amp-devcontainer *SHALL* cryptographically sign its released container images." aspect is security }
18
21
amp-devcontainer *SHALL* cryptographically sign its released container images.
19
22
20
23
Cryptographically signing released container images provides integrity and authenticity guarantees.
@@ -23,6 +26,7 @@ Feature: Security
23
26
24
27
@REQ-SEC-0003
25
28
Rule: Software Bill of Materials (SBOM)
29
+
# @sbdl req-sec-0003 is requirement { description is "amp-devcontainer *SHOULD* provide a Software Bill of Materials (SBOM) for its released container images." aspect is security }
26
30
amp-devcontainer *SHOULD* provide a Software Bill of Materials (SBOM) for its released container images.
27
31
28
32
Providing a Software Bill of Materials (SBOM) enables consumers to identify and manage security risks associated with the software components included in the container images.
Copy file name to clipboardExpand all lines: test/cpp/features/static-dynamic-analysis.feature
+7Lines changed: 7 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,13 @@
1
1
Feature: Static and dynamic analysis
2
+
# @sbdl static-and-dynamic-analysis is aspect { description is "As a software craftsperson, I want my source code to be statically and dynamically analyzed." }
2
3
3
4
As a software craftsperson,
4
5
to maintain consistent, high-quality and bug-free code,
5
6
I want my source code to be statically and dynamically analyzed.
6
7
7
8
@REQ-SDA-0001
8
9
Rule: Code formatting
10
+
# @sbdl req-sda-0001 is requirement { description is "amp-devcontainer *MAY* provide code formatting tools for the primary programming language(s) used within the container." aspect is static-and-dynamic-analysis }
9
11
amp-devcontainer *MAY* provide code formatting tools for the primary programming language(s) used within the container.
10
12
11
13
Providing code formatting tools helps maintain a consistent coding style across the codebase, improving readability and reducing friction during code reviews.
@@ -14,13 +16,15 @@ Feature: Static and dynamic analysis
14
16
15
17
@flavor:cpp@fixme
16
18
Scenario: Format source code according to a formatting style
19
+
# @sbdl format-source-code-according-to-a-formatting-style is test { description is "Format source code according to a formatting style" requirement is req-sda-0001 }
17
20
Given the file "clang-tools/unformatted.cpp" is opened in the editor
18
21
When the active document is formatted
19
22
And the active document is saved
20
23
Then the contents of "clang-tools/unformatted.cpp" should match the contents of "clang-tools/formatted.cpp"
21
24
22
25
@REQ-SDA-0002
23
26
Rule: Static analysis
27
+
# @sbdl req-sda-0002 is requirement { description is "amp-devcontainer *MAY* provide static analysis tools for the primary programming language(s) used within the container." aspect is static-and-dynamic-analysis }
24
28
amp-devcontainer *MAY* provide static analysis tools for the primary programming language(s) used within the container.
25
29
26
30
Providing static analysis tools helps identify potential issues in the code before it is executed, improving code quality and reducing the likelihood of runtime errors.
@@ -29,6 +33,7 @@ Feature: Static and dynamic analysis
29
33
30
34
@REQ-SDA-0003
31
35
Rule: Coverage analysis
36
+
# @sbdl req-sda-0003 is requirement { description is "amp-devcontainer *SHOULD* provide code coverage analysis tools for the primary programming language(s) used within the container." aspect is static-and-dynamic-analysis }
32
37
amp-devcontainer *SHOULD* provide code coverage analysis tools for the primary programming language(s) used within the container.
33
38
34
39
Providing code coverage analysis tools helps assess the effectiveness of the existing test suite by measuring how much of the code is exercised by the tests.
@@ -37,6 +42,7 @@ Feature: Static and dynamic analysis
37
42
38
43
@REQ-SDA-0004
39
44
Rule: Mutation testing
45
+
# @sbdl req-sda-0004 is requirement { description is "amp-devcontainer *MAY* provide mutation testing tools for the primary programming language(s) used within the container." aspect is static-and-dynamic-analysis }
40
46
amp-devcontainer *MAY* provide mutation testing tools for the primary programming language(s) used within the container.
41
47
42
48
Providing mutation testing tools helps assess the effectiveness of the existing test suite by introducing small changes (mutations) to the code and checking if the tests can detect these changes.
@@ -45,6 +51,7 @@ Feature: Static and dynamic analysis
45
51
46
52
@REQ-SDA-0005
47
53
Rule: Fuzz testing
54
+
# @sbdl req-sda-0005 is requirement { description is "amp-devcontainer *MAY* provide fuzz testing tools for the primary programming language(s) used within the container." aspect is static-and-dynamic-analysis }
48
55
amp-devcontainer *MAY* provide fuzz testing tools for the primary programming language(s) used within the container.
49
56
50
57
Providing fuzz testing tools helps identify potential security vulnerabilities and robustness issues in the code by automatically generating and executing a large number of random inputs.
0 commit comments