소프트웨어 안전교육, 무엇을 준비해야 하나?

  • 진회승SW기반정책·인재연구실 책임연구원
날짜2016.10.19
조회수13241
글자크기
  • 소프트웨어 안전교육의 필요성
    • 안전은 잠재 위험성을 배재해서 사고를 사전에 예방하고, 사고의 피해 규모 및 범위를 최소화 하는 것이다. 소프트웨어의 안전은 IEEE 1228 안전 표준에 따르면 소프트웨어 위험요소 제거를 통해 소프트웨어 오류로 인한 시스템의 사고를 예방하는 것이다.
    • 현대에는 사회에 미치는 소프트웨어의 영향력이 확대되면서, 소프트웨어 안전이 점점 중요하게 되었다. 사이버물리시스템 같이 사이버세계와 실세계가 네트워크로 연결되고 서로 영향을 주면서, 소프트웨어 안전이 사회 전체에 미치는 영향력이 확대되고 있다.
    • Interconnected world of Aml health services.
    • 도요타 급발진 사고, 중국 윈저우 고속철 탈선, 상왕십리 지하철 추돌 사고들은 소프트웨어의 안전이 보장되지 않으면, 수백 명이 넘는 대규모 인명피해와 경제적 손실을 야기하게 된다는 점을 알려주고 있다. 또한 올해 일어난 테슬라 사망사고의 사례에서 보듯, 자율주행차 등 4차산업혁명에 기초한 미래사회에서는 소프트웨어 안전이 더욱 중요해질 것은 명약관화하다고 하겠다.
    • 토요타 급발진 판결, 윈저우 고속철 탈선, 상왕십리 추돌사고, 테슬라 사망사고
    • 이처럼 소프트웨어의 안전이 중요해지고 있는데, 이를 확보하기 위해서는 무엇보다 소프트웨어 안전 교육이 필수적이다. 소프트웨어 안전을 확보하는데 교육이 중요한 것은 기본적으로 ‘안전’의 특성에서 기인하고 있다.
    • 첫째, 안전은 안전 의식과 문화가 확보되어야 가능한 문제이다. 안전을 중요하게 생각하는 인식의 전환이 필요하며 이를 위해서는 단순한 기술습득 차원을 넘어선 교육차원의 접근이 필요한 것이다.
    • 둘째 안전은 체화가 필요하다. 관련 지식을 아는 정도로는 부족하고 안전문제 발생 시 즉시 행동하고 대응할 수 있어야 하므로 반복적인 교육이 필수적이다. 화재 대비 또는 지진 대비 훈련과 교육을 정기적으로 하는 것도 같은 이유이다.
    • 셋째 안전 문제에 제대로 대응하기 위해서는 시스템 구현 전체 프로세스에 대한 이해와 관련 분야에 대한 기술 습득이 필요하며 체계적인 교육이 필요하다. 자신이 맡은 분야만 떼어서 컴포넌트를 구현한다면 전체 시스템의 안전을 보장할 수 없다. 시스템의 작은 컴포넌트의 다른 컴포넌트와의 관계와 영향에 대한 분석이 필요하며, 이를 위해서는 전체 프로세스를 이해하고, 관련 주변 기술에 대한 이해가 필요하다.
    • 예를 들면 Therac-25 시스템에서 변수의 오버플로우라는 작은 오류가 사망 사건의 원인이 되고, Ariane-5의 데이터 오버플로우라는 작은 오류가 우주선이 폭발하는 원인이 되리라고 시스템 개발 시 생각했다면, 이런 사고가 일어날 가능성은 훨씬 줄어들었을 것이다.
    • 아울러 최근 급격한 소프트웨어 기술변화로 인한 새로운 안전기술에 대한 교육 수요 증가도 소프트웨어 교육이 필요한 배경의 하나이다. 예를 들면 자율주행차, 사물인터넷, 헬스케어 서비스 등 실세계에서 안전이 중요한 제품에 소프트웨어 활용이 늘어나고 있다. 센서, 빅데이터, 인공지능, 정밀지도, 통신 프로토콜 등 신기술이 적용되고 제품의 기능이 복잡해짐에 따라 구현되는 소프트웨어도 복잡해지고 안전 구현과 검증을 위한 새로운 안전기술이 개발되고 교육이 필요하다.
    • 최근 소프트웨어정책연구소 연구 결과에 따르면 스마트카, 가상현실, 3D 프린팅, 사물인터넷, 클라우드 컴퓨팅 등 5대 미래 유망분야에서 2025년까지 약 14만 개의 소프트웨어 일자리가 창출될 전망이라 한다. 이 중 스마트카, 사물인터넷 분야는 소프트웨어 안전과도 밀접한 관계가 있으며, 관련 종사자에 대한 소프트웨어 안전 교육이 필요하다.
    • 이러한 소프트웨어 안전과 교육의 특성과 새로운 수요 때문에 소프트웨어 안전교육체계를 구축하고 교육을 시행할 필요가 있다. 소프트웨어 안전교육의 반복적 주기적 체계적 재학습이 필요하며, 이를 위한 소프트웨어 산업 전반적 관점에서의 교육시스템 구축이 필요하다.
  • 소프트웨어 안전교육 현황과 문제점
    • 국가적 차원에서 소프트웨어 안전교육체계는 교육 대상자(수요자), 교육과정과 컨텐츠, 교육 실시자 및 관련 인프라 등 3가지 요소로 구분하여 분석할 수 있다.
    • 첫째, 소프트웨어 교육이 필요한 대상자 현황을 살펴보면, 교육 대상자가 누구이고 그 규모가 얼마인지는 공식적인 관련 통계 자료가 없어서 알기가 어렵다. 다만, 흩어져 있는 여러 통계와 자료를 활용하여 대략적으로 계산해 보면, 우리나라 소프트웨어 안전교육이 필요한 대상자는 약 6천 명 수준으로 추정된다. 이는 고용노동부 통계상에 나타난 설계, 개발 관련 소프트웨어 인력 15만 명을 기준으로 소프트웨어정책연구소에서 올해 시행한 설문조사에 근거해 안전교육이 필요한 대상자를 추정한 것이다. 이러한 대상자들이 제대로 필요한 교육을 받고 있는지에 대해서도 공식적으로 조사된 바 없으며 현재로서는 파악하기 어려운 실정이다.
    • 둘째, 교육 콘텐츠 면에서 보면, 교육 콘텐츠가 효과적으로 생산되기 위해서는 안전관련 직무가 무엇인지 먼저 정의되어야 하고 이에 근거해 관련 직무분석과 커리큘럼이 구성되어야 한다. 일반적으로 소프트웨어 안전 직무를 수행하기 위한 기능들은 아래표와 같은데, 주요 기능으로는 소프트웨어 안전관리, 소프트웨어 안전 분석, 소프트웨어 안전 검증, 소프트웨어 안전 구현 등이 있다.
    • 소프트웨어 안전 기능
    • 그러나 우리나라의 경우 현재 소프트웨어 안전직무에 대한 제대로 된 정의가 없기 때문에 체계적인 커리큘럼이 없으며, 과정도 제대로 없는 실정이다. 또한 산업별 표준적인 소프트웨어 안전 관련 직무 분석이 미비하여, 대상별 콘텐츠 구성이 어려운 것이 현실이다.
    • 미국의 사례를 살펴보면 미국도 대학과정에 체계적인 소프트웨어 안전교육에 대한 커리큘럼은 아직 존재하지 않으나, 소프트웨어 공학과정에서 일부 소프트웨어 안전에 대한 내용을 포함하고 있다.
    • 소프트웨어 안전교육 커리큘럼
    • 셋째, 교육 인프라 면에서 보면 교육기관으로서 일부 테스트, 인증 관련 기관, 안전 관련 컨설팅 업체가 있으며 이 기관들에서 소프트웨어 안전 관련 교육이 산발적으로 실시되고 있는 것으로 보인다. 그러나 이들을 제외하고는 소프트웨어 안전 관련 재직자를 대상으로 하는 전문적인 소프트웨어 안전교육 기관과 교수자도 거의 없는 것으로 파악되고 있다. 또한 안전교육에는 비용과 노력이 드는 만큼 이를 감당할 관련 법적 제도적 인프라와 민관 협력시스템이 필요한데 이러한 부분도 크게 미흡한 실정이다.
    • 소프트웨어 안전 선진국의 사례를 보면 재직자를 위한 교육은 기업, 협회, 대학, 표준기관 등에서 3~5일 정도의 교육을 구성하고 시행하고 있다. 기업과 대학은 대개 소프트웨어 안전교육 개론에 대한 교육을, 도메인 중심의 협회는 관련 도메인 소프트웨어 안전교육을 시행하고 있다. 표준 기관에서는 안전 표준에 대한 교육을 시행하고 있다. 재직자들은 목적에 맞게 원하는 교육을 골라 참여할 수 있다.
    • 소프트웨어정책연구소의 기업의 안전교육에 대한 현장 설문조사에 따르면, 기업에서는 소프트웨어 안전 관련 지식 습득에 어려움을 느끼며, 소프트웨어 안전 과정 부족에 대한 애로사항을 토로한다. 대기업과 공공기관 중심으로 소프트웨어 안전에 중요성을 실감하고 「시스템 안전사고에 대한 잠재 위험 분석」, 「소프트웨어 안전 분석, 설계, 검증 관련 기술」, 「소프트웨어 안전 관련 표준」 과정 등 실질적 소프트웨어 안전교육을 시행하려고 하는 움직임이 있다. 그러나 소프트웨어 안전 과정 부족 및 교육에 대한 정보 수집의 어려움을 느끼고 있다. 특히 소프트웨어 안전에 대해 아직 중요성을 인지하지 못하고 안전 관련 소프트웨어를 개발하는 중소기업은 안전 인식을 제고할 수 있는 교육이 필요한 것으로 나타나고 있다.
    • 기업에서 안전교육 시 중요하게 생각하는 내용
  • 소프트웨어 안전교육 방향
    • 소프트웨어 안전교육은 산업별 소프트웨어 안전 인식 및 역량이 달라 인식 및 역량 수준에 따른 교육 과정 개발 및 교육 실행이 필요하다. 신기술 분야에 비교해서는 기존 산업 분야가 안전에 대한 인식 수준이 높고 안전 기술을 보유하고 있으나, 전체 산업 각각에 맞는 소프트웨어 안전교육 계획을 세우고 시행하는 것이 필요하다.
    • 산업에 맞는 소프트웨어 안전교육
    • 기능 안전 관련 국제 표준이 존재하고 비교적 안전이 잘 지켜지고 있는 자동차, 항공, 원자력 분야는 실무 능력 강화에 대한 교육이 필요하다, 해당 분야의 소프트웨어 안전 관련 기술력은 타 산업 분야에 확산시켜야 한다.
    • 안전에 대한 인식 및 기술 역량이 낮은 신기술 분야는 소프트웨어 안전 인식 제고 교육 및 소프트웨어 안전 기초 지식 교육을 해야 한다. 안전이 보다 중요시 되는 소프트웨어 융합 분야는 소프트웨어 안전 표준을 정립하고 교육하는 것이 필요하다. 특히 중소기업은 교육으로 인한 업무 부담을 최소화할 수 있는 방안을 마련하여 소프트웨어 안전 인식 제고에 대한 교육부터 필요하다.
  • 소프트웨어 안전교육 개선 과제
    • 실질적인 소프트웨어 안전교육을 위해서는 관련 통계 조사 등을 통해 소프트웨어 안전교육 현황의 실태 파악이 선행되어야 한다.
    • 소프트웨어 안전교육 수요자 측면에서는 소프트웨어 안전 직무 분류체계를 마련하고 교육 대상의 선택과 집중이 필요하다. 소프트웨어 안전 직무 분류 체계 마련은 소프트웨어 안전 산업 확대의 기반이 될 것이며, 소프트웨어 안전교육을 위한 대상자 선정에도 중요한 기준이 될 것이다. 정부는 교육 대상으로 중소기업 현장 실무자를 선정하고 소프트웨어 안전에 대한 인식 및 기본 개념 교육을 지원해야 한다.
    • 소프트웨어 안전교육 콘텐츠 측면에서는 소프트웨어 안전교육 직무 체계에 따라 공통 소프트웨어 안전교육 커리큘럼과 과정을 마련하고 그에 대한 정보 공유를 해야 한다. 소프트웨어 안전교육을 대학 소프트웨어 공학과정에 포함하여 소프트웨어 관련 종사자의 안전 의식을 높여야 한다.
    • 소프트웨어 안전교육 전문가 확보를 위해서는 소프트웨어 안전에 대한 체계가 비교적 잘 구성되고 지켜지고 있는 항공, 원자력 등 분야의 전문가로 재직자 소프트웨어 안전교육을 위한 전문가 풀을 구축하는 것이 필요하다.
    • 마지막으로 소프트웨어 안전 관련 법제 및 지원체계를 정비하여 소프트웨어 안전 수요 창출 및 인프라를 확충하고, 소프트웨어 산업계와 정부가 공동으로 재원을 마련하여 소프트웨어 안전교육 비용 문제를 해결하는 것이 필요하리라 본다.