[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR101970717B1 - 바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법 - Google Patents

바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법 Download PDF

Info

Publication number
KR101970717B1
KR101970717B1 KR1020170061814A KR20170061814A KR101970717B1 KR 101970717 B1 KR101970717 B1 KR 101970717B1 KR 1020170061814 A KR1020170061814 A KR 1020170061814A KR 20170061814 A KR20170061814 A KR 20170061814A KR 101970717 B1 KR101970717 B1 KR 101970717B1
Authority
KR
South Korea
Prior art keywords
information
line
version
class file
class
Prior art date
Application number
KR1020170061814A
Other languages
English (en)
Other versions
KR20180126852A (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 KR1020170061814A priority Critical patent/KR101970717B1/ko
Publication of KR20180126852A publication Critical patent/KR20180126852A/ko
Application granted granted Critical
Publication of KR101970717B1 publication Critical patent/KR101970717B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/368Test management for test version control, e.g. updating test cases to a new software version

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명의 자바 소프트웨어 개발 관리 시스템을 개시한다. 보다 상세하게는, 본 발명은 자바환경의 테스트 품질관리 툴에서 라인 커버리지 정보를 제공하기 위한 바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법에 관한 것이다.
본 발명의 실시예에 따르면, 자바기반의 소프트웨어 개발 시스템에서, 실행라인 커버리지 관리를 위한 메서드 별 버전정보를 클래스 파일 정보만을 이용한 메서드의 버전정보 추출에 따라 라인 커버리지 정보를 버전 별로 관리함으로써, 배포된 클래스 파일이 원복 되더라도 해당 버전의 커버리지 정보도 함께 복구가 가능하게 된다.

Description

바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법 {MANAGEMENT METHOD FOR JAVA METHODS BASED ON BYTECODE, DEVELOPMENT SYSTEM AND METHOD FOR JAVA SOFTWARE USING THE SAME}
본 발명의 자바 소프트웨어 개발 관리 시스템에 관한 것으로, 자바환경의 테스트 품질관리 툴에서 라인 커버리지 정보를 제공하기 위한 바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법에 관한 것이다.
일반적으로, 상용화된 소프트웨어의 테스트 품질관리 툴에서 제공하는 실행라인 커버리지(run line coverage) 정보 또는 코드 커버리지(code coverage) 정보는 소스코드의 라인 또는 코드가 실제 런타임 테스트 환경(runtime test environment)에서 얼마나 실행되었는지에 대한 비율 정보로 테스트에 대한 품질을 정량적으로 표현하여 제공할 수 있는 중요 정보 중에 하나이다.
그러나, 라인 커버리지 정보를 사용자에게 제공하기 위해서는 런타임 테스트 환경에서 실제 실행된 라인에 대한 기록처리가 필요하며, 런타임 테스트 환경에 적용되는 소스코드에 대한 라인 정보가 필수적이다.
자바 기반의 소프트웨어 환경에서는 실행 바이너리(binary)가 바이트코드(bytecode)로 구성된 클래스 파일(class file)로 관리되는데 컴파일 옵션(compile option)에 따라 라인 정보를 추가할 수 있으므로 별도의 소스코드 없이도 클래스 파일만으로 소스코드에 대한 라인 정보를 추출할 수 있다. 따라서 자바 기반의 소프트웨어는 배포되어 실행되는 클래스 파일만으로도 라인 커버리지 정보를 제공할 수 있는 처리가 가능하다.
프로그래밍 언어 중, 자바는 1.5 버전에서부터 BCI(byte code instrumentation)기능을 제공하고 있으며, 이는 클래스 로딩 시점에 클래스 파일에 대한 정보를 사전에 변경 처리할 수 있는 기능을 가리킨다. BCI 기능을 이용하면 클래스 파일이 실행되기 전에 바이트코드 수정이 가능하므로 메서드 별 바이트 코드에 실행라인을 기록할 수 있는 API 호출 바이트코드를 직접 주입할 수 있다. 또한 메서드의 라인 정보도 함께 추출이 가능하게 된다.
하지만 이러한 시스템 구성을 통해 실행라인 커버리지를 산출하기 위해서는 다음과 같은 문제가 발생하게 된다.
첫 번째는 클래스 파일의 수정 재배포에 따른 커버리지 정보의 초기화를 위한 메서드 버전 관리문제로서, 메서드 버전을 소스파일을 기준으로 산출하면 실제 실행 로직(logic)과 관련 없는 변경에 대해서는 반응하지 않아야 한다는 문제를 가지고 있으므로 매우 복잡한 파싱(parsing) 처리가 필요하다. 만약 이러한 변경을 무시하지 않는다면 불필요한 커버리지 정보의 초기화가 빈번하게 발생하게 되며, 이는 테스트 품질관리 시스템의 신뢰성을 감소시키는 원인이 된다.
두 번째는 현재 실행 중인 프로세스가 로딩하여 실행 중인 클래스 파일이 파일 시스템에 존재하는 클래스 파일과 동일한 버전인지 판별하는 문제로서, 클래스 변경이 감지되고 관련 라인의 커버리지 정보가 초기화 되었다 하더라도 현재 실행 중인 프로세스가 이전 버전의 클래스 파일로 실행 및 기록되고 있다면 잘못된 실행라인 정보로 커버리지 정보가 산출될 수 있다. 이에 따라, 실행라인 정보는 항상 현재 실행중인 클래스 파일로 구해진 메서드 버전ID가 함께 기록되어야 한다는 제약이 있다.
한국등록특허공보 제10-0678912호(공고일자: 2007.2.5.) 한국등록특허공보 제10-0967525호(공고일자: 2010.7.7.)
본 발명은 전술한 문제점을 해결하기 위해 안출된 것으로, 본 발명은 실행라인 커버리지 관리를 위해, 필수적으로 요구되는 메서드 별 버전정보 관리를 클래스 파일 정보만을 이용하여 메서드의 버전정보를 추출함으로써, 커버리지 정보를 버전 별로 관리할 수 있도록 하는 바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법을 제공하는 데 과제가 있다.
전술한 과제를 해결하기 위해, 본 발명의 실시예에 따른 바이트 코드 기반 자바 메서드 버전 관리 방법을 이용한 자바 소프트웨어 개발 시스템은, 사용자에게 개발환경을 제공하는 통합개발환경(IDE)이 탑재되고, 메서드 정보를 포함하는 클래스 파일을 제공하는 개발자 단말; 상기 클래스 파일의 변경 이력에 대한 관리를 수행하는 형상관리 시스템; 업무 프로세스를 통해 변환된 클래스 파일 및 메서드 정보에 대한 메서드 별 실행라인 정보와, 클래스 분석기를 통해 상기 클래스 파일로부터 추출된 현재 메서드 버전 별 라인 정보를 이전 버전과 비교하여 변경시 정보를 갱신하는 런타임 시스템; 메서드 별 실행라인 정보, 메서드 버전 별 라인 정보 및 라인 커버리지 정보를 저장하는 DBMS; 및 통계처리 프로세스를 통해 상기 메서드 별 실행라인 정보 및 메서드 버전 별 라인 정보를 로딩하여 메서드 버전 별로 라인 커버리지 정보를 산출하고, 상기 DBMS에 저장된 정보를 갱신하는 테스트 품질관리 시스템을 포함할 수 있다.
또한, 전술한 과제를 해결하기 위한 다른 양태의 실시예로서, 소프트웨어 개발 시스템을 통한 바이트코드 기반의 메서드 버전 관리 방법은, 클래스 파일을 이관하는 단계; (b) 승인 및 요청된 클래스 파일을 재 배포하는 단계; (c) 업무 프로세스를 통해 클래스 파일 및 메서드 정보를 변환하여 메서드 별 실행라인 정보를 생성하며, 클래스 분석기를 통해 상기 클래스 파일로부터 메서드 버전 별 라인 정보를 추출 및 수집하는 단계; (d) 통계처리 프로세스를 통해 상기 메서드 별 실행라인 정보 및 메서드 버전 별 라인 정보를 로딩하여 메서드 버전 별로 라인 커버리지 정보를 산출하는 단계; 및 (e) 상기 메서드 별 실행라인 정보, 메서드 버전 별 라인 정보 및 라인 커버리지 정보를 저장하는 단계를 포함할 수 있다.
본 발명의 실시예에 따르면, 자바기반의 소프트웨어 개발 시스템에서, 실행라인 커버리지 관리를 위한 메서드 별 버전정보를 클래스 파일 정보만을 이용한 메서드의 버전정보 추출에 따라 라인 커버리지 정보를 버전 별로 관리할 수 있어 배포된 클래스 파일이 원복 되더라도 해당 버전의 커버리지 정보도 함께 복구가 가능함에 따라, 개발자로 하여금 불필요한 중복 테스트를 시행하는 것을 방지할 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템의 전체 구조를 개략적으로 나타낸 도면이다.
도 2는 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템의 전체 구조 및 프로세스를 나타낸 도면이다.
도 3a는 본 발명의 실시예에 따른 자바 소프트웨어 시스템의 대상이 되는 클래스 파일의 구조를 나타낸 도면이다.
도 3b는 본 발명의 실시예에 따른 바이트 코드 기반 자바 메서드 버전 관리 방법을 구현하는 ID산출 프로세스의 구조를 나타낸 도면이다.
도 4는 본 발명의 실시예에 따른 자바 소프트웨어 개발 방법을 나타낸 도면이다.
도 5는 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템의 각 시스템간 수행하는 절차를 시퀀스 도로 나타낸 도면이다.
설명에 앞서, 명세서 전체에서 어떤 부분이 어떤 구성요소를 "구비" 또는 "포함" 한다고 할 때, 이는 특별히 반대되는 기재가 없는 한, 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "...단말(terminal)" 및 "...시스템(system)" 등의 용어는 하나 또는 둘 이상의 기능이 조합된 동작을 처리하는 단위를 의미하며, 이는 하드웨어, 소프트웨어 또는, 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
또한, 본 명세서에서 "실시예"라는 용어는 예시, 사례 또는 도해의 역할을 하는 것을 의미하나, 발명의 대상은 그러한 예에 의해 제한되지 않는다. 또한, "포함하는", "구비하는", "갖는" 및 다른 유사한 용어가 사용되고 있으나, 청구범위에서 사용되는 경우 임의의 추가적인 또는 다른 구성요소를 배제하지 않는 개방적인 전환어(Transition word)로서 "포함하는(Comprising)"이라는 용어와 유사한 방식으로 포괄적으로 사용된다.
본 명세서에 설명된 다양한 기법은 하드웨어 또는 소프트웨어와 함께 구현될 수 있거나, 적합한 경우에 이들 모두의 조합과 함께 구현될 수 있다. 본 명세서에 사용된 바와 같은 "시스템" 등의 용어는 마찬가지로 컴퓨터 관련 엔티티(Entity), 즉 하드웨어, 하드웨어 및 소프트웨어의 조합, 소프트웨어 또는 실행 시의 소프트웨어와 등가로 취급할 수 있다. 또한, 본 발명에서는 단말기를 포함하는 시스템에서 실행되는 프로그램 및 하드웨어 모두가 모듈단위로 구성될 수 있고, 하나의 물리적 메모리에 기록되거나, 둘 이상의 메모리 및 기록매체 사이에 분산되어 기록될 수 있다.
이하, 도면을 참조하여 본 발명의 실시예에 따른 바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법을 설명한다.
도 1은 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템의 전체 구조를 개략적으로 나타낸 도면이다.
도 1을 참조하면, 본 발명의 자바 소프트웨어 개발 시스템(10)은 개발자 단말(100), 형상관리 시스템(200), 런타임 시스템(300), 데이터 베이스 관리 시스템(DBMS; 400) 및 테스트 품질관리 시스템(500)을 포함할 수 있다.
개발자 단말(100)은 통합개발환경(IDE; integrated development environment, 110) 툴이 설치되는 컴퓨팅 장치를 가리며, 개발자, 즉 사용자는 이를 이용하여 소정의 소스파일을 개발 및 컴파일을 수행하게 된다.
형상관리 시스템(200)은 개발자 단말(100)에서 개발된 소스코드 및 개발과 관련된 각종문서에 대하여 상태와 변경 및 이력 등에 대하여 총체적인 관리기능을 제공하는 역할을 한다.
런타임 시스템(300)은 형상관리 시스템에서 관리되는 소스파일 및 컴파일을 업무 프로세서를 통해 실행하는 역할을 한다.
특히, 본 발명의 실시예에 따른 런타임 시스템(300)은 메서드 별 버전ID를 부여하고 BCI를 통해 바이트코드에 실행라인을 기록하는 API를 주입하는 역할을 한다.
DBMS(400)은 런타임 시스템(300)에서 처리되는 업무 프로세스에 따른 메서드 별 실행라인 정보, 메서드 버전 별 라인 정보 및 라인 커버리지 정보를 저장하는 역할을 한다.
테스트 품질관리 시스템(500)은 통계처리 프로세스를 통해 DBMS(400)에 저장된 메서드 별 실행라인 정보를 이용하여 메서드의 버전 별 실행 라인 커버리지 정보를 산출하고, 그 중 가장 최신 버전의 라인 커버리지 정보를 사용자에게 제공한다. 여기서, 라인 커버리지 정보는 메서드의 버전 별로 관리됨에 따라, 형상관리 시스템(200)에 의해 클래스 파일이 원복 되더라도 해당 버전의 커버리지 정보 또한 함께 복구가 가능함에 따라 개발자로 하여금 불필요한 중복 테스트를 방지할 수 있도록 한다.
이하, 도면을 참조하여 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템에서 메서드 별 실행 바이트코드 구조를 상세히 설명한다.
도 2는 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템의 전체 구조 및 프로세스를 나타낸 도면이다.
도 2를 참조하면, 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템(10)은 바이트 코드 기반 자바 메서드 버전 관리 방법을 이용한 자바 소프트웨어 개발 시스템으로서, 사용자에게 개발환경을 제공하는 통합개발환경(IDE; integrated development environment, 110)이 탑재되고, 메서드 정보(131)를 포함하는 클래스 파일(130)을 제공하는 개발자 단말(100), 클래스 파일(130)의 변경 이력에 대한 관리를 수행하는 형상관리 시스템(200), 업무 프로세스(310)를 통해 변환된 클래스 파일(311) 및 메서드 정보(312)에 대한 메서드 별 실행라인 정보(410)와, 클래스 분석기(340)를 통해 클래스 파일(130)로부터 추출된 현재 메서드 버전 별 라인 정보(420)를 이전 버전과 비교하여 변경시 정보를 갱신하는 런타임 시스템(300), 메서드 별 실행라인 정보(410), 메서드 버전 별 라인 정보(420) 및 라인 커버리지 정보(430)를 저장하는 DBMS(400) 및, 통계처리 프로세스(510)를 통해 메서드 별 실행라인 정보(410) 및 메서드 버전 별 라인 정보(420)를 로딩하여 메서드 버전 별로 라인 커버리지 정보(430)를 산출하고, DBMS(400)에 저장된 정보를 갱신하는 테스트 품질관리 시스템(500)을 포함할 수 있다.
상세하게는, 개발자 단말(100)은 일반적으로 IDE(110)등이 설치된 클라이언트 또는 클라우드 환경으로 제공되는 개인 개발 환경을 제공하는 컴퓨팅 장치이다. 예를 들면, IDE(110)는 SI 프로젝트에서 통상적으로 이용되는 오픈소스 기반의 프레임워크(framework)에서 제공하는 이클립스TM(eclipse)와 같은 IDE툴이 이용될 수 있다. 이러한 IDE(110)은 개발자가 작성한 소스파일(120)을 백그라운드 형태로 자동 빌드하여 클래스 파일(130)을 생성하게 된다.
형상관리 시스템(200)은 IDE(110)와 개발 및 테스트를 실행하는 런타임 시스템(300)간에 배포되는 자원을 관리해주는 역할을 하는 시스템이다. 배포 대상 자원에 대한 이력관리, 요청 및 승인 처리에 대한 프로세스 관리 기능 등을 제공하며, 본 발명에서는 배포되는 클래스 파일(130)을 관리하게 된다. .
런타임 시스템(300)은 WAS(web application server) 또는 자바 어플리케이션(JAVA application)형태의 서비스를 제공하기 위한 업무 프로세스(310)를 구동하는 것으로, 프로젝트의 개발대상이 되는 시스템이다. 이러한 런타임 시스템(300)은 개발, 테스트 및 운영 환경 등으로 구분되며, 자바 소프트웨어 개발 시스템(10)에서 운영 배포 이전에 테스트를 위한 시스템이 될 수 있다.
본 발명의 실시예에 따른 런타임 시스템(300)에는 클래스 파일(130)의 바이트 코드(Byte Code)에 대하여 직접 수정을 가하여 소스파일의 수정 없이 원하는 기능을 부여하는 BCI(byte code instrumentation) 기법이 적용될 수 있다. 이에 따라, 업무 프로세스(310)는 BCI 처리를 통해 형상관리 시스템(200)에 의해 관리되는 클래스 파일(130)을 로딩하고, 그 원본 클래스 파일에 대하여 실행라인을 기록할 수 있는 변환된 클래스 파일(311) 및 변환된 메서드 정보(312)로 변환한다.
여기서, 변환된 메서드 정보(312)의 바이트 코드는 주입된 API에 의해 DBMS(400)에 메서드 별 실행라인 정보(410)로 저장되게 된다.
한편, 전술한 BCI 처리과정을 통해서도 메서드 별 실행라인 정보를 수집할 수 있으나, 그 과정에 너무 많은 처리가 포함되면 업무 프로세스의 구동성능에 큰 영향을 줄 수 있으며, 별도로 분리된 프로세스인 클래식 분석기를 통해 메서드 별 실행라인 정보를 수집하도록 설정되는 것이 바람직하다.
즉, 클래스 분석기(340)는 별도의 프로세스 형태로 존재하거나, 혹은 업무 프로세스(310)에 포함되어 처리될 수 있다.
클래스 분석기(340)는 런타임 시스템(300)에 배포된 클래스의 메서드 정보에서 메서드 별 실행라인 정보를 수집하게 된다.
DBMS(400)는 데이터 관리 미들웨어(middle ware)로서, 메서드 별 실행라인 정보(410), 메서드 버전 별 라인 정보(420), 라인 커버리지 정보(430) 등이 저장되는 저장소이다.
테스트 품질관리 시스템(500)은 통계처리 프로세스를 통해 DBMS(400)에 저장된 메서드 별 실행라인 정보를 이용하여 메서드의 버전 별 실행 라인 커버리지 정보를 산출하는 역할을 한다.
이러한 테스트 품질관리 시스템(500)은 자원 상황에 따라 런타임 시스템(300) 에 함께 설치될 수 있고 별도의 시스템으로 분리 독립되어 설치 될 수 있다. WAS 형태로 사용자에게 수집 및 분석된 각종 정보를 제공하며, 본 발명의 실시예에서는 메서드 별 실행라인 정보(410)와 메서드 버전 별 라인 정보(420)를 이용하여 라인 커버리지 정보(430)를 처리해 내는 프로세스 기능을 포함한다.
또한, 테스트 품질관리 시스템(500)은 DBMS(400)에 저장된 라인 커버리지 정보 중, 가장 최신 버전의 라인 커버리지 정보를 사용자에게 제공할 수 있다.
도 3a는 본 발명의 실시 예에 따른 자바 소프트웨어 시스템의 대상이 되는 클래스 파일의 구조를 나타낸 도면이고, 도 3b는 본 발명의 실시예에 따른 바이트 코드 기반 자바 메서드 버전 관리 방법을 구현하는 ID산출 프로세스의 구조를 나타낸 도면이다.
먼저, 도 3a를 참조하면, 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템에서 클래스 파일(130)은 그 내부에 메서드 정보(131)를 포함하고 있다. 그리고, 메서드 정보(131)의 속성(attribute) 중 하나인, 코드 속성(code attribute; 134)에는 메서드 별 실행 바이트 코드{0 ~ N-1(N은 자연수)}가 있다.
본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템에서는 전술한 실행 바이트 코드에 대하여 소정의 해쉬 함수(harsh function)를 이용하여 해쉬ID를 산출하여 메서드의 버전ID로 사용하는 것을 특징으로 한다. 이는 소스파일에서 버전정보를 구하는 방법과 대비하여 볼 때, 상당히 간단하면서도 파싱(parsing) 처리와 같은 복잡한 처리과정 없이 효율적으로 산출 가능하다는 특징이 있다.
단, 전술한 방식으로는 최대 65,536 바이트(byte)의 데이터까지 읽을 수 있다는 한계가 있고, 코드 변화에 매우 민감하게 반응할 수 있으며, 이러한 한계를 극복하기 위해, 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템에서는 클래스 파일(130) 의 메서드 정보(131)내 코드 속성(134)값 뿐만 아니라, 바이트 코드의 인덱스 기준인 소스 라인번호 테이블 정보를 더 이용할 수 있다.
도 3a 및 도 3b를 참조하면, 메서드 정보(131)는 라인번호 테이블 정보 속성(Line Number Table Attribute; 135)를 속성(Attribute)으로 보관하고 있다. 소스 라인번호 테이블(135)의 모든 라인번호를 첫 번째 라인 번호를 메서드의 시작라인 번호로 저장하고 그 시작라인 번호를 기준으로 상대 값을 구한다. 일 예로서, "10, 12, 16, 18"의 경우, 메서드 시작라인 번호는 "10"임에 따라, 라인번호 테이블의 값들은 "10"을 뺀 값인 "0, 2, 6, 8"가 되며, 이렇게 산출한 오프셋(offset) 값을 통해 해쉬ID를 산출하여 메서드의 버전ID로 사용함으로써 코드변경에 민감하지 않은 메서드 버전정보를 이용할 수 있다.
이를 위한 ID 산출 프로세스(350)로서, 메서드 정보(131)의 라인 넘버 테이블 속성(Line Number Table Attribute)를 참조하여 첫 번째 라인 번호를 메서드의 시작라인 번호로 저장하고, 그 시작라인 번호를 기준으로 상대 값인 라인 번호 테이블 값을 구하는 오프셋 산출기(357) 및, 라인 번호 테이블 값에 대응하여 변환된 메서드 정보(312)에 삽입되는 해쉬ID를 산출하는 해쉬 생성기(358)를 포함할 수 있다. 이에 따라, 메서드 정보의 버전ID는 해쉬ID로 지정되게 된다.
전술한 ID 산출 프로세스(350)는 런라임 시스템의 업무 프로세스 또는 클래스 분석기에 포함될 수 있다.
이하, 도면을 참조하여 본 발명의 실시예에 따른 자바 소프트웨어 개발 방법을 설명한다.
도 4는 본 발명의 실시예에 따른 자바 소프트 개발 방법을 나타낸 도면이다.
도 4를 참조하면, 본 발명의 실시예에 따른 자바 소프트웨어 개발 방법은, 전술한 소프트웨어 개발 시스템(도 2의 10)을 통한 바이트코드 기반의 메서드 버전 관리 방법에 있어서, 클래스 파일을 이관하는 단계(S100), 승인 및 요청된 클래스 파일을 재 배포하는 단계(S110), 업무 프로세스를 통해 클래스 파일 및 메서드 정보를 변환하여 메서드 별 실행라인 정보를 생성하고, 클래스 분석기를 통해 클래스 파일로부터 메서드 버전 별 라인 정보를 추출 및 수집하는 단계(S120), 통계처리 프로세스를 통해 메서드 별 실행라인 정보 및, 메서드 버전 별 라인 정보를 로딩하여 메서드 버전 별로 라인 커버리지 정보를 산출하는 단계(S130) 및, 메서드 별 실행라인 정보, 메서드 버전 별 라인 정보 및 라인 커버리지 정보를 저장하는 단계(S140)를 포함할 수 있다.
클래스 파일을 이관하는 단계(S100)는 개발자 단말의 IDE가 백그라운드에서 자동 빌드된 클래스 파일을 형상관리 시스템에 이관 즉, 배포하는 단계이다.
승인 및 요청된 클래스 파일을 재 배포하는 단계(S110)는 형상관리 시스템이 승인 및 요청에 따라 이관된 클래스 파일을 다시 런타임 시스템에 배포하는 단계이다.
업무 프로세스를 통해 클래스 파일 및 메서드 정보를 변환하여 메서드 별 실행라인 정보를 생성하고, 클래스 분석기를 통해 클래스 파일로부터 메서드 버전 별 라인 정보를 추출 및 수집하는 단계(S120)는 런타임 시스템이 배포된 클래스 파일 및 이에 포함되는 메서드 정보를 실행라인을 기록할 수 있는 형태로 변환하여 메서드 별 실행라인 정보를 생성하며, 동시에 메서드 버전 별 라인 정보를 추출 및 수집하는 단계이다.
통계처리 프로세스를 통해 메서드 별 실행라인 정보 및, 메서드 버전 별 라인 정보를 로딩하여 메서드 버전 별로 라인 커버리지 정보를 산출하는 단계(S130)는 테스트 품질관리 시스템이 DBMS에 기저장된 메서드 별 실행라인 정보 및, 메서드 버전 별 라인 정보를 로딩하여 메서드 버전 별로 라인 커버리지 정보를 산출하는 단계이다.
메서드 별 실행라인 정보, 메서드 버전 별 라인 정보 및 라인 커버리지 정보를 저장하는 단계(S140)는 런타임 시스템 및 테스트 품질관리 시스템에 의해 획득된 메서드 별 실행라인 정보, 메서드 버전 별 라인 정보 및 라인 커버리지 정보를 저장 DBMS에 저장하는 단계이다. 여기서, 메서드 별 실행라인 정보, 메서드 버전 별 라인 정보는 상기 S130 단계 이후 진행될 수 있다.
이하, 도면을 참조하여 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템을 구성하는 각 시스템간 수행하는 절차를 나타낸 시퀀스 도를 통해 본 발명의 바이트코드 기반의 메서드 버전 관리 방법을 상세히 설명한다.
도 5는 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템의 각 시스템간 수행하는 절차를 시퀀스 도로 나타낸 도면이다.
도 5를 참조하면, 개발자에 의해 개발자 단말(100)의 IDE에서 작성된 소스파일은 백그라운드(background) 형태로 자동 빌드(build)되어 클래스 파일로 생성될 수 있으며, IDE의 배포요청에 따라 생성된 클래스 파일은 형상관리 시스템(200)에 이관된다(S200).
형상관리 시스템(200)은 요청 및 승인 처리 프로세스를 통해 승인된 클래스 파일(130)을 런타임 시스템(300)으로 배포하게 된다(S120).
런타임 시스템(300)은 업무 프로세스를 통해 BCI 처리절차를 수행하여 원본 클래스 파일 및 메서드 정보의 실행라인을 기록할 수 있는 변환된 클래스 파일(311) 및 변환된 메서드 정보(312)로 변환한다(S230). 이때, 변환된 메서드 정보(312)의 바이트코드는 API 호출에 의해 DBMS(400)에 메서드 별 실행라인 정보로 저장되게 된다(S231).
또한, 런타임 시스템(300)은 배포된 클래스 파일에 대하여 테스트 품질관리 툴의 클래스 분석기를 통해 분석을 수행하게 되며, DBMS(400)에 저장된 이전 메서드 버전정보를 로딩(loading)하여(S232), 현재 메서드 버전정보와 비교를 수행한다(S233). 만약, 메서드 버전이 변경되었다면(S234), 런타임 시스템(300)은 현재 라인 커버리지 정보를 초기화하고, 라인 분석 정보 및 메서드 버전정보를 DBMS(400)에 저장하게 된다(S235).
그리고, 테스트 품질관리 시스템(500)은 통계처리 프로세스에 의해 라인 분석정보, 메서드 별 실행라인 정보 및 메서드 버전 별 라인 정보를 DBMS(400)로부터 로딩 한다(S240).
다음으로, 테스트 품질관리 시스템(500)은 라인 커버리지 정보(430)를 메서드 버전 별로 산출하게 된다(S241). 이때, 라인 커버리지 정보의 변경여부를 판단하고(S242), 변경된 경우 라인 커버리지 정보를 DBMS에 갱신 저장하게 된다(S250).
이후, DBMS(400)에 저장된 라인 커버리지 정보는 테스트 품질관리 시스템(500)의 UI를 통해 가장 최신 버전의 정보가 사용자에게 제공되게 된다.
상기한 설명에 많은 사항이 구체적으로 기재되어 있으나 이것은 발명의 범위를 한정하는 것이라기보다 바람직한 실시예의 예시로서 해석되어야 한다. 따라서, 발명은 설명된 실시예에 의하여 정할 것이 아니고 특허청구범위와 특허청구범위에 균등한 것에 의하여 정하여져야 한다.
100 : 개발자 단말 110 : IDE
200 : 형상관리 시스템 300 : 런타임 시스템
400 : DBMS 500 : 테스트 품질관리 시스템

Claims (11)

  1. 바이트 코드 기반 자바 메서드 버전 관리 방법을 이용한 자바 소프트웨어 개발 시스템으로서,
    사용자에게 개발환경을 제공하는 통합개발환경(IDE)이 탑재되고, 메서드 정보를 포함하는 클래스 파일을 제공하는 개발자 단말;
    상기 클래스 파일의 변경 이력에 대한 관리를 수행하는 형상관리 시스템;
    업무 프로세스를 통해 변환된 클래스 파일 및 메서드 정보에 대한 메서드 별 실행라인 정보와, 클래스 분석기를 통해 상기 클래스 파일로부터 추출된 현재 메서드 버전 별 라인 정보를 이전 버전과 비교하여 변경시 정보를 갱신하는 런타임 시스템;
    메서드 별 실행라인 정보, 메서드 버전 별 라인 정보 및 라인 커버리지 정보를 저장하는 DBMS; 및
    통계처리 프로세스를 통해 상기 메서드 별 실행라인 정보 및 메서드 버전 별 라인 정보를 로딩하여 메서드 버전 별로 라인 커버리지 정보를 산출하고, 상기 DBMS에 저장된 정보를 갱신하는 테스트 품질관리 시스템을 포함하고,
    상기 런타임 시스템은 상기 형상관리 시스템으로부터 배포되는 클래스 파일을 구현하여 WAS 또는 자바 어플리케이션을 실행하고,
    상기 업무 프로세스는 BCI 처리를 통해 원본 클래스 및 메서드 정보를 실행라인을 기록할 수 있는 변환된 클래스 파일 및 메서드 정보로 변환하고,
    상기 변환된 클래스 파일 및 메서드 정보는 API에 의해 상기 DBMS에 상기 메서드 별 실행라인 정보로 저장되고,
    상기 업무 프로세스 및 클래스 분석기는,
    상기 메서드 정보 내 바이트 코드의 인덱스 기준인 라인 넘버 테이블 속성(Line Number Table Attribute)를 참조하여 첫 번째 라인 번호를 메서드의 시작라인 번호로 저장하고, 상기 시작라인 번호를 기준으로 상대 값인 라인 번호 테이블 값을 구하는 오프셋 산출기; 및
    상기 라인 번호 테이블 값에 대응하여 해쉬ID를 산출하는 해쉬 생성기를 포함하고,
    상기 메서드 정보의 버전ID는 상기 해쉬ID로 지정되는 자바 소프트웨어 개발 시스템.
  2. 제 1 항에 있어서,
    상기 개발자 단말은,
    상기 사용자에 의해 작성된 소스파일을 컴파일러가 백그라운드에서 자동 빌드하여 상기 클래스 파일을 생성하는 자바 소프트웨어 개발 시스템.
  3. 제 1 항에 있어서,
    상기 형상관리 시스템은,
    요청 및 승인 프로세스를 통해 승인된 클래스 파일을 런타임 시스템으로 재배포하는 자바 소프트웨어 개발 시스템.
  4. 삭제
  5. 삭제
  6. 청구항 1에 기재된 소프트웨어 개발 시스템을 통한 바이트코드 기반의 자바 소프트웨어 개발 방법에 있어서,
    (a) 클래스 파일을 이관하는 단계;
    (b) 승인 및 요청된 클래스 파일을 재 배포하는 단계;
    (c) 업무 프로세스를 통해 클래스 파일 및 메서드 정보를 변환하여 메서드 별 실행라인 정보를 생성하며, 클래스 분석기를 통해 상기 클래스 파일로부터 메서드 버전 별 라인 정보를 추출 및 수집하는 단계;
    (d) 통계처리 프로세스를 통해 상기 메서드 별 실행라인 정보 및 메서드 버전 별 라인 정보를 로딩하여 메서드 버전 별로 라인 커버리지 정보를 산출하는 단계; 및
    (e) 상기 메서드 별 실행라인 정보, 메서드 버전 별 라인 정보 및 라인 커버리지 정보를 저장하는 단계
    를 포함하고,
    상기 (c) 단계는,
    배포되는 클래스 파일을 구현하여 WAS 또는 자바 어플리케이션을 실행하는 단계; 및
    BCI 처리를 통해 원본 클래스 및 메서드 정보를 실행라인을 기록할 수 있는 변환된 클래스 파일 및 메서드 정보로 변환하는 단계를 포함하고,
    상기 변환된 클래스 파일 및 메서드 정보는 API에 의해 상기 메서드 별 실행라인 정보로 저장되고,
    상기 (c) 단계는,
    상기 메서드 정보의 바이트 코드의 인덱스 기준인 라인 넘버 테이블 속성(Line Number Table Attribute)를 참조하여 첫 번째 라인 번호를 메서드의 시작라인 번호로 저장하는 단계;
    상기 시작라인 번호를 기준으로 상대 값인 라인 번호 테이블 값을 구하는 단계; 및
    상기 라인 번호 테이블 값에 대응하여 해쉬ID를 산출하는 단계를 포함하고,
    상기 메서드 정보의 버전ID는 상기 해쉬ID로 지정되는 자바 소프트웨어 개발 방법.
  7. 제 6 항에 있어서,
    상기 (a) 단계 이전에,
    컴파일러가 상기 사용자에 의해 작성된 소스파일을 백그라운드에서 자동 빌드하여 상기 클래스 파일을 생성하는 단계
    를 포함하는 자바 소프트웨어 개발 방법.
  8. 삭제
  9. 삭제
  10. 제 6 항에 있어서,
    상기 (c) 단계는,
    상기 클래스 분석기를 통해 상기 클래스 파일로부터 추출된 현재 메서드 버전 별 라인 정보를 이전 버전과 비교하여 변경시 저장된 메서드 버전 별 라인 정보를 갱신하는 단계
    를 더 포함하는 자바 소프트웨어 개발 방법.
  11. 삭제
KR1020170061814A 2017-05-18 2017-05-18 바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법 KR101970717B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170061814A KR101970717B1 (ko) 2017-05-18 2017-05-18 바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170061814A KR101970717B1 (ko) 2017-05-18 2017-05-18 바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20180126852A KR20180126852A (ko) 2018-11-28
KR101970717B1 true KR101970717B1 (ko) 2019-04-22

Family

ID=64561770

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170061814A KR101970717B1 (ko) 2017-05-18 2017-05-18 바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR101970717B1 (ko)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100678912B1 (ko) 2005-10-18 2007-02-05 삼성전자주식회사 메소드 바이트코드 해석 방법 및 상기 방법에 의해동작하는 시스템
KR100967525B1 (ko) 2008-06-09 2010-07-07 박기복 성능, 부하, 기능테스트에서 목표한 시스템에만 부하를발생시키기 위한 시스템 및 방법
KR101667262B1 (ko) * 2014-08-18 2016-10-19 슈어소프트테크주식회사 코드 커버리지 측정 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체

Also Published As

Publication number Publication date
KR20180126852A (ko) 2018-11-28

Similar Documents

Publication Publication Date Title
US10019256B2 (en) Systems and methods for incremental software development
Sen et al. Jalangi: A selective record-replay and dynamic analysis framework for JavaScript
US8214393B2 (en) Integrating database deployment with code deployment
US8621429B2 (en) Software development support apparatus, function extension method and storage medium for storing function extension program
US20160239402A1 (en) Software commit risk level
US20120296878A1 (en) File set consistency verification system, file set consistency verification method, and file set consistency verification program
Kirbas et al. The relationship between evolutionary coupling and defects in large industrial software
US10614227B2 (en) Method and system for identifying functional attributes that change the intended operation of a compiled binary extracted from a target system
Åkerblom et al. Tracing dynamic features in python programs
US20220350593A1 (en) Adaptive hot reload for class changes
TW201235943A (en) Unchanged object management
CN106445505A (zh) 一种代码处理方法及装置
EP2100225B1 (en) Method, system and computer program for identifying interpreted programs through class loading sequences
US8086455B2 (en) Model development authoring, generation and execution based on data and processor dependencies
KR101924747B1 (ko) 유연성을 갖춘 메타데이터 구성 기법
Dawes et al. Vypr2: A framework for runtime verification of python web services
KR101970717B1 (ko) 바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법
JP4144885B2 (ja) アプリケーション・オブジェクトの再利用方法
US9535687B2 (en) Audited builds based upon separate class dependency records
CN111625853A (zh) 一种快照处理方法、装置、设备及可读存储介质
US20210240596A1 (en) Source code file retrieval
Hirt et al. Oracle JRockit: The Definitive Guide
US8108835B2 (en) Method and system for enforcing version control
Horie et al. String deduplication for Java-based middleware in virtualized environments
CN113297220B (zh) 数据的恢复方法、装置、计算机可读存储介质以及处理器

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