JP2008539516A - アプリケーションフレームワークのフェージングモデル - Google Patents

アプリケーションフレームワークのフェージングモデル Download PDF

Info

Publication number
JP2008539516A
JP2008539516A JP2008508959A JP2008508959A JP2008539516A JP 2008539516 A JP2008539516 A JP 2008539516A JP 2008508959 A JP2008508959 A JP 2008508959A JP 2008508959 A JP2008508959 A JP 2008508959A JP 2008539516 A JP2008539516 A JP 2008539516A
Authority
JP
Japan
Prior art keywords
phase
sub
program product
computer program
subphase
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
JP2008508959A
Other languages
English (en)
Other versions
JP5021627B2 (ja
Inventor
エフ.アーマド アーシャド
エム.オレニック ブラッド
エー.ジパースキー クレメンス
ジー.ハント デビッド
エル.ヒューズ グレゴリー
クラン シメオン
エー.マニス ウィリアム
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2008539516A publication Critical patent/JP2008539516A/ja
Application granted granted Critical
Publication of JP5021627B2 publication Critical patent/JP5021627B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本発明は、フェージングシステム、およびソフトウェアシステムの方法を含む。本発明のいくつかの実施形態では、フェージングシステムは、多層フェージング空間を含み、そこでは、ソフトウェアシステム内のオペレーションは、フェーズまたはサブフェーズに制約される。オペレーションは、指定されたフェーズにおいてのみ実行される。したがって、大規模で複雑なソフトウェアシステムでは、不適切な結果に至りうるオペレーションは同時に実行されず、特定の順序に従う。本発明は、さらに、ソフトウェア属性としてフェーズ制約をソフトウェアコードに導入するデータ構造体も実現する。

Description

本発明は、アプリケーションフレームワークのフェージングモデルに関する。
一般に、ソフトウェアシステムは、コンピュータ内のプロセスを実行することによりオペレーションを完了する。多くの場合、単一のプロセスに、複数の単純なタスクまたはメソッドが含まれうる。プロセスを正常に完了するために、これらの単純メソッドが特定の順序で完了されなければならないが、それは、1つの単純メソッドから得られた結果は、他方の単純メソッドへの入力であってよいからである。これらのメソッドで、適切な入力を受け取る前に実行しようとする場合、またはメソッドからタイムリーでない結果が得られる場合、プロセス全体が失敗する可能性がある。そのため、ソフトウェアシステム内でのメソッドの実行順序は、非常に重要なものである。
ソフトウェア開発者の場合、メソッドの実行順序は、ソフトウェアコードを開発する際に大きな問題となる。一般的に、ソフトウェアシステムにおけるメソッドは、他のメソッドを呼び出して、それらの他のメソッドが何らかのオペレーションの実行および提供を行うようにすることができる。ソフトウェア開発者は、メソッドの呼び出し順序に注意し、呼び出しの順序に関係なくどのような状況でも動作するコードを作成しなければならない。しかし、残念なことに、どのような条件でも動作する適応性の高い複雑なコードを開発することは、極めて困難である。ソフトウェアアプリケーションが大規模化し、複雑度を増すと、呼び出しの可能な順序付けが爆発的に増大し、メソッドの呼び出しの順序付けを正しく実装することが非常に困難になる。ソフトウェア開発者にのしかかる負担は、プロセスが適切に実行されるために返される結果が特定の順序で到来しなければならない複数の異なるメソッドを呼び出す複数のメソッドがある場合に、無視できないくらいの規模になりうる。同様に、ソフトウェア開発者は、メソッドでさまざまな動作シナリオにおいてさまざまな呼び出しを行う適応性の高いコードをテストすることが困難である。
本発明がなされたのは、以上の考慮事項および他の考慮事項に関してである。
この「発明の開示」では、以下の「発明を実施するための最良の形態」でさらに説明される簡素化された形式の概念の選択を導入する。この「発明の開示」は、請求対象の鍵となる特徴または本質的特徴を明示することを意図しておらず、また請求対象の範囲を確定する補助として使用されることも意図していない。
本発明は、コンピュータシステム全体を通してソフトウェアメソッドの実行を制約するようにするものである。一般的に、本発明は、ソフトウェアメソッドの実行を2つまたはそれ以上のフェーズに制約する多層フェージングモデル(multi−tiered phasing model)を構成するものであり、それぞれのフェーズは場合によっては2つまたはそれ以上のサブフェーズを有する。フェーズは、ソフトウェアシステムのメソッドをパーティション分割する動作状態である。1つのパーティション内のすべてのメソッドは、特定のフェーズでの実行のみに制約される。フェーズドメイン(phase domain)は、ソフトウェアコンポーネントの集合に対しフェーズ空間(phase space)内の共通フェージング(common phasing)に関する同意が得られている場合に作成される。フェーズ空間により、フェーズの有効なシーケンスが決定される。本発明のいくつかの実施形態では、フェーズ空間は、ソフトウェアコンポーネントに関して有効なフェーズおよび有効なフェーズ遷移を決定する有限有向グラフである。
本発明のいくつかの実施形態では、ソフトウェアコンポーネントは、フェーズ制約(phase constraint)に左右される。フェーズ制約は、特定のソフトウェアプログラムのコンテキストにおいて有効なフェーズを制限する静的制約である。フェーズ制約は、ソフトウェアプログラムセクションに適用され、これにより、そのソフトウェアプログラムセクションが実行される場合に、実行スレッドは必ず、制約を受け入れるフェーズにあることになる。フェーズ制約を適用するために、ソフトウェアコンポーネントは、フェーズ制約属性を形成するデータ構造体を備えることができる。フェーズ制約属性は、ソフトウェアコンポーネントのランタイムメタデータの一部であってよい。
本発明のいくつかの実施形態では、コンピュータ可読媒体は、第1のフェーズドメインを占有する複数のコンポーネントを含む。いくつかの実施形態では、ソフトウェアコンポーネントの第1の部分集合は、第1のサブフェーズドメインを占有し、ソフトウェアコンポーネントの第2の部分集合は、第2のサブフェーズドメインを占有する。本発明のいくつかの実施形態では、サブフェーズとは、親フェーズの下でグループ分けされたフェーズのことである。
本発明は、一実施形態において、ソフトウェアシステム内で複数のメソッドの実行を複数のフェーズにパーティション分割する方法を提示する。メソッドは、まず、場合によっては2つまたはそれ以上のサブフェーズを有する第1のフェーズに遷移する。メソッドの第1の集合の実行は、第1のフェーズに制約される。次いで、コンピュータシステムは、1つまたは複数の他のフェーズに遷移し、そこで、メソッドの1つまたは複数の他の集合の実行が1つまたは複数の他のフェーズに制約される。最後に、コンピュータシステムは、1つまたは複数の他のフェーズに遷移する。
本発明のいくつかの実施形態では、ソフトウェアシステムも提示される。ソフトウェアシステムは、ソフトウェアシステム全体に対するフェーズの集合を制御するマスタディレクタコンポーネント(master director component)を備える。ディレクタは、フェーズ空間内のフェーズの遷移を制御するソフトウェア構成要素である。いくつかの実施形態では、1つまたは複数のサブディレクタが、マスタディレクタに登録され、サブフェーズの1つまたは複数の集合を制御する。1つまたは複数のコンポーネントが、1つまたは複数のディレクタに登録され、1つまたは複数のフェーズにおいてのみメソッドを実行するよう制約される。
本発明は、コンピュータプロセス、コンピューティングシステム、またはコンピュータプログラム製品などの製造品として実装されうる。コンピュータプログラム製品は、コンピュータシステムにより、またコンピュータプロセスを実行する命令からなるコンピュータプログラムを符号化することにより、読み取り可能なコンピュータ記憶媒体であってよい。コンピュータプログラム製品は、さらに、コンピューティングシステムにより、またコンピュータプロセスを実行する命令からなるコンピュータプログラムを符号化することにより、読み取り可能な搬送波上の伝搬信号であってもよい。
本発明およびその改善をより完全に理解するには、以下で簡単に説明した付属の図面、本発明の実施形態の以下の詳細な説明、および付属の請求項を参照するとよい。
そこで、本発明の例示的な実施形態が示されている、付属の図面を参照しつつ、本発明についてさらに詳しく説明する。しかし、本発明は、多くの異なる形態で具現化することができ、本明細書で述べられている実施形態に限定されると解釈すべきではない。むしろ、これらの実施形態は、本開示が徹底して完全なものとなるように、また当業者に本発明の範囲が全部伝達されるように用意されている。
一般に、フェージングは、ソフトウェアコンポーネントに多層フェージングモデルを適用することによりコンピュータシステム内のソフトウェアメソッドの実行を制約する。ソフトウェアコンポーネントは、クラス、オブジェクト、メソッド、またはコンピュータシステム内にある他のソフトウェアコード構成要素とすることができる。フェーズは、ソフトウェアコンポーネントの集合により同時に、また集合的に共有される動作状態である。コンピュータシステムは、マスタフェージングモデルとも呼ばれる、最上位フェージングモデルを実行し、1つまたは複数のサブフェーズはマスタフェージングモデルのフェーズのうちの1つまたは複数において生じる。コンピュータシステム内のオペレーションは、フェーズまたはサブフェーズの集合に制約される。
多層フェージングモデル100の例示的な一実施形態は、図1に示されている。多層フェージングモデルは、3つのフェーズ102、104、および106を含む第1またはマスタフェーズモデルを有する。マスタフェーズは、矢印116により示される順序で生じる。2つのサブフェーズ、サブフェーズ1 108とサブフェーズ2 110は、フェーズ1 102において生じる。それに加えて、さらに2つのサブフェーズ、サブフェーズ2aとサブフェーズ2bは、フェーズ2において生じる。そのため、フェージングモデル100は、サブフェーズが他のフェーズまたはサブフェーズにおいて生じるフェーズの多層集合を表す。これ以降、フェーズの説明は、サブフェーズにもあてはめることができる。
それぞれのソフトウェアコンポーネントは、特定のフェーズ内で動作するように制約される。制約は、ソフトウェアメソッドが制約されるフェーズにおいてのみ、実行または呼び出されるソフトウェアメソッドのそれぞれに課される。コンフリクトまたは相反する結果を生じうるソフトウェアメソッドは、異なるフェーズに制約され、そこでは、ソフトウェアメソッドは、現在のフェーズから正規に呼び出されることはできない。そのようなものとして、それぞれのソフトウェアメソッドは、相反するタスクを遂行するメソッド間でコンフリクトを起こすことなく知られている様式で実行される。すべてのメソッドは、ソフトウェアシステムが現在のフェーズ制約に適合する状態であることが知られるように特定のフェーズ制約の下で実行される。
本発明を実装できる好適なコンピューティングシステム環境200の一実施例が図2に示されている。コンピューティングシステム環境200は、好適なコンピューティング環境の一例にすぎず、本発明の用途または機能性の範囲に関する制限を示唆する意図はない。コンピューティング環境200は、典型的な動作環境200に例示されている1つのコンポーネントまたはその組み合わせに関係する何らかの依存関係または要求条件がその環境にあるものと解釈すべきでない。
本発明は、他の数多くの汎用または専用コンピューティングシステム環境または構成で動作する。本発明とともに使用するのに適していると思われるよく知られているコンピューティングシステム、環境、および/または構成の例として、限定はしないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記システムまたはデバイスを含む分散コンピューティング環境などがある。
本発明は、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的背景状況において説明することができる。一般に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。また、本発明は、通信ネットワークを通じてリンクされているリモート処理デバイスによりタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールをメモリ記憶デバイスなどのローカルとリモートの両方のコンピュータ記憶媒体に配置できる。
図2を参照すると、本発明を実装する例示的なコンピュータシステム200は、コンピュータ210の形態の汎用コンピューティングデバイスを備えている。コンピュータ210が備えるコンポーネントとしては、限定はしないが、演算処理装置220、システムメモリ230、およびシステムメモリ230を備えるさまざまなシステムコンポーネントを演算処理装置220に結合するシステムバス221などがある。システムバス221は、メモリバスまたはメモリコントローラ、周辺機器バス、およびさまざまなバスアーキテクチャを使用するローカルバスを含む数種類のバス構造のうちのいずれでもよい。例えば、限定はしないが、このようなアーキテクチャとしては、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびMezzanineバスとも呼ばれるPeripheral Component Interconnect(PCI)バスがある。
コンピュータ210は、典型的には、さまざまなコンピュータ可読媒体を備える。コンピュータ可読媒体は、コンピュータ210によってアクセスできる入手可能な媒体であればどのような媒体でもよく、揮発性および不揮発性媒体、取り外し可能および取り外し不可能媒体を含む。例えば、限定はしないが、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造体、プログラムモジュール、またはその他のデータなどの情報を格納する方法または技術で実装される揮発性、不揮発性、取り外し可能、および取り外し不可能な媒体を含む。コンピュータ記憶媒体としては、限定はしないが、RAM、ROM、EEPROM、フラッシュメモリまたはその他のメモリ技術、CD−ROM、デジタル多目的ディスク(DVD)またはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶デバイス、または所望の情報を格納するために使用することができ、しかもコンピュータ210によりアクセスできるその他の媒体がある。通信媒体は、典型的には、コンピュータ可読命令、データ構造体、プログラムモジュール、または搬送波もしくはその他のトランスポートメカニズムなどの変調データ信号によるその他のデータを具現するものであり、任意の情報配信媒体を含む。「変調データ信号」という用語は、信号内に情報を符号化するような方法で特性のうちの1つまたは複数が設定または変更された信号を意味する。例えば、限定はしないが、通信媒体としては、有線ネットワークまたは直接配線接続などの有線媒体、および、音響、RF、赤外線、およびその他の無線媒体などの無線媒体がある。上記のいずれの組み合わせもコンピュータ可読媒体の範囲に収まらなければならない。
システムメモリ230は、読み取り専用メモリ(ROM)231およびランダムアクセスメモリ(RAM)232などの揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動時などにコンピュータ210内の要素間の情報伝送を助ける基本ルーチンを含む基本入出力システム233(BIOS)は、典型的には、ROM231に格納される。RAM232は、典型的には、演算処理装置220に直接アクセス可能な、および/または演算処理装置220によって現在操作されている、フェージングモジュール100などの、データおよび/またはプログラムモジュールを格納する。例えば、限定はしないが、図2は、オペレーティングシステム234、アプリケーションプログラム235、その他のプログラムモジュール236、およびプログラムデータ237を例示しており、フェージングモデル100などのフェージングモデルであれば、RAM232に格納されるか、またはRAM232から実行されるすべてのソフトウェアの実行の順序を決めるように動作する。
コンピュータ210はさらに、その他の取り外し可能/取り外し不可能な揮発性/不揮発性コンピュータ記憶媒体を備えることもできる。一例にすぎないが、図2は、ハードドライブなどの取り外し不可能な不揮発性磁気媒体241に対して読み書きをする取り外し不可能な不揮発性メモリインターフェイス240を備えるコンピュータ210を例示している。コンピュータ210は、さらに、磁気ディスクなどの取り外し可能な不揮発性媒体252に読み書きする、ディスクドライブなどのデバイス251に読み書きする不揮発性メモリインターフェイス250も備えることができる。それに加えて、コンピュータ210は、CD−ROMまたは他の光媒体などの取り外し可能な不揮発性光ディスク256に読み書きする光ディスクドライブ255を備えることができる。例示的な動作環境において使用できる他の取り外し可能/取り外し不可能な揮発性/不揮発性コンピュータ記憶媒体としては、限定はしないが、磁気テープカセット、フラッシュメモリカード、デジタル多目的ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどがある。ハードディスクドライブ241は、典型的には、インターフェイス240などの取り外し不可能メモリインターフェイスを介してシステムバス221に接続され、磁気ディスクドライブ251および光ディスクドライブ255は、典型的には、インターフェイス250などの取り外し可能メモリインターフェイスによりシステムバス221に接続される。
図2に例示されている上記のドライブおよび関連コンピュータ記憶媒体は、コンピュータ210用のコンピュータ可読命令、データ構造体、プログラムモジュール、およびその他のデータを格納する機能を備える。例えば、ハードディスクドライブ241は、オペレーティングシステム244、アプリケーションプログラム245、その他のプログラムモジュール246、およびプログラムデータ247を格納するものとして例示されているが、これらは、オペレーティングシステム234、アプリケーションプログラム235、その他のプログラマモジュール236、およびプログラムデータ237と同じであっても異なっていてもよい。オペレーティングシステム244、アプリケーションプログラム245、その他のプログラムモジュール246、およびプログラムデータ247に対しては、ここで、異なる番号を割り当てて、最低でも、それらが異なるコピーであることを示している。ユーザは、キーボード262、およびマウス、トラックボール、またはタッチパッドと一般に呼ばれるポインティングデバイス261などのユーザ入力デバイスに接続されているユーザ入力インターフェイス260を介してコンピュータ210にコマンドおよび情報を入力できる。他の入力デバイス(図に示されていない)としては、マイク、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどがある。これらの入力デバイスおよびその他の入力デバイスは、システムバス221に結合されているユーザ入力インターフェイス260を通じて演算処理装置220に接続されることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインターフェイスおよびバス構造により接続されることも可能である。
モニタ291またはその他の種類の表示デバイスも、ビデオインターフェイス290などのインターフェイスを介してシステムバス221に接続される。モニタ291に加えて、コンピュータ210は、さらに、スピーカ297およびプリンタ296などの他の周辺出力デバイスも備えることができ、これらは出力周辺機器インターフェイス295を介して接続することができる。
コンピュータ210は、リモートコンピュータ280などの1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク接続環境で動作することができる。リモートコンピュータ280は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の共通ネットワークノードでもよく、典型的には、コンピュータ210に関係する上述の要素の多くまたはすべてを含むが、メモリ記憶デバイス281だけが図2に例示されている。図2に示されている論理接続は、ローカルエリアネットワーク(LAN)271およびワイドエリアネットワーク(WAN)273を含むが、無線ネットワークなどの他のネットワークを含むこともできる。このようなネットワーキング環境は、オフィス、企業全体にわたるコンピュータネットワーク、イントラネット、およびインターネットでは一般的である。
LANネットワーキング環境で使用される場合、コンピュータ210は、ネットワークインターフェイスまたはアダプタ270を介してLAN271に接続される。WANネットワーキング環境で使用される場合、コンピュータ210は、典型的には、インターネットなどのWAN273上で通信を確立するためモデム272またはその他の手段を備える。モデム272は、内蔵でも外付けでもよいが、ユーザ入力インターフェイス260またはその他の適切なメカニズムを介してシステムバス221に接続されうる。ネットワーク接続環境では、コンピュータ210またはその一部に関して示されているプログラムモジュールは、リモートメモリ記憶デバイス281に格納されうる。例えば、限定はしないが、リモートアプリケーションプログラム285は、メモリデバイス281に置かれている。図に示されているネットワーク接続は例示的であり、コンピュータ間の通信リンクを確立するのに他の手段が使用可能であることは理解されるであろう。
図1を再び参照すると、フェーズ1 102は、サブフェーズ1 108およびサブフェーズ2 110の上位フェーズであるスーパーフェーズである。さらに2つのサブフェーズ、サブフェーズ2a 112とサブフェーズ2b 114は、フェーズ2 110において生じる。同様に、サブフェーズ2 110は、サブフェーズ2a 112およびサブフェーズ2b 114のスーパーフェーズである。フェーズまたはサブフェーズは、サブフェーズを持つことができる。多層フェージングモデルにおいては、サブフェーズのレベル数には制限がない。それに加えて、フェーズ空間内には少なくとも2つのフェーズがなければならないが、2つのフェーズよりも上のフェーズの数に関しては制限はない。それに加えて、スーパーフェーズ内にサブフェーズがある場合、少なくとも2つのサブフェーズがなければならないが、2つのサブフェーズよりも上にあるスーパーフェーズにおいて生じるサブフェーズの数に制限はない。サブフェーズのどのような集合も、スーパーフェーズにおいて1回または複数回、循環して辿ることができる。
フェーズモデル100は、フェーズ空間を例示している。フェーズ空間は、有効なフェーズ(グラフの節点)および有効なフェーズ遷移(グラフの辺)を決定する有限有向グラフである。したがって、フェーズ空間は、フェーズの有効なシーケンスを決定する。フェーズ空間100は、フェーズ集合フェーズ1 102、フェーズ2 104、およびフェーズ3 106に関して定義される。フェーズ空間100は、さらに、3つのフェーズ遷移118a、118b、および118cも有する。フェーズ遷移は、遷移前フェーズを共有するすべてのソフトウェアコンポーネントによりフェーズの同時変化が生じる場合を表す。
ソフトウェアコンポーネントがフェーズ空間を共有する場合、それらのソフトウェアコンポーネントは、フェーズドメインの一部である。フェーズドメインは、特定のフェーズ空間により定義される共通フェージングモデルに関する同意が得られているソフトウェアコンポーネントの集合である。例えば、マスタフェーズ102、104、および106を有するマスタフェーズ空間により制約されることが同意されているすべてのソフトウェアコンポーネントは、マスタフェーズドメインの一部である。そのため、マスタフェーズドメイン内のソフトウェアコンポーネントに関連するすべてのソフトウェアコンポーネントは、マスタフェーズ102、104、および106のうちの少なくとも1つに関連するフェーズ制約を含む。
フェーズ制約は、特定のプログラムのコンテキストにおいて有効なフェーズを制限する静的制約である。特に、制約は、プログラムセクションに適用することができ、これにより、そのプログラムセクションが制約を受け入れるフェーズにおいてのみ実行されることを主張する。一実施形態では、フェーズ制約は、[フェーズ1]などと、属性を角括弧で囲んで書かれる。このデータ構造体について、以下で詳述する。
1つまたは複数のフェーズドメインを占有する1つまたは複数のコンポーネントを有するコンピュータ環境300が、図3に示されている。マスタディレクタ302は、マスタフェーズ空間の遷移動作および確定(establishment)を制御する。コンピュータ環境内のすべてのコンポーネントは、マスタフェーズドメイン300の一部であるが、1つまたは複数のサブフェーズドメインを占有しうる。フェーズドメイン300の作成を有効にするために、プログラム作成者は、フェーズ空間、フェーズ空間上のフェーズ遷移を実行するためのポリシー、およびフェーズドメインの境界をまたがるメッセージを処理するためのポリシーを選択する必要がある。
フェーズドメイン300は、多層フェーズ空間により特徴付けられる。本発明の実施形態では、コンポーネント1 304などの1つまたは複数のコンポーネントがマスタディレクタ302に登録される。コンポーネント1 304は、ソフトウェアコンポーネントまたはメソッドを含む、任意の種類のソフトウェア構成要素を表す。ソフトウェアコンポーネント304は、マスタフェーズ空間内のフェーズの1つに制約される。
他の実施形態では、サブディレクタ1 306およびサブディレクタ2 308などの1つまたは複数のサブディレクタが、マスタディレクタ302に登録される。サブディレクタは、1つまたは複数の異なるフェーズ空間を備える1つまたは複数の他のフェーズドメインを制御する。そのため、フェーズドメイン300は、1つまたは複数の入れ子のフェーズドメインを有する。サブディレクタ1 306に登録されたコンポーネント2 310などのすべてのコンポーネントは、サブフェーズ空間内、およびマスタフェーズ空間の1または複数のマスタフェーズ内の、1つまたは複数のサブフェーズのうちの1つまたは複数に制約される。一実施形態では、サブディレクタにより制御されるサブフェーズドメインは、単一のマスタフェーズ内で動作する。サブフェーズのオペレーションは、単一のマスタフェーズにおいて繰り返し実行できる。
本発明のいくつかの実施形態では、サブディレクタ2などのサブディレクタは、サブディレクタ3などの他のサブディレクタを登録し、さらに入れ子になったサブフェーズドメインを生成する。いくつかの実施形態では、サブディレクタ2 308は、コンポーネント3 312およびサブディレクタ3 314のオペレーションを制御する。さらに他の実施形態では、サブディレクタ3 314などのディレクタは、コンポーネント4 316およびコンポーネント5 318などの複数のコンポーネントを制御する。それぞれのサブディレクタは、独自のフェーズを有するフェーズ空間を制御することができる。したがって、サブディレクタ1 306は、第1のサブフェーズ空間を操作するが、サブディレクタ3 314は、第2のサブフェーズ空間を操作する。2つのフェーズ空間が相互作用しない場合、それらのフェーズ空間は、直交空間と呼ばれる。直交フェーズ空間を組み合わせることで、カーテシアン(Cartesian)フェーズ空間を形成することができ、これを使用して単一の積に対するフェーズドメインを形成することができる。基礎となるフェーズ集合は、直交フェーズ集合のデカルト積(Cartesian product)であり、有効なフェーズ遷移は、直交フェーズ集合に対する有効な遷移のデカルト積でもある。
本発明の実施形態におけるディレクタは、論理クロックである。ディレクタは、ハードウェアシステムのクロックと似た複数のフェーズを循環して辿る。それぞれのフェーズ遷移において、ディレクタは、フェーズドメイン内のすべてのソフトウェアコンポーネントについてフェーズを同時に変更する。一実施形態では、サブディレクタは、サブフェーズドメイン内のサブフェーズを同時に変更することができる。論理クロックは、フェーズ、またはそのフェーズに制約されたサブフェーズ内で実行しているオペレーションに制約されているオペレーションの完了を待つ。
マスタフェーズドメインに使用することができるフェーズ空間400の例示的な一実施形態が、図4に示されている。フェーズ空間400は、3つのフェーズを有する。読み取り要求フェーズ402において、データの読み書きの要求、またはソフトウェアシステムにおける他のソフトウェアコマンドまたは要求は、次のフェーズに入るまでキュー内に置かれる。一実施形態では、要求された特定のコンフリクトしていないメソッドのみが、次のフェーズで実行されるが、他のコマンドは、他のフェーズまたはフェーズの次のサイクルを待つ。
更新フェーズ404では、コマンドおよび要求を、該当するソフトウェアコンポーネントに送る。本発明のいくつかの実施形態では、ソフトウェアコンポーネントは、更新フェーズ404において、コマンドもしくは要求を履行する。一実施形態では、更新フェーズ404は、更新フェーズ404において生じるサブフェーズ空間500を有する。例示的なサブフェーズ500が図5に示されており、これについて以下で説明する。一実施形態では、更新フェーズ404は、データ層に対するサブフェーズをトリガする。言い換えると、データへの書き込みの要求は、更新フェーズ404のサブフェーズにおいて実行される(accomplish)。
第3のフェーズである、再有効化フェーズ406は、更新フェーズ404において処理されない他のメソッドの送り先を決め、実行する。一実施形態では、データを取り出すすべての要求は、再有効化フェーズ406において完了する。例えば、データが更新フェーズ404において更新された後、すべてのソフトウェアコンポーネントに、データ変更が発生したことが通知され、通知を受けたソフトウェアコンポーネントは、その更新されたデータを取り出す。一実施形態では、再有効化フェーズ406は、サブフェーズ600を操作する。サブフェーズ空間600の例示的な一実施形態が図6に示されており、これについて以下で説明する。
フェーズを変更するために、フェーズ空間400は、フェーズ遷移に進む。例示的な実施形態では、3つのフェーズ402、404、および406の間の遷移を表す3つのフェーズ遷移408a、408b、および408cがある。上で説明されているように、フェーズ遷移は、ディレクタ302などのディレクタが、フェーズクロックを変更する時点であり、フェーズドメイン内のすべてのソフトウェアコンポーネントに対するフェーズは同時に変わる。
フェーズドメイン内で、現在のフェーズまたは新しいフェーズへの遷移をソフトウェアコンポーネントに警告または通知する動作が行われることがある。一実施形態では、ディレクタは、すべてのソフトウェアコンポーネントにフェーズを通知する。他の実施形態では、要求側メソッドは、ディレクタにフェーズを要求する。本発明のいくつかの実施形態では、遷移通知が、フェーズドメイン内の1つまたは複数のコンポーネントに送られる。一実施形態では、遷移通知は、現在のフェーズにある間、または次のフェーズの開始時に生じる。他の実施形態では、通知プロセスに別のフェーズが使用される。例えば、フェーズ空間400であれば、遷移408a、408b、および408cに位置する3つの通知フェーズを有し、これらは、フェーズドメイン内のソフトウェアコンポーネントに通知を行う。
更新フェーズ404の例示的なサブフェーズ空間500が、図5に示されている。サブフェーズ500は、いくつかの実施形態では、データ層に使用される。言い換えると、データを共有データ構造体に書き込むメソッドは、データサブフェーズ空間500のサブフェーズの1つに制約される。一実施形態では、そのデータを共有するすべてのソフトウェアコンポーネントは、同意フェーズ502における変更をコミットすること、またはアボートすることに同意する。変更は、コミットまたはアボートフェーズ504においてコミットまたはアボートされる。
他の実施形態では、同意フェーズおよびコミットまたはアボートフェーズは、両方とも、「コミットまたはアボート」サブフェーズ504のサブフェーズであり、サブフェーズ空間500は、同意サブフェーズ502の代わりにマークフェーズ502を有する。ここでは、データ変更は、コミットまたはアボートフェーズ504において行われ、そのデータを使用するすべてのソフトウェアコンポーネントは、マークフェーズ502において更新対象としてマークされる。ソフトウェアコンポーネントをマークするというのは、適切な後のフェーズにおいて更新されたデータを取り出すようにソフトウェアコンポーネントに合図するソフトウェアコンポーネントにフラグをたてることである。一実施形態では、マークされたソフトウェアコンポーネントは、再有効化フェーズ406においてデータを取り出す。他の実施形態では、マークフェーズ502は、マークサブフェーズと最終マークサブフェーズの2つのサブフェーズを有する。ここで、そのデータを使用するソフトウェアコンポーネントは、マークサブフェーズにおいてマークされ、最終マークサブフェーズにおいてデータを取り出す。
再有効化フェーズ406において生じる、他の例示的なサブフェーズ空間600が、図6Aに示されている。サブフェーズ空間600に制約されている、ソフトウェア構成の例示的な変更は、図6Bに示されている。サブフェーズ空間600は、プラグ&プレイオペレーション用のサブフェーズを備えている。プラグ&プレイサブフェーズ空間600は、プレイサブフェーズ604とプラグサブフェーズ602の2つのフェーズを有する。一般に、プラグサブフェーズ602において、ソフトウェアコンポーネントの合成および構成の確定、変更、または削除が行われるが、プレイタイム機能は実行されない。同様に、プレイサブフェーズ604において、ソフトウェアコンポーネントの確定された合成または構成が、通常の機能に使用されるが、合成または構成の態様は、いっさい、確定、変更、または削除されない。
モジュール再構成の例示的な一実施形態が、図6Bに示されている。この実施形態では、ソフトウェアモジュールは、第1の構成606を有する。ユーザ入力要求などの何らかのアクションが実行された後、ソフトウェアモジュールは、第2の構成608に変わる。当業者であれば理解するように、ソフトウェアモジュールは、第2の構成608と比較して第1の構成606においては異なる動作をする。そのため、プレイフェーズで実行されるメソッドがソフトウェアモジュールとやり取りすることなく、再構成が実行されなければならない。本発明のいくつかの実施形態では、ソフトウェアインスタンスは、プラグサブフェーズ602において、初期化されるか、接続されるか、または切断され、プロパティが設定される。いくつかの実施形態では、他のサブフェーズが、プラグサブフェーズ602で実行されるオペレーションの順序を決めるのを助ける。
一実施形態では、プラグサブフェーズ602は、さらに複数のサブフェーズを有する。コンストラクトサブフェーズ610は、知られているクラスをインスタンス化するか、ソフトウェアコンポーネントを呼び出すか、または既存のインスタンス上のインターフェイスを使用してクローンまたは特殊化された派生インスタンスを取得することにより新しいソフトウェアインスタンスを作成する。構成サブフェーズ612は、インスタンス間の接続の追加または削除を行う。最後に、初期化サブフェーズ614は、プロパティを設定し、適切に接続されたインスタンス間のネゴシエーションを要求する。プラグサブフェーズ602のサブフェーズは、ここで示されたものから逸脱する場合がある。それに加えて、プレイサブフェーズ604も、複数のサブフェーズを含みうる。
他のフェージング空間が考えられる。例えば、ユーザインターフェイス変更用のサブフェーズ空間が考えられる。ユーザインターフェイスサブフェーズ空間では、無効化サブフェーズが構造体を構築するメソッドの実行を許可することができる。次いで、描画サブフェーズにおいて、組み立てられた構造が描画される。他のフェーズ空間は、当業者であれば理解するように他の種類のオペレーションに使用することができる。それに加えて、当業者であれば、上に示した例示的なフェーズ空間が、フェーズまたはサブフェーズの数、層またはレベルの数、およびフェーズまたはサブフェーズの種類に関して変更されうることを理解するであろう。そのようなものとして、本発明は拡張可能である。一実施形態では、新しいスーパーフェーズは、既存のフェーズ空間上に重ねられる。他の実施形態では、新しいフェーズが、既存のフェーズ空間に加えられる。さらに他の実施形態では、サブフェーズ空間のさらに多くのサブフェーズまたは新しい層が、既存のフェーズ空間に加えられる。
コードのアイテムの実行を制約するフェーズ制約を有するデータ構造体700の例示的な一実施形態が、図7に示されている。データ構造体700は、コード要素である。どのような種類のコードも、フェーズ制約を持つことができる。フェーズ制約702は、メソッド704の上のほうに示されている。フェーズ制約702は、メソッド704のオペレーションを、フェーズ制約で指定されたフェーズ、この実施形態ではフェーズ「実行」に制約する。そのため、メソッド704は、「実行」フェーズまたは「実行」サブフェーズにおいてのみ実行される。
本発明のいくつかの実施形態では、データ構造体は、ソフトウェアコンポーネントおよび実行されるオペレーションの種類に依存する形式の制約を含む。一実施形態では、制約は、呼び出し制約である。呼び出し制約は、メソッドの呼び出しを、指定されたフェーズに制約する。したがって、他のソフトウェアコンポーネントまたは同じソフトウェアコンポーネントにおけるメソッドの実行は、それらのメソッドが指定されたフェーズのみにおいて起動されるように制限することにより制約される。他の実施形態では、制約は、コンストラクタ制約である。コンストラクタは、ソフトウェアコンポーネントをインスタンス化する特別な形式のメソッドである。したがって、ソフトウェアコンポーネントのインスタンス化は、図6Aのコンストラクトサブフェーズ610で説明されているような指定されたフェーズに制約される。他の実施形態では、制約は、参照制約である。参照制約は、ソフトウェアコンポーネントのクラス全体およびそのクラスのすべてのプリミティブオペレーションを制約する。例えば、インターフェイスに課される参照制約は、図6Aで接続サブフェーズ612とともに説明されているようなソフトウェアモジュール間の接続を制限する。
この制約は、ターゲットソフトウェアコンポーネントに割り当てることが可能なソフトウェアコード内のフェーズ制約属性により表される。本発明のいくつかの実施形態では、フェーズ制約属性は、クラス全体に割り当てられ、継承可能である。したがって、子コンポーネントは、親コンポーネントから制約を継承する。いくつかの実施形態では、フェージングスキームは、複数のフェーズ制約属性を同じターゲットに付与する。したがって、ソフトウェアターゲットは、複数のフェーズ制約の結合により制約される。
それぞれの制約は、指定されたフェーズのレベルに関連する「タイプ」に対する制約である。そのようなものとして、スーパーフェーズを指定する制約は、「スーパーフェーズ」に対する制約である。サブフェーズを指定する制約は、「サブフェーズ」に対する制約である。サブフェーズであるタイプに対する制約は、「スーパータイプ」に対するすべての制約の合併に対する制約である。タイプに対する制約間の関係は、コンパイラによって使用されるか、または実行時に、異なるソフトウェアコンポーネント間の制約関係の有効性をチェックするために使用される。
制約の強制は、実行時またはコンパイル時に行うことができる。コンパイル時には、タイプに対する制約をチェックすることができる。コンパイラは、タイプに対する制約およびサブタイプに対する制約を、サブタイプに対する制約を持つメソッドを呼び出すタイプに対する制約を有するメソッドの健全性規則の集合と突き合わせてチェックすることができる。制約スキームは、サブタイプに対する制約がタイプに対する制約と同じか、または弱い場合、例えば、タイプに対する制約がプラグフェーズ602を指定し、サブタイプに対する制約が初期化サブフェーズ614を指定する場合に有効である。この実施形態では、初期化サブフェーズ制約614は、プラグサブフェーズ602内で実行され、したがって、弱い制約である。制約スキームは、サブタイプに対する制約がタイプに対する制約と互いに素である場合、例えば、タイプに対する制約がプレイサブフェーズ604を指定し、サブタイプに対する制約が反対のプラグサブフェーズ602を指定する場合に無効である。制約スキームは、サブタイプに対する制約がタイプに対する制約よりも強いか、またはその制約と重なる場合、例えば、タイプに対する制約がプラグフェーズ602を指定し、サブタイプに対する制約が初期化サブフェーズ614を指定する場合、有効であるが、何らかの動的チェックを受けなければならない。この実施形態では、フェーズドメインがプラグサブフェーズ602と初期化サブフェーズ614の両方において現在動作している場合、呼び出しスキームは有効である。しかし、ドメインが2つのフェーズのうちの一方に含まれない場合、スキームは無効である。他の健全性規則も考えられ、本発明に組み込まれる。
多層フェージングドメイン内のコンピュータ環境を動作させるためのメソッド800の例示的な一実施形態が、図8Aおよび図8Bに示されている。立ち上げ後、遷移オペレーション802は、要求フェーズ402などの第1のフェーズに遷移する。一実施形態では、マスタディレクタ302などのマスタディレクタが開始される。一実施形態では、マスタフェーズのうちの1つに制約されている、コンポーネント304などのコンポーネントは、マスタディレクタに登録される。マスタディレクタは、フェーズクロックを開始し、論理時間を循環させてフェーズ空間400などのフェーズ空間内の複数のフェーズを辿る。
判定オペレーション804は、コンポーネント304などのソフトウェアコンポーネントがマスタフェーズの第1のフェーズに制約されるかどうかを判定する。ソフトウェアコンポーネントが第1のフェーズに制約される場合、実行オペレーション806は、第1のフェーズにおいてソフトウェアコンポーネントを実行する。実行すべきソフトウェアコンポーネントがない場合、またはソフトウェアコンポーネントの実行中に、判定オペレーション808は、第1のフェーズで生じる、サブフェーズ空間500などのサブフェーズ空間があるかどうかを判定する。第1のフェーズで生じるサブフェーズ空間がない場合、このプロセスは、コネクタ1を通り、図8Bに示されている遷移オペレーション822に進む。
第1のフェーズで生じるサブフェーズ空間がある場合、識別オペレーション810は、サブフェーズ空間および適用可能なサブフェーズを識別する。一実施形態では、サブディレクタ306などのサブディレクタが開始され、マスタフェーズ空間を制御するマスタディレクタに登録される。サブディレクタは、サブフェーズ論理クロック起動し、サブフェーズ空間内の複数のサブフェーズを循環して辿る。判定オペレーション812は、現在のサブフェーズに制約される、コンポーネント312などのソフトウェアコンポーネントがあるかどうかを判定する。一実施形態では、サブフェーズ空間に制約されたソフトウェアコンポーネントは、サブディレクタに登録される。したがって、入れ子になったサブフェーズドメインは、マスタフェーズドメインの下に作成される。現在のサブフェーズに制約されたサブフェーズドメイン内にソフトウェアコンポーネントがある場合、実行オペレーション814は、現在のサブフェーズにおいてそれらのソフトウェアコンポーネントを実行する。判定オペレーション816は、現在のサブフェーズ内で生じる、サブフェーズ610、612、および614などのサブフェーズ空間がさらにあるかどうかを判定する。さらにサブフェーズがある場合、プロセスは戻り、オペレーション810を識別し、さらにあるサブフェーズを識別する。
識別すべきサブフェーズ空間がもうない場合、判定オペレーション818は、現在のサブフェーズ空間内に生じる他のサブフェーズが残っているかどうかを判定する。現在のフェーズ空間内で生じる他のサブフェーズ空間がある場合、遷移オペレーション820は、サブフェーズ空間内の次のサブフェーズに遷移する。一実施形態では、サブディレクタは、現在のサブフェーズ内のすべてのスレッドが実行されるまで待ち、それから次のサブフェーズに遷移する。次いで、プロセスは、判定オペレーション812に再び進む。現在のサブフェーズ空間内に残されているサブフェーズがない場合、判定オペレーション818は、スーパーフェーズ空間内で遷移すべき他のスーパーフェーズがあるかどうかを判定する。他のスーパーフェーズがある場合、遷移オペレーション820は、次のスーパーフェーズに遷移する。プロセス(スーパーフェーズ内のサブフェーズを判定し、サブフェーズ内のソフトウェアコンポーネントを実行し、すべてのサブフェーズが完了するまで次のサブフェーズに遷移し、次いで次のスーパーフェーズに遷移する)は、すべてのサブフェーズ空間が一巡りするまで繰り返され、次のマスタフェーズへの遷移が必要になる。第1のマスタフェーズで、サブフェーズループが終了すると、プロセスは、コネクタ1を通り図8Bに示されている遷移オペレーション822に進む。
遷移オペレーション822は、更新フェーズ404などの次のマスタフェーズに遷移する。一実施形態では、マスタディレクタは、第1のフェーズで実行しているすべてのスレッドが終了するのを待つ。次いで、マスタディレクタは、論理フェーズクロックを次のフェーズに変える。いくつかの実施形態では、マスタディレクタは、図3を参照しつつ上で概要を述べた遷移規則に従う。次いで、プロセスは、サブフェーズを識別する第1のフェーズが生じるのと似たオペレーションに従う。そのようなものとして、サブフェーズプロセスに関する詳細な説明は再び繰り返さないが、当業者であれば、次のフェーズに制約される後続のプロセスに入る第1のフェーズで説明されている詳細を実装する方法を理解するであろう。
判定オペレーション824は、ソフトウェアコンポーネントが現在のマスタフェーズに制約されているかどうかを判定する。次のマスタフェーズに制約されたソフトウェアコンポーネントがある場合、実行オペレーション826は、ソフトウェアコンポーネントを実行する。いくつかの実施形態では、ソフトウェアコンポーネントは、すでに、マスタディレクタに登録されている。ソフトウェアコンポーネントは、マスタディレクタに問い合わせて現在のフェーズをチェックし続ける。フェーズが遷移し、ドメインが現在次のマスタフェーズにあるとマスタディレクタが報告した場合、次のマスタフェーズに制約されたソフトウェアコンポーネントは、実行を開始する。
次のマスタフェーズに制約されたソフトウェアコンポーネントがない場合、または制約されたソフトウェアコンポーネントの実行中に、判定オペレーション828は、現在のマスタフェーズ内にサブフェーズ空間があるかどうかを判定する。サブフェーズ空間がある場合、識別オペレーション830は、サブフェーズ空間を識別し、第1のサブフェーズに遷移する。判定オペレーション832は、ソフトウェアコンポーネントが現在のサブフェーズに制約されているかどうかを判定する。現在のマスタフェーズに制約されたソフトウェアコンポーネントがある場合、実行オペレーション834は、ソフトウェアコンポーネントを実行する。
現在のサブフェーズに制約されたソフトウェアコンポーネントがない場合、またはこれらのソフトウェアコンポーネントの実行中に、判定オペレーション836は、現在のサブフェーズ内にさらにサブフェーズ空間があるかどうかを判定する。さらにサブフェーズ空間がある場合、プロセスは戻り、オペレーション830を識別する。現在のサブフェーズ内にさらにサブフェーズ空間がない場合、判定オペレーション838は、現在のサブフェーズ空間内に次のサブフェーズがあるかどうか、またはスーパーフェーズ空間内に次のスーパーフェーズがあるかどうかを判定する。次のサブフェーズまたはスーパーフェーズがある場合、遷移オペレーション840は、次のサブフェーズまたはスーパーフェーズに遷移する。現在のマスタフェーズの下に次のサブフェーズまたはスーパーフェーズがない場合、判定オペレーション842は、再有効化フェーズ406など次のマスタフェーズがあるかどうかを判定する。次のマスタフェーズがある場合、プロセスは遷移オペレーション822に戻る。マスタフェーズ空間内に他のマスタフェーズがない場合、プロセスは、コネクタ2を通して、遷移オペレーション802に戻り、第1のフェーズに遷移することによりフェーズを何回もやり直す。
本発明を詳述するために、多層フェージングドメイン内で動作する例示的なコンピュータシステムについて、図9を参照しつつ以下で説明する。例示的なコンピュータシステムは、Microsoft(登録商標)Outlook(登録商標)メッセージングおよびコラボレーションクライアントプログラムなどのパーソナルコンタクトアプリケーションを動作させる。ここで、ユーザインターフェイスには、アドレス帳内の1つまたは複数の連絡先が表示される。このユーザインターフェイスには、マスタビューウィンドウ902が備えられている。マスタビュー902は、すべての連絡先を表示し、これにより、ユーザは、連絡先に関するより詳しい情報を表示するために連絡先を選択することができる。
コンピュータ環境900は、フェーズ空間の下で動作する。説明のため、限定はしないが、システム全体900は、図4に示されているフェーズ空間400の下で動作するものとする。それに加えて、説明のために、コンピュータシステム900は、現在、要求フェーズ402にある。そのようなものとして、コンピュータシステム900では、要求またはコマンドを受け取った場合に何らかのオペレーションを実行することができる。したがって、連絡先の詳細ビュー904を表示するユーザコマンド916は、受け取られると、キューに入れられる。それに加えて、要求された詳細情報を取り出すために、コマンド918がアドレス帳モジュール908に送られる。データ要求918もキューに入れられる。
マスタディレクタ302は、コンピュータシステムドメイン900内のフェーズを更新フェーズ404に変更する。ここで、コマンド916および918が、選択状態モジュール906およびアドレス帳908にそれぞれ送られる。更新フェーズ404において、図6を参照しつつ上で説明されているような、ユーザインターフェイスへの変更のためのユーザインターフェイスサブフェーズ空間の遷移が生じる。無効化サブフェーズが開始する。詳細ビュー904に対するコマンド916が処理を開始する。マスタビュー902のビューが無効化される。例えば、詳細ビュー904に対する選択は、非アクティブに設定される。それに加えて、マスタビュー902は、非アクティブウィンドウに設定される。詳細ビュー904は、適切なフィールドおよびユーザインターフェイスアイテムとともに作成される。次いで、ユーザインターフェイスサブディレクタは、描画サブフェーズに遷移する。連絡先に対するマスタビュー902内の選択は、非アクティブに見えるように描画され、例えば、ハイライト表示の選択の色を変える。マスタビュー902は、非アクティブとして描画される。例えば、マスタビュー902のウィンドウペインは、色を変化させ、それが非アクティブであることを知らせる。詳細ビュー904は、ユーザインターフェイス要素とともに描画される。フィールドは、アドレス帳モジュール908からデータを受け取れるように開いたままである。
マスタディレクタ302は、ユーザインターフェイスサブフェーズ空間内ですべての無効化および描画制約オペレーションが完了した後に再有効化フェーズ406に遷移する。データ取り出しオペレーションは、再有効化フェーズ406のときに実行される。データ取り出しオペレーションは、一実施形態では、データ取り出しサブフェーズ空間に制約される。データ取り出しサブフェーズ空間は、図6を参照しつつ説明されているように、マークと最終マークの2つのサブフェーズを有する。マークサブフェーズが開始される。アドレス帳では、データの更新を要求するソフトウェアモジュールを検索する。詳細ビュー904がマークされる。データ取り出しサブフェーズ空間に対するサブディレクタが、最終マークサブフェーズに遷移する。最終マークサブフェーズでは、アドレス帳908は、Exchange Serverアドレス帳910、クライアントアドレス帳912、またはMSNアドレス帳の3つのデータストアのうちの1つから必要な連絡先情報を取り出す。連絡先情報を取り出した後、アドレス帳908は、連絡先情報を詳細ビュー904に書き込む。
再有効化フェーズ406に制約されているすべてオペレーションを完了した後、マスタディレクタ302は、要求フェーズ402に遷移して戻る。ここで、ユーザインターフェイスは、再び、ユーザ入力デバイスからコマンドおよび要求を受け入れる。ユーザは、詳細ビュー904内で変更を連絡先情報に入力する。例えば、ユーザは、連絡先の住所を変更する。コマンド920が、詳細ビュー904からアドレス帳904に送られ、データを変更する。それに加えて、コマンド922が、選択状態906に送られ、マスタビュー902および詳細ビュー904のビューを更新する。この実施形態では、コマンドは、キューに入れられ、マスタディレクタ302は、更新フェーズ404に遷移する。更新フェーズ404は、サブフェーズ空間500などのデータ書き込みサブフェーズ空間を開始する。
同意サブフェーズ502では、アドレス帳が、データ変更要求を複数のデータストア910、912、および914に送る。データストアの1つまたは複数は、詳細ビュー904内で変更されたデータのコピーを格納することができる。したがって、データを保持するそれぞれのデータストアは、データの変更に同意しなければならない。そのため、同意サブフェーズ502では、投票プロシージャが実行される。すべてのデータストアが変更のコミットに同意した場合、この同意は、アドレス帳908に送り返される。サブディレクタは、このフェーズをコミットまたはアボートフェーズ504に変更する。ここで、データ変更が、データストアに送られ、データの更新に使用される。
一方更新フェーズ404では、ユーザインターフェイスサブフェーズ空間が出現する。選択状態906は、無効化サブフェーズのときに古いデータを含むマスタビュー902および詳細ビュー904のセクションを無効化する。描画サブフェーズにおいて、マスタビュー902および詳細ビュー904は、再描画され、変更されたデータ用の領域を確保する。更新フェーズ404においてすべてのサブフェーズが完了した後、フェーズドメイン900は、再有効化フェーズ406に遷移する。
再有効化フェーズ406では、他のサブフェーズ空間は、マークおよび最終マークに対するサブフェーズを含む。マークフェーズに遷移すると、アドレス帳908は、マスタビュー902および詳細ビュー904に、変更データを必要とするというマークを付ける。最終マークサブフェーズで、変更データがマスタビュー902および詳細ビュー904に書き込まれる。これらの変更は、ごく短時間のうちに、細かい精度で行われうる。例えば、フェーズは、ユーザが文字を入力する毎に、また数分の1秒という短い間に、循環される。そのため、変更は瞬時に生じるように見える。
本発明の実施例は、多層フェージングがシステム内のメソッドの実行をどのように制約するかを明らかにしている。コマンドおよび変更が、フェージングなしで発生した場合、マスタビュー902および詳細ビュー904は、すべてのデータストアがデータを変更する前に更新されうる。したがって、ユーザは、データを変更しようとする、またユーザインターフェイスビューを更新しようとするメソッドの順序に応じて、詳細ビュー904またはマスタビュー902に混合結果を表示することができる。
本発明は構造的機能、方法論的活動、およびそのような活動を収めたコンピュータ可読媒体に固有の言語で説明されているが、付属の請求項で定められている発明は、説明されている特定の構造、活動、または媒体に必ずしも限られないことは理解されるであろう。当業者であれば、本発明の範囲および精神から逸脱しない他の実施形態または改善を理解するであろう。したがって、特定の構造、活動、または媒体は、請求されている発明を実施するための複数の例示的な実施形態として開示される。本発明は、付属の請求項により定められる。
本発明によるソフトウェアメソッドの実行の順序を決めるようにコンピュータ環境において動作可能な多層フェージングモデルの一実施形態の図である。 本発明によりフェージングモデルを動作させるコンピューティング環境およびコンピューティングデバイスを例示する機能図である。 本発明によるフェーズモデルにおけるソフトウェアメソッドの実行の順序を決めるソフトウェアコンポーネントを備えるモジュール型ソフトウェアシステムの一実施形態の図である。 本発明によるシステム内のソフトウェアメソッドの実行の順序を決めるようにコンピュータシステム全体にわたって動作する第1または最上位フェーズモデルもしくは空間の一実施形態の図である。 本発明によりデータの取り出しおよび書き込みの順序を決める、図4のマスタフェーズ空間などのマスタフェーズ空間のフェーズのうちの1つまたは複数において動作可能なサブフェーズ空間の一実施形態の図である。 本発明によるプラグ&プレイシステムの構成およびオペレーションの順序を決める、図4のマスタフェーズ空間などのマスタフェーズ空間のフェーズのうちの1つまたは複数において動作可能なサブフェーズ空間の一実施形態の図である。 本発明によるプラグ&プレイシステムの構成およびオペレーションの順序を決める、図4のマスタフェーズ空間などのマスタフェーズ空間のフェーズのうちの1つまたは複数において動作可能なサブフェーズ空間の一実施形態の図である。 本発明により特定のフェーズへのソフトウェアメソッドの実行に関する制約を宣言するフェーズ制約属性を含むデータ構造体または言語属性の一実施形態を示す図である。 本発明によるコンピュータシステムのオペレーションを複数のフェーズに分ける方法の一実施形態を示す図である。 本発明によるコンピュータシステムのオペレーションを複数のフェーズに分ける方法の一実施形態を示す図である。 本発明によるフェーズドメインにおいて作用するユーザ連絡先情報の提供および格納を行うように動作する例示的なコンピュータシステムの図である。

Claims (20)

  1. 複数のコンポーネントを有するコンピュータシステム用の複数の命令からなるコンピュータプログラムを符号化するコンピュータプログラム製品であって、前記コンポーネントは、
    ソフトウェアコンポーネントの2つまたはそれ以上の集合を形成する複数のソフトウェアコンポーネントと、
    第1のフェーズ空間により特徴付けられる第1のフェーズドメインに制約されたソフトウェアコンポーネントの第1の集合と、
    第2のフェーズ空間により特徴付けられる第2のフェーズドメインに制約されたソフトウェアコンポーネントの第2の集合とを含むことを特徴とするコンピュータプログラム製品。
  2. 前記第1のフェーズ空間は、マスタフェーズ空間であることを特徴とする請求項1に記載のコンピュータプログラム製品。
  3. 前記第2のフェーズドメインは、前記第1のフェーズドメインのサブフェーズドメインであり、サブフェーズ空間により特徴付けられることを特徴とする請求項1に記載のコンピュータプログラム製品。
  4. 前記サブフェーズドメインは、さらに、1つまたは複数の他のサブフェーズ空間により特徴付けられる1つまたは複数の他のサブフェーズドメインを含むことを特徴とする請求項3に記載のコンピュータプログラム製品。
  5. 前記第1のフェーズドメインおよび前記第2のフェーズドメインは、直交していることを特徴とする請求項1に記載のコンピュータプログラム製品。
  6. さらに、第1のフェーズドメインを制御するマスタディレクタを備えることを特徴とする請求項1に記載のコンピュータプログラム製品。
  7. さらに、
    前記第1のフェーズドメインの下で1つまたは複数のサブフェーズ空間を制御する1つまたは複数のサブディレクタと、
    前記1つまたは複数のソフトウェアコンポーネントの実行を前記サブディレクタにより制御される前記サブフェーズのうちの1つまたは複数に制約する前記サブディレクタのうちの1つに登録された1つまたは複数のソフトウェアコンポーネントとを含むことを特徴とする請求項6に記載のコンピュータプログラム製品。
  8. さらに、前記1つまたは複数のソフトウェアコンポーネントの実行を前記マスタディレクタにより制御される前記フェーズのうちの1つまたは複数に制約する前記マスタディレクタに登録された1つまたは複数のソフトウェアコンポーネントを含むことを特徴とする請求項6に記載のコンピュータプログラム製品。
  9. 前記1つまたは複数のサブディレクタは、前記マスタディレクタに登録され、前記マスタディレクタにより制御されることを特徴とする請求項6に記載のコンピュータプログラム製品。
  10. 前記第1のフェーズに制約されたすべてのメソッドが完了し、前記第2のフェーズに制約されたすべてのメソッドが完了した結果、コンピュータオペレーションが完了することを特徴とする請求項1に記載のコンピュータプログラム製品。
  11. ソフトウェアシステム内の複数のメソッドの実行を構造化するコンピュータにより実装された方法を実行するための複数の命令からなるコンピュータプログラムを符号化するコンピュータプログラム製品であって、前記方法は、
    第1のフェーズに遷移することと、
    第1のメソッドの実行を前記第1のフェーズに制約することと、
    1つまたは複数の他のフェーズに遷移することと、
    1つまたは複数の他のメソッドの実行を前記1つまたは複数の他のフェーズに制約することとを含むことを特徴とするコンピュータプログラム製品。
  12. 前記第1のフェーズは、要求フェーズ、更新フェーズ、または再有効化フェーズのうちの1つであることを特徴とする請求項11に記載のコンピュータプログラム製品。
  13. 前記第1のフェーズは、2つまたはそれ以上サブフェーズを有することを特徴とする請求項11に記載のコンピュータプログラム製品。
  14. 前記2つまたはそれ以上の他のサブフェーズは、同意サブフェーズおよびコミットまたはアボートサブフェーズを含むことを特徴とする請求項13に記載のコンピュータプログラム製品。
  15. 前記2つまたはそれ以上のサブフェーズは、マークサブフェーズおよび最終マークサブフェーズを含むことを特徴とする請求項13に記載のコンピュータプログラム製品。
  16. 前記2つまたはそれ以上のサブフェーズは、プラグサブフェーズおよびプレイサブフェーズを含むことを特徴とする請求項13に記載のコンピュータプログラム製品。
  17. 前記プラグサブフェーズは、さらに、コンストラクトサブフェーズ、構成サブフェーズ、および初期化サブフェーズを含むことを特徴とする請求項16に記載のコンピュータプログラム製品。
  18. 前記第1のメソッドは、前記メソッド内のフェーズ制約属性により前記第1のフェーズに制約されることを特徴とする請求項11に記載のコンピュータプログラム製品。
  19. データ構造体を格納したコンピュータプログラム製品であって、前記データ構造体に関連するオペレーションを指定されたフェーズに制限するフェーズ制約属性を含むデータフィールドを含むことを特徴とするデータ構造体を格納したコンピュータプログラム製品。
  20. 前記フェーズ制約属性は、呼び出し制約、コンストラクタ制約、または参照制約のうちの1つを含むことを特徴とする請求項19に記載のコンピュータプログラム製品。
JP2008508959A 2005-04-29 2006-04-20 アプリケーションフレームワークのフェージングモデル Expired - Fee Related JP5021627B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US67613705P 2005-04-29 2005-04-29
US60/676,137 2005-04-29
US70322005P 2005-07-28 2005-07-28
US60/703,220 2005-07-28
US11/360,455 US20060245096A1 (en) 2005-04-29 2006-02-23 Application framework phasing model
US11/360,455 2006-02-23
PCT/US2006/015184 WO2006118825A2 (en) 2005-04-29 2006-04-20 Application framework phasing model

Publications (2)

Publication Number Publication Date
JP2008539516A true JP2008539516A (ja) 2008-11-13
JP5021627B2 JP5021627B2 (ja) 2012-09-12

Family

ID=37234188

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008508959A Expired - Fee Related JP5021627B2 (ja) 2005-04-29 2006-04-20 アプリケーションフレームワークのフェージングモデル

Country Status (7)

Country Link
US (1) US20060245096A1 (ja)
EP (1) EP1869549A4 (ja)
JP (1) JP5021627B2 (ja)
KR (1) KR20080005522A (ja)
BR (1) BRPI0611339A2 (ja)
CA (1) CA2602817A1 (ja)
WO (1) WO2006118825A2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8275793B2 (en) * 2005-04-29 2012-09-25 Microsoft Corporation Transaction transforms
US8418132B2 (en) * 2005-04-29 2013-04-09 Microsoft Corporation Application description language
US7581225B2 (en) * 2005-04-29 2009-08-25 Microsoft Corporation Multithreading with concurrency domains
US8132148B2 (en) 2005-04-29 2012-03-06 Microsoft Corporation XML application framework
US8799857B2 (en) 2005-04-29 2014-08-05 Microsoft Corporation XML application framework
US20090183155A1 (en) * 2008-01-15 2009-07-16 Microsoft Corporation Isolation of Content by Processes in an Application
US20120124558A1 (en) * 2010-11-17 2012-05-17 Microsoft Corporation Scenario testing composability across multiple components
CN105787019A (zh) * 2016-02-24 2016-07-20 浪潮通用软件有限公司 一种在报表系统中修改并保存单元格信息的方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0635869A (ja) * 1992-07-20 1994-02-10 Mitsubishi Electric Corp アプリケーション協調動作システム
JPH06214690A (ja) * 1993-01-14 1994-08-05 Sony Corp 情報同期制御方法、情報伝送装置および情報出力装置
JPH06332711A (ja) * 1993-05-25 1994-12-02 Fujitsu Ltd データ処理システムにおけるオブジェクト管理処理方式
JPH0962733A (ja) * 1995-08-22 1997-03-07 Nippon Telegr & Teleph Corp <Ntt> フロー追加装置
JP2001318796A (ja) * 2000-02-29 2001-11-16 Leben Co Ltd 内外イベントドリブン方式によるプログラム実行制御方法、記録媒体およびプログラム作成支援システム
JP2004350291A (ja) * 2003-05-20 2004-12-09 Microsoft Corp 拡張テレフォニーコンピュータユーザインタフェース
JP2005043962A (ja) * 2003-07-22 2005-02-17 Nippon Telegr & Teleph Corp <Ntt> 分散サーバシステム、サーバ、アプリケーションプロセス起動制御方法、及びプログラム

Family Cites Families (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US104068A (en) * 1870-06-07 Improvement in head-blocks for saw-mills
US102615A (en) * 1870-05-03 Improved mold tor artificial teeth
US306735A (en) * 1884-10-21 Ltjdwig heinbich feiedbueg
US188761A (en) * 1877-03-27 Improvement in punches for numbering checks
US95650A (en) * 1869-10-12 Improvement in machines for bending sheet-metal for cornices
US253830A (en) * 1882-02-21 Hydraulic air-compressor
US4943932A (en) * 1986-11-25 1990-07-24 Cimflex Teknowledge Corporation Architecture for composing computational modules uniformly across diverse developmental frameworks
US5018097A (en) * 1987-08-21 1991-05-21 Siemens Aktiengesellschaft Modularly structured digital communications system for interconnecting terminal equipment and public networks, and having operation and reliability programs
JPH0727505B2 (ja) * 1990-02-12 1995-03-29 インターナショナル・ビジネス・マシーンズ・コーポレイション インターフェース方法及びインターフェース・システム
CA2061117C (en) * 1991-12-02 1998-09-29 Neta J. Amit Apparatus and method for distributed program stack
WO1993012488A1 (en) * 1991-12-13 1993-06-24 White Leonard R Measurement analysis software system and method
US5392430A (en) * 1992-10-30 1995-02-21 International Business Machines Hierarchical scheduling method for processing tasks having precedence constraints on a parallel processing system
US5519866A (en) * 1993-06-28 1996-05-21 Taligent, Inc. Method and apparatus of incrementally linking components of a modeled computer program
US6035321A (en) * 1994-06-29 2000-03-07 Acis, Inc. Method for enforcing a hierarchical invocation structure in real time asynchronous software applications
US5980096A (en) * 1995-01-17 1999-11-09 Intertech Ventures, Ltd. Computer-based system, methods and graphical interface for information storage, modeling and stimulation of complex systems
US5805889A (en) * 1995-10-20 1998-09-08 Sun Microsystems, Inc. System and method for integrating editing and versioning in data repositories
US6721951B1 (en) * 1996-04-15 2004-04-13 Microsoft Corporation Data transfer utilizing single functionally independent data transfer mechanism
US6760903B1 (en) * 1996-08-27 2004-07-06 Compuware Corporation Coordinated application monitoring in a distributed computing environment
US6721941B1 (en) * 1996-08-27 2004-04-13 Compuware Corporation Collection of timing and coverage data through a debugging interface
US5951653A (en) * 1997-01-29 1999-09-14 Microsoft Corporation Method and system for coordinating access to objects of different thread types in a shared memory space
US5790855A (en) * 1997-01-31 1998-08-04 Sun Microsystems, Inc. System, method and article of manufacture for type checking appropriateness of port connection and variable type matching in connection with multiport object-oriented components
US5842020A (en) * 1997-01-31 1998-11-24 Sun Microsystems, Inc. System, method and article of manufacture for providing dynamic user editing of object oriented components used in an object oriented applet or application
US6108754A (en) * 1997-04-03 2000-08-22 Sun Microsystems, Inc. Thread-local synchronization construct cache
GB2329490B (en) * 1997-09-19 2002-06-05 Ibm Remote application design
US6208336B1 (en) * 1998-03-20 2001-03-27 Sun Microsystems, Inc. Dynamic graphical user interface feature-set configuration
US6083276A (en) * 1998-06-11 2000-07-04 Corel, Inc. Creating and configuring component-based applications using a text-based descriptive attribute grammar
US6205465B1 (en) * 1998-07-22 2001-03-20 Cisco Technology, Inc. Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information
US6256780B1 (en) * 1998-09-10 2001-07-03 Microsoft Corp. Method and system for assembling software components
US6272675B1 (en) * 1998-10-01 2001-08-07 Unisys Corporation Development system for automatically enabling a server application to execute with an XATMI-compliant transaction manager managing transactions within multiple environments
US6415434B1 (en) * 1999-06-18 2002-07-02 Hewlett-Packard Company Apparatus and method for a runtime method overloading resolver
US6601233B1 (en) * 1999-07-30 2003-07-29 Accenture Llp Business components framework
US6601234B1 (en) * 1999-08-31 2003-07-29 Accenture Llp Attribute dictionary in a business logic services environment
US6832228B1 (en) * 1999-10-21 2004-12-14 International Business Machines Corporation Apparatus and method for providing a threadsafe object pool with minimal locking
CA2302959A1 (en) * 2000-03-23 2001-09-23 Ibm Canada Limited-Ibm Canada Limitee Priority resource allocation in programming environments
FR2810423A1 (fr) * 2000-06-16 2001-12-21 Suntech Systeme informatique modulaire et procede associe
US6670969B1 (en) * 2000-06-29 2003-12-30 Curl Corporation Interface frames for threads
US7039920B2 (en) * 2000-07-03 2006-05-02 Oculus Technologies Corporation Method and apparatus for providing a search engine for optimizing a decentralized or emergent model on a computer network
US6983464B1 (en) * 2000-07-31 2006-01-03 Microsoft Corporation Dynamic reconfiguration of multimedia stream processing modules
JP2004506262A (ja) * 2000-08-04 2004-02-26 イントリンジック グラフィックス, インコーポレイテッド グラフィックハードウェアおよびソフトウェアの開発
US20020065950A1 (en) * 2000-09-26 2002-05-30 Katz James S. Device event handler
US20030204503A1 (en) * 2000-11-09 2003-10-30 Lars Hammer Connecting entities with general functionality in aspect patterns
US7031968B2 (en) * 2000-12-07 2006-04-18 Prev-U Israel Ltd. Method and apparatus for providing web site preview information
US7200838B2 (en) * 2000-12-20 2007-04-03 National Instruments Corporation System and method for automatically generating a graphical program in response to a state diagram
US20030236925A1 (en) * 2001-05-17 2003-12-25 Dusan Balek Interactive portable object adapters support in an integrated development environment
US7627860B2 (en) * 2001-08-14 2009-12-01 National Instruments Corporation Graphically deployment of a program with automatic conversion of program type
US8473922B2 (en) * 2001-09-19 2013-06-25 Hewlett-Packard Development Company, L.P. Runtime monitoring in component-based systems
EP1298527A1 (en) * 2001-09-28 2003-04-02 Sony International (Europe) GmbH A system for automatically creating a context information providing configuration
US7234111B2 (en) * 2001-09-28 2007-06-19 Ntt Docomo, Inc. Dynamic adaptation of GUI presentations to heterogeneous device platforms
US20030063120A1 (en) * 2001-09-28 2003-04-03 Wong Hoi Lee Candy Scalable graphical user interface architecture
US6971004B1 (en) * 2001-11-19 2005-11-29 Cypress Semiconductor Corp. System and method of dynamically reconfiguring a programmable integrated circuit
US20030135825A1 (en) * 2001-12-05 2003-07-17 Matthew Gertner Dynamically generated mark-up based graphical user interfaced with an extensible application framework with links to enterprise resources
US6621295B1 (en) * 2002-01-15 2003-09-16 Xilinx, Inc. Reconfigurable priority encoding
US7228326B2 (en) * 2002-01-18 2007-06-05 Bea Systems, Inc. Systems and methods for application deployment
US20040051739A1 (en) * 2002-06-20 2004-03-18 Schmickley Michael J. Alarm graphic editor with automatic update
WO2004001575A1 (en) * 2002-06-24 2003-12-31 National Instruments Corporation Task based polymorphic graphical program function nodes
US7206827B2 (en) * 2002-07-25 2007-04-17 Sun Microsystems, Inc. Dynamic administration framework for server systems
US7412497B2 (en) * 2002-07-25 2008-08-12 Sun Microsystems, Inc. Generation of Administration framework for server systems
US6704656B1 (en) * 2002-10-18 2004-03-09 Schlumberger Technology Corporation Method, apparatus and computer program product to allow automatic product composition
US7222332B2 (en) * 2002-10-24 2007-05-22 International Business Machines Corporation Method and apparatus for overlay management within an integrated executable for a heterogeneous architecture
US6983456B2 (en) * 2002-10-31 2006-01-03 Src Computers, Inc. Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms
US7290138B2 (en) * 2003-02-19 2007-10-30 Microsoft Corporation Credentials and digitally signed objects
US7779405B2 (en) * 2003-03-14 2010-08-17 At&T Intellectual Property I, L.P. Run-time determination of application delivery
US20040187090A1 (en) * 2003-03-21 2004-09-23 Meacham Randal P. Method and system for creating interactive software
US7558841B2 (en) * 2003-05-14 2009-07-07 Microsoft Corporation Method, system, and computer-readable medium for communicating results to a data query in a computer network
US20040230945A1 (en) * 2003-05-15 2004-11-18 Bryant Deborah E. Integration of a configuration tool with a graphical program language
US7240327B2 (en) * 2003-06-04 2007-07-03 Sap Ag Cross-platform development for devices with heterogeneous capabilities
JP4028444B2 (ja) * 2003-06-27 2007-12-26 株式会社東芝 スケジューリング方法およびリアルタイム処理システム
US8397205B2 (en) * 2003-08-07 2013-03-12 National Instruments Corporation Graphically representing timing in a graphical program
US7366993B2 (en) * 2003-08-15 2008-04-29 National Instruments Corporation Automatic graph display
US7506307B2 (en) * 2003-10-24 2009-03-17 Microsoft Corporation Rules definition language
US7676785B2 (en) * 2004-02-13 2010-03-09 Microsoft Corporation Hosted application as a designer in an integrated development environment
US7570267B2 (en) * 2004-05-03 2009-08-04 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US7836426B2 (en) * 2004-05-06 2010-11-16 National Instruments Corporation Automatic generation of application domain specific graphical programs
US8063936B2 (en) * 2004-06-01 2011-11-22 L-3 Communications Corporation Modular immersive surveillance processing system and method
WO2006031640A2 (en) * 2004-09-10 2006-03-23 Graphlogic Inc. Object process graph application development system
US8051148B2 (en) * 2005-01-13 2011-11-01 National Instruments Corporation Determining differences between configuration diagrams
US7987445B2 (en) * 2005-01-13 2011-07-26 National Instruments Corporation Comparing a configuration diagram to an actual system
US7703027B2 (en) * 2005-01-13 2010-04-20 National Instruments Corporation Merging graphical programs
US20060247936A1 (en) * 2005-04-28 2006-11-02 International Business Machines Corporation Business Activity Creation Using Business Context Services for Adaptable Service Oriented Architecture Components
US7581225B2 (en) * 2005-04-29 2009-08-25 Microsoft Corporation Multithreading with concurrency domains
US7739691B2 (en) * 2005-04-29 2010-06-15 Microsoft Corporation Framework for declarative expression of data processing
US8275793B2 (en) * 2005-04-29 2012-09-25 Microsoft Corporation Transaction transforms
US8418132B2 (en) * 2005-04-29 2013-04-09 Microsoft Corporation Application description language
US8799857B2 (en) * 2005-04-29 2014-08-05 Microsoft Corporation XML application framework
US8132148B2 (en) * 2005-04-29 2012-03-06 Microsoft Corporation XML application framework
US8201147B2 (en) * 2008-02-08 2012-06-12 Microsoft Corporation Generic XAD processing model

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0635869A (ja) * 1992-07-20 1994-02-10 Mitsubishi Electric Corp アプリケーション協調動作システム
JPH06214690A (ja) * 1993-01-14 1994-08-05 Sony Corp 情報同期制御方法、情報伝送装置および情報出力装置
JPH06332711A (ja) * 1993-05-25 1994-12-02 Fujitsu Ltd データ処理システムにおけるオブジェクト管理処理方式
JPH0962733A (ja) * 1995-08-22 1997-03-07 Nippon Telegr & Teleph Corp <Ntt> フロー追加装置
JP2001318796A (ja) * 2000-02-29 2001-11-16 Leben Co Ltd 内外イベントドリブン方式によるプログラム実行制御方法、記録媒体およびプログラム作成支援システム
JP2004350291A (ja) * 2003-05-20 2004-12-09 Microsoft Corp 拡張テレフォニーコンピュータユーザインタフェース
JP2005043962A (ja) * 2003-07-22 2005-02-17 Nippon Telegr & Teleph Corp <Ntt> 分散サーバシステム、サーバ、アプリケーションプロセス起動制御方法、及びプログラム

Also Published As

Publication number Publication date
WO2006118825A3 (en) 2007-06-28
CA2602817A1 (en) 2006-11-09
US20060245096A1 (en) 2006-11-02
WO2006118825A2 (en) 2006-11-09
EP1869549A2 (en) 2007-12-26
JP5021627B2 (ja) 2012-09-12
BRPI0611339A2 (pt) 2010-08-31
EP1869549A4 (en) 2011-08-03
KR20080005522A (ko) 2008-01-14

Similar Documents

Publication Publication Date Title
RU2439664C2 (ru) Модель фазирования прикладной среды
JP5021627B2 (ja) アプリケーションフレームワークのフェージングモデル
US8806502B2 (en) Batching resource requests in a portable computing device
US8327374B1 (en) Framework for executing multiple threads and sharing resources in a multithreaded computer programming environment
JPH08339305A (ja) サーバの非活動化と遮断を管理する方法および装置
US7219340B2 (en) Changeable class and pattern to provide selective mutability in computer programming environments
EP0996903A1 (en) Arbitrating concurrent access to file system objects
US20130031560A1 (en) Batching and Forking Resource Requests In A Portable Computing Device
RU2746155C2 (ru) Уничтожение объекта на основе последовательности выполняемых действий
US20140053157A1 (en) Asynchronous execution flow
US20160110123A1 (en) Data object observation among domain-restricted containers
WO2000050992A1 (en) Real time synchronization in multi-threaded computer systems
US8390631B2 (en) Synchronizing queued data access between multiple GPU rendering contexts
WO2013158241A2 (en) Method and system for minimal set locking when batching resource requests in a portable computing device
US8291377B2 (en) External configuration of processing content for script
US8793645B2 (en) Replacement of data element in a graph
Balandin et al. Anonymous agents coordination in smart spaces
Freeman et al. The singleton pattern
EP2788873A1 (en) Batching of resource requests into a transaction and forking of this transaction in a portable computing device
Savoie Wait-free balanced search trees with fast readers
Varghese et al. Go Fundamentals
Balasubramanian A thread-safe implementation of a meta-programmable data model
Tan On the complexity of implementing certain classes of shared objects
Memory Principles of Transactional Memory

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090319

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111206

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120306

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: 20120608

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120614

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: 20150622

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees