KR102613915B1 - Method, apparatus and program for automatically changing names of functions and parameters - Google Patents

Method, apparatus and program for automatically changing names of functions and parameters Download PDF

Info

Publication number
KR102613915B1
KR102613915B1 KR1020230071590A KR20230071590A KR102613915B1 KR 102613915 B1 KR102613915 B1 KR 102613915B1 KR 1020230071590 A KR1020230071590 A KR 1020230071590A KR 20230071590 A KR20230071590 A KR 20230071590A KR 102613915 B1 KR102613915 B1 KR 102613915B1
Authority
KR
South Korea
Prior art keywords
function
name
identifier
names
server
Prior art date
Application number
KR1020230071590A
Other languages
Korean (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 KR1020230071590A priority Critical patent/KR102613915B1/en
Application granted granted Critical
Publication of KR102613915B1 publication Critical patent/KR102613915B1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Computer Hardware Design (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명의 다양한 실시예에 따른 함수 및 매개변수의 명칭을 자동으로 변경하는 방법이 개시된다. 상기 방법은: 사용자 단말에서 입력되는 정의되지 않은 적어도 하나의 식별자를 포함하는 제1 소스코드를 실시간으로 인식하는 단계; 기능-이름 일치점수 산출모델에 상기 제1 소스코드를 입력하여, 상기 정의되지 않은 적어도 하나의 식별자와 관련된 추천 매개변수명 및 추천 변수명을 상기 사용자 단말로 제공하는 단계; 상기 추천 매개변수명 및 상기 추천 변수명 중 어느 하나를 선택하는 제1 선택 입력을 상기 사용자 단말로부터 수신하고, 상기 제1 선택 입력을 기초로 상기 적어도 하나의 식별자가 정의된 제2 소스코드를 생성하는 단계; 상기 기능-이름 일치점수 산출모델에 상기 제2 소스코드를 입력하여, 상기 적어도 하나의 식별자와 관련된 추천 함수명을 상기 사용자 단말로 제공하는 단계; 및 상기 추천 함수명 중 어느 하나를 선택하는 제2 선택 입력을 상기 사용자 단말로부터 수신하고, 상기 제2 선택 입력을 기초로 상기 적어도 하나의 식별자 및 상기 적어도 하나의 식별자와 관련된 함수명이 정의된 제3 소스코드를 생성하는 단계;를 포함하고, 상기 기능-이름 일치점수 산출모델은, 상기 제1 선택 입력 및 상기 제2 선택 입력 중 적어도 하나에 기초하여 재학습될 수 있다.A method for automatically changing the names of functions and parameters according to various embodiments of the present invention is disclosed. The method includes: recognizing in real time a first source code including at least one undefined identifier input from a user terminal; Inputting the first source code into a function-name matching score calculation model and providing recommended parameter names and recommended variable names related to the at least one undefined identifier to the user terminal; Receive a first selection input for selecting one of the recommended parameter name and the recommended variable name from the user terminal, and generate a second source code in which the at least one identifier is defined based on the first selection input. steps; Inputting the second source code into the function-name matching score calculation model and providing a recommended function name related to the at least one identifier to the user terminal; and a third source that receives a second selection input for selecting one of the recommended function names from the user terminal, and defines the at least one identifier and a function name related to the at least one identifier based on the second selection input. Generating a code; and the function-name matching score calculation model may be retrained based on at least one of the first selection input and the second selection input.

Description

함수 및 매개변수의 명칭을 자동으로 변경하는 방법, 장치 및 프로그램{METHOD, APPARATUS AND PROGRAM FOR AUTOMATICALLY CHANGING NAMES OF FUNCTIONS AND PARAMETERS}Method, device and program for automatically changing the names of functions and parameters {METHOD, APPARATUS AND PROGRAM FOR AUTOMATICALLY CHANGING NAMES OF FUNCTIONS AND PARAMETERS}

본 발명은 함수 및 매개변수의 명칭을 자동으로 변경하는 방법, 장치 및 프로그램에 관한 것으로서, 구체적으로 소스코드에 포함된 함수 및 매개변수의 명칭을 자동으로 변경하는 방법, 장치 및 프로그램에 관한 것이다.The present invention relates to a method, device, and program for automatically changing the names of functions and parameters, and more specifically, to a method, device, and program for automatically changing the names of functions and parameters included in source code.

다양한 산업 분야에 활용되는 소프트웨어를 구현하기 위해서는 코딩 작업이 필수적이다. 이러한 코딩 작업은 협업을 통해 수행되는 경우가 많다. 협업을 통해 코딩 작업이 이루어지기 때문에 소스코드에 포함된 함수, 파라미터 및 다양한 변수들의 명칭은 원활한 협업의 중요한 요소가 될 수 있다.Coding is essential to implement software used in various industries. This coding work is often performed collaboratively. Since coding work is done through collaboration, the names of functions, parameters, and various variables included in the source code can be important elements of smooth collaboration.

함수 및 파라미터의 명칭이 중요성이 높아짐에 따라, 함수, 파라미터 및 다양한 변수들에 대한 작명 작업은 작업자의 페인 포인트(Pain Point)로 대두되고 있다.As the names of functions and parameters increase in importance, naming functions, parameters, and various variables is emerging as a pain point for workers.

함수, 파라미터 및 다양한 변수들에 대한 작명 작업은 단순히 작업자 본인이 원하는 단어를 선택하는 것이 아니라, 다른 개발자들이 쉽게 이해할 수 있고, 후에 유지보수가 수월하도록 직관적이고 간결하게 작성을 해야 하기 때문이다.This is because naming functions, parameters, and various variables is not simply about choosing the words the worker wants, but rather writing them intuitively and concisely so that other developers can easily understand them and for easy maintenance later.

예를 들어, 코딩 작업 중 작명 작업에 가장 많은 노력이 들어가는 요소로, 함수 및 매개변수가 있다. 함수 및 매개변수의 명칭(또는 정의)에 대한 정답이 없고, 작업자의 주관에 의지해야 하기 때문에 명칭을 구상하는데 많은 시간과 노력을 필요로 한다. 또한, 일반적인 작명 과정에서는 모든 것이 작업자에 의해 수동적으로 이루어지기 때문에, 작업자 개인의 성향에 의존적이며 개발 기한이 충분치 않을 경우 일시적으로 정하였던 명칭이 수정될 기회가 없어 영구적으로 사용될 수도 있다.For example, among coding tasks, the elements that require the most effort in naming include functions and parameters. There is no correct answer to the names (or definitions) of functions and parameters, and it requires a lot of time and effort to come up with names because it must depend on the operator's subjective opinion. In addition, in the general naming process, everything is done manually by the worker, so it depends on the individual worker's inclinations, and if the development period is not long enough, the name that was temporarily set may be used permanently as there is no opportunity to modify it.

다른 예를 들어, 작업자는 구현하고자 하는 기능에 명칭을 결정한 후 앞서 작성한 명칭이 개발자 본인이 속한 단체의 컨벤션에 맞는지 개발 문서, 또는 일련의 프로세스를 사용하여 확인한다. 작업자는 확인 과정을 거치지 않고 바로 기능을 구현할 수도 있는데, 이 경우 함수의 기능이 명확하게 정의되어 있지 않았다면 기능이 기존에 구현하고자 한 기능에서 벗어남과 동시에 함수의 명칭과 기능의 차이가 발생될 수 있으며, 구현이 완료된 후 기능에 더 적합한 명칭으로 함수명 변경을 변경하지 않으면 명칭과 기능의 미스 매칭이 발생될 수 있다.For another example, after deciding on a name for the function to be implemented, the worker uses development documents or a series of processes to check whether the previously created name matches the conventions of the organization to which the developer belongs. The operator may implement the function right away without going through the confirmation process. In this case, if the function of the function is not clearly defined, the function may deviate from the function that was originally intended to be implemented, and at the same time, differences in the name and function of the function may occur. , If the function name is not changed to a name more suitable for the function after implementation is completed, mismatching between the name and function may occur.

상술한 문제점들은 유지보수의 어려움을 야기하고, 협업에 걸림돌이 될 수 있다. 또한, 소스코드의 특성 상 변수명 “A”를 “B”로 바꾸어도 기능상엔 문제가 없으나, 변수명 작업에 많은 시간과 노력이 요구된다는 점에 있어서 작업 효율성이 저하될 수 있다.The above-mentioned problems can cause maintenance difficulties and become obstacles to collaboration. In addition, due to the nature of the source code, there is no functional problem even if the variable name “A” is changed to “B”, but work efficiency may be reduced because a lot of time and effort is required to work on variable names.

따라서, 함수 및 매개변수의 명칭을 자동으로 변경하는 방법에 대한 수요가 당업계에 존재한다. 이와 관련하여 대한민국 공개특허공보 제10-2017-0042896호는 자바 자동 식별자 리네이밍 기법을 개시한다.Accordingly, there is a need in the art for a method to automatically change the names of functions and parameters. In this regard, Republic of Korea Patent Publication No. 10-2017-0042896 discloses a Java automatic identifier renaming technique.

본 발명은 전술한 배경기술에 대응하여 안출된 것으로 함수 및 매개변수의 명칭을 자동으로 변경하는 방법, 장치 및 프로그램을 제공하고자 하는 것이다.The present invention was conceived in response to the above-described background technology and is intended to provide a method, device, and program for automatically changing the names of functions and parameters.

본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The technical problems of the present invention are not limited to the technical problems mentioned above, and other technical problems not mentioned will be clearly understood by those skilled in the art from the description below.

전술한 바와 같은 과제를 해결하기 위한 본 발명의 일 실시예에 따라, 함수 및 매개변수의 명칭을 자동으로 변경하는 방법이 개시된다. 상기 방법은: 사용자 단말에서 입력되는 정의되지 않은 적어도 하나의 식별자를 포함하는 제1 소스코드를 실시간으로 인식하는 단계; 기능-이름 일치점수 산출모델에 상기 제1 소스코드를 입력하여, 상기 정의되지 않은 적어도 하나의 식별자와 관련된 추천 매개변수명 및 추천 변수명을 상기 사용자 단말로 제공하는 단계; 상기 추천 매개변수명 및 상기 추천 변수명 중 어느 하나를 선택하는 제1 선택 입력을 상기 사용자 단말로부터 수신하고, 상기 제1 선택 입력을 기초로 상기 적어도 하나의 식별자가 정의된 제2 소스코드를 생성하는 단계; 상기 기능-이름 일치점수 산출모델에 상기 제2 소스코드를 입력하여, 상기 적어도 하나의 식별자와 관련된 추천 함수명을 상기 사용자 단말로 제공하는 단계; 및 상기 추천 함수명 중 어느 하나를 선택하는 제2 선택 입력을 상기 사용자 단말로부터 수신하고, 상기 제2 선택 입력을 기초로 상기 적어도 하나의 식별자 및 상기 적어도 하나의 식별자와 관련된 함수명이 정의된 제3 소스코드를 생성하는 단계;를 포함하고, 상기 기능-이름 일치점수 산출모델은, 상기 제1 선택 입력 및 상기 제2 선택 입력 중 적어도 하나에 기초하여 재학습될 수 있다.According to an embodiment of the present invention for solving the problems described above, a method for automatically changing the names of functions and parameters is disclosed. The method includes: recognizing in real time a first source code including at least one undefined identifier input from a user terminal; Inputting the first source code into a function-name matching score calculation model and providing recommended parameter names and recommended variable names related to the at least one undefined identifier to the user terminal; Receive a first selection input for selecting one of the recommended parameter name and the recommended variable name from the user terminal, and generate a second source code in which the at least one identifier is defined based on the first selection input. steps; Inputting the second source code into the function-name matching score calculation model and providing a recommended function name related to the at least one identifier to the user terminal; and a third source that receives a second selection input for selecting one of the recommended function names from the user terminal, and defines the at least one identifier and a function name related to the at least one identifier based on the second selection input. Generating a code; and the function-name matching score calculation model may be retrained based on at least one of the first selection input and the second selection input.

대안적인 실시예에서, 상기 기능-이름 일치점수 산출모델은, 입력된 코드의 기능을 이해하기 위해 상기 입력된 코드의 문맥과 흐름을 분석하는 문맥 기반 동적 코드 분석(Context-based Dynamic Code Analysis) 기법을 기초로, 코드의 기능 및 상기 기능에 대응하는 의미를 포함하는 식별자를 라벨링한 학습 데이터를 이용하여 학습될 수 있다.In an alternative embodiment, the function-name matching score calculation model is a context-based dynamic code analysis technique that analyzes the context and flow of the input code to understand the function of the input code. Based on this, it can be learned using learning data labeled with an identifier containing the function of the code and the meaning corresponding to the function.

대안적인 실시예에서, 상기 기능-이름 일치점수 산출모델은, 기능-이름 일치점수를 출력하고, 상기 기능-이름 일치점수는, 상기 기능-이름 일치점수 산출모델이 입력된 코드에서 식별자를 제외하고 기능만 존재하는 코드로 변환하여 분석함에 따라, 기능 및 상기 기능에 대응하는 의미를 포함하는 식별자와 함께 산출하는 숫자 값일 수 있다.In an alternative embodiment, the function-name match score calculation model outputs a function-name match score, and the function-name match score is calculated by excluding the identifier from the input code. As the code is converted and analyzed into a code in which only the function exists, it may be a numeric value calculated along with an identifier containing the function and the meaning corresponding to the function.

대안적인 실시예에서, 상기 기능-이름 일치점수 산출모델에 상기 제1 소스코드를 입력하여, 상기 정의되지 않은 적어도 하나의 식별자와 관련된 추천 매개변수명 및 추천 변수명을 상기 사용자 단말로 제공하는 단계는, 상기 추천 매개변수명 및 상기 추천 변수명 각각에 대응하는 상기 기능-이름 일치점수를 제공하는 단계; 및 상기 정의되지 않은 적어도 하나의 식별자 각각에 대해 현재까지 선택된 상기 추천 매개변수명 및 상기 추천 변수명 각각의 선택 횟수를 제공하는 단계;를 포함하고, 상기 제1 선택 입력을 기초로, 상기 선택 횟수가 업데이트될 수 있다.In an alternative embodiment, inputting the first source code into the function-name matching score calculation model to provide a recommended parameter name and a recommended variable name related to the at least one undefined identifier to the user terminal. providing the function-name matching score corresponding to each of the recommended parameter name and the recommended variable name; and providing a number of selections for each of the recommended parameter names and the recommended variable names selected to date for each of the at least one undefined identifier, wherein, based on the first selection input, the number of selections. can be updated.

대안적인 실시예에서, 상기 방법은, 상기 기능-이름 일치점수 산출모델을 기초로 상기 제1 소스코드에 포함된 특정 함수에 반드시 존재해야 하는 변수 또는 매개변수가 존재하지 않는지 여부를 인식하는 단계; 및 상기 특정 함수에 반드시 존재해야 하는 상기 변수 또는 상기 매개변수가 존재하지 않는다고 인식한 경우, 누락된 변수 또는 누락된 매개변수에 대응하는 식별자를 추천하는 단계;를 더 포함할 수 있다.In an alternative embodiment, the method includes recognizing whether a variable or parameter that must exist in a specific function included in the first source code does not exist based on the function-name matching score calculation model; and when it is recognized that the variable or parameter that must exist in the specific function does not exist, recommending an identifier corresponding to the missing variable or missing parameter.

대안적인 실시예에서, 상기 방법은, 상기 추천 매개변수명 및 상기 추천 변수명 중 어느 하나를 선택하는 상기 제1 선택 입력이 수신되지 않고 수동 입력된 식별자가 수신된 경우, 상기 수동 입력된 식별자를 평가하는 단계; 및 상기 수동 입력된 식별자에 대응하는 코드의 기능 및 상기 수동 입력된 식별자를 라벨링하여, 상기 기능-이름 일치점수 산출모델을 재학습시키는 단계;를 더 포함할 수 있다.In an alternative embodiment, the method may include, when the first selection input for selecting one of the recommended parameter name and the recommended variable name is not received and a manually entered identifier is received, the manually entered identifier is evaluating step; It may further include retraining the function-name matching score calculation model by labeling the manually input identifier and a function of a code corresponding to the manually input identifier.

상술한 과제를 해결하기 위한 본 발명의 일 실시예에 따라, 장치가 개시된다. 상기 장치는: 하나 이상의 인스트럭션을 저장하는 메모리; 및 상기 메모리에 저장된 상기 하나 이상의 인스트럭션을 실행하는 프로세서를 포함하고, 상기 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써, 상술한 방법들을 수행할 수 있다.According to one embodiment of the present invention for solving the above-described problems, a device is disclosed. The device includes: a memory storing one or more instructions; and a processor executing the one or more instructions stored in the memory, and the processor may perform the above-described methods by executing the one or more instructions.

상술한 과제를 해결하기 위한 본 발명의 일 실시예에 따라, 하드웨어인 컴퓨터와 결합되어, 상술한 방법들을 수행할 수 있도록 컴퓨터에서 독출가능한 기록매체에 저장된 컴퓨터프로그램이 개시된다.According to an embodiment of the present invention for solving the above-described problem, a computer program is disclosed that is combined with a computer as hardware and stored in a computer-readable recording medium to perform the above-described methods.

본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.Other specific details of the invention are included in the detailed description and drawings.

본 발명은 코딩 작업 중 높은 난이도가 요구되는 함수 및 매개변수에 대한 작명 작업을 자동적으로 처리하여 작업 효율을 높일 수 있다.The present invention can increase work efficiency by automatically processing naming tasks for functions and parameters that require high difficulty during coding work.

본 발명의 효과들은 이상에서 언급된 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.The effects of the present invention are not limited to the effects mentioned above, and other effects not mentioned will be clearly understood by those skilled in the art from the description below.

도 1은 본 발명의 일 실시예에 따른 시스템을 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 서버의 하드웨어 구성도이다.
도 3은 본 발명의 일 실시예에 따른 함수 및 매개변수의 명칭을 자동으로 변경하는 방법을 설명하기 위한 개략도이다.
도 4는 본 발명의 일 실시예에 따른 함수 및 매개변수의 명칭을 자동으로 변경하는 방법의 일례를 설명하기 위한 흐름도이다.
도 5, 도 6 및 도 7은 본 발명의 다양한 실시예에 따른 함수 및 매개변수의 명칭을 자동으로 변경하는 방법의 일례를 설명하기 위한 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 신경망 모델을 학습시키는 방법의 일례를 설명하기 위한 흐름도이다.
도 9은 본 발명의 일 실시예와 관련된 하나 이상의 활성화 함수를 나타낸 개략도이다.
1 is a diagram illustrating a system according to an embodiment of the present invention.
Figure 2 is a hardware configuration diagram of a server according to an embodiment of the present invention.
Figure 3 is a schematic diagram illustrating a method for automatically changing the names of functions and parameters according to an embodiment of the present invention.
Figure 4 is a flowchart illustrating an example of a method for automatically changing the names of functions and parameters according to an embodiment of the present invention.
5, 6, and 7 are flowcharts illustrating an example of a method for automatically changing the names of functions and parameters according to various embodiments of the present invention.
Figure 8 is a flowchart illustrating an example of a method for learning a neural network model according to an embodiment of the present invention.
Figure 9 is a schematic diagram showing one or more activation functions related to one embodiment of the present invention.

다양한 실시예들이 이제 도면을 참조하여 설명된다. 본 명세서에서, 다양한 설명들이 본 발명의 이해를 제공하기 위해서 제시된다. 그러나, 이러한 실시예들은 이러한 구체적인 설명 없이도 실행될 수 있음이 명백하다.Various embodiments are now described with reference to the drawings. In this specification, various descriptions are presented to provide an understanding of the invention. However, it is clear that these embodiments may be practiced without these specific descriptions.

본 명세서에서 사용되는 용어 "컴포넌트", "모듈", "시스템" 등은 컴퓨터-관련 엔티티, 하드웨어, 펌웨어, 소프트웨어, 소프트웨어 및 하드웨어의 조합, 또는 소프트웨어의 실행을 지칭한다. 예를 들어, 컴포넌트는 프로세서상에서 실행되는 처리과정(procedure), 프로세서, 객체, 실행 스레드, 프로그램, 및/또는 컴퓨터일 수 있지만, 이들로 제한되는 것은 아니다. 예를 들어, 컴퓨팅 장치에서 실행되는 애플리케이션 및 컴퓨팅 장치 모두 컴포넌트일 수 있다. 하나 이상의 컴포넌트는 프로세서 및/또는 실행 스레드 내에 상주할 수 있다. 일 컴포넌트는 하나의 컴퓨터 내에 로컬화 될 수 있다. 일 컴포넌트는 2개 이상의 컴퓨터들 사이에 분배될 수 있다. 또한, 이러한 컴포넌트들은 그 내부에 저장된 다양한 데이터 구조들을 갖는 다양한 컴퓨터 판독가능한 매체로부터 실행할 수 있다. 컴포넌트들은 예를 들어 하나 이상의 데이터 패킷들을 갖는 신호(예를 들면, 로컬 시스템, 분산 시스템에서 다른 컴포넌트와 상호작용하는 하나의 컴포넌트로부터의 데이터 및/또는 신호를 통해 다른 시스템과 인터넷과 같은 네트워크를 통해 전송되는 데이터)에 따라 로컬 및/또는 원격 처리들을 통해 통신할 수 있다.As used herein, the terms “component,” “module,” “system,” and the like refer to a computer-related entity, hardware, firmware, software, a combination of software and hardware, or an implementation of software. For example, a component may be, but is not limited to, a process running on a processor, a processor, an object, a thread of execution, a program, and/or a computer. For example, both an application running on a computing device and the computing device can be a component. One or more components may reside within a processor and/or thread of execution. A component may be localized within one computer. A component may be distributed between two or more computers. Additionally, these components can execute from various computer-readable media having various data structures stored thereon. Components can transmit signals, for example, with one or more data packets (e.g., data and/or signals from one component interacting with other components in a local system, a distributed system, to other systems and over a network such as the Internet). Depending on the data being transmitted, they may communicate through local and/or remote processes.

더불어, 용어 "또는"은 배타적 "또는"이 아니라 내포적 "또는"을 의미하는 것으로 의도된다. 즉, 달리 특정되지 않거나 문맥상 명확하지 않은 경우에, "X는 A 또는 B를 이용한다"는 자연적인 내포적 치환 중 하나를 의미하는 것으로 의도된다. 즉, X가 A를 이용하거나; X가 B를 이용하거나; 또는 X가 A 및 B 모두를 이용하는 경우, "X는 A 또는 B를 이용한다"가 이들 경우들 어느 것으로도 적용될 수 있다. 또한, 본 명세서에 사용된 "및/또는"이라는 용어는 열거된 관련 아이템들 중 하나 이상의 아이템의 가능한 모든 조합을 지칭하고 포함하는 것으로 이해되어야 한다.Additionally, the term “or” is intended to mean an inclusive “or” and not an exclusive “or.” That is, unless otherwise specified or clear from context, “X utilizes A or B” is intended to mean one of the natural implicit substitutions. That is, either X uses A; X uses B; Or, if X uses both A and B, “X uses A or B” can apply to either of these cases. Additionally, the term “and/or” as used herein should be understood to refer to and include all possible combinations of one or more of the related listed items.

또한, "포함한다" 및/또는 "포함하는"이라는 용어는, 해당 특징 및/또는 구성요소가 존재함을 의미하는 것으로 이해되어야 한다. 다만, "포함한다" 및/또는 "포함하는"이라는 용어는, 하나 이상의 다른 특징, 구성요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않는 것으로 이해되어야 한다. 또한, 달리 특정되지 않거나 단수 형태를 지시하는 것으로 문맥상 명확하지 않은 경우에, 본 명세서와 청구범위에서 단수는 일반적으로 "하나 또는 그 이상"을 의미하는 것으로 해석되어야 한다.Additionally, the terms “comprise” and/or “comprising” should be understood to mean that the corresponding feature and/or element is present. However, the terms “comprise” and/or “comprising” should be understood as not excluding the presence or addition of one or more other features, elements and/or groups thereof. Additionally, unless otherwise specified or the context is clear to indicate a singular form, the singular terms herein and in the claims should generally be construed to mean “one or more.”

당업자들은 추가적으로 여기서 개시된 실시예들과 관련되어 설명된 다양한 예시적 논리적 블록들, 구성들, 모듈들, 회로들, 수단들, 로직들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양쪽 모두의 조합들로 구현될 수 있음을 인식해야 한다. 하드웨어 및 소프트웨어의 상호교환성을 명백하게 예시하기 위해, 다양한 예시적 컴포넌트들, 블록들, 구성들, 수단들, 로직들, 모듈들, 회로들, 및 단계들은 그들의 기능성 측면에서 일반적으로 위에서 설명되었다. 그러한 기능성이 하드웨어로 또는 소프트웨어로서 구현되는지 여부는 전반적인 시스템에 부과된 특정 어플리케이션(application) 및 설계 제한들에 달려 있다. 숙련된 기술자들은 각각의 특정 어플리케이션들을 위해 다양한 방법들로 설명된 기능성을 구현할 수 있다. 다만, 그러한 구현의 결정들이 본 발명내용의 영역을 벗어나게 하는 것으로 해석되어서는 안된다.Those skilled in the art will additionally recognize that the various illustrative logical blocks, components, modules, circuits, means, logic, and algorithm steps described in connection with the embodiments disclosed herein may be implemented using electronic hardware, computer software, or a combination of both. It must be recognized that it can be implemented with To clearly illustrate the interchangeability of hardware and software, various illustrative components, blocks, configurations, means, logics, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented in hardware or software will depend on the specific application and design constraints imposed on the overall system. A skilled technician can implement the described functionality in a variety of ways for each specific application. However, such implementation decisions should not be construed as departing from the scope of the present invention.

제시된 실시예들에 대한 설명은 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 발명의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이다. 여기에 정의된 일반적인 원리들은 본 발명의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 그리하여, 본 발명은 여기에 제시된 실시예들로 한정되는 것이 아니다. 본 발명은 여기에 제시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다.The description of the presented embodiments is provided to enable anyone skilled in the art to use or practice the present invention. Various modifications to these embodiments will be apparent to those skilled in the art. The general principles defined herein may be applied to other embodiments without departing from the scope of the invention. Therefore, the present invention is not limited to the embodiments presented herein. The present invention is to be interpreted in the broadest scope consistent with the principles and novel features presented herein.

본 명세서에서, 컴퓨터는 적어도 하나의 프로세서를 포함하는 모든 종류의 하드웨어 장치를 의미하는 것이고, 실시 예에 따라 해당 하드웨어 장치에서 동작하는 소프트웨어적 구성도 포괄하는 의미로서 이해될 수 있다. 예를 들어, 컴퓨터는 스마트폰, 태블릿 PC, 데스크톱, 노트북 및 각 장치에서 구동되는 사용자 클라이언트 및 애플리케이션을 모두 포함하는 의미로서 이해될 수 있으며, 또한 이에 제한되는 것은 아니다.In this specification, a computer refers to all types of hardware devices including at least one processor, and depending on the embodiment, it may be understood as encompassing software configurations that operate on the hardware device. For example, a computer can be understood to include, but is not limited to, a smartphone, tablet PC, desktop, laptop, and user clients and applications running on each device.

이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the attached drawings.

본 명세서에서 설명되는 각 단계들은 컴퓨터에 의하여 수행되는 것으로 설명되나, 각 단계의 주체는 이에 제한되는 것은 아니며, 실시 예에 따라 각 단계들의 적어도 일부가 서로 다른 장치에서 수행될 수도 있다.Each step described in this specification is described as being performed by a computer, but the subject of each step is not limited thereto, and depending on the embodiment, at least part of each step may be performed in a different device.

도 1은 본 발명의 일 실시예에 따른 시스템을 도시한 도면이다.1 is a diagram illustrating a system according to an embodiment of the present invention.

도 1을 참조하면, 본 발명의 일 실시예에 따른 시스템은 서버(100), 단말(200) 및 외부 서버(300)를 포함할 수 있다. 도 1에 도시된 시스템은 일 실시예에 따른 것이고, 그 구성 요소가 도 1에 도시된 실시예에 한정되는 것은 아니며, 필요에 따라 부가, 변경 또는 삭제될 수 있다.Referring to FIG. 1, a system according to an embodiment of the present invention may include a server 100, a terminal 200, and an external server 300. The system shown in FIG. 1 is according to one embodiment, and its components are not limited to the embodiment shown in FIG. 1, and may be added, changed, or deleted as necessary.

일 실시예에서, 서버(100)는 함수 및 매개변수의 명칭을 자동으로 변경하는 방법을 수행할 수 있다. 또한, 서버(100)는 사용자 단말(200)로 함수 및 매개변수의 명칭을 자동으로 변경하는 서비스를 제공할 수 있다.In one embodiment, the server 100 may perform a method of automatically changing the names of functions and parameters. Additionally, the server 100 may provide a service for automatically changing the names of functions and parameters to the user terminal 200.

예를 들어, 서버(100)는 사용자 단말(200)로부터 함수 및 매개변수의 명칭이 변경되지 않은 소스코드를 수신하면, 함수명 및 매개변수명을 변경이 변경된 소스코드를 사용자 단말(200)로 전송할 수 있다.For example, when the server 100 receives source code whose function and parameter names have not been changed from the user terminal 200, the server 100 may transmit the source code with the function name and parameter names changed to the user terminal 200. You can.

자세히 예를 들어, 코딩 작업을 수행하는 작업자는 통합 개발 환경(Integrated Development Environment, IDE) 상에서 “method_1, method_2”와 같은 임의의 함수명 식별자와 “param_1, param_2”와 같은 임의의 매개변수명 식별자로 구성된 소스코드를 작성하고, 해당 함수의 기능을 구현할 수 있다. 작업자는 구현이 완료된 해당 함수를 선택(예를 들어, 드래그 하여 선택)하고, 상기 통합 개발 환경 상에 확장 프로그램(예를 들어, extension)으로 설치되어 있는 본 발명의 “함수 및 매개변수의 명칭을 자동으로 변경하는 서비스”를 실행할 수 있다. 이때 본 발명의 서버(100)는 작업자에게 매개변수명을 제안할 수 있다. 이 경우, 작업자는 제안된 매개변수명을 선택하거나 적합하다고 판단되는 명칭이 없는 경우 직접 입력할 수 있다. 또한, 서버(100)는 매개변수명의 수정이 완료된 후 수정된 코드를 기반으로 작업자에게 함수명을 제안할 수 있다. 이 경우, 작업자는 제안된 함수명을 선택하거나 적합하다고 판단되는 명칭이 없는 경우 직접 입력할 수 있다. 그리고, 작업자는 함수명 및 매개변수명이 모두 수정된 소스코드를 획득할 수 있다. 한편, 수정이 완료된 코드는 후에 재학습을 위해 서버(100)에 저장될 수 있다.For example, the worker performing the coding task consists of arbitrary function name identifiers such as “method_1, method_2” and arbitrary parameter name identifiers such as “param_1, param_2” on the Integrated Development Environment (IDE). You can write source code and implement the function of the function. The operator selects (e.g., selects by dragging) the function for which implementation has been completed and enters the names of the “functions and parameters” of the present invention installed as an extension program (e.g., extension) on the integrated development environment. You can run a “service that changes automatically.” At this time, the server 100 of the present invention may suggest a parameter name to the operator. In this case, the operator can select a suggested parameter name or enter it directly if no name is deemed suitable. Additionally, after the modification of the parameter name is completed, the server 100 may suggest a function name to the worker based on the modified code. In this case, the operator can select the suggested function name or enter it directly if no name is deemed suitable. Additionally, the operator can obtain source code with both function names and parameter names modified. Meanwhile, the modified code can be stored in the server 100 for later re-learning.

일 실시예에서, 서버(100)는 사용자 단말(200)에서 입력되는 정의되지 않은 적어도 하나의 식별자를 포함하는 제1 소스코드를 실시간으로 인식할 수 있다.In one embodiment, the server 100 may recognize the first source code including at least one undefined identifier input from the user terminal 200 in real time.

서버(100)는 제1 소스코드를 실시간으로 인식한 경우, 제1 소스코드를 입력 받는 기능-이름 일치점수 산출모델을 이용하여, 정의되지 않은 적어도 하나의 식별자와 관련된 추천 매개변수명 및 추천 변수명을 결정할 수 있다. 그리고, 서버(100)는 추천 매개변수명 및 추천 변수명을 사용자 단말(200)로 제공할 수 있다.When the server 100 recognizes the first source code in real time, the server 100 uses a function-name match score calculation model that receives the first source code to select a recommended parameter name and a recommended variable related to at least one undefined identifier. The name can be decided. Additionally, the server 100 may provide recommended parameter names and recommended variable names to the user terminal 200.

서버(100)는 추천 매개변수명 및 추천 변수명 중 어느 하나를 선택하는 제1 선택 입력을 사용자 단말(200)로부터 수신할 수 있다. 이 경우, 서버(100)는 제1 선택 입력을 기초로 적어도 하나의 식별자가 정의된 제2 소스코드를 생성할 수 있다. 또한, 서버(100)는 제1 선택 입력을 기초로 기능-이름 일치점수 산출모델을 재학습시킬 수 있다.The server 100 may receive a first selection input for selecting one of the recommended parameter name and the recommended variable name from the user terminal 200. In this case, the server 100 may generate a second source code in which at least one identifier is defined based on the first selection input. Additionally, the server 100 may retrain the function-name matching score calculation model based on the first selection input.

서버(100)는 제2 소스코드를 생성한 경우, 제2 소스코드를 입력 받는 기능-이름 일치점수 산출모델을 이용하여, 적어도 하나의 식별자와 관련된 추천 함수명을 결정할 수 있다. 그리고, 서버(100)는 추천 함수명을 사용자 단말(200)로 제공할 수 있다.When the server 100 generates the second source code, the server 100 may determine a recommended function name related to at least one identifier using a function-name matching score calculation model that receives the second source code. Additionally, the server 100 may provide the recommended function name to the user terminal 200.

서버(100)는 추천 함수명 중 어느 하나를 선택하는 제2 선택 입력을 사용자 단말(200)로부터 수신할 수 있다. 이 경우, 서버(100)는 제2 선택 입력을 기초로 적어도 하나의 식별자 및 적어도 하나의 식별자와 관련된 함수명이 정의된 제3 소스코드를 생성할 수 있다. 또한, 서버(100)는 제2 선택 입력을 기초로 기능-이름 일치점수 산출모델을 재학습시킬 수 있다.The server 100 may receive a second selection input for selecting one of the recommended function names from the user terminal 200. In this case, the server 100 may generate a third source code in which at least one identifier and a function name related to the at least one identifier are defined based on the second selection input. Additionally, the server 100 may retrain the function-name matching score calculation model based on the second selection input.

즉, 서버(100)는 사용자 단말(200)에서 입력되는 정의되지 않은 적어도 하나의 식별자를 포함하는 소스코드에서 식별자를 정의하고, 정의된 식별자와 관련된 함수명이 정의된 소스코드를 생성할 수 있다. 따라서, 서버(100)는 함수 및 매개변수에 대한 작명 작업에 대한 도움을 제공하여 코딩 작업의 효율을 높일 수 있다.That is, the server 100 may define an identifier in source code including at least one undefined identifier input from the user terminal 200, and generate source code in which a function name related to the defined identifier is defined. Accordingly, the server 100 can increase the efficiency of coding work by providing assistance with naming tasks for functions and parameters.

다양한 실시예에서, 서버(100)는 사용자 단말(200)로부터 함수 및 매개변수의 명칭이 변경되지 않은 소스코드를 수신할 수 있다. 이 경우, 서버(100)는 사전 학습된 신경망 모델에 소스코드를 입력하여, 소스코드에 포함된 적어도 하나의 매개변수 각각의 매개변수명을 결정하고, 상기 소스코드에 포함된 적어도 하나의 함수 각각의 함수명을 결정할 수 있다. 여기서, 신경망 모델은 기능-이름 일치점수 산출모델일 수 있다.In various embodiments, the server 100 may receive source code from the user terminal 200 in which the names of functions and parameters are not changed. In this case, the server 100 inputs the source code into the pre-trained neural network model, determines the parameter name of each at least one parameter included in the source code, and determines the parameter name of each at least one function included in the source code. The function name can be determined. Here, the neural network model may be a function-name matching score calculation model.

구체적으로, 서버(100)는 소스코드를 입력 받은 사전 학습된 신경망으로부터 적어도 하나의 매개변수 및 적어도 하나의 함수 각각의 후보 명칭들을 획득하고, 이를 사용자 단말(200)로 전송할 수 있다. 이 경우, 사용자 단말(200)은 후보 명칭 중 어느 하나의 명칭을 선택한 선택 정보나, 직접 입력한 정보를 서버(100)로 전송할 수 있다. 한편, 서버(100)는 선택 정보 또는 사용자가 직접 입력한 사용자 입력 정보를 기초로 소스코드에 포함된 적어도 하나의 매개변수 및 적어도 하나의 함수 각각의 명칭을 결정할 수 있다.Specifically, the server 100 may obtain candidate names for each of at least one parameter and at least one function from a pre-trained neural network that receives source code, and transmit them to the user terminal 200. In this case, the user terminal 200 may transmit selection information for selecting one of the candidate names or directly input information to the server 100. Meanwhile, the server 100 may determine the name of each of at least one parameter and at least one function included in the source code based on selection information or user input information directly entered by the user.

그리고, 서버(100)는 소스코드에 포함된 적어도 하나의 매개변수 각각을 상술한 방법으로 결정된 매개변수명으로 변경하고, 적어도 하나의 함수 각각을 상술한 방법으로 결정된 함수명으로 변경할 수 있다. 또한, 서버(100)는 매개변수명 및 함수명이 변경된 소스코드를 사용자 단말(200)로 제공할 수 있다.Additionally, the server 100 may change each of at least one parameter included in the source code to a parameter name determined by the method described above, and change each of at least one function to a function name determined by the method described above. Additionally, the server 100 may provide source code with changed parameter names and function names to the user terminal 200.

따라서, 본 발명의 서버(100)는 함수 및 매개변수에 대한 작명 작업에 대한 도움을 제공하여 코딩 작업의 효율을 높일 수 있다.Therefore, the server 100 of the present invention can increase the efficiency of coding work by providing assistance with naming tasks for functions and parameters.

이하, 서버(100)가 함수 및 매개변수의 명칭을 자동으로 변경하는 방법의 일례는 도 3 내지 도 8을 참조하여 후술한다.Hereinafter, an example of a method by which the server 100 automatically changes the names of functions and parameters will be described with reference to FIGS. 3 to 8.

다양한 실시예에서, 서버(100)는 웹(Web) 또는 애플리케이션(Application) 기반의 서비스를 제공할 수 있다. 그러나, 이에 한정되지 않는다.In various embodiments, the server 100 may provide web- or application-based services. However, it is not limited to this.

서버(100)는 예를 들어, 마이크로프로세서, 메인프레임 컴퓨터, 디지털 프로세서, 휴대용 디바이스 및 디바이스 제어기 등과 같은 임의의 타입의 컴퓨터 시스템 또는 컴퓨터 디바이스를 포함할 수 있다. 다만, 이에 한정되는 것은 아니다.Server 100 may include any type of computer system or computer device, such as, for example, microprocessors, mainframe computers, digital processors, portable devices, and device controllers. However, it is not limited to this.

이하, 서버(100)의 하드웨어 구성에 대한 설명은 도 2를 참조하여 후술한다.Hereinafter, the hardware configuration of the server 100 will be described with reference to FIG. 2.

한편, 사용자 단말(200)은 네트워크(400)를 통해 서버(100)와 연결될 수 있으며, 서버(100)에서 제공하는 함수 및 매개변수의 명칭을 자동으로 변경하는 서비스를 사용하는 사용자의 단말일 수 있다. 예를 들어, 사용자 단말(200)은 코딩 작업을 하는 작업자 또는 개발자의 단말일 수 있다.Meanwhile, the user terminal 200 may be connected to the server 100 through the network 400, and may be a user terminal using a service that automatically changes the names of functions and parameters provided by the server 100. there is. For example, the user terminal 200 may be a terminal of a worker or developer performing coding work.

여기서, 사용자 단말(200)은 예를 들어, 다양한 형태의 컴퓨터 장치를 포함할 수 있다. 자세히 예를 들어, 사용자 단말(200)은 스마트폰, 태블릿 PC, 데스크톱, 노트북과 같은 다양한 단말 장치를 의미할 수 있다.Here, the user terminal 200 may include, for example, various types of computer devices. For example, the user terminal 200 may refer to various terminal devices such as a smartphone, tablet PC, desktop, or laptop.

사용자 단말(200)은 단말의 적어도 일부분에 디스플레이를 포함하며, 서버(100)로부터 제공되는 애플리케이션 혹은 확장 프로그램 기반의 서비스 구동을 위한 운영체제를 포함할 수 있다. 예를 들어, 사용자 단말(200)은 스마트폰(Smart-phone)일 수 있으나, 이에 한정되지 않고, 사용자 단말(200)은, 휴대성과 이동성이 보장되는 무선 통신 장치로서, 네비게이션, PCS(Personal Communication System), GSM(Global System for Mobile communications), PDC(Personal Digital Cellular), PHS(Personal Handyphone System), PDA(Personal Digital Assistant), IMT(International Mobile Telecommunication)-2000, CDMA(Code Division Multiple Access)-2000, W-CDMA(W-Code Division Multiple Access), Wibro(Wireless Broadband Internet) 단말, 스마트 패드(Smartpad), 태블릿 PC(Tablet PC) 등과 같은 모든 종류의 핸드헬드(Handheld) 기반의 무선 통신 장치를 포함할 수 있다.The user terminal 200 includes a display in at least a portion of the terminal, and may include an operating system for running an application or extension program-based service provided from the server 100. For example, the user terminal 200 may be a smart phone, but is not limited to this. The user terminal 200 is a wireless communication device that guarantees portability and mobility, and may be used for navigation, personal communication (PCS), etc. System), GSM (Global System for Mobile communications), PDC (Personal Digital Cellular), PHS (Personal Handyphone System), PDA (Personal Digital Assistant), IMT (International Mobile Telecommunication)-2000, CDMA (Code Division Multiple Access)- 2000, all types of handheld-based wireless communication devices such as W-CDMA (W-Code Division Multiple Access), Wibro (Wireless Broadband Internet) terminals, smartpads, tablet PCs, etc. It can be included.

외부 서버(300)는 네트워크(400)를 통해 서버(100)와 연결될 수 있으며, 서버(100)가 함수 및 매개변수의 명칭을 자동으로 변경하는 서비스를 제공하기 위하여 필요한 각종 정보/데이터를 송수신 할 수 있고, 서버(100)가 함수 및 매개변수의 명칭을 자동으로 변경하는 서비스를 제공함에 따라 생성되는 각종 정보/데이터를 저장 및 관리할 수 있다.The external server 300 can be connected to the server 100 through the network 400, and the server 100 can transmit and receive various information/data necessary to provide a service that automatically changes the names of functions and parameters. It is possible to store and manage various information/data generated as the server 100 provides a service that automatically changes the names of functions and parameters.

예를 들어, 외부 서버(300)는 함수 및 매개변수의 명칭을 자동으로 변경하는 서비스에서 이용되는 정보를 저장하는 데이터베이스 서버일 수 있다. 다른 예를 들어, 외부 서버(300)는 함수 및 매개변수의 명칭을 자동으로 변경하는 서비스에 이용되는 정보를 제공하는 서버일 수 있다.For example, the external server 300 may be a database server that stores information used in a service that automatically changes the names of functions and parameters. For another example, the external server 300 may be a server that provides information used in a service that automatically changes the names of functions and parameters.

네트워크(400)는 컴퓨팅 장치, 복수의 단말 및 서버들과 같은 각각의 노드 상호 간에 정보 교환이 가능한 연결 구조를 의미할 수 있다. 예를 들어, 네트워크(400)는 근거리 통신망(LAN: Local Area Network), 광역 통신망(WAN: Wide Area Network), 인터넷(WWW: World Wide Web), 유무선 데이터 통신망, 전화망, 유무선 텔레비전 통신망 등을 포함한다.The network 400 may refer to a connection structure that allows information exchange between nodes such as a computing device, a plurality of terminals, and servers. For example, the network 400 includes a local area network (LAN), a wide area network (WAN), the World Wide Web (WWW), a wired and wireless data communication network, a telephone network, and a wired and wireless television communication network. do.

무선 데이터 통신망은 3G, 4G, 5G, 3GPP(3rd Generation Partnership Project), 5GPP(5th Generation Partnership Project), LTE(Long Term Evolution), WIMAX(World Interoperability for Microwave Access), 와이파이(Wi-Fi), 인터넷(Internet), LAN(Local Area Network), Wireless LAN(Wireless Local Area Network), WAN(Wide Area Network), PAN(Personal Area Network), RF(Radio Frequency), 블루투스(Bluetooth) 네트워크, NFC(Near-Field Communication) 네트워크, 위성 방송 네트워크, 아날로그 방송 네트워크, DMB(Digital Multimedia Broadcasting) 네트워크 등이 포함되나 이에 한정되지는 않는다.Wireless data communication networks include 3G, 4G, 5G, 3GPP (3rd Generation Partnership Project), 5GPP (5th Generation Partnership Project), LTE (Long Term Evolution), WIMAX (World Interoperability for Microwave Access), Wi-Fi, and Internet. (Internet), LAN (Local Area Network), Wireless LAN (Wireless Local Area Network), WAN (Wide Area Network), PAN (Personal Area Network), RF (Radio Frequency), Bluetooth (Bluetooth) network, NFC (Near- Field Communication) network, satellite broadcasting network, analog broadcasting network, DMB (Digital Multimedia Broadcasting) network, etc., but is not limited thereto.

도 2는 본 발명의 일 실시예에 따른 서버의 하드웨어 구성도이다.Figure 2 is a hardware configuration diagram of a server according to an embodiment of the present invention.

도 2를 참조하면, 본 발명의 일 실시예에 따른 서버(100)는 하나 이상의 프로세서(110), 프로세서(110)에 의하여 수행되는 컴퓨터 프로그램(151)을 로드(Load)하는 메모리(120), 버스(130), 통신 인터페이스(140) 및 컴퓨터 프로그램(151)을 저장하는 스토리지(150)를 포함할 수 있다. 여기서, 도 2에는 본 발명의 실시예와 관련 있는 구성요소들만 도시되어 있다. 따라서, 본 발명이 속한 기술분야의 통상의 기술자라면 도 2에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.Referring to FIG. 2, the server 100 according to an embodiment of the present invention includes one or more processors 110, a memory 120 that loads a computer program 151 executed by the processor 110, It may include a bus 130, a communication interface 140, and a storage 150 that stores a computer program 151. Here, only components related to the embodiment of the present invention are shown in Figure 2. Accordingly, anyone skilled in the art to which the present invention pertains will know that other general-purpose components may be included in addition to the components shown in FIG. 2.

프로세서(110)는 서버(100)의 각 구성의 전반적인 동작을 제어한다. 프로세서(110)는 하나 이상의 코어로 구성될 수 있으며, 컴퓨팅 장치의 중앙 처리 장치(CPU: central processing unit), 범용 그래픽 처리 장치(GPGPU: general purpose graphics processing unit), 텐서 처리 장치(TPU: tensor processing unit) 등의 데이터 분석, 딥러닝을 위한 프로세서를 포함할 수 있다. 또는 본 발명의 기술 분야에 잘 알려진 임의의 형태의 프로세서를 포함하여 구성될 수 있다.The processor 110 controls the overall operation of each component of the server 100. The processor 110 may be composed of one or more cores, and may include a central processing unit (CPU), a general purpose graphics processing unit (GPGPU), and a tensor processing unit (TPU) of the computing device. unit) may include a processor for data analysis and deep learning. Alternatively, it may be configured to include any type of processor well known in the art of the present invention.

또한, 프로세서(110)는 본 발명의 실시예들에 따른 방법을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있으며, 서버(100)는 하나 이상의 프로세서를 구비할 수 있다.Additionally, the processor 110 may perform operations on at least one application or program for executing methods according to embodiments of the present invention, and the server 100 may include one or more processors.

다양한 실시예에서, 프로세서(110)는 프로세서(110) 내부에서 처리되는 신호(또는, 데이터)를 일시적 및/또는 영구적으로 저장하는 램(RAM: Random Access Memory, 미도시) 및 롬(ROM: Read-Only Memory, 미도시)을 더 포함할 수 있다. 또한, 프로세서(110)는 그래픽 처리부, 램 및 롬 중 적어도 하나를 포함하는 시스템온칩(SoC: system on chip) 형태로 구현될 수 있다.In various embodiments, the processor 110 includes random access memory (RAM) (not shown) and read memory (ROM) that temporarily and/or permanently store signals (or data) processed within the processor 110. -Only Memory, not shown) may be further included. Additionally, the processor 110 may be implemented in the form of a system on chip (SoC) that includes at least one of a graphics processing unit, RAM, and ROM.

메모리(120)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(120)는 본 발명의 다양한 실시예에 따른 방법/동작을 실행하기 위하여 스토리지(150)로부터 컴퓨터 프로그램(151)을 로드할 수 있다. 메모리(120)에 컴퓨터 프로그램(151)이 로드되면, 프로세서(110)는 컴퓨터 프로그램(151)을 구성하는 하나 이상의 인스트럭션들을 실행함으로써 상기 방법/동작을 수행할 수 있다. 메모리(120)는 RAM과 같은 휘발성 메모리로 구현될 수 있을 것이나, 본 발명의 기술적 범위가 이에 한정되는 것은 아니다.Memory 120 stores various data, commands and/or information. Memory 120 may load a computer program 151 from storage 150 to execute methods/operations according to various embodiments of the present invention. When the computer program 151 is loaded into the memory 120, the processor 110 can perform the method/operation by executing one or more instructions constituting the computer program 151. The memory 120 may be implemented as a volatile memory such as RAM, but the technical scope of the present invention is not limited thereto.

