MDE를 활용한 사례 중, Lockheed Martin의 항공 소프트웨어 사례를 분석해보면, F-16을 개발하기 위해서 OMG의 MDA를 활용하여, 여러 플랫폼에 사용이 가능하고 생산성과 품질을 높이는 소프트웨어 개발을 하였다. 이때, 사용한 툴은 Kennedy Carter’s iCCG, UML, MDA(OMG)를 사용했다. F-16은 다음과 같은 소프트 웨어 아키텍처를 가지고 있었다.[1]

이때, Application Software가 전체 소프트웨어의 80~90%를 차지하고 있었고, 아래 Hardware, Software Execution Platform, Application Software Interface는 자주 변경되는 부분이였다. 따라서, 하위의 Application Software Interface의 변경에도 Application Software는 변경이 없는 소프트 웨어 개발을 원하였다. 기존에 객체지향 방법론을 이용한 CASE 도구를 사용하다가, Kennedy Carter’s iUML tool을 적용하였다. Carter’s iUML tool을 통해 UML 모델을 실행할 수 있는 UML action language를 사용할 수 있었고, 하드코딩을 통한 테스트에서 UML 모델을 통해 동작 상태를 확인 할 수 있었다[2].
사용자 요구사항(Requirements Definetions)을 모델링(eXecutable UML Modeling)하고, 하드웨어 관련 사항(Platform Specfic Mapping)을 추가 하여 개발하였다. 실행가능한 xUML의 시뮬레이션과 디버깅툴을 이용하여 초기에 테스팅을 수행하고 시스템의 상세화를 통해서 어플리케이션이 수행하는 바를 정의하여 어플리케이션 개발하였다.[3]

MDE의 PIM에서 PSM, 소스코드 변환 단계와 각 단계의 컴포넌트는 아래와 같다. Level1은 사용자 요구 수집 단계이며, Level2는 플랫폼에 연관이 없는 메타모델 단계(PIM), Level3는 플랫폼에 종속된 모델 단계(PSM)이다.[4]

이 과정을 통해, Lockheed Martin사는 어플리케이션 개발 시간이 20%가량 감소되고, 다중 플랫폼에서 사용이 가능한 소프트웨어를 개발할 수 있었다. UML을 사용하는 해당 분야의 도메인 전문가는 하드웨어랑 소프트웨어를 분리하여 작업할 수 있게 되었다. 하드웨어와 소프트웨어 플랫폼이 항공기 어플리케이션에 영향을 주지 않고 업그레이드가 가능해졌다. 또한, 코드 자동생산에 의해 코드 수작업이 감소되어 생산성 향상을 이뤘다[5].
다음 카카오뱅크의 시스템의 기반이 된 국내의 전북은행의 은행 계정계 시스템을 분석하면, LG CNS는 계정계 시스템 전체 업무(분석, 설계, 개발, 통합테스트, 이행)를 JAVA언어 기반의 MDD 방법론으로 구축하였다. 기존 은행 시스템은 주로 COBOL이나 C언어로 구축되어 있는 경우가 많기 때문에, 새로운 언어로 구축하려면 큰 리스크가 존재하였다. 또한, 해당 프로젝트에서 JAVA를 경험한 인력은 약 15%에 불과해 자체 개발도구(DevOn MDD)를 활용한 FULL MDE 방식을 적용하였다. 프로그램 코드와 산출물 문서는 수작업으로 작성하지 않고 자체 개발한 MDE도구를 통해 모델로부터 자동 생성하였다. 또한, 영문 텍스트 기반의 프로그램 코드 보다는 한글로 작성된 그래픽 모델 중심으로 프로젝트를 진행하였다. 자체개발한 표준화된 논리표현식을 사용하여 개발언어와 플랫폼에 대한 종속성을 줄였다.[6]

이 과정을 통해, 기존 프로젝트 대비 6.6% 생산성 증대 효과를 가져왔으며, 모델과 논리표현식을 활용한 개발로 초급 개발자도 중급 개발자와 비슷한 정도의 생산성의 확보하였다. 또한, 개발 경력 의존도가 높은 ISD(Information System Development) 프로젝트에서 개발 경력 의존도를 낮추었다. 은행 프로젝트를 분석부터 이행까지 MDD를 이용하여 수행하였으며, 은행 업무 프로세스에 대한 지식이 축적되었다. 이러한 지식을 활용해, LG CNS는 추후 카카오뱅크와 토스뱅크의 시스템 구축을 맡았다.[7]
가. 지원도구
DevOn MDD는 모델중심개발 (Model-Driven Development)을 지원하기 위해 소스코드를 자동으로 생성하고, 즉각적인 품질 검사를 수행할 수 있으며, 다양한 산출물을 실시간으로 제공하는 자동화 도구이다. 또한, 개발 생산성 향상을 위한 다양한 편의 기능(시퀀스 자동생성, 논리편집기, 개발도구연계 등)을 제공한다. 다음과 같이 모델을 이용하여 100% 실행 가능한 코드를 자동 생성한다.[8]

Reverse Engineering은 DevOn Reverse도구를 이용하여 C,COBOL 소스 코드로 부터 JAVA 산출물과 업무 모델을 자동 생성한다. 그리고 Forward Engineering은 DevOn MDA 도구를 이용하여 모델로 부터 100% 실행 가능한 JAVA 코드를 생성한다. 아래와 같은 도구 구성을 가진다.[9]

ProcessBuilderCL은 MDD기반의 통합개발환경인 ProcessBuilder CL은 웹 기반의 개발환경을 제공하여 누구나 언제 어디서든 쉽게 프로그램 개발이 가능할 뿐만 아니라 개발과 동시에 WAS로 배포되어 바로 실행이 가능한 실시간 엔터프라이즈(RTE)를 구현하는 시스템이다.[10]

'Computer Science > Software Engineering' 카테고리의 다른 글
| TDD(Test-Driven-Development) 방법론이란? (0) | 2022.05.04 | 
|---|---|
| ISO/IEC 9126-1 - Software Product Quality 표준 (1) | 2021.12.26 | 
| Cunit Test Code 작성하기 (0) | 2021.12.26 | 
| C Unit Test Automation(Framework) - TDD (1) | 2021.12.26 | 
| CMMI와 유사한 국내외 평가모델-SP인증 (1) | 2021.12.26 |