닫기

테크노트

[미들웨어 기술-①] 미들웨어 이용한 시스템 개발

  • 등록 2019.01.03 10:59:44
URL복사

[첨단 헬로티]


최근 시스템의 고도화가 진행되는 동시에 시스템의 구조가 복잡해지고 있다. 새로운 기술의 도입은 하드웨어적인 부분의 개량뿐 아니라, 소프트웨어 개발 공수 증가로도 이어지고 있다. 그렇기 때문에 소프트웨어 개발에서도 공수를 절감하기 위한 리소스의 재이용이 중요해지고 있다. 이러한 배경을 바탕으로 시스템 개발에서 미들웨어 도입이 가속되고 있다.


로봇 시스템 개발에서 미들웨어는 많이 등장하고 있으며, 산업기술종합연구소에서 개발이 추진되고 있는 RT(Robot Technology) 미들웨어나 최근 세계적으로 널리 이용되고 있는 ROS(Robot Operating System) 등 시스템에 대한 적용 범위에 맞춘 미들웨어가 널리 이용되고 있다. 대부분의 미들웨어는 소프트웨어 모듈을 조합해 시스템을 구축하는 형태를 취하고 있기 때문에 모듈 단위의 교체나 검증이 가능하고, 시스템의 보수성을 높이는 것이 가능하다.

또한, 네트워크 투과성을 높여 네트워크상의 상세한 정보를 의식하지 않고도 분산 시스템을 구축할 수 있으며, 시스템 구축의 유연성 향상으로 이어지고 있다. 이와 같이 미들웨어는 복잡화되어 가는 시스템 개발에서 반드시 필요한 플랫폼이 되고 있다.


최근에는 미들웨어를 이용하기 위한 정보에 대해서도 WEB 상에 풍부하게 있으며, 관련된 서적도 출판되고 있어 초보자도 쉽게 이용할 수 있게 되어 있다. (이번 테크 포커스에서도 이동 로봇 시스템을 쉽게 구축할 수 있는 절차가 소개되어 있으므로 꼭 보기 바란다.) 또한, 도입을 위한 기반도 정비되어 있기 때문에 미들웨어를 이용한 시스템 개발의 도입을 긍정적으로 검토하기에 좋은 시기를 맞이했다고 느끼고 있다.


이번 글에서는 시스템 인티그레이션에 있어 미들웨어의 현재 상황을 소개하고, 도입의 계기를 제공하는 것을 하나의 목표로 하고 있다. 개별 미들웨어의 내용에 대해서는 각 해설기사를 보기 바라며, 이 글에서는 필자가 지금까지 경험한 것을 바탕으로 이용 사례와 미들웨어에 대한 앞으로의 기대에 대해 서술한다.


미들웨어를 이용한 시스템 개발


필자가 미들웨어를 이용한 시스템 개발에 참여하기 시작한 것은 2004년이다. 이때, 산업기술종합연구소에서 로봇을 대상으로 한 미들웨어인 RT 미들웨어의 개발이 추진되고 있었으며, 그 개발 사례 창출을 목표로 서적 정리를 자동으로 하는 로봇 시스템 개발에서 RT 미들웨어를 이용했다. 이 시스템을 시작으로 여러 가지 시스템에 대한 RT 미들웨어의 이용을 시도해 왔다.


RT 미들웨어를 적용한 시스템 개발을 시작한 초기에는 RT 미들웨어 상에서 동작하는 소프트웨어 모듈인 RT 컴포넌트에 대해 하드웨어 제어에 관련된 것은 재이용할 수 있었는데, 이들을 통합해 가는 과정에서 대부분 원점에서부터 다시 만드는 상황이 되었으며 RT 미들웨어의 장점이 나타나는 단계까지는 아직 먼 상황이었다. 이것은 RT 미들웨어를 이용한 시스템 구축이라는 목적이 선행되어, 재이용성을 고려한 개발이 되지 않았던 것이 원인이었다.


그림 1. 음성인식을 이용한 로봇 시스템의 예


