1. 모델중심 개발을 통한 IT 프로젝트
혁싞 사례
최정일
책임연구원
LG CNS 정보기술 연구원
2. 소프트웨어 개발 방식의 혁싞
첫 번째 혁싞 두 번째 혁싞 Next
FORTRAN
COBOL
Binary Assembly
C
Java
소프트웨어 개발의 혁신은 추상화의 혁신이다
• 인간이 작업하기 쉽도록.
• 필요 없는 부분을 제거.
3. 모델 중심 소프트웨어 개발
1. 모델 – 차세대 혁싞 도구
• Code (Programming
language)
Syntax
+ Semantic
• Model (Modeling
language)
Notation
+ Semantic
4. 모델 중심 소프트웨어 개발
2. 소프트웨어 모델
• Model (UML Modeling language) • Code (Java Programming language)
package finast.insur.bk.cst.cstMgr;
import devonframework.persistent.autodao.LCommonDao;
public class CstMgr {
/**
* @logicalName 고객조회
* @version 1.0.0
* @description
* @param LData cstInqrCndt 고객조회조건
* @return LMultiData 고객Ent
*/
public LMultiData retrieveCst (LData cstInqrCndt) throws LException {
//return 파라미터 초기화
LMultiData cstEnt = new LMultiData();
LCommonDao commonDao;
commonDao = new LCommonDao("bk/cst/Cst/retrieveCst");
cstEnt = commonDao.executeQuery();
cstEntsetNullToInitialize (true);
return cstEnt;
}
}
5. 모델 중심 소프트웨어 개발
3. 모델 중심 소프트웨어 개발
• Code Centric • Model Driven
Code 모델
* MDD : Model Driven Development
6. 모델 중심 소프트웨어 개발
4. 일하는 방식의 변화
• 현재의 일하는 모습 • 모델 중심 개발 방식
공수 공수
구현/테스트 자동화
기간 짧음,
요구사항/논리설
설계품질
재 작업 발생 계 집중, 조기
검토부족
변경비용 과다 테스트 수행
요구분석 -> 설계 -> 구현 -> 테스트 요구분석 -> 설계 -> 구현 -> 테스트
7. 모델 중심 소프트웨어 개발
5. MDA (Model Driven Architecture)
모델중심 개발을 실현하기 위한
기술표준 및 기술기반의 총체.
[출처]IBM
8. 모델 중심 소프트웨어 개발
6. Metamodel Transformation
The MDA Guide v1.0.1 by OMG
9. 모델 중심 소프트웨어 개발
7. Metamodels by OMG
XML
MOF Meta
Metamodel XMI
(Language) Generation
Metamodels are
rules
MOF-compliant models
(or languages)
XMI files
Business Business
Common Web
UML Process Rules
Warehouse Services
Metamodel Metamodel Metamodel
Metamodel *
** **
Profiles are UML compliant, and
thus, also MOF-compliant
metamodels(or languages)
.NET
CORBA EJB EAI EDOC Scheduling
Profile
Profile Profile Profile Profile Profile
*
10. 모델 중심 소프트웨어 개발 사례
1. MDA 도구 개발 및 활용 – 주요 기능
PIM PSM 코드
public class OrderRegistBiz {
<<link>>
public OrderRegistBiz() {
<<link>>
super();
주문결제Bnd 쿠폰적용Bnd
(from CP_쿠폰)
}
상품상세조회Bnd /**
주문상세Bnd
* <pre>
상품주문Ctr * 주문 상세정보를 조회한다.
* </pre>
1 0..* */
1 1..* 0..* 1
public LData retrieveGoodsDetail(String goodsSerno) throws LException {
주문Ent 상품Ent
Connection conn = null;
회원Ent 주문항목Ent 회원보유쿠폰Ent
(from MM_회원관리) (from PC_상품구매)
(from CP_쿠폰) LData goods = null;
try {
: : : OrderRegis tBiz : OrderDao : : GoodsDao
conn = LConnectionManager.getConnection();
: 회원
createOrderForm.js p CreateOrderCmd OrderItemDao
: 회원 : 주문결제Bnd : 상품주문Ctr : 주문Ent : 주문항목Ent : 상품Ent
1. //주문 등록 요청 1. //주문 등록 요청 GoodsDao goodsDao = new GoodsDao( conn );
1.1. execute( )
1.1. 주문등록(주문 : 주문Ent) goods = goodsDao.retrieveGoodsDetail( goodsSerno );
1.1.1. 주문가능검사(상품일련번호 : Str ing, 주문수량 : Integer ) 1.1.1. regis tOrder(order : LData)
4.1.1.1. checkOrderPossible(goodsSerno : String, orderQty : Integer) } catch ( SQLException se ) {
1.1.2. 주문번호채번( )
4.1.1.2. getOrdNo( )
throw new LSysException( se );
} finally {
코드 생성
1.1.3. 주문생성(주문정보 : 주문Ent)
4.1.1.3. createOrder(order : LData)
LConnectionManager.closeConnection( conn );
모델 변환
1.1.4. 주문항목생성(주문항목 : 주문항목Ent) 4.1.1.4. createOrderItem(orderItem : LData) }
return goods;
}
}
모델 품질 검증 문서 생성
11. 모델 중심 소프트웨어 개발 사례
2. MDA 도구 개발 및 활용 – 구현 아키텍처
Model Code Model Document .properties
Transformer Generator validator Generator (text)
Model Model
*POI **Velocity Transformation
Parser Writer
Rules
(Excel)
RSA와 연동하는
Eclipse UML2 API Eclipse Plug-in
으로 구현
Code
RSA Template
(velocity)
Eclipse
*Apache POI - Java API for Microsoft Documents
**The Apache Velocity Project
12. 모델 중심 소프트웨어 개발 사례
3. MDA 도구 개발 및 활용 – RSA에 플러그인 설치
13. 모델중심 소프트웨어 개발 혁싞 사례
4. MDA 도구 개발 및 활용 – 기능 시연
모델링 모델 영향도
표준 검증 분석
변환규칙 코드
메타 (excel) 템플릿
모델 코드
PIM 변환
PSM
생성
다국어
모델 일본어
모델
변환 코드
산출물
생성
14. 모델 중심 개발 사례
5. 적용 효과 : 코드 생성률 분석
* 2005 년 이후 50여 개 프로젝트 적용.
물류 회계 평균 110%
(단위 : %)
120 100%
90%
99 98 96
100 94 80%
90 91
85 86 85 85
70%
코드 생성률
80
71 71 60%
68
50%
60
40%
38 30%
40 34
20%
20 10%
0%
0 5 10 15 20 25 30 35 40 45 50
0
제어문 개수
Command Business Process Entity 총계
Delegate Component Component Process Component Entity Component
Business Process Entity Process Component Entity Component
구분 Command 총계 구분
Delegate Component Component 코드 생성률 제어문 개수 코드 생성률 제어문 개수
물류 84.71 98.97 34.03 90.27 68.18 물류 34.03 4729 90.27 641
회계 86.18 93.5 70.67 95.92 85.4 회계 70.67 356 95.92 65
평균 85.01 97.69 37.95 90.97 70.89 총계 37.95 5085 90.97 706
* D (물류) 프로젝트통계
15. 모델중심 소프트웨어 개발 혁싞 사례
6. 적용 효과 : 모델, 문서 생성률
모델 생성률 분석 문서 생성률 분석
- 자동화율 68%, 총 123,825 모델요소 - 자동화율 76%, 총 3,573 페이지 자동 생성
자동 생성 - 대상 문서 : 컴포넌트 명세서/설계서 등 총 10종
32% 68% 구분 요구사항 분석 설계 계
수작업 253 510 392 1155
자동생성 0 1171 2402 3573
자동화율 0% 70% 86% 76%
123,825
모델링 자동화율 * B(국방) 프로젝트 통계
수작업 110,599
자동생성 59,132
모델 품질검증 자동화
57,641
- 요구사항/분석 모델에서 5,711 개의 결점 발견
13,226
1,491 - 총 7차에 걸친 모델 자동 검증으로 오류율 0 % 화
0 0
CIM PIM PSM 총계
16. 모델중심 소프트웨어 개발 혁싞 사례
7. Lesson Learned
메타 모델링은 MDA 기술의 핵심이다.
모델변환규칙 및 코드생성규칙이 효율적으로 구현이 되어야 한다.
업무규칙을 모델에 표현할 수 있으면 MDA 기술 적용의 효과는 극대화된다. (UML 2.0
에서 가능)
CIM(비즈니스모델, 요구사항모델)에서 PIM으로의 모델변환도 부분적으로 가능하다.
MDA 기술을 효율적으로 적용하기 위하여 관련 재사용 자산의 축적이 필요하다.
MDA 기술을 적용하기 위한 절차가 개발방법롞과 적절히 통합되어야 한다.
가장 중요한 것은 모델링을 수행하는 사람의 모델링 역량이다.