KR101970717B1 - Management method for java methods based on bytecode, development system and method for java software using the same - Google Patents

Management method for java methods based on bytecode, development system and method for java software using the same 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
Korean (ko)
Other versions
KR20180126852A (en
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/en
Publication of KR20180126852A publication Critical patent/KR20180126852A/en
Application granted granted Critical
Publication of KR101970717B1 publication Critical patent/KR101970717B1/en

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)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명의 자바 소프트웨어 개발 관리 시스템을 개시한다. 보다 상세하게는, 본 발명은 자바환경의 테스트 품질관리 툴에서 라인 커버리지 정보를 제공하기 위한 바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법에 관한 것이다.
본 발명의 실시예에 따르면, 자바기반의 소프트웨어 개발 시스템에서, 실행라인 커버리지 관리를 위한 메서드 별 버전정보를 클래스 파일 정보만을 이용한 메서드의 버전정보 추출에 따라 라인 커버리지 정보를 버전 별로 관리함으로써, 배포된 클래스 파일이 원복 되더라도 해당 버전의 커버리지 정보도 함께 복구가 가능하게 된다.
A Java software development management system of the present invention is disclosed. More particularly, the present invention relates to a byte code-based Java method version management method for providing line coverage information in a test quality management tool in a Java environment, and a Java software development system and method using the same.
According to the embodiment of the present invention, in the Java-based software development system, by managing version-specific version information for execution line coverage management by version information according to version information extraction of methods using only class file information, Even if the class file is destroyed, the coverage information of the corresponding version can also be restored.

Figure R1020170061814
Figure R1020170061814

Description

바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법 {MANAGEMENT METHOD FOR JAVA METHODS BASED ON BYTECODE, DEVELOPMENT SYSTEM AND METHOD FOR JAVA SOFTWARE USING THE SAME}TECHNICAL FIELD [0001] The present invention relates to a method of managing a version of a Java method based on bytecode, and a Java software development system and method using the same. [0002]

본 발명의 자바 소프트웨어 개발 관리 시스템에 관한 것으로, 자바환경의 테스트 품질관리 툴에서 라인 커버리지 정보를 제공하기 위한 바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법에 관한 것이다.The present invention relates to a Java software development management system, and more particularly, to a bytecode-based Java method version management method for providing line coverage information in a test quality management tool in a Java environment, and a Java software development system and method using the same.

일반적으로, 상용화된 소프트웨어의 테스트 품질관리 툴에서 제공하는 실행라인 커버리지(run line coverage) 정보 또는 코드 커버리지(code coverage) 정보는 소스코드의 라인 또는 코드가 실제 런타임 테스트 환경(runtime test environment)에서 얼마나 실행되었는지에 대한 비율 정보로 테스트에 대한 품질을 정량적으로 표현하여 제공할 수 있는 중요 정보 중에 하나이다.Generally, run line coverage information or code coverage information provided by a test quality management tool of commercialized software is used to determine how much the line or code of the source code is actually in the runtime test environment It is one of the important information that can quantitatively express the quality of the test with the ratio information of whether it is executed or not.

그러나, 라인 커버리지 정보를 사용자에게 제공하기 위해서는 런타임 테스트 환경에서 실제 실행된 라인에 대한 기록처리가 필요하며, 런타임 테스트 환경에 적용되는 소스코드에 대한 라인 정보가 필수적이다. However, in order to provide the line coverage information to the user, it is necessary to record the actually executed line in the run-time test environment, and line information about the source code applied to the run-time test environment is essential.

자바 기반의 소프트웨어 환경에서는 실행 바이너리(binary)가 바이트코드(bytecode)로 구성된 클래스 파일(class file)로 관리되는데 컴파일 옵션(compile option)에 따라 라인 정보를 추가할 수 있으므로 별도의 소스코드 없이도 클래스 파일만으로 소스코드에 대한 라인 정보를 추출할 수 있다. 따라서 자바 기반의 소프트웨어는 배포되어 실행되는 클래스 파일만으로도 라인 커버리지 정보를 제공할 수 있는 처리가 가능하다. In a Java-based software environment, an executable binary is managed as a class file composed of bytecodes. Since line information can be added according to a compile option, a class file The line information of the source code can be extracted. Therefore, Java-based software can be processed to provide line coverage information only by the class file that is distributed and executed.

프로그래밍 언어 중, 자바는 1.5 버전에서부터 BCI(byte code instrumentation)기능을 제공하고 있으며, 이는 클래스 로딩 시점에 클래스 파일에 대한 정보를 사전에 변경 처리할 수 있는 기능을 가리킨다. BCI 기능을 이용하면 클래스 파일이 실행되기 전에 바이트코드 수정이 가능하므로 메서드 별 바이트 코드에 실행라인을 기록할 수 있는 API 호출 바이트코드를 직접 주입할 수 있다. 또한 메서드의 라인 정보도 함께 추출이 가능하게 된다.Among the programming languages, Java provides the BCI (byte code instrumentation) function from version 1.5, indicating the ability to change information about the class file in advance at class loading time. With the BCI feature, you can modify the bytecode before the class file is executed, so you can inject the API call bytecode directly to write the execution line to the method specific bytecode. Also, line information of the method can be extracted together.

하지만 이러한 시스템 구성을 통해 실행라인 커버리지를 산출하기 위해서는 다음과 같은 문제가 발생하게 된다.However, in order to calculate the execution line coverage through such a system configuration, the following problems arise.

첫 번째는 클래스 파일의 수정 재배포에 따른 커버리지 정보의 초기화를 위한 메서드 버전 관리문제로서, 메서드 버전을 소스파일을 기준으로 산출하면 실제 실행 로직(logic)과 관련 없는 변경에 대해서는 반응하지 않아야 한다는 문제를 가지고 있으므로 매우 복잡한 파싱(parsing) 처리가 필요하다. 만약 이러한 변경을 무시하지 않는다면 불필요한 커버리지 정보의 초기화가 빈번하게 발생하게 되며, 이는 테스트 품질관리 시스템의 신뢰성을 감소시키는 원인이 된다.The first is a method versioning problem for initializing the coverage information according to the modification and redistribution of the class file. If the version of the method is calculated based on the source file, it should not respond to changes not related to the actual execution logic It requires a very complicated parsing process. If this change is not ignored, unnecessary initialization of coverage information frequently occurs, which causes the reliability of the test quality management system to be reduced.

두 번째는 현재 실행 중인 프로세스가 로딩하여 실행 중인 클래스 파일이 파일 시스템에 존재하는 클래스 파일과 동일한 버전인지 판별하는 문제로서, 클래스 변경이 감지되고 관련 라인의 커버리지 정보가 초기화 되었다 하더라도 현재 실행 중인 프로세스가 이전 버전의 클래스 파일로 실행 및 기록되고 있다면 잘못된 실행라인 정보로 커버리지 정보가 산출될 수 있다. 이에 따라, 실행라인 정보는 항상 현재 실행중인 클래스 파일로 구해진 메서드 버전ID가 함께 기록되어야 한다는 제약이 있다.The second problem is that the currently executing process loads and executes the class file that is the same version as the class file existing in the file system. Even if the class change is detected and the coverage information of the related line is initialized, If run and recorded as a class file of the previous version, coverage information can be calculated with incorrect execution line information. Thereby, there is a restriction that the execution version information always has to be recorded together with the method version ID obtained from the currently executing class file.

한국등록특허공보 제10-0678912호(공고일자: 2007.2.5.)Korean Registered Patent No. 10-0678912 (Publication Date: February 5, 2007) 한국등록특허공보 제10-0967525호(공고일자: 2010.7.7.)Korean Registered Patent No. 10-0967525 (Publication date: July 7, 2010)

본 발명은 전술한 문제점을 해결하기 위해 안출된 것으로, 본 발명은 실행라인 커버리지 관리를 위해, 필수적으로 요구되는 메서드 별 버전정보 관리를 클래스 파일 정보만을 이용하여 메서드의 버전정보를 추출함으로써, 커버리지 정보를 버전 별로 관리할 수 있도록 하는 바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법을 제공하는 데 과제가 있다.SUMMARY OF THE INVENTION The present invention has been conceived to solve the above-mentioned problems, and it is an object of the present invention to provide a method and apparatus for managing version information of each method, which is essential for execution line coverage management, by extracting version information of a method using only class file information, A version control method of a Java method based on byte code, and a Java software development system and method using the same.

전술한 과제를 해결하기 위해, 본 발명의 실시예에 따른 바이트 코드 기반 자바 메서드 버전 관리 방법을 이용한 자바 소프트웨어 개발 시스템은, 사용자에게 개발환경을 제공하는 통합개발환경(IDE)이 탑재되고, 메서드 정보를 포함하는 클래스 파일을 제공하는 개발자 단말; 상기 클래스 파일의 변경 이력에 대한 관리를 수행하는 형상관리 시스템; 업무 프로세스를 통해 변환된 클래스 파일 및 메서드 정보에 대한 메서드 별 실행라인 정보와, 클래스 분석기를 통해 상기 클래스 파일로부터 추출된 현재 메서드 버전 별 라인 정보를 이전 버전과 비교하여 변경시 정보를 갱신하는 런타임 시스템; 메서드 별 실행라인 정보, 메서드 버전 별 라인 정보 및 라인 커버리지 정보를 저장하는 DBMS; 및 통계처리 프로세스를 통해 상기 메서드 별 실행라인 정보 및 메서드 버전 별 라인 정보를 로딩하여 메서드 버전 별로 라인 커버리지 정보를 산출하고, 상기 DBMS에 저장된 정보를 갱신하는 테스트 품질관리 시스템을 포함할 수 있다.In order to solve the above problems, a Java software development system using a byte code-based Java method version management method according to an embodiment of the present invention includes an integrated development environment (IDE) for providing a development environment to a user, A developer terminal for providing a class file containing the class file; A configuration management system for managing a change history of the class file; A runtime system for updating information upon change by comparing execution line information for each class file and method information converted through a business process and line information for each current method version extracted from the class file through a class analyzer, ; A DBMS for storing execution line information for each method, line information for each method version, and line coverage information; And a test quality management system for calculating line coverage information for each method version by loading the method-specific execution line information and method version-specific line information through a statistical processing process, and updating information stored in the DBMS.

또한, 전술한 과제를 해결하기 위한 다른 양태의 실시예로서, 소프트웨어 개발 시스템을 통한 바이트코드 기반의 메서드 버전 관리 방법은, 클래스 파일을 이관하는 단계; (b) 승인 및 요청된 클래스 파일을 재 배포하는 단계; (c) 업무 프로세스를 통해 클래스 파일 및 메서드 정보를 변환하여 메서드 별 실행라인 정보를 생성하며, 클래스 분석기를 통해 상기 클래스 파일로부터 메서드 버전 별 라인 정보를 추출 및 수집하는 단계; (d) 통계처리 프로세스를 통해 상기 메서드 별 실행라인 정보 및 메서드 버전 별 라인 정보를 로딩하여 메서드 버전 별로 라인 커버리지 정보를 산출하는 단계; 및 (e) 상기 메서드 별 실행라인 정보, 메서드 버전 별 라인 정보 및 라인 커버리지 정보를 저장하는 단계를 포함할 수 있다.According to another aspect of the present invention, there is provided a method for managing version of a method based on a byte code through a software development system, the method comprising: transferring a class file; (b) redistributing the approved and requested class files; (c) converting the class file and method information through a business process to generate execution line information for each method, extracting and collecting line information for each method version from the class file through a class analyzer; (d) calculating line coverage information for each method version by loading the method-specific execution line information and method version-specific line information through a statistical processing process; And (e) storing execution line information for each method, line information for each method version, and line coverage information.

본 발명의 실시예에 따르면, 자바기반의 소프트웨어 개발 시스템에서, 실행라인 커버리지 관리를 위한 메서드 별 버전정보를 클래스 파일 정보만을 이용한 메서드의 버전정보 추출에 따라 라인 커버리지 정보를 버전 별로 관리할 수 있어 배포된 클래스 파일이 원복 되더라도 해당 버전의 커버리지 정보도 함께 복구가 가능함에 따라, 개발자로 하여금 불필요한 중복 테스트를 시행하는 것을 방지할 수 있는 효과가 있다.According to the embodiment of the present invention, in the Java-based software development system, the line coverage information can be managed for each version according to method version information extraction using only class file information, Even if the class file is destroyed, the coverage information of the version can be recovered together with the effect of preventing unnecessary duplication tests from being performed by the developer.

도 1은 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템의 전체 구조를 개략적으로 나타낸 도면이다.
도 2는 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템의 전체 구조 및 프로세스를 나타낸 도면이다.
도 3a는 본 발명의 실시예에 따른 자바 소프트웨어 시스템의 대상이 되는 클래스 파일의 구조를 나타낸 도면이다.
도 3b는 본 발명의 실시예에 따른 바이트 코드 기반 자바 메서드 버전 관리 방법을 구현하는 ID산출 프로세스의 구조를 나타낸 도면이다.
도 4는 본 발명의 실시예에 따른 자바 소프트웨어 개발 방법을 나타낸 도면이다.
도 5는 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템의 각 시스템간 수행하는 절차를 시퀀스 도로 나타낸 도면이다.
1 is a diagram schematically showing the overall structure of a Java software development system according to an embodiment of the present invention.
2 is a diagram illustrating an entire structure and a process of a Java software development system according to an embodiment of the present invention.
3A is a diagram illustrating a structure of a class file that is a target of a Java software system according to an embodiment of the present invention.
FIG. 3B is a diagram illustrating a structure of an ID calculation process for implementing a byte code-based Java method version management method according to an embodiment of the present invention.
4 is a diagram illustrating a Java software development method according to an embodiment of the present invention.
FIG. 5 is a sequence diagram illustrating a procedure performed between systems of a Java software development system according to an embodiment of the present invention.

설명에 앞서, 명세서 전체에서 어떤 부분이 어떤 구성요소를 "구비" 또는 "포함" 한다고 할 때, 이는 특별히 반대되는 기재가 없는 한, 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "...단말(terminal)" 및 "...시스템(system)" 등의 용어는 하나 또는 둘 이상의 기능이 조합된 동작을 처리하는 단위를 의미하며, 이는 하드웨어, 소프트웨어 또는, 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.Prior to the description, when an element is referred to as being "comprising" or "including" an element throughout the specification, it is to be understood that the element may be further comprised of other elements . Also, terms such as " terminal " and " system " in the specification mean a unit for processing an operation in which one or more functions are combined, , A combination of hardware and software.

또한, 본 명세서에서 "실시예"라는 용어는 예시, 사례 또는 도해의 역할을 하는 것을 의미하나, 발명의 대상은 그러한 예에 의해 제한되지 않는다. 또한, "포함하는", "구비하는", "갖는" 및 다른 유사한 용어가 사용되고 있으나, 청구범위에서 사용되는 경우 임의의 추가적인 또는 다른 구성요소를 배제하지 않는 개방적인 전환어(Transition word)로서 "포함하는(Comprising)"이라는 용어와 유사한 방식으로 포괄적으로 사용된다.Furthermore, the term " embodiment " is used herein to mean serving as an example, instance, or illustration, but the subject matter of the invention is not limited by such example. It is also to be understood that the terms " including, " " having, " and other similar terms are used, but that they do not exclude any additional or different components when used in the claims, Quot; is < / RTI > used in a manner similar to the term " Comprising ".

본 명세서에 설명된 다양한 기법은 하드웨어 또는 소프트웨어와 함께 구현될 수 있거나, 적합한 경우에 이들 모두의 조합과 함께 구현될 수 있다. 본 명세서에 사용된 바와 같은 "시스템" 등의 용어는 마찬가지로 컴퓨터 관련 엔티티(Entity), 즉 하드웨어, 하드웨어 및 소프트웨어의 조합, 소프트웨어 또는 실행 시의 소프트웨어와 등가로 취급할 수 있다. 또한, 본 발명에서는 단말기를 포함하는 시스템에서 실행되는 프로그램 및 하드웨어 모두가 모듈단위로 구성될 수 있고, 하나의 물리적 메모리에 기록되거나, 둘 이상의 메모리 및 기록매체 사이에 분산되어 기록될 수 있다.The various techniques described herein may be implemented with hardware or software, or may be implemented with a combination of both, where appropriate. As used herein, terms such as " system " and the like can likewise be handled as computer-related entities, i.e., hardware, a combination of hardware and software, software or software at runtime. Further, in the present invention, both programs and hardware executed in a system including a terminal can be configured in units of modules, and can be recorded in one physical memory, or distributed among two or more memories and recording media.

이하, 도면을 참조하여 본 발명의 실시예에 따른 바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법을 설명한다. Hereinafter, a byte code-based Java method version management method and a Java software development system and method using the same will be described with reference to the drawings.

도 1은 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템의 전체 구조를 개략적으로 나타낸 도면이다.1 is a diagram schematically showing the overall structure of a Java software development system according to an embodiment of the present invention.

도 1을 참조하면, 본 발명의 자바 소프트웨어 개발 시스템(10)은 개발자 단말(100), 형상관리 시스템(200), 런타임 시스템(300), 데이터 베이스 관리 시스템(DBMS; 400) 및 테스트 품질관리 시스템(500)을 포함할 수 있다.1, the Java software development system 10 of the present invention includes a developer terminal 100, a configuration management system 200, a runtime system 300, a database management system (DBMS) 400, and a test quality management system (500).

개발자 단말(100)은 통합개발환경(IDE; integrated development environment, 110) 툴이 설치되는 컴퓨팅 장치를 가리며, 개발자, 즉 사용자는 이를 이용하여 소정의 소스파일을 개발 및 컴파일을 수행하게 된다. The developer terminal 100 refers to a computing device in which an integrated development environment (IDE) tool is installed, and a developer, that is, a user, develops and compiles a predetermined source file using the same.

형상관리 시스템(200)은 개발자 단말(100)에서 개발된 소스코드 및 개발과 관련된 각종문서에 대하여 상태와 변경 및 이력 등에 대하여 총체적인 관리기능을 제공하는 역할을 한다.The configuration management system 200 provides a total management function for status, change, history, and the like of various documents related to the source code and development developed in the developer terminal 100.

런타임 시스템(300)은 형상관리 시스템에서 관리되는 소스파일 및 컴파일을 업무 프로세서를 통해 실행하는 역할을 한다.The runtime system 300 plays a role of executing source files managed by the CM system and compilation through a business processor.

특히, 본 발명의 실시예에 따른 런타임 시스템(300)은 메서드 별 버전ID를 부여하고 BCI를 통해 바이트코드에 실행라인을 기록하는 API를 주입하는 역할을 한다.In particular, the runtime system 300 according to the embodiment of the present invention injects an API for giving a method-specific version ID and writing an execution line to the bytecode through the BCI.

DBMS(400)은 런타임 시스템(300)에서 처리되는 업무 프로세스에 따른 메서드 별 실행라인 정보, 메서드 버전 별 라인 정보 및 라인 커버리지 정보를 저장하는 역할을 한다. The DBMS 400 stores execution line information for each method, line information for each method version, and line coverage information according to a business process processed in the runtime system 300.

테스트 품질관리 시스템(500)은 통계처리 프로세스를 통해 DBMS(400)에 저장된 메서드 별 실행라인 정보를 이용하여 메서드의 버전 별 실행 라인 커버리지 정보를 산출하고, 그 중 가장 최신 버전의 라인 커버리지 정보를 사용자에게 제공한다. 여기서, 라인 커버리지 정보는 메서드의 버전 별로 관리됨에 따라, 형상관리 시스템(200)에 의해 클래스 파일이 원복 되더라도 해당 버전의 커버리지 정보 또한 함께 복구가 가능함에 따라 개발자로 하여금 불필요한 중복 테스트를 방지할 수 있도록 한다. The test quality management system 500 calculates the execution line coverage information for each version of the method using the execution line information for each method stored in the DBMS 400 through the statistical processing process and outputs the latest version of the line coverage information to the user Lt; / RTI > Here, since the line coverage information is managed according to the version of the method, even if the class file is rewritten by the configuration management system 200, the coverage information of the corresponding version can also be restored, so that the developer can prevent unnecessary duplication testing do.

이하, 도면을 참조하여 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템에서 메서드 별 실행 바이트코드 구조를 상세히 설명한다.Hereinafter, a method-by-method execution byte code structure in a Java software development system according to an embodiment of the present invention will be described in detail with reference to the drawings.

도 2는 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템의 전체 구조 및 프로세스를 나타낸 도면이다.2 is a diagram illustrating an entire structure and a process of a Java software development system according to an embodiment of the present invention.

도 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)을 포함할 수 있다. Referring to FIG. 2, a Java software development system 10 according to an embodiment of the present invention is a Java software development system using a byte code-based Java method version management method, and includes an integrated development environment (IDE) a developer terminal 100 on which an integrated development environment 110 is installed and providing a class file 130 including method information 131, a configuration management system 100 for managing the change history of the class file 130 Extracted from the class file 130 through the class analyzer 340 and the execution line information 410 for each method for the class file 311 and the method information 312 converted through the business process 310 The runtime system 300, the method-specific execution line information 410, the method version-specific line information 420, and the method version information 420 are compared with the previous version by comparing the current method version- The DBMS 400 that stores the line coverage information 430 and the method execution line information 410 and method version line information 420 are loaded through the statistical processing process 510 to obtain line coverage information And a test quality management system 500 for updating the information stored in the DBMS 400. [

상세하게는, 개발자 단말(100)은 일반적으로 IDE(110)등이 설치된 클라이언트 또는 클라우드 환경으로 제공되는 개인 개발 환경을 제공하는 컴퓨팅 장치이다. 예를 들면, IDE(110)는 SI 프로젝트에서 통상적으로 이용되는 오픈소스 기반의 프레임워크(framework)에서 제공하는 이클립스TM(eclipse)와 같은 IDE툴이 이용될 수 있다. 이러한 IDE(110)은 개발자가 작성한 소스파일(120)을 백그라운드 형태로 자동 빌드하여 클래스 파일(130)을 생성하게 된다. In detail, the developer terminal 100 is a client provided with the IDE 110 or the like, or a computing device providing a personal development environment provided in a cloud environment. For example, the IDE 110 may be an IDE tool such as Eclipse ( TM ) provided by an open source-based framework commonly used in SI projects. The IDE 110 automatically builds the source file 120 created by the developer in a background form to generate the class file 130. [

형상관리 시스템(200)은 IDE(110)와 개발 및 테스트를 실행하는 런타임 시스템(300)간에 배포되는 자원을 관리해주는 역할을 하는 시스템이다. 배포 대상 자원에 대한 이력관리, 요청 및 승인 처리에 대한 프로세스 관리 기능 등을 제공하며, 본 발명에서는 배포되는 클래스 파일(130)을 관리하게 된다. .The configuration management system 200 is a system that manages resources distributed between the IDE 110 and the runtime system 300 that executes development and testing. A process management function for a history management, a request and an approval process for a distribution target resource, and the like. In the present invention, the class file 130 to be distributed is managed. .

런타임 시스템(300)은 WAS(web application server) 또는 자바 어플리케이션(JAVA application)형태의 서비스를 제공하기 위한 업무 프로세스(310)를 구동하는 것으로, 프로젝트의 개발대상이 되는 시스템이다. 이러한 런타임 시스템(300)은 개발, 테스트 및 운영 환경 등으로 구분되며, 자바 소프트웨어 개발 시스템(10)에서 운영 배포 이전에 테스트를 위한 시스템이 될 수 있다.The runtime system 300 drives a business process 310 for providing a service in the form of a WAS (web application server) or a Java application (JAVA application), and is a system to be developed by the project. The runtime system 300 may be classified into a development, test, and operating environment, and may be a system for testing before deployment in the Java software development system 10.

본 발명의 실시예에 따른 런타임 시스템(300)에는 클래스 파일(130)의 바이트 코드(Byte Code)에 대하여 직접 수정을 가하여 소스파일의 수정 없이 원하는 기능을 부여하는 BCI(byte code instrumentation) 기법이 적용될 수 있다. 이에 따라, 업무 프로세스(310)는 BCI 처리를 통해 형상관리 시스템(200)에 의해 관리되는 클래스 파일(130)을 로딩하고, 그 원본 클래스 파일에 대하여 실행라인을 기록할 수 있는 변환된 클래스 파일(311) 및 변환된 메서드 정보(312)로 변환한다.The runtime system 300 according to the embodiment of the present invention is applied with a byte code instrumentation (BCI) technique for directly modifying the bytecode of the class file 130 to give a desired function without modifying the source file . Accordingly, the business process 310 loads the class file 130 managed by the configuration management system 200 through the BCI process, and outputs the converted class file (for example, 311 and transformed method information 312, respectively.

여기서, 변환된 메서드 정보(312)의 바이트 코드는 주입된 API에 의해 DBMS(400)에 메서드 별 실행라인 정보(410)로 저장되게 된다.Here, the bytecode of the converted method information 312 is stored as per-method execution line information 410 in the DBMS 400 by the injected API.

한편, 전술한 BCI 처리과정을 통해서도 메서드 별 실행라인 정보를 수집할 수 있으나, 그 과정에 너무 많은 처리가 포함되면 업무 프로세스의 구동성능에 큰 영향을 줄 수 있으며, 별도로 분리된 프로세스인 클래식 분석기를 통해 메서드 별 실행라인 정보를 수집하도록 설정되는 것이 바람직하다.Meanwhile, although the execution line information of each method can be collected through the BCI process described above, if too much processing is included in the process, the operation performance of the business process may be greatly influenced, and a classical analyzer It is preferable to set it so as to collect the execution line information by the method.

즉, 클래스 분석기(340)는 별도의 프로세스 형태로 존재하거나, 혹은 업무 프로세스(310)에 포함되어 처리될 수 있다.That is, the class analyzer 340 may exist in a separate process form or may be included in the business process 310 and processed.

클래스 분석기(340)는 런타임 시스템(300)에 배포된 클래스의 메서드 정보에서 메서드 별 실행라인 정보를 수집하게 된다.The class analyzer 340 collects execution line information for each method in the method information of the class distributed in the runtime system 300.

DBMS(400)는 데이터 관리 미들웨어(middle ware)로서, 메서드 별 실행라인 정보(410), 메서드 버전 별 라인 정보(420), 라인 커버리지 정보(430) 등이 저장되는 저장소이다.The DBMS 400 is a data management middle ware and stores the execution line information 410 for each method, the line information 420 for each method version, and the line coverage information 430.

테스트 품질관리 시스템(500)은 통계처리 프로세스를 통해 DBMS(400)에 저장된 메서드 별 실행라인 정보를 이용하여 메서드의 버전 별 실행 라인 커버리지 정보를 산출하는 역할을 한다. The test quality management system 500 calculates execution line coverage information for each version of the method using the execution line information for each method stored in the DBMS 400 through the statistical processing process.

이러한 테스트 품질관리 시스템(500)은 자원 상황에 따라 런타임 시스템(300) 에 함께 설치될 수 있고 별도의 시스템으로 분리 독립되어 설치 될 수 있다. WAS 형태로 사용자에게 수집 및 분석된 각종 정보를 제공하며, 본 발명의 실시예에서는 메서드 별 실행라인 정보(410)와 메서드 버전 별 라인 정보(420)를 이용하여 라인 커버리지 정보(430)를 처리해 내는 프로세스 기능을 포함한다.The test quality management system 500 may be installed together with the runtime system 300 according to the resource conditions, and may be installed separately and separately in a separate system. In the embodiment of the present invention, the line coverage information 430 is processed by using method-specific execution line information 410 and method version-specific line information 420 in the form of WAS. Process function.

또한, 테스트 품질관리 시스템(500)은 DBMS(400)에 저장된 라인 커버리지 정보 중, 가장 최신 버전의 라인 커버리지 정보를 사용자에게 제공할 수 있다.In addition, the test quality management system 500 can provide the user with the latest version of the line coverage information among the line coverage information stored in the DBMS 400. [

도 3a는 본 발명의 실시 예에 따른 자바 소프트웨어 시스템의 대상이 되는 클래스 파일의 구조를 나타낸 도면이고, 도 3b는 본 발명의 실시예에 따른 바이트 코드 기반 자바 메서드 버전 관리 방법을 구현하는 ID산출 프로세스의 구조를 나타낸 도면이다. FIG. 3A is a diagram illustrating a structure of a class file that is a target of a Java software system according to an embodiment of the present invention. FIG. 3B is an ID calculation process Fig.

먼저, 도 3a를 참조하면, 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템에서 클래스 파일(130)은 그 내부에 메서드 정보(131)를 포함하고 있다. 그리고, 메서드 정보(131)의 속성(attribute) 중 하나인, 코드 속성(code attribute; 134)에는 메서드 별 실행 바이트 코드{0 ~ N-1(N은 자연수)}가 있다.Referring to FIG. 3A, in a Java software development system according to an embodiment of the present invention, a class file 130 includes method information 131 therein. Each of the code attributes 134, which is one of attributes of the method information 131, has a method-specific execution byte code {0 to N-1 (N is a natural number)}.

본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템에서는 전술한 실행 바이트 코드에 대하여 소정의 해쉬 함수(harsh function)를 이용하여 해쉬ID를 산출하여 메서드의 버전ID로 사용하는 것을 특징으로 한다. 이는 소스파일에서 버전정보를 구하는 방법과 대비하여 볼 때, 상당히 간단하면서도 파싱(parsing) 처리와 같은 복잡한 처리과정 없이 효율적으로 산출 가능하다는 특징이 있다.In the Java software development system according to the embodiment of the present invention, a hash ID is calculated by using a predetermined hash function on the execution bytecode, and is used as the version ID of the method. This feature is quite simple in comparison with the method of obtaining version information from a source file, but it can be efficiently produced without complicated processing such as parsing.

단, 전술한 방식으로는 최대 65,536 바이트(byte)의 데이터까지 읽을 수 있다는 한계가 있고, 코드 변화에 매우 민감하게 반응할 수 있으며, 이러한 한계를 극복하기 위해, 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템에서는 클래스 파일(130) 의 메서드 정보(131)내 코드 속성(134)값 뿐만 아니라, 바이트 코드의 인덱스 기준인 소스 라인번호 테이블 정보를 더 이용할 수 있다.However, in the above-described method, there is a limitation that data up to 65,536 bytes (byte) can be read, and it is very susceptible to code changes. In order to overcome this limitation, The development system can further use not only the value of the code property 134 in the method information 131 of the class file 130 but also the source line number table information which is an index reference of the bytecode.

도 3a 및 도 3b를 참조하면, 메서드 정보(131)는 라인번호 테이블 정보 속성(Line Number Table Attribute; 135)를 속성(Attribute)으로 보관하고 있다. 소스 라인번호 테이블(135)의 모든 라인번호를 첫 번째 라인 번호를 메서드의 시작라인 번호로 저장하고 그 시작라인 번호를 기준으로 상대 값을 구한다. 일 예로서, "10, 12, 16, 18"의 경우, 메서드 시작라인 번호는 "10"임에 따라, 라인번호 테이블의 값들은 "10"을 뺀 값인 "0, 2, 6, 8"가 되며, 이렇게 산출한 오프셋(offset) 값을 통해 해쉬ID를 산출하여 메서드의 버전ID로 사용함으로써 코드변경에 민감하지 않은 메서드 버전정보를 이용할 수 있다.3A and 3B, the method information 131 stores a line number table attribute 135 as an attribute. The first line number of all the line numbers of the source line number table 135 is stored as the method start line number, and the relative value is obtained based on the start line number. As an example, in the case of "10, 12, 16, 18", the method starting line number is "10", and the values of the line number table are "0, 2, 6, 8" The method version information that is not susceptible to code change can be used by calculating the hash ID using the offset value thus calculated and using it as the version ID of the method.

이를 위한 ID 산출 프로세스(350)로서, 메서드 정보(131)의 라인 넘버 테이블 속성(Line Number Table Attribute)를 참조하여 첫 번째 라인 번호를 메서드의 시작라인 번호로 저장하고, 그 시작라인 번호를 기준으로 상대 값인 라인 번호 테이블 값을 구하는 오프셋 산출기(357) 및, 라인 번호 테이블 값에 대응하여 변환된 메서드 정보(312)에 삽입되는 해쉬ID를 산출하는 해쉬 생성기(358)를 포함할 수 있다. 이에 따라, 메서드 정보의 버전ID는 해쉬ID로 지정되게 된다. As the ID calculation process 350 for this, the first line number is stored as the method start line number by referring to the line number table attribute of the method information 131, An offset calculator 357 for obtaining a line number table value which is a relative value and a hash generator 358 for calculating a hash ID inserted in the converted method information 312 corresponding to the line number table value. Accordingly, the version ID of the method information is designated by the hash ID.

전술한 ID 산출 프로세스(350)는 런라임 시스템의 업무 프로세스 또는 클래스 분석기에 포함될 수 있다.The ID calculation process 350 described above may be included in the business process or class analyzer of the runtime system.

이하, 도면을 참조하여 본 발명의 실시예에 따른 자바 소프트웨어 개발 방법을 설명한다.Hereinafter, a Java software development method according to an embodiment of the present invention will be described with reference to the drawings.

도 4는 본 발명의 실시예에 따른 자바 소프트 개발 방법을 나타낸 도면이다.4 is a diagram illustrating a Java software development method according to an embodiment of the present invention.

도 4를 참조하면, 본 발명의 실시예에 따른 자바 소프트웨어 개발 방법은, 전술한 소프트웨어 개발 시스템(도 2의 10)을 통한 바이트코드 기반의 메서드 버전 관리 방법에 있어서, 클래스 파일을 이관하는 단계(S100), 승인 및 요청된 클래스 파일을 재 배포하는 단계(S110), 업무 프로세스를 통해 클래스 파일 및 메서드 정보를 변환하여 메서드 별 실행라인 정보를 생성하고, 클래스 분석기를 통해 클래스 파일로부터 메서드 버전 별 라인 정보를 추출 및 수집하는 단계(S120), 통계처리 프로세스를 통해 메서드 별 실행라인 정보 및, 메서드 버전 별 라인 정보를 로딩하여 메서드 버전 별로 라인 커버리지 정보를 산출하는 단계(S130) 및, 메서드 별 실행라인 정보, 메서드 버전 별 라인 정보 및 라인 커버리지 정보를 저장하는 단계(S140)를 포함할 수 있다.Referring to FIG. 4, a Java software development method according to an embodiment of the present invention is a method of managing a method version based on byte code through the above-described software development system (10 in FIG. 2) S100), redistributing the approved and requested class file (S110), converting the class file and method information through the business process to generate execution line information for each method, Extracting and collecting information (S120), calculating line coverage information for each method version by loading execution line information for each method and line information for each method version through a statistical processing process (S130) Information, method-specific line information, and line coverage information (S140).

클래스 파일을 이관하는 단계(S100)는 개발자 단말의 IDE가 백그라운드에서 자동 빌드된 클래스 파일을 형상관리 시스템에 이관 즉, 배포하는 단계이다.The step of transferring the class file (S100) is a step of transferring the class file in which the IDE of the developer terminal automatically builds in the background to the configuration management system.

승인 및 요청된 클래스 파일을 재 배포하는 단계(S110)는 형상관리 시스템이 승인 및 요청에 따라 이관된 클래스 파일을 다시 런타임 시스템에 배포하는 단계이다.The step of reissuing the approved and requested class file (S110) is a step of distributing the class file transferred back to the runtime system by the CM system upon approval and request.

업무 프로세스를 통해 클래스 파일 및 메서드 정보를 변환하여 메서드 별 실행라인 정보를 생성하고, 클래스 분석기를 통해 클래스 파일로부터 메서드 버전 별 라인 정보를 추출 및 수집하는 단계(S120)는 런타임 시스템이 배포된 클래스 파일 및 이에 포함되는 메서드 정보를 실행라인을 기록할 수 있는 형태로 변환하여 메서드 별 실행라인 정보를 생성하며, 동시에 메서드 버전 별 라인 정보를 추출 및 수집하는 단계이다.The step (S120) of converting the class file and method information through the business process to generate execution line information for each method and extracting and collecting line information for each method version from the class file through the class analyzer (S120) And converting the method information included therein into a form capable of recording an execution line, generating execution line information for each method, and simultaneously extracting and collecting line information for each method version.

통계처리 프로세스를 통해 메서드 별 실행라인 정보 및, 메서드 버전 별 라인 정보를 로딩하여 메서드 버전 별로 라인 커버리지 정보를 산출하는 단계(S130)는 테스트 품질관리 시스템이 DBMS에 기저장된 메서드 별 실행라인 정보 및, 메서드 버전 별 라인 정보를 로딩하여 메서드 버전 별로 라인 커버리지 정보를 산출하는 단계이다. The step S130 of calculating line coverage information for each method version by loading the execution line information for each method and the line information for each method version through the statistical processing process can be performed by the test quality management system, It is a step of calculating line coverage information by method version by loading line information by method version.

메서드 별 실행라인 정보, 메서드 버전 별 라인 정보 및 라인 커버리지 정보를 저장하는 단계(S140)는 런타임 시스템 및 테스트 품질관리 시스템에 의해 획득된 메서드 별 실행라인 정보, 메서드 버전 별 라인 정보 및 라인 커버리지 정보를 저장 DBMS에 저장하는 단계이다. 여기서, 메서드 별 실행라인 정보, 메서드 버전 별 라인 정보는 상기 S130 단계 이후 진행될 수 있다.Step S140 of storing the execution line information for each method, line information for each method version, and line coverage information includes executing line information for each method, line information for each method version, and line coverage information obtained by the runtime system and the test quality management system And storing it in a storage DBMS. Here, the execution line information for each method and the line information for each method version may be performed after step S130.

이하, 도면을 참조하여 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템을 구성하는 각 시스템간 수행하는 절차를 나타낸 시퀀스 도를 통해 본 발명의 바이트코드 기반의 메서드 버전 관리 방법을 상세히 설명한다.Hereinafter, a method of version-based method management based on the bytecode according to the present invention will be described in detail with reference to the accompanying drawings, illustrating a procedure performed between systems constituting a Java software development system according to an embodiment of the present invention.

도 5는 본 발명의 실시예에 따른 자바 소프트웨어 개발 시스템의 각 시스템간 수행하는 절차를 시퀀스 도로 나타낸 도면이다.FIG. 5 is a sequence diagram illustrating a procedure performed between systems of a Java software development system according to an embodiment of the present invention.

도 5를 참조하면, 개발자에 의해 개발자 단말(100)의 IDE에서 작성된 소스파일은 백그라운드(background) 형태로 자동 빌드(build)되어 클래스 파일로 생성될 수 있으며, IDE의 배포요청에 따라 생성된 클래스 파일은 형상관리 시스템(200)에 이관된다(S200).Referring to FIG. 5, a source file created in the IDE of the developer terminal 100 by the developer is automatically built in a background form and can be generated as a class file. In accordance with the distribution request of the IDE, The file is transferred to the configuration management system 200 (S200).

형상관리 시스템(200)은 요청 및 승인 처리 프로세스를 통해 승인된 클래스 파일(130)을 런타임 시스템(300)으로 배포하게 된다(S120).The configuration management system 200 distributes the approved class file 130 to the runtime system 300 through the request and approval process (S120).

런타임 시스템(300)은 업무 프로세스를 통해 BCI 처리절차를 수행하여 원본 클래스 파일 및 메서드 정보의 실행라인을 기록할 수 있는 변환된 클래스 파일(311) 및 변환된 메서드 정보(312)로 변환한다(S230). 이때, 변환된 메서드 정보(312)의 바이트코드는 API 호출에 의해 DBMS(400)에 메서드 별 실행라인 정보로 저장되게 된다(S231).The runtime system 300 performs the BCI processing procedure through the business process and converts the original class file and the execution line of the method information into the converted class file 311 and converted method information 312 (S230 ). At this time, the bytecode of the converted method information 312 is stored as per-method execution line information in the DBMS 400 by API call (S231).

또한, 런타임 시스템(300)은 배포된 클래스 파일에 대하여 테스트 품질관리 툴의 클래스 분석기를 통해 분석을 수행하게 되며, DBMS(400)에 저장된 이전 메서드 버전정보를 로딩(loading)하여(S232), 현재 메서드 버전정보와 비교를 수행한다(S233). 만약, 메서드 버전이 변경되었다면(S234), 런타임 시스템(300)은 현재 라인 커버리지 정보를 초기화하고, 라인 분석 정보 및 메서드 버전정보를 DBMS(400)에 저장하게 된다(S235).The runtime system 300 analyzes the distributed class file through the class analyzer of the test quality management tool. The runtime system 300 loads the previous method version information stored in the DBMS 400 (S232) And compares it with the method version information (S233). If the method version is changed (S234), the runtime system 300 initializes the current line coverage information, and stores the line analysis information and the method version information in the DBMS 400 (S235).

그리고, 테스트 품질관리 시스템(500)은 통계처리 프로세스에 의해 라인 분석정보, 메서드 별 실행라인 정보 및 메서드 버전 별 라인 정보를 DBMS(400)로부터 로딩 한다(S240).Then, the test quality management system 500 loads line analysis information, execution line information for each method, and line information for each method version from the DBMS 400 by a statistical processing process (S240).

다음으로, 테스트 품질관리 시스템(500)은 라인 커버리지 정보(430)를 메서드 버전 별로 산출하게 된다(S241). 이때, 라인 커버리지 정보의 변경여부를 판단하고(S242), 변경된 경우 라인 커버리지 정보를 DBMS에 갱신 저장하게 된다(S250). Next, the test quality management system 500 calculates line coverage information 430 for each method version (S241). At this time, whether or not the line coverage information is changed is determined (S242), and when changed, the line coverage information is updated and stored in the DBMS (S250).

이후, DBMS(400)에 저장된 라인 커버리지 정보는 테스트 품질관리 시스템(500)의 UI를 통해 가장 최신 버전의 정보가 사용자에게 제공되게 된다.Thereafter, the latest version information is provided to the user through the UI of the test quality management system 500, the line coverage information stored in the DBMS 400. [

상기한 설명에 많은 사항이 구체적으로 기재되어 있으나 이것은 발명의 범위를 한정하는 것이라기보다 바람직한 실시예의 예시로서 해석되어야 한다. 따라서, 발명은 설명된 실시예에 의하여 정할 것이 아니고 특허청구범위와 특허청구범위에 균등한 것에 의하여 정하여져야 한다.While a great many are described in the foregoing description, it should be construed as an example of preferred embodiments rather than limiting the scope of the invention. Accordingly, the invention is not to be determined by the embodiments described, but should be determined by equivalents to the claims and the appended claims.

100 : 개발자 단말 110 : IDE
200 : 형상관리 시스템 300 : 런타임 시스템
400 : DBMS 500 : 테스트 품질관리 시스템
100: Developer terminal 110: IDE
200: CM system 300: Runtime system
400: DBMS 500: Test Quality Management System

Claims (11)

바이트 코드 기반 자바 메서드 버전 관리 방법을 이용한 자바 소프트웨어 개발 시스템으로서,
사용자에게 개발환경을 제공하는 통합개발환경(IDE)이 탑재되고, 메서드 정보를 포함하는 클래스 파일을 제공하는 개발자 단말;
상기 클래스 파일의 변경 이력에 대한 관리를 수행하는 형상관리 시스템;
업무 프로세스를 통해 변환된 클래스 파일 및 메서드 정보에 대한 메서드 별 실행라인 정보와, 클래스 분석기를 통해 상기 클래스 파일로부터 추출된 현재 메서드 버전 별 라인 정보를 이전 버전과 비교하여 변경시 정보를 갱신하는 런타임 시스템;
메서드 별 실행라인 정보, 메서드 버전 별 라인 정보 및 라인 커버리지 정보를 저장하는 DBMS; 및
통계처리 프로세스를 통해 상기 메서드 별 실행라인 정보 및 메서드 버전 별 라인 정보를 로딩하여 메서드 버전 별로 라인 커버리지 정보를 산출하고, 상기 DBMS에 저장된 정보를 갱신하는 테스트 품질관리 시스템을 포함하고,
상기 런타임 시스템은 상기 형상관리 시스템으로부터 배포되는 클래스 파일을 구현하여 WAS 또는 자바 어플리케이션을 실행하고,
상기 업무 프로세스는 BCI 처리를 통해 원본 클래스 및 메서드 정보를 실행라인을 기록할 수 있는 변환된 클래스 파일 및 메서드 정보로 변환하고,
상기 변환된 클래스 파일 및 메서드 정보는 API에 의해 상기 DBMS에 상기 메서드 별 실행라인 정보로 저장되고,
상기 업무 프로세스 및 클래스 분석기는,
상기 메서드 정보 내 바이트 코드의 인덱스 기준인 라인 넘버 테이블 속성(Line Number Table Attribute)를 참조하여 첫 번째 라인 번호를 메서드의 시작라인 번호로 저장하고, 상기 시작라인 번호를 기준으로 상대 값인 라인 번호 테이블 값을 구하는 오프셋 산출기; 및
상기 라인 번호 테이블 값에 대응하여 해쉬ID를 산출하는 해쉬 생성기를 포함하고,
상기 메서드 정보의 버전ID는 상기 해쉬ID로 지정되는 자바 소프트웨어 개발 시스템.
A Java software development system using byte code based Java method version management method,
A developer terminal equipped with an integrated development environment (IDE) for providing a development environment to a user and providing a class file including method information;
A configuration management system for managing a change history of the class file;
A runtime system for updating information upon change by comparing execution line information for each class file and method information converted through a business process and line information for each current method version extracted from the class file through a class analyzer, ;
A DBMS for storing execution line information for each method, line information for each method version, and line coverage information; And
And a test quality management system for calculating line coverage information for each method version by loading the method-specific execution line information and method version-specific line information through a statistical processing process, and updating the information stored in the DBMS,
Wherein the runtime system implements a class file distributed from the configuration management system to execute a WAS or Java application,
The business process converts the original class and method information into converted class file and method information that can record the execution line through BCI processing,
The converted class file and method information are stored in the DBMS as execution line information for each method by an API,
The business process and class analyzer,
A first line number is stored as a start line number of a method by referring to a line number table attribute that is an index reference of an bytecode in the method information, and a line number table value An offset calculator for obtaining an offset value; And
And a hash generator for calculating a hash ID corresponding to the line number table value,
And the version ID of the method information is specified by the hash ID.
제 1 항에 있어서,
상기 개발자 단말은,
상기 사용자에 의해 작성된 소스파일을 컴파일러가 백그라운드에서 자동 빌드하여 상기 클래스 파일을 생성하는 자바 소프트웨어 개발 시스템.
The method according to claim 1,
The developer terminal,
Wherein the compiler generates a class file by automatically building a source file created by the user in the background.
제 1 항에 있어서,
상기 형상관리 시스템은,
요청 및 승인 프로세스를 통해 승인된 클래스 파일을 런타임 시스템으로 재배포하는 자바 소프트웨어 개발 시스템.
The method according to claim 1,
The configuration management system includes:
A Java software development system that redistributes approved class files to the runtime system through a request and approval process.
삭제delete 삭제delete 청구항 1에 기재된 소프트웨어 개발 시스템을 통한 바이트코드 기반의 자바 소프트웨어 개발 방법에 있어서,
(a) 클래스 파일을 이관하는 단계;
(b) 승인 및 요청된 클래스 파일을 재 배포하는 단계;
(c) 업무 프로세스를 통해 클래스 파일 및 메서드 정보를 변환하여 메서드 별 실행라인 정보를 생성하며, 클래스 분석기를 통해 상기 클래스 파일로부터 메서드 버전 별 라인 정보를 추출 및 수집하는 단계;
(d) 통계처리 프로세스를 통해 상기 메서드 별 실행라인 정보 및 메서드 버전 별 라인 정보를 로딩하여 메서드 버전 별로 라인 커버리지 정보를 산출하는 단계; 및
(e) 상기 메서드 별 실행라인 정보, 메서드 버전 별 라인 정보 및 라인 커버리지 정보를 저장하는 단계
를 포함하고,
상기 (c) 단계는,
배포되는 클래스 파일을 구현하여 WAS 또는 자바 어플리케이션을 실행하는 단계; 및
BCI 처리를 통해 원본 클래스 및 메서드 정보를 실행라인을 기록할 수 있는 변환된 클래스 파일 및 메서드 정보로 변환하는 단계를 포함하고,
상기 변환된 클래스 파일 및 메서드 정보는 API에 의해 상기 메서드 별 실행라인 정보로 저장되고,
상기 (c) 단계는,
상기 메서드 정보의 바이트 코드의 인덱스 기준인 라인 넘버 테이블 속성(Line Number Table Attribute)를 참조하여 첫 번째 라인 번호를 메서드의 시작라인 번호로 저장하는 단계;
상기 시작라인 번호를 기준으로 상대 값인 라인 번호 테이블 값을 구하는 단계; 및
상기 라인 번호 테이블 값에 대응하여 해쉬ID를 산출하는 단계를 포함하고,
상기 메서드 정보의 버전ID는 상기 해쉬ID로 지정되는 자바 소프트웨어 개발 방법.
A method of Java software development based on byte code through a software development system according to claim 1,
(a) transferring a class file;
(b) redistributing the approved and requested class files;
(c) converting the class file and method information through a business process to generate execution line information for each method, extracting and collecting line information for each method version from the class file through a class analyzer;
(d) calculating line coverage information for each method version by loading the method-specific execution line information and method version-specific line information through a statistical processing process; And
(e) storing the execution line information for each method, line information for each method version, and line coverage information
Lt; / RTI >
The step (c)
Executing a WAS or Java application by implementing a distributed class file; And
Converting the original class and method information into converted class file and method information capable of writing an execution line through BCI processing,
The converted class file and method information are stored as execution line information for each method by an API,
The step (c)
Storing a first line number as a method start line number by referring to a line number table attribute that is an index reference of a byte code of the method information;
Obtaining a line number table value which is a relative value based on the start line number; And
And calculating a hash ID corresponding to the line number table value,
And the version ID of the method information is specified by the hash ID.
제 6 항에 있어서,
상기 (a) 단계 이전에,
컴파일러가 상기 사용자에 의해 작성된 소스파일을 백그라운드에서 자동 빌드하여 상기 클래스 파일을 생성하는 단계
를 포함하는 자바 소프트웨어 개발 방법.
The method according to claim 6,
Before the step (a)
The compiler generates a class file by automatically building a source file created by the user in the background
/ RTI >
삭제delete 삭제delete 제 6 항에 있어서,
상기 (c) 단계는,
상기 클래스 분석기를 통해 상기 클래스 파일로부터 추출된 현재 메서드 버전 별 라인 정보를 이전 버전과 비교하여 변경시 저장된 메서드 버전 별 라인 정보를 갱신하는 단계
를 더 포함하는 자바 소프트웨어 개발 방법.
The method according to claim 6,
The step (c)
Comparing the line information of the current method version extracted from the class file with the previous version through the class analyzer and updating the line information of each method version stored at the time of the change
The method comprising the steps of:
삭제delete
KR1020170061814A 2017-05-18 2017-05-18 Management method for java methods based on bytecode, development system and method for java software using the same KR101970717B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170061814A KR101970717B1 (en) 2017-05-18 2017-05-18 Management method for java methods based on bytecode, development system and method for java software using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170061814A KR101970717B1 (en) 2017-05-18 2017-05-18 Management method for java methods based on bytecode, development system and method for java software using the same

Publications (2)

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

Family

ID=64561770

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170061814A KR101970717B1 (en) 2017-05-18 2017-05-18 Management method for java methods based on bytecode, development system and method for java software using the same

Country Status (1)

Country Link
KR (1) KR101970717B1 (en)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100678912B1 (en) 2005-10-18 2007-02-05 삼성전자주식회사 Method for interpreting method bytecode and system by the same
KR100967525B1 (en) 2008-06-09 2010-07-07 박기복 Method and system for generating load only to the targeted system, not to the connected ones when doing performance, load, functional tests on the targeted system.
KR101667262B1 (en) * 2014-08-18 2016-10-19 슈어소프트테크주식회사 Method for measuring code coverage and computer readable recording medium having program the same

Also Published As

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

Similar Documents

Publication Publication Date Title
US10019256B2 (en) Systems and methods for incremental software development
CN108027722B (en) Dynamically updating applications in compilation and deployment
Sen et al. Jalangi: A selective record-replay and dynamic analysis framework for JavaScript
US8914780B2 (en) Incremental generation of managed assemblies
Noonan et al. Polymorphic type inference for machine code
US8381176B1 (en) Software build orchestration framework
US20160239402A1 (en) Software commit risk level
US20120296878A1 (en) File set consistency verification system, file set consistency verification method, and file set consistency verification program
US8214393B2 (en) Integrating database deployment with code deployment
US10942718B2 (en) Systems and/or methods for type inference from machine code
US20100262956A1 (en) Software development support apparatus, function extension method and storage medium for storing function extension program
Kirbas et al. The relationship between evolutionary coupling and defects in large industrial software
US20090260000A1 (en) Method, apparatus, and manufacture for software difference comparison
US11880674B2 (en) Adaptive hot reload for class changes
CN106445505A (en) Code processing method and device
Pârțachi et al. Flexeme: Untangling commits using lexical flows
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
US20210124575A1 (en) Providing build avoidance without requiring local source code
KR101924747B1 (en) Flexible metadata composition
Dawes et al. Vypr2: A framework for runtime verification of python web services
Peiris et al. Automatically detecting" excessive dynamic memory allocations" software performance anti-pattern
KR101970717B1 (en) Management method for java methods based on bytecode, development system and method for java software using the same
JP4144885B2 (en) How to reuse application objects
US7389515B1 (en) Application deflation system and method

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