규제 대상 시장에서 코드 구현 품질이 중요한 이유
차량, 항공기, 의료 기기 및 산업용 제어 시스템에 탑재된 소프트웨어는 결함이 발생하면 직접적인 물리적 결과를 초래하는 환경에서 작동합니다. 이러한 산업 분야의 규제 기관들은 이러한 현실에 대응하여 의무적인 검증 요구사항을 마련해 두었습니다. 자동차 분야의 ISO 26262, 항공우주 분야의 DO-178C, 의료 기기 분야의 IEC 62304, 산업용 시스템 분야의 IEC 61508이 바로 그것입니다. 규정 준수 여부에 대한 문서화된 증거가 없으면 해당 제품은 출하될 수 없습니다.
안전이 최우선인 산업 분야의 중요성
자동차
현대 자동차에는 수백 개의 전자 제어기에 걸쳐 1억 줄 이상의 소프트웨어 코드가 담겨 있습니다. 제동 시스템, 조향 장치, 에어백 배포 등을 포함한 안전 관련 소프트웨어에 결함이 발생하면 신체적 피해로 직접 이어질 수 있습니다. ISO 26262는 도로용 차량의 전기 및 전자 시스템 기능 안전에 대한 위험 기반 프레임워크를 정의하며, 개발의 모든 단계에서 체계적인 검증을 요구합니다.
항공우주
에어본 소프트웨어는 인증 기관의 승인을 받기 전에 DO-178C에 정의된 엄격한 기준을 충족해야 합니다. 이 표준은 소프트웨어에 대해 D(경미)부터 A(치명적 고장 결과)까지의 보증 수준을 할당하며, 수준이 높아질수록 검증 요구사항도 점점 더 엄격해집니다. 레벨 A 소프트웨어의 경우 MC/DC 커버리지가 필수입니다.
Medical devices
IEC 62304는 의료 기기의 소프트웨어 생명주기를 규정하며, 환자 안전에 영향을 미칠 수 있는 모든 소프트웨어 컴포넌트에 대해 체계적인 검증 활동을 요구합니다. 심장 박동기, 주입 펌프 또는 영상 시스템에서 소프트웨어 오류가 발생할 경우 그 결과는 명백합니다.
산업 자동화
IEC 61508은 산업용 프로그래머블 전자 시스템의 기능 안전성을 위한 기초 표준입니다. 이 표준은 공장 제어 시스템, 화학 공장의 공정 자동화 등 다양한 분야에 적용됩니다. 또한 이 표준은 여러 산업별 표준이 도출되는 기초가 되기도 합니다.
낮은 코드 품질이 초래하는 대가
안전상의 문제 외에도, 소프트웨어 품질이 낮으면 상당한 경제적 손실을 초래합니다.
- 시스템 통합 과정에서 발견된 결함을 수정하는 데 드는 비용은 단위 테스트 단계에서 발견된 결함을 수정하는 데 드는 비용보다 10배에서 100배 더 많이 듭니다.
- 규제 대상 산업에서 발생하는 필드 고장은 리콜, 규제 당국의 제재 및 소송을 초래할 수 있습니다
- 감사 불합격이나 인증 거부는 제품 출시를 지연시키고 고객 관계에 악영향을 미칩니다
- 품질 관리 과정을 생략함으로써 누적된 기술적 부채는 향후 개발 속도를 늦추고 위험을 증가시킵니다
실무에서 ‘품질’이 의미하는 바
규제 대상 산업 분야의 소프트웨어 팀에게 있어 품질이란, 소프트웨어가 올바르게 개발되고 철저하게 평가되었으며 요구사항에 따라 검증되었음을 문서화되고 추적 가능한 증거를 통해 입증할 수 있는 능력을 의미합니다.
즉, 다음과 같은 기능을 갖춘 프로세스와 도구를 갖추는 것을 의미합니다:
- 결함이 개발 생명주기 전반으로 확산되기 전에 조기에 탐지할 수 있는
- 해당 표준에서 요구하는 요구사항에 맞춰 코드 범위 검사를 수행하고 보고할 수 있어야 합니다
- 모든 평가 결과를 특정 요구사항과 연결할 수 있어야 함
- 인증 기관의 요건을 충족하는 감사용 보고서를 생성할 수 있어야 합니다