KR20150111134A - 코드 추천 및 공유 시스템 및 방법 - Google Patents

코드 추천 및 공유 시스템 및 방법 Download PDF

Info

Publication number
KR20150111134A
KR20150111134A KR1020140034638A KR20140034638A KR20150111134A KR 20150111134 A KR20150111134 A KR 20150111134A KR 1020140034638 A KR1020140034638 A KR 1020140034638A KR 20140034638 A KR20140034638 A KR 20140034638A KR 20150111134 A KR20150111134 A KR 20150111134A
Authority
KR
South Korea
Prior art keywords
code
recommendation
unit
editor
repository
Prior art date
Application number
KR1020140034638A
Other languages
English (en)
Other versions
KR102190813B1 (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 KR1020140034638A priority Critical patent/KR102190813B1/ko
Priority to US14/667,963 priority patent/US9557972B2/en
Publication of KR20150111134A publication Critical patent/KR20150111134A/ko
Application granted granted Critical
Publication of KR102190813B1 publication Critical patent/KR102190813B1/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
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Abstract

본 발명은 개발자의 에디터(editor)의 연동하며 개발자의 소스 코드 유닛 정보를 추출하는 에디터 플러그인 및 코드 데이터를 저장하고 있는 코드 리파지토리(repository)를 포함하는 코드 추천 서버를 포함하되, 상기 코드 추천 서버는 상기 에디터 플러그인에서 추출된 개발자의 소스 코드 유닛 정보를 기반으로 코드 추천 알고리즘을 통해 상기 코드 리파지토리에서 추천 코드 데이터를 선별하는 코드 추천 및 공유를 위한 시스템을 개시하고 있다.

Description

코드 추천 및 공유 시스템 및 방법{CODE RECOMMENDATION AND SHARE SYSTEM AND METHOD}
본 발명은 코드 추천 및 공유 시스템 및 방법에 관한 것으로, 보다 상세하게는, 개발 환경에 밀착된 플러그인을 이용하여 매쉬업 개발자들에게 코드를 추천하는 시스템 및 방법에 관한 것이다.
1) 강화된 에디터
이클립스, NetBeans, Visual Studio 등 강력한 통합 개발 환경은 개발 효율을 높이는데 많은 도움을 준다. 특히 강화된 에디터는 소스코드가 Abstract Syntax Tree로 구성되어 조작 용이하다. 이러한 에디터는 문법 검사를 자동으로 지원한다. 언어에 따라 변수의 자료형, 표현식, 구문을 추론하는 기능 제공하며, 소스코드 내 어노테이션으로 에러나 경고를 표시한다. 또한, 키보드 및 마우스를 이용하여 편리한 인터랙션을 제공한다. 블럭 잡기, 마우스 후버, 클릭, 드래그 등 다양한 인터랙션을 기반으로 에디터의 사용성을 높일 필요가 있다.
2) 코드 리파지토리
코드 리파지토리는 프로그래밍 언어에 따라 다양하게 존재한다. 텍스트 형태의 코드들이 산적해있으나, 개발자가 활용할 수 있는 코드를 찾는 기능은 부족한 실정이다. 코드들은 파일로 저장되어 있고, 검색 엔진을 통하여 찾아도 개발자가 일일이 소스코드를 눈으로 확인해야 하는 한계가 있다. 개발자가 필요한 코드는 변수 선언부터 몇 줄의 코드부터 파일 하나에 이르기까지 크기가 다양한데, 코드 리파지토리는 그런 구분 없이 코드를 파일로 보관하는 경우가 많다. 따라서 개발 문맥에 맞는 코드 조각을 제공하는 기능이 필요하다.
3) 개발 행위 고찰
초보 개발자부터 고급 개발자에 이르기까지, 많은 개발자들이 처음부터 개발하기 보다 적절한 예제를 고른 후 편집해나가면서 개발하는 방법을 자주 사용한다. 매쉬업을 개발할 때 적절한 예제를 찾기 위해서는 검색 포탈을 이용하는 경우가 많다. 다른 개발자의 질문글, 구현 성공 사례들로부터 예제 코드를 파악한다. 실제로 개발이 일어나는 환경은 에디터이기 때문에 검색과 개발 행위 사이에 갭이 존재한다. 이러한 한계점을 플러그인으로 강화된 에디터와 추천 서버를 통하여 메울 수 있다. 개발자의 소스 코드로부터 개발 문맥을 파악하고, 문맥과 가장 유사한 예제 코드의 추천을 통해서, 검색, 복사, 편집을 반복하는 개발 행위를 효율적으로 개선할 필요성이 있다.
본 발명의 목적은 개발자가 코드를 입력하는 문맥에 따라 예제 코드들을 추천해줌으로써 개발 생산성을 높이고, 개발 도구에 플러그인 형태로 제공함으로써 다양한 개발 환경에 적용하는 것이다.
상기한 목적을 달성하기 위한 본 발명의 코드 추천 및 공유를 위한 방법은 개발자의 에디터(editor)와 연동하는 플러그인으로 개발자의 소스 코드 유닛 정보를 추출하는 단계, 코드 추천 서버를 통해 상기 에디터 플러그인에서 추출된 개발자의 소스 코드 유닛 정보를 기반으로 코드 추천 알고리즘을 이용하여 코드 리파지토리(repository)에서 추천 코드 데이터를 선별하는 단계를 포함할 수 있다. 상기 코드 추천 서버로부터 수신한 상기 추천 코드 데이터를 상기 에디터에 제공하는 단계, 상기 에디터로부터 선택된 코드 유닛을 상기 소스 코드 내에 삽입하는 단계 및 상기 선택된 코드 유닛을 상기 코드 추천 서버에 리포팅하는 단계를 더 포함할 수 있다.
세부적으로, 상기 추천 코드 데이터를 선별하는 단계는 상기 소스 코드 유닛의 타입 정보를 기반으로 소스 코드 유닛의 타입과 연관성이 높은 타입을 추론하여 타겟 유닛 - 타겟 유닛은 코드 리파지토리에 저장되어 추천 코드가 될 수 있는 코드 유닛을 의미함 - 을 필터링하는 제 1 단계; 상기 소스 코드 유닛의 윈도우 크기 정보를 기반으로 상기 타겟 유닛의 길이를 상기 윈도우 크기에 맞게 조정하는 제 2 단계; 및 상기 소스 코드 유닛의 컨텍스트 정보를 기반으로 기본 문자열 매칭 또는 상기 소스 유닛 텍스트의 전후 문맥을 담은 블록 텍스트와 상기 타겟 유닛과의 유사도를 계산하여 상기 추천 코드를 정렬하는 제 3 단계를 포함할 수 있다.
상기 제 3 단계는 상기 컨텍스트 정보가 존재하는 경우, 상기 블록 텍스트와 상기 타겟 유닛과의 유사도를 계산하여 상기 추천 코드를 정렬하여 최종 상위 N 개의 추천 코드만을 선별하는 단계 및 상기 컨텍스트 정보가 존재하지 않는 경우, 기본 문자열 매칭을 통해 상기 추천 코드를 선별하는 단계 중 하나를 포함할 수 있다.
상기 에디터 플러그인을 통해 추출되는 소스 코드 유닛의 데이터는 개발자가 관심 있는 소스 코드 유닛, 문자열 정보, 타입 정보, 윈도우 크기 정보 및 컨텍스트 정보 - 컨텍스트 정보는 유닛 문자열을 포함한 임의의 길이의 블록 텍스트를 포함함 - 로 구성될 수 있다.
상기 추천 코드 데이터는 추천 코드의 문자열 및 개발자의 문맥과의 매칭 정도를 나타내는 매칭 점수로 구성될 수 있다.
상기 코드 추천 및 공유 방법은 상기 코드 추천 서버가 상기 에디터 플러그인을 통해 소스 코드 유닛을 수신하면, 추후 추천할 코드 데이터로서 코드 리파지토리에 저장하는 단계를 더 포함할 수 있다.
상기 코드 리파지토리는 복수 개일 수 있고, 상기 코드 추천 서버가 제3자 리파지토리로부터 코드 데이터를 불러오되, 리파지토리 어댑터를 통해, 제3자 리파지토리에 저장된 코드 데이터에 대한 프로그래밍 언어, 문법 및 입도(granularity)를 분석하는 단계를 더 포함할 수 있다.
본 발명의 코드 추천 및 공유 시스템 및 방법에 따르면, 첫째로 개발 생산성을 높이고 확장이 용이하다. 왜냐하면 매쉬업 개발자가 코드를 입력하는 문맥에 따라 예제 코드들을 추천해주고, 기존의 개발 도구에 플러그인 형태로 설치하기 때문이다.
플러그인을 이용하는 과정에서 개발자가 만든 코드가 리파지토리에 누적되기 때문에 실질적으로 유용한 코드 유닛이 풍부해진다. 이는 다시 다른 개발자에게 추천할 코드로 이어지기 때문에 지속적으로 소스 코드를 공유할 수 있다.
도 1은 본 발명의 일 실시예에 따른 코드 추천 및 공유 시스템의 구성을 개략적으로 나타낸 블륵도,
도 2는 본 발명의 일 실시예에 따른 코드 추천 및 공유 시스템의 에디터 플러그인의 동작 과정을 나타낸 흐름도,
도 3은 본 발명의 일 실시예에 따른 코드 추천 및 공유 시스템의 코드 추천 서버의 동작 과정을 나타낸 흐름도,
도 4a는 본 발명의 일 실시예에 따른 코드 추천 및 공유 시스템의 추천 타겟 코드 선별 및 매칭 흐름도,
도 4b는 추천 타겟 코드 선별 및 매칭의 실시예를 나타낸 도면,
도 5a는 본 발명의 일 실시예에 따른 코드 리파지토리의 데이터 구조를 나타낸 도면,
도 5b은 본 발명의 일 실시예에 따른 코드 리파지토리에 저장된 데이터 실시 예를 나타낸 도면,
도 5c는 코드 리파지토리의 일 실시예를 나타낸 도면,
도 6a는 본 발명의 일 실시예에 따른 에디터에서 전송되는 소스코드 유닛의 데이터 구조를 나타낸 도면,
도 6b는 본 발명의 일 실시예에 따른 소스코드 유닛 데이터 실시 예를 나타낸 도면,
도 7은 본 발명의 일 실시예에 따른 코드 추천 서버가 사용하는 매칭 조건를 나타낸 도면,
도 8는 추천된 코드 집합의 데이터 구조를 나타낸 도면,
도 9는 본 발명의 일 실시예에 따른 플러그인이 설치된 에디터에서의 일 실시 예를 나타낸 도면,
도 10은 Unit Type 별 Window Size 설정 실시 예,
도 11은 본 발명의 일 실시예에 따른 소스 유닛 구성 과정의 실시예를 나타낸 도면,
도 12은 본 발명의 일 실시예에 따른 코드 리파지토리와 3rd party 리파지토리 어댑터를 나타낸 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 코드 추천 및 공유 시스템의 구성을 개략적으로 나타낸 블록도이다. 도 1에 도시된 바와 같이, 본 발명의 일 실시예에 따른 코드 추천 및 공유 시스템은 에디터(10), 에디터 플러그인(20), 코드 추천 서버(30) 및 코드 리파지토리(40)를 포함할 수 있다.
도 1을 참조하면, 에디터(10)는 개발자가 매쉬업 프로그램을 개발하기 위한 구성요소이다. 매쉬업 프로그램은 소스 코드를 통해 이루어질 수 있고, 에디터(10)는 매끄럽고 문맥에 맞는 편집을 지원하기 위해 에디터 플러그인(20)을 통해 코드 추천 서버(30)로부터 추천 코드를 수신할 수 있다.
에디터 플러그인(20)은 에디터(10)에서 소스 코드를 추천하기 위한 구성요소이다. 에디터 플러그인(20)은 에디터(10) 및 코드 추천 서버(30)와 통신할 수 있다. 에디터 플러그인은 에디터(10)에서 사용자 입력을 모니터링한다. 그리고는, 사용자 입력과 관련된 소스 코드 유닛 정보를 추출하여, 코드 추천 서버(30)로 전송한다. 이때, 추출되는 소스 코드 유닛 정보는 소정 항목의 정보를 포함할 수 있다. 이는 이하 소스 코드 데이터 구조와 관련하여 상세히 설명한다. 에디터 플러그인(20)은 코드 추천 서버(30)로부터 추천 코드 데이터(복수의 코드 유닛을 포함할 수 있음)를 수신하여 에디터(10)에 제공하고, 에디터(10)로부터 추천 코드 데이터 중 적어도 어느 하나에 대한 선택을 수신할 수 있다. 수신된 추천 코드는 에디터(10)의 소스 코드에 삽입될 수 있고, 에디터 플러그인(20)은 선택된 코드를 코드 추천 서버(30)에 리포팅할 수 있다.
코드 추천 서버(30)는 에디터 플러그인(20)으로부터 에디터(20)에서의 사용자 입력 또는 관심 소스 코드 정보를 수신하여, 상기 소스 코드 정보와 연관된 추천 코드를 선별할 수 있다. 코드 추천 서버(30)는 추천 코드를 선별하기 위한 데이터베이스로서, 코드 리파지토리(40)를 포함할 수 있다. 코드 리파지토리(40)는 코드 추천 서버(30)의 내부 또는 외부에 위치할 수 있다. 즉, 코드 추천 서버(30) 내에 포함된 코드 리파지토리(40) 외에 제3의 리파지토리를 액세싱하여 추천 코드를 선별하기 위한 리소스를 더 많이 확보할 수 있다. 코드 추천 서버(30)는 특정 코드 추천 알고리즘을 통해 추천 코드 데이터를 선별하는데, 이는 이하 코드 추천 서버(30)의 동작 과정에 대한 설명 부분에서 상세히 하도록 한다.
도 2는 본 발명의 일 실시예에 따른 코드 추천 및 공유 시스템의 에디터 플러그인의 동작 과정을 나타낸 흐름도이다.
도 2를 참조하면, 에디터 플러그인은 에디터에 플러그인 되어 매끄럽고(Seamless) 문맥에 맞는(contextual) 편집을 지원한다. 먼저, 에디터에서의 다양한 인터랙션을 모니터링한다(S200). 그리고는, 개발자가 입력한 또는 주의를 기울이는 소스 코드 유닛의 정보를 추출한다(S210). 그리고는, 상기 추출된 코드 유닛 정보를 코드 추천 서버에 전송한다(S220). 소스 코드 유닛 정보를 수신한 코드 추천 서버는 소스 코드 유닛 정보를 파싱하여 적합한 추천 코드 데이터를 선별하고, 이를 다시 에디터 플러그인으로 전송한다. 그리고는, 에디터 플러그인은 코드 추천 서버로부터 추천 코드를 응답 받는다(S230). 이후, 에디터 플러그인은 에디터 상에 추천 코드들을 디스플레이하고(S240), 개발자로부터 복수 개의 추천 코드들 중 특정 코드에 대한 선택을 수신한다(S250). 만약, 개발자로부터의 선택이 없다면, 다시 모니터링 단계(S200)로 간다. 개발자가 특정 코드를 선택했을 경우, 에디터 플러그인은 선택된 코드를 소스 코드 내에 삽입한다(S260). 그리고는 선택된 코드 유닛은 코드 추천 서버로 리포팅하고(S270), 다시 다음 이벤트를 위해 모니터링 단계(S200)로 가서 대기한다.
도 3은 본 발명의 일 실시예에 따른 코드 추천 및 공유 시스템의 코드 추천 서버의 동작 과정을 나타낸 흐름도이다.
도 3을 참조하면, 개발자에 소스 코드를 추천하기 위해, 코드 추천 서버는 항상 요청을 대기한다(S300). 에디터 플러그인을 통해 에디터로부터 소스 코드 유닛을 수신하면(S310), 먼저, 수신된 소스 코드 유닛을 코드 리파지토리에 저장한다(S320). 이는 추후에 추천할 코드 데이터로서 활용하기 위함이다. 즉, 코드 리파지토리에는 시간이 갈수록 점점 더 많은 코드 데이터가 저장될 수 있고, 추천을 위한 리소스가 더 방대해져 추천 코드의 다양성이 증가할 수 있다. 그리고는, 코드 추천 유닛은 다양한 코드 리파지토리에서 소스 코드 유닛들을 불러들인다(S330). 그리고는, 개발자의 컨텍스트에 적합한 소스 코드를 추천하기 위해, 다양한 매칭 기준을 적용한다(S340). 추천할 소스 코드를 다양한 코드 리파지토리에서 불러오고 분석하는 과정은 도 4a를 통해 설명한다. 그리고는, 매칭 기준을 통해 추천 코드를 선별하고(S350), 추천 코드를 가지고 에디터에 응답한다(S360). 응답 이후, 다시 요청 대기 단계(S300)로 돌아갈 수 있다.
도 4a는 본 발명의 일 실시예에 따른 코드 추천 및 공유 시스템의 추천 타겟 코드 선별 및 매칭 흐름도이다.
도 4a를 참조하면, 먼저, 코드 추천 서버는 개발자로부터 소스 유닛(400)을 전송 받고, 코드 리파지토리에 저장된 여러 개의 타겟 유닛들(402)(타겟 유닛은 코드 리파지토리에 저장되어 추천 코드(404)가 될 가능성을 지닌 리소스 유닛을 의미할 수 있음)을 추출한다(S410).
그리고는, 매칭 기준을 적용하여 상기 여러 개의 타겟 유닛들(402) 중 추천 코드(404)를 선별한다(S420).
상기 매칭 기준을 적용하여 추천 코드(404)를 선별하는 단계(S420)를 보다 상세히 살펴보면, 제 1 내지 제 3 단계의 단계적인 과정을 거쳐 추천 코드(404)가 선별될 수 있다.
먼저, 제 1 단계(S422~S426)는 소스 유닛(400)에 타입 정보가 있는지 판단하여(S422), 타입 정보가 있는 경우에 진행되고, 없는 경우 제 2 단계(S428~S432)로 넘어간다. 제 1 단계에서, 타입 정보가 있는 경우, 코드 추천 서버는 소스 유닛(400)의 타입과 연관성이 높은 타입을 추론한다(S424). 그리고는, 추론된 타입 정보에 따라 타겟 유닛(402)을 필터링한다(S426).
제 2 단계는 소스 유닛(400)에 윈도우 크기 정보가 있는지 판단하여(S428), 윈도우 크기 정보가 있을 경우 진행된고, 없는 경우 제 3 단계(S434~S440)로 넘어간다. 제 2 단계에서, 윈도우 정보가 존재하고, 타겟 유닛(402)의 길이가 윈도우 크기보다 클 경우(S430), 각 유닛의 크기를 조정한다(S432). 즉, 윈도우 크기만큼 그 길이를 잘라낸다. 만약, 타겟 유닛(402)의 길이가 윈도우 크기보다 작으면, 크기 조정 단계(S432)를 거치지 않고, 제 3 단계로 넘어간다.
제 3 단계는 소스 유닛(400)에 컨텍스트 정보가 있는지 판단하여(S434), 컨텍스트 정보가 있는 경우 블록 유사도 계산 단계(S438)로 진행되고, 없는 경우 기본 문자열 매칭 단계(S440)로 넘어간다. 만약 컨텍스트 정보가 있는 경우, 소스 유닛(400)의 컨텍스트 정보에는 유닛 텍스트의 전후 문맥을 담은 블록 텍스트가 있다. 코드 추천 서버는 이 블록 텍스트와 타겟 유닛(402)의 유사도를 계산한다(S436). 이 유사도에 따라서 추천 코드(404)를 정렬한다(S438). 이 과정을 통해, 최종적으로 상위 N개의 추천 코드(404)만을 추려내고, 이를 에디터로 전달할 수 있다.
도 4b 및 4c는 추천 타겟 코드 선별 및 매칭을 위한 실제 실시예를 나타낸 도면이다.
도 4b 및 4c를 참조하면, 실행 과정의 로그의 일부분으로서, 추천 타겟 코드를 총 3 단계에 걸쳐서 선별 및 매칭하는 과정을 나타내고 있다. 예컨대, 최초 약 3만여개의 타겟 유닛에서, 제 1 단계 타입 필터링 단계를 거쳐 15 천여개의 타겟으로 간추린다. 그리고는, 제 2 단계 윈도우 사이즈로 잘라내는 단계를 거쳐서 일부 타겟 유닛은 길이가 조정된다. 제 3 단계 소스 유닛과 타겟 유닛의 유사도를 계산하고, 정렬하는 과정을 거쳐서 상위 N개의 추천 타겟 코드가 추출된다.
도 5a는 본 발명의 일 실시예에 따른 코드 리파지토리의 데이터 구조를 나타낸 도면이다.
도 5a를 참조하면, 코드 리파지토리(500)에는 수많은 타겟 유닛(510)을 저장할 수 있다. 타겟 유닛(510)은 유닛 텍스트(512)와 유닛 타입(514) 정보로 구성되며, 타겟 유닛(510)이 저장되는 과정은 도 12를 참조하여 설명한다. 유닛 텍스트(512)는 코드 유닛의 텍스트로서, URL 정보, 타입 정보, 입력 정보 등을 포함할 수 있다. 유닛 타입(514) 정보는 해당 소스 유닛이 어떤 표현으로 되어 있는지를 나타내는 정보일 수 있고, 예컨대, Function call, String literal, Object literal field, Function Declaration, Assignment, Block 등 다양한 타입이 존재할 수 있다.
도 5b은 본 발명의 일 실시예에 따른 코드 리파지토리에 저장된 데이터 실시 예를 나타낸 도면이다.
도 5b를 참조하면, 타겟 유닛(520)은 유닛 텍스트(522) 정보로서 URL 정보를 포함하고 있고, 유닛 타입(524) 정보는 ASSINGMENT Type이며, 괄호 안의 7은 타입 ID를 나타낸다. 또한, 다른 타겟 유닛(530)은 유닛 텍스트(532) 정보로서 URL 정보, type 정보 및 input 정보를 포함하고 있고, 유닛 타입(534) 정보는 OBJECT LITERAL FIELD Type이며, 86은 타입 ID를 나타낸다.
도 5c는 코드 리파지토리의 일 실시예를 나타낸 도면이다. 도 5c에 도시된 바와 같이, 에디터의 플러그인을 통해 리포팅된 코드 유닛을 자동으로 코드 리파지토리에 누적시킬 수 있다.
도 6a는 본 발명의 일 실시예에 따른 에디터에서 전송되는 소스코드 유닛의 데이터 구조를 나타낸 도면이다.
도 6a를 참조하면, 개발자의 에디터에서 추출되어 추천 서버에 전송되는 소스 코드 유닛(600)의 데이터 구조이다. 데이터 구조는 소스 코드 유닛의 문자열(610), 유닛의 타입(620), 추천 받을 코드의 길이(윈도우 크기)(630), 컨텍스트(640)로 구성된다. 컨텍스트(640)는 유닛 문자열을 포함한 임의의 길이의 블록 텍스트(642)로서, 유닛 텍스트를 포함할 수 있다.
도 6b는 본 발명의 일 실시예에 따른 소스코드 유닛 데이터 실시 예를 나타낸 도면이다. 도 6b에 도시된 바와 같이, 소스코드 유닛 데이터의 일 실시 예로서, 유닛 텍스트(612)가 input, 유닛 타입(622)이 ASSIGNMENT, 컨텍스트(632)에 대한 정보, 윈도우 사이즈(642)가 29로 추출된 것을 나타낼 수 있다.
도 7은 본 발명의 일 실시예에 따른 코드 추천 서버가 사용하는 매칭 조건를 나타낸 도면이다.
도 7을 참조하면, 코드 추천 서버는 코드 리파지토리에서 불러온 수많은 소스 코드를 선별하고 우선순위를 매길 때 사용하는 매칭 조건(700)을 보유하고 있다. 본 발명의 일 실시예에 따르면, 매칭 조건(700)은 크게 세 가지가 있다. 즉, 1) 유닛의 타입에 기반한 타입 매칭(710), 그리고, 2) 개발자가 요청한 코드의 길이(윈도우 크기)에 기반한 윈도우 매칭(720), 마지막으로, 3) 블록 문자열과의 유사도에 기반한 블록 유사도 매칭(730)이 있을 수 있다. 이는 전술한 도 3의 제 1 내지 3 단계를 거쳐, 순서대로, 타입 매칭(710)을 통해 타겟 유닛을 1차적으로 필터링하고, 윈도우 매칭(720)을 통해 2차적으로 타겟 유닛의 길이를 조정하며, 마지막으로, 블록 유사도 매칭(730)을 통해 유사도가 높은 상위 N개의 추천 코드를 걸러낸다. 여기서, N은 미리 설정하거나, 사용자 설정을 통해 변경할 수 있다. 또는 유사도 기준을 두어 기준을 넘는 임의의 수로 설정할 수도 있다.
도 8는 추천된 코드 집합의 데이터 구조를 나타낸 도면이다.
도 8을 참조하면, 추천 서버가 추출한 추천 코드(800)의 데이터 구조로서, 에디터에 여러 개 전송될 수 있다. 추천 코드(800)의 데이터 구조는 코드의 문자열(820)과 개발자의 문맥과 얼마나 잘 맞는지를 나타내는 매칭 점수(810)로 구성될 수 있다. 상기 매칭 점수(810)는 블록 유사도 점수를 기반으로 유사도가 높을수록 높은 점수를 갖도록 매겨질 수 있다. 개발자의 입장에서는 추천 코드 선택에 있어서, 코드의 문자열(820)을 일일이 확인하는데 필요한 번거로움을 해소하기 위해, 매칭 점수(810)를 이용하여 보다 용이하게 문맥에 적합한 추천 코드(800)를 선택할 수 있다.
도 9는 본 발명의 일 실시예에 따른 플러그인이 설치된 에디터에서의 일 실시 예를 나타낸 도면이다.
도 9를 참조하면, 이는 본 발명의 일 실시예에 따른 에디터 플러그인이 설치된 에디터(900)에서 매쉬업을 개발하는 예시이다. 매쉬업 개발자는 웹 서비스의 서비스 URL과 요청 파라미터를 함께 사용하는 경우가 많다. 예컨데, 개발자는 https://www.tistory.com/apis/comment/delete 라는 URL을 입력하고, 연달아서 요청 파라미터를 정의하는 코딩을 할 수 있다. 본 발명의 일 실시예에 따르면, 개발자가 입력한 URL을 주요 개발 문맥으로 인지하고, 추천 알고리즘을 거쳐 사용할 가능성이 높은 예제 코드들을 걸러낸다. 추천 코드는 실제로 매쉬업으로 개발된 소스 코드에서 파싱된 데이터이다. 개발자는 추천 코드 중 일부(920)를 플러그인의 추천 디스플레이 화면(910)을 통해 열람할 수 있다.
도 10은 Unit Type 별 Window Size 설정 실시 예이다.
도 10을 참조하면, 코드 리파지토리에서 고빈도 타입을 기준으로 유닛 텍스트의 길이를 통계를 낼 수 있는데, 예컨대, 가장 자주 발생하는 Function Call 타입의 유닛의 길이는 중간값(Median) 31, 평균값 352를 가진다. 또한, String literal 타입의 경우, 중간값 8에, 평균 값 11을 갖는다. 이렇게, 중간 값과 평균 값을 이용하여, 윈도우 사이즈를 결정할 수 있다. 윈도우 사이즈는 중간 값으로, 또는 평균 값으로 결정될 수 있고, 상기 중간 값과 평균 값의 조합을 통해 결정될 수 있다.
도 11은 본 발명의 일 실시예에 따른 소스 유닛 구성 과정의 실시예를 나타낸 도면이다.
도 11을 참조하면, 이는 소스 유닛의 구성 과정을 보여주는 일 실시 예를 도시한다. 즉, 이는 도 10에서 예시로 든 코드를 에디터 단에서 분석하는 과정을 나타낸다. 개발자가 관심있는 유닛이 "input"일 경우, 이 유닛의 타입은 Javascript unit 타입, expression statement 타입, simple name 타입으로 추론될 수 있다(도 11의 1100 참조). Input의 전후 문맥을 담은 Block Text를 추론하는 과정(도 11의 1110 참조)을 통해, 총 9가지의 연관된 타입을 추론할 수 있다. 이렇게 추론된 타입과 블록 텍스트는 소스 유닛(1120)을 구성할 수 있다.
도 12은 본 발명의 일 실시예에 따른 코드 리파지토리와 3rd party 리파지토리 어댑터를 나타낸 도면이다.
도 12를 참조하면, 본 발명의 일 실시예에 따른 코드 추천 서버에 포함된 코드 리파지토리(1200)와 제3의 리파지토리(3rd party repository)에서 소스 코드를 불러올 수 있다(S1210). 또한, 개발자로부터 받은 소스 유닛을 저장할 수 있다(S1220). 이는, 리파지토리 어댑터(1204)을 통하여 이루어질 수 있다. 리파지토리 어댑터(1204)는 다양한 프로그래밍 언어(1204: Language), 문법(1206: Syntax) 및 소스 코드의 입도(1208: Granularity)를 분석할 수 있다.
이상 도면 및 실시예를 참조하여 설명하였지만, 본 발명의 보호범위가 상기 도면 또는 실시예에 의해 한정되는 것을 의미하지는 않으며 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (18)

  1. 코드 추천 및 공유를 위한 시스템에 있어서,
    개발자의 에디터(editor)의 연동하며 개발자의 소스 코드 유닛 정보를 추출하는 에디터 플러그인; 및
    코드 데이터를 저장하고 있는 코드 리파지토리(repository)를 포함하는 코드 추천 서버를 포함하되, 상기 코드 추천 서버는
    상기 에디터 플러그인에서 추출된 개발자의 소스 코드 유닛 정보를 기반으로 코드 추천 알고리즘을 통해 상기 코드 리파지토리에서 추천 코드 데이터를 선별하는 것을 특징으로 하는 코드 추천 및 공유 시스템.
  2. 제 1 항에 있어서,
    상기 에디터 플러그 인은 상기 추천 코드 데이터를 상기 코드 추천 서버로부터 수신하여 상기 에디터에 제공하고, 상기 에디터로부터 선택된 코드 유닛을 상기 소스 코드 내에 삽입하고, 상기 코드 추천 서버에 리포팅하는 것을 특징으로 하는 코드 추천 및 공유 시스템.
  3. 제 1 항에 있어서, 상기 코드 추천 서버는
    상기 소스 코드 유닛의 타입 정보를 기반으로 소스 코드 유닛의 타입과 연관성이 높은 타입을 추론하여 타겟 유닛 - 타겟 유닛은 코드 리파지토리에 저장되어 추천 코드가 될 수 있는 코드 유닛을 의미함 - 을 필터링하는 제 1 단계;
    상기 소스 코드 유닛의 윈도우 크기 정보를 기반으로 상기 타겟 유닛의 길이를 상기 윈도우 크기에 맞게 조정하는 제 2 단계; 및
    상기 소스 코드 유닛의 컨텍스트 정보를 기반으로 기본 문자열 매칭 또는 상기 소스 유닛 텍스트의 전후 문맥을 담은 블록 텍스트와 상기 타겟 유닛과의 유사도를 계산하여 상기 추천 코드를 정렬하는 제 3 단계를 통해 상기 추천 코드 데이터를 선별하는 것을 특징으로 하는 코드 추천 및 공유 시스템.
  4. 제 3 항에 있어서, 상기 제 3 단계는
    상기 컨텍스트 정보가 존재하는 경우, 상기 블록 텍스트와 상기 타겟 유닛과의 유사도를 계산하여 상기 추천 코드를 정렬하여 최종 상위 N 개의 추천 코드만을 선별하는 단계; 및
    상기 컨텍스트 정보가 존재하지 않는 경우, 기본 문자열 매칭을 통해 상기 추천 코드를 선별하는 단계 중 하나를 포함하는 것을 특징으로 하는 코드 추천 및 공유 시스템.
  5. 제 3 항에 있어서,
    상기 에디터 플러그인을 통해 추출되는 소스 코드 유닛의 데이터는 개발자가 입력한 또는 관심도가 높은 소스 코드 유닛의, 문자열 정보, 타입 정보, 윈도우 크기 정보 및 컨텍스트 정보 - 컨텍스트 정보는 유닛 문자열을 포함한 임의의 길이의 블록 텍스트를 포함함 - 로 구성되는 것을 특징으로 하는 코드 추천 및 공유 시스템.
  6. 제 3 항에 있어서,
    상기 추천 코드 데이터는 추천 코드의 문자열 및 개발자의 문맥과의 매칭 정도를 나타내는 매칭 점수로 구성되는 것을 특징으로 하는 코드 추천 공유 시스템.
  7. 제 1 항에 있어서,
    상기 에디터 플러그인은 상기 코드 리파지토리에서 고빈도 타입을 기준으로 유닛 텍스트의 길이를 통계내어 소스 유닛 데이터를 생성시 윈도우 크기를 결정하는데 사용하는 것을 특징으로 하는 코드 추천 공유 시스템.
  8. 제 1 항에 있어서,
    상기 에디터 플러그인는 상기 에디터 플러그인을 통해 소스 코드 유닛을 수신하면, 추후 추천할 코드 데이터로서 코드 리파지토리에 저장하는 것을 특징으로 하는 코드 추천 및 공유 시스템.
  9. 제 1 항에 있어서,
    상기 코드 리파지토리는 복수 개일 수 있고,
    상기 코드 추천 서버는 제3자 리파지토리로부터 코드 데이터를 불러오되,
    제3자 리파지토리에 저장된 코드 데이터에 대한 프로그래밍 언어, 문법 및 입도(granularity)를 분석하는 리파지토리 어댑터를 더 포함하는 것을 특징으로 하는 코드 추천 및 공유 시스템.
  10. 코드 추천 및 공유를 위한 방법에 있어서,
    에디터 플러그인을 통해, 개발자의 에디터(editor)의 연동하며 개발자의 소스 코드 유닛 정보를 추출하는 단계; 및
    코드 추천 서버를 통해, 상기 에디터 플러그인에서 추출된 개발자의 소스 코드 유닛 정보를 기반으로 코드 추천 알고리즘을 이용하여 코드 데이터를 저장하고 있는 코드 리파지토리(repository)에서 추천 코드 데이터를 선별하는 단계를 포함하는 것을 특징으로 하는 코드 추천 및 공유 방법.
  11. 제 10 항에 있어서,
    상기 에디터 플러그 인이 상기 추천 코드 데이터를 상기 코드 추천 서버로부터 수신하여 상기 에디터에 제공하는 단계;
    상기 에디터로부터 선택된 코드 유닛을 상기 소스 코드 내에 삽입하는 단계;및
    상기 선택된 코드 유닛을 상기 코드 추천 서버에 리포팅하는 단계를 더 포함하는 것을 특징으로 하는 코드 추천 및 공유 방법.
  12. 제 10 항에 있어서, 상기 추천 코드 데이터를 선별하는 단계는
    상기 소스 코드 유닛의 타입 정보를 기반으로 소스 코드 유닛의 타입과 연관성이 높은 타입을 추론하여 타겟 유닛 - 타겟 유닛은 코드 리파지토리에 저장되어 추천 코드가 될 수 있는 코드 유닛을 의미함 - 을 필터링하는 제 1 단계;
    상기 소스 코드 유닛의 윈도우 크기 정보를 기반으로 상기 타겟 유닛의 길이를 상기 윈도우 크기에 맞게 조정하는 제 2 단계; 및
    상기 소스 코드 유닛의 컨텍스트 정보를 기반으로 기본 문자열 매칭 또는 상기 소스 유닛 텍스트의 전후 문맥을 담은 블록 텍스트와 상기 타겟 유닛과의 유사도를 계산하여 상기 추천 코드를 정렬하는 제 3 단계를 포함하는 것을 특징으로 하는 코드 추천 및 공유 방법.
  13. 제 12 항에 있어서, 상기 제 3 단계는
    상기 컨텍스트 정보가 존재하는 경우, 상기 블록 텍스트와 상기 타겟 유닛과의 유사도를 계산하여 상기 추천 코드를 정렬하여 최종 상위 N 개의 추천 코드만을 선별하는 단계; 및
    상기 컨텍스트 정보가 존재하지 않는 경우, 기본 문자열 매칭을 통해 상기 추천 코드를 선별하는 단계 중 하나를 포함하는 것을 특징으로 하는 코드 추천 및 공유 방법.
  14. 제 12 항에 있어서,
    상기 에디터 플러그인을 통해 추출되는 소스 코드 유닛의 데이터는 개발자가 입력한 또는 관심도가 높은 소스 코드 유닛의, 문자열 정보, 타입 정보, 윈도우 크기 정보 및 컨텍스트 정보 - 컨텍스트 정보는 유닛 문자열을 포함한 임의의 길이의 블록 텍스트를 포함함 - 로 구성되는 것을 특징으로 하는 코드 추천 및 공유 방법.
  15. 제 12 항에 있어서,
    상기 추천 코드 데이터는 추천 코드의 문자열 및 개발자의 문맥과의 매칭 정도를 나타내는 매칭 점수로 구성되는 것을 특징으로 하는 코드 추천 공유 방법.
  16. 제 10 항에 있어서,
    상기 에디터 플러그인이 상기 코드 리파지토리에서 고빈도 타입을 기준으로 유닛 텍스트의 길이를 통계내어 소스 유닛 데이터를 생성시 윈도우 크기를 결정하는 단계를 더 포함하는 것을 특징으로 하는 코드 추천 공유 방법.
  17. 제 10 항에 있어서,
    상기 코드 추천 서버가 상기 에디터 플러그인을 통해 소스 코드 유닛을 수신하면, 추후 추천할 코드 데이터로서 코드 리파지토리에 저장하는 단계를 더 포함하는 것을 특징으로 하는 코드 추천 및 공유 방법.
  18. 제 10 항에 있어서,
    상기 코드 리파지토리는 복수 개일 수 있고,
    상기 코드 추천 서버가 제3자 리파지토리로부터 코드 데이터를 불러오되, 리파지토리 어댑터를 통해, 제3자 리파지토리에 저장된 코드 데이터에 대한 프로그래밍 언어, 문법 및 입도(granularity)를 분석하는 단계를 더 포함하는 것을 특징으로 하는 코드 추천 및 공유 방법.