버스(130)는 서버(100)의 구성 요소 간 통신 기능을 제공한다. 버스(130)는 주소 버스(address Bus), 데이터 버스(Data Bus) 및 제어 버스(Control Bus) 등 다양한 형태의 버스로 구현될 수 있다.The bus 130 provides communication functions between components of the server 100. The bus 130 may be implemented as various types of buses, such as an address bus, a data bus, and a control bus.

통신 인터페이스(140)는 서버(100)의 유무선 인터넷 통신을 지원한다. 또한, 통신 인터페이스(140)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 이를 위해, 통신 인터페이스(140)는 본 발명의 기술 분야에 잘 알려진 통신 모듈을 포함하여 구성될 수 있다. 몇몇 실시예에서, 통신 인터페이스(140)는 생략될 수도 있다.The communication interface 140 supports wired and wireless Internet communication of the server 100. Additionally, the communication interface 140 may support various communication methods other than Internet communication. To this end, the communication interface 140 may be configured to include a communication module well known in the technical field of the present invention. In some embodiments, communication interface 140 may be omitted.

스토리지(150)는 컴퓨터 프로그램(151)을 비 임시적으로 저장할 수 있다. 서버(100)를 통해 본 발명의 실시예에 따른 프로세스를 수행하는 경우, 스토리지(150)는 개시된 실시예에 따른 분석을 수행하기 위하여 필요한 각종 정보를 저장할 수 있다.Storage 150 may store the computer program 151 non-temporarily. When performing a process according to an embodiment of the present invention through the server 100, the storage 150 may store various information necessary to perform analysis according to the disclosed embodiment.

스토리지(150)는 ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.The storage 150 is a non-volatile memory such as Read Only Memory (ROM), Erasable Programmable ROM (EPROM), Electrically Erasable Programmable ROM (EEPROM), flash memory, a hard disk, a removable disk, or a device well known in the technical field to which the present invention pertains. It may be configured to include any known type of computer-readable recording medium.

컴퓨터 프로그램(151)은 메모리(120)에 로드 될 때 프로세서(110)로 하여금 본 발명의 다양한 실시예에 따른 방법/동작을 수행하도록 하는 하나 이상의 인스트럭션들을 포함할 수 있다. 즉, 프로세서(110)는 상기 하나 이상의 인스트럭션들을 실행함으로써, 본 발명의 다양한 실시예에 따른 상기 방법/동작을 수행할 수 있다.The computer program 151, when loaded into the memory 120, may include one or more instructions that cause the processor 110 to perform methods/operations according to various embodiments of the present invention. That is, the processor 110 can perform the method/operation according to various embodiments of the present invention by executing the one or more instructions.

일 실시예에서, 컴퓨터 프로그램(151)은 신경망 모델의 학습과 관련된 다양한 작업과 관련된 다양한 방법들을 수행하도록 하는 하나 이상의 인스트럭션을 포함할 수 있다.In one embodiment, computer program 151 may include one or more instructions to perform various methods related to various tasks related to training a neural network model.

본 발명의 실시예와 관련하여 설명된 방법 또는 알고리즘의 단계들은 하드웨어로 직접 구현되거나, 하드웨어에 의해 실행되는 소프트웨어 모듈로 구현되거나, 또는 이들의 결합에 의해 구현될 수 있다. 소프트웨어 모듈은 RAM(Random Access Memory), ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리(Flash Memory), 하드 디스크, 착탈형 디스크, CD-ROM, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터 판독가능 기록매체에 상주할 수도 있다.The steps of the method or algorithm described in connection with embodiments of the present invention may be implemented directly in hardware, implemented as a software module executed by hardware, or a combination thereof. The software module may be RAM (Random Access Memory), ROM (Read Only Memory), EPROM (Erasable Programmable ROM), EEPROM (Electrically Erasable Programmable ROM), Flash Memory, hard disk, removable disk, CD-ROM, or It may reside on any type of computer-readable recording medium well known in the art to which the present invention pertains.

