2016년 6월 2일 목요일

소프트웨어 아키텍처 패턴 응용 [하]

더보기

소프트웨어 안전성 분석 방법의 종류와 검증 기법 소개

대부분의 산업계에서 디지털 컨버전스의 추세에 따라, 컴퓨터 소프트웨어의 ‘안전성 확보’ 가 중요한 현안으로 부각되고 있다. 이에 따라 소프트웨어 개발공정 각 단계별 안전성 분석 수행을 인허가 기준으로 의무화 하고 있는데, 소프트웨어 개발공정 단계 중 요구사항 명세 단계에서 안전성 분석을 수행하기 위한 방법들은 무엇이 있는지 알아보고, 산업에서 실제 적용해본 사례를 NBP IT 보안개발팀 최원석 과장을 통해 구체적으로 알아보도록 하자.


Q) 소프트웨어 안전성 분석기법은 왜 필요한건가요?
  소프트웨어의 규모가 커지고 복잡해지면서 소프트웨어의 기능적 실패 (Failure)를 만들어 내는 위험(Hazard)요소들을 분석하기가 어려워지고 있습니다. 이제는 산업시스템 (원자력, 항공관제, 철도운영 등)에서도 디지털 컨버전스로 인한 소프트웨어의 중요성은 두말하면 잔소리로 여겨질 만큼 중요한데요. 이런 기능적 실패는 곧 큰 사고로 이어지게 되기 때문에 더더욱 중요하게 생각하지 않을 수 없습니다. 이러한 소프트웨어의 기능적 실패를 제거하고 안전성과 신뢰성을 높이기 위해 안전성 분석이 필요해지고, 또 안전성 분석을 요구하고 있습니다. 이에 따라 정확한 분석을 위해 다양한 분석기법들이 나오게 되었습니다. 
먼저 안전성을 분석하기 전에 개념에 대해 명확히 해두고 가야할 것 같습니다.



인공지능 - 딥 러닝 편


ICT 산업에 종사하지 않는 사람들도 알파고의 영향으로 인공지능 (Artificial Intelligence) 에 대한 관심도가 높아지고 있다. 인공지능은 인간의 학습과 추론, 지각, 언어 능력을 소프트웨어로 구현한 기술이다.
이미 오래 전에 알려진 인공지능은 특정 분야에서 어느 정도 성과를 냈지만 실제 인간의 지능과 큰 차이를 보여 크게 발전하지는 못했다. 하지만, ICT 기술의 발달은 인공지능에 대한 연구를 급속히 이끌었고, 최근에는 인공지능의 가시적인 성과가 다른 산업에 막대한 영향을 미칠 것으로 예측된다.
이번 공학트렌드는 인공지능의 한 분야로 최근 주목 받고 있는 딥 러닝에 대해 살펴보겠다. 딥 러닝에 대한 정확한 정의와 학습 방법의 유형을 이해하고, 최근에 적용된 사례를 살펴보면서 딥 러닝을 활용하는데 좋은 가이드가 되기를 기대한다.

딥 러닝의 정의
딥 러닝은 인간의 신경망 (Neural Network) 이론 기반의 인공 신경망 (ANN; Artificial Neural Network) 의 일종이다. 입력층(Input layer)과 출력층(Output layer), 그 사이에 하나 이상의 중간층 (Hidden layer) 을 갖고 있는 계층 구조 (Layer Structure) 로 구성된다 ( 그림 1 참조 ).



인공 신경망 (Artificial Neural Network)
사람의 뇌는 250 억 개의 신경 세포 (Neuron) 로 구성되어 있고, 신경 세포 간 신호를 전달하며 정보를 교환한다. 인공 신경망(ANN)은 인간의 뇌를 모방하여 만든 수학적 모델이고, 뇌의 신경망에 대응하는 노드(Node), 입력(Input), 출력(Output), 가중치(Weight) 속성을 가지고 있다(표 1 참조).