"第1コンピュータ上で実行されるアプリケーションブラウザであって、複数のオブジェクトを記憶する少なくとも1つのデータベースと、第2コンピュータからオブジェクトをアップロードおよびダウンロードする更新モジュールと、少なくとも1つのデータベース内に記憶されるオブジェクトの記憶および少なくとも1つのデータベース内に記憶されるオブジェクトに対するアクセスを制御し、かつ更新モジュールおよび少なくとも1つのデータベースと接続するデータベースマネージャとを備え、少なくとも1つのデータベースが、複数のオブジェクトの少なくとも1つを記憶する少なくとも1つのテーブルを備える、アプリケーションブラウザ。したがって、アプリケーションの過去のバージョン全体を上書きする、または削除する必要なく、ユーザがアプリケーションを更新できるようにするだけではなく、ユーザが実行のために複数のアプリケーションを選択できるようにもするアプリケーションに対するニーズがある。加えて、常時接続に対するニーズなしに、ユーザがネットワーク上で通信できるようにするアプリケーションに対するニーズがある。発明の概要本発明の例示的な実施形態においては、複数のアプリケーションを処理し、一方のコンピュータから他方のコンピュータへの情報のシームレスな交換に対処する方法およびシステムを説明する。複数のオブジェクトを記憶する少なくとも1つのデータベースと、第2コンピュータからオブジェクトをアップロードおよびダウンロードする更新モジュールと、少なくとも1つのデータベースに記憶されるオブジェクトの記憶および少なくとも1つのデータベースに記憶されるオブジェクトに対するアクセスを管理し、更新モジュールおよび少なくとも1つのデータベースと接続するデータベースマネージャとを含む、第1コンピュータ上で実行されるアプリケーションブラウザを提供し、少なくとも1つのデータベースが、複数のオブジェクトの少なくとも1つを記憶する少なくとも1つのテーブルを含む。本発明のこれらおよびそれ以外の特徴、態様および優位点は、図面を参照して本説明を読むことによって理解されるだろう。詳細説明本発明は、コンピュータ読み取り可能媒体または使用可能な媒体上で記憶され、コンピュータ読み取り可能媒体または使用可能な媒体から発するプログラムまたはプログラムセグメントを実行している汎用デジタルコンピュータで具現化されてよく、このような媒体は、磁気記憶媒体例えば、ROM、フロッピー登録商標ディスク、ハードディスク等、光読み取り可能媒体例えば、CD-ROM、DVD等、および搬送波例えば、インターネットまたはイントラネット上での伝送を含むが、それらに限定されない。本発明を実施するために使用される機能プログラム、コード、コードセグメントは、熟練したコンピュータプログラムによって、ここに記載されている発明の説明から引き出すことができる。本発明の一実施形態を、サンマイクロシステムズ社SunMicrosystems,Inc.によって開発されたJava登録商標プログラミング言語を参照しながら以下に説明する。Java登録商標は、例えば、ウェイツグループ出版商標WaiteGroupPressTMによって1996年に出版されたPaulTyma、GabrielTorok、およびTroyDowningによるJava登録商標プリンタプラスJava登録商標TMPrinterPlusに記載されており、その内容が参照してここにその全体として組み込まれている。Java登録商標の実施および記載は、例示的な実施形態として提供され、発明の範囲の制限として意図されていない。その他のプログラミング技法およびプログラミング技法を使用して本発明の特徴を実現することは、当業者の知るところである。本発明は、Microsoft登録商標Windows登録商標95/98などのオペレーティングシステムを備えたIBM登録商標と互換性のあるコンピュータ、ワークステーション等の多岐に渡るコンピュータシステムで実施可能である。本発明を利用可能である種類の典型的なコンピュータシステムを、図1Aおよび図1Bの概略図形式で示す。図1Aおよび図1Bにおけるコンピュータシステムの構造およびコンピュータ自体の構造は、本発明の一部を形成するものではない。コンピュータシステムの構造の修正は、当業者の知るところであることが理解される。参照を容易にするため、ブラウザが実行中のクライアントコンピュータ101は、ローカルコンピュータおよびネットワークコンピュータ100といい、あるいはデータが送受されるそれ以外のクライアントコンピュータ101はリモートコンピュータという。その後、発明の特徴がコンピュータの構造と協同するやり方を理解するためにこれを簡略に説明する。図1Aを参照すると、本発明は少なくとも1台のネットワークコンピュータ100および少なくとも1台のクライアントコンピュータ101を含むコンピュータシステム上で実行するように設計されている。クライアントコンピュータ101は、互いに、またはネットワークコンピュータ100と通信することができる。ネットワークコンピュータ100は、さらに大型のコンピュータネットワークまたはデータサービスの一部であってよいか、あるいは単一ネットワークサーバであってよい。図1Bを参照すると、コンピュータ103は、例えば、キーボード、マウス、タッチパッド等の少なくとも1台の入力装置107、例えばRAMおよび/またはROMなどの少なくとも1台のメモリ装置111、およびハードドライブ、フロッピー登録商標ディスクドライブ、書き込み可能CD/DVD、EEPROM等の少なくとも1台の記憶装置113に接続される、少なくとも1台の中央処理装置CPU105を含む。コンピュータ103に接続されているのは、例えばモニタまたはLCDディスプレイなどの少なくとも1台の表示装置115、プリンタ123、モデム125、および/またはネットワークインタフェース127である。モデム125またはネットワークインタフェース127は、ワイヤ接続または無線接続を介してコンピュータネットワークまたはデータサービスに接続されてもよい。さらに、モデム125および/またはネットワークインタフェース127を介したコンピュータネットワークまたはデータサービスへの接続は、双方向通信を提供する。本発明の例示的な実施形態では、データは、モデム125またはネットワークインタフェース127を介してコンピュータ103によって受信され、入力装置107を介してコンピュータ103に直接的に入力するか、あるいは記憶装置113から再表示することができる。さらに、本発明の出力は、少なくとも1台の表示装置115で表示され、記憶装置113内に記憶されるか、あるいはモデム125またはネットワークインタフェース127を介して他方のコンピュータに送信されてもよい。例えば、本発明の一実施形態においては、図1Aおよび図1Bに示すシステムは、少なくとも2台のコンピュータで実施される。2台のコンピュータは、クライアントサーバ関係またはピアトゥピア関係性を有することできる。さらに、クライアントサーバ関係に関して、サーバコンピュータは複数のクライアントに接続することができ、それにより各クライアントが、本発明による動的アプリケーションブラウザを介して、サーバから更新を受信し、サーバにデータを伝送することができる。例えば、クライアントの動的アプリケーションブラウザが教育アプリケーションモジュールを実行中である場合、動的アプリケーションブラウザは、授業計画または試験などの教育資料をサーバから受信することができる。その結果として、試験の点数、使用時間等の統計データは、評価のためにクライアントからサーバに送信することができる。また、プロファイルデータまたはそれ以外のユーザ情報は、識別のためにクライアントからサーバに送信できる。さらに、本発明の例示的な方法およびシステムを使用して、クライアントは、追加授業計画または追加アプリケーションモジュールの購入を許可するサーバにデータを送信することができる。加えて、サーバは、アプリケーションモジュール全体を置換する必要なく、個々のJava登録商標オブジェクトおよびクラスファイルを更新することによって、クライアント上で実行中のアプリケーションモジュールに変更を加えることができる。さらに、サーバは、個々のアプリケーションモジュールを修正する技法と同じ技法を使用して、クライアントの動的アプリケーションブラウザに変更または更新を加えることができる。図1Cは、本発明による動的アプリケーションブラウザの例示的な実施形態を示す。本発明による動的アプリケーションブラウザは、コンピュータ100および101で実行するように適応される。簡略するために、本発明を備えるソフトウェアは、クライアントコンピュータ101で実現される場合のみを説明する。ただし、クライアントコンピュータ101と比較されるネットワークコンピュータ100上で実現されるソフトウェア間のあらゆる相違点を説明する。本発明は、起動モジュール102、アプリケーションモジュール104、グローバル設定値モジュール106、オブジェクトデータベースマネージャ108、および入力モジュール10を含む。更新モジュール110は、データベースゲートウェイ112および更新マネージャ114を含む。オブジェクトデータベースマネージャ108は、ハンドラマネージャ109を含む。ハンドラマネージャ109は、ローカルコンピュータ内の別のコンピュータから受信されるデータをインストールするために使用される。これを、図13~図15に関して説明する。各データベース116、117、118は、異なるアプリケーションモジュール例えば、アプリケーションモジュール104に対応する。代わりに、複数のアプリケーションモジュールは、同じデータベースを共用できるか、あるいはそれぞれ排他的にまたは包含的にのどちらかで複数のデータベースを使用することができる。起動モジュール102は、コンピュータ101の初期化を制御する。本発明は、本発明を備える動的アプリケーションブラウザによって実行される1つまたは複数のアプリケーションモジュールを含むことができる。アプリケーションモジュール104は、オブジェクトデータベース内のオブジェクトを検索、記憶するためにオブジェクトデータベースマネージャのリソースを必要してもよい、あらゆる種類のアプリケーションであり得る。更新モジュール110は、コンピュータ101上の少なくとも1つのデータベースに記憶されるオブジェクトの更新を実行する。オブジェクトデータベースマネージャ108は、データベースを管理する。オブジェクトデータベースマネージャ108は、複数のデータベース116、117、118の機能性を制御する。各データベースは、1つの索引120、121を含むテーブル119を記憶する。データベース116、117、118は、テーブル119の要素としてオブジェクト122またはデータを記憶する。それから、テーブル119内の要素は、テーブル119内の要素に容易にアクセスできるようにする1つまたは複数の索引120、121を作成するために使用される。本発明の一実施形態に従って、1つの型例えば、ある特定のクラスのオブジェクトだけが単一テーブルに記憶できる。オブジェクトの型は、例えば、オブジェクトに含まれる構造およびフィールドとして定義される。図1H~図1Lは、データベース116、117、118のファイル構造の例示的な実施形態を示す。各データベース116、117、118は、データベースにおけるすべてのテーブルのリストを含むデータベースファイル図示せずを含む。また、各データベース116、117、118は、すべての記号ファイル名を物理ファイル名例えば、物理ファイル名が付いたデータベースに一覧表示されるテーブル名に写像するファイル用語集ファイル図1Hを含む。本発明の代替実施形態においては、グローバルファイル用語集ファイルは、データベース116、117、118のすべてについてすべての記号ファイル名を写像するために使用される。各テーブル119は、それと関連付けられているテーブルファイル図1I、データファイル図1J、ファイルマップ図1K、少なくとも1つの索引ファイル図1L、およびランダムアクセスファイルRAF図示せずを有し、すべてがハードドライブなどの記録可能媒体上に記憶されている。テーブルファイルは、テーブル内で許されている型またはクラス、ディスクキャッシュ方針、テーブルと関連付けられている索引の数とファイル名、ファイルマップの記号名、およびランダムアクセスファイルのファイル名などの情報を含む。索引ファイルは、索引の索引値と関連付けられるオブジェクトIDのリストを含む。テーブルの索引ごとに作成される1つの索引ファイルがある。索引ファイルは、索引に記憶される値の型例えば、文字列、整数、または任意のそれ以外の許容できるJava登録商標型、索引付けオブジェクトから索引値を抽出するためにオブジェクトによって呼び出されるメソッドまたはプロシジャの名前、およびオブジェクトと索引値の間に1対1の関係性例えば、社会保障番号は、二人の人が社会保障番号を共有しないので、人物オブジェクトと1対1の関係性を有さなければならないがあるかどうかを示すフラグも含む。ファイルマップは、ランダムアクセスファイル内のファイルサイズおよびファイルオフセットファイルポインタ値と関連付けられているオブジェクトIDのリストを含む。データベース内のオブジェクトは、ランダムアクセスファイル内に直列化された形式で記憶され、ファイルオフセットは、直列化されたオブジェクトの物理的なロケーションを示す。ファイルマップは、ランダムアクセスファイルの総サイズ、ランダムアクセスファイルの終了ポインタ値、およびランダムアクセスファイル内に記憶されるオブジェクトの総数も含む。データファイルは、ランダムアクセスファイルの記号名およびファイルマップの記号名を含む。オブジェクト122の例を、図1Dに示す。型人物の例示的なオブジェクトは、固有の識別フィールドID、名前フィールドFIRSTNAME、名字フィールドLASTNAME、および年齢フィールドAGEを含む。人物オブジェクトのテーブルの例は、図1Eに示す。また、オブジェクト型は、それがバイトのアレイとして表すことができるのであれば、およびそれがオブジェクトに割り当てられる固有のオブジェクトIDを有することができるのであれば、Java登録商標内で使用可能なあらゆる型であってもよい。図1Eに示す例示的なテーブルは、人物型の少なくとも1つのオブジェクト122を含む。索引120の例を図1Fに示す。索引120は、例えば、その名字フィールド単位でテーブル119内のオブジェクトのそれぞれを並べ替える。もちろん、索引はオブジェクト122内で知見されるあらゆるパラメータに関して並べ替えられてもよいことが理解される。索引120は、名字値欄およびオブジェクト識別ID欄を含む。図1Fは、FIRSTNAME単位で記憶される別の例示的な索引121を示す。この場合、1と2両方のオブジェクトIDが指定されるオブジェクトは、共に同じ値を有する名前フィールドを含むため、索引121は、名前マークに対応する同じ行の両方のオブジェクトIDを一覧表示する。図1Cを参照すると、コンピュータ100、101の初期化を制御する起動モジュール102をここで説明する。起動モジュール102は、グローバル設定値モジュール106に接続される。グローバル設定値モジュール106は、システムを動作する多様なパラメータを初期化する。例えば、多様なデータベース116、117、118の場所は、グローバル設定値モジュール106に記憶することができる。また、起動モジュール102は、多様なデータベース116、117、118内のこのようなアイテムを参照、検索および記憶するためにオブジェクトデータマネージャ108と接続する。また、起動モジュール102は、更新マネージャ114を介して更新モジュール110と接続する。更新モジュール110は、システムがリモートコンピュータ、すなわちネットワークコンピュータ100またはクライアントコンピュータ10からオブジェクトをアップロードおよびダウンロードするのを補助する。更新モジュール110を、別のコンピュータから転送される情報でデータベース116、117、118を更新するために、初期化プロセス中に、起動モジュール102によって呼び出してもよい。代わりに、更新モジュール110を、ローカル実行中コンピュータ上のデータベース116、117、118をアプリケーションによって作成される情報で更新するために、アプリケーションモジュール104によって呼び出してもよい。更新モジュール110は、データベースゲートウェイ112を介してオブジェクトデータベースマネージャ108と通信する。データベースゲートウェイ112は、更新モジュール110が、リモートコンピュータから受信される新規オブジェクトを、データベース内に記憶される適切なテーブルに転送することができるように、データベースマネージャと更新モジュール110の間のインタフェースとして作用する。特に、データベースゲートウェイ112は、更新モジュール110との間の命令を、更新モジュール110だけではなく、データベースマネージャ108によっても理解されるコマンドに変換することができる。このようにして、別のデータベースが本発明とともに使用される場合例えば、SQLサーバなどのJava登録商標データベース結合性JDBC準拠のデータベース、データベースゲートウェイ112を、新規データベースと接続できるデータベースゲートウェイに変更する、またはプログラミングすることだけが必要である。本発明の代替実施形態では、データベースゲートウェイ112は、それに接続されているデータベースの型を自動的に検出し、更新モジュール110との間の命令を更新モジュール110だけではなくデータベースマネージャ108によっても理解されるコマンドに変換する。起動モジュール102がコンピュータの初期化プロセスを完了すると、制御は、その特定のアプリケーションを実行するために、グローバル設定値モジュール106、オブジェクトデータベースマネージャ108および/または更新モジュール110のいずれかと通信できるアプリケーションモジュール104に移される。アプリケーションモジュール104の例としては、ゲーム、教育トレーニングプログラム、電子コマースプログラム、金融アプリケーション、およびオブジェクトデータベース内でオブジェクトを検索、記憶するために、オブジェクトデータベースマネージャのリソースを必要とする可能性のあるそれ以外のあらゆるアプリケーションが挙げられる。また、アプリケーションは、例えば、製品要求、製品情報、試験の点数、アプリケーション更新、使用量統計、カスタマ情報および/または追加アプリケーションモジュールまたはその一部などの情報を、リモートロケーションとの間で送受するために、更新マネージャ114を介して更新モジュール110を活用することができる。図2は、起動モジュール102によって実行される例示的なプロセスを示す。ステップ226では、グローバル変数が初期化される。グローバル変数とは、動的アプリケーションブラウザ内の1つまたは複数のモジュールによって参照される設定値、値、またはリソースである。これらのグローバル値は、例えば、セットアッププロシジャ内で動的アプリケーションブラウザの使用を通して使用されるので、それらの場所が所定されることが必要であり、その結果、ブラウザの多様なモジュールは、場所に関する情報、例えばリモートコンピュータのインターネットアドレスだけではなく、多様なデータベースの位置も突き止めることができる。ステップ228では、ステップ226のグローバル変数を初期化した後に、所望のアプリケーションモジュールに関連付けられる特定のデータベース116が配置され、特定のデータベース116の場所は、グローバル設定値モジュール106に記憶される。現在実施されている実施形態では、実行のために使用できるアプリケーションモジュールはただ1つである。複数のアプリケーションで本発明を実施してから、ユーザに自分が実行を所望のアプリケーションを選択するようにプロンプトを出すことは、当業者の知るところである。本発明の代替実施形態においては、使用可能なデータベースのすべてが配置され、各データベースの場所はグローバル設定値モジュール106内に記憶される。ステップ230では、更新モジュール110は、リモートロケーション、例えば、ネットワークまたはインターネット接続を介して接続されるネットワークコンピュータ100またはそれ以外のクライアントコンピュータ101の間でオブジェクトを送受する。それから、更新モジュール110によって受信される新しいオブジェクトが、ステップ232でアプリケーションモジュールに対応する適切なデータベースにインストールされる。ステップ234では、デフォルトアプリケーションモジュールまたは選択されたアプリケーションモジュール104が、アプリケーションモジュール104のためにモデル、ビュー、および制御装置を初期化するなどの、標準セットアッププロトコルを開始することによってロードされる。図3は、図2の更新ステップ230の例示的なフローチャートを示す。ステップ336では、データベースゲートウェイ112が、オブジェクトデータベースマネージャ108と接続するためにアクセスされる。データベースゲートウェイ112の場所は、ステップ338で、グローバル設定値モジュール106内にグローバル変数として記憶される。ステップ340では、起動モジュール102が、更新サポートがイネーブルされることを検証する。更新サポートがイネーブルされない例えば、ネットワーク接続が存在しない場合、更新プロセスはステップ347で読み飛ばされる。しかしながら、更新サポートがイネーブルされる場合、ログインプロンプトが作成され、ステップ342でローカル端末のユーザに表示される。ステップ344では、ユーザは、例えば、その後のステップ346でファイルに記憶されるユーザ名およびパスワードを入力する。ステータスパネルが、ユーザに更新プロシジャのステータスを知らせるために、かつユーザが、システムが更新モジュールによって引き起こされる可能性のある遅延のために適切に動作するのを停止したと考えるのを防ぐためにも、ステップ348でユーザに表示される。ステップ350では、ユーザ情報は、クライアントコンピュータからネットワークコンピュータに送信される。ネットワークコンピュータ100は、ユーザを認証し、認証が無事終了したかどうかを示すメッセージを送り返す。加えて、認証が無事に終了した場合には、2台のコンピュータ間で、特に、図13~図16に関して後述するあらゆるトランスポートセルリストを含むテーブル内で交換されるように指定された新規オブジェクトが交換される。認証が無事に終了しなかった場合には、エラーメッセージが発生し、ユーザ図示せずに表示される。ユーザは、再びプロンプトを出されるか、あるいはプログラムが停止する可能性がある。オブジェクトの交換を介したコンピュータの認証および更新の完了時に、ステータスウィンドウがステップ352で削除される。ステップ354では、ステータスモジュールが、更新プロセスが無事に完了したかどうかを検証する。イエスである場合には、更新プロセスはステップ358で終了し、それ以外の場合には、ステップ356でエラーメッセージが作成され、ユーザに表示される。図4は、図2のインストールステップ232を実行するための例示的な方法を示す。ステップ460では、起動モジュール102が、更新マネージャ114を介して、更新モジュール110を用いて、新規オブジェクトが、ステップ350からのトランスポートセルリストの交換を介してリモートコンピュータのいずれかから受信されたかどうかを確かめるためにチェックする。新規オブジェクトが存在しない場合には、インストールプロシジャは、ステップ462で読み飛ばされる。ただし、新規オブジェクトが存在する場合には、ステップ464で、ステータスウインドウがユーザに表示され、データベース内の新規オブジェクトのインストレーションがステップ466で開始される。例示的なインストレーションプロシジャは、下記の図15A~図15Cに関して説明する。ステップ466で新規オブジェクトのインストレーションが完了した後、インストレーションは、ステップ468でディスクに変更を付すことによって永久にされる。ステップ470では、ステータスウィンドウが削除され、ステップ472では、起動モジュール102が、インストールプロシジャが無事に完了したかどうかを検証する。インストールプロシジャ232が無事に完了した場合、インストールプロシジャ232はステップ474で終了する。それ以外の場合、インストールプロシジャ232が無事に完了しなかった場合には、ステップ476でエラーが起動モジュール102に報告される。図5は、図2の自動ロードアクションモジュール234の例示的な実施形態を示す。ステップ578では、データベースからのテーブルが、自動ロードアクションモジュール234によって実行されなければならないアクションのリストを含むデータベースから検索される。アクションは、例えば、動的アプリケーションブラウザに、アプリケーションモジュールの起動、新規データベースの作成、または既存データベースの構造の修正などの特定のタスクを実行するように命令するプロシジャとして定義される。テーブル中、各アクションは、優先順位値を含む。ステップ580では、アクションは、最初に最高の優先順位が指定されるアクションを、最後に最低の優先順位が指定されるアクションを等実行するように優先順位順で並べ替えられる。ステップ582では、自動ロードアクション234が、ステップ578で検索されるテーブル内のアクションの総数を表すカウンタを参照することによって、実行するためのアクションがあるかどうかを確かめるために検証する。カウンタが実行されたアクションの総数に等しい場合には、自動ロードアクションモジュール234はステップ584で完了される。カウンタが実行されたアクションの総数未満である場合には、次のアクションは、それがステップ586で条件付アクションであるかどうかを判断するために評価される。条件付きアクションとは、一定のイベントの発生に基づいてのみ実行されるべきアクションである。例えば、アクションは、それが過去に実行されなかった場合に、実行される必要性のみがある。すなわち、例えば、アクションが新規データベースを初期化することである場合があり、データベースがすでに存在している場合には不必要である。さらに、アクションは、一日の時刻または曜日、あるいは評価でき、ブール値を返すことができるそれ以外の条件に基づいて条件付きである場合がある。現行のアクションが条件的でない場合、アクションはステップ588にて実施される。それ以外の場合、条件はステップ590で評価される。条件が真であると評価された場合には、アクションはステップ588で実行され、それ以外の場合、ステップ593で、カウンタが増分され、プロセスはステップ582に戻る。アクションがステップ588で実行された後、起動モジュール102が、アクションがアプリケーションモジュール104を表すオブジェクトを作成したかどうかを判断する。作成されたアクションがアプリケーションモジュール104であると判断されると、アプリケーションモジュールはステップ596で実行され、起動モジュール102が、ステップ598でアプリケーションモジュール104の完了を待機する。アプリケーション完了時、カウンタはステップ593で増分され、プロシジャがステップ582に戻る。ステップ594でアクションによって作成されるオブジェクトがアプリケーションではない場合、起動モジュール102は、アクションを追加アクションと平行して実行できるかどうかを判断する。すなわち、起動モジュール102は、このアクションの完了まで追加アクションの実行を遅延することが必要であるかどうかを判断する。アクションがその他のアクションと平行して実行できる場合には、プロシジャは、ただちにステップ582に戻る。それ以外の場合、プロシジャは、ステップ582に戻る前に、ステップ5102でアクションの完了を待機する。図6~図12は、図1のデータベースマネージャ108の例示的な動作を示す。本発明の例示的な実施形態では、オブジェクトデータベース116、117、118は、Java登録商標ブジェクトを記憶するために使用される。データベースマネージャ108は、必要に応じてその中に記憶されるオブジェクトを追加、削除または変更することによってデータベース116、117、118を管理する。本発明によるブラウザおよび関連アプリケーションの効率的な動作を各日にするために、本発明で使用されるデータベースは、従来のリレーショナルデータベースより複雑ではないように設計される。すなわち、アプリケーションからリレーショナル行の中にデータを押し込む代わりに、オブジェクトは作成された通りに記憶され、テーブルの中に格納される。この効率が、複数のアプリケーションモジュール104とのその移植性だけではなく、データベースの高速かつ容易な動作にも対処する。また、より複雑ではなく、より高速の本発明のデータベースは、従来のデータベースより少ないリソースを使用し、それによりアプリケーションモジュールにさらに多くの使用可能なリソースを提供する。典型的なパーソナルコンピュータは、Java登録商標アプリケーションを実行するために使用可能な限られたリソースを有するので、本発明のデータベースの効率は、パーソナルコンピュータの低リソース環境での精密なデータアクセスに対処する。データベース上で動作するデータベースマネージャの例示的な機能は、データベースの中にオブジェクトを挿入する能力、データベース内のオブジェクトを変更するまたは置換する能力、データベースからオブジェクトを検索する能力、およびデータベースからオブジェクトを削除する能力を含む。データベースのフォーマット、特にテーブル、オブジェクトおよびオブジェクトIDのそれらのテーブル内での使用が、ブラウザ、つまり実行するアプリケーションまたはブラウザ、およびデータベースの使用および速度を容易にする。さらに、データベースのフォーマットが、ブラウザを動的にすることができる。すなわち、例えば、データベース内のオブジェクトは容易に追加、修正および削除できるので、アプリケーションまたはアプリケーション用のコンテンツは、シームレスに追加、削除または修正できる。さらに、ブラウザ自体は、単にオブジェクトを追加、修正またはデータベース内のテーブルから削除するだけで修正することができる。さらに、データベースのフォーマットは、プログラマがオブジェクトを多数の異なるように入力された行に分割するなど、従来のデータベースと互換性のある形式にオブジェクトを変換する必要なくオブジェクトを自分専用Java登録商標形式のデータベース中に格納できるようにすることによって効率的かつ容易なソフトウェア開発に対処する。本発明の一実施形態に従って、データベースに加えられる変更は最初に一時的にメモリ内で加えられてから、ディスクで加えられる。これが、エラー発生時にデータベースの状態を復元する能力を提供する。データベース116、117、118に対する変更を永久にするために使用されるプロシジャはコミットと呼ばれる。データベース116、117、118に加えられた変更を、それらを永久にする前に、逆転するために使用されるプロシジャがロールバックと呼ばれる。データベースマネージャのさらなる機能とは、条件に基づきデータベース内でオブジェクトを修正、削除または検索する能力である。例えば、ユーザまたはアプリケーションが、所定の日付より旧いデータベースにおけるすべてのオブジェクトの削除を希望する場合がある。加えて、特定値を有する特定のフィールドを含むすべてのオブジェクトを修正または検索することが望ましい場合がある。条件関数による削除、修正および検索は、アプリケーションまたはユーザが、オブジェクトまたはオブジェクトのセットを修正または削除する決定が下された時点で、オブジェクトのアイデンティティを容易に入手できないときに有効である。これら特徴の実施の例示的な実施形態は、以下にさらに完全に説明する。図6Aは、本発明によるデータベース116~118およびデータベースマネージャ108のオブジェクト挿入機能性のある実施形態を示す。ステップ6202では、オブジェクトがある特定のデータベース例えば、コマンドが設定された時点で実行中のアプリケーションモジュールに対応するデータベースのある特定のテーブルの中に挿入されることを示すコマンドがオブジェクトデータベースマネージャ108に送信される。ステップ6204では、挿入されるオブジェクトを特定する一意のオブジェクトIDが作成される。オブジェクトIDが作成された後、オブジェクトIDは、オブジェクトの中に挿入される。本発明の例示的な実施形態では、オブジェクトIDが、データベースに格納される第1オブジェクトが1というIDを与えられるように連続して割り当てられる。このオブジェクトIDは、データベースに挿入される新規オブジェクトごとに1づつ実現される。このようにして、オブジェクトIDがオブジェクトに割り当てられると、そのオブジェクトIDは同じデータベース内の別のオブジェクトに対して再び使用されることはないので、各オブジェクトは、固有のIDを有する。複数のアプリケーションまたは複数の要求が同時に同じオブジェクトを変更するのを防ぐために、指定されたオブジェクトにロックをかけることが必要である場合がある。ロックは、ユーザまたはアプリケーションがデータベース内で検索されたオブジェクトの保存を希望するときには必ず必要である。例えば、同時に実行している2つのアプリケーションまたはプロセスが同時に同じオブジェクトを修正しようとすることがある。したがって、ステップ6206では、データマネージャ108は、テーブルのオブジェクトへの同時アクセスを防ぐために、テーブルのオブジェクトにロックがかけられることが必要とされているかどうかを特定する、テーブル119内に含まれるフラグを評価する。ロックが必要とされる場合には、ステップ6208でオブジェクトがロックされる。ロックが必要とされない場合、あるいはロックステップの完了つまり、オブジェクトが無事にロックした後、オブジェクトデータベース108は、テーブルの中に挿入されるオブジェクトが、ステップ6210内の正しいオブジェクト型に一致するかどうかを検証する。各テーブルは、テーブルの中に挿入されるのを許されるオブジェクトのクラスつまり型を示すフラグを有する。上記のように、型は、例えばオブジェクトに含まれる構造、フィールドおよび機能性として定義される。オブジェクト型が一致しない場合、挿入はステップ6212で失敗し、オブジェクト挿入プロシジャは取り消され、エラーメッセージが発生する。ただし、オブジェクト型がテーブルにより許される型に一致する場合には、ステップ6214で、オブジェクトデータベースマネージャ108が、テーブルがバックアップを実行するように設定されているかどうかを判断する。バックアップは、データの破壊を防ぐためにテーブルの過去のバージョンを表すデータを記憶することとして定義される。バックアップがこのテーブルのために実行される場合には、バックアッププロシジャは、テーブルがバックアップファイルの中にコピーされるステップ6218で開始する。バックアッププロシジャの後、あるいはテーブルが実行されるバックのために設定されていない場合に、オブジェクトはディスクまたはハードドライブ、光ドライブ、仮想ドライブ、またはステップ6216でデータを記憶、検索するために使用できるそれ以外の媒体などのその他の記録可能媒体に書き込まれる。ステップ6216の後、オブジェクトは、ステップ6220でテーブルの使用可能な索引に従って索引付けされる。例えば、オブジェクトが名前フィールドおよび名字フィールドを有し、テーブルが、名字フィールドに基づいた索引を含む場合には、オブジェクトデータベースマネージャ108は、テーブルの名字索引内の新規オブジェクトに索引を付ける。これにより、ユーザは、テーブルに記憶されるオブジェクトIDをその後特定する適切な名字索引内の名字フィールドを検索するように、データベースマネージャ108に命令することによって、オブジェクトの位置を突き止めることができる。オブジェクトがステップ6220で索引を付けられた後、オブジェクトデータベースマネージャ108は、ステップ6222で特定のテーブルのためにさらに多くの索引があるかどうかを確かめるためにチェックする。ある場合には、オブジェクトはステップ6220でその特定の索引のために索引を付けられる。このプロシジャは、索引ごとに繰り返す。すべての索引が新規オブジェクトで更新されると、オブジェクト挿入プロシジャがステップ6224で完了する。図19A~図19Cは、図6Aのディスクへの書き込みステップ6216の例示的な実施形態を示す。図19Aに関して、オブジェクトは、まずステップ19963でオブジェクトからオブジェクトIDを抽出することによいってランダムアクセスファイルに書き込まれる。オブジェクトIDおよびオブジェクト自体は、オブジェクトデータマネージャ108が、オブジェクトIDがステップ19964で指定されたデータベースにすでに存在しないかどうかを検証することができるように、オブジェクトデータベースマネージャ108に送信される。ステップ19965では、オブジェクトIDが固有であるかどうかが判断される。固有である場合には、オブジェクトと関連付けられるテーブルについて、エントリがテーブルファイルマップ内で作成される。オブジェクトIDが固有ではない場合には、ステップ19990でエラーが報告され、挿入は失敗する。上記のように、データベースマネージャ108およびデータベース116、117、118の機能性は、一時的におよび/または恒久的にデータベースに対して変更を加える能力を含む。ランダムアクセスファイルに書き込む際にエラーを防ぐために、バッファが、ランダムアクセスファイルのコンテンツのサブセクションを一時的にメモリに記憶するために使用される。ステップ19967では、オブジェクトがバッファ内のその適切な場所にあるメモリに記憶され、コンテンツが正確であるとして検証されると、バッファのコンテンツはそれからランダムアクセスファイルに記憶され、存在する場合その既存のコンテンツを置き換える。このようにして、ランダムアクセスファイルに対するすべての変更は、コミットプロセスのバッファからの一時点で加えられる。本発明の代替実施形態においては、オブジェクトは、それらをまずバッファに記憶せずにランダムアクセスファイルに直接的に書き込まれる。バッファの使用は、書き込みプロシジャの信頼性を保証するだけではなく、ランダムアクセスファイルからアイテムを検索するために要するアクセス時間も加速できる。加えて、別の種類のバッファリングが固有のオブジェクトの高速アクセスの優位点を提供する。すなわち、例えばオブジェクトの検索は、実際の検索の前にアプリケーションモジュール104によって予測することができ、それはバッファ内に格納することができる。加えて、対応するランダムアクセスファイルをファイあるマップに書き込みをする前に、バッファに加えられる変更は、トランザクションベクタとしてメモリに記憶され、その結果テーブルに加えられる変更のそれぞれが、必要ならば、それらをコミットする前に逆転できる。ファイルマップはコミットが呼び出されるまで変更されないので、変更が加えられ、不正確であると理解された後にロールバックが発生した場合、ファイルマップからデータを再ロードすることによって、あるいは代わりに、トランザクションベクタに記憶される変更を逆転して、ファイルマップをその元の状態に復元することによって変更前にファイルマップのバッファをそのオリジナルコンテンツに復元することだけが必要である。図19Bは、図19Aのオブジェクトステップ19966用ファイルマップエントリ作成の例示的な実施形態を示す。ステップ19974では、バイトのアレイが例えば、従来のJava登録商標直列化技法を使用することによってオブジェクトから作成される。ステップ19975では、アレイのバイト長またはサイズが計算される。ステップ19976では、バイトのアレイを収容するほど大きいランダムアクセスファイル内の空きスペースの第1バイト用のファイル索引を表す開始ポインタが割り当てられる。ステップ19977では、ステップ19976で求められるポインタ値がファイルマップに記憶される。ステップ19978では、ステップ19977に記憶されるポインタ値が、ファイルマップ内の挿入ポインタとしてマークされる。ステップ19979では、ファイルマップに対する変更がトランザクションベクタ内にログされる。図19Cは、バッファの中へのオブジェクト挿入の例示的な実施形態を示す図19Aのステップ19967。ステップ19968では、オブジェクトがバイトのアレイの中に直列化される。ステップ19969では、オブジェクトの開始ポインタが、使用可能な空きスペースを評価することによってファイルマップから検索される。ステップ19970では、バッファは、新規オブジェクトが記憶される適切なポインタ値まで横切られる。ステップ19971では、オブジェクトはバッファの中に記憶され、コミットが呼び出された後に、ランダムアクセスファイルに記憶される。ステップ19972では、コミット後に、現在メモリ内にあるバッファが、修正されたばかりのバッファであるかどうかが判断される。そうである場合には、ステップ19973で、バッファは、バッファのコンテンツを最新に保つために、ランダムアクセスファイルから削除または復元される。本発明の代替実施形態においては、複数のバッファがランダムアクセスファイルのコンテンツを記憶するために使用されてもよい。図6Bは、図6Aの索引付けステップ6220の例示的な実施形態を示す。オブジェクトに索引を付けるため、テーブル119内の索引120、121ごとにステップ6228のオブジェクトおよびオブジェクトIDを使用する索引プロシジャが実行される。特に、索引ルーチン6220は、データベース内のテーブルに関連付けられる索引の1つの中にエントリを挿入するために呼び出され、そのルーチンに渡されるパラメータは、索引が付けられなければならないオブジェクトおよびオブジェクトIDを含む。ステップ6230で索引値を得るために、索引ファイル内に記憶されるまたは参照されるメソッドまたはプロシジャがオブジェクト上で実行される。この索引値は、テーブルのオブジェクトを並べ替えるために索引によって使用される値に一致する。例えば、索引は、オブジェクトの名字フィールドの索引値で並べ替えられてもよい。また、索引は、オブジェクトの作成の日付けで並べ替えられてよい。前述のように、索引は、オブジェクト内の、あるいはオブジェクトに関係するパラメータまたはフィールドのいずれかのために作成されてもよい。索引値がステップ6230で検索されると、索引値がすでに索引内に存在するかどうかを判断するために、索引の既存のコンテンツ上で実行される。検索はあらゆる適切なメソッドによって実行されてもよい。例えば、バイナリ検索が使用されてもよい。索引値がステップ6232にすでに存在する場合には、新規オブジェクトIDが、ステップ6234の索引の索引値に一致する既存のオブジェクトIDの隣に挿入される。それ以外の場合、ステップ6236で、新規索引値が作成され、新規索引値に一致するオブジェクトIDがリストに入れられる。プロシジャはステップ6238で終了する。図7Aは、データベースマネージャ108によって実行される例示的な修正プロシジャを示す。オブジェクトを修正するために、すなわち既存のオブジェクトを、それを変更済みのオブジェクトで置換することによって修正すると、オブジェクトデータベースマネージャ108は、最初に、同時にそのオブジェクトを修正するようにとの別の要求を回避するために、ステップ7240の修正プロシジャを要求するアクションによって置換または修正されるオブジェクトにロックをかけられるかどうかを検証しなければならない。オブジェクトにロックをかけることができない場合には、修正はステップ7242で失敗する。例えば、ロックがすでにそのオブジェクトに掛けられている場合に、これが発生する可能性があり、それが現在別の要求によって変更されていることを示す。ただし、オブジェクトにロックをかけることができる場合には、オブジェクトは、ステップ7243でそのオブジェクトと関連付けられるフラグをセットすることによってロックされ、旧オブジェクトはステップ7244で検索される。これは、テーブルに、特定のオブジェクトIDが指定されるオブジェクトを戻すように命令することによって実行される。テーブルは、要求されたオブジェクトの物理的な場所を突き止めるためにファイルマップを使用する。修正プロシジャが既存のオブジェクトを修正しているので、特定的なオブジェクトIDは、修正を要求するアプリケーションに既知である。ステップ7246では、新規オブジェクトと旧オブジェクトの両方を考慮して、各索引がオブジェクトの変化を反映するように更新される。例えば、名字フィールドに変更があった場合、新規オブジェクトとの旧オブジェクトの比較は、名字が変化したことを反映する。この場合、索引は、修正されたオブジェクトのための新規索引値を反映するように更新される。オブジェクトIDは同じままである。ステップ7248は、テーブルの索引ごとにステップ7246を繰り返す。索引のすべてが更新されると、更新プロシジャがステップ7250で完了される。ステップ7246を、図7Bに関してさらに説明する。ステップ7252では、索引値、すなわち索引がそれに従ってオブジェクトを並べ替える値が新規オブジェクトから抽出される。ステップ7254では、旧オブジェクトの索引値が抽出される。ステップ7256では、旧い値および新規値が比較され、索引値がステップ7258で同じ場合には、索引は依然として最新であり、索引を変更する必要はなく、プロシジャはステップ7260で終了する。旧索引値および新規索引値が同じでない場合には、ステップ7262で、オブジェクトIDが索引から削除される。削除されたオブジェクトIDが特定的な索引値に一致する唯一のオブジェクトIDであった場合には、索引値も索引から削除される。ステップ7264では、新規索引値がオブジェクトIDとともにすでに存在しない場合には、新規索引値が索引の中に挿入される。新規索引値がすでに索引内に存在する場合には、オブジェクトIDが挿入される。索引は、ここで更新され、プロシジャは7266で終了する。固有のオブジェクトIDを提供することによってオブジェクトを更新することに加え、条件でオブジェクトを修正することも可能である。すなわち、ユーザまたはアプリケーションは、条件を評価できるようになるまでどのオブジェクトを修正する必要があるのか知らない可能性がある。例えば、ある特定の索引値を有する名字フィールドを含む指定されるテーブル内のすべてのオブジェクトを修正することが必要である場合がある。この特徴の例示的な実施形態を、図8に示す。ステップ8300では、条件の値が評価され、条件を満たすオブジェクトのリストが戻される。ステップ8302では、オブジェクトデータベースマネージャ108は、ロックがあるかどうか、あるいは条件に一致する、特定されたオブジェクトのすべてでロックを確立できるかどうかを判断する。特定されたオブジェクトのすべてにロックを確立できない場合には、修正プロシジャが失敗し、ステップ8304でエラーメッセージが発生し、ルーチンがステップ8316で終了する。しかしながら、ロックがステップ8306で確立できる場合には、ユーザまたはアプリケーションが複数のオブジェクトを置換することを意図していたかどうかが判断される。この意図は、修正プロシジャ開始時にオブジェクトデータベースマネージャ108に送信される変数またはフラグを介してオブジェクトデータベースマネージャ108に伝達することができる。フラグが、アプリケーションが条件による修正について複数のオブジェクトの更新を生じさせることを意図していなかったことを示す場合には、ステップ8308で、オブジェクトデータベースマネージャ108が、複数のオブジェクトがステップ8300から戻されたかどうかを判断する。複数のオブジェクトがステップ8308で戻された場合には、ステップ8310で、エラーメッセージが発生し、プロシジャは終了する。しかしながら、ステップ8300でただ1つのオブジェクトだけが戻されたとステップ8308で判断される場合、あるいはフラグが、ユーザまたはアプリケーションが複数のオブジェクトについて置換されることを意図していたことを示すとステップ8306で判断される場合には、データベースマネージャ108はステップ8312に進む。ステップ8312では、第1オブジェクトが、図7Bに図示されるプロシジャを使用して、関連付けられるオブジェクトIDによって修正される。ステップ8314では、第1オブジェクトの更新が完了すると、つまりオブジェクトIDによる修正プロシジャがステップ7266で終了すると、ステップ8314で、オブジェクトデータベースマネージャ108が、ステップ8300によって提供されるリスト内に追加のオブジェクトIDがあるかどうかを判断する。ある場合には、オブジェクトデータベースマネージャ108は、再びオブジェクトIDによる修正プロシジャを使用してステップ8312におけるリスト中の次のオブジェクトIDに対応するオブジェクトを修正する。ステップ8300で戻されるオブジェクトのすべてが修正されると、プロシジャはステップ8316で終了する。特定の特性または値を有するオブジェクトをデータベースから検索するために、オブジェクトデータベースマネージャ108が照会に一致するオブジェクトのオブジェクトIDを戻すことができるように、条件でテーブルを照会する必要がある。このプロシジャの例示的な実施形態を、図9に示す。ステップ9400では、照会はオブジェクトデータベースマネージャ108に送信される。照会は、アプリケーションを使用するユーザによって、あるいはアプリケーション自体によって作成できる。照会は真または偽を戻すブール式であるか、あるいは照会は結果のセットを戻す式である場合がある。照会は、照会に一致するオブジェクトを求めて、あらゆるまたはすべてのデータベース116、117、118、あるいはデータベースのどれかまたはすべての中のあらゆる、またはすべてのテーブルが検索されなければならないことを指定する。ステップ9402では、テーブルからの照会に一致するオブジェクトのすべてのオブジェクトIDが戻される。一致するオブジェクトのリストを得るために、検索される各テーブルと関連付けられる多様な索引が、照会で提示される基準を満たすオブジェクトのオブジェクトIDを見つけるために使用できる。ステップ9404では、オブジェクトデータベースマネージャ108が、検索されたオブジェクト内に記憶されるフラグに基づいて、戻されるオブジェクトでロックを確立する必要があるかどうかを判断する。本発明の代替実施形態においては、各テーブルがオブジェクトデータベースマネージャ108によって参照されるロックされたオブジェクトIDのリストを含む。フラグは、オブジェクトデータベースマネージャ108に照会を送信したアプリケーションによってセットされる。検索されたオブジェクトをロックすることが必要である場合には、オブジェクトデータベースマネージャ108は、ステップ9406のオブジェクトのそれぞれをロックする。ステップ9406の完了後、あるいはオブジェクトのどれかをロックすることが必要ではない場合、オブジェクトIDはステップ9408でリストの形で戻され、その時点で、プロシジャはステップ9410で終了する。図18A~図18Dは、図9のステップ9402で照会の条件に一致するオブジェクトのすべての検索オブジェクトIDの例示的な実施形態を示す。図18Aに関して、ステップ18900で、すべてのオブジェクトIDが指定されるテーブル用のファイルマップから検索される。照会条件は、ステップ18902で評価され、句エバリュエータが条件の値例えば、オブジェクトIDのセットまたはブール値を戻す。プロシジャはステップ18906で終了する。図18Bは、図18Aの評価条件ステップ18902の例示的な実施形態を示す。ステップ18908では、条件記述子が作成される。条件記述子は、優先順位単位で例えば、動作の順序に従って条件の論理演算例えば、ブール演算子を並べ替え、記憶する演算ベクタを含む。加えて、条件記述子は、句マップを含む。句マップは、句タグつまり、複数の条件の内側にある各句を一意の識別子、例えば10歳を超えるすべての人々および茶色の髪の毛のすべての人々は、AとBとして表され、この場合AとBは句タグであるを実際の句と関連付ける。ステップ18910では、優先順位順の論理演算が検索される。ステップ18912では、句マップが検索される。ステップ18914では、一番上の論理演算が検索される。ステップ18916では、論理演算は、それが単項例えば、NOT否定であるのか、それとも2項例えば、AND論理積またはOR論理和であるのかを判断するために評価される。それが単項である場合、ステップ18918では、第1句タグが検索される。ステップ18920では、句が評価され、ブール値またはオブジェクトIDのセットを戻す。ステップ18922では、単項論理演算子が検索され、ステップ18924で、句および演算子がともに評価される。ステップ18924の結果は、ステップ18926内のセットマップと呼ばれるスタックに記憶される。追加論理演算子の存在はステップ18940でチェックされる。ステップ18942で残りの論理演算子がない場合には、セットマップの値が検索され、プロシジャはステップ18944で終了する。論理演算子が2項演算子例えばAND論理積またはOR論理和であるとステップ18916で判断されると、第1句タグがステップ18928で検索される。ステップ18930では、句が評価され、ステップ18932で、次の句タグが検索される。ステップ1834では、次の句タグと関連付けられる句が評価され、ステップ18936では2項論理演算子が検索される。ステップ18938で、ステップ18936で検索された演算子とともに、ステップ18930およびステップ18934の結果を使用して、2項演算が評価される。ステップ18938の結果はステップ18926のセットマップに記憶され、プロシジャは前述のようにステップ18940で続行する。ステップ18940で、演算ベクタにさらに多くの論理演算子があると判断されると、プロシジャはステップ18914に戻る。図18Cは、図18Bの条件記述子作成ステップ18908の例示的な実施形態を示す。ステップ18942では、条件がゼロより多い演算を有するかどうかが判断される。条件がゼロより多い演算を含まない場合には、句が条件から検出され、固有のIDを割り当てられ、ステップ18944内の句マップに追加される。条件がゼロより多い演算を含む場合、一番上の演算子がステップ18946の演算ベクタから検索される。ステップ18948では、演算子が2項演算子であるかどうか判断される。演算子が2項演算子ではない場合つまり、単項演算子、演算子はステップ18950で演算ベクタに追加される。演算子が2項演算子である場合には、ステップ18952で、条件記述子が、条件記述子を再帰的に作成するために図18Cの前記プロシジャを使用することにより2項演算子の第2条件について作成される。ステップ18954では句が句マップに格納され、ステップ18956では、演算子が演算ベクタに格納される。図18Dは、句評価ステップ18930ステップ18920と18934もの例示的な実施形態を示す。ステップ18958では、句がすでに評価され、過去の評価ステップによってセットマップに記憶されているかどうかが判断される。記憶されている場合には、ステップ18960で、セットマップに記憶される句の値が戻される。句がすでに評価されていなかった場合には、ステップ18962で、句の条件例えば、10歳以上のすべての人を適切なテーブルの対応する索引のエントリ例えば、人物オブジェクト用の年齢索引テーブルに比較することによって、句が評価される。図10は、オブジェクトをそのオブジェクトIDごとに削除するためのプロシジャの例示的な実施形態を示す。ステップ10502では、ロックが、削除される指定されたオブジェクトにかけられる。ステップ10504では、オブジェクトデータベースマネージャ108が、ロックが特定されたオブジェクトに無事にかけられたかどうかを判断する。ロックが無事に入手されなかった場合には、削除は失敗し、エラーメッセージがステップ10506で発生し、プロシジャはステップ10508で終了する。ロックがオブジェクトに無事にかけられた場合には、ステップ10512で、オブジェクトIDがオブジェクトから抽出される。ステップ10514およびステップ10516では、オブジェクトIDが索引のそれぞれから削除される。索引のオブジェクトのための索引値に関連付けられる複数のオブジェクトIDがある場合、そのオブジェクトIDだけが索引から削除される。索引の索引値に関連付けられるオブジェクトIDがただ1つである場合には、索引値も削除され、その結果、索引エントリ全体が削除される。ステップ10514は、図12に関して後述する。ステップ10518では、オブジェクトが、それがランダムアクセスファイルに記憶されるデータベースから削除され、プロシジャはステップ10520で終了する。ステップ10518で、オブジェクトがテーブルから削除され、索引がオブジェクトの削除を反映するように変更されると、ファイルマップからオブジェクトを削除し、ランダムアクセスファイル内のその場所を空きスペースとして割り当てることが必要である。先ず、ファイルマップからオブジェクトID用ファイルオフセットを得る。その後、ファイルマップを修正して、削除したオブジェクトを保存するのに以前に割り当てたセクタないしバイト位置が、今利用できるセクタないしバイト位置であることを示すようにする。これは、例えばファイルマップにおける別のヘッディングあるオブジェクトに以前に割り当てたセクタをフリースペースとして指定することにより達成できる。図19Dは、図10に示したファイルマップから削除するステップ10518の典型的な実施の形態を示している。ステップ19981において、特定IDのオブジェクトがテーブルにあるかどうかが判定される。なければ、ステップ19982でエラーメッセージが返される。特定オブジェクトがテーブルにあると判定されると、ステップ19983において特定オブジェクトを含むテーブルのファイルマップが検索される。ステップ19984においては、ファイルマップに、特定オブジェクトのオブジェクトIDに対応するファイルオフセットまたは、ポインターが含まれているかどうかを判定する。ファイルオフセットがないと判定されると、ステップ19989でエラーメッセージが返され、削除操作が中断される。対応するオフセットが見つかると、ステップ19985においてファイルオフセットが返される。ステップ19989においては、オブジェクトのディスクマップエントリーが除去され、ランダムアクセスファイルにおいて使われていたスペースがフリースペースとしてファイルマップに示される。ステップ19987では、図10のステップ10514において複数のインデックスに対してなされた変更のログが取引ベクトルに保存される。図11は、条件に応じてオブジェクトを削除するためにオブジェクトデータベースマネジャー108が実行する手順を示す。ステップ11520で特定の条件と一致するオブジェクトのリストを返すのに、図9に示した手順が使われる。ステップ11522においては、オブジェクトデータベースマネジャー108が、条件により返された全てのオブジェクトに対してロックがかけられたことを検証する。これら全てのオブジェクトにロックがかけられなかった場合、ステップ11524において、条件によりオブジェクトを削除するkとができず、それに伴ってエラーメッセージが返されると共に、手順が終了する。しかしながら、全てのリスとされているオブジェクトにロックがかけられた場合、ステップ11526と11528とにおいて、図10に示したルーチンを利用することで条件からの一致のリストにオブジェクトIDがなくなるまで、各オブジェクトがオブジェクトIDにより削除される。この手順はステップ11530で終了する。オブジェクトがテーブルから削除されると、変更を反映するために索引を更新することが必要である。図12では、図10のステップ10514で呼び出される索引からオブジェクトを削除するためのプロシジャの例示的な実施形態を示す。ステップ12532では、削除されたオブジェクトのファイルマップからのファイルオフセットが求められる。ステップ12534では、索引に対する検索、例えばバイナリ検索が、索引値を含む第1索引行を見つけるために実行される。ステップ12536では、索引値に一致する索引が見つけられ、それからステップ12540で、オブジェクトIDが索引から削除される。加えて、索引からオブジェクトIDを削除した後に、ステップ12542の特定の索引値に関連付けられる追加オブジェクトIDがない場合には、ステップ12544で索引値も索引から削除され、プロシジャはステップ12546で終了する。追加オブジェクトIDがある場合、プロシジャは、索引行を削除せずにステップ12546で終了する。一致がステップ12536で見つけられなかった場合には、オブジェクトが現在テーブルにないために、削除動作は失敗し、ステップ15238でエラーメッセージが発生し、プロシジャはステップ12546で終了する。図13~図14は、あるコンピュータが、それが本発明に従って接続される別のコンピュータにデータを素真する機構の例示的な実施形態を示す。このプロシジャは、例えば、ネットワークコンピュータ100から1台または複数台のクライアントコンピュータ101に、アプリケーションモジュールに関連付けられる新規オブジェクトをダウンロードするために使用される。プロシジャは、ネットワークコンピュータ100と1台または複数台のクライアントコンピュータ101の間、あるいは2台または3台以上のクライアントコンピュータの間で、データファイルまたはオブジェクトを渡すために使用することもできる。一例示的実施形態に従って、図2および図3の更新プロシジャ230の一部である図14の更新プロシジャが、クライアントコンピュータ101が初めてネットワークにログオンするときに背景で実行する。代わりに、アプリケーションモジュールを実行中のユーザ、またはアプリケーションモジュール自体が、情報がリモートコンピュータネットワークコンピュータ100または別のクライアントコンピュータ101のいずれかに転送される更新をトリガすることができる。加えて、更新は、接続なしで所定の時間量が経過した場合例えば、5日後に、クライアントコンピュータ101にネットワークコンピュータ100と接続することを要求することによって、タイマによってトリガされてもよい。図13A~図13Dに関して、ユーザまたはアプリケーションがデータ例えば、オブジェクト、クラスファイル、バイトハンドラ、またはその他の種類のデータを、リモートコンピュータなどのリモートロケーションに送信することを望む場合、トランスポートセルリスト13552が発信テーブル13550に入れられる。発信テーブル13550は、少なく後も1つのトランスポートセルリストを記憶するファイルを表す識別子を含む一次元テーブルである。図13Dに示すように、各トランスポートセルリスト13552は、例えば固有のホスト名識別13560、送信側コンピュータにとって固有のトランスポートセル識別番号、および少なくとも1つのトランスポートセル13564または13566を含む。各トランスポートセル13564、13566は、例えばオブジェクト、クラスファイル、バイトハンドラなどを表す1個または複数個のバイトの文字列、あるいはそれ以外のデータおよびバイトの型、例えば、バイトがクラスファイルを表すのか、オブジェクトを表すのか、バイトハンドラを表すのか、あるいはそれ以外のデータを表すのかを示すコンテンツ型フィールド13570を含む。発信テーブルはデータベースに記憶され、図14の更新プロシジャが実行中であるときにデータベースゲートウェイ112によってアクセスされる。データは、リモートサイトに転送されると、リモートコンピュータの入信テーブル13551内に記憶される。特にリモートコンピュータで実行中のブラウザは、受信されたトランスポートセルリスト13552の同一のコンテンツを含む少なくとも1つのトランスポートセルリスト13553を含む入信テーブル13551を作成する。同じコンピュータから2回同一のトランスポートセルリストを受信するのを避けるために、ローカルコンピュータおよびリモートコンピュータは履歴テーブル13554を記憶する。この履歴テーブル13554は、トランスポートセルリストが発生した列13556内にホスト名13560および別のコンピュータから受信された各入信テーブル13551に表示されるトランスポートセルリストごとのトランスポートセル識別13562を記憶する。更新プロシジャ完了時に、ブラウザは、入信テーブルに記憶される各トランスポートセルリスト13553のトランスポートセル13564、13566のそれぞれを評価し、該当する場合は、コンテンツ型フィールド13570の値に基づいてバイトハンドラを使用してリモートコンピュータにバイト13568をインストールする。これは、図14に関してさらに完全に後述する。図14は、図13A~図13Dのテーブルを使用してコンピュータの更新を実行する図3のステップ350の例示的な動作のフローチャートである。ステップ14570では、リモートコンピュータへの接続がローカルコンピュータによって開始される。理解を容易にするために、ここではローカルコンピュータおよびリモートコンピュータを参照する。リモートコンピュータ例えば、IPアドレスの場所は、グローバル設定値モジュール106に記憶することができるか、あるいはアプリケーションまたはユーザによって入力することができる。ステップ14572では、通信プロトコルが、ローカルコンピュータとリモートコンピュータ間で交渉され、オプションの認証プロシジャが開始される。様々なプロトコルの例としては、更新サービス、アプリケーションモジュール要求サービス、ステータスチェックサービス、または安全なコマースサービスが挙げられる。認証は、ユーザ名とパスワードおよび/またはローカルコンピュータのホスト名をリモートコンピュータに送信することを含む場合がある。ステップ14574では、リモートコンピュータは、無事終了した認証、または無事に終了しなかった認証の肯定応答を送信する。認証が無事に終了しなかった場合には、プロシジャはステップ14576で終了する。認証が無事に終了した場合には、ステップ14578で、リモートコンピュータの履歴ファイルテーブルにおけるローカルコンピュータのホスト名と関連付けられるトランスポートセルリスト識別がローカルコンピュータに送信される。ステップ14580では、ローカルコンピュータが受信されたトランスポートセルリスト識別を、その発信テーブルにおけるそのトランスポートセルリストのそれぞれのトランスポートセルリスト識別フィールドと比較する。比較後、ステップ14582では、ローカルコンピュータが、リモートコンピュータから受信されたトランスポートセルリスト識別に一致しないすべてのトランスポートセルリストを送信する。リモートコンピュータは、リモートコンピュータの入信テーブルにトランスポートセルリストのそれぞれを記憶し、その履歴テーブルにホスト名フィールドおよびトランスポートセルリスト識別フィールドをログする。ステップ14584では、ローカルコンピュータは、リモートコンピュータのホスト名と関連付けられるトランスポートセルリスト識別を送信する。このプロセスは、リモートコンピュータがローカルコンピュータにデータを送信できるように、いま逆転されている。ステップ14586では、リモートコンピュータが、ローカルコンピュータからの受信されたトランスポートセルリスト識別を比較し、それらを、リモートコンピュータの発信テーブル内のトランスポートセルリスト識別と比較する。比較後、ステップ14588で、リモートコンピュータはローカルコンピュータから受信されたトランスポートセルリスト識別と一致しないすべてのトランスポートセルリストを送信する。ローカルコンピュータは、ローカルコンピュータの入信テーブルの中にトランスポートセルリストのそれぞれを記憶し、その履歴テーブル内にホスト名フィールドおよびトランスポートセルリスト識別フィールドをログする。その後、更新プロセスはステップ14590で完了する。本発明の代替実施形態においては、ローカルコンピュータとリモートコンピュータの両方が、さらに、特定的な宛て先を指定するために、それらの発信テーブル内のトランスポートセルリストのそれぞれにフラグをセットする。例えば、ローカルコンピュータのユーザが新しいアプリケーションモジュールまたはモジュールの一部を購入すると、リモートコンピュータから、リモートコンピュータは、ローカルコンピュータをトランスポートセルリストに含まれるアプリケーションモジュールの許可された受取人として指定するフラグをトランスポートセルリストにセットすることができる。フラグは、トランスポートセルリストがローカルコンピュータに送信されなければならないかどうかを判断するために評価されるブール式例えば、条件も表すことがある。フラグがセットされていない、あるいは式が偽と評価される場合、トランスポートセルリストは送信されない。本発明のさらなる代替実施形態においては、履歴リストのコンテンツ全体が、ローカルコンピュータとリモートコンピュータ間で交換される。それにより、リモートコンピュータは、その識別フィールドおよびホスト名フィールドによって特定された所定のトランスポートセルリストが、ローカルコンピュータによって別のリモートコンピュータからすでに受信されていた場合には、トランスポートセルリストを送信しないことを決定してもよい。トランスポートセルリストが入信テーブルに入れられると、トランスポートセルリストのコンテンツは、ローカルコンピュータとリモートコンピュータの両方にインストールされる。図15A~図15Cは、本発明の例示的なインストレーションプロシジャを示す。トランスポートセルに含まれるバイトをインストールするには、バイトハンドラが使用される。ハンドラマネージャ109は、オブジェクトデータマネージャ108の一部である。本発明の代替実施形態においては、ハンドラマネージャ109は、データベースゲートウェイ112および更新モジュール110の両方と接続する別個のモジュールである。バイトハンドラは、データベース116、117、118内のオブジェクトとして記憶することができ、考えられるコンテンツ型13570ごとに、適切なインストレーションプロシジャを適用するために、ハンドラマネージャ109によって使用される。ステップ15600では、ハンドラマネージャ109が起動される。ステップ15602では、入信テーブル13551内のすべてのトランスポートセルリストを特定するリストが、入信テーブル13551からハンドラマネージャ109によって検索される。それから、第1トランスポートセルリスト13552は、ステップ15604でハンドラマネージャ109によって検索される。ステップ15606および15608では、第1トランスポートセルリスト13352の第1トランスポートセル13564は、ハンドラマネージャによって検索される。ステップ15610では、ハンドラマネージャ109は、第1トランスポートセルリスト内に追加のトランスポートセルがあるかどうかを判断する。ある場合には、プロシジャはステップ15606に戻り、次のトランスポートセルを検索する。ない場合、ハンドラマネージャ109は、追加のトランスポートセルリストがあるかどうか判断する。ある場合には、プロシジャはステップ15604に戻り、次のトランスポートセルリストを検索する。ない場合には、ハンドラマネージャ109は、図15Cに関して後述する、ステップ15614のトランスポートセルのそれぞれをインストールする。図15Bは、図15Aのステップ15608のプロセスの一実施形態をさらに詳細に示す。図15Bに図示するプロセスの目的とは、クラスが第1にインストールでき、バイトハンドラが第2にインストールでき、それ以外のすべてのコンテンツ型が所定された優先順位順でインストールできるように、異なるコンテンツ型のトランスポートセルを分離することである。このプロシジャにより、本発明は、その適切なクラスファイルがインストールされる前に、Java登録商標オブジェクトをインストールしようと試みるのを回避できるようにする。同様に、このプロシジャにより、本発明は、対応するバイトハンドラがインストールされる前に新規コンテンツ型のバイトのインストールを試みるのを回避できるようにする。ここで図15Bを参照すると、ステップ15616で、ハンドラマネージャ109が、コンテンツ型フィールド13570をチェックし、それが型クラスつまり、Java登録商標クラスファイルであるかを判断する。そうである場合にはステップ15618で、ハンドラマネージャ109は、トランスポートセルをデータベースのメモリ内のアンインストールクラストランスポートセルリストに追加する。それ以外の場合、ステップ15620で、ハンドラマネージャ109は、コンテンツ型フィールド13570をチェックし、それが型ハンドラつまり、バイトハンドラであるかどうかを判断する。そうである場合、ステップ15622で、ハンドラマネージャ109は、メモリ内またはデータベース内のトランスポートセルをアンインストールハンドラトランスポートセルリストに追加する。それ以外の場合、ステップ15624では、ハンドラマネージャ109は、コンテンツ型フィールド13570をチェックし、それが、図15Aのインストレーションプロシジャ全体の間に過去のトランスポートセルによって使用された固有の型であるかどうかを判断する。そうである場合、ステップ15628で、ハンドラマネージャ109が、既知の型に対応するメモリ内またはデータベース内のアンインストールトランスポートセルリストにトランスポートセルを追加する。それ以外の場合、ステップ15626では、メモリ内またはデータベース内の新規のアンインストールトランスポートセルリストが、型に対応して作成される。図15Cは、図15Aのステップ15614の例示的な実施形態を示す。ハンドラマネージャ109は、それぞれのコンテンツ型のバイトをインストールする方法を、ハンドラマネージャに知らせるバイトハンドラを参照する。ステップ15630では、ハンドラマネージャ109は、アンインストールクラストランスポートセルリストにトランスポートセルがあるかどうかを判断する。ある場合には、ステップ15634で、第1トランスポートセルが検索される。ステップ15638で、クラスバイトハンドラが検索され、クラスバイトハンドラがトランスポートセルのバイトフィールドに含まれるクラスファイルをインストールする。ステップ15642では、ハンドラマネージャ109が、メモリ内またはデータベース内のアンインストールクラストランスポートセルリストにさらに多くのトランスポートセルがあるかどうかを判断する。アンインストールクラストランスポートリストにトランスポートセルがないつまりステップ15630の結果がノーである場合、あるいはステップ15642のアンインストールクラストランスポートセルリストにこれ以上トランスポートセルがない場合に、ハンドラマネージャ109は、バイトハンドラトランスポートセルリストにトランスポートセルがあるかどうかを判断する。ある場合には、ステップ15636で、第1トランスポートセルが検索される。ステップ15640では、バイトハンドラバイトハンドラが検索され、バイトハンドラバイトハンドラは、トランスポートセルのバイトフィールドに含まれる新規バイトハンドラファイルをインストールする。ステップ15644では、ハンドラマネージャ109は、アンインストールバイトハンドラトランスポートセルリストにさらに多くのトランスポートセルがあるかを判断する。ある場合には、次のトランスポートセルのために、プロシジャはステップ15636に戻される。アンインストールクラストランスポートセルリストにトランスポートセルがないつまり、ステップ15632の結果がノーである場合、あるいはアンインストールバイトハンドラトランスポートセルリストにさらに多くのトランスポートセルがない場合、ステップ15644で、それからステップ15646で、ハンドラマネージャ109が、優先順位単位で残りのバイトハンドラを並べ替える。バイトハンドラの優先順位は、該バイトハンドラの一部としてハンドラマネージャ109によって受信されるフラグに含まれる。並べ替え後、最高の優先順位が指定されるバイトハンドラがステップ15648で検索される。ステップ15650では、選択されたバイトハンドラに対応するアンインストールトランスポートセルリストからすべてのトランスポートセルが検索される。ステップ15652では、第1トランスポートセルが検索され、ステップ15654では、対応するバイトハンドラが検索され、トランスポートセルのバイトフィールドに含まれるバイトをインストールする。ステップ15656では、ハンドラマネージャ109が、対応するアンインストールトランスポートセルリストにさらに多くのトランスポートセルがあるかどうかを判断する。ある場合には、プロシジャは、次のトランスポートセルのためにステップ15652に戻される。ステップ15656の結果がノーである場合には、ステップ15658で、ハンドラマネージャ109は、ステップ15646および15648から追加バイトハンドラがあるかどうかを判断する。ある場合には、次のバイトハンドラがステップ15648で検索される。それ以外の場合、プロシジャはステップ15660で終了する。すべてのバイトのインストレーションが無事に終了した場合、ハンドラマネージャ109は、インストレーションを永久にするためにコミットプロシジャを呼び出す。しかしながら、すべてのバイトのインストレーションが無事に終了しなかった場合には、ハンドラマネージャ109または、ハンドラマネージャ109に命令するユーザが、データベースを、インストレーションプロシジャが開始する前にそれがいた状態に復元するために、ロールバックを呼び出す。図16A~図16Cは、本発明に従って含むことのできるアプリケーションモジュール104の例示的な構造を示す。図16Aでは、アプリケーションモジュール104は、典型的にモデル16702、ビュー16704および制御装置16706を含む少なくとも1つのモードを含む。図16Bでは、一連のモード16700、16710、16712が、グループ16708内でリンクできる。グループ16708内のモード16700、16710、16712をリンクすることによって、リンクされたモード16700、16710、16712のあらゆるモデル、ビューまたは制御装置のどれかが共用できるか、あるいは一方のモードから他方のモードへ転送できる。さらに、図16Cでは、グループ16714が、直列のモード16700、16718、16720、16722およびグループ16716の組み合わせを含み、それにより異なるグループのモードの間でモデル、ビューおよび制御装置を共用する。図17A~図17Jは、本発明の例示的な対話型教育システムアプリケーションモジュールを示す。例示的な対話型教育システムにより、ユーザは、ネットワーク例えば、インターネット、ダイレクトトゥサーバdirect-to-serverダイヤルイン、またはイントラネットまたはウェブサイトから上で受信される更新を介して、教育課程およびその他の関連する情報をユーザのパーソナルコンピュータで受信できるようになる。更新は、ユーザが、ネットワークに接続されている間にアプリケーションを実行するたびに自動的に発生する。その結果、ユーザには、ユーザにより高速でより優れた情報を与え、管理者にユーザのニーズおよび進行に関する即時フィードバックを与える個人化された教育ポートフォリオが提供される。アプリケーションモジュールは、プロファイルボタン17802、ライブラリボタン17804、コースボタン17806、メモボタン17808、用語集ボタン17810、フラッシュカードボタン17812、事後試験ボタン17814、最終試験ボタン17816、点数ボタン17818、ポートフォリオボタン17820、メールボックスボタン17822、およびアプリケーション終了ボタン17824を有するディスプレイ17800を含む。さらに、アプリケーションモジュールのユーザによって現在選択されているコースを示すグラフィック17826が表示される。ユーザが、ネットワークから切り離されている間にアプリケーションモジュールを操作できるようにするために、ネットワーク接続が使用できる場合に、更新プロシジャが起動モジュール102の間に実行される。ネットワーク接続が使用できない場合には、更新プロシジャは、起動モジュール102が起動される次回のために遅延できる。代わりに、起動モジュール102またはアプリケーションモジュール104は、ネットワーク接続の存在についてクライアントを監視し、いったん接続が検出されると更新についてプロンプトを出すことができる。加えて、起動モジュール102またはアプリケーションモジュール104が、更新プロシジャを任意の時点で開始できる。ユーザがプロファイルボタン17802を起動すると、ビューが図17Bに変化し、ユーザがプロファイル/登録ボックス17828に自分の個人情報を入力できるようになる。個人情報がプロファイルに入力されると、ユーザはプロファイル終了ボタン17830を起動し、個人情報は、システムの次の更新230の間に教育サーバに送信するために、クライアントコンピュータの発信テーブル13550に記憶、格納される。ユーザがライブラリボタン17804を起動すると、ビューは図17Cに変化し、ユーザがコースウィンドウ17830からコースを選択できるようにする。選択されたコースの説明は、説明ウィンドウ17832に表示され、コース選択はコース選択ボタン17834を起動することによって最終的にされる。ユーザがコースの選択を希望しない場合には、ユーザは、ユーザを図17Aに戻す取り消しボタン17836を起動することができる。ユーザがメモボタン17808を起動すると、ビューは図17Dに変化し、ユーザがメモウィンドウ17838のメモを見ることができるようにする。ユーザが自分のメモを見るのを終了すると、ユーザはメモ終了ボタン17840を起動し、図17Aに戻る。本発明の例示的な実施形態では、メモは、例えば、コース資料またはフラッシュカードを見ている間にユーザがメモを取ることを所望することが可能なあらゆるウィンドウに位置するメモ入力ボタンから使用できるメモウィンドウに入力できる。ユーザが用語集ボタン17810を起動すると、ビューは図17Eに変化し、ユーザが用語集ウィンドウ17842内の用語集用語のリストをスクロールできるようにする。また、ユーザは、検索ウィンドウ17844に検索項目を入力することによって用語集の用語を検索できる。ユーザは用語集を終了させると、ユーザは用語集終了ボタン17846を起動し、図17Aに戻ることができる。ユーザがフラッシュカードボタン17812を起動すると、ビューは図17Fに変化し、ユーザが、前ボタン17850と次ボタン17582を使用して、任意の用語でフラッシュカード17848を選択できるようにする。ユーザは、用語ボタン17856または定義ボタン17854をそれぞれ起動することによって、用語のディスプレイまたはその定義を切り替えることができる。ユーザはフラッシュカードを終了させると、ユーザは、フラッシュカード終了ボタン17858を起動し、図17Aに戻ることができる。コースの各章の完了後、ユーザは、図17Gにビューを変更し、章の資料の実践試験を運営する事後試験ボタン17814を起動することができる。質問ウィンドウ17860に質問が尋ねられ、前ボタン17866および次ボタン17868を使用して横切ることができる。ユーザは、回答ボタン17864の1つを選択することにより回答ボックス17862に自分の回答を入力する。本発明の代替実施形態では、ユーザは質問に応えて短い回答を入力する。新しい質疑フォーマットは、本発明の更新プロシジャを利用することにより、アプリケーションモジュールに追加できる。新しい質問フォーマットは、トランスポートセルの中で受信され、ハンドラマネージャ109は、アプリケーションモジュールのモデル、ビューおよび制御装置の1つまたはすべてを変更する新規オブジェクトをインストールする。ユーザが事後試験を終了すると、ユーザは試験終了ボタン17870を起動し、図17Aに戻ることができる。一定の質問に費やされた時間の長さなどのそれ以外の統計情報だけではなく、事後試験の結果も、評価のためにサーバに送信される、ローカルコンピュータの発信テーブル13550のトランスポートセルリストにおけるトランスポートセルに格納できる。サーバまたは管理者は、ある特定の質問に欠陥があるかどうかを判断するために、多くのクライアントの質問に対する答えを評価することもできる。それから、サーバは、新しい質問をその発信テーブルに格納することによって、欠陥のある質問を新しい質問で置換するためにクライアントのすべてに更新を送信することができる。ユーザは、好ましくは、コースの章のすべての完了後ビューを図17Hに変更する最終試験ボタン17816を起動することができる。質問は、質問ウィンドウ17872で尋ねられ、前ボタン17880および次ボタン17882を使用して横切ることができる。ユーザは、クロックアイコン17878によって表示される所定の時間期間中に回答ボタン17876の1つを選択することによって、回答ボタン17874に自分の回答を入力する。ユーザが最終試験を終了すると、ユーザは試験終了ボタン17886を起動し、図17Aに戻ることができる。代わりに、ユーザは、結果を保存しないで最終試験を終了するために終了ボタン17884を選択できる。一定の質問に費やされた時間の長さなどのそれ以外の統計情報だけではなく、最終試験の結果も、評価のためにサーバに送信できる。事後試験または最終試験の完了後、ユーザは、点数ボタン17818を起動することができ、ビューは図17Hに変化する。ユーザは、表示方式ウィンドウ17890から表示方式を選択することによって、様々な方法で点数結果を表示することができる。表示方式の例は、トピック単位の点数、目的テキスト単位の点数、および目的グラフ単位の点数である。点数データは、点数ウィンドウ17888に表示される。ユーザが点数データの閲覧を終了すると、ユーザは点数終了ボタン17892を起動し、図17Aに戻ることができる。ユーザがポートフォリオボタン17820を起動すると、ビューは図17Iに変化する。ポートフォリオウィンドウ17894は、ユーザが完了したコースのリストを表示する。ユーザがポートフォリオの表示を終了すると、ユーザは、ポートフォリオ終了ボタン17896を起動し、図17Aに戻ることができる。ユーザはメールボックスボタン17822によって起動できる電子メールボックスを有することもできる。メールボックス機能は、専用のディスプレイを有し、本発明の更新プロシジャを通してメールを送信できる。ユーザがアプリケーションモジュールの終了を希望すると、ユーザは図17Aの終了ボタン17824を選択する。上記説明は、本発明の多様な実施形態の十分かつ完全な開示を提供するが、発明の真の精神および範囲から逸脱することなく多様な変型、代替構造および同等物が利用できる。したがって、前記説明および図は、添付の請求項により定義される発明の範囲を制限すると解釈されるべきではない。"