본 발명의 구성 요소들은 하드웨어인 컴퓨터와 결합되어 실행되기 위해 프로그램(또는 애플리케이션)으로 구현되어 매체에 저장될 수 있다. 본 발명의 구성 요소들은 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있으며, 이와 유사하게, 실시예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다.The components of the present invention may be implemented as a program (or application) and stored in a medium in order to be executed in conjunction with a hardware computer. Components of the invention may be implemented as software programming or software elements, and similarly, embodiments may include various algorithms implemented as combinations of data structures, processes, routines or other programming constructs, such as C, C++, , may be implemented in a programming or scripting language such as Java, assembler, etc. Functional aspects may be implemented as algorithms running on one or more processors.

도 3은 본 발명의 일 실시예에 따른 함수 및 매개변수의 명칭을 자동으로 변경하는 방법을 설명하기 위한 개략도이다.Figure 3 is a schematic diagram illustrating a method for automatically changing the names of functions and parameters according to an embodiment of the present invention.

본 발명의 일 실시예에 따르면, 서버(100)는 사용자의 코딩 작업을 지원하는 서비스를 제공할 수 있다. 구체적으로, 서버(100)는 코딩 작업자들이 어려움을 느끼는 함수 및 매개변수의 작명을 지원하는 서비스를 제공할 수 있다.According to one embodiment of the present invention, the server 100 may provide a service that supports the user's coding work. Specifically, the server 100 may provide a service that supports naming functions and parameters that coders find difficult.

도 3을 참조하면, 사용자 단말(200)은 서버(100)로 제1 소스코드를 전송할 수 있다. 여기서, 제1 소스코드는 함수 및 매개변수의 명칭이 변경되지 않은 소스코드일 수 있다.Referring to FIG. 3, the user terminal 200 may transmit the first source code to the server 100. Here, the first source code may be source code in which the names of functions and parameters are not changed.

서버(100)는 학습된 신경망 모델을 통해 제1 소스코드에 포함된 적어도 하나의 매개변수 각각의 후보 명칭을 획득할 수 있다. 그리고, 서버(100)는 선택 인터페이스를 사용자 단말(200)로 제공하여, 후보 명칭 중 매개변수명을 선택하는 선택 정보 또는 사용자가 직접 입력한 사용자 입력 정보를 획득하고, 적어도 하나의 매개변수 각각의 매개변수명을 결정할 수 있다. 이 경우, 서버(100)는 제1 소스코드에 포함된 적어도 하나의 매개변수 각각의 명칭을 결정된 매개변수명으로 변경하여 제2 소스코드를 생성할 수 있다. 여기서, 제2 소스코드는 함수의 명칭이 변경되지 않고, 매개변수의 명칭만 변경된 소스코드일 수 있다.The server 100 may obtain a candidate name for each of at least one parameter included in the first source code through the learned neural network model. In addition, the server 100 provides a selection interface to the user terminal 200 to obtain selection information for selecting a parameter name from among candidate names or user input information directly input by the user, and selects each of at least one parameter. The parameter name can be determined. In this case, the server 100 may generate the second source code by changing the name of each of at least one parameter included in the first source code to the determined parameter name. Here, the second source code may be a source code in which the name of the function is not changed and only the name of the parameter is changed.

서버(100)는 제2 소스코드를 생성한 후, 학습된 신경망 모델을 통해 제2 소스코드에 포함된 적어도 하나의 함수 각각의 후보 명칭을 획득할 수 있다. 그리고, 서버(100)는 선택 인터페이스를 사용자 단말(200)로 제공하여, 후보 명칭 중 함수명을 선택하는 선택 정보 또는 사용자가 직접 입력한 사용자 입력 정보를 획득하고, 적어도 하나의 함수 각각의 함수명을 결정할 수 있다. 이 경우, 서버(100)는 제2 소스코드에 포함된 적어도 하나의 함수 각각의 명칭을 결정된 함수명으로 변경하여 제3 소스코드를 생성할 수 있다. 그리고, 서버(100)는 제3 소스코드를 사용자 단말(200)로 전송할 수 있다.After generating the second source code, the server 100 may obtain a candidate name for each of at least one function included in the second source code through a learned neural network model. Then, the server 100 provides a selection interface to the user terminal 200, obtains selection information for selecting a function name among candidate names or user input information directly entered by the user, and determines the function name of each at least one function. You can. In this case, the server 100 may generate the third source code by changing the name of each of at least one function included in the second source code to the determined function name. And, the server 100 may transmit the third source code to the user terminal 200.

따라서, 본 발명의 서버(100)는 소스코드에 포함된 함수 및 매개변수의 명칭에 대한 즉각적인 수정 기능을 제공하며, 함수 및 매개변수의 명칭이 일관되도록 야기할 수 있다. 또한, 서버(100)는 작업자의 작명 난이도를 낮춰 작업의 효율성을 높일 수 있다.Therefore, the server 100 of the present invention provides an immediate correction function for the names of functions and parameters included in the source code, and can cause the names of functions and parameters to be consistent. Additionally, the server 100 can increase work efficiency by lowering the difficulty of naming for workers.

한편, 선택 인터페이스를 통해 수신된 선택 정보 또는 사용자 입력 정보를 기초로 수정된 제2 소스코드 및 제3 소스코드 각각은 신경망 모델의 재학습에 이용될 수 있다. 즉, 본 발명의 신경망 모델은 사용자가 이용할수록 업데이트되어, 점진적으로 정확해지는 후보 명칭을 사용자에게 제공할 수 있다.Meanwhile, each of the second and third source codes modified based on selection information or user input information received through the selection interface can be used to retrain the neural network model. In other words, the neural network model of the present invention is updated as the user uses it, and can provide the user with candidate names that become progressively more accurate.

이하, 도 4 내지 도 7을 참조하여 상술한 함수 및 매개변수의 명칭을 자동으로 변경하는 방법의 구체적인 실시예를 설명한다.Hereinafter, a specific embodiment of a method for automatically changing the names of the above-described functions and parameters will be described with reference to FIGS. 4 to 7.

도 4는 본 발명의 일 실시예에 따른 함수 및 매개변수의 명칭을 자동으로 변경하는 방법의 일례를 설명하기 위한 흐름도이다.Figure 4 is a flowchart illustrating an example of a method for automatically changing the names of functions and parameters according to an embodiment of the present invention.

본 발명의 일 실시예에 따르면, 서버(100)는 사용자 단말(200)에서 사용자가 의미 없는 식별자(즉, 정의되지 않은 식별자)를 사용하여 소스코드를 작성하는 것을 실시간으로 인식할 수 있다. 그리고, 서버(100)는 소스코드에 포함된 의미 없는 식별자에 대해 추천 매개변수명, 추천 변수명 및 추천 함수명을 제공하여, 소스코드를 완성시킬 수 있다.According to one embodiment of the present invention, the server 100 can recognize in real time that a user writes source code using a meaningless identifier (i.e., an undefined identifier) in the user terminal 200. Additionally, the server 100 can complete the source code by providing recommended parameter names, recommended variable names, and recommended function names for meaningless identifiers included in the source code.

구체적으로, 도 4를 참조하면, 서버(100)는 사용자 단말(200)에서 입력되는 정의되지 않은 적어도 하나의 식별자를 포함하는 제1 소스코드를 실시간으로 인식할 수 있다(S1). 그리고, 서버(100)는 기능-이름 일치점수 산출모델에 제1 소스코드를 입력하여, 정의되지 않은 적어도 하나의 식별자와 관련된 추천 매개변수명 및 추천 변수명을 사용자 단말로 제공할 수 있다(S2).Specifically, referring to FIG. 4, the server 100 may recognize in real time the first source code including at least one undefined identifier input from the user terminal 200 (S1). Then, the server 100 may input the first source code into the function-name matching score calculation model and provide recommended parameter names and recommended variable names related to at least one undefined identifier to the user terminal (S2 ).

본 발명의 기능-이름 일치점수 산출모델은 추천 매개변수명 및 추천 변수명 중 어느 하나를 선택하는 제1 선택 입력에 기초하여 재학습될 수 있다. 또한, 기능-이름 일치점수 산출모델은 추천 함수명 중 어느 하나를 선택하는 제2 선택 입력을 기초로 재학습될 수 있다.The function-name matching score calculation model of the present invention can be retrained based on a first selection input that selects one of the recommended parameter name and the recommended variable name. Additionally, the function-name matching score calculation model may be retrained based on a second selection input that selects one of the recommended function names.

따라서, 본 발명의 기능-이름 일치점수 산출모델은 이용될수록 사용자의 선택에 가까운(즉, 사용자가 선택할 확률이 높은) 결과물을 출력하도록 업데이트될 수 있다.Accordingly, the more the function-name matching score calculation model of the present invention is used, the more it can be updated to output a result that is closer to the user's selection (i.e., has a higher probability of the user's selection).

또한, 기능-이름 일치점수 산출모델은 입력된 코드의 기능을 이해하기 위해 상기 입력된 코드의 문맥과 흐름을 분석하는 문맥 기반 동적 코드 분석(Context-based Dynamic Code Analysis) 기법을 기초로 학습될 수 있다. 구체적으로, 기능-이름 일치점수 산출모델은 코드의 기능 및 기능에 대응하는 의미를 포함하는 식별자를 라벨링한 학습 데이터를 이용하여 학습될 수 있다.In addition, the function-name matching score calculation model can be learned based on the context-based Dynamic Code Analysis technique, which analyzes the context and flow of the input code to understand the function of the input code. there is. Specifically, the function-name matching score calculation model can be learned using training data labeled with the function of the code and an identifier containing the meaning corresponding to the function.

또한, 기능-이름 일치점수 산출모델은 기능-이름 일치점수를 출력할 수 있다. 여기서, 기능-이름 일치점수는 기능-이름 일치점수 산출모델이 입력된 코드에서 식별자를 제외하고 기능만 존재하는 코드로 변환하여 분석함에 따라, 기능 및 기능에 대응하는 의미를 포함하는 식별자와 함께 산출하는 숫자 값일 수 있다.Additionally, the function-name matching score calculation model can output the function-name matching score. Here, the function-name match score is calculated along with the function and identifier containing the meaning corresponding to the function as the function-name match score calculation model analyzes the input code by converting it into a code that contains only the function, excluding the identifier. It can be a numeric value.

예를 들어, 기능-이름 일치점수 산출모델은 제1 기능을 인식한 경우, 제1 기능에 대응하는 제1 식별자에 대응하는 제1 점수, 제1 기능에 대응하는 제2 식별자에 대응하는 제2 점수, 제1 기능에 대응하는 제3 식별자에 대응하는 제3 점수를 출력할 수 있다. 이 경우, 서버(100)는 제1 기능에 대해 제1 식별자, 제2 식별자 및 제3 식별자를 추천 매개변수명 또는 추천 변수명으로 사용자에게 추천할 수 있다.For example, when the function-name match score calculation model recognizes the first function, the first score corresponding to the first identifier corresponding to the first function, the second score corresponding to the second identifier corresponding to the first function A score and a third score corresponding to a third identifier corresponding to the first function may be output. In this case, the server 100 may recommend the first identifier, second identifier, and third identifier for the first function to the user as recommended parameter names or recommended variable names.

서버(100) 추천 매개변수명 및 추천 변수명을 사용자 단말로 제공할 경우, 추천 매개변수명 및 추천 변수명 각각에 대응하는 기능-이름 일치점수를 제공할 수 있다. 또한, 서버(100)는 정의되지 않은 적어도 하나의 식별자 각각에 대해 현재까지 선택된 추천 매개변수명 및 추천 변수명 각각의 선택 횟수를 제공할 수 있다. 또한, 서버(100)는 사용자 단말(200)로부터 수신되는 제1 선택 입력을 기초로, 선택 횟수를 업데이트할 수 있다.When the server 100 provides a recommended parameter name and a recommended variable name to the user terminal, it can provide a function-name matching score corresponding to each of the recommended parameter name and recommended variable name. Additionally, the server 100 may provide the number of times each of the recommended parameter names and recommended variable names selected to date has been selected for each of at least one undefined identifier. Additionally, the server 100 may update the number of selections based on the first selection input received from the user terminal 200.

서버(100)는 추천 매개변수명 및 추천 변수명을 사용자 단말(200)로 제공한 이후, 추천 매개변수명 및 추천 변수명 중 어느 하나를 선택하는 제1 선택 입력을 사용자 단말(200)로부터 수신할 수 있다. 이 경우, 서버(100)는 제1 선택 입력을 기초로 적어도 하나의 식별자가 정의된 제2 소스코드를 생성할 수 있다(S3). 그리고, 서버(100)는 기능-이름 일치점수 산출모델에 제2 소스코드를 입력하여, 적어도 하나의 식별자와 관련된 추천 함수명을 사용자 단말로 제공할 수 있다(S4).After providing the recommended parameter name and the recommended variable name to the user terminal 200, the server 100 receives a first selection input for selecting one of the recommended parameter name and the recommended variable name from the user terminal 200. can do. In this case, the server 100 may generate a second source code in which at least one identifier is defined based on the first selection input (S3). Then, the server 100 may input the second source code into the function-name matching score calculation model and provide a recommended function name related to at least one identifier to the user terminal (S4).

서버(100)는 추천 함수명을 사용자 단말(200)로 제공한 이후, 추천 함수명 중 어느 하나를 선택하는 제2 선택 입력을 사용자 단말(200)로부터 수신하고, 제2 선택 입력을 기초로 적어도 하나의 식별자 및 적어도 하나의 식별자와 관련된 함수명이 정의된 제3 소스코드를 생성할 수 있다(S5).After providing the recommended function name to the user terminal 200, the server 100 receives a second selection input for selecting one of the recommended function names from the user terminal 200, and receives at least one selection input based on the second selection input. A third source code in which an identifier and at least one function name related to the identifier are defined can be generated (S5).

다양한 실시예에서, 서버(100)는 사용자 단말(200)에서 사용자가 소스코드를 작성하는 것을 실시간으로 인식할 수 있다. 이 경우, 서버(100)는 소스코드에 누락된 변수 또는 누락된 매개변수가 존재하는지 인식할 수 있다. 그리고, 서버(100)는 누락된 변수 또는 누락된 매개변수가 존재하는 경우, 해당 변수 또는 매개변수에 대한 식별자를 추천할 수 있다.In various embodiments, the server 100 may recognize in real time that a user writes source code on the user terminal 200. In this case, the server 100 can recognize whether a missing variable or missing parameter exists in the source code. Additionally, if a missing variable or missing parameter exists, the server 100 may recommend an identifier for the variable or parameter.

구체적으로, 서버(100)는 기능-이름 일치점수 산출모델을 기초로 제1 소스코드에 포함된 특정 함수에 반드시 존재해야 하는 변수 또는 매개변수가 존재하지 않는지 여부를 인식할 수 있다. 그리고, 서버(100)는 특정 함수에 반드시 존재해야 하는 변수 또는 매개변수가 존재하지 않는다고 인식한 경우, 누락된 변수 또는 누락된 매개변수에 대응하는 식별자를 추천할 수 있다.Specifically, the server 100 may recognize whether a variable or parameter that must exist in a specific function included in the first source code does not exist based on the function-name matching score calculation model. Additionally, when the server 100 recognizes that a variable or parameter that must be present in a specific function does not exist, the server 100 may recommend an identifier corresponding to the missing variable or missing parameter.

따라서, 본 발명의 서버(100)는 변수 또는 매개변수의 누락으로 인해 발생되는 오류 방지하여 소스코드의 완성도를 높이고, 코딩 작업의 생산성을 높일 수 있다.Therefore, the server 100 of the present invention can improve the completeness of the source code and increase the productivity of coding work by preventing errors that occur due to omission of variables or parameters.

다양한 실시예에 따르면, 단계(S3)에서, 서버(100)는 추천 매개변수명 및 추천 변수명 중 어느 하나를 선택하는 제1 선택 입력이 수신되지 않고, 수동 입력된 식별자가 수신된 경우, 수동 입력된 식별자를 평가할 수 있다.According to various embodiments, in step S3, if the first selection input for selecting one of the recommended parameter name and the recommended variable name is not received and a manually entered identifier is received, the server 100 The entered identifier can be evaluated.

예를 들어, 서버(100)는 수동 입력된 식별자의 의미가 적절한지, 길이가 적절한지 또는 오탈자가 존재하는지 여부를 기초로 평가할 수 있다. 자세히 예를 들어, 서버(100)는 상술한 평가 항목 각각에 대한 스코어를 산출하고, 각 스코어의 합이 기 설정된 값 이상인 경우, 수동 입력된 식별자를 정상적인 식별자라고 평가할 수 있다.For example, the server 100 may evaluate the manually entered identifier based on whether the meaning is appropriate, the length is appropriate, or whether a typo exists. For example, the server 100 calculates a score for each of the above-mentioned evaluation items, and if the sum of each score is greater than or equal to a preset value, the server 100 may evaluate the manually entered identifier as a normal identifier.

서버(100)는 평가를 완료한 경우, 수동 입력된 식별자에 대응하는 코드의 기능 및 수동 입력된 식별자를 라벨링하여, 기능-이름 일치점수 산출모델을 재학습시킬 수 있다.When the server 100 completes the evaluation, it can retrain the function-name matching score calculation model by labeling the manually entered identifier and the function of the code corresponding to the manually entered identifier.

따라서, 본 발명의 서버(100)는 사용자가 수동 입력하는 식별자에 대해 평가하고, 모델을 재학습시켜 식별자의 명칭에 대한 확장성을 가질 수 있다.Accordingly, the server 100 of the present invention can have scalability for the name of the identifier by evaluating the identifier manually entered by the user and retraining the model.

도 5, 도 6 및 도 7은 본 발명의 다양한 실시예에 따른 함수 및 매개변수의 명칭을 자동으로 변경하는 방법의 일례를 설명하기 위한 흐름도이다.5, 6, and 7 are flowcharts illustrating an example of a method for automatically changing the names of functions and parameters according to various embodiments of the present invention.

본 발명의 일 실시예에 따르면, 서버(100)는 사용자 단말(200)로부터 함수 및 매개변수의 명칭이 변경되지 않은 제1 소스코드를 수신할 수 있다. 또한, 서버(100)는 매개변수명을 결정하기 위한 제1 신경망 모델에 제1 소스코드를 입력하여 제1 소스코드에 포함된 적어도 하나의 매개변수 각각의 매개변수명을 결정할 수 있다. 또한, 서버(100)는 매개변수명을 기초로 제1 소스코드를 수정하여 제2 소스코드를 생성할 수 있다. 또한, 서버(100)는 함수명을 결정하기 위한 제2 신경망 모델에 제2 소스코드를 입력하여 제2 소스코드에 포함된 적어도 하나의 함수 각각의 함수명을 결정할 수 있다. 또한, 서버(100)는 함수명을 기초로 제2 소스코드를 추가로 수정하여 제3 소스코드를 생성할 수 있다.According to one embodiment of the present invention, the server 100 may receive the first source code from the user terminal 200 in which the names of functions and parameters are not changed. Additionally, the server 100 may determine the parameter name of each of at least one parameter included in the first source code by inputting the first source code into the first neural network model for determining the parameter name. Additionally, the server 100 may generate a second source code by modifying the first source code based on the parameter name. Additionally, the server 100 may determine the function name of each of at least one function included in the second source code by inputting the second source code into the second neural network model for determining the function name. Additionally, the server 100 may generate a third source code by further modifying the second source code based on the function name.

본 발명의 제1 신경망 모델 및 제2 신경망 모델은 기능-이름 일치점수 산출모델일 수 있다.The first neural network model and the second neural network model of the present invention may be a function-name matching score calculation model.

다양한 실시예에서, 서버(100)는 매개변수명을 결정하기 위한 제1 신경망 모델에 제1 소스코드를 입력하여 제1 소스코드에 포함된 적어도 하나의 매개변수 각각의 매개변수명을 결정하는 경우, 제1 소스코드를 제1 신경망 모델에 입력하여, 적어도 하나의 매개변수 각각에 대응하는 제1 후보 명칭을 획득할 수 있다. 또한, 서버(100)는 제1 후보 명칭을 사용자 단말(200)로 제공하고, 사용자 단말(200)로부터 제1 후보 명칭 중 어느 하나의 명칭을 선택하는 선택 입력 또는 사용자 입력을 수신할 수 있다. 또한, 서버(100)는 선택 입력 또는 사용자 입력에 기초하여 적어도 하나의 매개변수 각각의 매개변수명을 결정할 수 있다.In various embodiments, the server 100 determines the parameter name of each of at least one parameter included in the first source code by inputting the first source code into a first neural network model for determining the parameter name. , the first source code can be input into the first neural network model to obtain a first candidate name corresponding to each of at least one parameter. Additionally, the server 100 may provide the first candidate name to the user terminal 200 and receive a selection input or user input for selecting one of the first candidate names from the user terminal 200. Additionally, the server 100 may determine a parameter name for each of at least one parameter based on a selection input or user input.

다양한 실시예에서, 서버(100)는 제1 소스코드를 제1 신경망 모델에 입력하여, 적어도 하나의 매개변수 각각에 대응하는 제1 후보 명칭을 획득하는 경우, 제1 신경망 모델에 특정 매개변수를 입력하여, 제1 신경망 모델이 출력하는 매개변수명 클래스 별 스코어를 인식할 수 있다. 또한, 서버(100)는 스코어가 기 설정된 값 이상인 적어도 하나의 명칭을 특정 매개변수에 대응하는 제1 후보 명칭으로 결정할 수 있다.In various embodiments, when the server 100 inputs the first source code into the first neural network model and obtains a first candidate name corresponding to each of at least one parameter, the server 100 adds a specific parameter to the first neural network model. By inputting the parameter name output from the first neural network model, the score for each class can be recognized. Additionally, the server 100 may determine at least one name whose score is greater than or equal to a preset value as the first candidate name corresponding to a specific parameter.

다양한 실시예에서, 제1 소스코드는 적어도 하나의 매개변수 각각의 자리에 서로 다른 매개변수를 식별하기 위한 식별자가 삽입된 소스코드일 수 있다. 한편, 서버(100)는 매개변수명을 기초로 제1 소스코드를 수정하여 제2 소스코드를 생성하는 경우, 특정 매개변수에 대응하는 매개변수명이 결정된 경우, 제1 소스코드에 포함된 특정 매개변수의 식별자를 탐색할 수 있다. 또한, 서버(100)는 특정 매개변수의 식별자를 특정 매개변수에 대응하는 매개변수명으로 변경하여 제2 소스코드를 생성할 수 있다. 여기서, 제1 신경망 모델은 제2 소스코드를 기초로 재학습될 수 있다.In various embodiments, the first source code may be a source code in which an identifier for identifying a different parameter is inserted in place of each of at least one parameter. On the other hand, when the server 100 generates the second source code by modifying the first source code based on the parameter name, when the parameter name corresponding to the specific parameter is determined, the specific parameter included in the first source code You can search for the identifier of a variable. Additionally, the server 100 may generate a second source code by changing the identifier of a specific parameter to a parameter name corresponding to the specific parameter. Here, the first neural network model may be retrained based on the second source code.

다양한 실시예에서, 서버(100)는 함수명을 결정하기 위한 제2 신경망 모델에 제2 소스코드를 입력하여 제2 소스코드에 포함된 적어도 하나의 함수 각각의 함수명을 결정하는 경우, 제2 소스코드를 제2 신경망 모델에 입력하여, 적어도 하나의 함수 각각에 대응하는 제2 후보 명칭을 획득할 수 있다. 또한, 서버(100)는 제2 후보 명칭을 사용자 단말(200)로 제공하고, 사용자 단말(200)로부터 제2 후보 명칭 중 어느 하나의 명칭을 선택하는 선택 입력 또는 사용자 입력을 수신할 수 있다. 또한, 서버(100)는 선택 입력 또는 사용자 입력에 기초하여 적어도 하나의 함수 각각의 함수명을 결정할 수 있다.In various embodiments, when the server 100 determines the function name of each of at least one function included in the second source code by inputting the second source code into the second neural network model for determining the function name, the second source code By inputting into the second neural network model, a second candidate name corresponding to each of at least one function can be obtained. Additionally, the server 100 may provide the second candidate name to the user terminal 200 and receive a selection input or user input for selecting one of the second candidate names from the user terminal 200. Additionally, the server 100 may determine the function name of each at least one function based on a selection input or user input.

다양한 실시예에서, 서버(100)는 제2 소스코드를 제2 신경망 모델에 입력하여, 적어도 하나의 함수 각각에 대응하는 제2 후보 명칭을 획득하는 경우, 제2 신경망 모델에 특정 함수를 입력하여, 제2 신경망 모델이 출력하는 함수명 클래스 별 스코어를 인식할 수 있다. 또한, 서버(100)는 스코어가 기 설정된 값 이상인 적어도 하나의 명칭을 특정 함수에 대응하는 제2 후보 명칭으로 결정할 수 있다.In various embodiments, the server 100 inputs the second source code into the second neural network model, and when obtaining a second candidate name corresponding to each of at least one function, inputs a specific function into the second neural network model. , the score for each function name class output by the second neural network model can be recognized. Additionally, the server 100 may determine at least one name whose score is greater than or equal to a preset value as a second candidate name corresponding to a specific function.

다양한 실시예에서, 소스코드는 적어도 하나의 함수 각각의 자리에 서로 다른 함수를 식별하기 위한 식별자가 삽입된 소스코드일 수 있다. 한편, 서버(100)는 함수명을 기초로 제2 소스코드를 추가로 수정하여 제3 소스코드를 생성하는 경우, 특정 함수에 대응하는 함수명이 결정된 경우, 제2 소스코드에 포함된 특정 함수의 식별자를 탐색할 수 있다. 또한, 서버(100)는 특정 함수의 식별자를 특정 함수에 대응하는 함수명으로 변경하여 제3 소스코드를 생성할 수 있다. 여기서, 제3 소스코드는 사용자 단말(200)로 전송되며, 제2 신경망 모델은 제3 소스코드를 기초로 재학습될 수 있다.In various embodiments, the source code may be source code in which an identifier for identifying a different function is inserted in place of each of at least one function. Meanwhile, when the server 100 generates a third source code by additionally modifying the second source code based on the function name, when the function name corresponding to the specific function is determined, the identifier of the specific function included in the second source code You can explore. Additionally, the server 100 may generate a third source code by changing the identifier of a specific function to a function name corresponding to the specific function. Here, the third source code is transmitted to the user terminal 200, and the second neural network model can be retrained based on the third source code.

다양한 실시예에서, 서버(100)는 방법은, 신경망 모델의 학습을 위해 특정 코드 컨벤션을 기초로 작업 완료된 복수의 소스코드를 획득할 수 있다. 또한, 서버(100)는 복수의 소스코드 각각에서 함수를 인식하고, 함수를 구성하는 매개변수를 인식할 수 있다. 또한, 서버(100)는 함수의 구조 및 함수의 명칭을 인식하고, 함수의 구조에 함수의 명칭을 라벨링한 학습 데이터를 이용하여 제2 신경망 모델을 학습시킬 수 있다. 또한, 서버(100)는 함수를 구성하는 매개변수의 자리 및 매개변수의 명칭을 인식하고, 함수를 구성하는 매개변수의 자리에 매개변수의 명칭을 라벨링한 학습 데이터를 이용하여 제1 신경망 모델을 학습시킬 수 있다.In various embodiments, the server 100 may acquire a plurality of completed source codes based on a specific code convention for learning a neural network model. Additionally, the server 100 can recognize functions in each of a plurality of source codes and recognize parameters constituting the functions. Additionally, the server 100 can recognize the structure of the function and the name of the function, and train the second neural network model using learning data that labels the structure of the function with the name of the function. In addition, the server 100 recognizes the positions and names of the parameters constituting the function, and creates a first neural network model using learning data that labels the names of the parameters in the positions of the parameters constituting the function. It can be learned.

도 5를 참조하면, 서버(100)는 사용자 단말(200)로부터 함수 및 매개변수의 명칭이 변경되지 않은 제1 소스코드를 수신할 수 있다(S110).Referring to FIG. 5, the server 100 may receive the first source code in which the names of functions and parameters are not changed from the user terminal 200 (S110).

본 발명의 제1 소스코드는 적어도 하나의 매개변수 및 적어도 하나의 함수를 포함할 수 있다. 또한, 제1 소스코드는 적어도 하나의 매개변수 각각의 자리에 서로 다른 매개변수를 식별하기 위한 식별자(예를 들어, param_1, param_2)가 삽입된 소스코드일 수 있다. 또한, 제1 소스코드는 적어도 하나의 함수 각각의 자리에 서로 다른 함수를 식별하기 위한 식별자(예를 들어, method_1, method_2)가 삽입된 소스코드일 수 있다.The first source code of the present invention may include at least one parameter and at least one function. Additionally, the first source code may be a source code in which identifiers (eg, param_1, param_2) for identifying different parameters are inserted into each position of at least one parameter. Additionally, the first source code may be a source code in which an identifier (for example, method_1, method_2) for identifying a different function is inserted in place of each of at least one function.

서버(100)는 매개변수명을 결정하기 위한 제1 신경망 모델에 제1 소스코드를 입력하여 제1 소스코드에 포함된 적어도 하나의 매개변수 각각의 매개변수명을 결정할 수 있다(S120).The server 100 may determine the parameter name of each of at least one parameter included in the first source code by inputting the first source code into the first neural network model for determining the parameter name (S120).

구체적으로, 도 6를 참조하면, 서버(100)는 제1 소스코드를 제1 신경망 모델에 입력하여, 적어도 하나의 매개변수 각각에 대응하는 제1 후보 명칭을 획득할 수 있다(S121).Specifically, referring to FIG. 6, the server 100 may input the first source code into the first neural network model to obtain a first candidate name corresponding to each of at least one parameter (S121).

좀더 구체적으로, 서버(100)는 제1 신경망 모델에 특정 매개변수를 입력하여, 제1 신경망 모델이 출력하는 매개변수명 클래스 별 스코어를 인식할 수 있다.More specifically, the server 100 may input a specific parameter into the first neural network model and recognize the score for each parameter name class output from the first neural network model.

예를 들어, 서버(100)는 제1 신경망 모델에 소스코드에 포함된 특정 매개변수의 자리를 입력할 수 있다. 여기서, 특정 매개변수의 자리는 특정 함수 내에서 위치하는 매개변수의 자리일 수 있다. 이 경우, 제1 신경망 모델은 특정 매개변수의 자리를 기초로 매개변수명 클래스 별 스코어를 출력할 수 있다.For example, the server 100 may input the location of a specific parameter included in the source code into the first neural network model. Here, the location of a specific parameter may be the location of a parameter located within a specific function. In this case, the first neural network model may output a score for each parameter name class based on the location of a specific parameter.

자세히 예를 들어, 제1 신경망 모델은 소스코드에 포함된 특정 매개변수의 자리를 입력 받으면, 매개변수의 명칭 별로 구분된 복수의 클래스 각각에 대한 스코어를 산출하여 출력할 수 있다. 여기서, 복수의 클래스 각각에 대한 스코어의 총합은 1이 될 수 있다. 자세히 예를 들어, 매개변수의 명칭이 A, B, C, D, E로 5개 존재하는 경우, 제1 신경망 모델은 5개의 클래스 각각에 대한 스코어를 산출할 수 있다.For example, when the first neural network model receives the position of a specific parameter included in the source code, it can calculate and output a score for each of a plurality of classes divided by the name of the parameter. Here, the total score for each of the plurality of classes may be 1. For example, if there are five parameter names A, B, C, D, and E, the first neural network model can calculate a score for each of the five classes.

본 발명의 제1 신경망 모델은 다중 분류 모델일 수 있으며, 제1 신경망 모델의 클래스의 개수는 작업 완료된 복수의 소스코드에서 인식된 매개변수명 종류의 개수와 대응될 수 있으나 이에 한정되는 것은 아니다.The first neural network model of the present invention may be a multi-classification model, and the number of classes of the first neural network model may correspond to the number of parameter name types recognized in a plurality of completed source codes, but is not limited thereto.

이하, 서버(100)가 제1 신경망 모델을 사전에 학습시키는 방법에 대한 설명은 도 8을 참조하여 후술한다.Hereinafter, a description of how the server 100 pre-trains the first neural network model will be described later with reference to FIG. 8.

한편, 서버(100)는 매개변수명 클래스 별 스코어를 인식한 경우, 매개변수명 클래스 별 스코어가 기 설정된 값 이상인 적어도 하나의 명칭을 특정 매개변수에 대응하는 제1 후보 명칭으로 결정할 수 있다.Meanwhile, when the server 100 recognizes the score for each parameter name class, it may determine at least one name whose score for each parameter name class is more than a preset value as the first candidate name corresponding to the specific parameter.

예를 들어, 매개변수명 A의 스코어가 0.3, 매개변수명 B의 스코어가 0.1, 매개변수명 C의 스코어가 0.2, 매개변수명 D의 스코어가 0.3, 매개변수명 E의 스코어가 0.1로 인식된 경우, 서버(100)는 기 설정된 스코어 값인 0.2 이상인 매개변수명 A, C, D를 제1 후보 명칭으로 결정할 수 있다.For example, the score of parameter name A is recognized as 0.3, the score of parameter name B is 0.1, the score of parameter name C is 0.2, the score of parameter name D is 0.3, and the score of parameter name E is recognized as 0.1. In this case, the server 100 may determine parameter names A, C, and D with a preset score value of 0.2 or more as the first candidate names.

서버(100)는 제1 후보 명칭을 획득한 경우, 제1 후보 명칭을 사용자 단말(200)로 제공할 수 있다. 또한, 서버(100)는 사용자 단말(200)로부터 제1 후보 명칭 중 어느 하나의 명칭을 선택하는 선택 입력 도는 사용자 입력을 수신할 수 있다(S122). 그리고, 서버(100)는 선택 입력 또는 사용자 입력에 기초하여 적어도 하나의 매개변수 각각의 매개변수명을 결정할 수 있다(S123).When the server 100 obtains the first candidate name, the server 100 may provide the first candidate name to the user terminal 200. Additionally, the server 100 may receive a selection input or user input for selecting one of the first candidate names from the user terminal 200 (S122). Additionally, the server 100 may determine the parameter name of each at least one parameter based on the selection input or user input (S123).

구체적으로, 서버(100)는 함수 및 매개변수의 명칭을 자동으로 변경하는 서비스와 관련된 사용자 인터페이스를 통해 사용자 단말(200)로 제1 후보 명칭 중 어느 하나를 선택하는 리스트를 제공할 수 있다. 또한, 서버(100)는 제1 후보 명칭 중 적절한 명칭이 없을 경우 입력 가능한 입력창을 제공할 수 있다. 그리고, 서버(100)는 사용자 인터페이스를 통해 선택되거나 입력된 정보를 획득하여 적어도 하나의 매개변수 각각의 매개변수명을 결정할 수 있다.Specifically, the server 100 may provide a list for selecting one of the first candidate names to the user terminal 200 through a user interface related to a service that automatically changes the names of functions and parameters. Additionally, the server 100 may provide an input window where input is possible when there is no appropriate name among the first candidate names. Additionally, the server 100 may determine the parameter name of each of at least one parameter by obtaining information selected or input through the user interface.

다시 도 5를 참조하면, 서버(100)는 제1 소스코드에 포함된 적어도 하나의 매개변수 각각의 매개변수명을 결정한 경우, 매개변수명을 기초로 제1 소스코드를 수정하여 제2 소스코드를 생성할 수 있다(S130).Referring again to FIG. 5, when the server 100 determines the parameter name of each of at least one parameter included in the first source code, the server 100 modifies the first source code based on the parameter name to produce the second source code. can be created (S130).

구체적으로, 서버(100)는 특정 매개변수에 대응하는 매개변수명이 결정된 경우, 제1 소스코드에 포함된 특정 매개변수의 식별자를 탐색할 수 있다. 그리고, 서버(100)는 특정 매개변수의 식별자를 특정 매개변수에 대응하는 매개변수명으로 변경하여 제2 소스코드를 생성할 수 있다. 여기서, 제2 소스코드는 제1 신경망 모델의 재학습에 이용될 수 있다.Specifically, when the parameter name corresponding to a specific parameter is determined, the server 100 may search for the identifier of the specific parameter included in the first source code. Additionally, the server 100 may generate a second source code by changing the identifier of a specific parameter to a parameter name corresponding to the specific parameter. Here, the second source code can be used to retrain the first neural network model.

서버(100)는 제2 소스코드를 생성한 경우, 함수명을 결정하기 위한 제2 신경망 모델에 제2 소스코드를 입력하여 제2 소스코드에 포함된 적어도 하나의 함수 각각의 함수명을 결정할 수 있다(S140).When the server 100 generates the second source code, the server 100 may determine the function name of each of at least one function included in the second source code by inputting the second source code into the second neural network model for determining the function name ( S140).

구체적으로, 도 7을 참조하면, 서버(100)는 제2 소스코드를 제2 신경망 모델에 입력하여, 적어도 하나의 함수 각각에 대응하는 제2 후보 명칭을 획득할 수 있다(S141).Specifically, referring to FIG. 7, the server 100 may input a second source code into a second neural network model to obtain a second candidate name corresponding to each of at least one function (S141).

좀더 구체적으로, 서버(100)는 제2 신경망 모델에 특정 함수를 입력하여, 제2 신경망 모델이 출력하는 함수명 클래스 별 스코어를 인식할 수 있다. 그리고, 서버(100)는 스코어가 기 설정된 값 이상인 적어도 하나의 명칭을 특정 함수에 대응하는 제2 후보 명칭으로 결정할 수 있다.More specifically, the server 100 may input a specific function into the second neural network model and recognize the score for each function name class output by the second neural network model. Additionally, the server 100 may determine at least one name whose score is greater than or equal to a preset value as a second candidate name corresponding to a specific function.

예를 들어, 서버(100)는 제2 신경망 모델에 소스코드에 포함된 특정 함수의 구조를 입력할 수 있다. 여기서, 특정 함수의 구조는 상기 특정 함수에 포함된 매개변수의 개수 또는 상기 특정 함수를 구성하는 매개변수의 종류를 기초로 결정된 구조일 수 있다. 이 경우, 제2 신경망 모델은 특정 함수의 구조를 기초로 함수명 클래스 별 스코어를 출력할 수 있다.For example, the server 100 may input the structure of a specific function included in the source code into the second neural network model. Here, the structure of the specific function may be a structure determined based on the number of parameters included in the specific function or the types of parameters constituting the specific function. In this case, the second neural network model can output a score for each function name class based on the structure of a specific function.

본 발명의 제2 신경망 모델은 다중 분류 모델일 수 있으며, 제2 신경망 모델의 클래스의 개수는 작업 완료된 복수의 소스코드에서 인식된 함수명 종류의 개수와 대응될 수 있으나 이에 한정되는 것은 아니다.The second neural network model of the present invention may be a multi-classification model, and the number of classes of the second neural network model may correspond to the number of function name types recognized in a plurality of completed source codes, but is not limited thereto.

이하, 서버(100)가 제2 신경망 모델을 이용하여 제2 후보 명칭을 결정하는 방법은 도 6의 단계(S121)를 참조하여 설명한 방법과 동일 할 수 있으며, 중복되는 설명은 생략한다. 그리고, 서버(100)가 제2 신경망 모델을 사전에 학습시키는 방법에 대한 설명은 도 8을 참조하여 후술한다.Hereinafter, the method by which the server 100 determines the second candidate name using the second neural network model may be the same as the method described with reference to step S121 of FIG. 6, and overlapping descriptions will be omitted. A description of how the server 100 trains the second neural network model in advance will be described later with reference to FIG. 8.

한편, 서버(100)는 제2 후보 명칭을 획득한 경우, 제2 후보 명칭을 사용자 단말(200)로 제공하고, 사용자 단말(200)로부터 제2 후보 명칭 중 어느 하나의 명칭을 선택하는 선택 입력 또는 사용자 입력을 수신할 수 있다(S142). 그리고, 서버(100)는 선택 입력 또는 사용자 입력에 기초하여 적어도 하나의 함수 각각의 함수명을 결정할 수 있다(S143).Meanwhile, when the server 100 obtains the second candidate name, it provides the second candidate name to the user terminal 200 and provides a selection input for selecting one of the second candidate names from the user terminal 200. Alternatively, user input may be received (S142). Then, the server 100 may determine the function name of each at least one function based on the selection input or user input (S143).

구체적으로, 서버(100)는 함수 및 매개변수의 명칭을 자동으로 변경하는 서비스와 관련된 사용자 인터페이스를 통해 사용자 단말(200)로 제2 후보 명칭 중 어느 하나를 선택하는 리스트를 제공할 수 있다. 또한, 서버(100)는 제2 후보 명칭 중 적절한 명칭이 없을 경우 입력 가능한 입력창을 제공할 수 있다. 그리고, 서버(100)는 사용자 인터페이스를 통해 선택되거나 입력된 정보를 획득하여 적어도 하나의 매개변수 각각의 매개변수명을 결정할 수 있다.Specifically, the server 100 may provide a list for selecting one of the second candidate names to the user terminal 200 through a user interface related to a service that automatically changes the names of functions and parameters. Additionally, the server 100 may provide an input window where input is possible when there is no appropriate name among the second candidate names. Additionally, the server 100 may determine the parameter name of each of at least one parameter by obtaining information selected or input through the user interface.

다시 도 5를 참조하면, 서버(100)는 제2 소스코드에 포함된 적어도 하나의 함수 각각의 함수명을 결정한 경우, 함수명을 기초로 제2 소스코드를 추가로 수정하여 제3 소스코드를 생성할 수 있다(S150).Referring again to FIG. 5, when the server 100 determines the function name of each of at least one function included in the second source code, the server 100 generates the third source code by further modifying the second source code based on the function name. (S150).

구체적으로, 서버(100)는 특정 함수에 대응하는 함수명이 결정된 경우, 제2 소스코드에 포함된 특정 함수의 식별자를 탐색할 수 있다. 그리고, 서버(100)는 특정 함수의 식별자를 특정 함수에 대응하는 함수명으로 변경하여 제3 소스코드를 생성할 수 있다. 여기서, 제3 소스코드는 제2 신경망 모델의 재학습에 이용될 수 있다.Specifically, when the function name corresponding to a specific function is determined, the server 100 may search for the identifier of the specific function included in the second source code. Additionally, the server 100 may generate a third source code by changing the identifier of a specific function to a function name corresponding to the specific function. Here, the third source code can be used to retrain the second neural network model.

한편, 서버(100)가 생성한 제3 소스코드는 제1 소스코드를 제공한 사용자 단말(200)로 전송될 수 있다.Meanwhile, the third source code generated by the server 100 may be transmitted to the user terminal 200 that provided the first source code.

따라서, 본 발명의 서버(100)는 코딩 작업 중 높은 난이도가 요구되는 함수 및 매개변수에 대한 작명 작업을 자동적으로 처리하여 작업 효율을 높일 수 있다.Accordingly, the server 100 of the present invention can increase work efficiency by automatically processing naming tasks for functions and parameters that require high difficulty during coding work.

추가적인 실시예에서, 서버(100)는 하나의 프로젝트에 대해 복수의 작업자 각각이 작업한 소스코드를 통합하고, 특정 코딩 스타일 규약에 적합하도록 소스코드에 포함된 함수명 및 매개변수명을 변경할 수 있다.In an additional embodiment, the server 100 may integrate source code worked by each of a plurality of workers for one project and change function names and parameter names included in the source code to suit specific coding style conventions.

구체적으로, 서버(100)는 특정 프로젝트의 작업자인 제1 작업자 단말로부터 제1 작업물을 수신하고, 상기 특정 프로젝트의 작업자인 제2 작업자 단말로부터 제2 작업물을 수신할 수 있다. 여기서, 제1 작업물 및 제2 작업물 각각은 소스코드를 의미할 수 있다.Specifically, the server 100 may receive a first work from a first worker terminal that is a worker of a specific project, and may receive a second work from a second worker terminal that is a worker of the specific project. Here, each of the first work and the second work may mean source code.

서버(100)는 제1 작업물 및 제2 작업물을 수신한 경우, 제1 작업물에 포함된 적어도 하나의 매개변수를 인식하고, 제2 작업물에 포함된 적어도 하나의 매개변수를 인식할 수 있다. 그리고, 서버(100)는 제1 작업물 및 제2 작업물 각각에 포함된 매개변수를 비교하여, 상호 중복되지 않는 매개변수를 인식할 수 있다.When receiving the first work and the second work, the server 100 recognizes at least one parameter included in the first work and recognizes at least one parameter included in the second work. You can. Additionally, the server 100 may compare parameters included in each of the first work and the second work to recognize parameters that do not overlap with each other.

서버(100)는 매개변수명을 결정하기 위한 제1 신경망 모델에 상호 중복되지 않는 매개변수명과 관련된 정보를 입력하여, 제1 신경망 모델이 출력하는 매개변수명 클래스 별 스코어를 인식할 수 있다. 여기서, 상호 중복되지 않는 매개변수명과 관련된 정보는 상호 중복되지 않는 매개변수명을 포함하는 소스코드의 일부분일 수 있으나 이에 한정되는 것은 아니고, 매개변수명과 관련된 후보 명칭을 출력시키기 위한 다양한 입력 데이터를 포함할 수 있다.The server 100 may input information related to non-overlapping parameter names into a first neural network model for determining parameter names, and recognize scores for each parameter name class output by the first neural network model. Here, the information related to non-overlapping parameter names may be part of the source code including non-overlapping parameter names, but is not limited to this, and includes various input data for outputting candidate names related to the parameter names. can do.

그리고, 서버(100)는 상호 중복되지 않는 매개변수명 각각에 대한 클래스 스코어가 가장 높은 매개변수명을 임시 매개변수명으로 결정할 수 있다. 서버(100)는 임시 매개변수명을 결정한 경우, 제1 작업물 및 제2 작업물 각각에 포함된 상호 중복되지 않는 매개변수명의 명칭을 임시 매개변수명으로 변경할 수 있다.Additionally, the server 100 may determine the parameter name with the highest class score for each non-overlapping parameter name as the temporary parameter name. When the server 100 determines a temporary parameter name, the server 100 may change non-overlapping parameter names included in each of the first work and the second work to the temporary parameter name.

서버(100)는 제1 작업물 및 제2 작업물 각각에 포함된 상호 중복되지 않는 매개변수명을 임시 매개변수명으로 변경한 후, 상호 중복되지 않는 매개변수명이 존재하는지 여부를 다시 인식할 수 있다. 서버(100)는 상호 중복되는 임시 매개변수명은 제1 작업물 및 제2 작업물 각각의 매개변수명으로 확정할 수 있다.The server 100 may change non-overlapping parameter names included in each of the first work and the second work to temporary parameter names, and then recognize again whether non-overlapping parameter names exist. there is. The server 100 may determine overlapping temporary parameter names as parameter names for each of the first work and the second work.

한편, 서버(100)는 임기 매개변수명으로 변경한 후 상호 중복되지 않는 매개변수명이 존재한다고 인식한 경우, 특정 프로젝트와 관련된 제1 작업자 단말, 제2 작업자 단말 그리고, 다른 복수의 작업자 단말 각각으로 상호 중복되지 않는 매개변수명의 명칭을 결정하기 위한 사용자 입력을 요청할 수 있다. 그리고, 서버(100)는 특정 프로젝트와 관련된 제1 작업자 단말, 제2 작업자 단말 그리고, 다른 복수의 작업자 단말 각각으로부터 복수의 사용자 입력을 수신한 경우, 복수의 사용자 입력에 기초하여, 중복된 횟수가 가장 많은 명칭을 상호 중복되지 않는 매개변수명의 명칭으로 결정할 수 있다.Meanwhile, when the server 100 recognizes that non-overlapping parameter names exist after changing the term parameter name, it sends the first worker terminal, the second worker terminal, and a plurality of other worker terminals related to the specific project respectively. User input can be requested to determine non-overlapping parameter names. And, when the server 100 receives a plurality of user inputs from each of the first worker terminal, the second worker terminal, and a plurality of other worker terminals related to a specific project, the number of duplicates is calculated based on the plurality of user inputs. The most common names can be determined as parameter names that do not overlap each other.

또한, 서버(100)는 제1 작업물 및 제2 작업물을 수신한 경우, 제1 작업물에 포함된 적어도 하나의 함수를 인식하고, 제2 작업물에 포함된 적어도 하나의 함수를 인식할 수 있다. 그리고, 서버(100)는 제1 작업물 및 제2 작업물 각각에 포함된 함수를 비교하여, 상호 중복되지 않는 함수명을 인식할 수 있다.Additionally, when receiving the first work and the second work, the server 100 recognizes at least one function included in the first work and recognizes at least one function included in the second work. You can. Additionally, the server 100 may compare functions included in each of the first work and the second work to recognize function names that do not overlap with each other.

서버(100)는 함수명을 결정하기 위한 제2 신경망 모델에 상호 중복되지 않는 함수명과 관련된 정보를 입력하여, 제2 신경망 모델이 출력하는 함수명 클래스 별 스코어를 인식할 수 있다. 여기서, 상호 중복되지 않는 함수명과 관련된 정보는 상호 중복되지 않는 함수명을 포함하는 소스코드의 일부분일 수 있으나 이에 한정되는 것은 아니고, 함수명과 관련된 후보 명칭을 출력시키기 위한 다양한 입력 데이터를 포함할 수 있다.The server 100 may input information related to non-overlapping function names into the second neural network model for determining the function name, and recognize the score for each function name class output by the second neural network model. Here, the information related to the non-overlapping function names may be a part of the source code including the non-overlapping function names, but is not limited thereto and may include various input data for outputting candidate names related to the function names.

그리고, 서버(100)는 상호 중복되지 않는 함수명 각각에 대한 클래스 스코어가 가장 높은 함수명을 임시 함수명으로 결정할 수 있다. 서버(100)는 임시 함수명을 결정한 경우, 제1 작업물 및 제2 작업물 각각에 포함된 상호 중복되지 않는 함수명을 임시 함수명으로 변경할 수 있다.Additionally, the server 100 may determine the function name with the highest class score for each non-overlapping function name as the temporary function name. When the server 100 determines a temporary function name, the server 100 may change non-overlapping function names included in each of the first work and the second work to the temporary function name.

서버(100)는 제1 작업물 및 제2 작업물 각각에 포함된 상호 중복되지 않는 함수명을 임시 함수명으로 변경한 후, 상호 중복되지 않는 함수명이 존재하는지 여부를 다시 인식할 수 있다. 여기서, 서버(100)는 상호 중복되는 임시 함수명은 제1 작업물 및 제2 작업물 각각의 함수명으로 확정할 수 있다.The server 100 may change non-overlapping function names included in each of the first work and the second work to temporary function names, and then recognize again whether non-overlapping function names exist. Here, the server 100 may determine the overlapping temporary function names as the function names of each of the first work and the second work.

한편, 서버(100)는 임기 함수명으로 변경한 후 상호 중복되지 않는 함수명이 존재한다고 인식한 경우, 특정 프로젝트와 관련된 제1 작업자 단말, 제2 작업자 단말 그리고, 다른 복수의 작업자 단말 각각으로 상호 중복되지 않는 함수명의 명칭을 결정하기 위한 사용자 입력을 요청할 수 있다. 그리고, 서버(100)는 특정 프로젝트와 관련된 제1 작업자 단말, 제2 작업자 단말 그리고, 다른 복수의 작업자 단말 각각으로부터 복수의 사용자 입력을 수신한 경우, 복수의 사용자 입력에 기초하여, 중복된 횟수가 가장 많은 명칭을 상호 중복되지 않는 함수명의 명칭으로 결정할 수 있다.On the other hand, when the server 100 recognizes that there is a function name that does not overlap each other after changing the term function name, the first worker terminal, the second worker terminal, and the other plurality of worker terminals related to the specific project do not overlap each other. User input can be requested to determine the name of the function name. And, when the server 100 receives a plurality of user inputs from each of the first worker terminal, the second worker terminal, and a plurality of other worker terminals related to a specific project, the number of duplicates is calculated based on the plurality of user inputs. The most common names can be determined as non-overlapping function names.

서버(100)는 특정 코딩 스타일 규약에 적합하도록 함수명 및 매개변수명이 변경된 작업물을 제1 작업자 단말 및 제2 작업자 단말 각각으로 전송할 수 있다.The server 100 may transmit a work in which the function name and parameter name have been changed to suit a specific coding style protocol to each of the first worker terminal and the second worker terminal.

따라서, 본 발명의 서버(100)는 작업자가 일시적으로 정한 함수 또는 매개변수의 명칭이 고착되어 발생될 수 있는 유지보수의 어려움을 방지할 수 있다.Accordingly, the server 100 of the present invention can prevent difficulties in maintenance that may occur due to the name of a function or parameter temporarily determined by the operator being fixed.

도 8은 본 발명의 일 실시예에 따른 신경망 모델을 학습시키는 방법의 일례를 설명하기 위한 흐름도이다.Figure 8 is a flowchart illustrating an example of a method for learning a neural network model according to an embodiment of the present invention.

