2017년 2월 1일 수요일

오픈소스를 적용하여 개발하는 소프트웨어의 특징 정리


오픈소스를 사용하기 위해 기존 개발 방법을 크게 바꿀 필요는 없다. 새로 개발해야 하는 부분을 오픈소스로 대체하는 경우가 많기 때문에 개발 프로세스나 방법론 자체에 영향 받는 부분은 생각보다 적기 때문이다. 하지만, 오픈소스는 프로젝트 내부에서 개발되는 것이 아니기 때문에 대내외적으로 고민해야 하는 부분이 있을 것으로 보인다. 이번 회에서는 프로젝트 밖의 오픈소스를 프로젝트 내에 적용하기 위해 알아둬야 하는 사항에 대해 오픈소스 커뮤니티에서 활동 중인 심서연 프로와 ㈜웹케시의 박해윤 박사를 만나 이야기를 들어본다.

Q: 안녕하세요. 오픈소스를 소프트웨어공학적으로 어떻게 적용하는 것이 좋은지에 대해 이야기를 들어보고자 박해윤 박사를 함께 모셨습니다. 먼저 오픈소스에 소프트웨어공학이 왜 필요한지 말씀해 주시죠.

오픈소스는 미리 만들어져 있는 소프트웨어를 만들고자 하는 소프트웨어에 완제품이나 반제품으로 적용하는 것이 일반적입니다. 일종의 재사용 소프트웨어라고 할 수 있기 때문에 어떻게 적용할 것인지에 대해 소프트웨어공학적인 접근이 반드시 필요합니다.
SI가 주류를 이루던 이전의 소프트웨어 개발은 체계적이고 전문적인 개발 형태가 많았습니다. 그래서 하나가 완성되면 그 다음 순서로 넘어가고 그 다음 것이 완성되면 또 그 다음이 수행되는 것이죠. 그런데, 오픈소스를 활용하게 되면 모든 것이 협력에 의해 움직입니다. 프로젝트 외부의 오픈소스와 내부에서 내가 만든 소프트웨어를 적절히 섞어가며 개발을 하게 됩니다(그림1).

<그림1> 독점 소프트웨어와 오픈소스 개발 방법론의 비교
출처: 오픈소스컨설팅

그림1을 보면, 독자적인 소프트웨어 개발은 소프트웨어공학에는 가장 잘 어울리는 모델이지만 최근의 트렌드와는 다소 동떨어진 것으로 보일 수 있습니다. 외적인 요소는 배제되고 철저히 내부적 요소로만 개발이 되기 때문이지요. 요구사항에 가장 적합할 수는 있지만 개발 시간도 오래 걸리고 안정화 되는데도 매우 오래 걸리는 단점이 있습니다. 반면에 우측의 오픈소스 모델은 프로젝트 내외부에서 필요한 부분을 협력하면서 개발하기 때문에 개발이나 안정화 시간이 짧습니다. 거기에서 비용절감이나 최적화된 리소스 활용, 효율성 향상 등이 기대되는 것이지요(그림2).

<그림2> 오픈소스를 도입한 이유
출처: IDC, 디지털타임즈


로봇산업에 소프트웨어가 미치는 영향

로봇(Robot)의 개요
로봇은 인간을 모방하여 외부 환경을 인식(Sense)하고 상황을 판단(Think)한 후 자욜적으로 동작(Act)하는 기계를 말하는데 인간의 오감과 두뇌, 손과 팔, 표현 등을 기계가 하게 된다. 로봇은 인간을 대신해 단순 반복되는 작업을 담당하는 것으로 시작되었고 제조업에서 많이 사용되다가 최근에는 서비스용으로 많이 활용되고 있다(그림1).

<그림1> 로봇의 종류
출처: 소프트웨어정책연구소

로봇을 사용하는 장점을 살펴보면, 생산성 향상을 통한 효율성과 경쟁력 강화, 위험도가 높은 3D 작업을 대체, 고령화와 저출산에 따른 안전과 건강을 위한 수요 대응으로 볼 수 있다. 또한 사회적 기대에 대응하는 제조 경쟁력 강화, 국방력 증대, 사회복지 지원 등을 통해 범국가적인 문제 해결에도 기여하고 있다.
앞에서, 초기 로봇은 인식(Sense), 판단(Think), 동작(Act)한다고 정의하였는데 최근의 로봇은 인식(Perception), 판단(Cognition), 행동(Mobility)로 정의하고 있다. 초기 로봇은 대체로 미리 입력된 값들을 바탕으로 움직이게 되는데 단순 반복 작업이나 노동력을 대체하는데 무리가 없었다. 하지만 최근의 로봇은 지능적으로 판단하여 응용 작업이나 학습을 통한 빠른 인지 능력을 제공하고 있다(그림2).

<그림2> 로봇의 진화
출처: 한국로봇산업진흥원

더보기

자동차 스마트팩토리 S/W 개발과 Global 품질 경쟁력 확보




  • SW공학기술 소개

     Global Standards 기반의 입증된 SW 공학기술 적용으로 최적의 사업 성과 달성



  • SW공학기술 적용현황