MDA에서 PIM과 PSM을 분리하는 설계 방식
MDA의 PIM과 PSM이 비즈니스 모델과 플랫폼 구현을 어떻게 분리하는지, 변환 표준과 개발 흐름을 정리한다.
2026-08-14 · 최초 발행 2025-05-23
비즈니스 모델과 구현 기술을 분리하는 MDA
MDA(Model Driven Architecture)는 OMG(Object Management Group)가 제안한 모델 중심 소프트웨어 개발 방법론이다. 핵심은 비즈니스 요구사항을 담은 모델과 플랫폼별 구현 모델을 분리하고, 둘 사이의 변환을 설계 자산으로 다루는 데 있다.
PIM(Platform Independent Model)은 플랫폼에 기대지 않는 추상 모델이고, PSM(Platform Specific Model)은 특정 기술 환경에 맞춘 구체 모델이다. 이 경계를 분명히 하면 기술 플랫폼이 바뀌어도 비즈니스 로직의 변경 범위를 줄일 수 있다.
PIM은 도메인과 요구사항을 표현한다
PIM은 특정 기술이나 플랫폼을 전제하지 않고 비즈니스 로직과 기능을 기술한다. UML 같은 플랫폼 중립 언어를 사용해 도메인에 집중하며, 구현 기술의 세부사항은 모델에서 제외한다. 목적은 비즈니스 요구사항을 순수하게 표현하고 플랫폼 변경의 영향을 최소화하는 것이다.
PIM에는 대체로 다음 내용이 담긴다.
- 도메인 모델: 비즈니스 엔티티와 그 관계
- 비즈니스 프로세스 모델: 업무 흐름과 규칙
- 서비스 모델: 시스템이 제공할 서비스와 인터페이스
이 모델은 재사용성과 이식성을 높이는 기반이 된다.
PSM은 대상 플랫폼의 설계로 구체화된다
PSM은 PIM을 Java EE, .NET, CORBA 등의 특정 플랫폼에 맞게 옮긴 모델이다. 구현 기술의 세부사항과 플랫폼 특성을 포함하며, 성능·보안 요구사항도 이 단계에서 반영한다. 실행 가능한 코드 생성의 기반이 되는 모델이기도 하다.
PSM에서는 다음과 같은 설계 요소를 다룬다.
- 컴포넌트 모델: 시스템 구성요소와 의존성
- 배포 모델: 물리적 아키텍처와 배포 전략
- 기술 인프라 모델: 사용할 기술과 설정
모델은 CIM에서 코드까지 이어진다
CIM(Computation Independent Model)은 비즈니스 요구사항을 표현하고, PIM은 이를 플랫폼과 분리된 구조로 모델링한다. 이후 대상 환경별 PSM을 만들고 각 플랫폼의 코드로 이어진다.
PIM에서 PSM으로 옮기는 방식은 자동 변환, 반자동 변환, 수동 변환으로 나뉜다. 자동 변환은 도구로 매핑을 수행하고, 반자동 변환은 기본 구조를 자동으로 만든 뒤 수동 보완한다. 수동 변환은 개발자가 PIM을 분석해 PSM을 직접 작성하는 방식이다.
변환 과정에서는 먼저 모델 요소와 매핑 규칙을 식별한다. 이어 변환 도구를 적용하고, 결과를 검증해 필요한 최적화를 수행한다.
변환 규칙과 모델 제약을 다루는 표준
Executable UML로 모델 단계에서 검증한다
Executable UML은 PIM 수준에서 실행 가능한 UML 모델을 제공한다. 행위 명세를 위한 액션 언어와 실행 가능한 다이어그램을 지원하므로, 구현 전에 검증과 시뮬레이션을 수행할 수 있다.
모델 단계에서 오류를 일찍 발견하고 요구사항과 설계 사이의 일관성을 유지하는 데 사용할 수 있다.
CWM은 데이터 변환의 공통 메타모델이다
CWM(Common Warehouse Metamodel)은 데이터 웨어하우징과 비즈니스 인텔리전스 영역을 위한 메타모델 표준이다. 데이터 변환과 통합에 공통 언어를 제공하며, 데이터 소스·대상 메타데이터, 변환 규칙과 매핑, 데이터 계보(Lineage) 정보를 다룬다.
데이터 통합, ETL 프로세스, 메타데이터 교환이 주요 적용 영역이다.
OCL은 모델의 규칙을 명시한다
OCL(Object Constraint Language)은 UML 모델에 제약조건과 비즈니스 규칙을 명세하는 형식 언어다. 부작용이 없는 선언적 언어이므로 객체 상태를 변경하지 않으며, 모델 제약을 정확하게 표현하는 데 쓴다.
클래스 불변 조건, 연산의 사전·사후 조건, 비즈니스 규칙을 정의할 때 활용할 수 있다.
context 계좌 inv 잔고제약:
self.잔고 >= 0
context 계좌::출금(금액: 정수) pre:
금액 > 0 and self.잔고 >= 금액
context 계좌::출금(금액: 정수) post:
self.잔고 = self.잔고@pre - 금액
QVT는 모델 간 매핑을 정의한다
QVT(Query View & Transformation)는 OMG의 모델 간 변환 언어로, PIM에서 PSM으로의 자동 변환을 지원한다. Relations는 선언적 변환을 정의하고, Core는 변환의 의미론적 기반을 제공하며, Operational Mappings는 명령형 변환을 정의한다.
모델 요소의 매핑과 변환 규칙을 명세할 수 있고, 양방향 변환도 지원한다.
개발 흐름에서 PIM과 PSM을 사용하는 방식
요구사항 분석에서는 비즈니스 요구사항을 수집·분석하고 CIM을 작성한다. 이때 도메인 용어집과 개념 모델을 함께 정의한다.
PIM 설계 단계에서는 UML 클래스 다이어그램으로 도메인 모델을 설계하고, OCL로 비즈니스 규칙을 명시한다. 서비스 인터페이스와 컴포넌트 설계도 이 단계에서 다룬다.
변환 단계에서는 QVT 변환 규칙을 정의하거나 변환 도구를 구성한다. 대상 플랫폼별 PSM을 생성한 뒤 결과를 검증한다. 이후 PSM에 플랫폼 특화 패턴과 인프라 요소를 통합하고 성능 및 보안을 최적화한다.
마지막으로 PSM에서 소스 코드를 생성하고 단위 테스트와 통합 테스트를 거쳐 배포·운영한다.
유연성을 얻는 대신 모델링 비용을 감수한다
PIM과 PSM을 분리하면 플랫폼 변경에 유연하게 대응할 수 있다. 비즈니스 로직과 기술 구현이 분리되어 관심사가 나뉘고, 모델 재사용성·문서화·지식 전달도 좋아진다. 일관된 설계 품질을 유지하는 데도 도움이 된다.
반면 초기 모델링에는 많은 시간과 노력이 필요하다. 복잡한 변환 규칙을 정의하기 어렵고 자동 변환 도구에도 한계가 있다. 모든 프로젝트에 적합한 접근은 아니며, 팀에는 모델링 역량이 필요하다.
금융·통신·제조 영역의 적용 맥락
금융 산업에서는 복잡한 금융 상품과 규제 요구사항을 PIM으로 모델링하고, 모바일·웹·ATM 등 채널에 맞는 PSM을 생성할 수 있다. 유럽 주요 은행의 핵심 뱅킹 시스템 현대화 프로젝트가 사례로 제시된다.
통신 산업에서는 서비스 카탈로그와 프로비저닝 프로세스를 PIM으로 정의한 뒤, 네트워크 장비와 플랫폼별 PSM을 생성한다. 글로벌 통신사의 OSS/BSS 시스템 통합이 사례다.
제조 산업에서는 제품 라이프사이클 관리를 위한 PIM을 구축하고, 생산 시스템 및 ERP 연동을 위한 PSM을 설계한다. 자동차 제조사의 글로벌 생산 관리 시스템이 해당 사례로 언급된다.
모델 중심 개발이 확장되는 방향
PSM 수준에서 컨테이너화와 마이크로서비스 아키텍처를 지원하는 클라우드 네이티브 아키텍처 통합이 이어지고 있다. 기계학습을 활용한 AI 기반 변환 엔진, 저코드·노코드 플랫폼과의 연계, 분산 팀을 위한 실시간 협업 모델링도 같은 흐름에 놓여 있다.
물리적 시스템과 디지털 모델을 동기화하는 디지털 트윈 연계 역시 PIM과 PSM의 활용 범위를 넓히는 방향이다. MDA는 레거시 시스템 현대화와 다중 플랫폼 지원에서 비즈니스 모델과 구현 기술을 분리하는 접근으로 활용할 수 있다.