IT Solutions/MDD

프로그래밍 언어 없이도 프로그래밍이 가능한가요? (1편) - MDD(Model Driven Development), 모델 기반 개발 방식 -

2014.08.25 09:56

컴퓨터 관련 전공자가 아니더라도 프로그래밍 언어라는 말은 들어보셨을 겁니다. 만약 들어보지 못했더라도 C++, 자바 등의 용어는 얼핏 들어보셨을 텐데요. 프로그래밍 언어는 컴퓨터 시스템을 구동시키는 소프트웨어를 위해 고안된 언어입니다. 프로그램을 구성하는 데이터와 명령어를 정리해주는 언어는 프로그래밍의 필수적 요소라 여겨졌는데요. 최근 언어 없이도 프로그래밍이 가능하다는 이야기가 들려 오고 있습니다. 기존의 프로그래밍에 익숙한 분에게는 선뜻 이해가 안될지도 모르는데요. 지금부터 함께 살펴보겠습니다. 

 

제가 프로그래밍을 시작하게 된 계기는 고교 시절 접했던 'PC 통신'입니다. 인터넷을 통해 원거리의 사람들과 소통을 하는 것이 무척이나 매력적이었죠. 단순히 취미로 시작했던 PC통신은 인문학도인 저를 프로그래밍의 세계로 안내해 주었습니다. 대학 시절에는 선배와 함께 BBS프로그램을 학내 UNIX 서버에서 운영하기도 했었는데요. 이때 처음 접했던 프로그래밍 언어가 'C'입니다. 


대학 졸업 후, 입사 면접에서 제가 전공한 언어와 프로그래밍 언어의 차이점은 무엇이냐는 질문을 받은 적이 있습니다. 저는 인간의 언어는 사람 간의 의사소통을, 프로그래밍 언어는 사람과 기계 간의 의사소통을 위한 것이라고 대답했죠. 그러면, 최근의 프로그래밍 언어도 이렇게 정리할 수 있을까요? 아래 사진은 영화 'Her(2013)'의 한 장면인데요. 

<영화 'Her'의 한 장면>


이 영화에는 인공 지능을 가지고 인간과 대화를 나누는 미래의 OS(Operating System)가 등장합니다. 주인공은 OS에게 사랑의 감정까지 느끼게 되는데요. 마치 진짜 지성을 지닌 것처럼 사람과 이야기하고, 공감해 주기 때문입니다. 앞으로 기술이 더욱 발전한다면, 이처럼 프로그래밍 언어가 전혀 필요 없는 시대가 올지도 모르겠습니다.


LG CNS는 프로그래밍 언어를 몰라도 개발이 가능한 ‘모델 기반 개발 방식’을 도입하여 전북은행 차세대 시스템을 2013년 성공적으로 오픈했습니다. 프로그래밍 언어를 모르는데 어떻게 프로그래밍을 할 수 있었을까요? 그럼, 지금부터 모델 기반 개발 방식이 무엇이고, 어떻게 이를 적용할 수 있었는지 알아보겠습니다.

 

 

1957년, 사람의 언어에 가까운 최초의 프로그래밍 언어인 '포트란(Fortran)'이 개발되었습니다. 이후, 프로그래밍 언어는 코볼(COBOL), C, 자바(Java) 등으로 발전을 거듭했습니다. 혹자는 프로그래밍 언어의 역사를 '추상화'의 역사라고 말하기도 합니다. 프로그래밍 언어의 핵심은 '기계 냄새가 나는 복잡하고 어려운 것을 단순화시켜서 인간이 다루기 쉽게 만드는 것'이기 때문입니다.


자바(JAVA)는 가장 최근 개발되어 많은 사람이 사용하고 있는 프로그래밍 언어로 추상화가 잘 된 ‘객체 지향 언어’입니다. 자바 덕분에 많은 사람들이 쉽게 코딩(Coding)을 하고, 프로그램을 만들 수 있게 되었습니다. 이전에 직접 처리해야 했던 메모리, 포인터 등의 복잡한 과정을 자바에서는 자동으로 정리해 주기 때문입니다. 그러나 이렇게 작성된 코드는 유지 〮 보수 측면에서 많은 문제점들을 야기시킵니다. 예를 들어, 개발자가 자신만의 스타일로 하나의 방식(Method)을 1,000줄 넘게 작성했다고 가정해 보죠. 이런 경우, 프로그램에 주석이 친절하게 달려 있지 않는 이상 시간이 지나면 내용 파악이 어려워 집니다. 비록 그것을 작성한 사람이라도 말이죠. 다른 사람이 개발한 프로그램이라면 더 말할 것도 없을 것입니다. 이를 보완하기 위해 개발 표준을 만들었다고 해도 모든 사람들이 이를 준수하도록 하는 것은 사실상 불가능한데요. 그래서 개발자들은 더 나은 설계와 코드의 표준화를 위해 '모델'을 활용하기 시작합니다.     

<'모델'의 예시>


위의 그림과 같이 '모델'은 프로그래밍 언어를 가시적으로 추상화한 설계도를 말하는데요. 여러 가지 도형과 기호들로 도식화하여 표현합니다. 또한 UML(Unified Modeling Language)과 같은 표준 모델링 언어를 사용하여 작성하기도 하는데요. 모델은 개념적으로 작성하기 때문에 기술 환경에 독립적이고 재사용성이 뛰어납니다. 뿐만 아니라 복잡한 소스코드(Source Code)에 비해 그림으로 된 모델은 직관적입니다. 그래서 개발자와 고객 간의 의사소통이 잘 이루어집니다. 이와 같이, '모델'을 통해 프로그래밍 소스 코드를 생성하는 개발 방식을 ‘모델 기반 개발(MDD, Model Driven Development)' 방식이라고 합니다. 

 

‘모델 기반 개발(MDD, Model Driven Development) 방식에 대해 조금 더 자세히 살펴보도록 하겠습니다. 2002년, 제가 처음 자바로 개발하게 된 방식은 MDD였습니다. 'Rational Rose'라는 모델링 툴에서 모델을 작성하면 템플릿 수준의 미완성 자바 소스 코드가 표준화된 양식에 맞게 자동으로 생성됩니다. 이 소스 코드에 세부적인 내용을 채우면 하나의 프로그램이 완성되는 것이죠. 당시에 저는 하나의 모델로 C++ 소스 코드를 같이 생성하였는데요. 최종적으로는 자바와 C++, 두 가지 버전의 솔루션을 완성하였습니다. 이렇듯, 모델을 통해 일부분의 소스 코드를 생성하는 것이 바로 'MDD' 개발 방식입니다. 그리고 이를 뒷받침해 주는 기술 표준을 'MDA(Model Driven Architecture)'라고 하죠. MDA는2001년 OMG(Object Management Group)라는 단체에서 표준 스펙으로 제정되었는데요. 이 단체는 객체 관련 기술을 표준화하는 비영리 단체입니다.

<Model Driven Architecture(출처: http://www.omg.org/mda/>


MDA는 UML 표기법을 이용하여 소프트웨어의 설계 모델을 작성하고, 이를 구현 모델과 소스 코드로 변환하여 프로그램을 자동으로 생성해 주는 기술의 표준에 대해 정의하고 있습니다. MDD 관련 기술과 툴은 이후 지속적으로 발전하게 되지만, 여러 이유로 차츰 사람들에게 외면 받는 기술이 되었죠. 그 이유 중 하나는 모델을 통해 소스코드를 일부만 생성하면 모델과 최종 소스코드가 일치하지 않는다는 점입니다. 그래서 개발 과정에서 코드를 수정하다가 설계가 변경되면 모델에 반영하는 작업을 별도로 수행해야 합니다. 또한 모델에는 완전한 설계 로직이 들어 있지 않기 때문에 이 모델을 재사용한다고 하더라도 불완전하고 신뢰도가 떨어집니다. 이러한 이유로 개발자들은 점점 모델 작성을 형식적으로 하기 시작했습니다. 이 때문에 모델로부터 얻는 긍정적 효과보다 부작용이 더 커지게 되었습니다. 

 

LG CNS가 MDD에 대한 연구를 시작한 것은 2003년입니다. 이후, IBM의 RSA라는 모델링 툴을 이용해 작성한 모델부터 자바 소스 코드를 자동으로 생성해 주는 'DevonMDA'를 개발했습니다. 이는 이전의 방식과는 달리 모델로부터 완전한 소스코드를 생성할 수 있는 자동화 도구인데요. 즉, DevonMDA는 개발자가 모델만 작성하면 별도로 코딩을 하는 절차가 필요 없는 것입니다. 100% 완성된 코드를 생성해준다는 점에서 20~30% 수준의 소스 코드를 생성하는 일반적인 모델 기반 개발 방식과 큰 차이가 있는 것입니다.

<LG CNS MDD로 개발한 모델과 소스코드>


프로그래밍 언어를 모르고, 프로그램을 개발하는 것이 정말로 가능한 것일까요? 오래 전부터 MDD를 접해 온 저 조차 처음에는 반신반의할 수 밖에 없었습니다. 고객의 요구 사항이 까다롭고, 변수도 많은 대형 프로젝트에서의 적용은 부분적으로만 가능할 것이라고 생각했습니다. 이렇듯 MDD는 많은 사람들이 그 실현 가능성에 대해 의문을 제기했지만, LG CNS는 국내 최초로 MDD를 전체 프로젝트에 적용한 '전북은행 차세대 시스템'을 성공적으로 오픈하였습니다. MDD의 가능성을 실제로 보여준 것이죠. 


지금까지 MDD(Model Driven Development)의 전반적인 내용을 살펴보았는데요. 다음 시간에는LG CNS가 실제로 어떻게 MDD를 성공적으로 적용시켰는지, 그 기반 기술은 무엇인지에 대해 조금 더 자세히 알아보겠습니다. 


장경희 과장 LG CNS 금융솔루션팀



저작자 표시 비영리 변경 금지
신고
Posted by IT로 만드는 새로운 미래를 열어갑니다 LG CNS
위로