[MDD] 모델 기반 프로그래밍이란?

junghan·2023년 10월 3일
0

MDD

목록 보기
1/6
post-thumbnail

저는 지금까지 개발을 해오면서 선배님, 멘토님들께 많은 질문과 피드백을 받아왔습니다. 그 중 "이 프로그램을 개발할 때 왜 이 언어를 사용했어?" 라는 질문은 꽤 높은 비중을 차지했었습니다. 다양한 프로그래밍 언어가 있기 때문에 각 언어가 제공하는 특징과 장단점을 고려해야 합니다. 이렇게 현재는 수많은 프로그램이 탄생되기 위해 다양한 프로그래밍 언어가 사용됩니다.

모델에 주목하는 이유

프로그래밍 언어의 진화

기계 지향적인 언어인 Binary부터 시작해 Assembly로 또 한번의 혁신을 맞이하였습니다. Assembly는 기존의 Binary 보다 인간이 알아보기 쉬워졌지만 그래도 역시 기계적인 지식을 알고 있어야 했습니다.

시간이 지나면서 Fortan, Cobol, C, Java 와 같은 사람 언어에 가까운 고수준 프로그래밍 언어들이 탄생함으로서 프로그래밍 언어는 보다 인간 지향적이고, 인간이 더 잘 알아볼 수 있도록 진화했습니다.

하지만 현대의 소프트웨어는 더 많은 기능과 다양한 분야로의 확장을 원하게 되면서 복잡한 구조를 가지게 되었습니다.

JAVA를 예로 들면, EJB, J2EE, 서블릿, 각종 미들웨어 ,디자인 패턴 을 더불어 프레임워크와 개발표준까지 알아야 될 것들이 많아지며 러닝커브가 높아지게 되었습니다.

이러한 혁신에 대한 니즈를 바탕으로 우리는 모델에 집중하게 됩니다.


소스코드 vs 모델

왼쪽은 Java 소스 코드입니다. 오른쪽 모델은 모델 기반 개발 방식으로 개발을 한다면 작성하게 되는 것입니다.

왼쪽의 자바 소스 코드는 오른쪽 모델을 통해 자동으로 생성된 자바 소스 코드입니다.

어느 쪽이 커뮤니케이션 하기 더 편할까요 ?

오른쪽의 모델이 커뮤니케이션 하기가 더 쉽습니다.
이유는 그림과 한글로 되어 있는 모델이 한눈에 보기에도 직관적이기 때문입니다.


소스코드 vs 논리코드

위와 같이 명확한 변수명과 수식을 통해 사람을 이해시키는 코드를 생성할 수 있습니다.

MDD는 기계 뿐만 아니라 사람도 이해시킬 수 있는 프로그램


필요 역량의 변화

Java 소스 코드를 가지고도 인간과 커뮤니케이션 하는 것이 가능합니다. 단, 상대방이 Java 언어에 대한 지식이 있어야합니다.

모델도 모델링 지식이 필요하지만 Java 언어에 대한 지식 습득보다 모델에 대한 지식 습득이 쉬우며 모델을 통해 인간만이 할 수 있는 가치 있는 일인 업무의 분석과 설계에 집중을 할 수 있습니다.

모델은 가장 추상화 된 프로그래밍 수단이며, 이것이 바로 우리가 모델에 주목하는 이유입니다.


MDD의 장점

  1. 다양한 언어에 구애받지 않고 프로그래밍 가능
  2. 언어를 모르는 기획자와 개발자의 통합가능
  3. 소스코드를 자동으로 코딩 표준에 맞춤.
  4. 코드 수정 시, 단순화된 작업과 자동화에 의한 테스트를 통해 시간과 노력 감소
  1. 산출물이 개발에 맞춰 100% 현행 동기화
  1. 의사소통 향상


모델 기반 개발 방식

코드 중심 개발 VS 모델 중심 개발

코드 중심의 소프트웨어 개발 방식에서는 분석과 설계 과정의 결과물은 주로 코딩을 지원하기 위한 도구로 여겨집니다. 이 방식에서는 소프트웨어를 이해하거나 수정하는 작업도 주로 소스 코드를 기반으로 수행됩니다.
그러나 이로 인해 개발이 진행되는 과정에서 분석 및 설계 단계에서 생성된 문서와 실제 코드 사이에 간격이 발생할 수 있습니다. 이로 인해 설계 단계의 산출물들은 종종 불완전하거나 부분적으로 취급되곤 합니다.

한편, 모델 중심의 개발 방식은 소프트웨어를 정형화된 모델로 분석하고 설계하는 방식입니다. 여기서 소스 코드를 포함한 모든 산출물은 모델에서 파생됩니다. 모델을 효과적으로 설계한다면, 표준화된 일관된 품질의 소스 코드를 생성하는 것이 가능합니다.
또한, 각종 설계 문서 및 산출물도 모델을 기반으로 다시 생성할 수 있습니다. 이 모델 기반 방식에서는 모델로부터 생성된 모든 산출물이 소스 코드와 완벽하게 일치하여 의미 있는 가치를 제공합니다.


MDD (Model Driven Development) 및 MDA (Model Driven Architecture) 설명

MDD (Model Driven Development) / 모델 중심 개발

모델 기반 개발 방식은 소프트웨어 개발에 있어 모델을 중심으로 분석, 설계, 구현하는 방법론입니다. 이러한 방식은 품질 검증 측면에서도 많은 이점을 제공합니다.

예를 들어, 프로젝트에서 A 컴포넌트가 C 컴포넌트를 호출하지 않아야 한다는 개발 표준을 정한다고 가정해보겠습니다.

  • 코드 기반 개발 시: 이 표준을 준수하기 위해 코드 인스펙션을 통해 소스 코드를 검사해야 합니다. 하지만 이 작업은 소스 코드의 물리적인 형태로 제어하기 어려울 수 있으며, 검사 결과에 따라 추가 개발 및 테스트 작업이 필요할 수 있습니다.

  • 모델 기반 개발 (MDD) 시: MDD에서는 정해진 규칙을 모델에 반영하고, 모델 검증 단계에서 미리 제어할 수 있습니다. 이로 인해 처음부터 잘못된 소스 코드가 생성되지 않도록 품질 관리를 효과적으로 할 수 있습니다.

MDA (Model Driven Architecture)

MDA는 MDD 방식으로 개발을 진행하는 데 필요한 기술과 프로세스의 총체를 나타냅니다.

MDA는 모델을 통해 소프트웨어 설계를 시작하고, 이 모델을 상세 설계 모델과 소스 코드로 변환하여 프로그램을 자동으로 생성하는 표준을 정의합니다. 이를 바탕으로 실제 개발하는 방식이 MDD입니다.

MDA는 모델을 CIM (Computational Independent Model), PIM (Platform Independent Model), PSM (Platform Specific Model) 등의 목적별로 분류하고, 이들 간의 매핑 관계를 통해 소스 코드가 생성되기까지의 아키텍처를 정의합니다.

한편, 모델 변환을 위한 아키텍처를 LG CNS에서 기술적으로 구현한 것을 DevOn MDA로 알려져 있습니다. 이를 통해 모델 기반 개발을 실제로 구현할 수 있습니다.



출처:
https://wikidocs.net/130144
https://www.youtube.com/watch?v=fY5jaSpT0Gc

profile
42seoul, blockchain, web 3.0

0개의 댓글