기능안전_기본이론

Safety case작성 수준

아즈마민초 2025. 6. 12. 11:27
Safety case에서 주장 논거 근거를 작성해야 하자나 그렇개 쓰는 방법이 GSN처럼 그래픽 적으로 표현할 수도 있고, 그냥 논거를 서술형식으로 표현할 수도 있자나. 여기서 내가 궁금한 것은 Safety case는 Top level부터 아래 레벨로 쪼개지면서 그 하나 하나가 논거로써 만족되는 걸 보여주어야되고 그것이 한 눈에 보이기 위해 GSN이나 Top level 부터 하위 단계로 쪼개져 나가는 모습이 반드시 보여져야만 하는거야
 

ChatGPT의 말:

아주 좋은 질문입니다. 핵심을 정확히 짚으셨어요.
Safety Case를 표현할 때 GSN 구조와 같은 계층적 구성(Top-down)이 꼭 필요한가?
즉, 논거가 위에서 아래로 쪼개지는 구조를 반드시 시각적으로 보여줘야 하는가?


✅ 결론부터 말하면:

꼭 GSN처럼 시각적으로 표현할 필요는 없습니다.
그러나 Top-level 주장부터 하위 논거와 증거가 계층적으로 분해되어 있어야 하며,
그것이 명확하게 “이해 가능하게” 드러나야 합니다.


📘 ISO 26262와의 관계

ISO 26262는 GSN 사용을 강제하지 않으며,
서술형 방식도 완전히 허용합니다.

그러나 다음은 필수입니다:

  • 주장(Claim)은 명확히 정의되어야 함
  • 각 주장에 대해 논리적으로 적절한 논거(Argument)가 제공되어야 함
  • 논거는 명확하고 충분한 증거(Evidence)에 의해 뒷받침되어야 함
  • 전체 구조는 Traceable, Understandable, Defensible해야 함

따라서, 어떤 형식이든 이 논리적 구조를 잘 보여줄 수 있다면 허용됩니다.

📝 서술형으로 작성할 경우 조건

서술형으로 Safety Case를 작성해도 되지만, 다음을 충족해야 합니다:

  • 주장은 “Claim A는 만족된다”와 같이 명확히 문장화되어야 함
  • 각 주장은 하위 주장을 논리적으로 포함하거나, 증거로 지지받아야 함
  • 구조가 논리적으로 위계적으로 쪼개져서 설명되어야 함
  • 추적 가능성 (Traceability): Safety Goal ↔ Claim ↔ Argument ↔ Evidence

 

 

 

아무튼 그러면 Safety case의 핵심은 SG이 계층적 논리적으로 세분화되고 그것을 만족시킨다는 논리적인 논거와 그것을 뒷받침하는 근거가 있으면 된다는 거지?
 

ChatGPT의 말:

맞습니다. 정확하게 이해하셨습니다.
Safety Case의 핵심은 바로 이 구조입니다:


✅ 핵심 구조 요약

“Safety Goal(SG)”
→ 이를 만족시키기 위한 주장(Claim)
→ 그 주장이 성립한다는 논리적 논거(Argument)
→ 논거를 뒷받침하는 객관적 증거(Evidence)

이 흐름이 계층적으로, 논리적으로 전개되어 있어야 하며,
그 과정에서 누락되거나, 비약되거나, 근거가 약한 연결 고리 없이
일관되고 이해 가능한 구조를 갖춰야 합니다.

 

✅ 요약 정리

Safety Case의 핵심은

  • Top-level의 Safety Goal을
  • 논리적 주장 → 논거 → 증거의 구조로 계층적 분해하고
  • 그 구조가 명확히 설명되며, 제3자가 검토 가능한 형태로 존재해야 한다는 것입니다.

GSN은 이를 시각적으로 보여주는 수단이지 핵심은 아닙니다.


원하시면, 특정한 Safety Goal 하나에 대해 이 구조로 실제 예시를 만들어드릴게요.
예: “Unintended Acceleration을 방지한다” 같은 것.
필요하신가요?

 

나의 말:

근데 만약에 Top level을 SG을 위배하지 않는 개념으로 만들고 그 하위 단계를 쭉 만들었어 근데 그 하위 단계는 어느 수준까지 내려가야 하는 거야?
 

ChatGPT의 말:

좋은 질문이에요.
Safety Case의 하위 구조(Claim → Argument → Evidence)는 어느 수준까지 분해해야 하느냐?
이건 실제로 Safety Case를 작성할 때 가장 어려운 판단 중 하나입니다.


✅ 결론부터 말하면:

“Top-level Safety Goal을 정당하게 뒷받침할 수 있을 만큼 충분히 구체적인 수준까지” 분해해야 합니다.

다시 말해, 제3자의 관점에서

  • “이 아래 단계까지만 봐도 Safety Goal이 만족된다는 게 납득이 된다”
  • “이 수준에서 더 이상 논리적 모호함이나 근거 부족이 없다”

→ 이 정도가 적정 분해 깊이입니다.

🧩 예시로 보면

예시 Safety Goal:

SG1: Unintended acceleration shall not occur (ASIL D)

Claim 1: All identified causes of unintended acceleration are mitigated.

Argument: They are mitigated by HW, SW, and system-level safety mechanisms.

  • Claim 1.1: SW prevents invalid torque requests
    • Argument: Torque plausibility check is implemented
      • Evidence: SW Requirements doc, Torque Check spec, Unit test report
  • Claim 1.2: HW prevents stuck pedal signals
    • Evidence: HW FMEA, Analog signal comparator, Safety mechanism test
  • Claim 1.3: System shuts down torque path on fault
    • Argument: Safe state transition logic is in place
      • Evidence: System architecture doc, Fault injection test result

여기서 더 아래로 내려간다면 Claim이 “함수 내부 구현 수준”이 되는 시점에서는 멈춰야 합니다.
→ 그 아래는 논거의 **기술적 세부 근거 (e.g., 코드 단위 테스트, MC/DC 커버리지 등)**로 연결하면 충분합니다.


✅ 실무 팁

  • GSN이나 Safety Case 작성 시 “이 Claim을 믿을 수 있는가?”란 질문을 계속 던져보세요.
    → “아직 증거가 약하다” → 논거 또는 Claim을 더 쪼개야
    → “이제는 명확하다” → 거기서 멈추면 됩니다.
  • 너무 깊게 쪼개면 복잡도 증가 + 유지보수 어려움
  • 너무 얕으면 근거 부족 + 논리적 비약 위험

✅ 요약

Safety Case는 Top-level Safety Goal을 충분히 납득 가능하게 뒷받침할 수 있을 정도까지 Claim을 계층적으로 분해해야 합니다.

분해의 깊이는 논리적 설득력과 근거의 명확성, 책임과 영향 관리 가능성에 따라 결정되며,
불확실성 없이 명확하게 이해될 수 있는 수준에서 멈추는 것이 이상적입니다.

 

 

 

 

너가 방금 예시로 보여준 Claim 1.1,1.2, 1.3은 각각 소프트웨어, 하드웨어, 시스템 수준에서 안전 요구사항을 주장한 것으로 보이고 그것을 만족한다는 증거를 보여주기 위해 argument와 evidence를 작성한 것 같은데, 사실 실제 제품에는 소프트웨어, 하드웨어, 시스템 수준에서 요구되는 안전 요구사항이 정말 엄청 많자나 근데 너가 보여준 예시처럼 이 엄청 많은 요구사항을 각각의 Claim으로 나누어서 한다는 것은 Safey case가 너무 복잡해지고 가독성도 떨어지고 작성하는데 어려움이 있을 거 같아. 이렇게 되지 않으려면 Claim을 어느 정도 수준까지 써야 할까?
 

ChatGPT의 말:

정확한 고민을 하셨습니다. 실제 Safety Case를 작성하다 보면 가장 흔하게 마주치는 난제 중 하나입니다.


✅ 핵심 질문 요약:

안전 요구사항이 너무 많기 때문에,
그걸 하나하나 Claim으로 만들면 너무 복잡해진다.
→ Claim의 수준(Level of Abstraction)은 어느 정도로 잡아야 적절할까?


🎯 결론:

Claim은 “논리적 그룹” 또는 “기능 블록 수준”으로 묶어서 추상화해야 합니다.
각각의 요구사항마다 Claim을 만들 필요는 없습니다.


🔧 어떻게 추상화해서 Claim을 구성해야 하는가?

✅ 1. 기능 블록 또는 아키텍처 컴포넌트 단위 Claim

  • Claim 예시:
    • 이 Claim 아래에 Argument로 요구사항 도출 방법, 구현, 검증, 추적성 등을 쓰고
    • Evidence로는:
      • 요구사항 문서
      • 요구사항 ↔ 구현 추적 매트릭스
      • 유닛 테스트 / 통합 테스트 보고서
        등을 제시
  • “모터 제어기 기능 블록은 모든 관련 SW 안전 요구사항을 만족한다.”

→ 이렇게 하면 수십 개의 개별 요구사항이 하나의 Claim 하위 구조로 정리됩니다.


✅ 2. ASIL 수준별 또는 위험원 그룹화 Claim

  • Claim 예시:
  • “ASIL C 수준의 요구사항은 모두 적절히 구현되고 검증되었다.”

→ 요구사항을 ASIL 수준별로 묶고, 각 ASIL별 Claim 아래에 관련 Argument와 Evidence 연결


✅ 3. 기능 안전 활동(Activity) 단위 Claim

  • Claim 예시:
  • “소프트웨어 안전 분석 결과는 SG를 충분히 뒷받침한다.”

→ 이 Claim 하위에

  • Argument 1: SW FMEA 수행됨
  • Argument 2: Safety Mechanism 식별됨
  • Argument 3: Residual Risk Acceptable

→ 그리고 각각의 Evidence로 분석 보고서, design mitigation, review log 등을 제시

 

✅ 결론 정리

Safety Case의 Claim은 모든 요구사항 하나하나를 따로 다루는 것이 아니라,

  • 기능 단위,
  • 아키텍처 컴포넌트 단위,
  • ASIL 수준,
  • 위험원 그룹 등으로 논리적 묶음 단위로 Claim을 구성해야 실용적입니다.

이렇게 하면 가독성과 유지보수성이 높고, 리뷰어에게도 이해하기 쉬운 구조가 됩니다.

 

 

이전과 다른 주제를 질문할건데, 혹시 Safety case안에, 제품이 기능안전의 요구사항과, 고객의 FSR을 만족시킨다는 거를 논리적으로 보여줄 떄, 각 안전 분석 활도을 통해 적용시키는 모든 안전메커니즘을 하나 하나 다 Safety case에 작성해야해? 그러면 너무 적을게 많아 보이는데.

 

1. 개요

ISO 26262 기능안전 프로젝트에서 Safety Case는 제품(아이템)이 기능안전 요구사항(ISO 26262 준수)과 고객(OEM)의 Functional Safety Requirements (FSR)을 만족시킨다는 것을 논리적으로 입증하는 문서입니다. 이는 "Argument-based Safety Case" 구조를 기반으로 하며, 안전 분석 활동(예: HARA, FMEA, DFA, FTA 등)을 통해 도출된 안전 메커니즘(Safety Mechanisms)을 포함해야 합니다. 그러나 모든 안전 메커니즘을 하나하나 상세히 나열할 필요는 없습니다. 이는 문서가 과도하게 길어지고 중복될 수 있기 때문입니다. 대신, 요약, 카테고리화, 참조 방식을 활용하여 효율적으로 논리적 인수를 구성하세요. 이는 ISO 26262 Part 2 (Management of functional safety)와 Part 9 (ASIL-oriented and safety-oriented analyses)의 요구사항을 충족합니다.

Safety Case의 목적은 논리적 증명이지, 모든 세부 사항의 나열이 아닙니다. 너무 많은 내용을 피하기 위해 계층적 구조와 증거 참조를 사용합니다.

