2016년 6월 3일 금요일

자동차 분야 기능안전성(Functional Safety)표준과 소프트웨어 테스팅 표준

더보기

소규모 개발업체의 협업 프로젝트 관리상의 문제점과 극복 사례

  시간, 비용, 품질. 이 세가지는 소프트웨어 개발 프로젝트에서 가장 중요한 요소이다. 특히 소규모 IT 업체의 경우 주로 소규모 프로젝트를 수행하게 되는데, 소규모 프로젝트에서의 시간적인 요소는 투입되는 비용과 산출물 품질에 큰 영향력을 미친다. 비용은 일정과 투입 인원에 종속되어 있기 때문에 일정에 따라 비용이 변경되고, 품질은 투입 인원의 노력 및 투입된 시간에 따라 달라질 수 있다. 즉, 일정에 따라 추가적인 비용 발생, 그리고 개발자들의 심리적 납기 압박으로 인한 품질 저하를 가져 올 수 있다는 이야기가 된다. 따라서, 소규모 IT 업체가 수행하는 프로젝트의 성공 여부는 일정 관리의 성패와 매우 밀접하게 연관되어 있다고 할 수 있다.
창업 7 년 차, 4 명의 인원으로, 네트워크를 통한 효율적인 컴퓨팅 환경을 제공하기 위하여 고군분투하고 있는 (주)아인스웨어의 한창호 대표를 만나 그동안의 어려움과 극복사례를 들을 수 있었다.

 
1. 소규모 개발 업체들이 겪는 어려움과 손실
2. 문제점을 해결하기 위해 시도해 본 노력
3. 레드마인과 같은 협업툴을 이용하여 얻은 효과
4. 소규모 개발 업체를 위한 제언

Q: 소규모 개발 업체들이 가장 어려움을 겪는 부분은 어떤 것인가요?
저희 같은 소규모 개발 업체들이 안고 있는 문제점 중에서 가장 큰 부분 중의 하나가 ‘개발인력의 부족’과 ‘개발시간의 부족’일 것이라고 생각합니다.
작은 회사들은 외주용역을 통해 수익을 발생시키는 구조로 되어있는 곳이 많기 때문에 대부분이 협업으로 진행됩니다. 모든 회사들이 아이디어 및 개발 시 발생하는 다양한 문제점들에 대해서 미팅을 진행하지만 사내 미팅이 아닌, 고객사와의 협업, 게다가 디자인 담당회사 등 다른 업체들까지 함께 협업을 해야 하는 상황이 되면 문제는 훨씬 더 복잡해집니다.
‘미팅’이라는 것이 생각보다 비효율적으로 진행되는 부분이 많은데요. 저희도 창업 초기에는 이 부분에 너무 많은 시간이 할애되어 낭비되는 시간이 많았습니다.
특히, 소규모 IT 업체들은 저희처럼 대표자도 개발에 직접 참여해야 하는 경우가 많은데요. 공동 개발하는 업체로 미팅을 하러 나간다면, 1 시간의 미팅을 위해서 교통 시간과 자료 준비 시간 등을 감안, 최소 2 시간 정도의 시간을 추가로 소비하게 됩니다.

중요한 점은, 미팅을 진행한 이후에 바로 프로그래밍에 집중을 할 수 있는 개발자는 많지 않다는 것인데요. 개발자들의 경우, 프로그래밍 중간에 그 맥을 끊고 다시 프로그래밍을 시작하게 되면 예열이 되는 시간이 필요하게 됩니다. 그러다 보면 정작 개발에 필요한 시간은 점차 줄어들어 시간에 쫓기게 되고, 한정된 시간동안 납기일에 맞춰 개발을 진행하다 보니 인력들은 지치고, 품질도 떨어질 수 있는 어려움이 반복될 수 있는 것이죠. 사실 큰 규모의 회사들처럼 시간과 비용이 넉넉하다면 크게 문제되지 않을 부분일 수 있지만 그렇기에, 소규모 개발 회사일수록 가능한 많은 시간을 개발에 투자할 수 있도록 환경을 구축하는 것이 그 무엇보다도 중요하다는 것을 뼈저리게 느꼈습니다.


인공지능 - 머신 러닝 편

지난 공학트렌드에서는 인 공지능의 한 분야 인 딥 러닝 에 대해 살펴보았다 . 딥 러닝의 정 의와 학습 방법 의 유형 에 대해 알아 보고 적용 사례를 살펴보면서 활 용 방법을 고민해보았다 . 이번 공학트렌드에서는 머신 러닝에 대해 알아본다 . 머신 러닝에는 다양한 개념과 방법이 존재하기 때문 에 주요 한 개념과 자 주 사용되는 알고리즘 중심으로 알아본다 . 지난 공학트렌드의 딥 러닝도 머신러닝의 한 부 분이다 .

머신 러닝의 정의
사전적인 정의를 살펴보면, 백과사전에서는 머신 러닝을 “인공지능의 연구 분야 중 하나로, 인간의 학습 능력과 같은 기능을 컴퓨터에서 실현하고자 하는 기술 및 기법이다” 라고 정의한다. 조금 좁혀서 정의하면 “엄청난 양의 데이터를 스스로 학습하고 정리하여 문제에 대한 해답을 찾아내는 기법이다” 라고 할 수 있다. 최근에는 “학습된 내용을 기반으로 미래를 예측” 하는 것까지 범위에 포함시키고 있다.
사람은 고양이가 어떤 생김새인지 알고 있으면, 처음 본 고양이라도 고양이로 인식한다(그림 1 참조). 하지만, 기계의 경우 고양이마다 고양이라는 인식표를 붙여서 데이터베이스에 저장해야 한다(그림 2 참조).
 






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 참조).