한편, 미들웨어 장점을 이용한 시스템의 한 예로서 NEDO의 차세대 로봇 지능화 기술 개발 프로젝트에서 개발한 음성인식에 의한 물체 조작을 가능하게 하는 시스템을 소개한다. 이 시스템 구축은 커뮤니케이션, 매니퓰레이션, 자율이동, 물체인식과 로봇 시스템에 요구되는 복수의 요소를 가진 시스템으로 되어 있으며, 일반적으로는 단시간에 실현하는 것이 쉽지 않은 대규모 시스템이었다(그림 1). 그러나 프로젝트 내에서 타 기관 등에서 개발되고 있던 RT 컴포넌트로서 이 글에서도 해설되고 있는 OpenHRI 등을 적절하게 재이용해 감으로써 시스템 구성 요소의 개발이 아니라, 통합해 애플리케이션에 맞춘 실장을 하는 것에 주력할 수 있었다. 일반적이라면 복수의 기관이 참여해야 할 시스템인데, 한 연구실 단위로 실현할 수 있었으며 플랫폼으로서 미들웨어의 우위성을 강하게 느낄 수 있는 개발이 됐다.


한편, 과제로서 개별 RT 컴포넌트를 통합해 가는 과정에서 정합성을 취하기 어려운 부분의 정합을 취하기 위한 컴포넌트 존재를 허용하지 않을 수 없게 되어, 재이용과는 아직 먼 애플리케이션에 강하게 의존하는 거대한 RT 컴포넌트를 만들게 된 것이 반성으로, 현재까지 이 개량을 위해 미들웨어를 이용한 개발 프로세스에 대한 검토를 해오고 있다.


이와 같이 미들웨어를 이용한 개발에서 개발하는 입장으로서는 재이용성을 의식한 개발을 하는 것이 중요하며, 재이용하는 경우에도 어떻게 재이용할지를 정확히 생각하는 것이 중요하다는 것을 경험적으로 얻을 수 있었다. 단, 재이용에서는 신규로 개발하는 요소는 발생하지만 원점에서부터 개발하는 것에 비해 기존 모듈을 이용함으로써 절감할 수 있는 공수는 많으며, 운용 방법에 따라 효율이 좋은 시스템 개발로 이어지는 것도 가능하다고 할 수 있다.


연구실․연습에서 미들웨어의 이용


어떻게 졸업생이 축적해 놓은 자산을 다음 세대에 전할 수 있을까 하는 것은 어느 연구실에서나 고민하고 있는 과제일 것이다. 그러나 소프트웨어 자산에서는 미들웨어를 적절하게 운용함으로써 졸업생의 자산을 원활하게 계승해 가는 것을 기대할 수 있다.


한 예로서 필자의 연구실에서는 RT 미들웨어나 ROS 등의 미들웨어를 활용, 미들웨어 상에서 동작하는 소프트웨어 모듈로서 자산을 축적함으로써 다음 배속 학생에게 원활하게 자산을 계승하고 있다. 이와 같이 소프트웨어 모듈화를 진행함으로써 새롭게 연구실에 배속된 학생은 자료를 참고로 기존 자산의 동작 검증을 쉽게 하는 것이 가능해진다.


또한, 한정된 시간 속에서 로봇 시스템 개발을 체험하는 연습강의 중에도 미들웨어의 이용은 유효하다. 음성인식이나 화상처리 등 각 기능 요소의 개념을 배우는 것은 가능하지만, 그것을 실장에 반영시키기 위해서는 각 기능의 깊은 이해와 그것을 프로그램에 반영하는 기술이 필요해진다. 그러나 한정된 강의 시간 중에 세밀한 실장을 하는 것은 힘들다. 이에 미들웨어를 활용함으로써 각 기능의 체험을 쉽게 할 수 있어, 이동 기능, 음성인식, 화상처리 등의 기능에 대해 실제로 시스템을 동작시키면서 체험하는 것이 가능해진다.


이러한 메리트를 이용하는 한편, 기존 자산을 활용해 자신의 연구 등에 반영하기 위해서는 소프트웨어 지식, 미들웨어에 관한 이해, 소프트웨어 모듈로 실장되어 있는 기능의 원리를 정확히 이해하면서 추진할 필요가 있으므로, 이 점과 함께 배우게 하는 것은 중요하다. 그러나 제일 첫걸음인 동작 검증의 스텝이 쉬워지는 것만으로도 메리트는 있기 때문에 미들웨어의 활용은 유효하다고 생각한다.


재이용성을 높이는 소프트웨어 모듈 개발을 위해


지금까지 미들웨어를 활용함으로써 얻을 수 있는 메리트에 대해 설명했다. 그러나 미들웨어를 활용해 시스템 개발에 관련된 효율을 높이기 위해서는 여전히 과제도 존재한다. 특히 재이용성을 높이기 위해 시스템 전체 설계나 각 기능에 대한 재이용성 검토는 중요하며, 그 중에서 소프트웨어 모듈 간의 인터페이스 설계는 재이용성에 크게 영향을 미친다.