KR1020140034638A 2014-03-25 2014-03-25 코드 추천 및 공유 시스템 및 방법 KR102190813B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140034638A KR102190813B1 (ko) 2014-03-25 2014-03-25 코드 추천 및 공유 시스템 및 방법
US14/667,963 US9557972B2 (en) 2014-03-25 2015-03-25 System and method for code recommendation and share

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140034638A KR102190813B1 (ko) 2014-03-25 2014-03-25 코드 추천 및 공유 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20150111134A true KR20150111134A (ko) 2015-10-05
KR102190813B1 KR102190813B1 (ko) 2020-12-14

Family

ID=54190447

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140034638A KR102190813B1 (ko) 2014-03-25 2014-03-25 코드 추천 및 공유 시스템 및 방법

Country Status (2)

Country Link
US (1) US9557972B2 (ko)
KR (1) KR102190813B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101950208B1 (ko) * 2018-12-04 2019-02-22 (주)에스앤씨랩 웹 접근성 및 개방성 평가 방법 및 장치
WO2020060146A1 (ko) * 2018-09-21 2020-03-26 주식회사 럭스로보 소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리
WO2022071708A1 (ko) * 2020-09-29 2022-04-07 삼성전자 주식회사 컨텐츠 추천 서비스를 제공하는 전자 장치 및 그 방법

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102190813B1 (ko) * 2014-03-25 2020-12-14 한국전자통신연구원 코드 추천 및 공유 시스템 및 방법
US10235141B2 (en) * 2016-06-28 2019-03-19 Hcl Technologies Ltd. Method and system for providing source code suggestion to a user in real-time
US10642606B2 (en) 2017-09-28 2020-05-05 International Business Machines Corporation Re-use of code
US10671384B1 (en) 2017-12-07 2020-06-02 Amazon Technologies, Inc. Proactive seeding of build Artifacts
CN108717423B (zh) * 2018-04-24 2020-07-07 南京航空航天大学 一种基于深度语义挖掘的代码段推荐方法
CN110502226B (zh) * 2018-05-16 2023-06-09 富士通株式会社 在编程环境中推荐代码的方法和装置
CN110569030B (zh) * 2018-06-06 2023-04-07 富士通株式会社 代码推荐方法及装置
CN109299473B (zh) * 2018-11-15 2024-01-09 扬州大学 一种基于开发者画像的软件工程任务推荐方法
CN109753782B (zh) * 2018-11-23 2021-05-25 奇安信科技集团股份有限公司 一种云安全资源池的适配处理方法及装置
US11620111B2 (en) * 2020-03-24 2023-04-04 The Mathworks, Inc. Providing services for assisting programming
CN111723192B (zh) * 2020-06-19 2024-02-02 南开大学 代码推荐方法和装置
US11763078B2 (en) * 2021-04-22 2023-09-19 Microsoft Technology Licensing, Llc Provisional selection drives edit suggestion generation
CN117289929B (zh) * 2023-11-24 2024-03-19 浙江口碑网络技术有限公司 一种插件框架、插件及数据处理方法、装置及电子设备
CN117289919B (zh) * 2023-11-24 2024-02-20 浙江口碑网络技术有限公司 一种数据处理方法、装置及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011070640A (ja) * 2009-08-10 2011-04-07 Nec (China) Co Ltd デスクトップ・アプリケーションをウェブ・アプリケーションに変換する方法とシステム
US20120036492A1 (en) * 2010-08-06 2012-02-09 International Business Machines Corporation Automated analysis of code developer's profile
JP2013003664A (ja) * 2011-06-13 2013-01-07 Sony Corp 情報処理装置および方法
KR20130020199A (ko) * 2011-08-19 2013-02-27 인크로스 주식회사 통합 개발 환경에서의 코드 파일 위치 공유 시스템 및 방법
KR20130097252A (ko) * 2012-02-23 2013-09-03 삼성전자주식회사 소스 코드 분석에 의한 응용 프로그램 분석을 위한 방법 및 장치

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020138617A1 (en) * 2000-09-06 2002-09-26 Jacob Christfort Providing content from multiple services
JP2007538321A (ja) * 2004-05-20 2007-12-27 コード バリー ピーティーワイ リィミティッド コード生成方法
US7844958B2 (en) * 2005-03-11 2010-11-30 Aptana, Inc. System and method for creating target byte code
US9021416B2 (en) * 2007-05-16 2015-04-28 Accenture Global Service Limited Recommended application evaluation system
US9613089B2 (en) * 2007-09-04 2017-04-04 Adobe Systems Incorporated Form template refactoring
US8069190B2 (en) * 2007-12-27 2011-11-29 Cloudscale, Inc. System and methodology for parallel stream processing
KR101480405B1 (ko) 2008-01-30 2015-01-09 삼성전자주식회사 매쉬업 애플리케이션을 생성하는 방법
US9055103B2 (en) * 2008-01-30 2015-06-09 Samsung Electronics Co., Ltd. Method of creating mashup application
US7908278B2 (en) * 2008-02-07 2011-03-15 International Business Machines Corporation Recommendation system for assisting mashup developers at build-time
US9218166B2 (en) * 2008-02-20 2015-12-22 Embarcadero Technologies, Inc. Development system with improved methodology for creation and reuse of software assets
US8627290B2 (en) * 2009-02-03 2014-01-07 International Business Machines Corporation Test case pattern matching
US8601056B2 (en) * 2010-03-09 2013-12-03 Avistar Communications Corporation Scalable high-performance interactive real-time media architectures for virtual desktop environments
EP2561441A1 (en) * 2010-04-23 2013-02-27 Vector Fabrics B.V. Improved embedded system performance
US8560606B2 (en) * 2010-11-01 2013-10-15 International Business Machines Corporation Social network informed mashup creation
JP5506721B2 (ja) * 2011-03-09 2014-05-28 インターナショナル・ビジネス・マシーンズ・コーポレーション サブクラステスト関数の実行結果を再利用してプログラムを最適化する最適化装置、最適化方法及び最適化プログラム
CN103092582B (zh) * 2011-10-31 2016-01-20 国际商业机器公司 用于处理发布事件和订阅事件的方法及系统
US20130246392A1 (en) * 2012-03-14 2013-09-19 Inago Inc. Conversational System and Method of Searching for Information
KR101369123B1 (ko) 2012-05-24 2014-03-04 한국수력원자력 주식회사 산화리튬을 이용한 염화리튬 염속의 2족 핵종의 분리 및 염화리튬 재생방법
US9413906B2 (en) * 2012-09-28 2016-08-09 Interactive Memories Inc. Method for making relevant content proposals based on information gleaned from an image-based project created in an electronic interface
US9092211B2 (en) * 2012-12-13 2015-07-28 Microsoft Technology Licensing, Llc Social-based information recommendation system
US20140173563A1 (en) * 2012-12-19 2014-06-19 Microsoft Corporation Editor visualizations
US9069568B2 (en) * 2012-12-19 2015-06-30 International Business Machines Corporation Compilation dependency resolution from a diverse group of candidate resources
US20140337372A1 (en) * 2013-05-13 2014-11-13 Samsung Electronics Co., Ltd. Method of providing program using semantic mashup technology
US20140365519A1 (en) * 2013-06-10 2014-12-11 Targit A/S Intelligent processing of user input to a business intelligence software application
US9053235B1 (en) * 2013-10-22 2015-06-09 The Mathworks, Inc. Program code interface for providing program code and corresponding results of evaluating the program code
KR102190813B1 (ko) * 2014-03-25 2020-12-14 한국전자통신연구원 코드 추천 및 공유 시스템 및 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011070640A (ja) * 2009-08-10 2011-04-07 Nec (China) Co Ltd デスクトップ・アプリケーションをウェブ・アプリケーションに変換する方法とシステム
US20120036492A1 (en) * 2010-08-06 2012-02-09 International Business Machines Corporation Automated analysis of code developer's profile
JP2013003664A (ja) * 2011-06-13 2013-01-07 Sony Corp 情報処理装置および方法
KR20130020199A (ko) * 2011-08-19 2013-02-27 인크로스 주식회사 통합 개발 환경에서의 코드 파일 위치 공유 시스템 및 방법
KR20130097252A (ko) * 2012-02-23 2013-09-03 삼성전자주식회사 소스 코드 분석에 의한 응용 프로그램 분석을 위한 방법 및 장치

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020060146A1 (ko) * 2018-09-21 2020-03-26 주식회사 럭스로보 소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리
KR20200034411A (ko) * 2018-09-21 2020-03-31 주식회사 럭스로보 소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리
KR101950208B1 (ko) * 2018-12-04 2019-02-22 (주)에스앤씨랩 웹 접근성 및 개방성 평가 방법 및 장치
WO2020116914A1 (ko) * 2018-12-04 2020-06-11 (주)에스앤씨랩 웹 접근성 및 개방성 평가 방법 및 장치
JP2022507806A (ja) * 2018-12-04 2022-01-18 エスエヌシー ラブ ウェブ接近性および開放性評価方法および装置
WO2022071708A1 (ko) * 2020-09-29 2022-04-07 삼성전자 주식회사 컨텐츠 추천 서비스를 제공하는 전자 장치 및 그 방법

