KR101382078B1 - 개발자 동작에 기반한 문맥적인 코드 목록 추천 방법 및 이를 이용하는 코드 목록 추천 장치 - Google Patents

개발자 동작에 기반한 문맥적인 코드 목록 추천 방법 및 이를 이용하는 코드 목록 추천 장치 Download PDF

Info

Publication number
KR101382078B1
KR101382078B1 KR1020120083868A KR20120083868A KR101382078B1 KR 101382078 B1 KR101382078 B1 KR 101382078B1 KR 1020120083868 A KR1020120083868 A KR 1020120083868A KR 20120083868 A KR20120083868 A KR 20120083868A KR 101382078 B1 KR101382078 B1 KR 101382078B1
Authority
KR
South Korea
Prior art keywords
developer
code sequence
program
cluster
micro
Prior art date
Application number
KR1020120083868A
Other languages
English (en)
Other versions
KR20140016719A (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 KR1020120083868A priority Critical patent/KR101382078B1/ko
Publication of KR20140016719A publication Critical patent/KR20140016719A/ko
Application granted granted Critical
Publication of KR101382078B1 publication Critical patent/KR101382078B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/93Document management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/312List processing, e.g. LISP programming language
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 개발자의 과거 동작을 기반으로 개발자의 현재 동작을 분석하여, 개발자가 기 작성한 프로그램 요소 중에서 개발자가 현재 동작에서 참고할 수 있는 프로그램 요소들을 선택 및 추천할 수 있도록 하는 개발자 동작에 기반한 코드 목록 추천 방법 및 이를 이용하는 코드 목록 추천 장치에 관한 것으로,
상기 코드 목록 추천 방법은 개발자의 동작을 추적 및 분석하여 적어도 하나의 프로그램 요소를 획득한 후 클러스터링하여 적어도 하나의 클러스터링 그룹을 생성하는 클러스터링 단계; 및 상기 적어도 하나의 클러스터링 그룹에 기반하여 개발자의 현재 동작을 분석하여, 개발자가 현재 이용하고 있는 프로그램 요소 이후에 이용할 프로그램 요소들을 선별 및 추천하는 추천 단계를 포함할 수 있다.

Description

개발자 동작에 기반한 문맥적인 코드 목록 추천 방법 및 이를 이용하는 코드 목록 추천 장치{METHOD FOR CONTEXTUAL CODE COLLECTION RECOMMANATION ASSOCIATED WITH USER INTERATION AND PROGRAM CODING APPARATUS USING THE SAME}
본 발명은 개발자의 과거 동작을 기반으로 개발자의 현재 동작을 분석하여, 현재 동작에서 참고할 수 있는 프로그램 요소들을 선택 및 추천해 줄 수 있도록 하는 개발자 동작에 기반한 문맥적인 코드 목록 추천 방법 및 이를 이용하는 코드 목록 추천 장치에 관한 것이다.
프로그램 개발자들은 특정 프로그램의 유지 보수 작업을 수행할 때 프로그램 곳곳에 흩어져 있는 관련 코드 목록을 찾아내어 수정해야 하는 데, 이러한 검색 작업에 많은 시간이 소요된다.
그런데 개발자들은 이러한 수정 작업을 할 때에 반복적으로 유사한 작업을 수행하며 이를 위해 유사한 코드 목록을 네비게이션하는 경향이 있다. 하지만 현존하는 통합 개발 환경에서는 개발자의 반복적인 동작에 대한 자동 인식을 통해 코드 추천 동작을 지원하지 못하고 있다.
이에 본 발명에서는 개발자의 과거 동작을 기반으로 개발자의 현재 동작을 분석하여, 개발자가 기 작성한 프로그램 요소 중에서 개발자가 현재 동작에서 참고할 수 있는 프로그램 요소들을 선택 및 추천함으로써, 시스템 개발, 유지 보수에 소요되는 노력과 시간을 획기적으로 감소시켜 줄 수 있도록 하는 개발자 동작에 기반한 코드 목록 추천 방법 및 이를 이용하는 코드 목록 추천 장치를 제공하고자 한다.
상기 과제를 해결하기 위한 수단으로서, 본 발명의 일 실시 형태에 따르면, 개발자의 동작을 추적 및 분석하여 적어도 하나의 프로그램 요소를 획득한 후 클러스터링하여 적어도 하나의 클러스터링 그룹을 생성하는 클러스터링 단계; 및 상기 적어도 하나의 클러스터링 그룹에 기반하여 개발자의 현재 동작을 분석하여, 개발자가 현재 이용하고 있는 프로그램 요소 이후에 이용할 프로그램 요소들을 선별 및 추천하는 추천 단계를 포함하는 개발자 동작에 기반한 코드 목록 추천 방법을 제공한다.
상기 클러스터링 단계는 개발자의 동작을 추적하면서 프로그램 요소를 수집하고, 상기 획득한 프로그램 요소를 포함하는 코드 시퀀스를 생성하는 코드 시퀀스 생성 단계; 및 코드 시퀀스를 클러스터링하여 마이크로 클러스터를 생성하는 마이크로 클러스터 생성 단계를 포함할 수 있다.
상기 코드 시퀀스 생성 단계는 개발자에 의해 동작이 수행되면, 상기 동작에 의해 사용되는 프로그램 요소를 수집하는 단계; 상기 동작이 중단되면, 동작 대기 시간이 설정 시간을 경과하는 지 확인하는 단계; 및 상기 동작 대기 시간이 설정 시간을 경과하면, 현재까지 수집된 프로그램 요소들을 포함하는 코드 시퀀스를 생성하는 단계를 포함할 수 있다.
또한, 상기 코드 시퀀스 생성 단계는 개발자에 의해 동작을 수행되면, 코드 시퀀스를 생성하고 동작을 위해 사용되는 프로그램 요소를 수집하는 단계; 상기 수집된 프로그램 요소가 상기 코드 시퀀스에 포함되지 않으면, 상기 코드 시퀀스에 상기 수집된 프로그램 요소를 추가하는 단계; 및 상기 수집된 프로그램 요소가 상기 코드 시퀀스에 포함되면, 개발자가 동작 도중 상기 수집된 프로그램 요소를 재방문하였다고 판단한 후 상기 코드 시퀀스를 전달하고, 새로운 코드 시퀀스를 생성하고 상기 새로운 코드 시퀀스에 상기 수집된 프로그램 요소를 추가하는 단계를 포함할 수 있다.
상기 마이크로 클러스터 생성 단계는 상기 코드 시퀀스에 포함된 프로그램 요소를 기반으로 상기 코드 시퀀스가 속하게 될 마이크로 클러스터를 검색하는 단계; 상기 마이크로 클러스터가 검색되면, 상기 검색된 마이크로 클러스터에 상기 탐색 클러스터를 추가하는 단계; 및 상기 마이크로 클러스터가 검색되지 않으면, 새로운 마이크로 클러스터를 생성하고 상기 새로운 마이크로 클러스터에 상기 탐색 클러스터를 추가하는 단계를 포함할 수 있다.
상기 코드 시퀀스가 속하게 될 마이크로 클러스터를 검색하는 단계는 상기 코드 시퀀스에 포함된 프로그램 요소과 상기 마이크로 클러스터에 포함된 프로그램 요소를 서로 비교하여, 상기 코드 시퀀스에 포함된 프로그램 요소를 기 설정된 비율 이상 포함하는 마이크로 클러스터를 상기 코드 시퀀스가 속하게 될 마이크로 클러스터로 검색할 수 있다.
또한, 상기 코드 시퀀스가 속하게 될 마이크로 클러스터를 검색하는 단계는 상기 코드 시퀀스에 포함된 프로그램 요소와 상기 마이크로 클러스터에 포함된 프로그램 요소를 서로 비교하여, 상기 코드 시퀀스에 포함된 프로그램 요소를 기 설정된 비율 이상 포함하는 마이크로 클러스터를 상기 코드 시퀀스가 속하게 될 마이크로 클러스터로 검색할 수 있다.
상기 코드 시퀀스가 속하게 될 마이크로 클러스터를 검색하는 단계는 첫 번째 프로그램 요소와 마지막 프로그램 요소 중 하나를 기준으로, 상기 코드 시퀀스가 속하게 될 마이크로 클러스터를 검색할 수 있다.
더하여, 상기 방법은 상기 마이크로 클러스터를 클러스터링하여 매크로 클러스터를 생성하는 매크로 클러스터 생성 단계를 더 포함할 수 있다.
상기 매크로 클러스터 생성 단계는 마이크로 클러스터 쌍 각각에 대한 유사도를 계산하는 단계; 기 설정된 유사도 임계치보다 높은 유사도를 가지며, 중복되는 마이크로 클러스터를 포함하는 마이크로 클러스터 쌍을 유사도 순으로 정렬하는 단계; 및 상기 정렬 결과에 따라 마이크로 클러스터 쌍을 합쳐 매크로 클러스터를 생성하는 단계를 포함할 수 있다.
상기 마이크로 클러스터 쌍 각각에 대한 유사도를 계산하는 단계는 코사인 유사 통계를 이용하는 것을 특징으로 포함할 수 있다.
상기 추천 단계는 개발자의 현재 동작을 추척하여 프로그램 요소들을 수집하는 단계; 및 상기 수집된 프로그램 요소와 가장 유사도가 높은 프로그램 요소를 포함하는 마이크로 클러스터 또는 매크로 클러스터를 선택하고, 상기 클러스터에 포함된 프로그램 요소 중 가장 높은 사용 빈도수를 가지는 프로그램 요소를 개발자에게 추천하는 단계를 포함할 수 있다.
상기 프로그램 요소를 개발자에게 추천하는 단계는 TF-IDF(Term Frequency - Inverse Document Frequency) 알고리즘을 이용하는 것을 특징으로 포함할 수 있다.
상기 마이크로 클러스터는 적어도 하나의 프로그램 요소와, 프로그램 요소별 사용 빈도수에 대한 정보를 포함할 수 있다.
상기 매크로 클러스터는 적어도 하나의 프로그램 요소와, 프로그램 요소별 사용 빈도수에 대한 정보를 포함할 수 있다.
상기 과제를 해결하기 위한 수단으로서, 본 발명의 다른 실시 형태에 따르면, 개발자의 동작을 추적하면서 프로그램 요소를 수집하고, 상기 획득한 프로그램 요소를 포함하는 코드 시퀀스를 생성하는 수집부; 상기 코드 시퀀스를 클러스터링하여 마이크로 클러스터를 생성하는 마이크로 클러스터링부; 및 상기 클러스터링 결과를 기반으로 개발자의 현재 동작을 분석하여, 개발자가 현재 이용하고 있는 프로그램 요소 이후에 이용할 프로그램 요소들을 선별 및 추천하는 선별 및 추천하는 추천부를 포함하는 코드 목록 추천 장치를 제공한다.
상기 코드 목록 추천 장치는 상기 마이크로 클러스터링부의 클러스터링 결과를 다시 한번 클러스터링하는 매크로 클러스터링부를 더 포함할 수 있다.
그리고, 상기 코드 목록 추천 장치는 상기 마이크로 클러스터링부와 상기 매크로 클러스터링부 중 적어도 하나의 클러스터링 결과를 저장하는 데이터베이스부를 더 포함할 수 있다.
본 발명에서는 개발자의 반복적인 인터랙션 패턴을 기반으로 개발자의 현재 동작을 분석하여, 개발자의 현재 동작에 도움이 될 만한 프로그램 요소들의 모음인 코드 목록을 생성 및 추천해줌으로써, 개발자가 자신이 필요한 정보를 보다 손쉽고 신속하게 파악하고 접근할 수 있도록 한다. 그 결과, 프로그램 개발, 유지 보수에 소요되는 시간과 비용이 획기적으로 감소되는 효과가 발생한다.
도1은 본 발명의 일 실시예에 따른 개발자 동작에 기반한 코드 목록 추천 방법을 설명하기 위한 도면이다.
도2은 본 발명의 일 실시예에 따른 코드 시퀀스 생성 단계(S110)를 보다 상세히 설명하기 위한 도면이다.
도3은 본 발명의 다른 실시예에 따른 코드 시퀀스 생성 단계(S110)를 보다 상세히 설명하기 위한 도면이다.
도4는 본 발명의 일 실시예에 따른 마이크로 클러스터 생성 단계(S130)를 보다 상세히 설명하기 위한 도면이다.
도5는 본 발명의 다른 실시예에 따른 개발자 동작에 기반한 코드 목록 추천 방법을 설명하기 위한 도면이다.
도6은 본 발명의 다른 실시예에 따른 매크로 클러스터 생성 단계(S150)에 대해 보다 상세히 설명하기 위한 도면이다.
도7은 본 발명의 일 실시예에 따른 개발자 동작에 기반한 코드 목록 추천 방법이 적용된 코드 목록 추천 장치의 구성을 도시한 도면이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다.
도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
또한, 어떤 부분이 어떤 구성 요소를 "포함" 또는 "구비"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도1은 본 발명의 일 실시예에 따른 개발자 동작에 기반한 코드 목록 추천 방법을 설명하기 위한 도면이다.
본 발명의 코드 목록 추천 방법은 개발자의 동작을 추적하면서 서로 문맥적으로 연관되는 프로그램 요소들을 수집 및 분류한 후, 개발자가 새로운 동작을 수행하면, 수집 및 분류된 프로그램 요소들을 기반으로 개발자의 현재 동작에 도움을 줄 수 있는 코드 목록을 선택 및 추천하기 위한 것이다.
참고로, 본 발명에서의 동작은 개발자의 코드 조회 및 편집 내역을 의미하고, 프로그램 요소는 소스 파일, 클래스, 메소드, 필드, 혹은 함수, 프로시져 중 적어도 하나의 조합을 의미한다.
이에 도1에 도시된 바와 같이, 본 발명의 코드 목록 추천 방법은 개발자의 동작을 추적 및 분석하여 적어도 하나의 프로그램 요소를 획득한 후 클러스터링(clustering)하여 적어도 하나의 클러스터링 그룹을 생성하는 클러스터링 단계(S100)과, 개발자가 새로운 동작을 수행하면, 적어도 하나의 클러스터링 그룹에 기반하여 개발자가 향후 방문 또는 수정할 코드 목록을 예측하고 추천하는 추천 단계(S200)를 포함할 수 있다.
그리고 본 발명의 클러스터링 단계(S100)는 개발자의 동작을 추적하면서 프로그램 요소를 수집하고, 상기 획득한 프로그램 요소를 포함하는 코드 시퀀스를 생성하는 코드 시퀀스 생성 단계(S110)와, 코드 시퀀스 생성 단계(S110)를 통해 생성된 코드 시퀀스를 클러스터링하여 마이크로 클러스터를 생성하는 마이크로 클러스터 생성 단계(S130)를 포함할 수 있다.
더하여, 개발자의 동작은 다수회에 걸쳐 수행될 수 있는 데, 본 발명에서는 다수의 동작을 다양한 방법으로 구분하고, 이들 각각에 대한 코드 시퀀스를 생성하도록 한다. 예를 들어, 시간 기준이나 프로그램 요소 기준에 따라 다수의 동작을 추적 및 기록하고, 이들 각각에 대응되는 코드 시퀀스를 생성할 수 있다.
만약, 시간 기준으로 개발자의 동작을 추적 및 기록하는 경우, 코드 시퀀스 생성 단계(S110)에서는 개발자의 의해 새로운 동작이 수행되기 시작하면, 프로그램 요소를 수집하기 시작하되, 동작 대기 시간이 설정 시간을 경과하면 해당 동작에 대응되는 프로그램 요소를 수집을 종료하도록 한다.
반면, 프로그램 요소 기준으로 개발자 동작을 추적 및 기록하는 경우, 본 발명의 코드 시퀀스 생성 단계(S110)에서는 다수의 개발자 동작을 프로그램 요소의 재사용 여부를 기준으로 이들을 구분하도록 한다. 예를 들어, 코드 시퀀스 생성 단계(S110)에서 개발자에 의해 새로운 동작이 수행되기 시작하면, 해당 동작을 추적하면서 이와 관련된 프로그램 요소를 수집하기 시작하되, 이미 수집된 프로그램 요소가 다시 수집되면 새로운 동작이 수행되기 시작했다고 판단하고, 이전 동작이 아닌 새로운 동작에 대한 프로그램 요소 수집 동작을 수행하도록 한다. 즉, 개발자의 프로그램 요소 재사용 기록을 바탕으로 서로 상이한 동작을 구분하도록 한다.
코드 시퀀스 생성 단계(S110)를 통해 각각의 동작에 대응되는 코드 시퀀스가 생성 및 전달되면, 마이크로 클러스터 생성 단계(S130)에서는 각 코드 시퀀스에 포함된 프로그램 요소와 마이크로 클러스터에 포함된 프로그램 요소를 비교하여, 코드 시퀀스와 동일한 프로그램 요소를 가지는 마이크로 클러스터를 검색한다.
이때의 마이크로 클러스터는, 적어도 하나의 프로그램 요소와 프로그램 요소별 사용 빈도에 대한 정보를 포함할 수 있다(micro cluster MS = {(e1, n1), (e1, n1),…, (enms,nnms)}, e는 프로그램 요소, n은 프로그램 요소의 사용 빈도).
동일 마이크로 클러스터에 포함되는 프로그램 요소들(e1~enms)은 개발자가 서로 문맥적으로 연관되는(즉, 개발자가 연관성 및 연속성을 가지고 사용하는) 프로그램 요소들을 알려주며, 프로그램 요소의 사용 빈도(n1~ nnms)는 개발자가 유사한 동작을 수행하는 동안 개발자가 주로 사용하게 되는 프로그램 요소가 무엇인지를 알려주는 역할을 한다.
그리고 상기의 검색 결과, 코드 시퀀스와 동일한 프로그램 요소를 가지는 마이크로 클러스터가 검색되면, 마이크로 클러스터 생성 단계(S130)는 코드 시퀀스를 마이크로 클러스터에 추가하여 코드 시퀀스에 포함된 프로그램 요소에 따라 마이크로 클러스터에 포함된 프로그램 요소별 사용 빈도가 업데이트되도록 한다. 그러나, 코드 시퀀스와 동일한 프로그램 요소를 가지는 마이크로 클러스터가 검색되지 않으면, 새로운 마이크로 클러스터를 생성하고, 새로이 생성된 마이크로 클러스터에 코드 시퀀스에 포함된 프로그램 요소를 추가하도록 한다.
즉, 마이크로 클러스터 생성 단계(S130)에서는 서로 유사한 프로그램 요소를 가지는 코드 시퀀스들이 클러스터링되어 적어도 하나의 마이크로 클러스터가 생성되도록 한다.
추천 단계(S200)에서는 클러스터링 단계(S100)의 클러스터링 결과를 기반으로, 현재 조회 또는 편집 중인 프로그램 요소 이후에 연속하여 조회 또는 편집할 가능성이 높은 프로그램 요소들을 예측하고, 이를 기반으로 코드 목록을 생성하여 개발자에게 추천한다.
이를 위해, 개발자의 현재 동작을 분석하여, 개발자가 현재 조회 또는 편집하고 있는 프로그램 요소들을 수집한다. 그리고 TF-IDF(Term Frequency - Inverse Document Frequency) 알고리즘을 통해 수집된 프로그램 요소와 가장 유사도가 높은 프로그램 요소를 포함하는 마이크로 클러스터를 선택하고, 선택된 마이크로 클러스터에 포함된 프로그램 요소 중 높은 사용 빈도수를 가지는 프로그램 요소를 개발자에게 추천한다.
참고로, TF-IDF은 정보 검색과 텍스트 마이닝에서 이용하는 가중치로, 여러 문서로 이루어진 문서군이 있을 때 어떤 단어가 특정 문서 내에서 얼마나 중요한 것인지를 나타내는 통계적 수치로, 이는 문서의 핵심어를 추출하거나, 검색 엔진에서 검색 결과의 순위를 결정하거나, 문서들 사이의 비슷한 정도를 구하는 등의 용도로 활용될 수 있다. 이에 본 발명에서는 문서를 마이크로 클러스터로, 단어를 프로그램 요소로 활용하여, 개발자가 현재 수행하고 있는 동작에 연관되거나 개발자가 흥미를 가질 수 있는 프로그램 요소들을 선별하고 개발자에게 추천하도록 한다.
도2은 본 발명의 일 실시예에 따른 코드 시퀀스 생성 단계(S110)를 보다 상세히 설명하기 위한 도면으로, 이는 시간 기준으로 서로 상이한 동작을 구분하고, 이에 대한 코드 시퀀스(sequence)를 생성하는 경우에 관한 것이다.
도2에 도시된 바와 같이, 개발자가 새로운 인터랙션 동작을 수행하기 시작하면(S111), 개발자의 동작을 추적하여 개발자가 이용하는 프로그램 요소를 수집하기 시작한다(S112).
이러한 도중에 개발자가 해당 동작을 잠시 중단하여 동작 대기 상태가 되면(S113), 동작 대기 시간을 카운팅하여 동작 대기 시간이 설정 시간을 경과하는 지 확인한다(S114).
만약, 동작 대기 시간이 설정 시간을 경과하면, 개발자가 해당 동작을 더 이상 수행하지 않는다고 판단하고 프로그램 요소의 수집을 종료한다(S115). 즉, 본 발명에서는 개발자가 특정 시간 동안 수행하는 동작에 상응하는 프로그램 요소를 수집하도록 한다.
그리고 현재까지 수집된 프로그램 요소들을 포함하는 코드 시퀀스를 생성하여 마이크로 클러스터 생성 단계(S130)에 전달한다(S116).
도3은 본 발명의 다른 실시예에 따른 코드 시퀀스 생성 단계(S110)를 보다 상세히 설명하기 위한 도면으로, 이는 프로그램 요소를 기반으로 서로 상이한 개발자 동작을 구분하고, 이에 대한 코드 시퀀스를 생성하는 경우에 관한 것이다.
도3에 도시된 바와 같이, 개발자가 프로그램 코딩을 위한 새로운 동작을 수행하기 시작하면(S121), 새로운 코드 시퀀스를 생성하고, 개발자가 동작을 수행하는 동안 조회 또는 편집하는 프로그램 요소를 수집하기 시작한다(S122). 그리고 수집된 프로그램 요소가 기 생성된 코드 시퀀스에 포함되는 지를 확인한다(S123).
만약, 수집된 프로그램 요소가 기 생성된 코드 시퀀스에 포함되지 않으면, 동일한 개발자 동작(또는 동일한 코딩 루프)가 계속 수행되고 있다고 판단하고, 수집된 프로그램 요소를 기 생성된 코드 시퀀스에 추가한 후(S124), 수집된 프로그램 요소가 기 생성된 코드 시퀀스에 포함되는 지 확인하면서 코드 목록 수집을 계속한다(S125).
반면, 수집된 프로그램 요소가 기 생성된 코드 시퀀스에 포함되면, 하나의 동작이 종료되고 새로운 동작이 수행되기 시작했다고 판단하고, 기 생성된 코드 시퀀스는 마이크로 클러스터 생성 단계(S130)에 전달한다(S126). 그리고 새로운 코드 시퀀스를 생성하고, 단계 S123로 진입하여 새로운 코드 시퀀스에 수집된 프로그램 요소를 추가하도록 한다(S127).
즉, 이전에 사용된 프로그램 요소가 다시 사용되면, 이전에 수행되던 개발자 동작이 종료되었다고 판단하고, 새로운 동작에 대응되는 코드 시퀀스를 생성하기 시작한다. 예를 들어, a, b, c, a, b, d, b, d라는 프로그램 요소가 순차적으로 획득되면, "a"라는 프로그램 요소를 기준으로 (a, b, c)를 가지는 코드 시퀀스와 (a, b, d, b, d)를 가지는 코드 시퀀스 두 개가 생성될 수 있다.
참고로, 본 발명의 코드 시퀀스는 앞서 설명된 바와 같이 하나의 동작에 대응되는 프로그램 요소들의 시퀀스로, 개발자가 이미 사용했던 프로그램 요소를 다시 사용할 때 하나의 동작이 종료되고, 새로운 동작이 시작되는 특징을 가진다.
이에 본 발명에서는 개발자가 재사용하는 프로그램 요소를 분리점으로 활용하여 다수의 동작들을 구분하도록 한다. 이러한 경우, 개발자의 동작이 그래프로 표현된다고 가정한다면, 분리점은 서로 상이한 동작의 교차점이 되거나, 새로운 동작의 시작점으로 활용될 수 있다.
그 결과, 개발자가 재사용하는 프로그램 요소는 개발자의 이동 중심점이며, 개발자가 빈번히 사용하는 프로그램 요소가 될 가능성이 크므로, 본 발명에서는 개발자가 재사용하는 프로그램 요소를 코드 시퀀스의 첫번째 프로그램 요소로 구비하도록 한다.
또한, 필요한 경우, 개발자가 재사용하는 프로그램 요소를 분리점으로 활용하되, 해당 프로그램 요소를 코드 시퀀스의 마지막 프로그램 요소로 구비하도록 할 수도 있을 것이다.
도4는 본 발명의 일 실시예에 따른 마이크로 클러스터 생성 단계(S130)를 보다 상세히 설명하기 위한 도면이다.
먼저, 코드 시퀀스 생성 단계(S110)에서 제공한 코드 시퀀스에 포함된 프로그램 요소와 마이크로 클러스터에 포함된 프로그램 요소를 서로 비교하여, 상기 코드 시퀀스가 속하게 될 마이크로 클러스터를 검색한다(S131).
단계 S131에서, 코드 시퀀스가 시간 기준에 따라 생성된 경우에는, 코드 시퀀스에 포함된 프로그램 요소과 마이크로 클러스터에 포함된 프로그램 요소를 서로 비교하여, 상기 코드 시퀀스에 포함된 프로그램 요소를 기 설정된 비율 이상 포함하는 마이크로 클러스터를 상기 코드 시퀀스가 속하게 될 마이크로 클러스터로 검색하도록 한다.
반면, 코드 시퀀스가 프로그램 요소 기준에서 생성된 경우에는, 첫번째 프로그램 요소 또는 마지막 프로그램 요소만을 비교하여 코드 시퀀스가 속하게 될 마이크로 클러스터를 결정하도록 한다. 이는 프로그램 요소 기준의 경우, 첫번째 프로그램 요소 또는 마지막 프로그램 요소가 앞서 설명된 바와 같이 서로 상이한 동작의 분리점으로 사용되기 때문이다.
계속하여 단계 S131의 검색 결과, 코드 시퀀스 생성 단계(S110)에서 제공한 코드 시퀀스가 속하게 될 마이크로 클러스터가 검색되었으면(S132), 코드 시퀀스를 마이크로 클러스터에 추가하도록 한다(S133). 예를 들어, (a, b, c)의 프로그램 요소를 포함하는 코드 시퀀스가 {(a, 3), (b, 2), (c, 1), (d, 2)}로 구성되는 마이크로 클러스터에 추가되면, 마이크로 클러스터는 {(a, 4), (b, 3), (c, 2), (d, 2)}로 업데이트되고, {(a, 3), (c, 1), (d, 1)}로 구성되는 마이크로 클러스터에 추가되면, 마이크로 클러스터는 {(a,4), (b,1), (c,2), (d, 1)}로 업데이트될 수 있을 것이다.
반면, 단계 S131의 검색 결과, 해당 마이크로 클러스터가 검색되지 않으면(S113), 새로운 마이크로 클러스터를 생성하고(S114), 상기 새로운 마이크로 클러스터에 코드 시퀀스 생성 단계(S110)에서 제공한 코드 시퀀스를 추가하도록 한다(S115). 예를 들어, (a, b, c)의 프로그램 요소를 포함하는 코드 시퀀스에 대응되는 마이크로 클러스터에 생성되면, 마이크로 클러스터는 {(a, 1), (b, 1), (c, 1)}가 되고, (b, d)의 프로그램 요소를 포함하는 코드 시퀀스에 대응되는 마이크로 클러스터에 생성되면, 마이크로 클러스터는 {(b, 1), (d, 1)}가 될 것이다.
상기의 실시예에서는 코드 시퀀스를 클러스터링하여 마이크로 클러스터를 생성한 후, 이를 기반으로 개발자에게 제공할 추천 목록을 생성하도록 하였지만, 마이크로 클러스터의 수가 너무 많아지는 경우, 추천 목록 생성을 위한 검색 효율이 저하되는 문제가 있을 수 있다.
이에 본 발명에서는 마이크로 클러스터의 수가 너무 많아지는 경우, 도4와 같이 마이크로 클러스터를 다시 한번 클러스터링한 후 이를 기준으로 개발자에게 제공할 추천 목록을 생성하도록 함으로써, 증가되는 마이크로 클러스터의 수에 의해 검색 효율이 저하되는 되는 문제를 사전에 방지할 수 있도록 한다.
도5는 본 발명의 다른 실시예에 따른 개발자 동작에 기반한 코드 목록 추천 방법을 설명하기 위한 도면이다.
도5에 도시된 바와 같이, 본 발명의 다른 실시예에 따른 클러스터링 단계(S100)는 다시 개발자의 동작을 추적하여 다수의 프로그램 요소를 수집하고, 상기 수집된 프로그램 요소들을 포함하는 코드 시퀀스를 생성하는 코드 시퀀스 생성 단계(S110)와, 코드 시퀀스 생성 단계(S110)를 통해 생성된 코드 시퀀스를 유사도 기준으로 클러스터링하여 마이크로 클러스터를 생성하는 마이크로 클러스터 생성 단계(S130) 이외에 마이크로 클러스터를 코사인 유사 통계(cosine similarity metric)를 이용하여 다시 한번 클러스터링하여 매크로 클러스터를 생성하는 매크로 클러스터 생성 단계(S150)를 더 포함할 수 있다.
상기 매크로 클러스터 생성 단계(S150)에서는 두개의 마이크로 클러스터간 유사도를 "A ㆍ B / ||A|| ||B||, 이때 A는 제1 마이크로 클러스터의 벡터, B는 제2 마이크로 클러스터의 벡터"로 표현되는 코사인 유사 통계를 이용하여 계산하고, 계산된 코사인 유사도가 기 설정된 유사도 임계치보다 큰 경우에 한해 제1 및 제2 마이크로 클러스터는 서로 유사하다고 판단한다.
이하, 도6을 참고하여 매크로 클러스터 생성 단계(S150)에 대해 보다 상세히 살펴보도록 한다.
먼저, 다수의 마이크로 클러스터 중 하나의 마이크로 클러스터 쌍(즉, 두 개의 마이크로 클러스터)를 선택한 후(S151), 코사인 유사 통계를 이용하여 마이크로 클러스터 쌍의 유사도를 계산한다(S152).
만약, 단계 S151를 통해 선택된 마이크로 클러스터 쌍 이외에 다른 마이크로 클러스터 쌍이 존재하면(S153), 새로운 마이크로 클러스터 쌍을 선택한 후 다시 S152에 진입하여 해당 마이크로 클러스터 쌍의 유사도를 계산한다.
반면, 마이크로 클러스터 쌍 모두에 대한 유사도가 계산되었으면, 기 설정된 유사도 임계치보다 높은 유사도를 가지며, 중복되는 마이크로 클러스터를 포함하는 마이크로 클러스터 쌍을 유사도 순으로 정렬한 후(S154), 정렬 순서대로 마이크로 클러스터쌍 등을 서로 합쳐 매크로 클러스터를 생성한다(S155).
예를 들어, A:{(a, 2), (b, 2), (c, 1), (d, 1)}, B:{(b, 2), (d, 2)}, E:{(e, 2), (f, 2), (g, 1) (c, 1)}, F:(f, 2), (c, 1)} and C:{(c, 1), (a, 1), (b, 1) (x, 1)}의 마이크로 클러스터들이 존재하는 경우, 본 발명에서는 A와 C간, B와 A간, E와 F간, F와 E간, C와 A간 유사도를 계산한다. 그리고 기 설정된 유사도 임계치(예를 들어, 0.5)보다 높은 유사도를 가지며, 중복되는 마이크로 클러스터를 포함하는 마이크로 클러스터 쌍을 유사도 순으로 정렬하여 {(A, C)=0.79, (C, A)=0.79,(B,A)=0.67}와 {(E,F)=0.71, (F,E)=0.71}를 획득한다. 그리고 이들을 합쳐 두개의 매크로 클러스터 {A, C, B}={(b, 5), (a, 3), (d, 3), (c, 2), (x, 1)}, {E, F} = {(e, 2), (f, 4), (c, 2), (g, 1)}를 생성한다.
그러면, 추천 단계(S200)에서는 다수의 마이크로 클러스터가 아닌 하나의 매크로 클러스터만을 이용하여 개발자의 현재 동작에 도움이 되는 코드 목록을 획득할 수 있어, 추천 단계(S200)의 동작 효율이 향상되게 된다.
또한, 상기의 실시예에서는 마이크로 클러스터 단계를 기본적으로 수행하도록 하고, 매크로 클러스터 단계를 선택적으로 수행하도록 하였으나, 필요한 경우 매크로 클러스터 단계를 기본적으로 매크로 클러스터 단계를 선택적으로 수행하도록 할 수 도 있을 것이다.
도7은 본 발명의 일 실시예에 따른 개발자 동작에 기반한 코드 목록 추천 방법이 적용된 코드 목록 추천 장치의 구성을 도시한 도면이다.
도7에 도시된 바와 같이, 본 발명의 코드 목록 추천 장치는 기존의 메인 제어부(100)와 사용자 인터페이스부(200) 이외에 개발자의 인터랙션 패턴에 기반하여 현재 동작을 분석하여, 개발자가 향후 방문 또는 수정할 코드 목록을 예측하고 추천하는 코드 목록 추천 제어부(300)를 더 포함할 수 있다.
상기 코드 목록 추천 제어부(300)는 다시 개발자의 동작을 추적하면서 개발자에 의해 조회 또는 편집되는 프로그램 요소를 수집하고, 상기 획득한 프로그램 요소를 포함하는 코드 시퀀스를 생성하는 수집부(310), 수집부(310)를 통해 생성된 코드 시퀀스를 유사도 기준으로 클러스터링하여 마이크로 클러스터를 생성하는 마이크로 클러스터링부(320), 마이크로 클러스터를 코사인 유사 통계(cosine similarity metric)를 이용하여 다시 한번 클러스터링하여 매크로 클러스터를 생성하는 매크로 클러스터링부(330), 마이크로 클러스터링부(320) 및 매크로 클러스터링부(330)의 클러스터링 결과를 저장하는 DB(DataBase)(340), DB(340)에 저장된 클러스터링 결과(만약, 매크로 클러스터가 저장된 경우에는 매크로 클러스터, 그렇지 않은 경우에는 마이크로 클러스터)에 기반하여 개발자의 현재 동작을 분석하여 개발자가 현재 조회 또는 편집하는 프로그램 요소 이후에 이용할 가능성이 높은 프로그램 요소들을 예측 및 추천하는 추천부(350)를 포함하여 구성된다.
그러면, 메인 제어부(100)는 개발자에 의해 동작이 수행되면, 사용자 인터페이스부(200)를 통해 프로그램 코딩 화면 상에 코드 목록 추천 창을 띄워, 개발자가 현재 동작에 관련된 프로그램 요소들이 무엇이 있는 지 확인하고, 필요한 경우, 특정 프로그램 요소를 선택함으로써 해당 프로그램 요소가 작성된 페이지가 이동할 수 있도록 한다.
이와 같이, 본 발명에서는 개발자가 과거 자신이 수행한 작업에 대해 유사한 작업을 수행할 경우, 이에 대한 코드 목록을 자동 추천받을 수 있도록 한다. 또한, 새로운 개발자가 참여하는 경우에는, 기존의 개발자들이 작성한 코드 목록을 추천받아 코딩의 흐름을 이해하는 데 도움을 받을 수 있도록 하고, 두 명 이상의 개발자가 같은 기능을 수정할 때에 타인의 코드 목록을 참조할 수 있어, 커뮤니케이션을 효율을 높이며 공동 작업을 수행할 수 있도록 한다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명이 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이와 균등하거나 또는 등가적인 변형 모두는 본 발명 사상의 범주에 속한다 할 것이다.
또한, 본 발명에 따른 개발자 동작에 기반한 코드 목록 추천 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 기록매체의 예로는 ROM, RAM, CD ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치, 하드 디스크, 플래시 드라이브 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.

Claims (18)

  1. 개발자의 동작을 추적하여 프로그램 요소를 수집한 후 클러스터링하여 적어도 하나의 클러스터링 그룹을 생성하는 클러스터링 단계; 및
    상기 적어도 하나의 클러스터링 그룹에 기반하여 개발자의 현재 동작을 분석하여, 개발자가 현재 동작에 관련된 프로그램 요소들을 선별 및 추천하는 추천 단계를 포함하며,
    상기 클러스터링 단계는
    개발자의 동작을 추적하면서 프로그램 요소를 수집하고, 상기 프로그램 요소를 포함하는 코드 시퀀스를 생성하는 코드 시퀀스 생성 단계; 및
    코드 시퀀스를 클러스터링하여 문맥적인 코드 생성하는 클러스터 생성 단계를 포함하는 개발자 동작에 기반한 코드 목록 추천 방법.
  2. 삭제
  3. 제1항에 있어서, 상기 코드 시퀀스 생성 단계는
    개발자에 의해 동작이 수행되면, 상기 동작에 의해 사용되는 프로그램 요소를 수집하는 단계;
    상기 동작이 중단되면, 동작 대기 시간이 설정 시간을 경과하는 지 확인하는 단계; 및
    상기 동작 대기 시간이 설정 시간을 경과하면, 현재까지 수집된 프로그램 요소들을 포함하는 코드 시퀀스를 생성하는 단계를 포함하는 개발자 동작에 기반한 코드 목록 추천 방법.
  4. 제1항에 있어서, 상기 코드 시퀀스 생성 단계는
    개발자에 의해 동작을 수행되면, 코드 시퀀스를 생성하고 동작을 위해 사용되는 프로그램 요소를 수집하는 단계;
    상기 수집된 프로그램 요소가 상기 코드 시퀀스에 포함되지 않으면, 상기 코드 시퀀스에 상기 수집된 프로그램 요소를 추가하는 단계; 및
    상기 수집된 프로그램 요소가 상기 코드 시퀀스에 포함되면, 개발자가 동작 도중 상기 수집된 프로그램 요소를 재방문하였다고 판단한 후 상기 코드 시퀀스를 전달하고, 새로운 코드 시퀀스를 생성하고 상기 새로운 코드 시퀀스에 상기 수집된 프로그램 요소를 추가하는 단계를 포함하는 개발자 동작에 기반한 코드 목록 추천 방법.
  5. 제1항에 있어서, 상기 클러스터 생성 단계는
    상기 코드 시퀀스에 포함된 프로그램 요소를 기반으로 상기 코드 시퀀스가 속하게 될 마이크로 클러스터를 검색하는 단계;
    상기 코드 시퀀스가 속하게 될 마이크로 클러스터가 검색되면, 상기 마이크로 클러스터에 탐색 클러스터를 추가하는 단계; 및
    상기 코드 시퀀스가 속하게 될 마이크로 클러스터가 검색되지 않으면, 새로운 마이크로 클러스터를 생성하고 상기 새로운 마이크로 클러스터에 상기 탐색 클러스터를 추가하는 단계를 포함하는 개발자 동작에 기반한 코드 목록 추천 방법.
  6. 제5항에 있어서, 상기 코드 시퀀스가 속하게 될 마이크로 클러스터를 검색하는 단계는
    상기 코드 시퀀스에 포함된 프로그램 요소과 상기 마이크로 클러스터에 포함된 프로그램 요소를 서로 비교하여, 상기 코드 시퀀스에 포함된 프로그램 요소를 기 설정된 비율 이상 포함하는 마이크로 클러스터를 상기 코드 시퀀스가 속하게 될 마이크로 클러스터로 검색하는 개발자 동작에 기반한 코드 목록 추천 방법.
  7. 제5항에 있어서, 상기 코드 시퀀스가 속하게 될 마이크로 클러스터를 검색하는 단계는
    첫 번째 프로그램 요소와 마지막 프로그램 요소 중 하나를 기준으로, 상기 코드 시퀀스가 속하게 될 마이크로 클러스터를 검색하는 개발자 동작에 기반한 코드 목록 추천 방법.
  8. 제5항에 있어서,
    상기 마이크로 클러스터를 클러스터링하여 매크로 클러스터를 생성하는 매크로 클러스터 생성 단계를 더 포함하는 개발자 동작에 기반한 코드 목록 추천 방법.
  9. 제8항에 있어서, 상기 매크로 클러스터 생성 단계는
    마이크로 클러스터 쌍 각각에 대한 유사도를 계산하는 단계;
    기 설정된 유사도 임계치보다 높은 유사도를 가지며, 중복되는 마이크로 클러스터를 포함하는 마이크로 클러스터 쌍을 유사도 순으로 정렬하는 단계; 및
    상기 정렬 결과에 따라 마이크로 클러스터 쌍을 합쳐 매크로 클러스터를 생성하는 단계를 포함하는 개발자 동작에 기반한 코드 목록 추천 방법.
  10. 제9항에 있어서, 상기 마이크로 클러스터 쌍 각각에 대한 유사도를 계산하는 단계는
    코사인 유사 통계를 이용하는 것을 특징으로 하는 개발자 동작에 기반한 코드 목록 추천 방법.
  11. 제9항에 있어서, 상기 추천 단계는
    개발자의 현재 동작을 추적하여 프로그램 요소들을 수집하는 단계; 및
    상기 수집된 프로그램 요소와 가장 유사도가 높은 프로그램 요소를 포함하는 마이크로 클러스터 또는 매크로 클러스터를 선택하고, 상기 클러스터에 포함된 프로그램 요소 중 가장 높은 사용 빈도수를 가지는 프로그램 요소를 개발자에게 추천하는 단계를 포함하는 개발자 동작에 기반한 코드 목록 추천 방법.
  12. 제11항에 있어서, 상기 프로그램 요소를 개발자에게 추천하는 단계는
    TF-IDF(Term Frequency - Inverse Document Frequency) 알고리즘을 이용하는 것을 특징으로 하는 개발자 동작에 기반한 코드 목록 추천 방법.
  13. 제8항에 있어서, 상기 마이크로 클러스터는
    적어도 하나의 프로그램 요소와, 프로그램 요소별 사용 빈도수에 대한 정보를 포함하는 개발자 동작에 기반한 코드 목록 추천 방법.
  14. 제8항에 있어서, 상기 매크로 클러스터는
    적어도 하나의 프로그램 요소와, 프로그램 요소별 사용 빈도수에 대한 정보를 포함하는 개발자 동작에 기반한 코드 목록 추천 방법.
  15. 제1항, 제3항 내지 제12항 중 어느 한 항에 기재된 개발자 동작에 기반한 코드 목록 추천 방법을 실행하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  16. 개발자의 동작을 추적하면서 프로그램 요소를 수집하고, 상기 프로그램 요소를 포함하는 코드 시퀀스를 생성하는 수집부;
    상기 코드 시퀀스를 클러스터링하여 마이크로 클러스터를 생성하는 마이크로 클러스터링부;
    상기 마이크로 클러스터링부의 클러스터링 결과를 다시 한번 클러스터링하는 매크로 클러스터링부; 및
    상기 마이크로 클러스터링부와 상기 매크로 클러스터링부의 클러스터링 결과를 기반으로 개발자의 현재 동작을 분석하여, 개발자가 현재 이용하고 있는 프로그램 요소 이후에 이용할 프로그램 요소들을 선별 및 추천하는 선별 및 추천하는 추천부하는 코드 목록 추천 장치.
  17. 삭제
  18. 제16항에 있어서,
    상기 마이크로 클러스터링부와 상기 매크로 클러스터링부의 클러스터링 결과를 저장하는 데이터베이스부를 더 포함하는 코드 목록 추천 장치.
KR1020120083868A 2012-07-31 2012-07-31 개발자 동작에 기반한 문맥적인 코드 목록 추천 방법 및 이를 이용하는 코드 목록 추천 장치 KR101382078B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120083868A KR101382078B1 (ko) 2012-07-31 2012-07-31 개발자 동작에 기반한 문맥적인 코드 목록 추천 방법 및 이를 이용하는 코드 목록 추천 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120083868A KR101382078B1 (ko) 2012-07-31 2012-07-31 개발자 동작에 기반한 문맥적인 코드 목록 추천 방법 및 이를 이용하는 코드 목록 추천 장치

Publications (2)

Publication Number Publication Date
KR20140016719A KR20140016719A (ko) 2014-02-10
KR101382078B1 true KR101382078B1 (ko) 2014-04-17

Family

ID=50265656

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120083868A KR101382078B1 (ko) 2012-07-31 2012-07-31 개발자 동작에 기반한 문맥적인 코드 목록 추천 방법 및 이를 이용하는 코드 목록 추천 장치

Country Status (1)

Country Link
KR (1) KR101382078B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109918058B (zh) * 2017-12-13 2022-08-12 富士通株式会社 信息处理装置和方法以及在编程环境中推荐代码的方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4205323B2 (ja) * 2001-08-16 2009-01-07 日本電気株式会社 配信システム、配信サーバとその配信方法、配信プログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4205323B2 (ja) * 2001-08-16 2009-01-07 日本電気株式会社 配信システム、配信サーバとその配信方法、配信プログラム

Also Published As

Publication number Publication date
KR20140016719A (ko) 2014-02-10

Similar Documents

Publication Publication Date Title
US11120364B1 (en) Artificial intelligence system with customizable training progress visualization and automated recommendations for rapid interactive development of machine learning models
Teinemaa et al. Outcome-oriented predictive process monitoring: Review and benchmark
US11423082B2 (en) Methods and apparatus for subgraph matching in big data analysis
US9910949B2 (en) Synthesis tuning system for VLSI design optimization
KR101557294B1 (ko) 편집 거리 및 문서 정보를 이용한 검색 결과 랭킹
US20150019530A1 (en) Query language for unstructed data
US9928295B2 (en) Document relationship analysis system
JP4704461B2 (ja) 業務モデル生成プログラム、業務モデル生成方法および業務モデル生成装置
JP6327234B2 (ja) イベント解析装置、イベント解析システム、イベント解析方法、およびイベント解析プログラム
JP2018010475A (ja) 機械学習管理プログラム、機械学習管理装置および機械学習管理方法
KR101660106B1 (ko) 비정형 문화관광 데이터 수집 및 정형화를 통한 맞춤형 문화관광 콘텐츠 추천 시스템 및 방법
US20230376857A1 (en) Artificial inelligence system with intuitive interactive interfaces for guided labeling of training data for machine learning models
KR101975272B1 (ko) 협업 의존성 기반 컴포넌트 재사용 추천 시스템 및 방법
Kiziltan et al. Constraint detection in natural language problem descriptions
Mohr et al. LCDB 1.0: An extensive learning curves database for classification tasks
Jiang et al. Effective biomedical document classification for identifying publications relevant to the mouse Gene Expression Database (GXD)
KR101382078B1 (ko) 개발자 동작에 기반한 문맥적인 코드 목록 추천 방법 및 이를 이용하는 코드 목록 추천 장치
US11175907B2 (en) Intelligent application management and decommissioning in a computing environment
US20230273964A1 (en) Apparatus and method for evaluating search engine performance, and dashboard
KR20230127861A (ko) 신용평가 모델 업데이트 또는 교체 방법 및 장치
KR101784106B1 (ko) 지식구조를 이용한 다중 컨텐츠 평가 방법, 그 장치 및 이를 이용한 컨텐츠 추천방법
KR20140073345A (ko) 모바일 기기에서 사용자 인터랙션에 기반한 서비스 목록 추천 방법 및 이를 이용하는 모바일 기기
KR102520305B1 (ko) 키워드 빈도수와 영역 중요도 분석 기반 딥러닝 문서 분석 시스템 및 방법
US11868436B1 (en) Artificial intelligence system for efficient interactive training of machine learning models
US11176177B2 (en) Computer-readable recording medium storing search program and search method

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
FPAY Annual fee payment

Payment date: 20170206

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180126

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190124

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20200206

Year of fee payment: 7