KR100463837B1 - 엔터프라이즈 빈 추출 장치 및 방법 - Google Patents

엔터프라이즈 빈 추출 장치 및 방법 Download PDF

Info

Publication number
KR100463837B1
KR100463837B1 KR10-2002-0078425A KR20020078425A KR100463837B1 KR 100463837 B1 KR100463837 B1 KR 100463837B1 KR 20020078425 A KR20020078425 A KR 20020078425A KR 100463837 B1 KR100463837 B1 KR 100463837B1
Authority
KR
South Korea
Prior art keywords
extracting
bean
entity
session
java class
Prior art date
Application number
KR10-2002-0078425A
Other languages
English (en)
Other versions
KR20040050568A (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-0078425A priority Critical patent/KR100463837B1/ko
Priority to US10/636,599 priority patent/US20040111704A1/en
Publication of KR20040050568A publication Critical patent/KR20040050568A/ko
Application granted granted Critical
Publication of KR100463837B1 publication Critical patent/KR100463837B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program 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

엔터프라이즈 빈(enterprise bean) 추출 장치 및 방법을 제시한다.
본 발명에 따른 엔터프라이즈 빈 추출 기술은, 서블릿(servlet) 소스 코드가 입력되는 서블릿 소스 코드 입력 수단(servlet source code input unit)과, 입력되는 서블릿 소스 코드로부터 자바 클래스(Java class)를 추출하는 자바 클래스 추출 수단(Java class extraction unit)과, 추출된 자바 클래스를 상호 관련된 클래스들끼리 그룹핑하는 자바 클래스 클러스터링 수단(Java class clustering unit)과, 클러스터링된 클래스들로부터 세션 빈(session bean)을 추출하는 세션 빈 추출 수단(session bean extraction unit)과, 클러스터링된 클래스들로부터 엔터티 빈(entity bean)을 추출하는 엔터티 빈 추출 수단(entity bean extraction unit)과, 추출된 세션 빈과 엔터티 빈으로부터 빈(bean)들간의 관계(relationship) 정보를 추출하는 빈들간의 관계 정보 추출 수단(relationship information extraction unit)으로 구성되어, 추출된 자바 클래스를 대상으로 SQL(Structured Query Language) 문장 포함 여부에 따라 세션 빈 또는 엔터티 빈을 선택적으로 추출하는데 특징이 있다.
즉, 본 발명은, 서블릿 기반으로 개발된 기존의 웹 어플리케이션(Web application)의 비즈니스 로직(business logic)을 재사용(reuse)할 수 있는 바, 새로운 웹 애플리케이션의 개발 기간을 단축시키고, 개발 비용이 크게 절감되는 효과가 있다.

Description

엔터프라이즈 빈 추출 장치 및 방법{METHOD AND APPARATUS FOR EXTRACTING AN ENTERPRISE BEANS FROM SERVLET SOURCE CODE}
본 발명은 엔터프라이즈 빈 추출 기술에 관한 것으로, 특히, 서블릿(servlet) 소스 코드로부터 세션 빈과 엔터티 빈을 효율적으로 추출하는데 적합한 엔터프라이즈 빈 추출 장치 및 방법에 관한 것이다.
90년대에 등장한 웹(web) 환경은 단순한 게시판(Bulletin Board System : BBS) 프로그램에서부터 전자상거래(electronic commerce)에 이르기까지 여러 가지 소프트웨어 개발의 초석이 되었으며, 웹 기반의 다양한 프로그램들의 지속적인 발전을 가능하게 하였다. 예컨대, 금융, 행정, 교육 등 기존의 오프라인 상의 업무 환경도 웹 기반으로 변화하였으며, 기 운영된 시스템들도 웹과 연동한 인터페이스(interface)를 제공하게 되었다. 소프트웨어 개발 환경도 변화하여 웹환경을 보다 효과적으로 지원하는 프로그래밍 언어들과 지원 도구들이 연구되고 있다.
이러한 웹 프로그램 개발 언어들 중 하나로 자바를 기반으로 한 "Sun Microsystems"사의 서블릿을 들 수 있다. 이러한 서블릿은 웹 사이트 구축시 기존의 CGI(Common Gateway Interface)의 단점을 보완할 수 있다는 이유로 자바 언어 사용자들에게 각광을 받고 있다.
한편, 다수의 서블릿 기반 웹사이트들이 개발되면서 소프트웨어 재사용에 대한 문제가 대두된다. 대부분의 소프트웨어와 마찬가지로 웹 프로그램도 유사한 도메인(domain)의 경우 유사한 기능들이 많이 있는 바, 해당 기능에 대한 재사용이 가능하다. 예를 들어, 은행 업무를 웹을 기반으로 개발하는 경우, 여신 업무나 대출 업무 등 많은 기능들이 컴포넌트화되어 차후 유사한 도메인에 속하는 애플리케이션 (application) 개발시 재사용될 수 있다.
소프트웨어 재사용 기술은 소프트웨어 공학 분야의 오래된 주제로 단순한 복사 및 붙이기(copy & paste) 기술에서 현재의 소프트웨어 컴포넌트 기술에 이르기까지 계속해서 연구되고 있다. 재사용의 단위를 무엇으로 하냐에 따라 또는 소프트웨어 개발 주기 중 어느 단계의 산출물을 재사용 하느냐에 따라 다양한 개념과 기법들이 소개되었으며 실제 소프트웨어 개발에 활용되고 있다. 또한, 컴퓨팅 환경의 변화에 보조를 같이하여 특정 애플리케이션을 지원하는 재사용 기술들이 등장하고 있다.
현재 크게 대두되는 컴포넌트 모델로는 자바를 기반으로 한 SunMicrosystems 사의 엔터프라이즈 자바 빈(Enterprise Java Bean : EJB) 모델이 있다.
엔터프라이즈 자바 빈은 서버(server)측의 컴포넌트 모델로 외부에 인터페이스를 통해 서비스를 제공하고 컴포넌트 내부는 블랙박스(black-box)로 만들며 엔터프라이즈 빈은 컨테이너(container)라는 미들웨어(middleware)를 통해 분산 애플리케이션에 요구되는 서비스들을 제공받는다. 엔터프라이즈 자바 빈 관련 클래스로는 외부에 제공되는 서비스를 정의하고 있는 리모트 인터페이스(remote interface), 엔터프라이즈 빈의 생성 및 검색 기능을 제공하는 홈 인터페이스(home interface), 외부에 제공되는 서비스에 대한 구현 부분을 가지고 있는 엔터프라이즈 빈(enterprise bean)으로 구성되며 엔터프라이즈 빈은 엔터티 빈(entity bean)과 세션 빈(session bean)으로 구분된다.
세션 빈은 특정 도메인의 비즈니스 로직을 메소드(method)로 제공한다. 세션 빈은 클라이언트(client)간에 공유(share)되지 않으므로 하나의 클라이언트 당 하나의 세션 빈이 활성화된다(activate). 또한, 세션 빈은 비영속적(non-persistent)이므로 세션 빈의 데이터는 데이터베이스에 저장되지 않는다. 세션 빈은 일반적으로 빈이 공유될 필요가 없고 빈의 상태가 영속적이지 않는 경우에 사용된다.
대조적으로, 엔터티 빈은 데이터베이스와 같은 영속적(persistent)인 기억장치(storage device)에 있은 비즈니스 개체(business entity)를 나타낸다. 엔터티 빈은 영속성(persistence), 클라이언트간의 공유(share), 유일한 프라이머리 키(primary key)등을 가진다는 측면에서 세션 빈과 구별된다. 영속성이란 엔터티빈의 상태가 애플리케이션이 종료된 뒤에도 유지됨을 의미한다.
하나의 엔터티 빈은 다수의 클라이언트들에 의해 공유될 수 있다. 다시 말해, 다수의 클라이언트들이 하나의 엔터티 빈을 공유하며 해당 엔터티 빈의 데이터를 변경할 수 있음을 의미한다. 마지막으로 엔터티 빈은 유일한 객체 식별자(object identifier)를 갖는다. 예를 들어, 은행 고객의 경우를 대표하는 엔터티 빈의 경우, 주민등록번호가 프라이머리 키가 될 수 있다
종래에는 COBOL이나 PL/I 등으로 개발된 레거시 프로그램(legacy program)을 엔터프라이즈 빈 기반으로 변환(transformation)하기 위한 기술들이 주류를 이루었다. 이러한 변환을 통해, 레거시 시스템에 대한 웹 환경 지원이 가능하였으며, 컴포넌트 특성상 비즈니스 로직들에 대한 재사용성(reusability)이 증가하게 되었다. 또한, 레거시 시스템에 새로운 기능 추가가 더욱 용이해진다.
도 1은 전형적인 레거시 프로그램 대상(target)의 엔터프라이즈 빈 변환 장치에 대한 블록 구성도로서, COBOL이나 PL/I등의 레거시 프로그램을 대상으로 엔터프라이즈 빈을 추출하여 엔터프라이즈 빈 환경으로 변환(transformation)하는 장치를 나타낸다.
도 1에 도시한 바와 같이, 은행, 행정 등의 기존 레거시 프로그램(101)은 엔터프라이즈 빈 변환 장치(102)를 통해 엔터프라이즈 빈 프로그램(107)으로 변환된다.
이러한 엔터프라이즈 빈 변환 장치(102)는 레거시 소스 코드를 입력받아 분석하는 레거시 코드 분석부(103), 분석된 레거시 코드를 개발자가 쉽게 이해할 수있도록 그래픽으로 보여주는 레거시 코드 시각화부(104), 레거시 코드 분석부(103)의 분석 결과를 근거로 엔터프라이즈 빈을 추출하는 레거시 코드 전용의 엔터프라이즈 빈 추출부(105), 추출된 엔터프라이즈 빈 정보를 바탕으로 자바 소스 코드로 생성하는 엔터프라이즈 빈 생성부(106)로 구성된다.
종래 기술에서는 엔터프라이즈 빈 추출을 위한 대상 시스템이 주로 레거시 시스템이다. 대상 시스템에 따라 레거시 코드 분석부(103), 레거시 코드 시각화부(104), 엔터프라이즈 빈 추출부(105)의 기능은 다르다.
그러나, 서블릿으로 개발된 웹 프로그램으로부터 컴포넌트를 추출하는 기법 및 지원도구가 없으므로 서블릿 소스 코드에 대한 컴포넌트화(componentization) 과정은 개발자의 수작업에 의존할 수밖에 없다. 수작업으로 이루어지는 컴포넌트화 작업은 개발 기간이 많이 걸리게 되며 따라서 개발 비용도 증가한다. 이는 엔터프라이즈 빈 컴포넌트를 통해 개발 효과를 높이는 목표와 어긋나므로 이에 대한 개선이 요구된다.
본 발명은 상술한 요구에 의해 안출한 것으로, 서블릿 기반으로 개발된 기존의 웹 어플리케이션(Web application)의 비즈니스 로직(business logic)을 재사용(reuse)함으로써 새로운 웹 애플리케이션 개발 기간의 단축 및 개발 비용을 절감하도록 한 엔터프라이즈 빈 추출 장치 및 방법을 제공하는데 그 목적이 있다.
이러한 목적을 달성하기 위한 본 발명의 일 실시예에 따르면, 서블릿(servlet) 소스 코드에서 엔터프라이즈 빈(enterprise bean)을 추출하는 장치에 있어서, 서블릿 소스 코드를 입력받는 서블릿 소스 코드 입력 수단과, 입력받은 서블릿 소스 코드로부터 자바 클래스(Java class)를 추출하는 자바 클래스 추출 수단과, 추출된 자바 클래스를 상호 관련된 클래스들끼리 그룹핑하는 자바 클래스 클러스터링(clustering) 수단과, 클러스터링된 클래스들로부터 세션 빈(session bean)을 추출하는 세션 빈 추출 수단과, 클러스터링된 클래스들로부터 엔터티 빈(entity bean)을 추출하는 엔터티 빈 추출 수단과, 추출된 세션 빈과 엔터티 빈으로부터 빈(bean)들간의 관계(relationship) 정보를 추출하는 빈들간의 관계 정보 추출 수단을 포함하는 엔터프라이즈 빈 추출 장치를 제공한다.
본 발명의 목적을 달성하기 위한 다른 실시예에 따르면, 서블릿 소스 코드에서 엔터프라이즈 빈을 추출하는 장치에 적용되는 엔터프라이즈 빈 추출 방법에 있어서, 서블릿 소스 코드와 자바 클래스가 입력되는 단계와, 입력된 서블릿 소스 코드에서 자바 클래스를 추출하는 단계와, 추출된 자바 클래스를 대상으로 SQL 문장을 포함하는지를 판단하는 단계와, 판단 결과 SQL 문장을 포함하지 않으면 세션 빈을 추출하고 SQL 문장을 포함하면 엔터티 빈을 추출하는 단계를 포함하는 엔터프라이즈 빈 추출 방법을 제공한다.
도 1은 전형적인 레거시(legacy) 프로그램 대상(target)의 엔터프라이즈 빈 변환 장치에 대한 블록 구성도,
도 2는 본 발명에 따른 서블릿 기반의 웹 프로그램을 대상으로 하는 엔터프라이즈 빈 변환 장치에 대한 블록 구성도,
도 3은 본 발명에 적용되는 서블릿 기반 웹 프로그램의 구성 요소의 예시 도면,
도 4는 본 발명에 적용되는 엔터프라이즈 빈 기반 웹 프로그램의 구성 요소의 예시 도면,
도 5는 본 발명에 따른 엔터프라이즈 빈 추출 장치에 대한 블록 구성도,
도 6은 도 5의 세션 빈 추출부에 대한 상세 구성도,
도 7은 도 5의 엔터티 빈 추출부에 대한 상세 구성도,
도 8은 본 발명에 따른 서블릿 소스 코드에서 엔터프라이즈 빈을 추출하는 과정의 흐름도,
도 9는 본 발명에 따른 엔터티 빈을 위한 자바 클래스 클러스터링에 대한 흐름도,
도 10은 본 발명에서 제시한 SQL 명령문과 엔터티 빈 메소드(method) 간의 매핑 정보를 나타내는 도표,
도 11은 본 발명에 따른 엔터프라이즈 빈 추출 장치의 시스템 운영에 대한 예시 도면.
<도면의 주요 부분에 대한 부호의 설명>
502 : 서블릿 소스 코드 입력부 503 : 자바 클래스 추출부
504 : 자바 클래스 클러스터링부 505 : 세션 빈 추출부
506 : 엔터티 빈 추출부 507 : 관계정보 추출부
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대하여 상세하게 설명한다.
도 2는 본 발명에 따른 서블릿 기반의 웹 프로그램을 대상으로 하는 엔터프라이즈 빈 변환 장치에 대한 블록 구성도로서, 서블릿 기반의 웹 프로그램을 대상으로 엔터프라이즈 빈을 추출하여 엔터프라이즈 빈 환경으로 변환하는 장치를 나타낸다.
도 2에 도시한 바와 같이, 서블릿 기반 웹 프로그램(201)은 엔터프라이즈 빈 변환 장치(202)를 통해 엔터프라이즈 빈 기반의 프로그램(207)으로 변환된다. 엔터프라이즈 빈 변환 장치(202)는 서블릿 소스 코드를 입력받아 분석하는 서블릿 코드 분석부(203), 분석된 서블릿 코드를 개발자가 쉽게 이해할 수 있도록 그래픽으로 보여주는 서블릿 코드 시각화부(204), 서블릿 코드 분석부(203)의 분석 결과를 근거로 엔터프라이즈 빈을 추출하는 서블릿 전용의 엔터프라이즈 빈 추출부(205), 추출된 엔터프라이즈 빈 정보를 바탕으로 자바 소스 코드로 생성하는 엔터프라이즈 빈 생성부(206)로 구성된다.
서블릿 코드 분석부(203)는 엔터프라이즈 빈 추출시 요구되는 메타(meta) 정보들을 분석한다. 예를 들면, 클래스 이름, 패키지(package) 이름, 메소드 이름 등의 정보를 제공한다.
또한, 서블릿 코드 분석부(203)는 서블릿과 자바 클래스에 포함된 SQL(Structured Query Language) 문장, 예를 들면, "select, update, delete, insert" 등의 문장을 분석하여 추출부(205)로 전송한다.
서블릿 코드 시각화부(204)는 서블릿 소스 코드의 이해를 위해 다양한 다이어그램(diagram)이나 그래프(graph)를 제공한다. 클래스 다이어그램(class diagram)과 컴포넌트 다이어그램(component diagram)을 예로 들 수 있다. 다이어그램은UML(Unified Modeling Language)의 표기법을 따르며 클래스 다이어그램은 입력받은 서블릿 및 자바 클래스들과 그들간의 관계성을 나타내고 컴포넌트 다이어그램은 추출된 엔터프라이즈 빈들과 그들간의 관계성을 나타낸다.
서블릿 전용의 엔터프라이즈 빈 추출부(205)는 세션 빈 추출 과정과 엔터티 빈 추출 과정으로 분류된다. 엔터티 빈 추출은 SQL 문장을 기준으로 이루어지며 입력 받은 서블릿 프로그램이 접근하는 데이터베이스 테이블을 대표한다. 엔터티 빈의 추출 과정은 세션 빈과 달리 파인더 메소드(finder method) 추출 과정이 포함된다.
도 3은 본 발명에서 기술하는 서블릿 기반 웹 프로그램의 시스템 구성도에 대한 하나의 예시 도면이다.
도 3에 도시한 바와 같이, 클라이언트(301)는 웹 브라우저(302) 상의 HTML 페이지(303)를 통해 서버(304)와 통신을 하게 된다. 이때, HTML 페이지(303)를 통해 전달된 서비스 요청은 서버(304)의 서블릿(306)에 전달되며 서블릿들(306, 307)은 자바 클래스(308)를 통하거나 혹은 직접 데이터베이스(309)에 접근하여 클라이언트(301)의 요청을 처리한 후 결과를 돌려보낸다. 서블릿들(306, 307)은 서블릿 엔진(305)에 의해 관리된다.
도 4은 본 발명에서 기술하는 엔터프라이즈 빈 기반 웹 프로그램의 시스템 구성도에 대한 하나의 예시 도면이다.
도 3의 서블릿 기반 웹 프로그램은 이러한 도 4와 같은 엔터프라이즈 기반으로 변환된다.
도 4에 도시한 바와 같이, 클라이언트(401)의 요청은 HTML페이지(403)를 통해 서블릿 엔진(405)에서 관리되는 서블릿들(406, 407)로 전달되며, 해당 서블릿들은 EJB 서버(408)에서 관리되는 세션 빈(409)과 엔터티 빈(411)을 통해 데이터베이스(412)에 접근하며 클라이언트의 요청을 처리한다.
처리 결과는 서블릿을 통해 클라이언트측(401)으로 전달된다.
EJB 서버(408)는 엔터프라이즈 빈의 생성에서부터 소멸까지의 생명주기 전체를 관리한다. 도 3의 경우, 서블릿과 자바 클래스에 비즈니스 로직이 산재해 있지만 도 4에서는 엔터프라이즈 빈이 비즈니스 로직을 포함하며 재사용이 용이하다.
도 5는 본 발명에 따른 엔터프라이즈 빈 추출 장치에 대한 블록 구성도로서, 서블릿을 위한 엔터프라이즈 빈 추출 장치(501)는 서블릿 소스 코드가 입력되는 서블릿 소스 코드 입력부(502), 입력되는 서블릿 소스 코드로부터 자바 클래스(Java class)를 추출하는 자바 클래스 추출부(503), 추출된 자바 클래스를 상호 관련된 클래스들끼리 그룹핑하는 자바 클래스 클러스터링(clustering)부(504), 클러스터링된 클래스들로부터 세션 빈(session bean)을 추출하는 세션 빈 추출부(505), 클러스터링된 클래스들로부터 엔터티 빈(entity bean)을 추출하는 엔터티 빈 추출부(506), 추출된 세션 빈과 엔터티 빈으로부터 빈(bean)들간의 관계(relationship) 정보를 추출하는 빈들간의 관계 정보 추출부(507)로 구성된다.
도 6는 도 5의 엔터프라이즈 빈 추출 장치(501)에서의 세션 빈 추출부(502)에 대한 상세 구성 블록도로서, 세션 빈 클래스 추출부(601), 세션 빈 리모트 인터페이스 추출부(602), 세션 빈 홈 인터페이스 추출부(603)로 구성된다.
세션 빈 클래스 추출부(601)는 리모트 인터페이스와 홈 인터페이스를 통해클라이언트에게 제공되는 메소드들의 실제 구현 부분을 포함하는 세션 빈 클래스의 추출을 담당한다.
세션 빈 리모트 인터페이스 추출부(602)는 세션 빈의 리모트 인터페이스 추출을 담당한다. 리모트 인터페이스는 비즈니스 로직을 수행하는 메소드들을 클라이언트에게 제공한다.
세션 빈 홈 인터페이스 추출부(603)는 세션 빈의 홈 인터페이스 추출을 담당한다. 홈 인터페이스는 세션 빈의 생성 메소드와 파인더 메소드 등을 가진다.
도 7은 도 5의 엔터프라이즈 빈 추출 장치(501)에서의 엔터티 빈 추출부(506)에 대한 상세 구성 블록도로서, 엔터티 빈 홈 인터페이스 추출부(701), 엔터티 빈 리모트 인터페이스 추출부(702), 엔터티 빈 클래스 추출부(703), 프라이머리 키 추출부(704), 파인더 메소드 추출부(705)로 구성된다.
엔터티 빈 홈 인터페이스 추출부(701)는 엔터티 빈의 홈 인터페이스를 추출하며, 엔터티 빈 리모트 인터페이스 추출부(702)는 엔터티 빈의 리모트 인터페이스를 추출하는 기능을 수행한다.
엔터티 빈 클래스 추출부(703)는 엔터티 빈의 빈 클래스를 추출하며, 프라이머리 키 추출부(704)는 엔터티 빈의 프라이머리 키 클래스를 추출하는 기능을 수행한다. 프라이머리 키 클래스는 데이터베이스 테이블의 프라이머리 키를 대신한다.
파인더 메소드 추출부(705)는 엔터티 빈의 기본 메소드 중의 하나인 파인더 메소드를 추출한다.
도 8은 본 발명에 따른 서블릿 소스 코드에서 엔터프라이즈 빈을 추출하는과정의 흐름도이다.
서블릿에서 엔터프라이즈 빈을 추출하는 과정은 서블릿 코드 입력(단계 801), 자바 클래스 추출(단계 802), SQL 유무 판단(단계 803), 세션 빈을 위한 자바 클래스 클러스터링(단계 804), 세션 빈 홈 인터페이스 추출(단계 805), 세션 빈 리모트 인터페이스 추출(단계 806), 세션 빈 클래스 추출(단계 807), 엔터티 빈을 위한 자바 클래스 클러스터링(단계 808), SQL 분석(단계 809), 파인더 메소드 추출(단계 810), EJB 필수 메소드 추출(단계 811), 프라이머리 키 클래스 추출(단계 812), 엔터티 빈 홈 인터페이스 추출(단계 813), 엔터티 빈 리모트 인터페이스 추출(단계 814), 엔터티 빈 클래스 추출(단계 815) 과정으로 구성된다.
자바 클래스 추출(단계 802) 과정은 입력된 서블릿 코드를 분석하여 새로운 자바 클래스를 추출하는 과정이다. 먼저, 서블릿 코드에 포함된 HTML(HyperText Markup Language) 코드와 서블릿 API(Application Program Interface)를 사용한 코드를 제거한 후 doPost(), doGet(), service() 등과 같이 클라이언트의 요청을 처리하는 서블릿 메소드를 자바 클래스 메소드로 변환한다.
SQL 유무 판단(단계 803) 과정에서는 자바 클래스가 SQL 문장을 포함하는지 여부를 판단하는 과정이다. SQL을 포함하지 않은 클래스는 세션 빈 후보가 되고 SQL을 포함하는 클래스는 엔터티 빈 후보가 된다.
세션 빈을 위한 자바 클래스 클러스터링(단계 804) 과정에서는 클래스 클러스터(cluster)에 포함된 클래스들의 연관 관계(association relationship), 집단화 관계(aggregation relationship), 상속 관계(inheritance relationship) 등의 클래스 관계성(relationship)을 판단하여 클러스터링을 수행한다.
세션 빈 홈 인터페이스 추출(단계 805), 세션 빈 리모트 인터페이스 추출(단계 806), 세션 빈 클래스 추출(단계 807) 과정은 각각 세션 빈의 구성 요소인 홈 인터페이스, 리모트 인터페이스, 빈 클래스를 추출하는 과정이다.
엔터티 빈을 위한 자바 클래스 클러스터링(808) 과정에서는 데이터베이스의 테이블 이름에 따라 같은 테이블 이름을 접근(access)하는 클래스들을 클러스터링한다.
파인더 메소드 추출(단계 810), EJB 필수 메소드 추출(단계 811), 프라이머리 키 클래스 추출(단계 812), 엔터티 빈 홈 인터페이스 추출(단계 813), 엔터티 빈 리모트 인터페이스 추출(단계 814), 엔터티 빈 클래스 추출(단계 815) 과정은 각각 엔터티 빈을 구성하는 파인더 메소드, EJB 필수 메소드, 프라이머리 키 클래스, 홈 인터페이스, 리모트 인터페이스, 빈 클래스를 추출하는 과정이다.
도 9는 본 발명에 따른 엔터티 빈을 위한 자바 클래스 클러스터링에 대한 흐름도이다.
엔터티 빈을 위한 클러스터링 과정은 자바 클래스 입력(단계 901), SQL을 포함한 클래스 추출(단계 902), 데이터베이스 테이블 이름 추출(단계 903), 동일한 테이블을 접근하는 클래스 추출(단계 904), 테이블 이름에 따라 자바 클래스 클러스터링(단계 905), 모든 자바 클래스의 처리 여부 판단(단계 906) 과정으로 구성된다.
SQL을 포함한 클래스 추출(단계 902) 과정에서는 입력된 자바 클래스 중 SQL을 포함한 자바 클래스를 추출한다. 해당 클래스들은 엔터티 빈으로 추출된다.
데이터베이스 테이블 이름 추출(단계 903) 과정에서는 자바 클래스의 SQL문장에서 접근하는 테이블 이름을 추출한다.
동일한 테이블을 접근하는 클래스 추출(단계 904) 과정에서는 같은 데이터베이스 테이블을 접근하는 클래스들을 추출한다.
테이블 이름에 따라 자바 클래스 클러스터링(단계 905) 과정에서는 자바 클래스 클러스터링을 수행한다.
모든 자바 클래스의 처리 여부 판단(단계 906) 과정에서는 자바 클래스들이 빠짐없이 하나의 클러스터에 포함되었는지를 점검한다.
도 10은 본 발명에서 제시한 SLQ 명령문과 엔터티 빈 메소드(method) 간의 매핑 정보를 나타내는 도표로서, SLQ명령문과 엔터티 빈 메소드 간의 매핑(mapping) 관계를 나타낸다.
파인더 메소드 추출은 도 10의 매핑 관계를 따른다. select문(1002)은 엔터티 빈을 검색하는 파인더 메소드(1007)로 매핑되고, insert문(1003)은 엔터티 빈을 생성하는 create(), ejbCreate() 메소드(1008)로 매핑된다. 그리고, update문(1004)은 엔터티 빈의 변수들의 값을 변경하는 ejbStore() 메소드(1009)로, delete문(1005)은 엔터티 빈을 삭제하는 remove(), ejbRemove() 메소드(1010)에 각각 매핑된다.
도 11은 본 발명에 따른 엔터프라이즈 빈 추출 장치의 시스템 운영에 대한 예시 도면이다.
도 11에 도시한 바와 같이, 본 발명에 따른 엔터프라이즈 빈 추출 장치는 터미널(1101), 중앙 처리 장치(1102), 외부 기억 장치(1103)로 구성된다.
터미널(1101)을 통해 서블릿 코드가 서블릿 코드 입력부(1104)에 입력되며, 자바 클래스 추출부(1105)는 입력된 서블릿에서 자바 클래스를 추출한다.
추출된 자바 클래스 자료는 데이터베이스(1110)에 저장된다. 데이터베이스(1110)에 저장된 자바 클래스는 자바 클래스 클러스터링부(1106)로 입력되며, 클러스터링 결과는 자바 클래스 클러스터링 데이터베이스(1111)에 저장된다.
자바 클래스 클러스터링 자료는 세션 빈 추출부(1107)와 엔터티 빈 추출부(1108)로 입력되어 각각 세션 빈과 엔터티 빈이 추출된다.
추출된 세션 빈과 엔터티 빈은 엔터프라이즈 빈 소스 코드 데이터베이스(1112)에 저장된다. 빈들간의 관계 정보 추출부(1109)에서는 추출된 엔터프라이즈 빈들의 관계 정보를 추출한다.
이상 설명한 바와 같이, 본 발명에 따른 엔터프라이즈 빈 추출 장치는, 종래와 같이 COBOL이나 PL/I과 같은 레거시 시스템을 재사용하기 위해 엔터프라이즈 빈을 추출하지 않고, 재사용 대상을 서블릿으로 개발된 웹 프로그램을 적용한 것을 특징으로 한다.
따라서, 본 발명은, 서블릿 소스 코드로부터 엔터프라이즈 빈을 추출할 수 있는 바, 서블릿 소스 코드에 대한 재사용이 가능하며, 결과적으로, 웹 프로그램개발 기간의 단축과 개발 비용의 절감을 기대할 수 있다.
이상, 본 발명을 실시예에 근거하여 구체적으로 설명하였지만, 본 발명은 이러한 실시예에 한정되는 것이 아니라, 후술하는 특허청구범위의 요지를 벗어나지 않는 범위내에서 여러 가지 변형이 가능한 것은 물론이다.

Claims (13)

  1. 서블릿 소스 코드(servlet source code)로부터 엔터프라이즈 빈(enterprise bean)을 추출하는 장치에 있어서,
    상기 서블릿 소스 코드와 자바 클래스(Java class)가 입력되는 서블릿 소스 코드 입력 수단과;
    상기 서블릿 소스 코드 입력부를 통해 입력된 서블릿 소스 코드로부터 자바 클래스를 추출하는 자바 클래스 추출 수단과;
    상기 자바 클래스 추출 수단을 통해 추출된 자바 클래스를 상호 관련된 클래스들끼리 그룹핑하는 자바 클래스 클러스터링(clustering) 수단과;
    상기 자바 클래스 클러스터링 수단을 통해 클러스터링된 클래스들로부터 세션 빈(session bean)을 추출하는 세션 빈 추출 수단과;
    상기 자바 클래스 클러스터링 수단을 통해 클러스터링된 클래스들로부터 엔터티 빈(entity bean)을 추출하는 엔터티 빈 추출 수단과;
    상기 세션 빈 추출 수단과 엔터티 빈 추출 수단을 통해 추출된 세션 빈과 엔터티 빈으로부터 빈들간의 관계 정보를 추출하는 빈들간의 관계 정보 추출 수단을 포함하는 엔터프라이즈 빈 추출 장치.
  2. 제 1 항에 있어서,
    상기 서블릿 소스 코드 입력 수단은,
    상기 서블릿 소스 코드와 자바 클래스로 구성된 웹 애플리케이션을 수신하는 것을 특징으로 하는 엔터프라이즈 빈 추출 장치.
  3. 제 1 항에 있어서,
    상기 자바 클래스 추출 수단은,
    상기 서블릿 소스 코드에 포함된 비즈니스 로직을 분석하여 새로운 자바 클래스를 추출하는 것을 특징으로 하는 엔터프라이즈 빈 추출 장치.
  4. 제 1 항에 있어서,
    상기 자바 클래스 클러스터링 수단은,
    상기 세션 빈을 위한 클러스터링을 수행하는 세션 빈 클러스터링 수단과;
    상기 엔터티 빈을 위한 클러스터링을 수행하는 엔터티 빈 클러스터링 수단으로 구성되는 것을 특징으로 하는 엔터프라이즈 빈 추출 장치.
  5. 제 4 항에 있어서,
    상기 세션 빈 클러스터링 수단은,
    클러스터(cluster)에 포함된 클래스들의 연관 관계(association relationship), 집단화 관계(aggregation relationship), 상속 관계(inheritance relationship) 중 적어도 하나 이상의 관계들의 관계성(relationship)을 판단하여 클러스터링하는 것을 특징으로 하는 엔터프라이즈 빈 추출 장치.
  6. 제 4 항에 있어서,
    상기 엔터티 빈 클러스터링 수단은,
    데이터베이스의 테이블 이름에 따라 같은 테이블 이름에 접근(access)하는 클래스들을 클러스터링하는 것을 특징으로 하는 엔터프라이즈 빈 추출 장치.
  7. 제 1 항에 있어서,
    상기 세션 빈 추출 수단은,
    상기 세션 빈의 구성 요소 중 하나인 세션 빈 클래스를 추출하는 세션 빈 클래스 추출부와;
    상기 세션 빈의 리모트 인터페이스를 추출하는 리모트 인터페이스 추출부와;
    상기 세션 빈의 홈 인터페이스를 추출하는 홈 인터페이스 추출부로 구성되는 것을 특징으로 하는 엔터프라이즈 빈 추출 장치.
  8. 제 1 항에 있어서,
    상기 엔터티 빈 추출 수단은,
    상기 엔터티 빈의 구성 요소 중 하나인 엔터티 빈 클래스를 추출하는 엔터티 빈 클래스 추출부와;
    상기 엔터티 빈의 리모트 인터페이스를 추출하는 리모트 인터페이스 추출부와;
    상기 엔터티 빈의 홈 인터페이스를 추출하는 홈 인터페이스 추출부와;
    상기 엔터티 빈의 프라이머리 키(primary key)를 추출하는 프라이머리 키 추출부와;
    상기 엔터티 빈의 구성 메소드(method) 중 하나인 파인더(finder) 메소드를 추출하는 파인더 메소드 추출부로 구성되는 것을 특징으로 하는 엔터프라이즈 빈 추출 장치.
  9. 서블릿 소스 코드로부터 엔터프라이즈 빈을 추출하는 엔터프라이즈 빈 추출 방법에 있어서,
    상기 서블릿 소스 코드와 자바 클래스를 수신하는 제 1 단계와;
    상기 입력된 서블릿 소스 코드에서 상기 자바 클래스를 추출하는 제 2 단계와;
    상기 추출된 자바 클래스를 대상으로 SQL(Structured Query Language) 문장이 포함되어 있는지를 판단하는 제 3 단계와;
    상기 제 3 단계의 판단 결과, 상기 SQL 문장이 포함되어 있지 않으면 상기 자바 클래스에서 세션 빈을 추출하는 제 4 단계와;
    상기 제 3 단계의 판단 결과, 상기 SQL 문장이 포함되어 있으면 상기 자바 클래스에서 엔터티 빈을 추출하는 제 5 단계를 포함하는 엔터프라이즈 빈 추출 방법.
  10. 제 9 항에 있어서,
    상기 제 2 단계는,
    HTML(HyperText Markup Language) 코드를 제거하는 제 6 단계와;
    서블릿 API(Application Program Interface)를 사용한 코드를 제거하는 제 7 단계와;
    클라이언트의 요청을 처리하는 서블릿 메소드를 자바 클래스 메소드로 변환하는 제 8 단계로 이루어지는 것을 특징으로 하는 엔터프라이즈 빈 추출 방법.
  11. 제 9 항에 있어서,
    상기 제 4 단계는,
    클래스들간의 연관 관계, 집단화 관계, 및 상속 관계를 근거로 세션 빈 추출을 위한 자바 클래스 클러스터링을 하는 제 9 단계와;
    세션 빈 홈 인터페이스를 추출하는 제 10 단계와;
    세션 빈 리모트 인터페이스를 추출하는 제 11 단계와;
    세션 빈 클래스를 추출하는 제 12 단계로 이루어지는 것을 특징으로 하는 엔터프라이즈 빈 추출 방법.
  12. 제 9 항에 있어서,
    상기 제 5 단계는,
    엔터티 빈 추출을 위한 자바 클래스 클러스터링을 하는 제 13 단계와;
    상기 엔터티 빈의 파인더 메소드를 추출하는 제 14 단계와;
    상기 엔터티 빈의 필수 메소드를 추출하는 제 15 단계와;
    상기 엔터티 빈의 프라이머리 키 클래스를 추출하는 제 16 단계와;
    상기 엔터티 빈의 홈 인터페이스를 추출하는 제 17 단계와;
    상기 엔터티 빈의 리모트 인터페이스를 추출하는 제 18 단계와;
    상기 엔터티 빈의 빈 클래스를 추출하는 제 19 단계로 이루어지는 것을 특징으로 하는 엔터프라이즈 빈 추출 방법.
  13. 제 12 항에 있어서,
    상기 제 13 단계는,
    자바 클래스에 포함된 SQL문장을 분석하는 제 20 단계와;
    상기 분석된 SQL 문장에서 데이터베이스의 테이블 이름을 추출하는 제 21 단계와;
    상기 추출된 테이블 이름을 근거로 동일한 테이블에 접근하는 자바 클래스를 추출하는 제 22 단계와;
    상기 추출된 자바 클래스를 테이블 이름에 따라 클러스터링하는 제 23 단계로 이루어지는 것을 특징으로 하는 엔터프라이즈 빈 추출 방법.
KR10-2002-0078425A 2002-12-10 2002-12-10 엔터프라이즈 빈 추출 장치 및 방법 KR100463837B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR10-2002-0078425A KR100463837B1 (ko) 2002-12-10 2002-12-10 엔터프라이즈 빈 추출 장치 및 방법
US10/636,599 US20040111704A1 (en) 2002-12-10 2003-08-08 Method and apparatus for extracting enterprise beans from servlet source codes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0078425A KR100463837B1 (ko) 2002-12-10 2002-12-10 엔터프라이즈 빈 추출 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20040050568A KR20040050568A (ko) 2004-06-16
KR100463837B1 true KR100463837B1 (ko) 2004-12-29

Family

ID=32464578

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0078425A KR100463837B1 (ko) 2002-12-10 2002-12-10 엔터프라이즈 빈 추출 장치 및 방법

Country Status (2)

Country Link
US (1) US20040111704A1 (ko)
KR (1) KR100463837B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050273709A1 (en) * 2004-06-04 2005-12-08 Ira Lough System and method for conversion of legacy language conforming data entries to industry-standard language conforming data entries
KR100862937B1 (ko) * 2005-12-05 2008-10-14 한국전자통신연구원 임베디드 시스템용 자바 라이브러리의 재구조화 방법 및장치
US20070240103A1 (en) * 2006-03-29 2007-10-11 Beaton Murray J Use of UML state machines to model portal applications
JP5447030B2 (ja) * 2010-03-12 2014-03-19 株式会社リコー 電子機器、情報処理方法、及び情報処理プログラム
US9513885B2 (en) 2013-08-22 2016-12-06 Peter Warren Web application development platform with relationship modeling

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000007233A (ko) * 1998-07-01 2000-02-07 정선종 객체 클러스터링 장치 및 그 방법
JP2001344105A (ja) * 2000-03-31 2001-12-14 Hitachi Software Eng Co Ltd Webアプリケーション開発方法、開発支援システム、および該方法に係るプログラムを記憶した記憶媒体
US6385643B1 (en) * 1998-11-05 2002-05-07 Bea Systems, Inc. Clustered enterprise Java™ having a message passing kernel in a distributed processing system
KR20020054206A (ko) * 2000-12-27 2002-07-06 오길록 엔터프라이즈 자바빈즈 기반의 클라이언트/서버간의통신방법
KR20020060868A (ko) * 2001-01-12 2002-07-19 한국전자통신연구원 클래스 다이어그램을 기반으로 한 엔터프라이즈 자바빈생성 장치 및 그 방법
US6438744B2 (en) * 1998-07-15 2002-08-20 Microsoft Corporation Dynamic mapping of component interfaces

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US95655A (en) * 1869-10-12 Improvement in calendars
US6237135B1 (en) * 1998-06-18 2001-05-22 Borland Software Corporation Development system with visual design tools for creating and maintaining Java Beans components
US6684387B1 (en) * 1999-09-23 2004-01-27 International Business Machines Corporation Method and apparatus for verifying Enterprise Java Beans
US7051316B2 (en) * 1999-10-05 2006-05-23 Borland Software Corporation Distributed computing component system with diagrammatic graphical representation of code with separate delineated display area by type
US7404175B2 (en) * 2000-10-10 2008-07-22 Bea Systems, Inc. Smart generator
US6560769B1 (en) * 2000-09-28 2003-05-06 Unisys Corporation Computer-implemented method for generating a UML representation from JAVA source code
US6934709B2 (en) * 2001-03-26 2005-08-23 Matrixone, Inc. Interface definition language compiler
US6826716B2 (en) * 2001-09-26 2004-11-30 International Business Machines Corporation Test programs for enterprise web applications

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000007233A (ko) * 1998-07-01 2000-02-07 정선종 객체 클러스터링 장치 및 그 방법
US6438744B2 (en) * 1998-07-15 2002-08-20 Microsoft Corporation Dynamic mapping of component interfaces
US6385643B1 (en) * 1998-11-05 2002-05-07 Bea Systems, Inc. Clustered enterprise Java™ having a message passing kernel in a distributed processing system
JP2001344105A (ja) * 2000-03-31 2001-12-14 Hitachi Software Eng Co Ltd Webアプリケーション開発方法、開発支援システム、および該方法に係るプログラムを記憶した記憶媒体
KR20020054206A (ko) * 2000-12-27 2002-07-06 오길록 엔터프라이즈 자바빈즈 기반의 클라이언트/서버간의통신방법
KR20020060868A (ko) * 2001-01-12 2002-07-19 한국전자통신연구원 클래스 다이어그램을 기반으로 한 엔터프라이즈 자바빈생성 장치 및 그 방법

Also Published As

Publication number Publication date
US20040111704A1 (en) 2004-06-10
KR20040050568A (ko) 2004-06-16

Similar Documents

Publication Publication Date Title
CN109343857B (zh) 线上部署机器学习模型的方法、设备和存储介质
US8156473B2 (en) Model oriented debugging
CN112560100B (zh) 数据脱敏方法及装置、计算机可读存储介质、电子设备
WO2005031503A2 (en) Sytem and method for generating data validation rules
CN109710220B (zh) 关系型数据库查询方法、装置、设备及存储介质
Favre Preprocessors from an abstract point of view
CN113419740B (zh) 程序数据流的分析方法、装置、电子设备及可读存储介质
CN111125064A (zh) 一种生成数据库模式定义语句的方法和装置
CN111443901A (zh) 一种基于Java反射的业务扩展方法及装置
CN115599386A (zh) 代码生成方法、装置、设备及存储介质
KR100463837B1 (ko) 엔터프라이즈 빈 추출 장치 및 방법
CN113987337A (zh) 基于组件化动态编排的搜索方法、系统、设备及存储介质
CN113032256A (zh) 自动化测试方法、装置、计算机系统和可读存储介质
US8607201B2 (en) Augmenting visualization of a call stack
Dobrzański et al. An approach to refactoring of executable UML models
Musleh et al. Automatic generation of android SQLite database components
CN113672233B (zh) 一种基于Redfish的服务器带外管理方法、装置及设备
KR100501412B1 (ko) 엔터프라이즈 자바 빈 컴포넌트 테스팅 장치 및 그 방법
Mateos et al. Migration from COBOL to SOA: measuring the impact on web services interfaces complexity
KR101966815B1 (ko) Rdbms 및 웹 api의 객체-관계 통합 매핑 시스템
Oh et al. Automatic extraction of dependencies between web components and database resources in java web applications
CN116755684B (zh) OAS Schema的生成方法、装置、设备及介质
US11966719B2 (en) Event consumption for high-level programing language platform
US12124890B2 (en) Event provisioning for high-level programing language platform
Soma et al. A model-based framework for developing and deploying data aggregation services

Legal Events

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

Payment date: 20091113

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee