247b8311f3
Final German naming cleanup in dev-process: - vorlagen/ -> templates/ - vorlagen-word/ -> templates-word/ - tools/generate_word_vorlagen.sh -> tools/generate_word_templates.sh - *-vorlage.md / *-vorlage.docx -> *-template.md / *-template.docx - Review-Protokoll-vorlage.* -> Review-Minutes-template.* - angebot-vorlage.* -> quote-template.* - angebot-beispiel.html -> quote-example.html All references in README.md, toolstack/toolstack.md, build_word_template.py, and generate_word_templates.sh updated. The master Word style template (slohmaier-doc-template.docx) was already English-named. The dev-process repo is now fully English in both content and structure.
223 lines
6.5 KiB
Markdown
223 lines
6.5 KiB
Markdown
# Toolstack – slohmaier Dev Process
|
||
|
||
Complete open-source toolstack for ASPICE 4.0 and ISO 26262-compliant embedded development.
|
||
|
||
---
|
||
|
||
## Overview
|
||
|
||
| Category | Tool | Notes |
|
||
|-----------|------|-------|
|
||
| Source Control | Gitea (self-hosted) | `tea` CLI for command line, VS Code integration |
|
||
| Requirements | Doorstop (Markdown mode) | Requirements as `.md` with embedded PlantUML |
|
||
| Architecture design | Doorstop + PlantUML | SA / SWA / SWD as `.md` with mapping via `links:` (ASPICE SYS.3 / SWE.2 / SWE.3) |
|
||
| Diagrams | PlantUML | Embedded in Markdown, rendered by Gitea and VS Code |
|
||
| MISRA | Cppcheck + MISRA addon | Free, deviation permits/records via Doorstop |
|
||
| Coverage | gcov/lcov | Up to ASIL-B; MCDC-Star for ASIL-C/D |
|
||
| Unit tests | CppUTest or Google Test | Project-dependent |
|
||
| Static analysis | Cppcheck, clang-tidy | Cppcheck also for MISRA |
|
||
| Build | SCons, CMake | Project-dependent |
|
||
| Compiler | GCC ARM | Own qualification; Ferrocene for Rust |
|
||
| CI | Gitea Actions | Pipeline in the monorepo under `.gitea/workflows/` |
|
||
| Open-source analysis | ScanCode, FOSSology | License compliance |
|
||
| AI assistance | Continue.dev + Ollama | VS Code extension, local, no cloud privacy issue |
|
||
| Document export | pandoc | Markdown to PDF |
|
||
| Editor | VS Code | Primary editor for everything |
|
||
|
||
---
|
||
|
||
## Source Control: Gitea
|
||
|
||
Gitea is a self-hosted Git platform. Lightweight, runs on any hardware.
|
||
|
||
- Web UI for PRs, reviews, issues
|
||
- Gitea Actions for CI/CD (compatible with GitHub Actions syntax)
|
||
- PlantUML rendering in Markdown (via PlantUML server)
|
||
- `tea` CLI for command-line workflows
|
||
- Branch protection and approval workflows
|
||
|
||
Setup guide: `gitea-aspice-setup.md`
|
||
|
||
---
|
||
|
||
## Requirements: Doorstop (Markdown mode)
|
||
|
||
Doorstop manages requirements as `.md` files with YAML frontmatter. No proprietary format — everything readable in any editor.
|
||
|
||
**Advantages:**
|
||
- Requirements are Markdown, versioned in Git
|
||
- PlantUML diagrams embedded directly in the requirement
|
||
- Traceability check via CLI: `doorstop check`
|
||
- Report generation: `doorstop publish all docs/traceability/`
|
||
- Gitea renders everything natively (Markdown + PlantUML)
|
||
|
||
**Requirement format:**
|
||
|
||
```markdown
|
||
---
|
||
active: true
|
||
level: 1.0
|
||
links:
|
||
- SYS-001: abc123
|
||
---
|
||
|
||
# SWE-001: Title
|
||
|
||
Description with embedded PlantUML.
|
||
```
|
||
|
||
---
|
||
|
||
## Architecture design: Doorstop + PlantUML
|
||
|
||
Architecture elements are also Doorstop documents, only with their own prefixes:
|
||
|
||
| Prefix | Layer | ASPICE | Directory |
|
||
|--------|--------------------------------|--------|--------------|
|
||
| SA | System Architectural Design | SYS.3 | `arch/sys/` |
|
||
| SWA | Software Architectural Design | SWE.2 | `arch/swe/` |
|
||
| SWD | Software Detailed Design | SWE.3 | `arch/swd/` |
|
||
|
||
**Mapping to requirements** via `links:` in the YAML frontmatter — identical to requirements linking. Doorstop verifies in both directions: no orphan requirements, no orphan architecture elements.
|
||
|
||
**Verification in CI:**
|
||
|
||
```bash
|
||
doorstop check # bidirectional, fails on gaps
|
||
doorstop publish all docs/traceability/ # generate traceability matrix
|
||
```
|
||
|
||
Templates under `dev-process/templates/`:
|
||
- `SA-template.md` — System Architecture Element
|
||
- `SWA-template.md` — Software Architecture Element
|
||
|
||
SWD is only mandatory for ASIL-C/D; for QM/A/B, code + header comments are sufficient.
|
||
|
||
---
|
||
|
||
## Diagrams: PlantUML
|
||
|
||
PlantUML diagrams are embedded directly in Markdown. No separate tool, no export.
|
||
|
||
**Rendering:**
|
||
- Gitea: automatically via the PlantUML server (configuration in `app.ini`)
|
||
- VS Code: PlantUML extension (jebbs.plantuml) for live preview
|
||
- Export: pandoc with PlantUML filter for PDF
|
||
|
||
---
|
||
|
||
## MISRA: Cppcheck + MISRA addon
|
||
|
||
Cppcheck with the MISRA addon checks C code for MISRA compliance. Free, runs in the CI pipeline.
|
||
|
||
```bash
|
||
cppcheck --addon=misra --error-exitcode=1 src/
|
||
```
|
||
|
||
Deviation permits and records are kept as Markdown files in the `misra/` directory. Templates under `dev-process/templates/`.
|
||
|
||
---
|
||
|
||
## Coverage
|
||
|
||
| ASIL | Tool | Method |
|
||
|------|-----------|-------------------------------|
|
||
| A–B | gcov/lcov | Statement + branch coverage |
|
||
| C–D | MCDC-Star | MC/DC coverage |
|
||
|
||
Coverage reports are generated in CI and stored under `tests/results/`.
|
||
|
||
---
|
||
|
||
## Unit tests
|
||
|
||
CppUTest or Google Test, depending on project requirements.
|
||
|
||
- Tests under `tests/unit/`
|
||
- Results under `tests/results/`
|
||
- CI runs tests on every push
|
||
|
||
---
|
||
|
||
## Static analysis
|
||
|
||
| Tool | Purpose |
|
||
|------------|----------------------------------------|
|
||
| Cppcheck | General static analysis + MISRA |
|
||
| clang-tidy | Modernisation, style, bugs |
|
||
|
||
Both run in the CI pipeline.
|
||
|
||
---
|
||
|
||
## Build: SCons / CMake
|
||
|
||
Either SCons or CMake, depending on the project. Cross-compilation for ARM targets.
|
||
|
||
---
|
||
|
||
## Compiler
|
||
|
||
| Compiler | Language | Qualification |
|
||
|-----------|----------|--------------------------------------------|
|
||
| GCC ARM | C/C++ | Own qualification per ISO 26262 |
|
||
| Ferrocene | Rust | Certified Rust compiler for safety |
|
||
|
||
---
|
||
|
||
## CI: Gitea Actions
|
||
|
||
Pipeline file: `.gitea/workflows/validate.yml`
|
||
|
||
Steps on every push/PR:
|
||
1. Doorstop consistency check
|
||
2. MISRA check
|
||
3. Unit tests
|
||
4. Coverage
|
||
5. Traceability report generation
|
||
|
||
Syntax compatible with GitHub Actions.
|
||
|
||
---
|
||
|
||
## Open-source analysis
|
||
|
||
| Tool | Purpose |
|
||
|-----------|----------------------------------|
|
||
| ScanCode | License detection in source code |
|
||
| FOSSology | License compliance analysis |
|
||
|
||
Important for automotive: license compliance must be documented.
|
||
|
||
---
|
||
|
||
## AI assistance: Continue.dev + Ollama
|
||
|
||
Continue.dev as a VS Code extension with Ollama as a local backend.
|
||
|
||
- No cloud service, all data stays local
|
||
- No privacy issue with customer data
|
||
- Assistance with code writing, reviews, documentation
|
||
|
||
---
|
||
|
||
## Document export: pandoc
|
||
|
||
```bash
|
||
pandoc document.md -o document.pdf --pdf-engine=xelatex
|
||
```
|
||
|
||
All documents in Markdown, export to PDF for customers and audits.
|
||
|
||
---
|
||
|
||
## VS Code extensions
|
||
|
||
| Extension | Purpose |
|
||
|-----------------------------|--------------------------|
|
||
| PlantUML (jebbs.plantuml) | PlantUML preview |
|
||
| Markdown All in One | Markdown editing |
|
||
| GitLens | Git history, blame |
|
||
| YAML (redhat.vscode-yaml) | YAML validation |
|
||
| Continue.dev | AI with Ollama |
|