KR20090040840A - 분산 컴퓨팅 기반 구조를 통해 센서 및 액튜에이터 애플리케이션을 개발, 배치하기 위한 시스템 및 방법 - Google Patents

분산 컴퓨팅 기반 구조를 통해 센서 및 액튜에이터 애플리케이션을 개발, 배치하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20090040840A
KR20090040840A KR1020080097701A KR20080097701A KR20090040840A KR 20090040840 A KR20090040840 A KR 20090040840A KR 1020080097701 A KR1020080097701 A KR 1020080097701A KR 20080097701 A KR20080097701 A KR 20080097701A KR 20090040840 A KR20090040840 A KR 20090040840A
Authority
KR
South Korea
Prior art keywords
event
component model
modeling
unit
zero
Prior art date
Application number
KR1020080097701A
Other languages
English (en)
Other versions
KR101019228B1 (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 KR20090040840A publication Critical patent/KR20090040840A/ko
Application granted granted Critical
Publication of KR101019228B1 publication Critical patent/KR101019228B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • G06F30/15Vehicle, aircraft or watercraft design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven

Abstract

본 발명은, 제한을 두려는 것은 아니지만 센서, 액튜에이터, 또는 양자 모두를 포함하는 컴퓨터 시스템을 비롯한 컴퓨터 시스템의 0 이상의 모델링, 0 이상의 구현, 및 0 이상의 배치를 조정하는 방법, 및 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 위한 보조 시스템을 개시한다. 상기 방법 및 시스템은, 하나 이상의 컴포넌트의 하나 이상의 인터페이스를 정의하는 단계; 하나 이상의 컴포넌트를 위한 모델을 생성하는 단계로서, 상기 모델 각각은 복합(composite) 컴포넌트 모델 또는 단위(atomic) 컴포넌트 모델 중 하나인 것인, 모델 생성 단계; 복합 컴포넌트 모델의 인스턴스(instance)로서 하나 이상의 복합 컴포넌트를 생성하는 단계; 단위 컴포넌트 모델의 인스턴스로서 하나 이상의 단위 컴포넌트를 생성하는 단계; 컴퓨터 리소스를 지정함으로써 도메인 모델을 생성하는 단계; 하나 이상의 컴포넌트 모델 인스턴스를 지정하고, 도메인 모델의 어느 컴퓨터 리소스 상에 어느 컴포넌트 모델 인스턴스가 실행되어야 하는지를 지정함으로써 배치 모델을 생성하는 단계를 포함한다.
Figure P1020080097701
복합 컴포넌트, 단위 컴포넌트, 모델링, 서브컴포넌트

Description

분산 컴퓨팅 기반 구조를 통해 센서 및 액튜에이터 애플리케이션을 개발, 배치하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR DEVELOPING AND DEPLOYING SENSOR AND ACTUATOR APPLICATIONS OVER DISTRIBUTED COMPUTING INFRASTRUCTURE}
본 발명은 일반적으로 프로세스를 모니터링 및 제어하기 위한 센서 및 액튜에이터 시스템에 관한 것으로서, 더 상세하게는 센서 및 액튜에이터의 컴퓨터 시스템을 모델링, 구현, 및 배치하는 시스템 및 방법에 관한 것이다.
센서 및 액튜에이터는 오랫동안 산업 애플리케이션을 위해 중요한 역할을 해왔다. 예를 들어, 제조 프로세스-제어 프로그램은 화학 공정 또는 야금 공정의 현상태를 판단하기 위한 온도, 압력, 및 산도 센서들, 및 그러한 공정을 제어하기 위한 밸브, 히터, 및 냉각기와 같은 액튜에이터를 이용할 수 있다. 다른 예에서, 자동화된 어셈블리 라인은 제조 동작을 실행시키기 위해 로봇 액튜에이터들을 안내하는 광센서 및 촉각-압력 센서를 배치할 수 있다. 이와 같은 애플리케이션들은 통상적으로 자신의 특정 동작들을 가능하게 하도록 최적화되는 완비형 애플리케이션이다.
더 최근에는, RFID(Radio Frequency Identification) 기술을 이용하여, 안전 및 보안 정책을 강화하거나 또는 장치 이용을 향상시킬 목적으로 생산 환경의 개체 및 물리적 자산들이 실시간으로 식별되고 추적될 수 있다. 예를 들어, 재고품을 줄이고 재고 고갈(stock-out)을 피함으로써 공급 체인 효율을 향상시키기 위하여, RFID가 가능한(RFID-enabled) 공급 체인의 소매상은 현재 독도어(dock door), 백룸(back room), 진열 선반에서 캡쳐링된 재고목록과 제품 수요 데이터, 및 판매 시점(point of sale)을 상향식 공급자에게 적시에 제공할 수 있다. RFID의 광범위한 채택은 여전히 진행중이지만, 비지니스 수행에 대한 RFID의 잠재적 이득은, 이미 얼리 어댑터들이 그들의 비지니스 프로세스의 통합 부분으로서 센서/액튜에이터 애플리케이션을 병합하도록 촉진하고 있다. 개인 비지니스 운영을 가능하게 하고 강화하는 것 외에도, 센서/액튜에이터 애플리케이션들은 물리 세계 및 비지니스 프로세스의 이벤트와 동작 사이에 다리를 제공한다.
그러나, 종래의 비지니스 및 산업 운영은, 센서 또는 액튜에이터들을 배치하는 애플리케이션의 라이프사이클 지원에 관한 도전 과제들을 다루는 통합 애플리케이션의 개발 및 실행 환경을 제공하지 않는다. 종래 기술에서 다루지 않는 일부 도전 과제들로는, 스케일러블 이볼루션(scalable evolution), 분산 토폴로지에 대한 융통성 있는 결정, 및 다양한 환경에서 애플리케이션이 처리해야 하는 광범위한 관심 분야가 있다. 상술한 바와 같이, RFID와 같은 기술의 광범위한 채택은 진행중이며, 임의의 새로운 기술이 출현하면, 비지니스 프로세스의 센서/액튜에이터 애플리케이션의 채택은 통상적으로 통합 스케일 및 복잡도면에서 진보된다. 예를 들어, 기술의 채택은, 단절된 입증 실험 개념(proof-of-concept)의 애플리케이션의 원형으로 시작되어, 엔터프라이즈 시스템의 풀 스케일로 완전히 통합된 컴포넌트로 발전할 수 있다. 따라서, 기술 채택 주기는 수개월에서부터 애플리케이션이 연관 기술 및 프로세스에서의 변화, 지원 네트워크 및 컴퓨팅 기능에서의 변화, 및 비지니스 운영의 특징 및 스케일에서의 변화를 겪게 되는 수년에 이르는 기간까지 확장될 수 있다. 그러므로, 센서 또는 액튜에이터를 포함하는 애플리케이션의 라이프사이클 지원에 관한 도전 과제를 다루는 통합 애플리케이션의 개발 및 실행 환경에 대한 필요성이 존재한다.
통합 애플리케이션의 개발 및 실행 환경을 제공하데 있어서의 또 다른 도전 과제는, 센서 및 액튜에이터가 물리 세계와 사이버 공간 사이의 인터페이스로서 동 작하는 인터넷과 센서 및 액튜에이터를 상호접속시키는 것이다. 이상적으로, 센서 및 액튜에이터의 배치는, 물리적 이벤트가 발생하고 동작이 행해지는 위치에서의 배치를 포함할 것이다. 센서 및 액튜에이터의 지리적으로 분산된 특징은 종래 기술에서 다양한 시스템-토폴로지 선택을 가능하게 한다. 예를 들어, 정보 처리 또는 의사 결정(decision making)을 네트워크 에지에 가까운 곳에 배치하는 것은, 엔터프라이즈 기반 구조에 대한 더 나은 응답성 및 감소된 의존성을 가져온다. 대조적으로, 집중화된 접근 방법은 엔터프라이즈 레벨에서 관리되는 데이터 센터의 풀링된 리소스를 레버리징(leveraging) 함으로써 원격 장치의 배치 및 관리 비용을 최소화한다. 중간 정도의 접근 방법은, IT 지원은 가능 하지만 온사이트 IT 지원 없은 소형 운영을 위해 데이터 센터 기능을 이용하는 대형 설비에 컴퓨팅 기능을 배치하는 것을 수반한다. 따라서, 엔터프라이즈가 성장하고 다른 선택들이 적합해지면서 애플리케이션을 적절하게 채택할 필요가 있다.
통합 애플리케이션의 개발 및 실행 환경을 제공하는데 있어서의 일부 다른 도전 과제들은, 통상적인 센서/액튜에이터 애플리케이션에서 이용되는 종래의 애플리케이션 로직의 복잡도에 관계 있다. 통상적인 센서/액튜에이터 애플리케이션에 대해서, 프로그래머, 개발자, 및 구현자들은, 애플리케이션이 동작하는 물리적 환경과의 상호작용, 애플리케이션이 지원하는 비지니스 프로세스와의 상호작용, 비지니스 프로세스가 동작할 수 있는 비지니스-레벨 이벤트로의 센서 관측의 변환, 및 액튜에이터에 대한 실행 가능한 명령어로의 물리적-프로세스-관리 및 비지니스-레벨-결정 양자 모두의 처리를 포함하는 많은 관심사항을 갖고 있다. 개발자들은 많 은 수의 프로그래밍 모델 및 구현 선택에 직면하고 있고, 이들 각각은 애플리케이션의 특정 양태를 다룬다. 개발자들이 풀어야할 문제는, 애플리케이션이 실행될 수 있는 잠재적으로 다른 종류의 분산 컴퓨팅 플랫폼에 의해 악화된다. 단일화된 프로그래밍 모델 및 도구 지원의 부족은, 센서/액튜에이터 애플리케이션 개발에 대한 가파른 학습 곡선 및 통합 복잡도를 야기한다. 따라서, 센서 및 액튜에이터 애플리케이션 개발을 위해 단일화된 프로그래밍 모델 및 도구 지원이 필요하다.
상술한 종래 기술의 한계점으로 인하여, 센서 또는 액튜에이터를 이용하는 애플리케이션의 라이프사이클 지원에 관한 종래 기술의 상술한 도전 과제들을 극복하기 위하여, 센서 및 액튜에이터의 컴퓨터 시스템을 모델링, 구현, 및 배치하는 시스템 및 방법이 요구된다는 것은 자명하다.
이 때문에, 본 발명은 제한을 두려는 것은 아니지만 센서, 액튜에이터, 또는 양자 모두를 포함하는 컴퓨터 시스템을 비롯한 컴퓨터 시스템의 컴퓨터 리소스를 모델링, 구현, 및 배치하는 것을 조정하는 방법, 및 제한을 두려는 것은 아니지만 센서, 액튜에이터 또는 양자 모두를 포함하는 컴퓨터 시스템을 비롯한 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 보조하는 방법을 포함한다.
본 발명의 일 양태에서, 라이프사이클 지원을 제공하는 컴퓨터 시스템의 컴퓨터 리소스를 모델링, 구현, 및 배치하는 것을 조정하는 방법이 제공되는데, 이 방법은, (i) 이벤트 스트림을 소모하거나, 또는 이벤트 스트림을 생성하거나, 또는 양자 모두를 수행하는 하나 이상의 컴포넌트의 하나 이상의 인터페이스를 정의하는 단계로서, 상기 하나 이상의 인터페이스 각각은, 각각 이름 및 타입을 갖는 하나 이상의 입력 포트, 각각 이름 및 타입을 갖는 하나 이상의 출력 포트, 및 각각 이름 및 타입을 갖는 하나 이상의 파라미터를 포함하는 것인, 하나 이상의 인터페이스 정의 단계; (ii) 복합 컴포넌트 모델 또는 단위 컴포넌트 모델 중 하나로서 상기 하나 이상의 컴포넌트를 모델링하는 단계로서, 상기 하나 이상의 모델링된 컴포넌트 각각은 상기 하나 이상의 정의된 인터페이스를 따르는 것인, 하나 이상의 컴포넌트 모델링 단계; (iii) 상기 복합 컴포넌트 모델 또는 단위 컴포넌트 모델의 인스턴스로서 하나 이상의 복합 컴포넌트 및 하나 이상의 단위 컴포넌트의 인스턴스를 각각 형성하는 단계; (iv) 목표 실행 환경으로서 컴퓨터 리소스를 지정함으로써 도메인 모델을 생성하는 단계로서, 상기 도메인 모델은 하나 이상의 명명된 엔티티들의 계층으로 상기 컴퓨터 리소스들을 조직화하도록 구성되는 것인, 도메인 모델 생성 단계; 및 (v) 하나 이상의 복합 컴포넌트 모델 인스턴스, 하나 이상의 단위 컴포넌트 모델 인스턴스, 또는 양자 모두를 지정하고, 도메인 모델의 어느 컴퓨터 리소스 상에 하나 이상의 복합 컴포넌트 모델 인스턴스와 하나 이상의 단위 컴포넌트 모델 인스턴스 중 어느 것이 실행되어야 하는지를 지정함으로써 배치 모델을 생성하는 단계를 포함한다.
본 발명의 다른 양태에서, 복합 컴포넌트 모델 또는 단위 컴포넌트 모델 중 하나로서 하나 이상의 컴포넌트를 모델링하는 단계는, 설계의 일부분인 하나 이상의 서브컴포넌트에 대해 하나 이상의 컴포넌트 인터페이스를 지정하고, 소스로부터 나오는 이벤트가 목적지로 진행되어야 함을 표시하기 위하여, 복합 컴포넌트의 인 터페이스의 입력 포트 또는 서브컴포넌트 인터페이스의 출력 포트 중 하나인 하나 이상의 이벤트 소스를 서브컴포넌트의 인터페이스의 입력 포트 또는 복합 컴포넌트 인터페이스의 출력 포트 중 하나인 이벤트 목적지와 연관시킴으로써 복합 컴포넌트 모델을 모델링하는 단계; 및 하나 이상의 정의된 인터페이스의 입력 포트에 도달하는 하나 이상의 이벤트에 응답하기 위한 규칙을 지정함으로써 단위 컴포넌트 모델을 모델링하는 단계를 더 포함한다.
본 발명의 또 다른 양태에서, 복합 컴포넌트 모델 또는 단위 컴포넌트 모델의 인스턴스로서 하나 이상의 복합 컴포넌트를 생성하는 단계는, 하나 이상의 복합 컴포넌트 모델에 지정된 하나 이상의 컴포넌트 인터페이스를 하나 이상의 실제 컴포넌트에 바인딩하고, 복합 컴포넌트 모델에 의해 구현된 하나 이상의 인터페이스의 파라미터로서 하나 이상의 값들을 지정함으로써 복합 컴포넌트 모델의 인스턴스로서 하나 이상의 복합 컴포넌트를 생성하는 단계; 및 단위 컴포넌트의 동작을 더 결정하기 위하여 하나 이상의 알고리즘을 정의하고, 단위 컴포넌트 모델이 따르는 하나 이상의 인터페이스의 파라미터에 대해 하나 이상의 값들을 지정함으로써 단위 컴포넌트 모델의 인스턴스로서 하나 이상의 단위 컴포넌트를 생성하는 단계를 더 포함한다.
본 발명의 추가 양태에서, 하나 이상의 정의된 인터페이스의 입력 포트에 도달하는 하나 이상의 이벤트에 응답하기 위한 규칙을 지정하는 단계는, 입력 이벤트가 세트의 모든 입력 포트에 도달했을 때, 인터페이스의 입력 포트들의 서로소 집합(disjoint set)에 대해, 호출될 메소드의 이름을 지정하는 단계를 수반한다.
본 발명의 추가 양태에서, 하나 이상의 정의된 인터페이스의 입력 포트에 도달하는 하나 이상의 이벤트에 응답하기 위한 규칙을 지정하는 단계는, 들어오는(incoming) 이벤트 스트림에 대해 매치될 인터리브(interleaved) 동작을 갖는 정규 표현(regular expression)을 지정하는 단계를 수반하는데, 정규 표현의 각각의 알파벳 기호는 인터페이스의 상이한 입력 포트에 도달하는 이벤트와 매치되고, 인터리브 동작은 인터페이스의 지정된 출력 포트에서의 이벤트 방출(emitting)을 포함할 수 있다.
본 발명의 추가 양태에서, 복합 컴포넌트 모델을 하나 이상의 정의된 인터페이스를 따르도록 모델링하는 단계는, 도달하는 이벤트에 응답하여 다양한 상태로의 변화(transition)를 실행하는 유한 상태 기계(finite-state machine)를 지정하는 단계를 더 포함하고, 상기 상태는 어느 서브컴포넌트와 이벤트 소스/이벤트 목적지 연관이 현재 활성인지를 판단한다.
본 발명의 또 다른 양태에서, 복합 컴포넌트 모델은, 정의된 이벤트 소스와 정의된 이벤트 소스의 연관된 이벤트 목적지 사이의 모든 이벤트들에 적용될 변환을 더 포함한다.
본 발명의 추가 양태에서, 하나 이상의 복합 컴포넌트 모델 또는 단위 컴포넌트 모델 중 0개 이상은 그래픽 사용자 인터페이스(GUI)의 부분들을 나타내고, 하나 이상의 복합 컴포넌트 모델은 그래픽 사용자 인터페이스의 각각의 페이지에 대해 하나의 서브컴포넌트를 포함하며, 하나 이상의 정의된 인터페이스를 따르는 복합 컴포넌트 모델을 생성하는 단계는, 도달하는 이벤트에 응답하여 다양한 상태로 의 변화를 실행하는 유한 상태 기계를 지정하는 단계를 더 포함하고, 상기 서브컴포넌트들 중 적어도 하나는 임의의 때에 활성화될 유한 상태 기계의 상태에 의해 결정되며, 유한 상태 기계의 변화는 그래픽 사용자 인터페이스의 페이지들 중에서 그래픽 사용자 인터페이스의 사용자 네비게이션에 대응한다.
본 발명의 또 다른 목적, 즉 청구항 제9항에서, 라이프사이클 지원을 제공하는 컴퓨터 시스템의 컴퓨터 리소스를 모델링, 구현, 및 배치하는 것을 조정하기 위해 설계자, 구현자, 및 배치자를 위한 보조 시스템이 제공되는데, 이 시스템은, 분산 시스템의 하나 이상의 물리적 노드상에서 실행되는 하나 이상의 런타임 플랫폼; 시스템의 일부가 아닌 하나 이상의 외부 런타임 플랫폼을 식별하는 하나 이상의 런타임 식별자 유닛; 컴퓨터 시스템의 설계자, 구현자, 및 배치자가, 인스턴스 생성 유닛에 의해 하나 이상의 컴포넌트에 대해 하나 이상의 인터페이스를 정의하는 단계로서, 상기 하나 이상의 컴포넌트 각각은 이벤트 스트림을 소모하거나, 이벤트 스트림을 생성하거나, 또는 양자 모두를 수행하고, 상기 하나 이상의 인터페이스 각각은 각각 이름 및 타입을 갖는 0개 이상의 입력 포트, 각각 이름 및 타입을 갖는 0개 이상의 출력 포트, 및 각각 이름 및 타입을 갖는 0개 이상의 파라미터를 포함하는 것인, 하나 이상의 인터페이스 정의 단계, 모델링 유닛에 의해, 복합 컴포넌트 모델 또는 단위 컴포넌트 모델 중 하나로서 하나 이상의 컴포넌트를 모델링하는 단계, 복합 및 단위 모델링 유닛에 의해, 복합 컴포넌트 모델 또는 단위 컴포넌트 모델의 인스턴스로서 하나 이상의 복합 컴포넌트 및 단위 컴포넌트 모델의 인스턴스를 각각 형성하는 단계; 도메인 모델링 유닛에 의해, 컴퓨터 시스템의 컴퓨터 리소스의 도메인 모델을 생성하는 단계, 배치 모델링 유닛에 의해, 하나 이상의 런타임 플랫폼 상에서 실행될 도메인 모델의 인스턴스로서 복합 컴포넌트 모델, 단위 컴포넌트 모델, 또는 양자 모두를 지정하고, 하나 이상의 런타임 플랫폼 각각에 IP 주소 및 포트 넘버를 할당함으로써 배치 모델을 생성하는 단계를 수행하도록 허용하는 하나 이상의 도구 유닛; 및 복합 컴포넌트 또는 단위 컴포넌트 모델로부터 실행 가능한 프로그램 코드를 하이레벨 언어의 소스 코드 형태로 발생시키는 하나 이상의 코드 발생기를 포함한다.
본 발명의 또 다른 양태에서, 복합 컴포넌트 모델 또는 단위 컴포넌트 모델 중 하나로서 하나 이상의 컴포넌트를 모델링하는 단계는, 설계의 일부인 하나 이상의 서브컴포넌트에 대해 하나 이상의 컴포넌트 인터페이스를 지정하고, 소스로부터 나오는 이벤트가 목적지로 진행되어야 한다는 것을 표시하기 위해, 복합 컴포넌트의 인터페이스의 입력 포트 또는 서브컴포넌트 인터페이스의 출력 포트 중 하나인 하나 이상의 이벤트 소스를 서브컴포넌트 인터페이스의 입력 포트 또는 복합 컴포넌트 인터페이스의 출력 포트 중 하나인 이벤트 목적지와 연관시킴으로써, 복합 컴포넌트 모델을 모델링하는 단계; 및 하나 이상의 정의된 인터페이스의 입력 포트에 도달하는 하나 이상의 이벤트에 응답하기 위한 규칙을 지정함으로써 단위 컴포넌트 모델을 모델링하는 단계를 더 포함한다.
본 발명의 추가 양태에서, 복합 및 단위 모델링 유닛에 의해, 복합 컴포넌트 모델 또는 단위 컴포넌트 모델의 인스턴스로서 하나 이상의 복합 컴포넌트를 생성하는 단계는, 하나 이상의 복합 컴포넌트 모델에 지정된 하나 이상의 컴포넌트 인 터페이스를 하나 이상의 실제 컴포넌트에 바인딩하고, 복합 컴포넌트 모델에 의해 구현된 하나 이상의 인터페이스의 파라미터로서 하나 이상의 값들을 지정함으로써 복합 컴포넌트 모델의 인스턴스로서 하나 이상의 복합 컴포넌트를 생성하는 단계; 및 단위 컴포넌트의 동작을 더 결정하기 위한 하나 이상의 알고리즘을 정의하고, 단위 컴포넌트 모델이 따르는 하나 이상의 인터페이스의 파라미터에 대해 하나 이상의 값들을 지정함으로써 단위 컴포넌트 모델의 인스턴스로서 하나 이상의 단위 컴포넌트를 생성하는 단계들 더 포함한다.
본 발명의 또 다른 추가 양태에서, 도메인 모델링 유닛은, 제한을 두려는 것은 아니지만 범용 컴퓨터, 특수한 용도의 컴퓨터, 센서, 및 액튜에이터를 비롯한 목표 실행 환경의 하나 이상의 런타임 플랫폼을 지정하는 단계, 및 하나 이상의 컴포넌트 모델 인스턴스를 지정하는 단계를 더 포함한다.
본 발명의 추가 양태에서, 하나 이상의 코드 발생기는, 서브컴포넌트들과 연관된 입력 대기행렬(queue) 및 출력 대기행렬 사이에 이벤트들을 이동시키고, 각각의 이벤트의 각각의 입력 대기행렬의 이벤트들을 처리하기 위하여 하나 이상의 서브컴포넌트를 호출하며, 복합 컴포넌트들로부터의 출력 이벤트들을 방출함으로써 이벤트의 도달에 응답하기 위하여 복합 컴포넌트 모델로부터 코드를 발생시킨다.
본 발명의 추가 양태에서, 코드 발생기에 의해 발생된 코드는 또한 이벤트들이 대기행렬들 사이를 이동할 때 이벤트에 변환을 적용한다.
본 발명의 추가 양태에서, 코드 발생기에 의해 발생된 코드는 복합 컴포넌트에 도달하는 이벤트에 응답하여 복합 컴포넌트 모델과 연관된 유한 상태 기계의 상 태를 업데이트하고, 유한 상태 기계의 상태에 기초하여 서브컴포넌트 및 접속을 활성화 및 비활성화한다.
본 발명의 추가 양태에서, 인터페이스의 입력 포트에 도달하는 이벤트에 대한 응답을 지정하는 규칙, 및 입력 이벤트가 인터페이스의 입력 포트의 서로소(disjoint) 세트의 모든 입력 포트에 도달하였을 때, 인터페이스의 입력 포트의 서로소 세트에 대해, 호출될 메소드의 이름을 지정하는 규칙을 이용하여 단위 컴포넌트가 모델링된다.
본 발명의 추가 양태에서, 코드 발생기는 모델에서 명명된 각각의 메소드에 대한 엠프티 메소드 바디를 갖는, 모델링된 컴포넌트에 대한 골격 소스 코드를 발생시킨다.
본 발명의 추가 양태에서, 인터페이스의 입력 포트에 도달하는 이벤트에 대한 응답을 지정하는 규칙을 이용하여 단위 컴포넌트를 모델링하는 단계는, 들어오는 이벤트 스트림에 대해 매치될 인터리브 동작을 갖는 정규 표현을 지정하는 단계를 수반하는데, 정규 표현의 각각의 알파벳 기호는 인터페이스의 상이한 입력 포트에 도달하는 이벤트에 매치되고, 인터리브 동작은 인터페이스의 지정된 출력 포트에서의 이벤트의 방출을 포함할 수 있다.
본 발명의 추가 양태에서, 코드 발생기는 정규 표현을 인식하는 유한 상태 기계를 위한 전이표(transition table)를 발생시키는데, 전이표의 각각의 엔트리들은 유한 상태 기계가 지정된 예전의 상태에 있는 동안, 정규 표현의 특정 알파벳 기호에 매치되는 이벤트의 도달 시, 수행될 동작 및 새로운 상태를 지정한다.
본 발명의 추가 양태에서, 코드 발생기는 정규 표현에 의해 지정되는 바와 같이 입력 이벤트를 처리하는 동작을 갖는 상태유지(stateful) 데이터 구조의 표시를 발생시킨다.
본 발명이 추가 양태에서, 복합 컴포넌트의 모델은 도달하는 이벤트에 응답하여 다양한 상태로의 전이를 실행하는 상태 기계의 세부사항을 포함한다.
본 발명의 추가 양태에서, 도구 유닛은 통합 개발 환경(IDE; integrated development environment)을 포함한다.
본 발명의 추가 양태에서, 도구 유닛은 런타임 플랫폼을 관리하기 위하여 하나 이상의 도메인 제어기를 포함한다.
본 발명의 추가 양태에서, 도구 유닛은 하나 이상의 컴포넌트가 저장되는 하나 이상의 라이브러리 서버를 포함한다.
본 발명의 추가 양태에서, 도구 유닛은 팔레트를 포함하는데, 복합 컴포넌트 모델의 서브컴포넌트 인터페이스가 드래그 및 드롭핑되는 아이콘들에 의해 표시되는 것들을 포함한다는 것을 명시하기 위하여, 컴포넌트 인터페이스를 표시하는 아이콘들은 팔레트로부터 복합 컴포넌트 모델을 구성하는데 이용되는 그래픽 에디터의 캔버스 상으로 드래그 및 드롭핑될 수 있다.
컴퓨터 시스템의 컴퓨터 리소르를 0 이상의 모델링, 0 이상의 구현, 및 0 이상의 배치하는 것을 조정하는 방법, 및 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 위한 보조 시스템이 개시된다.
본 발명은 2가지의 양태를 갖는다. 제1 양태는, 제한을 두려는 것은 아니지만 센서, 액튜에이터, 또는 양자 모두를 포함하는 컴퓨터 시스템을 비롯한 컴퓨터 시스템의 모델링, 구현, 및 배치 방법이다. 제2 양태는, 제한을 두려는 것은 아니지만 센서, 액튜에이터, 또는 양자 모두를 포함하는 컴퓨터 시스템을 비롯한 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 위한 보조 시스템이다.
센서 및 액튜에이터는 리버리지(leverage)될 수 있고, 본 발명의 배경기술에서 기술한 바와 같이 비지니스 프로세스 및 시나리오를 트리거하는데 이용될 수 있는데, 사용자들이 원하는 기능을 수행하기 위하여, 센서 및 액튜에이터 장치는 조정된다. 도 1에서 볼 수 있는 바와 같은 예에서, 통합 임베디드(embedded) 장치 솔루션(1)은 센서(40/40n) 및 액튜에이터(50/50n) 장치를 무선 링크(70) 또는 유선 링크(75) 및 입력 포트(20)와 출력 포트(30)를 통해 제어기 노드(11) 및 복합 컴포넌트(10)에 접속시킴으로써 이를 달성한다. 제어기 노드(11) 내에서, 복합 컴포넌트(10)는 "임베디드 장치 솔루션"으로서 특정 애플리케이션 로직을 실행한다. 더 상세하게, 임베디드 장치 솔루션은 접속 A-E에 의해 서로 링크된 입력 포트(22) 및 출력 포트(32)를 갖는 n개의 컴포넌트(10b)를 포함하도록 복합 컴포넌트(10)를 정의함으로써 생성, 배치, 및 관리될 수 있다. 이러한 모델링은, Reason, Jonathan M 등의 2006년 8월, IFIP International Conference on Embedded and Ubiquitous Computing에서 발표된 "A Framework for Managing the Solution Life Cycle of Event-Driven Pervasive Applications", 및 Jung ChangWoo 등의 2006년 10월 22일- 23일, Proceedings of the 2006 OOPSLA workshop on eclipse technology eXchange에서 발표된 "Embedded Device Solution Life Cycle Support with Eclipse"이 기술하는 바와 같은 행위자 중심의 모델링(actor-oriented modeling)에 대한 그래픽 블럭 다이어그램 방법론을 제공한다.
도 1에서 볼 수 있는 바와 같이, 임베디드 장치 솔루션(1)은 컴포넌트(10b)로부터 이벤트 기반의 애플리케이션 구조를 지원한다. 컴포넌트(10b)는 애플리케이션 로직을 인캡슐레이팅하고, 개발, 공개, 재사용, 및 배치를 위한 코드의 최소 단위이다. 각각의 컴포넌트(10b)는 자신이 이벤트를 소모하는 하나 이상의 입력 포트(20), 자신이 이벤트를 내보내는 출력 포트(30), 및 컴포넌트(10)가 들어오는 이벤트에 응답하고 나가는 이벤트를 내보내는 방식으로 제어되는 실행 가능한 로직을 갖는다. 이벤트는 통상적으로 데이터를 포함하는 메시지이다. 센서, 또는 센서로의 소프트웨어 인터페이스는 입력 포트는 없고 하나 이상의 출력 포트를 갖는 컴포넌트로서 이러한 시스템에서 구현될 수 있는데, 이러한 출력 포트를 통하여 내보내지는 이벤트들은 센서가 모은 데이터이다. 액튜에이터, 또는 액튜에이터로의 소프트웨어 인터페이스는, 출력 포트는 없고 하나 이상의 입력 포트를 갖는 컴포넌트로서 이러한 시스템에서 구현될 수 있는데, 이러한 입력 포트를 통해 수신되는 이벤트는 액튜에이터를 제어하는 명령이다.
첨부한 도면과 더불어, 후속하는 설명 및 정의들은 본 발명을 더욱 명확하게 할 것이다. 본 발명에서, 컴포넌트는 하나 이상의 파라미터를 갖는다. 파라미터는 컴포넌트의 동작을 맞춤 설정하는데 이용될 수 있는 값에 대한 명명된 플레이스홀 더(placeholder) 이다. 각각의 포트와 연관된 데이터 타입이 존재하는데, 입력 포트에 의해 수신되거나 또는 출력 포트에 의해 내보내지는 이벤트에 포함된 데이터는 이 데이터 타입에 속해야 한다. 또한, 컴포넌트의 각각의 파라미터는 특정 데이터 타입에 속할 것을 선언받는다. 바람직한 실시예에서, 데이터 타입은 기본 타입(boolean, double, long, object, string, 또는 time), 지정된 타입의 요소를 갖는 어레이 타입, 또는 지정된 타입의 명명된 필드를 갖는 구조 타입일 수 있다. 기본 타입 boolean은 값 true false로 구성된다. 기본 타입 double은 64-비트 IEEE-754 부동 소수점 값으로 구성된다. 기본 타입 long은 64-비트 부호를 갖는 정수값으로 구성된다. 기본 타입 object는 컴포넌트가 입력 이벤트로 수신하거나 또는 출력 이벤트로 전송할 수 있지만, 검사 또는 조작될 수는 없는 콘텐츠를 갖는 불분명한(opaque) 객체 참조를 나타낸다. 기본 타입 string은 유니코드 캐릭터의 시퀀스들로 구성된다. 기본 타입 time은 각각 날짜 및 시간을 포함하는 시간 스탬프로 구성된다. 이러한 데이터 타입들 중 하나의 타입의 각각의 값에 대해, 자바 객체로서 대응하는 표시가 존재하고, 이와 같은 자바 객체를 구성하고 이와 같은 자바 객체의 콘텐츠를 분석하는 자바 메소드가 존재한다. 본 발명이 모든 메시지 및 파라미터들이 속하는 단일 데이터 타입이 존재하는 평범한 타입의 시스템을 비롯한 다른 타입의 시스템 또한 예상한다는 것이 이해될 것이다. 본 발명은 또한 이벤트 메시지의 데이터 및 컴포넌트 파라미터에 대한 다른 타입의 시스템이 존재하는 실시예를 예상한다.
본 발명에서, 인터페이스는 컴포넌트의 특정한 특성을 기술하는 그 컴포넌트 의 추상적인 관점이다. 컴포넌트에 적용할 수 있는 인터페이스는 하나 이상의 컴포넌트의 입력 포트의 이름 및 타입, 하나 이상의 컴포넌트의 출력 포트의 이름 및 타입, 및 하나 이상의 컴포넌트의 파라미터의 이름 및 타입으로 구성된다. 많은 인터페이스들이 주어진 컴포넌트에 적용 가능하며, 주어진 인터페이스는 많은 컴포넌트들에 적용 가능할 수 있다.
시스템은 이벤트 기반의 애플리케이션의 구성 및 배치 양자 모두의 기초로서 애플리케이션 중심의 모델을 이용한다. 컴포넌트 모델은 애플리케이션의 컴포넌트들 및 그들 사이의 상호 접속을 지정한다. 도메인 모델은, 가능하다면 센서, 액튜에이터, 범용 프로세서, 및 특수 용도의 프로세서를 비롯한 계층 모듈로 조직화된 배치 사이트의 컴퓨터 리소스를 지정한다. 배치 모델은 어느 컴포넌트가 어느 컴퓨터 리소스 상에서 실행될 것인지를 지정한다. 시스템은 대응하는 리소스 상에서 실행되기에 적합한 형태로 컴포넌트들을 생성하기 위하여 이러한 모델들을 처리한다.
도 2에 도시된 바와 같이, 바람직한 실시예에서, 시스템(100)은 통합 개발 환경(IDE; integrated development environment)(110), 하나 이상의 런타임 플랫폼(120), 하나 이상의 도메인 제어기(130), 및 하나 이상의 라이브러리 서버(140)로 구성된다. IDE(110)는 개발자가 컴포넌트 기반의 접근 방법을 따라 애플리케이션을 모델링, 구현, 어셈블링, 테스트, 및 배치하도록 허용한다. 런타임 플랫폼(120)은, 가능하다면 목표 실행 환경의 분산 컴퓨팅 노드 상에서 구동하는, 애플리케이션 개발자가 테스팅을 위해 이용하는 하나 이상의 로컬 런타임 플랫폼, 및 하나 이상의 생산 런타임 플랫폼을 포함한다. 도메인 제어기(130)는 로컬 런타임 플랫폼을 관리하는데 이용되는 로컬 도메인 제어기 및 생산 환경의 런타임 플랫폼을 관리하는데 이용되는 생산 도메인 제어기를 포함한다. 라이브러리 서버(140)는 IDE(110) 및 및 런타임 플랫폼(120)에 의해 저장, 브라우징, 및 검색될 컴포넌트들에 코드 저장소를 제공한다.
도 3에 도시된 바와 같이, IDE(110)의 컴포넌트는 하나 이상의 그래픽 에디터(210), 하나 이상의 텍스트 에디터(220), 하나 이상의 폼에디터(230), 하나 이상의 코드 발생기(240), 컴포넌트 팔레트(250), 및 도메인 익스플로러(260)를 포함할 수 있다.
바람직한 실시예에서, IDE(110)는 도 4에 도시된 바와 같이, 이클립스 플랫폼(320)에 설치된 한 세트의 플러그-인(310)으로서 구현되고, 에디터들 중 일부는 이클립스 모델링 프레임워크에서 정의되는 메타 모델을 기초로 그들이 편집하는 인공물(artifact)의 XMI 표현을 생성한다. 그러나, 당업자들에게 알려진 바와 같이 다른 구현 또한 가능하다는 것이 이해될 것이다. 이클립스는 http://www.eclipse.org/에서 오픈 소프트웨어로서 이용 가능한, 라이프사이클 전반의 소프트웨어를 구축, 배치, 및 관리하기 위한 확장 가능한 프레임워크, 도구, 및 런타임을 포함하는 개발 플랫폼이다.
다시 도 3을 참조하면, 컴포넌트 팔레트(250)는 가능하다면 한 계층의 폴더로 조직화된, 라이브러리 서버(140)에 저장된 컴포넌트들을 표시하는 아이콘들을 포함한다. 라이브러리 서버의 다양한 구현들은 컴포넌트 팔레트로 플러그인 될 수 있다. 예를 들어, OSGi 얼라이언스(http://www.osgi.org/)는 번들이라 불리는 컴포 넌트에 패키징된, 네트워크화된 환경으로 동적으로 다운로드 가능한 서비스들을 전달 및 관리하는 동적으로 확장 가능한 자바 프레임워크를 정의했다. 오스카 번들 저장소(OBR; Oscar Bundle Repository)는 (http://oscar-osgi.sourceforge.net/에 기술된) OSGi 번들을 위한 저장소이다. 바람직한 실시예에서, OBR에 기초한 디폴트 라이브러리 서버(library-server) 구현이 존재한다.
본 발명에서, 컴포넌트는 단위 컴포넌트 또는 복합 컴포넌트 중 하나로서 모델링될 수 있다. 단위 컴포넌트를 위한 모델은, 제한을 두려는 것은 아니지만 한 세트의 메소드 호출 규칙 또는 임베딩된 컴퓨터 동작을 갖는 정규 표현을 포함한다. 복합 컴포넌트를 위한 모델은 한 세트의 컴포넌트 참조, 유한 상태 기계, 및 유한 상태 기계의 각각의 상태에 대해, 어느 참조된 컴포넌트가 활성인지, 복합 컴포넌트의 어느 입력 포트가 참조된 컴포넌트의 어느 입력 포트에 이벤트를 제공하는지, 참조된 컴포넌트의 어느 출력 포트가 참조된 컴포넌트의 어느 입력 포트에 이벤트를 제공하는지, 그리고 참조된 컴포넌트의 어느 출력 포트가 복합 컴포넌트의 어느 출력 포트에 이벤트를 제공하는지에 대한 세부 설명을 포함한다.
한 세트의 메소드 호출 규칙대로 모델링된 단위 컴포넌트에 대해, 모델은 그래픽 에디터(210)에 의해 생성될 수 있다. 입력 포트를 표시하는 아이콘(410), 호출될 메소드를 표시하는 아이콘(420), 출력 포트를 표시하는 아이콘(430), 입력 포트 아이콘(410)으로부터 나와 메소드 아이콘(420)으로 향하는 입력 화살표(440), 및 메소드 아이콘(420)으로부터 나와 출력 포트 아이콘(430)으로 향하는 출력 화살표(450)를 포함하고, 임의의 하나의 입력 포트 아이콘(410)으로부터 나오는 입력 화살표(440)는 1 이하이어야 한다는 제한을 갖고 도 5에 도시된 다이어그램(400)과 같은 다이어그램을 도시하는데 그래픽 에디터가 이용될 수 있다. 입력 화살표(440)에 의해 메소드 아이콘(420)에 접속된 입력 포트 아이콘(410)을 갖는 각각의 입력 포트에 입력 이벤트가 도달했을 때, 이와 같은 모델은, 각각의 메소드 아이콘(420)에 대해, 그 아이콘에 의해 명명된 메소드는 소모되는 그러한 포트들 각각에 도달한 초기 이벤트의 값으로 실행되어야 한다고 지정하고(이 값은 호출되는 메소드에 파라미터로서 전달됨), 출력 화살표(450)가 대응하는 출력 포트 아이콘(430)에 메소드 아이콘(420)을 접속시키는 각각의 출력 포트에 대해서는, 출력 포트를 표시하는 대상이 호출되는 메소드에 파라미터로서 전달되어야 한다고 지정한다. 시스템은 호출되는 메소드가 출력 이벤트를 발생시키고 발생되는 출력 이벤트를 특정 메소드 파라미터로 표시되는 출력 포트에 디스패치(dispatch)할 수 있게 하는 수단을 제공한다. 단위 컴포넌트는 호출되는 메소드가 완료될 때 이러한 이벤트들이 디스패치되었던 출력 포트로부터 그 이벤트들을 내보낸다.
다시 도 3을 참조하면, 그 다음 그래픽 에디터(210)에서 생성된 다이어그램이 저장되고, 코드 발생기(240)는 메소드 호출 규칙을 구현하는 프로그램 텍스트를 발생시킨다. 발생된 프로그램 텍스트는 호출되는 메소드에 대한 엠프티 바디(empty body)를 포함한다. 애플리케이션 개발자는 이러한 메소드 바디에 애플리케이션 로직을 추가하기 위하여 텍스트 에디터(220)를 이용할 수 있다. 바람직한 실시예에서, 발생된 프로그램 텍스트는 자바 클래스이지만, 본 발명은 또한 다른 프로그래밍 언어로 발생된 프로그램 텍스트를 예상한다. 일부 프로그래밍 언어에서, 자바로 메소드를 재생하는 역할은, 예컨대 기능, 절차, 또는 서브루틴, 또는 서브프로그램으로 불리는 엔티티에 의해 재생된다. 메소드 호출 규칙을 구현하는 발생된 프로그램 텍스트와 더불어, 코드 발생기(240)는 입력 이벤트의 도달을 추적하고 출력 이벤트의 방출을 관리하는 프로그램 텍스트를 발생시킨다.
도 5에 도시된 임베딩된 컴퓨터 동작(500)을 갖는 정규 표현과 같은, 임베딩된 컴퓨터 동작을 갖는 정규 표현에 의해 모델링된 단위 컴포넌트에 대해, 모델은 텍스트 에디터(220)에 의해 생성될 수 있다. 모델은 이벤트 이름을 각각의 입력 포트와 연관시키고, 입력 포트에 도달하는 이벤트 시퀀스에 대응하는 이벤트 이름의 시퀀스에 대해 정규 표현을 매치시킨다. 정규 표현은 기호 시퀀스에 대해 매치될 수 있는 패턴이다. 정규 표현의 가능한 형태는 특정 기호에 매치되는 플레이스홀더; n(어떠한 숫자)개의 연속적인 부분문자열(substring)로 구성된 임의의 기호 문자열에 매치되는 n개의 작은 정규 표현의 시퀀스로서, 기호 문자열 각각은 시퀀스의 대응하는 작은 정규 표현에 매치되는 것인, n개의 작은 정규 표현의 시퀀스; 작은 정규 표현들 중 임의의 하나에 의해 매치되는 임의의 기호 문자열에 매치되는 작은 정규 표현의 결합; 및 0개 이상의 연속적인 부분문자열로 구성된 임의의 기호 문자열에 매치되는 작은 정규 표현의 반복으로서, 임의의 기호 문자열 각각은 작은 정규 표현에 의해 매치되는 것인, 작은 정규 표현의 반복을 포함한다. 일부 공식화에서, 어느 기호 문자열에도 매치되지 않는 phi 정규 표현; 오직 엠프티 문자열에만 매치되는 epsilon 정규 표현; 임의의 하나의 기호에 매치되는 wildcard; 작은 정규 표현 모두에 의해 매치되는 임의의 기호 문자열에 매치되는 작은 정규 표현의 intersection; 제1 작은 정규 표현에 의해 매치되고 제2 작은 정규 표현에 의해 매치되지 않는 임의의 기호 문자열에 매치되는 2개의 작은 정규 표현의 difference; 및 연속적인 부분문자열의 갯수에 하층 바운드 또는 하층 바운드와 상층 바운드 양자 모두를 배치하는 작은 정규 표현의 extended repetition으로서, 연속적인 하위문자열 각각은 작은 정규 표현에 의해 매치되고, 이는 하위문자열이 매치하는 기호 문자열에서 발생할 수 있는 것인, extended repetition과 같은 정규 표현의 추가 형태가 존재한다. 정규 표현의 개념은 컴퓨터 과학 분야에서 잘 알려져 있다. awk, C#, Java, JavaScript Perl, PHP, Python, Ruby, 및 Visual Basic과 같은 많은 프로그래밍 언어와 grep, sed, 및 vi와 같은 프로그래밍 도구는, 기호가 문자 및 플레이스홀더이거나 또는 와일드카드가 단일 문자에 매치되는 정규 표현 매칭 문자열을 포함한다. 본 발명에서, 단위 컴포넌트는 들어오는 이벤트의 스트림에 매칭하는 정규 표현에 의해 모델링될 수 있는데, 이러한 스트림은 기호 문자열로서 간주되고, 기호 각각은 이벤트 이름을 갖고, 정규 표현의 각각의 플레이스홀더는 기호를 특정 이벤트 이름과 매치한다. 이러한 정규 표현의 시퀀스들은 작은 정규 표현뿐만 아니라 시퀀스의 대응 포인트가 매칭 프로세스에서 마주칠 때 실행되는 임베딩된 컴퓨터 동작 또한 포함하도록 확장된다. 이러한 동작은 출력 이벤트 이름과 연관된 출력 포트에서 명명된 출력 이벤트의 방출 단계를 포함한다.
텍스트 에디터(220)에서 생성된 정규 표현이 저장될 때, 코드 발생기(240)는 정규 표현에 대응하는 유한 상태 변환기(transducer)를 위한 상태 전이표를 발생시킨다. 각각의 런타임 플랫폼(120)은 이와 같은 표를 번역하는 엔진을 포함하여, 도 달하는 입력 이벤트와 방출되는 출력 이벤트를 처리할 수 있다. 바람직한 실시예에서, 임베딩된 컴퓨터 동작(500)을 갖는 정규 표현은 EventScript 언어로 기록된다.
복합 컴포넌트에 대해, 모델은 그래픽 에디터(210)에 의해 생성될 수 있다. 그래픽 에디터는 도 6에 도시된 다이어그램(600)과 같은 다이어그램을 도시하는데 사용될 수 있고, 다이어그램(600)은 유한 상태 기계의 상태를 표시하는 서클(610), 상태 전이 화살표(620), 복합 컴포넌트의 입력 포트를 표시하는 아이콘(630), 컴포넌트 참조의 입력 포트를 표시하는 아이콘(640), 컴포넌트 참조를 표시하는 아이콘(650), 컴포넌트 참조의 출력 포트를 표시하는 아이콘(660), 복합 컴포넌트의 출력 포트를 표시하는 아이콘(660), 복합 컴포넌트의 출력 포트를 표시하는 아이콘(670), 복합 컴포넌트의 입력 포트 아이콘(630)으로부터 나와 컴포넌트 참조의 입력 포트 아이콘(640)으로 향하는 입력 화살표(680), 컴포넌트 참조의 출력 포트 아이콘(660)으로부터 나와 컴포넌트 참조의 입력 포트 아이콘(640)으로 향하는 내부 화살표(685), 컴포넌트 참조의 출력 아이콘(660)으로부터 나와 복합 컴포넌트의 출력 포트 아이콘(670)으로 향하는 출력 화살표(690), 및 복합 컴포넌트의 입력 포트 아이콘(630)으로부터 나와 복합 컴포넌트의 출력 포트 아이콘(670)으로 향하는 관통 화살표(695)를 포함할 수 있다. 폼에디터(230)는 이벤트 데이터에 대한 변환을 화살표(680, 685, 690, 또는 695)와 연관시키는데 사용될 수 있다. 이벤트 변환은, 화살표 머리에서 포트 아이콘(630 또는 660)과 연관되는 데이터 타입을 갖는 값의 자바-객체 표시를 위해 자바 표현으로서 지정된다. 이러한 표현은 화살표의 꼬리에서 포트 아이콘(640 또는 670)과 연관되는 데이터 타입을 갖는 값의 자바-객 체 표시를 나타내는 플레이스홀더를 포함한다. 화살표(680, 685, 690, 또는 695)에 대해 이와 같은 변환이 지정되지 않는다면, 화살표는 특정 데이터 타입과 연관된 포트를 표시하는 포트 아이콘(630 또는 660)을 동일한 데이터 타입과 연관된 포트를 표시하는 포트 아이콘(640 또는 670)에 접속시킨다.
본 발명에서, 컴포넌트 참조는 특정 인터페이스를 갖는 컴포넌트에 대한 플레이스홀더인데, 이 특정 인터페이스는 후에 그러한 인터페이스가 적용 가능한 특정 컴포넌트에 바인딩될 수 있다. 바람직한 실시예에서, 컴퓨터 참조 아이콘은 컴포넌트를 표시하는 아이콘을 컴포넌트 팔레트(250)로부터 드래그하고 이 아이콘들을 에디터의 드로잉 캔버스상에 드롭핑함으로써 그래픽 에디터(210)에 생성될 수 있다. 서클(610) 및 상태 전이 화살표(620)는 유한 상태 기계를 지정한다. 폼에디터(230)는 복합 컴포넌트의 입력 포트, 선택 조건, 및 선택 동작을 각각의 상태 전이 화살표(620)에 연관시키는데 이용될 수 있다. 그래픽 에디터는 초기 상태로서 유한 상태 기계의 특정 상태를 식별하는데 이용될 수 있다. 그래픽 에디터는 어느 컴포넌트 참조 아이콘(650)과 어느 화살표(680, 685, 690, 및 695)가 유한 상태 기계의 주어진 상태에서 활성인지를 표시하는데 이용될 수 있다. 본 발명은 바람직한 실시예에서 그래픽 에디터(210)와 폼에디터(230)가 수행하는 특정 역할을 수행하기 위해, 이러한 에디터들의 이용 외에도, 복합 컴포넌트의 모델에 정보를 지정하는 다른 방법을 예상한다.
모델은 다음의 동작들을 지정한다: 상태 기계가 일부 상태 전이 화살표(620)의 꼬리에서 서클(610)에 대응하는 상태에 있고, 이벤트는 그 화살표와 연관된 복 합 컴포넌트 입력 포트에 도달하고, 그 화살표와 연관된 조건은 존재하지 않거나 또는 참인지를 평가한다면, 그 다음 상태 기계는, 만약에 있다면 그 화살표와 연관된 동작을 수행하고, 상태 전이 화살표의 머리에서 서클(610)에 대응하는 상태로 전이된다. 서클(610) 또는 상태 전이 화살표(620)가 다이어그램(600)에 존재하지 않는다면, 마치 복합 컴포넌트에 대한 상태 기계가 단일 상태만을 갖고, 모든 컴포넌트 참조 아이콘(650) 및 화살표(680, 685, 690, 및 695)는 그 상태에서 활성인 것과 같은 효과가 나타난다. 이벤트가 복합 컴포넌트 입력 포트에 도달할 때, 임의의 적용 가능한 상태 전이가 수행된다. 그 다음, 대응하는 복합 컴포넌트의 입력 포트 아이콘(630)으로부터 현상태에서 활성인 컴포넌트 참조 아이콘(650)의 일부 입력 포트 아이콘(640)으로 향하는 현상태에서 활성인 모든 입력 화살표(680)에 대해, 이벤트의 가능한 변환 버전은, 컴포넌트 참조가 바인딩되는 컴포넌트의 대응하는 입력 포트 상에 배치되고, 일부 복합 컴포넌트의 출력 포트 아이콘(670)으로 향하는 현상태에서 활성인 모든 관통 화살표(695)에 대해, 이벤트의 가능한 변환 버전은 복합 컴포넌트의 대응하는 출력 포트를 통해 방출된다. 그 다음, 현상태에서 활성인 아이콘(650)을 갖는 컴포넌트 참조에 바인딩된 각각의 컴포넌트는, 그러한 컴포넌트를 위한 모델에 따라 자신의 입력 포트에 배치된 이벤트를 처리한다. 이와 같은 컴포넌트가 자신의 출력 포트들 중 하나 상에 출력 이벤트를 방출하고, 그 다음, 대응하는 컴포넌트 바인딩 출력 포트 아이콘(660)으로부터 나와 현상태에서 활성인 일부 다른 컴포넌트 바인딩 아이콘(650)의 컴포넌트 바인딩 입력 포트 아이콘(640)으로 향하고 현상태에서 활성인 내부 화살표(685)가 있다면, 이벤트의 가능 한 변환 버전은, 컴포넌트 참조가 바인딩되는 컴포넌트의 대응하는 입력 포트 상에 배치되고; 그렇지 않고, 대응하는 컴포넌트 바인딩 출력 포트 아이콘(660)으로부터 나와 복합 바인딩 출력 포트 아이콘(670)으로 향하고 현상태에서 활성인 출력 화살표(690)가 있다면, 이벤트의 가능한 변환 버전은 복합 컴포넌트의 대응하는 출력 포트를 통하여 방출된다.
화살표(680, 685, 690, 또는 695)의 꼬리에서 포트 아이콘에 대응하는 포트에 의해 제공되는 이벤트의 가능한 변환 버전을 화살표(680, 685, 690, 또는 695)의 머리에서 포트 아이콘에 대응하는 포트에 배치하는 것은 다음과 같이 진행된다: 화살표와 연관된 변환이 없다면, 이벤트는 스스로 화살표의 머리에서 포트 아이콘에 대응하는 포트에 배치된다. 다른 방법으로, 이벤트 변환의 자바 표현식(Java expression)은 이벤트 값의 자바-객체 표시에 대한 수식평가(expression evaluation)의 플레이스홀더를 이용하여 평가되며, 수식평가의 결과에 의해 주어지는 자바-객체 표시를 갖는 값을 포함하는 새로운 이벤트는 화살표의 머리에서 포트 아이콘에 대응하는 포트에 배치된다.
그래픽 에디터(210)에서 생성된 복합 컴포넌트 모델이 저장될 때, 코드 발생기(240)는 복합 컴포넌트로의 입력 이벤트의 도달을 추적하는 프로그램 텍스트를 발생시키며, 복합 컴포넌트의 상태 기계의 현상태를 추적하고, 컴포넌트 참조가 바인딩되는 컴포넌트로의 이벤트 이동을 관리하며, 그 컴포넌트들의 호출을 스케쥴링하며, 복합 컴포넌트에 의한 출력 이벤트의 방출을 관리한다.
도 7에 도시된 바와 같이, 복합 컴포넌트는 그래픽 사용자 인터페이스(GUI) 의 구조 및 동작을 모델링할 수 있고, GUI를 구현하는 코드는 그 모델로부터 자동으로 발생될 수 있다. GUI를 모델링하는 복합 컴포넌트(710)는 GUI의 페이지(또는 스크린)에 각각 대응하는 몇몇의 서브컴포넌트(720)를 포함한다. 각각의 페이지 서브컴포넌트(720)는 페이지 상에 나타나는 GUI 위젯(widget)(텍스트 필드, 버튼, 슬라이더, 프로그레스바 등)에 대응하는 위젯 컴포넌트(725)를 포함한다. 복합 컴포넌트(710)의 유한 상태 기계(730)는 GUI의 각각의 페이지에 대응하는 상태(731)를 갖는데, 유한 상태 기계(730)가 주어진 페이지에 대응하는 상태(731)에 있을 때, 그 페이지에 대응하는 페이지 서브컴포넌트(720)는 활성이며, 다른 페이지 서브컴포넌트(720)는 비활성이다. 활성 페이지 서브컴포넌트(720)의 위젯 서브 컴포넌트(725)에 대응하는 위젯(765)이 클라이언트 플랫폼의 드로잉 캔버스(760)상에 나타나도록 하기 위하여, GUI 엔진(740)은 데이터를 클라이언트 플랫폼(750) 상의 렌더링 엔진(770)과 교체한다. 클라이언트 렌더링 엔진(770)의 가능한 구현은, 예컨대 웹 브라우저[이러한 경우, GUI 엔진(740)에 의해 제공되는 정보는, 가능하다면 AJAX 스타일로 임베딩된 자바스크립트를 갖는 HTML를 포함한다], 이클립스 리치 클라이언트 플랫폼(Eclipse Rich Client Platform)[이러한 경우, GUI 엔진(740)에 의해 제공되는 정보는 클라이언트 플랫폼(750) 상에서 실행될 SWT(Standard Widget Toolkit)의 메소드에 대한 일부 호출 표시를 포함할 수 있다], 또는 JVM(Java Virtual Machine)[이러한 경우, GUI 엔진(740)에 의해 제공되는 정보는 클라이언트 플랫폼(750) 상에서 실행될 AWT(Abstract Window Toolkit)의 메소드에 대한 일부 호출 표시를 포함할 수 있다]을 포함한다. GUI를 모델링하는 복합 컴포넌트의 기록 자는 GUI 엔진(740) 및 클라이언트 렌더링 엔진(770)의 구현에 관하여서는 염려할 필요 없다.
클라이언트 플랫폼(750)의 엔드유저가 위젯(765) 상에 몇몇 동작을 수행하고, 따라서 GUI 이벤트를 발생시킬 때, 클라이언트 렌더링 엔진(770)은 이러한 이벤트를 캡처링하고 그 이벤트를 기술하는 메시지를 GUI 엔진(740)에 전송한다. GUI 엔진(740)은 현재 활성인 페이지 서브컴포넌트(720)에 대한 입력 이벤트를 발생시킴으로써 이러한 메시지의 수신에 응답하고, 그 페이지 서브컴포넌트(720)는 동작이 수행되었던 위젯(765)에 대응하는 위젯 서브컴포넌트(725)에 그 이벤트를 전달한다. 도달하는 이벤트는 또한 유한 상태 기계(730)로 하여금 새로운 상태(731)로의 전이(732)를 실행하게 하고, 따라서 새로운 페이지는 활성 상태가 된다. 따라서, 유한 상태 기계(730)의 전이(732)는, 엔드유저가 GUI의 한 페이지로부터 다른 페이지로 네비게이션할 수 있는 방식에 대응한다.
메소드 호출 규칙으로 구성된 단위 컴포넌트를 위한 모델을 편집하거나 또는 복합 컴포넌트를 위한 모델을 편집하는데 이용되든지 간에, 그래픽 에디터(210)는 도 8에 도시된 바와 같이, 모델링된 컴포넌트의 명명된 인터페이스를 표시하는 아이콘(810) 및 컴포넌트 구현의 그래픽 표시(820)를 포함하는 캔버스(800)를 나타낸다. 컴포넌트 구현의 그래픽 표시(820)는 메소드 호출 규칙의 서술(depiction)(400) 또는 상태, 컴포넌트 참조, 및 복합 컴포넌트의 데이터 흐름의 서술(600)일 수 있다. 애플리케이션 개발자는 그래픽 에디터를 이용하여 특정 인터페이스를 선택할 수 있는데, 이러한 경우, 인터페이스에 명명된 컴포넌트의 이러한 입력 및 출력 포트들만이 컴포넌트 구현의 그래픽 표시(820)에 나타난다.
컴포넌트에 대한 컴포넌트 참조의 바인딩은 개발 당시의 컴포넌트 모델의 일부로서 지정되거나, 배치 당시의 배치 모델의 일부로서 지정되거나, 또는 실행 당시에 도메인 제어기(130)의 관리 콘솔을 통해 지정될 수 있다. 참조를 포함하는 복합 컴포넌트가 컴포넌트 참조를 호출할 수 있기 전에 컴포넌트 참조는 컴포넌트에 바인딩되어야 한다. 바인딩은 URI로서 지정된다. URI는 런타임 플랫폼, 및 그 런타임 플랫폼 상에 인스턴스화될 컴포넌트 구현의 이름 또는 그 런타임 플랫폼 상에 이미 실행되는 컴포넌트 인스턴스의 이름 중 하나를 지정한다.
도메인 모델은 실행 환경의 런타임 플랫폼(120)과 애플리케이션을 구성하는 컴포넌트들을 열거한다.
배치 모델은 도메인 모델의 컴포넌트 인스턴스 및 런타임 플랫폼(120)을 참조하고, 어느 컴포넌트 인스턴스가 어느 런타임 플랫폼에서 실행될 것인지를 지정한다. 배치 모델은 또한, IP 어드레스 및 포트 넘버를 각각의 런타임 플랫폼에 할당함으로써, 도메인 모델의 런타임 플랫폼을 생산 실행 환경의 물리적 기반 구조에 관계시킨다. 디폴트에 의해, 복합 컴포넌트의 서브컴포넌트는 복합 컴포넌트와 동일한 런타임 플랫폼에서 실행되지만, 배치 모델은 서브컴포넌트에 대해 상이한 런타임 플랫폼을 명확하게 지정함으로써, 이러한 디폴트를 오버라이딩할 수 있다. 배치 모델은 IDE(110)의 폼에디터(230)를 이용하여, 통상적으로 시스템 통합자(system integrator)에 의해 생성 또는 편집될 수 있다. 그 다음, 배치 모델의 XML 표시는 생산 도메인 제어기(130)의 관리 콘솔을 통해 생산 도메인 제어기(130) 내로 이입될 수 있다. 대안으로서, 배치 모델은 당업자들에게 알려진 바와 같이 도메인 제어기의 관리 콘솔을 이용하여, 통상적으로 시스템 관리자에 의해 변경될 수 있다.
배치 모델의 생산 애플리케이션은 분산 시스템의 하나 이상의 물리적 노드 상에서 실행되는 하나 이상의 생산 런타임 플랫폼(120)을 갖는 생산 환경을 가져온다. 바람직한 실시예에서, 표준 런타임 컨테이너로 불리는 런타임 플랫폼의 표준 구현이 있다. 이러한 런타임 플랫폼은, 본 명세서에서 참조를 위해 인용되는 OSGi(Open Service Gateway initiative) R4 사양의 Eclipse 구현, Equinox에 기초한다. 런타임 플랫폼 자신에 대한 코드 및 런타임 플랫폼상에서 구동하는 애플리케이션 컴포넌트에 대한 코드 양자 모두는 OSGi 번들로 패키징된다. 도 9에 도시된 바와 같이, 표준 런타임 플랫폼 자신에 대한 코드는 컨테이너 번들(910), 운송 번들(950), 에이전트 번들(960), 및 이벤트 스크립트 엔진 번들(970)을 포함한다. 컨테이너 번들은 복합 컴포넌트 및 메소드 호출 기반의 단위 컴포넌트의 애플리케이션 로직의 실행에 필요한 많은 기능들을 제공한다. 이러한 기능들은 중첩(nested) 복합 컴포넌트의 계층 관리(915); 인터페이스, 컴포넌트, 및 포트 이름의 분석(920); 로딩, 인스턴스 생성, 활성화, 비활성화, 및 파괴를 포함하는 컴포넌트 라이프사이클의 관리(925); 다른 런타임 플랫폼의 컴포넌트에 대한 컴포넌트 참조의 관리(930); 복합 컴포넌트의 포트들 사이에서의 접속 관리(935); 복합 컴포넌트 내에서의 이벤트 이동의 관리(940); 및 컴포넌트에 의한 입력 포트의 처리 스케줄링(945)을 포함한다. 운송 번들(950)은 이러한 런타임 플랫폼과 다른 런타임 플랫 폼들 간의 이벤트 데이터 통신을 제공하기 위하여 OSGi 서비스를 구현한다. MQtt/MicroBroker 또는 TCP/UDP와 같은 다양한 통신 수단에 대한 번들은 이러한 서비스를 제공하기 위하여 플러그인 될 수 있다. 바람직한 실시예는 MQtt/MicroBroker 번들을 포함한다. 에이전트 번들(960)은 도메인 제어기(130) 대신 런타임 플랫폼을 제어한다. 에이전트 번들(960)은 도메인 제어기로부터의 요청들을 수신하고, 이러한 요청들을 충족시키는 동작들을 호출한다. 각각의 런타임 플랫폼은 자신의 물리적 노드의 IP 어드레스, 및 자신의 에이전트가 도메인 제어기로부터의 요청을 수신하는 포트의 수에 의해 고유하게 식별된다. 이벤트 스크립트 엔진 번들(970)은 임베딩된 컴퓨터 동작을 갖는 정규 표현에 의해 모델링된 단위 컴포넌트을 위한 상태 전이표를 번역한다.
본 발명은 또한, 가능하다면 독립적으로 개발된 미들웨어의 인스턴스로서 구현된 표준 런타임 컨테이너의 인스턴스 외에 하나 이상의 런타임 플랫폼이 존재하는 실시예를 예상한다. 상이한 런타임 플랫폼은 상이한 프로그래밍 인터페이스를 가질 수 있다. 이러한 실시예에서, IDE(110)는 상이한 런타임 플랫폼 인터페이스에 대해 상이한 코드 발생기(240)를 포함한다. 도메인 모델은 모델에서 각각의 런타임 플랫폼에 의해 구현된 인터페이스를 지정하고, IDE는 각각의 모델 컴포넌트에 대해 어느 코드 발생기가 호출될 것인지를 결정하기 위하여 도메인 모델 및 배치 모델을 이용한다.
생산 런타임 플랫폼 세트는 생산 도메인 제어기(130)에 의해 관리된다. 도메인 제어기는 도메인 내의 모든 런타임 플랫폼을 관리하는 집중화된 J2EE 애플리케 이션이다. 바람직한 실시예에서, 도메인 제어기는 단일 가상 컨테이너로서 시스템 관리자에게 시스템의 시야를 제공한다. 가상 컨테이너는 시스템 관리자가 마치 모든 컴포넌트가 단일 런타임 플랫폼상에서 구동하는 것처럼 도메인 제어기 콘솔을 통해 생산 환경을 관리하도록 허용한다. 실제 런타임 플랫폼을 추가 또는 제거, 컴포넌트 인스턴스를 설치 또는 설치제거, 컴포넌트 인스턴스의 바인딩을 변경, 컴포넌트 인스턴스의 파라미터를 변경, 컴포넌트 인스턴스를 시작 또는 종료, 또는 컴포넌트 인스턴스로 내로 들어가거나 또는 밖으로 나오는 이벤트를 모니터링하기 위해, 관리자는 도메인 제어기의 관리 콘솔을 이용할 수 있다. 가상 컨테이너는, 동일한 실제 생산 런타임 플랫폼에서 구동하는 컴포넌트, 상이한 실제 생산 런타임 플랫폼에서 구동하는 컴포넌트, 또는 양자 모두에 어느 포트들이 접속되는지 여부에 기초하여, 각각의 컴포넌트의 각각의 포트에 대해 어느 통신 설비가 호출되는지를 판단한다. 상이한 운송 번들은 MQtt/MicroBroker 또는 TCP/UDP와 같은, 상이한 런타임 플랫폼들의 컴포넌트들 간의 통신을 위한 상이한 수단을 제공하기 위하여 런타임 플랫폼으로 플러그인 될 수 있다.
시스템은 IDE(110)를 구동시키는 컴퓨터로부터 액세스 가능한 테스트 환경을 포함할 수 있다. 이러한 테스트 환경은 하나 이상의 런타임 플랫폼(120), 로컬 도메인 제어기(130), 및 IDE를 구동시키는 컴퓨터로부터 액세스 가능한 라이브러리 서버(140)로 구성된다. IDE는 로컬 도메인 제어기에 대해 관리 콘솔로서 동작하는 도메인 익스플로러(250)를 포함한다. IDE에 의해 발생된 실행 가능한 컴포넌트는 이러한 라이브러리 서버에 저장될 수 있다. IDE에 저장된 배치 모델은 테스트 환경 에 적용될 수 있다. 이는 배치 모델에 지정된 각각의 런타임 플랫폼에 대한 로컬 런타임 플랫폼의 생성을 야기한다. 테스트 환경은 또한 입력-트레이스 파일에 지정된 이벤트 스트림을 별도로 테스트될 컴포넌트의 입력 포트로 공급하고, 그 컴포넌트에 의해 방출되는 이벤트를 출력-트레이스 파일의 예상 출력과 비교하는 유닛-테스팅 설비를 포함할 수 있다. 입력 트레이스 파일은 특정 이벤트가 발생할 시뮬레이팅된 시간을 지정하는 시간 스탬프를 포함할 수 있다.
본 발명은 또한 컴퓨터 판독 가능 기록 매체 상의 프로그램으로서 구현될 수 있다. 컴퓨터 판독 가능 기록 매체의 예로는, 제한을 두려는 것은 아니지만 콤팩트 디스크 판독 전용 메모리(CD-ROM), 랜덤 액세스 메모리(RAM), 플로피 디스크, 하드 디스크, 및 자기 광학 디스크가 있다.
본 발명의 바람직한 실시예로 간주되는 것들을 도시하고 기술하였지만, 형태 또는 상세한 부분에 대한 다양한 조정 및 변경이 본 발명의 정신을 벗어나지 않고서도 용이하게 행해질 수 있다는 것은 자명하게 이해될 것이다. 따라서, 본 발명의 범위는, 상기 기술하고 도시한 것과 정확하게 같은 형태로 한정되지 않고, 첨부한 청구 범위 내에 속할 수 있는 모든 변경 사항들을 아우룰 수 있도록 구성되는 것으로 의도된다.
본 발명의 상술한 목적과 다른 목적들, 양태 및 이점들은, 도면들을 참조하여 본 발명의 실시예들에 대해 후속하는 상세한 설명으로부터 더욱 자명하게 이해될 것이다.
도 1은 본 발명에 따라 통합 임베디드 장치 솔루션을 도시한 도면이다.
도 2는 본 발명에 따라 통합 개발 환경(IDE), 런타임 플랫폼, 도메인 제어기, 및 라이브러리 서버로 구성된 시스템을 도시한 도면이다.
도 3은 본 발명에 따른 도 2에 도시된 IDE의 컴포넌트들을 도시한 도면이다.
도 4는 본 발명에 따라 이클립스 플랫폼(Eclipse platform)에 설치된 한 세트의 플러그-인으로서 구현된 IDE를 도시한 도면이다.
도 5는 본 발명에 따른 단위 컴포넌트의 예시적 모델을 편집하는 그래픽 에디터를 도시한 도면이다.
도 6은 본 발명에 따라 단위 컴포넌트를 모델링하는 임베딩된 컴퓨터 동작의 예시적인 정규 표현을 도시한 도면이다.
도 7은 본 발명에 따라 복합 컴포넌트의 예시적 모델을 편집하는 그래픽 에디터를 도시한 도면이다.
도 8은 본 발명에 따라 그래픽 사용자 인터페이스(GUI)의 복합 컴포넌트의 구조적 특성 및 동작 특성의 모델링을 도시한 도면이다.
도 9는 모델링된 컴포넌트의 명명된 인터페이스를 표시하는 아이콘들 및 컴포넌트 구현의 그래픽 표시를 포함하는 그래픽 에디터 캔버스를 도시한 도면이다.
도 10은 분산 시스템의 하나 이상의 물리적 노드들을 실행하는 생산 런타임 플랫폼을 도시한 도면이다.

Claims (25)

  1. 하나 이상의 컴퓨터 리소스를 포함하는 컴퓨터 시스템의 0 이상의 모델링, 0 이상의 구현, 및 0 이상의 배치를 조정하는 방법에 있어서,
    (i) 하나 이상의 컴포넌트의 하나 이상의 인터페이스를 정의하는 단계로서, 상기 컴포넌트는 이벤트 스트림을 소모하거나, 이벤트 스트림을 생산하거나, 또는 양자 모두를 수행하며, 상기 하나 이상의 인터페이스 각각은 각각 이름 및 타입을 갖는 하나 이상의 입력 포트, 각각 이름 및 타입을 갖는 하나 이상의 출력 포트, 및 각각 이름 및 타입을 갖는 하나 이상의 파라미터를 포함하는 것인, 하나 이상의 인터페이스 정의 단계;
    (ii) 복합(composite) 컴포넌트 모델 또는 단위(atomic) 컴포넌트 모델 중 하나로서 상기 하나 이상의 컴포넌트를 모델링하는 단계로서, 상기 하나 이상의 모델링된 컴포넌트 각각은 상기 하나 이상의 정의된 인터페이스를 따르는 것인, 하나 이상의 컴포넌트 모델링 단계;
    (iii) 상기 복합 컴포넌트 모델 또는 상기 단위 컴포넌트 모델의 인스턴스로서 하나 이상의 복합 컴포넌트 및 하나 이상의 단위 컴포넌트의 인스턴스를 각각 형성하는 단계;
    (iv) 상기 컴퓨터 리소스들 중 하나 이상을 목표 실행 환경으로 지정함으로써 도메인 모델을 생성하는 단계;
    (v) 하나 이상의 복합 컴포넌트 모델 인스턴스, 하나 이상의 단위 컴포넌트 모델 인스턴스, 또는 양자 모두를 지정하고, 상기 도메인 모델의 어느 컴퓨터 리소스상에 상기 하나 이상의 복합 컴포넌트 모델 인스턴스와 상기 하나 이상의 단위 컴포넌트 모델 인스턴스 중 어느 것이 실행될 것인지를 지정함으로써 배치 모델을 생성하는 단계
    를 포함하는 컴퓨터 시스템의 0 이상의 모델링, 0 이상의 구현, 및 0 이상의 배치를 조정하는 방법.
  2. 제1항에 있어서,
    상기 복합 컴포넌트 모델 또는 단위 컴포넌트 모델 중 하나로서 상기 하나 이상의 컴포넌트를 모델링하는 단계, 및 상기 복합 컴포넌트 모델 또는 상기 단위 컴포넌트 모델의 인스턴스로서 상기 하나 이상의 복합 컴포넌트를 형성하는 단계는,
    설계의 일부인 하나 이상의 서브컴포넌트에 대해 하나 이상의 컴포넌트 인터페이스를 지정하고, 서브컴포넌트 인터페이스의 입력 포트들 또는 상기 복합 컴포넌트 인터페이스의 출력 포트들 중 하나인 이벤트 목적지로 흘러야 하는 소스로부터 나오는 이벤트들을 표시하기 위하여, 상기 복합 컴포넌트의 인터페이스의 입력 포트들 또는 서브컴포넌트 인터페이스의 출력 포트들 중 하나인 하나 이상의 이벤트 소스들을 상기 이벤트 목적지와 연관시킴으로써, 상기 복합 컴포넌트 모델로서 상기 하나 이상의 컴포넌트를 모델링하는 단계; 및
    상기 단위 컴포넌트의 동작을 더 결정하기 위해 하나 이상의 알고리즘을 정 의하고, 상기 단위 컴포넌트 모델이 따르는 상기 하나 이상의 인터페이스의 파라미터에 대해 하나 이상의 값들을 지정함으로써, 상기 단위 컴포넌트 모델의 인스턴스로서 상기 하나 이상의 단위 컴포넌트를 생성하는 단계
    를 더 포함하는 컴퓨터 시스템의 0 이상의 모델링, 0 이상의 구현, 및 0 이상의 배치를 조정하는 방법.
  3. 제1항에 있어서, 상기 복합 컴포넌트 모델 또는 단위 컴포넌트 모델 중 하나로서 상기 하나 이상의 컴포넌트를 모델링하는 단계, 및 상기 복합 컴포넌트 모델 또는 상기 단위 컴포넌트 모델의 인스턴스로서 상기 하나 이상의 복합 컴포넌트를 형성하는 단계는,
    상기 하나 이상의 정의된 인터페이스의 상기 입력 포트에 도달하는 하나 이상의 이벤트에 응답하기 위한 규칙을 지정함으로써 상기 단위 컴포넌트 모델로서 상기 하나 이상의 컴포넌트를 모델링하는 단계; 및
    하나 이상의 복합 컴포넌트 모델에 지정된 상기 하나 이상의 컴포넌트 인터페이스를 하나 이상의 실제 컴포넌트에 바인딩하고, 상기 복합 컴포넌트 모델에 의해 구현된 상기 하나 이상의 인터페이스의 파라미터로서 하나 이상의 값들을 지정함으로써, 상기 복합 컴포넌트 모델의 인스턴스로서 하나 이상의 복합 컴포넌트를 생성하는 단계
    를 더 포함하는 컴퓨터 시스템의 0 이상의 모델링, 0 이상의 구현, 및 0 이상의 배치를 조정하는 방법.
  4. 제1항에 있어서,
    상기 하나 이상의 정의된 인터페이스의 상기 입력 포트에 도달하는 하나 이상의 이벤트에 응답하기 위한 규칙을 지정하고, 상기 인터페이스의 입력 포트의 서로소 집합(disjoint set)에 대해, 입력 이벤트가 상기 서로소 집합의 모든 입력 포트에 도달했을 때 호출되는 메소드의 이름을 지정하는 단계
    를 더 포함하는 컴퓨터 시스템의 0 이상의 모델링, 0 이상의 구현, 및 0 이상의 배치를 조정하는 방법.
  5. 제1항에 있어서,
    상기 하나 이상의 정의된 인터페이스의 상기 입력 포트에 도달하는 하나 이상의 이벤트에 응답하기 위한 규칙을 지정하는 단계, 및 들어오는 이벤트 스트림에 대해 매치될 인터리브(interleaved) 동작을 갖는 정규 표현(regular expression)을 지정하는 단계를 더 포함하고, 상기 정규 표현에 제공되는 알파벳 기호는 상기 인터페이스의 상이한 입력 포트에 도달하는 이벤트에 매치되고, 상기 인터리브 동작은 상기 인터페이스의 지정된 출력 포트에서의 이벤트 방출을 포함할 수 있는 것인, 컴퓨터 시스템의 0 이상의 모델링, 0 이상의 구현, 및 0 이상의 배치를 조정하는 방법.
  6. 제2항에 있어서,
    상기 하나 이상의 정의된 인터페이스를 따르는 복합 컴포넌트 모델을 모델링하는 단계는,
    도달하는 이벤트에 응답하여 다양한 상태로의 전이를 실행하는 유한 상태 기계를 지정하는 단계, 및 어느 서브컴포넌트 및 이벤트의 소스/이벤트의 목적지(event-source/event-destination) 연관이 현재 활성인지를 실행 상태로부터 판단하는 단계를 더 포함하는 것인, 컴퓨터 시스템의 0 이상의 모델링, 0 이상의 구현, 및 0 이상의 배치를 조정하는 방법.
  7. 제2항에 있어서,
    상기 복합 컴포넌트 모델은,
    정의된 이벤트 소스와 상기 정의된 이벤트 소스의 연관된 이벤트 목적지 사이의 모든 이벤트들에 변환을 적용하는 단계를 더 포함하는 것인, 컴퓨터 시스템의 0 이상의 모델링, 0 이상의 구현, 및 0 이상의 배치를 조정하는 방법.
  8. 제2항에 있어서,
    상기 복합 컴포넌트 모델 또는 상기 단위 컴포넌트 모델 중 0개 이상은 그래픽 사용자 인터페이스(GUI)를 나타내고, 하나 이상의 복합 컴포넌트 모델은 상기 그래픽 사용자 인터페이스의 각각의 페이지에 대해 하나의 서브컴포넌트를 포함하며,
    상기 하나 이상의 정의된 인터페이스를 따라는 복합 컴포넌트 모델을 생성하 는 단계는,
    상기 도달하는 이벤트에 응답하여 다양한 상태로의 전이를 실행하는 유한 상태 기계를 지정하는 단계를 더 포함하고,
    상기 서브컴포넌트들 중 정확하게 한 개의 서브컴포넌트는 임의의 때에 활성이 되는 상기 유한 상태 기계의 상태에 의해 결정되고, 상기 유한 상태 기계의 상기 전이는 상기 그래픽 사용자 인터페이스의 페이지들 사이의 상기 그래픽 사용자 인터페이스의 사용자 네비게이션에 대응하는 것인, 컴퓨터 시스템의 0 이상의 모델링, 0 이상의 구현, 및 0 이상의 배치를 조정하는 방법.
  9. 컴퓨터 시스템의 0 이상의 모델링, 0 이상의 구현, 및 0 이상의 배치를 조정하기 위해 설계자, 구현자, 및 배치자를 보조하는 시스템에 있어서,
    분산 컴퓨팅 시스템의 하나 이상의 물리적 노드 상에서 실행되는 하나 이상의 런타임 플랫폼;
    상기 시스템의 일부가 아닌 하나 이상의 외부 런타임 플랫폼을 식별하는 하나 이상의 리소스 식별자;
    컴퓨터 시스템의 상기 설계자, 구현자, 및 배치자들이,
    인터페이스 정의 유닛에 의해 하나 이상의 컴포넌트에 대해 하나 이상의 인터페이스를 정의하는 단계로서, 상기 하나 이상의 컴포넌트 각각은 이벤트 스트림을 소모하거나, 이벤트 스트림을 생산하거나, 또는 양자 모두를 수행하며, 상기 하나 이상의 인터페이스 각각은 각각 이름 및 타입을 갖는 0개 이상의 입력 포 트, 각각 이름 및 타입을 갖는 0개 이상의 출력 포트, 및 각각 이름 및 타입을 갖는 0개 이상의 파라미터를 포함하는 것인, 하나 이상의 인터페이스 정의 단계;
    모델링 유닛에 의해 복합 컴포넌트 모델 또는 단위 컴포넌트 모델 중 하나로서 상기 하나 이상의 컴포넌트를 모델링하는 단계;
    인스턴스 생성(instantiation) 유닛에 의해 상기 복합 컴포넌트 모델 또는 단위 컴포넌트 모델의 인스턴스로서 하나 이상의 복합 컴포넌트 및 단위 컴포넌트의 인스턴스를 각각 형성하는 단계;
    도메인 모델링 유닛에 의해 컴퓨터 시스템의 하나 이상의 컴퓨터 리소스의 도메인 모델을 생성하는 단계;
    배치 모델링 모델링 유닛에 의해, 상기 도메인 모델의 상기 복합 컴포넌트 모델, 상기 단위 컴포넌트 모델, 또는 양자 모두의 인스턴스 중 어느 인스턴스가 상기 하나 이상의 런타임 플랫폼 상에서 실행될 것인지를 지정하고, 상기 하나 이상의 런타임 플랫폼 각각에 IP 어드레스 및 포트 넘버를 할당함으로써, 배치 모델을 생성하는 단계 중 하나 이상을 수행하는 것을 가능하게 하는 하나 이상의 도구 유닛; 및
    제2 실행 가능한 코드가 따를 수 있는 제1 실행 가능한 프로그램 코드를 상기 복합 컴포넌트 모델 또는 상기 단위 컴포넌트 모델로부터 발생시키는 하나 이상의 코드 발생기
    를 포함하는 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 보조하는 시스템.
  10. 제9항에 있어서,
    상기 모델링 유닛에 의해 복합 컴포넌트 모델 또는 단위 컴포넌트 모델 중 하나로서 상기 하나 이상의 컴포넌트를 모델링하는 단계는,
    설계의 일부인 하나 이상의 서브컴포넌트에 대해 하나 이상의 컴포넌트 인터페이스를 지정하고, 서브컴포넌트 인터페이스의 입력 포트들 또는 상기 복합 컴포넌트 인터페이스의 출력 포트들 중 하나인 이벤트 목적지로 흘러야 하는 소스로부터 나오는 이벤트들을 표시하기 위하여, 상기 복합 컴포넌트의 인터페이스의 입력 포트들 또는 서브컴포넌트 인터페이스의 출력 포트들 중 하나인 하나 이상의 이벤트 소스들을 상기 이벤트 목적지와 연관시킴으로써 상기 복합 컴포넌트 모델을 모델링하는 단계; 및
    상기 하나 이상의 정의된 인터페이스의 상기 입력 포트에 도달하는 하나 이상의 이벤트에 응답하기 위한 규칙을 지정함으로써 상기 단위 컴포넌트 모델을 모델링하는 단계
    를 더 포함하는 것인, 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 보조하는 시스템.
  11. 제9항에 있어서,
    상기 복합 및 단위 모델링 유닛에 의해 상기 복합 컴포넌트 모델 또는 단위 컴포넌트 모델 중 하나로서 상기 하나 이상의 컴포넌트를 생성하는 단계는,
    상기 하나 이상의 복합 컴포넌트 모델에 지정된 상기 하나 이상의 컴포넌트 인터페이스를 하나 이상의 실제 컴포넌트에 바인딩하고, 상기 복합 컴포넌트 모델에 의해 구현된 상기 하나 이상의 인터페이스의 파라미터로서 하나 이상의 값들을 지정함으로써 상기 복합 컴포넌트 모델의 인스턴스로서 하나 이상의 복합 컴포넌트를 생성하는 단계; 및
    상기 단위 컴포넌트의 동작을 더 결정하기 위해 하나 이상의 알고리즘을 정의하고, 상기 단위 컴포넌트 모델이 따르는 상기 하나 이상의 인터페이스의 파라미터에 대해 하나 이상의 값들을 지정함으로써 상기 단위 컴포넌트 모델의 인스턴스로서 상기 하나 이상의 단위 컴포넌트를 생성하는 단계
    를 더 포함하는 것인, 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 보조하는 시스템.
  12. 제9항에 있어서,
    상기 도메인 모델링 유닛은,
    범용 컴퓨터, 특수 용도의 컴퓨터, 센서, 및 액튜에이터 중 하나 이상을 포함하는 목표 실행 환경의 상기 하나 이상의 런타임 플랫폼을 지정하는 단계, 및 하나 이상의 컴포넌트 모델 인스턴스를 지정하는 단계를 더 포함하는 것인, 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 보조하는 시스템.
  13. 제9항에 있어서,
    상기 하나 이상의 코드 발생기는 상기 서브컴포넌트와 연관된 입력 대기행렬(queue) 및 출력 대기행렬들 사이에 이벤트를 이동시키고, 상기 이벤트 각각의 개별 입력 대기행렬내의 이벤트들을 처리하기 위하여 하나 이상의 서브컴포넌트를 호줄하며, 상기 복합 컴포넌트로부터 출력 이벤트를 방출함으로써, 이벤트의 도달에 응답하기 위하여 상기 복합 컴포넌트 모델로부터 코드를 발생시키는 것인, 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 보조하는 시스템.
  14. 제13항에 있어서,
    상기 코드 발생기에 의해 발생된 코드는 또한 상기 대기행렬들 사이에서 이동되면서 이벤트에 변환을 적용하는 것인, 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 보조하는 시스템.
  15. 제13항에 있어서,
    상기 코드 발생기에 의해 발생된 코드는 또한 상기 복합 컴포넌트에 도달하는 이벤트에 응답하여 상기 복합 컴포넌트 모델에 연관된 유한 상태 기계의 상태를 업데이트하고, 상기 유한 상태 기계의 상태에 기초하여 서브컴포넌트 및 접속을 활성화 및 비활성화하는 것인, 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 보조하는 시스템.
  16. 제11항에 있어서,
    상기 단위 컴포넌트 모델링단계는,
    상기 인터페이스의 입력 포트에 도달하는 이벤트에 대한 응답을 지정하고, 상기 인터페이스의 입력 포트의 서로소 집합에 대하여, 입력 이벤트가 상기 서로소 집합의 모든 입력 포트들에 도달하였을 때, 호출될 메소드의 이름을 지정하는 하나 이상의 규칙을 포함하는 것인, 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 보조하는 시스템.
  17. 제17항에 있어서,
    상기 코드 발생기는 모델링된 컴포넌트에 대해 상기 모델에서 명명된 각각의 메소드에 대해 엠프티 메소드 바디를 갖는 골격 소스(skeletal source) 코드를 발생시키는 것인, 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 보조하는 시스템.
  18. 제11항에 있어서,
    상기 단위 컴포넌트를 모델링하는 단계는,
    상기 인터페이스의 입력 포트에 도달하는 이벤트에 대한 응답을 지정하고, 들어오는 이벤트 스트림에 대해 매치되는 인터리브 동작을 갖는 정규 표현을 지정하는 하나 이상의 규칙을 포함하고, 상기 정규 표현의 각각의 알파벳 기호는 상기 인터페이스의 상이한 입력 포트에 도달하는 이벤트에 매치되고, 상기 인터리브 동작은 상기 인터페이스의 지정된 출력 포트에서의 이벤트 방출을 포함할 수 있는 것인, 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 보조하는 시스템.
  19. 제18항에 있어서,
    상기 코드 방생기는 상기 정규 표현을 인식하는 유한 상태 기계을 위한 전이표를 발생시키고, 상기 전이표의 각각의 엔트리는 상기 유한 상태 기계가 지정되었던 예전 상태에 있는 동안, 상기 정규 표현의 특정 알파벳 기호에 매치되는 이벤트의 도달시, 수행될 동작 및 새로운 상태를 지정하는 것인, 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 보조하는 시스템.
  20. 제18항에 있어서,
    상기 코드 발생기는 상기 정규 표현에 의해 지정되는 바와 같이 입력 이벤트를 처리하는 동작을 갖는 상태유지(stateful) 데이터 구조의 표시를 발생시키는 것인, 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 보조하는 시스템.
  21. 제10항에 있어서,
    상기 복합 컴포넌트의 모델은 도달하는 이벤트에 응답하여 다양한 상태로의 전이를 실행하는 상태 기계의 명세(specification)를 포함하는 것인, 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 보조하는 시스템.
  22. 제9항에 있어서,
    상기 통합 개발 유닛은 통합 개발 환경(IDE; integrated development environment)을 포함하는 것인, 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 보조하는 시스템.
  23. 제9항에 있어서,
    상기 도구 유닛은 상기 런타임 플랫폼을 관리하기 위해 하나 이상의 도메인 제어기를 포함하는 것인, 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 보조하는 시스템.
  24. 제9항에 있어서,
    상기 도구 유닛은 상기 하나 이상의 컴포넌트가 저장되는 하나 이상의 라이브러리 서버를 포함하는 것인, 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 보조하는 시스템.
  25. 제23항에 있어서,
    상기 도구 유닛은, 컴포넌트 인터페이스를 표시하는 아이콘들이 복합 컴포넌트 모델을 구성하는데 이용되는 그래픽 에디터의 캔버스 상으로 드래그 및 드롭핑되는 팔레트를 포함하여, 상기 복합 컴포넌트 모델의 서브컴포넌트 인터페이스가 상기 드래그 및 드롭핑된 아이콘들에 의해 표시되는 것들을 포함한다는 것을 명시할 수 있는 것인, 컴퓨터 시스템의 설계자, 구현자, 및 배치자를 보조하는 시스템.
KR1020080097701A 2007-10-22 2008-10-06 분산 컴퓨팅 기반 구조를 통해 센서 및 액튜에이터 애플리케이션을 개발, 배치하기 위한 시스템 및 방법 KR101019228B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/876,682 US20090106011A1 (en) 2007-10-22 2007-10-22 System and method for developing and deploying sensor and actuator applications over distributed computing infrastructure
US11/876,682 2007-10-22

Publications (2)

Publication Number Publication Date
KR20090040840A true KR20090040840A (ko) 2009-04-27
KR101019228B1 KR101019228B1 (ko) 2011-03-04

Family

ID=40564359

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080097701A KR101019228B1 (ko) 2007-10-22 2008-10-06 분산 컴퓨팅 기반 구조를 통해 센서 및 액튜에이터 애플리케이션을 개발, 배치하기 위한 시스템 및 방법

Country Status (2)

Country Link
US (1) US20090106011A1 (ko)
KR (1) KR101019228B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101355273B1 (ko) * 2012-06-13 2014-01-27 가시오게산키 가부시키가이샤 컴퓨팅 시스템 및 그 실행 제어 방법과, 그 실행 제어 프로그램을 기록한 기록 매체
US8769488B2 (en) 2011-09-14 2014-07-01 Electronics And Telecommunications Research Institute Component composing apparatus and method using virtual components in component-based robot software development
KR20170103218A (ko) * 2016-03-03 2017-09-13 한국전자통신연구원 스트림 분석 장치 및 방법

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8392896B2 (en) * 2009-03-06 2013-03-05 Microsoft Corporation Software test bed generation
US20100318440A1 (en) * 2010-03-18 2010-12-16 Coveley Michael Ej Cashierless, Hygienic, Automated, Computerized, Programmed Shopping Store, Storeroom And Supply Pipeline With Administration Cataloguing To Eliminate Retail Fraud; With Innovative Components For Use Therein
US20120102406A1 (en) * 2010-10-21 2012-04-26 Hilmar Demant Composition model for components of a user interface framework for web applications
US9996634B2 (en) * 2010-12-15 2018-06-12 Autodesk, Inc. Computer-aided design and manufacturing system and method for composite part manufacturing method and system
US9286037B2 (en) 2010-12-29 2016-03-15 Microsoft Technology Licensing, Llc Platform for distributed applications
US9569274B2 (en) 2012-10-16 2017-02-14 Microsoft Technology Licensing, Llc Distributed application optimization using service groups
KR102013704B1 (ko) 2012-11-26 2019-08-23 한국전자통신연구원 로봇용 소프트웨어 컴포넌트 조합 장치 및 방법
US20140282369A1 (en) * 2013-03-14 2014-09-18 Adminovate, Inc. Software application generator
CN103412745B (zh) * 2013-07-18 2016-08-24 中国联合网络通信集团有限公司 一种开发及应用平台
US9411562B2 (en) * 2013-08-20 2016-08-09 Oracle International Corporation Inter-application transform builder for cloud applications
KR102092721B1 (ko) * 2016-03-23 2020-04-23 포그혼 시스템스 인코포레이티드 실시간 데이터플로우 프로그래밍에서 패턴 구동형 반응의 구성
US10444975B2 (en) * 2017-07-18 2019-10-15 Google Llc Graphical icon manipulation
US10868717B2 (en) * 2019-01-31 2020-12-15 Hewlett Packard Enterprise Development Lp Concurrent profile deployments
CN110413594A (zh) * 2019-06-25 2019-11-05 苏州浪潮智能科技有限公司 一种Redis多实例压力测试方法和装置
CN113344393B (zh) * 2021-06-11 2022-07-22 江西洪都航空工业集团有限责任公司 一种基于v模型产品研制流程的资源构建方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020104067A1 (en) * 1999-12-29 2002-08-01 Green David W. Method and system and article of manufacture for an N-tier software component architecture application
US7055107B1 (en) 2000-09-22 2006-05-30 Wireless Valley Communications, Inc. Method and system for automated selection of optimal communication network equipment model, position, and configuration

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8769488B2 (en) 2011-09-14 2014-07-01 Electronics And Telecommunications Research Institute Component composing apparatus and method using virtual components in component-based robot software development
KR101355273B1 (ko) * 2012-06-13 2014-01-27 가시오게산키 가부시키가이샤 컴퓨팅 시스템 및 그 실행 제어 방법과, 그 실행 제어 프로그램을 기록한 기록 매체
KR20170103218A (ko) * 2016-03-03 2017-09-13 한국전자통신연구원 스트림 분석 장치 및 방법

Also Published As

Publication number Publication date
US20090106011A1 (en) 2009-04-23
KR101019228B1 (ko) 2011-03-04

Similar Documents

Publication Publication Date Title
KR101019228B1 (ko) 분산 컴퓨팅 기반 구조를 통해 센서 및 액튜에이터 애플리케이션을 개발, 배치하기 위한 시스템 및 방법
Hussein et al. Model-driven development of adaptive IoT systems.
US7657404B2 (en) Engineering method and system for industrial automation systems
Hoheisel User tools and languages for graph‐based Grid workflows
Kirchhof et al. Montithings: Model-driven development and deployment of reliable iot applications
US20130290239A1 (en) Method and a system for service lifecycle management in networked environments
US20090144703A1 (en) Method and system for versioning a software system
Berardinelli et al. Model-driven systems engineering: Principles and application in the CPPS domain
US7581226B2 (en) Software application software architecture and method for the construction of software applications especially for measuring systems
Butting et al. Systematic language extension mechanisms for the MontiArc architecture description language
Salman et al. Sennet: a programming toolkit to develop wireless sensor network applications
Muhammad et al. SOA4DERTS: A Service-Oriented UML profile for distributed embedded real-time systems
Camilli et al. Design-Time to Run-Time Verification of Microservices Based Applications: (Short Paper)
Gutiérrez et al. Progress in robocomp
Dinkloh et al. A tool for integrated design and implementation of conversations in multiagent systems
Schattkowsky et al. Uml model mappings for platform independent user interface design
Erbel et al. Dynamic Management of Multi-level-simulation Workflows in the Cloud
Hassane et al. Process Enactment with Traceability Support for NFV Systems
Alhaj Automatic Derivation of Performance Models in the Context of Model-Driven SOA
Brennan et al. IEC 61499 and the Promise of Holonic Systems
Chen et al. DRIVE: A tool for developing, deploying, and managing distributed sensor and actuator applications
Tao et al. Model Based Methodology and Framework for Design and Management of Next-Gen IoT Systems.
Hiba et al. AutoCADep: An Approach for Automatic Cloud Application Deployment
Happe et al. Completion and extension techniques for enterprise software performance engineering
Van Tendeloo A foundation for multi-paradigm modelling

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20131220

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150209

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee