Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0b58185af7 | |||
| 2167c100e8 | |||
| 39b7182e0b | |||
| ba7a3ebd27 | |||
| c81121c3d5 | |||
| 8451099b90 |
+6
-6
@@ -1,10 +1,10 @@
|
||||
# Doorstop-Konfiguration fuer demo-epb
|
||||
# Doorstop configuration for demo-epb
|
||||
#
|
||||
# Bidirektionale Traceability:
|
||||
# SYS-XXX -> SA-XXX (System-Anforderung wird durch System-Arch abgedeckt)
|
||||
# SA-XXX -> SWE-XXX (System-Arch verfeinert auf Software-Anforderung)
|
||||
# SWE-XXX -> SWA-XXX (Software-Anforderung wird durch Software-Arch abgedeckt)
|
||||
# SWA-XXX -> Code (via @arch Tag im Quellcode)
|
||||
# Bidirectional traceability:
|
||||
# SYS-XXX -> SA-XXX (system requirement covered by system arch)
|
||||
# SA-XXX -> SWE-XXX (system arch refined to software requirement)
|
||||
# SWE-XXX -> SWA-XXX (software requirement covered by software arch)
|
||||
# SWA-XXX -> Code (via @arch tag in source code)
|
||||
|
||||
settings:
|
||||
digits: 3
|
||||
|
||||
@@ -12,6 +12,8 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
@@ -59,7 +61,7 @@ jobs:
|
||||
# Landing page in the bundle root
|
||||
cp build/index.html "$BUNDLE/index.html"
|
||||
|
||||
# CI-generierte Artefakte
|
||||
# CI-generated artefacts
|
||||
cp -r build/coverage-html/* "$BUNDLE/coverage/" 2>/dev/null || true
|
||||
cp -r docs/traceability/* "$BUNDLE/traceability/"
|
||||
cp -r docs/diagrams/* "$BUNDLE/diagrams/"
|
||||
@@ -69,14 +71,14 @@ jobs:
|
||||
cp build/test-report.html "$BUNDLE/reports/" 2>/dev/null || true
|
||||
cp build/test-report.md "$BUNDLE/reports/" 2>/dev/null || true
|
||||
|
||||
# Source-Code zum Anklicken aus dem Bundle (begrenzt auf das wichtigste)
|
||||
# Source code from the bundle (limited to the essentials)
|
||||
cp -r src/*.c src/*.h "$BUNDLE/src/" 2>/dev/null || true
|
||||
cp -r src/stubs "$BUNDLE/src/" 2>/dev/null || true
|
||||
|
||||
# All Word documents (plans, safety, manuals, audit artefacts)
|
||||
mkdir -p "$BUNDLE/docs/plaene" "$BUNDLE/docs/safety" "$BUNDLE/docs/manuals" \
|
||||
mkdir -p "$BUNDLE/docs/plans" "$BUNDLE/docs/safety" "$BUNDLE/docs/manuals" \
|
||||
"$BUNDLE/docs/reviews" "$BUNDLE/docs/non-conformities" "$BUNDLE/misra/records"
|
||||
cp -r docs/plaene/* "$BUNDLE/docs/plaene/" 2>/dev/null || true
|
||||
cp -r docs/plans/* "$BUNDLE/docs/plans/" 2>/dev/null || true
|
||||
cp -r docs/safety/* "$BUNDLE/docs/safety/" 2>/dev/null || true
|
||||
cp -r docs/manuals/* "$BUNDLE/docs/manuals/" 2>/dev/null || true
|
||||
cp -r docs/reviews/* "$BUNDLE/docs/reviews/" 2>/dev/null || true
|
||||
@@ -119,10 +121,10 @@ jobs:
|
||||
- \`reports/test-report.html\` — Test summary with requirement mapping
|
||||
|
||||
**Documents (Word, curated):**
|
||||
- \`docs/plaene/\` — PID, PM-/QA-/SWE-/Test-Plan
|
||||
- \`docs/plans/\` — PID, PM-/QA-/SWE-/Test-Plan
|
||||
- \`docs/safety/\` — HARA, Safety Case, FMEDA, MISRA-Compliance, Verification-Report, Tool-Qualification
|
||||
- \`docs/manuals/\` — User-Manual + Service-Manual
|
||||
- \`docs/reviews/\` — Review-Protokoll(e)
|
||||
- \`docs/reviews/\` — Review minutes
|
||||
- \`docs/non-conformities/\` — Non-conformity entries
|
||||
- \`docs/misra/\` — MISRA Deviation Records
|
||||
|
||||
@@ -130,11 +132,11 @@ jobs:
|
||||
|
||||
- All 46 unit tests green (Linux runner required)
|
||||
- Coverage measured with gcov/lcov
|
||||
- Statische Analyse mit Cppcheck (0 Findings)
|
||||
- Static analysis with Cppcheck (0 findings)
|
||||
- MISRA C:2012 compliance confirmed (1 Advisory deviation)
|
||||
- Traceability verified bidirectionally (50 Items)
|
||||
- Traceability verified bidirectionally (50 items)
|
||||
|
||||
## Referenzen
|
||||
## References
|
||||
|
||||
- Methodology: https://gitea.slohmaier.com/slohmaier/dev-process
|
||||
- Commit: ${{ github.sha }}
|
||||
@@ -177,7 +179,7 @@ jobs:
|
||||
run: |
|
||||
DEPLOY=/var/www/pages/demo-epb
|
||||
if [ ! -d "$DEPLOY" ]; then
|
||||
echo "Mount $DEPLOY nicht da — Runner-Config pruefen. Skip."
|
||||
echo "Mount $DEPLOY missing - check runner config. Skip."
|
||||
exit 0
|
||||
fi
|
||||
BUNDLE="release/demo-epb-${TAG}"
|
||||
|
||||
@@ -19,6 +19,8 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install dependencies (Linux)
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
@@ -58,6 +60,8 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
@@ -164,7 +168,7 @@ jobs:
|
||||
fi
|
||||
mkdir -p "$DEPLOY"/{docs,coverage,traceability,diagrams,api-doc,reports/cppcheck,src,misra/records}
|
||||
cp build/index.html "$DEPLOY/index.html"
|
||||
cp -r docs/plaene docs/safety docs/manuals docs/reviews docs/non-conformities "$DEPLOY/docs/"
|
||||
cp -r docs/plans docs/safety docs/manuals docs/reviews docs/non-conformities "$DEPLOY/docs/"
|
||||
cp -r build/coverage-html/. "$DEPLOY/coverage/" 2>/dev/null || true
|
||||
cp -r docs/traceability/. "$DEPLOY/traceability/"
|
||||
cp -r docs/diagrams/. "$DEPLOY/diagrams/"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Minimal Doxygen-Konfiguration fuer demo-epb
|
||||
# Minimal Doxygen configuration for demo-epb
|
||||
# Generiert HTML-API-Dokumentation aus src/
|
||||
|
||||
PROJECT_NAME = "demo-epb"
|
||||
|
||||
@@ -63,7 +63,7 @@ python3 tools/render_plantuml.py
|
||||
## Guided tour (~30 min)
|
||||
|
||||
### 1. Project planning (Word)
|
||||
`docs/plaene/`:
|
||||
`docs/plans/`:
|
||||
- **Project-Manual.docx** — Navigation guide, reading order, roles
|
||||
- **PID.docx** — What is built and why
|
||||
- **SWE-Plan.docx** — Language, standards, branching, reviews, coverage targets
|
||||
|
||||
@@ -33,7 +33,7 @@ The following artefacts are under configuration control:
|
||||
| Requirements | `reqs/{sys,swe}/*.md` | Git + Doorstop item hash |
|
||||
| Architecture | `arch/{sys,swe}/*.md` | Git + Doorstop item hash |
|
||||
| Safety Goals | `safety/sg/*.md` | Git |
|
||||
| Plans (Word) | `docs/plaene/*.docx` | Git + document version block |
|
||||
| Plans (Word) | `docs/plans/*.docx` | Git + document version block |
|
||||
| Safety docs (Word) | `docs/safety/*.docx` | Git |
|
||||
| Manuals (Word) | `docs/manuals/*.docx` | Git |
|
||||
| Reviews + NCs | `docs/reviews/`, `docs/non-conformities/` | Git |
|
||||
|
||||
@@ -31,7 +31,7 @@ This Project Manual is the entry point to the demo-epb project. It answers:
|
||||
|
||||
A complete demo of the **slohmaier Dev Process** using an EPB ECU software. The goal is **not** the productive software, but evidence of ASPICE 4.0 / ISO 26262-compliant development.
|
||||
|
||||
Detail: `docs/plaene/PID.docx`.
|
||||
Detail: `docs/plans/PID.docx`.
|
||||
|
||||
## 3. Reading order for new project members
|
||||
|
||||
@@ -52,7 +52,7 @@ Detail: `docs/plaene/PID.docx`.
|
||||
|
||||
```
|
||||
demo-epb/
|
||||
├── docs/plaene/ ← PID, PM Plan, QA Plan, SWE Plan, Test Plan, CM Plan, RM Plan
|
||||
├── docs/plans/ ← PID, PM Plan, QA Plan, SWE Plan, Test Plan, CM Plan, RM Plan
|
||||
├── docs/safety/ ← HARA, Safety Case, FMEDA, MISRA Compliance, Verification Report, Tool Qualification
|
||||
├── docs/manuals/ ← User Manual, Service Manual
|
||||
├── docs/reviews/ ← Review minutes
|
||||
|
||||
+7
-7
@@ -1,13 +1,13 @@
|
||||
# Stubs — nicht implementierte Komponenten
|
||||
# Stubs — components not implemented
|
||||
|
||||
Diese Komponenten sind in der Software-Architektur (`arch/swe/`) vollstaendig
|
||||
spezifiziert, aber in dieser Demo nicht ausimplementiert. Sie zeigen nur die
|
||||
Header-Schnittstellen.
|
||||
These components are fully specified in the software architecture
|
||||
(`arch/swe/`) but are not implemented in this demo. Only the header
|
||||
interfaces are shown.
|
||||
|
||||
Im Real-Projekt wuerden hier vollstaendige `.c`-Implementierungen plus
|
||||
Unit-Tests stehen.
|
||||
In a real project, full `.c` implementations and unit tests would
|
||||
live here.
|
||||
|
||||
| Komponente | ASIL | SWA |
|
||||
| Component | ASIL | SWA |
|
||||
|-------------------------|------|-----------|
|
||||
| Safety Manager | D | SWA-001 |
|
||||
| Wheel Speed Plausi | B | SWA-004 |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* @file diag_manager.h
|
||||
* @brief UDS-Diagnose nach ISO 14229.
|
||||
* @brief UDS diagnostics per ISO 14229.
|
||||
*
|
||||
* @arch SWA-008
|
||||
* @reqs SWE-018 SWE-019
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* @file display_manager.h
|
||||
* @brief LED + CAN-Status-Frame Steuerung.
|
||||
* @brief LED + CAN status frame control.
|
||||
*
|
||||
* @arch SWA-007
|
||||
* @reqs SWE-020 SWE-021
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* @file inclinometer.h
|
||||
* @brief Inclinometer-Tiefpass-Filter.
|
||||
* @brief Inclinometer low-pass filter.
|
||||
*
|
||||
* @arch SWA-005
|
||||
* @reqs SWE-024
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* @file logger.h
|
||||
* @brief Logger — Ringpuffer + EEPROM-Persistenz.
|
||||
* @brief Logger - ring buffer + EEPROM persistence.
|
||||
*
|
||||
* @arch SWA-010
|
||||
*
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* @file service_mode.h
|
||||
* @brief Service-Modus fuer Werkstatt (Bremsbelag-Wechsel).
|
||||
* @brief Service mode for workshop (brake-pad change).
|
||||
*
|
||||
* @arch SWA-009
|
||||
* @reqs SWE-016 SWE-017
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* @file wheel_speed_plausi.h
|
||||
* @brief Wheel-Speed-Plausibilisierung + Stillstands-Erkennung.
|
||||
* @brief Wheel-speed plausibility + standstill detection.
|
||||
*
|
||||
* @arch SWA-004
|
||||
* @reqs SWE-022 SWE-023
|
||||
|
||||
@@ -205,7 +205,7 @@ static void test_hillhold_armed_to_idle_if_grade_drops(void)
|
||||
TEST_END();
|
||||
}
|
||||
|
||||
/* ---- Mutually exclusive: nicht in beiden Modi gleichzeitig ---- */
|
||||
/* ---- Mutually exclusive: never in both modes at once ---- */
|
||||
|
||||
/* ---- Drive-Away-Assist (SWE-011 + SWE-012) ---- */
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
/**
|
||||
* @file unit_test_framework.h
|
||||
* @brief Minimaler Test-Runner fuer demo-epb.
|
||||
* @brief Minimal test runner for demo-epb.
|
||||
*
|
||||
* In Produktion wuerde hier CppUTest oder Google Test stehen
|
||||
* (siehe docs/SWE-Plan.docx, Abschnitt 7). Fuer die Demo
|
||||
* bleibt das Framework klein, damit es ohne externe Abhaengigkeiten baut.
|
||||
* In production CppUTest or Google Test would go here
|
||||
* (see docs/SWE-Plan.docx, section 7). For the demo, the framework
|
||||
* stays small so it builds without external dependencies.
|
||||
*/
|
||||
#ifndef UNIT_TEST_FRAMEWORK_H
|
||||
#define UNIT_TEST_FRAMEWORK_H
|
||||
|
||||
@@ -125,7 +125,7 @@ def main() -> int:
|
||||
n_stubs = sum(1 for f in (REPO / "src" / "stubs").glob("*.h"))
|
||||
|
||||
# Word docs
|
||||
plans = collect_docs("docs/plaene")
|
||||
plans = collect_docs("docs/plans")
|
||||
safety = collect_docs("docs/safety")
|
||||
manuals = collect_docs("docs/manuals")
|
||||
reviews = collect_docs("docs/reviews")
|
||||
@@ -228,12 +228,12 @@ footer {{ text-align: center; color: #888; padding: 30px; font-size: 13px; }}
|
||||
"Machine-readable format for your own tools")
|
||||
html_body += "</ul></section>"
|
||||
|
||||
# Diagrams
|
||||
# Diagrams (bundle layout: SVGs are at <bundle>/diagrams/, not docs/diagrams/)
|
||||
diagrams = sorted((REPO / "docs" / "diagrams").glob("*.svg"))
|
||||
if diagrams:
|
||||
html_body += "<section><h2>Architecture Diagrams (PlantUML)</h2><ul>"
|
||||
for d in diagrams:
|
||||
href = os.path.relpath(d, REPO)
|
||||
href = f"diagrams/{d.name}"
|
||||
html_body += f" <li><a href='{html.escape(href)}'>{html.escape(d.stem)}</a></li>\n"
|
||||
html_body += "</ul></section>"
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Erzeugt einen Test-Summary-Report aus dem Output unserer Unit-Tests.
|
||||
Generate a test-summary report from the output of our unit tests.
|
||||
|
||||
Reads the test-output file (build/test-output.txt) and produces:
|
||||
- build/test-report.md
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Rendert alle @startuml ... @enduml Bloecke aus arch/**/*.md als SVG.
|
||||
Render all @startuml ... @enduml blocks from arch/**/*.md as SVG.
|
||||
|
||||
Verwendet einen erreichbaren PlantUML-HTTP-Server (Default: www.plantuml.com).
|
||||
In CI kann die Server-URL ueber PLANTUML_SERVER ueberschrieben werden.
|
||||
Uses a reachable PlantUML HTTP server (default: www.plantuml.com).
|
||||
In CI the server URL can be overridden via PLANTUML_SERVER.
|
||||
|
||||
Output: docs/diagrams/<file>-<index>.svg
|
||||
|
||||
|
||||
Reference in New Issue
Block a user