(57)【要約】  本明細書に記述された実施形態は、オペレーティングソフトウェアアプリケーションの少なくとも一部分を動的に再構成することを対象とする。１つの実施形態において、コンピュータシステムは、編集がアプリケーションに対して動的に適用されるべき変更を含んでいる場合、オペレーティングソフトウェアアプリケーションの少なくとも１つの部分が編集されるべきであることを示す編集を受信する。コンピュータシステムは、アプリケーションに対する変更が実施される間に、受信される編集によって示されるようにアプリケーションの変更を実行するように設計された動的構成ビルダをインスタンス化し、アプリケーションのどの部分が一時停止されるべきかを決定する。アプリケーションの変更が実行されるまで、コンピュータシステムは、決定されたアプリケーション部分を一時停止し、アプリケーションの残りが動作し続ける間に、アプリケーションの一時停止された部分の編集によって示された変更を実行する。再構成が一時停止されたアプリケーション部分を再初期化することを含んでいる場合には、コンピュータシステムはさらに実行された変更によりアプリケーションを動的に再構成する。
2011521352.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータネットワーキング環境のコンピュータシステムにおいて、オペレーティングソフトウェアアプリケーション（１０１）の少なくとも一部分を動的に再構成する方法であって、前記方法は、
前記オペレーティングソフトウェアアプリケーション（１０１）の少なくとも１つの部分が編集されるべきであると示す編集（１１４）を受信するステップであって、前記編集は前記アプリケーションに動的に適用されるべき変更を含むステップと、
前記受信された編集（１１４）によって示されるようにアプリケーション変更を実行するように設計された１つまたは複数の動的構成ビルダ（１１２）をインスタンス化するステップと、
前記アプリケーション（１０１）への前記変更が実行されている間に、前記アプリケーション（１０１）のどの部分が一時停止されるべきであるかを決定するステップと、
前記アプリケーション変更が実行されるまで前記決定されたアプリケーション（１０１）部分を一時停止するステップと、
前記アプリケーションの前記一時停止された部分（２２１Ｂ）上の前記編集（１１４）によって示された前記変更を実行するステップであって、前記アプリケーションの残りは動作し続けるステップと、
前記実行された変更により前記アプリケーションを動的に再構成するステップであって、前記再構成は前記一時停止されたアプリケーション部分（２２１Ｂ）を再初期化することを含むステップと
を含むことを特徴とする方法。
【請求項２】
前記アプリケーションの編集は、前記アプリケーション内のモデルデータの編集を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記アプリケーションと前記モデルデータとの両方は、編集可能なデータであることを特徴とする請求項２に記載の方法。
【請求項４】
前記アプリケーションは、実行時に実行された変更で動的に再構成されることを特徴とする請求項１に記載の方法。
【請求項５】
前記アプリケーションは、コード部分が追加または削除されることができる拡張ポイントを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記拡張ポイントを通して追加されたコードは、動的に再コンパイルされることを特徴とする請求項５に記載の方法。
【請求項７】
コードが前記拡張ポイントを通して削除された後、前記アプリケーションは動的に再コンパイルされることを特徴とする請求項５に記載の方法。
【請求項８】
前記拡張ポイントは、前記アプリケーションがそれ自体を編集することを可能にすることを特徴とする請求項５に記載の方法。
【請求項９】
前記一時停止されたアプリケーション部分は、前記示された変更が実行されることを可能にするアプリケーション部分の最小限のセットを含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記動的構成ビルダは、前記アプリケーションのためのアプリケーション状態の変更をモニタリングし、かつ識別することを特徴とする請求項１に記載の方法。
【請求項１１】
再構成に際して状態を維持するように、前記一時停止されたアプリケーション部分に関連づけられたアプリケーション状態情報を格納するステップをさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
コンピュータネットワーキング環境のコンピュータシステムにおいて、静的ソフトウェアコード（２２１Ａ−Ｃ）がユーザから受信した動的再構成を実行するために動的ソフトウェアコード（２２２Ａ−Ｃ）をコールするように構成される場合に、ユーザが編集データによりアプリケーション（１０１）を再構成することを可能にする方法であって、前記方法は、
アプリケーションが動作している間に前記アプリケーション（１０１）の１つまたは複数の部分が再構成されるべきであることの表示を受信するステップと、
前記受信される指示によって指示されるようなアプリケーション再構成を実行するように構成された１つまたは複数の動的構成ビルダ（２１２）をインスタンス化するステップと、
前記再構成を実行するためにどの静的なコード部分（２２１Ａ−Ｃ）が用いられるべきであるかを決定するステップと、
少なくとも１つのインスタンス化された動的構成ビルダ（２１２）が、前記再構成を実行するために用いられるべきそれらの静的なコード部分（２２１Ａ−Ｃ）を提供するために静的なコードにアクセスするステップと、
前記表示に基づいた前記再構成を実行するために動的なコード（２２２Ａ−Ｃ）の少なくとも一部分のための前記静的なコード部分（２２１Ａ−Ｃ）の少なくとも１つからコールを受信するステップと、
前記少なくとも１つのインスタンス化された動的構成ビルダ（２１２）が、前記静的なコード部分（２２１Ａ−Ｃ）を修正するために前記動的なコード部分（２２２Ａ−Ｃ）を用いて、前記アプリケーション（１０１）の前記示された部分を再構成するステップと
を含むことを特徴とする方法。
【請求項１３】
アプリケーション宣言は、静的なコードのどの部分が前記表示の中の受信された再構成に対応するのかを記述することを特徴とする請求項１２に記載の方法。
【請求項１４】
前記アプリケーションに対応する１つまたは複数のアプリケーション宣言は、リポジトリ内に格納されることを特徴とする請求項１３に記載の方法。
【請求項１５】
前記動的なコードが前記再構成を実行するために明らかにされた静的な部分を用いることができるように、呼び出し元は、動的なコードへ戻る前記アプリケーションの１つまたは複数の部分を明らかにすることを特徴とする請求項１２に記載の方法。
【請求項１６】
前記再構成を実行するための静的なアプリケーションコード内にコールする動的コードをさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１７】
前記動的構成ビルダは編集可能なデータを含み、前記ビルダが１つまたは複数の静的な構成ビルダにより理解し得るスキーマに従うことを特徴とする請求項１２に記載の方法。
【請求項１８】
再構成に際して状態を維持するように、前記編集されたアプリケーション部分に関連づけられたアプリケーション状態情報を格納するステップをさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１９】
オペレーティングソフトウェアアプリケーション（１０１）の少なくとも一部分を動的に再構成する方法を実行するためのコンピュータプログラムプロダクトであり、前記コンピューティングシステムの１つまたは複数のプロセッサによって実行された時、前記コンピューティングシステムに方法を実行させる、コンピュータ実行可能な命令をその上に有する１つまたは複数のコンピュータ読み取り可能な媒体を含むコンピュータプログラムプロダクトであって、前記方法は、
前記オペレーティングソフトウェアアプリケーション（１０１）の少なくとも１つの部分が編集されるべきであると示す編集（１１４）を受信するステップであって、前記編集は前記アプリケーション（１０１）に動的に適用されるべき変更を含むステップと、
前記受信される編集（１１４）によって示されるようにアプリケーション変更を実行するように設計された１つまたは複数の動的構成ビルダ（１１２）をインスタンス化するステップと、
指示された変更が実行されることを可能にするために一時停止されるべきアプリケーション部分の最小限のセットを決定するステップと、
前記アプリケーション変更が実行されるまで前記決定されるアプリケーション部分（２２１Ｂ）を一時停止するステップと、
少なくとも１つのインスタンス化された動的構成ビルダ（１１２）が、前記編集を実行するために用いられるべきそれらの静的なコード部分（２２１Ａ−Ｃ）を提供するために静的なコードにアクセスするステップと、
前記表示に基づいた前記編集（１１４）を実行するために動的なコード（２２２Ａ−Ｃ）の少なくとも一部分のための前記静的なコード部分（２２１Ａ−Ｃ）の少なくとも１つからのコールを受信するステップであって、前記アプリケーション（１０１）の残りは動作し続けるステップと、
前記静的なコード部分（２２１Ａ−Ｃ）を修正するために前記動的なコード部分（２２２Ａ−Ｃ）を用いて実行された変更により前記アプリケーション（１０１）を動的に再構成するステップであって、前記再構成は、前記一時停止されたアプリケーション部分を再初期化することを含むステップと
を含むことを特徴とする方法。
【請求項２０】
再構成に際して状態が維持されるように、アプリケーション状態情報は格納されることを特徴とする請求項１９に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータは、労働力、家庭、およびモバイルデバイスにおいて高度に統合されるようになってきた。コンピュータは、大量の情報を迅速かつ効率的に処理することができる。コンピュータシステム上で実行するように設計したソフトウェアアプリケーションにより、ユーザはビジネスアプリケーション、勉強、娯楽、その他を含む様々な機能を実行することが可能になる。ソフトウェアアプリケーションは、ドキュメントを設計図に書くためのワードプロセッサアプリケーション、または電子メールを送信、受信および体系化するための電子メールプログラムなどのような、特定タスクを実行するように多くの場合設計されている。
【０００２】
ソフトウェアアプリケーションは、典型的には、いくつかの型の高級プログラミング言語を用いて書かれている。多くの言語が今日も使用されているが、大部分は２つのカテゴリである、手続き型および宣言型言語のうちの１つに分類される。手続き型言語において、開発者は、典型的には、計算順に実行されるべき関数またはルーチンと呼ばれる一連のステートメントを書き込む。手続き型言語は、数ある中でも、ＡＳＰ、ＰＥＲＬ、ＰｙｔｈｏｎおよびＣを含んでもよい。そのような言語は、一般に、イベント処理および状態変更に関して高度な詳細を要求する。これは、ユーザインタフェースが様々なユーザ入力の結果として変化する場合において、より明白である。
【０００３】
宣言型言語は、開発者が各々の特定の状況のコードを書き込む必要なしに、あるイベントまたは状態変更を処理する方法を一般に指定することを可能にすることにより、この負担をある程度緩和してきた。しかしながら、多くの場合、宣言型言語は、豊富なデータの駆動型アプリケーションの宣言的な仕様を可能にするためにダイナミズムを欠く。さらに、宣言型言語は、アプリケーションを終了、再コンパイル、および再開する必要なしに、アプリケーションが動作している間に実行することができる修正の種類を多くの場合限定する。
【発明の概要】
【０００４】
本明細書に記述された実施形態は、オペレーティングソフトウェアアプリケーションの少なくとも１部分を動的に再構成（ｒｅｃｏｎｆｉｇｕｒｉｎｇ:再構成）することを対象にする。１つの実施形態において、コンピュータシステムは、編集（ｅｄｉｔ：修正）がアプリケーションに対して動的に適用されるべき変更を含んでいる場合、オペレーティングソフトウェアアプリケーションの少なくとも１つの部分が編集されるべきであることを示す編集を受信する。コンピュータシステムは、アプリケーションに対する変更が実施される間に、受信される編集によって示されるようにアプリケーションの変更を実行するために設計された動的な構成ビルダ（ｃｏｎｆｉｇｕｒａｔｉｏｎ  ｂｕｉｌｄｅｒ：設定ビルダ）をインスタンス化し、アプリケーションのどの部分が一時停止されるべきかを決定する。アプリケーションの変更が実行されるまで、コンピュータシステムは、決定されたアプリケーション部分を一時停止し、アプリケーションの残りが動作し続ける間に、アプリケーションの一時停止された部分の編集によって示された変更を実行する。再構成が、一時停止されたアプリケーション部分を再初期化することを含んでいる場合には、コンピュータシステムは、さらに実行された変更によりアプリケーションを動的に再構成する。
【０００５】
別の実施形態において、アプリケーションが動作している間に、コンピュータシステムは、アプリケーションの１つまたは複数の部分が再構成されるべきであるということを示すことを受信する。コンピュータシステムは、受信される指示によって示されるようにアプリケーション再構成を実行するように構成（ｃｏｎｆｉｇｕｒｅ:設定）された動的構成ビルダをインスタンス化し、どの静的なコード部分が再構成を実行するために用いられるべきかを決定する。構成ビルダは、再構成を実行するために用いられるべき静的なコード部分を提供するために静的なコードにアクセスする。コンピュータシステムは、指示に基づいた再構成を実行するという動的なコードの１部分のための静的なコード部分の少なくとも１つからのコールを受信し、静的なコード部分を修正するために動的なコード部分を用いてアプリケーションの示された部分を再構成する。
【０００６】
この発明の概要は、以下の発明の詳細な説明においてさらに記述される、簡易化された形式の概念の抜粋を紹介するために提供される。この発明の概要は、請求項の内容の重要な特徴または本質的な特徴を同定するようには意図されないし、請求項の内容の範囲の決定における支援として用いられるようにも意図されない。
【０００７】
さらに本発明の実施形態の上述や他の有利性および機能を明確にするために、本発明の実施形態のより多くの特定の記述が、添付された図面への参照によって表現されるであろう。これらの図面は本発明の典型的な実施形態のみを表し、したがって、その範囲内の限定と見なされないことは十分に理解される。本発明は、添付の図面の利用を通じて付加的な限定性および詳細により記述され説明されるであろう。
【図面の簡単な説明】
【０００８】
【図１】オペレーティングソフトウェアアプリケーションの少なくとも一部分を動的に再構成することを含む、本発明の実施形態が動作できるコンピュータアーキテクチャを示す図である。
【図２】静的ソフトウェアコードがユーザから受信された動的再構成を実行するために動的ソフトウェアコードをコールするように構成される場合、ユーザが編集データによるアプリケーションを再構成することを可能にすることを含む、本発明の実施形態が動作できるコンピュータアーキテクチャを示す図である。
【図３】オペレーティングソフトウェアアプリケーションの少なくとも一部分を動的に再構成する方法の例のフローチャートを示す図である。
【図４】静的ソフトウェアコードがユーザから受信された動的再構成を実行するために動的ソフトウェアコードをコールするように構成される場合に、ユーザが編集データによるアプリケーションを再構成することを可能にする方法の例のフローチャートを示す図である。
【発明を実施するための形態】
【０００９】
本明細書に記述された実施形態は、オペレーティングソフトウェアアプリケーションの少なくとも一部分を動的に再構成することを対象にする。１つの実施形態において、コンピュータシステムは、編集がアプリケーションに対して動的に適用されるべき変更を含んでいる場合、オペレーティングソフトウェアアプリケーションの少なくとも１つの部分が編集されるべきであることを示す編集を受信する。コンピュータシステムは、アプリケーションに対する変更が実施される間に、受信される編集によって示されるように変更するアプリケーションを実行するために設計された動的構成ビルダをインスタンス化し、どのアプリケーションの部分が一時停止されるべきかを決定する。アプリケーションの変更が実行されるまで、コンピュータシステムは、決定されたアプリケーション部分を一時停止し、アプリケーションの残りが動作し続ける間に、アプリケーションの一時停止された部分の編集によって示された変更を実行する。再構成が一時停止されたアプリケーション部分を再初期化することを含んでいる場合には、コンピュータシステムはさらに実行された変更によりアプリケーションを動的に再構成する。
【００１０】
別の実施形態において、アプリケーションが動作している間に、コンピュータシステムは、アプリケーションの１つまたは複数の部分が再構成されるべきであるという指示を受信する。コンピュータシステムは、受信される指示によって示されるように、アプリケーションの再構成を実行するように構成された動的構成ビルダをインスタンス化し、どの静的なコード部分が再構成を実行するために用いられるべきかを決定する。構成ビルダは、再構成を実行するために用いられるべき静的なコード部分を提供するために静的なコードにアクセスする。コンピュータシステムは、指示に基づいた再構成を実行する動的なコードの１部分のための静的なコード部分の少なくとも１つからのコールを受信し、静的なコード部分を修正するために動的なコード部分を用いてアプリケーションの示された部分を再構成する。
【００１１】
よりいっそう詳細に以下で説明されるように、本発明の実施形態は、コンピュータハードウェアを含む専用のまたは汎用のコンピュータを含んでもよい。本発明の範囲内の実施形態は、さらにコンピュータ実行可能な命令および／またはデータ構造を伝えるまたは格納するための物理的およびその他のコンピュータ読み取り可能な媒体を含む。そのようなコンピュータ読み取り可能な媒体は、汎用または専用のコンピュータシステムによってアクセスすることができる任意の利用可能な媒体でありえる。コンピュータ実行可能な命令を格納するコンピュータ読み取り可能な媒体は、物理記憶媒体である。コンピュータ実行可能な命令を伝えるコンピュータ読み取り可能なコンピュータ読み取り可能な媒体は、伝送媒体である。したがって、限定ではなく一例として、本発明の実施形態は、少なくとも２つの明確に異なる種類のコンピュータ読み取り可能な媒体である、物理記憶媒体および伝送媒体を含むことができる。
【００１２】
物理記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光学ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶装置、または汎用または専用コンピュータによってアクセスすることができるコンピュータ実行可能命令またはデータ構造の形式の所望のプログラムコード手段を格納するために用いることができる他の媒体を含む。
【００１３】
「ネットワーク」は、コンピュータシステムおよび／またはモジュールおよび／または他の電子装置の間の電子データの移送を可能にする１つまたは複数のデータリンクとして規定される。情報がコンピュータに対してネットワークまたは別の通信接続（ハードワイヤード、ワイヤレス、またはハードワイヤードまたはワイヤレスの組み合わせのいずれか）によって転送されるまたは提供される場合、コンピュータは適切に接続を伝送媒体として見なす。伝送媒体は、所望のプログラムコード手段をコンピュータ実行可能な命令またはデータ構造の形式で伝えるか移送するために用いることができ、汎用または専用のコンピュータによってアクセスすることができるネットワークおよび／またはデータリンクを含むことができる。上述の組み合わせもコンピュータ読み取り可能な媒体の範囲内に含まれるべきである。
【００１４】
但し、様々なコンピュータシステムコンポーネントに達すると、コンピュータ実行可能な命令の形式のプログラムコード手段またはデータ構造は、伝送媒体から物理記憶媒体に対して自動的に転送することができることは理解されるべきである。例えば、ネットワークまたはデータリンクを介して受信されたコンピュータ実行可能な命令またはデータ構造は、ネットワークインターフェースカード内のＲＡＭにバッファリングすることができ、その後最終的にコンピュータシステムのＲＡＭに対しておよび／またはコンピュータシステムのより低い揮発性の物理記憶媒体に対して転送される。したがって、さらに（または主としてでさえ）伝送媒体を利用するコンピュータシステムコンポーネントにおいて物理記憶媒体を含むことができることは理解されるべきである。
【００１５】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータまたは専用の制御演算装置に、ある機能またはグループ機能を実行させる命令およびデータを含む。コンピュータ実行可能な命令は、例えば、バイナリ型、アセンブリ言語などのような中間フォーマット命令、またはソースコードなどであってもよい。発明の主題は構造的特徴および／または方法論の作用に対して特有の言語において記述されているが、添付された請求項において規定された発明の主題が記述された機能または上記に記述された作用に対して必ずしも限定されていないことは理解されるべきである。むしろ、記述された機能および作用は、請求項を実行する形式の例として開示される。
【００１６】
当業者は、本発明が、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、携帯端末、マルチプロセッサ方式、マイクロプロセッサベースのまたはプログラミング可能な家電、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、携帯電話、ＰＤＡ、ページャ、ルータ、スイッチなどを含んだ多くの型のコンピュータシステム構成と共にネットワークコンピュータ環境で実施されてもよいことを十分に理解するであろう。本発明は、さらに、ネットワークを通じてリンクされるローカルおよびリモートコンピューターシステム（ハードワイヤードのデータリンク、無線データリンク、またはハードワイヤードのリンクおよび無線データリンクの組み合わせによる）が両方とも、タスクを実行する分散型システム環境で実施されてもよい。分散型システム環境において、プログラムモジュールをローカルおよびリモートメモリ記憶デバイスの両方に配置してもよい。
【００１７】
図１は、本発明の原理を利用することができるコンピュータアーキテクチャ１００を示している。いくつかの実施形態において、図１の構成要素がコンピュータシステムで実施されてもよいし、または、コンピュータシステムの一部であってもよい。ユーザインタフェース１２５は、任意の型のテキスト形式、グラフィカル形式、または他の型のユーザインタフェースであってもよい。ユーザインタフェース（ＵＩ）１２５は、ソフトウェアアプリケーション１０１のディスプレイ部分に対して構成されてもよい。さらにまたはその代わりに、ＵＩ１２５は、ユーザオブジェクト１２６を表示してもよい。ユーザオブジェクトは、ボタン、ウィンドウ、リンク、グラフィック、アイコン、または他のグラフィックオブジェクトを含んでもよい。あるケースでは、ユーザオブジェクトが、ソフトウェアアプリケーション１０１によって提供される機能性の基礎となるラベルまたは指標として作用してもよい。
【００１８】
アプリケーション１０１は、任意の目的のために設計された任意の型のソフトウェアアプリケーションであってもよい。そのアプリケーションは、複数のコンポーネントまたは単一のコンポーネントのみを含んでもよい。あるケースでは、アプリケーション１０１は、生成、コンパイル、または実行時にまとめあげられてもよい。エンジン１１０は、生成、コンパイル、または実行時のまとめあげのすべてまたは一部を実行するように構成されてもよい。これらの機能は、実行時前の他の時にエンジン１１０によって実行されてもよい。エンジン１１０は、アプリケーション記述部分１１５を受信するように構成されてもよい。いくつかの実施形態において、アプリケーション記述部分１１５は、作動するソフトウェアアプリケーションを作成するために用いられてもよい様々なソフトウェアオブジェクトを含んでもよい。ソフトウェアオブジェクトは、ソフトウェアオブジェクトがどのようにして用いられるべきであるかを断定的に示す１つまたは複数のタグを、個々に及び他のソフトウェアオブジェクトに関連して付けてもよい。上記に示されるように、そのようなソフトウェアオブジェクトは、ソフトウェアアプリケーションの機能性の様々な部分の基準を形成し、エンジン１１０によって断定的にまとめあげられてもよい。
【００１９】
エンジン１１０も、フレームワークオブジェクト１１８を受信するように構成されてもよい。フレームワークオブジェクトは、任意のユーザオブジェクト１２６、及びソフトウェアアプリケーションを生成する際に用いられるアプリケーション指向の他のフレームワーク部分を含んでもよい。これは、ライブラリ、バインディング、または他のオブジェクトを含んでもよい。エンジン１１０は、パラメータバィンディングマネージャ１０９を含んでもよい。パラメータバィンディングマネージャ１０９は、ソフトウェアオブジェクトとタグとを含むアプリケーション記述部分１１５にアクセスするように構成されてもよい。マネージャ１０９は、リフレクションを用いて、様々なソフトウェアオブジェクトのタグによって識別されたアプリケーション記述の部分をマップしてもよい。本明細書に用いられているように、リフレクションは、ソフトウェアオブジェクトと関連づけられたプロパティにアクセスすることを含み、あるケースではソフトウェアオブジェクトと関連づけられたメタデータを閲覧することを含んでいる。パラメータバィンディングマネージャ１０９も、ソフトウェアオブジェクトとで関連づけられたソフトウェアオブジェクトのプロパティに含まれる異なる宣言型規則に基づいたアプリケーション記述（例えば符号１１５）の様々な部分に対してソフトウェアオブジェクトのプロパティを結び付けるように構成されてもよい。あるケースでは、ソフトウェアオブジェクトのプロパティが、データ項目に対して結び付けられてもよい。アプリケーション記述１１５は、プロパティが結び付けられてもよいようなデータ項目を含んでもよい。さらにまたはその代わりに、ソフトウェアオブジェクトプロパティは、アプリケーション記述において含まれていないデータ項目に対して結び付けられてもよい。
【００２０】
エンジン１１０は、データ１０５にアクセスし、結合されたオブジェクト１１１を生成するように、さらに構成されてもよい。データ１０５は、ソフトウェアアプリケーション１０１を生成するためのエンジン１１０により使用可能な任意の型の情報であってもよい。さらに、データ１０５は、継続的にアプリケーション１０１によりアクセス可能であってもよい。したがって、ユーザがアプリケーション１０１と対話するように、データは配信される、または、アプリケーション１０１とエンジン１１０とのどちらか一方または両方に対して送信されてもよい。結合されたオブジェクト１１１は、まとめあげられた、または、エンジン１１０によって結合された１つまたは複数のソフトウェアオブジェクトを示す。あるケースでは、結合されたオブジェクト１１１が、ソフトウェアアプリケーション１０１の基礎を形成してもよいし、またはそれら自身アプリケーション１０１を含んでもよい。
【００２１】
ソフトウェアアプリケーション１０１は、ユーザまたは他のアプリケーションからの時間の経過の結果、または対話により、絶えず更新され変更されてもよい。例えば、ソフトウェアアプリケーション１０１が修正されるべきであることを示すいくつかのアクションが発生してもよい（例えばアクション１０６）。あるケースでは、このアクションがデータの変更であってもよい。データのそのような変更は、データの変更がソフトウェアアプリケーションへの変更に変換されるべきであるとエンジン１１０に対して示してもよい。データコネクタ１０７は、どのデータが修正されるべきであるかを識別するために用いられてもよく、更新情報を取り出すためにデータ１０５と通信するように構成されてもよい。変換１０８は、パラメータバインディングマネージャ１０９に対してそれを転送する前に検索データを変換するか、再フォーマットするか、そうでなければ修正するために用いられてもよい。エンジン１１０の一部として表示されたが、パラメータバインディングマネージャ１０９は、さらにアプリケーション記述１１５の部分に再配置する様々なタグおよびバインディングソフトウェアオブジェクト特性を含むアプリケーション１０１の一部として不可欠な役割を果たしてもよい。パラメータバィンディングマネージャ１０９も、コンピュータユーザに対して表示されるべき更新情報をＵＩ１２５に提供して、ユーザインタフェース１２５と直接対話するように構成されてもよい。
【００２２】
図１においてさらに示されるように、エンジン１１０はＸＡＤエンジンであってもよい。ＸＡＤ（それはＸＭＬ（ｅｘｔｅｎｓｉｂｌｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）ＸＡＦ（Ａｐｐｌｉｃａｔｉｏｎ  Ｆｒａｍｅｗｏｒｋ）ＸＡＤ（Ａｐｐｌｉｃａｔｉｏｎ  Ｄｅｆｉｎｉｔｉｏｎ）言語の短縮形である）は、宣言型または記述型言語である。あるケースでは、ＸＡＤは、ＸＡＦプラットホームに基づいたＸＡＦアプリケーション（例えばアプリケーション１０１）をオーサリングために用いられてもよい。あるケースでは、ＸＡＤが、ユーザ設定可能な構文情報および／またはアプリケーション記述部分１１５に基づいた実行時オブジェクトグラフを作成する方法を示してもよい。ＸＡＤエンジン（例えばエンジン１１０）は、パラメータバインディングマネージャ１０９に関連して、データを閲覧および／または処理するオブジェクトを作成するために、アプリケーション記述を処理してもよいし実行してもよい。したがって、フレームワーク内のアクションまたは他の出来事（ｏｃｕｒｒｅｎｃｅ：オカレンス）を明示する標準で単純な手段を提供するために、ＸＡＤは、アプリケーションフレームワーク内で用いられてもよい。
【００２３】
あるケースでは、ＸＡＤを用いて、開発者が、データ処理を行うオブジェクトのための実際のコードを書き込まないようにすることができてもよい。例えば、開発者は、最終的にコンパイルされ実行される宣言的なアプリケーションのためのファイルを書き込む必要のみがあるかもしれない。さらに、ＸＡＤは、設計、強い型付け、高度の静的チェックおよび高度の展開性を支援するために、進行性レベルの抽出を提供する。ＸＡＤは、さらに種々雑多なデータの操作を可能にする。ＸＡＦとＸＡＤは本明細書で述べられ、１つまたは複数の実施形態に組み込まれてもよいが、他のソフトウェアアプリケーション、コンピュータシステムまたは実体を提供する機能性によって、ＸＡＤとＸＡＦのどちらか一方または両方によって提供される機能性がさらにまたは代わりに提供されてもよいことは、当業者によって理解されるだろう。
【００２４】
ＸＡＦは、本明細書で用いられるように、与えられたソフトウェアアプリケーションの実行時構成を生成するための、およびソフトウェアアプリケーションの実行を管理するための、ソフトウェアアプリケーションフレームワークである。アプリケーション１０１は、接続されたアプリケーション構成要素の集合またはグラフを含むアプリケーションフレームワークによって生成されてもよい。アプリケーションフレームワークにより構成されたアプリケーションの機能性は、例えばワープロ文書内の画像を表示して、アプリケーションの与えられた機能性を可能にするように、各ドメインが構成されるコンポーネントドメインへアプリケーション構成要素のグループを動的に構成することにより可能になる。
【００２５】
アプリケーションのための実行時構成を生成するために、アプリケーションは、アプリケーション機能性の各々の部分のアプリケーション記述をアプリケーション記述エンジンへ渡してもよい。アプリケーション記述は、構成要素のドメインを組み立てて構成するために宣言的な規則を提供し、アプリケーション記述エンジンは、アプリケーションによって受信されたデータイベントに基づいて、構成要素のドメインを必要に応じて作成し再構成するための宣言的な規則を解釈するために作用する。データイベントは、本明細書で用いられるように、任意の型のソフトウェアメッセージ、ユーザ入力、またはソフトウェアアプリケーションに作用する恐れがある何かが発生したという他の表示であってもよい。例えば、ユーザがアプリケーションと対話するためにマウスをクリックする場合、またはエラーメッセージがアプリケーションの処理の間に表示される場合、データイベントが発生する可能性がある。
【００２６】
あるケースでは、ＸＡＦが、データを変更する場合に、データ評価およびオブジェクトグラフ構造が漸増的に更新されてもよいように、依存関係を追跡するように構成されてもよい。例えば、データ１０５が更新される場合、ソフトウェアアプリケーション１０１が漸増的に更新されてもよいように、ＸＡＦは、データ１０５内の依存関係を追跡してもよい。いくつかの実施形態において、このインクリメンタルなアップデートは、ＸＡＦによって自動的に実行される。
【００２７】
いくつかの実施形態において、エンジン１１０は、アプリケーション１０１のエントリーポイントの少なくとも１つと関連づけられた構成ビルダ１１２を呼び出してもよい。これは、作成されている１つまたは複数のオブジェクト、および恐らく初期化のために登録されているいくつかのオブジェクトに起因する。これらの初期化は、実行されてもよく、呼び出されているより多くの構成ビルダに起因してもよく、作成されているより多くのオブジェクト、およびあるいは初期化のために登録されているより多くのオブジェクトに起因してもよい。あるケースでは、初期化のために登録されたオブジェクトがある限り、エンジン１１０はそれらを初期化し続けるであろう。その後、エンジン１１０は、この処理を継続するために繰り返されてもよい。
【００２８】
図１においてさらに図示されるように、エンジン１１０は、編集１１４を受信するように構成されてもよい。編集１１４は、オペレーティングソフトウェアアプリケーションの少なくとも１つの部分が編集される指示を含んでもよい。例えば、ソフトウェアアプリケーション１０１がコンピュータシステム上で実行している間、コンピュータユーザは、アプリケーションの１つまたは複数のパーツを編集することを要望してもよい。これらのパーツは、ユーザオブジェクト１２６またはアプリケーション１０１の他の部分を含んでもよい。あるケースでは、編集１１４によって示されるように、１つまたは複数の構成ビルダ１１２がアプリケーションの変更を実行するためにエンジン１１０によってインスタンス化されてもよい。
【００２９】
あるケースでは、編集がなされている間に、一時的にアプリケーション１０１の部分を一時停止するかシャットダウンすることが有利かもしれない。エンジン１１０は、アプリケーション１０１の部分が、アプリケーションのための変更が実行されている間に一時停止されるようにすることを決定するように構成されてもよい。一時停止モジュール１１３は、一時停止が有利であったか必要であったかを決定したアプリケーションのそれらの部分を一時停止するように構成されてもよい。エンジン１１０は、アプリケーションの一時停止された部分上の編集１１４において示された変更を実行してもよい。いくつかの実施形態において、変更が実行されている間に、全体のアプリケーションが一時停止されてもよい。あるいは、いくつかの実施形態において、変更が実行されている間に、アプリケーションの一部分のみが一時停止されてもよい。そのような場合、編集が実行されている間に、アプリケーションの残りが実行し続けてもよい。アプリケーション（例えば、編集１２０）の編集は、アプリケーション記述部分１１５、ユーザインタフェース１２５、およびソフトウェアアプリケーション１０１のいずれかに渡されてもよい。これらおよび他の概念は、図３の方法３００および図４の方法４００に関して、それぞれ図２のアーキテクチャ２００を考慮してよりいっそう詳細に以下で説明されるであろう。
【００３０】
図２は、本発明の原理を利用することができるコンピュータアーキテクチャ２００を示している。図３は、オペレーティングソフトウェアアプリケーションの少なくとも一部分を動的に再構成する方法３００のフローチャートを示す。方法３００は、図１の環境１００および図２の環境２００のコンポーネントおよびデータへの再三にわたる参照によりここで記述されるだろう。
【００３１】
方法３００は、オペレーティングソフトウェアアプリケーションの少なくとも一部分が編集されるべきであることを示す編集を受信する行為を含み、編集はアプリケーションに対して動的に適用されるべき変更を含む（行為３１０）。例えば、エンジン１１０は、編集がアプリケーション１０１に対して動的に適用されるべきである変更を含んでいる場合に、オペレーティングソフトウェアアプリケーション１０１の少なくとも１つの部分が編集されるべきであることを示す編集１１４を受信してもよい。あるケースでは、アプリケーションの編集は、アプリケーション内のモデルデータの編集を含む。例えば、アプリケーション１０１は、モデルに対応するデータを編集する（または現在編集していてもよい）ように構成されてもよい。そのような場合、アプリケーションとモデルデータとの両方は、編集可能なデータであり、編集１１４において示されるように編集されてもよい。モデルが各種データ型を含む場合において、ユーザはモデル内のデータ型のすべてまたは１つの部分のみを編集することができる。いくつかの状況で、ある型のデータを編集する能力は、ユーザのシステムアクセス権に対応してもよい。
【００３２】
上で示されるように、アプリケーション１０１は、コード部分を追加または削除することができる１つまたは複数の拡張ポイントを含んでもよい。これらのコード部分は、静的なコードオブジェクト１１６、動的なコードオブジェクト１１７および／またはフレームワークオブジェクト１１８を含んでもよい。本明細書で用いられるように、静的なコードオブジェクトは、不変の（または対応するソフトウェアアプリケーションをシャットダウンせず、およびアプリケーションを再コンパイルせずに不変の）あらゆるソフトウェアコード部分を含んでもよい。動的なコードオブジェクトは、本明細書で用いられるように、対応するソフトウェアアプリケーションが実行している間に、変更可能な、修正されてもよいソフトウェアコード部分を参照する。あるケースでは、コード部分は、アプリケーションが実行している間、１つまたは複数のアプリケーションの拡張ポイントを介して追加されてもよく、動的に再コンパイルされてもよい。同様に、コード部分は、拡張ポイントを介して削除されてもよく、アプリケーション（またはその部分）は動的に再コンパイルされてもよい。あるケースでは、アプリケーション１０１が、アプリケーションの拡張ポイントを用いて、そのオウンコードの部分を編集することができてもよい。
【００３３】
方法３００は、受信される編集によって示されるようなアプリケーション変更を実行するように設計された１つまたは複数の動的構成ビルダをインスタンス化する行為を含む（行為３２０）。例えば、エンジン１１０は、編集１１４において示されたアプリケーション変更を実行するように設計された動的構成ビルダ１１２をインスタンス化してもよい。あるケースでは、構成ビルダ１１２は、アプリケーション１０１のためのアプリケーション状態の変更をモニタリングし、識別するように構成されてもよい。これらの状態変更および関連する状態情報は、ローカルデータストアまたはリモートデータストアに格納されてもよい。状態変更の保存は、状態を維持する間に、アプリケーションの再構成を可能にする。この概念は、よりいっそう詳細に以下で説明されるであろう。
【００３４】
方法３００は、アプリケーションのための変更が実行されている間にアプリケーションのどの部分が一時停止されるべきであるかを決定する行為を含む（行為３３０）。例えば、エンジン１１０は、編集１１４において示されたアプリケーションのための変更が実行されている間に、アプリケーション１０１のどの部分が一時停止されるべきであるかを決定してもよい。例えば、図２において表されるように、アプリケーション２２０Ａは、動的な部分２２２Ａと同調して、静的な部分２２１Ａ、２２１Ｂおよび２２１Ｃを含んでもよい。エンジン２１０は、編集１１４が静的な部分２２１Ｂに対してなされる変更を示すことを決定してもよい。この決定に基づいて、エンジン１１０は、アプリケーション２２０Ａのための変更が実行されている間に、部分２２１Ｂが一時停止されるべきであることを決定してもよい。どのコード部分を一時停止するか決定する際に、示された変更を一時停止することを可能にするアプリケーション部分の最小限のセットを確認することに注意するべきである。言いかえれば、受信される各編集は、アプリケーション２２０Ａの特定の部分の一時停止により実行されてもよい。したがって、各々の受信される編集にとって、変更を実行するために一時停止されるべきコード部分の最小限のセットを決定することは、重要である。但し、エンジン１１０によって決定されるように、アプリケーションのあらゆる部分が一時停止されてもよいことは、さらに注目されるべきである。
【００３５】
アプリケーションの変更が実行されるまで、方法３００は、決定したアプリケーション部分を一時停止する行為を含む（行為３４０）。例えば、アプリケーション２２０Ａの変更が実行されるまで、一時停止モジュール２１３は、静的な部分２２１Ｂを一時停止してもよい。したがって、アプリケーション２２０Ｂにおいて表されるように、静的な部分２２１Ｂが一時停止される場合、静的な部分２２１Ａおよび２２１Ｃのみが、なお動的なコード部分２２２Ｂと同調して実行されている。静的な部分２２１Ｂは、修正のための構成ビルダ２１２に送信されてもよい。
【００３６】
方法３００は、アプリケーションの一時停止された部分の編集によって示された変更を実行する行為を含み、アプリケーションの残りは動作し続ける（行為３５０）。例えば、構成ビルダ２１２は、アプリケーション２２０Ａの残りが動作を継続する間に（例えばアプリケーション２２０Ｂ）、編集１１４において示されたコード部分２２１Ｂの変更を実行してもよい。その編集は軽微または大規模かもしれず、修正で費やされた時間をそれにより増加させてもよいし、減少させてもよい。エンジン２１０は、アプリケーション２２０Ａにおいてアクセスされるように、静的なコード部分２２１Ｂの中の現在の状態の構成をモニタリングし評価してもよい状態モニタリングモジュール２１４を含んでもよい。状態モニタリングモジュール２１４は、全体として、静的な部分２２１Ｂおよび／またはアプリケーション２２０Ａにおいて現在の状態のセッティングを格納するように構成されてもよい。構成ビルダ２１２は、格納状態情報にアクセスし、修正された後、すべての現在の状態構成が修正される静的な部分２２１ＢＭに転送されることを保証するように構成されてもよい。これは、再構成の後、状態が維持されることを保証する。
【００３７】
方法３００は、実行された変更によりアプリケーションを動的に再構成する行為を含み、再構成は一時停止されたアプリケーション部分を再初期化することを含む（行為３６０）。例えば、エンジン２１０は、構成ビルダ２１２によって実行された変更によりアプリケーション２２０Ｂを動的に再構成してもよい。再構成はアプリケーション２２０Ｃの中に一時停止された静的な部分２２１Ｂ（ここでは部分２２１ＢＭを修正した）を再初期化することを含む。したがって、再構成されたアプリケーション２２０Ｃは、修正される静的な部分２２１ＢＭおよび動的な部分２２２Ｃと同様に、オリジナルの静的な部分２２１Ａおよび２２１Ｃを含む。あるケースでは、アプリケーション２２０Ｃは、実行時に実行された変更により動的に再構成される。
【００３８】
図４は、静的ソフトウェアコードがユーザから受信された動的再構成を実行する動的ソフトウェアコードをコールするように構成される場合に、ユーザが編集データによるアプリケーションを再構成することを可能にする方法４００のフローチャートを示す。方法４００は、図２の環境２００のコンポーネントおよびデータへの再三にわたる参照によりここで記述されるだろう。
【００３９】
方法４００は、アプリケーションが動作している間に１つまたは複数のアプリケーションの部分が再構成されるべきであるとの表示を受信する行為を含む（行為４１０）。例えば、エンジン１１０は、アプリケーション１０１が動作し続ける間に、アプリケーション１０１の１つまたは複数の部分が再構成されるべきであることを示す編集１１４を受信してもよい。編集１１４は、コンピュータユーザ、ソフトウェアアプリケーション、または別のコンピュータシステムから受信されてもよい。編集は、セッティング変更、コード変更、または任意の他の型の変更を含むアプリケーション１０１の任意の型の修正を含んでもよい。
【００４０】
方法４００は、受信される表示によって示されるようなアプリケーションの再構成を実行するように構成された１つまたは複数の動的構成ビルダをインスタンス化する行為を含む（行為４２０）。例えば、エンジン１１０は、編集１１４によって示されるようなアプリケーションの再構成を実行するために動的構成ビルダ１１２をインスタンス化してもよい。ビルダ１１２は、アプリケーション１０１に対してどんな変更がなされるべきか、受信される編集に基づいて決定するためにエンジン１１０によって用いられてもよい。動的なコード部分２２２Ａと同様に静的なコード部分２２１Ａ、２２１Ｂおよび２２１Ｃを含む、アプリケーション２２０Ａにおいて図示されるように、変更は１つまたは複数のコード部分に影響を与えてもよい。
【００４１】
方法４００は、再構成を実行するためにどの静的なコード部分が用いられるべきかを決定する行為を含む（行為４３０）。例えば、エンジン１１０は、再構成を実行する際に、静的なコード部分２２１Ｂが用いられるべきであることを決定してもよい。あるケースには、アプリケーション宣言（例えばアプリケーション記述１１５）が、静的なコードのどの部分が、受信される編集１１４の編集に対応するのかを記述してもよい。そのようなアプリケーション宣言は、リポジトリにおいてローカルにまたはリモートで格納されてもよい。３つの静的なコード部分のみはアプリケーション２２０Ａにおいて示されるが、および１つだけは一時停止されて修正されると表示されるが、アプリケーション２２０Ａが任意数の静的および／または動的なコード部分を含んでもよいことは理解されるべきである。さらに、任意数のコード部分は、エンジン２１０によって一時停止および／または修正されてもよい。
【００４２】
方法４００は、再構成を実行するために用いられるべき静的なコード部分を提供するために、静的なコードにアクセスする、少なくとも１つのインスタンス化された動的構成ビルダの行為を含む（行為４４０）。例えば、動的構成ビルダ２１２は、再構成を実行するために用いられるべき静的な部分（すなわち２２１Ｂ）を提供するための静的なコード部分２２１Ａ、２２１Ｂおよび／または２２１Ｃにアクセスしてもよい。したがって、例えば、ユーザが編集１１４において、赤色（デフォルトの青色とは対照的に）を用いて表示されるＵＩボタンの場合に関する規則を修正することを要求した場合、エンジン２１０は、静的なコード部分２１２Ｂが示された変更に対応するコードを含むことを決定してもよい。
【００４３】
そのような場合、本明細書では動的な呼び出し元と呼ばれるソフトウェアメカニズムが動的なコード部分２２２Ａへ戻るアプリケーション２２０Ａの部分を明らかにしてもよく、その結果、動的なコードは、再構成を実行するために明らかになった静的な部分を用いることができる。リポジトリからコード（例えばオブジェクト１１６および／または１１７）の中で読み取る動的な呼び出し元は、様々な実行時部分を指し示してもよく、コードをコンパイルしてもよい。あるケースでは、動的な呼び出し元がコードを追加するか削除することができることから拡張ポイントを規定する責任をアプリケーションが負う。そのアプリケーションは、静的なコンパイル済みコードであるかもしれないが、アプリケーション自体の編集を可能にする拡張ポイントを宣言することができる。動的な呼び出し元は、アプリケーションによって提供された入力に基づいたアプリケーションの少なくとも１つの部分を構築してもよい。したがって、動的なコード部分２２２Ａは、再構成の実行において静的なコード部分２２１Ａ、２２１Ｂおよび／または２２１Ｃを用いてもよい。いくつかの実施形態において、動的構成ビルダ２１２は、編集可能なデータを含んでもよい。そのような場合、ビルダ２１２は、様々な静的構成ビルダにより理解し得るスキーマに従ってもよい。
【００４４】
方法４００は、表示に基づいた再構成を実行するための動的なコードの少なくとも一部分のための静的なコード部分の少なくとも１つからのコールを受信する行為を含む（行為４５０）。例えば、指示に基づいた再構成を実行するために、エンジン２１０は動的なコード部分２２２Ａのための静的な部分２２１Ｂからのコールを受信してもよい。静的なコード部分が再構成を実行するために動的な部分をコールすることができる一方、動的なコードはさらに編集を実行するための静的なアプリケーションコードへコールしてもよいことは注目されるべきである。また、コードを繰り返しコールすることとコンパイルすることはさらに可能である。したがって、エンジン２１０は、実行するアプリケーションの再構成を含む様々な目的を成し遂げるために、互いに様々なコード部分がコールすることを可能にしてもよい。
【００４５】
方法４００は、静的なコード部分を修正するために動的なコード部分を用いて、アプリケーションの示された部分を再構成する、少なくとも１つのインスタンス化された動的構成ビルダの行為を含む（行為４６０）。例えば、構成ビルダ２１２は、静的なコード部分２２１Ｂを修正するために動的なコード部分２２２Ａを用いて、静的なコード部分２２１Ｂを再構成してもよい。再構成の前に、またはその再構成の間に、アプリケーション状態は、状態モニタリングモジュール２１４によってモニタリングされ格納されてもよい。したがって、再構成（例えば、再構成されたアプリケーション２２０Ｃ）に際して、任意の状態セッティングまたは他の状態情報が、再構成において維持され更新される。
【００４６】
１つの実施形態において、エンジン１１０は、オペレーティングソフトウェアアプリケーション（例えば１０１）の少なくとも１つの部分が編集されるべきであると示す編集（例えば１１４）を受信してもよい。その編集は、アプリケーション１０１に対して動的に適用されるべき変更を含んでもよい。エンジン１１０は、受信される編集（例えば１１４）によって示されるようなアプリケーション変更を実行するように設計した動的構成ビルダ（例えば１１２）をインスタンス化してもよい。エンジン１１０は、指示された変更が実行されることを可能にするために一時停止されるべきアプリケーション部分（例えば１１１）の最小限のセットを決定してもよい。アプリケーションの変更が実行されるまで、一時停止モジュール１１３／２１３は、決定されたアプリケーション部分を一時停止してもよい。
【００４７】
この実施形態において継続して、少なくとも１つのインスタンス化された動的構成ビルダは、編集を実行するために用いられるべき静的なコード部分を提供するために静的なコード（例えば１１６）にアクセスしてもよい。エンジン１１０は、アプリケーション（例えば１０１）の残りが動作し続ける間に、表示に基づいた編集を実行するための動的なコード（例えば１１７）の少なくとも一部のための少なくとも１つの静的なコード部分からのコールを受信してもよい。エンジン１１０は、静的なコード部分を修正するために動的なコード部分を用いて実行された変更によりアプリケーションを動的に再構成してもよい。再構成は、さらに一時停止されたアプリケーションのそれらの部分を再初期化することを含む。このように、アプリケーションは、要求された変更を実行するために一時的に停止されているアプリケーションの最小限の部分のみと共に、オンザフライで、更新され再構成されてもよい。
【００４８】
本発明は、その精神または本質的特徴から逸脱せずに、他の特定形態で具体化されてもよい。記述された実施形態は、単に例示であって限定ではないことを、すべての点で考慮するべきである。本発明の範囲は、したがって、前述の説明よりもむしろ添付された請求項によって示される。請求項に同等である意味および範囲内に生ずる変更は、すべて、それらの範囲内に包含されるべきである。
【図１】
2011521352.tif 000003
【図２】
2011521352.tif 000004
【図３】
2011521352.tif 000005
【図４】
2011521352.tif 000006
【国際調査報告】
2011521352.tif 000007
2011521352.tif 000008