필자의 경험으로도 설명했듯이 미들웨어 상에서 동작하는 소프트웨어 자산을 재이용함으로써 시스템 개발의 공수를 절감할 수 있는데, 재이용하면서 목표로 하는 시스템을 구축하는 과정에서 어떻게 해도 통합 부위가 갖는 기능이 많아져, 이 통합 소프트웨어 모듈의 재이용이 어려워진다. 보다 세밀한 수준의 재이용을 가속하기 위해서는 시스템 전체를 부감한 설계와 시스템 구성 요소의 쌍방 시점에서 설계하는 것이 반드시 필요하다. 이 목적으로서 필자 등은 시스템 모델링 언어인 SysML을 이용한 설계를 추진하고 있다.


SysML은 OMG(Object Management Group)에 의해 표준화가 이루어지고 있는 시스템의 개념, 유스케이스, 구조, 거동 등을 가시화하기 위해 이용하는 모델링 언어이다. SysML을 이용하면서 시스템의 전체 설계를 하여 내부의 구조와 미들웨어 상에서 동작하는 소프트웨어 모듈을 대응시켜 감으로써 시스템 전체의 모델링에서 실장까지 일련의 흐름을 실현할 수 있다.


이와 같이 함으로써 시각적으로 시스템 전체를 파악할 수 있게 되기 때문에 재이용성을 갖는 소프트웨어 모듈의 설계도 쉬워진다. 또한, 기능 단위의 기술이 가능하기 때문에 기능 간의 인터페이스에 관한 의논도 가능하다. 아울러 기존 미들웨어에 의존하지 않는 형태의 추상화된 의논도 모델 상에서는 가능하기 때문에 수명이 긴 시스템 모델의 설계가 가능하고, 미들웨어와 조합해 운용함으로써 시스템 개발의 효율화에 크게 기여할 수 있을 것으로 생각하고 있다.


그림 2. 모델링에 기초한 시스템 개발 사례


이와 같은 SysML에 의한 모델링에서 미들웨어를 이용한 실장까지 일련의 개발 프로세스를 거친 사례를 그림 2에 나타냈다. 복잡한 태스크에 대해서도 SysML의 모델로서 도식화하고 공유함으로써 여러 사람에 의한 대규모 시스템 개발에도 대응하기 쉬워진다.


현재의 미들웨어를 이용한 사례의 대부분은 미들웨어 상에서 동작하는 소프트웨어 모듈의 개발이라기보다는 소프트웨어 모듈을 재이용하는 케이스가 많은 인상인데, 시스템 개발의 효율화를 추진해 가기 위해서는 기존 리소스를 이용하는 것뿐만 아니라, 많은 사람이 소프트웨어 모듈도 개발하여 그 자산을 공유해 갈 필요가 있다. 이때, 개발한 소프트웨어 모듈을 유효하게 공유하기 위해서는 각 모듈의 설계가 포인트가 된다. 이러한 설계에 대해 여러 연구자·개발자와 의논하면서 유용한 소프트웨어 모듈의 설계 지침을 세우는 것이 미들웨어를 활용한 시스템이 보급되어 가는데 있어 중요하다고 생각한다.


맺음말


이번 글의 총론으로서 필자의 미들웨어를 이용한 시스템 개발 사례와 강의나 연구실의 미들웨어 이용에 대해 서술했다. 또한, 미들웨어를 이용하는데 포인트가 되는 재이용성을 높인 소프트웨어 모듈을 개발하기 위한 개발 프로세스의 한 예로서, 필자가 대응하고 있는 시스템 개발 사례를 소개했다.


이번 글에서는 현재 널리 이용되고 있는 미들웨어 소개를 중심으로 미들웨어 상에서 동작하는 소프트웨어 모듈군, 그리고 모듈의 이용 절차에 대해 다루고 있다. 또한, 실제로 미들웨어를 이용한 사례를 여러 개 소개하는 동시에, 비즈니스에서 미들웨어를 이용하기 위한 포인트에 대한 기사도 다루고 있다.


미들웨어를 실무에 이용하기 위해서는 미들웨어 그 자체나 그 위에서 동작하는 소프트웨어 모듈의 품질 보증 등 해결해야 할 과제는 많이 존재하지만, 시스템 인티그레이션의 많은 공정을 개선하는 데는 큰 가능성을 가지고 있는 것도 사실이다. 


大原 賢一, 메이죠대학



















주요파트너/추천기업