Ch12. 안전성 공학

728x90

Ch12. 안전성 공학

📌 [교재] 소프트웨어 공학 10판

[안전성] Safety

안전성(safety) ★(용어 정의) : 사람이나 환경에 피해를 주지 않는 속성

  • ‘사람’의 사망이나 부상(피해)을 초래할 위험이 없고 시스템 (자연)‘환경’에 대한 손상 없이 (정상 또는 비정상적으로) 작동하는 시스템의 능력을 반영하는 속성

안전성에 대한 다른 정의

  • 수용할 수 없는 리스크가 없는 것 (freedom from unacceptable risk)

- 외부로부터의 침해행위가 없는 상태에서 소프트웨어의 내부적인 오작동 및 안전기능 마비 등으로 인하여 발생할 수 있는 사고로부터 사람의 생명이나 신체에 대한 위험에 충분한 대비가 되어 있는 상태

[Unsafe reliable systems] p353

안전성과 신뢰성은 관련이 있지만 별개

  • 일반적으로 신뢰성과 가용성은 안전성의 필요조건이지만 충분조건은 아님

신뢰성★ 정의

  • 시스템이 명세대로 서비스를 제공할 수 있는 능력
  • 주어진 환경에서 특정 목적을 위해 지정된 시간 동안 고장 없이 운영될 확률
  • 참고 : 주어진 기간 동안 시스템이 (정확하게) 서비스를 제공할 확률

신뢰할 수 있지만 안전하지 않은 시스템(의 4가지 이유) ★ 알기

(=명세대로 서비스를 제공하여 신뢰성이 높아도 안전하지 않을 수 있는 네 가지 이유)

  • SW 시스템에 아직 발현되지 않은 결함이 있을 수 있다.
  • 요구사항이 불완전함(특정 위기 상황에 필요한 행동이 명세에 없음, 요구사항에 시스템 안전을 위해 필요한 행위를 반영하지 않음) = 안전성 요구사항에 대한 고려가 없기 때문**★
  • 하드웨어의 고장/오작동 또는 공통 SW 고장에 대한 대비가 없음
  • 시스템 운영자의 실수가 있을 때 명세대로 작동하는 것이 안전하지 않음

12-1. 안정성 중심 시스템

[안전성 중심 시스템의 두 종류] Safety criticality

일차적인 안전성 중심 시스템(primary safety-critical systems) **

  • 시스템의 오작동이 직접 피해를 입힐 수 있는 것
  • 예: 인슐린 펌프

이차적인 안전성 중심 시스템(secondary safety-critical systems)

  • 시스템의 오작동이 간접적으로 피해를 입힐 수 있는 것
  • 예: 기반 시설 제어 시스템

[안전성 성취] Safety achievement *****

위험(원)(hazard) * (=원인)**

  • 사고로 연결될 수 있는 상황이나 사건 (부품 고장, 계산 오류)
  • 위험이 항상 사고로 이어지는 것은 아님

신뢰성 향상을 위한 접근법

  • 결합 회피 (fault avoidance)
  • 결함 감지 및 제거 (fault detection and remoce)
  • 결함 내성 (fault tolerance)

안전성 향상을 위한 접근법

  • 위험 회피(hazard avoidance) : 위험(원인)이 생기지 않도록 시스템을 설계
  • 위험 감지 및 제거(hazard detection and removal) : 위험이 발생한 경우에도 사고로 이어지지 않도록 시스템을 설계
  • 손실 제한(damage limitaion) : 사고 발생 시 피해를 줄 수 있는 기능을 시스템에 포함

[안전성 용어] Safety terminology 

사고 (accident)

  • 피해를 입히는 계획되지 않은 사건

손실 (damage) 

  • 사고로 인한 ‘피해’

위험 (hazard) 

  • 사고의 원인이 되거나 기여하는 ‘잠재적인’ 요인이나 조건

위험 확률 (hazard probability) 

  • 위험의 발생 확률

위험 심각도 (hazard severity) 

  • 위험으로부터 생길 수 있는 손실에 대한 평가 = 위험의 정도

리스크 (risk) = 위험이 사고를 낼 가능성 

  • 시스템이 사고를 낼 확률 (위험으로부터 생길 수 있는 피해의 심각도와 확률 조합)
  • 위험 확률, 위험 심각도, 위험이 사고(손실)을 일으킬 수 있는 확률을 고려
  • <추가 참고> Safety 용어

위해(harm) ★ : 사람의 부상 또는 환경/자산에 대해 피해

위험원(hazard) ★ : 생명, 신체 또는 재산에 피해를 발생시키거나 시스템 손실을 초래할 수 있는 잠재적인 요인/조건

위험(risk): 위험원이 위해로 이어질 수 있는 가능성과 발생 시 심각성을 조합한 것

12-2. 안전성 요구사항

[안전성 요구사항] Safety specifiaction

안전성 요구사항은 ‘하지 말아야 할(shall not) 요구사항

  • 일어나지 말아야 할 상황이나 사건을 명시

위험 주도(hazard-driven) 안전성 명세 프로세스

  • 위험 식별 (hazard identification)
  • 위험 평가 (hazard assessment)
  • 위험 분석 (hazard analysis)
  • 리스크 감소 (risk reduction)

: 안전 요구사항 명세 (safety requirements specification)의 식별

[1. 위험 식별] Hazard identification

안전을 위협할 수 있는 ’위험‘을 식별

위험 식별

  • 물리적 위험
  • 전기적 위험
  • 생물학적 위험
  • 서비스 고장 위험

소프트웨어 관련 위험

  • 서비스 제공 실패나 시스템 감시 및 보호 실패와 관련이 있음

인슐린 펌프 예

  • 서비스 : 인슐린 과다/과소 투여, HW 모니터링 시스템 장애
  • 전기적 : 배터리 방전 전력 장애, 다른 장비의 전기적 간섭
  • 물리적 : 센서나 작동기의 접촉 불량

[2. 위험 평가] Hazard assessment

위험 평가

  • 위험의 발생으로 이어지는 요인들과 해당 위험과 관련된 사고가 발생했을 경우 결과를 이해하는 데 초점

리스크 유형

  • 용인 불가 리스크(intolerable risk) : 위험이 발생하지 않게 하거나 발생 시 사고로 이어지지 않도록 함
  • ALARP 리스크 (as low as reasonably practical) : 결과가 덜 심각하거나 결과가 심각하더라도 발생 확률이 매우 낮은 것
  • 수용 가능 리스크(acceptable risk) : 작은 손상만 일으키는 것

사회에서 리스크를 용인하는 정도에 따라 달라짐

위험 평가는 위험 확률과 위험 심각도를 추정

  • 사고는 드물게 일어나므로 충분한 통계 자료가 없음
  • probable/ unlikely/rare, high/medium/low

[3. 위험 분석] Hazard analysis

위험의 근본 원인을 찾음

  • 연역적 하향식 (deductive top-down) 기법
  • 귀납적 상향식 (inductive bottom-up) 기법

결함 트리 분석 ★ (fault tree analysis)

  • 식별된 위험으로부터 시작
  • 각 위험에 대해 가능한 원인을 찾음

[4. 리스크 감소] Risk reduction

리스크 감소

  • 잠재적 리스크와 근본 원인을 식별하면 리스크를 관리하고 사고가 일어나지 않도록 보장하는 안전성 요구사항을 도출

리스크 감소 전략

  • 위험 회피
  • 위험 감지 및 제거
  • 손실 제한

안전성 요구사항 예★ (이걸 만드는 게 최종 목표였음)

  • SR1 : 지정된 최대값보다 더 많은 인슐린을 한 번에 공급하지 않음
  • SR2 : 지정된 일일 최대 인슐린 투여량보다 더 많이 공급하지 않음
  • SR3 : 시스템은 시간 당 적어도 4번 실행되는 HW 진단 기능 포함
  • SR4 : 시스템은 식별된 모든 예외에 대한 예외 처리기를 포함

12-3. 안전성 공학 프로세스

[정적 프로그램 분석] Static program analysis

자동화된 정적 분석기 ★

  • 소스코드를 분석하여 가능한 결함과 이상을 찾아내는 도구
  • 컴파일러가 제공하는 오류 감지기능을 보완
  • 인스펙션 프로세스의 일부로 사용될 수 있음

자동화된 정적 분석의 점검 항목

  • 데이터 결함 : 초기화 안함, 미사용 변수, 배열경계 위반
  • 제어 결함: 도달할 수 없는 코드
  • 인터페이스 결함: 매개변수 형 불일치
  • 기억장소 관리 결함 ; 배정되지 않은 포인터, 메모리 누수

자동차 분야 MISRA-C 예

  • 서브 프로그램과 함수에서 하나의 진출입 포인트 사용, 동적 객체 또는 변수 생성 금지, 초기화된 변수 사용, 변수 이름의 다중 사용 금지, 전역 변수 사용 제한, 포인터 사용 제한, 묵시적 형변환 사용 금지, 숨겨진 데이터 흐름 또는 제어 흐름금지, 무조건 분기문 사용 금지
728x90