# demo-epb — Elektrische Parkbremse Vollständige Demo des [slohmaier Dev Process](https://gitea.slohmaier.com/slohmaier/dev-process) anhand einer EPB-Steuergerät-Software. Zeigt ASPICE 4.0 / ISO 26262-konforme Entwicklung im Monorepo: Anforderungen, Architektur, Code, Tests, Reviews, MISRA, Safety Case, Manuals — alles auf einen Pull-Request-Klick verifizierbar, alles in einem Release-Bundle. > **🌐 Live-Dashboard:** https://gitea.slohmaier.com/pages/demo-epb/ > Auto-aktualisiert bei jedem Push auf `main` und bei jedem Release-Tag. > Diese Software ist **bewusst kein Produktivcode** — sie ist die Demonstration des Engineering-Verfahrens. Code-Umfang bewusst klein, Prozess-Tiefe vollständig. ## Was die Demo zeigt | Kategorie | Inhalt | |-----------|--------| | **Pläne** (Word) | 5 (PID, PM-, QA-, SWE-, Test-Plan) | | **Safety-Doku** (Word) | 6 (HARA, Safety Case, FMEDA, MISRA-Compliance, Verification-Report, Tool-Qualification) | | **Manuals** (Word) | 2 (User-Manual, Service-Manual) | | **Audit-Artefakte** (Word) | 3 (Review-Protokoll, Non-Conformity, MISRA-Deviation-Record) | | **System-Anforderungen** | 10 in `reqs/sys/` (Markdown + Doorstop-Style) | | **Software-Anforderungen** | 25 in `reqs/swe/` | | **System-Architektur** | 5 in `arch/sys/` mit PlantUML | | **Software-Architektur** | 10 in `arch/swe/` mit PlantUML | | **Implementierte C-Komponenten** | 4 (Apply Ctrl D, Safety Mgr D, Actuator Drv B, Switch Db QM) | | **Stub-Komponenten** | 6 weitere (Header only) | | **Unit-Tests** | 41, alle grün | | **CI-Workflows** | 2 (validate + release) | | **CI-Artefakte** | Coverage HTML, Traceability Matrix, Diagramme SVG, Doxygen, Test-Report, Cppcheck-XML | | **Cross-Platform-Runner** | Linux + macOS + Windows | ## Quick Start ```bash git clone https://gitea.slohmaier.com/slohmaier/demo-epb.git cd demo-epb # Tests make test # 41 Tests, alle grün # Mit Coverage (braucht lcov) make coverage open build/coverage-html/index.html # Test-Summary-Report (HTML) make test-report open build/test-report.html # Statische Analyse + MISRA (braucht cppcheck) make static make misra # API-Doku (braucht doxygen) make docs open build/api-doc/html/index.html # Traceability-Matrix (HTML) python3 tools/traceability.py publish docs/traceability open docs/traceability/index.html # PlantUML-Diagramme rendern (SVG) python3 tools/render_plantuml.py ``` ## Geführte Tour (~30 min) ### 1. Projektplanung (Word) `docs/`: - **PID.docx** — Was wird gebaut und warum - **SWE-Plan.docx** — Sprache, Standards, Branching, Reviews, Coverage-Ziele - **QA-Plan.docx** — Qualitätsmaßnahmen, Reviews, NC-Management - **PM-Plan.docx**, **Test-Plan.docx** — Arbeitspakete + Teststrategie ### 2. Funktionale Sicherheit (Word — `docs/safety/`) - **HARA.docx** — Hazard Analysis & Risk Assessment. Leitet **ASIL-D** ab. - **Safety-Case.docx** — Argumentation in GSN-Style, warum die Sicherheitsziele erfüllt sind - **FMEDA.docx** — Pro-Komponente Failure Modes mit Diagnostic Coverage - **Tool-Qualification-Cppcheck.docx** — Tool-Qual für Cppcheck (TI2/TD2/TCL2) - **MISRA-Compliance-Statement.docx** — formaler Compliance-Nachweis - **Verification-Report.docx** — V-Modell rechte Seite zusammenfassend ### 3. Manuals (Word — `docs/manuals/`) - **User-Manual.docx** — Fahrerhandbuch-Auszug (Apply, Release, Hill-Hold, LED-Codes) - **Service-Manual.docx** — Werkstatt-Doku mit UDS-DTCs, Service-Modus, Sensor-Prüfung ### 4. Sicherheits-Logik (das ASIL-D Stück) Traceability-Kette: ``` reqs/sys/SYS-001.md → arch/swe/SWA-002.md → src/apply_controller.c → tests/unit/test_apply_controller.c ``` ### 5. Anforderungen + Architektur (Doorstop in Markdown) - `reqs/sys/` + `reqs/swe/` — Anforderungen mit Mapping - `arch/sys/` + `arch/swe/` — Architektur mit Mapping per `links:` im Frontmatter - Eingebettete PlantUML-Diagramme rendern direkt in Gitea (UI) und als SVG im Release-Bundle ### 6. Code mit Mapping-Tags Jede `.c`-Datei trägt `@arch`, `@reqs`, `@asil` im Header: ```c /** * @file apply_controller.c * @arch SWA-002 * @reqs SWE-001 SWE-002 SWE-003 SWE-004 * * ASIL: D. */ ``` ### 7. Tests mit Anforderungs-Tags `tests/unit/test_*.c` referenziert die Requirements per `@reqs`. Test-Report (`build/test-report.html`) macht das Mapping klickbar sichtbar. ### 8. Audit-Artefakte - `docs/reviews/REV-001.docx` — Review-Protokoll für die ASIL-D-Komponente - `docs/non-conformities/NC-001.docx` — NC mit Korrekturmaßnahme - `misra/records/MISRA-REC-001.docx` — MISRA Advisory-Deviation ### 9. CI-Pipeline (`.gitea/workflows/validate.yml`) Bei jedem Push: 1. **Cross-Platform Build + Test** auf Linux + macOS + Windows 2. **Static Analysis** (Cppcheck) 3. **MISRA-Check** (Cppcheck + MISRA-Addon) 4. **Coverage** (gcov/lcov) 5. **Traceability-Check** (bidirektional) 6. **PlantUML-Render** (alle Diagramme als SVG) 7. **Doxygen-API-Doc** 8. **Test-Summary-Report** Alles als Gitea-Artefakte abrufbar. ### 10. Release-Workflow (`.gitea/workflows/release.yml`) Auf Tag-Push `v*.*.*`: - Vollständigen Build + alle Reports - Bündelt **Source-Archive + Artefakt-Archive** (CI-Output + alle Word-Docs) - Erzeugt Gitea-Release mit Release-Notes Beispiel: https://gitea.slohmaier.com/slohmaier/demo-epb/releases ## Architektur-Überblick ``` EPB ECU (SA-001) +----------------------------------+ | Safety Manager (D) | ← arch/swe/SWA-001.md | Apply Controller (D) | ← arch/swe/SWA-002.md | Actuator Driver (B) | ← arch/swe/SWA-003.md | Wheel Speed Plausi (B) [stub] | | Inclino Filter (B) [stub] | | Switch Debouncer (QM) | ← arch/swe/SWA-006.md | Display Manager (QM) [stub] | | Diag Manager (QM) [stub] | | Service Mode (QM) [stub] | | Logger (QM) [stub] | +----------------------------------+ | | Aktor L (SA-002) Aktor R (SA-002) ``` ## Format-Strategie | Inhalt | Format | Begründung | |--------|--------|------------| | Pläne + Safety + Audit + Manuals | **Word** (.docx) | Industriestandard für ISO-9001-Freigabe | | Requirements + Architektur | **Markdown** (Doorstop-Stil) | Lebendig, diff-bar, Traceability per Skript | | Code, Tests, CI | C / YAML | klar | | Release-Bundle | tar.gz mit allem | Eine Datei für den Auditor | Markdown ist Source of Truth, Word wird per pandoc daraus gebaut. ## Referenzen - [slohmaier/dev-process](https://gitea.slohmaier.com/slohmaier/dev-process) — Methodik-Repo - ASPICE 4.0 - ISO 26262 (insbesondere Part 2, 3, 5, 6, 8, 10) - MISRA C:2012 ## Lizenz MIT — siehe [LICENSE](LICENSE).