SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
모델중심 개발을 통한 IT 프로젝트
혁싞 사례
최정일
책임연구원
LG CNS 정보기술 연구원
소프트웨어 개발 방식의 혁싞


           첫 번째 혁싞       두 번째 혁싞          Next


                          FORTRAN



                           COBOL
  Binary     Assembly

                             C



                            Java


소프트웨어 개발의 혁신은 추상화의 혁신이다

                        • 인간이 작업하기 쉽도록.
                        • 필요 없는 부분을 제거.
모델 중심 소프트웨어 개발
1. 모델 – 차세대 혁싞 도구


    • Code (Programming
    language)

        Syntax
                   +      Semantic




    • Model (Modeling
    language)

       Notation
                   +      Semantic
모델 중심 소프트웨어 개발
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;
                                      }
                                  }
모델 중심 소프트웨어 개발
3. 모델 중심 소프트웨어 개발

    • Code Centric   • Model Driven




          Code              모델




                     * MDD : Model Driven Development
모델 중심 소프트웨어 개발
4. 일하는 방식의 변화


        • 현재의 일하는 모습                • 모델 중심 개발 방식

공수                             공수

                                                 구현/테스트 자동화
     기간 짧음,
                                     요구사항/논리설
     설계품질
                  재 작업 발생             계 집중, 조기
     검토부족
                  변경비용 과다             테스트 수행

     요구분석 -> 설계 -> 구현 -> 테스트        요구분석 -> 설계 -> 구현 -> 테스트
모델 중심 소프트웨어 개발
5. MDA (Model Driven Architecture)




    모델중심 개발을 실현하기 위한
    기술표준 및 기술기반의 총체.



                                     [출처]IBM
모델 중심 소프트웨어 개발
6. Metamodel Transformation




                              The MDA Guide v1.0.1 by OMG
모델 중심 소프트웨어 개발
    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
                                                                                                    *
모델 중심 소프트웨어 개발 사례
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;
                                                                                                                                                                                                                                                              }
                                                                                                                                                                                                                                                          }




    모델 품질 검증                                                                                                     문서 생성
모델 중심 소프트웨어 개발 사례
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
모델 중심 소프트웨어 개발 사례
3. MDA 도구 개발 및 활용 – RSA에 플러그인 설치
모델중심 소프트웨어 개발 혁싞 사례
4. MDA 도구 개발 및 활용 – 기능 시연


  모델링     모델         영향도
   표준     검증         분석
                                     변환규칙              코드
                           메타         (excel)         템플릿


                                모델                    코드
               PIM              변환
                                                PSM
                                                      생성

                            다국어
                            모델                  일본어
                                                 모델
                            변환                        코드
               산출물
               생성
모델 중심 개발 사례
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 (물류) 프로젝트통계
모델중심 소프트웨어 개발 혁싞 사례
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          총계
모델중심 소프트웨어 개발 혁싞 사례
7. Lesson Learned

    메타 모델링은 MDA 기술의 핵심이다.

    모델변환규칙 및 코드생성규칙이 효율적으로 구현이 되어야 한다.

    업무규칙을 모델에 표현할 수 있으면 MDA 기술 적용의 효과는 극대화된다. (UML 2.0
     에서 가능)

    CIM(비즈니스모델, 요구사항모델)에서 PIM으로의 모델변환도 부분적으로 가능하다.

    MDA 기술을 효율적으로 적용하기 위하여 관련 재사용 자산의 축적이 필요하다.

    MDA 기술을 적용하기 위한 절차가 개발방법롞과 적절히 통합되어야 한다.

    가장 중요한 것은 모델링을 수행하는 사람의 모델링 역량이다.
www.ibm/software/rational
Talk IT_ IBM_최정일_110824

Weitere ähnliche Inhalte

Andere mochten auch

소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵
중선 곽
 

Andere mochten auch (7)

사람의 마음을 잡는 법 - 요점 체크리스트
사람의 마음을 잡는 법 - 요점 체크리스트사람의 마음을 잡는 법 - 요점 체크리스트
사람의 마음을 잡는 법 - 요점 체크리스트
 
Ipad marketing
Ipad marketingIpad marketing
Ipad marketing
 
테크회사 이직 준비 노트
테크회사 이직 준비 노트테크회사 이직 준비 노트
테크회사 이직 준비 노트
 
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
 
소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵
 
[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정
 
소프트웨어 개발 프로세스 개선
소프트웨어 개발 프로세스 개선소프트웨어 개발 프로세스 개선
소프트웨어 개발 프로세스 개선
 

Ähnlich wie Talk IT_ IBM_최정일_110824

C#강좌
C#강좌C#강좌
C#강좌
e12g
 
HTML5 스펙 소개
HTML5 스펙 소개HTML5 스펙 소개
HTML5 스펙 소개
Toby Yun
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드
중선 곽
 
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
Chanjin Park
 

Ähnlich wie Talk IT_ IBM_최정일_110824 (20)

J2 Ee
J2 EeJ2 Ee
J2 Ee
 
C#강좌
C#강좌C#강좌
C#강좌
 
-
--
-
 
-
--
-
 
HTML5 스펙 소개
HTML5 스펙 소개HTML5 스펙 소개
HTML5 스펙 소개
 
Metaworks3 Framework workbook 2015
Metaworks3 Framework workbook 2015Metaworks3 Framework workbook 2015
Metaworks3 Framework workbook 2015
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드
 
Application framework 정의및비교(김일영)_20110609
Application framework 정의및비교(김일영)_20110609Application framework 정의및비교(김일영)_20110609
Application framework 정의및비교(김일영)_20110609
 
ecdevday4
ecdevday4ecdevday4
ecdevday4
 
m-Station Channel Xpander5 020325
m-Station Channel Xpander5 020325m-Station Channel Xpander5 020325
m-Station Channel Xpander5 020325
 
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
 
파이썬 피피티 초보 테란만
파이썬 피피티 초보 테란만파이썬 피피티 초보 테란만
파이썬 피피티 초보 테란만
 
Javascript 생태계
Javascript 생태계Javascript 생태계
Javascript 생태계
 
웹표준 프레임워크 메타웍스3의 적용 사례와 생산성
웹표준 프레임워크   메타웍스3의 적용 사례와 생산성웹표준 프레임워크   메타웍스3의 적용 사례와 생산성
웹표준 프레임워크 메타웍스3의 적용 사례와 생산성
 
웹표준의 이해
웹표준의 이해웹표준의 이해
웹표준의 이해
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨
 
ifcpp build guide
ifcpp build guideifcpp build guide
ifcpp build guide
 
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토
 

Mehr von Cana Ko

북Tv365_쓰고 상상하고 실행하라_문준호_111207
북Tv365_쓰고 상상하고 실행하라_문준호_111207북Tv365_쓰고 상상하고 실행하라_문준호_111207
북Tv365_쓰고 상상하고 실행하라_문준호_111207
Cana Ko
 
북Tv365 나는 영화가 좋다 이창세_111130
북Tv365 나는 영화가 좋다 이창세_111130북Tv365 나는 영화가 좋다 이창세_111130
북Tv365 나는 영화가 좋다 이창세_111130
Cana Ko
 
북Tv365_10년의 기다림 김창수_111123
북Tv365_10년의 기다림 김창수_111123북Tv365_10년의 기다림 김창수_111123
북Tv365_10년의 기다림 김창수_111123
Cana Ko
 
북Tv365 서른 life 사전 이재은_111116
북Tv365 서른 life 사전 이재은_111116북Tv365 서른 life 사전 이재은_111116
북Tv365 서른 life 사전 이재은_111116
Cana Ko
 
북Tv365_책에 미친 청춘_김애리_111102
북Tv365_책에 미친 청춘_김애리_111102북Tv365_책에 미친 청춘_김애리_111102
북Tv365_책에 미친 청춘_김애리_111102
Cana Ko
 
북Tv365 책에 미친 청춘 김애리_111102
북Tv365 책에 미친 청춘 김애리_111102북Tv365 책에 미친 청춘 김애리_111102
북Tv365 책에 미친 청춘 김애리_111102
Cana Ko
 
북Tv365 책에 미친 청춘 김애리_111102
북Tv365 책에 미친 청춘 김애리_111102북Tv365 책에 미친 청춘 김애리_111102
북Tv365 책에 미친 청춘 김애리_111102
Cana Ko
 
Talk IT_Oracle AP_이진호 부장_111102
Talk IT_Oracle AP_이진호 부장_111102 Talk IT_Oracle AP_이진호 부장_111102
Talk IT_Oracle AP_이진호 부장_111102
Cana Ko
 
Talk IT_CA_정성엽_111028
Talk IT_CA_정성엽_111028Talk IT_CA_정성엽_111028
Talk IT_CA_정성엽_111028
Cana Ko
 
북포럼 227회 재즈스타일 전진용 111026
북포럼 227회 재즈스타일 전진용 111026북포럼 227회 재즈스타일 전진용 111026
북포럼 227회 재즈스타일 전진용 111026
Cana Ko
 
Talk IT_ IBM_나병준_111025_Session2
Talk IT_ IBM_나병준_111025_Session2Talk IT_ IBM_나병준_111025_Session2
Talk IT_ IBM_나병준_111025_Session2
Cana Ko
 
111025 session 1
111025 session 1111025 session 1
111025 session 1
Cana Ko
 
Talk IT_ Oracle_정봉기_111025
Talk IT_ Oracle_정봉기_111025Talk IT_ Oracle_정봉기_111025
Talk IT_ Oracle_정봉기_111025
Cana Ko
 
북포럼_화난 원숭이들은 모두 어디로 갔을까_ 송인혁_ 111019
북포럼_화난 원숭이들은 모두 어디로 갔을까_ 송인혁_ 111019북포럼_화난 원숭이들은 모두 어디로 갔을까_ 송인혁_ 111019
북포럼_화난 원숭이들은 모두 어디로 갔을까_ 송인혁_ 111019
Cana Ko
 
북포럼_고민이 없다면 20대가 아니다_고영혁_111012
북포럼_고민이 없다면 20대가 아니다_고영혁_111012북포럼_고민이 없다면 20대가 아니다_고영혁_111012
북포럼_고민이 없다면 20대가 아니다_고영혁_111012
Cana Ko
 
Talk IT_ Oracle_최대진_111012
Talk IT_ Oracle_최대진_111012Talk IT_ Oracle_최대진_111012
Talk IT_ Oracle_최대진_111012
Cana Ko
 
Talk IT_ Oracle_전태준_111012
Talk IT_ Oracle_전태준_111012Talk IT_ Oracle_전태준_111012
Talk IT_ Oracle_전태준_111012
Cana Ko
 
Talk IT_ Agilent_최석근_111007
Talk IT_ Agilent_최석근_111007Talk IT_ Agilent_최석근_111007
Talk IT_ Agilent_최석근_111007
Cana Ko
 
북포럼_1초에 가슴을 울려라_ 최병광_111005
북포럼_1초에 가슴을 울려라_ 최병광_111005북포럼_1초에 가슴을 울려라_ 최병광_111005
북포럼_1초에 가슴을 울려라_ 최병광_111005
Cana Ko
 
Talk IT_ CA_조상원_110930
Talk IT_ CA_조상원_110930Talk IT_ CA_조상원_110930
Talk IT_ CA_조상원_110930
Cana Ko
 

Mehr von Cana Ko (20)

북Tv365_쓰고 상상하고 실행하라_문준호_111207
북Tv365_쓰고 상상하고 실행하라_문준호_111207북Tv365_쓰고 상상하고 실행하라_문준호_111207
북Tv365_쓰고 상상하고 실행하라_문준호_111207
 
북Tv365 나는 영화가 좋다 이창세_111130
북Tv365 나는 영화가 좋다 이창세_111130북Tv365 나는 영화가 좋다 이창세_111130
북Tv365 나는 영화가 좋다 이창세_111130
 
북Tv365_10년의 기다림 김창수_111123
북Tv365_10년의 기다림 김창수_111123북Tv365_10년의 기다림 김창수_111123
북Tv365_10년의 기다림 김창수_111123
 
북Tv365 서른 life 사전 이재은_111116
북Tv365 서른 life 사전 이재은_111116북Tv365 서른 life 사전 이재은_111116
북Tv365 서른 life 사전 이재은_111116
 
북Tv365_책에 미친 청춘_김애리_111102
북Tv365_책에 미친 청춘_김애리_111102북Tv365_책에 미친 청춘_김애리_111102
북Tv365_책에 미친 청춘_김애리_111102
 
북Tv365 책에 미친 청춘 김애리_111102
북Tv365 책에 미친 청춘 김애리_111102북Tv365 책에 미친 청춘 김애리_111102
북Tv365 책에 미친 청춘 김애리_111102
 
북Tv365 책에 미친 청춘 김애리_111102
북Tv365 책에 미친 청춘 김애리_111102북Tv365 책에 미친 청춘 김애리_111102
북Tv365 책에 미친 청춘 김애리_111102
 
Talk IT_Oracle AP_이진호 부장_111102
Talk IT_Oracle AP_이진호 부장_111102 Talk IT_Oracle AP_이진호 부장_111102
Talk IT_Oracle AP_이진호 부장_111102
 
Talk IT_CA_정성엽_111028
Talk IT_CA_정성엽_111028Talk IT_CA_정성엽_111028
Talk IT_CA_정성엽_111028
 
북포럼 227회 재즈스타일 전진용 111026
북포럼 227회 재즈스타일 전진용 111026북포럼 227회 재즈스타일 전진용 111026
북포럼 227회 재즈스타일 전진용 111026
 
Talk IT_ IBM_나병준_111025_Session2
Talk IT_ IBM_나병준_111025_Session2Talk IT_ IBM_나병준_111025_Session2
Talk IT_ IBM_나병준_111025_Session2
 
111025 session 1
111025 session 1111025 session 1
111025 session 1
 
Talk IT_ Oracle_정봉기_111025
Talk IT_ Oracle_정봉기_111025Talk IT_ Oracle_정봉기_111025
Talk IT_ Oracle_정봉기_111025
 
북포럼_화난 원숭이들은 모두 어디로 갔을까_ 송인혁_ 111019
북포럼_화난 원숭이들은 모두 어디로 갔을까_ 송인혁_ 111019북포럼_화난 원숭이들은 모두 어디로 갔을까_ 송인혁_ 111019
북포럼_화난 원숭이들은 모두 어디로 갔을까_ 송인혁_ 111019
 
북포럼_고민이 없다면 20대가 아니다_고영혁_111012
북포럼_고민이 없다면 20대가 아니다_고영혁_111012북포럼_고민이 없다면 20대가 아니다_고영혁_111012
북포럼_고민이 없다면 20대가 아니다_고영혁_111012
 
Talk IT_ Oracle_최대진_111012
Talk IT_ Oracle_최대진_111012Talk IT_ Oracle_최대진_111012
Talk IT_ Oracle_최대진_111012
 
Talk IT_ Oracle_전태준_111012
Talk IT_ Oracle_전태준_111012Talk IT_ Oracle_전태준_111012
Talk IT_ Oracle_전태준_111012
 
Talk IT_ Agilent_최석근_111007
Talk IT_ Agilent_최석근_111007Talk IT_ Agilent_최석근_111007
Talk IT_ Agilent_최석근_111007
 
북포럼_1초에 가슴을 울려라_ 최병광_111005
북포럼_1초에 가슴을 울려라_ 최병광_111005북포럼_1초에 가슴을 울려라_ 최병광_111005
북포럼_1초에 가슴을 울려라_ 최병광_111005
 
Talk IT_ CA_조상원_110930
Talk IT_ CA_조상원_110930Talk IT_ CA_조상원_110930
Talk IT_ CA_조상원_110930
 

Talk IT_ IBM_최정일_110824

  • 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 기술을 적용하기 위한 절차가 개발방법롞과 적절히 통합되어야 한다.  가장 중요한 것은 모델링을 수행하는 사람의 모델링 역량이다.