KR102309211B1 - 개발 시스템에서의 시맨틱 콘텐츠 액세스 기법 - Google Patents

개발 시스템에서의 시맨틱 콘텐츠 액세스 기법 Download PDF

Info

Publication number
KR102309211B1
KR102309211B1 KR1020167033762A KR20167033762A KR102309211B1 KR 102309211 B1 KR102309211 B1 KR 102309211B1 KR 1020167033762 A KR1020167033762 A KR 1020167033762A KR 20167033762 A KR20167033762 A KR 20167033762A KR 102309211 B1 KR102309211 B1 KR 102309211B1
Authority
KR
South Korea
Prior art keywords
search
type
development system
user
elements
Prior art date
Application number
KR1020167033762A
Other languages
English (en)
Other versions
KR20170013266A (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 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20170013266A publication Critical patent/KR20170013266A/ko
Application granted granted Critical
Publication of KR102309211B1 publication Critical patent/KR102309211B1/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/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/36Creation of semantic tools, e.g. ontology or thesauri
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

개발 시스템은, 일 예시에 있어서, 사용자 개발 입력을 감지하고, 사용자 개발 입력에 기초하여 컴퓨터 시스템의 요소를 변환하는 개발 모듈을 포함한다. 요소는 컴퓨터 시스템에서 모델링된 유형을 포함한다. 사용자 인터페이스 모듈은 사용자 입력 메커니즘을 갖춘 사용자 인터페이스 디스플레이를 생성하고, 컴퓨터 시스템의 요소를 검색하는 사용자 검색 질의를 나타내는 사용자 입력 메커니즘을 통해 수신된 사용자 검색 입력을 감지한다. 검색 엔진은 사용자 검색 질의에 대한 유형-기반 검색 파라미터를 식별한다. 검색 엔진은 유형-기반 검색 파라미터에 기초하여 유형-기반 검색 컴포넌트를 활성화하도록 제어된다. 유형-기반 검색 컴포넌트는 요소 검색을 수행해서 일련의 검색 결과를 사용자 인터페이스 디스플레이에서 리턴한다.

Description

개발 시스템에서의 시맨틱 콘텐츠 액세스 기법{SEMANTIC CONTENT ACCESSING IN A DEVELOPMENT SYSTEM}
컴퓨터 프로그램은 다양한 개발 툴 상에서 개발된다. 예컨대, 많은 소프트웨어 개발자는, 소프트웨어를 개발하기 위해 상호작용식(또는 통합형) 개발 환경(IDE)을 이용한다. 개발자들은, 컴퓨터 시스템 내부의 유형의 모델을 개발하기 위해, 또한 이 모델을 커스터마이징하기 위해, IDE를 이용한다.
예시적인 상호작용식 개발 환경은, 개발될 필요가 있는 코드를 개발자가 개발하고 테스트할 수 있도록, 또한 컴퓨터 시스템을 필요에 따라 커스터마이징하기 위해, 복수의 상이한 툴을 포함한다. 예시로서, IDE는, 컴퓨터 프로그래머가 소프트웨어를 개발할 때 이용하는, 소스 코드 에디터(source code editor), 하나 이상의 구축 자동화 툴(build automation tool) 및 디버거(debugger)를 포함할 수 있다. 일부 IDE는 예시적으로 컴파일러 또는 인터프리터, 혹은 이들 모두를 포함한다. 이들은, 그래픽 사용자 인터페이스의 구성을 간소화하는 버전 제어 시스템 및 다양한 툴을 포함할 수 있다. 이들은 또한, 클래스 브라우저(class browser), 객체 브라우저, 그리고 객체 지향 소프트웨어 개발에 사용할 클래스 계층 다이어그램을 포함할 수 있다. 따라서, 개발자는 IDE를 이용해서 코드 및 메타데이터를, 코드 및 메타데이터에 대한 커스터마이제이션과 함께 생성할 수 있으며, 이는 해당 조직에 이용하기 위한 시스템을 개발하는데 이용될 수 있다. 예컨대, 개발자는 애플리케이션 요소에 관한 소스 코드 및 메타데이터 파일을 갖고 작업할 수 있다. 어떤 애플리케이션은 메타데이터 및, 해당 메타데이터를 다양한 방식으로 소비하는 코드를 생성 또는 변경할 필요가 있을 수 있다.
IDE를 이용해서 소프트웨어를 생성 또는 커스터마이징함에 있어서, 애플리케이션 개발자는 애플리케이션 내의 특정 개념(유형으로 표현될 수 있음)을 모델링하고, 필요에 따라, 코드를 기입한다. 개발자가 IDE를 이용해서 개발하는 대규모 애플리케이션은, 수천 가지의 상이한 유형을 포함할 수 있다.
예시로서, 일부 컴퓨터 시스템은 특히, 전사적 자원 관리(ERP) 시스템, 고객 관계 관리(CRM) 시스템, 영업 종목(LOB) 시스템과 같은 비즈니스 시스템을 포함한다. 이들 컴퓨터 시스템 유형은 종종, 모델링되고 커스터마이징된 수천여 가지의 상이한 유형을 갖는다. 예시로서, 상기와 같은 비즈니스 시스템의 몇몇은 종종 단독으로 수천 가지의 상이한 형태를 가지며, 그 밖에도 수많은 유형이 있음은 말할 것도 없다.
비즈니스 시스템은 단일 유형의 컴퓨터 시스템이 아니며 많은 수의 유형을 갖는다. 예컨대, 게임용 시스템, 또는 매우 다양한 다른 유형의 시스템은 또한, 종종 소프트웨어 시스템에서 모델링되는 수천여 가지의 상이한 유형을 갖는다.
이상의 설명은 단지 일반적인 배경 정보를 위해 제공되는 것으로, 청구항의 청구대상의 범위를 결정하는 것을 돕는데 이용되게 하려는 의도는 없다.
소프트웨어를 개발하는 동안, 개발자는 개발 프로세스를 용이하게 하기 위한 요소를 검색하게 된다. 개발자는 검색 아키텍처를 통해서, 특정한 기준을 만족하는 메타데이터 및 코드를 검색할 수 있다. 검색 아키텍처는 시맨틱(semantic) 요소 정보를 사용해서, 개발자의 질의와 관련된 결과를 리턴한다.
일례로, 개발 시스템은, 사용자 개발 입력을 감지하고 해당 사용자 개발 입력에 기초하여 컴퓨터 시스템의 요소를 변환하는 개발 모듈을 포함한다. 이 요소는 컴퓨터 시스템에서 모델링된 유형을 포함한다. 사용자 인터페이스 모듈은 사용자 입력 메커니즘을 갖춘 사용자 인터페이스 디스플레이를 생성하고, 사용자 입력 메커니즘을 통해 수신되는, 컴퓨터 시스템의 요소를 검색하기 위한 사용자 검색 질의를 나타내는 사용자 검색 입력을 감지한다. 검색 엔진은 사용자 검색 질의에 대한 유형-기반 검색 파라미터를 식별한다. 검색 엔진은 유형-기반 검색 파라미터에 기초하여 유형-기반 검색 컴포넌트를 활성화하도록 제어된다. 유형-기반 검색 컴포넌트는 일련의 검색 결과를 사용자 인터페이스 디스플레이에 리턴하기 위해 요소 검색을 수행한다.
본 개요는 후속하여 발명의 상세한 설명 부분에서 설명되는 개념들 중 선택된 것들을 단순화된 형태로 소개하고자 제공되는 것이다. 본 개요는 청구항의 청구대상의 핵심적인 특징이나 필수적인 특징들을 밝히고자 함이 아니며, 청구항의 청구대상의 범위를 정하는 것을 돕는 데 이용이 되고자 함도 아니다. 청구항의 청구대상은 발명의 배경이 되는 기술 부분에서 주지된 임의의 또는 모든 단점을 해결하는 구현예들에 한정되지 않는다.
도 1은 시맨틱 검색 아키텍처의 일 예시의 블럭도이다.
도 2는 시맨틱 검색 컴포넌트를 생성하는 방법의 일 예시를 설명하는 흐름도이다.
도 3은 일 예시로서 시맨틱 검색 기능을 설명하는 블럭도이다.
도 4는 시맨틱 검색 컴포넌트를 이용해서 검색을 수행하는 방법의 일 예시를 설명하는 흐름도이다.
도 5는 사용자 인터페이스 디스플레이의 일 예시를 설명한다.
도 6은 사용자 인터페이스 디스플레이의 일 예시를 설명한다.
도 7은 클라우드 컴퓨팅 아키텍처에 배치된, 도 1에서 설명된 아키텍처의 일 예시를 도시하는 블럭도이다.
도 8 내지 도 12는 도 1에 도시된 아키텍처와 함께 이용될 수 있는 모바일 장치의 다양한 예시를 도시한다.
도 13은 하나의 예시적인 컴퓨팅 환경의 블럭도이다.
도 1은 시맨틱 검색 아키텍처(100)의 일 예시의 블럭도이다. 아키텍처(100)는 개발 기능(104)을 갖는 상호작용식 개발 시스템(예컨대, IDE)(102)을 포함한다. 도 1은 개발자(106)가 컴퓨터 시스템에서 가동되는 애플리케이션 요소(107)의 개발 및/또는 커스터마이제이션을 수행하기 위해 시스템(102)과 상호작용하는 것을 도시한다. 예컨대, 각각의 애플리케이션 요소는 메타데이터(109)를 포함하는 것은 물론이고, 코드(111)도 포함할 수 있다. 예시로서, 개발자(106)는 메타데이터(109) 및 코드(111)를 생성 또는 변경하는 등에 의해 애플리케이션의 요소(107)를 개발하기 위해 기능(104)을 이용한다. 한정으로서가 아닌, 일 예시에 있어서, 요소(107)는 객체-지향 프로그래밍 환경에서 객체들을 포함한다. 임의의 적절한 프로그래밍 언어(들)가 시스템(102)에서 이용될 수 있다.
설명된 예시에 있어서, 모델 저장소(108)는 애플리케이션 요소의 다양한 상이한 유형(예컨대, 유형들)에 대응하는 메타데이터 및 코드를 저장하고, 예컨대 시스템(102) 및 검색 컴포넌트 코드 생성기(130)에 의해 액세스 가능하다. "유형(type)"은 시스템에서 모델링된 개념들을 나타내는 추상적 개념을 의미한다. 예컨대, 비즈니스 시스템에서, 요소 유형은 몇 가지 예를 들자면, 형태(forms), 엔티티(entities), 클래스(classes), 테이블(tables), 메뉴 아이템(menu items), 보안 기능(security roles), 및/또는 허가(permissions)를 포함할 수 있다. 일 예시에 있어서, 테이블 객체는 데이터베이스에서 애플리케이션 데이터를 존속시키는 메타데이터 및 코드를 포함한다. 다른 예시에 있어서, 형태 객체는 애플리케이션 사용자가 정보를 소비해서 애플리케이션과 상호작용하도록 다양한 장치에서 디스플레이되게 정보 콘텐츠를 묘사하는 메타데이터 및 코드를 포함한다.
일 예시에 있어서, 애플리케이션 요소(107)를 개발하기 위해 개발 기능(104)을 이용할 경우에, 개발자(106)에게는 애플리케이션 요소(107)를 코딩하기 위한 통합형 또는 IDE 뷰(view)가 제시된다. 간략화된 일 예시가 설명을 위해 아래의 테이블 1에 도시된다.
테이블 1(Table 1)
Figure 112016118043794-pct00001
이렇게 해서, 애플리케이션 요소(107)를 개발하기 위해 개발자(106)에 의해 작성된 코드 및 메타데이터는 제 1 포맷으로, 예컨대 애플리케이션 요소(107)를 코딩하기 위한 사용자-친화적 인터페이스를 제공하는 코드 에디터 뷰로 제시된다. 그러나, 개발자(106)가 코드 및 메타데이터를 제 1 포맷으로 보면서 작성하는 동안, 상호작용식 개발 시스템(102)은 개발된 애플리케이션 요소의 소스 코드 표현에 대하여 제 1 포맷과는 다른 제 2 포맷으로 유지하고 작동한다. 일 예시에 있어서, 코드 및 메타데이터를 포함하는 연재식 표현(serialized representation)은 각각의 요소에 대하여 시스템(102)에 의해 유지된다. 제 2 포맷은 시스템(102)에 의한 실행을 위한 기계 판독가능 및 처리가능 포맷이다. 한정이 아닌, 일 예시에 있어서, 모델 저장소(108)는 소스 코드 표현을 XML 파일로서 저장하는 파일 시스템을 포함한다. 메타데이터 XML 및 코드 XML은 각자의 유형을 가진 연재식 요소를 포함한다. 아래의 테이블 2는 테이블 1에 도시된 통합형 뷰에 대응하는 예시적인 XML 파일을 도시한다:
테이블 2(Table 2)
Figure 112016118043794-pct00002
Figure 112016118043794-pct00003
Figure 112016118043794-pct00004
상기 예시에 있어서, 메타데이터 및 코드는 하나의 XML 파일에 연재된다. 즉, 코드의 스니펫(snippets: 코드조각)(즉, 비구조화 문자열) 및 메타데이터(즉, 속성 및 값의 구조화된 세트들)는 XML 파일에 산재된다. 그러나, 당업자라면, 다른 포맷들이 이용될 수 있음을 이해할 것이다.
개발자(106)는 별도의 개발자 장치(예컨대, 개인용 컴퓨터, 태블릿, 다른 모바일 장치 등)를 통해, 또는 직접적으로 상호작용식 개발 시스템(102)과 상호작용할 수 있다. 개발자(106)는 네트워크를 통해(예컨대, 원격으로) 시스템(102)과 상호작용할 수도 있다. 단지, 예시를 위한 것이지만, 도 1에서는 개발자(106)가 시스템(102)과 직접적으로(예컨대, 로컬로) 상호작용하는 것이 도시된다.
일 예시에 있어서, 상호작용식 개발 시스템(102)은 프로세서(110) 및 사용자 인터페이스 모듈(112)을 포함한다. 사용자 인터페이스 모듈(112)은 개발자(106)에 의한 상호작용을 위해, 사용자 입력 메커니즘(118)을 갖춘 사용자 인터페이스 디스플레이(116)를 생성한다. 개발자(106)는 상호작용식 개발 시스템(102)을 제어 및 조작하기 위해 사용자 입력 메커니즘(118)과 상호작용한다. 일 예시에 있어서, 개발자(106)는 개발 기능(104)을 구현하기 위해, 또한 검색 모듈(120) 및 내비게이션 모듈(122)을 이용하기 위해 이를 행할 수 있다. 시스템(102)은 기타 아이템들(114)을 포함할 수 있음은 물론이다.
개발자(106)는 모델 저장소(108)에 있는 기존의 코드 및 메타데이터를 이용하거나, 또는 신규 코드 및 메타데이터를 생성하거나, 또는 기존의 것들과 신규 코드 및 메타데이터의 조합을 생성할 수 있다. 그렇게 행함에 있어서, 모델 저장소(108)에 있는 기존의 요소들은 변경되거나 또는 삭제될 수 있고, 신규 요소들이 추가될 수 있다. 개발이 용이하도록, 개발자(106)는 관심 요소를 찾기 위해 모델 저장소(108)의 검색을 원할 수 있다. 예컨대, 개발자(106)는 커스터마이징을 위해 특정 요소를 애플리케이션 내부에 위치시키기를 바랄 수 있다.
그러나, 부분적으로는, 일반적으로 매우 큰 코드베이스(codebase)의 사이즈로 인해, 특정한 개발자 검색 기준을 만족하는 요소를 찾는 것이 쉽지 않을 수 있다. 일부 검색 구현예는 개발자 질의가 실행되는 조기에 인덱스를 구축하는 것을 필요로 한다. 예컨대, 콘텐츠를 내비게이팅하고 추후 검색에 이용되는 인덱스를 구축하는 크롤러(crawler)가 있다. 개발 플랫폼의 경우에, 요소가 변경되거나 또는 추가되면, 인덱스가 만료된다. 또한, 코드베이스의 사이즈가 정해지면, 인덱스를 반복적으로 재구축하는데 많은 시간이 걸린다.
설명된 예시에 있어서, 시맨틱 검색 아키텍처(100)는 검색 모듈(120)을 이용해서 요소의 이름, 유형, 및/또는 속성을 고려하여 모델(108)을 의미론적으로 검색함으로써 검색 결과를 취득한다. 검색은, 요소 유형들의 구조의 이해와, 요소 유형들 및 해당 요소 유형들 내부의 속성들의 의미를 활용한다는 점에서 시맨틱 검색이다. 아래에서 더 상세히 논의되겠지만, 요소 유형들의 특정 구조는 모델 저장소(108)의 요소들을 검색하는 것과 관련될 수 있다. 한정이 아닌, 설명으로서, 각각의 요소 유형은 해당 요소 유형의 요소들에 대한 런타임 거동을 규정하는 속성, 방법, 및/또는 계산의 특정 구조를 갖는다. 예컨대, 테이블 요소 유형은 이름(예컨대, "고객 테이블(customer table)")과, 고객의 속성을 식별하는 속성 세트(예컨대, 고객 ID, 어드레스 등)를 포함할 수 있다. 또한, 이 예시에 있어서, 테이블 요소 유형은 고객에 대한 값을 계산하는 방법 및/또는 해당 값을 디스플레이하는 방법을 포함할 수 있다.
아키텍처(100)의 동작 전체를 보다 상세하게 기술하기 전에, 간략한 개요를 제공한다. 일 예시에 있어서, 검색 모듈(120)은 검색 기준을 규정하는 사용자 검색 질의를 한 가지 이상의 토큰 형태로 수신하는 검색 엔진을 포함한다. 토큰은 검색 파라미터를 규정하는 한편, 문자열 또는 용어를 형성하는 하나 이상의 문자를 포함할 수 있다. 검색 엔진은 개발자(106)로부터의 검색 질의를 파싱(parse)해서 시맨틱 검색 파라미터 또는 제한(constraint)을 식별하는 한편, 모델 저장소(108)에 대하여 검색 질의를 실행해서 개발자(106)에게 제공되는 일련의 검색 결과를 취득한다. 일 예시에 있어서, 질의를 실행하는 것은 하나 이상의 토큰을 애플리케이션 요소에서의 속성들 및/또는 방법들에 대하여 매칭시키는 것을 포함한다.
시맨틱 검색 파라미터는 검색 질의 자체에 명시적으로 제공될 수 있거나, 또는 검색 질의로부터 시사 또는 유래될 수 있다. 예컨대, 도 5를 참조하여 아래에서 기술되는 예시에 있어서, 개발자(106)는 하기와 같은 검색 질의를 입력한다:
type:table, method name:insert property:"source=crosscompany"
여기서, 질의로부터 식별된 시맨틱 검색 파라미터는 유형-기반 제한(type-based constraint)을 포함한다. 즉, 개발자(106)는 요소 유형이 "table(테이블)"이고, 이름이 토큰 "insert(인서트)"와 매칭되는 방법이고, 또한 값이 토큰 "crosscompany(회사간)"와 매칭되는 소스 속성으로 이루어진 요소들을 원한다. 본 명세서에서는 실시예들이 유형-기반 제한의 맥락에서 논의되지만, 다른 시맨틱 검색 파라미터 또는 제한이 이용될 수 있다는 점에 유의한다.
설명된 예시에 있어서, 검색을 수행하기 위해, 검색 모듈(120)은 검색 컴포넌트 코드 생성기(130)에 의해 생성되어 있는 복수의 검색 컴포넌트(즉, 검색 컴포넌트(124 및 126))를 저장하는 검색 컴포넌트 저장소(128)에 액세스한다. 검색 컴포넌트 코드 생성기(130)를 이용해서 검색 컴포넌트를 생성하는 일 예시는 도 2를 참조하여 아래에서 더 상세하게 논의된다. 간략히는, 검색 컴포넌트 코드 생성기(130)는 모델 저장소(108)에서 모델링된 각각의 상이한 요소 유형에 대하여 검색 컴포넌트를 생성하도록 구성된 프로세서(131)를 포함한다. 각각의 검색 컴포넌트는 요소 유형들 중 특정한 하나의 유형에 대하여 생성된다. 이렇게 해서, 각각의 검색 컴포넌트는 그것이 생성되었던 특정한 요소 유형의 구조에 대하여 특정된다. 일 예시에 있어서, 검색 컴포넌트는 개발자(106)에 의해 이용될 수 있는 가능한 모든 요소 유형에 대하여 생성되어서 저장소(128)에 저장된다. 예컨대, 일 예시에 있어서, 미리 정해진 일련의 요소 유형을 개발자(106)가 이용할 수 있게 되고, 임의의 신규 요소 유형들이 시스템(102)에 대한 갱신을 통해 시스템(102)에 추가된다.
검색 모듈(120)은 검색 질의로부터 유형-기반 검색 제한을 이용해서, 결과 목록을 리턴하는데 이용되는 검색 컴포넌트 저장소(128)로부터의 하나 이상의 검색 컴포넌트를 모델 저장소(108) 내의 요소들로부터 식별한다. 검색 컴포넌트를 이용해서 모델 저장소(108)를 검색하는 일 예시는 도 4를 참조하여 아래에서 더 상세하게 논의된다. 간략히는, 검색 모듈(120)은 각각의 유형-기반 검색 제한에 대하여 상응하는 검색 컴포넌트를 식별한다. 상기 예시에 있어서, 검색 모듈(120)은 테이블 요소 유형에 대하여 생성되었던 검색 컴포넌트(즉, 검색 컴포넌트(124 또는 126))를 식별한다. 식별된 검색 컴포넌트는 테이블 요소 유형을 갖는 모델 저장소(108) 내의 각각의 요소에 대하여 인스턴스화되어서(instantiated), 검색 질의에서 방법 이름과 속성값을 매칭시키는 요소들을 식별한다. 검색 모듈(120)은 인스턴스화된 검색 컴포넌트로부터 취득한 검색 결과들을 수집한다. 내비게이션 모듈(122)은 검색 결과의 사용자 내비게이션을 가능하게 한다.
그에 따라, 검색 아키텍처(100)는, 인덱스를 조기에 구축하거나 유지할 필요없이, 모델 저장소(108)의 검색을 수행함에 있어서 애플리케이션 요소(107)에 관한 시맨틱 정보를 활용한다. 이는 개발 시스템에서 검색 기능을 실행함에 있어서 처리 부하 및 시간과, 메모리 요건을 경감시킬 수 있고, 사용자 질의에 대한 검색 결과 적합성을 향상시킬 수 있다.
설명을 위해, 도 1의 예시에 있어서, 애플리케이션 요소의 각각의 서로 다른 유형에 대하여, 아키텍처(100)는 해당 요소 유형의 모델 저장소(108)의 기존의 요소들을 검색하도록 구성되는 특정한 검색 컴포넌트들을 유지한다. 그러나, 이들 검색 컴포넌트는 또한, 신규 요소의 유형(즉, 모든 요소 유형들은 미리 정해진 검색 컴포넌트를 가짐) 또는 특정한 속성에 관계없이, 개발자(106)에 의해 모델 저장소(108)에 추가된 임의의 신규 요소들을 검색할 수 있다. 반대로, 인덱스 구축형 검색 시스템의 경우에는, 신규 요소들을 모델 저장소(108)에 추가하게 되면, 인덱스가 신규 요소들을 포함하도록 갱신될 필요가 있다.
추가적인 설명을 위해, 모델 저장소(108)가 2가지의 상이한 요소 유형(즉, 테이블 요소 유형(132) 및 형태 요소 유형(134))을 포함한다고 가정한다. 제 1 검색 컴포넌트(124)는 요소 유형(132)에 대하여 생성되고, 제 2 검색 컴포넌트(126)는 요소 유형(134)에 대하여 생성된다. 도 1의 예시에 있어서, 코드 생성기(130)는 각각의 요소 유형에 대하여 단지 한 번만 가동될 필요가 있다. 이렇게 해서, 검색 컴포넌트(124 및 126)가 생성되면, 유형(132 및 134)의 기존의 요소들이 모델 저장소(108)에서 수정되거나 및/또는 유형(132 및 134)의 신규 요소들이 모델 저장소(108)에 추가되더라도, 코드 생성기(130)는 검색 컴포넌트들을 재생성하거나 수정할 필요가 없다.
검색 컴포넌트(124)는 검색 모듈(120)이 유형(132)의 요소들을 검색할 때 인스턴스화되고, 검색 컴포넌트(126)는 검색 모듈(120)이 유형(134)의 요소들을 검색할 때 인스턴스화된다. 일 예시에 있어서, 요소 유형들(132 및 134)이 모두 검색되면, 검색 컴포넌트(124 및 126)는 검색 시간을 줄이도록 동시에 작동할 수 있다. 도 1에는 단지 2가지의 요소 유형 및 유형-기반 검색 컴포넌트가 도시되지만, 임의의 수의 요소 유형 및 시맨틱 검색 컴포넌트가 구현될 수 있다는 점에 유의한다.
도 1에서는 모델 저장소(108) 및 검색 컴포넌트 저장소(128)가 상호작용식 개발 시스템(102)과는 별개인 것으로 설명되어 있지만, 모델 저장소(108) 및/또는 검색 컴포넌트 저장소(128)가 상호작용식 개발 시스템(102)의 일부로 될 수 있다는 점에 유의한다. 그러나, 대역폭 및 지연을 고려해야 하기 때문에, 일부 구현예에 있어서 모델 저장소(108) 및 검색 컴포넌트 저장소(128)는 동일한 컴퓨팅 시스템 상에 유지될 수 있지만, 이는 하나의 예시일 뿐이다. 이렇게 해서, 검색 요청 및 결과가 네트워크를 통해 송신될 수 있지만, 검색 아키텍처(100)는 모델 저장소(108)의 전송을 필요로 하지 않는다. 마찬가지로, 이는 아키텍처의 하나의 예시일 뿐이다.
또한, 도 1은 다양한 여러 기능 블럭을 도시한다. 블럭들은 보다 많은 기능이 각각의 블럭에 의해 수행되도록 통합될 수 있거나, 또는 기능이 더 분산되도록 분할될 수 있다는 점에 유의한다.
상기 논의는 모델 저장소(108) 및 검색 컴포넌트 저장소(128)를 포함하는 다수의 데이터 저장소를 도시했다는 점에도 유의해야 한다. 2개의 독립적인 데이터 저장소가 도시되어 있지만, 이들은 단일의 데이터 저장소 내에 형성될 수도 있다. 또한, 이들 데이터 저장소 내의 데이터는 다수의 추가적인 데이터 저장소에 저장될 수 있음은 물론이다. 또한, 데이터 저장소들은 그들에 액세스하는 환경, 에이전트, 모듈, 및/또는 컴포넌트에 대하여 로컬로 될 수 있거나, 또는 이들로부터 원격으로 되어 이들 환경, 에이전트, 모듈, 및/또는 컴포넌트에 의해 액세스될 수 있다. 유사하게, 일부는 로컬로 되고, 나머지는 원격으로 될 수도 있다.
설명된 예시에 있어서, 프로세서(110 및 131)는 연관 메모리 및 타이밍 회로(별도로 도시되지는 않음)를 갖춘 컴퓨터 프로세서를 포함한다. 프로세서들은 그들이 속하는 에이전트 또는 환경의 기능부이고, 해당 환경 또는 에이전트에 있는 다른 아이템들에 의해 예시적으로 활성화되고, 그 기능을 가능하게 한다.
도 2는 시맨틱 검색 컴포넌트를 생성하는 방법(200)의 일 예시를 설명하는 흐름도이다. 한정이 아닌, 설명을 위해, 방법(200)은 유형-기반 검색 컴포넌트를 생성하는 아키텍처(100)의 맥락에서 기술된다.
방법(200)은 주기적으로 및/또는 조건 또는 이벤트에 응답하여 개시될 수 있다. 예컨대, 방법(200)은 시스템(102)에 의해 지지되는 요소 유형들을 추가 또는 수정하는 시스템(102)에 대한 갱신에 응답하여 개시될 수 있다. 다른 예시에 있어서, 방법(200)은 개발자(106)로부터의 입력에 응답하여(예컨대, 사용자 인터페이스(116) 상에서의 열기, 닫기, 세이브 등과 같은 제어를 선택함으로써) 개시될 수 있다.
스텝(202)에서, 검색 컴포넌트 코드 생성기(130)는 모델 저장소(108)에 액세스하고, 스텝(204)에서, 유형-기반 검색 컴포넌트를 생성할 임의의 신규 요소 유형들이 존재하는지의 여부를 결정한다. 일 예시에 있어서, 검색 컴포넌트 코드 생성기(130)는 모델 저장소(108) 내의 요소들의 일부(예컨대, 가장 최근의 변경 및 추가) 또는 전부를 분석하고, 해당 요소들을 기존의 또는 기지의 요소 유형들(즉, 유형(132 및 134))에 대하여 비교한다. 예컨대, 검색 컴포넌트 코드 생성기(130)는 개발자(106)에 의해 변경 또는 추가된 요소들을 식별한다.
신규 요소 유형이 식별되면, 검색 컴포넌트 코드 생성기(130)는 스텝(206)에서 신규 요소 유형의 구조를 분석하고, 스텝(208)에서 신규 요소 유형에 대한 유형-기반 검색 컴포넌트를 생성한다. 일 예시에 있어서, 검색 컴포넌트 코드 생성기(130)는 신규 요소 유형의 구조를 임의의 하위유형(subtype)들로 파싱하고, 또한 해당 유형 및/또는 하위유형이 포함하는 속성이 어떤 속성인지, 임의의 하위(child) 요소 유형, 해당 요소 유형으로부터 어떤 요소 유형들이 유래하는지, 및 해당 요소 유형의 속성 게터(getter)들에 대한 구현을 결정한다. 각각의 속성 게터는, 예컨대 요소 유형에서의 해당 속성의 위치 및/또는 다른 속성들에 대한 관계에 기초하여, 요소 유형의 속성을 검색하는 기능을 규정한다. 일 예시에 있어서, 검색 컴포넌트 코드 생성기(130)는 상이한 속성 게터 코드를 생성해서 요소 유형 구조의 상이한 부분들을 검색한다. 예컨대, 코드의 하나의 피스(piece)는 요소의 주어진 부분에서의 방법들을 검색할 수 있고, 코드의 하나의 피스는 제어부 등을 검토할 수 있다. 위에서 논의된 고객 테이블 요소 유형 예시에 대해서는, 하나의 속성 게터가 "고객 ID" 속성을 리턴하도록 구성될 수 있고, 다른 속성 게터가 "어드레스" 속성을 리턴하도록 구성될 수 있다.
각각의 검색 컴포넌트는, 검색 컴포넌트가 생성되는 요소 유형에 기초하는 정해진 요소 패턴(에컨대, 하위 요소, 속성, 방법 등의 패턴)을 따르도록 구성된다. 한정하는 것이 아니라, 예컨대, 도 1에서 요소 유형(132 및 134)은 서로 상이한 하위 요소들의 패턴들을 갖는다. 검색 컴포넌트(124)는 요소 유형(132)과 연관된 하위 요소들의 값들을 검사 및 리턴하는 검색 방법(들)을 호출하도록 구성되고, 검색 컴포넌트(126)는 요소 유형(134)과 연관된 하위 요소들의 값들을 검사 및 리턴하는 검색 방법(들)을 호출하도록 구성된다.
예시로서, 하나의 메타데이터 요소는 트리 데이터 구조를 포함하고, 이름 및 메타데이터 요소 유형에 의해 규정된다. 메타데이터 요소 유형은 일련의 속성들에 의해 더 규정되고, 각각의 속성은 이름 및 속성값의 유형에 의해 규정된다. 속성값의 유형은, 예컨대 프리미티브(primitive)(문자열(YesNo, Date, Tags 등)로 변환 가능))일 수 있지만, 이것에 한정되는 것은 아니다. 이러한 속성을 "단순 속성(simple property)"이라고도 한다. 속성값의 다른 유형은 하위 메타데이터 요소를 포함하는 메타데이터 요소 유형이다. 이러한 속성을 "노드 속성(node property)"이라고 할 수도 있다. 루트(root) 메타데이터 요소는 메타데이터 스토리지에 직접 저장되며 어떠한 상위(parents) 노드도 갖지 않는 요소이다. 하위 메타데이터 요소는 다른 요소 노드 속성의 일부에 포함되는 요소이다. 메타데이터 경로는 메타데이터 요소를 고유하게 식별하고 메타데이터 요소를 용이하게 위치결정하는 문자열을 포함한다. 일 예시에 있어서, 경로의 형태는:
Figure 112016118043794-pct00005
이고,
여기서:
<Root_type> - 루트 메타데이터 요소의 유형
<Root_element_name> - 루트 요소의 이름
<Subtype_i> - 트리 내의 각각의 하위 메타데이터 요소의 유형들
<Subelement_name_i> - 트리 내의 각각의 하위 메타데이터 요소의 이름들
스텝(210)에서, 생성된 시맨틱 검색 컴포넌트는 검색 컴포넌트 저장소(128)에 저장된다. 임의의 추가적인 신규 요소 유형들이 스텝(212)에서 식별되면, 신규 요소 유형(들)에 대하여 스텝들(206, 208 및 210)이 반복된다.
도 3은 일 예시로서 시맨틱 검색 기능을 설명하는 블럭도이다. 한정이 아닌, 설명을 위해, 도 3은 아키텍처(100)에서의 시맨틱 검색 기능의 맥락에서 기술된다.
블럭(250)은 상호작용식 개발 시스템(102)에 대한 인터페이스를 제공한다. 블럭(250)을 통해, 검색 모듈(120)이 블럭(252)에서 질의 파서(query parser)에게 제공되는 검색 질의를 수신한다. 질의는 필터(들)를 규정하는 하나 이상의 검색 기준을 제공하고, 임의의 적절한 구문(syntax) 또는 문법(grammar)을 구비할 수 있다.
비교적 단순한 구문 예시의 하나가 아래에 제공된다:
검색 질의는 search _string이고, 여기서:
Figure 112016118043794-pct00006
따라서, 검색 문자열은 일반적인 형태의 일련의 필터로 구성된다:
Figure 112016118043794-pct00007
여기서, <filter_i> 는 용인되는 필터 이름들 중 하나이고, <filter_i_value> 는 콤마 구분 값(CSV)이며, 필터링 값으로 인용될 수 있다.
위에서 설명되고 도 3에 도시된 바와 같이, 사용자 검색 기준의 일 예시는 하나의 문자열 또는 일련의 문자열들을 지정할 수 있는 요소 이름이다. 요소는, 요소 이름이 해당 문자열들 중 적어도 하나의 문자열을 포함하는 경우에 이 기준을 만족하는 것으로 간주된다. 각각의 콤마 구분 값은 용인되는 요소 이름일 수 있다. 일 예시에 있어서, 요소 이름은 디폴트 필터이다. 따라서, 검색 질의가 단일 토큰을 포함하면, 그것이 요소 이름일 것으로 추정된다. 이 예시에 있어서, 식별되는 유형-기반 제한이 없으면, 검색 아키텍처는 모든 가용 요소 유형에 대한 검색 컴포넌트들을 인스턴스화할 수 있다.
다른 예시 기준은 하나의 요소 유형 또는 일련의 요소 유형들을 지정할 수 있는 요소 유형이다. 요소는 지정된 유형들 중 하나로 이루어질 경우에 이 기준을 만족하는 것으로 간주된다. 각각의 콤마 구분 값은 요소 유형들(즉, 테이블, 클래스, 필드) 중 하나의 이름일 수 있다. 검색 질의는 루트 및 하위유형들을 모두 값으로서 지정할 수 있다. 일 예시에 있어서, 필터링 로직은 다음과 같이 이루어질 수 있다:
(roottype_1 OR roottype_2 OR ... OR roottype_N) AND (subtype_1 OR subtype_2 OR ... OR subtype_N)
다른 예시 기준은 일련의 키-값 쌍들 "속성의 이름 - 속성의 값(property's name - property's value)"을 지정할 수 있는 요소 속성이다. 요소는, 각각의 쌍에 대하여 a) 요소가 지정된 이름으로 "단순(simple)" 속성을 포함하고, 또한 b) 문자열로 변환된 이 속성의 값이 지정된 값을 포함하는 것으로 인정되는 경우에 기준을 만족하는 것으로 간주된다. 각각의 콤마 구분 값은 property_name = property_value 형태로 될 수 있다.
블럭(254)에서, 하나 이상의 유형-기반 검색 컴포넌트(예컨대, 컴포넌트(124 및/또는 126))는 식별된 요소 유형(들)에 기초하여 인스턴스화된다. 예컨대, 이는 파서 블럭(252)으로부터의 유형 필터 기준에 기초하여 블럭(256)에서 (예컨대, 유형-기반 검색 컴포넌트 저장소(128)로부터) 유형 정보에 액세스함으로써 수행될 수 있다. 블럭(256)은, 한정되는 것은 아니지만, 유형(들)이 포함하는 속성이 어떤 속성인지, 요소 유형의 하위 요소들의 유형들, 요소 유형으로부터 어떤 요소 유형들이 유래되는지, 및 요소 유형의 속성 게터들에 대한 구현을 포함하는 요소 유형(들)에 관한 정보를 제공한다.
일 예시에 있어서, 블럭(254)은 유형 기준을 속성 기준과 부합시키기 위해 블럭(256)에 의해 제공된 유형 정보를 이용해서 검색 옵션들을 처리한다. 검색 기준이 하나 이상의 속성을 포함하는 경우에, 블럭(254)은, 유형 정보를 이용해서, 검색된 속성들을 포함할 수 없는 모든 요소 유형을 필터링할 수 있다.
검색되는 각각의 요소 유형에 대하여, 상응하는 유형-기반 검색 컴포넌트는 코드 생성기(130)에 의해 생성된 코드에 따라 인스턴스화된다.
블럭(258)에서, 모델 저장소(108) 내의 요소들에 대한 참조는 블럭(254)으로부터의 검색 기준 및 블럭(256)에서 인스턴스화된 시맨틱 검색 컴포넌트에 따라 취득된다. 예컨대, 메타데이터 요소 참조는 루트 요소의 이름의 취합(스토리지 액세스와 관계없는 급속 동작) 및/또는 요소의 로딩(스토리지 액세스와 관계되는 상대적으로 오래 걸리는 동작)을 가능하게 할 수 있다.
블럭(260)에서, 블럭(258)에서 취득된 요소 참조는, 예컨대 요소의 이름 또는 그 밖의 경험적 접근(heuristics)의 지정된 기준에 기초하여 청크(chunk)로 우선처리된다. 예컨대, 검색된 이름들 중 어느 하나를 포함하는 이름을 갖는 루트 요소는 해당 이름을 포함하지 않는 루트 요소들보다 먼저 처리되게 된다.
블럭(262)은 모델 저장소(108) 내의 특정 요소들이 검색 기준을 만족하는지를 결정하도록 해당 특정 요소들을 처리한다. 일 예시에 있어서, 요소는, 요소의 유형이 블럭(254)에서 지정된 필요 유형들 중 하나인 경우, 요소의 이름이 필요 이름들 중 하나 또는 그 일부를 포함하는 경우, 그리고 검색 기준에 의해 지정된 각각의 "속성의 이름 - 속성의 값" 쌍에 대하여 요소가 상기와 같은 이름의 속성을 포함하고 이 속성의 값이 지정된 속성의 값을 포함하는 것으로 인정되는 경우이면 검색 기준을 만족하는 것으로 간주된다.
일 예시에 있어서, 블럭(262)은 요소가 검색 기준을 만족하는지의 여부를 결정하는데 이용되는, 요소 술어(element predicate) 기능 또는 그 밖의 정보를 블럭(264)으로부터 취득한다. 블럭(264)은 블럭(256)으로부터의 정보를 이용해서, 블럭(262)에 의해 제공된 요소 유형들 각각에 대한 술어 기능을 생성한다. 예컨대, 블럭(264)은 요소 유형들을 블럭(256)에 제공하고, 각각의 요소 유형에 대한 속성 게터들의 구현에 관한 정보를 수신한다.
모델 저장소(108) 내의 요소가 검색 기준을 만족하면, 결과가 인터페이스 블럭(250)을 통해 개발자(106)에게 제공된다.
도 4는 시맨틱 검색 컴포넌트를 이용해서 검색을 수행하는 방법(300)의 일 예시를 설명하는 흐름도이다. 한정이 아닌, 설명을 위해, 방법(300)은 유형-기반 검색 컴포넌트를 이용해서 검색을 수행하는 아키텍처(100)의 맥락에서 기술된다.
스텝(302)에서, 예컨대 사용자 인터페이스 디스플레이(116)를 이용해서 개발 서피스(surface)가 디스플레이된다. 스텝(304)에서, 검색 입력이 수신되고, 스텝(306)에서, 검색 기준을 식별하도록 검색 입력이 파싱된다. 검색 기준은 유형-기반 제한, 방법 이름, 및 속성값을 예로서 포함하지만, 이들에 한정되는 것은 아니다. 이후, 검색 모듈(120)은 검색 기준을 만족하는 요소들을 모델 저장소(108)에서 검색한다.
스텝(308)에서, 모델 저장소(108)를 검색하기 위해 하나 이상의 유형-기반 검색 컴포넌트가 식별되어 인스턴스화된다. 예컨대, 도 3에 대하여 위에서 논의된 바와 같이, 유형-기반 검색 제한은 검색 입력에서 명시적으로 규정될 수 있다. 다른 예시에 있어서, 유형-기반 검색 제한은 검색 입력에 제공된 토큰들로부터 유추될 수 있다. 예컨대, 검색 입력에서 제공된 속성값에 대하여, 스텝(308)은 어느 요소 유형들이 상응하는 속성을 갖는지를 결정할 수 있다.
이후, 검색 질의에 기초하여 모델 저장소(108)에서 요소들을 검색하기 위해 하나 이상의 유형-기반 검색 컴포넌트가 검색 모듈(120)에 의해 인스턴스화된다. 일 예시에 있어서, 상응하는 요소 유형의 각각의 요소에 대하여 검색 컴포넌트의 별도의 인스턴스화가 생성된다.
인스턴스화된 검색 컴포넌트(들)는, 스텝(310)에서, 모델 저장소(108)에서 요소들을 검색하는데 이용되고, 스텝(312)에서, 스텝(306)으로부터 식별된 기준을 만족하는 요소들을 식별한다. 위에서 논의된 바와 같이, 일 예시에 있어서, 검색 컴포넌트는 개발자(106)에 의해 개발된 요소들을 직접 검색하기보다는, 요소들의 연재식 표현(예컨대, XML 파일)을 검색할 수 있다.
한정이 아닌, 예시로서, 모델 저장소(108)에서 요소의 연재식 표현을 검색하는 동안, 검색 컴포넌트는 연재식 표현에서 상응하는 요소들에 대한 참조(예컨대, 라인 및 열 번호 위치)를 찾아서 검색 기준을 만족하는 요소의 부분을 식별한다. 검색 컴포넌트는 코드를 메타데이터와 구별할 수 있으며, 또한 연재식 표현에서 식별된 매칭에 대하여, 개발자에게 제시되는 통합형 코드 뷰를 검색하듯이 코드에서의 위치를 계산한다. 따라서, 개발자(106)의 관점에서, 검색 모듈(120)은 연재식 표현보다는, 오히려 코드 에디터 뷰 및/또는 메타데이터 에디터 뷰 내의 결과를 검색 및 리턴한다.
일 예시에 있어서, 검색 컴포넌트는 요소를 판독해서 객체-지향 표현으로 변환하고, 그 속성 게터들을 적용해서 속성을 검색 질의로부터 속성-기반 검색 기준에 대하여 식별 및 매칭시킨다. 검색 컴포넌트는 매칭된 속성을, 객체 내부의 속성을 고유하게 식별하는 상응하는 경로로 변환한다. 예컨대, 경로는 위에서 논의된 바와 같은 메타데이터 경로일 수 있는 인터넷 식별자(URI)를 포함한다.
스텝(314)에서, 검색 기준에 대한 요소 매칭을 나타내는 결과가 일련의 링크로서 리턴된다. 예컨대, 검색 컴포넌트는 상응하는 URI를 검색 모듈(120)의 수집자(aggregator) 컴포넌트에 리턴함으로써 요소 매칭을 식별한다. 수집자 URI는 개발자(106)에게의 제시를 위해 사용자 인터페이스 모듈(112)에 제공된다.
스텝(316)에서, 특정 URI의 개발자(106)에 의한 선택은, 예컨대 마우스 클릭 또는 그 밖의 사용자 입력과 같은 사용자 상호작용을 통해 수신된다. 내비게이션 모듈(122)은 선택된 URI를 복호해서 상응하는 요소 위치를 식별한다. 일 예시에 있어서, URI는 고유한 속성(예컨대, "source=crosscompany")에 대한 참조를 포함하고, 여기서 URI를 선택하면, URI에 의해 식별된 위치에서 메타데이터 에디터가 열린다. 다른 예시에 있어서, URI는 값을 포함하는 방법 본문에 대한 참조를 포함하고, 여기서 URI를 선택하면, 코드 에디터가 열린다.
일 예시에 있어서, 검색 결과들은 비동기적으로 취득 및 디스플레이된다. 이는 도 4에서 화살표(320)로 나타내진다. 즉, 인스턴스화된 시맨틱 검색 컴포넌트가 스텝(312)에서 검색 기준을 만족하는 요소를 식별함에 따라, 식별된 요소에 대한 URI가 개발자에게 디스플레이되지만, 백그라운드에서는 검색이 계속된다.
도 5는 개발자(106)가 애플리케이션 요소를 개발할 수 있게 하는 한편, 아키텍처(100)를 이용해서 검색을 수행할 수 있게 하는 개발 서피스를 제공하는 사용자 인터페이스 디스플레이(400)의 일 예시를 도시한다. 한정이 아닌, 설명을 위해, 사용자 인터페이스 디스플레이(400)는 아키텍처(100)의 맥락에서 기술된다.
사용자 인터페이스 디스플레이(400)는 애플리케이션 요소(107)를 작성하기 위해 개발자 입력을 수신하는 코드 에디터 뷰(402) 및 개발자 검색 질의를 수신하는 시맨틱 검색 인터페이스(404)를 포함한다. 예시로서, 하기의 검색 질의가 요소(404)에 입력되어 있다:
type:table, method name:insert property:"source=crosscompany"
도 3을 참조로 기술된 예시적인 구문을 이용해서, 검색 질의는 "table(테이블)"의 유형 필터, "insert(인서트)"의 방법 이름 필터, 및 "crosscompany(회사간)"의 속성 이름 필터를 지정한다. 검색 모듈(120)은 테이블 유형에 대응하는 유형-기반 검색 컴포넌트를 인스턴스화한다. 검색 결과 URI를 취득된 대로 결과 윈도우(406)에 채워넣는 검색 질의는 비동기적으로 실행될 수 있다. 즉, 검색은 윈도우(406)에서 하나 이상의 검색 결과 URI를 디스플레이함으로써 시작할 수 있고, 이후, 부가적인 검색 결과 URI를 취득된 대로 윈도우(406)에 추가할 수 있다. 이렇게 해서, 개발자(106)는 사용자 인터페이스 디스플레이(400)와 계속 상호작용해서, 예컨대 원하는 URI를 클림함으로써, 상응하는 검색 결과에 대한 뷰(402)를 안내하지만, 백그라운드에서는 임의의 부가적인 결과를 리턴하기 위해 검색이 계속된다. 설명된 예시에 있어서, 각각의 URI는 요소 및 요소의 위치를 식별하는 레이블(label) 정보(408) 및 위치 정보(410)를 포함한다.
일 예시에 있어서, 검색 모듈(120)의 검색 기능은 검색 질의 구문과는 관계없는 객체 모델과 함께 응용 프로그래밍 인터페이스(API)로서 노출된다. API를 이용하면, 검색 동작은 복수의 상이한 장치 중 어느 하나(예컨대, 액세스 권한 및 보안 조건)로부터 원격으로 소비될 수 있는 네트워크 상의 서비스로서 호출될 수 있다. 검색 API의 파라미터들은 객체 모델 내의 객체들이지, 구문을 확인하기 위한 질의 문자열이 아니다. 따라서, 검색 질의 구문은 검색기로부터 분리된다.
예시로서, 객체 모델의 클래스 다이어그램은 복수의 여러 클래스를 포함할 수 있으며, 각각의 클래스는 하나 이상의 시맨틱 검색 제한 및 상응하는 요소들의 검색 및 검사를 위해 호출되는 방법을 규정한다. 객체 모델 클래스에 의해 규정되는 시맨틱 검색 제한은 유형 제한, 속성 제한, 코드 제한, 및 이름 제한을 예로서 포함하지만, 이들에 한정되는 것은 아니다.
도 6은 검색 API를 이용해서 검색 결과를 제시하는 예시적인 사용자 인터페이스(450)를 도시한다. 사용자 인터페이스(450)는 검색 파라미터를 규정하는 검색 질의를 수신하는 질의 입력 필드(452) 및 검색 모듈로부터 리턴된 상응하는 질의 결과를 디스플레이하는 질의 결과 필드(454)를 포함한다. 설명된 예시에 있어서, 검색 파라미터는 코드 제한 클래스를 포함하고, 코드 제한에 대한 문자열(즉, "while select")을 식별한다. 코드 제한 클래스는 문자열을 매칭시키는 방법, 검색을 우선처리하는 방법 등을 포함한다. 검색 모듈은 코드 제한 클래스의 객체를 인스턴스화하는 한편, 모델 저장소에 대하여 검색을 실행한다.
일 예시에 있어서, 검색을 개시하는 장치에 따라 상이한 구문이 제공될 수 있다. 예컨대, 폼 팩터가 큰 스크린을 갖춘 개발자 데스크탑 컴퓨터의 경우에는, 개발자가 질의 문자열을 형식적 구문으로 입력하는 것이 허용될 수 있다. 한편, 폼 팩터가 작은 모바일 장치의 경우에는, 형식적 구문으로 입력하는 것이 개발자에게는 더 곤란할 수 있다. 검색 아키텍처는 질의를 보다 단순한 형태로 입력하는 것이 가능하도록 구성될 수 있다. 예컨대, 모바일 장치 등을 이용할 경우에, 개발자에게는, 특정한 일련의 검색 제한(예컨대, 특정한 유형-기반 검색)에 대하여 할당된 버튼과 같은 미리 정해진 검색 기능을 갖는 제어부가 제시될 수 있다.
본 논의는 프로세서 및 서버를 다루고 있다. 일 예시에 있어서, 프로세서 및 서버는, 별도로 도시되지는 않지만 연관 메모리 및 타이밍 회로를 갖춘 컴퓨터 프로세서를 포함한다. 이것들은 이것들이 속해서 활성화되는 시스템 또는 장치의 기능부이고, 해당 시스템 내의 다른 모듈, 컴포넌트 및/또는 아이템의 기능을 가능하게 한다.
또한, 다수의 사용자 인터페이스 디스플레이가 논의되어 있다. 이들 디스플레이는 매우 다양한 여러 형태를 취할 수 있고, 매우 다양한 여러 사용자 작동식 입력 메커니즘이 배치되어 있을 수 있다. 예컨대, 사용자 작동식 입력 메커니즘은 텍스트 박스, 체크 박스, 아이콘, 링크, 드롭-다운(drop-down) 메뉴, 검색 박스 등일 수 있다. 이들은 또한, 매우 다양한 여러 방식으로 작동될 수도 있다. 예컨대, 이들은 포인트 클릭 장치(예컨대, 트랙 볼 또는 마우스)를 이용해서 작동될 수 있다. 이들은 하드웨어 버튼, 스위치, 조이스틱 또는 키보드, 엄지 스위치 또는 엄지 패드 등을 이용해서 작동될 수 있다. 이들은 또한, 가상 키보드 또는 그 밖의 가상 액추에이터를 이용해서 작동될 수도 있다. 또한, 이들이 디스플레이되는 스크린이 터치 감응식 스크린인 경우에는, 이들은 터치 제스처를 이용해서 작동될 수 있다. 또한, 이들을 디스플레이하는 장치가 음성 인식 컴포넌트를 구비하는 경우에는, 이들은 음성 명령을 이용해서 작동될 수 있다.
다수의 데이터 저장소가 또한 논의되어 있다. 이들은 각각 다수의 데이터 저장소로 나뉠 수 있다는 점에 유의한다. 전부 이들에 액세스하는 시스템에 대하여 로컬로 될 수 있거나, 전부 원격으로 될 수 있거나, 또는 일부는 로컬이고 나머지는 원격으로 될 수 있다. 이들 구성이 모두 본 명세서에서 고려된다.
또한, 도면들은 각각의 블럭에 기능이 할당되어 있는 다수의 블럭을 도시한다. 보다 적은 수의 컴포넌트로 기능을 수행하도록 보다 적은 수의 블럭이 이용될 수 있다는 점에 유의한다. 또한, 보다 많은 수의 컴포넌트에 기능이 분산되어 있는, 보다 많은 수의 블럭이 이용될 수도 있다.
도 7은 요소들이 클라우드 컴퓨팅 아키텍처(500)에 배치된다는 점을 제외하면, 도 1에 도시된 아키텍처(100)의 블럭도와 마찬가지이다. 클라우드 컴퓨팅은 서비스를 전달하는 시스템의 물리적 위치 또는 구성에 관한 최종-사용자 지식을 필요로 하지 않는 계산, 소프트웨어, 데이터 액세스, 및 스토리지 서비스를 제공한다. 다양한 예시에 있어서, 클라우드 컴퓨팅은 적절한 프로토콜을 이용해서, 인터넷과 같은 와이드 에이리어 네트워크를 통해 서비스를 전달한다. 예컨대, 클라우드 컴퓨팅 제공자들은 와이드 에이리어 네트워크를 통해 애플리케이션을 전달하고, 이들은 웹 브라우저 또는 임의의 다른 컴퓨팅 컴포넌트를 통해 액세스될 수 있다. 아키텍처(100)의 소프트웨어, 모듈, 또는 컴포넌트뿐만 아니라, 상응하는 데이터는 원격지에 있는 서버에 저장될 수 있다. 클라우드 컴퓨팅 환경에서의 컴퓨팅 리소스들은 원격 데이터 센터 위치에서 통합될 수 있거나, 또는 분산될 수 있다. 클라우드 컴퓨팅 기반시설은, 비록 사용자에 대하여 단일의 액세스 지점으로서 나타난다고 해도, 공유 데이터 센터를 통해 서비스를 전달할 수 있다. 따라서, 본 명세서에 기술된 모듈, 컴포넌트 및 기능은 원격지에 있는 서비스 제공자로부터 클라우드 컴퓨팅 아키텍처를 이용해서 제공될 수 있다. 대안으로서, 이들은 종래의 서버로부터 제공될 수 있거나, 또는 클라이언트 장치에 직접, 또는 다른 방식들로 인스톨될 수 있다.
발명의 상세한 설명 부분은 공용 클라우드 컴퓨팅 및 사설 클라우드 컴퓨팅을 모두 포함하는 것을 의도한다. 클라우드 컴퓨팅(공용 및 사설 모두)은 실질적으로 리소스들의 원활한 통합을 제공할 뿐만 아니라, 기본 하드웨어 기반시설에 대한 관리 및 구축 필요성을 감소시킨다.
공용 클라우드는 벤더(vendor)에 의해 관리되고, 통상적으로 동일한 기반시설을 이용해서 다수의 소비자를 지원한다. 또한, 사설 클라우드와는 대조적으로, 공용 클라우드는 최종 사용자들을 하드웨어 관리로부터 해방시킬 수 있다. 사설 클라우드는 조직에 의해 자체적으로 관리될 수 있고, 기반시설은 다른 조직들과 공유되지 않는 것이 보통이다. 조직은 어느 정도까지는 하드웨어를 계속 유지, 예컨대 설치 및 보수 등을 해야 한다.
도 7에 도시된 예시에 있어서, 일부 아이템은 도 1에 도시된 것들과 유사하고 유사한 번호가 부여된다. 도 7은, 구체적으로 상호작용식 개발 시스템(102), 모델 저장소(108), 검색 컴포넌트 저장소(128), 및 검색 컴포넌트 코드 생성기(130)가 클라우드(502)(공용, 사설, 또는 부분적으로 공용이고 나머지가 사설인 조합으로 될 수 있음)에 위치될 수 있음을 보여준다. 따라서, 개발자(106)는 클라우드(502)를 통해 해당 시스템에 액세스하기 위해 사용자 장치(504)를 이용한다.
도 7은 또한 클라우드 아키텍처의 다른 예시도 묘사한다. 도 7은, 아키텍처(100)의 일부 요소들이 클라우드(502) 내에 배치되고 나머지 요소들은 배치되지 않을 수 있다는 것이 또한 고려됨을 보여준다. 예시로서, 모델 저장소(108)는 클라우드(502) 외부에 배치되고, 클라우드(502)를 통해 액세스될 수 있다. 다른 예시로서, 검색 컴포넌트 저장소(128)도 클라우드(502) 외부에 있을 수 있다. 다른 예시로서, 검색 컴포넌트 코드 생성기(130)도 클라우드(502) 외부에 있을 수 있다. 이들이 어디에 위치되는지에 관계없이, 이들은 네트워크(WAN 또는 LAN)를 통해, 장치(504)에 의해 직접 액세스될 수 있거나, 서비스에 의해 원격 위치에서 호스팅될 수 있거나, 또는 클라우드를 통해 서비스로서 제공될 수 있거나 또는 클라우드 내에 상주하는 접속 서비스에 의해 액세스될 수 있다. 이들 아키텍처가 모두 본 명세서에서 고려된다.
아키텍처(100), 또는 아키텍처의 부분들이 매우 다양한 여러 장치들에 배치될 수 있다는 점에도 유의해야 한다. 이들 장치의 일부는 서버, 데스크탑 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터, 또는 그 밖에도 팜탑(palm top) 컴퓨터, 셀폰, 스마트폰, 멀티미디어 플레이어, 개인 정보 단말 등과 같은 모바일 장치를 포함한다.
도 8은 본 발명의 시스템(또는 그 일부)이 배치될 수 있는 사용자의 또는 클라이언트의 핸드헬드 장치(16)로서 사용될 수 있는 핸드헬드 또는 모바일 컴퓨팅 장치의 일 예시의 간략화된 블럭도이다. 도 9 내지 도 12는 핸드헬드 또는 모바일 장치의 예시들이다.
도 8은 아키텍처(100)의 모듈 또는 컴포넌트를 가동할 수 있거나, 또는 아키텍처(100)와 상호작용할 수 있거나, 또는 둘 모두 가능한 클라이언트 장치(16)의 컴포넌트들의 일반적인 블럭도를 제공한다. 장치(16)에 있어서, 핸드헬드 장치가 다른 컴퓨팅 장치들과 통신하는 것을 허용하는 한편, 일부 예시에 있어서는 스캐닝에 의해서와 같이 자동으로 정보를 수신하는 채널을 제공하는 통신 링크(13)가 제공된다. 통신 링크(13)의 예시들은, 적외선 포트, 시리얼/USB 포트, 이더넷(Ethernet) 포트와 같은 케이블 네트워크 포트, 그리고 네트워크 뿐만 아니라, 네트워크들에 대한 로컬 무선 접속을 제공하는 802.11 및 802.11b (Wi-Fi) 프로토콜, 및 블루투스(Bluetooth) 프로토콜에 대한 셀룰러 액세스를 제공하는데 이용된 무선 서비스인 GPRS(General Packet Radio Service), LTE, HSPA, HSPA+ 및 그 밖의 3G 및 4G 무선 프로토콜, 1Xrtt, 및 단문 메시지 서비스(Short Message Service)를 포함하는 하나 이상의 통신 프로토콜을 통한 통신을 허용하는 무선 네트워크 포트를 포함한다.
다른 예시들에 있어서, 애플리케이션 또는 시스템은 보안 디지털(SD) 카드 인터페이스(15)에 접속되는 착탈식 SD 카드 상에 수신된다. SD 카드 인터페이스(15) 및 통신 링크(13)는, 메모리(21) 및 입력/출력(I/O) 컴포넌트(23)에 뿐만 아니라 클록(25) 및 위치 시스템(27)에도 접속되는 버스(19)를 따라 프로세서(17)(도 1로부터 프로세서(110)를 구체화할 수도 있음)와 통신한다.
일 예시에 있어서, I/O 컴포넌트(23)는 입력 및 출력 동작을 가능하게 하도록 제공된다. 장치(16)의 다양한 예시들에 대한 I/O 컴포넌트(23)는 버튼, 터치 센서, 멀티-터치 센서, 광학 또는 비디오 센서, 음성 센서, 터치 스크린, 근접도 센서, 마이크로폰, 기울기 센서, 및 중력 스위치와 같은 입력 컴포넌트와, 디스플레이 장치, 스피커, 및/또는 프린터 포트와 같은 출력 컴포넌트를 포함할 수 있다. 그 밖의 I/O 컴포넌트(23)가 사용될 수 있음은 물론이다.
클록(25)은 시간 및 날짜를 출력하는 실시간 클록 컴포넌트를 포함한다. 클록은 프로세서(17)에 타이밍 기능을 제공할 수도 있다.
위치 시스템(27)은 장치(16)의 현재의 지리적 위치를 출력하는 컴포넌트를 포함한다. 이는, 예컨대 GPS(global positioning system) 수신기, LORAN 시스템, 추측 항법(dead reckoning) 시스템, 셀룰러 삼각측량(cellular triangulation) 시스템, 또는 그 밖의 위치결정 시스템을 포함할 수 있다. 예컨대, 원하는 맵, 내비게이션 경로 및 그 밖의 지리적 기능을 생성하는 맵핑 소프트웨어 또는 내비게이션 소프트웨어를 또한 포함할 수 있다.
메모리(21)는 운영 체제(29), 네트워크 설정(31), 애플리케이션(33), 애플리케이션 구성 설정(35), 데이터 저장소(37), 통신 드라이버(39), 및 통신 구성 설정(41)을 저장한다. 메모리는 아키텍처(100)의 일부 또는 전부일 수 있는 클라이언트 시스템(24)을 또한 저장할 수 있다. 메모리(21)는 모든 타입의 유형(tangible)의 휘발성 및 비휘발성 컴퓨터 판독가능 메모리 장치를 포함할 수 있다. 메모리는 컴퓨터 스토리지 매체(아래에서 기술됨)를 또한 포함할 수 있다. 메모리(21)는, 프로세서(17)에 의한 실행시에, 프로세서로 하여금 컴퓨터 구현 스텝들 또는 기능들을 명령어에 따라 수행하게 하는 컴퓨터 판독가능 명령어를 저장한다. 프로세서(17)는 그 밖의 모듈 또는 컴포넌트에 의해 그들의 기능을 가능하게 하도록 활성화될 수 있음은 물론이다.
네트워크 설정(31)은 프록시 정보, 인터넷 접속 정보, 및 맵핑과 같은 것들을 예로서 포함한다. 애플리케이션 구성 설정(35)은 애플리케이션을 특정 기업 또는 사용자에게 맞추는 설정을 포함한다. 통신 구성 설정(41)은 다른 컴퓨터들과의 통신을 위한 파라미터를 제공하고, GPRS 파라미터, SMS 파라미터, 접속 사용자 이름 및 패스워드와 같은 아이템을 포함한다.
애플리케이션(33)은 장치(16)에 이미 저장되어 있는 애플리케이션일 수 있거나, 또는 사용 중에 인스톨되는 애플리케이션일 수 있으며, 이들 애플리케이션은 운영 체제(29)의 일부이거나 또는 장치(16)의 외부에서 호스팅될 수 있음은 물론이다.
도 9는 장치(16)가 태블릿 컴퓨터(600)인 일 예시를 도시한다. 도 9에 있어서, 컴퓨터(600)는 사용자 인터페이스 디스플레이 스크린(602)을 구비하는 것으로 도시된다. 스크린(602)은 터치 스크린(사용자 손가락으로부터의 터치 제스처가 애플리케이션과의 상호작용에 이용될 수 있음) 또는 펜 또는 스타일러스로부터 입력을 수신하는 펜-사용가능(pen-enabled) 인터페이스일 수 있다. 스크린은 또한, 온-스크린(on-screen) 가상 키보드를 이용할 수도 있다. 물론, 스크린은 예컨대 무선 링크 또는 USB 포트와 같은 적절한 부착 메커니즘을 통해 키보드 또는 그 밖의 사용자 입력 장치에 부착될 수도 있다. 컴퓨터(600)는 음성 입력을 수신할 수도 있음은 물론이다.
도 10 및 도 11은 이용될 수 있는 장치(16)의 부가적인 예시들을 제공하지만, 다른 것들이 이용될 수 있음은 물론이다. 도 10에 있어서는, 피처폰, 스마트폰 또는 모바일폰(45)이 장치(16)로서 제공된다. 폰(45)은 전화 번호를 호출하기 위한 일련의 키패드(47), 애플리케이션 이미지, 아이콘, 웹 페이지, 사진, 및 비디오를 포함하는 이미지를 디스플레이할 수 있는 디스플레이(49), 및 디스플레이 상에 도시된 아이템들을 선택하기 위한 제어 버튼(51)을 포함한다. 폰(45)은 GPRS(General Packet Radio Service) 및 1Xrtt와 같은 셀룰러 폰 신호, 및 SMS(Short Message Service) 신호를 수신하는 안테나(53)를 포함한다. 일부 예시에 있어서, 폰(45)은 또한, SD 카드(57)를 수용하는 SD 카드 슬롯(55)을 포함한다.
도 11의 모바일 장치는 개인 정보 단말(PDA)(59) 또는 멀티미디어 플레이어 또는 태블릿 컴퓨팅 장치 등(이하에서는, PDA(59)라고도 인용됨)이다. PDA(59)는 스타일러스가 스크린 위에 위치될 때 스타일러스(63)(또는 사용자의 손가락과 같은 다른 포인터)의 위치를 감지하는 유도감응식 스크린(61)을 포함한다. 이는, 사용자가 스크린 상의 아이템을 선택, 강조표시, 및 이동시키게 할 수 있을 뿐만 아니라, 그리기 및 쓰기를 가능하게 한다. PDA(59)는 또한, 디스플레이(61) 상에 디스플레이되는 메뉴 옵션 또는 그 밖의 디스플레이 옵션을 통해 사용자가 스크롤할 수 있게 하는 한편, 디스플레이(61)에 접촉하지 않고도 사용자가 애플리케이션을 변경하거나 사용자 입력 기능을 선택할 수 있게 하는 다수의 사용자 입력 키 또는 버튼(예컨대, 버튼(65))을 포함한다. 도시되어 있지는 않지만, PDA(59)는 다른 컴퓨터들과의 무선 통신을 허용하는 내부 안테나 및 적외선 송수신기 뿐만 아니라 다른 컴퓨팅 장치들에 대한 하드웨어 접속을 허용하는 접속 포트를 포함할 수 있다. 상기와 같은 하드웨어 접속은 시리얼 또는 USB 포트를 통해 다른 컴퓨터에 접속하는 크래들을 통해 이루어지는 것이 일반적이다. 상술한 바와 같이, 이들 접속은 비-네트워크 접속이다. 일 예시에 있어서, 모바일 장치(59)는 또한, SD 카드(69)를 수용하는 SD 카드 슬롯(67)을 포함한다.
도 12는 해당 폰이 스마트폰(71)이라는 점을 제외하면, 도 10과 유사하다. 스마트폰(71)은 아이콘 또는 타일을 디스플레이하는 터치 감응식 디스플레이(73) 또는 그 밖의 사용자 입력 메커니즘(75)을 구비한다. 메커니즘(75)은 사용자에 의해, 애플리케이션 가동, 발호, 데이터 전송 동작 수행 등을 행하는데 이용될 수 있다. 일반적으로, 스마트폰(71)은 모바일 운영 체제로 구축되며, 피처폰보다 더 진전된 컴퓨팅 능력 및 접속성을 제공한다.
다른 형태의 장치(16)들도 가능하다는 점에 유의한다.
도 13은 아키텍처(100), 또는 그 일부가 (예를 들어) 배치될 수 있는 컴퓨팅 환경의 일 예시이다. 도 13을 참조하면, 일부 예시를 구현하는 예시적인 시스템은 컴퓨터(810) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(810)의 컴포넌트들은, 처리 유닛(820)(프로세서(110)를 포함할 수 있음), 시스템 메모리(830), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 처리 유닛(820)에 연결하는 시스템 버스(821)를 포함할 수 있지만, 이들에 한정되는 것은 아니다. 시스템 버스(821)는 다양한 버스 아키텍처 중 어느 하나를 이용하는 메모리 버스 또는 메모리 컨트롤러, 주변장치 버스, 및 로컬 버스를 포함하는 몇가지 유형의 버스 구조 중 어느 하나일 수 있다. 한정이 아닌, 예시로서, 상기와 같은 아키텍처는 업계 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 강화된 ISA(EISA) 버스, 비디오 전자 표준 위원회(VESA) 로컬 버스, 및 메자닌(Mezzanine) 버스로서도 알려져 있는 주변 컴포넌트 상호접속(PCI) 버스를 포함한다. 도 1에 대하여 기술된 메모리 및 프로그램은 도 13의 상응하는 부분들에 배치될 수 있다.
컴퓨터(810)는 다양한 컴퓨터 판독가능 매체를 포함하는 것이 보통이다. 컴퓨터 판독가능 매체는 컴퓨터(810)에 의해 액세스될 수 있는 한편, 휘발성 및 비휘발성 매체, 착탈식 및 비착탈식 매체를 모두 포함하는 임의의 가용 매체일 수 있다. 한정이 아닌, 예시로서, 컴퓨터 판독가능 매체는 컴퓨터 스토리지 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 스토리지 매체는 변조 데이터 신호 또는 반송파와는 다르며, 이들을 포함하지 않는다. 해당 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 그 밖의 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성의, 착탈식 및 비착탈식 매체를 포함하는 하드웨어 스토리지 매체를 포함한다. 컴퓨터 스토리지 매체는, RAM, ROM, EEPROM, 플래시 메모리 또는 그 밖의 메모리 기술, CD-ROM, 디지털 다기능 디스크(DVD) 또는 그 밖의 광 디스크 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 그 밖의 자기 스토리지 장치, 또는 원하는 정보를 저장하는데 이용될 수 있으며 컴퓨터(810)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이들에 한정되는 것은 아니다. 통신 매체는 통상적으로, 운반 메커니즘 내의 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 그 밖의 데이터를 구체화하고, 임의의 정보 전달 매체를 포함한다. "변조 데이터 신호(modulated data signal)"라는 용어는 하나 이상의 그 특징 세트를 갖거나 또는 신호 내의 정보를 암호화하는 것과 같은 방식으로 변경된 신호를 의미한다. 한정이 아닌, 예시로서, 통신 매체는 유선 네트워크 또는 직접-유선 접속과 같은 유선 매체, 및 음향, RF, 적외선 및 그 밖의 무선 매체와 같은 무선 매체를 포함한다. 상술한 것들의 임의의 조합도 컴퓨터 판독가능 매체의 범주 내에 포함되어야 한다.
시스템 메모리(830)는 리드 온리 메모리(ROM)(831) 및 랜덤 액세스 메모리(RAM)(832)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 스토리지 매체를 포함한다. 예컨대, 시동 도중에, 컴퓨터(810) 내부의 요소들 사이에서 정보를 전송하는 것을 돕는 기본 루틴들을 포함하는 기본 입력/출력 시스템(833)(BIOS)은 통상적으로 ROM(831)에 저장된다. RAM(832)은 통상적으로, 처리 유닛(820)에 즉시 액세스 가능하거나 및/또는 이내 처리 유닛에 의해 동작되는 데이터 및/또는 프로그램 모듈을 포함한다. 한정이 아닌 예시로서, 도 13은 운영 체제(834), 애플리케이션 프로그램(835), 기타 프로그램 모듈(836), 및 프로그램 데이터(837)를 도시한다.
컴퓨터(810)는 또한, 다른 착탈식/비착탈식의 휘발성/비휘발성 컴퓨터 스토리지 매체를 포함할 수도 있다. 단지 예시일 뿐이지만, 도 13은 비착탈식의 비휘발성 자기 매체에 대하여 판독 또는 기입하는 하드 디스크 드라이브(841), 및 CD ROM 또는 그 밖의 광학 매체와 같은 착탈식의 비휘발성 광 디스크(856)에 대하여 판독 또는 기입하는 광 디스크 드라이브(855)를 도시한다. 예시적인 동작 환경에서 이용될 수 있는 다른 착탈식/비착탈식의, 휘발성/비휘발성 컴퓨터 스토리지 매체는, 자기 테이프 카세트, 플래시 메모리 카드, 디지털 다기능 디스크, 디지털 비디오 테이프, 솔리드 스테이트 RAM, 솔리드 스테이트 ROM 등을 포함하지만, 이들에 한정되는 것은 아니다. 하드 디스크 드라이브(841)는 통상적으로, 인터페이스(840)와 같은 비착탈식 메모리 인터페이스를 통해 시스템 버스(821)에 접속되고, 광 디스크 드라이브(855)는 통상적으로, 인터페이스(850)와 같은 착탈식 메모리 인터페이스에 의해 시스템 버스(821)에 접속된다.
대안으로서, 또는 부가적으로, 본 명세서에 기술된 기능은, 적어도 부분적으로, 하나 이상의 하드웨어 로직 컴포넌트에 의해 수행될 수 있다. 예컨대, 이용될 수 있는 하드웨어 로직 컴포넌트의 유형은 필드-프로그래머블 게이트 어레이(FPGAs), 프로그램-지정 집적 회로(ASICs), 프로그램-지정 표준 제품(ASSPs), 시스템-온-칩 시스템(SOCs), 복합 프로그래머블 로직 장치(CPLDs) 등을 한정 없이 포함한다.
위에서 논의되고 도 13에서 도시된 드라이브들 및 그들의 연관 컴퓨터 스토리지 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 그 밖의 데이터의 스토리지를 컴퓨터(810)에 제공한다. 도 13에 있어서, 예컨대 하드 디스크 드라이브(841)는 운영 체제(844), 애플리케이션 프로그램(845), 기타 프로그램 모듈(846), 및 프로그램 데이터(847)를 저장하는 것으로 도시된다. 이들 컴포넌트는 운영 체제(834), 애플리케이션 프로그램(835), 기타 프로그램 모듈(836), 및 프로그램 데이터(837)와 동일하거나 또는 상이할 수 있다는 점에 유의한다. 운영 체제(844), 애플리케이션 프로그램(845), 기타 프로그램 모듈(846), 및 프로그램 데이터(847)는 최소한 그들이 상이한 복제임을 설명하도록 여기서는 상이한 번호들이 주어진다.
사용자는, 키보드(862), 마이크로폰(863), 및 마우스, 트랙볼 또는 터치패드와 같은 포인팅 디바이스(861) 등의 입력 장치를 통해 커맨드 및 정보를 컴퓨터(810)에 입력할 수 있다. 그 밖의 입력 장치(도시되지 않음)는 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 장치는 흔히 시스템 버스에 연결되는 사용자 입력 인터페이스(860)를 통해 처리 유닛(820)에 접속되지만, 병렬 포트, 게임 포트 또는 범용 직렬 버스(USB)와 같은 그 밖의 인터페이스 및 버스 구조에 의해 접속될 수 있다. 시각 디스플레이(891) 또는 그 밖의 유형의 디스플레이 장치가 또한, 비디오 인터페이스(890)와 같은 인터페이스를 통해 시스템 버스(821)에 접속된다. 모니터 외에도, 컴퓨터는 출력 주변장치 인터페이스(895)를 통해 접속될 수 있는 스피커(897) 및 프린터(896)와 같은 다른 주변 출력 장치를 또한 포함할 수 있다.
컴퓨터(810)는 원격 컴퓨터(880)와 같은 하나 이상의 원격 컴퓨터에 대한 논리적 접속을 이용하여 네트워크화된 환경에서 작동된다. 원격 컴퓨터(880)는 퍼스널 컴퓨터, 핸드헬드 장치, 서버, 라우터, 네트워크 PC, 피어(peer) 장치 또는 그 밖의 공통 네트워크 노드일 수 있고, 통상적으로 컴퓨터(810)와 관련하여 위에서 기술된 요소들을 다수 또는 전부 포함한다. 도 13에 묘사된 논리적 접속은 LAN(871) 및 WAN(773)을 포함하지만, 다른 네트워크들을 포함할 수도 있다. 상기와 같은 네트워킹 환경은 오피스, 전사적 컴퓨터 네트워크, 인트라넷 및 인터넷에서는 아주 흔하다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(810)는 네트워크 인터페이스 또는 어댑터(870)를 통해 LAN(871)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(810)는 통상적으로 인터넷과 같은 WAN(873)을 통한 통신을 확립하는 모뎀(872) 또는 그 밖의 수단을 포함한다. 내부 또는 외부에 있을 수 있는 모뎀(872)은 사용자 입력 인터페이스(860), 또는 그 밖의 적절한 메커니즘을 통해 시스템 버스(821)에 접속될 수 있다. 네트워크화된 환경에서, 컴퓨터(810), 또는 그 일부분에 관하여 묘사된 프로그램 모듈은 원격 메모리 스토리지 장치에 저장될 수 있다. 한정이 아닌 예시로서, 도 13은 원격 애플리케이션 프로그램(885)을 원격 컴퓨터(880)에 상주하는 것으로 도시한다. 도시된 네트워크 접속은 예시이며, 컴퓨터들 사이에서 통신 링크를 확립하는 다른 수단이 이용될 수 있다는 점을 인식할 것이다.
본 명세서에 기술된 상이한 실시예들은 다양하게 결합될 수 있다는 점에도 유의해야 한다. 즉, 하나 이상의 실시예들 중 일부는 하나 이상의 다른 실시예들 중 일부와 결합될 수 있다. 본 명세서에서는 이들 모두가 고려된다.
예시 1은 사용자 개발 입력을 감지하고 사용자 개발 입력에 기초하여 컴퓨터 시스템의 요소를 변환하는 개발 모듈을 포함한다. 요소는 컴퓨터 시스템에서 모델링된 유형을 포함한다. 사용자 인터페이스 모듈은 사용자 입력 메커니즘을 갖춘 사용자 인터페이스 디스플레이를 생성하고, 컴퓨터 시스템의 요소를 검색하기 위한 사용자 검색 질의를 나타내는 사용자 입력 메커니즘을 통해 수신되는 사용자 검색 입력을 감지한다. 검색 엔진은 사용자 검색 질의에 대한 유형-기반 검색 파라미터를 식별한다. 검색 엔진은 유형-기반 검색 파라미터에 기초하여 유형-기반 검색 컴포넌트를 활성화하도록 제어된다. 유형-기반 검색 컴포넌트는 일련의 검색 결과를 사용자 인터페이스 디스플레이에서 리턴하기 위해 요소 검색을 수행한다.
예시 2는 이전 예시들 중 어느 하나의 예시 또는 모든 예시의 개발 시스템이고, 개발 모듈은 상호작용식 개발 환경(IDE)의 일부이다.
예시 3은 이전 예시들 중 어느 하나의 예시 또는 모든 예시의 개발 시스템이고, 사용자는 개발자이고, 컴퓨터 시스템의 요소는 개발자에 의해 커스터마이징된 애플리케이션 요소를 포함한다.
예시 4는 이전 예시들 중 어느 하나의 예시 또는 모든 예시의 개발 시스템이고, 유형-기반 검색 파라미터는 컴퓨터 시스템에서 모델링된 유형으로부터 선택된 특정한 요소 유형을 나타내고, 검색 엔진은 요소 검색을 특정한 요소 유형을 갖는 요소로 제한하도록 제어된다.
예시 5는 이전 예시들 중 어느 하나의 예시 또는 모든 예시의 개발 시스템이고, 사용자 검색 질의는 문자열 및 특정한 요소 유형을 포함한다.
예시 6은 이전 예시들 중 어느 하나의 예시 또는 모든 예시의 개발 시스템이고, 일련의 검색 결과는 문자열을 매칭시키는 속성값을 갖는 특정한 요소 유형의 요소를 포함한다.
예시 7은 이전 예시들 중 어느 하나의 예시 또는 모든 예시의 개발 시스템이고, 컴퓨터 시스템의 요소들은 복수의 여러 유형을 포함하고, 각각의 유형은 해당 요소 유형의 요소에 대한 런타임 거동을 규정하는 일련의 속성 및 방법을 갖는다. 시스템은 복수의 검색 컴포넌트를 저장하는 검색 컴포넌트 저장소를 추가로 포함하고, 각각의 검색 컴포넌트는 여러 유형 중 주어진 하나의 유형에 대응하고, 주어진 유형의 요소에 대한 일련의 속성 및 방법을 검색하도록 구성된다.
예시 8은 이전 예시들 중 어느 하나의 예시 또는 모든 예시의 개발 시스템이고, 검색 엔진은 특정한 요소 유형에 대응하는 검색 컴포넌트 저장소로부터의 유형-기반 검색 컴포넌트를 식별하고, 특정한 요소 유형을 갖는 컴퓨터 시스템의 복수의 요소를 각각 식별하고, 또한 식별된 검색 컴포넌트를 이용해서 사용자 검색 질의에 기초하여 식별된 요소를 검색한다.
예시 9는 이전 예시들 중 어느 하나의 예시 또는 모든 예시의 개발 시스템이고, 식별된 검색 컴포넌트는 특정한 요소 유형을 갖는 복수의 식별된 요소 각각에 대하여 인스턴스화되고, 검색 엔진은 복수의 인스턴스화된 검색 컴포넌트로부터의 검색 결과를 수집함으로써 일련의 검색 결과를 취득하고, 수집된 검색 결과를 사용자 인터페이스 디스플레이에서 디스플레이한다.
예시 10은 이전 예시들 중 어느 하나의 예시 또는 모든 예시의 개발 시스템이고, 일련의 검색 결과는 비동기적으로 취득 및 디스플레이된다.
예시 11은 이전 예시들 중 어느 하나의 예시 또는 모든 예시의 개발 시스템이고, 요소 각각에 대하여, 요소의 코드 및 메타데이터를 포함하는 요소의 연재식 표현을 저장하는 모델 저장소를 추가로 포함한다. 검색 엔진은 모델 저장소 내의 연재식 표현에 액세스함으로써 요소 검색을 수행한다.
예시 12는 이전 예시들 중 어느 하나의 예시 또는 모든 예시의 개발 시스템이고, 검색 엔진은 유형-기반 검색 파라미터에 기초하여, 요소 중 주어진 하나의 요소에 대응하는 모델 저장소 내의 특정한 연재식 표면을 식별하고, 사용자 검색 질의에 기초하여 특정한 연재식 표현을 검색한다.
예시 13은 이전 예시들 중 어느 하나의 예시 또는 모든 예시의 개발 시스템이고, 검색 엔진은 주어진 요소에 있어서 사용자 검색 질의에 매칭되는 부분을 특정한 연재식 표현으로부터 식별하고, 주어진 요소의 해당 부분을 고유하게 나타내는 경로 정보를 식별한다.
예시 14는 이전 예시들 중 어느 하나의 예시 또는 모든 예시의 개발 시스템이고, 경로 정보는 인터넷 식별자(URI)를 포함하고, 사용자 인터페이스 모듈은 에디터 사용자 인터페이스에서 주어진 요소의 해당 부분을 제시하도록 선택 가능한 URI의 사용자 선택가능 표현을 생성한다.
예시 15는 복수의 여러 요소 유형을 모델링하는 데이터 저장소, 개발자 입력을 감지하고 개발자 입력에 기초하여 여러 요소 유형의 애플리케이션 요소를 변환하는 개발 모듈, 및 데이터 저장소에서 모델링된 요소 유형 각각에 대하여 상이한 검색 컴포넌트를 생성하는 검색 컴포넌트 생성기를 포함하는 개발 시스템이다. 개발 시스템은 또한, 복수의 요소 유형에 대하여 검색 컴포넌트 생성기에 의해 생성된 검색 컴포넌트를 저장하는 검색 컴포넌트 저장소, 및 사용자 검색 입력을 감지하고 요소 유형 중 주어진 요소 유형의 애플리케이션 요소를 검색하기 위해 검색 컴포넌트 중 선택된 검색 컴포넌트를 활성화하도록 제어되는 검색 엔진을 포함한다.
예시 16은 이전 예시들 중 어느 하나의 예시 또는 모든 예시의 개발 시스템이고, 검색 컴포넌트 생성기는 요소 유형 중 주어진 요소 유형의 구조를 분석하고, 주어진 요소 유형의 구조에 기초하여 상응하는 검색 기능을 생성하는 것에 의해, 각각의 검색 컴포넌트를 생성하도록 구성된다.
예시 17은 이전 예시들 중 어느 하나의 예시 또는 모든 예시의 개발 시스템이고, 주어진 요소 유형의 구조는 주어진 요소 유형을 갖는 요소의 런타임 거동을 규정하는 일련의 속성 및 방법에 의해 규정된다.
예시 18은 이전 예시들 중 어느 하나의 예시 또는 모든 예시의 개발 시스템이고, 검색 엔진은 적어도 하나의 검색 용어를 갖는 검색 질의를 수신하고, 검색 질의에 대한 유형-기반 검색 파라미터를 식별하고, 유형-기반 검색 파라미터에 기초하여 검색 컴포넌트 저장소로부터 검색 컴포넌트 중 하나를 식별한다. 식별된 검색 컴포넌트는 검색 용어에 기초하여 하나 이상의 애플리케이션 요소를 검색하기 위해 인스턴스화된다.
예시 19는 컴퓨터 시스템의 요소를 개발하고 요소의 검색을 제어하는 컴퓨터-구현 방법이다. 방법은 개발 사용자 입력을 감지하는 단계 및 개발 사용자 입력에 기초하여 컴퓨터 시스템의 요소를 변환하는 단계를 포함한다. 컴퓨터 시스템은 복수의 여러 요소 유형을 포함하고, 각각의 요소 유형은 해당 요소 유형의 요소에 대한 속성 구조에 의해 규정된다. 방법은 검색 인터페이스 디스플레이를 생성하는 단계 및 검색 인터페이스 디스플레이를 통해, 컴퓨터 시스템의 요소를 검색하기 위한 사용자 검색 질의를 나타내는 사용자 입력을 감지하는 단계를 포함한다. 방법은 사용자 검색 질의 및 컴퓨터 시스템의 요소의 속성 구조에 기초하는 시맨틱 검색 제한에 기초한 컴퓨터 시스템의 요소의 검색을 제어하는 단계를 포함한다. 방법은 검색으로부터의 검색 결과를 리턴하는 단계 및 검색 결과를 디스플레이하는 결과 디스플레이를 생성하는 단계를 포함한다.
예시 20은 이전 예시들 중 어느 하나의 예시 또는 모든 예시의 컴퓨터-구현 방법이고, 복수의 여러 요소 유형을 모델링하는 데이터 저장소에 액세스하는 단계, 및 각각의 상이한 요소 유형에 대하여, 해당 요소 유형의 속성 구조에 기초하여 상응하는 유형-기반 검색 컴포넌트를 생성하는 단계를 추가로 포함한다. 방법은 시맨틱 검색 제한에 기초하여 선택되는, 생성된 유형-기반 검색 컴포넌트 중 적어도 하나를 이용해서, 사용자 검색 질의에 기초하여 데이터 저장소를 검색하는 단계를 포함한다.
청구대상이 구조적 특징들 및/또는 방법론적 동작들을 특정하는 내용으로 기술되어 있지만, 첨부된 청구항들에 규정된 청구대상은 반드시 상술한 특정한 특징들 또는 동작들에 한정되는 것은 아님을 이해해야 한다. 오히려, 상술한 특정한 특징들 및 동작들은 청구항들을 구현하는 예시적인 형태로서 개시되고, 그 밖의 동등한 특징들 및 동작들은 청구항들의 범주 내의 것으로 의도된다.

Claims (20)

  1. 개발 시스템으로서,
    프로세서와,
    상기 프로세서에 연결되며, 명령어가 저장된 메모리
    를 포함하고,
    상기 명령어는 상기 프로세서에 의해 실행될 때 상기 개발 시스템을,
    컴퓨터 시스템을 개발하는 사용자 개발 입력의 표시를 수신하고 - 상기 컴퓨터 시스템은 상기 컴퓨터 시스템에서 모델링된 복수의 상이한 요소 유형의 요소를 포함함 - ,
    검색 사용자 입력 메커니즘을 가진 사용자 인터페이스 디스플레이의 표시를 생성하며,
    상기 검색 사용자 입력 메커니즘으로부터 사용자 검색 질의의 표시를 수신하고 - 상기 사용자 검색 질의는 상기 컴퓨터 시스템의 상기 요소를 검색하기 위한 검색 기준을 식별함 - ,
    상기 사용자 검색 질의에 기초한 유형-기반 검색 파라미터를 식별하고, 상기 컴퓨터 시스템에서 모델링된 상기 상이한 요소 유형 중 특정한 요소 유형을 식별하며,
    상기 검색 기준 및 상기 유형-기반 검색 파라미터에 기초해서 요소 검색을 수행해서 검색 결과를 취득하도록
    구성하는
    개발 시스템.
  2. 제 1 항에 있어서,
    상기 요소에 대한 코드와 메타데이터 중 적어도 하나를 규정함으로써 상기 사용자 개발 입력의 표시에 기초해서 상기 컴퓨터 시스템의 요소를 개발하도록 구성된 상호작용식 개발 환경(IDE)을 포함하는
    개발 시스템.
  3. 제 1 항에 있어서,
    상기 명령어는 상기 개발 시스템을
    상기 특정한 요소 유형의 구조를 파싱해서 상기 특정한 요소 유형의 상기 구조를 검색하도록 구성된 검색 코드를 생성함으로써 검색 컴포넌트를 생성하고,
    상기 검색 코드를 실행함으로써 상기 요소 검색을 수행하도록 상기 검색 컴포넌트를 인스턴스화(instantiate)하도록
    구성하는
    개발 시스템.
  4. 제 1 항에 있어서,
    상기 요소 검색은 상기 특정한 요소 유형을 가진 요소를 리턴하는 필터 기준으로서 상기 특정한 요소 유형을 사용해서 제한되는(constrained)
    개발 시스템.
  5. 제 4 항에 있어서,
    상기 사용자 검색 질의는 문자열 및 상기 특정한 요소 유형을 식별하는
    개발 시스템.
  6. 제 5 항에 있어서,
    리턴되는 상기 요소는 상기 문자열에 매칭되는 속성값을 갖는 상기 특정한 요소 유형의 요소를 포함하는
    개발 시스템.
  7. 제 1 항에 있어서,
    각각의 요소 유형은 상기 요소 유형의 요소에 대한 런타임 거동을 규정하는 일련의 속성 및 방법을 포함하고,
    상기 명령어는 상기 개발 시스템을 복수의 검색 컴포넌트를 생성하도록 구성하고,
    각각의 검색 컴포넌트는 상이한 유형 중 주어진 하나의 유형에 대응하고 상기 일련의 속성 및 방법을 검색해서 상기 주어진 유형의 요소를 찾도록 구성되는
    개발 시스템.
  8. 제 7 항에 있어서,
    상기 명령어는 상기 개발 시스템을, 상기 복수의 검색 컴포넌트로부터 상기 특정한 요소 유형에 대응하는 검색 컴포넌트를 선택하고, 상기 특정한 요소 유형을 갖는 상기 컴퓨터 시스템의 요소를 식별하며, 또한 상기 선택된 검색 컴포넌트를 이용해서 상기 사용자 검색 질의에 기초하여 상기 식별된 요소를 검색함으로써 상기 검색 결과를 취득하도록 구성하는
    개발 시스템.
  9. 제 8 항에 있어서,
    상기 선택된 검색 컴포넌트는 상기 특정한 요소 유형을 갖는 복수의 식별된 요소 각각에 대하여 인스턴스화되고, 상기 복수의 인스턴스화된 검색 컴포넌트로부터 검색 결과를 수집함으로써 일련의 검색 결과를 취득하며,
    상기 명령어는 상기 개발 시스템을, 상기 수집된 검색 결과를 상기 사용자 인터페이스 디스플레이에서 디스플레이하도록 디스플레이 디바이스에 명령하도록, 구성하는
    개발 시스템.
  10. 제 9 항에 있어서,
    상기 명령어는 상기 개발 시스템을,
    상기 수집된 검색 결과를 상기 사용자 인터페이스 디스플레이에서 디스플레이하도록 상기 디스플레이 디바이스에 명령하는 것과,
    상기 요소 검색으로부터 추가 검색 결과를 취득하는 것을
    병렬로 수행하도록 구성하는
    개발 시스템.
  11. 제 1 항에 있어서,
    상기 요소의 코드 및 메타데이터를 포함하는, 상기 요소 각각의 연재식 표현(serialized representation)을 저장하는 모델 저장소를 더 포함하고,
    상기 요소 검색은 상기 모델 저장소 내의 상기 연재식 표현에 액세스함으로써 수행되는
    개발 시스템.
  12. 제 11 항에 있어서,
    상기 명령어는 상기 개발 시스템을,
    상기 유형-기반 검색 파라미터에 기초하여, 상기 모델 저장소 내의 연재식 표현 중 특정한 연재식 표현을 식별하고,
    상기 사용자 검색 질의에 기초하여 상기 특정한 연재식 표현을 검색하도록
    구성하는
    개발 시스템.
  13. 제 12 항에 있어서,
    상기 명령어는 상기 개발 시스템을,
    상기 특정한 연재식 표현을 분석해서 주어진 요소에 있어서 상기 사용자 검색 질의에 매칭되는 부분을 식별하고,
    상기 주어진 요소의 상기 부분을 고유하게 식별하는 경로 정보를 취득하도록
    구성하는
    개발 시스템.
  14. 제 13 항에 있어서,
    상기 경로 정보는 인터넷 식별자(uniform resource identifier)(URI)를 포함하고,
    상기 명령어는 상기 개발 시스템을, 상기 주어진 요소의 상기 부분을 디스플레이하는 에디터 사용자 인터페이스를 생성하도록 선택 가능한 상기 URI의 사용자 선택가능 표현을 생성하도록 구성하는
    개발 시스템.
  15. 개발 시스템으로서,
    프로세서와,
    상기 프로세서에 연결되며, 명령어가 저장된 메모리
    를 포함하고,
    상기 명령어는 상기 프로세서에 의해 실행될 때 상기 개발 시스템을,
    개발 환경에서 개발자 입력을 수신해서 애플리케이션을 개발하고 - 상기 애플리케이션은 상이한 요소 유형의 애플리케이션 요소를 포함함 - ,
    상기 상이한 요소 유형에 대해 복수의 상이한 검색 컴포넌트를 생성하며 - 각각의 검색 컴포넌트는 상이한 요소 유형 중 하나의 요소 유형에 대응하고 상기 대응하는 요소 유형의 애플리케이션 요소를 검색하도록 구성됨 - ,
    상기 검색 컴포넌트를 저장하도록
    구성하는
    개발 시스템.
  16. 제 15 항에 있어서,
    상기 명령어는 상기 개발 시스템을, 상기 대응하는 요소 유형의 구조를 분석하고 상기 대응하는 요소 유형의 상기 구조에 기초해서 상기 대응하는 요소 유형에 특정한 검색 코드를 생성함으로써 각각의 검색 컴포넌트를 생성하도록 구성하는
    개발 시스템.
  17. 제 16 항에 있어서,
    상기 대응하는 요소 유형의 상기 구조는, 상기 대응하는 요소 유형을 가진 요소의 런타임 거동을 규정하는 일련의 속성 및 방법에 의해 규정되는
    개발 시스템.
  18. 제 17 항에 있어서,
    상기 명령어는 상기 개발 시스템을,
    적어도 하나의 검색 용어를 갖는 검색 질의의 표시를 수신하고,
    상기 검색 질의에 대한 유형-기반 검색 파라미터를 식별하며,
    상기 유형-기반 검색 파라미터에 기초하여 상기 검색 컴포넌트 중 하나를 선택하도록 - 상기 선택된 검색 컴포넌트는 상기 검색 용어에 기초하여 상기 애플리케이션 요소를 검색하기 위해 인스턴스화됨 - 구성하는
    개발 시스템.
  19. 컴퓨터 시스템을 개발하는 컴퓨터-구현 방법으로서,
    상기 컴퓨터 시스템의 요소를 개발하기 위한 개발 사용자 입력을 수신하는 단계 - 상기 컴퓨터 시스템은 복수의 여러 요소 유형을 포함하고, 각각의 요소 유형은 상기 요소 유형의 요소에 대한 속성 구조에 의해 규정됨 - 와,
    상기 컴퓨터 시스템의 상기 요소를 검색하기 위한 사용자 검색 질의를 수신하는 검색 인터페이스 디스플레이를 생성하는 단계와,
    상기 사용자 검색 질의 및 상기 컴퓨터 시스템의 상기 요소의 상기 속성 구조에 기초하는 시맨틱 검색 제한에 기초하여 상기 컴퓨터 시스템의 상기 요소의 검색을 수행함으로써 검색 결과를 취득하는 단계와,
    상기 검색 결과를 디스플레이하는 결과 디스플레이를 생성하는 단계
    를 포함하는 컴퓨터-구현 방법.
  20. 제 19 항에 있어서,
    복수의 상이한 요소 유형의 요소를 모델링하는 데이터 저장소에 액세스하는 단계와,
    각각의 상이한 요소 유형에 대해서, 상기 요소 유형의 속성 구조에 기초해서 대응하는 유형-기반 검색 컴포넌트를 생성하는 단계와,
    상기 시맨틱 검색 제한에 기초하여 상기 유형-기반 검색 컴포넌트 중 하나를 선택하는 단계와,
    상기 선택된 상기 유형-기반 검색 컴포넌트를 이용해서 상기 사용자 검색 질의에 기초해서 상기 데이터 저장소를 검색하는 단계
    를 더 포함하는 컴퓨터-구현 방법.
KR1020167033762A 2014-06-02 2015-06-01 개발 시스템에서의 시맨틱 콘텐츠 액세스 기법 KR102309211B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462006662P 2014-06-02 2014-06-02
US62/006,662 2014-06-02
US14/539,521 2014-11-12
US14/539,521 US9377999B2 (en) 2014-06-02 2014-11-12 Semantic content accessing in a development system
PCT/US2015/033554 WO2015187567A1 (en) 2014-06-02 2015-06-01 Semantic content accessing in a development system

Publications (2)

Publication Number Publication Date
KR20170013266A KR20170013266A (ko) 2017-02-06
KR102309211B1 true KR102309211B1 (ko) 2021-10-05

Family

ID=54702022

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167033762A KR102309211B1 (ko) 2014-06-02 2015-06-01 개발 시스템에서의 시맨틱 콘텐츠 액세스 기법

Country Status (10)

Country Link
US (1) US9377999B2 (ko)
EP (1) EP3149575B1 (ko)
JP (1) JP6639418B2 (ko)
KR (1) KR102309211B1 (ko)
CN (1) CN106462415B (ko)
AU (1) AU2015270951B2 (ko)
CA (1) CA2948646A1 (ko)
MX (1) MX370231B (ko)
RU (1) RU2679971C2 (ko)
WO (1) WO2015187567A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160350201A1 (en) * 2015-05-27 2016-12-01 International Business Machines Corporation Etl data flow design assistance through progressive context matching
US9547482B2 (en) * 2015-06-02 2017-01-17 Sap Portals Israel Ltd. Declarative design-time experience platform for code generation
US11238115B1 (en) * 2016-07-11 2022-02-01 Wells Fargo Bank, N.A. Semantic and context search using knowledge graphs
US11238084B1 (en) 2016-12-30 2022-02-01 Wells Fargo Bank, N.A. Semantic translation of data sets

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0267629A (ja) * 1988-09-02 1990-03-07 Hitachi Ltd ソフトウエア再利用の分散処理方法
JPH06274332A (ja) * 1993-03-24 1994-09-30 Hitachi Software Eng Co Ltd プログラム部品の登録・検索方法
JPH06348471A (ja) * 1993-06-11 1994-12-22 Nippon Steel Corp ソフトウェア部品検索装置
US20050076017A1 (en) * 2003-10-03 2005-04-07 Rein Douglas R. Method and system for scheduling search terms in a search engine account
JP2008533544A (ja) * 2004-09-20 2008-08-21 コダーズ,インコーポレイテッド ソースコード・サーチ・エンジンを操作する方法およびシステム
JP4554321B2 (ja) * 2004-10-01 2010-09-29 株式会社日立製作所 アプリケーションプログラム開発支援方法及びシステム
US20060090154A1 (en) * 2004-10-07 2006-04-27 International Business Machines Corp. System and method for contributing remote object content to an integrated development environment type-ahead
US8566789B2 (en) 2005-08-25 2013-10-22 Infosys Limited Semantic-based query techniques for source code
US7873356B2 (en) * 2005-09-16 2011-01-18 Microsoft Corporation Search interface for mobile devices
JP2008242811A (ja) * 2007-03-27 2008-10-09 Hitachi Software Eng Co Ltd ソフトウェア部品ソースコード生成システム
US8595246B2 (en) 2007-08-17 2013-11-26 Oracle International Corporation System and method for semantic asset search in a metadata repository
US8312437B2 (en) * 2008-12-30 2012-11-13 Microsoft Corporation Structured search in source code
JP2010191858A (ja) * 2009-02-20 2010-09-02 Daikin Ind Ltd ソフトウェア開発支援装置
CN101819574A (zh) * 2009-10-13 2010-09-01 腾讯科技(深圳)有限公司 一种搜索引擎系统和信息搜索方法
US8645905B2 (en) 2010-11-15 2014-02-04 Sap Ag Development artifact searching in an integrated development environment
JP2012123675A (ja) * 2010-12-09 2012-06-28 Hitachi Ltd システム部品の抽出方法およびシステム
US9009664B2 (en) * 2011-03-31 2015-04-14 Infosys Limited Structural search of source code
US9697016B2 (en) * 2011-11-15 2017-07-04 Microsoft Technology Licensing, Llc Search augmented menu and configuration for computer applications
US8701086B2 (en) * 2012-01-17 2014-04-15 NIIT Technologies Ltd Simplifying analysis of software code used in software systems
US9141707B2 (en) 2012-07-19 2015-09-22 Facebook, Inc. Context-based object retrieval in a social networking system
KR101446154B1 (ko) * 2013-01-11 2014-10-01 한남대학교 산학협력단 사용자 질의 확장 기법을 이용한 시맨틱 콘텐츠 검색 시스템 및 방법

Also Published As

Publication number Publication date
EP3149575A1 (en) 2017-04-05
MX2016015731A (es) 2017-03-16
CA2948646A1 (en) 2015-12-10
RU2016147085A (ru) 2018-06-01
AU2015270951B2 (en) 2020-07-30
MX370231B (es) 2019-12-06
RU2679971C2 (ru) 2019-02-14
US9377999B2 (en) 2016-06-28
BR112016027820A8 (pt) 2022-11-16
KR20170013266A (ko) 2017-02-06
BR112016027820A2 (pt) 2021-06-08
RU2016147085A3 (ko) 2018-12-12
US20150347533A1 (en) 2015-12-03
CN106462415A (zh) 2017-02-22
EP3149575B1 (en) 2021-10-06
JP2017522639A (ja) 2017-08-10
CN106462415B (zh) 2020-06-12
JP6639418B2 (ja) 2020-02-05
WO2015187567A1 (en) 2015-12-10
AU2015270951A1 (en) 2016-11-17

Similar Documents

Publication Publication Date Title
US11615151B2 (en) Query language for selecting object graphs from application metadata
US9395890B2 (en) Automatic discovery of system behavior
US11093693B2 (en) Hierarchical navigation control
US9600256B2 (en) Incrementally compiling software artifacts from an interactive development environment
US9690689B2 (en) Test case generation in a development environment
KR102309211B1 (ko) 개발 시스템에서의 시맨틱 콘텐츠 액세스 기법
US10152308B2 (en) User interface display testing system
US11029800B2 (en) Language and security aware search for user navigable entry points
US9575751B2 (en) Data extraction and generation tool
US9158505B2 (en) Specifying compiled language code in line with markup language code
US20160364909A1 (en) Architecture impact analysis
US20150121343A1 (en) Test impact analysis using cross reference data and metadata
US10032203B2 (en) Dynamic property surfacing
US10705802B2 (en) Extensible and queryable strong types
BR112016027820B1 (pt) Sistema de desenvolvimento e método implementado por computador para desenvolver elementos de aplicativo de um sistema de computador e controlar uma pesquisa dos elementos
US20150088971A1 (en) Using a process representation to achieve client and server extensible processes

Legal Events

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