MDA와 UML로 설계 모델을 구현 산출물로 연결하는 방법

MDA의 CIM·PIM·PSM 계층과 UML 프로파일, MOF·XMI·QVT를 활용해 모델 변환과 코드 생성 파이프라인을 설계하는 방법

2026-08-14 · 최초 발행 2025-10-14

MDA의 변환 구조를 UML로 구체화하기

MDA(Model Driven Architecture)는 모델을 일급 산출물로 두고, 모델 변환을 통해 구현물을 만들어 가는 아키텍처 프레임워크다. UML(Unified Modeling Language)은 시스템의 구조와 행위를 표현하는 표준 표기법이다. 둘은 경쟁하는 개념이 아니라, MDA의 계층별 모델을 UML로 작성하고 플랫폼별 의미를 덧붙이는 관계에 가깝다.

MDA는 OMG가 제안한 접근으로, CIM에서 PIM을 거쳐 PSM으로 정제하는 모델 계층과 변환 흐름을 중심에 둔다. MOF 기반 메타모델, XMI 교환 형식, QVT·ATL 변환 언어를 활용하며, 플랫폼 독립성과 자동화 가능한 변환 파이프라인을 지향한다.

UML은 클래스, 컴포넌트, 시퀀스, 상태, 활동 다이어그램과 OCL 제약식을 제공한다. 프로파일, 스테레오타입, 태그를 이용해 도메인별 의미를 확장할 수도 있다. UML이 MDA에 반드시 필요한 것은 아니지만, 도구와 표준 생태계에서는 MDA 산출물을 표현하는 기본 선택지로 사용된다.

PSM 단계에서는 UML 프로파일로 JPA, REST, MARTE 같은 기술 스택의 의미를 모델에 부여하고, 이를 코드 생성과 연결한다.

계층을 나누고 변환 규칙을 관리하는 방식

CIM은 업무 맥락과 프로세스를 다루고, PIM은 플랫폼에 묶이지 않은 구조와 행위를 표현하며, PSM은 특정 플랫폼의 세부 사항을 담는다. 이 흐름에서는 각 모델 사이의 추적성을 명시하고 자동 변환 규칙을 관리해야 한다.

변환 엔진은 QVT·ATL 등의 규칙과 MOF 메타모델을 기반으로 구성할 수 있다. OCL 검증을 변환 과정에 결합하고, 모델과 코드가 다시 만나는 라운드트립 엔지니어링도 함께 고려한다.

UML 프로파일은 기술 스택을 모델에 녹여내는 역할을 한다. «Entity», «Repository», «RestEndpoint», «RTComponent» 같은 스테레오타입과 태그값으로 구현 의미를 지정하고, 도메인 규칙은 OCL 제약으로 명세해 자동 검증에 연결할 수 있다.

MOF의 M3/M2/M1 메타모델 스택은 모델 요소를 일관되게 정의하는 기반이다. XMI는 모델 교환과 도구 상호운용성을 돕고, QVT·ATL 같은 표준 API·DSL은 변환 규칙의 이식성을 높인다. 이때 도구별 확장 지점을 어떻게 관리할지도 정해야 한다.

모델을 CI와 변경관리 안에 넣기

모델 기반 개발은 설계 도구에서 끝나지 않는다. 모델 리포지토리, 버전관리, 모델 검증과 규칙 준수를 위한 품질 게이트, 코드 생성, 테스트·배포 자동화를 하나의 흐름으로 묶어야 한다. CI 파이프라인에도 모델 검증과 생성 단계를 포함한다.

요구사항에서 CIM, PIM, PSM을 거쳐 코드와 테스트까지 이어지는 추적성을 관리하면 변경 영향 분석이 수월해진다. 모델과 코드의 동기화에서는 모델 선도 또는 코드 선도 정책을 먼저 정하고, 생성 코드 보호 영역과 수동 수정 영역을 분리하는 패턴을 적용한다. 모델 리뷰, 설계 결재, 변경관리도 운영 프로세스에 포함돼야 한다.

기술 환경에 따라 달라지는 생성 대상

엔터프라이즈 백엔드에서는 요구사항, 도메인 용어집, 비즈니스 규칙을 입력으로 삼는다. PIM에서 클래스·시퀀스·상태를 모델링한 뒤, PSM에서 UML 프로파일로 JPA·REST 어노테이션의 의미를 지정한다. QVT·ATL 규칙은 엔티티, 리포지토리, 컨트롤러 코드 생성으로 이어질 수 있다. 산출물은 Spring Boot 코드, OpenAPI 스펙, DB DDL, 테스트 스텁이다. OCL 제약을 위반하면 모델을 수정하고, 스키마 충돌이 생기면 프로파일 태그를 다시 설정한다.

