KR100496868B1 - 레가시 시스템으로부터 설계 패턴 추출을 통한 컴포넌트의생성 장치 및 방법 - Google Patents

레가시 시스템으로부터 설계 패턴 추출을 통한 컴포넌트의생성 장치 및 방법 Download PDF

Info

Publication number
KR100496868B1
KR100496868B1 KR10-2001-0086494A KR20010086494A KR100496868B1 KR 100496868 B1 KR100496868 B1 KR 100496868B1 KR 20010086494 A KR20010086494 A KR 20010086494A KR 100496868 B1 KR100496868 B1 KR 100496868B1
Authority
KR
South Korea
Prior art keywords
pattern
component
design
design pattern
class
Prior art date
Application number
KR10-2001-0086494A
Other languages
English (en)
Other versions
KR20030056295A (ko
Inventor
차정은
김동관
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR10-2001-0086494A priority Critical patent/KR100496868B1/ko
Publication of KR20030056295A publication Critical patent/KR20030056295A/ko
Application granted granted Critical
Publication of KR100496868B1 publication Critical patent/KR100496868B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 레가시 시스템의 원시코드 및 설계 정보의 재사용에 관한 것으로, 특히 레가시 시스템의 원시코드의 설계 정보에서 설계 패턴을 추출하고, 설계 패턴을 통해 구조화하고 이를 컴포넌트 형태로 패키징하여 실행성과 재사용이 높은 컴포넌트를 생성할 수 있는 레가시 시스템으로부터 컴포넌트 생성에 관한 것이다.
본 발명에 의하면 종래의 시스템으로부터, 설계 수준에서 일반화된 구성 요소들 뿐 아니라 이들간의 상호작용을 전문적인 선행 지식을 정규화한 형태인 설계 패턴으로 획득할 수 있다. 이는 기존 시스템의 상세한 이해가 용이할 뿐 아니라, 단지 시스템 개발 산출물의 재사용이 아니라 선행 경험의 재활용을 실제적으로 가능하도록 한다. 또한, 설계 패턴의 추출 과정에서 사용자의 의사 반영을 통해 실제 사용자 도메인에 재사용성과 정확성이 높은 개체의 식별이 가능하며, 실행성의 독립 개체인 컴포넌트로 자동 패키징이 가능함으로써 궁극적으로 소프트웨어 개발 및 유지보수에서 추구하는 고품질의 고생산성을 기존 시스템의 안정성과 신뢰성 기반으로 실현할 수 있다.

Description

레가시 시스템으로부터 설계 패턴 추출을 통한 컴포넌트의 생성 장치 및 방법{Method and apparatus for design pattern based reengineering to generate EJB component legacy system through extracting design patterns}
본 발명은 레가시 시스템의 원시코드 및 설계 정보의 재사용에 관한 것으로, 특히 레가시 시스템의 원시코드이 설계 정보에서 설계 패턴을 추출하고, 설계 패턴을 통해 구조화하고 이를 컴포넌트 형태로 패키징하여 실행성과 재사용이 높은 컴포넌트를 생성할 수 있는 레가시 시스템으로부터 컴포넌트 생성을 위한 장치 및 방법에 관한 것이다.
일반적으로, 레가시 시스템의 재사용은 소프트웨어 개발과 유지보수를 위한 최상의 기술 전략으로 수십 년 동안 시도되어 왔다. 소프트웨어 시스템에서의 재사용은 새로운 소프트웨어 개발시 이미 존재하는 다양한 형태의 소프트웨어 산출물과 관련 지식들을 재사용 함으로써, 소프트웨어 생산성과 품질의 향상을 이룩하고자 하는 것이다. 따라서 재사용의 대상은 간단히 구현 단계에서 원시 코드의 공통 라이브러리 함수, 서브 시스템 모듈과 사용자 인터페이스 위젯(Widget)에서 부터 시스템의 분석, 설계 단계의 결과물 및 시스템 개발자의 전문 지식에 이르기까지 다양하다.
현재, 가장 보편적으로 행해지는 코드 수준의 재시용은 꼭 맞는 상황에서만 적용가능 하기 때문에 재사용 빈도가 매우 작으며 외부의 변경에 대해서 많은 추가 작업을 수반해야만 하므로 그 효율성이 높지 않다.
소프트웨어 재사용의 가장 중요한 선행 작업은 재사용 요소들을 찾아 체계화하는 것이다. 이를 위한 하나의 접근 방법으로 원시 코드 분석이나 도메인 분석에 의해 레가시 시스템의 정보를 이해, 추출하고 이를 재사용 요소로 변환하는 것이다.
클래스 라이브러리는 구현 코드의 직접적인 재사용이 가능해 그 효과를 즉시 얻을 수 있으나, 시스템 개발자가 재사용할 클래스에 대한 충분한 정보를 확보하고 그것을 적용할 수 있는 준비가 완료되어져야만 하고 플랫폼 환경과 응용 도메인에 대한 한정성을 가진다.
설계 패턴은 설계 문제의 추상화와 특정 영역에 대한 공통적인 해결책을 구성 요소간의 관련성을 통해 정의함으로써 공통 도메인의 어플리케이션 구축에서 인증된 설계 경험들을 재사용할 수 있는 기회를 제공해준다. 설계 패턴을 통해 추상화된 경험적 지식의 재사용에서 자신의 의도를 반영하고 자동화 개발 프로세스의 도입을 통한 아키텍쳐 공유로 표준화된 재사용 결과물들을 획득하고 시스템 개발에 적용할 수 있다.
컴포넌트는 표준화된 아키텍쳐에 기반하여 비즈니스 로직을 구현한 패키지로, 잘 명시된 인터페이스를 통해 커스터마이즈 되고 시스템으로 통합된다. 컴포넌트는 블랙 박스된 구현 로직과 실행시 플러그 인(Plug-in) 될 수 있는 독립성으로 최근 개발되고 연구되는 시스템에서 핵심적인 재사용 요소가 된다.
레가시 시스템의 이해도를 증가시키고 나아가 재사용 가능한 요소로서 설계 패턴이나 컴포넌트 등을 생성하는 소프트웨어 재공학은 매우 중요하다. 레가시 시스템으로부터 비즈니스 로직을 추출하고 이를 컴포넌트 기반 시스템으로 컴포넌트화(componentization)하는 기술을 통해 오늘날의 소프트웨어 시스템의 기술적, 경제적 요구에 부응할 수 있다.
설계 패턴은 오로지 순공학 과정에서 유용한 것으로만 알려져 있다. 또한 실제적인 재사용 구현물로서는 적절하지 않은 것으로 알려져 있다. 하지만 재공학 과정에서 설계 패턴을 이용함으로써 레가시 시스템의 아키텍쳐 및 객체 모델을 복구하여 레가시 시스템의 이해도를 증가시키며 보편적 관점에서의 모델 수준의 재사용 요소를 생성할 수 있다. 또한 설계 패턴을 컴포넌트를 구성하는 요소들의 패키징 단위로 정의하고, 컴포넌트의 아키텍쳐 정의에 이용함으로써 컴포넌트 조립 규칙을 서술하고 컴포넌트의 구조를 정의하기 위해 적용할 수 있다.
본 발명과 관련된 기술로 크게 레가시 시스템으로부터 정보를 추출하는 재공학에 관한 기술들과 재사용 요소로서 컴포넌트의 생성과 관련된 기술이 있다.
소프트웨어 재공학 분야는 연계(wrapping)와 변환(Transformation) 기술로 구분되는데, 연계는 랩퍼 컴포넌트를 통한 인터페이스의 제공으로 안정적이고 신뢰성 있는 기존 소프트웨어를 변경 없이 효과적으로 활용할 수 있다. 하지만, 랩핑은 임시 방편의 기술로 요구 사항의 변동이나 추가시 시스템을 더욱 복잡하게 만들 수 있다. 변환은 기존 소프트웨어에 새로운 기술의 장점들을 적용하여 소프트웨어의 생산성과 품질을 전체 생명주기 상에서 획득하기 위해 기존 시스템의 형태 변형 및 기능성 변화를 위한 재설계를 수행한다. 새로운 환경에서 요구되는 기술이 복잡, 다양해짐에 따라 기술적 한계에 직면하고 있으며 이에 따라 궁극적인 레가시 기술은 변환으로 발전할 것으로 기대되고 있다.
재공학을 통한 컴포넌트 생성 기술은 원시 코드의 분석을 중심으로 관련된 요소들 간의 클러스터링을 통해 컴포넌트를 생성하는 방법과 기존 설계 문서를 바탕으로 도메인 분석 정보를 결합하여 설계 정보를 식별하는 방법이 주로 진행되어 오고 있다.
선행 한국 특허 등록번호 10-0280828호의 내용은 절차적 프로그래밍에서 객체지향 프로그래밍으로 변환하기 위해 기존 시스템의 원시 코드를 분석하고 이를 중간 매개 언어로 변환한 후, 관계성을 설정한 다음, 이를 다시 객체 지향 시스템의 코드를 생성하는 것이다.
또한, 선행 한국 특허 출원번호 10-1988-0057824호는 코드 수준에서 향상된 정보의 추출을 위해 기존 객체지향 시스템의 산출물들을 지식 기반 표현언어를 이용하여 지식베이스를 구축하고 이를 조작함으로써 객체지향 속성이 반영된 재사용을 지원하는 방법에 관한 것이다.
또한 선행 한국 특허 등록번호 10-0280947호는 재공학 목적 및 재사용의 대상으로 프레임워크(Framework)를 식별하는 방법에 관한 것이다.
선행 연구 대부분은 객체지향 프로그램으로의 원시 코드 수준의 변환이나 추상적인 시스템과 도메인의 정보를 획득하고 이해 정보로 이해하려는데 초점을 두고 있다. 따라서 컴포넌트 기반 개발 환경에서 실행성의 컴포넌트를 식별하고 이를 자동 생성하기 위해서는 전문가들의 경험이나 보다 일반화된 원칙과 형식이 필요하다. 따라서 본 발명에서 제시하는 것과 같이, 기존 시스템을 설계 수준에서 보편적으로 참조될 수 있는 재사용 요소로서 설계 패턴을 식별하고, 사용자의 관점과 의사를 반영하여 시스템 한정적인 정보를 획득하며 이를 표준화된 EJB 아키텍쳐의 컴포넌트로 변형함으로써 높은 재사용성과 일반성 모두를 달성할 필요가 있다.
본 발명은 상술한 바와 같은 문제점을 해결하기 위한 것으로, 소프트웨어 생산성과 품질 향상을 위한 근본적인 접근 방법으로서, 레가시 시스템으로부터 참조될 수 있는 설계 패턴을 추출하고, 설계 패턴으로부터 추출된 결과물에 사용자 의견을 추가하여 재사용 요소로 가공하며, 그 산출물들을 설계 패턴으로 구성된 컴포넌트 모델에 매칭하여 EJB 아키텍쳐에 순응하는 컴포넌트를 생성할 수 있도록 함으로써 레가시 시스템으로부터 설계 패턴 추출을 통한 컴포넌트의 생성 장치 및 방법을 제공하는 것을 그 목적으로 한다.
상술한 목적을 달성하기 위한 본 발명은 레가시 시스템의 원시코드에서 설계 패턴을 파악하는 데에 있어서, 레가시 시스템의 원시 코드에서 클래스의 선언 및 클래스 간의 상호작용의 발견을 통해 개략적인 시스템 모델을 파악함으로써 정보를 추출해 내는 원시 코드 분석기, 원시코드 분석기에서 추출된 정보로부터 클래스 에트리뷰트 및 메소드에 전달된 파라미터, 클래스 타입 등을 조사하여 객체 간의 통신을 획득하고 관련성의 종류 및 다중성을 파악함으로써 객체 구조를 정제 파악하는 설계 정보 복구기, 설계 정보 복구기에서 정제한 객체구조에서 잠재적인 후보 패턴을 식별, 분석하며, 사용자가 자신의 의사를 반영시켜 도메인 영역에 맞는 재사용 설계 패턴으로 생성하는 설계 패턴 추출기를 포함한다.
또한, 본 발명은 추출된 식별 패턴을 설계 패턴으로 구조화된 컴포넌트 구조와 매핑시키는 패턴매핑기, 컴포넌트 코드 템플리트를 기준으로 식별된 컴포넌트의 정보를 배치하여 컴포넌트를 생성하는 컴포넌트 코드 생성기, 컴포넌트 코드 생성기로부터 생성된 다수의 컴포넌트 코드를 하나의 파일로 생성시키는 컴포넌트 패키징 지원기를 포함한다.
또한, 본 발명은 원시 코드로부터 설계된 원시 코드의 분석과 설계의 패턴을 추출하는 설계 패턴 추출 모듈, 설계패턴 추출 모듈로부터 추출된 설계 패턴을 콤포넌트로 구성하기 위해 패턴 매핑, 컴포넌트 코드 생성, 생성된 컴포넌트 코드를 패키징하는 컴포넌트 생성 모듈을 포함한다.
또한, 본 발명은 클래스의 선언 및 클래스 간의 상호작용의 발견을 통해 개략적인 시스템 모델을 파악하는 단계, 클래스 에트리뷰트 및 메소드에 전달되어진 파라미터, 클래스 타입 등을 조사하여 객체 간의 통신을 획득하고 관련성의 종류(has-a, is-a, part-of)를 비롯해 다중성을 파악함으로써 객체 구조를 정제하는 단계, 객체구조 정제 단계에서의 분석 정보들을 바탕으로 기존에 카탈로깅 되어진 감마(Gamma) 설계 패턴들과의 유사성을 찾음으로써 추출 가능한 후보 패턴들을 식별하는 단계, 식별된 패턴에서 일반화한 패턴의 유형을 검증하기 위해 참조 패턴인 감마(Gamma) 패턴과의 일치성을 조사하는 단계, 사용자가 자신의 의도에 맞는 재사용성 높은 도메인 지향적인 패턴을 생성하기 위해 식별한 패턴들을 집합적인 패턴 클러스터를 형성하는 단계, 사용자 고유의 의사 결정을 추가시킴으로써 도메인에 밀접한 재사용성 높은 패턴으로 정제하는 단계, 사용자의 유도 하에 감마의 참조 패턴과의 연계성이 평가되고 패턴 생성 정보들이 감마의 패턴 양식으로 재표기함으로써 도메인 한정적인 설계 패턴으로 생성되는 단계를 포함한다.
또한, 본 발명은 생성할 EJB 컴포넌트에 맞는 템플리트 유형 선택하도록 하고 컴포넌트 구성 패턴에서 추출된 EJB 생성 정보를 유형에 맞도록 배치, 매핑하는 코드 템플리트 매핑기, 코드 템플리트 매핑기의 결과에 라이브러리를 연결, 클래스 바디(body)를 삽입하고, 필요한 부분들을 링크하고 컴파일 기능을 지원하는 코드 완성기, 컴포넌트 구성 패턴에서 추출된 EJB 생성 정보의 DD 메타 데이터를 배치, 매핑하는 DD 템플리트 매핑기, DD 메타 데이타를 기반으로 DD 파일 완성하고 빈 클래스, 인터페이스 클래스, DD 파일을 하나의 파일로 바인딩하는 DD 완성기를 포함한다.
이하, 본 발명의 실시 예를 첨부한 도면을 참조하여 상세히 설명한다.
본 발명의 기능 모듈은 크게 설계 패턴 추출 모듈과 컴포넌트 생성 모듈로 구성된다. 설계 패턴 추출 모듈은 레가시 시스템의 원시 코드 분석을 통해 영역 및 분석, 설계 정보를 획득하고 기존의 참조 설계 패턴과 비교, 확장함으로써 레가시 시스템에 포함된 설계 패턴을 추출하는 기능을 제공한다. 그리고 컴포넌트 생성 모듈은 추출된 설계 패턴 정보를 본 발명에서 제시하는 패턴으로 구성된 컴포넌트 구조로 매핑함으로써 컴포넌트로 변환하며, 나아가 EJB 아키텍쳐 명세를 따르는 코드 템플리트를 제공하여 분석된 컴포넌트 정보들을 적용시킴으로써 EJB 컴포넌트 코드를 자동 생성하는 기능을 제공한다.
도 1은 본 발명의 원시코드에서 설계 패턴 추출 모듈 및 컴포넌트 생성 모듈을 도시한 구성도이다.
레가시 시스템의 원시코드(100)가 입력되면, 설계패턴추출 모듈(110)에서 원시코드를 분석하여, 원시코드(100)의 설계 패턴을 추출하며, 컴포넌트 생성모듈(120)에서는 추출된 설계 패턴에서 재사용이 가능한 EJB 컴포넌트로 생성하는 것이다.
즉, 시스템의 원시 코드(100)는 설계 패턴 추출 모듈(110)과 컴포넌트 생성 모둘(120)의 과정을 거치면서 EJB 컴포넌트로 생성된다.
원시 코드(100)는 설계 패턴 추출 모듈(110)의 원시 코드 분석기(111)를 통해 레가시 시스템의 개략적인 정보를 추출해 내고, 추출된 정보로부터 객체 간의 통신을 중심으로 객체 구조를 설계 정보 복구기(112)를 통해 파악한다. 설계 패턴 추출기(113)에서 잠재적인 후보 패턴을 식별하고 분석하며, 사용자가 자신의 의사를 반영시킴으로써 도메인 영역에 맞는 재사용 설계 패턴으로 생성한다.
다음으로, 컴포넌트 생성 모듈(120)의 패턴 매핑기(121)들 통해 추출된 식별패턴을 설계 패턴으로 구조화된 컴포넌트 생성 구조와 매핑시킴으로써 컴포넌트를 식별하고, 컴포넌트 코드 생성기(122)는 EJB 컴포넌트의 코드 템플리트를 기준으로 식별된 컴포넌트의 정보를 배치하여 컴포넌트를 생성한다. 마지막으로 컴포넌트 패키징 지원기(123)를 통해 완성된 컴포넌트 코드 파일들의 전개 서술(Deployment Description)을 하나의 자(jar) 파일로 패키징한다.
도 2는 도 1의 시스템 전반부인 설계 패턴 추출 모듈(110)에서 설계의 패턴을 추출하는 동작 순서도이다.
클래스의 선언 및 클래스 간의 상호작용의 발견을 통해 개략적인 시스템 모델을 파악한다. 특히 포인터(pointer) 구현에 의한 연관성과 메소드의 반환 값 연결을 중심으로 클래스 사이의 관련성 획득에 초점을 둔다(스텝 S200).
다음에서 클래스 에트리뷰트 및 메소드에 전달되어진 파라미터, 클래스 타입 등을 조사하여 객체 간의 통신을 획득하고 관련성의 종류(has-a, is-a, part-of)를 비롯해 다중성을 파악함으로써 객체 구조를 정제한다(스텝 S210).
객체구조 정제 단계에서의 분석 정보들을 바탕으로 기존에 카탈로깅 되어진 감마(Gamma) 설계 패턴들과의 유사성을 찾음으로써 추출 가능한 후보 패턴들을 추출한다. 이 과정에서 추출된 정보와 매핑적 관계를 구성할 수 있는 도 3a의 설계 패턴 식별 메소드가 적용된다(스텝 S220).
전단계에서 추출된 패턴을 분석하는 것으로, 패턴에서 일반화한 패턴의 유형을 검증하기 위해 참조 패턴인 감마(Gamma) 패턴과의 일치성을 조사하는 식별패턴을 분석한다. 이 과정에서는 패턴의 구조, 기능 그리고 구현적 측면이 고려되며 사용자의 의도에 따라 반복적인 평가가 수반된다(스텝 S230).
사용자가 자신의 의도에 맞는 재사용성 높은 도메인 지향적인 패턴을 생성하기 위해 식별한 패턴들을 가능한 패턴 구조를 형성하기 위해 집합적인 패턴 클러스터를 형성한 뒤 이들 사이의 중복성을 제거하고 클러스터 간을 결합시킴으로써 일반적인 패턴 모델을 형성한다(스텝 S240).
사용자 고유의 의사 결정을 추가시킴으로써 도메인에 밀접한 재사용성 높은 패턴으로 정제하는 과정으로 도 3b와 같은 사용자 지식 구조에 따라 사용자 지식을 반영한다(스텝 S250).
마지막으로 사용자 유도 하에 감마의 참조 패턴과의 연계성이 평가되고 패턴 생성 정보들이 감마의 패턴 양식으로 재표기함으로써 도메인 한정적인 설계 패턴으로 생성된다(스텝 S260).
따라서, 설계 패턴 추출 모듈(110)은 최종적으로 사용자가 필요한 재사용성 높은 도메인 지향적인 설계 패턴을 생성해 주게 된다.
도 3(a)는 도 2의 후보 패턴 추출(스텝 S220)에서 사용되는 설계 패턴 식별 메소드(300)이다.
코드의 설계 패턴을 식별하기 위해. 클래스 간의 관련성, 추상클래스와 메소드 타입에 의한 추출, 캡슐화된 객체의 파라미터를 통한 추출, 객체 메시지 다이어그램 적용을 통한 추출, 연속형 내포 자료의 액세스 식별로 추출하여 설계 패턴을 파악하는 것이다.
즉, 상술한 코드 상의 특성에 의해 파악할 수 있는 정보를 중심으로 참조될 패턴들을 식별하며, 동적인 객체 상태의 정보가 필요한 경우 객체 다이어그램을 모델링을 작성한다.
도 3(b)는 도 2의 패턴 클러스터 형성(스텝 S240)에서 사용자가 원하는 도메인에 적합한 패턴으로 생성하기 위해 사용자의 의사를 반영할 수 있는 사용자 지식 구조(310)이다.
패턴에 참여하여 통신하는 통신클래스의 수(311)와 그 통신클래스의 이름(312)들, 개별적인 클래스들 간의 관련성(Inheritance, Association, Aggregation)과 다중성(1:1, 1:many, many:many)을 나타내는 구조(313), 패턴과 연결된 외부 클래스를 나타내는 송신 클래스(314)와 이 클래스와 연결된 패턴 내부의 수신 클래스(315), 그리고 연결된 링크 메소드(316)와 전달 파라미터(317)로 구성된다.
추출된 설계 패턴들로 재구성된 레가시 시스템을 독립적인 비즈니스 로직을 가진 실행성의 재사용 개체로 생성함으로써 보다 효과적인 소프트웨어의 품질과 생산성을 획득할 수 있다. 특히 특정한 표준을 따르는 컴포넌트를 생성하고, 임의의 다수에 의해 활용케 함으로써 높은 재사용성을 이룰 수 있다. 본 발명에서는 설계 패턴을 통해 선행 개발자의 전문 지식을 설계 수준에서 획득하고, 다시 컴포넌트로 변환함으로써 실행성의 독립적인 단위 프로그램으로써의 컴포넌트를 구현 수준에서 획득한다.
따라서 본 발명에서는 추출된 패턴들을 컴포넌트로의 변환을 용이하게 하기 위해 도메인 내의 공통적인 시스템 구조를 패턴을 이용하여 정의함으로써 컴포넌트의 형태를 규정하였다.
일반적으로 참조되는 분석 패턴, 설계 패턴에는 인터페이스를 중심으로 컴포넌트들간의 독립적인 상호 연계를 위한 패턴들, 즉, 브릿지(Bridge) 패턴, 팩토리 메소드(Factory Method) 패턴, 아답터(Adapter) 패턴, 메디에이터(Mediator) 패턴 등이 존재한다. 그러므로 본 발명에서는 이들 참조 패턴들을 기본 템플리트로 하고, 패턴 형식 중 솔루션 부분을 상세히 서술함으로써 구현 영역으로의 전개를 용이하도록 도메인 컴포넌트의 구성의 정의하고 이들 내부의 상호작용을 위해 패턴을 확장, 조합하였다.
도 4(a)는 본 발명에서 제안한 컴포넌트 생성을 위한 패턴구성 모델이다(400).
변환된 컴포넌트의 구성 형태는 자체의 시그네이쳐와, 연관 컴포넌트들 사이의 전역 변수를 가지는 다수 개의 컴포넌트들과 이들 컴포넌트들이 다른 컴포넌트들과의 조립 시나리오를 서술하고 있는 패턴으로 구성된다. 그리고 컴포넌트는 패캐이드(Facade) 패턴을 통해 제어, 조절됨으로써 단일의 추상화된 인터페이스를 제공한다. 또한 구조적 제약 조건을 가지는 콤포넌트 릴레이션쉽 (Component_Relationship) 클래스와 영역 내의 동적 통합에 대한 제한을 갖는 컴포넌트 인터액션(Component_Interaction) 클래스를 포함하며 이들은 각각 스트래테지(Strategy)와 메디에이터(Mediator) 패턴을 확장하고 그 특성을 구현한다. 그 다음으로, 개별 영역에 맞는 컴포넌트들의 조합, 즉, 영역의 특정 서비스를 제공하기 위해 프로세스 패턴(Process Pattern) 아키텍쳐 스타일의 개념과 골격의 개념을 구체화하였다
도 4b는 도 4a에서 정의한 패턴에 따라 구성된 컴포넌트의 예를 도시한 것이다.
추출된 패턴을 컴포넌트 형태로 매핑 시킨 후, 실제로 컴포넌트 코드 생성을 위한 단계가 필요하다. 본 발명에서는 이를 위한 이를 위한 알고리즘(500)을 제안하고 장치(510)를 개발한다.
도 5a는 도 1의 EJB 컴포넌트의 생성을 위한 동작 순서도이다.
EJB 컴포넌트 생성을 위한 알고리즘은 먼저 추출 정보와 사용자 선택에 의해 빈 타입이 결정되면 각 타입에 맞는 EJB 명세를 준수하는 빈의 템플리트 코드가 제시되고 추출 정보와 결합되어 빈 클래스(Entity Bean, Session Bean)가 생성된다. 또한 같은 방식으로 인터페이스 클래스(Remote Interface, Home Interface)가 생성되어 컴파일 과정을 거치면 이 도중 오류가 발생하면 사용자에 의해 수정할 수 있다. 또한 EJB 컴포넌트의 구성 및 전개 방식 등을 서술하는 DD(Deployment Description) 엔트리가 빈 클래스 생성과 마찬가지 방식인 템플리트 방법으로 생성되면, 성공적으로 .class 파일로 완성된 파일들(빈 클래스, 인터페이스)과 함께 Jar 파일로 묶어진다.
도 5(b)는 EJB 컴포넌트 생성을 위한 세부 구성도이다.
EJB 컴포넌트 구성 코드 각 부분에 대한 템플리트를 미리 제시하고 패턴으로부터 변환된 컴포넌트로부터 적절한 생성 정보를 획득하고 매핑시킴으로써 개별적인 빈 클래스를 생성한다.
본 발명에서 제안하는 설계 패턴 추출 및 EJB 컴포넌트로의 변환 시스템의 전체적인 구성 모듈 중 후반부에 속하는 EJB 컴포넌트 생성기의 구성 모듈(510)이다. 크게 5개의 모듈로 구분되며 템플리트 매핑기를 통해 추출 정보들이 배치되고 코드 완성기에 의해 일반적인 코드 옵션으로 완성되어 개별 파일들이 컴파일되어 jar 파일로 패키징된다.
코드 템플리트 매핑기(520)는 생성할 EJB 컴포넌트에 맞는 템플리트 유형 선택하도록 하고 컴포넌트 구성 패턴에서 추출된 EJB 생성 정보를 유형에 맞도록 배치, 매핑한다.
코드 완성기(530)는 템플리트 매핑 결과에 라이브러리를 연결, 클래스 body 삽입하고, 필요한 부분들을 링크하고 컴파일 기능을 지원한다.
DD(Deployment Description) 템플리트 매핑기(540)는 DD를 위한 템플리트 제공하고 컴포넌트 구성 패턴에서 추출된 EJB 생성 정보를DD 메타 데이터를 배치, 매핑 한다.
DD 완성기(550)는 DD 메타 데이타를 기반으로 DD 파일 완성하고 빈 클래스, 인터페이스 클래스, DD 파일을 자(Jar) 파일로 바인딩한다.
이상과 같이, 본 발명에 의하면 종래의 시스템으로부터, 설계 수준에서 일반화 구성 요소들 뿐 아니라 이들간의 상호작용을 전문적인 선행 지식이 정규화된 형태인 설계 패턴으로 획득할 수 있다. 이는 기존 시스템의 상세한 이해가 용이할 뿐 아니라, 단지 시스템 개발 산출물의 재사용이 아니라 선행 경험의 재활용을 실제적으로 가능하도록 한다. 또한, 설계 패턴의 추출 과정에서 사용자의 의사 반영을 통해 실제 사용자 도메인에 재사용성과 정확성이 높은 개체의 식별이 가능하며, 실행성의 독립 개체인 컴포넌트로 자동 패키징이 가능함으로써 궁극적으로 소프트웨어 개발 및 유지보수에서 추구하는 고품질의 고생산성을 기존 시스템의 안정성과 신뢰성 기반으로 실현할 수 있다.
또한, 본 발명에 의하면 레가시 시스템에 대한 설계 수준의 정보 복구를 통해 컴포넌트 기반 개발 환경으로의 전환에 필요한 시스템의 이해를 향상시키고, 시스템 정보를 설계 패턴으로 패키징 함으로써 컴포넌트에 대한 식별이 용이하게 된다. 또한 레가시 시스템으로부터 설계 패턴의 추출 및 EJB 컴포넌트의 생성을 위한 자동화된 프로세스 지원으로 효과적인 컴포넌트 기반 개발을 가능케 한다.
도 1은 본 발명의 설계 패턴 추출 모듈 및 컴포넌트 생성 모듈 시스템의 구성도.
도 2는 도 1의 설계 패턴 추출 모듈의 동작 순서도.
도 3a는 도 2의 설계 패턴 식별 메소드이다.
도 3b는 도 3b의 패턴 정제를 위한 사용자의 지식 구조이다.
도 4a는 컴포넌트 생성을 위한 패턴 구성 모델을 도시한 도면.
도 4b는 도 4a의 패턴으로 구성되는 컴포넌트의 예를 도시한 도면.
도 5a는 EJB 컴포넌트 생성을 위한 동작 순서도.
도 5b는 EJB 컴포넌트 생성 세부 구성도.
< 도면의 주요 부분에 대한 설명>
100 : 원시코드 110 : 설계 패턴 추출 모듈
111 : 원시코드분석기 112 : 설계정보 복구기
113 : 설계 패턴 추출기 120 : 컴포넌트 생성 모듈
121 : 패턴 매핑기 122 : 컴포넌트 코드 생성시
123 : 컴포넌트 패키징 지원기

Claims (6)

  1. 레가시 시스템의 원시코드에서 설계 패턴을 파악하는 데에 있어서,
    레가시 시스템의 원시 코드에서 클래스의 선언 및 클래스 간의 상호작용의 발견을 통해 개략적인 시스템 모델을 파악함으로써 정보를 추출해 내는 원시 코드 분석기;
    상기 원시코드 분석기에서 추출된 정보로부터 클래스 에트리뷰트 및 메소드에 전달된 파라미터, 클래스 타입 등을 조사하여 객체 간의 통신을 획득하고 관련성의 종류 및 다중성을 파악함으로써 객체 구조를 정제 파악하는 설계 정보 복구기;
    상기 설계 정보 복구기에서 정제한 상기 객체구조에서 잠재적인 후보 패턴을 식별, 분석하며, 사용자가 자신의 의사를 반영시켜 도메인 영역에 맞는 재사용 설계 패턴으로 생성하는 설계 패턴 추출기; 를 포함하는 것을 특징으로 하는 레가시 시스템으로부터 설계 패턴 추출 장치.
  2. 원시코드에서 재사용이 가능한 컴포넌트로 생성하는 데에 있어서,
    추출된 식별 패턴을 설계 패턴으로 구조화된 컴포넌트 구조와 매핑시키는 패턴 매핑기;
    컴포넌트 코드 템플리트를 기준으로 식별된 컴포넌트의 정보를 배치하여 컴포넌트를 생성하는 컴포넌트 코드 생성기;
    상기 컴포넌트 코드 생성기로부터 생성된 다수의 컴포넌트 코드를 하나의 파일로 생성시키는 컴포넌트 패키징 지원기; 를 포함하는 것을 특징으로 하는 레가시 시스템으로부터 설계 패턴 추출을 통한 컴포넌트의 생성장치.
  3. 삭제
  4. 클래스의 선언 및 클래스 간의 상호작용의 발견을 통해 개략적인 레가시 시스템 모델을 파악하는 단계;
    상기 파악된 레가시 시스템의 모델에서 클래스 에트리뷰트 및 메소드에 전달되어진 파라미터, 클래스 타입 등을 조사하여 객체 간의 통신을 획득하고 관련성의 종류를 비롯해 다중성을 파악함으로써 객체 구조를 정제하는 단계;
    상기 객체구조 정제 단계에서의 분석 정보들을 바탕으로 기존에 카탈로깅 되어진 감마(Gamma) 설계 패턴들과의 유사성을 찾음으로써 추출 가능한 후보 패턴들을 식별하는 단계;
    상기 식별된 패턴에서 일반화한 패턴의 유형을 검증하기 위해 참조 패턴인 감마(Gamma) 패턴과의 일치성을 조사하는 단계;
    사용자가 자신의 의도에 맞는 재사용성 높은 도메인 지향적인 패턴을 생성하기 위해 식별한 패턴들을 집합적인 패턴 클러스터를 형성하는 단계;
    사용자 고유의 의사 결정을 추가시킴으로써 도메인에 밀접한 재사용성 높은 패턴으로 정제하는 단계;
    사용자의 유도 하에 감마의 참조 패턴과의 연계성이 평가되고 패턴 생성 정보들이 감마의 패턴 양식으로 재표기함으로써 도메인 한정적인 설계 패턴으로 생성되는 단계;를 포함하는 것을 특징으로 하는 레가시 시스템으로부터 컴포넌트 생성을 위한 설계패턴 추출 방법.
  5. 제 4항에 있어서,
    상기 후보 패턴들을 식별하는 단계는,
    코드의 설계 패턴을 식별하기 위해. 클래스 간의 관련성, 추상클래스와 메소드 타입에 의한 추출, 캡슐화된 객체의 파라미터를 통한 추출, 객체 메시지 다이어그램 적용을 통한 추출, 연속형 내포 자료의 액세스 식별로 추출하여 설계 패턴을 파악하는 것을 특징으로 하는 레가시 시스템으로부터 컴포넌트 생성을 위한 설계패턴 추출 방법.
  6. 추출된 설계 패턴에서 EJB 컴포넌트를 생성하는 데에 있어서,
    생성할 EJB 컴포넌트에 맞는 템플리트 유형 선택하도록 하고 컴포넌트 구성 패턴에서 추출된 EJB 컴포넌트 생성 정보를 유형에 맞도록 배치, 매핑하는 코드 템플리트 매핑기;
    상기 코드 템플리트 매핑기의 결과에 라이브러리를 연결, 클래스 바디를 삽입하고, 필요한 부분들을 링크하고 컴파일 기능을 지원하는 코드 완성기;
    컴포넌트 구성 패턴에서 추출된 EJB 생성 정보의 DD 메타 데이터를 배치, 매핑하는 DD 템플리트 매핑기;
    DD 메타 데이타를 기반으로 DD 파일 완성하고 빈 클래스, 인터페이스 클래스, DD 파일을 하나의 파일로 바인딩하는 DD 완성기; 를 포함하는 것을 특징으로 하는 레가시 시스템으로부터 설계 패턴 추출을 통한 컴포넌트 생성 장치.
KR10-2001-0086494A 2001-12-28 2001-12-28 레가시 시스템으로부터 설계 패턴 추출을 통한 컴포넌트의생성 장치 및 방법 KR100496868B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2001-0086494A KR100496868B1 (ko) 2001-12-28 2001-12-28 레가시 시스템으로부터 설계 패턴 추출을 통한 컴포넌트의생성 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0086494A KR100496868B1 (ko) 2001-12-28 2001-12-28 레가시 시스템으로부터 설계 패턴 추출을 통한 컴포넌트의생성 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20030056295A KR20030056295A (ko) 2003-07-04
KR100496868B1 true KR100496868B1 (ko) 2005-06-22

Family

ID=32214501

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0086494A KR100496868B1 (ko) 2001-12-28 2001-12-28 레가시 시스템으로부터 설계 패턴 추출을 통한 컴포넌트의생성 장치 및 방법

Country Status (1)

Country Link
KR (1) KR100496868B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8196093B2 (en) 2007-02-14 2012-06-05 Samsung Electronics Co., Ltd. Apparatus and method for componentizing legacy system

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100512758B1 (ko) * 2002-12-06 2005-09-07 한국전자통신연구원 설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법
KR100673313B1 (ko) * 2004-12-30 2007-01-24 재단법인서울대학교산학협력재단 코드조각 번호 매김을 이용한 프로그램 간의 코드조각결합방법
KR100772869B1 (ko) * 2006-02-23 2007-11-02 삼성전자주식회사 기존 모듈의 라이브러리 파일을 콤포넌트로 자동 변환하는장치 및 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09101886A (ja) * 1995-10-04 1997-04-15 Nri & Ncc Co Ltd プログラム部品の自動抽出・再利用装置
JPH09160765A (ja) * 1995-12-08 1997-06-20 Hitachi Ltd ソフトウェア部品作成方法
KR20000031432A (ko) * 1998-11-06 2000-06-05 정선종 절차지향 프로그램을 객체지향 프로그램으로 변환하기 위한분석 방법
JP2001100986A (ja) * 1999-09-28 2001-04-13 Kawasaki Steel Systems R & D Corp ソフトウェア開発支援システム
JP2001296996A (ja) * 2000-04-12 2001-10-26 Nec Corp コンポーネントの自動生成装置および表現方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09101886A (ja) * 1995-10-04 1997-04-15 Nri & Ncc Co Ltd プログラム部品の自動抽出・再利用装置
JPH09160765A (ja) * 1995-12-08 1997-06-20 Hitachi Ltd ソフトウェア部品作成方法
KR20000031432A (ko) * 1998-11-06 2000-06-05 정선종 절차지향 프로그램을 객체지향 프로그램으로 변환하기 위한분석 방법
JP2001100986A (ja) * 1999-09-28 2001-04-13 Kawasaki Steel Systems R & D Corp ソフトウェア開発支援システム
JP2001296996A (ja) * 2000-04-12 2001-10-26 Nec Corp コンポーネントの自動生成装置および表現方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
논문 레거시 시스템의 소프트웨어 컴포넌트화를 위한 재공학 프레임워크.2000.00.00 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8196093B2 (en) 2007-02-14 2012-06-05 Samsung Electronics Co., Ltd. Apparatus and method for componentizing legacy system
KR101371619B1 (ko) 2007-02-14 2014-03-06 삼성전자주식회사 레거시 시스템을 컴포넌트화하는 장치 및 방법

Also Published As

Publication number Publication date
KR20030056295A (ko) 2003-07-04

Similar Documents

Publication Publication Date Title
KR101314949B1 (ko) 통합 환경 생성기
Shaw et al. Abstractions and implementations for architectural connections
KR100501410B1 (ko) 서블릿 프로그램의 재사용 가능한 비즈니스 로직으로부터이제이비 컴포넌트를 생성하는 시스템 및 방법
Guerra et al. Automated verification of model transformations based on visual contracts
US7975233B2 (en) Automatic conversion of a textual language into a graphical program representation
US20080022264A1 (en) Automatic Conversion of Text-Based Code Having Function Overloading and Dynamic Types into a Graphical Program for Compiled Execution
Behjati et al. SimPL: a product-line modeling methodology for families of integrated control systems
Rademacher et al. Graphical and textual model-driven microservice development
CN112363694B (zh) Fmu文件及求解器运行环境与工业软件的集成方法
CN113626026B (zh) 一种支持复杂模型结构转换的代码生成方法
CN115061772B (zh) 一种多领域仿真模型集成方法及系统
CN114819553A (zh) 基于工作流引擎的动态配置方法、装置、设备及存储介质
O'Brien et al. SEEK: Accomplishing enterprise information integration across heterogeneous sources.
Freitas et al. Justmodeling: An mde approach to develop android business applications
KR100496868B1 (ko) 레가시 시스템으로부터 설계 패턴 추출을 통한 컴포넌트의생성 장치 및 방법
Dejanović et al. A domain-specific language for defining static structure of database applications
Lochmann et al. An integrated view on modeling with multiple domain-specific languages
Frey et al. MAMBA: A measurement architecture for model-based analysis
Manev et al. Facilitation of IoT software maintenance via code analysis and generation
Mendonça et al. Developing an approach for the recovery of distributed software architectures
Alshareef Activity specification for time-based discrete event simulation models
Santos et al. Towards a reference architecture for ADM-based modernization tools
Pan et al. Automated Design Space Exploration for Resource Allocation in Software-Defined Vehicles
Schiedermeier et al. FIDDLR: streamlining reuse with concern-specific modelling languages
Park et al. A component model supporting decomposition and composition of consumer electronics software product lines

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130219

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140508

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160425

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee