KR100512758B1 - 설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법 - Google Patents

설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법 Download PDF

Info

Publication number
KR100512758B1
KR100512758B1 KR10-2002-0077300A KR20020077300A KR100512758B1 KR 100512758 B1 KR100512758 B1 KR 100512758B1 KR 20020077300 A KR20020077300 A KR 20020077300A KR 100512758 B1 KR100512758 B1 KR 100512758B1
Authority
KR
South Korea
Prior art keywords
reengineering
information
design
architecture
legacy
Prior art date
Application number
KR10-2002-0077300A
Other languages
English (en)
Other versions
KR20040049505A (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-2002-0077300A priority Critical patent/KR100512758B1/ko
Publication of KR20040049505A publication Critical patent/KR20040049505A/ko
Application granted granted Critical
Publication of KR100512758B1 publication Critical patent/KR100512758B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

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

본 발명은 업무의 핵심적인 로직을 포함하고 있는 레거시 시스템들을 새로운 기능적, 환경적 요구를 충족시킬 수 있는 새로운 시스템으로 재공학하는 설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법에 관한 것이다.
본 발명은 레거시 시스템의 다양한 산출물 및 레거시 영역의 특징들을 분석하고, 레거시 시스템의 설계 정보를 복구하여 재공학을 통해 개발될 새로운 시스템의 아키텍쳐로 정의한다. 또한, 재공학 과정 중에 자주 발생하는 보편적인 문제들과 그 해결책들을 재사용 자산(Assets)으로서 활용될 수 있도록 설계 패턴으로 식별하고, 이를 재공학을 통해 개발될 시스템의 구성 요소로서 적용하여 시스템의 설계로 전개한다. 따라서 본 발명에서 제시하는 방법을 통하여, 추상화된 레거시 시스템의 설계 정보와 아키텍쳐 정보를 다양한 산출물과 영역 분석을 통해 복구함으로써 레거시 시스템의 이해를 증가시킬 수 있고, 재공학 시스템의 아키텍쳐를 구성하는 고품질의 재사용 요소로 사용할 수 있어 레거시 시스템의 유지보수에서 추구하는 고품질의 고생산성을 기존 시스템의 안정성과 신뢰성 기반으로 실현할 수 있다.

Description

설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법{Method for architecture-based reengineering using design patterns}
본 발명은 업무의 핵심적인 로직을 포함하고 있는 레거시(Legacy) 시스템들을 새로운 기능적, 환경적 요구를 충족시키는 새로운 시스템으로 변경하는 재공학(Reengineering) 기술에 관한 것으로, 더욱 상세하게는 설계 패턴(Design Pattern)을 이용한 아키텍쳐 기반의 재공학 방법에 관한 것이다.
최근 들어, 다양한 웹 상의 서비스 확대 및 컴포넌트 기반 개발 방법(Component Based Development)에 대한 중요성이 점차 증가하면서 과거의 기술로 개발되어진 업무의 중요 지식과 프로세스들을 컴포넌트 기반 웹 환경으로 변경하는 재공학(Reengineering)에 관한 연구가 활발해지고 있다. 레거시(Legacy) 시스템들은 개방성과 표준화 미흡으로 시스템 자체의 융통성이 매우 부족하며, 사용자가 기대하는 친밀한 사용자 인터페이스(User Interface)를 통해 동적인 의사 결정이 가능한 상호 대화적(interactive) 방식을 지원할 수 없다. 따라서, 레거시 시스템의 특성 및 영역 특수성이 명확히 반영될 수 있는 아키텍쳐를 생성하고, 독립적인 모듈로서 이들을 구성할 수 있어야 한다.
그런데 종래의 재공학 기술은 프로그램의 구문 분석에 초점을 두고 진행되어 왔다. 구문 분석 중심의 접근은 프로그램 구조와 흐름 분석에는 효과적이나, 레거시 시스템이 속한 영역 내에서의 의미와 역할의 이해, 핵심 요소에 대한 공통 자원 확보, 그리고 변환을 위한 지침 획득 등에서 큰 한계점을 가지고 있다. 또한, 지속적으로 발생하는 재공학 요구를 수용하기 위한 모듈을 지원할 수 있는 아키텍쳐 기반의 구조를 형성하지 못한다.
최근에는 패턴, 프레임워크, 컴포넌트 등을 포함하는 아키텍쳐 기반의 재공학 기술을 통해 이러한 한계점을 극복하고자 시도하고 있으나 영역에 관한 전문 지식을 시스템 상으로 표현하고 매핑함에 있어 큰 어려움을 가지고 있는 실정이다. 즉, 재공학과 관련된 선행 연구로서 한국 특허공개번호 2000-0031432 호로 공개된 "절차지향 프로그램을 객체지향 프로그램으로 변환하기 위한 분석방법"은 절차적 프로그래밍에서 객체지향 프로그래밍으로 변환하기 위해 기존 시스템의 원시 코드를 분석하고 이를 중간 매개 언어로 변환한 후, 관계성을 설정한 다음, 이를 다시 객체 지향 시스템의 코드를 생성하는 것이다.
또한, 미국특허 등록 제 5,475,845 호로 공개된 "객체지향 응용을 절차적 운영체제에 인터페이스하기 위한 랩퍼 시스템(Wrapper System For Interfacing An Object-oriented Application To A Procedural Operating System)"은 특정 영역에 한정된 시스템을 대상으로 레거시 시스템의 근본적인 현대화 작업이 아닌 단순히 웹 환경이나 다른 플랫폼과의 연동을 위한 연계(Wrapping)에 초점을 둔다. 그런데 이러한 종래의 재공학 기술들은 레거시 시스템이 속한 영역 내에서의 의미와 역할의 이해, 핵심 요소에 대한 공통 자원 확보, 그리고 변환을 위한 지침 획득 등이 어려운 문제점을 가지고 있고, 재공학 요구를 수용하기 위한 아키텍쳐 기반의 구조를 형성하지 못하는 문제점이 있다.
본 발명은 이와 같은 기존 재공학 방법의 문제점을 해결하기 위해 레거시 시스템의 산출물 및 영역 분석을 통해 개발된 아키텍쳐를 기반으로 레거시 시스템의 재공학 시 공통적으로 발생하는 문제와 그 해결책들을 구조화한 재공학 설계 패턴들을 적용하고, 이를 상세한 설계 구조로 확장시킬 수 있는 설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법을 제공하는데 그 목적이 있다.
본 발명에서 제시하는 아키텍쳐 기반의 재공학 접근은 레거시 시스템의 전체적인 뷰(View)를 파악하여 정확한 레거시 시스템의 특성을 표현하며, 필수적인 역할을 담당하는 독립적인 컴포넌트 단위로 추상화시킴으로써, 레거시 시스템의 이해와 재공학에서의 생산성을 향상시킬 수 있음은 물론, 향후 지속적으로 요구되는 유지보수에 대해 효과적으로 대처하여 레거시 시스템의 진화 계획 수행에 도움을 줄 수 있다.
상기 목적을 달성하기 위한 본 발명은 레거시 시스템의 재공학을 위해서 영역 지식 및 산출물 정보들을 수집하는 단계; 상기 레거시 시스템으로부터 데이터 정보, 단위 프로그램 정보, 시스템 전체 구성 정보를 식별하는 프로그램 분석단계; 영역 정보를 바탕으로 상기 레거시 시스템을 구성하고 있는 주요 데이터 구조 정보를 추출하고, 어떠한 기능 단위로 구성되어 있는지를 식별하며, 전체 시스템의 업무 흐름을 시스템의 외부 혹은 내부 사건 혹은 시간의 경과 등으로 인해 시스템의 주요 프로세스가 어떻게 진행되는지를 파악하여 서브 시스템들 간의 계층 도구를 생성하는 설계 정보를 복구하는 단계; 재공학에 대한 적절한 문제와 그 해결책으로 재공학 아키텍쳐 상으로 설계 패턴을 매핑하는 단계; 및 상기 매핑된 설계 패턴들이 가지고 있는 구조 정보를 바탕으로 재공학 아키텍쳐 상에서 상세화되어 재공학 시스템의 설계로 변환하는 단계;를 포함하는 것을 특징으로 한다.
즉, 본 발명은 레거시 시스템의 원시 코드뿐 아니라 관련된 모든 산출물로부터 추상화 심볼 테이블(AST: Abstract Symbol Table)을 정의하고, 이를 바탕으로 레거시 시스템의 기능 정보, 데이터 정보, 행위 정보를 분석하며, 레거시 시스템과 관련된 영역의 참조 모델을 통해 레거시 시스템의 정확한 의미가 포함되어진 아키텍쳐 정보를 복구한다.
또한, 분석된 레거시 산출물 정보 및 영역 정보들을 설계 수준의 아키텍쳐 정보로 정제하고 추상화함으로써 개발할 재공학 시스템의 아키텍쳐를 정의하고, 레거시 시스템의 재공학 시 반복적으로 발생하는 문제점과 그 해결 방안들을 기존에 정의된 설계 패턴 및 그 것들의 수정 작업을 통해 획득한 재공학 패턴으로 식별하여 재공학을 통해 개발될 시스템의 아키텍쳐에 배치한다. 또한 배치된 재공학 설계 패턴들을 분석된 레거시 분석 정보에 기초하여 확장 및 전개함으로써 목표로 하는 새로운 재공학된 시스템의 설계로 전개한다.
본 발명에서 중점적으로 사용하는 설계 패턴은 설계 문제의 추상화와 특정 영역에 대한 공통적인 해결책을 구성 요소간의 관련성을 통해 정의함으로써 공통 영역의 어플리케이션 구축에서 인증된 설계 경험들을 재사용할 수 있는 기회를 제공해준다. 설계 패턴을 통해 추상화된 경험적 지식의 재사용에서 자신의 의도를 반영하고 자동화 개발 프로세스의 도입을 통한 아키텍쳐 공유로 표준화된 재사용 결과물들을 획득하고 시스템 개발에 적용할 수 있다.
일반적으로 설계 패턴은 오로지 순공학 과정에서 유용한 것으로만 알려져 있다. 또한 실제적인 재사용 구현물로서는 적절하지 않은 것으로 알려져 있다. 하지만 재공학 과정에서 설계 패턴을 이용함으로써 레거시 시스템의 아키텍쳐 및 객체 모델을 복구하여 레거시 시스템의 이해도를 증가시키며 보편적 관점에서의 모델 수준의 재사용 요소를 생성할 수 있다. 또한 설계 패턴을 컴포넌트를 구성하는 요소들의 패키징 단위로 정의하고, 컴포넌트의 아키텍쳐 정의에 이용함으로써 보다 추상화된 재사용 단위로서 이용할 수 있다.
본 발명에서는 재공학 과정에 설계 패턴을 적용하는 목적을 다음과 같이 두 가지로 설명한다. 첫 번째는 코드 중심의 구문 분석에서 한계를 가지던 레거시 시스템이 속한 특정 영역의 컨텍스트(Context) 의미 파악을 향상시킴으로써 업무 지향적인 흐름 파악을 가능하게 하며, 이를 통해 레거시 시스템의 이해를 높이고자 한다. 두 번째, 레거시 시스템에서 식별된 핵심 컴포넌트들을 재공학하기 위한 구조화된 틀을 형성하고, 정규화된 양식으로 레거시 정보들을 실현하고 통합하기 위한 경험적인 지침을 제공하기 위해서이다.
이하, 본 발명의 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 도 1은 본 발명에서 제시하는 설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법의 전체 흐름도이다.
도면을 참조하면, 영역지식 및 산출물 수집 단계(100)에서는 영역 전문가 및 레거시 시스템가로부터 전문적인 정보와 재공학 과정에 특징적인 지침들을 조언받아 재공학의 대상이 되는 레거시 시스템에 관련된 모든 산출물들과 관련 정보들을 준비하고, 프로그램 정보 분석단계(110)에서는 레거시 프로그램의 구문 및 의미 정보들을 분석한다.
다음으로, 설계 정보 복구 단계(120)에서는 레거시 시스템의 정적 구조 및 기능, 행위 정보를 분석하여 추상화시킨 후, 단계 130에서 목표로 하는 재공학되어진 시스템의 아키텍쳐 복구를 위해 충분한 정보가 분석되어졌는지를 검사한다. 즉, 설계 정보를 복구하는 단계(120)에서는 영역 정보를 바탕으로 레거시 시스템을 구성하고 있는 주요 데이터 구조 정보를 추출하고, 어떠한 기능 단위로 구성되어 있는지 식별하며, 전체 시스템의 업무 흐름을 시스템의 외부 혹은 내부 사건 혹은 시간의 경과 등으로 인해 시스템의 주요 프로세스가 어떻게 진행되는지를 파악하여 서브 시스템들 간의 계층도구 생성한다.
단계 130에서 검사 결과 충분한 정보가 분석되었으면, 재공학 시스템의 아키텍쳐 정의 단계(140)에서 이전 단계를 거치는 동안 수집, 분석된 정보들을 모델링하고 그룹핑하여 정제함으로써 재공학을 통해 개발할 시스템의 아키텍쳐를 정의한다. 그리고 적용할 설계패턴 식별단계(150)에서는 재공학에 공통적인 문제점과 그 해결책들을 설명하는 재공학을 위한 설계 패턴들을 식별한 후, 아키텍쳐 상으로 설계패턴 매핑단계(160)에서 정의된 아키텍쳐 상에 배치한다.
이어 재공학 시스템으로 설계 상세화 단계(170)에서는 설계 패턴들을 가지고 있는 고유의 개별 구조들로 대치하고 확장시킴으로써 재공학 시스템의 설계로 상세화시켜 레거시 시스템 및 영역의 특징들이 잘 반영되어진 일반적인 의미를 갖는 재공학 시스템의 설계를 완성한다.
도 2는 도 1의 단계 중 영역 지식 및 산출물 수집(110) 단계를 수행하기 위한 상세 알고리즘이다.
도면을 참조하면, 단계 200에서는 수집할 산출물의 출처를 확인하여 수집할 산출물의 범위와 종류 및 이것들을 보조할 수 있는 대체 산출물을 결정하고, 이에 따라 산출물을 수집한다. 여기서, 수집된 산출물은 단지 레거시 시스템의 원시 코드만을 의미하는 것이 아니라 재공학을 위해 필요한 모든 자원들, 즉, 개발 계획서, 요구 사항 정의서, 설계 문서, 실행 코드, 사용자 매뉴얼 등 시스템 개발 과정에서 직접적으로 생산된 문서와 시스템 운영 및 유지보수에 관련된 문서 모두를 포함한다.
그리고 단계 201에서는 수집된 산출물로부터 산출물의 이름과 종류, 대표 기능과 세부 기능, 담당 프로그램 모듈, 개발 및 운영 환경, 레거시 시스템의 개발, 운영시의 문제점 등을 파악하고, 단계 202에서는 레거시 시스템의 일반적인 특징들을 참조할 수 있는 도메인을 선정하여 대략적인 레거시 시스템의 유형을 작업 프로세스 형태 및 실행 환경을 중심으로 파악한다. 여기서, 작업 프로세스 형태에는 온라인 트랜잭션 프로그램, 배치 프로그램, 일반적인 서브 프로그램 등이 있으며, 실행 환경의 종류에는 단일 시스템, 클라이언트/서버 시스템, 분산 시스템 등이 있다
다음으로, 단계 203에서는 레거시 시스템과 관련된 전문가(개발자, 운영자, 영역 전문가)과의 면담을 통해, 레거시 시스템의 개발과 운영상의 핵심 이슈와 기능성, 특별한 제약 사항들, 영역 공통적인 필수 요구, 시스템 변경 내역과 주요 오류 내용 등에 대한 정보를 파악한다. 이어 단계 204에서 영역에 대한 핵심 기능 블록 및 이들 사이의 이벤트 흐름과 제약 사항 등을 파악하고, 단계 205에서 영역에서 일반적으로 참조할 수 있는 시스템 유형인 영역의 참조 모델을 선택한다.
마지막으로, 단계 206에서 레거시 시스템의 화면 흐름 순서와, 네트워킹 형태, 데이터베이스 접근 및 조작 형태, 외부와의 연동 상태 등의 실행 상태 등을 파악함으로써, 수집된 산출물과 관련된 영역의 일반적 특성 정보를 파악한다.
도 3은 도 1의 프로그램 정보 분석단계(110)의 수행을 위한 상세 알고리즘이다. 프로그램 정보 분석단계(110)는 원시 코드(301)를 대상으로 구문 정보 및 의미 정보를 파악하고 코드 재구조화를 수행함으로써, 다음 단계인 아키텍쳐 복구 단계에서 이용할 정보를 생성한다.
도면을 참조하면, 단계 302에서는 원시코드(301)로부터 레거시 프로그램을 구성하는 어휘를 분석하여 심볼 테이블을 작성하고, 프로그램 언어의 구문 규칙에 맞는 파서 트리를 생성한 후, 단계 303에서 의미 정보들을 생성할 수 있는 AST(Abstract Syntax Table)를 정의하여, 차후 분석하고 파악할 의미 정보들을 정의한다.
다음으로, 단계 304에서는 변수를 정의하거나 사용한 프로그램이나 서브 모듈에 대한 정보 및 변수의 이름과 유형을 분석한 변수 관계성 테이블을 작성하고, 단계 305에서 시스템 전역에서 사용된 변수의 흐름 정보를 변수 흐름 추적 테이블을 작성하여 기록한다. 그리고 단계 306에서 한 프로그램 내에 존재하는 서브 모듈간의 호출 관계는 서브루틴을 노드(Node)로, 이들 간의 관계성을 방향성 에지(Edge)로 표현한 서브루틴 호출 그래프를 작성하여 파악하고, 단계 307에서 개별 서브루틴 내의 제어 흐름은 각 문장을 노드로, 실행 순서를 방향성의 에지로 표현한 제어 흐름 그래프를 작성하여 파악한다.
이어 단계 308에서는 단일 프로그램 내의 정보 분석이 끝난 후, 시스템 전체를 구성하는 프로그램간의 관계성 정보를 개별 프로그램을 노드로 하고, 이들간의 관련성을 에지로 표현한 프로그램 호출 그래프를 생성하고, 단계 309에서는 프로그램(파라그래프)과 파일(테이블) 간의 참조 정보를 파악한다. 미적인 연관성 단위인 워크플로우의 식별은 프로그램 혹은 서브 모듈과 관계된 파일이나 데이터베이스의 테이블 정보를 나타내는 프로그램/파일 참조 테이블 작성을 통해한다(310).
마지막으로, 코드 재구조화 단계(311)에서는 프로그램의 이해를 용이하게 하고 재공학의 생산성을 향상시키지 위해 레거시 프로그램 로직의 구조화를 수행한다. 이때 레거시 언어가 COBOL이라면, GOTO 문, 크로스 루프, 과도한 중첩 IF문(nested IF 문), 임베디드(Embedded) 상수 및 리터럴, CICS 프로그램의 HANDLE Commands 등이 있는지 확인하여 수행(PERFORM) 문으로 대체한다.
따라서 이 단계의 결과로서 프로그램 분석 정보와 재구조화된 코드(312)가 생성된다.
도 4는 도 1에서 설명된 단계 120, 130, 140 부분을 걸쳐 수행되는 아키텍쳐 정보 복구를 위한 상세 알고리즘이다.
도 4를 참조하면, 재구조화된 원시 코드, 레거시 시스템의 분석 정보, 참조 문서(401)를 입력으로 받아 레거시 시스템의 영역에서 공통적으로 적용될 수 있는 공통의 재사용 개념들을 구체화한 요소들인 알고리즘, 데이터 구조, 라이브러리, 패키지, 입/출력 조작문 등을 정의하고(402), 정의한 패턴에 맞는 코드를 찾기 위해 레거시 프로그램을 탐색하여 레거시 프로그램으로부터 3가지 유형의 UI 코드 패턴, 비즈니스 로직 코드 패턴, 데이터베이스 관련 코드 패턴을 식별한다(403).
이때 COBOL일 경우, 사용자 인터페이스 코드 패턴은 워크스테이션(WORKSTATION) 파일 부분과 각 패러그래프의 스크린 (DISPLAY) 정보 워킹 스토리지(WORKING-STORAGE), 스크린 섹션(SCREEN SECTION)에 정의된 스크린 정보를 추출하고, 비즈니스 로직 코드 패턴은 링킹 스토리지(Linking Storage) 부분이나, 77 섹션 부분을 중심으로 추출한다. 그리고 데이터베이스 코드 패턴은 디스크(DISK) 파일에서의 입출력 문(I/O statement)과 관련된 부분(SQL or 4GL 코드)을 식별한다.
이어 주요 데이터 구조에 대한 정보를 추출함으로써 레거시 시스템의 정적인 구조에 대한 보다 효율적인 이해를 돕기 위해(즉, 데이터 정보를 이해하기 위해) 단계 404에서는 각 데이터베이스 관계(Relation) 별로 주요 키(Primary Key)와 엔티티를 클러스터링하고 엔티티의 요소 정보들을 정제하며 속성들을 추출한다.
그리고 단계 405에서는 레거시 시스템을 구성하고 있는 기능적인 관점에서 어떠한 기능 단위로 구성되어 있는지를 이해하기 위해 프로그램을 나타내는 상위 유즈 케이스와 서브 모듈을 나타내는 하위 유즈 케이스, 유즈 케이스의 주체인 행위자와 이들 간의 관계성을 추출하여 유즈 케이스 다이어그램을 작성한다.
다음으로, 단계 406레서는 시스템의 외부 혹은 내부 사건 혹은 시간의 경과 등으로 인해 시스템의 주요 프로세스가 어떻게 진행되는지를 행위적 혹은 동적인 측면에서 이해하기 위해 유즈 케이스들을 프로세스로 매핑 시키고, 전 단계에서 파악되어진 프로그램간의, 서브 모듈간의 제어 흐름 및 데이터 흐름을 추가하여 프로세스 흐름도를 작성한다.
마지막으로, 단계 407에서는 이전에 작성된 모든 분석 정보들을 바탕으로 생성/읽기/갱신/삭제(CRUD: Create, Read Update Delete) 메소드를 적용하여 독립적인 기능 모듈인 서브 시스템을 추출하고, 이들 간 호출 관계 및 계층 정보를 정제함으로써, 목표로 하는 제공되어진 시스템의 모듈 아키텍쳐 다이어그램(408)을 작성한다.
다음 표 1은 본 발명에 따라 재공학 수행 시 공통적으로 해결해야만 하는 문제점들이고, 표 2는 재공학 과정에서 적용될 수 있는 설계 패턴의 유형을 분류, 정리한 것이다.
①레거시 시스템들의 도메인 지향의 핵심적인 프로세스를 구문적인 코드분석을 통해 어떻게 획득하는가?②정확한 레거시 시스템의 요구를 어떻게 확보하며, 이를 어떤 방법으로 새로운 시스템에 반영하는가?③레거시의 핵심부분들을 어떻게 재구축하고 문서화하며, 재사용하는가?④레거시 시스템의 취약부분들을 어떻게 새로운 컴포넌트로 대체시키는가?⑤레거시 시스템의 재공학 전략은 어떻게 결정하는가?⑥레거시 시스템의 자료정보구조를 어떻게 새로운 시스템에서 활용하는가?⑦인터페이스를 통한 랩핑을 어떻게 처리하는가?⑧변환(Transformation)시 레거시 시스템과의 일치성을 어떻게 확인하는가?⑨기능성의 변화없이 레거시시스템 전체를 어떻게 개방환경으로 이주(Migration)하는가?⑩진화적인 전개를 위한 레거시시스템의 맞춤(Tailoring)부분에 대한 지침을 어떻게 제시하는가?
유형 유형 후보패턴 특성
Gamma패턴 GUI상호작용설계 Mediator 레거시 시스템의 내부처리 부분과 GUI 부분을 분리하여, 간단한 외부의 인터페이스에 의한 접근을 허용함으로써 레거시 시스템의 복잡한 상호작용을 제거함.
모듈간의 독립적분리 MediatorCommand 기능적인 흐름에서 순차적인 서브모듈의 집합으로 구성되는 복잡한 레거시 시스템 내의 결합도를 낮춤
모듈의 계층관계설립 MediatorFacade 구조적인 서브모듈의 집합으로 구성되는 복잡한 레거시 시스템 내의 결합도를 낮춤으로써 계층관계 설정
레거시 처리의 인터페이스조절 Template 레거시 시스템의 처리모듈에 대한 적절한 인터페이스 제공
상태제어 State 프로세스 전이의 상태와 전체 시스템의 상태를 제어하고 모니터링
통신인터페이스 Strategy, Template 하나의 인터페이스를 통해 다양한 외부 요구에 대한 응답을 제공할 수 있도록 인터페이스에 의한 패키징 제공
랩핑 기능 Facade, Adaptor,Proxy 레거시 처리 로직을 실행하는 객체의 위치나 구현의 상세함을 숨기기 위한 랩핑 서비스 제공
동적인 객체실형 Builder,Factory Method 재구조화된 객체들이 동적으로 실행될 수 있도록 처리 알고리즘의 캡슐화
기타 로직추출 및 컴포넌트화 Composite와Facade의 혼합 레거시의 로직을 재사용 가능한 컴포넌트 형태로 구축
처리 프로세싱의 이주 Proxy와 adapter의혼합 3-tier 아키텍쳐로의 변환시, 중간의 처리 계층으로 레거시 시스템의 로직을 전달하고, 저장계층으로의 연결 설정
영역특성 반영 Abstract Factory와 Prototype 유사한 레거시 시스템 군에 대한 도메인을 모델링하고 레거시 시스템의 정보를 설계하고 활용할 수 있는 아키텍쳐 제공
특성 맞춤 Abstract Factory와 Strategy 재구조화된 레거시 시스템의 Hot spot 부분의 정의와 그 부분에 대한 독립적인 알고리즘에 의한 재구축 제원
상기 표 2와 같이 재공학 패턴들은 기존에 순공학 과정에서 보편적인 설계 원칙으로 적용되고 있는 감마(Gamma)의 패턴들은 물론, 상기 표 1에서 나열한 재공학을 위한 시스템 요구에 대한 해결책으로써 새롭게 정의된 것(기타유형)들로 구성된다. 전자의 감마 패턴들은 일정한 설계 구조가 형성되어져 있으며 구현을 위한 템플리트 코드는 물론 연관된 다른 패턴과의 상호작용 양식 및 그 결과에 대한 상반 관계가 명시되어 있어 재공학 과정에서 쉽게 이용될 수 있다.
반면에 후자의 기타 패턴은 문제가 발생하는 경우와 그에 따른 해결책을 텍스트 형식으로 제시함으로써 재공학자가 적절한 맞춤의 과정을 위한 기회를 제공하고, 패턴간의 통합을 위한 많은 융통성을 제공해 줄 수 있다.
도 5는 본 발명에 따라 상기 표 2에서 분류된 설계 패턴들을 실제 레거시 시스템의 재공학을 위해 적용한 예이다. 도 5의 사례로는 서블릿 프로그램을 J2EE 아키텍쳐의 EJB 컴포넌트로 변환하는 프로젝트(Servlet2EJB)에 적용한 것이다.
도 5를 참조하면, 상위의 Abstract Factory(501) 패턴과 Prototype 패턴(502)은 영역과 관련된 패밀리 정보를 획득하고, 이에 대한 인터페이스를 제공하며 실제 다양한 타입의 개별 정보를 생성하기 위해 적용하였다.
그리고 Template 패턴(503)은 레거시 서블릿의 다양한 언어가 가진 업무 정보를 분석하고 투명한 접근 정보로 저장하기 위해 사용되었으며, Composite 패턴(504)과 Facade 패턴(505)은 동일 구조로 다양한 형태의 변환 처리 및 이를 위한 단일화된 인터페이스 제공을 위해 사용하였다. 그리고 생성기를 위해 생성 규칙을 EJB 컴포넌트 유형에 따라 다양하게 준비하고 이것들을 실제 코드 생성에서 독립적인 알고리즘으로 이용하기 위해 Strategy 패턴(506)과 Factory 패턴(507)을 이용하였다.
도 6은 본 발명에 따라 서블릿을 EJB로 변환하기 위해 도 5에서 정의한 패턴 구조의 테두리 안에서 개별 패턴들이 제공하는 설계 결정을 위한 지침들을 이용하여, 그에 부합되는 클래스 구조로 상세화한 것이다.
도 6을 참조하면, 클래스 구조를 살펴보면 엔티티 빈(601:Entity Bean)과 세션 빈(602: Session Bean) 위에 맵핑 템플레이터(603: Mapping Templator)와 코드 템플레이터(604: Code Templator)가 위치하고, 라이브러리(605: Library)와 소스(606: Source) 위에 코드 제어(607: Code Control)와 코드 생성기(608: Code Generator), DB매니져(609: DB Manager)가 있고, 코드 템플레이터(604)와 코드 생성기(608) 위에 EJB 생성기(610: EJB Generator)가 위치한다.
또한 인터페이스(611: Interface)와 빈 클래스(612: Bean Class) 위에 EJB 컴포넌트(613)와 SQL 코드 프로세서(614)가 있고, 이들은 EJB 생성기(610)와 함께 EJB 추출기(615)로 연결된다. Java(617)와 HTML(618), SQL(619), 서블릿(620)이 서블릿 분석(621: Servlet Analysis)으로 연결되고, EJB 추출기(615)는 분석DB(616)를 거쳐 서블릿 분석(621)으로 연결된다. 아키텍춰 정보(624)와 스토리지 정보(625)는 서블릿 인스턴스(622)와 웹 응용(626: WebApp))으로 연결되고, 서블릿 인스턴스(622: Servlet Instance)는 서블릿정보(623: Servlet Info)로 연결된다.
이와 같이 본 발명의 실시예에서 도 6의 클래스 구조는 실제 재공학 시스템의 설계의 가장 유용한 산물인 클래스들을 식별하고, 이들 간의 관계성을 정의하며 구체적인 제약 사항을 설명한 것으로, 재공학을 통해 개발할 목표 시스템의 아키텍쳐로부터 유도되어진 상세 설계를 제공한다.
이상에서 설명한 바와 같이, 본 발명에 의하면 종래의 레거시 시스템의 재공학 방법에서 미흡했던 영역 한정적인 의미 정보를 설계 패턴의 형태로 식별하고, 이를 영역 및 산출물 분석을 통해 정의되어진 목표로 하는 재공학 시스템의 아키텍쳐 상으로 매핑 시키고 보편적인 패턴의 구조로 상세화시킴으로써, 레거시 시스템의 이해 향상은 물론 장기간에 걸친 레거시 시스템의 진화 모델을 확립함으로써 유지보수성을 향상시켜 새로운 현대화 요구에 융통성 있게 대응할 수 있다.
또한 공통적인 재공학 문제에 대한 선행 경험을 레거시 시스템의 산출물 정보 및 영역 정보가 충분히 반영하여진 시스템 요소인 설계 패턴으로 구조화함으로써, 재공학 시스템의 아키텍쳐를 구성하는 고품질의 재사용 요소로 사용할 수 있어 레거시 시스템의 유지보수에서 추구하는 고품질의 고생산성을 기존 시스템의 안정성과 신뢰성 기반으로 실현할 수 있다.
이상에서 설명한 것은 본 발명의 설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법을 설명한 하나의 실시 예에 불과한 것으로써, 본 발명은 상기한 실시 예에 한정되지 않고, 이하의 특허 청구의 범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변경 실시가 가능한 범위까지 본 발명의 기술적 사상이 미친다고 할 것이다.
도 1은 본 발명에서 제시하는 설계 패턴을 이용한 아키텍쳐 기반의 재공학
방법의 전체 흐름도,
도 2는 도 1의 영역 지식 및 산출물 수집 단계를 수행하는 알고리즘을 도시
한 도면,
도 3은 도 1의 프로그램 분석단계를 수행하는 알고리즘을 도시한 도면,
도 4는 본 발명에 따라 아키텍쳐 정보를 복구하는 알고리즘을 도시한 도면,
도 5는 본 발명에 따라 설계 패턴들을 실제 레거시 시스템의 재공학을 위해
적용한 예를 도시한 도면,
도 6은 도 5에 도시된 개별 설계 패턴들 고유의 클래스 구조를 적용시켜 상
세화된 클래스 다이어그램으로 확장한 예를 도시한 도면.
* 도면의 주요 부분에 대한 설명 *
100: 영역 지식 및 산출물 수집단계 110: 프로그램 정보 분석단계
120: 설계 정보 복구단계
140: 재공학을 통해 개발될 시스템 아키텍쳐 정의단계
150: 적용할 설계 패턴 식별 단계
160:아키텍쳐 상으로 설계 패턴 매핑단계
170: 재공학되어진 시스템으로의 설계 상세화 단계

Claims (5)

  1. 레거시 시스템의 재공학을 위해서 영역 지식 및 산출물 정보들을 수집하는 단계;
    상기 레거시 시스템으로부터 데이터 정보, 단위 프로그램 정보, 시스템 전체 구성 정보를 식별하는 프로그램을 분석하는 단계;
    영역 정보를 바탕으로 상기 레거시 시스템을 구성하고 있는 주요 데이터 구조 정보를 추출하고, 어떠한 기능 단위로 구성되어 있는지를 식별하며, 전체 시스템의 업무 흐름을 시스템의 외부 혹은 내부 사건 혹은 시간의 경과 등으로 인해 시스템의 주요 프로세스가 어떻게 진행되는지를 파악하여 서브 시스템들 간의 계층 도구를 생성하는 설계 정보를 복구하는 단계;
    재공학에 대한 적절한 문제와 그 해결책으로 재공학 아키텍쳐 상으로 설계 패턴을 매핑하는 단계; 및
    상기 매핑된 설계 패턴들이 가지고 있는 구조 정보를 바탕으로 재공학 아키텍쳐 상에서 상세화되어 재공학 시스템의 설계로 변환하는 단계;를 포함하는 설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법.
  2. 제 1항에 있어서, 상기 영역 지식 및 산출물 정보들을 수집하는 단계는,
    레거시 시스템의 핵심 이슈와 기능성 및 레거시 시스템의 산출물 범위와 종류를 결정하고, 해당하는 산출물들의 이름과 종류, 대표 기능과 개발 및 운영 환경 등의 개략정보를 파악한 후, 참조 영역을 선정하고 시스템 유형을 결정하여 레거시 시스템의 핵심 이슈와 기능성 및 도메인 공통 특성과 시스템 변경 내역을 분석하고 레거시 시스템의 핵심 이슈와 기능성 및 도메인 공통 특성과 시스템 변경 내역과 파악함으로써 영역의 참조 모델을 결정하고 실행 상태 정보를 파악하는 것을 특징으로 하는 설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법.
  3. 제 1항에 있어서, 상기 프로그램 분석단계는,
    변수 관계성 테이블 작성을 통해 심볼의 관계성 정보와 입출력 정보를 파악하고 변수 흐름 추적 테이블 작성을 통해 시스템 전역에 사용된 변수 흐름 정보를 파악하며, 서브 모듈간의 호출 관계 및 서브 모듈 내부 제어 흐름, 그리고 프로그램간의 호출 정보를 각각 서브루틴 호출 그래프와 서브루틴 제어 그래프, 프로그램 호출 그래프 작성을 통해 파악하여 의미적인 관련 단위인 워크플로우로 그룹핑한 후, 차후의 분석을 위해 코드 재구조화를 수행하는 것을 특징으로 하는 설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법.
  4. 제 1항에 있어서, 상기 설계 정보를 복구하는 단계는,
    영역에서 공통적으로 적용할 수 있는 코드 패턴 식별하고, 정의된 패턴에 따라 원시 코드 속에서 코드 패턴들을 발견하고 분석하며, 개체 클러스터링을 통한 데이터 구조 및 데이터베이스 참조 모델 정보와, 유즈케이스 다이어그램 작성을 통한 가능적 설계 정보, 그리고 시스템에서 발생하는 내부 사건이나 시간의 경과 등으로 인해 시스템의 주요 프로세스의 진행 정보를 분석하는 것을 특징으로 하는 설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법.
  5. 제 1항에 있어서, 상기 매핑하는 단계는,
    식별된 재공학 설계 패턴들의 리스트의 분류와 이들 패턴들을 재공학 아키텍쳐 상으로 재공학 매핑시키고, 매핑된 설계 패턴들이 가진 고유의 구조로서 확장하는 것을 특징으로 하는 설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법.
KR10-2002-0077300A 2002-12-06 2002-12-06 설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법 KR100512758B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2002-0077300A KR100512758B1 (ko) 2002-12-06 2002-12-06 설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0077300A KR100512758B1 (ko) 2002-12-06 2002-12-06 설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법

Publications (2)

Publication Number Publication Date
KR20040049505A KR20040049505A (ko) 2004-06-12
KR100512758B1 true KR100512758B1 (ko) 2005-09-07

Family

ID=37343900

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0077300A KR100512758B1 (ko) 2002-12-06 2002-12-06 설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법

Country Status (1)

Country Link
KR (1) KR100512758B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100791303B1 (ko) * 2006-08-22 2008-01-04 삼성전자주식회사 빌드 단위의 컴포넌트 생성 장치 및 방법
CN109976727B (zh) * 2019-03-31 2022-07-08 东南大学 一种基于设计模式的mvc架构模式识别方法

Citations (4)

* 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 プログラム部品の自動抽出・再利用装置
US5857194A (en) * 1996-11-07 1999-01-05 General Electric Company Automatic transmission of legacy system data
JP2001296996A (ja) * 2000-04-12 2001-10-26 Nec Corp コンポーネントの自動生成装置および表現方法
KR20030056295A (ko) * 2001-12-28 2003-07-04 한국전자통신연구원 레가시 시스템으로부터 설계 패턴 추출을 통한 컴포넌트의생성 장치 및 방법

Patent Citations (4)

* 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 プログラム部品の自動抽出・再利用装置
US5857194A (en) * 1996-11-07 1999-01-05 General Electric Company Automatic transmission of legacy system data
JP2001296996A (ja) * 2000-04-12 2001-10-26 Nec Corp コンポーネントの自動生成装置および表現方法
KR20030056295A (ko) * 2001-12-28 2003-07-04 한국전자통신연구원 레가시 시스템으로부터 설계 패턴 추출을 통한 컴포넌트의생성 장치 및 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
논문(객체지향 시스템 코드에서 설계 패턴 추출을 위한 역공학 적용과 설계 패턴 자동추출을 위한 알고리즘을 java시스템에 적용하고 설계 패턴의 자동추출을 위한 역공학 및 패턴 재사용을 위한 자동화 도구의 아키텍처를 설계 구현하는 시스템,1998.09 ) *
논문(레거시 시스템의 자원을 이용하여 어플리케이션 개발을 지원하는 방법[숭실대학교 논문집 첨부],2002 ) *

Also Published As

Publication number Publication date
KR20040049505A (ko) 2004-06-12

Similar Documents

Publication Publication Date Title
Di Lucca et al. Reverse engineering Web applications: the WARE approach
EP2228726B1 (en) A method and system for task modeling of mobile phone applications
US20050138603A1 (en) Componentization method for reengineering legacy system
Valerio et al. Domain analysis and framework-based software development
US20020046394A1 (en) Method and apparatus for producing software
US20050149868A1 (en) User interface application development program and development apparatus
Stroulia et al. From legacy to web through interaction modeling
Schneider Components, Scripts, and Glue: A conceptual framework for software composition
US20140222662A1 (en) Intelligent automated online transaction system for automated interaction with online transaction web sites
Calhau et al. An ontology-based approach for semantic integration
CN110221815B (zh) 一种基于本体的控制软件模型的自动生成方法
Sorgalla et al. Applying model-driven engineering to stimulate the adoption of devops processes in small and medium-sized development organizations: the case for microservice architecture
Padgham et al. The Prometheus design tool–a conference management system case study
Pinzger et al. Architecture recovery for product families
Favre et al. Reverse engineering a large component-based software product
Lochmann et al. An integrated view on modeling with multiple domain-specific languages
Zhang et al. Automated Extraction of Grammar Optimization Rule Configurations for Metamodel-Grammar Co-evolution
Saeki Software specification & design methods and method engineering
KR100512758B1 (ko) 설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법
EP1677187A1 (en) A software development method
Martínez-Gárate et al. Model-Driven Approaches for Conversational Agents Development: A Systematic Mapping Study
CN115469860A (zh) 基于指令集的需求到软件领域模型的自动生成方法及系统
Mikkonen et al. On the role of architectural style in model driven development
Manev et al. Facilitation of IoT software maintenance via code analysis and generation
Özgür Comparison of Microsoft DSL Tools and Eclipse Modeling Frameworks for Domain-Specific Modeling in the context of Model-Driven Development

Legal Events

Date Code Title Description
A201 Request for examination
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: 20080805

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee