IT Solutions/MDD

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

2014.10.08 10:13

지난 시간에서 모델 기반 개발 방식(MDD: Model Driven Development)이 무엇인지 그 개념을 알아보았습니다. 이번 시간에는 간단한 예제 모델을 통해 MDD를 적용하는 방법과 그 핵심 기술이 무엇인지 함께 살펴보겠습니다.


프로그래밍 언어 없이도 프로그래밍이 가능한가요?(1편) : http://blog.lgcns.com/573

 

우리가 인터넷 뱅킹으로 송금을 할 때 한 번에 송금할 수 있는 금액의 한도가 정해져 있습니다. 여러분이 알고 있는 ‘이체 한도’입니다. 일정한 금액 내에서 이체할 수 있는 시스템은 인터넷 뱅킹 개발에 꼭 필요한 비즈니스 처리 흐름 중 하나이죠. 이는 이체 한도를 검증하는 로직(Logic)을 통해 구현되는데, 이 역시 MDD로 개발이 가능합니다. 아래 모델이 바로 MDD로 구현한 이체 한도 검증 로직입니다.


<MDD로 설계한 이체 한도 검증 모델>


‘이체 한도 검증’은 모델에서 하나의 오퍼레이션으로 설계할 수 있습니다. 이 오퍼레이션은 ‘당행이체Pbi(Process business interface)’라는 프로세스 컴포넌트에 속해 있으며 컴포넌트의 계층 구조가 그림의 왼쪽과 같이 패키지로 보입니다. 이체 한도 검증 오퍼레이션을 실행할 때 필요한 입력값과 결과값은 매개변수(Parameter)에 담아서 주고 받게 되는데요. 변수에서 사용하는 데이터의 유형은 DTO(Data Transfer Object)라는 모델 구성 요소에 정의합니다. 예시에서는 이체금액과 전자금융 ID 2개를 이체 한도 검증 입력 시 필요한 변수로 정의하였습니다.


이체 한도 검증 오퍼레이션은 다른 오퍼레이션과 상호작용을 하면서 필요한 정보를 주고 받습니다. 이체 서비스를 이용하는 사람들은 자신이 한번에 이체하고자 하는 금액의 한도를 인터넷 뱅킹 서비스를 계약할 때 미리 설정합니다. 이 한도 정보가 이체서비스라는 데이터 저장소에 들어 있는데요. 이 정보를 ‘이체서비스Ebi’라는 엔터티 컴포넌트(Entity Component)의 이체 서비스 조회 오퍼레이션을 통해 제공 받을 수 있습니다.

 

LG CNS MDD에서 비즈니스 로직을 처리하는 컴포넌트는 프로세스 컴포넌트(Pbi)로, 데이터 정보를 처리하는 컴포넌트는 엔터티 컴포넌트(Ebi)로 구분하여 하나의 컴포넌트가 자신의 역할에 맞는 하나의 기능만 처리하도록 설계합니다. 그리고 여러 컴포넌트를 조립하여 하나의 업무 기능을 구현합니다. 


예시에서 당행이체Pbi와 같은 프로세스 컴포넌트는 이체서비스Ebi와 같은 엔터티 컴포넌트와 상호작용하면서 비즈니스에 필요한 로직을 구현하는데요. 이러한 상호작용의 동적 흐름을 UML(Unified Modeling Language)의 시퀀스 다이어그램으로 표현하고 있습니다.



이체 한도 검증 시퀀스 다이어그램의 윗부분에서 ① 파란색 네모 상자로 표현된 것은 상호작용에 참여하는 여러 객체입니다. 당행이체Pbi, 이체서비스Ebi는 앞에서 설명한 기능별 컴포넌트입니다. code와 excp 등 Code 계열의 라이프라인은 뒤에서 설명할 논리표현식을 작성하는 특별한 객체입니다. 


이체 한도 검증 오퍼레이션의 전체 흐름은 다음과 같습니다. 


이체서비스Ebi 컴포넌트에서 ③ 1.2: 이체서비스조회 오퍼레이션을 통해 1회 이체 한도를 구합니다. 그런 다음, 이체 한도 검증 오퍼레이션의 입력값으로 받은 이체금액과 비교하여 이체하고자 하는 금액이 한도보다 큰 경우에는 ⑦ 1: 이체한도검증 오류 처리를 하고, 같거나 작은 경우에는 ⑧ 1: 정상결과 셋팅을 해줍니다.


처리 로직을 좀더 자세히 살펴보겠습니다. 시퀀스 다이어그램에서 ② 1: 이체한도검증, ③ 1.2: 이체서비스조회와 같이 컴포넌트를 향하도록 그려진 화살표는 오퍼레이션의 호출을 의미합니다. UML로 오퍼레이션을 호출하거나, 이미지 안 검정색 네모 상자로 그려진 대체결합단편을 통해 if(위) ~ else(아래)의 분기 처리는 가능하지만, 변수 값 할당이나 비교 연산 등의 세부 로직을 표현할 수 없습니다. LG CNS MDD에서는 이것을 ‘논리표현식’이라는 자체 개발 언어를 통하여 모델에 표현하고 있습니다.


예를 들어, ④ 1.1: 이체서비스조회 입력값 설정의 ⑤ [i이체서비스조회].[전자금융ID] = [i이체한도검증].[전자금융ID];와 같은 변수 할당 구문이나  대체결합단편의 조건식에서 사용된 ⑥ [r이체서비스조회].[일회이체한도] < [i이체한도검증].[이체금액]과 같은 비교문 등 UML로 표현할 수 없는 구문을 ④ Code 계열의 라이프라인 화살표 안이나 ⑥ 결합단편의 상호작용 제한조건에 모델링한 것이 바로 논리표현식입니다. ⑦ 1: 이체한도검증 오류와 ⑧ 1: 정상결과 셋팅 안에 들어가는 내용도 논리표현식으로 작성합니다.


*논리표현식은 LG CNS가 자체적으로 MDD에서 사용하기 위해 개발한 언어로서 DSL(Domain Specific Language)이라 불립니다. 그 표현법은 일반적인 프로그래밍 언어의 문법에 비해 간단할 뿐만 아니라 한글로 작성합니다. 또한, 한글로 작성한 내용은 소스 코드 생성시 용어사전에 등록된 영문으로 자동 변환됩니다.


 

전통적인 방식의 MDD는 클래스와 오퍼레이션 선언, 호출 관계만을 표현하는 수준의 일부 소스 코드만 생성하였는데요. LG CNS의 MDD는 이와 달리 논리표현식으로 100% 완전한 소스 코드를 생성합니다. 또한, DevOn MDA의 모델 검증 기능 등을 이용해 기술적으로 모델의 품질을 보증하고, 소스 코드 템플릿과 용어 사전을 활용하여 표준화된 소스 코드를 생성할 수 있습니다.


<DevOn MDA의 모델 검증 기능>


설계를 마치면 자동으로 생성되는 소스 코드를 통해 테스트를 진행할 수 있습니다. 이때 화면(단말)과 같은 사용자 인터페이스가 없어도 거래 테스트 편집기를 통해 간편하게 필요한 입력데이터를 넣고 수행 결과를 확인할 수 있습니다. 수행 결과에서 오류가 발생할 경우에는 소스 코드가 아닌 모델을 수정합니다.

 

<MDD로 자동 생성한 이체 한도 검증 소스 코드>


 

<이체 한도 검증 오퍼레이션의 거래 테스트 편집기>

 

LG CNS MDD에서는 간단한 오퍼레이션 호출 관계만 설계하여도 실행이 가능한 소스 코드가 생성됩니다. 그래서 설계 초기 단계부터 테스트를 진행하면서 조기에 결함을 발견하고, 완성도 높은 소프트웨어를 만들 수 있습니다. 또한, 한글로 작성하는 모델을 통해 고객 또는 개발 팀원 간의 의사소통을 원활하게 할 수 있고, 그림으로 표현된 모델은 영문으로 된 소스 코드보다 업무 파악이 용이하다는 장점이 있습니다. 뿐만 아니라, 모델로부터 각종 산출물을 자동으로 생성하는 기능으로 개발자들의 산출물 작성 부담을 줄일 수 있고, 고객에게는 소스 코드와 일치된 요구에 맞는 다양한 산출물을 제공할 수 있습니다.


<MDD로 자동 생성한 이체 한도 검증 컴포넌트 명세서>


지금까지 살펴본 인터넷 뱅킹 시 사용되는 이체 한도 검증 로직 개발 과정을 통해 LG CNS MDD의 주목할 한만 장점들을 만나보았습니다. 개발자들이 프로그래밍 언어 개발 방식이나 소프트웨어 하부에서 프레임워크가 처리해 주는 기술적인 부분에 대해 신경 쓰지 않고 비즈니스 업무 로직 설계에 자신의 역량을 집중할 수 있다는 것인데요. 소프트웨어 개발을 위해서는 프로그래밍 언어 습득이 당연시되던 상식이 깨진 것입니다. 좋은 아이디어가 있지만 기술적인 지식 부족으로 도전해보지 못한 분이라면 LG CNS MDD를 활용해 새로운 방식의 프로그래밍을 체험해보시기 바랍니다.


● LG CNS MDD에 대해 자세한 내용은 :  http://mdd.lgcns.com


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


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