본 발명의 일 실시예에 따르면, 서버(100)는 매개변수명을 결정하기 위한 제1 신경망 모델 및 함수명을 결정하기 위한 제2 신경망 모델을 학습시킬 수 있다.According to an embodiment of the present invention, the server 100 may train a first neural network model for determining parameter names and a second neural network model for determining function names.

도 8을 참조하면, 서버(100)는 신경망 모델의 학습을 위해 특정 코드 컨벤션을 기초로 작업 완료된 복수의 소스코드를 획득할 수 있다(S210). 여기서, 코드 컨벤션은 작업자간 읽고, 관리하기 쉬운 코드를 작성하기 위한 코딩 스타일 규약을 의미할 수 있으며, 매개변수와 함수의 명칭을 정하는 것도 코딩 컨벤션에 포함될 수 있다. 예를 들어, 코드 컨벤션은 카멜 케이스, 파스칼 표기법, 헝가리안 표기법 및 스네이크 표기법을 포함할 수 있다.Referring to FIG. 8, the server 100 may obtain a plurality of completed source codes based on a specific code convention for learning a neural network model (S210). Here, a code convention may refer to a coding style convention for writing code that is easy for workers to read and manage, and naming parameters and functions may also be included in the coding convention. For example, code conventions may include camel case, Pascal notation, Hungarian notation, and snake notation.

즉, 서버(100)는 동일한 스타일 규약으로 작업 완료된 복수의 소스코드를 획득할 수 있다. 예를 들어, 서버(100)는 작업 완료된 복수의 코드, 라이브러리 등을 저장하고 있는 데이터베이스 서버로부터 작업 완료된 복수의 소스코드를 획득할 수 있다. 다른 예를 들어, 서버(100)는 오픈소스를 제공하는 외부 서버로부터 작업 완료된 복수의 소스코드를 획득할 수 있다.In other words, the server 100 can obtain a plurality of source codes that have been completed with the same style convention. For example, the server 100 may obtain a plurality of completed source codes from a database server that stores a plurality of completed codes, libraries, etc. For another example, the server 100 may obtain a plurality of completed source codes from an external server that provides open source.

서버(100)는 복수의 소스코드 각각에서 함수를 인식하고, 함수를 구성하는 매개변수를 인식할 수 있다(S220). 또한, 서버(100)는 함수의 구조 및 함수의 명칭을 인식하고, 함수의 구조에 함수의 명칭을 라벨링한 학습 데이터를 이용하여 제2 신경망 모델을 학습시킬 수 있다(S230). 또한, 서버(100)는 함수를 구성하는 매개변수의 자리 및 매개변수의 명칭을 인식하고, 함수를 구성하는 매개변수의 자리에 매개변수의 명칭을 라벨링한 학습 데이터를 이용하여 제1 신경망 모델을 학습시킬 수 있다(S240).The server 100 can recognize the function in each of the plurality of source codes and recognize the parameters constituting the function (S220). Additionally, the server 100 may recognize the structure of the function and the name of the function, and train the second neural network model using training data that labels the structure of the function with the name of the function (S230). In addition, the server 100 recognizes the positions and names of the parameters constituting the function, and creates a first neural network model using learning data that labels the names of the parameters in the positions of the parameters constituting the function. It can be learned (S240).

본 발명의 제1 신경망 모델은 매개변수명 클래스 별 예측 확률 결정 기능을 수행하는 다중 분류 모델일 수 있다. 여기서, 매개변수명 클래스의 개수는 작업 완료된 복수의 소스코드에서 인식된 매개변수명 종류의 개수와 대응될 수 있으나 이에 한정되는 것은 아니다.The first neural network model of the present invention may be a multi-classification model that performs a prediction probability determination function for each parameter name class. Here, the number of parameter name classes may correspond to the number of parameter name types recognized in a plurality of completed source codes, but is not limited to this.

또한, 제2 신경망 모델은 함수명 클래스 별 예측 확률 결정 기능을 수행하는 다중 분류 모델일 수 있다. 여기서, 함수명 클래스의 개수는 작업 완료된 복수의 소스코드에서 인식된 매개변수명 종류의 개수와 대응될 수 있으나 이에 한정되는 것은 아니다.Additionally, the second neural network model may be a multi-classification model that performs a function of determining prediction probability for each function name class. Here, the number of function name classes may correspond to the number of parameter name types recognized in a plurality of completed source codes, but is not limited to this.

본 발명의 제1 신경망 모델 및 제2 신경망 모델 각각은 CNN 또는 R-CNN(Region based CNN), C-RNN(Convolutional Recursive Neural Network), Fast R-CNN, Faster R-CNN, R-FCN(Region based Fully Convolutional Network), YOLO(You Only Look Once) 또는 SSD(Single Shot Multibox Detector)구조의 신경망을 포함할 수 있다.Each of the first neural network model and the second neural network model of the present invention is CNN or R-CNN (Region based CNN), C-RNN (Convolutional Recursive Neural Network), Fast R-CNN, Faster R-CNN, and R-FCN (Region based CNN). based Fully Convolutional Network), YOLO (You Only Look Once), or SSD (Single Shot Multibox Detector) structures.

이하, 제1 신경망 및 제2 신경망과 관련된 활성화 함수에 대한 설명은 도 9을 참조하여 후술한다.Hereinafter, activation functions related to the first neural network and the second neural network will be described with reference to FIG. 9.

도 9은 본 발명의 일 실시예와 관련된 하나 이상의 활성화 함수를 나타낸 개략도이다.Figure 9 is a schematic diagram showing one or more activation functions related to one embodiment of the present invention.

딥 뉴럴 네트워크(DNN: deep neural network, 심층신경망)는 입력레이어와 출력 레이어 외에 복수의 히든 레이어를 포함하는 신경망을 의미할 수 있다. 딥 뉴럴 네트워크를 이용하면 데이터의 잠재적인 구조(latent structures)를 파악할 수 있다. 즉, 사진, 글, 비디오, 음성, 음악의 잠재적인 구조(예를 들어, 어떤 물체가 사진에 있는지, 글의 내용과 감정이 무엇인지, 음성의 내용과 감정이 무엇인지 등)를 파악할 수 있다. 딥 뉴럴 네트워크는 컨볼루션 뉴럴 네트워크(CNN: convolutional neural network), 리커런트 뉴럴 네트워크(RNN: recurrent neural network), 오토 인코더(auto encoder), GAN(Generative Adversarial Networks), 제한 볼츠만 머신(RBM: restricted boltzmann machine), 심층 신뢰 네트워크(DBN: deep belief network), Q 네트워크, U 네트워크, 샴 네트워크 등을 포함할 수 있다. 전술한 딥 뉴럴 네트워크의 기재는 예시일 뿐이며 본 발명은 이에 제한되지 않는다.A deep neural network (DNN) may refer to a neural network that includes multiple hidden layers in addition to an input layer and an output layer. Deep neural networks allow you to identify latent structures in data. In other words, it is possible to identify the potential structure of a photo, text, video, voice, or music (e.g., what object is in the photo, what the content and emotion of the text are, what the content and emotion of the voice are, etc.) . Deep neural networks include convolutional neural networks (CNN), recurrent neural networks (RNN), auto encoders, generative adversarial networks (GAN), and restricted Boltzmann machines (RBM). machine), deep belief network (DBN), Q network, U network, Siamese network, etc. The description of the deep neural network described above is only an example and the present invention is not limited thereto.

뉴럴 네트워크는 교사 학습(supervised learning), 비교사 학습(unsupervised learning) 및 반교사학습(semi supervised learning) 중 적어도 하나의 방식으로 학습될 수 있다. 뉴럴 네트워크의 학습은 출력의 오류를 최소화하기 위한 것이다. 뉴럴 네트워크의 학습에서 반복적으로 학습 데이터를 뉴럴 네트워크에 입력시키고 학습 데이터에 대한 뉴럴 네트워크의 출력과 타겟의 에러를 계산하고, 에러를 줄이기 위한 방향으로 뉴럴 네트워크의 에러를 뉴럴 네트워크의 출력 레이어에서부터 입력 레이어 방향으로 역전파(backpropagation)하여 뉴럴 네트워크의 각 노드의 가중치를 업데이트 하는 과정이다. 교사 학습의 경우 각각의 학습 데이터에 정답이 라벨링 되어있는 학습 데이터를 사용하며(즉, 라벨링된 학습 데이터), 비교사 학습의 경우는 각각의 학습 데이터에 정답이 라벨링되어 있지 않을 수 있다. 즉, 예를 들어 데이터 분류에 관한 교사 학습의 경우의 학습 데이터는 학습 데이터 각각에 카테고리가 라벨링 된 데이터 일 수 있다. 라벨링된 학습 데이터가 뉴럴 네트워크에 입력되고, 뉴럴 네트워크의 출력(카테고리)과 학습 데이터의 라벨이 비교함으로써 오류(error)가 계산될 수 있다. 다른 예로, 데이터 분류에 관한 비교사 학습의 경우 입력인 학습 데이터가 뉴럴 네트워크 출력과 비교됨으로써 오류가 계산될 수 있다. 계산된 오류는 뉴럴 네트워크에서 역방향(즉, 출력 레이어에서 입력 레이어 방향)으로 역전파 되며, 역전파에 따라 뉴럴 네트워크의 각 레이어의 각 노드들의 연결 가중치가 업데이트 될 수 있다. 업데이트 되는 각 노드의 연결 가중치는 학습률(learning rate)에 따라 변화량이 결정될 수 있다. 입력 데이터에 대한 뉴럴 네트워크의 계산과 에러의 역전파는 학습 사이클(epoch)을 구성할 수 있다. 학습률은 뉴럴 네트워크의 학습 사이클의 반복 횟수에 따라 상이하게 적용될 수 있다. 예를 들어, 뉴럴 네트워크의 학습 초기에는 높은 학습률을 사용하여 뉴럴 네트워크가 빠르게 일정 수준의 성능을 확보하도록 하여 효율성을 높이고, 학습 후기에는 낮은 학습률을 사용하여 정확도를 높일 수 있다.A neural network can be trained in at least one of supervised learning, unsupervised learning, and semi-supervised learning. Learning of a neural network is intended to minimize errors in output. In neural network learning, learning data is repeatedly input into the neural network, the output of the neural network and the error of the target for the learning data are calculated, and the error of the neural network is transferred from the output layer of the neural network to the input layer in the direction of reducing the error. This is the process of updating the weight of each node in the neural network through backpropagation. In the case of teacher learning, learning data in which the correct answer is labeled in each learning data is used (i.e., labeled learning data), and in the case of non-teacher learning, the correct answer may not be labeled in each learning data. That is, for example, in the case of teacher learning regarding data classification, the learning data may be data in which each learning data is labeled with a category. Labeled training data is input to the neural network, and the error can be calculated by comparing the output (category) of the neural network and the label of the training data. As another example, in the case of non-teachable learning for data classification, the error can be calculated by comparing the input training data with the neural network output. The calculated error is backpropagated in the reverse direction (i.e., from the output layer to the input layer) in the neural network, and the connection weight of each node in each layer of the neural network can be updated according to backpropagation. The amount of change in the connection weight of each updated node may be determined according to the learning rate. The neural network's calculation of input data and backpropagation of errors can constitute a learning cycle (epoch). The learning rate may be applied differently depending on the number of repetitions of the learning cycle of the neural network. For example, in the early stages of neural network training, a high learning rate can be used to increase efficiency by allowing the neural network to quickly achieve a certain level of performance, and in the later stages of training, a low learning rate can be used to increase accuracy.

뉴럴 네트워크의 학습에서 일반적으로 학습 데이터는 실제 데이터(즉, 학습된 뉴럴 네트워크를 이용하여 처리하고자 하는 데이터)의 부분집합일 수 있으며, 따라서, 학습 데이터에 대한 오류는 감소하나 실제 데이터에 대해서는 오류가 증가하는 학습 사이클이 존재할 수 있다. 과적합(overfitting)은 이와 같이 학습 데이터에 과하게 학습하여 실제 데이터에 대한 오류가 증가하는 현상이다. 예를 들어, 노란색 고양이를 보여 고양이를 학습한 뉴럴 네트워크가 노란색 이외의 고양이를 보고는 고양이임을 인식하지 못하는 현상이 과적합의 일종일 수 있다. 과적합은 머신러닝 알고리즘의 오류를 증가시키는 원인으로 작용할 수 있다. 이러한 과적합을 막기 위하여 다양한 최적화 방법이 사용될 수 있다. 과적합을 막기 위해서는 학습 데이터를 증가시키거나, 레귤라이제이션(regularization), 학습의 과정에서 네트워크의 노드 일부를 생략하는 드롭아웃(dropout) 등의 방법이 적용될 수 있다.In the learning of neural networks, the training data can generally be a subset of real data (i.e., the data to be processed using the learned neural network), and thus the error for the training data is reduced, but the error for the real data is reduced. There may be an incremental learning cycle. Overfitting is a phenomenon in which errors in actual data increase due to excessive learning on training data. For example, a phenomenon in which a neural network that learned a cat by showing a yellow cat fails to recognize that it is a cat when it sees a non-yellow cat may be a type of overfitting. Overfitting can cause errors in machine learning algorithms to increase. To prevent such overfitting, various optimization methods can be used. To prevent overfitting, methods such as increasing the learning data, regularization, or dropout, which omits some of the network nodes during the learning process, can be applied.

본 명세서에 걸쳐, 활성화 함수, 연산 모델, 신경망, 네트워크 함수, 뉴럴 네트워크(neural network)는 동일한 의미로 사용될 수 있다. (이하에서는 신경망으로 통일하여 기술한다.) 데이터 구조는 신경망을 포함할 수 있다. 그리고 신경망을 포함한 데이터 구조는 컴퓨터 판독가능 매체에 저장될 수 있다. 신경망을 포함한 데이터 구조는 또한 신경망에 입력되는 데이터, 신경망의 가중치, 신경망의 하이퍼 파라미터, 신경망으로부터 획득한 데이터, 신경망의 각 노드 또는 레이어와 연관된 활성 함수, 신경망의 학습을 위한 손실 함수를 포함할 수 있다. 신경망을 포함한 데이터 구조는 상기 개시된 구성들 중 임의의 구성 요소들을 포함할 수 있다. 즉 신경망을 포함한 데이터 구조는 신경망에 입력되는 데이터, 신경망의 가중치, 신경망의 하이퍼 파라미터, 신경망으로부터 획득한 데이터, 신경망의 각 노드 또는 레이어와 연관된 활성 함수, 신경망의 트레이닝을 위한 손실 함수 등 전부 또는 이들의 임의의 조합을 포함하여 구성될 수 있다. 전술한 구성들 이외에도, 신경망을 포함한 데이터 구조는 신경망의 특성을 결정하는 임의의 다른 정보를 포함할 수 있다. 또한, 데이터 구조는 신경망의 연산 과정에 사용되거나 발생되는 모든 형태의 데이터를 포함할 수 있으며 전술한 사항에 제한되는 것은 아니다. 컴퓨터 판독가능 매체는 컴퓨터 판독가능 기록 매체 및/또는 컴퓨터 판독가능 전송 매체를 포함할 수 있다. 신경망은 일반적으로 노드라 지칭될 수 있는 상호 연결된 계산 단위들의 집합으로 구성될 수 있다. 이러한 노드들은 뉴런(neuron)들로 지칭될 수도 있다. 신경망은 적어도 하나 이상의 노드들을 포함하여 구성된다.Throughout this specification, activation function, computational model, neural network, network function, and neural network may be used interchangeably. (Hereinafter, it is described collectively as a neural network.) The data structure may include a neural network. And the data structure including the neural network may be stored in a computer-readable medium. Data structures including neural networks may also include data input to the neural network, weights of the neural network, hyperparameters of the neural network, data obtained from the neural network, activation functions associated with each node or layer of the neural network, and loss functions for learning the neural network. there is. A data structure containing a neural network may include any of the components disclosed above. In other words, the data structure including the neural network includes all or all of the data input to the neural network, the weights of the neural network, the hyperparameters of the neural network, the data acquired from the neural network, the activation function associated with each node or layer of the neural network, and the loss function for training the neural network. It may be configured to include any combination of. In addition to the configurations described above, a data structure containing a neural network may include any other information that determines the characteristics of the neural network. Additionally, the data structure may include all types of data used or generated in the computational process of a neural network and is not limited to the above. Computer-readable media may include computer-readable recording media and/or computer-readable transmission media. A neural network can generally consist of a set of interconnected computational units, which can be referred to as nodes. These nodes may also be referred to as neurons. A neural network consists of at least one node.

데이터 구조는 신경망에 입력되는 데이터를 포함할 수 있다. 신경망에 입력되는 데이터를 포함하는 데이터 구조는 컴퓨터 판독가능 매체에 저장될 수 있다. 신경망에 입력되는 데이터는 신경망 학습 과정에서 입력되는 학습 데이터 및/또는 학습이 완료된 신경망에 입력되는 입력 데이터를 포함할 수 있다. 신경망에 입력되는 데이터는 전처리(pre-processing)를 거친 데이터 및/또는 전처리 대상이 되는 데이터를 포함할 수 있다. 전처리는 데이터를 신경망에 입력시키기 위한 데이터 처리 과정을 포함할 수 있다. 따라서 데이터 구조는 전처리 대상이 되는 데이터 및 전처리로 발생되는 데이터를 포함할 수 있다. 전술한 데이터 구조는 예시일 뿐 본 발명은 이에 제한되지 않는다.The data structure may include data input to the neural network. A data structure containing data input to a neural network may be stored in a computer-readable medium. Data input to the neural network may include learning data input during the neural network learning process and/or input data input to the neural network on which training has been completed. Data input to the neural network may include data that has undergone pre-processing and/or data subject to pre-processing. Preprocessing may include a data processing process to input data into a neural network. Therefore, the data structure may include data subject to preprocessing and data generated by preprocessing. The above-described data structure is only an example and the present invention is not limited thereto.

데이터 구조는 신경망의 가중치를 포함할 수 있다. (본 명세서에서 가중치, 파라미터는 동일한 의미로 사용될 수 있다.) 그리고 신경망의 가중치를 포함한 데이터 구조는 컴퓨터 판독가능 매체에 저장될 수 있다. 신경망은 복수개의 가중치를 포함할 수 있다. 가중치는 가변적일 수 있으며, 신경망이 원하는 기능을 수행하기 위해, 사용자 또는 알고리즘에 의해 가변 될 수 있다. 예를 들어, 하나의 출력 노드에 하나 이상의 입력 노드가 각각의 링크에 의해 상호 연결된 경우, 출력 노드는 상기 출력 노드와 연결된 입력 노드들에 입력된 값들 및 각각의 입력 노드들에 대응하는 링크에 설정된 파라미터에 기초하여 출력 노드 값을 결정할 수 있다. 전술한 데이터 구조는 예시일 뿐 본 발명은 이에 제한되지 않는다.The data structure may include the weights of the neural network. (In this specification, weights and parameters may be used with the same meaning.) And the data structure including the weights of the neural network may be stored in a computer-readable medium. A neural network may include multiple weights. Weights may be variable and may be varied by the user or algorithm in order for the neural network to perform the desired function. For example, when one or more input nodes are connected to one output node by respective links, the output node is set to the values input to the input nodes connected to the output node and the links corresponding to each input node. The output node value can be determined based on the parameters. The above-described data structure is only an example and the present invention is not limited thereto.

제한이 아닌 예로서, 가중치는 신경망 학습 과정에서 가변되는 가중치 및/또는 신경망 학습이 완료된 가중치를 포함할 수 있다. 신경망 학습 과정에서 가변되는 가중치는 학습 사이클이 시작되는 시점의 가중치 및/또는 학습 사이클 동안 가변되는 가중치를 포함할 수 있다. 신경망 학습이 완료된 가중치는 학습 사이클이 완료된 가중치를 포함할 수 있다. 따라서 신경망의 가중치를 포함한 데이터 구조는 신경망 학습 과정에서 가변되는 가중치 및/또는 신경망 학습이 완료된 가중치를 포함한 데이터 구조를 포함할 수 있다. 그러므로 상술한 가중치 및/또는 각 가중치의 조합은 신경망의 가중치를 포함한 데이터 구조에 포함되는 것으로 한다. 전술한 데이터 구조는 예시일 뿐 본 발명은 이에 제한되지 않는다.As an example and not a limitation, the weights may include weights that are changed during the neural network learning process and/or weights for which neural network learning has been completed. Weights that change during the neural network learning process may include weights that change at the start of the learning cycle and/or weights that change during the learning cycle. Weights for which neural network training has been completed may include weights for which a learning cycle has been completed. Therefore, the data structure including the weights of the neural network may include weights that are changed during the neural network learning process and/or the data structure including the weights for which neural network learning has been completed. Therefore, the above-mentioned weights and/or combinations of each weight are included in the data structure including the weights of the neural network. The above-described data structure is only an example and the present invention is not limited thereto.

신경망의 가중치를 포함한 데이터 구조는 직렬화(serialization) 과정을 거친 후 컴퓨터 판독가능 저장 매체(예를 들어, 메모리, 하드 디스크)에 저장될 수 있다. 직렬화는 데이터 구조를 동일하거나 다른 컴퓨팅 장치에 저장하고 나중에 다시 재구성하여 사용할 수 있는 형태로 변환하는 과정일 수 있다. 컴퓨팅 장치는 데이터 구조를 직렬화하여 네트워크를 통해 데이터를 송수신할 수 있다. 직렬화된 신경망의 가중치를 포함한 데이터 구조는 역직렬화(deserialization)를 통해 동일한 컴퓨팅 장치 또는 다른 컴퓨팅 장치에서 재구성될 수 있다. 신경망의 가중치를 포함한 데이터 구조는 직렬화에 한정되는 것은 아니다. 나아가 신경망의 가중치를 포함한 데이터 구조는 컴퓨팅 장치의 자원을 최소한으로 사용하면서 연산의 효율을 높이기 위한 데이터 구조(예를 들어, 비선형 데이터 구조에서 B-Tree, Trie, m-way search tree, AVL tree, Red-Black Tree)를 포함할 수 있다. 전술한 사항은 예시일 뿐 본 발명은 이에 제한되지 않는다.The data structure including the weights of the neural network may be stored in a computer-readable storage medium (e.g., memory, hard disk) after going through a serialization process. Serialization can be the process of converting a data structure into a form that can be stored on the same or a different computing device and later reorganized and used. Computing devices can transmit and receive data over a network by serializing data structures. Data structures containing the weights of a serialized neural network can be reconstructed on the same computing device or on a different computing device through deserialization. The data structure including the weights of the neural network is not limited to serialization. Furthermore, the data structure including the weights of the neural network is a data structure to increase computational efficiency while minimizing the use of computing device resources (e.g., in non-linear data structures, B-Tree, Trie, m-way search tree, AVL tree, Red-Black Tree) may be included. The foregoing is only an example and the present invention is not limited thereto.

데이터 구조는 신경망의 하이퍼 파라미터(Hyper-parameter)를 포함할 수 있다. 그리고 신경망의 하이퍼 파라미터를 포함한 데이터 구조는 컴퓨터 판독가능 매체에 저장될 수 있다. 하이퍼 파라미터는 사용자에 의해 가변되는 변수일 수 있다. 하이퍼 파라미터는 예를 들어, 학습률(learning rate), 비용 함수(cost function), 학습 사이클 반복 횟수, 가중치 초기화(Weight initialization)(예를 들어, 가중치 초기화 대상이 되는 가중치 값의 범위 설정), Hidden Unit 개수(예를 들어, 히든 레이어의 개수, 히든 레이어의 노드 수)를 포함할 수 있다. 전술한 데이터 구조는 예시일 뿐 본 발명은 이에 제한되지 않는다.The data structure may include hyper-parameters of a neural network. And the data structure including the hyperparameters of the neural network can be stored in a computer-readable medium. A hyperparameter may be a variable that can be changed by the user. Hyperparameters include, for example, learning rate, cost function, number of learning cycle repetitions, weight initialization (e.g., setting the range of weight values subject to weight initialization), Hidden Unit. It may include a number (e.g., number of hidden layers, number of nodes in hidden layers). The above-described data structure is only an example and the present invention is not limited thereto.

이상, 첨부된 도면을 참조로 하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며, 제한적이 아닌 것으로 이해해야만 한다.Above, embodiments of the present invention have been described with reference to the attached drawings, but those skilled in the art will understand that the present invention can be implemented in other specific forms without changing its technical idea or essential features. You will be able to understand it. Therefore, the embodiments described above should be understood in all respects as illustrative and not restrictive.

Claims (8)

서버의 프로세서에 의해 수행되는 방법에 있어서,
사용자 단말에서 입력되는 정의되지 않은 적어도 하나의 식별자를 포함하는 제1 소스코드를 실시간으로 인식하는 단계;
기능-이름 일치점수 산출모델에 상기 제1 소스코드를 입력하여, 상기 정의되지 않은 적어도 하나의 식별자와 관련된 추천 매개변수명 및 추천 변수명을 상기 사용자 단말로 제공하는 단계;
상기 추천 매개변수명 및 상기 추천 변수명 중 어느 하나를 선택하는 제1 선택 입력을 상기 사용자 단말로부터 수신하고, 상기 제1 선택 입력을 기초로 상기 적어도 하나의 식별자가 정의된 제2 소스코드를 생성하는 단계;
상기 기능-이름 일치점수 산출모델에 상기 제2 소스코드를 입력하여, 상기 적어도 하나의 식별자와 관련된 추천 함수명을 상기 사용자 단말로 제공하는 단계; 및
상기 추천 함수명 중 어느 하나를 선택하는 제2 선택 입력을 상기 사용자 단말로부터 수신하고, 상기 제2 선택 입력을 기초로 상기 적어도 하나의 식별자 및 상기 적어도 하나의 식별자와 관련된 함수명이 정의된 제3 소스코드를 생성하는 단계;
를 포함하고,
상기 기능-이름 일치점수 산출모델은,
상기 제1 선택 입력 및 상기 제2 선택 입력 중 적어도 하나에 기초하여 재학습되는,
함수 및 매개변수의 명칭을 자동으로 변경하는 방법.
In a method performed by a processor of a server,
Recognizing in real time a first source code including at least one undefined identifier input from a user terminal;
Inputting the first source code into a function-name matching score calculation model and providing recommended parameter names and recommended variable names related to the at least one undefined identifier to the user terminal;
Receive a first selection input for selecting one of the recommended parameter name and the recommended variable name from the user terminal, and generate a second source code in which the at least one identifier is defined based on the first selection input. steps;
Inputting the second source code into the function-name matching score calculation model and providing a recommended function name related to the at least one identifier to the user terminal; and
A third source code that receives a second selection input for selecting one of the recommended function names from the user terminal, and defines the at least one identifier and a function name related to the at least one identifier based on the second selection input. generating a;
Including,
The function-name matching score calculation model is,
Re-learned based on at least one of the first selection input and the second selection input,
How to automatically change the names of functions and parameters.
제1 항에 있어서,
상기 기능-이름 일치점수 산출모델은,
입력된 코드의 기능을 이해하기 위해 상기 입력된 코드의 문맥과 흐름을 분석하는 문맥 기반 동적 코드 분석(Context-based Dynamic Code Analysis) 기법을 기초로, 코드의 기능 및 상기 기능에 대응하는 의미를 포함하는 식별자를 라벨링한 학습 데이터를 이용하여 학습되는,
함수 및 매개변수의 명칭을 자동으로 변경하는 방법.
According to claim 1,
The function-name matching score calculation model is,
Based on the context-based Dynamic Code Analysis technique that analyzes the context and flow of the input code to understand the function of the input code, it includes the function of the code and the meaning corresponding to the function. Learned using training data labeled with an identifier,
How to automatically change the names of functions and parameters.
제1 항에 있어서,
상기 기능-이름 일치점수 산출모델은,
기능-이름 일치점수를 출력하고,
상기 기능-이름 일치점수는,
상기 기능-이름 일치점수 산출모델이 입력된 코드에서 식별자를 제외하고 기능만 존재하는 코드로 변환하여 분석함에 따라, 기능 및 상기 기능에 대응하는 의미를 포함하는 식별자와 함께 산출하는 숫자 값인,
함수 및 매개변수의 명칭을 자동으로 변경하는 방법.
According to claim 1,
The function-name matching score calculation model is,
Prints the function-name matching score,
The function-name matching score is,
As the function-name match score calculation model converts and analyzes the input code into a code that has only the function excluding the identifier, a numeric value is calculated along with the function and an identifier containing the meaning corresponding to the function,
How to automatically change the names of functions and parameters.
제3 항에 있어서,
상기 기능-이름 일치점수 산출모델에 상기 제1 소스코드를 입력하여, 상기 정의되지 않은 적어도 하나의 식별자와 관련된 추천 매개변수명 및 추천 변수명을 상기 사용자 단말로 제공하는 단계는,
상기 추천 매개변수명 및 상기 추천 변수명 각각에 대응하는 상기 기능-이름 일치점수를 제공하는 단계; 및
상기 정의되지 않은 적어도 하나의 식별자 각각에 대해 현재까지 선택된 상기 추천 매개변수명 및 상기 추천 변수명 각각의 선택 횟수를 제공하는 단계;
를 포함하고,
상기 제1 선택 입력을 기초로, 상기 선택 횟수가 업데이트되는,
함수 및 매개변수의 명칭을 자동으로 변경하는 방법.
According to clause 3,
Inputting the first source code into the function-name matching score calculation model to provide a recommended parameter name and a recommended variable name related to the at least one undefined identifier to the user terminal,
providing the function-name matching score corresponding to each of the recommended parameter name and the recommended variable name; and
providing a number of selection times for each of the recommended parameter name and the recommended variable name selected to date for each of the at least one undefined identifier;
Including,
Based on the first selection input, the number of selections is updated,
How to automatically change the names of functions and parameters.
제1 항에 있어서,
상기 방법은,
상기 기능-이름 일치점수 산출모델을 기초로 상기 제1 소스코드에 포함된 특정 함수에 반드시 존재해야 하는 변수 또는 매개변수가 존재하지 않는지 여부를 인식하는 단계; 및
상기 특정 함수에 반드시 존재해야 하는 상기 변수 또는 상기 매개변수가 존재하지 않는다고 인식한 경우, 누락된 변수 또는 누락된 매개변수에 대응하는 식별자를 추천하는 단계;
를 더 포함하는,
함수 및 매개변수의 명칭을 자동으로 변경하는 방법.
According to claim 1,
The above method is,
Recognizing whether a variable or parameter that must exist in a specific function included in the first source code does not exist based on the function-name matching score calculation model; and
When it is recognized that the variable or parameter that must exist in the specific function does not exist, recommending an identifier corresponding to the missing variable or missing parameter;
Containing more,
How to automatically change the names of functions and parameters.
제1 항에 있어서,
상기 방법은,
상기 추천 매개변수명 및 상기 추천 변수명 중 어느 하나를 선택하는 상기 제1 선택 입력이 수신되지 않고 수동 입력된 식별자가 수신된 경우, 상기 수동 입력된 식별자를 평가하는 단계; 및
상기 수동 입력된 식별자에 대응하는 코드의 기능 및 상기 수동 입력된 식별자를 라벨링하여, 상기 기능-이름 일치점수 산출모델을 재학습시키는 단계;
를 더 포함하는,
함수 및 매개변수의 명칭을 자동으로 변경하는 방법.
According to claim 1,
The above method is,
If the first selection input for selecting one of the recommended parameter name and the recommended variable name is not received and a manually input identifier is received, evaluating the manually input identifier; and
labeling the manually entered identifier and a function of a code corresponding to the manually entered identifier, and retraining the function-name matching score calculation model;
Containing more,
How to automatically change the names of functions and parameters.
하나 이상의 인스트럭션을 저장하는 메모리; 및
상기 메모리에 저장된 상기 하나 이상의 인스트럭션을 실행하는 프로세서를
포함하고,
상기 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써,
제1 항의 방법을 수행하는, 장치.
A memory that stores one or more instructions; and
A processor that executes the one or more instructions stored in the memory
Contains,
The processor executes the one or more instructions,
An apparatus for performing the method of claim 1.
하드웨어인 컴퓨터와 결합되어, 제1 항의 방법을 수행할 수 있도록 컴퓨터에서 독출 가능한 기록매체에 저장된 컴퓨터프로그램.
A computer program combined with a computer as hardware and stored on a computer-readable recording medium so as to perform the method of claim 1.
KR1020230071590A 2023-06-02 2023-06-02 Method, apparatus and program for automatically changing names of functions and parameters KR102613915B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230071590A KR102613915B1 (en) 2023-06-02 2023-06-02 Method, apparatus and program for automatically changing names of functions and parameters

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230071590A KR102613915B1 (en) 2023-06-02 2023-06-02 Method, apparatus and program for automatically changing names of functions and parameters

Publications (1)

Publication Number Publication Date
KR102613915B1 true KR102613915B1 (en) 2023-12-14

Family

ID=89166875

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230071590A KR102613915B1 (en) 2023-06-02 2023-06-02 Method, apparatus and program for automatically changing names of functions and parameters

Country Status (1)

Country Link
KR (1) KR102613915B1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018005535A (en) * 2016-06-30 2018-01-11 クラリオン株式会社 Software development assist method and system
KR20210156369A (en) * 2020-06-17 2021-12-27 주식회사 이스트웨이텍 How to change the application platform

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018005535A (en) * 2016-06-30 2018-01-11 クラリオン株式会社 Software development assist method and system
KR20210156369A (en) * 2020-06-17 2021-12-27 주식회사 이스트웨이텍 How to change the application platform

Similar Documents

Publication Publication Date Title
CN110807515B (en) Model generation method and device
US11694073B2 (en) Method and apparatus for generating fixed point neural network
US11544625B2 (en) Computing system for training, deploying, executing, and updating machine learning models
KR102455662B1 (en) Method for predicting chronic disease based on ecg signal
KR102313626B1 (en) Method for training neural network
US11269760B2 (en) Systems and methods for automated testing using artificial intelligence techniques
US11573771B2 (en) Predicting code editor
KR102367409B1 (en) Method, server and computer program for predicting it service failure using pre-learned failure prediction model
KR20200063041A (en) Method and apparatus for learning a neural network using unsupervised architecture variation and supervised selective error propagation
KR102362678B1 (en) Method for analyzing bio-signal
KR102613915B1 (en) Method, apparatus and program for automatically changing names of functions and parameters
KR102484694B1 (en) Method, apparatus and computer program for inspecting work quality of gig workers qa platform worker and calculating rewards
JP2022549407A (en) Methods and systems for identification and analysis of regime shifts
JP2020155010A (en) Neural network model compaction device
US11726775B2 (en) Source code issue assignment using machine learning
US20220164659A1 (en) Deep Learning Error Minimizing System for Real-Time Generation of Big Data Analysis Models for Mobile App Users and Controlling Method for the Same
KR20220114780A (en) Method for generating formalized research record data automatically by automated collection of experiment data
KR20220114779A (en) Method for artificial intelligence model learning using formalized research record data
KR102639655B1 (en) Method, apparatus and program for classifying patterns of wafer maps
US20230367303A1 (en) Automated intelligence facilitation of routing operations
US20230368085A1 (en) Automated intelligence facilitation of routing operations
KR102505411B1 (en) Method, apparatus and computer program for task assignment and monitoring for gig workers qa platform worker
US20230368086A1 (en) Automated intelligence facilitation of routing operations
US20240104429A1 (en) Model-Agnostic System for Automatic Investigation of the Impact of New Features on Performance of Machine Learning Models
KR102483916B1 (en) Method, apparatus and computer program for generating formalized research record data automatically for learning artificial intelligence

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant