KR20150143472A - 컨트롤 이벤트의 생성 기법 - Google Patents

컨트롤 이벤트의 생성 기법 Download PDF

Info

Publication number
KR20150143472A
KR20150143472A KR1020157028201A KR20157028201A KR20150143472A KR 20150143472 A KR20150143472 A KR 20150143472A KR 1020157028201 A KR1020157028201 A KR 1020157028201A KR 20157028201 A KR20157028201 A KR 20157028201A KR 20150143472 A KR20150143472 A KR 20150143472A
Authority
KR
South Korea
Prior art keywords
data
user
control
interest
action
Prior art date
Application number
KR1020157028201A
Other languages
English (en)
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 KR20150143472A publication Critical patent/KR20150143472A/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/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
  • Medical Treatment And Welfare Office Work (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

본 발명은 동작(behavior)을 수행하는 컨트롤(control)을 트리거링하는 이벤트의 간편한 선택에 관한 것이다. 컨트롤은 동작을 트리거링하는데 사용될 수 있는 복수의 이벤트를 갖는다. 사용자, 특히 프로그래머가 아닌 사용자가 임의의 주어진 동작을 트리거링하는 적절한 이벤트를 선택하는 것은 아마도 어려울 수 있을 것이다. 시스템은 사용자가 동작을 지정하는 것에 응답하여 의도에 맞는 하나 이상의 이벤트 세트를 자동으로 식별함으로써 컨트롤이 관심 동작을 수행하는 것을 돕는다. 자동으로 식별된 이벤트는, 그 동작을 수행하는 중에 컨트롤에 의해 조작될 것으로 식별되는 관심 데이터에 의존할 수도 있다. 시스템은 하나 이상의 자동으로 식별된 이벤트를 제안할 수도 있고, 심지어 선택된 이벤트에 응답하여 그 동작을 수행하도록 컨트롤을 자동으로 구성할 수도 있다.

Description

컨트롤 이벤트의 생성 기법{ASSISTED CREATION OF CONTROL EVENT}
"재계산 문서(recalculation document)"는 다양한 데이터 소스(data source)와 데이터 싱크(data sink)를 보여주는 전자 문서이며, 데이터 소스와 데이터 싱크 사이의 선언적인 변환(declarative transformation)을 허용한다. 다양한 데이터 소스와 데이터 싱크를 상호연결하는 임의의 소정의 변환 세트에 대해, 데이터 소스의 출력이 데이터 싱크에 의해 소비될 수도 있고, 또는 데이터 소스의 출력은 데이터 싱크에 의해 소비되기 전에 변환될 수도 있다. 이들 다양한 변환은 평가되어 결과적으로 재계산 문서를 통해 표현되는 하나 이상의 출력이 된다.
사용자는 코딩에 대해 깊이 알지 않고도 선언적인 변환을 추가하고 편집할 수 있다. 이러한 편집은 자동으로 변환이 재계산되게 하며, 하나 이상의 출력에서 변화를 일으킨다.
재계산 문서의 일특정 예로는 셀들의 격자를 포함하는 스프레드시트 문서가 있다. 임의의 소정 셀은 셀 내에 디스플레이되는 특정 값을 출력하도록 평가되는 표현을 포함할 수 있다. 이 표현은 하나 이상의 다른 셀 또는 값과 같은 데이터 소스를 나타낼 수 있다.
본 명세서에 기술된 적어도 일부 실시예는 동작(behavior)을 수행하는 컨트롤(control)을 트리거링하는 이벤트의 간편한 선택에 관한 것이다. 컨트롤은 동작을 트리거링하는데 사용될 수 있는 복수의 이벤트를 갖는다. 사용자, 특히 프로그래머가 아닌 사용자가 임의의 주어진 동작을 트리거링하는 적절한 이벤트를 선택하는 것은 아마도 어려울 수 있을 것이다. 시스템은 사용자가 동작을 지정하는 것에 응답하여 의도에 맞는 하나 이상의 이벤트 세트를 자동으로 식별함으로써 컨트롤이 관심 동작을 수행하는 것을 돕는다. 자동으로 식별된 이벤트는, 사용자가 그 동작을 수행하는 중에 컨트롤에 의해 조작될 것으로 파악하는 관심 데이터에 의존할 수도 있다. 시스템은 하나 이상의 자동으로 식별된 이벤트를 제안할 수도 있고, 심지어 선택된 이벤트에 응답하여 그 동작을 수행하도록 컨트롤을 자동으로 구성할 수도 있다.
본 개요는 청구항의 청구대상의 핵심적인 특징이나 필수적인 특징들을 밝히고자 함이 아니며, 청구항의 청구대상의 범위를 결정하는 데 도움이 되고자 함도 아니다.
상기 및 다른 이점들 및 특징들을 얻을 수 있는 방식을 설명하기 위해, 첨부 도면을 참조하여 다양한 실시예에 대해 보다 구체적으로 설명할 것이다. 이들 도면은 샘플 실시예를 도시한 것일 뿐이며 따라서 본 발명의 범위를 한정하는 것으로 간주되어서는 안 된다는 점을 이해하기 바라며, 실시예들은 첨부 도면을 이용하여 보다 구체적이고 상세하게 설명할 것이다.
도 1은 본 명세서에 기술된 일부 실시예가 실시될 수 있는 컴퓨팅 시스템을 추상적으로 도시한 것이다.
도 2는, 복수의 동작을 수행할 수 있으며 트리거링 동작에 사용하기 위한 다수의 이벤트를 갖는 컨트롤을 도시한 것이다.
도 3은 계층적 구조의 복합 컨트롤을 도시한 것이다.
도 4는 동작을 수행하도록 컨트롤을 구성하는 방법을 도시한 흐름도이다.
도 5는 예시적인 재계산 사용자 인터페이스를 추상적으로 도시한 것으로, 중간 변환을 갖는 몇 개의 데이터 소스 및 데이터 싱크를 도시한 것이다.
도 6은, 변환 체인에 액세스하며 컴파일된 코드 및 의존성 체인(dependency chain)을 생성하는 컴파일러를 포함하는 예시적인 컴파일 환경을 도시한 것이다.
도 7은 재계산 사용자 인터페이스의 변환 체인을 컴파일하는 방법의 흐름도이다.
도 8은, 입력 데이터에 의존하는 뷰 컴포지션을 구성하는 데이터 구동 컴포지션 프레임워크를 포함하는, 본 발명의 원리가 이용될 수 있는 환경을 도시한 것이다.
도 9는 도 8의 환경의 일례를 나타내는 파이프라인 환경을 도시한 것이다.
도 10은 도 9의 파이프라인의 데이터부의 실시예를 개략적으로 도시한 것이다.
도 11은 도 9의 파이프라인의 분석부의 실시예를 개략적으로 도시한 것이다.
도 12는 도 9의 파이프라인의 보기부의 실시예를 개략적으로 도시한 것이다.
본 명세서에 기술된 적어도 일부 실시예는 동작을 수행하는 컨트롤(control)을 트리거링하는 이벤트의 간편한 선택과 관련이 있다. 컨트롤은 동작을 트리거링하는데 사용될 수 있는 복수의 이벤트를 갖는다. 사용자, 특히 프로그래머가 아닌 사용자가 임의의 주어진 동작을 트리거링하는 적절한 이벤트를 선택하는 것은 아마도 어려울 수 있을 것이다. 시스템은 사용자가 동작을 지정하는 것에 응답하여 의도에 맞는 하나 이상의 이벤트 세트를 자동으로 식별함으로써 컨트롤이 관심 동작을 수행하는 것을 돕는다. 자동으로 식별된 이벤트는, 사용자가 그 동작을 수행하는 중에 컨트롤에 의해 조작될 것으로 파악하는 관심 데이터에 의존할 수도 있다. 시스템은 하나 이상의 자동으로 식별된 이벤트를 제안할 수도 있고, 심지어 선택된 이벤트에 응답하여 그 동작을 수행하도록 컨트롤을 자동으로 구성할 수도 있다.
컴퓨팅 시스템에 대한 서론은 도 1과 관련하여 기술될 것이다. 그 다음에, 동작을 수행하기 위해 컨트롤을 트리거링하는데 사용되는 이벤트의 선택을 용이하게 하는 프로세스를 후속 도면을 참조하여 차례로 설명할 것이다.
컴퓨팅 시스템은 이제 다양한 형태를 취해가고 있다. 컴퓨팅 시스템은, 예를 들어, 핸드헬드 장치, 가전, 랩탑 컴퓨터, 데스크탑 컴퓨터, 메인프레임, 분산 컴퓨팅 시스템, 또는 심지어 통상적으로 컴퓨팅 시스템으로 간주되지 않았던 장치도 포함할 수 있다. 본원의 상세한 설명 및 청구범위에서, "컴퓨팅 시스템"이란 용어는, 적어도 하나의 물리적이고 형태가 있는(tangible) 프로세서와, 프로세서에 의해 실행될 수 있는 컴퓨터 실행가능 명령어를 수록할 수 있는 물리적이고 형태가 있는 메모리를 포함하는, 임의의 장치나 시스템을 포함하는 것으로 넓게 정의된다. 메모리는 임의의 형태를 취할 수 있으며 컴퓨팅 시스템의 특성과 형태에 의존할 수 있다. 컴퓨팅 시스템은 네트워크 환경에 걸쳐 분산될 수 있고 복수의 컴퓨팅 시스템을 포함할 수 있다.
도 1에 도시된 바와 같이, 가장 기본 구성에서, 컴퓨팅 시스템(100)은 적어도 하나의 프로세싱 유닛(102)과 메모리(104)를 포함한다. 메모리(104)는 휘발성, 비휘발성, 또는 이 둘의 조합일 수 있는 물리적 시스템 메모리일 수 있다. "메모리"란 용어는 또한 본 명세서에서 물리적 저장 매체와 같은 대용량 저장부를 지칭하는데 사용될 수 있다. 컴퓨팅 시스템이 분산되면, 프로세싱, 메모리 및/또는 저장 능력도 분산될 수 있다. 본 명세서에서 사용되는 용어 "실행가능 모듈" 또는 "실행가능 컴포넌트"는 컴퓨팅 시스템에서 실행될 수 있는 소프트웨어 객체, 라우팅, 또는 메소드를 지칭할 수 있다. 본 명세서에 기술되는 다른 컴포넌트, 모듈, 엔진 및 서비스는 컴퓨팅 시스템에서 실행되는 오브젝트나 프로세스(예컨대, 별도의 스레드들)로서 구현될 수 있다.
후술하는 설명에서, 실시예들은 하나 이상의 컴퓨팅 시스템에 의해 수행되는 동작을 참조하여 기술된다. 이들 동작이 소프트웨어로 구현되면, 그 동작을 수행하는 관련 컴퓨팅 시스템의 하나 이상의 프로세서가 컴퓨터 실행가능 명령어를 실행했다는 것에 응답하여 컴퓨팅 시스템의 조작을 지시한다. 예를 들어, 이들 컴퓨터 실행가능 명령어는 컴퓨터 프로그램 제품을 형성하는 하나 이상의 컴퓨터 판독가능 매체에 수록될 수 있다. 그러한 조작의 일례는 데이터의 조작을 포함한다. 컴퓨터 실행가능 명령어(및 조작된 데이터)는 컴퓨팅 시스템(100)의 메모리(104)에 저장될 수 있다. 컴퓨팅 시스템(100)은 또한, 컴퓨팅 시스템(100)이 예컨대 네트워크(110)를 통해 다른 메시지 프로세서와 통신할 수 있게 하는 통신 채널(108)을 포함할 수 있다. 컴퓨팅 시스템(100)은 또한 디스플레이(112)를 포함하며, 이 디스플레이는 사용자에게 시각적 표현을 디스플레이하는데 사용될 수 있다.
본 명세서에 기술된 실시예는, 아래에 보다 상세히 설명하는 바와 같이, 예컨대 하나 이상의 프로세서 및 시스템 메모리와 같은 컴퓨터 하드웨어를 포함하는 특수 목적 또는 범용 컴퓨터를 포함하거나 이용할 수 있다. 본 명세서에 기술된 실시예들은 또한 컴퓨터 실행가능 명령어 및/또는 데이터 구조를 반송 또는 저장하는 물리적 및 기타 컴퓨터 판독가능 매체를 포함한다. 이러한 컴퓨터 판독가능 매체는 범용 또는 특수 목적 컴퓨터 시스템에 의해 액세스될 수 있는 임의의 이용가능 매체일 수 있다. 컴퓨터 실행가능 명령어를 저장하는 컴퓨터 판독가능 매체는 물리적 저장 매체이다. 컴퓨터 실행가능 명령어를 반송하는 컴퓨터 판독가능 매체는 전송 매체이다. 따라서, 예를 들어, 본 발명의 실시예는 적어도 두 종류의 컴퓨터 판독가능 매체, 즉 컴퓨터 저장 매체 및 전송 매체를 포함할 수 있다.
컴퓨터 저장 매체는, RAM, ROM, EEPROM, CD-ROM, 또는 다른 광 디스크 저장부, 자기 디스크 저장부 또는 기타 자기 저장 장치, 또는 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 저장하는데 사용될 수 있고 범용 또는 특수목적 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함한다.
"네트워크"는 컴퓨터 시스템 및/또는 모듈 및/또는 기타 전자 장치 사이에서 전자 데이터의 전달을 가능하게 하는 하나 이상의 데이터 링크로서 정의된다. 네트워크 또는 다른 통신 연결(유선, 무선 또는 유선 또는 무선의 조합)을 통해 컴퓨터에 정보가 전달되는 경우, 컴퓨터는 이 연결을 전송 매체로서 간주한다. 전송 매체는, 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 반송하는데 사용될 수 있고 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 네트워크 및/또는 데이터 링크를 포함할 수 있다. 이들의 조합이 또한 컴퓨터 판독가능 매체의 범위 내에 포함될 수 있다.
또한, 다양한 컴퓨터 시스템 컴포넌트에 도달하면, 컴퓨터 실행가능 명령어 또는 데이터 구조 형태의 프로그램 코드 수단은 자동으로 전송 매체에서 컴퓨터 저장 매체로 (또는 그 역으로) 전달될 수 있다. 예를 들어, 네트워크 또는 데이터 링크를 통해 수신된 컴퓨터 실행가능 명령어 또는 데이터 구조는 네트워크 인터페이스 컨트롤러(예컨대, "NIC") 내의 RAM 내에 버퍼링될 수 있고, 그 후 최종적으로 컴퓨터 시스템 RAM 및/또는 컴퓨터 시스템에 있는 난휘발성(less vlatile) 컴퓨터 저장 매체로 전달될 수 있다. 따라서, 컴퓨터 저장 매체는 전송 매체를 또한 (또는 주로) 이용하는 컴퓨터 시스템 컴포넌트에 포함될 수 있다.
컴퓨터 실행가능 명령어는, 예컨대, 프로세서에서 실행될 경우에, 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적 프로세싱 장치로 하여금 소정의 기능 또는 기능 그룹을 수행하게 하는 명령어를 포함한다. 컴퓨터 실행가능 명령어는, 예를 들어, 이진수, 어셈블리어와 같은 중간 포맷 명령어, 또는 심지어 소스 코드일 수도 있다. 청구대상은 비록 구조적 특징 및/또는 방법론적 동작에 특정된 언어로 기술되었지만, 첨부된 청구항에 정의된 청구대상은 반드시 기술된 특징 또는 전술한 동작으로 제한되지는 않는다는 것을 이해해야 한다. 오히려, 기술된 특징 및 동작은 청구항을 구현하는 예시적인 형태로 개시된다.
당업자는 본 발명이 개인용 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 메시지 프로세서, 핸드헬드 장치, 멀티 프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능 가전, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 모바일 전화기, PDA, 페이저, 라우터, 스위치 등을 포함하는 많은 유형의 컴퓨터 시스템 구성을 갖는 네트워크 컴퓨팅 환경에서 실시될 수 있음을 이해할 수 있을 것이다. 본 발명은 또한 (유선 데이터 링크, 무선 데이터 링크, 또는 유선 및 무선 데이터 링크의 조합에 의해 )네트워크를 통해 링크되는 로컬 및 원격 컴퓨터 시스템이 모두 태스크를 수행하는 분산 시스템 환경에서 실시될 수도 있다. 분산 시스템 환경에서, 분산 시스템 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치에 위치할 수 있다.
도 2는 복수의 동작(behavior)(202)을 수행할 수 있는 컨트롤(200)을 도시한 것이다. 동작들(202)은 컨트롤에 의해 수행될 수 있는 일반적인 액션이며, 사용자가 프로그래머가 아니더라도 사용자에 의해 쉽게 인식될 수 있는 대응하는 이름을 포함한다. 동작들(202)은 반드시 컨트롤(200) 내의 임의의 식별된 코드에 대응하지는 않고, 단지 컨트롤(200)에 의해 수행되는 일반적인 액션이다.
동작들(202) 중 일부는 데이터에 대한 생성 액션을 수행할 수 있다. 따라서, 컨트롤(200)은 데이터(203)에 대한 액세스를 갖는 것으로 도시되어 있다. 일례에서, 데이터(203)는 컨트롤(200)의 속성을 나타내지만, 이와 달리 또는 이에 더하여 데이터(203)는 컨트롤(200) 외부에 있는 데이터일 수도 있다. 컨트롤(200)은 식별된 아이템 데이터(예컨대, 데이터 아이템들(203) 중 하나 이상)에 대한 동작(예컨대, 동작들(202) 중 하나 이상)의 수행을 트리거링하도록 동작과 연관될 수 있는 이벤트들의 세트(201)를 갖는다.
컨트롤(200)은 컴퓨팅 시스템(100)에 유지되는 컴포넌트일 수 있다. 예를 들어, 컨트롤(200)은 컴퓨터 판독가능 저장 매체와 같은 컴퓨터 판독가능 매체에서 구현되는 컴퓨터 실행가능 명령어를 실행하는 하나 이상의 프로세서(102)에 응답하여 인스턴스화되고/되거나 조작될 수 있다.
컨트롤(200)은 시각화 컨트롤 또는 신호 캡처 컨트롤일 수 있다. 시각화 컨트롤은 하나 이상의 파라미터에 따라 소정의 방식으로 디스플레이하는 컨트롤이다. 반면에, 신호 캡처 컨트롤은 환경 신호를 캡처하도록 구성된다. 신호 캡처 컨트롤에 의해 캡처될 수 있는 환경 신호의 예로는 이미지, 비디오, 오디오, 사운드 레벨, 방향, 위치, 생체인식, 기상, 가속도, 압력 등을 들 수 있다.
도 3은 계층적으로 구조화된 복합 컨트롤(300)을 도시한 것이다. 상세한 설명 또는 청구범위에서, "복합 컨트롤(compound control)"은 구성요소 컨트롤을 포함하고/하거나 피어 컨트롤을 갖는 컨트롤이다. 예를 들어, 복합 컨트롤(300)은 자식 컨트롤(301) 및 생략부호(302)로 표현된 잠재적인 다른 자식 컨트롤을 포함한다. 마찬가지로, 자식 컨트롤(301)은 자신의 자식 컨트롤(311) 및 생략부호(312)로 표현된 잠재적인 다른 자식 컨트롤을 포함하고 있기 때문에 자체가 복합 컨트롤이다. 컨트롤(200)은 그 자체가 복합 컨트롤 및/또는 복합 컨트롤의 멤버 컨트롤일 수 있기 때문에 컨트롤(200)은 컨트롤(300, 301, 311) 중 어느 하나일 수 있다.
도 4는 동작을 수행하도록 컨트롤을 구성하는 방법(400)의 흐름도이다. 방법(400)은 컨트롤(200) 상의 컴퓨팅 시스템(100)에 의해 수행될 수 있으므로, 방법(400)은 이제 도 1 및 2와 관련하여 설명할 것이다. 본 명세서에 기재된 방법들 중 임의의 방법과 마찬가지로, 방법(400)은 하나 이상의 프로세서(102)가 컴퓨터 판독가능 저장 매체와 같은 컴퓨터 판독가능 매체에 포함된 컴퓨터 실행가능 명령어를 실행하는 것에 응답하여 컴퓨팅 시스템(100)에 의해 수행될 수 있다.
선택적으로, 방법(400)은 관심 동작의 문장(statement)을 사용자에게 입력요청하는 단계(단계 411)를 포함한다. 예를 들어, 도 1 및 2를 참고하면, 컴퓨팅 시스템(100)은 디스플레이(112)를 사용하여 컨트롤(200)의 동작들(202) 각각에 대한 이름(또는 다른 식별자)을 제시할 수 있다. 그 응답으로, 사용자는 관심 동작에 대한 문장을 입력한다(단계 412). 예를 들어, 사용자는 제시된 동작들 중 하나를 선택할 수 있다.
또는, 사용자는 관심 동작에 대한 문장을 (선택 옵션과 관련한 프롬프팅없이)자유 형식(free-form)으로 입력할 수 있다. 예를 들어, 사용자는 관심 동작의 자연어 문장으로 타이핑할 수 있다. 컴퓨팅 시스템은 자유 형식 문장을 사용하여 컨트롤(200)과 연관된 동작들(202) 중 하나를 직관적으로(heuristically) 식별할 수 있다. 그 다음에 방법(400)은 컨트롤에 의해 수행될 사용자 관심 동작을 나타내는 사용자 입력을 검출한다(단계 413).
선택적으로, 방법(400)은 관심 동작이 조작해야 하는 관심 데이터의 문장을 사용자에게 요청하는 단계를 포함한다(단계 421). 예를 들어, 도 1 및 2를 참고하면, 컴퓨팅 시스템(100)은 디스플레이(112)를 사용하여 컨트롤(200)의 각 데이터 아이템들(203)의 이름(또는 다른 식별자)을 제시할 수 있다. 그 응답으로, 사용자는 관심 데이터에 대한 문장을 입력한다(단계 422). 예를 들어, 사용자는 제시된 동작들 중 하나를 선택할 수 있다. 데이터 아이템(203)은 특정 데이터, 데이터 컬렉션, 또는 데이터의 종류를 식별할 수 있다.
또는, 사용자는 관심 데이터의 문장을 (선택 옵션과 관련한 프롬프팅없이)자유 형식(free-form)으로 입력할 수 있다. 예를 들어, 사용자는 관심 데이터의 자연어 문장으로 타이핑할 수 있다. 컴퓨팅 시스템은 이 자유 형식 문장을 사용하여, 데이터 아이템들(203) 중 식별된 동작이 조작해야 하는 하나를 직관적으로 식별할 수 있다. 그 다음에 방법(400)은 관심 데이터를 나타내는 사용자 입력을 검출한다(단계 423). 단계(421 내지 423)는 선택적이며, 데이터에 대해 조작하지 않는 동작에 대해 특정적이다.
그 다음에 방법(400)은 (단계 422 및 423이 수행되면 식별된 관심 데이터에 대한)식별된 관심 동작을 수행하기 위해 의도에 맞는 하나 이상의 이벤트 세트를 자동으로 식별한다(단계 431). 그 다음에 방법(400)은 하나 이상의 식별된 이벤트 세트 중 적어도 하나를 사용자에게 제안하는 단계(단계 432)를 포함한다.
사용자를 도와 컨트롤을 작성하는 오서링(authoring) 프로그램이 컴퓨팅 시스템(100) 상에서 실행될 수 있다. 오서링 프로그램의 하나 이상의 기능은 사용자를 도와 동작을 수행하기 위해 컨트롤을 트리거링하기에 적합한 컨트롤의 이벤트를 식별한다. 이런 이벤트는 능숙한 프로그래머에 의해 오서링 프로그램을 시핑(shipping)하기 전에 식별될 수 있다. 예를 들어, 각각의 컨트롤 타입에 대해, 프로그래머는 가능한 동작들을 식별할 수 있다. 각각의 가능한 동작에 대해, 프로그래머는 조작될 가능한 데이터의 종류를 식별할 수 있다. 따라서, 특정 컨트롤 타입의 컨트롤의 작성 동안에, 비프로그래머(non-programmer)가 그 동작(및 가능한 조작될 데이터)을 식별할 경우, 컴퓨팅 시스템은 프로그래머에 의해 사전에 식별된 하나 이상의 이벤트로 이루어진 세트를 식별할 수 있다. 또는, 컴퓨팅 시스템 자체가, 컨트롤, 동작, 및 소정의 데이터가 주어진 경우에 프로그래머가 적절한 이벤트를 식별하는데 적용한 인텔리전스의 일부 또는 전부를 적용할 수 있다.
사용자는 제안된 이벤트들 중 하나를 선택할 수 있다(판정 블록(433)에서 선택된다). 예를 들어, 선택된 이벤트는 도 2의 컨트롤(200)의 하나 이상의 이벤트(210)일 수 있다. 컴퓨팅 시스템은 그 후 사용자가 제안된 이벤트를 선택하였음을 검출한다(단계 441). 이에 따라, 컴퓨팅 시스템은 선택된 이벤트가 발생할 경우에 동작을 수행하도록 컨트롤을 자동으로 구성한다(단계 442). 예를 들어, 오서링 프로그램을 작성한 프로그래머는 또한 이 구성(configuration)이 일어나게 하는 명령형 코드(imparative code)를 작성할 수도 있다. 명령형 코드는 선택된 이벤트의 검출 시에 실행될 수 있다.
한편, 사용자는 제안된 이벤트들 중 하나를 편집할 수 있다(판정 블록(433)에서 편집한다). 그 후, 컴퓨팅 시스템은 사용자가 제안된 이벤트를 선택하였음을 검출한다(단계 451). 예를 들어, 이벤트는 이벤트의 범위를 좁히도록 편집될 수 있다. 일례로서, 슬라이더 컨트롤과 연관된 이벤트는 슬라이더 컨트롤의 이동일 수 있다. 그러나, 사용자는 슬라이더 컨트롤이 슬라이더 범위의 중간 지점 이상 이동할 경우에만 이벤트가 트리거링하도록 이벤트를 추가로 편집할 수 있다. 편집에 응하여, 컴퓨팅 시스템은 편집된 이벤트가 일어날 때 동작을 수행하도록 자동으로 컨트롤을 구성한다(단계 452).
본 명세서에 기술된 원리는 재계산 사용자 인터페이스를 작성하는 상황에서 특히 도움이 되는데, 이는 비프로그래머는 컨트롤이 얼마나 복잡한지에 관계없이 컨트롤의 동작을 트리거링하는 이벤트를 보다 쉽고 직관적으로 선택할 수 있기 때문이다. 예를 들어, 컨트롤(200)은 재계산 사용자 인터페이스 내에 포함될 수 있다.
본원 상세한 설명 및 청구범위에서, "재계산 사용자 인터페이스"는 사용자가 상호작용하며 하나 이상의 데이터 소스 및 하나 이상의 데이터 싱크가 존재하는 환경에서 발생하는 인터페이스이다. 또한, 하나 이상의 데이터 소스와 데이터 싱크 사이에 각각 선언적으로 정의될 수 있는 변환들로 이루어진 세트가 존재한다. 예를 들어, 하나의 데이터 소스의 출력이 변환에 공급되고, 그 후 변환으로 인한 결과가 데이터 싱크에 제공되어, 결국 시각화에 있어 몇몇 종류의 변화가 사용자에게 제공될 수 있다.
이들 변환은 특별한 코딩 지식을 갖고 있지 않은 사용자가 변환을 정의하는 선언문을 기록할 수 있다는 의미에서 "선언적(declarative)"이다. 변환이 선언적으로 정의되므로, 사용자는 선언적인 변환을 변경할 수 있다. 이에 따라, 재계산이 수행되고, 결과적으로 상이한 데이터가 데이터 싱크에 제공될 수 있을 것이다.
재계산 사용자 인터페이스의 전형적인 예로 스프레드시트 문서가 있다. 스프레드시트 문서는 셀들로 이루어진 격자를 포함한다. 처음에, 셀은 비어있으며, 따라서 스프레드시트 프로그램의 임의의 셀은 사용자에 의해 입력된 선언적 표현의 의미와 컨텍스트에 따라 데이터 소스 또는 데이터 싱크로 될 가능성을 갖는다. 예를 들어, 사용자는 소정 셀을 선택하고 그 셀에 표현을 타이핑할 수 있다. 이 표현은 그 셀에 할당될 표현된 스칼라 값만큼 단순할 수 있다. 이 셀은 나중에 데이터 소스로서 사용될 수 있다. 소정 셀에 있어서의 이 표현은 입력 값이 하나 이상의 다른 셀로부터 취해지는 방정식 형태일 수 있다. 이 경우, 소정 셀은 변환의 결과를 디스플레이하는 데이터 싱크이다. 그러나, 작성을 계속하는 동안, 이 셀은 작성자(author)에 의해 선언적으로 작성된 또 다른 변환에 대해 데이터 싱크로서 사용될 수도 있다.
스프레드시트 문서의 작성자는 명령형 코드에 대한 전문가일 필요가 없다. 작성자는 단순히 변환을 정의하는 선언문을 작성하고, 대응하는 데이터 싱크 및 데이터 소스를 선택할 것이다. 아래에서 설명하는 도 8 내지 12는 보다 일반화된 재계산 사용자 인터페이스가 기술되는 보다 일반화된 선언적 작성 환경을 제공한다. 후술하는 환경에서, 시각화된 컨트롤은 데이터 소스 및 데이터 싱크 역할을 모두 할 수 있다. 또한, 선언적 변환은 이들 컨트롤의 간단한 조작에 의해 보다 직관적으로 작성될 수 있다.
도 5는 예시적인 재계산 사용자 인터페이스(500)를 추상적으로 도시한 것으로, 본 명세서에 기술된 보다 광범위한 원리를 설명하기 위해 제공된 특정 예를 도시한 것이다. 재계산 사용자 인터페이스(500)는 단지 일례로, 본 명세서에 기술된 원리들은 임의의 재계산 사용자 인터페이스에 적용되어 수많은 다양한 애플리케이션에 대해 수많은 다양한 재계산 사용자 인터페이스를 생성한다.
재계산 사용자 인터페이스(500)는 몇몇 선언적인 변환(511 내지 515)을 포함한다. 변환(511 내지 516)을 나타내는 각 화살표들 주위의 점선 원은 이들 변환이 각각 선언적인 형태임을 나타낸다.
도 5의 특정 예에서, 변환(511)은 제각기의 데이터 소스(501) 및 데이터 싱크(502)를 포함한다. 한 변환에서의 데이터 싱크는 다른 변환에서는 데이터 소스가 될 수도 있다. 예를 들어, 변환(511)에서의 데이터 싱크(502)는 변환(512)에서는 데이터 소스 역할을 한다. 또한, 변환은 복수의 데이터 소스를 가질 수도 있다. 따라서, 변환 체인은 계층적으로 형성될 수 있으며, 따라서 상당히 복잡할 수 있다. 예를 들어, 변환(512)은 데이터 소스(502) 및 데이터 싱크(503)를 포함한다. 데이터 싱크(503)는 2개의 데이터 소스를 포함하는데, 즉, 변환(512)에서의 데이터 소스(502)와 변환(514)에서의 데이터 소스(505)를 포함한다. 이것은 하나의 변환이 2개의 데이터 소스(502, 505)를 데이터 싱크(503)로 안내함을 나타낸다. 변환(513)은 데이터 소스(504) 및 데이터 싱크(505)를 포함한다.
예를 들어 재계산 사용자 인터페이스가 스프레드시트 문서이면,다양한 데이터 소스/싱크(501 내지 505)는 스프레드 시트 셀일 것이며, 이 경우 변환은 각 데이터 싱크와 연관되는 표현을 나타낸다. 각 표현의 출력은 셀 내에 디스플레이된다. 따라서, 스프레드 시트의 경우에, 데이터 소스/싱크는 변환 체인에 대한 입력 파라미터 및 출력 파라미터를 모두 포함한 복잡한 시각화된 컨트롤이 될 수 있다. 예를 들어, 도 5에는 데이터 소스(505)로부터 데이터 싱크(501)로 안내하는 추가적인 선언적 변환(515)이 존재한다. 따라서, 데이터 소스/싱크(501)는 변환(515)으로부터의 출력을 나타내는 정보를 시각화할 수 있을 뿐만 아니라, 추가 데이터를 다른 데이터 싱크에 제공할 수도 있다.
재계산 사용자 인터페이스는 시각화 컨트롤을 가질 필요가 없다. 이것의 한 예는, 정상적인 경우에 계산에 대해 사용자에게 디스플레이되는 정보 없이 변환 기반 계산을 수행하고 소스 데이터를 사용하고 싱크 데이터를 업데이트하기 위한 재계산 사용자 인터페이스이다. 예를 들어, 재계산 사용자 인터페이스는 배경 계산을 지원할 수 있다. 두 번째 예는 프로세스 컨트롤 예에서의 밸브와 같은 외부 액츄에이터를 조작하는 출력 컨트롤을 갖는 재계산 사용자 인터페이스이다. 이런 컨트롤은 그들의 상태가 변환 계산 및 온 신호 입력의 결과에 의해 제어된다는 점에서 디스플레이 컨트롤과 유사하다. 그러나, 여기서는, 출력이 디스플레이에 대한 시각화보다는 장치에 대한 제어 신호이다. 예를 들어, 로봇을 제어하는 재계산 사용자 인터페이스를 고려해보자. 이 재계산 사용자 인터페이스는 서보 위치 및 속도, 초음파 거리 측정 등과 같은 입력 로봇 센서에 의존하는 로봇 액션 및 동작에 대한 규칙을 가질 수 있다. 또는 밸브 위치, 유량 변화 등과 같은 장비 센서로부터 신호를 취하는 재계산 사용자 인터페이스에 기초하여 프로세스 컨트롤 애플리케이션을 고려해보자.
도 6은 변환 체인(601)에 액세스하는 컴파일러(610)를 포함하는 예시적인 컴파일 환경(600)을 도시한 것이다. 변환 체인(601)의 일례는 도 5의 변환 체인(500)이다. 도 7은 재계산 사용자 인터페이스의 변환 체인을 컴파일하는 방법(700)의 흐름도를 도시한 것이다. 방법(700)은 도 6의 컴파일러(610)에 의해 수행될 수 있다. 일실시예에서, 방법(700)은 프로세서(102)가 하나 이상의 컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 실행가능 명령어를 실행하는 것에 응답하여 컴퓨팅 시스템(100)에 의해 수행될 수 있다.
방법(700)은 의존성에 대해 재계산 사용자 인터페이스의 변환 체인을 분석하는 단계(단계 701)를 포함한다. 예를 들어, 도 5를 참고하면, 컴파일러(600)는 변환들(511 내지 515) 각각을 분석할 수 있다. 이들 변환은 선언적이며, 따라서 그 의존성은 변환들이 명령형 컴퓨터 언어를 사용하여 표현될 경우보다 더 쉽게 추출될 수 있다.
이 분석에 기초하여, 변환들에서 참조된 엔티티들 간의 의존성 그래프가 생성된다(단계 702). 기본적으로, 의존성은 이벤트를 나타내는 소스 엔티티와, 타겟 엔티티의 평가가 그 이벤트에 의존함을 나타내는 타겟 엔티티를 갖는다. 이벤트의 일례는 사용자가 재계산 사용자 인터페이스와 어떠한 방식으로 상호작용하는 사용자 이벤트일 수 있다. 다른 예로서, 이벤트는 소스 엔티티가 평가되면 그 의존관계의 타겟 엔티티가 평가되어야 하는 엔티티간 이벤트일 수 있다.
그 후, 컴파일러는 의존성 그래프에 기초하여 하위 레벨 실행 단계를 생성한다(단계 703). 하위 레벨 실행 단계는, 예컨대, 명령형 언어 코드일 수 있다. 명령형 언어 코드는, 이벤트 검출에 응답하고, 이벤트 차트를 참고하여 실행할 기능을 결정하고, 그 기능을 실행하도록 구성된다. 따라서, 의존성 그래프에서의 각각의 의존성은 하나의 기능으로 축소될 수 있다. 의존성 그래프 자체는 런타임에 제공될 수 있다(단계 704). 명령형 언어 코드는, 예를 들어 자바스크립트와 같은 스크립트 언어일 수 있다. 그러나, 본 명세서에 기술된 원리는 임의의 특정 언어의 명령형 언어 코드에 제한되지 않는다.
일례로서, 도 6은 컴파일러(610)가 하위 레벨 코드(611)를 또한 생성함을 도시하고 있다. 이러한 하위 레벨 코드(611)는 변환 체인 내의 각 변환의 컴파일을 포함한다. 예를 들어, 하위 레벨 코드(611)는 변환 체인 내의 각 변환의 컴파일을 나타내는 요소들(621)을 포함하는 것으로 도시되어 있다. 도 5의 컨텍스트에서, 요소(621)는 각 변환들(511 내지 515)의 컴파일을 포함할 것이다. 하위 레벨 코드(611)는 또한 다양한 기능(622)을 포함한다. 기능은 의존성 그래프 내의 각각의 의존성에 대해 생성된다. 이들 기능은 명령형 언어 기능일 수 있다.
명령형 언어 런타임이 의존성 그래프에 리스트된 이벤트를 검출하는 경우, 컴파일된 기능(622) 내의 대응 기능이 또한 실행된다. 따라서, 모든 변환이 적절히 컴파일되고 특정 이벤트에 대한 각각의 의존성이 전용 기능에 의해 적용되면, 선언적 재계산 사용자 인터페이스가 명령형 언어 코드로서 적절히 표현된다.
이와 같이, 명령형 재계산 사용자 인터페이스를 컴파일하기 위한 효과적인 메커니즘을 설명하였다. 또한, 런타임은 보다 광범위한 해석기보다는 의존성 그래프를 구비한다.
이제 비프로그래머가 재계산 사용자 인터페이스를 사용하여 복잡한 동작을 갖는 프로그램을 작성할 수 있게 하는 오서링 파이프라인의 특정 예를 도 8 내지 12을 참고하여 설명할 것이다.
도 8은 대화식 비주얼 컴포지션을 재계산 사용자 인터페이스의 형태로 구축하는데 사용될 수 있는 비주얼 컴포지션 환경(800)을 도시한 것이다. 재계산 사용자 인터페이스의 구축은 데이터 구동 분석 및 분석 결과의 시각화를 이용하여 수행된다. 환경(800)은 뷰 컴포지션(830)의 문제 도메인과 독립적으로 수행되는 로직을 수행하는 컴포지션 프레임워크(810)를 포함한다. 예를 들어, 도시 계획, 분자 모델, 식료품 선반 레이아웃, 기계 성능 또는 조립 분석, 또는 기타 도메인 특정 렌더링을 위해 대화형 뷰 컴포지션을 작성하기 위해 동일한 컴포지션 프레임워크(810)가 사용될 수 있다.
그러나, 컴포지션 프레임워크(810)는 도메인 특정 데이터(820)를 사용하여 그 도메인에 특정한 실제 비주얼 컴포지션(830)을 구축한다. 따라서, 임의의 수의 상이한 도메인에 대한 재계산 사용자 인터페이스를 구축하기 위해, 컴포지션 프레임워크(810) 자체를 재부호화할 필요없이 도메인 특정 데이터(820)를 변경함으로써, 동일한 컴포지션 프레임워크(810)가 사용될 수 있다. 따라서, 파이프라인(800)의 컴포지션 프레임워크는 재부호화 및 재컴파일링하지 않고 데이터를 변경함으로써 잠재적으로 제한없는 문제 도메인 또는 적어도 다양한 문제 도메인에 적용될 수 있다. 그 다음에, 뷰 컴포지션(830)이 적절한 2-D 또는 3-D 렌더링 모듈에 명령어로서 제공될 수 있다. 본 명세서에 기술된 아키텍처는 기존의 뷰 컴포지션 모델을 빌딩 블록으로서 새로운 뷰 컴포지션 모델에 간편하게 포함시키도록 허용한다. 일실시예에서, 복수의 뷰 컴포지션이 통합 뷰 컴포지션에 포함되어 모델에 대해 2개의 가능한 솔루션 사이를 편리하게 비교할 수 있게 된다.
도 9는 컴포지션 프레임워크(510)의 예시적인 아키텍처를 파이프라인 환경(900)의 형태로 도시한 것이다. 파이프라인 환경(900)은 무엇보다도 파이프라인(901) 자체를 포함한다. 파이프라인(901)은 데이터부(910), 분석부(920), 및 보기부(view portion)(630)를 포함하는데, 이들에 대해서는 도 10 내지 12 및 하기 설명을 참고하여 보다 자세히 설명할 것이다. 이제, 일반적인 수준에서, 파이프라인(901)의 데이터부(910)가 다양한 유형의 데이터를 수용할 수 있고 이 데이터를 정규 형태로 파이프라인(901)의 분석부(920)에 제시할 수 있다. 분석부(920)는 데이터를 다양한 모델 파라미터에 결합하며, 모델 분석을 이용하여 모델 파라미터 내의 미지수(unknown)를 구한다. 그 다음에 다양한 파라미터 값이 보기부(930)에 제공되고, 보기부는 모델 파라미터 내의 이들 값을 이용하여 합성 뷰를 구축한다. 예를 들어, 데이터부(610)는 데이터 소스를 재계산 사용자 인터페이스에 제공할 수 있다.
파이프라인 환경(900)은 또한 파이프라인(901)의 작성자 또는 다른 사용자 파이프라인(901)에 제공할 데이터를 공식화하고/하거나 선택할 수 있게 하는 오서링 컴포넌트(940)를 포함한다. 예를 들어, 오서링 컴포넌트(940)는 (입력 데이터(911)에 의해 표현된)데이터부(910), (분석 데이터(921)에 의해 표현된)분석부(920), 및 (뷰 데이터(931)에 의해 표현된)보기부(930)의 각각에 데이터를 게공하는데 사용될 수 있다. 다양한 데이터(911, 921, 931)는 도 8의 도메인 특정 데이터(820)의 일례를 나타내며, 이하에서 더 자세히 설명할 것이다. 오서링 컴포넌트(940)는, 예컨대, 데이터 스키마, 모델에 의해 사용될 실제 데이터, 외부 소스 형태로 가져와지는 데이터의 위치 또는 가능한 위치들의 범위, 비주얼 (그래픽 또는 애니메이션) 객체, 비주얼에 대해 수행될 수 있는 사용자 인터페이스 상호작용들, 모델링 문장(예컨대, 뷰, 방정식, 제약), 바인딩 등을 포함하는, 다양한 데이터의 제공을 지원한다. 일실시예에서, 오서링 컴포넌트는 (도 9에는 도시되어 있지 않지만, 도 8의 컴포지션 프레임워크(810)에 의해 표현된)전체 관리자 컴포넌트에 의해 제공된 기능의 단지 일부분이다. 관리자는 (상호작용 이벤트, 외부 데이터 이벤트, 해결기와 같은 임의의 다른 컴포넌트로부터의 이벤트, 운영 체제 등과 같은)이벤트에 응답하여 (데이터 커넥터, 해결기, 뷰어 등과 같은)다른 모든 컴포넌트의 동작을 제어하고 배열하는 총괄적인 관리책임자이다.
도 9의 파이프라인 환경(900)에서, 오서링 컴포넌트(940)는 기존의 파이프라인(901)에 데이터를 제공하는데 사용되는데, 여기서 데이터가 입력 데이터를 정의하는 것으로부터 분석 모델을 정의하는 것(앞에서 "변환 체인"이라고 함), 변환 체인의 결과가 어떻게 뷰 컴포지션에서 시각화되는지를 정의하는 것까지의 전체 프로세스를 드라이브한다. 따라서, 사용자는 파이프라인(901)을 다양한 도메인들 및 문제들 중 어느 하나에 맞게 구성하기 위해 어떠한 코딩을 수행할 필요가 없다. 파이프라인(901)에 제공된 데이터만이, 다른 문제 도메인으로부터의 다른 뷰 컴포지션을 시각화하거나 또는 기존의 도메인에 대해 풀 문제를 아마도 조정하도록, 파이프라인(901)을 적용하기 위해 변경해야하는 것이다. 또한, 데이터는 사용 시간(즉, 실행 시간) 및 작성 시간에 변경될 수 있기 때문에, 모델은 런타임에 수정되고/되거나 확장될 수 있다. 따라서, 모델을 작성하는 것과 모델을 실행시키는 것 사이에 차이가 있다고 해도 그 차이는 적다. 모든 작성은 데이터 아이템을 편집하는 것을 포함하고 소프트웨어는 데이터로부터 그 동작 전부를 실행하기 때문에, 데이터에 대한 모든 변경은 재부호화 및 재컴파일할 필요없이 즉각적으로 동작에 영향을 미친다.
파이프라인 환경(900)은, 또한 사용자가 디스플레이된 뷰 컴포지션과 상호작용하는 경우를 검출한 후 그 응답으로 무엇을 해야 할지를 결정하는 사용자 상호작용 응답 모듈(950)을 포함한다. 예를 들어, 일부 유형의 상호작용은 파이프라인(901)에 제공된 데이터에 아무런 변경도 요구하지 않을 수 있으며, 따라서 뷰 컴포지션에 아무런 변경도 요구하지 않을 수 있다. 다른 유형의 상호작용은 데이터(911, 921, 931) 중 하나 이상을 변경시킬 수 있다. 그러한 경우, 이 새로운 또는 변경된 데이터는 새로운 입력 데이터가 데이터부(910)에 제공되도록 할 수도 있고, 분석부(920)에 의해 입력 데이터의 재분석을 요구할 수도 있고, 보기부(930)에 의해 뷰 컴포지션의 재시각화를 요구할 수도 있다.
따라서, 파이프라인(901)은 데이터 구동 분석 시각화를 무한한 수의 문제 도메인 또는 적어도 다양한 문제 도메인으로 확장하는데 사용될 수 있다. 또한, 사용자는 뷰 컴포지션을 변경하여 다양한 문제를 처리하기 위해 프로그래머일 필요가 없다. 파이프라인(901)의 각각의 데이터부(910), 분석부(920) 및 보기부(930)를 이제 도 10의 데이터부(1000), 도 11의 분석부(1100), 및 도 12의 보기부(1200)를 참고하여 각각 차례로 설명할 것이다. 도 10 내지 12로부터 명확하듯이, 파이프라인(901)은 일련의 변환 컴포넌트로서 구성될 수 있는데, 이들은 각각 1) 일부 적절한 입력 데이터를 수신하고, 2) 그 입력 데이터에 응답하여 (입력 데이터에 대한 변환을 수행하는 것과 같은)일부 액션을 수행하며, 3) 그 다음 변환 컴포넌트에 대한 입력 데이터 역할을 하는 데이터를 출력한다.
도 10은 도 9의 파이프라인(901)의 데이터부(1000)의 많은 가능한 실시예들 중 하나를 도시한 것이다. 데이터부(1000)의 기능들 중 하나는 도 11을 참고하여 논의되는 파이프라인의 분석부(1100)에 의해 이해된 스키마와 일치하는 정규 포맷으로 데이터를 제공하는 것이다. 데이터부는 이종 데이터(1001)에 액세스하는 데이터 액세스 컴포넌트(1010)를 포함한다. 입력 데이터(1001)는 그 데이터가 정규 형태로 데이터 액세스 컴포넌트(1010)에 제시될 수 있다(그러나 그럴 필요는 없다)는 의미에서 "이종(heterogenic)"일 수 있다. 사실, 데이터부(1000)는 이종 데이터가 다양한 포맷일 수 있도록 구성된다. 모델들에 의해 액세스되고 조작될 수 있는 상이한 종류의 도메인 데이터의 예로는 텍스트 및 XML 문서, 테이블, 리스트, 계층 구조(트리), SQL 데이터베이스 쿼리 결과, BI(business intelligence) 큐브 쿼리 결과, 다양한 포맷의 2D 드로잉 및 3D 비주얼 모델과 같은 그래픽 정보 및 이들의 조합(즉, 합성물)을 들 수 있다. 또한, 액세스될 수 있는 데이터의 종류는 액세스될 데이터에 대한 정의(예컨대, 스키마)를 제공함으로써 선언적으로 확장될 수 있다. 따라서, 데이터부(1000)는 모델로의 다양한 이종 입력을 허용하며, 또한 런타임의 액세스가능한 데이터 타입의 선언적인 확장을 지원한다.
일실시예에서, 데이터 액세스부(1000)는 다수의 상이한 데이터 소스로부터 데이터를 획득하는 다수의 커넥터를 포함한다. 커넥터의 주요 기능들 중 하나는 대응하는 데이터를 정규 형태로 배치하는 것이므로, 이러한 커넥터를 이하에서 그리고 도면에서 "정규화기"라고 지칭할 것이다. 각각의 정규화기는 그 대응하는 데이터 소스의 특정 API(Application Program Interface)를 이해할 수 있다. 정규화기는 또한 데이터 소스에 대해 데이터를 판독 및/또는 기록하기 위해 대응하는 API와 인터페이스하는 대응하는 로직을 포함할 수도 있다. 따라서, 정규화기는 외부 데이터 소스와 데이터의 메모리 이미지 사이를 잇는다.
데이터 액세스 컴포넌트(1010)는 입력 데이터(1001)를 평가한다. 입력 데이터가 이미 정규적이고 따라서 분석부(1100)에 의해 처리가능하면, 입력 데이터는 분석부(1100)에 입력되도록 정규 데이터(1040)로서 직접 제공될 수 있다.
그러나, 입력 데이터(1001)가 정규적이지 않으면, 적절한 데이터 정규화 컴포넌트(1030)가 입력 데이터(1001)를 정규 포맷으로 변환시킬 수 있다. 데이터 정규화 컴포넌트(1030)는 실제로 데이터 정규화 컴포넌트(1030)의 집합인데, 이들 각각은 특정한 특징들을 갖는 입력 데이터를 정규 형태로 변환시킬 수 있다. 정규화 컴포넌트(1030)의 집합은 4개의 정규화 컴포넌트(1031, 1032, 1033, 1034)를 포함하는 것으로 도시되어 있다. 그러나, 생략부호(1035)는 다른 개수의 정규화 컴포넌트가 존재할 수도 있으며, 때론 도시된 4개보다 적은 수의 정규화 컴포넌트가 있을 수도 있음을 나타낸다.
입력 데이터(1001)는 정규화기 자체뿐만 아니라 상관된 데이터 특징의 식별자도 포함할 수 있다. 그 다음에 데이터부(1000)는 상관된 데이터 특징을 등록할 수도 있고 정규화 컴포넌트를 데이터 정규화 컴포넌트 집합(1030)에 제공할 수도 있으며, 여기서 데이터 특징이 이용가능한 정규화 컴포넌트에 추가될 수도 있다. 상관된 특징을 갖는 입력 데이터가 나중에 수신되면, 데이터부(1010)는 입력 데이터를 상관된 정규화 컴포넌트에 할당할 수 있다. 정규화 컴포넌트는 또한 웹 상의 정의된 컴포넌트 라이브러리와 같은 외부 소스로부터 동적으로 발견될 수 있다. 예를 들어, 주어진 데이터 소스에 대한 스키마가 알려져 있지만 필요한 정규화기가 존재하지 않는 경우, 외부 라이브러리가 발견될 수 있고 필요한 컴포넌트를 포함한다고 가정하면 정규화기는 그러한 외부 컴포넌트 라이브러리로부터 찾아질 수 있다. 파이프라인은 또한 스키마가 아직 알려져 있지 않은 데이터를 분석하고 분석 결과를 알려진 컴포넌트 라이브러리 내의 스키마 정보와 비교하여 데이터의 타입에 대한 동적 판정을 시도하며, 그에 따라 필요한 정규화기 컴포넌트를 찾아낼 수 있다.
이와 달리, 모든 정규화 컴포넌트를 포함하는 입력 데이터 대신에, 입력 데이터는 정규화 변환을 규정하는 변환 정의를 제공할 수 있다. 그 후 집합(1030)은 이 변환 정의를 0개 이상의 표준 디폴트 정규화 변환과 함께 변환을 실행하는 대응하는 정규화 컴포넌트로 변환하도록 구성될 수 있다. 이것은 데이터부(1000)가 입력 데이터를 소비하고 대응하는 정규화된 데이터를 파이프라인 아래로 더 이상 제공하지 않는 경우의 일례를 나타낸다. 그러나, 아마도 대부분의 경우에는, 입력 데이터(1001)로 인해 대응하는 정규화된 데이터(1040)가 생성된다.
일실시예에서, 데이터부(1010)는 입력 데이터를 입력 데이터의 파일 타입 및/또는 포맷 타입에 기초하여 데이터 정규화 컴포넌트에 할당하도록 구성될 수 있다. 다른 특징들은, 예컨대 입력 데이터의 소스를 포함할 수 있다. 디폴트 정규화 컴포넌트는 지정된 대응하는 정규화 컴포넌트를 갖지 않는 입력에 할당될 수 있다. 디폴트 정규화 컴포넌트는 입력 데이터를 정규화하기 위한 규칙 세트를 적용할 수 있다. 디폴트 정규화 컴포넌트가 데이터를 정규화할 수 없으면, 디폴트 정규화 컴포넌트는 입력 데이터에 대한 스키마 정의를 제공하도록 사용자에게 요청하기 위해 도 8의 오서링 컴포넌트(840)를 트리거링할 수도 있다. 스키마 정의가 이미 존재하지 않으면, 오서링 컴포넌트(840)는 사용자를 도와 입력 데이터를 정규 형태로 변환하는데 사용될 수 있는 대응하는 스키마 정의를 생성하기 위해 스키마 정의 보조기를 제시할 수 있다. 데이터가 정규 형태이면, 그 데이터를 수반하는 스키마는 그 데이터에 대해 파이프라인(901)의 나머지가 그 데이터를 해석하기 위해 새로운 코드를 필요로 하지 않는다는 충분한 설명을 제공한다. 대신에, 파이프라인(901)은 액세스가능 스키마 선언 언어를 표현할 수 있는 임의의 스키마에 비추어 데이터를 해석할 수 있는 코드를 포함한다.
여하튼, 정규 데이터(1040)는 데이터부(1000)로부터의 출력 데이터 및 분석부(1100)로의 입력 데이터로서 제공된다. 정규 데이터는 다양한 데이터 타입을 포함하는 필드를 포함한다. 예를 들어, 이들 필드는 정수와 같은 간단한 데이터 타입, 부동 소수점 수(floating point number), 스트링, 벡터, 어레이, 집합(collection), 계층적 구조, 텍스트, XML 문서, 테이블, 리스트, SQL 데이터베이스 쿼리 결과, BI(business intelligence) 큐브 쿼리 결과, 2D 드로잉 및 3D 비주얼 모델과 같은 다양한 포맷의 정보, 또는 이들 다양한 데이터 타입의 보다 복잡한 조합을 포함할 수 있다. 다른 이점으로서, 정규화 프로세스는 다양한 입력 데이터를 정규화할 수 있다. 또한, 데이터부(1000)가 수용할 수 있는 다양한 입력 데이터는 확장가능하다. 본 명세서에서 후술하는 바와 같이 이것은 복수의 모델이 조합되는 경우에 도움이 된다.
도 11은 도 9의 파이프라인(901)의 분석부(920)의 일례를 나타내는 분석부(1100)를 도시한 것이다. 데이터부(1000)는 정규화된 데이터(1101)를 데이터 모델 바인딩 컴포넌트(1110)에 제공한다. 정규화된 데이터(1101)는 임의의 정규화된 형태, 및 임의의 수의 파라미터를 가질 수 있으며, 여기서 파라미터의 형태 및 개수는 입력 데이터의 조각마다 상이할 수 있다. 그러나, 설명을 위해, 정규 데이터(1101)는 필드(1102A 내지 1102H)를 가지며, 이들은 본 명세서에서 "필드(1102)로 통칭될 수 있다.
반면에, 분석부(1100)는 다수의 모델 파라미터(1111)를 포함한다. 모델 파라미터의 타입 및 개수는 모델에 따라 다를 수 있다. 그러나, 특정 예를 설명하기 위해, 모델 파라미터(811)는 모델 파라미터(1111A, 1111B, 1111C, 1111D)를 포함하는 것으로 설명될 것이다. 일실시예에서, 모델 파라미터의 아이덴티티 및 모델 파라미터들 간의 분석 관계는 명령형 코딩을 사용하지 않고 선언적으로 정의될 수 있다.
데이터 모델 바인딩 컴포넌트(1110)는 정규화된 데이터 필드(1102)와 모델 파라미터(1111) 사이에 개재하여 필드들 사이의 바인딩을 제공한다. 이 경우, 데이터 필드(1102B)는 화살표(1103A)로 표시된 모델 파라미터(1111A)에 바인딩된다. 다시 말하면, 모델 파라미터(1111A)를 채우기 위해 데이터 필드(1102B)로부터의 값이 사용된다. 또한, 이 예에서, 데이터 필드(1102E)는 (화살표(1103B)로 표시된 바와 같이)모델 파라미터(1111B)에 바인딩되고, 데이터 필드(1102H)는 (화살표(803C)로 표시된 바와 같이) 모델 파라미터(1111C)에 바인딩된다.
데이터 필드(1102A, 1102C, 1102D, 1102F, 1102G)는 모델 파라미터들 중 어느 것에도 바인딩되지 않는 것으로 도시되어 있다. 이것은 입력 데이터로부터의 모든 데이터 필드가 항상 모델 파라미터로서 사용되도록 요구되지는 않는다는 것을 강조하기 위한 것이다. 일실시예에서, 이들 데이터 필드 중 하나 이상은 데이터 모델 바인딩 컴포넌트(810)에 정규화된 데이터(정규화된 데이터 또는 어쩌면 임의의 장래의 유사한 정규화된 데이터)로부터의 어느 필드가 어느 모델 파라미터에 바인딩되는지에 대한 명령어를 제공하는데 사용될 수 있다. 이것은 도 9의 분석부(920)에 제공될 수 있는 일종의 분석 데이터(921)의 일례를 나타낸다. 정규화된 데이터로부터의 어느 데이터 필드가 어느 모델 파라미터에 바인딩되는지에 대한 정의는 다양한 방식으로 공식화될 수 있다. 예를 들어, 바인딩은 1) 작성 시간에 작성자에 의해 명시적으로 설정될 수도 있고, 2) 사용 시에 (작성자에 의해 부과된 임의의 조건에 따라)사용자에 의해 명시적으로 설정될 수도 있으며, 3) 알고리즘 경험에 기초한 오서링 컴포넌트(940)에 의한 자동 바인딩 및/또는 4) 바인딩이 알고리즘 방식으로 만들어질 수 없다고 판정될 경우에 바인딩을 지정하기 위해 작성자 및/또는 사용자의 오서링 컴포넌트에 의해 프롬프팅하는 것일 수 있다. 따라서, 바인딩은 모델 로직 자체의 일부로서 분해될 수도 있다.
작성자가 어느 데이터 필드가 어느 모델 파라미터에 맵핑될지를 정의할 수 있게 하는 능력은 작성자가 모델 파라미터를 정의하기 위해 쉽게 다루는 심볼을 사용할 수 있도록 하는 유연성을 작성자에게 제공한다. 예를 들어, 모델 파라미터들 중 하나가 압력을 나타내면, 작성자는 그 모델 파라미터의 이름을 "압력(Pressure)" 또는 "P" 또는 작성자에게 그러한 의미를 느끼게 하는 다른 심볼로 명명할 수 있다. 작성자는 모델 파라미터의 이름을 바꿀 수도 있는데, 일실시예에서, 이것은 데이터 모델 바인딩 컴포넌트(1110)가 이전 이름의 모델 파라미터에 대한 바인딩이 새로운 이름의 모델 파라미터에 바인딩되도록 자동으로 업데이트하게 함으로써 원하는 바인딩을 유지할 수 있다. 바인딩에 대한 이 메커니즘은 바인딩이 런타임에 선언적으로 변경되도록 한다.
모델 파라미터(1111D)는 이 예에서 모델 파라미터(1111D)가 데이터 모델 바인딩 컴포넌트(1110)에 의해 값을 할당받지 않음을 강조하기 위해 별표로 표시되어 있다. 따라서, 모델 파라미터(1111D)는 미지수(unknown)로 남는다. 즉, 모델 파라미터(1111D)는 값을 할당받지 않는다.
모델링 컴포넌트(1120)는 다수의 기능을 수행한다. 첫째, 모델링 컴포넌트(1120)는 모델 파라미터들(1111) 사이의 분석 관계(1121)를 정의한다. 분석 관계(1121)는 방정식(1131), 규칙(1132) 및 제약(1133)을 포함하는 3개의 일반적인 범주로 분류된다. 그러나, 해결기의 리스트는 확장가능하다. 일실시예에서, 예를 들어, 하나 이상의 시뮬레이션에 대응하는 시뮬레이션 엔진이 해결기로서 제공되고 등록될 경우, 하나 이상의 시뮬레이션이 분석 관계의 일부로서 포함될 수 있다.
본 명세서에서 사용되는 "방정식(equation)"이란 용어는 수학 분야에서 사용할 때의 용어와 같다.
본 명세서에서 사용된 용어 "규칙(rule)"은 하나 이상의 조건이 만족되면(조건부 또는 조건문의 "if" 부분) 하나 이상의 액션이 취해지는(조건문의 결과 또는 "then" 부분) 조건문을 의미한다. 하나 이상의 모델 파라미터가 조건문으로 표현되거나 또는 하나 이상의 모델 파라미터가 결과문으로 표현되면, 규칙은 모델 파라미터에 적용된다.
본 명세서에 사용된 "제약(constraint)"은 하나 이상의 모델 파라미터에 제한이 적용됨을 의미한다. 예를 들어, 도시 계획 모델에서, 특정 주택 요소는 가능한 지정된 전체 구역의 부분집합을 갖는 지도 위치 상의 장소로 제한될 수 있다. 교량 요소는 소정의 최대 길이 또는 소정 개수의 차선 이하로 제한될 수 있다.
모델에 익숙한 작성자는 그 모델에 적용하는 이들 방정식, 규칙 및 제약의 표현을 정할 수 있다. 시뮬레이션의 경우에, 작성자는 모델 파라미터들 사이의 적절한 시뮬레이션 관계를 제공하는 적절한 시뮬레이션 엔진을 제공할 수 있다. 모델링 컴포넌트(1120)는 작성자가 방정식, 규칙 및 제약에 대한 자연적인 심볼 표현을 제공하는 메커니즘을 제공할 수 있다. 예를 들어, 열역학 관련 모델의 작성자는 단순히 열역학 교재에서 방정식을 복사하여 붙여넣기할 수 있다. 모델 파라미터를 데이터 필드에 바인딩하는 능력은 (작성자가 신뢰하는 교재에서 사용된 정확한 심볼과 같은)작성자에게 익숙한 어떠한 심볼도 또는 작성자가 사용하고자 하는 정확한 심볼을 작성자가 사용할 수 있게 한다.
모델링 컴포넌트(1120)는 또한, 문제를 풀기 전에, 모델 파라미터들 중 어느 것을 풀어야 하는지를 식별한다(즉, 이하에서는 하나의 출력 모델 변수가 있는 경우에는 "출력 모델 변수", 복수의 경우에는 "출력 모델 변수들", 또는 하나 또는 복수의 출력 모델 변수가 있을 수 있는 경우에는 "출력 모델 변수(들)"이라 함). 출력 모델 변수는 미지의 파라미터일 수도 있고, 기지의 모델 파라미터일 수도 있으며, 기지의 모델 파라미터의 값은 솔브 연산(solve operation)의 변화에 따른다. 도 11의 예에서, 데이터 모델 바인딩 연산 후에, 모델 파라미터(1111A, 1111B, 1111C)가 알려지고, 모델 파라미터(1111D)는 알려지지 않는다. 따라서, 미지의 모델 파라미터(1111D)는 출력 모델 변수들 중 하나일 수 있다. 이에 갈음하여 또는 이에 더하여, 하나 이상의 기지의 모델 파라미터(1111A, 1111B, 1111C)는 출력 모델 변수일 수도 있다. 그 후 가능하다면 해결기(840)가 출력 모델 변수를 구한다. 후술하는 일실시예에서, 솔브 연산이 수행될 수 있도록 충분한 입력 모델 변수가 제공되는 한, 해결기(1140)는 단일 모델 내에서도 다양한 출력 모델 변수를 구할 수 있다. 입력 모델 변수는, 예컨대, 그 값이 솔브 연산 동안 변하지 않는 기지의 모델 파라미터일 수 있다. 예를 들어, 도 11에서, 모델 파라미터(1111A, 1111D)가 입력 모델 변수이면, 해결기는 대신에 출력 모델 변수(1111B, 1111C)를 구할 수 있다. 일실시예에서, 해결기는 단일 모델 파라미터에 대해 다수의 상이한 데이터 타입 중 임의의 하나를 출력할 수 있다. 예를 들어, (덧셈, 뺄셈 등과 같은)일부 방정식 연산은 피연산자가 정수, 부동 소수점, 벡터, 또는 행렬인지의 여부에 관계없이 적용된다.
일실시예에서, 해결기(1140)가 특정한 출력 모델 변수를 구할 수 없는 경우에도, 심지어 실제 수치 결과에 대한 완전한 솔브(full solve)(또는 데이터 타입 구하기)가 가능하지 않더라도, 해결기(1100)는 그 출력 모델 변수에 대한 특정 해를 여전히 제시할 수 있다. 이것은 완전한 솔브에 도달하기 위해 어떤 정보가 필요한지에 대해 작성자에게 프롬프트함으로써 파이프라인이 점진적인 개발을 용이하게 하도록 할 수 있다. 이것은 또한 작성 시간 및 사용 시간 사이의 차이를 제거하는 것을 돕는데, 그 이유는 적어도 부분적인 솔브가 다양한 작성 스테이지에 걸쳐 이용가능하기 때문이다. 추상적인 예로서, 분석 모델이 방정식 a=b+c+d를 포함한다고 가정해 보자. 이제, a, c 및 d는 출력 모델 변수이고, b는 알려진 값 5(이 경우에는 정수)를 갖는 입력 모델 변수라고 가정해 보자. 해결 과정에서, 해결기(1140)는 출력 모델 변수들 중 하나("d")만 구할 수 있고, 6(정수)의 값을 "d"라고 하는 모델 파라미터에 할당하지만, 해결기(840)는 "c"는 구할 수 없다. "a"는 "c"에 의존하므로, "a"라고 하는 모델 파라미터는 미지수로 남아 있고 구할 수 없다. 이 경우, 정수 값을 "a"에 할당하는 대신에, 해결기는 부분 솔브를 할 수 있고 "c+11"의 문자열 값을 모델 파라미터 "a"에 출력한다. 전술한 바와 같이, 이것은 당업자가 분석 모델을 작성하고 있는 경우에 특히 도움이 될 수 있으며, 모델 파라미터 "a"의 내용에 대한 부분적인 정보를 제공하는 역할을 하며, 또한 "c" 모델 파라미터가 구해지도록 몇몇 추가 모델 분석이 제공될 필요가 있음을 작성자에게 암시하는 역할을 할 것이다. 이 부분적인 솔브 결과는 아마도 당업자가 부분적인 결과를 알 수 있도록 하기 위해 뷰 컴포지션에 일부 방식으로 출력될 수 있다.
해결기(1140)는 도 11에 단순화된 형태로 도시되어 있다. 그러나, 해결기(1140)는 도 12와 관련하여 설명하는 바와 같이 복수의 구성요소 해결기의 연산을 지시할 수 있다. 도 11에서, 모델링 컴포넌트(1120)는 (이제 알고 있고 구해진 출력 모델 변수를 포함하는)모델 파라미터를 도 12의 보기부(1200)에 제공될 출력으로서 이용가능하게 한다.
도 12는 도 9의 보기부(930)의 일례를 나타내는 보기부(1200)를 도시하며, 재계산 사용자 인터페이스(500) 내의 시각화된 컨트롤의 예들을 나타낸다. 보기부(1200)는 도 11의 분석부(1100)로부터 모델 파라미터(1111)를 수신한다. 보기부는 또한 뷰 컴포넌트의 집합을 포함하는 뷰 컴포넌트 저장소(1220)를 포함한다. 예를 들어, 이 예에서 뷰 컴포넌트 저장소(1220)는 뷰 컴포넌트(1221 내지 1224)를 포함하는 것으로 도시되어 있지만, 뷰 컴포넌트 저장소(1220)는 임의의 개수의 뷰 컴포넌트를 포함할 수 있다. 뷰 컴포넌트는 각각 0개 이상의 입력 파라미터를 포함할 수 있다. 예를 들어, 뷰 컴포넌트(1221)는 어떠한 입력 파라미터도 포함하지 않는다. 그러나, 뷰 컴포넌트(1222)는 2개의 입력 파라미터(1242A, 1242B)를 포함한다. 뷰 컴포넌트(1223)는 하나의 입력 파라미터(1243)를 포함하고, 뷰 컴포넌트(1224)는 하나의 입력 파라미터(1244)를 포함한다. 즉, 이것은 단지 일례일 뿐이다. 입력 파라미터는 반드시 그런 것은 아니지만 비주얼 아이템이 렌더링되는 방법에 영향을 미친다. 뷰 컴포넌트(1221)가 어떠한 입력 파라미터도 포함하지 않는다는 사실은 어떠한 모델 파라미터에 대한 참조없이 생성되는 뷰가 있을 수 있음을 강조한다. 변하지 않는 고정된(내장된) 데이터를 포함하는 뷰를 고려해 보자. 이러한 뷰는 예컨대 사용자에 대한 참조 정보를 구성할 수 있다. 또는 모델에 임포트할 아이템들이 선택될 수 있도록 카탈로그를 브라우징하는 방법을 제공하는 뷰를 고려해보자.
각각의 뷰 컴포넌트(1221 내지 1224)는, 대응하는 뷰 컴포넌트 입력 파라미터가 있다면 이를 사용하여 뷰 컴포지션 컴포넌트(1240)에 의해 실행될 경우에, 대응하는 뷰 아이템이 가상 공간(1250)에 위치하게 하는, 대응하는 로직을 포함하거나 이와 연관된다. 이 가상 아이템은 정적 이미지 또는 객체일 수도 있고, 또는 동적인 에이메이션 가상 아이템 또는 객체일 수도 있다. 예를 들어, 각각의 뷰 컴포넌트(1221 내지 1224)는, 실행될 경우에 대응하는 가상 아이템(1251 내지 1254)이 제각기 가상 공간(1250)에 렌더링되게 하는, 대응하는 로직(1231 내지 1234)가 연관된다. 가상 아이템은 단순한 형태로 도시된다. 그러나, 가상 아이템은 형상에 있어서 상당히 복잡할수도 있고 심지어 애니메이션을 포함할 수도 있다. 본 예에서는, 뷰 아이템이 가상 공간에 렌더링될 때, 이것은 뷰 컴포지션 컴포넌트가 충분한 명령어를 작성했음을 의미하며, 렌더링 엔진에 제공될 때 렌더링 엔진이 지정된 위치에 지정된 방식으로 디스플레이 상에 뷰 아이템을 디스플레이할 수 있음을 의미한다.
뷰 컴포넌트(1221 내지 1224)는 예를 들어 도 9의 오서링 컴포넌트(940)를 사용하여 보기부(1200)에 뷰 데이터로서 제공될 수도 있다. 예를 들어, 오서링 컴포넌트(940)는 작성자가 몇몇 기하학적 형태로부터 선택할 수 있게 하거나 또는 다른 기하학적 형태를 작성할 수도 있게 하는 선택기를 제공할 수 있다. 작성자는 또한 각각의 뷰 컴포넌트에 대한 입력 파라미터의 타입을 지정할 수도 있고, 반면에, 일부 입력 파라미터는 보기부(1200)에 의해 부과된 디폴트 입력 파라미터일 수 있다. 각각의 뷰 컴포넌트(1221 내지 1224)와 연관되는 로직은 또한 뷰 데이터를 제공받을 수 있고/있거나 보기부(1200) 자체에 의해 일부 디폴트 기능을 포함할 수도 있다.
보기부(1200)는 모델 파라미터들 중 적어도 일부를 뷰 컴포넌트(1221 내지 1224)의 대응하는 입력 파라미터에 바인딩하도록 구성되는 모델-뷰 바인딩 컴포넌트(1210)를 포함한다. 예를 들어, 모델 파라미터(1111A)는 화살표(1211A)로 표시된 뷰 컴포넌트(1222)의 입력 파라미터(1242A)에 바인딩된다. 모델 파라미터(1111B)는 화살표(1211B)로 표시된 뷰 컴포넌트(1222)의 입력 파라미터(1242B)에 바인딩된다. 또한 모델 파라미터(1111D)는 화살표(1211C)로 표시된 뷰 컴포넌트(1223, 1224)의 입력 파라미터(1243, 1244)에 각각 바인딩된다. 모델 파라미터(1111C)는 어떠한 대응하는 뷰 컴포넌트 파라미터에도 바인딩되지 않는 것으로 도시되어 있고, 모든 모델 파라미터가 분석부에 필수적이더라도 이들 모든 모델 파라미터가 파이프라인의 보기부에 의해 사용될 필요는 없음을 강조한다. 또한, 모델 파라미터(1111D)는 뷰 컴포넌트의 두 개의 상이한 입력 파라미터에 바인딩된 것으로 도시되어 있는데, 이는 모델 파라미터들이 복수의 뷰 컴포넌트 파라미터에 바인딩될 수 있음을 나타낸다. 일실시예에서, 모델 파라미터와 뷰 컴포넌트 파라미터 사이의 바인딩의 정의는 1) 작성 시간에 작성자에 의해 명시적으로 설정되는 것, 2) 사용 시에 (작성자에 의해 부과된 임의의 조건에 따라)사용자에 의해 명시적으로 설정되는 것, 3) 알고리즘 경험에 기초한 오서링 컴포넌트(940)에 의한 자동 바인딩 및/또는 4) 바인딩이 알고리즘 방식으로 이루어질 수 없다고 판정될 경우에 바인딩을 지정하기 위해 작성자 및/또는 사용자의 오서링 컴포넌트에 의해 프롬프팅하는 것에 의해 공식화될 수 있다.
본 발명은 그 사상 또는 필수적 특징으로부터 벗어나지 않고 다른 특정한 형태로 구현될 수 있다. 기술된 실시예는 모든 면에서 예시적인 것일 뿐 제한적인 것으로 간주되어서는 안 된다. 따라서, 본 발명의 범위는 전술한 상세한 설명에 의해서가 아니라 첨부한 청구범위에 의해 나타내어진다. 청구범위의 균등물의 의미 및 범위 내에 포함되는 모든 변경들이 이들의 범위 내에 포함되어야 한다.

Claims (10)

  1. 컴퓨팅 시스템의 하나 이상의 프로세서에 의해 실행될 경우에 상기 컴퓨팅 시스템으로 하여금 컨트롤에 의해 수행될 관심 동작(behavior of interest)의 문장(statement)을 나타내는 사용자 입력을 검출하는 것에 응답하여 상기 컨트롤(control)을 구성하는 방법을 수행하게 하도록 구성된 컴퓨터 실행가능 명령어가 저장되어 있는 하나 이상의 컴퓨터 판독가능 저장 매체를 포함하는 컴퓨터 프로그램 제품으로서,
    상기 방법은 상기 관심 동작의 수행 의도와 일치하는 하나 이상의 이벤트로 이루어진 세트를 자동으로 식별하는 단계를 포함하는
    컴퓨터 프로그램 제품.
  2. 제1항에 있어서,
    상기 방법은 관심 동작의 문장에 대해 사용자에게 프롬프팅(prompting)하는 단계를 더 포함하되,
    상기 프롬프팅하는 단계는 상기 사용자로 하여금 상기 관심 동작의 문장을 입력하게 하는 것인
    컴퓨터 프로그램 제품.
  3. 제1항에 있어서,
    상기 관심 동작의 문장에 대한 상기 사용자 입력은 자유형식(free-form) 사용자 입력인
    컴퓨터 프로그램 제품.
  4. 제1항에 있어서,
    상기 방법은 또한 상기 동작이 조작할(operate) 관심 데이터에 대한 사용자 입력을 검출하는 것에 응답하여 수행되는
    컴퓨터 프로그램 제품.
  5. 제4항에 있어서,
    상기 방법은 상기 관심 데이터의 문장에 대해 상기 사용자에게 프롬프팅하는 단계를 더 포함하되, 상기 관심 데이터의 문장에 대해 프롬프팅하는 단계는 상기 사용자로 하여금 상기 관심 데이터의 문장을 입력하게 하는 것인
    컴퓨터 프로그램 제품.
  6. 제4항에 있어서,
    상기 자동으로 식별하는 단계는 상기 관심 데이터에 대한 상기 관심 동작의 수행 의도와 일치하는 하나 이상의 이벤트 세트를 자동으로 식별하는 단계를 포함하는
    컴퓨터 프로그램 제품.
  7. 제6항에 있어서,
    상기 방법은 상기 하나 이상의 이벤트로 이루어진 세트 중 적어도 하나의 이벤트를 상기 사용자에게 제안하는 단계를 더 포함하는
    컴퓨터 프로그램 제품.
  8. 제7항에 있어서,
    상기 방법은, 상기 사용자가 제안된 이벤트를 처음에 제안된 것보다 더 좁게 편집하였음을 검출한 것에 응답하여, 상기 좁혀진 이벤트가 발생할 경우에 상기 동작을 수행하도록 상기 컨트롤을 자동으로 구성하는 단계를 더 포함하는
    컴퓨터 프로그램 제품.
  9. 제6항에 있어서,
    상기 방법은, 제안된 이벤트의 사용자 선택 검출에 응답하여, 상기 선택된 이벤트가 발생할 경우에 상기 동작을 수행하도록 상기 컨트롤을 자동으로 구성하는 단계를 더 포함하는
    컴퓨터 프로그램 제품.
  10. 동작을 수행하도록 컨트롤을 구성하는 방법으로서,
    동작을 트리거링하는데 사용될 수 있는 복수의 이벤트를 갖는 컨트롤을 유지하는 단계와,
    상기 컨트롤에 의해 수행될 관심 동작의 문장을 나타내는 사용자 입력을 검출하는 단계와,
    상기 관심 동작의 수행 의도와 일치하는 하나 이상의 이벤트로 이루어진 세트를 자동으로 식별하여 하는 단계
    를 포함하는 방법.
KR1020157028201A 2013-04-12 2014-04-11 컨트롤 이벤트의 생성 기법 KR20150143472A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/862,265 US20140310681A1 (en) 2013-04-12 2013-04-12 Assisted creation of control event
US13/862,265 2013-04-12
PCT/US2014/033705 WO2014169157A2 (en) 2013-04-12 2014-04-11 Assisted creation of control event

Publications (1)

Publication Number Publication Date
KR20150143472A true KR20150143472A (ko) 2015-12-23

Family

ID=50733397

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157028201A KR20150143472A (ko) 2013-04-12 2014-04-11 컨트롤 이벤트의 생성 기법

Country Status (11)

Country Link
US (1) US20140310681A1 (ko)
EP (1) EP2992416A4 (ko)
JP (1) JP2016528568A (ko)
KR (1) KR20150143472A (ko)
CN (1) CN105637476A (ko)
AU (1) AU2014250921A1 (ko)
BR (1) BR112015025569A2 (ko)
CA (1) CA2908052A1 (ko)
MX (1) MX2015014303A (ko)
RU (1) RU2015142983A (ko)
WO (1) WO2014169157A2 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170206064A1 (en) * 2013-03-15 2017-07-20 JIBO, Inc. Persistent companion device configuration and deployment platform
US10127240B2 (en) 2014-10-17 2018-11-13 Zestfinance, Inc. API for implementing scoring functions
US10261985B2 (en) 2015-07-02 2019-04-16 Microsoft Technology Licensing, Llc Output rendering in dynamic redefining application
US10198252B2 (en) * 2015-07-02 2019-02-05 Microsoft Technology Licensing, Llc Transformation chain application splitting
US10198405B2 (en) 2015-07-08 2019-02-05 Microsoft Technology Licensing, Llc Rule-based layout of changing information
US11941650B2 (en) 2017-08-02 2024-03-26 Zestfinance, Inc. Explainable machine learning financial credit approval model for protected classes of borrowers
WO2019173734A1 (en) 2018-03-09 2019-09-12 Zestfinance, Inc. Systems and methods for providing machine learning model evaluation by using decomposition
WO2019212857A1 (en) 2018-05-04 2019-11-07 Zestfinance, Inc. Systems and methods for enriching modeling tools and infrastructure with semantics
US11816541B2 (en) 2019-02-15 2023-11-14 Zestfinance, Inc. Systems and methods for decomposition of differentiable and non-differentiable models
CA3134043A1 (en) 2019-03-18 2020-09-24 Sean Javad Kamkar Systems and methods for model fairness
KR20220144356A (ko) * 2019-11-25 2022-10-26 제스트파이낸스 인코퍼레이티드 자동 모델 생성을 위한 시스템들 및 방법들
US11720962B2 (en) 2020-11-24 2023-08-08 Zestfinance, Inc. Systems and methods for generating gradient-boosted models with improved fairness

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5390281A (en) * 1992-05-27 1995-02-14 Apple Computer, Inc. Method and apparatus for deducing user intent and providing computer implemented services
US6021403A (en) * 1996-07-19 2000-02-01 Microsoft Corporation Intelligent user assistance facility
JPH11242706A (ja) * 1998-02-24 1999-09-07 Minoru Kano データ処理支援システムおよびデータ処理支援方法と表計算システム
JP2001323877A (ja) * 2000-05-12 2001-11-22 Toyota Industries Corp ピストン式圧縮機における吸入構造
US20040031017A1 (en) * 2002-08-12 2004-02-12 Shankar Vaidyanathan System and method for context-sensitive help in a design environment
US7490295B2 (en) * 2004-06-25 2009-02-10 Apple Inc. Layer for accessing user interface elements
US7735066B1 (en) * 2004-10-08 2010-06-08 Carnegie Mellon University Debugging interface
US7496888B2 (en) * 2005-04-07 2009-02-24 International Business Machines Corporation Solution builder wizard
US8392999B2 (en) * 2005-12-19 2013-03-05 White Cyber Knight Ltd. Apparatus and methods for assessing and maintaining security of a computerized system under development
US7765485B2 (en) * 2006-01-30 2010-07-27 International Business Machines Corporation Extensible user interface framework for a componentized application environment
US8776149B1 (en) * 2007-03-05 2014-07-08 At&T Intellectual Property I, L.P. Preference-based media alerts
US8584082B2 (en) * 2008-06-12 2013-11-12 Serena Software, Inc. System for dynamic discovery, configuration, and development of process-bound widgets
US8692826B2 (en) * 2009-06-19 2014-04-08 Brian C. Beckman Solver-based visualization framework
US8826304B2 (en) * 2009-08-13 2014-09-02 Google Inc. Virtual object indirection in a hosted computer environment
US8890890B2 (en) * 2010-05-26 2014-11-18 Microsoft Corp. Pluggable web-based visualizations for applications
CN102014184A (zh) * 2010-08-12 2011-04-13 宇龙计算机通信科技(深圳)有限公司 一种通信记录筛选方法、装置及通信终端
US8615504B2 (en) * 2011-12-14 2013-12-24 Artist Growth, Llc Action alignment for event planning, project management and process structuring
CN102799371B (zh) * 2012-06-29 2014-11-26 北京奇虎科技有限公司 一种扩展的数据输入装置及方法
US9621601B2 (en) * 2013-03-29 2017-04-11 International Business Machines Corporation User collaboration for answer generation in question and answer system

Also Published As

Publication number Publication date
EP2992416A2 (en) 2016-03-09
RU2015142983A (ru) 2017-04-13
EP2992416A4 (en) 2017-05-17
WO2014169157A3 (en) 2016-04-07
MX2015014303A (es) 2016-04-28
BR112015025569A2 (pt) 2017-07-18
US20140310681A1 (en) 2014-10-16
JP2016528568A (ja) 2016-09-15
CN105637476A (zh) 2016-06-01
AU2014250921A1 (en) 2015-10-22
CA2908052A1 (en) 2014-10-16
WO2014169157A2 (en) 2014-10-16

Similar Documents

Publication Publication Date Title
KR102194163B1 (ko) 재계산 사용자 인터페이스에서의 변환의 컴파일
KR20150143472A (ko) 컨트롤 이벤트의 생성 기법
Takatsuka et al. GeoVISTA Studio: A codeless visual programming environment for geoscientific data analysis and visualization
US20140306964A1 (en) Incremental compiling of a declarative program
KR20150143473A (ko) 재계산 사용자 인터페이스 내의 신호 캡처 컨트롤
EP2984585B1 (en) Binding of data source to compound control
Dunlap et al. Earth system curator: metadata infrastructure for climate modeling
Gesing et al. Workflows in a dashboard: a new generation of usability
Walczak et al. Inference-based creation of synthetic 3D content with ontologies
WO2021035552A1 (zh) 支持基于神经元块图形编程的系统、方法及存储介质
Toomey Learning Jupyter 5: Explore Interactive Computing Using Python, Java, JavaScript, R, Julia, and JupyterLab
Jakubovic et al. Ascending the Ladder to Self-Sustainability: Achieving Open Evolution in an Interactive Graphical System
Jakubovic et al. Ascending the Ladder to Self-Sustainability
Meiser Visualization Techniques for Rule-based Reasoning in Uncertain Knowledge Bases
Alfert Vitruv: Specifying Temporal Aspects of Multimedia Presentations
Müller MIMOSA user’s manual (Draft version 1.4. 0)
Shields Visual programming environments for multi-disciplinary distributed applications

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid