The law on Software Safety is urgently needed

 

  마침내 우리나라에서‘ 소프트웨어안전’이 정의되었다. 2018년 3월, 과학기술정보통신부가 입법 예고한‘ 소프트웨어산업진흥법 전부개정안’은 소프트웨어안전을“소프트웨어로 인한 사람의 생명이나 신체에 대한 위험의 발생을 방지하거나 이에 대한 충분한 대비가 되어 있는 상태를 말한다.”라고 정의하고, 산업 전반에 소프트웨어안전 확보를 위한 방안을 규정하였다. 아울러 국가 기반시설의 안전 확보에 대한 책임과 의무 등을 종합적으로 규정한 ‘ 소프트웨어안전 기본법’도 박정 국회의원의 발의로 법제화가 진행되고 있다. 소프트웨어 안전에 대한 법적 근거가 드디어 체계적으로 마련되고 있는 것이다.


  그간‘ 소프트웨어안전’에 대한 개념은 유사한 개념인 소프트웨어 품질이나 보안 등과 비교되며 혼란이 있었던 것이 사실이다. 도대체 소프트웨어안전과 품질 또는 소프트웨어 안전과 보안의 차이가 무엇인가, 품질이 좋은 소프트웨어는 당연히 안전한 것이 아닌가, 보안에 적용된 기술로 안전도 구현되는 것 아닌가 등 그간 제기되었던 질문들이 그것이다. 그러나 이제 그 개념이 제도적으로 명확히 정의되면서 소프트웨어의 안전이 한 단계 발전할 수 있는 계기가 마련될 것이다.


  지금까지 우리나라는 소프트웨어안전에 대해서는 불모지와도 같았다. 소프트웨어안전은 주인공이 아닌 조연 또는 단역 쯤으로 여겼다. 꼭 필요한 존재가 아니라, 없어서는 조금 곤란한 존재였고 다른 것으로 대체할 수 있다고 생각했다.


  그러나 소프트웨어가 산업 등 사회 시스템의 많은 부분을 차지하게 되면서, 소프트웨어가 안전하지 않으면 전체 시스템이 위험하게 되었다. 점점 더 소프트웨어로 인한 사고 사례가 늘어가고 있다. 최초의 소프트웨어로 인한 사고 사례는 1985년에서 1988년 사이의 의료 분야의 암 종양 치료를 위한 방사선치료기인 Therac-25로 인한 환자 사망 사건이다. 소프트웨어 오류에 의해 방사선이 올바르지 않게 발사되어 여러 명의 환자가 사망하거나, 방사능 후유증에 시달렸다.

<그림 1> Therac-25 기계

  도요타 자동차의 급발진 사고, 상왕십리 전동차 추돌 사고, 중국 윈저우 고속철 탈선 사고 등도 소프트웨어로 인한 사고들인데, 모두 원인을 소프트웨어 오류라고 한다. 이런 사건의 직접적인 원인들이 소프트웨어 오류이다 보니 소프트웨어의 오류가 없으면, 즉 품질이 좋으면 소프트웨어가 안전한 것이 아니냐는 질문이 나올 수밖에 없다.

<그림 2> 토요타 급발진 사고 <그림 3> 윈저우 고속철 탈선 사고  ※ 출처 : 뉴욕 타임즈, 연합뉴스

  그러나 소프트웨어를 개발하는 사람들은 오류가 없는 소프트웨어란 거의 불가능하다는 점을 알고 있다. 100% 오류가 없는 소프트웨어를 항상 만들 수 있다고 누가 장담할 수 있겠는가? 한때 소프트웨어 기업의 1위를 굳건히 지키고 있었던 마이크로소프트사도 오류가 없는 소프트웨어를 제작할 수 없다는 점을 알고 이를 인정하였다. 대신 소프트웨어 시험을 통해 오류 목록을 만듦으로써 이 문제에 대응하였다. 즉 수정해야 하는 오류의 우선순위를 정하여 우선순위가 높은 오류를 수정하여 제품을 출시하는 것이다.


  100% 오류를 제거할 수 있다는 확신이 없는 상황에서는 오류를 줄이려는 방법만으로 소프트웨어안전을 보장할 수는 없다. 자동차, 항공, 철도 등 안전이 중요한 시스템에서 소프트웨어안전을 확보하기 위해서는 오류를 가정하고 이에 대해 체계적으로 대응할 수 있도록 소프트웨어를 분석하고, 개발하고 그리고 검사해야 한다. 소프트웨어안전 보장을 위해서는 가장 중요한 것이 위험 분석이다. 위험 분석에서 나온 위험들을 제거하기 위해 소프트웨어안전 절차(Process)에 따라 소프트웨어를 개발하고 운영하는 것이 소프트웨어안전을 확보하는 방법이다.


  이번 ‘소프트웨어산업진흥법 전부개정안’에서는 단순한 기술적 오류만을 대상으로 한 것이 아닌 보다 체계적이고 종합적으로 소 프트웨어안전 보장을 위한 방법들을 규정하고 있다. 안전한 소프트웨어 개발을 위한 일반 안전기준과 세부 안전기준의 도입, 안전관리 대상 소프트웨어의 지정 및 운영계획 수립, 사고조사 기구에 소프트웨어 전문가 포함, 소프트웨어 안전 전문기관 지정 등이 그것이다. 아울러‘ 소프트웨어안전 기본법’에서는 소프트웨어안전 관리 기본계획 및 시행계획의 수립·시행, 소프트웨어안전관리위원회 설치, 사고대응 훈련 실시, 국가기관 등의 소프트웨어안전책임관 임명 그리고 소프트웨어안전관리원 설립을 규정하고 있다.


  이는 소프트웨어안전을 소프트웨어 정책의 필수적인 요소로 확인하고, 또한 각종 재난 등 물리적 안전 관련 제도와 소프트웨어안전의 특성상 차이를 제도적으로 인식하는 것으로 올바른 입법 방향이다. 이러한 소프트웨어안전에 대한 정책적 인식 변화는 장기적으로는 소프트웨어의 신뢰를 높여 소프트웨어 산업 전반의 발전을 뒷받침할 뿐만 아니라 이를 이용하는 국가 전체 시스템의 안전을 크게 높여줄 것으로 기대된다.


  ‘ 소프트웨어산업진흥법 전부개정안’과‘ 소프트웨어안전기본법’모 두 아직은 입법이 진행 중인 단계로써 법률이 국회를 통과하여 시행되기 위해서는 정부, 국회 및 관련 산업계 등의 적극적인 협조와 노력이 필요하다. 논의 과정에서 안전 확보를 위해서 나온 기준들이 규제라는 틀에 묶일 수도 있다. 국내 기업의 소프트웨어안전 분야 기술력 미숙 문제, 소프트웨어안전 관련 인력 양성, 소프트웨어 개발 시 안전 확보를 위해 추가된 비용 확보 등 해결해야 하는 문제도 제기될 것이다. 그러나 이제는 어떤 이유에서라도 소프트웨어안전 문제가 소홀히 다루어져서는 안된다. 소프트웨어가 우리 생활과 산업 등 모든 영역을 움직이는 시대에서 소프트웨어안전은 바로 우리의 생명과 재산을 안전하게 지키는 것이기 때문이다.


 

소프트웨어 안전 Software Safety 월간SW중심사회 2018년 3월호