JPH0877117A - デジタル署名を用いた進行オブジェクト指向型プログラムの有効利用方法および装置 - Google Patents

デジタル署名を用いた進行オブジェクト指向型プログラムの有効利用方法および装置

Info

Publication number
JPH0877117A
JPH0877117A JP6182339A JP18233994A JPH0877117A JP H0877117 A JPH0877117 A JP H0877117A JP 6182339 A JP6182339 A JP 6182339A JP 18233994 A JP18233994 A JP 18233994A JP H0877117 A JPH0877117 A JP H0877117A
Authority
JP
Japan
Prior art keywords
class
cell
program
instance
block
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP6182339A
Other languages
English (en)
Other versions
JP3786722B2 (ja
Inventor
Addison M Fischer
アディソン・エム・フィッシャー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Publication of JPH0877117A publication Critical patent/JPH0877117A/ja
Application granted granted Critical
Publication of JP3786722B2 publication Critical patent/JP3786722B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/168Implementing security features at a particular protocol layer above the transport layer
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/33User authentication using certificates
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/4488Object-oriented
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Transfer Between Computers (AREA)
  • Circuits Of Receivers In General (AREA)
  • Computer And Data Communications (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)
  • Small-Scale Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 オブジェクト指向型プログラミングを進行型
プログラムと組合せ、強化する。 【構成】 進行型プログラムを送受信するために少なく
とも一つの次のあて先又は受信者を決定することができ
る命令及び関連データのシーケンス、並びに次の受信者
又はあて先に対してプログラムが決定したすべての関連
データを有することにより、受信者であるコンピュータ
ユーザがオブジェクトを事前に知らなくても、オブジェ
クトが一方のコンピュータユーザから他方のユーザへ最
も効率よく送信されるように、データがプログラムとよ
り密接に結合される。また、セルブロックは、例えばデ
ィスクに記憶されたデータ構造で、(関連する)オブジ
ェクトインスタンスの集合体を反映しており、実行が一
時中断されているが、後に同一又は異なるプラットホー
ムにおいて再実行が可能である。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、主としてオブジェクト
指向型プログラムの制御のもとでデジタルコンピュータ
を操作する装置および方法に関する。より特定的には、
デジタル署名法を用いた特有の進行オブジェクト指向型
プログラムを有効に利用する方法および装置に関する。
【0002】
【関連出願】本願は、1992年4月6日に出願の許可
された米国出願番号第07/863,552号の出願、
名称は「進行型プログラムの作成、処理および使用方法
ならびにその装置」(以下「進行型プログラム出願」と
する)と、米国出願番号第07/883,868号の出
願、名称は「プログラム許可情報を用いたコンピュータ
システム方法および装置」(以下「プログラム許可情報
出願」とする)に関連する。
【0003】
【従来の技術】「C言語」や「スモールトーク」等の既
存のオブジェクト指向型言語を用いたオブジェクト指向
型プログラミングにおいては、プログラマはオブジェク
ト「データ型」(または「クラス」)を定義することが
できる。「データ型」とはデータ構造であって、あるデ
ータ型をどう処理するかを知っているプログラムとそれ
ぞれ関連している。オブジェクト指向型プログラミング
によって、プログラムを変更することなく、既存のプロ
グラムを再使用したり拡張したりすることが可能にな
る。オブジェクト指向型プログラミングのこの特性は
「継承特性」として知られており、他の(より基本的
な)データクラスの「拡張子」として引き出される新規
のデータ型クラスを定義することができる。
【0004】拡張子クラスは、既存の(「ベース」)ク
ラスとは異なる新規のデータ型用の(オブジェクトの
「メソッド」として周知の)関数を定義するだけでよ
い。このようなメソッドは全く新しいものであってもよ
いし、またはベースクラス用に定義されているメソッド
に(それを置き換えるか、または拡大することによっ
て)取って代わってもよい。このように、新規の関数を
付け加えるか、または既存の関数に取って代わる(変更
する)ことにより、既存のデータクラスの新規の変種作
成を容易にする。
【0005】オブジェクト指向型法の中には「多重継
承」を認めるものもある。「多重継承」においては、1
つ以上の「ベース」クラスが存在することができ、規定
のクラスがその「ベース」クラスから特性を継承する。
本発明は、多重継承の可能な使用法を考察している。規
定のクラス列とは、ベースクラスとベースクラス列の集
合体セットである。
【0006】より慣用的な「手続型」プログラミング法
を使用すると、異なるデータ型は、そのデータ型用に定
義された処理規則に基づくそれぞれ異なる方法で処理さ
れる。オブジェクト指向型プログラミングは、異なった
処理法を提供する。プログラマが定義したオブジェクト
データ型またはクラスの個々の実現値は、そのクラスの
「インスタンス」として知られている。いったんクラス
を定義すると、そのデータ型は、再度プログラミングを
しなくても、異なるプログラム内で何度も繰り返し使用
することができる。
【0007】それぞれのデータ型用にクラスプログラム
を定義すると、そのデータ型のインスタンスに対して適
用されうる関数が定義される。プログラムは、オブジェ
クトの特定のインスタンスと共にそのオブジェクトメソ
ッドの内の1つ(すなわち、あるデータ型のインスタン
スに対して適用されうる関数)を呼び出すことによっ
て、オブジェクトを使用する。その後、そのメソッドが
データのある特定のインスタンスを処理する。
【0008】このように、同一のメソッド名を異なるデ
ータ型クラスにおいて違うように実現しうることが、オ
ブジェクト指向型プログラミング法の利点の1つであ
る。アプリケーションプログラムはデータ上の「総称」
操作が正確にはどのように実現されているかに関知せ
ず、それを実行することができる。このことにより、デ
ータ型の新規の種類(クラス)を最小限の変更で、これ
らのデータ型を使用しているアプリケーションプログラ
ム(もしあれば)に付け加えることができる。
【0009】これらの「メソッド」を実行するための論
理は、それぞれのデータクラスにいったん組み込まれ
る。このように、異なるデータ型がそれぞれのデータ型
に適した方法で特定の関数を実現することを可能にする
ことにより、プログラムがそのようなデータ型を使用す
る方法が容易になる。
【0010】オブジェクト指向型プログラミングは、上
記のように、プログラムを区分するための異なる手法を
提供している。それは多くの異なる複合アプリケーショ
ン領域において非常に有効である。オブジェクト指向型
プログラミングにおいては、データは一般的には隔離さ
れたビットストリームとしては扱われず、むしろそのデ
ータを管理しているプログラムに結合される。
【0011】オブジェクト指向型法のこの特性、つまり
特定の関数を様々なデータ型上で異なるように動作させ
る能力は、「多義性」として知られている。
【0012】多義性は、データが何を表現しているかに
関知せず、プログラムがそのデータ上に対して動作する
ことを可能にする。オブジェクト指向型法の多義的特性
は、関数があるデータ型に対して適切に実行されるよう
に、そのデータ型によって異なる方法で特定の操作が実
現できるようにする。多義性の例としては、例えば、
「乗算」操作がある。実スカラデータ型に対しては、2
つのスカラが共に算術的に掛けられる。しかし、マトリ
ックスデータ型に対しては、その「乗算」メソッドが実
現され、より複雑な「マトリックス」乗法がなされる。
これらをオブジェクトとして扱うことによって、プログ
ラムデザイナは特定のオペランドが実数であるのかまた
はマトリックスであるのかを気にすることなく、乗法を
使用することができる。そして将来、例えば、新たにプ
ログラミングをしなくても、異なる乗算機構を有する新
規の「複素数」データ型を、既存のプログラムに導入す
ることができる。
【0013】オブジェクト指向型法の例として、他にグ
ラフィックディスプレイに関するオブジェクトを含んで
もよい。そのようなオブジェクトの大半は「クイック」
クリックメソッドを備えている。そのメソッドは、マウ
スポインタがオブジェクトと関連するグラフィックイメ
ージ上にある時、またはユーザがマウスのスイッチをク
リックした時は必ず呼び出される。
【0014】ボタンのグループのグラフィックディスプ
レイを考えると、各「ボタン」グラフィックは、「ボタ
ン」クラスの個々のインスタンスによって表現され、制
御されてもよい。データフィールド等の他の型のグラフ
ィックアイテムは、それぞれの独自のクラスのインスタ
ンスと共に制御される。「アイコン」を、「ボタン」の
特殊なクラスであって、追加の性質または変更された性
質を備える「ボタン」として扱うことが可能である。
【0015】「アイコン」クラスを「ボタン」の拡張子
として開発する際に、独自の「アイコン」クラス定義用
に特別に供給されるメソッドルーチン以外は、「ボタ
ン」用の全てのメソッドルーチンがその「アイコン」ク
ラスに対して有効である。ユーザがマウスのスイッチを
クリックすると、システムはマウスが位置すると思われ
るアイテムを決定し、そのグラフィックアイテムに関連
するオブジェクトインスタンス用の「クリック」メソッ
ドを呼び出す。
【0016】「内容を上にスクロールする」とか「この
オブジェクトを削除する」、「内容を印刷する」、「マ
ウスボタンを操作する、つまり要求をクリックする」等
の異なる関数が、含んでいる特定のグラフィックオブジ
ェクトによって違うように解釈される。許可可能な関数
はデータが使用されるごとに定義されるのではなく、デ
ータが定義される時に作成される。
【0017】本発明は、上述したような従来のオブジェ
クト指向型プログラミング法に比べて、より一層強力に
拡大されたオブジェクト指向型プログラミング法に従っ
て、デジタルコンピュータを操作する装置および方法を
提供することを目的とする。
【0018】
【本願発明の概要および効果】すなわち、本発明は、自
動化された業務処理を効率的に行うフレームワークを構
築する非常に拡大されたオブジェクト指向型プログラミ
ング法に向けられる。本発明のオブジェクト指向型プロ
グラミング法は、全体として本件で明白に援用している
前述の進行型プログラム特許出願に記載の、本出願人の
「進行型プログラム法」において特に有効である。
【0019】進行型プログラムとはデジタルデータ構造
であり、命令および関連データのシーケンスを含む。そ
のシーケンスは進行型プログラムを受信したり、次の受
信者またはあて先に送信するプログラムによって決定さ
れた全ての関連データと共にそのシーケンス自身を送信
する、少なくとも一つの次のあて先または受信者を決定
することができる。本件に記載の方法を用いると、デー
タがプログラムにより密接に結合され、そのため受信者
であるコンピュータユーザにオブジェクトを事前に知ら
れることなく、一方のコンピュータユーザから他のユー
ザへと最も効率的にそのオブジェクトを転送することが
できるようになる。
【0020】本発明は、データを組み立て、オブジェク
トとして最も高い安全性で保持し、記憶し、そしてコン
ピュータユーザから他のユーザへと送信することを可能
にする。
【0021】また、本発明は、再使用可能なプログラミ
ングプールを効率的に作成することにより、今まで以上
に効率的にアプリケーションプログラムを開発すること
を可能にする。
【0022】本発明はオブジェクト「セル」を利用して
いる。セルとは、例えばディスク上に記憶されたデータ
構造であり、実行が一時中断されているが、後に同一ま
たは異なるプラットフォームにおいて再実行が可能な
(関連する)オブジェクトインスタンスの集まりを示し
ている。オブジェクトインスタンスの集まりは、記憶す
るため、または他のコンピュータユーザへ送信するのに
都合がよいようにセル(または「電子フォーム」)に集
めることができ、インスタンスは各クラス定義に不明確
でないように結合される。
【0023】本発明は、基礎となるオブジェクトインス
タンス値と共に電子フォームの一部として送信されてい
る、データクラス定義プログラムを用いて任意のオブジ
ェクト指向型データクラス構成素から電子フォームを構
築することができる。
【0024】また、本発明はセル(電子フォーム)を作
成および使用するために改良されたツールを作成するの
で、オブジェクト指向技術を用いて電子フォームを定義
することが可能となり、全てのユーザが全てのオブジェ
クトクラス定義プログラムの互換ライブラリおよびその
クラスの同一同期バージョンを保持することを要求しな
くとも、そのようなフォームを種々のコンピュータユー
ザ間で容易に送信することができるようになる。
【0025】このように、本発明は、受信者が必要な全
てのオブジェクトクラスを持っているか否か、またはそ
のようなクラスが特定のデータ転送に適切に対応するバ
ージョンを反映するかどうかを気にすることなく、その
ようなセルを電子メールを通して他のユーザに転送でき
るようにする。そのセルは、他のセルによってオブジェ
クトとして呼び出すことができる。
【0026】本発明は安全性および一貫性を保証するデ
ジタル署名法を提供し、それによりユーザは、セルに挿
入されたオブジェクトクラスの一部がユーザのシステム
またはデータの安全性、或いは一貫性を失わせるか、破
壊するか、または危うくする可能性のある破壊的な「ト
ロイの木馬」プログラムであるかもしれないという危険
性を負うことなく、オブジェクトの集まりから構成され
る電子フォーム(すなわちセル)を受信および実行する
ことができる。
【0027】関連のあるクラス定義プログラムを見つけ
出すために、オブジェクトインスタンス自身の中には印
が記憶されている。その印には例えば、そのオブジェク
トクラスインスタンスの名前がある。
【0028】本件では、セルに記憶されているデータイ
ンスタンスを、それぞれのオブジェクトクラスプログラ
ムに結合させる特有の方法が説明されている。この方法
によって、セルが次の実行を開始して記憶装置から再格
納される際に、正しくかつ互換性のあるクラス定義プロ
グラムが既存のインスタンスデータ上で確実に動作す
る。
【0029】これにより、クラスプログラムの変更され
た「ライブラリ」またはテンプレートバージョンが、よ
り以前のインスタンスデータ上に不本意に動作すること
ができないことを保証することによって、または(たと
えそのユーザの内の一人が適した名前を有するクラスプ
ログラムを持っていたとしても)セルが様々なユーザ
(受信者)によって異なる時間に起動されている際に、
クラスプログラムの正しくない他のバージョンが不本意
に使用されないこと(そして混乱や損害を生じさせるこ
とのないこと)を保証することによって、一貫性を提供
する。インスタンスとクラス間の明確な結合は、次の様
なさまざまな方法で供給されうる。
【0030】・クラス定義、すなわち(そのクラスプロ
グラム論理がソースコード内にあろうと、疑符号内にあ
ろうと、または機械コード内にあろうと)クラスプログ
ラム論理自身をそのセルデータ構造の一部として含める
ことにより、そのセル内のオブジェクトインスタンスを
クラスに結合させる方法。
【0031】・クラスプログラム定義用のソース命令
(またはその正規バージョン)、コンパイルの結果生じ
た擬符号(pコード)命令、またはコンパイルの結果生
じた機械言語コードの内の少なくとも1つの(暗号)ハ
ッシュをセルに含めることにより、そのセル内のオブジ
ェクトインスタンスをクラスに結合させる方法。
【0032】この結合は、各インスタンスと正しい対応
クラスプログラムとを明確に関係付け、そのため、同一
名を有する他のクラスか、またはそのクラスの(古すぎ
るか、もしくは新しすぎるために)適切でないバージョ
ンが不本意に選択されて、セルが再格納される際にイン
スタンスデータの既存のバージョン上で動作する可能性
がなくなる。このことは、重要で機密性を有する関数を
実行するクラスプログラムに対して、特に有効である。
このように、インスタンスが作成される際に、クラス定
義の仕様によって決定された既存のインスタンスを損な
ったり、乱したりすることなく、「マスタ」クラス定義
を変更することができる。
【0033】本発明に従って、セルが記憶されてから
(恐らく他のユーザによって)再使用される間に、その
セルの重要部分を偶然に、または故意に変更することが
できないように、セルの重要部分にデジタル署名がなさ
れてもよい。しかし、セルの重要でない部分にはデジタ
ル署名はなされず、重要でない情報または別の方法で確
認することのできる情報を任意に含めたり、除外したり
するよう調節できるようになっている。このようにし
て、オブジェクトプログラムクラス定義を改ざんできな
いようにするため、それらをデジタル署名形式で記憶す
ることができる。状況によっては、必ずしも全てのオブ
ジェクトクラス定義プログラムにデジタル署名する必要
はなく、重要な操作を実行するもの(例えば、ファイル
へのアクセス等、もしくはアセンブリ言語、C言語、ま
たは直接解釈プログラムの管理外で実行する、他のモジ
ュールで書き込まれた外部プログラムの呼出し等)のみ
に署名するだけでよいこともある。
【0034】そのような重要部分とは一般的に、それぞ
れの重要なオブジェクトクラスプログラム定義の少なく
とも一つの互換バージョンに、少なくとも不明確でない
ように結合されて連結しており、通常そのプログラムの
バージョンのハッシュ値を含むデータおよびオブジェク
トの構造および値を含む。
【0035】本発明は、各クラスが実行することができ
る操作または関数を決定する許可に関連して、各クラス
に更にデジタル署名をすることができるようにしてい
る。この許可は、前述の現在出願中の米国出願番号第0
7/883,868号の出願、「プログラム許可情報を
用いたコンピュータシステム方法および装置」に記載の
プログラム許可情報データ構造によって定義される。当
該出願は本件に明示的に援用されている。
【0036】これにより、不正なセルまたは害のあるセ
ルを自動的に検出することができる。また、これは信頼
性のない(インスタンス)が(プログラムの故障または
故意の悪戯によって)損害をもたらすような可能性を持
たないことを保証し、安全性を提供する。また、信頼性
のあるクラスと信頼性のないクラスの混合クラスに対す
る手段を提供する。その手段は、より強力なクラスに関
連する無害なまたは制限された関数を供給するために、
臨時のインスタンス(およびクラス)を使用する能力を
提供し、信頼性のないクラスが秘密裡には何もできない
ことを保証する。また、これにより、信頼性のある状態
において信頼性のないコードを動作させることのでき
る、モリスインタネットのウィルスまたは寄生虫と類似
するオブジェクト指向のウィルス等を予防することもで
きる。
【0037】この手法を用いると、セルにデジタル署名
をした後、そのセルの一貫性を損なうことなく、クラス
のイメージ(ソースであれ、pコードであれ、他のもの
であっても)をセルに挿入したりまたは削除したりする
ことができる。
【0038】また、本発明は、クラスプログラムのバー
ジョンが、そのクラスプログラムの異なるバージョンに
よって作成されたインスタンスを処理することができる
ような手法を提供する。これは、データインスタンスを
作成した(または最後にデータインスタンスを操作し
た)クラスプログラムのバージョンに、データインスタ
ンスを関連させることにより実施することができる。ま
た、クラスプログラムの各バージョンが、それぞれが支
援するデータバージョンのセットを指定できるようにす
ることによっても実施可能である。
【0039】本発明は既存のセルを修復またはアップグ
レードする手法を提供する。それにより、たとえ既存の
セルがデジタル署名されていたとしても、一貫性を損な
うことなく、そのセルによって記憶または参照されてい
るクラス定義を抽出し、修正(または訂正)された定義
に置き換えることができる。
【0040】本発明は、様々なオブジェクトから構成さ
れるセル(電子フォーム)を、同一または他のコンピュ
ータ上で実行させるために記憶し、復元することのでき
る手法を提供する。
【0041】本発明は、セル全体を他のセルによってオ
ブジェクトとして呼び出し、処理することを可能にす
る。このことによりデータのクロスマージ、およびセル
からセルへの処理が可能になる。また、その中でセル同
士が対話をする、複雑なセルシステムを処理する手段も
可能になる。本発明によって、セルが電子メールまたは
他のサービスを通して、ユーザからユーザへセル自身を
送信させることができるようになる。本発明は、他のセ
ル内にセルを含むことを可能にし、また同様に、セルが
後に内部のセルを再び分離するができるようにする。本
発明はまた、その内部のオブジェクトの隔離された部分
を隔離し、サブセルを作成するために使用することを可
能にする。
【0042】本発明は、様々なクラスを、異なる言語
(例えば、「BASIC」および「REXX」等)で書
き込み、共通のオブジェクトセルに結合させる方法を教
示する。また、1つのプログラミング言語を用いて定義
されたクラスを、別の言語で書き込まれたクラスから拡
張することができるようにするために、REXXおよび
BASIC等の本質的に異なる言語を結合する方法を教
示する。
【0043】本発明の別の側面としては、プログラムが
オブジェクトを作成、処理、操作することができ、その
オブジェクトに対してクラス、メソッド、またはその両
方のいずれかがプログラムの指定またはコンパイルの後
に別々に動的に決定される。このことが可能なのは、ク
ラスおよびメソッド名をストリング値によって制御し、
あらゆる入力、決定およびストリング操作に基づいて、
そのクラスおよびメソッド名を動的に決定できるからで
ある。
【0044】それゆえに、オブジェクトを名前に正確に
基づいて作成してもよい。作成の方法は、ユーザによっ
てデータとして入力したり、実行時間値に基づいて動的
に計算したり、またはファイルから読み出してもよい。
本発明の別の側面として、クラスが使用される実行時に
クラス結合が実行されることが挙げられる。そのことに
より、様々なクラスを「実行可能な」モジュールに結合
させるために、特殊な「リンケージエディタ」を作成す
る必要がなくなる。
【0045】本発明は、オブジェクト指向型プログラム
を進行型プログラムと組み合わせ、オブジェクト指向技
術を用いて進行型プログラムを構築することができる。
そのことによって、進行型プログラムをオブジェクトと
して(他の進行型プログラムによって)処理することが
できるようになる。
【0046】本発明においては、進行型オブジェクトを
用いてデジタル署名を使用することができる。それによ
り、関連するクラス(プログラム)定義が改ざんされた
り、操作されたり、または変更されることができないよ
うになる。本発明は、安全性および一貫性を守る目的か
ら、特定のオブジェクトクラスのインスタンスおよび実
行可能な処理の型によって処理することができるコンピ
ュータおよびデータ資源を制限するために、デジタル署
名技術を使用する。
【0047】本発明は、コンピュータユーザのネットワ
ークにおいて、受信者が自分のデータが故意に傷つけら
れたり、危うくされる危険性を負うことなく、送信され
たオブジェクトインスタンス内の少なくとも1つのメソ
ッドを安全に実行することができるように、複数のオブ
ジェクトインスタンスを含むデータを交換することを可
能にしている。
【0048】本発明の特徴の1つに、データ変数が特定
のオブジェクトクラスに本来的には結合されないプログ
ラムの開発がある。本発明は、いかなるオブジェクトク
ラスをも(プログラムが書き込まれた時点では、考慮に
入れられていなかったクラスさえも)反映できるよう
に、プログラムの実行中に、変数のクラスを自由に変更
することができるプログラムをプログラマが開発できる
ようにする。
【0049】本プログラミング発明の別の特徴として、
同一オブジェクトの異なるインスタンスが、関連するデ
ータフィールドの本質的に異なるセットを処理すること
が挙げられる。
【0050】本発明の別の特徴は、通常幾つかのクラス
と関連している相互に関連するインスタンスの集まり
を、実行状態から退避されたデータファイルに書き込む
ことができることが本発明の別の特徴である。これはイ
ンスタンスのクラスを定義するプログラム自身を、退避
されたデータファイルに不明確でないように結合するこ
とによってなされる。本発明においては、そのような退
避されたデータファイルを「セル」と呼ぶ。
【0051】本発明は、全てのインスタンス、そのイン
スタンスと関連するデータ、およびそのインスタンスと
関連するプログラムが正確に復元されるようにセルを適
切に再格納し、それによりセル全体の実行処理が将来ま
た開始できるようにする。
【0052】本発明の特徴は、セルをオブジェクトその
ものとして扱うことができることであり、そのためセル
の退避時にセルと関連した実行状態を、後になってから
も呼び出すことができる。
【0053】本発明の実施例では、各セル内には1つの
特定のオブジェクトインスタンスがあり、セルの「フェ
ース」と見なされる。セルに対してメソッドを実行させ
る要求を行うと、フェースインスタンスのメソッドが起
動する。このため、セルは多くの構成素インスタンスを
含んでもよいが、セル全体の活動に対する要求を処理す
る責任はフェースインスタンスにある。
【0054】本発明の特徴は、クラスを定義する言語は
1つのコンピュータ型のみに特定されておらず、広い範
囲の異なるコンピュータアーキテクチャおよびオペレー
ティングシステムでその言語を処理し、解釈しうること
である。
【0055】本発明には、オブジェクトクラスを定義す
る実際の論理を記憶されたセルの一部として記憶および
搬送できるという特徴がある。このことは少なくとも次
のような2つの利点を提供する。
【0056】第一に、たとえ関連するクラス定義プログ
ラムが変更されても、セルは一貫性を保持することであ
る。クラス定義をインスタンスに不明確にしか結合して
いない他の技術においては、プログラムを変更する(ま
たは「改善する」)のは危険である。なぜなら新規のプ
ログラムを用いて「古い」データを処理することによ
り、プログラムに機能障害をもたらしたり、または間違
った結果や誤解を招くような結果をもたらす傾向がある
のと同様に、上記のような変更が既存のデータ変数に対
して異なる意味を与えたり、新規の変数を導入したり、
または古い変数を削除したりする可能性があるからであ
る。
【0057】第二に、クラス定義プログラムが他の一方
のコンピュータにおいて適応可能であるか否か、および
受信者のコンピュータ上の参照クラスプログラムがセル
内に組み込まれたデータインスタンスと互換性があるか
否かを気にすることなく、セルを一方のコンピュータに
送信し、そこでセルを実行させることができることであ
る。
【0058】本発明の特徴は、少なくとも1つの関連す
るクラス定義の論理を、関連するプログラムのハッシュ
によって、記憶されたセル内で独特の方法で識別するこ
とができることである。これにより、プログラム定義自
身を記憶するのとは異なる目的を果たすことができる。
【0059】本発明は、各セルにおいてクラスプログラ
ムを複写せずに、より小さなスペース内にセルを記憶で
きるようにし、更にそのプログラムのイメージを記憶し
なくても、厳密な一貫性を依然として保証する。このこ
とは、セルの再格納中に、つまり実際のハッシュが再計
算され、期待ハッシュと比較される際に行われる。
【0060】本発明は、ソフトウェアを(故意に、偶然
に、または悪意から)変更しても、それが不本意にも間
違って実行されることは決してないことを保証し、更に
本発明では、頻繁に使用するクラスを、多くのセルにお
いて繰り返し複写する記憶オーバヘッドを要求しない。
【0061】ある企業から広く販売されるような、よく
使用されるクラスには、プログラム自身の送信を抑制す
るのが合理的である。そこで、間違ったクラスプログラ
ムが使用されることすらできないようにすることによっ
て一貫性を保証するために、そのクラスプログラムのハ
ッシュが役立つ。クラスプログラムが格納されるとき
は、そのハッシュがいつも計算され、期待値と比較され
る。
【0062】セルがクラス定義イメージを含んでおら
ず、そのハッシュと一致する利用可能なイメージが再格
納時にない場合は、そのハッシュを使用して正しいクラ
ス定義を見つけ、それを発見した際にその正確さを確認
することができる。この方策は、正しい定義がオフライ
ンのアーカイブされた記憶からたとえ復元したとしても
有効である。いったん全ての正しいクラス定義が復元さ
れ、オンラインで利用可能になれば、そのセルの再実行
を開始することが可能になる。
【0063】
【実施例】以下に挙げる図面の詳細な説明を参照するこ
とにより、本発明の前述の特徴および利点、およびその
他の特徴および利点がより明確になるであろう。
【0064】図1は、本発明に関連して使用しうる典型
的な通信システムを表したブロック図である。当該シス
テムには通信路12があり、その上で端末装置A,B,
…N間の通信が行われる。通信路12は例えば、電話線
等のように安全が保証されていない通信路であってもよ
い。端末装置A,B…Nは、例えば(メインメモリ付)
処理装置2を有するIBMパソコン互換コンピュータで
もよく、それは従来のキーボードおよびCRTディスプ
レイ4に結合されている。メインメモリ付処理装置2
は、不揮発性記憶装置7にも結合されており、その記憶
装置7はディスク記憶装置であってもよい。各端末装置
A,B…Nは、従来のIBMパソコン通信ボード(図示
せず)も備えており、それは従来のモデム(それぞれ
6,8,10)に結合される際に、端末装置に進行型プ
ログラムを含むメッセージを送受信させることができ
る。
【0065】本件で使用し、本件に援用している進行型
プログラム出願、出願番号第07/863,552号で
詳細に説明しているように、進行型プログラムはデジタ
ルデータ構造であり、命令および関連データのシーケン
スを含んでいる。そのシーケンスは、進行型プログラム
を受信するため、およびプログラムによって決定されて
いる全ての関連データと共に自分自身をも次の受信者ま
たはあて先に送信するための少なくとも次の一つのあて
先または受信者を決定することができる。進行型プログ
ラムのデータ構造の例は、進行型プログラム出願の図2
に示されている。進行型プログラム実行時に利用するデ
ータ構造、および進行型プログラムを実行するためのソ
フトウェアについては、進行型プログラム出願で説明し
ており、本件に援用している。
【0066】各端末装置A,B…Nは、メッセージを生
成することができ、また、通信路12(または通信路1
2に接続されうる通信ネットワーク(図示せず))に接
続されている他の端末装置にメッセージを送信する際
に、進行型プログラム内に本来備わっている論理、デー
タおよび関数を格納し、実行するために必要等のような
デジタル署名操作でも実施することができる。本願で明
示的に援用されている本発明者の米国特許番号第4,8
68,877号、第5,005,200号および第5,
001,752号に記載の、拡大されたデジタル署名お
よび証明法をこの場合に用いてもよい。代わりに、より
慣用的なデジタル署名法を利用してもよい。
【0067】オブジェクト指向型プログラミング技術を
拡大した本発明は特に、本出願人の許可された出願、出
願番号第07/863,552号に記載の進行型プログ
ラム法を促進するのに大変適しており、またそのように
設計されている。しかし、本発明はまた、アプリケーシ
ョンプログラムを効率的に生成する能力を拡大してお
り、一人のコンピュータユーザに限定して使用しさえす
れば、非常に有効である。
【0068】本発明は離散型ファイル、または「セル」
と呼ばれる電子フォームを利用している。これらのセル
はオブジェクトの集合体を表しており、それらは本質的
に独立しているものであって、その実行が一時中断さ
れ、ファイルとして記憶されることのできるインスタン
スの集まりである。その後セルをメインコンピュータメ
モリに(同一または他のユーザによって)再格納するこ
とができ、(そのメインコンピュータメモリにおいて)
次に指定されたメソッドで実行を再開することができ
る。
【0069】好ましい実施例においては、データクラス
がREXX、または周知のBASIC言語等の高級プロ
グラミング言語の修正されたバージョンで定義される。
これらの言語は、手続型高級プログラミング言語から、
本件で記載しているような特有のオブジェクト指向型拡
張子に変換されてきた。高級言語のそのオブジェクト指
向型拡張子は、プログラムのクラスを定義し、(もしあ
れば)ベースクラスを指定する方法を提供する。クラス
は、そのベースクラスから(継承によって)拡張され、
プログラム変数の有効範囲を区別するために(多義性に
より)特定のクラスに関連する様々なメソッドを定義
し、また他のオブジェクトインスタンスを容易に作成
し、呼び出し、処理する。
【0070】セルはデータのセット、つまり電子フォー
ムと見なすことができ、それはその情報と関連する全て
のプログラムを本来それ自身の中に含んでおり、その情
報の操作を管理している。セル内には単一の変数として
扱うことのできる、プログラムの集まりを含むことがで
きる。例えばセルは、関連するクラスを有するオブジェ
クトである名前およびアドレスフィールドを含むことが
できる。その関連するプログラムは、名前およびアドレ
スフィールドに対して操作すべき様々な異なる操作を定
義する。アドレスデータ等の変数はセルに結合されてお
り、そのセルを操作する規則を知っているプログラミン
グ情報を含んでいる。そのため、より高い水準において
は、データがその基礎となる情報をどのように管理して
いるかを気にせずに、変数名を参照することによっての
みデータを処理することができる。このようにして、個
々のオブジェクトに複雑な処理をゆだねることによっ
て、システム全体を簡潔にすることができる。
【0071】インスタンスを変数として識別することに
より、プログラムを含む複雑なデータ構造をインスタン
ス指示子を通して操作することができる。インスタンス
変数はオブジェクトインスタンス全体を参照するための
機構である。
【0072】記憶されたセルはディスク上に記憶された
ファイルである。記憶されたセルは、内部制御ブロック
「セルブロック」およびオペレーティングシステムの解
釈/実行プログラムによって実行中に使用される付随の
ブロックを作成するために用いられる。
【0073】新規の所得税関連オブジェクトクラスを本
発明の手法に従って書き込む作業を考慮すると、本発明
の操作方法をよりよく説明できる。オブジェクトクラス
プログラムは、必要な作業を実行するための他の既存の
プログラムを呼び出す文を含んでいる。
【0074】この例においては、作成された「セル」は
所得税を扱うために設計される電子フォームと見なすこ
とができる。所得税計算を実行するプログラムおよび生
成形式は、既存の所得税生成ルーチンを呼び出してもよ
い。初めに、解釈/実行プログラム(I/E)が所得税
クラスを実行するよう指示される。そのクラスは既存の
データを有するセルではなく、単なるプログラムである
ので、I/Eはそのクラスをコンパイルし(それが既に
pコードに形式的にコンパイルされていない場合)、そ
してその後新規のセルを作成する。プログラムはコンパ
イルされ、主記憶装置に格納される。解釈プログラムは
その後、後に詳細に説明するようにプログラム向けのク
ラスブロックを組み立てる。そのクラスは、例えば「1
040フォーム」を生成することによって定義してもよ
い。解釈プログラム内のルーチンは、クラスのこの最初
のインスタンス用のセルブロックを作成し、セル実行の
準備を行い、そしてその「1040フォーム」クラスの
「作成」メソッドを実行する。
【0075】1040フォームに加えてさらに関連する
フォームを作成する必要のある場合は、前記クラスにお
けるメソッドの実行中に、他のクラスを呼び出して、新
規のインスタンスを生成してもよい。追加のフォームを
生成することにより、関連するインスタンスを生成する
ために必要な他のプログラムをさらに主記憶装置に記憶
するようにしてもよい。
【0076】所得税申告の性質上、それぞれ作成すべき
様々なインスタンスを有する様々な種類のクラスがあり
うる。そのようなインスタンスはそれぞれ、本発明の手
法によって自動的に処理される。
【0077】関数名または「メソッド」名は、関連する
各クラスインスタンスによってそれぞれ異なったように
取り扱ってもよい。例えば、支払うべき純所得税額を決
定する要求を考えてみると、関連する各クラスおよびイ
ンスタンスに対して、異なる純所得税額が生成される
が、そのような情報を集めるために必要なのは一つの関
数要求だけである。セルに関連する各インスタンスは、
ある手法に基づいて、純所得税額を計算することができ
る。その手法は、各インスタンス内部では知られている
が、高レベルDの「1040フォーム」メインプログラ
ムクラスには知られていないものである。
【0078】これらの各インスタンスは完全に異なる関
連する変数を有しうるが、高いレベルにおいては、プロ
グラムが「支払うべき純税額」といった1つの変数名を
使用して、必要な全ての情報を得ることができる。異な
るフォームを生成する関連プログラムは全て、セルを記
憶する際にそのセルに書き込まれる。その後、そのよう
に記憶されたセルを独立型モジュールとして、遠隔地の
会計士のもとに電子送信することができる。
【0079】会計士は記憶され送信されてきたセルを受
信すると、それを解釈/実行プログラムを用いて実行さ
せる。そこでそのプログラムは、実行されているのはク
ラスではなくセルであると決定するか、或いはセルが実
行されていると決定する。当該セルは既に実行され送信
されているので、実行プログラムはその既存のセルを、
「セルブロック」として識別されている内部制御ブロッ
クデータ構造として、会計士のコンピュータのメインメ
モリに格納させる。また、他の内部制御ブロックも生成
される。このことについては後に詳しく説明する。
【0080】会計士のコンピュータで実行が始まると、
後に説明するように、フォーム生成プログラムが「再起
動」モードで実行される。会計士のシステム内で実行し
ているルーチンは、支払うべき純税額を計算するための
適切な税金フォームを表示するために必要な処理を実行
する。
【0081】好ましいデータ構造を述べる前にまず、後
の詳細な説明を理解する際に役立つ定義および概念を幾
つか見てみる。
【0082】本件に記載の実施例においては、各オブジ
ェクトクラスは別々のソース定義(例えば、コンピュー
タディレクトリ内の別々のファイル)として定義され
る。もしくは離散型pコードに予めコンパイルされ、そ
れはまた個別のエンティティとして残る。本実施例のケ
ースではないが、将来考慮されることとしては、一つの
ソース定義またはpコード定義内に幾つかのクラスを含
めることが可能であろう。
【0083】ソースコードまたはpコードのいずれのケ
ースにおいても、一貫性を保証するために、もしくは明
瞭なプログラム許可を定義するために、クラス定義にデ
ジタル署名をすることができる。実施例によっては、ク
ラスにデジタル署名し、特定の公開鍵または証書によっ
て認証するか、または証書階層内の特定の鍵または証書
をそのクラスに持たせるだけで十分である。また別の方
法としては、本件に援用している本発明者のプログラム
許可出願、出願番号第07/883,868号に記載し
ているような、より広範囲の許可管理機構を使用するこ
とも可能であろう。
【0084】本件に記載の例は、REXXプログラミン
グ言語、つまりIBMのシステムのアプリケーションア
ーキテクチャ(SAA)標準に基づいている。複数のプ
ログラミング言語を盛り込んむという本発明のこれらの
側面においては、本件に記載の実施例は標準的な「BA
SIC」言語を使用している。前述のように、その標準
的な言語は、新規のプログラミング属性および新規の組
み込み関数と共に拡張され、本発明に従ってオブジェク
ト指向型プログラミングを促進する。当然ながら、この
決定は変更することが可能であり、他の言語または追加
の言語を使用することができる。
【0085】オブジェクト指向型拡張子の幾つかは新し
い種類のデータ、すなわちインスタンス参照値を含んで
いる。REXX言語は1種類のデータ、つまりストリン
グのみを定義する。ストリングに対しては、例えば割り
当て、連結、演算等の標準操作が行われる(演算操作に
おいては、数値を反映するストリングのみが用いられう
る)。
【0086】本件に記載の実施例においては、インスタ
ンス値はストリングとは基本的に異なるものとして扱わ
れ、通常のストリング値(演算オペランドもしくはスト
リングオペランド等)として扱われると、インスタンス
値は許可されない。しかしながら、インスタンス値は、
例えば割り当て文の中に引数やパラメータとして現れる
ことができる。本発明の他の実施例では、ストリング値
が期待されているところにインスタンス値が現れたとき
は、必ず、そのインスタンスに対する特定の(もしくは
デフォルトの)メソッドが無条件に呼び出され、ストリ
ングを生成する。同様に、インスタンス値が現れてスト
リング値が一般的に許可されない、例えばメソッド呼び
出し等の場所もある。
【0087】変数はいかなる時でも、そのデフォルト
(REXXにおいては、それは一般的にはその名前のス
トリング値である)、ストリング値、またはインスタン
ス値を収容することができる。変数には異なる時に異な
る種類の値を割り当てることができる。このことは全体
的に柔軟なものであり、プログラムの論理のみによって
決定される。変数を使用する際には、その変数の現在値
だけが有効である。
【0088】変数は、「オブジェクト」型の組み込み関
数(「新規」、「再格納」等)、インスタンス値を有す
る他の変数、ケーブルによって渡されたパラメータ値と
してインスタンス値を再吟味する他の関数、もしくはR
EXXの場合はパーズ文からの割り当てによってインス
タンス値を確保する。
【0089】好ましい実施態様においては、プログラム
変数は四つの異なるプール(従来のREXXおよびBA
SICはそのような変数プールの特定の概念を持たな
い)の内の一つに属することができる。
【0090】グローバルは、特定のセル内の全てのイン
スタンスと関連する変数を定義する。グローバル変数
は、変数がグローバルであると宣言していれば、いかな
るクラスからも(そのセル内にある)全てのインスタン
スへアクセスすることができる。各セルはそれ自身のグ
ローバルプールを有する。本発明の実施例においては、
(サブ)セル内にあるインスタンスは、そのセルに対す
るグローバルプールへのみアクセスし、スーパーセルの
グローバルプールへはアクセスできない。一つのセル内
に適切に含まれているインスタンスもまた、サブセルの
グローバルプールへアクセスできない。本発明の他の実
施例では、上記とは異なる操作が可能である。
【0091】シェアードは、特定のインスタンスと関連
する変数を定義するが、この変数をシェアードとして宣
言しているインスタンスの列内の全てのクラス間で共用
される(異なるインスタンスはそれぞれ、この変数の独
自の実現値を有している)。
【0092】プライベートは、特定のインスタンスと関
連している。プライベート変数はプライベートを宣言し
ているインスタンスおよびクラス定義内にのみアクセス
できる(当該インスタンス列内の他のクラスへはアクセ
スできない)。同一列内の異なるクラスでさえ、この変
数独自の実現値を有しうる。
【0093】ローカルは、特定のインスタンスの特定の
現在の実行と関連している。ローカル変数は各メソッド
の実行を開始する際には定義されておらず、そのメソッ
ドが完了した際に破棄される。同一のインスタンス内の
幾つかのインスタンスが同時に起動している場合、各イ
ンスタンスはローカル変数の独自のバージョンを有して
いる。
【0094】変数のプールが指定されていない場合は、
それはローカルである。変数をドロップする(REXX
スタイル)ことによって、またはその変数値を再び割り
当てることによって、何時でも変数を明示的に破棄する
ことが可能である。しかしながら、各変数はまた、それ
ぞれが関連している特定のオブジェクトエンティティが
破棄される際に破棄される。
【0095】ローカル変数は各メソッド実行後に破棄さ
れる。プライベートおよびシェアード変数はメソッド実
行後も保存されるが、そのインスタンスが削除されるか
または壊された時には破棄される。グローバル変数はセ
ルが削除された時にのみ破棄される。
【0096】グローバル変数のみが一つ以上のインスタ
ンスによってアクセスすることができる(当然ながら、
インスタンス値を含む値はパラメータとしてインスタン
ス間で引き渡され、引数として受取られる)。
【0097】新しいオブジェクト指向型文には以下のも
のが追加されている。クラス―このプログラムおよび他
の特性によって定義されているデータクラスの名前を明
確に指定する。グローバル―グローバルプールから変数
を指定する。シェアード―その継承階層内の全クラス間
にある、このインスタンス内で共用するべき変数を指定
する。変数は、シェアードである旨を規定している同一
のインスタンス(階層)内のクラス間でのみ共用され
る。プライベート―プライベートプール内の変数を指定
する。メソッド―メソッドの起動およびそのメソッドの
特性を指定する。その特性には、他のメソッドが規定の
インスタンスに対して既に稼働している場合、このイン
スタンス向けにそのメソッドの入力が許可されるかどう
かが含まれている。
【0098】好ましい実施態様においては、各オブジェ
クトインスタンスは、2+Nまでの異なる永久的なデー
タプール(そこでは、Nはインスタンスクラス列におけ
るクラス定義の数である)に関連する複合データ構造で
ある。当該データプールにはグローバルプール(当該セ
ル用)や、シェアードプール(当該インスタンス用)お
よびN個のプライベートプール(当該プールクラスに関
連した継承列内にある各クラス用)がある。
【0099】さらに、特定のメソッドがインスタンスに
対して稼働している場合は、その実行に関連する追加の
ローカルプールがある。好ましい実施例においては、イ
ンスタンスに対して同時実行が行われる可能性を認めて
いる。同一メソッドの同時実行に関してさえもその可能
性を認めており、この場合、それぞれの同時実行に対し
て特有のローカルプールがある(しかし、同一のプライ
ベート、シェアードおよびグローバル変数は全ての同時
実行に対して使用される)。
【0100】図2は、「セルブロック」11データ構造
の実施態様を表している。セルブロック11は、実行す
るために図1のメインメモリ2に格納される際には、セ
ルのルートである。セルブロック11は、次のセルブロ
ックを指し示すポインタである「次セル」フィールド1
2を含んでおり、その次セルブロックはサブジェクトセ
ルブロック11によって呼び出される。そのようなポイ
ンタは、例えば、セルブロック11を生成する1040
フォームが、米国連邦政府規定のフォーム1040に添
付される州所得税フォームを生成するために別のセルを
呼び出す際に使用される。(そして、1040セルが実
行される時に、連邦政府規定のフォーム1040が自動
的に呼び出される)。次のセルフィールドは、様々なセ
ルを一緒にリンクさせるために使用することができる。
当然ながら、次のセルフィールド内で入力する必要はな
い。
【0101】「グローバルプール」フィールド14は、
グローバル変数のプールの起動を識別するフィールドで
あり、グローバル変数とは、先に定義したように、特定
のセル内の全てのインスタンスに関連する変数である。
例えば、所得税フォーム生成の例では、名前変数は全て
のインスタンスに適用できるグローバル変数である。配
偶者の有無もまた、グローバル変数であろう。
【0102】また、セルブロック11は、名前によって
セルを識別する「セル識別子」フィールド16を含んで
おり、要求があれば、バージョン番号を含むこともでき
る。セルブロック11は、セルの「フェースインスタン
ス」フィールド18を含んでいる。そのフェースインス
タンスフィールドは、図2に示すように、セルに対する
外部要求を処理するためのインスタンスを指し示すポイ
ンタを含んでいる。所得税の例においては、セルに対し
て支払うべき純所得税額に関する質問がなされた場合、
そのフェースインスタンスが所望される結果を提供する
ことによって、その要求に応える責任を負っている。こ
のことは、セル内に他のインスタンスを誘導することも
含む。フェースインスタンスは、プログラムならびにセ
ルに対する要求または質問を管理および処理するための
関連データをすべて含んでいる。
【0103】セルブロック11はまた、ファイルおよび
証書タグを指し示すポインタ19、およびセルに関連す
るプログラムを識別するセル(20)用のクラスを指し
示すクラステーブルポインタを含んでいる。さらに、セ
ルブロック11は、セル用のデジタル署名構造を指し示
すポインタであるセル署名フィールド22を含んでい
る。このセル署名は、そのセルが記憶された際に引き出
されたデジタル署名である。セルブロックが格納された
後に、デジタル署名が認証される。セルブロック11内
にあるセル署名の記憶機構は、要求があればそのデジタ
ル署名を表示し、誰がそのセルに署名したかを決定でき
るようになっている。
【0104】図3は、「クラスブロック」23の内部制
御ブロックデータ構造を示す実施態様である。セルは一
般的に、関連する多くのクラスまたはプログラム部分を
備えている。作成された独自のクラスブロック構造23
が、各プログラムに対して存在する。
【0105】好ましい実施態様においては、全てのクラ
スは一のプログラムに関連している。クラスブロック2
3の最初のフィールドは、クラスリンクフィールド25
であり、セル内の他のクラスブロックにリンクしてい
る。次のフィールドは「親クラス」フィールド24であ
る。このフィールドはクラスブロックを指し示すポイン
タであって、そのクラスブロックからクラスが拡張され
る。基本クラスは、他のクラスに依存していないクラス
である。しかしながら、他のクラスは基本クラスの関数
を拡張し、その基本特性を使用する。そのような基本ク
ラスとは例えば、ディスプレイウィンドウの矩形を構築
するプログラムである。そのプログラムは、ディスプレ
イスクリーン上に特定の高さ、幅および色調特徴を有す
る矩形を構築するよう機能する。
【0106】2番目のクラスはその矩形クラスの上に構
築されてもよい。例えば、「ボタン」クラスがあり、そ
れはウィンドウクラスの全ての特性を利用しているが、
さらに、多くの特性または拡張子も含んでいる。ボタン
クラスは、親ウィンドウ矩形クラスの特性を「継承」す
る。
【0107】レベル数フィールド26の数は、その列に
含まれているクラスの数を規定する。先の例においては
クラスの数は2であり、例えば「ボタン」クラスおよび
ウィンドウ矩形クラスである。また、クラスブロック2
3はクラス名フィールド28を含んでおり、それはクラ
スと、関連するプログラムのプログラムブロックを指し
示すポインタであるクラスプログラムフィールド30と
を定義する。プログラムブロックは、格納されている全
てのプログラムのリストである。
【0108】クラスブロック23はまた、「メソッドテ
ーブル」フィールド32を含んでおり、それはクラスに
使用される有効なメソッドまたは関数のテーブルを指し
示すポインタである。このようにして、当該クラスによ
って実行しうる様々な操作または関数が識別される。そ
のクラス用のメソッドテーブルの各項目は、図3に記載
のフィールド32で識別されている形式を有する。
【0109】実行すべきプログラムをコンパイルする
際、プログラムはより高速で実行されるようにpコード
に分解される。メソッド項目テーブル32は、関連する
クラスプログラムの特定のメソッドに対して、pコード
がどこで起動するかに関する識別子を提供する。このよ
うに特定のインスタンスが実行し、実行すべき有効なメ
ソッドの内の一つを要求すると、メッソドに高速かつ効
率的にアクセスおよび実行することができる。
【0110】図3に示すように、各メソッド項目はテー
ブル内の他の関連メソッドにリンクするための機構を含
んでいる。そのリンクは様々な方法によって為しうる
が、例えば平衡多方向探索樹を用いてもよい。また、テ
ーブルは実行が求められているメソッドの定義に関連す
るクラスブロックを指し示すポインタを含んでいる。例
えば、クラスウィンドウ矩形は、「ボタン」クラスで実
行されるべきメソッドの定義を含んでもよい。
【0111】メソッドテーブルはまた、関連するクラス
内のメソッドに対するpコードの起動を決定するオフセ
ットを記憶する。メソッドテーブルの追加の項目として
は、メソッド名の長さおよびメソッドフィールド名等が
含まれる。
【0112】クラス許可フィールド34は認証された許
可構造を指し示すポインタであり、それは本出願人の出
願中のプログラム許可情報出願、出願番号第07/86
3,552号に従って実行することのできる幾つかの操
作を定義する。クラスブロック23はまた、処理可能な
インスタンスを作成するプログラムの最低レベルおよび
最高レベルの表示36を含んでいる。
【0113】図4は、「プログラムブロック」内部制御
ブロック37に対する典型的なデータ構造である。当該
プログラムブロックフィールドは、そのプログラムが現
在の実行中に他の情報の中のどこに位置しているかを識
別する。プログラムブロックデータ構造37は、「次プ
ログラム」フィールド38を含んでおり、それはサブジ
ェクトプログラムによって呼び出される次のプログラム
ブロックを指し示すポインタである。「次プログラム」
フィールド38は、関連プログラムを一緒にリンクさせ
るための機構を提供する。また、プログラムブロックデ
ータ構造37は、プログラム識別要素を指し示すポイン
タであるプログラム情報フィールド39を含んでいる。
フィールド42はブロック37内に記憶されているpコ
ードプログラムのサイズを定義する。プログラム言語を
識別する「プログラム型」フィールド44も当該プログ
ラムブロックに含まれている。
【0114】フィールド46および48は、それぞれ、
ソースのハッシュおよびプログラムのコンパイルされた
pコードバージョンのハッシュを含んでいる。これらの
フィールドは、同一名を有するプログラムを確実に区別
するために使用してもよい。さらに、ハッシュをプログ
ラムに対するデジタル署名を認証するために使用しても
よい。また、プログラムブロック37は、プログラムブ
ロックを参照しているクラスの数を識別するクラスカウ
ントフィールド49、ならびにプログラム構造制御ブロ
ックおよびそのソースコードを指し示すポインタを識別
するプログラム使用フィールド50を含む。フィールド
51は、本出願人のプログラム許可情報出願に従って構
成される、認証された許可構造を指し示すポインタであ
る。
【0115】図5は、典型的な「プログラム構造」制御
ブロック52である。プログラム制御ブロック37はフ
ィールドを含んでおり、そのうちの幾つかは変化しうる
が、「プログラム構造」フィールドは、プログラムを実
行しているプラットフォームに拘わらず定数であり、デ
ィスク上に記憶された場合には、形式またはpコードに
なる。
【0116】「プログラム構造」制御ブロック52は、
プログラム構造フィールド54の大きさを識別する53
を含んでいる。プログラム構造フィールド54は「プロ
グラム識別子」であり、特定のプログラムを識別するた
めに使用する名前を記憶する。また、当該プログラム構
造ブロックはフィールド56を含んでおり、プログラム
に関連するメソッドおよびクラス名と、関連するメソッ
ドに対するpコードの起動を識別するための関連pコー
ドオフセットのリストとを識別する。「プログラム構
造」ブロック52は、また、「変数テーブル」フィール
ド58および定数フィールド60のテーブルも含んでい
る。
【0117】また、プログラム構造ブロック52は、図
5に示すように、プログラムのpコード命令61を含ん
でいる。
【0118】図6は、典型的な「実行」内部制御ブロッ
ク62である。実行制御ブロック62は、その実行過程
における現状態の経過を追う。実行制御ブロック62
は、次のpコード命令を指し示すポインタである次命令
フィールド64を含む。
【0119】実行制御ブロック62はまた、関連するク
ラスブロックを指し示す「クラスポインタ」フィールド
66を含んでいる。インスタンス実行フィールド68
は、実行されている特定のインスタンスを指し示し、ロ
ーカルプールフィールド70はローカル変数用のプール
を指し示す。メソッド開始以前には、ローカル変数は存
在しない。プログラムが実行されると、ローカルがスク
ラッチパッド型メモリに記憶され、当該実行ブロックが
これらのローカル変数がどこに常駐しているかを指し示
す。実行ブロック62はまた、「前実行ブロック」フィ
ールド72を含んでおり、それは現在の実行ブロックが
処理されるより先に制御されていた、前の実行ブロック
を指し示す。
【0120】出願人の進行型プログラム出願で概略を述
べているような詳細を盛り込むために、このブロックに
フィールドを追加することもできる。それらは、本発明
に必ずしも特有でない実行の他の側面(DOブロックや
手続ブロック等)を用いて考えられている。
【0121】図7は、典型的な「インスタンス値」デー
タ構造73である。インスタンスは、オブジェクトとし
てデータに結合しているプログラムを有する特定のデー
タである。例えば、インスタンスは純税額を決定するプ
ログラムに結合された、特定の所得税に対するデータで
あってもよい。
【0122】「インスタンス値」データ構造73は「ク
ラス参照」フィールド74を含み、「クラス参照」フィ
ールド74はデータ構造73内のインスタンス値を処理
するための特定のクラスプログラムを指し示す。また、
データ構造73は「セル参照」フィールド76を含んで
おり、それは(1つ以上のセルが呼び出された場合は)
インスタンス用の特定のセルブロックを指し示す。イン
スタンス値構造73はまた、インスタンスが実行された
後にそのインスタンスをを削除するために使用される削
除保留フィールド78を含んでいる。
【0123】インスタンス値データ構造73はまた、当
該インスタンスに対して稼働中の実行ブロックの数を識
別する「実行カウント」フィールド80、特定の「退
避」操作(図11の説明参照)を識別する走査インジケ
ータフィールド81、ならびに変数およびフェースイン
スタンスを含む当該ブロックを指し示すポインタの数を
識別する使用カウント82を含む。当該制御ブロックを
指し示すポインタがない場合、そのデータ構造を削除す
べきであるという表示を出してもよい。
【0124】データ構造73は「レベルカウント」フィ
ールド84を含む。それは図3に関連して前述したよう
な継承特性のレベルを表示する、間連するクラスブロッ
ク内のレベルの数を識別する。データ構造73はまた、
シェアード変数のメモリヘッドを指し示す「シェアード
プール」フィールド86を含んでいる。この機構によ
り、データが一定のインスタンスクラス列内にあるプロ
グラム間で共用されるようになる。データ構造73は、
また、図7に示す形式を有するプライベートプールフィ
ールド88を含んでいる。プライベートプールフィール
ドは、インスタンスの列内にある特定のクラスとのみ関
連しているプライベート変数と関連している。
【0125】図8は典型的な「変数ブロック」データ構
造90である。変数ブロックデータ構造90は、システ
ム内の同一の変数プール内の他の変数ブロックへのリン
ケージである「リンク変数」フィールド92を含む。フ
ィールド93は、その変数値を与える値ブロックを指し
示すポインタである。フィールド94は、修飾変数用の
プールヘッドを識別する。その変数名の長さおよび変数
名は、フィールド95および96においてそれぞれ指定
される。図9は、当該変数値を識別する典型的な値ブロ
ックデータ構造97である。データ構造97は、その変
数をストリングまたはインスタンスとして識別する、値
型フィールド98を含んでいる。当該データ構造は、図
9に示すようなストリング(99)およびインスタンス
(100)に対する項目を含んでいる。
【0126】図10は、典型的なマスタ領域ブロックデ
ータ構造101である。マスタ領域ブロックは全てのシ
ステム情報を収容し、「メインセル」102のような多
くのポインタを含んでいる。「メインセル」102は、
一次セルに対するセルブロック、メッセージ参照テーブ
ルを指し示すメッセージ参照103、全ての格納された
プログラムのテーブルを指し示すプログラムテーブル1
04、実行スタック内の最新の実行ブロックを指し示す
「実行スタック」105、ならびに接続されたファイル
のリストおよび証書キャシュリストを指し示すポインタ
106および107を指し示す。
【0127】図11は、本発明の典型的な実施例に従っ
てディスクに書き込まれた「記憶されたセル」11を示
している。作成されてディスクに書き込まれたデータ形
式は、セルの現状(現在のセルまたは関連するセル)を
退避するためにクラスプログラム内から呼び出される組
み込み関数によって生成することができる。
【0128】また、退避は解釈/実行プログラムによっ
てユーザに供給される「環境」関数、例えば「プルダウ
ン」ファイルの動作バーフィールド上の選択肢である
「退避」等として、当該セルの「外部」から呼び出すこ
とができる。
【0129】セルは少なくとも2つのフェーズにおいて
記憶される。第一のフェーズは「印付け」フェーズであ
り、その中で記憶すべき全ての構造化構成要素セットが
決定される。構成要素にはセル(サブセル)や、変数プ
ール、変数、値、およびインスタンス等が含まれる。本
実施例では、ローカル変数も現実行タスク構造(すなわ
ち、実行ブロックによって表現されているような稼働中
メッソド)も、セルの一部として退避される。このこと
は、フェースセルがインスタンスの「再起動」メソッド
時に復元の一部として実行される方法と一致する。
【0130】「退避」関数を使用しているプログラム
は、上記の特殊な側面を考慮したものでなければならな
い。全実行スタックが一時(ローカル)変数と共にセル
内で退避されるという代替方法ももまた実行可能であ
り、現過程にわずかに変更を付け加えるだけでよい。そ
の方法では、全稼働中メソッドのローカルスタック(関
連するローカル一次変数プールを含む)を表示している
構造もセルに退避される。そのような方法は、本発明者
の進行型プログラム発明出願の記載の方法に類似してお
り、同様の考慮を行っている。
【0131】第一の走査フェーズにおいて特殊な「退
避」メソッドは、「復元」操作が最終的に円滑に行われ
るようにするのに必要とされる付随処理を実行するため
に、(当該メソッドを有しているクラスのインスタンス
に対して)呼び出される。そのような付随処理には、例
えばセルにはすぐには知られない現情報を視覚オブジェ
クト(恐らく、不完全な入力フィールドデータ等)から
引き出す処理等が含まれる。多くのインスタンスの状態
は自動的に退避される内部持続変数の値にのみ依存して
いるため、インスタンスの多くは特殊な条件を有してい
ないであろうと予想される。「退避」メソッドは、他の
稼働中のインスタンスの状態を呼び出したり、大きく変
更しないようにする義務を負っている。なぜなら、その
ようなインスタンスはそれぞれ、駆動された「退避」メ
ソッドを既に備えているからである。
【0132】「退避」メソッドが各インスタンスに対し
て駆動された後、インスタンスの変数(プライベートお
よびシェアードプール内のあらゆる変数ならびに参照さ
れているか、または参照されているステムに属するあら
ゆるグローバル変数)が調べられる。その後、当該変数
内で定義されているが、走査されていないインスタンス
は、各インスタンスが一度で正確にスケジュールされる
ようにスケジュールされ、現在の退避要求の通し番号で
印を付けられる。退避すべきセルのフェースインスタン
スの走査が開始され、次にその時生じる全(インスタン
ス)変数が反復的に走査される。
【0133】退避関数に対して指定されるインスタンス
は全て、その結果として生ずる退避セルのフェースイン
スタンスになる。走査フェーズで関連する変数を分析す
る際に、他のセル内のインスタンスを参照することが決
められた場合、これらのセルは作成されている新規記憶
セル内のサブセルとして含められる。このようにして、
最初のメインセルが先のサブセルの内の1つのサブセル
になり、先のサブセルが新規のメインセルになることが
可能である。このことは、一般に、セルがリンク間ポイ
ンタ変数を有している時に起こる。
【0134】その後第2の走査フェーズが、第一の走査
で印を付けられた変数および値の集合体セットを収集
し、そこから記憶されたセル(ファイル)構造を出す。
【0135】退避要求の一部として指定された選択肢に
よって、オブジェクトクラスプログラム定義の全てがフ
ァイルの一部として退避されたり、そのうちの幾つかが
ファイルの一部として退避されたり、または全く退避さ
れなかったりする。これらは認証または許可デジタル署
名構造が生じた全てのものと共に、ソースフォームもし
くはコンパイルされたフォームの内のいずれか(または
両方)に退避される。
【0136】退避されたデータは、セル認証に必要なも
のと、そうでないものの2つに分けられる。この場合、
認証は、セルを復元後実行が再び始まる際に正確に再構
築するために必要な情報にデジタル署名をするために使
用される。例えばクラスプログラム自身のイメージ等の
認証に必要でない情報には署名されない。なぜならば、
そのような情報は安全性を損なうことなく付け加えた
り、省略することができる「便利なもの」と考えられて
いるからである。しかしながら、様々なクラスプログラ
ムの識別は通常ハッシュを伴っており、正しいクラスが
実際に使用されていることを保証するために使用されて
いるので、重要である。セル内にクラスプログラムを任
意に含めることができることにより、所望する使用にと
って最適な方法でセルを記憶することができる。
【0137】セルはまた、追加のデータ構造を含んでも
よい。本件に記載の例においては、そのような追加情報
のセットが2つある。それは証書および外部ファイルで
あり、それらは特に組み込まれており、セルに結合され
る必要がある。
【0138】デジタル署名証書のリストは「共通証書キ
ャシュ」と呼ばれている。これらの証書は、データ構造
の少なくとも3つの異なるクラス上で実行される関連す
るデジタル署名である。 ・(認証および/または許可用の)クラスプログラム定
義 ・プログラム実行の一部として認証または許可されてき
たインスタンス内のデータ(例えば、ANSI(米国規
格協会) X12850 購入注文処理セット)。これ
らの署名はプログラム論理そのものによって、構築され
たデータ上に請求されており、その証書は共通証書キャ
シュに明示的に移すことができる。 ・送信中に認証されるセルの本体
【0139】証書を「共通証書キャッシュ」に組み合わ
せることによって、証書は複写されることなくセル内に
運ばれる。しかしながら、複写される可能性もある。例
えば、異なるオブジェクトプログラムクラスがしばしば
共通の信託者によって許可されたり、多くの異なるデー
タ署名が証書階層において一人のユーザに署名された
り、互いに親密な複数のユーザによって署名されたりす
る(そしてそのために多くの共通の証書が生じる)こと
がある。
【0140】セルの未認証部分に証書を位置指定するこ
とにより、セルの使用を明らかにするために証書付け加
えたり、削除したりすることができる。例えば、短期間
の局所記憶用のセルに証書を挿入する必要はない。なぜ
ならば、証明を過度に複写することによって記憶機構を
浪費することになるからである。しかしながら、セルが
長期のアーカイブに移動する場合や、他のユーザ(キャ
ッシュに関連する全ての証書を持っていないユーザ)に
セルを送信する場合には、セルに証書を挿入するのは妥
当である。
【0141】記憶したセル1つに対して1つの証書のキ
ャッシュを保守すると、各種の証明要素が使用カウント
を保守することになる。このために、各(サブ)セルは
要求する証書の要約を含む。証書の要約は、署名が作成
されるかまたは受け取られた時にキャシュを挿入するた
めの証書、および署名値が解放されるかまたは無用にな
った時にキャッシュを削除するための証書を有してい
る。クラスプログラムに属する署名用に同様の使用カウ
ントが保持されており、またセル自身に対してさえも同
様の使用カウントが保持されている。各証書要約は、証
書使用カウントのハッシュで構成されているにすぎな
い。
【0142】挿入されるデータのカテゴリーには他に、
セルに付け加えられた「外部」データファイルがある。
これを使用する目的及び機構は進行型プログラム出願に
詳細に記載されている。しかしながら、多重セルに関し
ては、いくつかのサブセルが「発生し」て、個別の記憶
されたセルエンティティーとして退避された場合に備え
て、(サブ)セルが様々なファイルを使用していること
に関するインディケータを保持することも望まれる。
【0143】セルの格納に関しては、フェースインスタ
ンス値およびグローバルプールを含む格納しようとする
ものすべてを走査および印付けすることが重要である。
プールに関しては、プール内のすべての変数を走査およ
び印付けする。変数に関しては、変数に関するすべての
値およびサブ変数を走査および印付けする。サブ変数
は、ステム変数の構成要素として「REXX」内で発生
する。
【0144】値に関しては、ストリング値に対して値が
この格納処理中に見えるように表示する。インスタンス
値に関しては、この格納処理過程中に値が見え、かつこ
のインスタンスに関するクラスに対して「格納」という
メソッドを呼び出す(他で説明されている作成のための
「新」メソッドを伴うメソッド方法と同様の「優先」を
考慮に入れた多重メソッド方法を用いる)。このインス
タンスに関連するクラスを印付けし、インスタンスのク
ラス列内の各クラスと関連するシェアードプールおよび
プライベートプールを走査および印付けを行う。
【0145】クラスに関しては、デジタル署名済の(ま
たは帰属させられた)許可または認証を含むクラスプロ
グラム定義の印付けと、クラスのベースクラスがあれば
その走査および印付けとを行う。
【0146】印付けがなされたアイテムを格納するため
に、クラスの場合には、(現状において適切または決定
された)ソースコードおよび/またはpコードのハッシ
ュが常に格納される。ソースコードまたはpコードのイ
メージもしくはその両方のイメージを格納することも可
能であるが、それらは、好ましくは、全体的な認証を受
けないセルの部分に格納される。
【0147】また、解釈/実行プログラムのレベルおよ
び各クラスプログラムの適用バージョンのレベルも格納
される。これにより、置換しても既存インスタンス内の
データと機能上一致するならば、拡張/修正された置換
クラスに将来置換することが可能となる。
【0148】クラスに関連するいかなるデジタル署名、
証書および/または許可も格納することが望ましい場合
が多く、また、選択されたオプションおよび特定の実施
例の目的によっては、格納されたセルの認証または未認
証部分のどちらかの中にこれを格納するのが適当な場合
もある。
【0149】さらに、本件に援用されている本発明者の
上記進行型プログラムの出願に従って、格納されたセル
の一部として種々の他のファイルのコピーも格納するこ
とが望ましいであろう。
【0150】セルを格納する最終ステップとして、導入
選択または退避選択によって要求される場合には、セル
の重要な「認証された」部分がデジタル的に署名され
る。
【0151】進行オブジェクト指向型プログラムを送信
するには、(「セルを格納する」ことによって作成され
るであろう)格納されたセルのイメージを送信する。も
し(すべての)受信者が一定のクラス定義を有している
ことが知られていれば、格納された(および送信され
た)イメージ(これはより少量の送信されたイメージで
もよい)の中にクラス定義が含まれる必要はない。そう
でない場合には、一連の保存行為には、ソースコード、
pコードまたはその両方が含まれる(ソースコードを含
むことによって、異なるバージョンの解釈/実行プログ
ラムがクラスを再翻訳することが可能となり、異なるバ
ージョンの解釈/実行プログラムが互換性のないpコー
ドを有する場合に便利となる)。
【0152】図11に戻って、ディスク上に格納される
セル111は、セルを識別するセル識別フィールド11
2を含む。例えば、セル識別によって、名前、例えばX
会社の購入注文が提供され、プログラムが、セルにアク
セスするためにファイルを走査してファイル名を引き出
すことができる。
【0153】図11の114で示すように、後続の事項
すべては、所望するならば暗号化され、かつ圧縮形式で
格納され、セルに関連する特定のプログラムは、ディス
ク上のフィールド115に格納される(例えば、クラス
プログラム1,2,...Pを含む)。
【0154】図11のラベル116で示すように、格納
されるセル内で後続の事項は、任意で認証されてもよ
い。従って、いったんこの事項がセル内に格納される
と、変更されれば、事項の明確なインテグリティに必ず
影響を与えるようになる。
【0155】フィールド117は、プログラム参照1か
らプログラム参照Nまでの「プログラム参照ベクトル」
のセットを含む。このようにして、すべてのプログラム
をディスク上に格納する代わりに、プログラムの明確な
参照を用いて、所望通りに、プログラムに対して後から
アクセスすることができるようにしてもよい。「プログ
ラム参照ベクトル」117は、各セルプログラムを明確
に識別し、必要があればプログラムライブラリからセル
プログラムに対してアクセスできるようになっている。
【0156】セル(またはサブセル)ベクトルフィール
ド118は、格納されたメインセルを定義し、1つの以
上のセルがファイルに関連して1つのメインセルが他の
サブセルを包含している場合には、サブセルも定義す
る。「データファイルベクトル」フィールド120は、
種々のファイル用のデータファイル仕様を含み、このデ
ータファイル仕様は、上記の進行型プログラム法に従っ
た進行型プログラム出願で用いられるプログラムを有し
ていてもよい。
【0157】「署名認証」フィールド122は、認証が
所望される場合に、プログラムセルを定義する署名認証
事項に関連する署名を格納するために用いられる。最後
に、フィールド123が、デジタル署名過程で用いられ
るいかなる証書をも保持する証書仕様のセットを格納す
る。
【0158】図12から図22は、格納されたセルの部
分を示す拡張データ構造をさら詳述するものである。図
12に示すプログラムデータ構造124は、図11に示
すクラスプログラム1からPの拡大図である。プログラ
ムデータ構造124内の第1のフィールドは、「プログ
ラム日付」フィールド126で、プログラムが作成また
はコンパイルされた日付を定義しうる。
【0159】プログラム識別子フィールド128は、プ
ログラムに関連する名前である。「プログラム識別子」
128は、図13で拡大して、後にさらに説明する。
【0160】「プログラム実行可能」フィールド130
は、プログラムが、ソースコード、pコード、またはそ
の両方で実行可能かどうかを特定し、プログラムモード
フィールド132を用いてプログラムがソースコードま
たはpコードで実行可能かどうかを特定する。
【0161】プログラム自身は、図12に示すソースコ
ードまたはpコードでの実行可能イメージフィールド1
33に常駐する。プログラム構造は、上述の図5で特定
したフォーマットで構成される。フィールド134で
は、生じうるプログラムの第2の実行可能イメージが、
ソースコードおよびpコードが特定されていれば、格納
される。プログラム許可情報およびプログラム識別子の
デジタル署名が、フィールド136で格納される。前述
したように、プログラム許可情報は、本件で援用されて
いる出願人の出願中のプログラム許可情報特許出願に従
って用いられる。
【0162】プログラム識別子構造128は、プログラ
ミングの型(フィールド138)をプログラミング言語
を識別することによって識別する。
【0163】フィールド140は、オブジェクト識別子
が割り当てられたX.209プログラムを識別する。こ
のオブジェクト識別子は、容認された基準に従ってプロ
グラムを独自の方法で識別するX.209のプロトコル
に従った識別子である。プログラム名フィールド142
は、特定のプログラムをプログラム名で識別してユーザ
に表示する。
【0164】プログラム修正レベルフィールド144
は、プログラムの修正レベルを識別する。互換性フィー
ルド146は、互換データを作成する最下位から最上位
のプログラム修正の中で他の修正によって作成されたデ
ータと、プログラムがどの程度まで互換可能かを識別す
る。通常は、最上位の修正レベルは、最新の修正と一致
するであろうと思われる。しかしながら、もし最新のプ
ライベート変数、シェアード変数およびグローバル変数
が、将来改訂されるものと「上位」互換性を有すること
が予期される場合には、予定される将来の修正レベルは
除外することが可能である。さらに、プログラム識別子
構造128は、また、ソースプログラムフィールドのハ
ッシュ148およびpコードプログラムフィールドのハ
ッシュ150も含む。
【0165】「プログラム参照」構造151は、図11
に示すプログラム参照情報を拡大したものであって、図
13の上述したプログラム識別子フィールド128を含
む。さらに、親クラスプログラムの「整数フィールド」
152は、1プログラムにつき1つ以上のクラスが許容
された実施例において互換可能として参照される親クラ
スプログラムのバージョンを識別した後、各クラス用に
定義された新たな構造に移動されなければならない。
【0166】図15は、図11で示す対応セルを拡張し
たセルデータ構造118の例である。セルを識別するセ
ル識別子156については、セル識別子の拡張バージョ
ンを示す図18に関連して、後述する。
【0167】「インスタンスベクトル」フィールド15
8は、セルに関連する各インスタンス毎に1つの入口を
有する。第1の入口は、このセルのフェースインスタン
スであるとみなされる。フィールド160は、(プログ
ラム参照ベクトル内に)索引を定義し、このインスタン
スと関連するクラスを含むプログラムを定義する。フィ
ールド162は、(160で識別される)プログラム内
のどのクラスかを識別する。1プログラムにつき1クラ
スを有するこの実施例では、このフィールドは余分であ
り、常に第1のクラスを定義する。インスタンスフィー
ルド164は、インスタンス内のシェアード変数を有す
る。フィールド166は、インスタンスの列内のクラス
と関連するプライベート変数プールのベクトルである。
フィールド167は、基本の(最も古い)クラスのプラ
イベートプールを定義し、フィールド170は、インス
タンスの列内の最も拡張された(最新の)クラスのプラ
イベートプールを定義する。
【0168】セルデータ構造118は、さらにグローバ
ル変数プールフィールド172を含む。さらに、セル1
18は、データファイルタグ参照フィールド174を含
み、このフィールドは、上述の進行型プログラム関連出
願に関連した進行型プログラム関連において本発明が用
いられる場合のデータファイルの付加に関連する。この
データファイルタグフィールド174は、どのセルが関
連する付加データファイルを有するかを監視している。
証書フィールド176は、特定の(サブ)セル118と
ともに参照された証書を参照する。
【0169】図16は、変数プールデータ構造178を
一般的に示すもので、プール内の変数1,2から最後の
変数まで(フィールド179から181まで)を含む。
この構造は、シェアード変数プール、プライベート変数
プールまたはグローバル変数プールと関連して用いられ
てもよい。
【0170】図17は、変数構造182を示す。変数デ
ータ構造182は、変数を識別する変数名183と、変
数値フィールド184とを含む。本発明に従えば、変数
は、値としてのストリングまたはインスタンスを有して
いてもよい。変数値フィールドは、格納されたセル内で
X.209表示で表示される。X.209のデータ型
は、値の型を定義するために用いられる。すなわち、格
納された値がX.209OCTET型の場合は、この値
はストリング値であり、変数の値を直接に表示する。格
納された値がX.209整数型の場合は、この値はセル
のインスタンスベクトル(フィールド158)内で、整
数値によって索引が付けられたインスタンスを表示して
いるとみなされる。格納された値がX.209シーケン
ス型の場合は、この値は、異なる(サブ)セル内のイン
スタンスとみなされ、そこでは、シーケンスの第1の整
数が、セルベクトル118内で索引が付けられたセルと
関連するインスタンスベクトル158内のインスタンス
を、シーケンスの第2の整数を用いて定義する。変数が
(ステム以外の)単純な変数または修飾された変数を持
たないステムで、割当値を有しない場合は、この変数は
プールから削除される。しかしながら、変数が修飾は有
するが割当値は有しないステムの場合は、格納された値
はX.209のナル基本命令として表示される。
【0171】図18は、図15に示すセルデータ構造の
セル識別子156の分解図を示す。セル識別子156
は、古いフォーマットと新しいフォーマットとを分別す
るために用いられるセルフォーマットコードフィールド
186を含む。「モーメント構成」フィールド187
は、セルが作成された時刻を決定する。
【0172】フィールド188は、X.209オブジェ
クト識別子を用いてセルカテゴリーを識別するために用
いられ、例えば、所得税の書式作成に関するセルカテゴ
リーを識別するために用いてもよい。セルカテゴリー
は、フィールド189内で名前によって指定される。セ
ルインスタンス識別子フィールド190は、個別のセル
に関するインスタンスをさらに識別するために用いられ
てもよく、例えば、特定の個人の純税額を作成するため
に用いられてもよい。フィールド190から196は、
特定の場合に必要とされるインスタンスの名前、表題お
よび種々の修飾子を識別することに関する詳細を識別す
るセルをさらに提供する。
【0173】図19は、データファイル仕様データ構造
198の実施例である。このデータファイル仕様データ
構造198は、特に発明者の出願中の上記進行型プログ
ラム関連出願の手法に従った進行型プログラム関連で用
いられると特に有効であり、そこでは、例えば、データ
ファイルが進行型プログラムに付加される。使用カウン
トフィールド200は、識別されたデータファイルを用
いるセルの数を識別する。データ型フィールド202
は、ファイル内に含まれるデータの性質を識別して、フ
ァイルが、レコードか、ビットストリームか、または他
の型のファイルかを示す。ファイル内容フィールド20
4は、ファイルおよびその構成要素レコードの性質をよ
り特定的に説明するために用いられる。
【0174】図20は、ファイルタグデータ構造174
の例を示しており、図15のフィールド174の分解図
である。「付加識別子」フィールド206は、データス
トリングであって、出願人の出願中の出願に記載されて
いる進行型プログラムの手法に従って付加されたファイ
ルを識別する。データファイル参照フィールド208
は、図19に示すデータファイル仕様データ構造198
の索引である。「タグ使用カウント」フィールド210
は、当該セルから発生した付加ファイル要求の数を定義
する。
【0175】図12〜図22は、証書仕様データ構造1
23の例であり、図11の「証書仕様」フィールドの分
解図である。証書仕様データ構造123は、種々のデジ
タル署名関連で用いられるデジタル署名操作で用いられ
た各証書のコピーを含む。本発明のデジタル証書の用途
の一つは、種々の処理を行う権限をプログラムに与える
ために、各プログラムに署名することである。そのよう
なデジタル署名は、米国特許5,005,200,4,
868,877および5,001,752で説明された
出願人の拡張デジタル署名法に従って実行されてもよ
い。デジタル署名および関連する証書の他の用途は、進
行型プログラム特許出願に関連するプログラム署名デー
タを有することである。デジタル証書は、また、セル全
体に対する署名を含む処理の場合にも有用であり、セル
全体があるユーザから他のユーザへ出願人の進行型プロ
グラム法によって送信される場合には、特に有用であ
る。使用カウントフィールド212は、証書の参照数を
指定する。使用カウントフィールドは、また、各セルま
たはサブセル内のタグ使用カウント、署名された変数の
署名および証書仕様キャッシュ内の他の証書による参照
も含んでもよい。セル内で用いられたすべての証書は、
この共通証書キャッシュメモリ内に格納されてもよい。
すべての証書には、「ハッシュ識別」証書フィールド2
14およびフィールド216内の証書自体が含まれる。
【0176】「証書タグ」データ構造176の実施例を
図22に示す。この構造では、セルが他のセル内に挿入
され、挿入されたセル内の証書の使用法を記録する。証
書タグデータ構造は、「証書ハッシュ識別」フィールド
218および「タグ使用カウント」フィールド220を
含み、当該セル内の使用数を識別する。
【0177】本発明の好ましい実施例は、REXX(ま
たは、代わりにBASIC)ソースを、オブジェクトク
ラスの定義か、またはコンパイルされたpコードとして
受け取る。以前は見られなかったオブジェクトクラスが
発生する場合はいつでも、そのソースコードは、コンピ
ュータメモリ内のpコード内に(動的に)コンパイルさ
れる。
【0178】図23は、解釈/実行プログラムによって
実行される操作のシーケンスを示す一般的なフローチャ
ートである。はじめに、解釈/実行プログラムが、基本
のコンピュータ処理システムによって格納される。この
システムは、図10に示す主制御域を作成する。呼出し
の一部としてまたは呼出しの直後に、解釈プログラム
は、初期実行の対象がクラス定義か、または既存のセル
かを決定する。この識別は、実行要求またはユーザから
の請求によって実施されてもよい。例えば、明確なパラ
メータであるかもしれないし、または最初のファイル名
から決定することができる場合もある。
【0179】クラスが実行されることになると、それに
伴って新たなセルが作成されることになる。解釈プログ
ラムは、活動中のセルの制御ブロックを作成し、クラス
列階層を格納する(より詳しくは後で説明する)。この
クラスのインスタンスが作成される。このインスタンス
は、セルの「フェース」クラスとなる。この「作成」メ
ソッドは、その後、このインスタンス用に呼び出され
る。
【0180】既存のセルが実行されることになると、こ
のセルは、(別の箇所で説明されるように)「再格納」
され、すべての構成素変数、値、プログラムクラス、お
よび挿入されたサブインスタンス等は、実行可能な状態
に再構成される。その後、フェースインスタンスが「再
開」メソッドを用いて呼び出される。
【0181】好ましい実施例では、今後の作業が認識さ
れるようにするために、「新規」か「再度」かに関わら
ず、フェイスインスタンスが環境(例えば「ウインドウ
ズ」)とインタフェースしなければならない。そのよう
なインタフェースは、(解釈プログラムに内蔵されてい
るか、または動的にリンクされていてもよい)種々の関
数およびルーチンを呼び出すことによって行われ、例え
ば表示された画像オブジェクト、タイマー、他のセル、
他のプログラム、データベースなどのような「環境」と
相互作用するために構築および準備する。
【0182】解釈/実行プログラムにおける上述のイン
タフェース関数の作業の一つに、最初または実行が通常
に進行している間を問わず、外部識別子のテーブルの保
守があり、外部の実体から解釈プログラムに対して生成
される後続のメッセージが、内部インスタンスおよびメ
ソッドに適切に合致するように保守を行う。このテーブ
ルは、種々のクラスによって実行される関数によって保
守される。
【0183】場合によっては、新規または再格納の要求
(それぞれ「作成」または「再開」)に関連する最初の
メソッド実行は、必要とされるだけの信号、すなわちさ
らに追加の処理を必要としない信号であってもよい。こ
の場合、解釈プログラムは、そのように(別の環境相互
作用を想定していないということを)知らされており、
特別の「組み込み」関数を用いることによって処理の中
止を行う。
【0184】上述以外では、通常の場合、解釈/実行プ
ログラムが、他のセルを含む環境(例えばウインドウ
ズ)、タイマー、装置、または他のプログラムによって
生成されたメッセージを受信することによって、操作が
実行される。
【0185】メッセージが受信されるか、または実行プ
ログラムによってメッセージが発生する場合には、メッ
セージは、インスタンスおよびメソッドを入力メッセー
ジ識別子と関連させるテーブルと合致する。その後、イ
ンスタンスが、指示されたメソッドを用いて有効とな
る。関連するインスタンスが呼び出されたメソッドから
戻ると、実行プログラムは、その後のメッセージを再び
待つ。このループは、セルは完了したので終了されるべ
きであるとセルが表示するまで継続する。この表示は、
終了組み込み関数によって行われる。
【0186】特に図23に戻って、解釈/実行プログラ
ムの実行が開始されると、まずシステムがクラスまたは
セルのどちらを実行しているかが、決定されなければな
らない(302)。初期実行の段階で、プログラム(ク
ラス)が、セルおよびそのデータの作成のために実行し
ていてもよいし、またはシステムが上述したようにプロ
グラムとデータを一体として既に有している既存のセル
を処理していてもよい。
【0187】ブロック302におけるチェックにより、
セルが実行されていることが明らかになると、ルーチン
は分岐してブロック312へ進み、指定のセル名に基づ
いて「セル格納」関数が呼び出される。セル格納ルーチ
ンは、セルに適用されているデジタル署名があれば、認
証処理を行う。多くの場合、署名は、セルが格納されて
から変更されていない旨を示すために用いられる。セル
が再び格納されると、セルは別のものとなり、現在の署
名は疑わしいものとなる。
【0188】特筆すべきは、セル内では、デジタル署名
は、種々のデータ要素またはデータ構造に対し、無制限
の数のセルの実行中における不変のインテグリティを保
証するためも実行されうるが、その後の認証は、クラス
プログラムによって制御される事項であるということで
ある。セル格納組み込み関数では、署名データは、種々
のインスタンスに関連して処理を行うクラス定義プログ
ラムのために認証される。セル格納ルーチンでは、新た
なセルブロックが、すべての新たなポインタを保守する
ために作成される。すべてのクラスについての、後述す
るクラス再格納ルーチンに対して呼出しが行われる。各
拡張クラスが関連するベースクラスに従うように、クラ
スが列順に格納される。その後、復元プールルーチン
が、グローバル変数と、フェースインスタンスおよびそ
の他のインスタンスの復元インスタンスルーチン用に実
行される。フェースインスタンスを指し示すポインタ
は、上述のようにセルブロック内に格納される。いった
んインスタンスが確定すると、インスタンスを参照する
すべての変数が最終ポインタとともに更新される。
【0189】その後、セル格納ルーチンは、このメソッ
ドを有するすべてのインスタンスのために再開メソッド
を実行するように動作する。ルーチンは、各インスタン
スに対し、一度だけ再開を実行する。これは、各インス
タンスブロック内のフラグによって制御される。まず、
ルーチンがフェースインスタンスとともに開始する。イ
ンスタンスは、再開メソッドを、他の関連すると思われ
るインスタンス内で実行することができる。他のインス
タンスによって明確に実行されていない再開メソッドを
有するインスタンスの場合は、再スタートは、明確な呼
出しの後に自動的に実行される。これは、インスタンス
の仕様内のフラグによって制御される。各インスタンス
に関しては、後述の「新規作成」ルーチンに関してと同
様に、複数あり得る再開要求を実行する命令が、クラス
フィールド上の「優先」オペランドとともに処理され
る。
【0190】格納セルブロック312では、最新のセル
が格納される。ブロック312で格納されたセルは、第
1のセルとして格納される。ブロック304では、新規
のセルブロックが、メインセルまたは第1のセルとして
作成される。新規のインスタンスが、第1のセルのフェ
ースインスタンスとして退避される。新規のインスタン
スが作成される方法は、後述する。
【0191】新規のセルがブロック304で作成される
か、または既存のセルが格納されると、ルーチンはブロ
ック330に入って、セルが記憶装置に格納されたこと
となる。「ディスパッチャループ」と名付けられたルー
プが、セルに関連するプログラムが実際に作動している
旨を示す。
【0192】ブロック330では、終了が要求されたか
どうかを決定するチェックが行われる。終了が要求され
ていれば、ルーチンは分岐してブロック340へ進み、
そこで終了操作が行われ、その操作には、セルブロック
構造を削除して実行プログラムを終了させる処理を削除
するためのメインセルのフェースインスタンスの破棄メ
ソッドの実行も含まれる。
【0193】ブロック330のチェックによって終了が
なかったことがわかると、処理はブロック332へと続
き、第1の入力メッセージが検索される。このループを
通った後続のパスにおいて、次の入力メッセージが検索
される。「メッセージ参照テーブル」がアクセスされ
て、どのインスタンスが入力メッセージと関連づけられ
るかを決定する。関連するインスタンスが見つからない
場合は、メッセージは破棄され、可能な診断メッセージ
が発信されて、ルーチンは、分岐してブロック330の
ディスパッチャループの最初に戻る。
【0194】参照テーブルがインスタンスを指定すると
仮定して、当該インスタンスが呼び出される。指定のイ
ンスタンスの指定されたメソッドが、入力メッセージフ
ィールドをパラメータとして用いて実行される。メソッ
ドが実行される方法は、後で図24に関連してさらに詳
述する。図24に従ってメソッドが実行されると、メッ
セージが破棄され(336)、ルーチンは分岐してブロ
ック330に戻り、ディスパッチャループに再入力す
る。
【0195】図24は、図23のフローチャートに関連
して引用されている「メソッド実行」によって実行され
る操作のシーケンスを示すフローチャートである。「メ
ソッド実行」フローチャートは、繰り返し実行される。
ルーチンは、このシステム内で「インスタンスインディ
ケータ」として与えられる変数として扱われる特有のイ
ンスタンスを受け取り、与えられた入力パラメータを用
いてこのインスタンスと共に特有のメソッドを実行す
る。実際には、実行メソッドルーチンは、サブルーチン
という名の変数として作用する。
【0196】ブロック402に従って、「インスタンス
標識」がインスタンス値であれば、その「インスタンス
値」データに対する処理が、識別されたパラメータに基
づいて識別されたメソッドを用いて実行される(40
4)。ブロック404では、実際のインスタンスは、イ
ンスタンス標識と同一になるようにセットされ、クラス
レベルは、インスタンスのクラスと関連する最新の(最
高位の)クラスレベルと同一になるようにセットされ
る。その後、ルーチンは分岐して、ブロック420のル
ーチンの「メソッド検索」部分へ進む。
【0197】インスタンス標識がインスタンス値でない
場合には、ブロック406において、インスタンス標識
が特別のストリング値「.」かどうかがチェックが行わ
れる。特別のストリング値「.」は、現在実行中のイン
スタンスが入力パラメータとともに動作していることを
示す。インスタンス標識が特別のストリング値「.」と
同一の場合は、実際のインスタンス変数は現在実行中の
インスタンスと同一になるようにセットされ、クラスレ
ベルは、図6に示す実行ブロックから派生した現在実行
中のインスタンス内のクラスレベルと同一になるように
セットされる。ルーチンは、その後分岐してメソッド検
索へ進み、ブロック420の最初の処理を行う。
【0198】ブロック406のインスタンス標識チェッ
ク結果が否定的な場合、ブロック410においてインス
タンス標識が特別のストリング値「..」と同一かどう
かがチェックされる。同一であれば、実際のインスタン
ス変数が現在実行中のインスタンスと同一となるように
セットされ、クラスレベルは現在実行中のインスタンス
の親クラス(すなわち、現在実行中のクラスレベルのベ
ースクラスと対応するものであって、現在実行中のブロ
ックからの現在のクラスレベルから1を引いたもの、す
なわち、親クラス)のクラスレベルと同一となるように
セットされる。このようにして、親クラスに属するメソ
ッドは、現在のクラスが同名のメソッドを有している場
合でも、実行することができる。
【0199】ブロック420において、識別されてきた
クラスレベルに関連するメソッド名は、図3に関連して
上述したクラスブロックフィールド32に常駐してい
る。その後、ブロック422において、メソッドテーブ
ル内にそのようなメソッドが存在するかどうかについて
チェックが行われる。そのようなメソッドがない場合に
は、ルーチンは分岐してブロック424へ進み、メソッ
ドエラー表示を生成する。
【0200】そのようなメソッドがある場合には、図6
に示すように、新規の実行ブロックが作成される(42
6)。ルーチン過程のこの時点で、用いられるべき実際
のインスタンス、実際のクラスレベルおよびプログラム
は既知である。プライベートおよびシェアード変数は使
用可能であり、図6の実行ブロックが作成される。従っ
て、この処理の結果、実際のインスタンスがインスタン
ス値としてセットされ、インスタンス実行カウントが増
分され、現在のメソッドおよびそれに関連する実際のク
ラスレベルが表示される。実行されたメソッドは、メソ
ッドがベースクラスから継承している場合には、表示さ
れるクラスレベルよりも以前のクラスレベルと関連づけ
られるであろう。
【0201】その後、現在のpコードアドレスを新規の
メソッドの第1のpコード命令としてセットすることに
よって、ルーチンの処理が準備される。新規の実行レベ
ルが実行スタックの先端に配置され、ルーチンは分岐し
て解釈/実行プログラムへ進み、命令を実行する。
【0202】命令は、実行スタック上の現在の(最高位
の)実行ブロックに制御されて実行される。pコード命
令は、当業者に理解されるような方法によって実行され
る。図25,図26および図27のpコード実行関連処
理に関して説明している、出願番号07/863,55
2の出願人の出願中の進行型プログラム関連出願を参照
してもよい。
【0203】pコード処理を実行する場合に、pコード
処理に関連するすべての変数につき、定数か、もしくは
ローカル型、プライベート型、シェアード型またはグロ
ーバル型かが決定され、また、その値が適切なプールか
ら設定されているかが決定され、もし値が存在しない場
合は、デフォルト動作が行われて、正しいプール内に変
数が作成される。いったん変数ロケータが見つかると、
現在値は、pコード処理に用いるために分離される。
【0204】好ましい実施例においては、値の割当てお
よび割当て解除が、ポインタおよび使用カウンタを用い
て行われる。すべての値が抽出され(およびその使用カ
ウントが増分され)、pコード処理のためにいかなる変
数を準備する以前に、表にされる。適切なpコード実行
プログラムルーチンが、定数および変数から抽出された
値を用いて呼び出される。値の有効性がチェックされ
る。例えば、数字でないストリングは、計算処理には有
効でない。同様に、インスタンス値およびストリング値
をそれぞれ認めない種々の状況が存在する。
【0205】命令を実行すると、現在の実行ブロックに
よって示された次のpコード命令が選択される。pコー
ド命令で示される変数および定数に基づいて、値が抽出
される。pコード命令に特に関連のあるルーチンが、次
に呼び出される。pコード実行に関連する後続の処理
は、次のようにさらに詳述される。すなわち、クラスか
らの新規インスタンスの作成、既存セルをオブジェクト
として格納、指定のインスタンスをセルとして格納/発
信、インスタンスと関連のあるメソッドの呼出し、セル
の終了、機密関数に対する安全性の提供およびメソッド
の終了という処理である。pコード命令が実行された後
に、ルーチンは、実行ブロックが示す次の命令にアクセ
スする。
【0206】各メソッドが実行されると、種々の変数、
すなわち、グローバル変数、シェアード変数、プライベ
ート変数およびローカル変数が、すべて用いられる。各
命令の一部として、種々のオペランド値が収集される
と、解釈/実行プログラムは、その変数がどのプールの
型に割り当てられているかを決定する。ローカル変数の
場合は、実行ブロックに関連してプールが決定される。
プライベート変数の場合は、各インスタンスブロック
は、プール要素のベクトルを含んでおり、クラス列の各
クラスにつき1つの要素を有している。プライベート変
数が発生すると、このベクトルはメソッドのクラスレベ
ルによって索引が付けられ(メソッドが開始すると、メ
ソッドブロック内に格納される)、所望する変数を含む
変数プールにアクセスする。
【0207】シェアード変数の場合は、各インスタンス
ブロックは、全列にある種々のクラス間で共用されるべ
きすべての変数用のプールヘッドを含む。グローバル変
数の場合は、グローバルプールのヘッドが、インスタン
スと関連のあるセル内に格納される。いったんプールが
わかれば、従来の方法、例えば名前の平衡多方向探索樹
(bツリー)またはハッシュ探索を用いて、変数自体を
見つけることができる。定数値は、種々の方法で取り扱
われうる。一つの方法は、プログラムクラス定義自体と
関連する変数として、定数値を取り扱うことである。
【0208】図25は、新規インスタンス作成サブルー
チン内の操作のシーケンスを示すフローチャートであ
る。「新規インスタンス作成」ルーチンは、新規のイン
スタンスがどのように初期設定されるかを示す。まず、
ブロック1402において、格納クラスルーチンが、図
3に示す関連するクラスブロックの作成のために用いら
れる。ブロック1402では、新規のインスタンス値が
構成され、適切な情報が、各クラスレベルに関連するプ
ライベート継続変数プール用のヘッドのベクトルのよう
なインスタンスブロック内に格納される。ベクトルの第
1の要素は、列内最新のクラスのプライベート変数を制
御する、最終のベクトル要素までのうち、列内の最も古
いクラスの変数プールヘッドである。インスタンスブロ
ック内に格納された情報は、シェアード継続変数プール
ヘッド、関連クラスブロックのポインタおよび関連セル
ブロックのポインタをさらに含む。新規のインスタンス
値のアドレスは、ブロック1402で与えられる。その
後、ブロック1420で開始する新規実行ルーチンが開
始され、継承階層のうち最新のクラスが開始する。
【0209】与えられたインスタンスに関して、「作
成」メソッドを有するクラスが、列内のクラスの初期設
定を行うために実行される。
【0210】新規のインスタンスを作成する場合には、
通常、新規のインスタンス作成の元となる基本のインス
タンスが最初に開始して、自動的に初期設定されること
を確認するする必要がある。従って、新規のインスタン
スが作成される場合には、最も古いインスタンスが最初
に作成され、最新のインスタンスに対して働きかけるこ
とが重要である。しかしながら、この一般法則には例外
がある。「作成」メソッドルーチン内の「優先」オプシ
ョンにより、いずれかのオプションを選択することがで
きる。ブロック1420では、新規のローカル変数プー
ルが各クラスレベルが実行すると、新規のローカル変数
プールが提供される。
【0211】ブロック1422において、指定クラスの
作成メソッドが優先オプションを有しているか、または
指定クラスが指定親ベースクラスを有しないかを決定す
るためのチェックが行われる。もし指定クラスの新規の
メソッドが優先オプションを有しているか、または指定
クラスが親クラスを有していない場合には、ルーチンは
分岐してブロック1424へ進み、「作成」メソッドが
呼び出される。その後、ルーチンは分岐してブロック1
428へ進み、呼出者へのルーチンへと進む。この「作
成」メソッドは、適切と思われる場合には、親クラスの
作成メソッドを明示的に呼び出さなければならない。ブ
ロック1426で、ブロック1422におけるチェック
により、作成メソッドが「優先」オプションを有してい
ないことを検出したら、逆ルーチンが、親クラスを用い
てブロック1420を再度呼び出す。インスタンスは作
成が呼び出された旨を示すように印付けされる。
【0212】図26および図27は、クラスを格納する
ために用いられる操作のシーケンスを示す。この操作
は、以前特に用いられたことが知られていないクラスプ
ログラムを記憶装置に格納するために用いられる。パラ
メータ「クラス名」は、格納されるべきクラス名であ
る。これは、ファイルまたはライブラリアクセス情報を
伴うことも可能である。クラス格納プログラムは、既存
のブロックが指定のクラス名用に記憶装置内に既に存在
する場合には、まず決定することによって開始する(ブ
ロック1002)。記憶装置内に存在するかどうかを、
ブロック1004で、格納が完了したかどうかを決定す
るチェックが行われる。格納が完了していない場合に
は、ルーチンはエラーを示して終了する。このようなテ
ストは、プログラムが、自分自身の先行プログラムであ
るかどうか決定し、エラー状態を発生させた循環継承を
検知するかどうかを決定する(1006)。格納が完了
した場合には、ブロック1008においてルーチンはポ
インタを伴ってクラスブロックに戻る。ブロック100
2のチェックによってプログラムが記憶装置に存在しな
いことが明らかになった場合は、新規のクラスブロック
が、各クラス格納に対応して作成されなければならな
い。このブロックは、格納失敗の場合には、将来削除さ
れる。
【0213】クラスブロックはクラスリストと結合さ
れ、クラスブロックが循環継承エラーを検知するために
不完全に格納されているかを決定するチェックが行われ
る。
【0214】その後、ルーチンはブロック1012に進
み、ローカル環境内のクラスプログラム仕様、例えば検
索ライブラリ、ファイルなどを設定する。ブロック10
12でプログラム仕様を位置指定した後、ブロック10
14で、仕様が現在バージョンのコンパイラによって処
理可能なコンパイルされたpコードを既に表示している
かどうかを決定するがチェックが行われる。既に表示し
ていれば、ルーチンは分岐してブロック1024へ進
み、pコードが記憶装置に格納される。1014でのチ
ェックにより、仕様が既にコンパイルされたpコードを
表示していない場合には、1016において、仕様がコ
ンパイラによって処理可能なソース言語を反映している
かどうかのチェックが行われる。仕様がコンパイラによ
って処理することができないソース言語を反映している
場合には、ルーチンは終了し、適切なエラーメッセージ
が生成される(1018)。
【0215】ソース言語が処理可能な場合には、ルーチ
ンはブロック1020に進み、ソースコードが適切な解
釈プログラムを用いて、pコードにコンパイルされる。
pコードが記憶装置内に格納されると、ハッシュが計算
される。pコードを作成したコンパイラのバージョンが
現在の実行プログラムと互換性があるかどうかを確認す
るチェックが行われる。元ソースプログラムのハッシュ
(またはpコード内に格納された元ソースプログラムの
通常のバージョン)は、複写されてクラスブロックへ入
れられる。ソースコード自体を記憶することも可能であ
る。その後、pコードに割り当てられたクラス許可が行
われるが、その説明は後述する。
【0216】ブロック1020および1024での処理
の後、クラスブロック内にpコードのハッシュが格納さ
れる(1026)。種々の情報もpコードに関連してク
ラスブロックに提供され、その情報には、関連するpコ
ードのハッシュ、疑似命令の開始アドレス、およびすべ
てのpコードの開始アドレスが含まれる。クラスレベル
(全体のクラス列内のクラス数)は1に等しいと推定さ
れる。
【0217】ブロック1030において、クラスがベー
スクラスから派生しているかどうかを決定するチェック
が行われる。クラスがベースクラスから派生していない
場合は、ルーチンは分岐してブロック1040へ進み、
新規のメソッドをクラスブロックに関連するリストに組
み入れるが、これについては後で詳述する。クラスがベ
ースクラスから派生している場合には、クラス格納ルー
チンがベースクラスに対して再度実行される(103
2)。1034において、実行中のクラス格納にエラー
があるかどうかのチェックが行われ、エラーがあれば、
現在のクラスの格納に失敗しているので、エラールーチ
ンが1036において実行される。エラーが検出されな
ければ、この時点で、現在のクラスと、親またはベース
クラスとが(親の親クラスも)格納された状態にある。
【0218】ブロック1038において、ポインタがベ
ースクラスブロックに対してセットされ、新規のクラス
ブロックがベースクラスブロックを拡張したものである
旨を示す。さらに、列内のクラス数を反映して、新規の
クラスレベルがベースクラスのレベルより1大きくセッ
トされる。さらに、メソッドリストが、ベースクラスか
ら新規のクラスブロックに複写される。処理はブロック
1040へ続いて、新規のメソッド(ベースクラスから
既に格納されている既存のメソッドもあり得る)がクラ
スブロックに関連するリストに組み入れる。この組み入
れは、各メソッドに対するpコード命令の明示的な開始
の設定を含む。
【0219】新規のメソッドが、(既にベースクラスま
たは親クラスから格納されている)既存のメソッドを複
写する場合には、新規のメソッドに置換される。このク
ラスブロックに必要とされる他の全てのデータが、どん
なものでも提供される。不完全に格納された標識は削除
され、すべての相情報が格納され、ルーチンはクラスブ
ロックポインタへ戻る。
【0220】図28は、クラス許可を作成する処理のシ
ーケンスを示すフローチャートである。格納されると、
ルーチンはクラスの権限を認証し、証明する。これは、
ソースフォーマットまたはコンパイルされたpコードの
フォーマットで格納されたクラスに適用する。このルー
チンで用いられるパラメータは、関連ソースイメージま
たはpコードイメージのハッシュ、構造の型(ソースコ
ード言語またはpコード)のハッシュ、クラス定義のデ
ジタル署名構造のハッシュおよび関連クラスに関連する
クラスブロックのハッシュである。ルーチンは、このコ
ード(もしくは許可定義または署名が無効な場合にはエ
ラー)用の許可構造に戻る。
【0221】ルーチンはブロック1302で処理を開始
して、与えられたハッシュ値に対して署名が正しいかど
うかが決定される。署名が正しくない場合には、エラー
を示す(1304)。署名が正しい場合には、ブロック
1306で、構造の型が署名ブロックで示されたとおり
であるかどうかを決定するためのチェックが行われる。
一致しない場合には、ブロック1307において、エラ
ールーチンが呼び出される。構造の型が署名ブロックで
示されたとおりである場合には、処理はブロック131
0に続く。1310において、署名がこのクラスに割り
当てられた明示的な許可を反映しているかどうかを決定
するための1つまたはそれ以上のチェックが行われる。
署名が許可を反映していれば、署名者に信頼性があると
決定される。このチェックは、様々な方法で行うことが
可能である。
【0222】まず、公開鍵が信頼性のある当事者に属し
ているかどうかのテストを行ってもよい。証書が信頼性
のある当事者に属しているかをテストするか、または署
名者がより高度の(信頼性のある)権限者による証書ま
たは委任によって代表として権限を付与されている旨を
決定することによって、許可を決定してもよい。テスト
には、直接の比較、ハッシュの比較、識別印の比較を含
んでもよい。
【0223】明示的な許可が特定されない場合には、状
況によっては、署名者の証明者について知られている情
報によって許可を推定するのが適当な場合もある。その
ようなテストおよび許可がどのように委譲されるかにつ
いての詳細は、本件で援用されている出願人の米国特許
5,005,200に示す。デジタル署名を用いた、可
能な多くの方法によって許可を行ってもよく、その方法
には、特定の公開鍵または現ユーザによって認識された
証書による署名、証書階層内に信頼性のある実体の公開
鍵または証書を有する公開/機密鍵を用いた署名、また
は出願人の米国特許5,005,200の手法で説明す
る電子文書許可のようなプロトコルを用いたプログラム
許可の明示的な割当てによる署名が含まれる。
【0224】ブロック1310でのチェックによって、
署名者に信頼性があると決定されると、処理はブロック
1320へと続く。信頼しうる許可が決定されるか、ま
たは推定される場合には、この許可のデジタル表示がク
ラスブロックからアクセス可能な構造内に格納される。
確認に失敗があると、認証および/または許可は確認で
きないので、(失敗の詳細、状況、実現、およびユーザ
構成などに基づいて)適切な動作が講じられねばなら
ず、その動作にはクラスの圧縮仕様、またはデフォルト
の許可の割り当てが含まれる。
【0225】実施例によっては、コードが署名されてい
ないかどうか、署名が無効かどうか、または署名者の権
限が承認されていないかどうかによって、種々の例外的
な動作が必要となってもよい。実行を中止したり、また
は最小(デフォルト)許可を不正なまたは署名されてい
ないクラス定義に対して単に割り当てるのが、適当な場
合もありうる。図28に関連して説明したルーチン内に
作成した許可情報は、出願人の出願中の上記プログラム
許可情報出願において説明および使用したプログラム許
可情報データ構造を組み込む。
【0226】図29は「クラス許可テスト」ルーチンの
操作のシーケンスを示すフローチャートで、このルーチ
ンは、プログラム許可情報と一致することを保証するた
めのテストを行う。このルーチンは、解釈/実行プログ
ラム内にある種々の関数によって呼び出され、インスタ
ンスが機密処理を要求する場合はいつでも呼び出され
る。入力は、全ファイル名のような詳細を含む関数の型
の仕様を含む。入力は、通常、要求の型および要求詳細
として提供される。クラスが格納されて処理が容認可能
かどうかについての決定がなされると、この要求された
処理は、得られた許可に対してチェックされる。
【0227】ブロック1802において、クラスが「完
全に」許可されたか(すなわち、どの関数も容認可能
か)どうかを決定するチェックが行われる。ルーチンが
完全に許可されると、ルーチンは分岐してブロック18
50へ進む。クラスがどんな機密処理でも行うことが完
全には許可されていない場合は、処理はブロック180
4へと続いて、要求の型がプログラム許可情報構造内に
定義されているかどうかの決定が行われる。要求タイプ
が許可構造内で定義されていない場合には、ルーチンは
分岐してブロック1870へ進み、要求の実行が拒否さ
れる。1804でのチェックが要求が定義されているこ
とを示すと、ルーチンは要求の詳細につき許可構造に対
してテストを行う(1806)。ブロック1808にお
いて、要求詳細がテストに合格していないかどうかを判
断するチェックが行われる。もし合格していない場合
は、ルーチンはブロック1870に分岐して、「拒否」
という応答を戻す。要求詳細がOKの場合は、ブロック
1850において、この(またはおそらくあらゆる)セ
ルが実行するであろう許可の上限を強制する解釈/実行
プログラムが指定したパラメータが存在するかどうかを
決定するチェックが行われる。指定のパラメータが存在
しない場合には、「オーケー」という応答が戻される。
要求が強制された制限内にある場合には、「オーケー」
という応答が提供される。
【0228】図30、図31および図32は、「クラス
再格納」ルーチンによって処理される処理のシーケンス
を示す。このルーチンは、セルに格納されたインスタン
スに関連するクラス用のクラス定義およびpコードおよ
びソースコードが知られているクラス定義を復元する。
この特定のクラス定義は、既にセル内の既存のインスタ
ンスと関連している。ベースクラス定義を拡張した全て
のクラスよりもベースクラス定義が優先するように、ク
ラスがセル内に格納される。
【0229】クラスを再格納する際には、クラスを前に
存在したのと全く同じように再構築する必要がある。再
格納クラスルーチンがブロック1202で開始し、将来
の格納に対応する新規のクラスブロックが作成される
(失敗の場合にはこのブロックは削除される)。クラス
ブロックはクラスリストと結合され、クラスブロックが
前述したように、循環継承を検出するために不完全に格
納されたかどうかにつき表示が行われる。
【0230】ブロック1206で、クラスpコード定義
が既にセル内に提供されているかどうかを決定するため
のチェックが行われる。提供されていれば、ルーチンは
分岐してブロック1230へ進み、セル内にあるpコー
ドイメージを処理する。pコード定義がない場合には、
クラスソースコードがセル内に提供されているかどうか
を決定するチェックが行われる。提供されている場合
は、ルーチンは分岐して1220へ進み、セル内のソー
スイメージを処理する。もし、pコードもソースコード
もなければ、ルーチンはブロック1210へ進み、クラ
ス定義がプログラム名、プログラムのバージョン、pコ
ードおよびソースコードのハッシュによって示される。
クラスの名前(およびおそらくハッシュ)は、pコード
またはソースの(他の)ローカルコピーを見つけるため
に用いられる。
【0231】ブロック1212で示すように、正しいプ
ログラムイメージが存在するかどうかを決定するための
テストが行われる。正しいプログラムイメージが存在し
ない場合にはルーチンは分岐して1213へ進み、エラ
ー表示を生成する。正しいプログラムイメージが存在す
る場合には、ブロック1214において、クラスのロー
カルバージョンがpコードかどうかを決定するためのチ
ェックが行われる。pコードの場合は、ルーチンは分岐
してブロック1230へ進む。ローカルバージョンがブ
ロック1216で決定されたようなべースコードでない
場合には、エラーが生じていると確定して、処理はブロ
ック1217のエラールーチン内へと続く。
【0232】ソースコードが見つかると、ブロック12
20でソースコードはコンパイルされて、ソースのハッ
シュが計算される。計算されたソースハッシュがセルの
認証された相情報内で定義されたものと一致する場合に
は、クラスは受け入れられる。ソースハッシュが、ソー
スそのものではなく、むしろ例えばコメントが削除され
たり、重要でないスペースを削除されたような一般的な
フォームに基づく可能性もある。その後、ブロック12
20で、クラス許可がソースコードに関連して行われ
る。多重言語が支援されている場合は、ソース定義が当
該ソース定義に適切なコンパイラであればどれでも用い
てコンパイルされる。
【0233】次に、処理はブロック1232へ続く。前
の処理がブロック1230を含んでいた場合には、pコ
ードの指定されたバージョンが、ローカルファイル記憶
場所からまたはセル内自身に格納される。pコードのハ
ッシュは、格納されると計算される。既にコンパイル済
みのpコードが、この解釈/実行プログラムが処理する
のにふさわしいフォーマットである旨確認するためのチ
ェックが行われ、pコードと関連するクラス許可が行わ
れる。計算されたpコードのハッシュが、セルの許可部
分内で定義された予想値と同一かどうかを決定するため
のチェックが行われる。一致する場合には、クラスは受
け入れられる。一致しない場合には、エラー標識が生成
される。1232での処理により、pコード内に与えら
れた元ソースのハッシュを付加的に格納する。
【0234】ブロック1234において、与えられた元
ソースコードのハッシュがセルのpコードクラス定義内
で指定されたものと一致する場合には、セルは受け入れ
られる。その後、ブロック1236において、クラスが
受け入れられるかどうか決定するためのチェックが行わ
れる。クラスが受け入れ可能であれば、処理はブロック
1250へ続く。ブロック1238で、代わりのプログ
ラムクラス修正レベルを考慮する処理ステップが実行さ
れる。この処理によって、所望する場合には、プログラ
ムの代替バージョンが可能となり、従って、ソースコー
ドまたはpコードのハッシュが一致しなくなるので、互
換性は、明示的に示されたバージョン/修正フィールド
に基づく。
【0235】ルーチンは、セル内で定義(および使用)
されたクラスプログラムの修正/バージョンレベルと、
(ローカル記憶場所に見つかるかセルに挿入された)処
理中のプログラムイメージで定義された修正/バージョ
ンレベルの範囲とを比較する。セルインスタンスデータ
内で用いられた修正/バージョンレベルがプログラムの
レベルが支援するカテゴリに当てはまる場合には、プロ
グラムを用いることが可能となる。
【0236】実施例によっては、異なるプログラムがイ
ンスタンスに関連する修正/バージョンに責任を有する
同一の実体によってデジタル的に署名または許可される
ことを確認することも有用であろう。この場合には、セ
ル参照のデジタル署名も、デジタル署名を有していなけ
ればならない。実際のプログラムの修正/バージョン
は、インスタンスと結合された修正/バージョンよりも
有効に以前または以後に作成することができる。
【0237】有効な不一致で最も一般的なのは、プログ
ラムがインスタンスのバージョンよりも後に作成された
場合で、プログラムが支援するより古い互換性レベル情
報を単に有している場合であろう。やや一般的でない場
合は、プログラムが自分自身のレベルを超えるある範囲
のレベルを支援するという条件で実際に作成される場合
であろう。このことは、プログラムのアップグレードが
予定され、(少なくとも将来のプログラムレベルの一定
の範囲の)将来のデータ構造がより古いプログラムレベ
ルと互換性があるであろうことが知られている場合に
は、合理的といえるだろう。
【0238】ブロック1240において、クラスがまだ
受け入れられていないかどうかを決定するためのチェッ
クが行われる。クラスが受け入れられていない場合に
は、処理は分岐してブロック1210に戻り、セル仕様
内に与えられた互換説明を有する他のクラス定義候補を
探そうとする。
【0239】クラスが受け入れられると、ブロック12
50において、クラスがベースクラスから派生している
かどうかを決定するチェックが行われる。クラスがベー
スクラスから派生していない場合には、処理はブロック
1260へ続く。処理がベースクラスから派生している
場合には、処理はブロック1252へ続く。
【0240】格納されたセルにおいて(図11)、関連
するベースクラスは、拡張クラスに先行するように特に
作成されるので、ベースクラスブロックを直接決定する
ことができる。ベースクラスブロックが拡張の際に与え
られたベースクラス名と対応しているかどうかだけをチ
ェックすればよい。ベースクラスは、既に格納され、現
在のセル仕様によって示されていなければならない。
【0241】その後、ポインタが、ベースクラスブロッ
クにセットされ、新規のクラスブロックがベースクラス
ブロックを拡張したものである旨を示す。増分された拡
張カウントが、新規のクラスブロックにセットされる。
その後、ブロック1252の処理が、ベースクラスから
新規のクラスブロックにメソッドリストを複写して終了
する。ルーチンはブロック1260で終了して、結合さ
れた新規のメソッド処理が図26および図27で説明し
たクラス格納ルーチンと関連するブロック1040で完
了したのと同様の方法で、新規のメソッドがクラスブロ
ックと関連のあるリストに(pコードと隔離されて)結
合される。
【0242】図33は、「出口メソッド」関数における
処理のシーケンスを示すフローチャートである。この関
数は、メソッドから抜け出たり、メソッドから戻ったり
することによって作動する。現在実行中のブロックは中
断され、制御は以前の実行レベルへ移動する。まだ実行
中にインスタンスが(削除組み込み関数で明示的に、ま
たはどの変数もインスタンスを参照しなくなった場合に
黙示的に)削除されると、「削除保留」フラグがセット
され、現在実行中のメソッド(実行ブロック)が中断す
るとすぐに、削除が解除される。いったんこの状態にな
ると、このインスタンスに対してさらに起動が可能か、
または(おそらくインスタンスを他の変数に割り当てる
ことによって)インスタンスを復帰させる方法があるは
ずかどうかは実施例による。実施例によっては、保留中
の削除状態を解除するための「削除しない」を許容する
ことも可能であろう。
【0243】ブロック1502に戻って、組み込み関数
は、実行ブロックに関連するローカル変数プールを解放
する。実行ブロックは、実行スタックおよび解除記憶部
の最上位から取り除かれる。その後、インスタンスのブ
ロック実行使用カウントが減少する。ブロック1506
において、実行使用カウントが0より大きいかどうかを
決定するためのチェックが行われる。実行使用カウント
が0より大きければ、ルーチンは分岐してブロック15
20へ進む。実行使用カウントが0より大きくなけれ
ば、1508において中断中の明示的な削除が存在する
かどうか(変数使用カウントは0と等しいかどうか)を
決定するチェックが行われる。削除が存在すれば、ブロ
ック1510において、インスタンスが削除される。
【0244】その後、ブロック1520において、他の
実行ブロックがスタックに存在するかどうかを決定する
ためのチェックが行われる。実行ブロックが存在すれ
ば、ルーチンは分岐してブロック502へ進み、命令を
実行する。実行ブロックが存在しなければ、ルーチンの
実行は終了し、ルーチンは最初の解釈/実行プログラム
実行処理のブロック336に戻る。
【0245】図34は、「インスタンス削除」組み込み
関数の処理シーケンスを示すフローチャートである。イ
ンスタンスに対する全ての参照が割り当てられなくなっ
た場合、または「削除」組み込み関数でインスタンスが
明示的に削除された場合に、インスタンスは削除され
る。インスタンス削除処理はブロック1102で開始
し、列内の各クラスに対する反復が、最新のものから開
始するようにセットされる。反復の後、ルーチンは分岐
してブロック1120へ進む。ブロック1104におい
て、このクラスに対して特に定義された(単に継承され
たものではない)破壊メソッドがあるかどうかを決定す
るためのチェックが行われる。クラスが定義する破壊メ
ソッドがない場合には、ルーチンは分岐して1102の
反復処理に戻る。特に定義された破壊メソッドがある場
合には、特定の破壊メソッドがブロック1106におい
て実行される。
【0246】その後、ブロック1108において、この
破壊メソッドがその親の破壊メソッドを呼び出すかどう
かを決定するためのチェックが行われる。もし破壊メソ
ッドがその親の破壊メソッドを呼び出さない場合は、ル
ーチンは分岐して、反復するためにブロック1102に
戻る。その後、処理はブロック1120に続き、変数
が、全てのプライベートプール内にあるクラス列の最新
のものから最も古いものまで削除される。さらに、シェ
アードプール内の変数が削除される。関連クラスの実行
インスタンスのカウントである実行クラスが減少する。
さらに、セル内の実行インスタンスのカウントであるセ
ル実行変数が減少する。
【0247】図35は、「変数リセット」値ルーチン内
の処理のシーケンスを示すフローチャートである。変数
値がリセットされる場合はいつでも、この論理が用いら
れる。ブロック1902において、現在の値が削除され
る。その後、ブロック1950において、新規の値がセ
ットされる。新規の値がインスタンスかどうかを決定す
るためのチェックが行われる(1952)。新規の値が
インスタンスの場合は、処理はブロック1954へ続
き、インスタンスの使用カウントが増分される。新規の
値がインスタンスでない場合には、ルーチンは呼出しル
ーチンへ戻る。
【0248】図36は、現在値を削除する際に実行され
る操作のシーケンスを示すフローチャートである。ブロ
ック1602において、現在値がストリングかどうかを
決定するためのチェックが行われる。現在値がストリン
グの場合には、ストリングが解除され(1604)、ル
ーチンは分岐してブロック1650へ進む。ブロック1
602におけるチェックが現在値がストリングでないこ
とを示す場合には、1606において、変数現在値がイ
ンスタンスかどうかを判断するためのチェックが行われ
る。変数現在値がインスタンスである場合には、インス
タンス使用カウントが減少する(1608)。その後、
インスタンス使用カウントが零より大きいかどうかを判
断するためのチェックが行われる。インスタンス使用カ
ウントおよびインスタンス実行カウントが0より大きい
場合には、ルーチンは分岐して1650へ進む。インス
タンス使用カウントが0より大きくない場合には、イン
スタンスはブロック1623で削除される。呼出しルー
チンに戻る(1650)。
【0249】本発明では、これまで特に述べてはいなか
ったが、種々の他の復元処理もさらに考慮している。例
えば、(既に作成済の)関連するクラスブロックを設定
させるインスタンス復元ルーチンが考慮されている。そ
の後、インスタンスは、関連するクラスブロックおよび
関連するセルブロックと結合される。インスタンス用の
シェアード変数プールは、プライベート変数プールと同
様に復元される。
【0250】プールは、各変数を関連するプール定義ヘ
ッダと結合し、各変数をその割り当てられた値があれば
それに結合することによって復元されてもよい。値は以
下のように復元されてもよい。すなわち、ストリング値
に関しては、値ブロックが指定のストリング値で作成さ
れる。インスタンス値に関しては、値ブロックが関連す
るインスタンスを参照して作成される。好ましい実施例
においては、インスタンス、すなわちプール、クラスポ
インタなどを制御する情報が、直接インスタンス値ブロ
ックに格納される。復元インスタンス関数は、インスタ
ンス値に対して用いられる。
【0251】(全ての変数などを付加して)再格納して
インスタンスを再開する場合、クラスがデジタル的に署
名されている場合には、署名は認証され、署名を含む実
行された許可はクラス定義と共に格納される。クラスが
派生している場合には、ベースクラスも位置設定され
(既に格納されていてもよい)、必要であれば格納され
る。
【0252】サブセルを格納するには、以下の処理を実
行してもよい。セル再格納はインスタンス値を作成し、
サブセルのフェースインスタンスはこのインスタンスを
呼出者に戻す。その後、呼出者は、そのインスタンス値
を他のインスタンスのように呼び出すことができる。デ
ィスパッチャは、どのグローバルプールがグローバル変
数参照と結合しているかを決定するために、インスタン
スに関連するセルを用いる。
【0253】本発明は、全てのセルを呼び出すことおよ
び他のセル内で全てのセルを論理的にカプセル化するこ
とも可能なように設計されている。そのような「内部」
セルは、「サブセル」として知られている。本発明の本
実施例では、各サブセルは、セル内のインスタンスが共
用している自分自身の別個のグローバル変数プールを有
している。代替実施例で、全てのサブセルの間でグロー
バルプールを共用することは可能だが、2つのセルを結
合した場合(1つのセルが他のセルによって呼び出さ
れ、どちらのセルも同じような名前のグローバル変数を
含んでいた場合)、変数の1つのバージョンが他のバー
ジョンによってオーバレイされるので、グローバル変数
の衝突を取扱う必要性が生じると思われる。
【0254】重要な操作の認証に戻って、まずクラス認
証について考察する。クラス定義のうち特に機密処理を
行うクラス定義は、クラス定義を共用する集団が信頼す
る権限者によってデジタル的に署名される。実施例や状
況によって、署名はクラスに対して付与される明示的ま
たは黙示的な許可を(種々の方法で)定義してもよい。
クラス定義は、ソースフォーム、pコードフォームまた
はその両方で署名されてもよい。
【0255】未署名のクラス定義が機密処理に参加でき
ないようにしているデフォルト(通常最小)許可に対し
て、未署名のクラス定義が与えられる。代わりに、実施
例によっては、未署名または未許可のクラスが、全く無
効で、かつ実行が許可されていないものとして扱うのが
適切な場合もある。
【0256】デジタル的に署名するクラス定義は、偽の
またはトロイの馬のようなクラスが害を与えるために用
いられ得る可能性を防止する。機密関数は、少なくとも
保護されなければならない。状況によっては、確実に全
てのクラスが明示的に許可されるようにするのが望まし
い場合もある。本発明の好ましい実施例は、個人ユーザ
またはユーザの団体が決定する信頼性のある基準を許容
する。
【0257】(ソースコードフォームまたはpコードフ
ォームのうちどちらか適切なフォームの)クラス定義プ
ログラムのハッシュは、格納されると計算される。この
ハッシュは、他の許可情報と結合されて、デジタル署名
を用いて確認される。
【0258】出願人のプログラム許可情報出願は、オブ
ジェクトクラス定義を当てはめて理解されるべきであ
る。これにより、セルが実行を許可されている関数の指
定のあて先が許容される。
【0259】セルの確認に関して、格納されたセルまた
は他のユーザに送信されたセルに署名すると、エラーま
たは故意に害を与えることによって変更される可能性が
防止される(たとえ送信者が変更する場合でも、後で証
明できる)。
【0260】本発明の好ましい例では、セルの重要部分
のみが署名され、その重要部分には以下のものが含まれ
る。すなわち、種々のクラスの名前、ハッシュおよび他
の識別参照、変数プール、変数、値、変数および値の相
互関係および種々のクラスとの関係、インスタンス、な
らびにプールおよび変数である。
【0261】クラス定義自身は、代理(名前、他の識別
子および/またはハッシュ値)によって署名されればよ
く、デジタル署名全体を無効にすることなく、安全に、
格納されたセルに付加または除去されうる。しかしなが
ら、クラスプログラムをそのハッシュによって確認する
ことによって、不正で、変更されたバージョンは置き換
えることができないことを保証する。これによって、安
全性のある適応性が提供される。
【0262】機密関数の確認に関し、「任意の」アセン
ブラ言語のような(組み込み)関数(またはシステムに
影響を与えるような他の関数)は本発明の解釈/実行プ
ログラム外で処理を行うが、これらは潜在的に機密的
で、そのような関数を呼び出すクラスの一部に信頼性が
ある必要がある。本発明は、関数を要求するインスタン
スが関数を実行する権限のあるクラスと関連づけられて
いない場合には、機密性が求められるいかなる関数活動
をも機密にすることによって安全性を強調する。
【0263】信頼性のあるクラスが、信頼性のない方法
で生じた情報(例えば、信頼性のない呼出者からのパラ
メータ、または他の(おそらく信頼性のない)インスタ
ンスを呼び出した結果)を用いて機密関数を呼び出す
と、信頼性のあるクラスは、同じ(またはより高位の)
許可信頼性のレベルを有するとは知られていないあらゆ
るソースから得た情報を確認する義務を有する。
【0264】機密性を有する組み込み関数には、以下の
ものを含むものもある。すなわち、デジタル署名を行う
読み込みファイル、書き込みファイル、作成ファイル、
削除ファイルである。アセンブラ内に書き込まれたか、
または本発明の解釈/実行プログラムを外部で直接監視
する他の方法で動作する「外部」モジュールまたは関数
を用いる場合はいつでも、潜在的な危険性を有すると考
えなければならない。そのような関数は、信頼性のある
クラス内に隔離され、適切に許可されなければならな
い。そのような関数が適切に書き込まれれば、信頼性の
あるクラスは他の通常の(信頼性のない)クラスによっ
て用いられ、危険な可能性に近づくことになりうる。
【0265】実施例の他の態様および修正は、本発明の
幾つかまたは全ての新規な特徴および利点があるが、当
業者にとって自明であろう。そのような全ての態様およ
び修正は、添付のクレームの範囲内に含まれることが意
図されている。
【0266】以上説明した本発明の構成ないし動作を今
一度概説すると、拡張されたオブジェクト指向のプログ
ラミング法に関連したコンピュータの操作方法により、
自動化された業務処理を効果的に行うフレームワークが
構築される。このオブジェクト指向のプログラミング法
は、進行型プログラム、すなわちデジタルデータ構造と
ともに用いられ、このデジタルデータ構造は、進行型プ
ログラムを送受信するために少なくとも一つの次のあて
先または受信者を決定することができる命令および関連
データのシーケンスと、次の受信者またはあて先に対し
てプログラムが決定したすべての関連データとを含む。
本願で説明する方法を用いて、受信者であるコンピュー
タユーザがオブジェクトを事前に知らなくても、オブジ
ェクトが一方のコンピュータユーザから他方のユーザへ
最も効率よく送信されるように、データがプログラムと
より密接に結合される。本発明は、オブジェクト「セ
ル」を用いており、このセルは、例えばディスクに記憶
されたデータ構造で、(関連する)オブジェクトインス
タンスの集合体を反映しており、実行が一時中断されて
いるが、後に同一または異なるプラットホームにおいて
再実行が可能である。オブジェクトインスタンスの集合
体は、記憶するためまたは他のコンピュータユーザへ送
信するためにセル(または「電子フォーム」)に集めら
れ、インスタンスは各クラス定義に不明確でないように
結合される。本発明は、また、セルの作成および使用の
ために改良されたツールを作成し、電子フォームがオブ
ジェクト指向技術を用いて定義されることが可能とな
り、すべてのユーザがすべてのオブジェクトクラス定義
プログラムの互換ライブラリおよびそのクラス同一同期
バージョンを保持しなくても、そのようなフォームを種
々のコンピュータユーザ間で容易に送信することができ
る。本発明は、安全性および一貫性を保証するデジタル
署名法を提供し、ユーザは、セルに挿入されたオブジェ
クトクラスの一部がユーザのシステムまたはデータの安
全性または一貫性を失わせるか、破壊するか、または危
うくする可能性のある破壊的な「トロイの木馬」プログ
ラムであるかもしれないという危険性を負うことなく、
オブジェクトの集合体から構成される電子フォーム(す
なわち、セル)を受信および実行することができる。
【図面の簡単な説明】
【図1】本発明と共に使用しうる典型的な通信システム
を示すブロック図である。
【図2】本発明の典型的な実施例に従った「セルブロッ
ク」のデータ構造を表示すものである。
【図3】本発明の典型的な実施例に従った「クラスブロ
ック」のデータ構造を表示すものである。
【図4】典型的な「プログラムブロック」のデータ構造
である。
【図5】典型的な「プログラム構造」のデータ構造であ
る。
【図6】典型的な「実行ブロック」のデータ構造であ
る。
【図7】典型的な「インスタンス値」のデータ構造であ
る。
【図8】典型的な「変数ブロック」のデータ構造であ
る。
【図9】典型的な「値ブロック」のデータ構造である。
【図10】典型的なマスタ領域ブロックのデータ構造で
ある。
【図11】本発明の典型的な実施例に従った、ディスク
に書き込まれる「記憶されたセル」である。
【図12】被記憶セルと関連のある拡張されたデータ構
造である。
【図13】被記憶セルと関連のある拡張されたデータ構
造である。
【図14】被記憶セルと関連のある拡張されたデータ構
造である。
【図15】被記憶セルと関連のある拡張されたデータ構
造である。
【図16】被記憶セルと関連のある拡張されたデータ構
造である。
【図17】被記憶セルと関連のある拡張されたデータ構
造である。
【図18】被記憶セルと関連のある拡張されたデータ構
造である。
【図19】被記憶セルと関連のある拡張されたデータ構
造である。
【図20】被記憶セルと関連のある拡張されたデータ構
造である。
【図21】被記憶セルと関連のある拡張されたデータ構
造である。
【図22】被記憶セルと関連のある拡張されたデータ構
造である。
【図23】解釈プログラムまたは実行プログラムによっ
て実行される操作シーケンスを表した、一般的なフロー
チャートである。
【図24】図23のフローチャートに関連して言及され
ている実行メソッドルーチンによって実行される操作シ
ーケンスを示すフローチャートである。
【図25】新規インスタンス作成サブルーチンにおける
操作シーケンスを示すフローチャートである。
【図26】クラス格納ルーチンにおける操作シーケンス
を示すフローチャートである。
【図27】クラス格納ルーチンにおける操作シーケンス
を示すフローチャートである。
【図28】クラス許可設定の操作シーケンスを示すフロ
ーチャートである。
【図29】プログラム許可情報との合致を保証するため
に検査するクラス許可検査ルーチンの操作シーケンスを
示すフローチャートである。
【図30】クラス再格納ルーチンによって実行される操
作シーケンスを示している。
【図31】クラス再格納ルーチンによって実行される操
作シーケンスを示している。
【図32】クラス再格納ルーチンによって実行される操
作シーケンスを示している。
【図33】出口メソッド関数の操作シーケンスを示すフ
ローチャートである。
【図34】インスタンス削除組み込み関数のための操作
シーケンスを示すフローチャートである。
【図35】変数値リセットルーチンにおける操作シーケ
ンスを示すフローチャートである。
【図36】現在値を削除する際に実行される操作シーケ
ンスを示すフローチャートである。
【符号の説明】
A〜N…端末装置 2…メインメモリ付処理装置 4…キーボード/CRT 6,8,10…モデム 7…不揮発性記憶装置

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 通信路に接続され、デジタルメッセージ
    を交換する複数のデジタルコンピュータを有する通信シ
    ステムにおいて、前記コンピュータ間で情報処理を行う
    ための方法であって、 第1のコンピュータ上で、命令シーケンスを受信する少
    なくとも1つの次のあて先を決定する命令を含むデジタ
    ルプログラム命令のシーケンスを実行し、当該命令シー
    ケンスは複数の互いに結合された関連プログラムを定義
    しているステップと、 前記命令シーケンスと関連するデジタルデータを伴うと
    ともに、少なくとも前記複数の関連プログラムを備える
    デジタル情報を、次のあて先に送信するステップとを備
    える。
  2. 【請求項2】 メインメモリを有する少なくとも1つの
    コンピュータを有する通信システムにおいて、前記コン
    ピュータを操作するための方法であって、 前記メモリ内の第1のデジタルデータ構造を、当該デー
    タ構造と関連する複数のプログラムを識別するデジタル
    データを含んで形成するステップと、 少なくとも1つの第2のデジタルデータ構造を、関連す
    る前記複数のプログラムのうちの1つが実行する関数の
    リストを格納するプログラムクラス管理ブロックを含ん
    で形成するステップとを備える。
  3. 【請求項3】 コンピュータシステムを操作する方法で
    あって、 デジタルセルを複数のプログラムを識別するメモリに格
    納するステップと、 前記デジタルセルをアクセスすることによって入力され
    た関数要求を処理し、前記複数のプログラムのいずれが
    前記関数要求を遂行するかを決定するステップと、 要求された関数を遂行するためのプログラムを実行する
    ステップとを備える。
JP18233994A 1993-08-10 1994-08-03 デジタル署名を用いた進行オブジェクト指向型プログラムの有効利用方法および装置 Expired - Lifetime JP3786722B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10377893A 1993-08-10 1993-08-10
US08/103778 1993-08-10

Publications (2)

Publication Number Publication Date
JPH0877117A true JPH0877117A (ja) 1996-03-22
JP3786722B2 JP3786722B2 (ja) 2006-06-14

Family

ID=22296997

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18233994A Expired - Lifetime JP3786722B2 (ja) 1993-08-10 1994-08-03 デジタル署名を用いた進行オブジェクト指向型プログラムの有効利用方法および装置

Country Status (7)

Country Link
US (2) US5748960A (ja)
EP (1) EP0638860B1 (ja)
JP (1) JP3786722B2 (ja)
AT (1) ATE211835T1 (ja)
AU (1) AU683038B2 (ja)
CA (1) CA2120666C (ja)
DE (1) DE69429601T2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153321A (ja) * 1997-07-29 1999-02-26 Internatl Business Mach Corp <Ibm> コンピュータ・システム、エージェント送信方法及びエージェント復元方法
JPH11282672A (ja) * 1998-03-31 1999-10-15 Hitachi Software Eng Co Ltd オンラインプログラム転送方法およびオンラインプログラム実行システム
CN100458746C (zh) * 1999-08-20 2009-02-04 微软公司 对顺序存取存储介质上变长度数据的有效存取
JP2009508405A (ja) * 2005-09-09 2009-02-26 マイクロソフト コーポレーション デジタル署名ポリシー
JP2011054190A (ja) * 2000-06-09 2011-03-17 Dainippon Printing Co Ltd 電子フォーム提供装置

Families Citing this family (124)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU683038B2 (en) * 1993-08-10 1997-10-30 Addison M. Fischer A method for operating computers and for processing information among computers
US5694546A (en) 1994-05-31 1997-12-02 Reisman; Richard R. System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list
US6769009B1 (en) 1994-05-31 2004-07-27 Richard R. Reisman Method and system for selecting a personalized set of information channels
US7143290B1 (en) 1995-02-13 2006-11-28 Intertrust Technologies Corporation Trusted and secure techniques, systems and methods for item delivery and execution
US6948070B1 (en) * 1995-02-13 2005-09-20 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
CN1312549C (zh) 1995-02-13 2007-04-25 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
US5943422A (en) 1996-08-12 1999-08-24 Intertrust Technologies Corp. Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels
US6658568B1 (en) 1995-02-13 2003-12-02 Intertrust Technologies Corporation Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management
US7133846B1 (en) 1995-02-13 2006-11-07 Intertrust Technologies Corp. Digital certificate support system, methods and techniques for secure electronic commerce transaction and rights management
US7133845B1 (en) * 1995-02-13 2006-11-07 Intertrust Technologies Corp. System and methods for secure transaction management and electronic rights protection
US7124302B2 (en) 1995-02-13 2006-10-17 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US7069451B1 (en) 1995-02-13 2006-06-27 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5892900A (en) 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US6157721A (en) 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US7095854B1 (en) * 1995-02-13 2006-08-22 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US7165174B1 (en) 1995-02-13 2007-01-16 Intertrust Technologies Corp. Trusted infrastructure support systems, methods and techniques for secure electronic commerce transaction and rights management
GB9513790D0 (en) * 1995-07-06 1995-09-06 Highwater Fbi Limited Method of authenticating digital data works
US5757915A (en) * 1995-08-25 1998-05-26 Intel Corporation Parameterized hash functions for access control
US5680461A (en) * 1995-10-26 1997-10-21 Sun Microsystems, Inc. Secure network protocol system and method
US5845077A (en) * 1995-11-27 1998-12-01 Microsoft Corporation Method and system for identifying and obtaining computer software from a remote computer
US20010011253A1 (en) * 1998-08-04 2001-08-02 Christopher D. Coley Automated system for management of licensed software
US6049671A (en) 1996-04-18 2000-04-11 Microsoft Corporation Method for identifying and obtaining computer software from a network computer
US5815709A (en) * 1996-04-23 1998-09-29 San Microsystems, Inc. System and method for generating identifiers for uniquely identifying object types for objects used in processing of object-oriented programs and the like
TW313642B (en) * 1996-06-11 1997-08-21 Ibm A uniform mechanism for using signed content
US5825877A (en) * 1996-06-11 1998-10-20 International Business Machines Corporation Support for portable trusted software
US7058822B2 (en) 2000-03-30 2006-06-06 Finjan Software, Ltd. Malicious mobile code runtime monitoring system and methods
US8079086B1 (en) 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US6802061B1 (en) * 1996-12-12 2004-10-05 Microsoft Corporation Automatic software downloading from a computer network
US6347398B1 (en) 1996-12-12 2002-02-12 Microsoft Corporation Automatic software downloading from a computer network
US6260145B1 (en) * 1997-02-14 2001-07-10 Fujitsu Limited System and method of authentication of digital information
US7062500B1 (en) 1997-02-25 2006-06-13 Intertrust Technologies Corp. Techniques for defining, using and manipulating rights management data structures
US5920861A (en) 1997-02-25 1999-07-06 Intertrust Technologies Corp. Techniques for defining using and manipulating rights management data structures
US5987423A (en) * 1997-03-28 1999-11-16 International Business Machines Corporation Object oriented technology framework for order processing
JPH11143840A (ja) * 1997-11-05 1999-05-28 Hitachi Ltd 分散オブジェクトシステムおよびその方法
GB2325314A (en) * 1997-05-12 1998-11-18 Ibm Object-oriented system for authentication
IL133024A (en) * 1997-05-29 2003-11-23 Sun Microsystems Inc Method and apparatus for signing and sealing objects
US6604144B1 (en) * 1997-06-30 2003-08-05 Microsoft Corporation Data format for multimedia object storage, retrieval and transfer
US6112304A (en) * 1997-08-27 2000-08-29 Zipsoft, Inc. Distributed computing architecture
US6442753B1 (en) * 1997-08-28 2002-08-27 International Business Machines Corporation Apparatus and method for checking dependencies among classes in an object-oriented program
US7092914B1 (en) 1997-11-06 2006-08-15 Intertrust Technologies Corporation Methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information
US6112181A (en) 1997-11-06 2000-08-29 Intertrust Technologies Corporation Systems and methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information
US6219787B1 (en) * 1997-12-22 2001-04-17 Texas Instruments Incorporated Method and apparatus for extending security model to native code
US6295645B1 (en) 1997-12-22 2001-09-25 Texas Instruments Incorporated Method and apparatus for providing downloadable functionality to an embedded coprocessor
US7268700B1 (en) 1998-01-27 2007-09-11 Hoffberg Steven M Mobile communication device
US7233948B1 (en) 1998-03-16 2007-06-19 Intertrust Technologies Corp. Methods and apparatus for persistent control and protection of content
US6324650B1 (en) 1998-03-16 2001-11-27 John W.L. Ogilvie Message content protection and conditional disclosure
US6684332B1 (en) * 1998-06-10 2004-01-27 International Business Machines Corporation Method and system for the exchange of digitally signed objects over an insecure network
US6381742B2 (en) * 1998-06-19 2002-04-30 Microsoft Corporation Software package management
US6253374B1 (en) * 1998-07-02 2001-06-26 Microsoft Corporation Method for validating a signed program prior to execution time or an unsigned program at execution time
US6363479B1 (en) * 1998-07-22 2002-03-26 Entrust Technologies Limited System and method for signing markup language data
US6339829B1 (en) * 1998-07-30 2002-01-15 International Business Machines Corporation Method and apparatus to store extended security information in a data structure which shadows a java class object
US6266774B1 (en) 1998-12-08 2001-07-24 Mcafee.Com Corporation Method and system for securing, managing or optimizing a personal computer
US6321240B1 (en) * 1999-03-15 2001-11-20 Trishul M. Chilimbi Data structure partitioning with garbage collection to optimize cache utilization
JP3327877B2 (ja) 1999-04-14 2002-09-24 キヤノン株式会社 情報提供方法、情報提供システム、端末装置および情報提供プログラムを格納した記憶媒体
JP3376311B2 (ja) 1999-04-14 2003-02-10 キヤノン株式会社 情報提供方法および情報提供システム
JP3747133B2 (ja) * 1999-04-14 2006-02-22 キヤノン株式会社 携帯端末及びその制御方法及びその記憶媒体
JP3368237B2 (ja) * 1999-04-14 2003-01-20 キヤノン株式会社 コード処理方法、端末装置及び記憶媒体
US6973572B1 (en) * 1999-04-22 2005-12-06 International Business Machines Corporation Signature hash for checking versions of abstract data types
US7430670B1 (en) 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US7243236B1 (en) 1999-07-29 2007-07-10 Intertrust Technologies Corp. Systems and methods for using cryptography to protect secure and insecure computing environments
EP1531383A3 (en) 1999-07-30 2005-07-27 Intertrust Technologies Corp. Methods and systems for transaction record delivery using thresholds and multi-stage protocol
US7406603B1 (en) 1999-08-31 2008-07-29 Intertrust Technologies Corp. Data protection systems and methods
US6985885B1 (en) * 1999-09-21 2006-01-10 Intertrust Technologies Corp. Systems and methods for pricing and selling digital goods
US7603721B2 (en) * 2000-05-09 2009-10-13 Microsoft Corporation Restricted software and hardware usage on a computer
EP1305688A2 (en) * 2000-05-28 2003-05-02 Yaron Mayer System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages
US9213836B2 (en) 2000-05-28 2015-12-15 Barhon Mayer, Batya System and method for comprehensive general electric protection for computers against malicious programs that may steal information and/or cause damages
US7117371B1 (en) 2000-06-28 2006-10-03 Microsoft Corporation Shared names
US7124408B1 (en) * 2000-06-28 2006-10-17 Microsoft Corporation Binding by hash
US6907527B1 (en) * 2000-10-17 2005-06-14 International Business Machines Corporation Cryptography-based low distortion robust data authentication system and method therefor
US6963974B1 (en) 2000-12-28 2005-11-08 Entrust Limited Method and apparatus for providing non-repudiation of transaction information that includes mark up language data
GB2373073A (en) * 2001-03-08 2002-09-11 Escher Technologies Ltd Process and system for developing validated and optimised object-oriented software
JP2003099380A (ja) * 2001-09-26 2003-04-04 Toyota Keeramu:Kk システム間通信方法、コンピュータ及びインタフェイスモジュール用プログラム。
US7526654B2 (en) * 2001-10-16 2009-04-28 Marc Charbonneau Method and system for detecting a secure state of a computer system
US7137004B2 (en) 2001-11-16 2006-11-14 Microsoft Corporation Manifest-based trusted agent management in a trusted operating system environment
US7516447B2 (en) * 2002-02-22 2009-04-07 Bea Systems, Inc. Methods and apparatus for building, customizing and using software abstractions of external entities
US7487365B2 (en) * 2002-04-17 2009-02-03 Microsoft Corporation Saving and retrieving data based on symmetric key encryption
US20070118899A1 (en) * 2002-05-17 2007-05-24 Satyam Computer Services Limited Of Mayfair Centre System and method for automated safe reprogramming of software radios
US20030216927A1 (en) * 2002-05-17 2003-11-20 V. Sridhar System and method for automated safe reprogramming of software radios
US7441264B2 (en) * 2002-06-24 2008-10-21 International Business Machines Corporation Security objects controlling access to resources
US7406089B1 (en) * 2002-07-31 2008-07-29 Juniper Networks, Inc. Data verification using signature
JP2004118374A (ja) * 2002-09-25 2004-04-15 Keio Gijuku 変換装置及び変換方法及び変換プログラム及び変換プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2004157864A (ja) * 2002-11-07 2004-06-03 Canon Inc コンテンツ配信システム
US20040123105A1 (en) * 2002-12-19 2004-06-24 International Business Machines Corporation Security object with CPU attributes
US7617278B1 (en) 2003-01-29 2009-11-10 Adobe Systems Incorporated Client controllable server-side playlists
US9818136B1 (en) 2003-02-05 2017-11-14 Steven M. Hoffberg System and method for determining contingent relevance
US7287256B1 (en) * 2003-03-28 2007-10-23 Adobe Systems Incorporated Shared persistent objects
US20050108303A1 (en) * 2003-10-31 2005-05-19 Carter Richard D. Remote backup and restore technique
US7177875B2 (en) * 2003-11-10 2007-02-13 Howard Robert S System and method for creating and using computer databases having schema integrated into data structure
US7721273B1 (en) 2003-11-17 2010-05-18 Rockwell Automation Technologies, Inc. Controller equipment model systems and methods
US8150959B1 (en) 2003-11-17 2012-04-03 Rockwell Automation Technologies, Inc. Systems and methods for notifying multiple hosts from an industrial controller
WO2005114947A1 (en) * 2004-05-20 2005-12-01 Qinetiq Limited Firewall system
JP4385863B2 (ja) * 2004-06-23 2009-12-16 株式会社セガ オンラインゲーム不正検出方法
US7590589B2 (en) 2004-09-10 2009-09-15 Hoffberg Steven M Game theoretic prioritization scheme for mobile ad hoc networks permitting hierarchal deference
US7516495B2 (en) * 2004-09-10 2009-04-07 Microsoft Corporation Hardware-based software authenticator
US7401340B2 (en) * 2004-10-21 2008-07-15 Oracle International Corporation Supporting cross-component references in an object-oriented programming system
US7810153B2 (en) * 2005-01-28 2010-10-05 Microsoft Corporation Controlling execution of computer applications
US7770152B1 (en) * 2005-05-20 2010-08-03 Oracle America, Inc. Method and apparatus for coordinating state and execution context of interpreted languages
US7644351B1 (en) * 2005-06-27 2010-01-05 Information Sciences Corporation Data collection and processing system and methods
US7814328B1 (en) * 2005-09-12 2010-10-12 Microsoft Corporation Digital signatures for embedded code
US8060747B1 (en) 2005-09-12 2011-11-15 Microsoft Corporation Digital signatures for embedded code
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
US8190902B2 (en) * 2006-02-27 2012-05-29 Microsoft Corporation Techniques for digital signature formation and verification
US8205087B2 (en) * 2006-02-27 2012-06-19 Microsoft Corporation Tool for digitally signing multiple documents
US9092629B2 (en) * 2007-04-16 2015-07-28 The Directv Group, Inc. Method and apparatus for authenticating a code image upon starting a device
US9374242B2 (en) 2007-11-08 2016-06-21 Invention Science Fund I, Llc Using evaluations of tentative message content
US8984133B2 (en) 2007-06-19 2015-03-17 The Invention Science Fund I, Llc Providing treatment-indicative feedback dependent on putative content treatment
US8682982B2 (en) 2007-06-19 2014-03-25 The Invention Science Fund I, Llc Preliminary destination-dependent evaluation of message content
JP5341761B2 (ja) * 2007-08-09 2013-11-13 パナソニック株式会社 端末装置、サーバ及びそのシステム
US8082225B2 (en) 2007-08-31 2011-12-20 The Invention Science Fund I, Llc Using destination-dependent criteria to guide data transmission decisions
US8065404B2 (en) 2007-08-31 2011-11-22 The Invention Science Fund I, Llc Layering destination-dependent content handling guidance
US20090112915A1 (en) * 2007-10-31 2009-04-30 Microsoft Corporation Class configuration for locally cached remote data binding
US7930389B2 (en) 2007-11-20 2011-04-19 The Invention Science Fund I, Llc Adaptive filtering of annotated messages or the like
US8250475B2 (en) * 2007-12-14 2012-08-21 International Business Machines Corporation Managing icon integrity
US20090319946A1 (en) * 2008-06-20 2009-12-24 International Business Machines Corporation System and method for selective and dynamic elaboration of secure form content
US20100106977A1 (en) * 2008-10-24 2010-04-29 Jan Patrik Persson Method and Apparatus for Secure Software Platform Access
JP4650556B2 (ja) * 2008-10-31 2011-03-16 ブラザー工業株式会社 ネットワーク装置
US9852143B2 (en) 2010-12-17 2017-12-26 Microsoft Technology Licensing, Llc Enabling random access within objects in zip archives
US10229031B2 (en) * 2011-07-15 2019-03-12 Microsoft Technology Licensing, Llc. Debugging inline functions in optimized code
US8819361B2 (en) 2011-09-12 2014-08-26 Microsoft Corporation Retaining verifiability of extracted data from signed archives
US8972967B2 (en) 2011-09-12 2015-03-03 Microsoft Corporation Application packages using block maps
US8839446B2 (en) 2011-09-12 2014-09-16 Microsoft Corporation Protecting archive structure with directory verifiers
CN105981326B (zh) * 2014-02-26 2019-05-14 三菱电机株式会社 证书管理装置和证书管理方法
US11514042B1 (en) * 2021-06-03 2022-11-29 Sap Se Managing multiple cache specifications within a database environment

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS647231A (en) * 1987-06-30 1989-01-11 Toshiba Corp Parallel processing device for object directional system
US5005200A (en) * 1988-02-12 1991-04-02 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
US4868877A (en) * 1988-02-12 1989-09-19 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
US5218706A (en) * 1988-12-19 1993-06-08 Mitsubishi Denki Kabushiki Kaisha Data flow processor with next destination node determination
US4926476A (en) * 1989-02-03 1990-05-15 Motorola, Inc. Method and apparatus for secure execution of untrusted software
US5325478A (en) * 1989-09-15 1994-06-28 Emtek Health Care Systems, Inc. Method for displaying information from an information based computer system
US5001752A (en) * 1989-10-13 1991-03-19 Fischer Addison M Public/key date-time notary facility
CA2041992A1 (en) * 1990-05-18 1991-11-19 Yeshayahu Artsy Routing objects on action paths in a distributed computing system
AU628753B2 (en) * 1990-08-14 1992-09-17 Digital Equipment Corporation Method and apparatus for implementing server functions in a distributed heterogeneous environment
US5280610A (en) * 1990-08-14 1994-01-18 Digital Equipment Corporation Methods and apparatus for implementing data bases to provide object-oriented invocation of applications
AU639802B2 (en) * 1990-08-14 1993-08-05 Oracle International Corporation Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment
US5327559A (en) * 1990-10-23 1994-07-05 International Business Machines Corporation Remote and batch processing in an object oriented programming system
US5265206A (en) * 1990-10-23 1993-11-23 International Business Machines Corporation System and method for implementing a messenger and object manager in an object oriented programming environment
JP2556189B2 (ja) * 1990-10-29 1996-11-20 富士ゼロックス株式会社 オブジェクト指向計算機システムにおけるメソッド起動装置
DE69215976T2 (de) * 1991-06-28 1997-07-10 Digital Equipment Corp Verfahren und Gerät für Netzrechnersystemgruppenverwaltung
US5305461A (en) * 1992-04-03 1994-04-19 International Business Machines Corporation Method of transparently interconnecting message passing systems
AU662805B2 (en) * 1992-04-06 1995-09-14 Addison M. Fischer A method for processing information among computers which may exchange messages
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5412717A (en) * 1992-05-15 1995-05-02 Fischer; Addison M. Computer system security method and apparatus having program authorization information data structures
US5404525A (en) * 1992-09-30 1995-04-04 International Business Machines Corporation Efficient method router that supports multiple simultaneous object versions
US5550976A (en) * 1992-12-08 1996-08-27 Sun Hydraulics Corporation Decentralized distributed asynchronous object oriented system and method for electronic data management, storage, and communication
US5367573A (en) * 1993-07-02 1994-11-22 Digital Equipment Corporation Signature data object
US5603031A (en) * 1993-07-08 1997-02-11 General Magic, Inc. System and method for distributed computation based upon the movement, execution, and interaction of processes in a network
AU683038B2 (en) * 1993-08-10 1997-10-30 Addison M. Fischer A method for operating computers and for processing information among computers
US5606609A (en) * 1994-09-19 1997-02-25 Scientific-Atlanta Electronic document verification system and method

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153321A (ja) * 1997-07-29 1999-02-26 Internatl Business Mach Corp <Ibm> コンピュータ・システム、エージェント送信方法及びエージェント復元方法
JPH11282672A (ja) * 1998-03-31 1999-10-15 Hitachi Software Eng Co Ltd オンラインプログラム転送方法およびオンラインプログラム実行システム
CN100458746C (zh) * 1999-08-20 2009-02-04 微软公司 对顺序存取存储介质上变长度数据的有效存取
JP2011054190A (ja) * 2000-06-09 2011-03-17 Dainippon Printing Co Ltd 電子フォーム提供装置
JP2009508405A (ja) * 2005-09-09 2009-02-26 マイクロソフト コーポレーション デジタル署名ポリシー

Also Published As

Publication number Publication date
US6105072A (en) 2000-08-15
ATE211835T1 (de) 2002-01-15
CA2120666C (en) 1999-07-27
EP0638860B1 (en) 2002-01-09
DE69429601D1 (de) 2002-02-14
EP0638860A3 (en) 1995-04-26
JP3786722B2 (ja) 2006-06-14
AU683038B2 (en) 1997-10-30
CA2120666A1 (en) 1995-02-11
DE69429601T2 (de) 2002-10-31
EP0638860A2 (en) 1995-02-15
AU5796294A (en) 1995-02-23
US5748960A (en) 1998-05-05

Similar Documents

Publication Publication Date Title
JP3786722B2 (ja) デジタル署名を用いた進行オブジェクト指向型プログラムの有効利用方法および装置
US6378127B1 (en) Software installation and validation using custom actions
US7684964B2 (en) Model and system state synchronization
US8001596B2 (en) Software protection injection at load time
US5732263A (en) Systems, methods and computer program products for generating and validating user defined object classes in an object oriented programming environment after build time
US5617533A (en) System and method for determining whether a software package conforms to packaging rules and requirements
US5337360A (en) Method and apparatus for creating, supporting, and using travelling programs
US8181166B2 (en) System and method for determining when an EJB compiler needs to be executed
EP4268107B1 (en) Detecting added functionality in open source package
US7165237B2 (en) Data store for arbitrary data types with type safe storage and retrieval
JP2002508561A (ja) 自動コンフィギュレーション発生
Rees A security kernel based on the lambda-calculus
CA2349654A1 (en) Server configuration versioning tool
CN117610019A (zh) 一种麒麟操作系统的云镜像漏洞扫描方法及系统
JP4698925B2 (ja) 動的に接続可能な実行可能イメージの真正性検証システム及び方法
US6792596B2 (en) Method and system for protecting resource central programs
EP1498813A2 (en) Design time validation of systems
Wilson The definitive guide to Windows Installer
Runge et al. Information flow control-by-construction for an object-oriented language
JPH05113877A (ja) ソフトウエア開発装置および方法
AU722119B2 (en) A method for operating computers and for processing information among computers
RU2258252C2 (ru) Система и способ проверки подлинности динамически подключаемых исполняемых образов
Zhang et al. Programming smart contract with solidity
Kim A Formal Verification Library Design for Behavioral Refinement of CompCert Clight
NIST Reference model for frameworks of software engineering environments

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20031218

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040309

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040312

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040610

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20041214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050408

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20050414

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060306

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060322

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100331

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110331

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110331

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120331

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130331

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130331

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140331

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term