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