임베디드·실시간 시스템에서는 PIM에서 상태와 타이밍 모델을 정의하고, PSM에서 MARTE 프로파일로 실행 스케줄과 자원 제약을 부여한다. 이후 C/C++ 코드와 RTOS 설정을 생성하며, 타이밍 검증 및 WCET 분석 결과를 모델에 되돌리는 피드백 루프를 운영한다.

마이크로서비스와 플랫폼 엔지니어링에서는 서비스 경계와 계약을 PIM에 명세한다. PSM에는 «K8sDeployment», «Telemetry» 같은 배포·관측 태그를 추가하고, Helm/Kustomize, OpenAPI, gRPC proto, IaC(Terraform)를 생성한다. 서비스 간 계약이 바뀌면 추적성을 바탕으로 영향을 분석한다.

데이터·분석 파이프라인은 PIM 클래스 모델에 스키마 레지스트리·카탈로그 프로파일을 적용해 PSM을 구성할 수 있다. 여기서 DDL/Schema, CDC 파이프라인 설정, 데이터 품질 규칙을 생성하고, 데이터 계보(Lineage)와 품질 지표를 자동 산출한다.

변환·검증·배포가 연결되는 흐름

QVT/ATL 변환 규칙코드/스키마/스펙 생성실패실패요구사항/도메인 용어집CIM: UML유스케이스/액티비티PIM: UML 클래스/상태 + OCL제약PSM: UML +프로파일(JPA/REST/MARTE등)소스코드/DDL/OpenAPI/IaC검증유효성 검사모델 수정/제약 재정의CI 빌드/테스트/배포

UML만 사용할 때와 변환 체계를 갖출 때의 차이

관점 UML 단독 MDA+UML
성능(생산성) 문서화 중심, 부분 자동화 한계 변환/생성 자동화로 반복 작업 대폭 절감
확장성 프로젝트마다 표기 변형 발생 프로파일/메타모델로 조직 표준 확장
일관성 리뷰 의존, 사람 중심 검증 OCL/규칙 기반 정적 검증과 추적성
안정성 코드-모델 불일치 위험 상존 라운드트립/파이프라인으로 동기화 체계화
운영 편의 개별 도구·산출물 분산 관리 리포지토리/CI 통합 운영 용이

기대할 수 있는 변화와 적용 조건

개발 리드타임은 1530% 단축되고, 반복적 보일러플레이트는 4070% 자동화될 수 있다. 요구-코드 추적성 커버리지는 90% 이상 달성하고 변경 영향 분석 시간은 50% 절감하는 것을 목표로 삼을 수 있다.

설계 결함을 앞단에서 찾아 결함률을 20~40% 낮추고 릴리스 안정성을 높이는 효과도 기대할 수 있다. 신규 플랫폼으로 옮길 때는 PIM 재사용률 60% 이상을 확보할 수 있으며, 이는 도메인 복잡도에 따라 변동한다. 수치 범위는 조직 성숙도와 도구 자동화 수준에 따라 변동하므로 벤치마킹 및 파일럿 검증이 필요하다.

조직 표준과 생성 코드의 경계를 먼저 정한다

도입 초기에는 조직 표준 프로파일과 메타모델 관리 체계를 수립한다. 모델 리포지토리와 버전관리의 브랜치 전략을 마련하고, OCL과 스타일 규칙을 품질 게이트로 적용한다.

QVT·ATL 변환 규칙과 코드 생성 템플릿은 테스트 자동화와 CI에 연결한다. 생성 영역을 보호하고 수동 확장 지점을 분리하는 라운드트립 전략을 확정한 뒤, 문서와 교육 패키지를 운영한다. 파일럿 프로젝트에서 ROI와 품질 지표를 수집하면서 적용 범위를 점진적으로 넓힌다.

이 방식에는 학습 곡선과 초기 투자 비용이 따른다. 도구 의존성과 벤더 락인 가능성, 표준과 구현 사이의 간극도 남는다. 모델링이 과도하면 낭비가 될 수 있으므로 경량 적용 범위를 설계해야 하며, 생성 템플릿 유지보수와 레거시 통합의 복잡도도 감안해야 한다. 표준과 도구의 버전 호환성 이슈가 생길 수 있으므로 최신 정보 확인이 필요하다.

적용 범위를 넓혀 가는 순서

스코프와 성공 지표를 정해 자동화 대상과 품질 기준을 명확히 한다. 이어 조직 프로파일과 메타모델을 설계하고 레퍼런스 아키텍처를 마련한다.

PIM 표준 다이어그램 세트와 명명 규칙을 정한 뒤, OCL 규칙 및 모델 검증 파이프라인을 구축한다. QVT·ATL 변환 규칙과 코드 생성 템플릿을 개발하고, CI에 모델 빌드·생성·테스트를 통합한다. 라운드트립 가이드와 변경관리 절차를 운영하면서 메트릭 기반 개선 사이클을 이어 간다.

MDAUML모델 중심 개발코드 생성소프트웨어 아키텍처