KR101476536B1 - The method and system for inspecting program - Google Patents
The method and system for inspecting program Download PDFInfo
- Publication number
- KR101476536B1 KR101476536B1 KR1020130059976A KR20130059976A KR101476536B1 KR 101476536 B1 KR101476536 B1 KR 101476536B1 KR 1020130059976 A KR1020130059976 A KR 1020130059976A KR 20130059976 A KR20130059976 A KR 20130059976A KR 101476536 B1 KR101476536 B1 KR 101476536B1
- Authority
- KR
- South Korea
- Prior art keywords
- program
- real
- code
- time execution
- execution information
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3696—Methods or tools to render software testable
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 프로그램 무결성 관리 방법, 시스템 및 그 방법을 컴퓨터 상에서 실행하는 프로그램을 기록한 기록매체에 관한 것으로, 본 발명은 프로그램의 소스코드를 프로세서(Processor)가 실행가능한 실행코드로 변환하여 메모리에 기록하는 단계; 상기 소스코드에서 객체를 정의하는 객체정보를 읽는 단계; 상기 객체정보를 이용하여, 상기 실행코드에서 상기 객체의 실시간 실행정보를 읽는 단계; 상기 실시간 실행정보를 사용자에게 출력하는 단계; 및 상기 실시간 실행정보를 분석하여, 상기 프로그램의 동작 여부를 판단하는 단계를 포함하는 프로그램 검수 방법을 제공한다. 상기와 같은 구성을 통하여, 본 발명에 따른 프로그램 무결성 관리 방법 및 시스템은 인터넷 연결 여부와 같은 사용자 환경에 구애받지 않고 프로그램의 무결성을 검증할 수 있다. 그리고, 중간 코드 내 무결성 정보의 존재 여부를 확인하는 간단한 작업만으로 프로그램의 무결성을 검증할 수 있어, 프로그램이 실행되는 시스템에 부하를 발생하지 않고, 빠른 속도로 무결성 검증이 가능하다.[0001] The present invention relates to a program integrity management method, a system and a recording medium on which a program for executing the method is recorded, the source code of the program being converted into an executable code executable by a processor and recorded in a memory step; Reading object information defining an object in the source code; Reading real-time execution information of the object from the execution code using the object information; Outputting the real-time execution information to a user; And analyzing the real-time execution information to determine whether the program is operating. Through the above-described configuration, the program integrity management method and system according to the present invention can verify the integrity of the program regardless of the user environment such as whether or not the user is connected to the Internet. The integrity of the program can be verified only by a simple operation of confirming the existence of the integrity information in the intermediate code, and the integrity verification can be performed at a high speed without causing a load on the system in which the program is executed.
Description
본 발명은 프로그램 검수 방법 및 시스템에 관한 것으로, 보다 구체적으로는 프로그램이 실행중인 메모리에서 프로그램의 객체정보를 검색 및 모니터링하여, 프로그램의 동작 여부를 판단하도록 구성된 프로그램 검수 방법 및 시스템에 관한 것이다.The present invention relates to a program verification method and system, and more particularly, to a program verification method and system configured to determine whether a program is operated by searching and monitoring object information of a program in a memory in which a program is being executed.
최근 전자분야의 발전으로 인해 다양한 하드웨어(Hardware) 기기들이 전자화, 디지털화 되고 있고, 이에 따라 소프트웨어(Software) 프로그램에 의해 동작되는 하드웨어 기기들이 점차 늘어나고 있다.2. Description of the Related Art [0002] Recently, various hardware devices are being digitized and digitized due to the development of the electronic field, and accordingly, hardware devices operated by software programs are increasing.
그중 대표적인 것이 컴퓨터(Computer)로, 컴퓨터에는 운영체제(OS, Operating System)이 설치되어 있고, 각종 어플리케이션이 별도의 프로그램으로 컴퓨터에 설치되어 동작된다. 이러한 컴퓨터는 비단 데스크톱과 같은 개인용 컴퓨터(Personal Computer) 뿐만 아니라 스마트폰(Smart Phone)과 같은 통신 단말기도 해당된다.Among them, a computer is a representative example, and an operating system (OS) is installed in a computer, and various applications are installed in a computer as a separate program and operated. Such a computer corresponds not only to a personal computer such as a desktop but also to a communication terminal such as a smart phone.
이러한 전자기기에 설치되는 프로그램들은, 사용자가 요구하는 서비스를 전자기기가 수행하도록 동작한다. 복잡한 현대 사회에서 사용자는 다양한 서비스를 요구하고 있으며, 이러한 사용자의 요구를 만족시키기 위해, 많은 소프트웨어 개발자들이 다양한 프로그램을 개발하고 있다.Programs installed in such electronic equipment operate so that the electronic equipment performs the service requested by the user. In a complex modern society, users are demanding a variety of services. To meet these user needs, many software developers are developing various programs.
관련하여, 프로그램을 개발하는 과정에서, 개발자들은 프로그램이 제대로 동작하는지 판단하기 위하여, 프로그램 검수(디버그, Degbug) 작업을 수행한다.In relation to the development of the program, the developers perform the program debugging (debugging) operation to determine whether the program is operating properly.
그러나, 기존의 프로그램 검수 작업은 일일이 입력 값, 출력 값을 수작업으로 등록하여, 프로그램의 동작 결과를 확인하는 등의 비효율적인 작업으로 시간낭비를 줄이지 못하고 있는 실정이다. 이에 따라, 프로그램 개발에도 많은 시간과 노력이 소요되고 있는 것이 현실이다.However, the existing program verification work has not been able to reduce the time wasted by an inefficient operation such as manually registering the input value and the output value manually and confirming the operation result of the program. Thus, it takes a lot of time and effort to develop a program.
따라서, 일일이 프로그램을 실행해야하는 번거로움을 제거하고, 프로그램 검수의 정확성을 높일 수 있도록 구성된 효율적인 프로그램 검수 방법 및 시스템이 요구되고 있다.Accordingly, there is a need for an efficient program verification method and system configured to eliminate the inconvenience of having to execute the program one by one and to increase the accuracy of the program verification.
본 발명은 상기의 문제점을 해결하기 위하여 창작된 것으로, 일일이 프로그램을 실행해야하는 번거로움을 제거하고, 프로그램 검수의 정확성을 높일 수 있도록 구성된 효율적인 프로그램 검수 방법 및 시스템을 제공하는 것을 목적으로 한다.It is an object of the present invention to provide an efficient program verification method and system which are created to solve the above problems and are configured to eliminate the cumbersome task of executing a program and increase the accuracy of program verification.
상기 목적을 달성하기 위하여, 본 발명은 프로그램의 소스코드를 프로세서(Processor)가 실행가능한 실행코드로 변환하여 메모리에 기록하는 단계; 상기 소스코드에서 객체를 정의하는 객체정보를 읽는 단계; 상기 객체정보를 이용하여, 상기 실행코드에서 상기 객체의 실시간 실행정보를 읽는 단계; 상기 실시간 실행정보를 사용자에게 출력하는 단계; 및 상기 실시간 실행정보를 분석하여, 상기 프로그램의 동작 여부를 판단하는 단계를 포함하는 프로그램 검수 방법을 제공한다.According to an aspect of the present invention, there is provided a method for processing a program, the method comprising: converting source code of a program into executable code executable by a processor and recording the converted executable code in a memory; Reading object information defining an object in the source code; Reading real-time execution information of the object from the execution code using the object information; Outputting the real-time execution information to a user; And analyzing the real-time execution information to determine whether the program is operating.
또한, 본 발명은 상기 프로그램 동작 여부 판단 단계는, 상기 실행코드에서 상기 객체의 생성 또는 삭제 여부를 확인하여, 상기 프로그램의 동작 여부를 판단하는 실시예를 포함한다.According to another aspect of the present invention, the step of determining whether the program is operated may include determining whether the program is operated by checking whether the object is created or deleted in the execution code.
또한, 본 발명은 상기 프로그램 동작 여부 판단 단계는, 상기 실행코드에서 상기 객체를 지시하는 참조정보의 생성 또는 삭제 여부를 확인하여, 상기 프로그램의 동작 여부를 판단하는 실시예를 포함한다.According to another aspect of the present invention, the step of determining whether or not the program is operated may include determining whether the program is operated by checking whether the reference information indicating the object is generated or deleted in the execution code.
또한, 본 발명은 사용자 입력을 받아, 상기 실시간 실행정보를 변경하는 단계를 더 포함하고, 상기 프로그램 동작 여부 판단 단계는, 상기 변경된 실시간 실행정보에 따라 상기 프로그램의 동작 여부를 판단하는 실시예를 포함한다.According to another aspect of the present invention, there is provided a method of operating a program, the method comprising the steps of: receiving user input and changing the real-time execution information; do.
또한, 본 발명은 상기 실시간 실행정보를 기 설정된 값으로 변경하는 단계를 더 포함하고, 상기 프로그램 동작 여부 판단 단계는, 상기 변경된 실시간 실행정보에 따라 상기 프로그램의 동작 여부를 판단하는 실시예를 포함한다.Further, the present invention may further include changing the real-time execution information to a predetermined value, and the step of determining whether or not the program operates may include determining whether the program is operated according to the changed real-time execution information .
또한, 본 발명은 상기 프로그램 동작 여부 판단 단계는, 상기 실시간 실행정보가 기설정된 값 범위를 벗어났는지 여부로, 상기 프로그램의 동작 여부를 판단하는 실시예를 포함한다.In the present invention, the step of determining whether or not the program is operated may include determining whether the program is operating based on whether the real-time execution information is out of a preset value range.
또한, 본 발명은 데이터를 저장하는 메모리; 상기 데이터를 사용자에게 출력하는 출력부; 및 프로그램의 소스코드를 실행가능한 실행코드로 변환하여 상기 메모리에 기록하고, 상기 실행코드를 이용하여 상기 프로그램을 실행하고, 상기 소스코드에서 객체를 정의하는 객체정보를 읽고, 상기 객체정보를 이용하여, 상기 실행코드에서 상기 객체의 실시간 실행정보를 읽고, 상기 실시간 실행정보를 사용자에게 출력하도록 상기 출력장치를 제어하고, 상기 실시간 실행정보를 분석하여 상기 프로그램의 동작 여부를 판단하는 프로세서(Processor)를 포함하는 프로그램 검수 시스템을 제공한다.The present invention also relates to a memory for storing data; An output unit for outputting the data to a user; And a program code for converting the source code of the program into executable executable code and recording the executable executable code in the memory, executing the program using the executable code, reading the object information defining the object in the source code, A processor for reading the real-time execution information of the object in the execution code, controlling the output apparatus to output the real-time execution information to a user, and analyzing the real-time execution information to determine whether the program is operating Provide a program validation system that includes.
또한, 본 발명은 상기 프로세서는, 상기 실행코드에서 상기 객체의 생성 또는 삭제 여부를 확인하여, 상기 프로그램의 동작 여부를 판단하는 실시예를 포함한다.Further, the processor of the present invention includes an embodiment for determining whether or not the program is generated by checking whether the object is created or deleted in the execution code.
또한, 본 발명은 상기 프로세서는, 상기 실행코드에서 상기 객체를 지시하는 참조정보의 생성 또는 삭제 여부를 확인하여, 상기 프로그램의 동작 여부를 판단하는 실시예를 포함한다.In the present invention, the processor includes an embodiment for determining whether or not the program is operated by confirming whether to generate or delete reference information indicating the object in the execution code.
또한, 본 발명은 사용자로부터 사용자 입력을 받는 사용자 인터페이스부 포함하고, 상기 프로세서는, 상기 사용자 입력에 따라 상기 실시간 실행정보를 변경하도록 상기 사용자 인터페이스부를 제어하고, 상기 변경된 실시간 실행정보에 따라 상기 프로그램의 동작 여부를 판단하는 실시예를 포함한다.According to another aspect of the present invention, there is provided an information processing apparatus including a user interface unit for receiving a user input from a user, the processor controlling the user interface unit to change the real time execution information according to the user input, And judges whether it is operating.
또한, 본 발명은 상기 프로세서는, 상기 실시간 실행정보를 기 설정된 값으로 변경하고, 상기 변경된 실시간 실행정보에 따라 상기 프로그램의 동작 여부를 판단하는 실시예를 포함한다.Also, the present invention may include an embodiment in which the processor changes the real-time execution information to a predetermined value and determines whether the program is operated according to the changed real-time execution information.
또한, 본 발명은 상기 프로세서는, 상기 실시간 실행정보가 기설정된 값 범위를 벗어났는지 여부로, 상기 프로그램의 동작 여부를 판단하는 실시예를 포함한다.The present invention further includes an embodiment for determining whether the program is operating based on whether the real-time execution information is out of a predetermined value range.
본 발명은 상술한 실시예에 한정되지 않으며, 첨부된 청구범위에서 알 수 있는 바와 같이 본 발명이 속한 분야의 통상의 지식을 가진 자에 의해 변형이 가능하고 이러한 변형은 본 발명의 범위에 속함을 밝혀둔다.It will be understood by those of ordinary skill in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. I will reveal.
상기와 같은 구성을 통하여, 본 발명에 따른 프로그램 검수 방법 및 시스템은 기존 프로그램 검수 방법과 달리, 일일이 프로그램을 실행해야하는 번거로움을 제거하여 프로그램 검수의 효율성을 높일 수 있다. 그리고, 다양한 프로그램 환경 변수를 설정하여 프로그램 검수를 수행함으로써, 프로그램 검수의 정확성을 향상시킬 수 있다. 또한, 문제점 발생 시 어느 객체에서 문제가 발생하였는지 파악할 수 있어, 소스코드 수준의 분석이 가능한 효과가 있다.Through the above-described configuration, the program verification method and system according to the present invention can improve the efficiency of program verification by eliminating the need to execute the program one by one, unlike the conventional program verification method. In addition, by executing various program environment variables and performing program verification, the accuracy of program verification can be improved. In addition, when a problem occurs, it is possible to know which object has caused a problem, and the analysis can be performed at the source code level.
도 1은 본 발명의 실시예에 따른 프로그램 검수 시스템의 사용 환경을 도시한 도면이다.
도 2는 본 발명의 실시예에 따른 프로그램 검수 시스템의 구성도이다.
도 3은 본 발명의 실시예에 따른 프로그램 검수 방법의 순서도이다.
도 4는 본 발명의 실시예에 따른 프로그램의 소스코드를 도시한 도면이다.
도 5는 본 발명의 실시예에 따른 메모리에 저장된 실행코드를 도시한 도면이다.
도 6은 본 발명의 실시예에 따른 소스코드와 실행코드를 대응시킨 도면이다.
도 7은 본 발명의 제 1 실시예에 따른 프로그램 동작 여부 판단 방법의 순서도이다.
도 8은 본 발명의 제 2 실시예에 따른 프로그램 동작 여부 판단 방법의 순서도이다.
도 9는 본 발명의 제 3 실시예에 따른 프로그램 동작 여부 판단 방법의 순서도이다.
도 10는 본 발명의 제 4 실시예에 따른 프로그램 동작 여부 판단 방법의 순서도이다.1 is a diagram showing a use environment of a program verification system according to an embodiment of the present invention.
2 is a configuration diagram of a program verification system according to an embodiment of the present invention.
3 is a flowchart of a program verification method according to an embodiment of the present invention.
4 is a diagram showing a source code of a program according to an embodiment of the present invention.
5 is a diagram illustrating an execution code stored in a memory according to an embodiment of the present invention.
6 is a diagram showing a correspondence between source code and executable code according to the embodiment of the present invention.
7 is a flowchart of a method for determining whether or not a program operation according to the first embodiment of the present invention is performed.
FIG. 8 is a flowchart of a method for determining whether a program is operated according to a second embodiment of the present invention.
9 is a flowchart of a method for determining whether a program is operated according to the third embodiment of the present invention.
10 is a flowchart of a method for determining whether a program is operated according to a fourth embodiment of the present invention.
이하 첨부된 도면을 참조하여 본 발명의 실시예를 본 발명이 속하는 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세하게 설명한다. 이하 설명에서 동일한 구성 요소에는 설명의 편의상 동일 명칭 및 동일 부호를 부여한다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Reference will now be made in detail to embodiments of the present invention, examples of which are illustrated in the accompanying drawings, wherein like reference numerals refer to the like elements throughout. In the following description, the same constituent elements are given the same names and the same symbols for convenience of explanation.
본 발명에서 사용되는 용어는 가능한 한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우는 해당되는 발명의 설명부분에서 상세히 그 의미를 기재하였으므로, 단순한 용어의 명칭이 아닌 용어가 가지는 의미로서 본 발명을 파악하여야 한다.The term used in the present invention is selected from general terms that are widely used at present. However, in some cases, some terms selected arbitrarily by the applicant, and in this case, the meaning is described in detail in the description of the relevant invention. The present invention should be understood as meaning with respect to a term other than a name.
이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다.
The suffix "module" and " part "for the components used in the following description are given or mixed in consideration of ease of specification, and do not have their own meaning or role.
도 1은 본 발명의 실시예에 따른 프로그램 검수 시스템(100)의 사용 환경을 도시한 도면이다.FIG. 1 is a diagram showing a use environment of the
도면과 같이, 프로그램 개발자는 프로그램을 개발하여, 완성된 프로그램을 사용자에게 배포한다. As shown in the figure, a program developer develops a program and distributes the completed program to the user.
프로그램을 개발하는 과정으로, 개발자는 우선 프로그램 코드를 작성한 후 프로그램 코드가 개발자가 의도한 대로 동작하는지 판단하기 위하여 프로그램 검수 작업을 수행한다.In the process of developing a program, the developer first writes the program code, and then performs the program check to determine whether the program code operates as intended by the developer.
프로그램 검수 작업은 프로그램의 예기치 않은 종료, 비정상적인 작동 등과 같은 프로그램 오류를 발견하고 이를 수정하는 작업으로, 프로그램의 완성도를 높이기 위해서는 필수불가결한 작업이다.Program validation is the task of detecting and correcting program errors such as unexpected termination of a program, abnormal operation, etc., and it is an indispensable task to improve the completeness of the program.
프로그램 검수 시스템(100)은 개발자가 일일이 수작업으로 프로그램 코드를 확인했던 기존의 프로그램 검수 작업을 자동화시켜, 효율적으로 프로그램 검수 작업을 수행할 수 있도록 구성된 시스템에 관한 것이다.
The
도 2는 본 발명의 실시예에 따른 프로그램 검수 시스템(100)의 구성도이다.2 is a configuration diagram of a
도면과 같이, 프로그램 검수 시스템(100)은 프로세서(110), 메모리(120), 출력부(130), 사용자 인터페이스부(140)를 포함한다.As shown in the figure, the
프로세서(110)는 메모리(120), 출력부(130), 사용자 인터페이스부(140)를 제어하여, 프로그램 검수 방법을 수행하는 제어부이다.The
우선, 프로세서(110)는 소스코드(10)를 프로세서(110)가 실행가능한 실행코드(20)로 변환하여 메모리(120)에 기록하고, 메모리(120)에 기록된 실행코드(20)를 이용하여 프로그램을 실행한다.The
즉, 프로그램을 실행하기 위해서, 프로세서(110)는 디스크, 하드디스크와 같은 저장매체(미도시)에 기록된 소스코드(10)를 실행코드(20)로 변환하여 메모리(120)에 기록한 후, 메모리(120)에서 실행코드(20)를 읽어 프로그램을 실행하는 것이다.That is, in order to execute the program, the
소스코드(10)는 개발자가 작성한 프로그램 코드로, 소스코드(10)는 C, C++, Basic, Java, Pascal과 같이 다양한 프로그램 언어로 작성될 수 있다. 본 명세서에서는 C++ 언어로 작성된 소스코드(10)를 일례로 하여 설명하기로 한다.The
실행코드(20)는 메모리(120)에 기록되어, 프로세서(110)에 의해 직접 실행되는 프로그램 코드로, 실행코드(20)는 프로그램 언어가 아닌 기계어로 구성될 수 있다.The
소스코드(10)와 실행코드(20)의 구성에 대하여는, 이하 도 4 내지 6에서 자세히 후술하도록 한다.The configuration of the
그리고, 프로세서(110)는 소스코드(10)에서 객체(Object)를 정의하는 객체정보(11)를 읽고, 객체정보(11)에 대응되는 실시간 실행정보(21)를 실행코드(20)에서 읽는다.The
객체는 프로그램 코드를 구성하는 단위 요소로, 클래스(Class), 매쏘드(Method), 파라미터(Parameter) 등으로 구성된다. 소스코드(10)는 객체를 정의하고 객체의 동작을 정의하는 객체정보(11)를 포함한다.An object is a unit element that constitutes a program code, and is composed of a class, a method, and a parameter. The
그리고, 실시간 실행정보(21)는 프로그램 구동 중 객체에 저장된 값으로, 소스코드(10)의 객체정보(11)에 대응되는 실행코드(20) 내 값이다.The real-
객체정보(11)와 실시간 실행정보(21)의 대응관계에 대하여는, 도 6에서 자세히 후술하도록 한다.The correspondence relationship between the
그리고, 프로세서(110)는 출력부(130)를 제어하여 실시간 실행정보(21)를 사용자에게 출력한다. 프로세서(110)는 사용자가 모니터링하기 원하는 실시간 실행정보(21)를 출력부(130)를 통하여, 사용자에게 제공하는 것이다.The
또한, 프로세서(110)는 실시간 실행정보(21)를 분석하여, 프로그램이 개발자가 의도한 대로 동작하는지 여부를 판단한다.In addition, the
프로세서(110)는 다양한 방법으로 프로그램의 동작 여부를 판단하도록 구성될 수 있다. 본 발명은 이하 도 7 내지 10에서 자세히 후술하는 것과 같이, 프로그램 동작 여부 판단 방법을 4 가지의 실시예로 구현할 수 있다.The
우선, 본 발명의 제 1 실시예로, 프로세서(110)는 실행코드(20)에서 객체의 생성 또는 삭제 여부를 확인하여, 프로그램의 동작 여부를 판단할 수 있다.First, in the first embodiment of the present invention, the
그리고, 본 발명의 제 2 실시예로, 프로세서(110)는 실행코드(20)에서 객체를 지시하는 참조정보의 생성 또는 삭제 여부를 확인하여, 프로그램의 동작 여부를 판단할 수 있다.In the second embodiment of the present invention, the
그리고, 본 발명의 제 3 실시예로, 프로세서(110)는 사용자 인터페이스부(140)를 통해 입력된 사용자 입력 값 또는 기설정된 값으로 실시간 실행정보(21)를 변경하고, 변경된 실시간 실행정보(21)에 따라 상기 프로그램의 동작 여부를 판단할 수 있다.In the third embodiment of the present invention, the
또한, 본 발명의 제 4 실시예로, 프로세서(110)는 실시간 실행정보(21)가 기설정된 값 범위를 벗어났는지 여부로, 프로그램의 동작 여부를 판단할 수 있다.Further, in the fourth embodiment of the present invention, the
메모리(120)는 데이터를 저장하는 데이터 저장소(Data Storage)로, 메모비(120)는 하드디스크와 같은 비휘발성 저장매체 또는 램(RAM)과 같은 휘발성 저장매체로 구성될 수 있다. 그리고, 메모리(120)는 프로세서(110)의 제어를 받아, 프로그램의 실행코드(20)를 저장한다.The
출력부(130)는 사용자에게 실시간 실행정보(21)를 출력하는 장치로, 출력부(130)는 모니터와 같은 디스플레이 장치, 스피커와 같은 음성 출력장치, 프린터 장치 등과 같은 다양한 출력장치로 구성될 수 있다. 따라서, 프로세서(100)는 출력부(130)의 구성에 따라, 다양한 방법으로 실시간 실행정보(21)를 사용자에게 출력할 수 있는 것이다.The
사용자 인터페이스부(140)는 사용자로부터 실시간 실행정보(21)를 입력받도록 구성된다. 사용자 인터페이스부(140)는 키보드, 마우스, 음성 입력 장치 등으로 구성되어, 사용자로부터 실시간 실행정보(21)를 입력받고, 입력받은 실시간 실행정보(21)를 프로세서(110)에 전달한다.The
그리고, 전술한 바와 같이, 프로세서(110)는 실행정보(21)를 사용자로부터 입력받은 값으로 변경한 후, 변경된 실시간 실행정보(21)에 따라 프로그램이 개발자가 의도한 대로 동작하는지 여부를 확인하는 것이다.
As described above, the
도 3은 본 발명의 실시예에 따른 프로그램 검수 방법의 순서도이다.3 is a flowchart of a program verification method according to an embodiment of the present invention.
도면과 같이, 프로그램 검수 방법은 프로그램의 소스코드(10)를 프로세서(110)가 실행가능한 실행코드(20)로 변환하여 메모리(120)에 기록하는 단계(S100), 실행코드(20)를 이용하여 프로그램을 실행하는 단계(S110), 소스코드(10)에서 객체를 정의하는 객체정보(11)를 읽는 단계(S120), 객체정보(11)를 이용하여, 실행코드(20)에서 객체의 실시간 실행정보(21)를 읽는 단계(S130), 실시간 실행정보(21)를 사용자에게 출력하는 단계(S140), 실시간 실행정보(21)를 분석하여, 프로그램의 동작 여부를 판단하는 단계(S150)를 포함한다.As shown in the drawing, a program verification method includes a step (S100) of converting a
우선, 프로세서(110)는 프로그램의 소스코드(10)를 프로세서(110)가 실행가능한 실행코드(20)로 변환하여 메모리(120)에 기록한다.(S100)First, the
전술한 바와 같이, 소스코드(10)는 개발자에 의해 프로그램 언어로 작성된 프로그램 코드이고, 실행코드(20)는 메모리(120)에 기록되어, 프로세서(110)에 의해 직접 실행되는 기계어 코드이다.As described above, the
그리고, 프로세서(110)는 실행코드(20)를 이용하여 프로그램을 실행한다.(S110)Then, the
그리고, 프로세서(110)는 소스코드(10)에서 객체를 정의하는 객체정보(11)를 읽고,(S120) 객체정보(11)에 대응되는 객체의 실시간 실행정보(21)를 실행코드(20)에서 읽는다.(S130)The
프로세서(110)는 저장매체(미도시)에 저장된 소스코드(10)와 메모리(120)에 저장된 실행코드(20)를 모두 읽어, 소스코드(10)와 실행코드(20)의 대응관계를 파악한다.The
이를 위해, 프로세서(110)는 소스코드(10)에서 객체가 정의된 순서, 객체가 동작하는 순서 등을 파악하여, 이를 토대로 객체정보(11)에 해당하는 실시간 실행정보(21)의 실행코드(20) 내 위치를 파악하는 것이다.To this end, the
프로세서(110)는 파악된 실행코드(20) 내 위치에서, 실시간 실행정보(21)의 값을 읽어오는 것이다.The
그리고, 프로세서(110)는 출력부(130)를 제어하여 실시간 실행정보(21)를 사용자에게 출력한다.(S140) 프로세서(110)는 사용자가 모니터링하기 원하는 실시간 실행정보(21)를 출력부(130)를 통하여, 사용자에게 제공하는 것이다.The
전술한 바와 같이, 출력부(130)는 사용자에게 실시간 실행정보(21)를 출력하는 장치로, 출력부(130)는 디스플레이 장치, 음성 출력장치, 프린터 장치 등 다양한 출력장치로 구성될 수 있다. 따라서, 프로세서(100)는 출력부(130)의 구성에 따라, 다양한 방법으로 실시간 실행정보(21)를 사용자에게 출력할 수 있는 것이다.As described above, the
마지막으로, 프로세서(110)는 실시간 실행정보(21)를 분석하여, 프로그램의 동작 여부를 판단한다.(S150)Finally, the
프로그램의 동작 여부를 판단하는 단계(S150)는 다양한 방법으로 구현가능하다. 본 발명의 프로그램 동작 여부 판단하는 방법에 대하여는 이하 도 7 내지 10에서 자세히 후술하도록 한다.
The step of determining whether the program is operating (S150) can be implemented by various methods. A method for determining whether or not the program operation of the present invention will be described later in detail with reference to FIGS. 7 to 10.
도 4는 본 발명의 실시예에 따른 프로그램의 소스코드(10)를 도시한 도면이고, 도 5는 본 발명의 실시예에 따른 메모리(120)에 저장된 실행코드(20)를 도시한 도면이다.FIG. 4 is a diagram showing a
소스코드(10)는 개발자가 작성한 프로그램 코드로, 소스코드(10)는 C, C++, Basic, Java, Pascal과 같은 다양한 프로그램 언어로 작성될 수 있는데, 도 4는 C++ 언어로 작성된 소스코드(10)를 도시하고 있다.The
소스코드(10)는 프로램 동작 명령어의 집합으로, 클래스(Class), 매쏘드(Method), 파라미터(Parameter) 등과 같은 객체로 구성된다. 소스코드(10)는 객체를 정의하고, 객체의 동작을 정의하는 객체정보(11)를 포함한다. 프로세서(110)는 객체정보(11)를 통하여, 객체의 생성 및 삭제, 동작 여부를 확인할 수 있다.The
그리고, 실행코드(20)는 메모리(120)에 기록되어, 프로세서(110)에 위해 직접 실행되는 프로그램 코드로, 도 5에서 보는 바와 같이, 실행코드(20)는 프로그램 언어가 아닌 기계어로 구성될 수 있다.
The
도 6은 본 발명의 실시예에 따른 소스코드(10)와 실행코드(20)를 대응시킨 도면이다.FIG. 6 is a diagram showing the correspondence between the
소스코드(10)는 객체를 정의하고, 객체의 동작을 정의하는 객체정보(11)를 포함한다. 그리고, 실행코드(20)는 프로그램 구동 중에 객체에 저장된 값인 실시간 실행정보(21)를 포함한다. The
프로세서(110)는 저장매체(미도시)에 저장된 소스코드(10)와 메모리(120)에 저장된 실행코드(20)를 모두 읽어, 소스코드(10)와 실행코드(20)의 대응관계를 파악한다.The
이를 위해, 프로세서(110)는 소스코드(10)에서 객체가 정의된 순서, 객체가 동작하는 순서 등을 파악하여, 이를 토대로 객체정보(11)에 해당되는 실시간 실행정보(21)의 실행코드(20) 내 위치를 파악하는 것이다. 프로세서(110)는 파악된 실행코드(20) 내 위치에서, 실시간 실행정보(21)의 값을 읽어온다.
To this end, the
도 7은 본 발명의 제 1 실시예에 따른 프로그램 동작 여부 판단 방법의 순서도이다.7 is a flowchart of a method for determining whether or not a program operation according to the first embodiment of the present invention is performed.
도면과 같이, 본 발명의 제 1 실시예에 따른 프로그램 동작 여부 판단 방법은 소스코드(10)에서 객체의 생성 또는 삭제 명령어를 확인하는 단계(S160), 실행코드(20)에서 객체의 생성 또는 삭제 여부를 확인하는 단계(S161)을 포함한다.As shown in the drawing, the method for determining whether or not a program operation according to the first embodiment of the present invention includes a step (S160) of confirming an instruction to create or delete an object in the source code 10 (S160) (S161).
우선, 프로세서(110)는 소스코드(10)에서 객체의 생성 또는 삭제 명령어를 확인한다.(S160) 객체의 생성 명령어의 일례로 소스코드(10)에서 객체를 정의하는 부분을, 객체의 삭제 명령어의 일례로 객체 종료하는 부분을 이용할 수 있다. 이에 따라, 프로세서(110)는 소스코드(10)에서 특정 객체의 생성 또는 삭제 명령어를 확인하는 것이다.First, the
그리고, 프로세서(110)는 소스코드(10) 내 객체의 생성 또는 삭제 명령어에 따라, 실행코드(20)에서 객체의 생성 또는 삭제 여부를 확인한다.(S161)The
즉, 프로세서(110)는 해당 객체가 소스코드(10)와 같이 실행코드(20)에서도 생성되고, 삭제되는지 확인하는 것이다. 만약, 소스코드(10) 내 객체의 생성 또는 삭제 명령어와 달리, 실행코드(20)에서 해당 객체가 생성 또는 삭제되지 않는다면, 프로세서(110)는 해당 객체의 동작이 제대로 이뤄지지 않는다고 판단할 수 있다.That is, the
실행코드(20)에서 객체의 생성 또는 삭제 여부를, malloc 및 free 명령어와 같이, 메모리(120)에 객체의 값을 생성 또는 삭제하는 명령어의 존재 여부로 확인할 수 있다.Whether or not an object is created or deleted in the
도 8은 본 발명의 제 2 실시예에 따른 프로그램 동작 여부 판단 방법의 순서도이다.FIG. 8 is a flowchart of a method for determining whether a program is operated according to a second embodiment of the present invention.
도면과 같이, 본 발명의 제 2 실시예에 따른 프로그램 동작 여부 판단 방법은 소스코드(10)에서 객체를 지시하는 참조정보의 생성 또는 삭제 명령어 확인하는 단계(S170), 실행코드(20)에서 참조정보의 생성 또는 삭제 여부를 확인하는 단계(S171)를 포함한다.As shown in the drawing, the method for determining whether or not a program operation according to the second embodiment of the present invention includes a step (S170) of generating or deleting reference information indicating an object in the source code 10 (S170) (S171) of confirming whether information is to be created or deleted.
우선, 프로세서(110)는 소스코드(10)에서 객체를 지시하는 참조정보의 생성 또는 삭제 명령어를 확인한다.(S170)First, the
참조정보는 외부에서 정의된 객체를 지시하는 정보로, 일례로 Standard Templete Library(STL)가 있다. 참조정보의 생성 명령어의 일례로 소스코드(10)에서 참조정보를 정의하는 부분을, 참조정보의 삭제 명령어의 일례로 참조정보 종료하는 부분을 이용할 수 있다. 이에 따라, 프로세서(110)는 소스코드(10)에서 특정 참조정보의 생성 또는 삭제 명령어를 확인하는 것이다.Reference information is information indicating an externally defined object, for example, Standard Template Library (STL). As an example of the generation instruction of the reference information, a portion defining the reference information in the
그리고, 프로세서(110)는 실행코드(20)에서 참조정보의 생성 또는 삭제 여부를 확인한다.(S171)Then, the
즉, 프로세서(110)는 해당 참조정보가, 소스코드(10)와 같이, 실행코드(20)에서도 생성 또는 삭제되었는지 확인하는 것이다. 만약, 소스코드(10) 내 참조정보의 생성 또는 삭제 명령어와 달리, 실행코드(20)에서 해당 참조정보가 생성 또는 삭제되지 않는다면, 프로세서(110)는 프로그램의 동작이 제대로 이뤄지지 않는다고 판단할 수 있다.That is, the
도 9는 본 발명의 제 3 실시예에 따른 프로그램 동작 여부 판단 방법의 순서도이다.9 is a flowchart of a method for determining whether a program is operated according to the third embodiment of the present invention.
도면과 같이, 본 발명의 제 3 실시예에 따른 프로그램 동작 여부 판단 방법은 사용자로 부터 입력을 받거나, 기 설정된 값으로 실시간 실행정보(21)를 변경하는 단계(S180), 변경된 실시간 실행정보(21)에 따라 프로그램의 동작을 확인하는 단계(S181)를 포함한다.As shown in the figure, a method of determining whether a program is operated according to the third embodiment of the present invention includes a step of receiving input from a user or changing real-
우선, 프로세서(110)는 사용자 인터페이스부(140)를 통해 입력된 사용자 입력 값이나, 기 설정된 값으로 실시간 실행정보(21)를 변경한다.(S180)First, the
그리고, 프로세서(110)는 변경된 실시간 실행정보(21)에 따라 프로그램의 동작을 확인한다.(S181) 즉, 프로세서(110)는 변경된 실시간 실행정보(21)에 맞게 객체가 동작하는지, 올바른 객체 값을 가지는지의 여부를 확인하는 것이다.The
도 10는 본 발명의 제 4 실시예에 따른 프로그램 동작 여부 판단 방법의 순서도이다.10 is a flowchart of a method for determining whether a program is operated according to a fourth embodiment of the present invention.
도면과 같이, 본 발명의 제 4 실시예에 따른 프로그램 동작 여부 판단 방법은 실시간 실행정보(21)가 기설정된 값 범위를 벗어났는지 여부 확인하는 단계(S190)를 포함한다.As shown in the figure, the method for determining whether or not the program operation according to the fourth embodiment of the present invention includes a step (S190) of checking whether the real
프로세서(110)는 실시간 실행정보(21)가 개발자가 정상적인 값의 범위라고 미리 정의한 범위에 속해있는지 확인하는 것이다. 실시간 실행정보(21)가 해당 범위를 벗어난 값을 가진다면, 프로세서(110)는 프로그램의 동작이 제대로 이뤄지지 않는다고 판단할 수 있다.
The
전술한 같은 구성을 통한 프로그램 검수 방법 및 시스템(100)은 기존 프로그램 검수 방법과 달리, 일일이 프로그램을 실행해야하는 번거로움을 제거하여 프로그램 검수의 효율성을 높일 수 있다. 그리고, 다양한 프로그램 환경 변수를 설정하여 프로그램 검수를 수행함으로써, 프로그램 검수의 정확성을 향상시킬 수 있다. 또한, 문제점 발생 시 어느 객체에서 문제가 발생하였는지 파악할 수 있어, 소스코드(10) 수준의 분석이 가능한 효과가 있다.
Unlike the conventional program verification method, the program verification method and
상기에서 본 발명의 바람직한 실시예에 대하여 설명하였지만, 본 발명은 이에 한정되는 것이 아니고 특허청구범위와 발명의 상세한 설명 및 첨부한 도면의 범위 안에서 여러 가지로 변형하여 실시하는 것이 가능하고 이 또한 본 발명의 범위에 속하는 것은 당연하다.While the present invention has been described in connection with what is presently considered to be practical exemplary embodiments, it is to be understood that the invention is not limited to the disclosed embodiments, but, on the contrary, Of course.
Claims (12)
상기 실행코드를 이용하여 상기 프로그램을 실행하는 단계;
상기 소스코드에서 객체를 정의하는 객체정보를 읽는 단계;
상기 객체정보를 이용하여, 상기 실행코드에서 상기 객체의 실시간 실행정보를 읽는 단계;
상기 실시간 실행정보를 사용자에게 출력하는 단계; 및
상기 실시간 실행정보를 분석하여, 상기 프로그램의 동작 여부를 판단하는 단계를 포함하고,
상기 프로그램의 동작 여부를 판단하는 단계는,
상기 실행코드에서 상기 객체 및 상기 객체를 지시하는 참조정보의 생성 또는 삭제 여부를 확인하여, 상기 프로그램의 동작 여부를 판단하는 프로그램 검수 방법.Converting the source code of the program into an executable code executable by a processor and recording the converted executable code in a memory;
Executing the program using the executable code;
Reading object information defining an object in the source code;
Reading real-time execution information of the object from the execution code using the object information;
Outputting the real-time execution information to a user; And
Analyzing the real-time execution information to determine whether the program is operating,
Wherein the step of determining whether the program is operating comprises:
And checking whether the reference information indicating the object and the object is generated or deleted in the execution code to determine whether the program is operating.
사용자 입력을 받아, 상기 실시간 실행정보를 변경하는 단계를 더 포함하고,
상기 프로그램 동작 여부 판단 단계는,
상기 변경된 실시간 실행정보에 따라 상기 프로그램의 동작 여부를 판단하는 프로그램 검수 방법.The method according to claim 1,
Further comprising receiving user input and modifying the real-time execution information,
Determining whether the program operation is performed,
And determining whether the program is operated according to the changed real-time execution information.
상기 실시간 실행정보를 기 설정된 값으로 변경하는 단계를 더 포함하고,
상기 프로그램 동작 여부 판단 단계는,
상기 변경된 실시간 실행정보에 따라 상기 프로그램의 동작 여부를 판단하는 프로그램 검수 방법.The method according to claim 1,
Further comprising changing the real-time execution information to a predetermined value,
Determining whether the program operation is performed,
And determining whether the program is operated according to the changed real-time execution information.
상기 프로그램 동작 여부 판단 단계는,
상기 실시간 실행정보가 기설정된 값 범위를 벗어났는지 여부로, 상기 프로그램의 동작 여부를 판단하는 프로그램 검수 방법.The method according to claim 1,
Determining whether the program operation is performed,
And determining whether the program is operating based on whether the real-time execution information is out of a preset value range.
상기 데이터를 사용자에게 출력하는 출력부; 및
프로그램의 소스코드를 실행가능한 실행코드로 변환하여 상기 메모리에 기록하고, 상기 실행코드를 이용하여 상기 프로그램을 실행하고, 상기 소스코드에서 객체를 정의하는 객체정보를 읽고, 상기 객체정보를 이용하여, 상기 실행코드에서 상기 객체의 실시간 실행정보를 읽고, 상기 실시간 실행정보를 사용자에게 출력하도록 상기 출력부를 제어하고, 상기 실시간 실행정보를 분석하여 상기 프로그램의 동작 여부를 판단하는 프로세서(Processor)를 포함하고,
상기 프로세서는,
상기 실행코드에서 상기 객체 및 상기 객체를 지시하는 참조정보의 생성 또는 삭제 여부를 확인하여, 상기 프로그램의 동작 여부를 판단하는 프로그램 검수 시스템.A memory for storing data;
An output unit for outputting the data to a user; And
A method for executing a program, the method comprising: converting source code of a program into executable executable code, writing the executable executable code in the memory, executing the program using the executable code, reading object information defining the object in the source code, And a processor for reading the real-time execution information of the object in the execution code, controlling the output unit to output the real-time execution information to the user, and analyzing the real-time execution information to determine whether the program is operating ,
The processor comprising:
And determines whether or not the program is operated by checking whether the reference information indicating the object and the object is generated or deleted in the execution code.
사용자로부터 사용자 입력을 받는 사용자 인터페이스부 포함하고,
상기 프로세서는,
상기 사용자 입력에 따라 상기 실시간 실행정보를 변경하도록 상기 사용자 인터페이스부를 제어하고, 상기 변경된 실시간 실행정보에 따라 상기 프로그램의 동작 여부를 판단하는 프로그램 검수 시스템.8. The method of claim 7,
A user interface unit for receiving user input from a user,
The processor comprising:
Controlling the user interface unit to change the real-time execution information according to the user input, and determining whether the program is operated according to the changed real-time execution information.
상기 프로세서는,
상기 실시간 실행정보를 기 설정된 값으로 변경하고, 상기 변경된 실시간 실행정보에 따라 상기 프로그램의 동작 여부를 판단하는 프로그램 검수 시스템.8. The method of claim 7,
The processor comprising:
Changes the real-time execution information to a predetermined value, and determines whether the program is operated according to the changed real-time execution information.
상기 프로세서는,
상기 실시간 실행정보가 기설정된 값 범위를 벗어났는지 여부로, 상기 프로그램의 동작 여부를 판단하는 프로그램 검수 시스템.8. The method of claim 7,
The processor comprising:
And determines whether the program is operating based on whether the real-time execution information is out of a preset value range.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130059976A KR101476536B1 (en) | 2013-05-27 | 2013-05-27 | The method and system for inspecting program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130059976A KR101476536B1 (en) | 2013-05-27 | 2013-05-27 | The method and system for inspecting program |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140139383A KR20140139383A (en) | 2014-12-05 |
KR101476536B1 true KR101476536B1 (en) | 2014-12-24 |
Family
ID=52459411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130059976A KR101476536B1 (en) | 2013-05-27 | 2013-05-27 | The method and system for inspecting program |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101476536B1 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11354474B2 (en) * | 2020-08-31 | 2022-06-07 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method, apparatus and computer storage medium for authenticating chip |
KR102479096B1 (en) * | 2022-09-05 | 2022-12-19 | 주식회사 로보그램 | Block code transaction and library registration method |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0773070A (en) * | 1993-06-21 | 1995-03-17 | Toshiba Corp | Program debugging device |
JP2001518662A (en) * | 1997-09-29 | 2001-10-16 | ハネウエル・インコーポレーテッド | Validation and verification of automated computer software |
JP2005275967A (en) * | 2004-03-25 | 2005-10-06 | Toshiba Corp | Design support system and method for system lsi |
KR20140004495A (en) * | 2012-07-03 | 2014-01-13 | 삼성전자주식회사 | Method for testing application program automatically and an electronic device thereof |
-
2013
- 2013-05-27 KR KR1020130059976A patent/KR101476536B1/en active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0773070A (en) * | 1993-06-21 | 1995-03-17 | Toshiba Corp | Program debugging device |
JP2001518662A (en) * | 1997-09-29 | 2001-10-16 | ハネウエル・インコーポレーテッド | Validation and verification of automated computer software |
JP2005275967A (en) * | 2004-03-25 | 2005-10-06 | Toshiba Corp | Design support system and method for system lsi |
KR20140004495A (en) * | 2012-07-03 | 2014-01-13 | 삼성전자주식회사 | Method for testing application program automatically and an electronic device thereof |
Also Published As
Publication number | Publication date |
---|---|
KR20140139383A (en) | 2014-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7437715B2 (en) | System and method for generating a set of robot commands based on user entry events in a user interface | |
US7975257B2 (en) | Iterative static and dynamic software analysis | |
US20160357519A1 (en) | Natural Language Engine for Coding and Debugging | |
CN107832059B (en) | Code static analysis method and device based on Makefile | |
US8312417B2 (en) | Using dynamic call graphs for creating state machines | |
US7900198B2 (en) | Method and system for parameter profile compiling | |
US9454467B2 (en) | Method and apparatus for mining test coverage data | |
US9086899B2 (en) | Loading and debugging method and debugging system thereof | |
US20080209401A1 (en) | Techniques for integrating debugging with decompilation | |
JP5303795B2 (en) | Application analysis method, analysis system, and analysis program | |
CN104375934A (en) | Method for testing reliability of Android mobile phone software | |
CN109522010B (en) | Initialization code adding method and device, storage medium and electronic equipment | |
CN112230988A (en) | Interface document generation method and device, computer equipment and storage medium | |
CN110659210A (en) | Information acquisition method and device, electronic equipment and storage medium | |
US20090132994A1 (en) | Automation tool and method for generating test code | |
CN112231197A (en) | Page testing method and device and storage medium | |
CN110928760B (en) | Unit test method and device in embedded system | |
KR101476536B1 (en) | The method and system for inspecting program | |
CN110045952B (en) | Code calling method and device | |
US7533314B2 (en) | Unit test extender | |
CN112861138A (en) | Software security analysis method and analysis device, electronic device, and storage medium | |
CN116578282A (en) | Code generation method, device, electronic equipment and medium | |
CN112748930B (en) | Compilation detection method, device, equipment and storage medium | |
CN112114811A (en) | Compiling method, device and equipment | |
CN112052007A (en) | Source code debugging method, device, server and storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20171113 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20191219 Year of fee payment: 6 |