반응형

제목: 안전성 필수 소프트웨어 시스템 테스팅(Testing safety-critical software systems)

저자: Marcos Mainar Lalmolda, 영국

문서유형: 컨퍼런스 프리젠테이션 슬라이드( 15페이지), 2009

 

 

안전성 필수(safety-critical) 소프트웨어 시스템의 테스팅에 대하여 기본적인 내용을 소개한 발표 자료


 

안전성 필수 소프트웨어 시스템(a safety-critical software system)이란

  • 실패 또는 오작동 시 사람 목숨, 환경, 장비에 심각한 피해를 줄 수 있는 컴퓨터 시스템
  • 아래와 같은 분야와 예가 있음:
    -
    의료(환자 모니터)
    -
    원자력 공학(원자력 발전소 제어)
    -
    수송(철도 시스템, 차 안티락 브레이크)
    -
    항공(제어 시스템: fly-by-wire)
    -
    항공우주(NASA 우주 왕복선)
    -
    토목 공학(구조물 계산)
    -
    군사 기기

 

안전성 필수 표준(Safety-critical Standards)

  • 산업 분야에 특정한 표준 예:
    -
    의료 기기 소프트웨어(Medical device software): IEC 62304
    -
    원자력 발전소(Nuclear power stations): IEC 60880
    -
    우주항공(Aerospace): AS9100A
    -
    항공(Airbone): DO178B
  • 5단계 척도의 안전 무결성(safety integrity): 4매우 높음”, 0안전성과 무관을 의미
  • 안전 공학(Safety engineering)이 별도의 학문/연구 영역으로 존재

 

프로그래밍 특징과 언어(Programming features and languages)

  • 통칙: 시스템을 최대한 단순하게 유지하려 노력
  • 권장되지 않는 프로그래밍 특징:
    -
    포인터와 동적 메모리 할당/해제
    -
    비구조적 프로그래밍(goto)
    - Variant
    데이터
    -
    암묵적 선언 및 초기화(Implicit declaration and initialisation)
    -
    순환(Recursion)
    -
    병행(Concurrency)과 인터럽트
  • 신뢰성(reliability)을 증가시키는 특징:
    -
    스트롱 타이핑(Strong typing)
    -
    런 타임 제약 체킹(Run time constraint checking)
    -
    패러미터 체킹(Parameter checking)
  • 피해야 할 언어: C
  • 권장 언어: Ada
  • 안전성 필수 소프트웨어를 위한 Ada 부분 집합: SPARK

 

 

 

설계 상의 접근 방법(Approaches on design)

  • 정형화 방법(Formal methods)
  • 에러가 존재한다고 가정하고 예방 및 복구 메커니즘(prevention and recovery mechanisms)을 설계한다.
  • 프로그램 검증(Program verification)이 에러 없는 프로그램을 의미하지는 않음. 수학적 증명(mathematical proofs)도 완벽하지만은 않음. 따라서 검증(verification)이 프로그램 테스팅 부담을 줄일 수는 있지만 완전히 대신할 수는 없음

 

안전성 필수 소프트웨어 시스템 테스팅(Testing safety-critical software systems)

  • 기본 발상: 개발 생명 주기에서 최대한 빠른 시기에 해저드(hazards)을 식별하고, 식별된 해저드를 수용 가능한 수준으로 최대한 많이 제거하려 노력
  • 기억할 점: 항상 명세(specifications)와 대조하여 소프트웨어를 테스트 한다.
  • 독립적인 검증(independent verification)이 요구됨
  • 정형화 방법(formal methods)이 사용되었다면 정형화된 수학적 증명(formal mathematical proof)이 검증 활동임
  • 전형적인 시스템을 위해 사용되는 이미 알려진 기법:
    -
    화이트박스 테스팅
    -
    블랙박스 테스팅
    -
    검토(Reviews)
    -
    정적 분석(Static analysis)
    -
    동적 분석 및 커버리지(Dynamic analysis and coverage)
  • 안전 공학으로부터 나온 특정한 절차 및 기법:
    -
    확률적 리스크 평가(Probabilistic risk assessment: PRA)
    -
    실패 모드와 효과 분석(Failure modes and effects analysis: FMEA)
    -
    결함 트리 분석(Fault trees analysis: FTA)
    -
    실패 모드, 효과, 중요도 분석(Failure mode, effects and criticality analysis: FMECA)
    -
    해저드 및 운영성 분석(Hazard and operatibility analysis: HAZOP)
    -
    해저드 및 리스크 분석(Hazard and risk analysis)
    -
    원인 결과 다이어그램: 어골도 또는 Ishikawa 다이어그램으로도 알려짐

 

 

반응형

+ Recent posts