KR19980024914A - 분산 객체상의 공식적인 약정 및 개인명의 컨스트레인트를 자동으로 점검하기 위한 방법 및 장치 - Google Patents

분산 객체상의 공식적인 약정 및 개인명의 컨스트레인트를 자동으로 점검하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR19980024914A
KR19980024914A KR1019970048508A KR19970048508A KR19980024914A KR 19980024914 A KR19980024914 A KR 19980024914A KR 1019970048508 A KR1019970048508 A KR 1019970048508A KR 19970048508 A KR19970048508 A KR 19970048508A KR 19980024914 A KR19980024914 A KR 19980024914A
Authority
KR
South Korea
Prior art keywords
client
server
code
checking
constraint
Prior art date
Application number
KR1019970048508A
Other languages
English (en)
Inventor
룽코 둥
스리람 산카르
마크 이 헤프너
Original Assignee
올젠 케네스
썬 마이크로시스템스 인코퍼레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 올젠 케네스, 썬 마이크로시스템스 인코퍼레이티드 filed Critical 올젠 케네스
Publication of KR19980024914A publication Critical patent/KR19980024914A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F19/00Complete banking systems; Coded card-freed arrangements adapted for dispensing or receiving monies or the like and posting such transactions to existing accounts, e.g. automatic teller machines
    • G07F19/20Automatic teller machines [ATMs]
    • G07F19/211Software architecture within ATMs or in relation to the ATM network
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F17/00Coin-freed apparatus for hiring articles; Coin-freed facilities or services
    • G07F17/0014Coin-freed apparatus for hiring articles; Coin-freed facilities or services for vending, access and use of specific services not covered anywhere else in G07F17/00
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F17/00Coin-freed apparatus for hiring articles; Coin-freed facilities or services
    • G07F17/16Coin-freed apparatus for hiring articles; Coin-freed facilities or services for devices exhibiting advertisements, announcements, pictures or the like
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F19/00Complete banking systems; Coded card-freed arrangements adapted for dispensing or receiving monies or the like and posting such transactions to existing accounts, e.g. automatic teller machines
    • G07F19/20Automatic teller machines [ATMs]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명은 분산 시스템에서, 공식적인 약정 및 개인명의 컨스트레인트를 포함하는 사양에 따라서 객체를 자동으로 점검하기 위한 방법 및 장치에 관한 것이다. 공식적인 약정은 클라이언트 및 서버 모두에 의해서 반응되며, 한편 개인명의 컨스트레인트는 클라이언트 또는 서버에 의해서 반응되지만, 주어진 개인명의 컨스트레인트에 대해서는, 모두에 의해서 반응되지 않는다. 클라이언트-투-서버 또는 서버-투-클라이언트 거래 또는 콜의 각각의 단계 및 모든 단계에서, 콜과 관련된 객체 또는 파라미터는 사양이 부합되도록 자동으로 점검된다. 클라이언트상의 클라이언트-사이드 스텁은 서버로 통신망 이전을 하기 전에 클라이언트상에서 개인명의 클라이언트-사이드 컨스트레인트 및 공식적인 약정을 모두 점검하기 위해 점검 코드를 자동을 발생하며 실행한다. 서버는 콜 및 객체를 대행수신하는 서버-사이드 골격을 갖는다. 서버-사이드 골격은, 있다면, 클라이언트와의 공식적인 약정 및 어떤 개인명의 서버-사이드 컨스트레인트를 점검하기 위해 자동을 발생된 코드에 의해서 점검을 수행한다. 일단 점검이 완료되면, 콜은 처리되며 서버 리턴이 결과이다. 리턴 객체는 통신망상에서 클라이언트로 이전된다. 클라이언트-사이드 스텁은, 클라이언트에 의해서 초기에 전달된 콜과 관련된 객체에 대해 점검된 사양과 다를수 있는 리턴 객체의 사양에 따라서 자동 점검을 수행한다.

Description

분산 객체상의 공식적인 약정 및 개인명의 컨스트레인트를 자동으로 점검하기 위한 방법 및 장치
본 발명은 컴퓨터 시스템 분야에 관한 것으로서, 특히 본 발명은 분산 컴퓨터 시스템(distributed computer system)에서 객체의 규제(regulation of object)에 관한 것이다.
자동 텔러 머시인(automated teller machine: ATM) 통신망과 같은 분산 시스템에서, 개별 ATM 장치와 같은 클라이언트는, 거래(tranaction) 처리가 ATM 장치와 인터페이스하는 은행의 컴퓨터 시스템과 같은 서버에 의해서 서비스된다. ATM 통신망은 분산 시스템이다. 왜냐하면 서로들 사이에서 정보(객체)를 거래하는 하나 이상의 서버에 부착된 많은 클라이언트가 있을 수 있기 때문이다. 관례적으로, 분산 객체는, 규칙(rule)인 공통 사양(specification)과 그 객체가 지배를 받는 의미론(semantics)에 따라서 반응하도록 되어있다. 예를들어, 은행 고객의 계좌 차감 잔액(account balance)은 분산되는 하나의 객체이다. 규칙 또는 사양은 출금이 계좌 차감 잔액을 초과하지 못하는 것으로서, 이러한 사양은 클라이언트 및 서버에 공통으로 적용된다.
분산 시스템에는, 클라이언트 또는 서버중 어느 하나에만 반응할 필요가 있고, 양쪽 모두에는 반응할 필요가 없는 개인명의 컨스트레인트(constraints)가 있다. 개인명의 컨스트레인트의 예에는 출금이 이루어질 때 은행의 차감 계정의 전체 자산난을 차변기입하는 것이 있다. 컨스트레인트는 서버에 대해서 사적인 것이다. 왜냐하면 그 클라이언트가 은행의 전체 자산 계정에 포함되거나 그것에 의해서 영향을 받지 않기 때문이다. 클라이언트에 대해서 개인명의 컨스트레인트는 고객에 의해서 인출되고자 하는 금액이 ATM 장치의 금고에서 실제적으로 사용가능해야 함을 의미한다. 서버는 통화가 ATM 장치에서 사용가능한지의 여부를 결정하는데는 관계가 없다. 그러므로, 컨스트레인트는 클라이언트에 대해서는 사적인 것이다.
분산 시스템이 양호한 신뢰도를 갖는 것을 보장하기 위해서, 개인명의 컨스트레인트 및 공식적인 약정 모두가 점점되어야 한다. 그러나, 종래의 분산 시스템에서, 개인명의 컨스트레인트를 자동으로 점검하려는 노력이 없었고, 사실상, 개인명의 컨스트레인트는 그와 같이 고려되지도 않았다. 그러므로, 약정 또는 컨스트레인트가 지급되는지를 보기위한 검사를 포함하는 점검은 공식적인 약정에서만 수행되었으며, 자동으로는 수행되지 않았다. 점검될 때에도, 서버-투-클라이언트 통신망 구성에서 야기되는 잠재적인 문제는 적절히 규명되지 않았다. ATM 통신망에서는, 계좌 차감 잔액이 서버로 전달되면, 사용자에게 보여주기 위해서, 차감 잔액을 전달하도록하는 속성이 있다. 그동안, 차감 잔액이 사용자에게 보여지는 한편, 그러한 차감 잔액을 변경시키는 서버 자체에서 또 다른 차변 기입 거래가 발생하게 될 수 있다. 그러한 차감 잔액이 또 다른 요구나 거래가 발생될 때까지 클라이언트에 업데이트되지 않으면, 총액은 부정확하다. 또한, 금전이 ATM에서 인출되고 있으면, 서버에 거래를 다시 전달하게 되는 속성으로 인해서, 서버는 일시적으로 부정확한 차감 잔액을 갖는다.
따라서, 객체가 분산 시스템에서 사양을 신뢰성있게 따르는 것을 보장하도록 개인명의 컨스트레인트 및 공식적인 약정을 자동으로 점검할 필요가 있다.
분산 시스템에서, 클라이언트와 서버 사이에서 거래되는 객체는 어떤 규칙 또는 사양에 따라야 반응해야 한다. 사양은 두가지 형태의 규칙으로 이루어진다. 즉, 공식적인 약정과 개인명의 컨스트레인트이다.
공식적인 약정은 클라이언트 및 서버에 따라서 반응한다. 개인명의 컨스트레인트는 클라이언트 또는 서버에 의해서 반응하지만, 주어진 개인명의 컨스트레인트에 대해서는 양쪽에 의해서 반응하지 않는다. 클라이언트-투-서버 또는 서버-투-클라이언트 거래 또는 콜의 각 단계에서, 콜과 관련된 객체 또는 파라매터는 이전(transfer)되기 전에 처리된다. 클라이언트 콜에서, 클라이언트-사이드 스텁(stub)은 콜과 관련된 객체를 통신망으로 이전시키기 위해 그 객체를 정렬시킨다. 본 발명에 따른 클라이언트-사이드 스텁은 이전이 발생되기 전에 서버와 클라이언트 사이의 개인명의 클라이언트-사이드 컨스트레인트 및 공식적인 약정 모두를 점검하기 위한 코드를 자동으로 발생한다. 일단 클라이언트-사이드 사양이 점검되면, 정렬된 객체 및 클라이언트 콜이 통신망상에서 서버로 이전된다.
서버는 콜 및 정렬된 객체를 대행수신하는(intercept) 서버-사이드 골격(skeleton)을 갖는다. 그 골격은 객체를 정렬하지 않으며, 만약 있다면 클라이언트와의 공식적인 약정 및 어떤 개인명의 서버-사이드 컨스트레인트를 점검하기 위해 자동으로 발생된 코드에 의해서 점검을 수행한다. 일단 점검이 완료되면, 콜이 처리되어 서버가 결과를 리턴한다. 리턴 객체는 정렬되어 골격에서 점검되며 그후 통신망상에서 클라이언트로 이전된다. 클라이언트-사이드 스텁은 리턴 객체를 정렬하지 않으며 그후 콜과 관련된 객체에 대해 점검된 사양과는 다를 수도 있는 그 사양에 따라서 점검을 수행한다.
도1은 점검하지 않는 분산 시스템을 도시한 도면.
도2는 자동 클라이언트 및 서버 점검을 수행하는 분산 시스템을 도시한 도면.
도3은 서버와 클라이언트 사이의 공식적인 약정 및 개인명의 컨스트레인트를 모두 치환한 상태를 도시한 도면.
도4는 클라이언트-사이드 점검 코드 발생에 대한 흐름도.
도5는 서버-사이드 코드 점검 발생에 대한 흐름도.
도6은 클라이언트-사이드 스텁 기능에 대한 의사-코드.
도7은 서버-사이드 골격 기능에 대한 의사-코드.
도8은 자동 점검이 컴퓨터 시스템에서 실시될 때의 예를 도시한 도면.
*도면의 주요부분에 대한 부호의 설명
10: 서버 15: 서버 사이드 골격
20: 통신망 30: 클라이언트
35: 클라이어트 사이드 스텁
이어지는 정의는 여러 실시예에서 본 발명의 범위를 제한하려는 의도가 아니고, 오히려 여기서 설명되는 상세한 설명을 간단히 하기위해서 제공된 것이다. 또한, 이러한 용어가 일반적으로 컴퓨터 프로그래밍 기술에서 공지되었고 특히 객체-지향적 프로그래밍에서 공지되었기 때문에, 그것은 깊이있게 논의되지 않는다.
객체는 변수, 변수 셋트, 열(array), 기록 또는 파일, 또는 어떤 데이터 구조 또는 컴퓨터 시스템 또는 컴퓨터 시스템 통신망에서 사용되는 클래스를 말한다. 더욱 일반적으로 말하면, 객체는 데이터를 수신, 전송 또는 처리할 수 있는 어떤 장치에서 그러한 데이터를 표시하는데 사용된다. 또한 객체는 변수 또는 데이터 구조 자체보다도, 메모리 어드레스 또는 포인터와 같은, 변수 또는 데이터 구조에 대한 참조를 일컷는 것일수 있다.
클라이언트는 하나의 장치, 컴퓨터 시스템 또는 컴퓨터 시스템의 서브시스템으로서, 어떤 객체를 수신하고 처리하기 위해서 또다른 장치, 컴퓨터 시스템 또는 컴퓨터 시스템의 서브시스템에 의존한다. 클라이언트가 의존하는 장치, 컴퓨터 시스템 또는 컴퓨터 시스템의 서브시스템은 서버로 공지되어 있다. 분산 시스템은, 객체와 관련된 작업을 완수하기 위해 그 객체와 통신하는 하나 이상의 클라이언트 및 서버를 갖추고 있는 것이다. 하나의 분산 시스템에서, 클라이언트 및 서버는 근거리 통신망(LAN) 또는 광역망(WAN)과 같은 일부 통신망을 통해서 통신하는 실제로 독특한 시스템 또는 장치이지만, 개념적으로는 클라이언트 및 서버가 그러한 시스템의 일부이며 버스와 같은 것을 통해서 통신하는 하나의 실제적인 시스템만을 포함할 수 있다.
객체를 정렬한다(marshaling)는 것은 하나의 통신망 또는 다른 통신 매체상에서 이전시키기 위해서 하나 또는 그 이상의 객체를 함께 묶기위한 방법을 말한다. 정렬된 객체는 이전의 수령인에게서 이용되기 전에 그 원래의 형태로 해체되거나 풀리게된다.
콜은, 그 용어를 컴퓨터 프로그래밍 기술에서 이해할수 있드시, 콜이 수신하는 하나의 객체 또는 객체 그룹(만약 있을때)을 이용하여 어떤 기능 또는 연산을 처리하거나 수행하는, 하나의 방법 또는 순서의 호출(invocation)을 말한다. 콜은 호출하는 방법 또는 순서가 완료된 결과로서 또 다른 객체를 리턴할 수 있다. 그러한 객체를 리턴이라고 한다.
사양은 분산 시스템내에서 객체 및 방법이 반응해야 하는 규칙 또는 규칙 셋트를 말한다. 점검은 객체를 이용하며/또는 객체가 사양에 맞도록하기 위해서 이러한 콜을 완료하므로 리턴 객체를 출력하는 콜의 동작을 검사하는 수단이다. 보통의 비-분산 시스템에서, 선결조건, 즉 콜에 대응하는 방법의 완료에 앞서서 검사되는 것은, 사양에 따른다를 것을 보장하는 것으로 충분할 때가 있다. 그러한 선결조건이 검사되어 만족되면, 적당한 콜/방법의 완료는, 가정해보면, 자동으로 진정한 선결조건을 야기시키며 결과적으로, 사양에 맞는 동작을 야기시킨다. 그러나, 이러한 가정은 후술되드시 선결조건 및 후결조건에 따라서 어떤 분산 시스템의 경우에는 실패한다.
사양은 본 발명의 여러 실시예에 예시된 바와같이 공식적인 약정 또는 개인명의 컨스트레인트 또는 그것들의 조합이 될수 있다. 공식적인 약정은 클라이언트 및 서버 모두에 의해서 반응하며, 어떤 하나의 개인명의 컨스트레인트는 서버나 클라이언트에 대해서는 전용적인(specific) 것이지만 둘다에 대해서는 그렇지 않다. 점검은 본 발명의 여러 실시예에 따라서, 그것이 요구될 때 개인명의 컨스트레인트 및 공식적인 약정 모두에서 발생할 수 있다.
도1은 공식적인 약정 및 개인명의 컨스트레인트를 점검하지 않는 종래 기술의 단일-클라이언트 단일-서버 분산 시스템을 도시한다. 도1은 일반적인 분산 시스템의 동작을 설명하기 위한 배경으로서 제공된다.
서버(10)는 통신망(20)과 인터페이스하기 위한 서버-사이드 골격(15)을 갖는다. 통신망(20)은 서버-사이드 골격(20) 및 클라이언트-사이드 스텁(35)과 결합되어 통신한다. 클라이언트 콜(38)은 클라이언트(35)에서 송출되는 것으로서 클라이언트 콜(38)의 속성에 대응하는 데이터 및 코드(집합적으로, 객체)를 갖는 클라이언트-사이드 스텁(35)에 의해서 정렬된다. 클라이언트 콜(38)은 통신망(20)상에서 전달되며 서버-사이드 골격(15)에 의해서 대행 수신된다. 서버-사이드 골격(15)은 수신된 객체의 정렬된 형태를 서버(10)에 의해서 이해된 포맷으로 해체한다. 서버(10)는 객체를 이용하여 클라이언트 콜(38)을 처리하여 서버 리턴(18)을 발생하는데, 이것 역시 하나의 객체가 될 수 있다. 클라이언트-사이드 스텁(35)은 서버 리턴(18)의 정렬된 형태를 수신하여 해체하므로 클라이언트는 서버 리턴(18)에 의해서 표시된 결과를 이해할 수 있다.
도1은 점검이 객체중 하나에서 수행되지 않는 분산 시스템을 도시한다. 점검에은, 일단 콜이 완료되었을 때, 사양이 그러한 콜로 인한 결과인 리턴 객체에 대해 확실히 반응하게 하는 것이 포함된다. 클라이언트 콜(38) 및 서버 리턴(18) 모두의 통신망이 이전하는 동안에 관련된 잠복된 내용은, 일단 그 사양을 따르는 동안에, 더 이상 그렇게 하지 않는 객체의 상태를 잠재적으로 불안정하게 한다. 또한, 특정한 서버에서 하나 이상의 클라이언트 콜이 호출되며, 어떤 객체에 대해서 유효한 것으로 검사된 선결조건은 서버에서 그러한 객체의 상태를 변경시키는 또다른 콜로 인해서 무효가 될 수도 있다. 따라서, 콜의 방법이 완료되는 동안, 유효 선결조건이 무효가 될 수 있어서, 무효 후결조건, 및 반응되지 않는 사양이 발생한다. 따라서, 객체에 대한 모든 콜에 대해서, 선결조건이 사실인지 여부를 확인하는 것만으로 점검하는 것으로도, 리턴 객체 및 콜이 사양에 반응하는 것을 보장한다.
도2는 본 발명의 일 실시예에 따라서 클라이언트 및 서버에서 자동 점검을 하는 단일-클라이언트 단일-서버 분산 시스템을 도시한다. 모든 구성장치는 도1의 구성장치와 유사하나 예외로 클라이언트-사이드 스텁(36)(도1의 클라이언트 -사이드 스텁(25)과 반대로 표시됨)와 서버-사이드 골격(16)(도1의 서버-사이드 골격(15)과 반대로 표시됨)이 다르다. 서버-사이드 골격(16) 및 클라이언트-사이드 스텁(36)은 각각 점검부(160,360)를 갖는데, 이는 공식적인 약정 및 개인명의 컨스트레인트 점검을 수행한다. 본 발명의 이러한 실시예와 다른 모든 실시예를 설명하는데 사용된 점검부는 프로그램되거나 컴퓨터에 의해서 발생된 순서로서, 이는 실제의 메모리나 기억장치에 기억된 컴퓨터 프로그램 코드 및 코드 모듈로서 수행되며 도8에 도시된 프로세서를 통해서 실행된다. 점검부에 대한 코드는 객체 지향적 프로그래밍에서 이미 공지된 인터페이스 정의 언어(IDL), 또는 보르네오(TM) (Sun Microsystems사의 제품)과 같은 IDL 확장을 지원하는 언어, 또는 C++ 와 같은 이동 공통장소 대 객체 지향적 언어(move commonplace to object-oriented language)에서 수행될 수 있다.
클라이언트 콜(38)이 클라이언트(30)로 부터 송출될 때, 클라이언트 콜(38)은, 클라이언트-사이드 스텁(36) (점검부(360))에 의해 자동으로 발생된 코드를 이용하여 서버(10)와의 공식적인 약정 및 클라이언트(30)와의 개인명의 컨스트레인트에 반응하는지를 점검하는 클라이언트-사이드 스텁(36)을 통해서 먼저 통과해야 한다. 클라이언트 콜(38)이 스텁(36)에 의해서 정렬되며 통신망상에서 이전되기 전에, 공식적인 약정 및 개인명의 컨스트레인트 점검을 위해서 발생된 코드는 클라이언트 콜(38)이 사양에 반응하도록 보장하기 위해 실행된다. 클라이언트 콜(38)은 통신망상에서, 점검부(160)를 이용하여, 먼저 정렬하고 이어서 점검하는 서버-사이드 골격(16)에 이전되어, 콜의 결과로 나오는 객체가 사양내의 공식적인 약정 및 개인명의 서버-사이드 컨스트레인트에 반응하게 된다. 클라이언트(38) (콜의 객체)가 서버-사이드 골격(16)에 의해서 점검되었으면, 서버는 서버 리턴(18)을 야기시킬수 있는 클라이언트 콜(18)을 실행한다. 서버 리턴(18)은 통신망 상에서 클라이언트로 다시 이전되기 전에 먼저 정렬되어야 한다. 서버 리턴(18)의 예에는 차감 잔액 조회에 대한 클라이언트 콜에 응답하여 ATM 장치로 리턴되는 차감 잔액의 량이 있다. 정렬된 형태의 서버 리턴(18)은 통신망상에서 이전되며, 클라이언트 스텁(36)과, 서버 리턴(18)이, 일단 해체되면, 공식적인 약정 및 개인명의 클라이언트-사이드 컨스트레인트에 반응하는지를 점검하는 점검부(360)에 의해서 수신된다. 마지막으로, 점검의 마지막이 완료될 때, 서버 리턴(18)은 양호한 정도의 사양 신뢰도를 갖는 클라이언트(30)에 의해서 사용될 수 있다.
예를들어, 클라이언트 콜(38)은, ATM 장치로부터 은행 고객에 의해서 현금으로 X 달러를 인출할 수 있다. 개인명의 컨스트레인트 및 공식적인 약정 점검에 따라서, 이러한 거래는 다음과 같이 동작할 수 있다. ATM 장치에서, 이러한 거래에 대해서 고객이 이미 그의 카드를 삽입하였고 인출 거래에 대한 승인을 받았다고 가정한다. 첫 번째 단계는 ATM 장치(클라이언트)에서 고객이 1) 어떤 계정(예금 또는 점검)을 선택하였고 2) 인출되는 금액을 선택하였는지를 조회하는 것이다. 이러한 고객이 하는 두가지 선택은, 거래가 완료되려면, 은행의 계정(서버) 데이터베이스에 이전되어야 하는 각각의 객체이다. 금액 객체 및 계정 형태 객체는 통신망상에서 안전하고 신뢰성있는 이전을 위해서 클라이언트에 의해서 먼저 정렬(패키지)된다. 또한 클라이언트 콜(인출 서비스) 요구 자체가 서버에 전달된다. 이러한 정렬은 클라이언트-사이드 스텁(ATM 장치내의 코드)에 의해서 수행되며 상기 스텁은 이어서 공식적인 약정 및 개인명의 클라이언트-사이드 점검에 대한 점검 코드를 실행한다.
이러한 예에서, 점검이 가능한 서버와 클라이언트 사이의 공식적인 약정은 고객이 선택된 계정 형태를 유지하는지 여부에 관계없다. 서버와 관련이 없는 개인명의 클라이언트-사이드 컨스트레인트는 거래를 실행하기 위해 ATM 장치의 잔고에 놓인 충분한 통화가 될 수 있다. 공식적인 약정 점검 코드는 서버를 억세스할 필요가 있으며 일부 인덱싱 방법에 의해서 서버에 기억되는 계정 형태로 고객의 계좌 번호를 점검할 필요가 있다. 약정이 반응되면(조건이 참이면), 거래는 발생되지만, 그렇지 않으면, 거래가 발생되지 않는다. 개인명의 클라이언트-사이드 컨스트레인트 점검 코드는, 이 경우에, 요구된 인출 금액과 기계에서 사용가능한 실제의 통화량 사이의 단순 비교가 될 수 있다.
자동 점검이 공식적이며 사적인, 이러한 사양의 부분들이 반응됨을 확인하거나 확인만 하면, 정렬된 객체가 서버로 전달될수 있다. 일단 객체 패키지가 서버에 도달하면, 그것들은 서버상의 골격에 의해서 계정 형태 객체 및 금액 객체의 원래 형태로 해체된다. 객체의 해체와 함께 콜을 수신하는 것은 공식적인 약정 및 개인명의 서버-사이드 컨스트레인트 점검 코드의 실행을 자동으로 트리거한다. 종래의 분산 시스템에서는, 이러한 공식적인 약정을 두 번째로 점검하는 것은 수행되지 않으며, 그러므로 시간 지연 또는 잠복기가 클라이언트상의 공식적인 약정을 점검하는 시간에 사용된 계정이 이제 마감되는 상황을 발생할 수 있다. 공식적인 약정을 다시 자동으로 점검하므로서, 본 발명의 이러한 실시예는 사양이 더 면밀하게 반응하며 통신망 잠복기 동안에 손상될 수 없게 한다. 서버-사이드 점검 코드는 계정이 사용가능하다는 것을 확인하는 공식적인 약정을 포함하며 또한 고객의 계정 차감잔액이 인출을 허용하기에 충분하다는 것을 요청하는 개인명의 서버-사이드 컨스트레인트를 포함한다. 그러므로, 계정 차감잔액이 인출 금액보다 작으면, 클라이언트에 에러 메시지가 리턴될 수 있다. 이러한 컨스트레인트는 개인명의의 것이지 공식적인 것이 아니다. 왜냐하면 은행이 계정 차감 잔액이 통신망상에서 클라이언트로 전달되는 것을 바라지 않을 수 있기 때문이다. 클라이언트는 고객의 계정에서 잔고의 확인과는 본질적으로 관련이 없으며, 이러한 작업은 은행에 속하며 결국은 서버에 속하는 일이다.
공식적인 약정 및 개인명의 컨스트레인트가 사양에 반응하는 것으로 점검되면, 인출을 위한 콜은, 서버가 잔고가 지불되었음을 표시하는, 부울 값과 같은, 리턴 승인(authorization) 객체를 발생하게 한다. 동시에, 서버에서 계정 차감 잔액으로부터 인출된 금액의 감산 역시 확실해 진다.
리턴 승인 객체 역시 클라이언트-사이드 스텁을 통해서 다시 통과해야 하지만, 이 경우에 점검이 수행되지 않거나 개시되지 않는다. 왜냐하면 스텁이 리턴 승인 객체상에서 수행하는 것을 점검하지 않기 때문이다. 이 예에서, 통화량은 인출을 위한 클라이언트 콜이 시작된 시간으로 부터 변경되지 않게된다. 왜냐하면 ATM이 한번에 하나의 거래만을 처리할 수 있기 때문이다. 그러나, 하나의 ATM 장치 이상이 공유하는 자산은 요청된 금액이 실제의 통화에서 사용되어야 하는 개인명의 클라이언트-사이드 컨스트레인트를 위한 클라이언트-사이드상에서 재-점검을 필요로 할수 있다. 이 경우에, ATM 장치는 서버로부터 리턴 승인 객체상에서도 개인명의 컨스트레인트를 점검하기 위해 프로그램될 수 있다. 그러나, 소정의 사양에 따라서, 공식적인 약정 점검이 리턴 승인 객체를 위해서 배제될 수 있다. ATM 장치는 일반적으로 사양에 기초한 점검을 수행하지 않는다. 그것들이 사양에 따라서 동작한다 할지라도, 그러한 점검은 인출 순서에 대해서 외적인 것이나 자동인 것이 아니라 그러한 순서에 대해서 내적이다(내적으로 구축된다).
도3은 자동으로 점검될 수 있는 사양을 구성하는 공식적인 약정 및 개인명의 컨스트레인트의 모든 가능한 조합을 도시하는 도면이다. 공식적인 약정과 개인명의 컨스트레인트에 대한 네 개(4)의 서로 다른 서버-사이드 골격 가능성 및 네 개(4)의 서로 다른 클라이언트-사이드 스텁 가능성이 도시되어 있다.
클라이언트-사이드에서는, 네 개의 클라이언트-사이드 스텁(502,504,506,508)이 클라이언트(500)에 결합된 것으로 모두 도시된다. 클라이언트-사이드 스텁은 클라이언트(500)에 결합되어 상기 스텁이 클라이언트(500)내의 하드웨어 또는 소프트웨어로 수행되거나 그것에 포함된 프로그램 또는 코드 모듈이 될 수 있다. 클라이언트-사이드 스텁은 클라이언트와 서버(600)사이의 매개물로서 작용하여 클라이언트가 서버와 직접적인 객체/콜 상호작용을 하지 못하도록 격리시킨다. 도3의 바닥의 범례는 클라이언트-사이드 스텁(502)이 공식적인 약정은 물론이고 클라이언트의 개인명의 컨스트레인트도 점검하는 것을 도시한다. 클라이언트-사이드 스텁(504,506,508)은 클라이언트(500)에도 결합되어 그것을 서버(600)로 부터 격리시킨다. 또 다른 조합이 클라이언트-사이드 스텁(504)에 도시되는데 이 스텁은 클라이언트의 개인명의 컨스트레인트를 점검하기만 한다. 클라이언트-사이드 스텁(506)에서는 공식적인 약정만이 점검되며, 개인명의 컨스트레인트는 점검되지 않는다.
클라이언트-사이드 스텁(508)은 공식적인 약정이나 개인명의 컨스트레인트를 전혀 수행하지 않으며, 점검이 가능할지라도, 객체/콜이 반응하는데 중요한 사양을 갖지 않으므로 바람직하지 않은 경우를 표시한다. ATM 예에서, 거래 언어로서 영어나 스페인어를 선택하는 고객에 대한 클라이언트 콜은 어떤 점검도 요청하지 않을 수 있다. 객체 온(object on) 상태 및 서버(600)에 대한 콜은 언어의 선택에 의해서 영향을 받지 않으며 그러므로 공식적인 약정이 요정되지 않는다. 또한, 한 셋트의 디스플레이 메뉴(사용자의 선택에 따라서 영어나 스페인어)를 다른것에 우선해서 선택하는 동안, 언어에 대한 콜은 클라이언트(500)의 임계 콜 또는 객체(패스워드, 계정 정보등과 같은)중 어느것에 영향을 주지 않으며, 그러므로 클라이언트상의 개인명의 컨스트레인트가 필요없게 된다.
서버-사이드에서는, 네 개의 서버-사이드 골격(602,604,606,608)이 모두 서버(600)에 결합되는 것으로 도시된다. 서버-사이드 골격은 서버(600)에 결합되어 그 골격이 서버(600)상의 하드웨어 또는 소프트웨어에서 수행되거나 그것에 포함된 프로그램 또는 코드가 될 수 있다. 서버-사이드 골격은 서버(600)와 클라이언트(500) 사이의 매개물로서 작용하여 서버가 클라이언트와 직접적인 객체/콜 상호작용을 하지 못하도록 격리시킨다. 도3의 바닥의 범례는 서버-사이드 골격(602)이 공식적인 약정은 물론이고 서버의 개인명의 컨스트레인트도 점검한다는 것을 도시한다. 서버-사이드 골격(604,605,608)은 서버(500)에도 결합되어 그것을 클라이언트(500)로부터 격리시킨다. 또 다른 조합이 서버-사이드 골격(604)에 의해서 예시되는데 이는 서버의 개인명의 컨스트레인트를 점검하기만 한다. 서버-사이드 골격(606)에서 단지 공식적인 약정만이 점검되며, 개인명의 컨스트레인트는 점검되지 않는다.
서버-사이드 골격(608)은 공식적인 약정이나 개인명의 컨스트레인트 점검을 전혀 수행하지 않으며, 점검이 사용된다 할지라도, 객체/콜이 중요한 사양을 갖지 않으며 활력있는 객체/콜이 아니므로 그것이 바람직하지 않은 경우를 나타낸다. 이것은 서버에 대한 객체/콜이 서버의 관점에서 중요하지 않은 때에만 발생한다. 점선으로 된 화살표는 어떤 형태의 클라이언트-사이드 스텁이 어떤 형태의 서버-사이드 골격과 정합되어, 스텁 및 골격의 가능한 조합이 16이 됨을 도시한다. 그리하여 공식적인 약정 및 개인명의 서버-사이드 컨스트레인트를 모두 점검하는 서버 골격(602)과 같은 서버 골격이 공식적인 약정 및 개인명의 컨스트레인트를 점검하는 클라이언트-사이드 스텁(502)과 한쌍이 된다.
도4는 클라이언트-사이드 점검 코드 발생을 도시하는 흐름도이다. IDL 또는 인터페이스 정의 언어는 어떤 기능의 표시(signiture)(기능 이름, 그것이 리턴하는 객체의 형태, 및 그것이 입/출력으로서 취하는 파라미터의 형태)를 기술한다. (클라이언트에 대한) 스텁 및 (서버에 대한) 골격은 그러한 표시에 따라서 발생된다. 그러한 기능에 대한 어떤 콜은 먼저 콜하고 스텁을 통과해야 하며, 반대로 스텁은 현재의 통신망을 콜하며, 그러한 통신망은 골격을 통해서 서버를 콜링한다. 보르네오(Sun Microsystem사의 제품)로 공지된 도구가 사양 기능으로 IDL을 확장시켜서 사용자는 서버 및 클라이언트 콜/객체 모두에 대해서 공식적인 약정과 개인명의 컨스트레인트를 규정할 수 있다. 공식적인 약정 및 개인명의 컨스트레인트 점검 결과는 반드시 부울 표시이어야 한다. 공식적인 약정 및 개인명의 컨스트레인트는 부울 표시가 거짓으로 평가되면 위반이다. 부울 표시를 평가할 수 있는 점검 코드가 발생되어 스텁/골격으로 삽입된다. 새로운 스텁/골격은 컴파일되며 효과가 있도록 점검을 위해 오래된 스텁/골격과 교체되어야 한다.
도4를 참조하면, 코드는 점검이 단계(1000)에 따라서 필요한 것으로 간주되는한 관련된 객체/콜을 위해서 자동으로 발생된다. 단계(1150)에서, 공식적인 약정 코드 스페이스 및 개인명의 클라이언트-사이드 컨스트레인트 코드 스페이스를 각각 표시하는, F1 및 F2는 공백거나 크리어되는 것으로 설정된다. F1 및 F2는 컴퓨터 시스템의 메모리 영역 또는 컴퓨터상에서 실행하는 응용/소프트웨어의 코드 스페이스, 또는 버퍼 및 하드 디스크와 같은 다른 저장 장치가 될 수 있다. F1 및 F2는, 점검이 요구되는 것으로 간주되는 현재의 객체/콜에 대해 오래되거나 적용되지 않는 이전의 공식적인 약정 및 개인명의 클라이언트-사이드 컨스트레인트로 부터 오염되는 것을 방지하기 위해 단계(1150)에서 크리어된다. 단계(1200)에서, 공식적인 약정이 존재하는지가 검사된다. 단계(1200)에서, 공식적인 약정이 발견되지 않으면, 알고리즘은 단계(1300)에서 개인명의 컨스트레인트의 존재를 점검하기 위해 스킵된다. 공식적인 약정이 발견되면, 단계(1250)에 따라서, 그러한 공식적인 약정에 사용되는 코드는 발생되며/또는 컴파일된다. 일단 공식적인 약정 코드가 발생되면, 단계(1300)에서, 공식적인 약정 코드는 공식적인 약정에 대해서 예비된 코드 스페이스인 F1에 저장된다.
단계(1350)에서, 개인명의 컨스트레인트의 존재가 검사된다. 단계(1350)에서, 개인명의 컨스트레인트가 발견되지 않으면, 점검 순서는 단계(1500)로 스킵한다. 그러나, 개인명의 클라이언트-사이드 컨스트레인트가 발견되면, 단계(1400)에 따라서, 그러한 개인명의 컨스트레인트를 위해 사용된 코드가 발생 및/또는 컴파일된다. 일단 개인명의 컨스트레인트 코드가 발생되면, 단계(1450)에서, 개인명의 컨스트레인트 코드는 개인명의 컨스트레인트를 위해서 예비된 코드 스페이스인 F2에 저장된다.
단계(1500)에서, 일단 공식적인 약정 및 개인명의 클라이언트-사이드 컨스트레인트를 위한 모든 가능성있는 코드가 발생/컴파일되며 저장되면, F1 및 F2는 함께 연결되어 결합된 코드 스페이스 F3에 저장되는데, 이것은 F1 및 F2가 수행되는 것과 유사하지만 F1 및 F2 모두를 포함할 수 있는 크기의 것이다. F1 또는 F2는 그것들과 관련된 점검이 요청되지 않았으므로 공백이며, 따라서 그에 대해서 코드가 발생되거나 저장되지 않았으면, F3은 비-공백 코드 스페이스를 산출하는 공백 코드 스페이스와 연결된 비-공백 코드 스페이스의 단순한 결과이다. 일단 모든 코드(F1 및 F2)가 F3에 저장되면, 단계(1600)에 따라서, F3는, 클라이언트와 통하는 모든 객체/콜을 위한 래퍼(wrapper)인 클라이언트-사이드 스텁으로 삽입된다. F3는 객체/콜이 현재 통과되어야 하는 점검이다.
도5는 서버-사이드 점검 코드 발생에 대한 흐름도이다. 그 코드는 점검이 단계(2000)에 따라서 원할 때 검출되는한 관련된 객체/콜에 대해 자동으로 발생된다. 단계(2150)에서, F4 및 F5는 공식적인 약정 코드 스페이스 및 개인명의 서버-사이드 컨스트레인트 코드 스페이스를 표시하는 것으로, 공백 또는 크리어로 설정된다. F4 및 F5는 컴퓨터 시스템의 메모리 영역이거나 컴퓨터 상에서 실행하는 응용/소프트웨어의 코드 스페이스이거나, 또는 버퍼 및 하드 디스크와 같은 다른 저장 장치이다. F4 및 F5는 점검이 요구되는 것으로 간주되는 현재의 객체/콜에 대해 오래되거나 적용되지 않는 이전의 공식적인 약정 및 개인명의 클라이언트-사이드 컨스트레인트로 부터 오염되는 것을 방지하기 위해 단계(2150)에서 크리어된다. 단계(2200)에서는, 공식적인 약정이 존재하는지가 검사된다. 단계(2200)에서 공식적인 약정이 발견되면, 알고리즘은 단계(2300)에서 개인명의 컨스트레인트의 존재에 대해 점검하기 위해 스킵된다. 공식적인 약정이 발견되면, 단계(2250)에 따라서, 그러한 공식적인 약정에 사용되는 코드가 발생 및/또는 컴파일된다. 일단 공식적인 약정 코드가 발생되면, 단계(2300)에서, 공식적인 약정 코드는 공식적인 약정을 위해 예비된 코드 스페이스인 F4에 저장된다.
단계(2350)에서는, 개인명의 컨스트레인트의 존재가 검사된다. 단계(2350)에서 개인명의 컨스트레인트가 발견되지 않으면, 점검 순서는 단계(2500)로 스킵한다. 그러나, 개인명의 서버-사이드 컨스트레인트가 발견되면, 단계(2400)에 따라서, 그러한 개인명의 컨스트레인트를 위해서 사용된 코드가 발생되며/또는 컴파일된다. 일단 개인명의 컨스트레인트 코드가 발생되면, 단계(2450)에서, 개인명의 컨스트레인트 코드가 개인명의 컨스트레인트를 위해서 예비된 코드 스페이스인 F5에 저장된다.
단계(2500)에서, 일단 공식적인 약정 및 개인명의 서버-사이드 컨스트레인트를위한 모든 가능성있는 코드 모듈이 발생되어 기억되면, F4 및 F5는 함께 연결되어 결합된 코드 스페이스 F6에 저장되는데, 이것은 설계시에는 F4 및 F5와 유사하지만 크기가 훨씬 더 크며 F4 및 F5를 모두 포함할 수 있다. F4 및 F5와 관련된 점검이 발견되지 않아서 F4 또는 F5가 공백이면, 따라서 코드가 발생되거나 그에 대해서 저장되지 않았으며, F6는 비-공백 코드 스페이스를 발생하는 공백 코드 스페이스와 연결된 비-공백 코드 스페이스의 단순한 결과이다. 일단 모든 코드(F4 및 F5)가 F6에 저장되면, 단계(2600)에 따라서, F6는 서버와 통하는 모든 객체/콜을 위한 래퍼인 서버-사이드 스텁으로 삽입된다. F6는 객체/콜이 통과해야 하는 점검이다.
도6은 전형적인 클라이언트-사이드 스텁 기능의 의사-코드를 도시한다. 논리적으로, 제1 동작은 공식적인 약정 및 개인명의 컨스트레인트에 필요한 초기화로서, 610으로 표시된다. 클라이언트-사이드 스텁 기능(6000)은 전형적인 분산 시스템에 의해서 발생된 것과같은 스텁 기능의 수정된 변형으로서 공식적인 약정 및 개인명의 컨스트레인트를 점검하기위해 사용된다. 610,620,650 및 660으로 표시된 코드부는 자동 점검에 사용되는 콜, 명령 및 기능이다. 코드부(610)는 메모리 할당 또는 입력 파라미터의 복사와 같은, 점검 코드의 어떤 필요한 초기화를 위한 코드이다. 코드부(620)는 클라이언트-사이드 선결조건(공식적 및 개인명의)을 점검하며 코드부(650 및 660)내의 자동 점검에 필요한 어떤 값(예를들면, 인출전의 현재의 계정 차감 잔액)을 저장한다. 코드부(640)는 서버 기능 콜을 위해 지정된 객체의 정렬을 수행하며, 따라서 통신망상에서 수송을 위한 파라미터 데이터를 준비한다. 코드부(640)는 어떤 디스패칭 코드를 통해서 클라이언트에 대해서 원격 기능을 호출하므로 서버를 콜하며 리턴 또는 응답을 기다린다. 코드부(650)는 공식적인 약정의 점검을 수행한다. 코드부(650)는 개인명의 컨스트레인트의 점검을 수행한다. 코드부(670)는 메모리 할당해제 및 클라이언트상의 가비지 수집과 같은 다른 전형적인 청소를 위한 코드이다. 코드부(680)는 스텁 기능의 끝을 표시하며 클라이언트에서 수신되는 서버 리턴 객체에 의해서 표시된다.
도7은 서버-사이드 골격 기능의 의사-코드를 도시한다. 다시, 도6에 도시된 바와같이, 제1 단계는, 메모리 할당 및 입력 파라미터의 전달과 같은 서버-사이드 골격 기능(700)에 의해서 점검하는데 필요한 초기화를 수행하는 코드부(700)이다. 버서-사이드 골격(700)은 전형적인 분산 시스템의 골격 기능의 수정된 변형이며 서버-사이드 공식적인 약정 및 개인명의 컨스트레인트 점검을 위해서 사용된다. 코드부(720)는 선결조건(공식적 및 개인명의)의 점검을 수행하며 자동 점검에서 사용되는 일부 값을 저장(예를들면, 인출전에 차감잔액을 저장)한다. 코드부(730)는 서버 콜을 위한 데이터 해체를 수행하여 데이터가 서버상에서 실행된 코드에 의해서 사용되는 파라미터 형태로 변형된다. 코드부(740)는 클라이언트내에서 발생될 수 있는 서버 기능을 콜한다. 코드부(750 및 760)는 공식적인 약정 및 개인명의 컨스트레인트 점검을 수행한다. 일단 모든 점검이 완료되면, 서버는 서버 콜의 실행으로부터 야기되는 리턴 또는 응답을 송출하거나 전달한다.
공지된 객체-지향적 프로그래밍 방법론은 계층(inheritance)의 방법론이다. 클래스 A로부터 계승되는 클래스 B의 기능 F에서, 클래스 B의 기능 F는 클래스 B에서 규정된 공식적인 약정 및 개인명의 컨스트레인트에만 반응하는 것이 아니고, 클래스 B의 기능 F는 클래스 A의 기능 F의 공식적인 약정에도 반응해야 한다. 그러나, 클래스 B의 기능 F는 클래스 A의 기능 F의 개인명의 컨스트레인트를 만족시킬 필요가 없다. 공식적인 약정 및 개인명의 컨스트레인트 점검은 객체-지향적인지 여부에 관계없이 어떤 수의 프로그래밍 방법으로 확장될 수 있다.
도8은 컴퓨터 시스템에서 수행될 때의 자동 점검을 도시한다. 컴퓨터 시스템(800)은 퍼스널 컴퓨터와 같이, 데이터를 처리하고 출력을 발생할 수 있는 전자 장치 또는 다른 장치가 될 수 있다. 컴퓨터 시스템(800)이 입/출력(I/O) 동작을 수행하기 위해서, 모뎀과 같은 다수의 입/출력(I/O) 장치를 갖는 반면, 본 발명을 명확히 하기 위해서 하나의 프로세서 및 메모리만이 도8에 도시된다.
컴퓨터 시스템(800)은 중앙 처리 장치(CPU) 또는 프로그램 코드를 실행하기 위한 다른 프로세서 논리 회로가 될 수 있는 프로세서(810) 및 그러한 코드를 저장하며 프로세서에서 사용하기 위해서 그것을 구성하기 위한 메모리(820)를 포함한다. 메모리(820)는 랜덤 억세스 메모리(RAM), 또는 어떤 기록가능한 기억 장치 또는 디스크 드라이브와 같은 메모리 장치가 될 수 있다.
본 발명에 따른 컴퓨터 시스템(800)은 클라이언트-사이드 스텁 또는 서버-사이드 골격의 일부가 될 수 있거나, 또는 그 대신에, 스텁/골격은 컴퓨터 시스템(800)의 일부가 될 수 있다. 분산 객체(850)가 컴퓨터 시스템(800)에 의해서 수신될 때, 객체(850)(이는 또한 콜 또는 요구를 포함할 수 있음)는 메모리(825)에 기억되며 프로세서를 트리거하여 그러한 객체의 사양을 점검하기 위한 코드를 자동으로 발행하게 된다. 프로세서(810)는 먼저 개인명의 컨스트레인트가 점검되어야 하는지를 결정한다. 만약에 점검되어야 하면, 프로세서(810)는, 다른 프로그램 코드에서 규정된 선정된 프로세스 명령의 셋트에 따라서, 개인명의 컨스트레인트 점검 코드를 발생한다. 그와같이, 요청되는 공식적인 약정에서, 프로세서(810)는 공식적인 약정 점검 코드를 발생한다. 발생되는 공식적인 약정 및 개인명의 컨스트레인트 코드는 결합하여 실행될수 있도록 접촉 메모리 스페이스에서 함께 저장된다(연결된다).
일단 점검 코드(825)가 발생되면, 프로세서(810)는 분산 객체(850)를 점검 코드(825)로 전달하며 사양이 확실히 반응하게 하는 점검 코드(825)를 실행한다. 컴퓨터 시스템(800)이 응답을 송출하거나 분산 객체(850)를 다른 형태로 처리하도록 요구되면(리턴 객체를 발생함), 메모리(820)와 접속된 프로세서(810)는 그러한 요청을 조절하도록 구성될 수 있다.
분산 시스템의 필요 및 요구사항에 따라서, 본 발명의 많은 다른 실시예가 가능하지만, 전술된 그러한 실시예들은 단순히 예에 불과하다.
본 발명이 특별히 여러 도면을 참조하여 설명되었지만, 도면은 단지 예를 위한것이며 발명의 범위를 제한하기 위한 것이 아님을 알 수 있다. 본 기술 분야에 숙련된 당업자라면 발명의 사상 및 범위를 벗어나지 않고도, 여러 변형 및 수정이 가능함을 알 수 있다.
본 발명에 따른 분산 객체상의 공식적인 약정 및 개인명의 컨스트레인트를 자동으로 점검하기 위한 방법 및 장치에 의하면 공식적인 약정은 클라이언트 및 서버에 따라서 반응하며, 개인명의 컨스트레인트는 클라이언트 또는 서버에 의해서 반응하지만, 주어진 개인명의 컨스트레인트에 대해서는 양쪽에 의해서 반응하지 않고, 클라이언트-투-서버 또는 서버-투-클라이언트 거래 또는 콜의 각 단계에서, 콜과 관련된 객체 또는 파라매터는 이전(transfer)되기 전에 처리되며, 클라이언트 콜에서, 클라이언트-사이드 스텁(stub)은 콜과 관련된 객체를 통신망으로 이전시키기 위해 그 객체를 정렬시키며, 클라이언트-사이드 스텁은 이전이 발생되기 전에 서버와 클라이언트 사이의 개인명의 클라이언트-사이드 컨스트레인트 및 공식적인 약정 모두를 점검하기 위한 코드를 자동으로 발생하며, 일단 클라이언트-사이드 사양이 점검되면, 정렬된 객체 및 클라이언트 콜이 통신망상에서 서버로 이전된다.
또한, 서버는 콜 및 정렬된 객체를 대행수신하는(intercept) 서버-사이드 골격(skeleton)을 가지며, 그 골격은 객체를 정렬하지 않으며, 만약 있다면 클라이언트와의 공식적인 약정 및 어떤 개인명의 서버-사이드 컨스트레인트를 점검하기 위해 자동으로 발생된 코드에 의해서 점검을 수행하며, 일단 점검이 완료되면, 콜이 처리되어 서버가 결과를 리턴하며, 리턴 객체는 정렬되어 골격에서 점검되며 그후 통신망상에서 클라이언트로 이전되고, 클라이언트-사이드 스텁은 리턴 객체를 정렬하지 않으며 그후 콜과 관련된 객체에 대해 점검된 사양과는 다를 수도 있는 그 사양에 따라서 점검을 수행할 수 있는 효과가 얻어진다.

