KR20110070982A - 리소스 지향 프로그램을 시각적으로 모델링, 디버깅 및 실행하는 대화형 디자인 환경 - Google Patents

리소스 지향 프로그램을 시각적으로 모델링, 디버깅 및 실행하는 대화형 디자인 환경 Download PDF

Info

Publication number
KR20110070982A
KR20110070982A KR1020117008727A KR20117008727A KR20110070982A KR 20110070982 A KR20110070982 A KR 20110070982A KR 1020117008727 A KR1020117008727 A KR 1020117008727A KR 20117008727 A KR20117008727 A KR 20117008727A KR 20110070982 A KR20110070982 A KR 20110070982A
Authority
KR
South Korea
Prior art keywords
action
resource
script
protocol
resource script
Prior art date
Application number
KR1020117008727A
Other languages
English (en)
Other versions
KR101635237B1 (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 KR20110070982A publication Critical patent/KR20110070982A/ko
Application granted granted Critical
Publication of KR101635237B1 publication Critical patent/KR101635237B1/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

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)

Abstract

프로토콜을 통해 액세스될 수 있는 데이터 집합을 수반하는 시나리오에서, 데이터 집합에 대해 다양한 동작을 수행하는 동작 집합이 작성될 수 있고, 스크립트 언어에 따라 리소스 스크립트로서 표현될 수 있다. 그렇지만, 상호작용의 복잡한 측면(비동기성, 네트워크 전송, 스크립트 언어의 구문 및 프로토콜의 세부 등)으로 인해 이러한 리소스 스크립트를 디자인하는 것이 어려울 수 있다. 디자이너가, 예를 들어, 시각적 요소의 조작을 통해, 리소스 스크립트를 생성하는 것을 용이하게 해주는 디자인 환경이 고안될 수 있다. 디자인 환경은 리소스 스크립트의 하위 레벨 작동 세부를 추상화할 수 있고, 디자이너가 동작 집합의 논리적 디자인에 집중할 수 있게 해줄 수 있다. 디자인 환경은 이어서 프로토콜 및 스크립트 언어의 제약조건에 따라 동작 집합으로부터 리소스 스크립트를 자동으로 생성할 수 있다.

Description

리소스 지향 프로그램을 시각적으로 모델링, 디버깅 및 실행하는 대화형 디자인 환경{INTERACTIVE DESIGN ENVIRONMENTS TO VISUALLY MODEL, DEBUG AND EXECUTE RESOURCE ORIENTED PROGRAMS}
많은 컴퓨팅 시나리오는, 호스트에 의해 관리되고 일련의 동작[데이터 집합 내의 하나 이상의 항목을 만드는(create) 것, 데이터 집합 내의 하나 이상의 항목을 읽는(read) 것, 데이터 집합 내의 하나 이상의 항목을 업데이트(update)하는 것, 및/또는 데이터 집합 내의 하나 이상의 항목을 삭제(delete)하는 것(모두 합하여 표준의 "CRUD" 동작 집합을 구성함) 등]에 기초하여 업데이트되어야 하는 데이터 집합(파일 시스템, 데이터베이스, 개체 집합, 기타 등등)을 수반한다. 더욱이, 호스트는 HTTP 등의 특정 프로토콜을 통해 액세스가능할 수 있고, 동작은 프로토콜에서 허용되는 일련의 동사{예를 들어, HTTP POST, HTTP GET, HTTP PUT, 및 HTTP DELETE)에 대응할 수 있다. 동작 집합은 순차적으로 특정의 결과(예를 들어, 원격 서버 상의 파일 시스템의 일부분을 파일 시스템의 동일한 부분의 로컬 저장된 버전과 양방향으로 동기화하는 것)를 달성하도록 구성되어 있는 일련의 이러한 동작을 포함할 수 있다. 이 동작 집합은, 예를 들어, 호스트에게 제1 동작을 발행하고, 동작의 완료 통지를 수신할 시에, 제2 동작을 발행하는 것, 기타 등등에 의해, 호스트 이외의 장치 상에서 수행될 수 있다. 동작 집합은 또한 응용 프로그램(예를 들어, 응용 프로그램에서 특징을 이루는 데이터의 소스인 호스트와 데이터를 교환하는 데이터 기반 응용 프로그램)의 일부로서 장치 상에서 수행될 수 있다.
<발명의 요약>
이 요약은 이하에서 상세한 설명에 더 기술되는 일련의 개념을 간략화된 형태로 소개하기 위해 제공된 것이다. 이 요약은 청구된 발명 대상의 주요 요소 또는 필수적인 특징을 확인하기 위한 것이 아니며, 청구된 발명 대상의 범위를 제한하는 데 사용되기 위한 것도 아니다.
호스트에 의해 관리되는 데이터 집합에 대해 동작 집합을 수행하는 한가지 기법은 프로토콜의 동사에 대응하는 데이터 집합 명령어는 물론, 동작의 실행 흐름의 변경을 지정하는 흐름 제어 명령어를 포함하는 스크립트 언어의 사용을 수반한다. 이 스크립트 언어에 따라 표현된 리소스 스크립트는, 대응하는 프로토콜 동사를 데이터 집합에 적용하고 흐름 제어 동작에 기초하여 리소스 스크립트의 실행 흐름을 변경하기 위해, 리소스 스크립트의 동작을 해석할 수 있는 스크립트 프로세서에 의해 실행될 수 있다. 더욱이, 리소스 스크립트는 디자인 시에 표현될 수 있고, 리소스 스크립트가 실행을 위해 (즉시 또는 나중에) 선택될 때, 로컬 실행(예를 들어, 프로토콜의 대응하는 동사를 호스트에게 발행하는 것에 의함) 또는 원격 실행(예를 들어, 스크립트를 호스트로 전달하는 것에 의함) 등의 실행 컨텍스트가 이어서 선택될 수 있다. 따라서, 실행 컨텍스트가, 실행 컨텍스트에 지정된 논리적 동작 흐름을 손상시키지 않고, 런타임 시에 선택될 수 있다.
그렇지만, 상호작용의 내부 복잡도를 고려하여 리소스 스크립트를 디자인하는 것이 어려울지도 모른다. 특정의 논리(예를 들어, 도메인-관련 비즈니스 논리)를 구현하는 리소스 스크립트를 작성하려고 노력하면서, 리소스 스크립트 디자이너는 호스트의 구성 및 클라이언트와의 상호작용(네트워크 전송, 동작의 비동기적 성질, 예외 및 보상의 처리, 및 다양한 유선 프로토콜에 따른 리소스 스크립트의 직렬화 등)으로부터 발생하는 관련 없는 많은 측면을 이해하고 그에 주의를 기울여야만 할지도 모른다.
이 어려움의 일부는 스크립트 언어에 따라 동작 집합 내의 동작을 선택, 조직 및 구성하는 것을 용이하게 해주는 리소스 스크립트에 대한 시각적 디자인 환경을 제공함으로써 완화될 수 있다. 예를 들어, 시각적 디자인 환경은 동작의 순서, 속성 및 상호관계를 나타내기 위해 (예를 들어, 마우스를 사용하여) 배치될 수 있는 스크립트 언어의 명령어에 대응하는 일련의 시각적 요소를 디자이너에게 제시할 수 있다. 시각적 디자인 환경은 또한, 리소스 스크립트의 유효성을 검사하고 불완전하거나 부정확하게 구성되는 동작을 표시함으로써, 구문적으로 정확한 리소스 스크립트를 디자인하는 것을 용이하게 해줄 수 있다. 디자인이 완료되고 동작 집합의 유효성이 검사되었을 때, 시각적 디자인 환경은 또한 리소스 스크립트를 생성하는 것, 중단점(breakpoint) 및 상태 검사 등의 도구를 통해 리소스 스크립트를 디버깅하는 것, 및 다양한 실행 컨텍스트에서 리소스 스크립트를 실행하는 것을 용이하게 해줄 수 있다.
이상의 목적 및 관련 목적을 달성하기 위해, 이하의 설명 및 첨부 도면은 어떤 예시적인 측면 및 구현에 대해 기술하고 있다. 이들은 하나 이상의 측면이 이용될 수 있는 다양한 방식 중 단지 몇개만을 나타낸 것이다. 본 발명의 다른 측면, 장점 및 새로운 특징이, 첨부 도면과 관련하여 살펴볼 때, 이하의 상세한 설명으로부터 명백하게 될 것이다.
도 1은 리소스 스크립트를 수반하는 프로토콜에 따라 호스트를 통해 클라이언트가 데이터 집합에 액세스하는 것을 나타낸 예시적인 시나리오를 나타낸 도면.
도 2는 프로토콜에 따라 액세스될 수 있는 데이터 집합에 적용가능한 리소스 스크립트를 생성하도록 구성되어 있는 예시적인 디자인 환경을 나타낸 도면.
도 3은 프로토콜에 따라 액세스될 수 있는 데이터 집합에 적용가능한 리소스 스크립트를 생성하는 예시적인 방법을 나타낸 플로우차트.
도 4는 프로토콜에 따라 액세스될 수 있는 데이터 집합에 적용가능한 리소스 스크립트를 생성하는 예시적인 시스템을 나타낸 구성요소 블록도.
도 5는 입력에 응답하여 디자인 환경 내에서 동작 집합 내의 동작을 재정렬(reordering)하는 것을 수반하는 예시적인 시나리오를 나타낸 도면.
도 6은 입력에 응답하여 디자인 환경 내에서 제1 동작의 속성을 동작 집합 내의 제2 동작의 속성에 데이터 바인딩(data binding)하는 것을 수반하는 예시적인 시나리오를 나타낸 도면.
도 7은 디자인 환경 내에서 동작 집합의 유효성을 검사하는 것을 수반하는 예시적인 시나리오를 나타낸 도면.
도 8은 동작의 속성의 중단점 및 검사를 특징으로 하는 디자인 환경 내에서 실행 중인 동작 집합을 디버깅하는 것을 수반하는 예시적인 시나리오를 나타낸 도면.
도 9는 본 명세서에 기재된 발명 내용들 중 하나 이상이 구현될 수 있는 예시적인 컴퓨팅 환경을 나타낸 도면.
이제부터 첨부 도면을 참조하여 청구된 발명 대상에 대해 기술하며, 도면 전체에 걸쳐 동일한 참조 번호가 동일한 구성요소를 가리키는 데 사용되고 있다. 이하의 설명에서, 설명의 목적상, 청구된 발명 대상에 대한 완전한 이해를 제공하기 위해 수많은 구체적인 상세가 기술되어 있다. 그렇지만, 청구된 발명 대상이 이러한 구체적인 상세 내용 없이도 실시될 수 있다는 것이 명백할 수 있다. 다른 경우에, 청구된 발명 대상의 설명을 용이하게 해주기 위해 구조 및 장치가 블록도 형태로 도시되어 있다.
많은 컴퓨팅 시나리오는, 파일 시스템 호스트(filesystem host)에 의해 호스팅되는 파일 시스템, 데이터베이스 서버에 의해 호스팅되는 데이터베이스, 및 개체 서버(object server)에 의해 호스팅되는 개체 집합(object set) 등, 호스트에 의해 관리되는 데이터 집합(data set)을 수반한다. 데이터 집합은 데이터 집합에 대해 다양한 동작을 수행할 수 있는 다양한 클라이언트(장치 및 사용자 등)에 노출될 수 있다. 많은 이러한 시나리오는 만들기(create), 읽기(read), 업데이트(update) 및 삭제(delete) 동작(모두 합하여, 데이터 집합을 조작하는 "CRUD" 모델이라고 함) 등의 데이터 집합을 조작하는 일련의 기본 동작을 포함한다. 더욱이, 이들 동작은 종종, 특정의 구성에서, 특정의 작업(서버 상의 원격 파일 시스템을 파일 시스템의 로컬 버전과 동기화시키는 것 또는 트랜잭션 방식으로 데이터베이스에 레코드를 삽입하는 것 등)을 달성하기 위해 결합된다.
컴퓨팅 호스트는 특정의 프로토콜에 따라 지정된 경우 이러한 동작을 수행하라는 요청을 수신하도록 구성되어 있을 수 있다. 예를 들어, 호스트는 HTTP 끝점(HTTP endpoint)(웹 서버 등)으로서 구성되어 있을 수 있고, 일련의 표준 HTTP 동사를 통해 데이터 집합과의 상호작용을 가능하게 해줄 수 있다. 하이퍼텍스트 전송 프로토콜은 원래 웹 서버(예를 들어, HTTP GET을 통해 웹 서버 상에 저장된 페이지 또는 리소스를 요청하기 위해) 및 그 안에 제공된 일련의 응용 프로그램(HTTP POST를 통해 매개변수를 사용하여 액세스될 수 있는 HTTP 게이트웨이 스크립트 등)과 통신하기 위해 고안되었으며, 많은 서버는 HTTP 요청을 데이터 집합을 조작하는 특정의 명령어로 변환한다(예를 들어, HTTP POST는 읽기 명령어에 대응하고, HTTP GET은 만들기 명령어에 대응하며, HTTP PUT은 업데이트 명령어에 대응하고, HTTP DELETE는 삭제 명령어에 대응함). 이 구성(때때로, 프로토콜의 RESTful 사용이라고도 하며, REST는 representational state transfer의 약자임)은 서버가 데이터 집합에 대한 액세스를, 널리 지원되는 프로토콜을 통해, 광범위한 응용 프로그램으로 확장할 수 있게 해준다.
프로토콜에 따라 호스트를 통해 액세스될 수 있는 데이터 집합에 대해 동작 집합을 수행하는 많은 기법이 고안될 수 있다. 한가지 이러한 기법은 2가지 유형의 명령어, 즉 프로토콜의 동사에 대응하는 데이터 집합 명령어 및 흐름 제어 명령어를 특징으로 하는 스크립트 언어를 수반한다. 데이터 집합 동작(데이터 집합 명령어를 지정하는 동작)은 프로토콜의 대응하는 동사에 따라 호스트에 의해 처리될 수 있는 반면(예를 들어, 읽기 명령어를 포함하는 동작은 호스트에 의해 HTTP GET 동작으로서 처리될 수 있음), 흐름 제어 동작(흐름 제어 명령어를 지정하는 동작)은 평가될 수 있고 (예를 들어, 특정의 동작의 수행을 반복하는 것에 의해, 조건부에서의 조건에 따라 특정의 명령어을 수행하는 것에 의해, 및/또는 점프하여 실행 흐름을 대상 동작으로 위치 변경하는 것에 의해) 리소스 스크립트의 실행 흐름을 변경할 수 있다. 적어도 하나의 데이터 집합 동작 및 적어도 하나의 흐름 제어 동작을 가지는 동작 집합을 리소스 스크립트로 표현함으로써, 클라이언트는 (예를 들어, 웹 서버 등의 프로토콜을 통해 요청을 처리하는 호스트의 구성 요소로 동작을 전달함으로써) 호스트가 프로토콜에 따라 데이터 집합에 관한 동작을 처리하는 비교적 경량인 스크립트 프로세서에서 리소스 스크립트를 평가할 수 있게 해줄 수 있는 반면, 흐름 제어 명령어는 스크립트 프로세서에 의해 처리될 수 있다. 스크립트 언어는 또한 명령어가 링크될 수 있게 해줄 수 있고, 예를 들어, 조건부 동작은 이전 동작의 성공 또는 실패에 기반할 수 있다. 그에 부가하여, 리소스 스크립트가 실행될 수 있는 실행 컨텍스트의 실행 시에 선택이 행해질 수 있도록, 리소스 스크립트가 플랫폼에 관계없이(in a platform-agnostic manner) 지정될 수 있다. 로컬 실행 컨텍스트가 선택되는 경우, 로컬 스크립트 프로세서가 클라이언트 상에서 실행되고 서버에게 프로토콜 동작을 발행할 수 있지만, 호스트 실행 컨텍스트가 선택되는 경우, 리소스 스크립트가 원격 실행을 위해 호스트 상에 위치한 스크립트 프로세서로 전달될 수 있다. 리소스 스크립트(및 리소스 스크립트를 이용하는 응용 프로그램)의 수행이 실행 컨텍스트에 기반하여 달라질 수 있는 반면, 스크립트 프로세서의 위치에 상관없이 동일한 논리적 동작 시퀀스가 수행된다.
이러한 리소스 스크립트가 유리하게도 데이터 집합에 대해 동작 집합을 수행하는 데 이용될 수 있는 반면, 이러한 리소스 스크립트를 디자인하는 것은 상호작용의 복잡성으로 인해 어려울 수 있다. 제1 일례로서, 리소스 스크립트의 디자이너는, 프로토콜이 사용하는 동작의 유형 및 프로토콜 요청에 의해 사용되고 프로토콜 응답에 의해 제공되는 데이터의 유형과 같은, 프로토콜의 세부를 이해하고 있어야만 할지도 모른다. 제2 일례로서, 디자이너는, 통신을 설정하고 이용하는 것, 대기시간 등의 네트워크 전송 비용, 네트워크를 통해 전송하기 위한 데이터의 직렬화 및 역직렬화, 및 통신 중단의 적절한 처리(병렬 온라인 및 오프라인 동작 집합 등)와 같은, 통신의 다양한 측면을 이해하고 고려해야만 할지도 모른다. 제3 일례로서, 디자이너는 동기화, 인증, 및 단기 실행 및 장기 실행 리소스 스크립트 둘다에 대한 호스트의 상태 저장성(statefulness)(여기서 호스트는, 나중에 다시 시작하여 처리하기 위해, 장기 실행 리소스 스크립트를 일시 중단하고 저장할 수 있음)과 같은 호스트/클라이언트 관계의 다양한 측면을 이해하고 고려해야만 할지도 모른다. 제4 일례로서, 디자이너는, 명령어를 지정하는 구문, 리소스 스크립트에서의 동작의 계층적 구성, 및 스크립트 언어의 특정 명령어와 프로토콜의 동사의 상관(correlation)과 같은, 스크립트 언어의 상세를 이해하고 있어야만 할지도 모른다. 이들 및 기타 복잡성으로 인해 디자이너가 특정 기능에 대한 리소스 스크립트를 제작하는 노력이 상당히 복잡해질 수 있고, 이러한 복잡성은 디자이너가 구현하고자 하는 도메인-관련 동작의 성질 및 논리와 거의 관련이 없을 수 있다.
도 1은 클라이언트(12)가 프로토콜(14)에 따라 호스트(18)를 통해 액세스된 데이터 집합(20)에 액세스하는 것을 수반하고 리소스 스크립트(22)의 사용을 수반하는 예시적인 시나리오(10)를 나타낸 것이다. 클라이언트(12)는 이 시나리오(10)에서 데이터 집합(20)을 읽으려고 하며, 따라서 HTTP GET 동사를 포함하고 데이터 집합(20)을 지정하는 프로토콜 요청(16)을 호스트(18)에게 발행한다. 호스트(18)는 프로토콜(14)을 통해[예를 들어, 데이터 집합(20)에 대한 RESTful 인터페이스를 제공하는 웹 서버로서의 구성을 통해] 데이터 집합(20)에 대한 액세스를 제공하고, 요청된 데이터 집합(20)을 포함하는 프로토콜 응답(28)을 클라이언트에게 전송할 수 있다. 그렇지만, 데이터 집합(20)은 계정 저장소(24)에서 식별되는 특정 사용자 계정으로 제한되고, 호스트(18)는, 데이터 집합(20)을 읽음으로써 프로토콜 요청(16)의 수행을 허용하기 전에, 클라이언트(12)에 의해 제공되는 일련의 자격증명(사용자 이름 및 비밀번호 등)을 인증하는 일을 한다. 이 작업을 수행할 때, 호스트(18)는 리소스 스크립트(22)를 이용하여, 인증 자격증명을 계정 저장소(24)로 전달하고 인증 성공에 대해 "Access Granted" 메시지 및 데이터 집합(20)을 읽는 것으로 응답하며 인증 실패에 대해 "Access Denied"로 응답한다. 디자이너는, 클라이언트(12) 상에서 실행 중인 데이터 기반 응용 프로그램에서 사용하기 위해 데이터 집합(20)을 읽는 것과 같은, 데이터 집합(20)을 이용하는 많은 시나리오에서 이러한 리소스 스크립트(22)를 제작할 수 있다.
도 1의 의사 코드 블록(26)은 프로토콜 요청(16)의 수행 동안에 계정 저장소(24)와 상호작용하기 위해 이용될 수 있는 리소스 스크립트(22)의 내용을 나타낸 것이다. 의사 코드 블록(26)이 이 자격으로 이용될 수 있는 하나의 스크립트 언어에 따른 형식으로 된 리소스 스크립트(22)의 단지 하나의 작성예를 나타내고 있다는 것과 이것 및 기타 스크립트 언어로 된 많은 다른 리소스 스크립트가 이용가능할 수 있다는 것을 잘 알 것이다.
그렇지만, 도 1의 의사 코드 블록(26)에 표현된 리소스 스크립트(22)는 기타 리소스 스크립트 및 기타 스크립트 언어와 관련하여 몇몇 장점을 제공한다. 제1 일례로서, 리소스 스크립트는 선언적으로 기술(declaratively specified)되며, 인증 동작을 수행할 때의 프로세스를 기술하는 일련의 요소를 포함한다. 명령적 프로그래밍 패러다임, 절차적 프로그래밍 패러다임 그리고 개체- 및 관점-지향 프로그래밍 패러다임과 같은 기타 프로그래밍 패러다임에 따라 디자인된 스크립트 언어로 표현된 리소스 스크립트와 달리, 의사 코드 블록(26)의 선언적 구조는, 계층적으로 구성된 문서 개체 모델(document object model)에 의해 제공될 수 있는 것과 같은, 규칙적인 구조로 인해 사람이 보다 쉽게 읽을 수 있으며 파서에 의해 보다 쉽게 파싱될 수 있다. 제2 일례로서, 도 1의 의사 코드 블록(26)에 제시된 리소스 스크립트는 플랫폼 독립적 실행, 상세하게는 런타임 선택가능 실행 컨텍스트를 가능하게 해주는 프로토콜(14)에 기반하는 스크립트 언어로 표현되어 있다. 예를 들어, 리소스 스크립트(22)는 리소스 스크립트(22)가 실행될지도 모르는 시스템의 하드웨어 또는 소프트웨어 아키텍처에 독립적인 방식으로 디자인되고 저장될 수 있다. 런타임 시에, 리소스 스크립트(22)에 대한 실행 컨텍스트가 지정될 수 있고, 리소스 스크립트(22)는, 플랫폼 관련 재구성 없이 데이터 집합(20)에 대해 동등한 효과를 가지면서, 많은 런타임 지정된 실행 컨텍스트(runtime-specified execution context)에서 실행될 수 있다. 제3 일례로서, (Java 및 C++ 등의 프로그래밍 언어의 보다 복잡한 구조와 달리) 이 의사 코드 블록(26)의 스크립트 언어의 규칙적인 구조 및 비교적 간단한 구조는 [예를 들어, 호스트(18)의 웹 서버 구성요소에서 처리하기 위해] 데이터 집합 동작을 프로토콜(14)을 통해 전달함으로써 데이터 집합 동작을 실행할 수 있고 리소스 스크립트의 실행 흐름을 변경함으로써 흐름 제어 동작을 실행할 수 있는 스크립트 프로세서의 비교적 경량인 디자인을 가능하게 해준다. 그럼에도 불구하고, (흐름 제어 동작의 사용을 통한) 실패 보상 및 [동작의 속성을 다른 동작의 속성과, 또는 클라이언트(12), 호스트(18), 데이터 집합(20), 프로토콜 요청(16) 또는 프로토콜 응답(28)의 측면과 연관시키는 명령어의 사용을 통한] 데이터 바인딩과 같은 상위-레벨 기능이 여전히 비교적 간단한 스크립트 언어 내에 제공될 수 있다.
그렇지만, 디자이너가 도움 없이 도 1의 의사 코드 블록(26)을 제작하기 어려울지도 모른다는 것도 잘 알 것이다. 이 의사 코드 블록(26)에 나타낸 스크립트 언어로 리소스 스크립트를 성공적으로 표현하려면 도 1의 많은 상호작용 측면을 상세히 알고 있을 필요가 있다. 예를 들어, 디자이너는 선언적으로 기술된 리소스 스크립트(22)의 계층적 구조, 스크립트 언어 및 선언적으로 기술된 리소스 스크립트(22)의 구문(다양한 매개변수의 정의 및 "Conditional" 및 "DataBind" 등의 요소의 첨부 등), 기본 HTTP GET 프로토콜 요청(16)의 상세, 및 스크립트 언어의 명령어와 프로토콜의 동사의 상관[스크립트 언어에서 GET-유형 명령문의 사용을 통해 리소스 스크립트(22)에서 HTTP GET 동작을 실행하는 방식 등], 프로토콜 요청(16)과 함께 제공되는 사용자 자격증명의 성질, 및 사용자 자격증명을 계정 저장소(24)에게 제공하고 결과를 해석하는 방식, 리소스 스크립트(22)의 원하는 결과를 달성하기 위해 데이터-바인딩 기능을 사용하여 동작의 다양한 속성과 관계를 설정하는 것, 및 네트워크를 통해 프로토콜 요청(16)을 발행할 시에 리소스 스크립트(22)에 의해 발생되는 네트워크 전송 비용(지연 시간 등)을 이해하고 있어야만 할지도 모른다. 스크립트 언어의 구문적 제약조건(syntactic constraint)도 충족시키면서, 이들 개념 전부를 정확하게 지키는 리소스 스크립트(22)를 디자인하는 것이 심지어 숙련된 디자이너에게도 아주 어려울 수 있다. 더욱이, 이들 복잡한 상세 모두가 클라이언트(12) 상의 데이터 기반 응용 프로그램을 증진시키려고 데이터 집합(20)을 읽기 위해 리소스 스크립트(18)를 개발하는 디자이너의 관심 분야와 관련이 없을지도 모른다.
리소스 스크립트에 기술된 상호작용으로부터 발생하는 복잡성의 일부를 완화시키는 리소스 스크립트의 작성을 용이하게 해주도록 디자인 환경이 고안될 수 있다. 디자인 환경은 스크립트 언어로 된 일련의 명령어를 디자이너에게 제시할 수 있고, 디자이너가 이러한 명령어를 동작 집합의 동작으로서 선택하고 배열하는 것을 도울 수 있다. 일례로서, 디자인 환경은 일부가 그래픽으로 제시될 수 있으며, 이로써 디자이너는, 동작 집합의 동작을 선택, 구성 및 연관시키기 위해 키보드 및 마우스 제스처를 통해 명령어를 끌어서 놓기하는 것 등에 의해, 창 인터페이스(windowing interface)를 통해 명령어를 조작할 수 있게 된다. 이러한 성질의 디자인 환경(때때로 "시각적" 디자인 환경이라고 함)은, 리소스 스크립트의 작동 세부(스크립트 언어의 구문, 프로토콜의 세부, 그리고 연결 설정 및 비동기성 등의 네트워크 매개변수 등)를 보이지 않게 하고 디자이너가 리소스 스크립트에서의 동작의 논리적 구성에 집중할 수 있게 해주는 동작 집합의 디자인을 용이하게 해줄 수 있다. 그에 부가하여, 디자인 환경은 디자이너에 의해 지정된 동작 집합을 표현하는 동작을 생성하는 것을 용이하게 해줄 수 있고, 상세하게는 스크립트 언어의 구문적 및 논리적 제약조건을 준수하는 리소스 스크립트에서의 동작을 자동으로 생성할 수 있다.
도 2는 시각적 방식으로 제시되고 또한 디자이너가 동작 집합(38)을 지정하여 의사 코드 블록(26)에 지정된 동작을 포함하는 리소스 스크립트(22)를 생성하는 데 사용할 수 있는 디자인 환경(32)을 특징으로 하는 예시적인 시나리오(30)를 나타낸 것이다. 디자인 환경(32)은 스크립트 언어를 구성하는 요소(36)를 [예를 들어, 스크립트 언어 도구모음(34)에] 디스플레이하고 동작 집합(38)을 구성하는 동작(40)을 디스플레이하도록 구성되어 있다. 디자인 환경(32)은 동작 집합(38)을, 예를 들어, 동작 집합(38)의 동작(40)의 구조 및 관계를 표현하는 중첩된 노드의 계층적 트리로서 디스플레이할 수 있다. 디자인 환경(32)은 또한 디자이너가 디자인 환경(32)에 입력을 제공함으로써 동작 집합(38)을 생성 및 구성할 수 있게 해줄 수 있다. 예를 들어, 디자인 환경(32)은 사용자가 스크립트 언어 도구모음(34) 내의 요소(36)를 두 번 클릭함으로써 또는 동작 집합(38) 내의 특정의 위치로 요소(36)를 끌어서 놓기함으로써 동작 집합(38)에 동작(40)을 추가할 수 있게 해줄 수 있다. 다른 일례로서, 디자인 환경(32)은 사용자가 [예를 들어, 마우스로 동작(40)을 클릭함으로써] 동작(40)을 선택함으로써 동작(40)을 구성할 수 있게 해줄 수 있고, 선택된 동작(40)의 적어도 하나의 속성(42)[동작 이름으로서 동작(40)에 할당된 값 및 동작을 실행하는 데 사용되는 매개변수 등]을 디스플레이할 수 있다. 마지막으로, 시각적 디자이너(32)는 디자이너가 동작 집합(38)으로부터 리소스 스크립트(22)를 생성할 수 있게 해줄 수 있다(전자는 논리적으로 조직되고 구성된 동작(40)을 포함하고 후자는, 의사 코드 블록(26)에 예시된 것과 같은, 스크립트 언어에 따른 동작 집합(38)의 표현식을 포함함). 리소스 스크립트(22)를 생성하라는 요청을 수신할 시에, 디자인 환경(32)은 스크립트 언어에 따라 리소스 스크립트(22)의 동작을 생성하기 위해 리소스 스크립트 생성 구성요소(44)를 호출할 수 있다. 이러한 방식으로, 디자인 환경(32)은, 디자이너가 관심을 갖지 않을지도 모르는 리소스 스크립트(22)의 복잡한 작동 세부를 자동으로 처리하면서, 디자이너가 스크립트 언어를 준수하는 리소스 스크립트(22)를 생성하는 것을 상당히 용이하게 해줄 수 있다.
도 3은 프로토콜(14)에 따라 액세스될 수 있는 데이터 집합(20)에 적용가능한 리소스 스크립트(22)를 생성하는 예시적인 방법(50)을 포함하는, 본 명세서에서 논의되고 도 2에 예시된 기법의 제1 실시예를 나타낸 것이다. 예시적인 방법(50)은 52에서 시작하고, 스크립트 언어에 대응하는 요소(36)를 포함하는 디자인 환경(32)을 디스플레이하는 단계(54)를 포함하며, 이 요소(36)는 또한 프로토콜(14)의 적어도 하나의 동사에 대응하는 적어도 하나의 데이터 집합 명령어, 및 리소스 스크립트(22)의 실행 흐름을 변경하도록 구성된 적어도 하나의 흐름 제어 명령어를 포함할 수 있다. 예시적인 방법(50)은 또한 디자인 환경(32) 내에 동작 집합(38)의 동작(40)을 디스플레이하는 단계(56)를 포함한다. 예시적인 방법(50)은 또한, 요소(36)를 선택하는 입력을 수신할 때, 요소(36)에 대응하는 명령어를 지정하는 동작(40)을 동작 집합(38)에 추가하는 단계(58)를 포함한다. 예시적인 방법(50)은 또한, 리소스 스크립트(22)의 생성을 요청하는 입력을 수신할 때, 리소스 스크립트(22)를 생성하는 단계(60)를 포함한다. 스크립트 언어의 명령어에 대응하는 동작(40)을 동작 집합(38)에 추가하라는 입력을 받는 디자인 환경(32)을 제공하고 스크립트 언어에 따라 동작 집합(38)으로부터 리소스 스크립트(22)를 생성하였으면, 예시적인 방법(50)은 디자이너가 리소스 스크립트(22)를 생성하는 것을 용이하게 해주는 것을 달성하며, 따라서 62에서 종료된다.
도 4는 프로토콜(14)에 따라 호스트(20)를 통해 액세스될 수 있는 데이터 집합(22)에 적용가능한 리소스 스크립트(22)를 생성하는 예시적인 시스템(72)을 포함하는, 본 명세서에서 논의되고 도 2에 예시된 기법의 제2 실시예를 예시하는 시나리오(70)를 나타낸 것이다. 예시적인 시스템(72)은 스크립트 언어에 대응하는 요소(36)를 포함하는 디자인 환경(32)을 디스플레이하도록 구성되어 있는 디자인 환경 디스플레이 구성요소(76)를 포함하며, 이 요소(36)는 또한 프로토콜(14)의 적어도 하나의 동사에 대응하는 적어도 하나의 데이터 집합 명령어, 및 리소스 스크립트(22)의 실행 흐름을 변경하도록 구성된 적어도 하나의 흐름 제어 명령어를 포함할 수 있다. 예시적인 시스템(72)은 또한 디자인 환경(32) 내에 동작 집합(38)의 동작을 디스플레이하도록 구성되어 있는 동작 집합 디스플레이 구성요소(78)를 포함한다. 예시적인 시스템(72)은 또한, 디자인 환경(32)에서 적어도 하나의 요소(36)의 선택을 수신할 때, 요소(36)에 대응하는 명령어를 동작 집합(38)에 추가하도록 구성되어 있는 동작 집합 작성 구성요소(80)를 포함한다. 예시적인 시스템(72)은 또한 동작 집합(38)을 저장하도록 구성되어 있는 동작 집합 저장 구성요소(76)를 포함한다. 예시적인 시스템(72)은 또한, 리소스 스크립트(22)를 생성하라는 요청을 수신할 때, 리소스 스크립트(22)를 생성하도록 구성되어 있는 리소스 스크립트 생성 구성요소(82)를 포함한다. 그로써, 예시적인 시스템(72)의 구성요소는 동작 집합(38) 내의 동작(40)을 조직 및 구성하는 것과 스크립트 언어의 제약조건을 준수하도록 동작 집합(38)을 표현하는 리소스 스크립트(22)를 생성하는 것을 용이하게 해줄 수 있는 디자인 환경(32)을 디자이너에게 제공하는 것을 달성하기 위해 협력한다.
본 명세서에 기재된 기법은 많은 측면에서 여러 변형을 가지게 안출될 수 있으며, 일부 변형은 이들 및 기타 기법의 다른 변형에 대해 부가의 장점을 제공할 수 있고 및/또는 단점을 감소시킬 수 있다. 더욱이, 일부 변형은 결합하여 구현될 수 있고, 일부 조합은 상승적 협력을 통해 장점이 증가되고 및/또는 단점이 감소되는 특징이 있을 수 있다. 이들 변형은 다양한 실시예[예를 들어, 도 3의 예시적인 방법(50) 및 도 4의 예시적인 시스템(72)]에 포함되어 이러한 실시예에 개별적 및/또는 상승적 장점을 제공할 수 있다.
이들 기법의 실시예 간에 변할 수 있는 제1 측면은 이들 기법이 적용될 수 있는 시나리오를 포함한다. 제1 일례로서, 배포가능한 컴퓨팅 환경에서의 리소스를 포함하는 데이터 집합(20)에 적용하기 위한 리소스 스크립트(22)가 준비될 수 있다. 이 시나리오는 일련의 개체 시스템에 의해 관리되는 점점 더 크고 다양한 일련의 개체를 주소 지정하도록 고안될 수 있다. 예를 들어, 컴퓨팅 환경은 파일 시스템에 의해 관리되는 일련의 파일, 데이터베이스 시스템에 의해 관리되는 하나 이상의 데이터베이스, 응용 프로그램을 나타내고 또 어셈블리 캐시(assembly cache)에 의해 관리되는 일련의 실행가능 이진 파일(executable binary), 운영 체제의 사용자 프로필 구성요소에 의해 관리되는 일련의 사용자 프로필, 및 데이터 캐싱 구성요소에 의해 관리되는 다양한 데이터 캐시(운영 체제의 복사 버퍼에 의해 관리되는 일련의 복사된 항목, 운영 체제의 실행취소 구성요소에 의해 관리되는 일련의 실행취소 동작, 및 운영 체제의 항목 사용 추적 구성요소에 의해 관리되는 일련의 "가장 최근에 사용된" 항목 등)를 포함할 수 있다. 게다가, 이러한 개체가 하나 이상의 동작(예를 들어, 2개의 개체 집합을 병합시키는 개체 동기화 동작 및 소스 개체 집합과 일치하도록 대상 개체 집합을 조정하는 개체 미러링 동작)에 따라 하나 이상의 사용자에 의해 작동되는 복수의 장치 간에 교환될 수 있다. 이러한 방식으로, 개체가 일련의 개체 시스템을 통해 느슨하게 구성되어 있고 컴퓨팅 환경을 나타내도록 통합되어 있다.
최근의 컴퓨팅 환경을 포함하는 개체의 복잡한 다양성 및 분산을 감소시키기 위해, 컴퓨팅 환경의 배포가능한 표현이 고안될 수 있으며, 여기서 컴퓨팅 환경을 구성하는 개체는 컴퓨팅 환경 호스트에 의해 호스팅될 수 있는 개체 계층구조로 구성되어 있다. 개체가 균일한 방식으로 표현되고 개체 시스템에 의해 일관된 방식으로 관리되는 경우, 컴퓨팅 환경의 모든 개체에 적용할 일련의 서비스가 고안될 수 있다. 게다가, 동일한 컴퓨팅 환경(동일한 사용자 프로필, 응용 프로그램, 데이터 파일, 기타를 포함함)을 표현하는 개체 계층구조가 다양한 장치로 전달될 수 있고, 각각의 장치는 일관되지만 장치의 능력에 기초하여 커스터마이즈된 방식으로 컴퓨팅 환경을 만들 수 있다(예를 들어, 워크스테이션에 연결된 키보드 장치로부터 데이터 입력을 수신하는 하드 키보드 인터페이스 및 휴대폰 장치로부터 데이터 입력을 수신하는 터치스크린 소프트웨어 키보드 인터페이스). 배포가능한 컴퓨팅 환경의 개념과 관련하여, 표현 내의 하나 이상의 데이터 개체를 관리하고 (HTTP를 통한 RESTful 상호작용 등) 프로토콜을 통해 이러한 리소스에 대한 액세스 요청을 받는 호스트로서 동작하도록 적어도 하나의 서버를 구성하는 것은 장점이 있을 수 있다. 이들 기법에 따르면, 리소스 스크립트(22)는 호스트가 리소스에 대한 액세스를 제공하는 데 사용하는 프로토콜의 동사에 따라 컴퓨팅 환경 호스트를 통해 액세스될 수 있는 배포가능한 컴퓨팅 환경 내의 리소스에 적용되는 동작으로서 구성되어 있을 수 있다. 그러나, 당업자라면 본 명세서에 기재된 기법이 적용될 수 있는 많은 이러한 시나리오를 안출할 수 있다.
이들 기법이 적용될 수 있는 제2 예시적인 시나리오로서, 개발 환경(32)은 많은 상황에서 디자이너와 인터페이스하도록 디자인될 수 있다. 제1 일례로서, 디자인 환경(32)은 장치 상에서 실행되는 응용 프로그램(컴퓨터 상의 통합 개발 환경 등)을 포함할 수 있다. 이 일례에서, 디자인 환경(32)은 디자인 환경(32) 상에서 호스팅되는 장치 상에 디스플레이될 수 있다. 제2 일례로서, 디자인 환경은, 응용 프로그램 호스트 상에서 호스팅될 수 있고 실행을 위해 브라우저 내로 일부 또는 전체가 로드될 수 있는, 웹으로 배포된 응용 프로그램을 포함할 수 있다. 이 일례에서, 디자인 환경(32)은 응용 프로그램 상에서 호스팅되지만 브라우저 내에 디스플레이될 수 있다. 브라우저는 또한 디자인 환경(32)의 기능(리소스 스크립트를 저장하는 것 및 동작 집합을 생성하는 것 등)의 일부 또는 전부를 로드하여 실행하도록 구성되어 있을 수 있다. 이와 달리, 응용 프로그램 호스트는 디자인 환경(32)의 기능의 일부 또는 전부를 제공할 수 있고, 예를 들어, 브라우저는 응용 프로그램 호스트 상에서 실행 중인 웹 응용 프로그램에 대한 씬 클라이언트 인터페이스로서 동작할 수 있다. 당업자라면 디자인 환경(32)에 대한 많은 아키텍처를 안출할 수 있고, 본 명세서에서 논의된 기법을 구현하면서, 디자인 환경(32)의 일부 또는 전부가 동작하고 디자이너와 인터페이스할 수 있는 많은 플랫폼을 선택할 수 있다.
이들 기법의 실시예들 간에 다를 수 있는 제2 측면은 디자인 환경(32)의 제시 및 디자이너가 디자인 환경(32) 내에서 수행할 수 있는 동작에 관한 것이다. 디자인 환경(32)을 텍스트 기반 디자인 환경(텍스트 편집기 등)으로서 제시하는 것이 가능할 수 있지만, 디자인 환경(32)의 일부를 그래픽으로 제시함으로써 상당한 장점이 달성될 수 있으며, 이 경우 디자인 환경(32) 내의 항목은 디자이너에 의해 창 인터페이스 내의 컨트롤처럼 [동작 집합(38)의 동작(40)을 선택, 구성 및 연관시키기 위해 키보드 및 마우스 제스처를 통해 명령어를 끌어서 놓기하는 것 등에 의해] 조작될 수 있다. 디자인 환경(32)의 "시각적" 레이아웃은 기본적인 동작을 수행하는 데 관여되는 입력[예를 들어, 텍스트 편집기에서는 동작 집합(38)에 동작(40)을 추가하는 것이 60번 키스트로크를 필요로 할 수 있지만, 시각 지향(visually oriented) 디자인 환경(32)에서는 끌어서 놓기 동작만을 필요로 할 수 있음] 및 데이터 입력과 연관된 오류의 양을 상당히 감소시킬 수 있으며, 그로써 동작 집합(38)의 개발을 가속화시키면서도 상당한 편의 및 개선된 경험을 디자이너에게 제공한다.
시각 지향 디자인 환경(32)을 증진시키기 위해, 이 제2 측면의 제1 일례는 동작 집합 내의 동작을 목적지 위치로 위치 변경하는 것을 나타내는 입력을 (예를 들어, 디자이너로부터) 수신하는 것, 및 동작 집합 내의 동작을 위치 변경하는 것으로 응답하는 것을 포함할 수 있다. 도 5는 사용자가 먼저 포인터(94)(마우스, 터치패드 또는 터치스크린 인터페이스 등의 포인팅 장치에 의해 제어될 수 있음)로 동작(92)을 선택하고 이어서 선택된 동작(92)을 아래로 끌어서 선택된 동작(92)을 동작 집합(38)의 순서에서 나중의 위치로 위치 변경하는 예시적인 시나리오(90)를 나타낸 것이다. 개발 환경(32)은, 디자인 환경(32) 내에 디스플레이된 바와 같이, 동작 집합(38)의 순서에서 선택된 동작(92)을 위치 변경하는 것으로 응답할 수 있다. 제2 일례로서, [예를 들어, 포인터(94)로 동작(92)을 클릭함으로써] 동작 집합(38) 내의 동작(92)을 선택하는 입력을 수신할 때, 디자인 환경(32)은 동작(92)의 적어도 하나의 속성을 디스플레이하는 것으로 응답할 수 있다. 그에 부가하여, 동작(94)의 적어도 하나의 속성을 구성하는 입력을 수신할 때, 디자인 환경(32)은 입력에 따라 동작(94)의 적어도 하나의 속성을 구성하는 것으로 응답할 수 있다. 동작(94)을 구성하는 이 방식의 몇몇 일례는, 동작(94)의 속성이 단방향으로 또는 양방향으로 데이터 소스와 동기화되도록, 동작(94)의 속성을 데이터 소스에 데이터 바인딩하는 것을 포함한다. 예를 들어, 적어도 하나의 데이터 집합 명령어는 프로토콜(14)의 동사를 데이터 집합(20)에 적용하라는 요청에 관계된 요청 속성[예를 들어, 프로토콜 요청(16)의 측면], 및 동사를 데이터 집합(20)에 적용하는 것으로 생성된 응답에 관계된 응답 속성[예를 들어, 프로토콜 응답(28)의 측면]을 포함할 수 있다. 이러한 속성을 데이터 바인딩하는 것은 동작 집합(38)이 프로토콜 요청(16) 및/또는 프로토콜 응답(28)에 대해 동작을 수행할 수 있게 해줄 수 있으며, 이러한 데이터 바인딩은 디자인 환경(32) 내에서 입력에 응답하여 형성될 수 있다.
도 6은, 동작 집합(38) 내의 제1 동작(102)이 포인터(94)에 의해 선택된 한가지 이러한 일례를 나타낸 것이다. 디자인 환경(32)은 제1 동작(102)에 대한 속성(실행 중에 사용되는 그의 이름, 형식 및 매개변수 등)을 디스플레이할 수 있다. 사용자는 제2 동작(104)의 속성(GET 동작의 CONTENT 속성 등)을 선택함으로써 이 데이터 바인딩 동작의 데이터 소스 속성을 구성할 수 있다. 디자인 환경(32)은 제2 동작(104)의 속성에 데이터 바인딩하도록 제1 동작(102)의 속성을 구성하는 것으로 이러한 입력에 응답할 수 있다. 다른 대안으로서 또는 그에 부가하여, 디자인 환경(32)은 동작(40)의 속성을 리소스 스크립트(22)를 실행하는 클라이언트(12)의 측면[클라이언트(12) 상에서 실행 중인 데이터 기반 응용 프로그램의 측면 등]에 데이터 바인딩하는 것을 나타내는 입력을 사용자로부터 수신할 수 있다. 디자인 환경(32)은 클라이언트(12)의 측면에 데이터 바인딩하도록 동작(40)의 속성을 구성하는 것으로 응답할 수 있다. 당업자라면 본 명세서에서 논의된 기법에 따라 구성된 디자인 환경(32)[상세하게는 시각 지향 디자인 환경(32)]의 많은 기능을 안출할 수 있다.
이들 기법의 실시예들 간에 다를 수 있는 제3 측면은 디자인 환경(32)의 동작 집합 유효성 검사 기능에 관한 것이며, 그로써 동작 집합(38)이 스크립트 언어에 따라 유효한지 유효하지 않은지와 리소스 스크립트(22)가 그로부터 생성될 수 있는지 여부를 나타내기 위해 동작 집합(38)이 디자인 시에 검토될 수 있다. 사용자가 동작 집합(38)의 동작(40)을 작성하고 구성할 때, 디자인 환경(32)은 (주기적으로, 계속하여, 또는 요청 시에) 동작 집합(38)의 유효성[동작(40)의 데이터 바인딩된 속성의 유효성 및 동작(40)의 완전한 또는 불완전한 구성 등]을 모니터링할 수 있다. 도 7은 디자인 환경이 디자인 시에 동작 집합(38)의 유효성을 검사하는 예시적인 시나리오(110)를 나타낸 것이다. 이 예시적인 시나리오에서, 하나의 특정 동작은 유효하지 않은 동작(지정되지 않은 데이터 소스를 가지는 "DATABIND" 동작)을 포함한다. 이 실시예 및 기타 실시예에서, 동작 집합(112)의 적어도 하나의 유효하지 않은 동작의 유효성을 검사하는 데 실패할 때, 디자인 환경(32)은 동작 집합(38)의 유효하지 않은 동작에 대해 유효하지 않은 동작 표시기(114)를 디스플레이할 수 있다. 이 유효하지 않은 동작 표시기(114)는 동작 집합(38)이 리소스 스크립트(22)로서 표현될 수 있기 전에 정정되어야 하는 유효하지 않은 동작으로 디자이너의 주의를 끌 수 있다. 리소스 스크립트(38)가 아직 유효하지 않아 표현될 수 없다는 것을 나타내는 유효하지 않은 동작 집합 표시기(112) 및 유효하지 않게 구성되어 있는 유효하지 않은 명령어의 속성(예를 들어, 유효하지 않은 "DATABIND" 명령어의 "DESTINATION" 매개변수)을 나타내는 유효하지 않은 동작 속성 표시기(116) 등의 부가의 표시기가 또한 디자인 환경(32) 내에 디스플레이될 수 있다. 다른 대안으로서, 디자인 환경(32)이 동작 집합(38)의 유효성을 검사하는 경우, 디자인 환경(32)은 동작 집합(38)이 스크립트 언어에 따라 유효하고 리소스 스크립트(22)로서 표현될 수 있다는 것을 나타내는 유효한 동작 집합 표시기(118)를 디스플레이할 수 있다. 당업자라면 본 명세서에서 논의된 기법에 따라 개발된 디자인 환경(32)에서 많은 동작 집합 유효성 검사 기능을 안출할 수 있다.
이들 기법의 실시예들 간에 다를 수 있는 제4 측면은 스크립트 언어에 따라 동작 집합(38)으로부터 리소스 스크립트(22)를 생성하는 것에 관한 것이다. 생성은 디자인 시에 요청이 있을 때 수행될 수 있고, 스크립트 언어로 기술된 리소스 스크립트(22)[예를 들어, 도 1 및 도 2의 의사 코드 블록(26)]를 사용자에게 제시할 수 있다. 일부 실시예에서, 생성은 또한 JSON, Atom, 또는 RSS 등의 유선 프로토콜에 따라 수행될 수 있다. 리소스 스크립트(22)가 실행될 수 있는 특정 호스트(18)에서 지원되는 유선 프로토콜에 따라 리소스 스크립트(22)를 생성하는 것이 바람직할 수 있고 리소스 스크립트(22)의 처리(공지의 서식 설정 및 직렬화 프로세스 등)에 관한 장점을 제공할 수 있다. 따라서, 일부 실시예에서, 디자인 환경(32)은 유선 프로토콜에 따라 리소스 스크립트(22)의 생성을 요청하는 입력을 수신할 수 있고, 유선 프로토콜에 따라 리소스 스크립트(22)를 생성하는 것으로 응답할 수 있다. 당업자라면 본 명세서에서 논의된 기법에 따라 동작 집합(38)으로부터 리소스 스크립트(22)를 생성하는 많은 방식을 안출할 수 있다.
이들 기법의 실시예들 간에 다를 수 있는 제5 측면은 리소스 스크립트(22)를 실행하는 것 및 디자인 환경(32)이 그에 참여하는 것에 관한 것이다. 리소스 스크립트(22)가 플랫폼에 관계없는(platform-agnostic) 스크립트 언어로 표현되는 경우, 리소스 스크립트(22)가 실행될 수 있는 실행 컨텍스트의 실행 시에 선택이 행해질 수 있다. 로컬 실행 컨텍스트가 선택되는 경우, 로컬 스크립트 프로세서가 클라이언트(12) 상에서 실행되고 호스트(18)에게 프로토콜 동작을 발행할 수 있지만, 호스트 실행 컨텍스트가 선택되는 경우, 리소스 스크립트(22)가 원격 실행을 위해 호스트(18) 상에 위치한 스크립트 프로세서로 전달될 수 있다. 리소스 스크립트(22)[및 리소스 스크립트(22)를 이용하는 응용 프로그램]의 수행이 실행 컨텍스트에 기반하여 다를 수 있기 때문에, 스크립트 프로세서의 위치에 상관없이 동일한 논리적 동작 시퀀스가 데이터 집합(20)에 대해 수행되며, 그 결과 데이터 집합(20)에 대해 리소스 스크립트(22)를 실행하는 동등한 효과가 얻어진다.
리소스 스크립트(22)의 유연한 실행 컨텍스트를 고려하여, 디자인 환경(32)은 디자이너가 리소스 스크립트(22)를 특정의 실행 컨텍스트에서 실행할 수 있게 해줄 수 있다. 예를 들어, 리소스 스크립트(22)의 실행을 요청하는 입력을 수신할 때, 디자인 환경(32)은 적어도 2개의 실행 컨텍스트를 제공할 수 있고, 디자이너의 선택을 기다릴 수 있다. 선택된 실행 컨텍스트를 선택하는 입력을 수신할 때, 디자인 환경(32)은 선택된 실행 컨텍스트에 따라 스크립트 프로세서 상에서 리소스 스크립트(22)를 실행할 수 있다. 예를 들어, 입력이 호스트 실행 컨텍스트의 선택을 나타내는 경우, 디자인 환경(32)은 리소스 스크립트(22)를 호스트(18) 상의 스크립트 프로세서로 전송함으로써 리소스 스크립트(22)를 실행할 수 있다. 보다 상세하게는, 호스트는 하나 이상의 유선 프로토콜(JSON, Atom, 및 RSS 등)에 따라 서식 설정된(예를 들어, 직렬화된) 리소스 스크립트(22)를 수신하도록 구성되어 있을 수 있다. 따라서, 디자인 환경(32)은, 호스트(18)에 의해 지원되는 유선 프로토콜을 선택하고 유선 프로토콜에 따라 리소스 스크립트(22)를 직렬화하며 유선 프로토콜에 따라 직렬화된 리소스 스크립트(22)를 호스트(18) 상의 스크립트 프로세서로 전송함으로써, 리소스 스크립트(22)를 호스트 실행 컨텍스트에서 실행할 수 있다. 다른 대안으로서, 입력이 로컬 실행 컨텍스트의 선택을 나타내는 경우, 디자인 환경(32)은, 데이터 집합(20)에 액세스하는 데 사용할 수 있는 프로토콜(14)의 대응하는 동사를 호스트(18)에게 발행함으로써 데이터 집합 동작을 처리하고 리소스 스크립트(22)의 실행 흐름을 변경함으로써[예를 들어, 그 다음에 실행될 특정 동작(40)을 가리키도록 명령어 포인터를 변경함으로써] 흐름 제어 동작을 처리하도록 구성되어 있을 수 있는 로컬 스크립트 프로세서 상에서 리소스 스크립트(22)를 실행할 수 있다.
로컬 실행 컨텍스트에서 리소스 스크립트(22)를 실행하는 것이 유리할 수 있는 특정 시나리오는 리소스 스크립트(22)의 디버깅을 포함하며, 여기서 디자이너는 실행 동안에 리소스 스크립트(22)의 일부 측면[예를 들어, 리소스 스크립트(22)를 통한 실행 흐름, 다양한 동작(40)의 속성, 또는 호스트(18) 및/또는 데이터 집합(20)과의 상호작용]을 모니터링하고자 할 수 있다. 로컬 실행 컨텍스트에서 리소스 스크립트(22)를 실행하는 것은 호스트 실행 컨텍스트와 비교하여 이러한 모니터링을 용이하게 해줄 수 있는데, 그 이유는 호스트(18)가 디버깅하도록 적절히 구성되어 있지 않을 수 있거나 디버깅 기법을 허용하지 않을 수 있기 때문이다.
디자인 환경(32)은 리소스 스크립트(22)가 로컬 실행 컨텍스트에서 실행되고 있는 동안에 이용될 수 있는 많은 디버깅 기법을 제공할 수 있다. 도 8은 실행 중인 동작 집합(38)에 적용될 수 있는 일부 디버깅 기법을 특징으로 하는 예시적인 시나리오(120)를 나타낸 것이다. 제1 일례로서, 디자인 환경(32)은 특정의 관심 지점에서 동작 집합(38)의 실행을 중단시키는 중단점(breakpoint)의 사용을 허용할 수 있다. 예를 들어, 동작(40)에서 중단점의 설정을 나타내는 입력을 수신할 때, 디자인 환경(32)은 중단점을 동작(40)과 연관시킬 수 있다. 도 8은 동작 집합(38)의 특정 동작(40)과 연관된 일부 중단점(122)을 나타내고 있다. 디자인 환경(32)이 중단점과 연관된 리소스 스크립트(22)의 동작(40)의 실행을 감지하는 경우, 디자인 환경(32)은 리소스 스크립트(22)의 실행을 중단시킬 수 있다. 디자인 환경은 또한 발생된 중단점(122)과 연관된 리소스 스크립트(22)의 동작(40)에 대응하는 동작 집합(38)의 동작(40)을 디자이너에게 디스플레이할 수 있다. 더욱이, 리소스 스크립트(22)의 실행을 다시 시작하라고 요청하는 입력을 수신할 때, 디자인 환경(32)은 리소스 스크립트(22)의 실행을 다시 시작할 수 있다. 실행 중인 리소스 스크립트(22)에 적용될 수 있는 관련 디버깅 기법은, 리소스 스크립트(22)의 실행 동안에 또는 리소스 스크립트(22)의 실행이 중단점(122)에서 중단되었을 때, 리소스 스크립트(22)의 다양한 속성을 검사하는 것을 포함한다. 이들 시나리오에서, 도 8에 예시된 바와 같이, 디자인 환경(32)은 실행 중인 리소스 스크립트(22)의 속성[동작(40), 예를 들어, 발생된 중단점(122)과 연관된 동작(40)의 속성 등]의 선택을 나타내는 입력을 수신할 수 있다. 디자인 환경(32)은 실행 중인 리소스 스크립트(22)의 속성을 디스플레이하는 것으로 응답할 수 있으며, 그로써 디자이너가 실행 중인 리소스 스크립트(22)의 다양한 측면을 검사할 수 있게 된다. 당업자라면 본 명세서에서 논의된 기법에 따라 구현된 디자인 환경 내에서 실행 스크립트에 적용될 수 있는 많은 디버깅 기법을 포함할 수 있다.
발명 대상이 구조적 특징 및/또는 방법적 동작과 관련하여 기술되어 있지만, 첨부된 특허청구범위에 정의된 발명 대상이 이상에서 기술한 특정의 특징 또는 동작으로 반드시 제한되는 것은 아니라는 것을 잘 알 것이다. 오히려, 이상에서 기술한 특정의 특징 및 동작은 청구항을 구현하는 예시적인 형태로서 개시되어 있다.
본 출원에서 사용되는 바와 같이, 용어 "구성요소", "모듈", "시스템", "인터페이스", 기타는 일반적으로 컴퓨터-관련 엔터티(computer-related entity), 예를 들어, 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어를 말하기 위한 것이다. 예를 들어, 구성요소는 프로세서 상에서 실행 중인 프로세스, 프로세서, 개체, 실행 파일, 실행 스레드, 프로그램 및/또는 컴퓨터일 수 있지만, 이들로 제한되지 않는다. 예시로서, 제어기 상에서 실행 중인 응용 프로그램 및 그 제어기 둘다가 구성요소일 수 있다. 하나 이상의 구성요소가 프로세스 및/또는 실행 스레드 내에 존재할 수 있고, 구성요소가 하나의 컴퓨터 상에 로컬화되어 있을 수 있고 및/또는 2개 이상의 컴퓨터 간에 분산되어 있을 수 있다.
게다가, 청구된 발명 대상이 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 임의의 조합을 생성하는 표준의 프로그래밍 및/또는 엔지니어링 기법을 사용하여 컴퓨터를 제어해 개시된 발명 대상을 구현하는 방법, 장치, 또는 제조 물품으로서 구현될 수 있다. "제조 물품(article of manufacture)"이라는 용어는, 본 명세서에서 사용되는 바와 같이, 임의의 컴퓨터 판독가능 장치, 캐리어(carrier), 또는 매체로부터 액세스될 수 있는 컴퓨터 프로그램을 포괄하기 위한 것이다. 물론, 당업자라면 청구된 발명 대상의 범위 또는 사상을 벗어나지 않고 이 구성에 많은 수정이 행해질 수 있다는 것을 잘 알 것이다.
도 9 및 이하의 설명은 본 명세서에 기술된 발명 대상 중 하나 이상의 실시예를 구현하는 데 적합한 컴퓨팅 환경의 간략하고 개괄적인 설명을 제공한다. 도 9의 운영 환경은 적당한 운영 환경의 일례에 불과하며 이 운영 환경의 용도 또는 기능의 범위에 관한 어떤 제한을 암시하기 위한 것이 아니다. 예시적인 컴퓨팅 장치로는, 개인용 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩톱 장치, 모바일 장치[이동 전화, PDA(Personal Digital Assistant), 미디어 플레이어, 기타 등등], 멀티프로세서 시스템, 가전 제품, 미니 컴퓨터, 메인프레임 컴퓨터, 이상의 시스템 또는 장치 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 기타 등등이 있지만, 이들로 제한되지 않는다.
꼭 그럴 필요는 없지만, 실시예가 일반적으로 하나 이상의 컴퓨팅 장치에 의해 실행되는 "컴퓨터 판독가능 명령어"와 관련하여 기술되어 있다. 컴퓨터 판독가능 명령어가 컴퓨터 판독가능 매체(이하에서 기술함)를 통해 배포될 수 있다. 컴퓨터 판독가능 명령어는 특정의 작업을 수행하거나 특정의 추상 데이터 유형을 구현하는 함수, 개체, API(Application Programming Interface), 데이터 구조, 기타 등등의 프로그램 모듈로서 구현될 수 있다. 통상적으로, 컴퓨터 판독가능 명령어의 기능이 다양한 실시예에서 원하는 바에 따라 결합되거나 분산되어 있을 수 있다.
도 9는 본 명세서에 제공된 하나 이상의 실시예를 구현하도록 구성되어 있는 컴퓨팅 장치(132)를 포함하는 시스템(130)의 일례를 나타낸 것이다. 한 구성에서, 컴퓨팅 장치(132)는 적어도 하나의 처리 장치(136) 및 메모리(138)를 포함한다. 컴퓨팅 장치의 정확한 구성 및 유형에 따라, 메모리(138)는 휘발성(예를 들어, RAM 등), 비휘발성(예를 들어, ROM, 플래시 메모리, 기타 등등), 또는 이 둘의 어떤 조합일 수 있다. 이러한 구성이 도 9에서 파선(134)으로 나타내어져 있다.
다른 실시예에서, 장치(132)는 또한 부가의 특징 및/또는 기능을 포함할 수 있다. 예를 들어, 장치(132)는 또한 자기 저장 장치, 광 저장 장치, 기타(이들로 제한되지 않음)를 비롯한 부가의 저장 장치(예를 들어, 이동식 및/또는 비이동식)도 포함할 수 있다. 이러한 부가의 저장 장치가 도 9에서 저장 장치(140)로 도시되어 있다. 일 실시예에서, 본 명세서에 제공된 하나 이상의 실시예를 구현하는 컴퓨터 판독가능 명령어가 저장 장치(140)에 있을 수 있다. 저장 장치(140)는 또한 운영 체제, 응용 프로그램, 기타를 구현하는 다른 컴퓨터 판독가능 명령어도 저장할 수 있다. 컴퓨터 판독가능 명령어는, 예를 들어, 처리 장치(136)에서 실행하기 위해 메모리(138)에 로드될 수 있다.
"컴퓨터 판독가능 매체"라는 용어는 본 명세서에서 사용되는 바와 같이 컴퓨터 저장 매체를 포함한다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어 또는 기타 데이터 등의 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 메모리(138) 및 저장 장치(140)가 컴퓨터 저장 매체의 일례이다. 컴퓨터 저장 매체로는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(Digital Versatile Disk) 또는 기타 광 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 또 장치(132)에 의해 액세스될 수 있는 임의의 다른 매체가 있지만, 이들로 제한되지 않는다. 임의의 이러한 컴퓨터 저장 매체가 장치(132)의 일부일 수 있다.
장치(132)는 또한 장치(132)가 다른 장치와 통신을 할 수 있게 해주는 통신 연결(들)(146)도 포함할 수 있다. 통신 연결(들)(146)은 모뎀, NIC(Network Interface Card), 통합형 네트워크 인터페이스, 무선 주파수 송신기/수신기, 적외선 포트, USB 연결, 또는 컴퓨팅 장치(132)를 다른 컴퓨팅 장치에 연결시키는 기타 인터페이스를 포함할 수 있지만, 이들로 제한되지 않는다. 통신 연결(들)(146)은 유선 연결 또는 무선 연결을 포함할 수 있다. 통신 연결(들)(146)은 통신 미디어를 전송 및/또는 수신할 수 있다.
"컴퓨터 판독가능 매체"라는 용어는 통신 매체를 포함할 수 있다. 통신 매체는 일반적으로 컴퓨터 판독가능 명령어 또는 기타 데이터를 반송파 또는 기타 전송 메카니즘 등의 피변조 데이터 신호(modulated data signal)에 구현하고 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는 신호의 특성들 중 하나 이상이 정보를 그 신호에 인코딩하는 방식으로 설정 또는 변경된 신호를 포함할 수 있다.
장치(132)는 키보드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치, 적외선 카메라, 비디오 입력 장치, 및/또는 임의의 다른 입력 장치 등의 입력 장치(들)(144)를 포함할 수 있다. 하나 이상의 디스플레이, 스피커, 프린터, 및/또는 임의의 다른 출력 장치 등의 출력 장치(들)(142)도 역시 장치(132)에 포함되어 있을 수 있다. 입력 장치(들)(144) 및 출력 장치(들)(142)는 유선 연결, 무선 연결, 또는 이들의 임의의 조합을 통해 장치(132)에 연결될 수 있다. 일 실시예에서, 다른 컴퓨팅 장치로부터의 입력 장치 또는 출력 장치가 컴퓨팅 장치(132)의 입력 장치(들)(144) 또는 출력 장치(들)(142)로서 사용될 수 있다.
컴퓨팅 장치(132)의 구성요소는 버스 등의 다양한 상호연결부에 의해 연결될 수 있다. 이러한 상호연결부는 PCI Express 등의 PCI(Peripheral Component Interconnect), USB(Universal Serial Bus), 파이어와이어(IEEE 1394), 광 버스 구조, 기타를 포함할 수 있다. 다른 실시예에서, 컴퓨팅 장치(132)의 구성요소는 네트워크에 의해 상호연결될 수 있다. 예를 들어, 메모리(138)는 네트워크에 의해 상호연결된 서로 다른 실제 장소에 위치하는 다수의 실제 메모리 장치로 이루어져 있을 수 있다.
당업자라면 컴퓨터 판독가능 명령어를 저장하는 데 이용되는 저장 장치가 네트워크에 걸쳐 분산되어 있을 수 있다는 것을 잘 알 것이다. 예를 들어, 네트워크(148)를 통해 액세스할 수 있는 컴퓨팅 장치(150)는 본 명세서에 제공된 하나 이상의 실시예를 구현하는 컴퓨터 판독가능 명령어를 저장할 수 있다. 컴퓨팅 장치(132)는 컴퓨팅 장치(150)에 액세스하여 실행을 위한 컴퓨터 판독가능 명령어의 일부 또는 전부를 다운로드할 수 있다. 다른 대안으로서, 컴퓨팅 장치(132)는 필요에 따라 컴퓨터 판독가능 명령어의 일부를 다운로드할 수 있거나, 일부 명령어는 컴퓨팅 장치(132)에서 실행될 수 있고 일부 명령어는 컴퓨팅 장치(150)에서 실행될 수 있다.
실시예의 다양한 동작이 본 명세서에 제공되어 있다. 일 실시예에서, 기술된 동작들 중 하나 이상이 하나 이상의 컴퓨터 판독가능 매체 상에 저장된 컴퓨터 판독가능 명령어를 구성할 수 있으며, 이 명령어는, 컴퓨팅 장치에 의해 실행되는 경우, 컴퓨팅 장치로 하여금 개시된 동작을 수행하게 한다. 동작들 중 일부 또는 전부가 기술되어 있는 순서가 이러한 동작이 반드시 순서 의존적이어야 한다는 것을 의미하는 것으로 해석되어서는 안된다. 당업자라면 이 설명을 기초로 대안의 순서를 잘 알 것이다. 게다가, 동작들 모두가 반드시 본 명세서에 제공된 각각의 실시예에 존재해야 하는 것은 아니라는 것을 잘 알 것이다.
게다가, "예시적인"이라는 단어는 본 명세서에서 일례, 실례 또는 예시로서 역할한다는 것을 의미하기 위해 사용된다. 본 명세서에서 "예시적인" 것으로 기술된 임의의 측면 또는 설계가 꼭 다른 측면 또는 설계보다 장점이 있는 것으로 해석되어야 하는 것은 아니다. 오히려, "예시적인"이라는 단어의 사용은 개념을 구체적인 방식으로 제시하기 위한 것이다. 본 출원에서 사용되는 바와 같이, "또는"이라는 용어는 배타적인 "논리합"(exclusive "or")이라기 보다는 포함적인 "논리합"(inclusive "or")을 의미하기 위한 것이다. 즉, 달리 언급하지 않는 한 또는 문맥으로부터 명확하지 않는 한, "X가 A 또는 B를 이용한다"는 포함적인 자연 순열들(natural inclusive permutations) 중 어느 하나를 의미하기 위한 것이다. 즉, X가 A를 이용하는 경우, X가 B를 이용하는 경우, 또는 X가 A 및 B 둘다를 이용하는 경우, 이상의 경우들 중 어느 하나의 경우에서 "X가 A 또는 B를 이용한다"는 만족된다. 그에 부가하여, 본 출원 및 첨부된 특허청구범위에서 사용되는 단수 표현 "한" 및 "하나"는, 달리 언급하지 않는 한 또는 단수 형태에 관한 것이라고 문맥으로부터 명확하지 않는 한, 일반적으로 "하나 이상"을 의미하는 것으로 해석될 수 있다.
리소스 스크립트가 리소스 스크립트를 포함할 수 있다는 것을 잘 알 수 있다.
또한, 본 발명이 하나 이상의 구현과 관련하여 도시되고 기술되어 있지만, 본 명세서 및 첨부 도면을 읽고 이해하면 등가의 변경 및 수정이 당업자에게 안출될 것이다. 본 발명은 모든 이러한 수정 및 변경을 포함하며, 이하의 특허청구범위의 범위에 의해서만 제한된다. 상세하게는, 이상에서 기술한 구성요소(예를 들어, 요소, 리소스, 기타)에 의해 수행되는 다양한 기능과 관련하여, 이러한 구성요소를 기술하는 데 사용되는 용어가, 달리 언급하지 않는 한, 본 명세서에 설명된 본 발명의 예시적인 구현에서 기능을 수행하는 개시된 구조와 구조상으로 등가이지는 않지만, (예를 들어, 기능적으로 등가인) 기술된 구성요소의 지정된 기능을 수행하는 임의의 구성요소에 대응하는 것으로 보아야 한다. 그에 부가하여, 본 발명의 특정의 특징이 몇가지 구현들 중 단지 하나와 관련하여 개시되어 있을 수 있지만, 임의의 주어진 또는 특정의 응용에서 요망되고 유익할 수 있는 바와 같이, 이러한 특징이 다른 구현의 하나 이상의 다른 특징과 결합될 수 있다. 게다가, 용어 "포함한다", "갖는", "갖는다", "구비하는" 또는 이들의 변형이 상세한 설명이나 특허청구범위에서 사용되는 한, 이러한 용어가 용어 "포함하는"과 유사한 방식으로 포함적인 것으로 보아야 한다.

Claims (15)

  1. 프로토콜(14)에 따라 액세스될 수 있는 데이터 집합(20)에 적용가능한 리소스 스크립트(22)를 생성하는 방법(50)으로서,
    스크립트 언어에 대응하는 요소들을 포함하는 디자인 환경(32)을 디스플레이하는 단계(54) - 상기 요소들은, 상기 프로토콜(14)의 적어도 하나의 동사에 대응하는 적어도 하나의 데이터 집합 명령어, 및 상기 리소스 스크립트(22)의 실행 흐름을 변경하도록 구성된 적어도 하나의 흐름 제어 명령어를 포함함 -,
    상기 디자인 환경(32) 내에 동작 집합(38)의 동작들(40)을 디스플레이하는 단계(56),
    요소를 선택하는 입력을 수신할 때, 상기 요소에 대응하는 명령어를 지정하는 동작(40)을 상기 동작 집합(38)에 추가하는 단계(58), 및
    상기 리소스 스크립트(22)의 생성을 요청하는 입력을 수신할 때, 상기 리소스 스크립트(22)를 생성하는 단계(60)
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 데이터 집합은 호스트에 의해 호스팅되는 배포가능한 컴퓨팅 환경에서 표현되는 적어도 하나의 리소스를 포함하는 방법.
  3. 제1항에 있어서, 상기 동작 집합 내의 동작을 목적지 위치로 위치 변경하는 입력을 수신할 때, 상기 동작 집합 내의 동작을 위치 변경하는 단계를 포함하는 방법.
  4. 제1항에 있어서,
    상기 동작 집합 내의 동작을 선택하는 입력을 수신할 때, 상기 동작의 적어도 하나의 속성을 디스플레이하는 단계, 및
    상기 동작의 적어도 하나의 속성을 구성하는 입력을 수신할 때, 상기 동작의 적어도 하나의 속성을 구성하는 단계를 포함하는 방법.
  5. 제4항에 있어서, 상기 적어도 하나의 데이터 집합 명령어의 속성들은,
    상기 프로토콜의 동사를 상기 데이터 집합에 적용하라는 요청에 관계된 요청 속성, 및
    상기 동사를 상기 데이터 집합에 적용함으로써 생성되는 응답에 관계된 응답 속성을 포함하는 방법.
  6. 제4항에 있어서, 동작의 속성을 상기 리소스 스크립트를 실행하는 클라이언트의 측에 데이터 바인딩(data-binding)하는 입력을 수신할 때, 상기 클라이언트의 측에 데이터 바인딩하도록 상기 동작의 속성을 구성하는 단계를 포함하는 방법.
  7. 제1항에 있어서, 상기 스크립트 언어에 따라 상기 동작 집합의 동작의 유효성을 검사하는 단계를 포함하는 방법.
  8. 제7항에 있어서,
    상기 동작 집합의 동작들의 유효성을 검사할 때, 상기 디자인 환경 내에 유효한 동작 집합 표시기를 디스플레이하는 단계, 및
    상기 동작 집합의 적어도 하나의 유효하지 않은 동작의 유효성을 검사하는 데 실패할 때, 상기 디자인 환경 내에 상기 동작 집합의 적어도 하나의 유효하지 않은 동작에 대한 유효하지 않은 동작 표시기를 디스플레이하는 단계를 포함하는 방법.
  9. 제1항에 있어서, 유선 프로토콜에 따라 상기 리소스 스크립트의 발생을 요청하는 입력을 수신할 때, 상기 유선 프로토콜에 따라 상기 리소스 스크립트를 생성하는 단계를 포함하는 방법.
  10. 제1항에 있어서,
    상기 리소스 스크립트의 실행을 요청하는 입력을 수신할 때, 적어도 2개의 실행 컨텍스트를 제시하는 단계, 및
    선택된 실행 컨텍스트를 선택하는 입력을 수신할 때, 상기 선택된 실행 컨텍스트에 따라 스크립트 프로세서 상에서 상기 리소스 스크립트를 실행하는 단계를 포함하는 방법.
  11. 제10항에 있어서,
    상기 데이터 집합은 상기 프로토콜에 따라 호스트를 통해 액세스될 수 있고,
    상기 선택된 실행 컨텍스트는 로컬 실행 컨텍스트를 포함하며,
    상기 실행하는 단계는,
    각각의 데이터 집합 동작에 대해, 상기 프로토콜의 대응하는 동사를 호스트에게 발행하고,
    각각의 흐름 제어 동작에 대해, 상기 리소스 스크립트의 실행 흐름을 변경하도록 구성되어 있는 로컬 스크립트 프로세서 상에서 상기 리소스 스크립트를 실행하는 단계를 포함하는 방법.
  12. 제11항에 있어서,
    동작에 중단점을 설정하는 입력을 수신할 때, 중단점을 상기 동작과 연관시키는 단계,
    상기 중단점과 연관된 동작을 실행할 때,
    상기 리소스 스크립트의 실행을 중단하는(breaking) 단계, 및
    상기 리소스 스크립트의 실행을 다시 시작하라고 요청하는 입력을 수신할 때, 상기 리소스 스크립트의 실행을 다시 시작하는 단계를 포함하는 방법.
  13. 제12항에 있어서,
    상기 데이터 집합은 상기 프로토콜에 따라 호스트를 통해 액세스될 수 있고,
    상기 선택된 실행 컨텍스트는 호스트 실행 컨텍스트를 포함하며,
    상기 실행하는 단계는,
    호스트에 의해 지원되는 유선 프로토콜을 선택하는 단계,
    상기 유선 프로토콜에 따라 상기 리소스 스크립트를 직렬화하는(serializing) 단계, 및
    상기 유선 프로토콜에 따라 상기 직렬화된 리소스 스크립트를 호스트 상의 스크립트 프로세서로 전송하는 단계를 포함하는 방법.
  14. 프로토콜(14)에 따라 호스트(18)를 통해 액세스될 수 있는 데이터 집합(20)에 적용가능한 리소스 스크립트(22)를 생성하는 시스템(72)으로서,
    스크립트 언어에 대응하는 요소들을 포함하는 디자인 환경(32)을 디스플레이하도록 구성되어 있는 디자인 환경 디스플레이 구성요소(72) - 상기 요소들은, 상기 프로토콜(14)의 적어도 하나의 동사에 대응하는 적어도 하나의 데이터 집합 명령어, 및 상기 리소스 스크립트(22)의 실행 흐름을 변경하도록 구성된 적어도 하나의 흐름 제어 명령어를 포함함 -,
    상기 디자인 환경(32) 내에 동작 집합(38)의 동작들(40)을 디스플레이하도록 구성되어 있는 동작 집합 디스플레이 구성요소(76),
    상기 디자인 환경에서 적어도 하나의 요소의 선택을 수신할 때, 상기 요소에 대응하는 명령어를 상기 동작 집합(38)에 추가하도록 구성되어 있는 동작 집합 작성 구성요소(80),
    상기 동작 집합(38)을 저장하도록 구성되어 있는 동작 집합 저장 구성요소(76), 및
    상기 리소스 스크립트(22)를 생성하라는 요청을 수신할 때, 상기 리소스 스크립트(22)를 생성하도록 구성되어 있는 리소스 스크립트 생성 구성요소(82)
    를 포함하는 시스템.
  15. 제14항에 있어서,
    상기 리소스 스크립트의 실행을 요청하는 입력을 수신할 때, 적어도 2개의 실행 컨텍스트를 제시하고,
    선택된 실행 컨텍스트를 선택하는 입력을 수신할 때, 상기 선택된 실행 컨텍스트에 따라 스크립트 프로세서 상에서 상기 리소스 스크립트를 실행하도록 구성되어 있는 리소스 스크립트 실행 구성요소를 포함하는 시스템.
KR1020117008727A 2008-10-17 2009-10-16 리소스 지향 프로그램을 시각적으로 모델링, 디버깅 및 실행하는 대화형 디자인 환경 KR101635237B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/253,545 2008-10-17
US12/253,545 US8533666B2 (en) 2008-10-17 2008-10-17 Interactive design environments to visually model, debug and execute resource oriented programs

Publications (2)

Publication Number Publication Date
KR20110070982A true KR20110070982A (ko) 2011-06-27
KR101635237B1 KR101635237B1 (ko) 2016-06-30

Family

ID=42107277

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117008727A KR101635237B1 (ko) 2008-10-17 2009-10-16 리소스 지향 프로그램을 시각적으로 모델링, 디버깅 및 실행하는 대화형 디자인 환경

Country Status (5)

Country Link
US (1) US8533666B2 (ko)
EP (1) EP2340487A4 (ko)
KR (1) KR101635237B1 (ko)
CN (1) CN102187314B (ko)
WO (1) WO2010045569A2 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8776015B1 (en) * 2007-02-08 2014-07-08 The Mathworks, Inc. Pattern modeling methods and systems
US8954925B2 (en) * 2010-06-18 2015-02-10 Microsoft Technology Licensing, Llc User augmented reverse engineering
US9141403B2 (en) 2011-02-15 2015-09-22 Microsoft Technology Licensing, Llc Data-driven schema for describing and executing management tasks in a graphical user interface
US9529355B2 (en) 2011-11-11 2016-12-27 Rockwell Automation Technologies, Inc. Control environment change communication
CN103543684B (zh) * 2011-11-11 2017-10-24 洛克威尔自动控制技术股份有限公司 用于传达对象的状态信息的变化的方法和自动控制部件
US10417314B2 (en) * 2012-06-14 2019-09-17 Open Text Sa Ulc Systems and methods of a script generation engine
US9052891B2 (en) * 2013-05-14 2015-06-09 International Business Machines Corporation Declarative configuration and execution of card content management operations for trusted service manager
US10606569B2 (en) * 2013-06-02 2020-03-31 Microsoft Technology Licensing, Llc Declarative configuration elements
US9910640B2 (en) 2014-05-15 2018-03-06 International Business Machines Corporation Modeling representational state transfer application programming interfaces
US11188308B2 (en) * 2014-07-23 2021-11-30 Apple Inc. Interactive code editing
US10325002B2 (en) 2014-09-29 2019-06-18 Sap Se Web service framework
CN108282314B (zh) * 2017-01-06 2022-04-29 中兴通讯股份有限公司 资源指示方法、装置、基站及终端
US10466981B1 (en) * 2017-06-06 2019-11-05 Prattle Analytics, LLC System and method for generative programming in an integrated development environment (IDE)
KR102608500B1 (ko) * 2017-07-07 2023-12-04 엔체인 홀딩스 리미티드 블록체인 컴파일러
WO2020010554A1 (en) * 2018-07-11 2020-01-16 Accenture Global Solutions Limited Managing software components for software application development
CN110045962B (zh) * 2019-01-15 2022-08-30 创新先进技术有限公司 一种支持多语言脚本执行的方法和装置
US11356456B2 (en) * 2019-04-18 2022-06-07 Microsoft Technology Licensing, Llc Multi-participant and cross-environment pipelines
CN111796811B (zh) * 2020-07-08 2021-07-30 上海富数科技有限公司 联邦学习中实现支持断点调试的流控制引擎系统
CN114676418B (zh) * 2022-05-27 2022-09-02 太平金融科技服务(上海)有限公司深圳分公司 操作请求处理方法、装置、设备、存储介质和程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5369570A (en) * 1991-11-14 1994-11-29 Parad; Harvey A. Method and system for continuous integrated resource management
US5564044A (en) * 1994-04-15 1996-10-08 Wang Laboratories, Inc. Integration of result data from first program operations on dynamic source data into data of a second program
US6668354B1 (en) * 1999-01-05 2003-12-23 International Business Machines Corporation Automatic display script and style sheet generation
US20070226259A1 (en) * 2006-03-21 2007-09-27 Marty Kacin IT Automation Scripting Module And Appliance

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL111154A0 (en) 1993-10-21 1994-12-29 Martino Ii John A Systems and methods for electronic messaging
US5640572A (en) 1994-05-04 1997-06-17 National Instruments Corporation System and method for mapping driver level event function calls from a process-based driver level program to a session-based instrumentation control driver level system
US5862379A (en) * 1995-03-07 1999-01-19 International Business Machines Corporation Visual programming tool for developing software applications
FR2755268B1 (fr) * 1996-10-31 1998-11-27 Bull Sa Outil d'integration d'applications pour plate-forme informatique
US7080036B1 (en) * 1996-11-27 2006-07-18 Diebold, Incorporated Automated banking machine development method
US5991802A (en) 1996-11-27 1999-11-23 Microsoft Corporation Method and system for invoking methods of objects over the internet
US5826239A (en) 1996-12-17 1998-10-20 Hewlett-Packard Company Distributed workflow resource management system and method
US6134559A (en) 1998-04-27 2000-10-17 Oracle Corporation Uniform object model having methods and additional features for integrating objects defined by different foreign object type systems into a single type system
US7035943B2 (en) * 1998-05-29 2006-04-25 Yahoo! Inc. Web server content replication
US6178546B1 (en) * 1998-08-31 2001-01-23 Alcatel Usa Sourcing, L.P. System and method of making software product deliverables
US6560777B2 (en) 1999-04-07 2003-05-06 Webtv Networks, Inc. Broadcast enhancement trigger addressed to multiple uniquely addressed information resources
US6910068B2 (en) 1999-06-11 2005-06-21 Microsoft Corporation XML-based template language for devices and services
US7181438B1 (en) 1999-07-21 2007-02-20 Alberti Anemometer, Llc Database access system
US6629127B1 (en) 1999-07-26 2003-09-30 Microsoft Corporation Methods and systems for processing HTTP requests
US6654950B1 (en) * 1999-08-24 2003-11-25 Bae Systems Mission Solutions Inc. Software rehosting system and method
US6601234B1 (en) * 1999-08-31 2003-07-29 Accenture Llp Attribute dictionary in a business logic services environment
US7289964B1 (en) 1999-08-31 2007-10-30 Accenture Llp System and method for transaction services patterns in a netcentric environment
US20010047394A1 (en) 1999-09-10 2001-11-29 Kloba David D. System, method, and computer program product for executing scripts on mobile devices
US7191397B2 (en) 1999-09-20 2007-03-13 Dell Products L.P. XML server pages language
US20030110096A1 (en) 1999-10-28 2003-06-12 Naiem Dathi Method, system, and apparatus for executing open services
US7073126B1 (en) * 1999-11-18 2006-07-04 Instaknow.Com Inc. Method and system of deploying server-based applications
US6775658B1 (en) 1999-12-21 2004-08-10 Mci, Inc. Notification by business rule trigger control
CA2808275C (en) 2000-06-22 2016-11-15 Microsoft Corporation Distributed computing services platform
US7237034B2 (en) 2000-09-18 2007-06-26 Openwave Systems Inc. Method and apparatus for controlling network traffic
US7017162B2 (en) 2001-07-10 2006-03-21 Microsoft Corporation Application program interface for network software platform
US7194473B1 (en) 2002-02-15 2007-03-20 Oracle International Corporation Application platform development environment
US20030163567A1 (en) 2002-02-28 2003-08-28 Mcmorris Patrick Domain name validation using mapping table
US20030182157A1 (en) 2002-03-25 2003-09-25 Valk Jeffrey W. System architecture for information management system
US20040027379A1 (en) 2002-08-08 2004-02-12 Hong Huey Anna Onon Integrated visual development system for creating computer-implemented dialog scripts
US7171650B2 (en) 2002-08-23 2007-01-30 Sbc Properties, L.P. System and method for integrating resources in a network
US8108488B2 (en) 2002-11-18 2012-01-31 Jackbe Corporation System and method for reducing bandwidth requirements for remote applications by utilizing client processing power
JP3494376B1 (ja) 2002-12-05 2004-02-09 株式会社システムズ プログラム解析装置およびプログラム
US7610575B2 (en) * 2003-01-08 2009-10-27 Consona Crm Inc. System and method for the composition, generation, integration and execution of business processes over a network
US7607098B2 (en) * 2003-03-14 2009-10-20 Waters Investments Limited System and method for dynamically controlling operation of rheometric instruments
US7194733B2 (en) 2003-06-11 2007-03-20 Microsoft Corporation Transformation of an asynchronous transactional messaging language into a web services compatible language
US7765523B2 (en) * 2003-07-10 2010-07-27 Computer Associates Think, Inc. System and method for generating a web-enabled graphical user interface plug-in
DE102004043788A1 (de) * 2003-09-11 2005-04-14 Ingo Franz Programm Generator
US7779356B2 (en) 2003-11-26 2010-08-17 Griesmer James P Enhanced data tip system and method
US7444314B2 (en) * 2003-12-01 2008-10-28 International Business Machines Corporation Methods and apparatus for business rules authoring and operation employing a customizable vocabulary
US8381207B2 (en) * 2003-12-02 2013-02-19 International Business Machines Corporation Script generation engine and mapping semantic models for target platform
US7313784B2 (en) * 2003-12-09 2007-12-25 International Business Machines Corporation Language independent code assist user preferences configuration method, system, article of manufacture, and computer program product
US7562343B2 (en) * 2003-12-09 2009-07-14 International Business Machines Corporation User configurable language independent code assist engine method, system, article of manufacture, and computer program product
US20050138137A1 (en) 2003-12-19 2005-06-23 Microsoft Corporation Using parameterized URLs for retrieving resource content items
US7519960B2 (en) * 2003-12-19 2009-04-14 International Business Machines Corporation Method and system for debugging business process flow
US7581212B2 (en) * 2004-01-13 2009-08-25 Symphony Services Corp. Method and system for conversion of automation test scripts into abstract test case representation with persistence
US7392509B2 (en) * 2004-04-13 2008-06-24 University Of Maryland Method for domain specific test design automation
US7650432B2 (en) 2004-05-20 2010-01-19 Bea Systems, Inc. Occasionally-connected application server
US7441188B1 (en) 2004-08-04 2008-10-21 Sprint Communications Company L.P. Web construction framework presentation tier
US7561673B2 (en) 2004-09-30 2009-07-14 Microsoft Corporation Integration of speech services with telecommunications
CN1755722A (zh) * 2004-10-01 2006-04-05 微软公司 可扩展工作流模型的声明性表示
US7631291B2 (en) * 2004-10-01 2009-12-08 Microsoft Corporation Declarative representation for an extensible workflow model
US7574692B2 (en) * 2004-11-19 2009-08-11 Adrian Herscu Method for building component-software for execution in a standards-compliant programming environment
US20070050446A1 (en) 2005-02-01 2007-03-01 Moore James F Managing network-accessible resources
US20060288332A1 (en) * 2005-06-21 2006-12-21 Microsoft Corporation Workflow debugger
US7950008B2 (en) 2005-07-06 2011-05-24 International Business Machines Corporation Software installation in multiple operating systems
US7600030B2 (en) 2005-08-31 2009-10-06 Microsoft Corporation Compounding of HTTP authoring protocol
US7721259B2 (en) 2005-11-15 2010-05-18 Oracle International Corporation Configurable and customizable software application system and metadata
US7661090B2 (en) * 2006-01-11 2010-02-09 Dell Products L.P. Task generation runtime engine
US7587450B2 (en) 2006-02-01 2009-09-08 Swift Creek Systems, Llc HTTP publish/subscribe communication protocol
US8095416B2 (en) 2006-03-21 2012-01-10 International Business Machines Corporation Method, system, and computer program product for the dynamic generation of business intelligence alert triggers
US8069439B2 (en) * 2006-03-30 2011-11-29 Microsoft Corporation Framework for modeling continuations in workflows
WO2009082379A2 (en) * 2006-11-27 2009-07-02 Sourcecode Technology Holding, Inc. Methods and apparatus for debugging a workflow process
US20080201338A1 (en) 2007-02-16 2008-08-21 Microsoft Corporation Rest for entities
CN101663640A (zh) * 2007-06-27 2010-03-03 国际商业机器公司 提供合成显示的系统和方法
US9071623B2 (en) 2007-09-28 2015-06-30 Xcerion Aktiebolag Real-time data sharing
US8060866B2 (en) * 2007-10-19 2011-11-15 GE Intelligent Platforms, Inc Systems and methods for debugging multiple workflow instances
US9122422B2 (en) 2008-01-17 2015-09-01 International Business Machines Corporation Representing models in systems development lifecycle (SDLC) tools using a network of internet resources
US20090249695A1 (en) 2008-04-04 2009-10-08 Material Sciences Corporation Damp rail assembly for garage door opening systems
US20090254881A1 (en) 2008-04-04 2009-10-08 Microsoft Corporation Code generation techniques for administrative tasks
US8291373B2 (en) * 2008-08-13 2012-10-16 Hewlett-Packard Development Company, L.P. Generating LoadRunner scripts
US9049182B2 (en) * 2009-08-11 2015-06-02 Novell, Inc. Techniques for virtual representational state transfer (REST) interfaces

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5369570A (en) * 1991-11-14 1994-11-29 Parad; Harvey A. Method and system for continuous integrated resource management
US5564044A (en) * 1994-04-15 1996-10-08 Wang Laboratories, Inc. Integration of result data from first program operations on dynamic source data into data of a second program
US6668354B1 (en) * 1999-01-05 2003-12-23 International Business Machines Corporation Automatic display script and style sheet generation
US20070226259A1 (en) * 2006-03-21 2007-09-27 Marty Kacin IT Automation Scripting Module And Appliance

Also Published As

Publication number Publication date
CN102187314B (zh) 2014-08-13
EP2340487A2 (en) 2011-07-06
WO2010045569A2 (en) 2010-04-22
EP2340487A4 (en) 2016-06-22
US20100100868A1 (en) 2010-04-22
WO2010045569A3 (en) 2010-08-05
KR101635237B1 (ko) 2016-06-30
US8533666B2 (en) 2013-09-10
CN102187314A (zh) 2011-09-14

Similar Documents

Publication Publication Date Title
KR101635237B1 (ko) 리소스 지향 프로그램을 시각적으로 모델링, 디버깅 및 실행하는 대화형 디자인 환경
US11561846B2 (en) API notebook tool
US10546035B2 (en) System and method for data-driven web page navigation control
US8490052B2 (en) Declarative programming model for authoring and execution control and data flow for resource oriented system
US11797273B2 (en) System and method for enhancing component based development models with auto-wiring
US20170075659A1 (en) Web application development platform with relationship modeling
EP2718839A2 (en) Automated user interface object transformation and code generation
AU2012271774A1 (en) Automated user interface object transformation and code generation
JP2014512037A (ja) アプリケーションプログラムの状態モデルを提供するための方法およびシステム
US11902391B2 (en) Action flow fragment management
US20180173520A1 (en) Transactional distributed data analysis and transformation
EP2951678B1 (en) Remotely executing operations of an application using a schema that provides for executable scripts in a nodal hierarchy
Cimino et al. An efficient model-based methodology for developing device-independent mobile applications
US20110246559A1 (en) Four tier architecture for implementing thin clients
Ragupathi Learning ASP. NET Core MVC Programming
Joshi et al. Blazor
WO2024118206A1 (en) Graphical user interface and flexible architecture for a rule engine
Pareja-Lecaros Adaptive Graphical User Interfaces for Custom-Tailored Applications
Schaefer et al. Introducing Spring

Legal Events

Date Code Title Description
A201 Request for examination
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
FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 4