Also Published As

Publication number Publication date
KR102190813B1 (ko) 2020-12-14
US9557972B2 (en) 2017-01-31
US20150277860A1 (en) 2015-10-01

Similar Documents

Publication Publication Date Title
KR20150111134A (ko) 코드 추천 및 공유 시스템 및 방법
US9753706B2 (en) Adding directives for versions of source files directly into source code
de Freitas Farias et al. A contextualized vocabulary model for identifying technical debt on code comments
US9460074B2 (en) Efficient data pattern matching
KR100692172B1 (ko) 종합 문자열 분석기 및 그 분석 방법
CN108763091B (zh) 用于回归测试的方法、装置及系统
US9262132B1 (en) Incremental local source code analysis
US20120159434A1 (en) Code clone notification and architectural change visualization
US10169005B2 (en) Consolidating and reusing portal information
WO2020204144A1 (ja) 業務分析方法
CN101286119A (zh) 一种通过分析代码变化确定功能点变化的方法
Nguyen et al. Cross-language program slicing for dynamic web applications
CN101739335A (zh) 建议的应用评估系统
US11030083B2 (en) Systems and methods for reducing storage required for code coverage results
US9037552B2 (en) Methods for analyzing a database and devices thereof
Nam et al. Marble: Mining for boilerplate code to identify API usability problems
JP2020126641A (ja) Apiマッシュアップ探査及びリコメンデーション
AU2009215520A1 (en) Code-based website experiments
CN107391528B (zh) 前端组件依赖信息搜索方法及设备
US20200225935A1 (en) Performing partial analysis of a source code base
Al-Msie'deen Tag clouds for software documents visualization
US20160179960A1 (en) Optimizing web crawling through web page pruning
CN110580170A (zh) 软件性能风险的识别方法及装置
CN115827487A (zh) 知识图谱构建及查询方法、装置、设备、存储介质及产品
US20220137959A1 (en) Detecting duplicated code patterns in visual programming language code instances

Legal Events

Date Code Title Description
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant