1855162e6d
Vollstaendige Demo des slohmaier Dev Process anhand einer EPB-Steuergeraet- Software. Zeigt ASPICE 4.0 / ISO 26262-konforme Entwicklung im Monorepo. Inhalte: - 5 Plaene (PID, PM-, QA-, SWE-, Test-Plan) in Word, ausgefuellt mit EPB-spezifischen Inhalten - 10 System-Anforderungen + 25 Software-Anforderungen (Doorstop-MD) - 5 System-Architektur-Elemente + 10 Software-Architektur-Elemente mit PlantUML-Diagrammen und vollstaendigem Mapping - 3 implementierte Komponenten (Apply Controller D, Actuator Driver B, Switch Debouncer QM) plus 7 Header-Stubs - 28 Unit-Tests, alle gruen, mit Coverage- und MISRA-Build-Targets - Audit-Artefakte: 1 Review-Protokoll, 1 Non-Conformity, 1 MISRA-Record - Gitea-Actions-CI-Pipeline (validate.yml) - Doorstop-Konfiguration fuer bidirektionale Traceability - Generator-Skript fuer alle 50 Reqs/Arch-Elemente aus Strukturdaten - README mit gefuehrter Tour fuer Prospects
2.4 KiB
2.4 KiB
record-id, projekt, datum, status
| record-id | projekt | datum | status |
|---|---|---|---|
| MISRA-REC-001 | demo-epb | 2026-05-11 | Approved |
MISRA Deviation Record MISRA-REC-001
| Feld | Wert |
|---|---|
| Record-ID | MISRA-REC-001 |
| Datum | 2026-05-11 |
| Datei | src/apply_controller.c |
| Funktion | apply_ctrl_step_50ms |
| Zeile | 64 |
| Standard | MISRA C:2012 |
| Regel | Rule 15.5 (Advisory) — "A function should have a single point of exit" |
| ASIL | D |
| Status | Approved |
1. Code-Ausschnitt
void apply_ctrl_step_50ms(const ApplyInputs* in)
{
if (in == NULL) {
s_ctx.last_error = EPB_EINVAL;
return; /* <-- frueher Exit */
}
...
}
2. Begruendung
NULL-Pointer-Check als frueher Exit-Punkt verbessert die Lesbarkeit deutlich
gegenueber einer geschachtelten Variante mit einem einzigen return am Ende.
MISRA Rule 15.5 ist Advisory, nicht Required.
Der frueh-Exit hat eine klar definierte Semantik (Input-Validierung) und
beeintraechtigt nicht die Verifizierbarkeit; im Gegenteil, der separate
Pfad ist im Unit-Test test_null_input eindeutig abgedeckt.
3. Alternative geprueft
Variante mit einzigem Exit:
void apply_ctrl_step_50ms(const ApplyInputs* in)
{
if (in == NULL) {
s_ctx.last_error = EPB_EINVAL;
} else {
/* gesamte Step-Logik in else-Branch geschachtelt */
...
}
}
Verworfen, weil die zusaetzliche Schachtelung die State-Machine schwerer lesbar macht und keine Funktionsaequivalenz mit der frueh-Exit-Variante gewinnt.
4. Auswirkung auf Sicherheit
Keine. Frueher Exit ist deterministisch und im Unit-Test abgedeckt.
5. Freigabe
| Rolle | Name | Datum | Signatur |
|---|---|---|---|
| Technical Lead | Stefan Lohmaier | 2026-05-11 | (Demo) |
| Safety Manager | (im Realprojekt) | 2026-05-11 | (Demo) |
6. Geltungsbereich
Nur fuer diese eine Code-Stelle. Andere Stellen mit frueh-Exit benoetigen separate Records.