본문 바로가기

System & Software Engineering

SW FMEA의 Ground Rules

SW-FMEA를 시작하기 전에, 그라운드 룰이 무엇인지를 결정할 필요가 있다.

어떤것이 맞는것인지 어떤것이 틀린것인지에 대한 원칙은 없지만, SW-FMEA를 수행함에 있어

(1) 어떤 고장을 고려할 것인지,

(2) 어떤 종류의 고장을 포함할 것인지,

(3) 고장 허용 수준은 어느정도로 할 것인지 등의 정보를 사전에 고려해야만 한다.

 

SW FMEA Ground Rules (Example)

  1. 특정 레벨에 대한 모든 고장들이 식별되어야 한다. (SW FMEA의 범위 식별)
    가령 컴포넌트 레벨에 대한 모든 고장을 식별한다든지 또는 서브 시스템의 모든 고장 혹은 소프트웨어 레벨의 모든 고장을 식별할 것인지를 결정해야 한다.
  2. 특정 레벨에서 어떤 고장이 존재하는지가 식별되어야 한다. (잠재 고장 모드 식별)
    소프트웨어가 의도된 기능을 수행하지 못할 수 있는 모든 가능한 방법을 확인해야 한다. 즉, 오류, 버그, 충돌 및 잘못된 출력과 같은 다양한 유형의 실패가 고려되어야 한다.
  3. 소프트웨어 컴포넌트의 내/외부 인터페이스가 식별되어야 한다.
    인터페이스를 통해 전파되는 고장 모드가 어느정도 규모인지 또는 어떤 것들이 발생할 수 있는지에 대해 문서화가 이루어져야 한다.
  4. 소프트웨어 컴포넌트에 발생 가능한 고장의 영향이 결정되어야 한다.
    고장 또는 다른 코드에 의해 야기되는 결함들은 상세 설계 단계에서 기능 및 객체 레벨에서 반드시 분석이 이루어져야 한다.
  5. 사람의 실수에 의해 야기되는 고장 모드는 FMEA에서는 고려하지 않는다.
  6. 하드웨어 아이템의 고장 모드에 대한 크리티컬리티(criticality) 분류는 최악의 잠재적 고장 효과를 가진다고 간주해야 한다.
  7. 동일한 기능을 수행하는 여러 아이템에 대한 고장 모드는 단지 하나의 고장 모드로만 식별해야 한다.
  8. 아이템들이 가지는 제약 구조들은 반드시 분석이 이루어져야 한다.

이러한 그라운드 룰 외에도 가정(assumption)들이 어떤 것들이 있는지도 사전에 인지되고 문서화가 이루어져 있어야 한다.

소프트웨어 고장 모드 유형

  1. 기능 고장
    소프트웨어가 특정 기능을 수행하지 못하거나 잘못된 기능 수행으로 소프트웨어가 의도한 대로 동작하지 않는 고장을 고려할 수 있다.
  2. 성능 고장
    소프트웨어 응답시간이 느려진다거나, 메모리 사용량, CPU 부하등 시스템 자원을 과도하게 사용하여 소프트웨어가 정상적 기능수행이 저해되는 고장을 고려할 수 있다. 또한 스케줄링에 의해 발생하는 타이밍, 프로세스간 우선순위 등에 의해 야기되는 고장도 고려할 수 있다.
  3. 인터페이스 고장
    소프트웨어 내부 모듈간 데이터 송/수신이 실패하거나, 외부 시스템 또는 장치와의 통신 실패에 따른 고장을 고려할 수 있다.
  4. I/O 고장
    사용자 또는 시스템으로부터 잘못된 입력을 받거나, 예상치 못한 노이즈에 의한 출력에 따른 고장을 고려할 수 있다.
  5. 데이터 오류
    데이터 타입, 정밀도, 송/수신 데이터간 불일치에 의한 데이터 손실 등의 고장을 고려할 수 있다.
  6. 모니터링 고장
    소프트웨어 고장 발생을 감지하고, 복구하는 모니터링 기능의 고장을 고려할 수 있다.
  7. 환경적 요인에 의한 고장 
    소프트웨어 구성(설정)에 의한 고장, 외부 라이브러리의 버전 불일치, 하드웨어 호환성, 특정 환경 조건(온도, 습도 등)에서 발생할 수 있는 소프트웨어 고장을 고려할 수 있다.

소프트웨어 기능 고장 유형(원인)

  1. 잘못된 계산식 및 논리 오류
    수학적 계산식의 오류로 인해 잘못된 결과를 도출하거나 조건문이나 논리 연산에서 잘못된 경로를 선택하여 올바르지 않은 결과를 초래할 수 있다.
  2. 소프트웨어 상태 오류
    소프트웨어가 예상치 못한 상태로 전환되거나, 소프트웨어 상태가 논리적으로 일관되지 않아 소프트웨어 기능 고장을 야기시킬 수 있다.
  3. 데이터 처리 오류
    데이터 타입을 변환하는 과정에서 타입 불일치나 값손실등의 잘못된 데이터 변환이 발생하거나, 입력 데이터가 잘못 처리되어 데이터가 손상되거나 변형되어 소프트웨어 기능 고장을 야기시킬 수 있다.
  4. 사용자 인터페이스 오류
    사용자에게 잘못된 정보가 피드백되거나, 사용자 인터페이스가 일관되지 않게 작동하여 소프트웨어가 기대와 다르게 동작할 수 있다.
  5. 통신 메시지 오류
    통신 과정에서 메시지나 데이터가 손실/변형되거나 잘못된 형식의 메시지가 송/수신되어 소프트웨어 기능 고장을 야기시킬 수 있다.

 

이 글을 작성하며, 이미 잘 알지만, 쉽게 이행하기 어려운 말이 눈에 띄어 추가로 적어 본다.

 

“Try to think “outside the box”

 

SW FMEA를 수행함에 있어 특정 아이템이나 기능만을 볼것이 아니라 프로젝트 전체를 먼저 훑어 보고, 그에 따른 고장 모드를 식별한 연후에 개별적인 기능 및 아이템에 대한 고장 모드를 식별하는 것이 필요하다.

또한 각 컴포넌트들간의 인터페이스를 정확하게 체크하고, 가정들, 제한 사항들, 그리고 일관성이 결여되는 것들은 없는지 정확하게 확인을 해야 한다.