2. 안전 메커니즘 포함 여부와 이유

  • 포함해야 함: 예, Safety Case는 안전 분석 활동을 통해 적용된 안전 메커니즘을 논리적으로 보여줘야 합니다. 이는 제품이 안전 요구사항(예: Safety Goals, FSR)을 만족시킨다는 인수(Arguments)를 뒷받침하기 위함입니다. 안전 메커니즘은 오작동(Malfunctions)을 방지하거나 탐지/제어하는 수단(예: Redundancy, Watchdog Timer, Diagnostic Checks 등)으로, Safety Case에서 이를 생략하면 준수 입증이 불완전해집니다.
  • 하나하나 다 작성할 필요 없음: 모든 메커니즘을 상세히 나열하면 문서가 방대해지므로(특히 복잡한 시스템에서), 요약 형식으로 포함합니다. ISO 26262는 "Sufficient evidence"를 강조하며, 상세 내용은 참조 문서(Work Products)로 연결합니다. 이는 문서 관리 효율성을 높이고, 감사(Audit) 시 추적성을 유지합니다.

3. 어떻게 포함하는 게 좋은가?

Safety Case에 안전 메커니즘을 포함할 때는 GSN (Goal Structuring Notation) 또는 유사한 계층적 구조를 사용하세요. 전체를 나열하지 말고, 다음과 같은 전략으로 논리적 흐름을 구성합니다:

3.1. 구조화된 접근: Argument-Evidence 모델

  • Safety Case를 Goal(안전 목표) → Strategy(전략) → Argument(인수) → Evidence(증거) 구조로 작성.
    • Goal: 제품이 FSR과 ISO 26262 요구사항을 만족시킨다.
    • Strategy: 안전 분석 활동(예: HARA를 통해 SG 도출, FMEA를 통해 메커니즘 적용).
    • Argument: 안전 메커니즘의 적용이 효과적임을 논리적으로 설명 (예: "Redundancy 메커니즘으로 단일 실패 방지").
    • Evidence: 안전 분석 보고서 참조 (전체 메커니즘 나열 대신 요약)

3.2. 요약 및 카테고리화

  • 카테고리별 그룹화: 모든 메커니즘을 하나하나 나열하지 말고, 유형별(예: Hardware, Software, System-level) 또는 분석 활동별(예: FMEA-derived, FTA-derived)로 그룹화.
  • 테이블 사용: 방대한 내용을 피하기 위해 테이블로 요약. 각 행에 메커니즘 카테고리, 적용 범위, 증거 참조를 포함. 예시 테이블:

 

3.3. 참조 및 부록 활용

  • 참조 문서 링크: Safety Case 본문에 상세 나열 대신, "See FMEA Report for full list of 50+ mechanisms"처럼 참조.
  • 부록(Appendix): 필요 시 상세 목록을 부록으로 이동. 본문은 요약만 유지.
  • 추적성 매트릭스: Safety Mechanisms을 FSR/Safety Requirements와 매핑하는 매트릭스를 포함. 이는 모든 메커니즘을 커버하나, 상세 설명은 생략. 예시 매트릭스:

3.4. 논리적 증명 강조

  • Safety Case의 초점은 "왜 이 메커니즘이 요구사항을 만족시키는가?"에 있음. 예: "These mechanisms achieve 99% diagnostic coverage, satisfying ASIL D SPFM/LFM metrics (Evidence: Metrics Calculation Report)."
  • 고객 FSR 만족: OEM의 FSR을 Safety Case의 Goal로 명시하고, 메커니즘 적용을 통해 traceability를 보여줌.

4. 고려사항

  • ASIL 수준: ASIL A/B는 간단 요약으로 충분하나, ASIL C/D는 더 강력한 증거와 인수 필요 (독립적 검토 포함).
  • 문서 크기 관리: 전체 Safety Case를 50-100페이지 정도로 유지. 너무 많으면 서브 Safety Case(예: Software Safety Case)로 분리.
  • 고객 협력: OEM의 FSR을 반영할 때, DIA(Development Interface Agreement)를 참조하여 맞춤화.
  • 베스트 프랙티스: GSN 도구(예: Adelard ASCE) 사용으로 시각화. Confirmation Review 시 요약 구조가 검토됨.
  • 위험: 모든 메커니즘 나열 시 유지보수가 어려움. 요약으로 효율화.

'기능안전_기본이론' 카테고리의 다른 글

형상관리 전략 vs 문서화 관리 전략  (0) 2025.06.18
Safety case 실무!  (0) 2025.06.12
Safety case 양식 내 traceability 작성법  (0) 2025.06.11
Release for production 템플릿  (0) 2025.06.09
Release for production  (0) 2025.06.09