Claims (19)

  1. 클라이언트를 갖는 분산 시스템에서 객체에 대한 사양을 자동으로 점검하기 위한 컴퓨터로 실현되는 방법에 있어서,
    상기 사양을 개인명의 클라이언트-사이드 컨스트레인트와 공식적인 약정으로 분리시키는 단계;
    상기 사양을 점검하기 위한 코드를 클라이언트-사이드 스텁으로 삽입하는 단계; 및
    상기 사양이 반응되도록 하기 위해서 상기 코드를 실행하는 단계를 포함하여 이루어진 분산시스템에서 객체에 대한 사양을 자동으로 점검하기 위한 컴퓨터로 실현되는 방법.
  2. 제1항에 있어서,
    상기 객체 각각은 하나의 형태를 나타내며 상기 사양은, 상기 객체에 의해서 나타나는 형태 및 상기 클라이언트로부터 발생되는 클라이언트 콜에 따라서 변동되는 방법.
  3. 제1항에 있어서,
    코드를 삽입하는 단계는,
    상기 클라이언트-사이드 스텁을 이용하여 공식적인 약정 코드를 발생하는 단계;
    상기 클라이언트-사이드 스텁을 이용하여 개인명의 클라이언트-사이드 컨스트레인트를 발생하는 단계; 및
    상기 사양을 점검하기 위한 상기 코드를 발생하도록 상기 공식적인 코드 및 개인명의 클라이언트-사이드 컨스트레인트 코드를 연결하는 단계를 포함하는 방법.
  4. 제1항에 있어서,
    점검을 위한 상기 코드를 실행하기 위한 단계는, 어떤 이전도 발생하기 전에 상기 클라이언트-사이드 스텁을 통해서 상기 객체를 상기 분산 시스템으로 전달하는 단계를 포함하는 방법.
  5. 분산 시스템에서 객체에 대한 사양을 자동으로 점검하기 위한 컴퓨터로 실현되는 방법에 있어서,
    상기 사양을 개인명의 클라이언트-사이드 컨스트레인트와 공식적인 약정으로 분리시키는 단계;
    상기 사양을 점검하기 위한 코드를 클라이언트-사이드 골격으로 삽입하는 단계; 및
    상기 사양이 반응되도록 하기 위해서 상기 코드를 실행하는 단계를 포함하여 이루어진 분산 시스템에서 객체에 대한 사양을 지동으로 점검하기 위한 컴퓨터로 실현되는 방법.
  6. 제5항에 있어서,
    상기 객체 각각은 하나의 형태를 나타내며 상기 사양은, 상기 객체에 의해서 나타나는 형태 및 상기 클라이언트로부터 발생되는 서버 리턴에 따라서 변동되는 방법.
  7. 제5항에 있어서,
    코드를 삽입하는 단계는,
    상기 서버-사이드 골격을 이용하여 공식적인 약정 코드를 발생하는 단계;
    상기 서버-사이드 골격을 이용하여 개인명의 클라이언트-사이드 컨스트레인트를 발생하는 단계; 및
    상기 사양을 점검하기 위한 상기 코드를 발생하도록 상기 공식적인 코드 및 개인명의 클라이언트-사이드 컨스트레인트 코드를 연결하는 단계를 포함하는 방법.
  8. 제5항에 있어서,
    점검을 위한 상기 코드를 실행하기 위한 단계는 어떤 이전도 발생하기 전에 상기 서버-사이드 골격을 통해서 상기 객체를 상기 분산 시스템으로 전달하는 단계를 포함하는 방법.
  9. 클라이언트 및 서버를 갖는 분산 시스템에서 하나의 콜-상기 콜은 그와 관련된 객체를 갖음-을 거래하기 위한 컴퓨터로 실현되는 방법에 있어서,
    상기 서버와 상기 서버상의 상기 클라이언트 사이의 공식적인 약정을 점검하는 단계;
    상기 서버상의 개인명의 서버-사이드 컨스트레인트를 점검하는 단계; 및
    상기 클라이언트상의 개인명의 클라이언트-사이드 컨스트레인트를 점검하는 단계를 포함하며;
    상기 거래는, 컨스트레인트 및 약정에 대한 모든 점검이 상기 콜의 사양이 반응됨을 보장할때에만 성공하는 분산시스템에서 콜을 거래하기 위한 컴퓨터로 실현되는 방법.
  10. 제9항에 있어서,
    상기 서버상에서 공식적인 약정 및 개인명의 서버-사이드 컨스트레인트를 점검하는 것은, 상기 객체중 어느것을 위해서 그리고 상기 서버로 전달되거나 서버로 부터 전달되는 상기 콜을 위해서 서버-사이드 골격에 의해서 자동으로 수행되는 방법.
  11. 제9항에 있어서,
    상기 서버상에서 공식적인 약정 및 개인명의 서버-사이드 컨스트레인트를 점검하는 것은, 상기 객체중 어느것을 위해서 그리고 상기 클라이언트로 전달되거나 클라이언트로부터 전달되는 상기 콜을 위해서 클라이언트-사이드 스텁에 의해서 자동으로 수행되는 방법.
  12. 클라이언트 및 서버를 갖는 분산 시스템에서 하나의 콜-상기 콜은 그와 관련된 객체를 갖음-을 거래하기 위한 컴퓨터로 실현되는 방법에 있어서,
    상기 클라이언트의 상기 객체를 정렬하는 단계;
    상기 클라이언트상에서 공식적인 약정 및 개인명의 클라이언트-사이드 컨스트레인트를 점검하는 단계;
    상기 서버에서 상기 객체를 해체하는 단계;
    상기 서버상에서 개인명의 서버-사이드 컨스트레인트 및 공식적인 약정을 점검하는 단계; 및
    상기 클라이언트로 전달된 리턴 객체를 산출하기 위해서 상기 서버상의 상기 콜을 처리하는 단계를 포함하여 이루어진 분산시스템에서 콜을 거래하기 위한 컴퓨터로 실현되는 방법.
  13. 분산 시스템에서 객체의 사양을 자동으로 점검하는 장치에 있어서,
    클라이언트;
    상기 클라이언트에 결합된 클라이언트-사이드 스텁;
    상기 클라이언트-사이드 스텁을 통해서만 상기 클라이언트에 결합되는 서버; 및
    객체가 상기 골격을 통해서 상기 클라이언트로부터 상기 서버로 전달되도록 서버에 결합된 서버-사이드 골격을 포함하여 이루어진 분산 시스템에서 객체의 사양을 자동으로 점검하기 위한 장치.
  14. 제13항에 있어서,
    상기 클라이언트-사이드 스텁은, 상기 클라이언트의 프로세서에 의해서 실행될 때 서버를 갖는 공식적인 약정과 상기 사양에 따른 개인명의 클라이언트-사이드 컨스트레인트를 점검하는 코드를 포함하는 장치.
  15. 제13항에 있어서,
    상기 서버-사이드 골격은, 상기 클라이언트의 프로세서에 의해서 실행될 때 서버를 갖는 공식적인 약정과 상기 사양에 따른 개인명의 서버-사이드 컨스트레인트를 점검하는 코드를 포함하는 장치.
  16. 적어도 하나의 클라이언트를 갖는 분산 시스템에서 객체에 대한 사양을 자동으로 점검하기 위한 컴퓨터로 실현되는 방법에 있어서,
    상기 클라이언트내에서 제1의 공식적인 약정 코드를 발생하는 단계;
    상기 클라이언트내에서 개인명의 클라이언트-사이드 컨스트레인트를 발생하는 단계;
    클라이언트-사이드 스텁을 발생하기 위해서 상기 제1의 공식적인 약정 코드를 상기 개인명의 클라이언트-사이드 컨스트레인트 코드와 결합시키는 단계;
    상기 서버내에서 제2의 공식적인 약정 코드를 발생하는 단계;
    상기 서버내에서 개인명의 서버-사이드 컨스트레인트를 발생하는 단계;
    서버-사이드 골격을 발생하기 위해 상기 제2의 공식적인 약정 코드를 상기 개인명의 서버-사이드 컨스트레인트 코드와 결합시키는 단계; 및
    서버-사이드 골격과 클라이언트-사이드 스텁을 통해서 상기 객체를 전달하며 상기 객체를 점검하는 단계를 포함하는 컴퓨터로 실현되는 방법.
  17. 분산 객체의 사양을 점검하기 위한 컴퓨터 시스템에 있어서,
    프로세서;
    상기 프로세서에 결합된 메모리를 포함하며,
    상기 메모리는, 상기 프로세서가 상기 프로세서에 의해서 실행된 코드를 자동으로 발생하도록 구성되며, 상기 점검 코드는 상기 프로세서에 의해서 실행될 때, 상기 사양이 상기 분산 객체에 대해서 반응되도록 하는 분산 객체의 사양을 점검하기 위한 컴퓨터 시스템.
  18. 클라이언트와 서버 사이에서 분산 객체를 자동으로 점검하기 위한 시스템으로서, 컴퓨터 판독 장치상에서 저장되며 컴퓨터에 의해서 실행되는 코드를 포함하며, 상기 코드는 코드부를 포함하는 시스템에 있어서,
    상기 객체가 클라이언트 및 서버에 공통인 사양에 반응하는지를 점검하도록 구성된 공식적인 약정 점검 코드부; 및
    상기 객체가 상기 클라이언트 및 서버중 하나에 대해서는 사적이지만 둘다에 대해서는 사적이 아닌 사양에 반응하는지를 점검하도록 구성된 개인명의 컨스트레인트 점검 코드부를 포함하여 이루어진 분산 객체를 자동으로 점검하기 위한 시스템.
  19. 제18항에 있어서,
    상기 클라이언트 및 서버는 통신망상에서 접속되는 시스템.
KR1019970048508A 1996-09-25 1997-09-24 분산 객체상의 공식적인 약정 및 개인명의 컨스트레인트를 자동으로 점검하기 위한 방법 및 장치 KR19980024914A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8/719,657 1996-09-25
US08/719,657 US6336148B1 (en) 1996-09-25 1996-09-25 Automatic checking of public contracts and private constraints on distributed objects

Publications (1)

Publication Number Publication Date
KR19980024914A true KR19980024914A (ko) 1998-07-06

Family

ID=24890865

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970048508A KR19980024914A (ko) 1996-09-25 1997-09-24 분산 객체상의 공식적인 약정 및 개인명의 컨스트레인트를 자동으로 점검하기 위한 방법 및 장치

Country Status (5)

Country Link
US (1) US6336148B1 (ko)
EP (1) EP0836307A3 (ko)
KR (1) KR19980024914A (ko)
SG (1) SG92609A1 (ko)
TW (1) TW358183B (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6345278B1 (en) * 1998-06-04 2002-02-05 Collegenet, Inc. Universal forms engine
US20040199863A1 (en) * 1998-06-04 2004-10-07 Hitchcock Michael D. Universal forms engine
US6601192B1 (en) * 1999-08-31 2003-07-29 Accenture Llp Assertion component in environment services patterns
US6519627B1 (en) * 1999-09-27 2003-02-11 International Business Machines Corporation System and method for conducting disconnected transactions with service contracts for pervasive computing devices
JP3888827B2 (ja) * 2000-03-15 2007-03-07 富士通株式会社 プログラム置換システム、分散処理システム及びプログラム置換方法
US6842786B1 (en) * 2001-02-09 2005-01-11 Adobe Systems Incorporated Method and apparatus for remote communication of data associated with dynamically generated type object at runtime to describe the data type
GB2373073A (en) * 2001-03-08 2002-09-11 Escher Technologies Ltd Process and system for developing validated and optimised object-oriented software
CA2440056C (en) 2001-03-19 2006-05-09 Diebold, Incorporated Automated banking machine processing system and method
US6883172B1 (en) * 2001-03-29 2005-04-19 Microsoft Corporation System and method for bridging managed and unmanaged object systems by utilizing an interface wrapper to facilitate transparent communications
US7822684B2 (en) * 2001-10-05 2010-10-26 Jpmorgan Chase Bank, N.A. Personalized bank teller machine
US7523169B1 (en) 2003-02-28 2009-04-21 Verizon Data Services Llc Method and system for mapping network data for network database access
US8090943B1 (en) * 2003-04-28 2012-01-03 Teradata Us, Inc. Preventing unauthorized access of routines in a library
US7882495B2 (en) 2007-06-14 2011-02-01 Microsoft Corporation Bounded program failure analysis and correction
TWI418386B (zh) * 2007-10-02 2013-12-11 Legend Entertainment Co Ltd X 線上遊戲之位址鎖定系統及其方法
US8250524B2 (en) * 2007-12-21 2012-08-21 Microsoft Corporation Contract programming for code error reduction
US8782607B2 (en) 2009-02-20 2014-07-15 Microsoft Corporation Contract failure behavior with escalation policy
US9389606B2 (en) * 2011-11-11 2016-07-12 Rockwell Automation Technologies, Inc. Agile control model system and method
US9374417B1 (en) * 2014-05-27 2016-06-21 Amazon Technologies, Inc. Dynamic specification auditing for a distributed system
US9529691B2 (en) 2014-10-31 2016-12-27 AppDynamics, Inc. Monitoring and correlating a binary process in a distributed business transaction
US9535811B2 (en) 2014-10-31 2017-01-03 AppDynamics, Inc. Agent dynamic service
US9535666B2 (en) * 2015-01-29 2017-01-03 AppDynamics, Inc. Dynamic agent delivery
US9811356B2 (en) 2015-01-30 2017-11-07 Appdynamics Llc Automated software configuration management
US11176519B2 (en) 2016-11-11 2021-11-16 International Business Machines Corporation Smart contract admission check and fault tolerance in a blockchain
CN109876447A (zh) * 2019-01-15 2019-06-14 珠海金山网络游戏科技有限公司 一种大型游戏资源规范监测方法及装置
US10957153B2 (en) * 2019-03-15 2021-03-23 Ags Llc Technician input-free reconfiguration of secured gaming system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2041992A1 (en) * 1990-05-18 1991-11-19 Yeshayahu Artsy Routing objects on action paths in a distributed computing system
US6157961A (en) * 1992-12-21 2000-12-05 Sun Microsystems, Inc. Client-side stub interpreter
DE69327448T2 (de) * 1992-12-21 2004-03-04 Sun Microsystems, Inc., Mountain View Verfahren und Vorrichtung für Teilaufgaben in verteiltem Verarbeitungssystem
EP0643349B1 (en) * 1993-09-10 2000-10-18 Sun Microsystems, Inc. Client-side stub interpreter
EP0684553B1 (en) * 1994-05-26 2004-06-16 Sun Microsystems, Inc. Method and apparatus for generating and using short operation identifiers in object oriented systems
US5751967A (en) * 1994-07-25 1998-05-12 Bay Networks Group, Inc. Method and apparatus for automatically configuring a network device to support a virtual network
US5754857A (en) * 1995-12-08 1998-05-19 Sun Microsystems, Inc. Distributed asynchronous workflow on the net

Also Published As

Publication number Publication date
US6336148B1 (en) 2002-01-01
SG92609A1 (en) 2002-11-19
EP0836307A2 (en) 1998-04-15
EP0836307A3 (en) 2003-01-08
TW358183B (en) 1999-05-11

Similar Documents

Publication Publication Date Title
KR19980024914A (ko) 분산 객체상의 공식적인 약정 및 개인명의 컨스트레인트를 자동으로 점검하기 위한 방법 및 장치
US7374099B2 (en) Method and apparatus for processing an application identifier from a smart card
US7140549B2 (en) Method and apparatus for selecting a desired application on a smart card
US6094656A (en) Data exchange system comprising portable data processing units
US7165727B2 (en) Method and apparatus for installing an application onto a smart card
US6385645B1 (en) Data exchange system comprising portable data processing units
US6851087B1 (en) System and method of processing computer form data
US20050188360A1 (en) Method and apparatus for providing an application on a smart card
WO1998014900A1 (en) System and method for pseudo cash transactions
US6557032B1 (en) Data processing system using active tokens and method for controlling such a system
US20020032655A1 (en) System and method for providing financial services terminals with a document driven interface
US6474544B2 (en) Electronic vault for use in processing smart product transactions
US20040040026A1 (en) Method and System of Linking a Smart Device Description File with the Logic of an Application Program
US20120078794A1 (en) System and Method for Delivering Financial Services
EP0666550A1 (en) Data exchange system comprising portable data processing units
US20070038560A1 (en) Transaction payment system and processing
US20020138431A1 (en) System and method for providing supervision of a plurality of financial services terminals with a document driven interface
US20020138446A1 (en) System and method for providing security for financial services terminals with a document driven interface
US20040006537A1 (en) Method and system for processing credit card related transactions
US11379191B2 (en) Presentation oriented rules-based technical architecture display framework
NL1017013C2 (nl) Schaalbaar systeem voor handelsvoering in meerdere omgevingen.
Long et al. Introduction to Initial HCI Engineering Design Principles for Business-to-Consumer Electronic Commerce
JP3975146B2 (ja) 宝くじ販売装置及び宝くじ販売方法
Gabay Design and Prototypical Implementation of a Smart Contract-based Trading Platform
Asokan et al. of Deliverable Deliverable D10

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
NORF Unpaid initial registration fee