# Software Development Plan (SWE-Plan) | Feld | Wert | |-----------------|-------------------------------| | Projekt | [Projektname] | | Datum | [YYYY-MM-DD] | | Version | [1.0] | | Status | [Entwurf / Freigegeben] | | ASIL | [QM / A / B / C / D] | --- ## 1. Entwicklungsmethode [Beschreibung der Vorgehensweise: iterativ, V-Modell-angelehnt, oder hybrid.] Grundstruktur folgt dem V-Modell (ISO 26262 Part 6): - Linke Seite: Anforderungen → Architektur → Detailentwurf → Implementierung - Rechte Seite: Unit Test → Integrations-Test → System-Test - Iterationen innerhalb der Phasen moeglich Aenderungen werden ueber Change Requests gesteuert (siehe PM-Plan). ## 2. Programmiersprache und Standards | Aspekt | Festlegung | |---------------------|-----------------------------------------------------| | Sprache | [C (C99/C11) / C++ (C++14/17) / Rust] | | Coding Standard | [MISRA C:2012 / MISRA C:2023 / MISRA C++:2023] | | Projekt-Guidelines | [Verweis auf Coding-Guidelines im Wiki] | | Namenskonvention | [z.B. snake_case fuer Funktionen, UPPER_CASE fuer Makros] | ### MISRA-Handhabung - Alle Required- und Mandatory-Regeln werden eingehalten - Advisory-Regeln: Liste der angewendeten Regeln im Wiki dokumentiert - Abweichungen werden per MISRA Deviation Record dokumentiert - Projektweite Abweichungen per MISRA Deviation Permit genehmigt - MISRA-Pruefung laeuft automatisch in der CI-Pipeline ## 3. Build-Umgebung | Komponente | Tool / Version | |--------------------|-----------------------------------------------------| | Build-System | [CMake X.Y / SCons X.Y / Make] | | Compiler | [GCC ARM X.Y / Clang X.Y] | | Zielplattform | [z.B. ARM Cortex-R5, Cortex-M4] | | Host-Plattform | [Linux x86_64 / macOS ARM64] | | CI-Runner | [GitLab Runner, Docker Image: ...] | Build-Umgebung ist reproduzierbar: entweder per Docker-Image oder per dokumentierter Toolchain-Installation. ## 4. Branching-Strategie ``` main — Stabiler, freigegebener Stand develop — Aktueller Entwicklungsstand feature/SWR-XXX — Feature-Branch pro Anforderung bugfix/BUG-XXX — Bugfix-Branch release/vX.Y — Release-Vorbereitung hotfix/vX.Y.Z — Kritische Fixes nach Release ``` - Feature-Branches von `develop` abzweigen - Merge nach `develop` nur per MR mit Approval - `main` und `release/*` sind geschuetzt (kein direkter Push) - Branch-Name enthaelt Issue-Nummer Details: siehe `gitlab-aspice-setup.md`. ## 5. Review-Verpflichtungen | Artefakt | Review-Art | Mindest-Approvals | |-----------------------------|-------------------|--------------------| | Quellcode (MR) | Peer Review | 1 | | Safety-relevanter Code | Technical Review | 2 | | Architektur-Dokument | Technical Review | 2 | | Anforderungen | Technical Review | 1 | | Testfaelle | Peer Review | 1 | Jeder MR muss vor dem Merge reviewed und approved sein. Self-Merges sind nicht erlaubt (Ausnahme: 1-Person-Projekt mit dokumentiertem Self-Review). ## 6. Definition of Done Ein Feature / eine Anforderung gilt als "Done" wenn: - [ ] Code ist implementiert und kompiliert fehlerfrei - [ ] MISRA-Check in CI ist gruen (keine neuen Violations) - [ ] Static Analysis (Cppcheck, clang-tidy) hat keine neuen Findings - [ ] Unit Tests sind geschrieben und gruen - [ ] Coverage-Ziel ist erreicht (siehe Abschnitt 8) - [ ] MR ist reviewed und approved - [ ] Anforderung ist mit Test verlinkt (Traceability) - [ ] Dokumentation ist aktualisiert (falls betroffen) ## 7. Integration und Test-Strategie | Teststufe | Verantwortlich | Umgebung | Automatisierung | |---------------------|----------------|----------------|-----------------| | Unit Test | Entwickler | Host (x86) | CI-Pipeline | | Integrations-Test | Entwickler | Host / SiL | CI / manuell | | System-Test | Test / QA | SiL / HiL | teilweise | | Abnahme-Test | Auftraggeber | HiL / Fahrzeug | manuell | - Unit Tests laufen auf Host-Plattform (Cross-Compilation fuer Tests auf x86) - Integrationstests pruefen Zusammenspiel der Module - System-Tests pruefen gegen System-Anforderungen - HiL-Tests werden vom Auftraggeber bereitgestellt oder gemeinsam definiert ## 8. Coverage-Ziele | ASIL | Statement Coverage | Branch Coverage | MC/DC | |------|--------------------|-----------------|----------| | QM | >= 80% empfohlen | — | — | | A | >= 80% | empfohlen | — | | B | >= 80% | >= 80% | — | | C | >= 90% | >= 80% | empfohlen| | D | >= 90% | >= 90% | >= 80% | Konkrete Zielwerte fuer dieses Projekt: | Metrik | Zielwert | |---------------------|------------| | Statement Coverage | >= [X]% | | Branch Coverage | >= [X]% | | MC/DC | >= [X]% (falls anwendbar) | Coverage wird in der CI gemessen und als Artefakt archiviert. Abweichungen vom Ziel werden begruendet und im QA-Report dokumentiert. --- *Aenderungen an diesem Plan werden im GitLab-Wiki versioniert.*