Lifecycle Management — cJSON Qualification¶
The cJSON SEooC qualification lifecycle follows ISO 26262-10:2018 Clause 6 (SEooC development). The lifecycle encompasses four phases:
|
Assumptions of Use (AoU)¶
Requirement: AoU-1 (Integration Context): cJSON is integrated as a stateless library in an ASIL D ECU context. All state is caller-owned (cJSON* pointers). The integrator provides a qualified memory allocator via cJSON_InitHooks. LM_AOU_CONTEXT
|
Requirement: AoU-2 (Input Constraints): JSON inputs processed through cJSON shall not exceed CJSON_NESTING_LIMIT (1000) depth. Maximum single string length is bounded by available memory. Inputs originate from a trusted or integrity-checked source (validated at system level before reaching cJSON). LM_AOU_INPUTS
|
Requirement: AoU-3 (Threading Model): cJSON is not thread-safe and shall be used from a single thread of control or externally synchronized by the integrator. LM_AOU_THREADING
|
Requirement: AoU-4 (Error Handling): The integrator shall check all cJSON return values for error indicators (NULL from parse/create functions, cJSON_False from boolean returns). Unchecked error paths are the integrator's responsibility. LM_AOU_ERROR
|
Requirement: AoU-5 (Toolchain): The integrator shall reproduce the qualification build with the audited toolchain version and compiler flags. Binary equivalence or semantic equivalence shall be demonstrated. LM_AOU_TOOLCHAIN
|
Configuration Management¶
Requirement: The cJSON SEooC qualification baseline is v1.7.19 (identified by git tag and SHA256 of the source archive). All artifacts (requirements, architecture, verification reports, builds) are version-controlled under the OSQAr project. LM_CM_BASELINE
|
Issue Management¶
Requirement: All deviations from requirements, static analysis false positives, and coverage gaps shall be documented as issue records with safety justifications, reviewer sign-off, and traceability to affected requirements. LM_ISSUES
|
Shipment Content¶
The qualification shipment contains:
Requirements document (this project)
Architecture document with PlantUML diagrams
Verification plan and results
Implementation description and source inventory
Test suite and execution report (JUnit XML)
Static analysis report
Code coverage report
Complexity analysis report
Sanitizer / Valgrind execution logs
Fuzzing campaign summary (if executed)
Compiler warning audit
SHA256SUMS manifest for integrity verification
Tool Confidence Level (TCL) Assessment¶
Per ISO 26262-8:2018 §11.4 (Software tool qualification), each tool used in the qualification process is classified by Tool Impact (TI) and Tool Error Detection (TD) to determine the required Tool Confidence Level (TCL).
Tool |
Version |
Purpose |
TI |
TD |
TCL |
Qualification Method |
|---|---|---|---|---|---|---|
gcc |
11.4.0 (Ubuntu 22.04) |
Compiler, linker |
TI2 |
TD3 |
TCL3 |
Increased confidence from use (10⁹+ field hours) |
gcov / lcov |
1.16 |
Code coverage measurement |
TI1 |
TD1 |
TCL1 |
No qualification required |
cppcheck |
2.14.0 |
Static analysis |
TI1 |
TD2 |
TCL2 |
Tool validation against known defect corpus |
lizard |
1.17.10 |
Cyclomatic complexity |
TI1 |
TD1 |
TCL1 |
No qualification required |
Valgrind/Memcheck |
3.22.0 |
Dynamic memory analysis |
TI1 |
TD1 |
TCL1 |
No qualification required |
ASan / UBSan |
(compiler-builtin) |
Runtime sanitizers |
TI1 |
TD1 |
TCL1 |
No qualification required |
plantuml |
1.2024.6 |
Diagram generation |
TI1 |
TD1 |
TCL1 |
No qualification required |
Sphinx |
≥7.4 |
Documentation generation |
TI1 |
TD2 |
TCL2 |
Tool validation (CI regression suite) |
Unity (test framework) |
(bundled v2.5.2) |
Unit test harness |
TI1 |
TD1 |
TCL1 |
No qualification required |
The compiler (gcc) is classified TCL3 (TI2 + TD3) due to its potential to introduce errors into the safety-related software. The qualification argument relies on increased confidence from use across 10⁹+ field hours in automotive and safety-critical contexts. All verification tools are TCL1 or TCL2, requiring no formal qualification beyond documented validation. A TCL3 qualification report for the compiler is deferred to a future qualification cycle. |