소프트웨어 안전성 활동의 핵심은 코드에 대한 안전성 분석에 있다. 이러한 확인을 위한 선행 조건들은 다음과 같다.
- 안전요구사항을 비롯한 시스템과 서브시스템 소프트웨어 요구사항 명세서를 위험원과 안전성 분석, 점검 전반에 걸쳐 작성한다. 또한 요구사항의 정확성, 완성도, 서브시스템 간 일관성 등을 확인해야 한다.
- 서브시스템 소프트웨어의 안전 요구사항을 해당 소프트웨어 설계까지 추적 가능해야 한다. 안전성 분석과 검토를 안전에 필수적인 기능들에 대해 수행하여 이들의 정확성, 완성도, 일관성 등을 확인해야 한다.
- 소스코드가 소프트웨어 안전성 설계 기준에 부합하는지 확인해야 한다.
- 소프트웨어 상세 설계 준수 여부, 검토 목표는 소스코드가 정확하며 소프트웨어 상세 설계 관점에서 완벽한지 여부와 소스코드에 문서화 되지 않은 기능들이 구현되어 있는지 여부를 확인하는데 있다.
- 일관성 확인: 데이터 조작 전에 데이터가 일관성을 유지하고 있는지를 확인한다.(제로 속도 확인, 신호기 이동명령 확인 등)
- 타당성 확인: 관련 데이터들이 논리적으로 정확하게 합당하며 데이터 범위는 예상 범위 내에 있는지 확인한다.
- 하드웨어 감시확인: 내장 시험, 출력의 교차 비교하여 확인한다.
- 적정 수준의 통합 시험과 확인 시험을 계획하여 소프트웨어 코드 리뷰에 따라 실행하여 구현 내용이 설계 일치하며 안전 요건을 만족하는지 확인한다.
- 단, 상용소프트웨어(COTS)를 사용할 경우에는 소프트웨어 안전성 활동에서 제외한다. 하지만 제외된 사항에 대해 동일 사양 제품의 적용사례 또는 카탈로그 등과 같은 증빙자료를 제시해야 한다.
철도 시스템의 소프트웨어 개발과 관련해서는 IEC 62279 기반 RAMS 인증을 받기 위해 아래와 같은 검증기법이 요구된다.
- 철도 소프트웨어 인증지원 도구 즉, 기능 안전성의 블랙박스 테스팅이 가능하도록 최종 개발한 시스템에 활용하는 통신 인터페이스를 직접 모의하고 실제 신호를 발생, 주입함으로써 시스템 체계를 구성하는 하위 시스템의 모든 소프트웨어 영역을 검증할 수 있도록 기술 지원이 필요로 한다.
- 또한, 자동차 산업계의 MISRA-C, MISRA-C++, 항공 산업계의 JSF AV C++, 각종 보안 관련 분야의 CERT-C, CERT-C++ 등을 참고하여 철도 시스템을 위한 소프트웨어 코딩 규칙 표준 및 지침이 필요로 한다.
- 이를 적용함으로써, 시스템의 소프트웨어 안전·신뢰성 확보가 가능해진다. 소프트웨어 시험은 제작 시제품의 소프트웨어 테스팅을 수행하여 품질 및 안전성 검증의 적합성을 문서화하여 제시하여야 한다.
- 코딩규칙 준수(MISRA-C 코딩규칙, IEC 61508 3 코딩규칙, IEC 62279 코딩 규칙) 여부 입증
- 동적 테스팅(MC/DC 테스트, 제어흐름 테스트 또는 경로 테스트)을 수행
- 기능 테스팅(기능요구사항 테스팅, 경계값 분석 포함) 수행
댓글 없음 :
댓글 쓰기