JP2011521352A - 動的宣言型アプリケーション記述 - Google Patents

動的宣言型アプリケーション記述 Download PDF

Info

Publication number
JP2011521352A
JP2011521352A JP2011509507A JP2011509507A JP2011521352A JP 2011521352 A JP2011521352 A JP 2011521352A JP 2011509507 A JP2011509507 A JP 2011509507A JP 2011509507 A JP2011509507 A JP 2011509507A JP 2011521352 A JP2011521352 A JP 2011521352A
Authority
JP
Japan
Prior art keywords
application
code
dynamic
static
reconfiguration
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.)
Pending
Application number
JP2011509507A
Other languages
English (en)
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 JP2011521352A publication Critical patent/JP2011521352A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本明細書に記述された実施形態は、オペレーティングソフトウェアアプリケーションの少なくとも一部分を動的に再構成することを対象とする。1つの実施形態において、コンピュータシステムは、編集がアプリケーションに対して動的に適用されるべき変更を含んでいる場合、オペレーティングソフトウェアアプリケーションの少なくとも1つの部分が編集されるべきであることを示す編集を受信する。コンピュータシステムは、アプリケーションに対する変更が実施される間に、受信される編集によって示されるようにアプリケーションの変更を実行するように設計された動的構成ビルダをインスタンス化し、アプリケーションのどの部分が一時停止されるべきかを決定する。アプリケーションの変更が実行されるまで、コンピュータシステムは、決定されたアプリケーション部分を一時停止し、アプリケーションの残りが動作し続ける間に、アプリケーションの一時停止された部分の編集によって示された変更を実行する。再構成が一時停止されたアプリケーション部分を再初期化することを含んでいる場合には、コンピュータシステムはさらに実行された変更によりアプリケーションを動的に再構成する。

Description

コンピュータは、労働力、家庭、およびモバイルデバイスにおいて高度に統合されるようになってきた。コンピュータは、大量の情報を迅速かつ効率的に処理することができる。コンピュータシステム上で実行するように設計したソフトウェアアプリケーションにより、ユーザはビジネスアプリケーション、勉強、娯楽、その他を含む様々な機能を実行することが可能になる。ソフトウェアアプリケーションは、ドキュメントを設計図に書くためのワードプロセッサアプリケーション、または電子メールを送信、受信および体系化するための電子メールプログラムなどのような、特定タスクを実行するように多くの場合設計されている。
ソフトウェアアプリケーションは、典型的には、いくつかの型の高級プログラミング言語を用いて書かれている。多くの言語が今日も使用されているが、大部分は2つのカテゴリである、手続き型および宣言型言語のうちの1つに分類される。手続き型言語において、開発者は、典型的には、計算順に実行されるべき関数またはルーチンと呼ばれる一連のステートメントを書き込む。手続き型言語は、数ある中でも、ASP、PERL、PythonおよびCを含んでもよい。そのような言語は、一般に、イベント処理および状態変更に関して高度な詳細を要求する。これは、ユーザインタフェースが様々なユーザ入力の結果として変化する場合において、より明白である。
宣言型言語は、開発者が各々の特定の状況のコードを書き込む必要なしに、あるイベントまたは状態変更を処理する方法を一般に指定することを可能にすることにより、この負担をある程度緩和してきた。しかしながら、多くの場合、宣言型言語は、豊富なデータの駆動型アプリケーションの宣言的な仕様を可能にするためにダイナミズムを欠く。さらに、宣言型言語は、アプリケーションを終了、再コンパイル、および再開する必要なしに、アプリケーションが動作している間に実行することができる修正の種類を多くの場合限定する。
本明細書に記述された実施形態は、オペレーティングソフトウェアアプリケーションの少なくとも1部分を動的に再構成(reconfiguring:再構成)することを対象にする。1つの実施形態において、コンピュータシステムは、編集(edit:修正)がアプリケーションに対して動的に適用されるべき変更を含んでいる場合、オペレーティングソフトウェアアプリケーションの少なくとも1つの部分が編集されるべきであることを示す編集を受信する。コンピュータシステムは、アプリケーションに対する変更が実施される間に、受信される編集によって示されるようにアプリケーションの変更を実行するために設計された動的な構成ビルダ(configuration builder:設定ビルダ)をインスタンス化し、アプリケーションのどの部分が一時停止されるべきかを決定する。アプリケーションの変更が実行されるまで、コンピュータシステムは、決定されたアプリケーション部分を一時停止し、アプリケーションの残りが動作し続ける間に、アプリケーションの一時停止された部分の編集によって示された変更を実行する。再構成が、一時停止されたアプリケーション部分を再初期化することを含んでいる場合には、コンピュータシステムは、さらに実行された変更によりアプリケーションを動的に再構成する。
別の実施形態において、アプリケーションが動作している間に、コンピュータシステムは、アプリケーションの1つまたは複数の部分が再構成されるべきであるということを示すことを受信する。コンピュータシステムは、受信される指示によって示されるようにアプリケーション再構成を実行するように構成(configure:設定)された動的構成ビルダをインスタンス化し、どの静的なコード部分が再構成を実行するために用いられるべきかを決定する。構成ビルダは、再構成を実行するために用いられるべき静的なコード部分を提供するために静的なコードにアクセスする。コンピュータシステムは、指示に基づいた再構成を実行するという動的なコードの1部分のための静的なコード部分の少なくとも1つからのコールを受信し、静的なコード部分を修正するために動的なコード部分を用いてアプリケーションの示された部分を再構成する。
この発明の概要は、以下の発明の詳細な説明においてさらに記述される、簡易化された形式の概念の抜粋を紹介するために提供される。この発明の概要は、請求項の内容の重要な特徴または本質的な特徴を同定するようには意図されないし、請求項の内容の範囲の決定における支援として用いられるようにも意図されない。
さらに本発明の実施形態の上述や他の有利性および機能を明確にするために、本発明の実施形態のより多くの特定の記述が、添付された図面への参照によって表現されるであろう。これらの図面は本発明の典型的な実施形態のみを表し、したがって、その範囲内の限定と見なされないことは十分に理解される。本発明は、添付の図面の利用を通じて付加的な限定性および詳細により記述され説明されるであろう。
オペレーティングソフトウェアアプリケーションの少なくとも一部分を動的に再構成することを含む、本発明の実施形態が動作できるコンピュータアーキテクチャを示す図である。 静的ソフトウェアコードがユーザから受信された動的再構成を実行するために動的ソフトウェアコードをコールするように構成される場合、ユーザが編集データによるアプリケーションを再構成することを可能にすることを含む、本発明の実施形態が動作できるコンピュータアーキテクチャを示す図である。 オペレーティングソフトウェアアプリケーションの少なくとも一部分を動的に再構成する方法の例のフローチャートを示す図である。 静的ソフトウェアコードがユーザから受信された動的再構成を実行するために動的ソフトウェアコードをコールするように構成される場合に、ユーザが編集データによるアプリケーションを再構成することを可能にする方法の例のフローチャートを示す図である。
本明細書に記述された実施形態は、オペレーティングソフトウェアアプリケーションの少なくとも一部分を動的に再構成することを対象にする。1つの実施形態において、コンピュータシステムは、編集がアプリケーションに対して動的に適用されるべき変更を含んでいる場合、オペレーティングソフトウェアアプリケーションの少なくとも1つの部分が編集されるべきであることを示す編集を受信する。コンピュータシステムは、アプリケーションに対する変更が実施される間に、受信される編集によって示されるように変更するアプリケーションを実行するために設計された動的構成ビルダをインスタンス化し、どのアプリケーションの部分が一時停止されるべきかを決定する。アプリケーションの変更が実行されるまで、コンピュータシステムは、決定されたアプリケーション部分を一時停止し、アプリケーションの残りが動作し続ける間に、アプリケーションの一時停止された部分の編集によって示された変更を実行する。再構成が一時停止されたアプリケーション部分を再初期化することを含んでいる場合には、コンピュータシステムはさらに実行された変更によりアプリケーションを動的に再構成する。
別の実施形態において、アプリケーションが動作している間に、コンピュータシステムは、アプリケーションの1つまたは複数の部分が再構成されるべきであるという指示を受信する。コンピュータシステムは、受信される指示によって示されるように、アプリケーションの再構成を実行するように構成された動的構成ビルダをインスタンス化し、どの静的なコード部分が再構成を実行するために用いられるべきかを決定する。構成ビルダは、再構成を実行するために用いられるべき静的なコード部分を提供するために静的なコードにアクセスする。コンピュータシステムは、指示に基づいた再構成を実行する動的なコードの1部分のための静的なコード部分の少なくとも1つからのコールを受信し、静的なコード部分を修正するために動的なコード部分を用いてアプリケーションの示された部分を再構成する。
よりいっそう詳細に以下で説明されるように、本発明の実施形態は、コンピュータハードウェアを含む専用のまたは汎用のコンピュータを含んでもよい。本発明の範囲内の実施形態は、さらにコンピュータ実行可能な命令および/またはデータ構造を伝えるまたは格納するための物理的およびその他のコンピュータ読み取り可能な媒体を含む。そのようなコンピュータ読み取り可能な媒体は、汎用または専用のコンピュータシステムによってアクセスすることができる任意の利用可能な媒体でありえる。コンピュータ実行可能な命令を格納するコンピュータ読み取り可能な媒体は、物理記憶媒体である。コンピュータ実行可能な命令を伝えるコンピュータ読み取り可能なコンピュータ読み取り可能な媒体は、伝送媒体である。したがって、限定ではなく一例として、本発明の実施形態は、少なくとも2つの明確に異なる種類のコンピュータ読み取り可能な媒体である、物理記憶媒体および伝送媒体を含むことができる。
物理記憶媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光学ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶装置、または汎用または専用コンピュータによってアクセスすることができるコンピュータ実行可能命令またはデータ構造の形式の所望のプログラムコード手段を格納するために用いることができる他の媒体を含む。
「ネットワーク」は、コンピュータシステムおよび/またはモジュールおよび/または他の電子装置の間の電子データの移送を可能にする1つまたは複数のデータリンクとして規定される。情報がコンピュータに対してネットワークまたは別の通信接続(ハードワイヤード、ワイヤレス、またはハードワイヤードまたはワイヤレスの組み合わせのいずれか)によって転送されるまたは提供される場合、コンピュータは適切に接続を伝送媒体として見なす。伝送媒体は、所望のプログラムコード手段をコンピュータ実行可能な命令またはデータ構造の形式で伝えるか移送するために用いることができ、汎用または専用のコンピュータによってアクセスすることができるネットワークおよび/またはデータリンクを含むことができる。上述の組み合わせもコンピュータ読み取り可能な媒体の範囲内に含まれるべきである。
但し、様々なコンピュータシステムコンポーネントに達すると、コンピュータ実行可能な命令の形式のプログラムコード手段またはデータ構造は、伝送媒体から物理記憶媒体に対して自動的に転送することができることは理解されるべきである。例えば、ネットワークまたはデータリンクを介して受信されたコンピュータ実行可能な命令またはデータ構造は、ネットワークインターフェースカード内のRAMにバッファリングすることができ、その後最終的にコンピュータシステムのRAMに対しておよび/またはコンピュータシステムのより低い揮発性の物理記憶媒体に対して転送される。したがって、さらに(または主としてでさえ)伝送媒体を利用するコンピュータシステムコンポーネントにおいて物理記憶媒体を含むことができることは理解されるべきである。
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータまたは専用の制御演算装置に、ある機能またはグループ機能を実行させる命令およびデータを含む。コンピュータ実行可能な命令は、例えば、バイナリ型、アセンブリ言語などのような中間フォーマット命令、またはソースコードなどであってもよい。発明の主題は構造的特徴および/または方法論の作用に対して特有の言語において記述されているが、添付された請求項において規定された発明の主題が記述された機能または上記に記述された作用に対して必ずしも限定されていないことは理解されるべきである。むしろ、記述された機能および作用は、請求項を実行する形式の例として開示される。
当業者は、本発明が、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、携帯端末、マルチプロセッサ方式、マイクロプロセッサベースのまたはプログラミング可能な家電、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、携帯電話、PDA、ページャ、ルータ、スイッチなどを含んだ多くの型のコンピュータシステム構成と共にネットワークコンピュータ環境で実施されてもよいことを十分に理解するであろう。本発明は、さらに、ネットワークを通じてリンクされるローカルおよびリモートコンピューターシステム(ハードワイヤードのデータリンク、無線データリンク、またはハードワイヤードのリンクおよび無線データリンクの組み合わせによる)が両方とも、タスクを実行する分散型システム環境で実施されてもよい。分散型システム環境において、プログラムモジュールをローカルおよびリモートメモリ記憶デバイスの両方に配置してもよい。
図1は、本発明の原理を利用することができるコンピュータアーキテクチャ100を示している。いくつかの実施形態において、図1の構成要素がコンピュータシステムで実施されてもよいし、または、コンピュータシステムの一部であってもよい。ユーザインタフェース125は、任意の型のテキスト形式、グラフィカル形式、または他の型のユーザインタフェースであってもよい。ユーザインタフェース(UI)125は、ソフトウェアアプリケーション101のディスプレイ部分に対して構成されてもよい。さらにまたはその代わりに、UI125は、ユーザオブジェクト126を表示してもよい。ユーザオブジェクトは、ボタン、ウィンドウ、リンク、グラフィック、アイコン、または他のグラフィックオブジェクトを含んでもよい。あるケースでは、ユーザオブジェクトが、ソフトウェアアプリケーション101によって提供される機能性の基礎となるラベルまたは指標として作用してもよい。
アプリケーション101は、任意の目的のために設計された任意の型のソフトウェアアプリケーションであってもよい。そのアプリケーションは、複数のコンポーネントまたは単一のコンポーネントのみを含んでもよい。あるケースでは、アプリケーション101は、生成、コンパイル、または実行時にまとめあげられてもよい。エンジン110は、生成、コンパイル、または実行時のまとめあげのすべてまたは一部を実行するように構成されてもよい。これらの機能は、実行時前の他の時にエンジン110によって実行されてもよい。エンジン110は、アプリケーション記述部分115を受信するように構成されてもよい。いくつかの実施形態において、アプリケーション記述部分115は、作動するソフトウェアアプリケーションを作成するために用いられてもよい様々なソフトウェアオブジェクトを含んでもよい。ソフトウェアオブジェクトは、ソフトウェアオブジェクトがどのようにして用いられるべきであるかを断定的に示す1つまたは複数のタグを、個々に及び他のソフトウェアオブジェクトに関連して付けてもよい。上記に示されるように、そのようなソフトウェアオブジェクトは、ソフトウェアアプリケーションの機能性の様々な部分の基準を形成し、エンジン110によって断定的にまとめあげられてもよい。
エンジン110も、フレームワークオブジェクト118を受信するように構成されてもよい。フレームワークオブジェクトは、任意のユーザオブジェクト126、及びソフトウェアアプリケーションを生成する際に用いられるアプリケーション指向の他のフレームワーク部分を含んでもよい。これは、ライブラリ、バインディング、または他のオブジェクトを含んでもよい。エンジン110は、パラメータバィンディングマネージャ109を含んでもよい。パラメータバィンディングマネージャ109は、ソフトウェアオブジェクトとタグとを含むアプリケーション記述部分115にアクセスするように構成されてもよい。マネージャ109は、リフレクションを用いて、様々なソフトウェアオブジェクトのタグによって識別されたアプリケーション記述の部分をマップしてもよい。本明細書に用いられているように、リフレクションは、ソフトウェアオブジェクトと関連づけられたプロパティにアクセスすることを含み、あるケースではソフトウェアオブジェクトと関連づけられたメタデータを閲覧することを含んでいる。パラメータバィンディングマネージャ109も、ソフトウェアオブジェクトとで関連づけられたソフトウェアオブジェクトのプロパティに含まれる異なる宣言型規則に基づいたアプリケーション記述(例えば符号115)の様々な部分に対してソフトウェアオブジェクトのプロパティを結び付けるように構成されてもよい。あるケースでは、ソフトウェアオブジェクトのプロパティが、データ項目に対して結び付けられてもよい。アプリケーション記述115は、プロパティが結び付けられてもよいようなデータ項目を含んでもよい。さらにまたはその代わりに、ソフトウェアオブジェクトプロパティは、アプリケーション記述において含まれていないデータ項目に対して結び付けられてもよい。
エンジン110は、データ105にアクセスし、結合されたオブジェクト111を生成するように、さらに構成されてもよい。データ105は、ソフトウェアアプリケーション101を生成するためのエンジン110により使用可能な任意の型の情報であってもよい。さらに、データ105は、継続的にアプリケーション101によりアクセス可能であってもよい。したがって、ユーザがアプリケーション101と対話するように、データは配信される、または、アプリケーション101とエンジン110とのどちらか一方または両方に対して送信されてもよい。結合されたオブジェクト111は、まとめあげられた、または、エンジン110によって結合された1つまたは複数のソフトウェアオブジェクトを示す。あるケースでは、結合されたオブジェクト111が、ソフトウェアアプリケーション101の基礎を形成してもよいし、またはそれら自身アプリケーション101を含んでもよい。
ソフトウェアアプリケーション101は、ユーザまたは他のアプリケーションからの時間の経過の結果、または対話により、絶えず更新され変更されてもよい。例えば、ソフトウェアアプリケーション101が修正されるべきであることを示すいくつかのアクションが発生してもよい(例えばアクション106)。あるケースでは、このアクションがデータの変更であってもよい。データのそのような変更は、データの変更がソフトウェアアプリケーションへの変更に変換されるべきであるとエンジン110に対して示してもよい。データコネクタ107は、どのデータが修正されるべきであるかを識別するために用いられてもよく、更新情報を取り出すためにデータ105と通信するように構成されてもよい。変換108は、パラメータバインディングマネージャ109に対してそれを転送する前に検索データを変換するか、再フォーマットするか、そうでなければ修正するために用いられてもよい。エンジン110の一部として表示されたが、パラメータバインディングマネージャ109は、さらにアプリケーション記述115の部分に再配置する様々なタグおよびバインディングソフトウェアオブジェクト特性を含むアプリケーション101の一部として不可欠な役割を果たしてもよい。パラメータバィンディングマネージャ109も、コンピュータユーザに対して表示されるべき更新情報をUI125に提供して、ユーザインタフェース125と直接対話するように構成されてもよい。
図1においてさらに示されるように、エンジン110はXADエンジンであってもよい。XAD(それはXML(extensible markup language)XAF(Application Framework)XAD(Application Definition)言語の短縮形である)は、宣言型または記述型言語である。あるケースでは、XADは、XAFプラットホームに基づいたXAFアプリケーション(例えばアプリケーション101)をオーサリングために用いられてもよい。あるケースでは、XADが、ユーザ設定可能な構文情報および/またはアプリケーション記述部分115に基づいた実行時オブジェクトグラフを作成する方法を示してもよい。XADエンジン(例えばエンジン110)は、パラメータバインディングマネージャ109に関連して、データを閲覧および/または処理するオブジェクトを作成するために、アプリケーション記述を処理してもよいし実行してもよい。したがって、フレームワーク内のアクションまたは他の出来事(ocurrence:オカレンス)を明示する標準で単純な手段を提供するために、XADは、アプリケーションフレームワーク内で用いられてもよい。
あるケースでは、XADを用いて、開発者が、データ処理を行うオブジェクトのための実際のコードを書き込まないようにすることができてもよい。例えば、開発者は、最終的にコンパイルされ実行される宣言的なアプリケーションのためのファイルを書き込む必要のみがあるかもしれない。さらに、XADは、設計、強い型付け、高度の静的チェックおよび高度の展開性を支援するために、進行性レベルの抽出を提供する。XADは、さらに種々雑多なデータの操作を可能にする。XAFとXADは本明細書で述べられ、1つまたは複数の実施形態に組み込まれてもよいが、他のソフトウェアアプリケーション、コンピュータシステムまたは実体を提供する機能性によって、XADとXAFのどちらか一方または両方によって提供される機能性がさらにまたは代わりに提供されてもよいことは、当業者によって理解されるだろう。
XAFは、本明細書で用いられるように、与えられたソフトウェアアプリケーションの実行時構成を生成するための、およびソフトウェアアプリケーションの実行を管理するための、ソフトウェアアプリケーションフレームワークである。アプリケーション101は、接続されたアプリケーション構成要素の集合またはグラフを含むアプリケーションフレームワークによって生成されてもよい。アプリケーションフレームワークにより構成されたアプリケーションの機能性は、例えばワープロ文書内の画像を表示して、アプリケーションの与えられた機能性を可能にするように、各ドメインが構成されるコンポーネントドメインへアプリケーション構成要素のグループを動的に構成することにより可能になる。
アプリケーションのための実行時構成を生成するために、アプリケーションは、アプリケーション機能性の各々の部分のアプリケーション記述をアプリケーション記述エンジンへ渡してもよい。アプリケーション記述は、構成要素のドメインを組み立てて構成するために宣言的な規則を提供し、アプリケーション記述エンジンは、アプリケーションによって受信されたデータイベントに基づいて、構成要素のドメインを必要に応じて作成し再構成するための宣言的な規則を解釈するために作用する。データイベントは、本明細書で用いられるように、任意の型のソフトウェアメッセージ、ユーザ入力、またはソフトウェアアプリケーションに作用する恐れがある何かが発生したという他の表示であってもよい。例えば、ユーザがアプリケーションと対話するためにマウスをクリックする場合、またはエラーメッセージがアプリケーションの処理の間に表示される場合、データイベントが発生する可能性がある。
あるケースでは、XAFが、データを変更する場合に、データ評価およびオブジェクトグラフ構造が漸増的に更新されてもよいように、依存関係を追跡するように構成されてもよい。例えば、データ105が更新される場合、ソフトウェアアプリケーション101が漸増的に更新されてもよいように、XAFは、データ105内の依存関係を追跡してもよい。いくつかの実施形態において、このインクリメンタルなアップデートは、XAFによって自動的に実行される。
いくつかの実施形態において、エンジン110は、アプリケーション101のエントリーポイントの少なくとも1つと関連づけられた構成ビルダ112を呼び出してもよい。これは、作成されている1つまたは複数のオブジェクト、および恐らく初期化のために登録されているいくつかのオブジェクトに起因する。これらの初期化は、実行されてもよく、呼び出されているより多くの構成ビルダに起因してもよく、作成されているより多くのオブジェクト、およびあるいは初期化のために登録されているより多くのオブジェクトに起因してもよい。あるケースでは、初期化のために登録されたオブジェクトがある限り、エンジン110はそれらを初期化し続けるであろう。その後、エンジン110は、この処理を継続するために繰り返されてもよい。
図1においてさらに図示されるように、エンジン110は、編集114を受信するように構成されてもよい。編集114は、オペレーティングソフトウェアアプリケーションの少なくとも1つの部分が編集される指示を含んでもよい。例えば、ソフトウェアアプリケーション101がコンピュータシステム上で実行している間、コンピュータユーザは、アプリケーションの1つまたは複数のパーツを編集することを要望してもよい。これらのパーツは、ユーザオブジェクト126またはアプリケーション101の他の部分を含んでもよい。あるケースでは、編集114によって示されるように、1つまたは複数の構成ビルダ112がアプリケーションの変更を実行するためにエンジン110によってインスタンス化されてもよい。
あるケースでは、編集がなされている間に、一時的にアプリケーション101の部分を一時停止するかシャットダウンすることが有利かもしれない。エンジン110は、アプリケーション101の部分が、アプリケーションのための変更が実行されている間に一時停止されるようにすることを決定するように構成されてもよい。一時停止モジュール113は、一時停止が有利であったか必要であったかを決定したアプリケーションのそれらの部分を一時停止するように構成されてもよい。エンジン110は、アプリケーションの一時停止された部分上の編集114において示された変更を実行してもよい。いくつかの実施形態において、変更が実行されている間に、全体のアプリケーションが一時停止されてもよい。あるいは、いくつかの実施形態において、変更が実行されている間に、アプリケーションの一部分のみが一時停止されてもよい。そのような場合、編集が実行されている間に、アプリケーションの残りが実行し続けてもよい。アプリケーション(例えば、編集120)の編集は、アプリケーション記述部分115、ユーザインタフェース125、およびソフトウェアアプリケーション101のいずれかに渡されてもよい。これらおよび他の概念は、図3の方法300および図4の方法400に関して、それぞれ図2のアーキテクチャ200を考慮してよりいっそう詳細に以下で説明されるであろう。
図2は、本発明の原理を利用することができるコンピュータアーキテクチャ200を示している。図3は、オペレーティングソフトウェアアプリケーションの少なくとも一部分を動的に再構成する方法300のフローチャートを示す。方法300は、図1の環境100および図2の環境200のコンポーネントおよびデータへの再三にわたる参照によりここで記述されるだろう。
方法300は、オペレーティングソフトウェアアプリケーションの少なくとも一部分が編集されるべきであることを示す編集を受信する行為を含み、編集はアプリケーションに対して動的に適用されるべき変更を含む(行為310)。例えば、エンジン110は、編集がアプリケーション101に対して動的に適用されるべきである変更を含んでいる場合に、オペレーティングソフトウェアアプリケーション101の少なくとも1つの部分が編集されるべきであることを示す編集114を受信してもよい。あるケースでは、アプリケーションの編集は、アプリケーション内のモデルデータの編集を含む。例えば、アプリケーション101は、モデルに対応するデータを編集する(または現在編集していてもよい)ように構成されてもよい。そのような場合、アプリケーションとモデルデータとの両方は、編集可能なデータであり、編集114において示されるように編集されてもよい。モデルが各種データ型を含む場合において、ユーザはモデル内のデータ型のすべてまたは1つの部分のみを編集することができる。いくつかの状況で、ある型のデータを編集する能力は、ユーザのシステムアクセス権に対応してもよい。
上で示されるように、アプリケーション101は、コード部分を追加または削除することができる1つまたは複数の拡張ポイントを含んでもよい。これらのコード部分は、静的なコードオブジェクト116、動的なコードオブジェクト117および/またはフレームワークオブジェクト118を含んでもよい。本明細書で用いられるように、静的なコードオブジェクトは、不変の(または対応するソフトウェアアプリケーションをシャットダウンせず、およびアプリケーションを再コンパイルせずに不変の)あらゆるソフトウェアコード部分を含んでもよい。動的なコードオブジェクトは、本明細書で用いられるように、対応するソフトウェアアプリケーションが実行している間に、変更可能な、修正されてもよいソフトウェアコード部分を参照する。あるケースでは、コード部分は、アプリケーションが実行している間、1つまたは複数のアプリケーションの拡張ポイントを介して追加されてもよく、動的に再コンパイルされてもよい。同様に、コード部分は、拡張ポイントを介して削除されてもよく、アプリケーション(またはその部分)は動的に再コンパイルされてもよい。あるケースでは、アプリケーション101が、アプリケーションの拡張ポイントを用いて、そのオウンコードの部分を編集することができてもよい。
方法300は、受信される編集によって示されるようなアプリケーション変更を実行するように設計された1つまたは複数の動的構成ビルダをインスタンス化する行為を含む(行為320)。例えば、エンジン110は、編集114において示されたアプリケーション変更を実行するように設計された動的構成ビルダ112をインスタンス化してもよい。あるケースでは、構成ビルダ112は、アプリケーション101のためのアプリケーション状態の変更をモニタリングし、識別するように構成されてもよい。これらの状態変更および関連する状態情報は、ローカルデータストアまたはリモートデータストアに格納されてもよい。状態変更の保存は、状態を維持する間に、アプリケーションの再構成を可能にする。この概念は、よりいっそう詳細に以下で説明されるであろう。
方法300は、アプリケーションのための変更が実行されている間にアプリケーションのどの部分が一時停止されるべきであるかを決定する行為を含む(行為330)。例えば、エンジン110は、編集114において示されたアプリケーションのための変更が実行されている間に、アプリケーション101のどの部分が一時停止されるべきであるかを決定してもよい。例えば、図2において表されるように、アプリケーション220Aは、動的な部分222Aと同調して、静的な部分221A、221Bおよび221Cを含んでもよい。エンジン210は、編集114が静的な部分221Bに対してなされる変更を示すことを決定してもよい。この決定に基づいて、エンジン110は、アプリケーション220Aのための変更が実行されている間に、部分221Bが一時停止されるべきであることを決定してもよい。どのコード部分を一時停止するか決定する際に、示された変更を一時停止することを可能にするアプリケーション部分の最小限のセットを確認することに注意するべきである。言いかえれば、受信される各編集は、アプリケーション220Aの特定の部分の一時停止により実行されてもよい。したがって、各々の受信される編集にとって、変更を実行するために一時停止されるべきコード部分の最小限のセットを決定することは、重要である。但し、エンジン110によって決定されるように、アプリケーションのあらゆる部分が一時停止されてもよいことは、さらに注目されるべきである。
アプリケーションの変更が実行されるまで、方法300は、決定したアプリケーション部分を一時停止する行為を含む(行為340)。例えば、アプリケーション220Aの変更が実行されるまで、一時停止モジュール213は、静的な部分221Bを一時停止してもよい。したがって、アプリケーション220Bにおいて表されるように、静的な部分221Bが一時停止される場合、静的な部分221Aおよび221Cのみが、なお動的なコード部分222Bと同調して実行されている。静的な部分221Bは、修正のための構成ビルダ212に送信されてもよい。
方法300は、アプリケーションの一時停止された部分の編集によって示された変更を実行する行為を含み、アプリケーションの残りは動作し続ける(行為350)。例えば、構成ビルダ212は、アプリケーション220Aの残りが動作を継続する間に(例えばアプリケーション220B)、編集114において示されたコード部分221Bの変更を実行してもよい。その編集は軽微または大規模かもしれず、修正で費やされた時間をそれにより増加させてもよいし、減少させてもよい。エンジン210は、アプリケーション220Aにおいてアクセスされるように、静的なコード部分221Bの中の現在の状態の構成をモニタリングし評価してもよい状態モニタリングモジュール214を含んでもよい。状態モニタリングモジュール214は、全体として、静的な部分221Bおよび/またはアプリケーション220Aにおいて現在の状態のセッティングを格納するように構成されてもよい。構成ビルダ212は、格納状態情報にアクセスし、修正された後、すべての現在の状態構成が修正される静的な部分221BMに転送されることを保証するように構成されてもよい。これは、再構成の後、状態が維持されることを保証する。
方法300は、実行された変更によりアプリケーションを動的に再構成する行為を含み、再構成は一時停止されたアプリケーション部分を再初期化することを含む(行為360)。例えば、エンジン210は、構成ビルダ212によって実行された変更によりアプリケーション220Bを動的に再構成してもよい。再構成はアプリケーション220Cの中に一時停止された静的な部分221B(ここでは部分221BMを修正した)を再初期化することを含む。したがって、再構成されたアプリケーション220Cは、修正される静的な部分221BMおよび動的な部分222Cと同様に、オリジナルの静的な部分221Aおよび221Cを含む。あるケースでは、アプリケーション220Cは、実行時に実行された変更により動的に再構成される。
図4は、静的ソフトウェアコードがユーザから受信された動的再構成を実行する動的ソフトウェアコードをコールするように構成される場合に、ユーザが編集データによるアプリケーションを再構成することを可能にする方法400のフローチャートを示す。方法400は、図2の環境200のコンポーネントおよびデータへの再三にわたる参照によりここで記述されるだろう。
方法400は、アプリケーションが動作している間に1つまたは複数のアプリケーションの部分が再構成されるべきであるとの表示を受信する行為を含む(行為410)。例えば、エンジン110は、アプリケーション101が動作し続ける間に、アプリケーション101の1つまたは複数の部分が再構成されるべきであることを示す編集114を受信してもよい。編集114は、コンピュータユーザ、ソフトウェアアプリケーション、または別のコンピュータシステムから受信されてもよい。編集は、セッティング変更、コード変更、または任意の他の型の変更を含むアプリケーション101の任意の型の修正を含んでもよい。
方法400は、受信される表示によって示されるようなアプリケーションの再構成を実行するように構成された1つまたは複数の動的構成ビルダをインスタンス化する行為を含む(行為420)。例えば、エンジン110は、編集114によって示されるようなアプリケーションの再構成を実行するために動的構成ビルダ112をインスタンス化してもよい。ビルダ112は、アプリケーション101に対してどんな変更がなされるべきか、受信される編集に基づいて決定するためにエンジン110によって用いられてもよい。動的なコード部分222Aと同様に静的なコード部分221A、221Bおよび221Cを含む、アプリケーション220Aにおいて図示されるように、変更は1つまたは複数のコード部分に影響を与えてもよい。
方法400は、再構成を実行するためにどの静的なコード部分が用いられるべきかを決定する行為を含む(行為430)。例えば、エンジン110は、再構成を実行する際に、静的なコード部分221Bが用いられるべきであることを決定してもよい。あるケースには、アプリケーション宣言(例えばアプリケーション記述115)が、静的なコードのどの部分が、受信される編集114の編集に対応するのかを記述してもよい。そのようなアプリケーション宣言は、リポジトリにおいてローカルにまたはリモートで格納されてもよい。3つの静的なコード部分のみはアプリケーション220Aにおいて示されるが、および1つだけは一時停止されて修正されると表示されるが、アプリケーション220Aが任意数の静的および/または動的なコード部分を含んでもよいことは理解されるべきである。さらに、任意数のコード部分は、エンジン210によって一時停止および/または修正されてもよい。
方法400は、再構成を実行するために用いられるべき静的なコード部分を提供するために、静的なコードにアクセスする、少なくとも1つのインスタンス化された動的構成ビルダの行為を含む(行為440)。例えば、動的構成ビルダ212は、再構成を実行するために用いられるべき静的な部分(すなわち221B)を提供するための静的なコード部分221A、221Bおよび/または221Cにアクセスしてもよい。したがって、例えば、ユーザが編集114において、赤色(デフォルトの青色とは対照的に)を用いて表示されるUIボタンの場合に関する規則を修正することを要求した場合、エンジン210は、静的なコード部分212Bが示された変更に対応するコードを含むことを決定してもよい。
そのような場合、本明細書では動的な呼び出し元と呼ばれるソフトウェアメカニズムが動的なコード部分222Aへ戻るアプリケーション220Aの部分を明らかにしてもよく、その結果、動的なコードは、再構成を実行するために明らかになった静的な部分を用いることができる。リポジトリからコード(例えばオブジェクト116および/または117)の中で読み取る動的な呼び出し元は、様々な実行時部分を指し示してもよく、コードをコンパイルしてもよい。あるケースでは、動的な呼び出し元がコードを追加するか削除することができることから拡張ポイントを規定する責任をアプリケーションが負う。そのアプリケーションは、静的なコンパイル済みコードであるかもしれないが、アプリケーション自体の編集を可能にする拡張ポイントを宣言することができる。動的な呼び出し元は、アプリケーションによって提供された入力に基づいたアプリケーションの少なくとも1つの部分を構築してもよい。したがって、動的なコード部分222Aは、再構成の実行において静的なコード部分221A、221Bおよび/または221Cを用いてもよい。いくつかの実施形態において、動的構成ビルダ212は、編集可能なデータを含んでもよい。そのような場合、ビルダ212は、様々な静的構成ビルダにより理解し得るスキーマに従ってもよい。
方法400は、表示に基づいた再構成を実行するための動的なコードの少なくとも一部分のための静的なコード部分の少なくとも1つからのコールを受信する行為を含む(行為450)。例えば、指示に基づいた再構成を実行するために、エンジン210は動的なコード部分222Aのための静的な部分221Bからのコールを受信してもよい。静的なコード部分が再構成を実行するために動的な部分をコールすることができる一方、動的なコードはさらに編集を実行するための静的なアプリケーションコードへコールしてもよいことは注目されるべきである。また、コードを繰り返しコールすることとコンパイルすることはさらに可能である。したがって、エンジン210は、実行するアプリケーションの再構成を含む様々な目的を成し遂げるために、互いに様々なコード部分がコールすることを可能にしてもよい。
方法400は、静的なコード部分を修正するために動的なコード部分を用いて、アプリケーションの示された部分を再構成する、少なくとも1つのインスタンス化された動的構成ビルダの行為を含む(行為460)。例えば、構成ビルダ212は、静的なコード部分221Bを修正するために動的なコード部分222Aを用いて、静的なコード部分221Bを再構成してもよい。再構成の前に、またはその再構成の間に、アプリケーション状態は、状態モニタリングモジュール214によってモニタリングされ格納されてもよい。したがって、再構成(例えば、再構成されたアプリケーション220C)に際して、任意の状態セッティングまたは他の状態情報が、再構成において維持され更新される。
1つの実施形態において、エンジン110は、オペレーティングソフトウェアアプリケーション(例えば101)の少なくとも1つの部分が編集されるべきであると示す編集(例えば114)を受信してもよい。その編集は、アプリケーション101に対して動的に適用されるべき変更を含んでもよい。エンジン110は、受信される編集(例えば114)によって示されるようなアプリケーション変更を実行するように設計した動的構成ビルダ(例えば112)をインスタンス化してもよい。エンジン110は、指示された変更が実行されることを可能にするために一時停止されるべきアプリケーション部分(例えば111)の最小限のセットを決定してもよい。アプリケーションの変更が実行されるまで、一時停止モジュール113/213は、決定されたアプリケーション部分を一時停止してもよい。
この実施形態において継続して、少なくとも1つのインスタンス化された動的構成ビルダは、編集を実行するために用いられるべき静的なコード部分を提供するために静的なコード(例えば116)にアクセスしてもよい。エンジン110は、アプリケーション(例えば101)の残りが動作し続ける間に、表示に基づいた編集を実行するための動的なコード(例えば117)の少なくとも一部のための少なくとも1つの静的なコード部分からのコールを受信してもよい。エンジン110は、静的なコード部分を修正するために動的なコード部分を用いて実行された変更によりアプリケーションを動的に再構成してもよい。再構成は、さらに一時停止されたアプリケーションのそれらの部分を再初期化することを含む。このように、アプリケーションは、要求された変更を実行するために一時的に停止されているアプリケーションの最小限の部分のみと共に、オンザフライで、更新され再構成されてもよい。
本発明は、その精神または本質的特徴から逸脱せずに、他の特定形態で具体化されてもよい。記述された実施形態は、単に例示であって限定ではないことを、すべての点で考慮するべきである。本発明の範囲は、したがって、前述の説明よりもむしろ添付された請求項によって示される。請求項に同等である意味および範囲内に生ずる変更は、すべて、それらの範囲内に包含されるべきである。

Claims (20)

  1. コンピュータネットワーキング環境のコンピュータシステムにおいて、オペレーティングソフトウェアアプリケーション(101)の少なくとも一部分を動的に再構成する方法であって、前記方法は、
    前記オペレーティングソフトウェアアプリケーション(101)の少なくとも1つの部分が編集されるべきであると示す編集(114)を受信するステップであって、前記編集は前記アプリケーションに動的に適用されるべき変更を含むステップと、
    前記受信された編集(114)によって示されるようにアプリケーション変更を実行するように設計された1つまたは複数の動的構成ビルダ(112)をインスタンス化するステップと、
    前記アプリケーション(101)への前記変更が実行されている間に、前記アプリケーション(101)のどの部分が一時停止されるべきであるかを決定するステップと、
    前記アプリケーション変更が実行されるまで前記決定されたアプリケーション(101)部分を一時停止するステップと、
    前記アプリケーションの前記一時停止された部分(221B)上の前記編集(114)によって示された前記変更を実行するステップであって、前記アプリケーションの残りは動作し続けるステップと、
    前記実行された変更により前記アプリケーションを動的に再構成するステップであって、前記再構成は前記一時停止されたアプリケーション部分(221B)を再初期化することを含むステップと
    を含むことを特徴とする方法。
  2. 前記アプリケーションの編集は、前記アプリケーション内のモデルデータの編集を含むことを特徴とする請求項1に記載の方法。
  3. 前記アプリケーションと前記モデルデータとの両方は、編集可能なデータであることを特徴とする請求項2に記載の方法。
  4. 前記アプリケーションは、実行時に実行された変更で動的に再構成されることを特徴とする請求項1に記載の方法。
  5. 前記アプリケーションは、コード部分が追加または削除されることができる拡張ポイントを含むことを特徴とする請求項1に記載の方法。
  6. 前記拡張ポイントを通して追加されたコードは、動的に再コンパイルされることを特徴とする請求項5に記載の方法。
  7. コードが前記拡張ポイントを通して削除された後、前記アプリケーションは動的に再コンパイルされることを特徴とする請求項5に記載の方法。
  8. 前記拡張ポイントは、前記アプリケーションがそれ自体を編集することを可能にすることを特徴とする請求項5に記載の方法。
  9. 前記一時停止されたアプリケーション部分は、前記示された変更が実行されることを可能にするアプリケーション部分の最小限のセットを含むことを特徴とする請求項1に記載の方法。
  10. 前記動的構成ビルダは、前記アプリケーションのためのアプリケーション状態の変更をモニタリングし、かつ識別することを特徴とする請求項1に記載の方法。
  11. 再構成に際して状態を維持するように、前記一時停止されたアプリケーション部分に関連づけられたアプリケーション状態情報を格納するステップをさらに含むことを特徴とする請求項10に記載の方法。
  12. コンピュータネットワーキング環境のコンピュータシステムにおいて、静的ソフトウェアコード(221A−C)がユーザから受信した動的再構成を実行するために動的ソフトウェアコード(222A−C)をコールするように構成される場合に、ユーザが編集データによりアプリケーション(101)を再構成することを可能にする方法であって、前記方法は、
    アプリケーションが動作している間に前記アプリケーション(101)の1つまたは複数の部分が再構成されるべきであることの表示を受信するステップと、
    前記受信される指示によって指示されるようなアプリケーション再構成を実行するように構成された1つまたは複数の動的構成ビルダ(212)をインスタンス化するステップと、
    前記再構成を実行するためにどの静的なコード部分(221A−C)が用いられるべきであるかを決定するステップと、
    少なくとも1つのインスタンス化された動的構成ビルダ(212)が、前記再構成を実行するために用いられるべきそれらの静的なコード部分(221A−C)を提供するために静的なコードにアクセスするステップと、
    前記表示に基づいた前記再構成を実行するために動的なコード(222A−C)の少なくとも一部分のための前記静的なコード部分(221A−C)の少なくとも1つからコールを受信するステップと、
    前記少なくとも1つのインスタンス化された動的構成ビルダ(212)が、前記静的なコード部分(221A−C)を修正するために前記動的なコード部分(222A−C)を用いて、前記アプリケーション(101)の前記示された部分を再構成するステップと
    を含むことを特徴とする方法。
  13. アプリケーション宣言は、静的なコードのどの部分が前記表示の中の受信された再構成に対応するのかを記述することを特徴とする請求項12に記載の方法。
  14. 前記アプリケーションに対応する1つまたは複数のアプリケーション宣言は、リポジトリ内に格納されることを特徴とする請求項13に記載の方法。
  15. 前記動的なコードが前記再構成を実行するために明らかにされた静的な部分を用いることができるように、呼び出し元は、動的なコードへ戻る前記アプリケーションの1つまたは複数の部分を明らかにすることを特徴とする請求項12に記載の方法。
  16. 前記再構成を実行するための静的なアプリケーションコード内にコールする動的コードをさらに含むことを特徴とする請求項12に記載の方法。
  17. 前記動的構成ビルダは編集可能なデータを含み、前記ビルダが1つまたは複数の静的な構成ビルダにより理解し得るスキーマに従うことを特徴とする請求項12に記載の方法。
  18. 再構成に際して状態を維持するように、前記編集されたアプリケーション部分に関連づけられたアプリケーション状態情報を格納するステップをさらに含むことを特徴とする請求項12に記載の方法。
  19. オペレーティングソフトウェアアプリケーション(101)の少なくとも一部分を動的に再構成する方法を実行するためのコンピュータプログラムプロダクトであり、前記コンピューティングシステムの1つまたは複数のプロセッサによって実行された時、前記コンピューティングシステムに方法を実行させる、コンピュータ実行可能な命令をその上に有する1つまたは複数のコンピュータ読み取り可能な媒体を含むコンピュータプログラムプロダクトであって、前記方法は、
    前記オペレーティングソフトウェアアプリケーション(101)の少なくとも1つの部分が編集されるべきであると示す編集(114)を受信するステップであって、前記編集は前記アプリケーション(101)に動的に適用されるべき変更を含むステップと、
    前記受信される編集(114)によって示されるようにアプリケーション変更を実行するように設計された1つまたは複数の動的構成ビルダ(112)をインスタンス化するステップと、
    指示された変更が実行されることを可能にするために一時停止されるべきアプリケーション部分の最小限のセットを決定するステップと、
    前記アプリケーション変更が実行されるまで前記決定されるアプリケーション部分(221B)を一時停止するステップと、
    少なくとも1つのインスタンス化された動的構成ビルダ(112)が、前記編集を実行するために用いられるべきそれらの静的なコード部分(221A−C)を提供するために静的なコードにアクセスするステップと、
    前記表示に基づいた前記編集(114)を実行するために動的なコード(222A−C)の少なくとも一部分のための前記静的なコード部分(221A−C)の少なくとも1つからのコールを受信するステップであって、前記アプリケーション(101)の残りは動作し続けるステップと、
    前記静的なコード部分(221A−C)を修正するために前記動的なコード部分(222A−C)を用いて実行された変更により前記アプリケーション(101)を動的に再構成するステップであって、前記再構成は、前記一時停止されたアプリケーション部分を再初期化することを含むステップと
    を含むことを特徴とする方法。
  20. 再構成に際して状態が維持されるように、アプリケーション状態情報は格納されることを特徴とする請求項19に記載の方法。
JP2011509507A 2008-05-15 2009-03-27 動的宣言型アプリケーション記述 Pending JP2011521352A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/121,497 US20090288069A1 (en) 2008-05-15 2008-05-15 Dynamic Declarative Application Description
US12/121,497 2008-05-15
PCT/US2009/038646 WO2009139964A1 (en) 2008-05-15 2009-03-27 Dynamic declarative application description

Publications (1)

Publication Number Publication Date
JP2011521352A true JP2011521352A (ja) 2011-07-21

Family

ID=41317363

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011509507A Pending JP2011521352A (ja) 2008-05-15 2009-03-27 動的宣言型アプリケーション記述

Country Status (6)

Country Link
US (1) US20090288069A1 (ja)
EP (1) EP2300924A4 (ja)
JP (1) JP2011521352A (ja)
KR (1) KR20110014146A (ja)
CN (1) CN102027460B (ja)
WO (1) WO2009139964A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014126917A (ja) * 2012-12-25 2014-07-07 Nec Engineering Ltd 組み込みシステム及びcpu間通信方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US8201147B2 (en) * 2008-02-08 2012-06-12 Microsoft Corporation Generic XAD processing model
US8984482B2 (en) * 2008-12-09 2015-03-17 Microsoft Technology Licensing, Llc Abstracting request from a development environment to object model
US8336027B2 (en) 2009-05-27 2012-12-18 Microsoft Corporation Hierarchical view state storage
US8756515B2 (en) * 2009-11-16 2014-06-17 Microsoft Corporation Dynamic editors for functionally composed UI
US8768902B2 (en) 2010-06-11 2014-07-01 Microsoft Corporation Unified concurrent changes to data, schema, and application
US20120117497A1 (en) * 2010-11-08 2012-05-10 Nokia Corporation Method and apparatus for applying changes to a user interface
US9021428B2 (en) 2013-05-29 2015-04-28 Microsoft Technology Licensing, Llc Troubleshooting visuals and transient expressions in executing applications
US10255044B2 (en) 2013-12-16 2019-04-09 Make Apps Better Ltd Method and system for modifying deployed applications
GB2523074A (en) * 2013-12-16 2015-08-19 Make Apps Better Ltd A method and system for modifying deployed applications
KR101712609B1 (ko) * 2014-12-30 2017-03-08 엔에이치엔엔터테인먼트 주식회사 초기 정보를 제공하는 클라우드 서비스 방법 및 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070061372A1 (en) * 2005-09-14 2007-03-15 International Business Machines Corporation Dynamic update mechanisms in operating systems

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226160A (en) * 1989-07-18 1993-07-06 Visage Method of and system for interactive video-audio-computer open architecture operation
US5680619A (en) * 1995-04-03 1997-10-21 Mfactory, Inc. Hierarchical encapsulation of instantiated objects in a multimedia authoring system
US5758032A (en) * 1995-04-13 1998-05-26 Sterling Software, Inc. Method and system for automated transformation of declarative language process specification
US5960194A (en) * 1995-09-11 1999-09-28 International Business Machines Corporation Method for generating a multi-tiered index for partitioned data
EP1071991A4 (en) * 1997-12-11 2002-03-13 Digits Corp OBJECT CODE ANALYSIS AND IMPROVEMENT SYSTEM AND METHOD
US6351843B1 (en) * 1998-08-31 2002-02-26 International Business Machines Corporation Dynamically inserting a function into an application executable at runtime
US6378128B1 (en) * 1998-10-08 2002-04-23 Microsoft Corporation System and method for dynamically modifying an install-set
JP2000242484A (ja) * 1999-02-24 2000-09-08 Hitachi Ltd 制御プログラムの変更方法
US6725333B1 (en) * 1999-04-22 2004-04-20 International Business Machines Corporation System and method for managing cachable entities
US7089530B1 (en) * 1999-05-17 2006-08-08 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
US7249328B1 (en) * 1999-05-21 2007-07-24 E-Numerate Solutions, Inc. Tree view for reusable data markup language
US6470344B1 (en) * 1999-05-29 2002-10-22 Oracle Corporation Buffering a hierarchical index of multi-dimensional data
US6496976B1 (en) * 1999-08-05 2002-12-17 Unisys Corporation Method and system for dynamic recompilation of statements of a first language embedded in a program having statements of a second language
US6438562B1 (en) * 1999-08-24 2002-08-20 Oracle Corporation Parallel index maintenance
US7404175B2 (en) * 2000-10-10 2008-07-22 Bea Systems, Inc. Smart generator
WO2001090887A1 (fr) * 2000-05-25 2001-11-29 Fujitsu Limited Procede de traitement de programme permettant un traitement haute vitesse au moyen d'un materiel a reconfiguration dynamique et programme permettant d'executer ce procede de traitement
US6836884B1 (en) * 2001-06-04 2004-12-28 Microsoft Corporation Method and system for editing software programs
US7386832B2 (en) * 2001-08-31 2008-06-10 Siebel Systems, Inc. Configurator using structure to provide a user interface
US6915513B2 (en) * 2001-11-29 2005-07-05 Hewlett-Packard Development Company, L.P. System and method for dynamically replacing code
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
US7159221B1 (en) * 2002-08-30 2007-01-02 Unisys Corporation Computer OS dispatcher operation with user controllable dedication
US20040162843A1 (en) * 2003-02-19 2004-08-19 Sun Microsystems, Inc. Method, system, and article of manufacture for evaluating an object
US7873956B2 (en) * 2003-09-25 2011-01-18 Pantech & Curitel Communications, Inc. Communication terminal and communication network for partially updating software, software update method, and software creation device and method therefor
US20050172282A1 (en) * 2004-01-30 2005-08-04 Michael Shenfield System and method for publishing and accessing application APIs on a generic terminal
US20060053419A1 (en) * 2004-09-09 2006-03-09 International Business Machines Corporation Method and system for modifying installation software
US20060130038A1 (en) * 2004-12-15 2006-06-15 Claussen Christopher S Apparatus, system, and method for facilitating dynamic modification of existing software objects defined in a strongly-typed programming language
US7478218B2 (en) * 2005-02-18 2009-01-13 Vmware, Inc. Adaptive cache sizing based on monitoring of regenerated and replaced cache entries
US8799857B2 (en) * 2005-04-29 2014-08-05 Microsoft Corporation XML application framework
US8418132B2 (en) * 2005-04-29 2013-04-09 Microsoft Corporation Application description language
US20070261041A1 (en) * 2005-08-23 2007-11-08 Lisa Amini Method and system for dynamic application composition in streaming systems
US7882499B2 (en) * 2005-10-24 2011-02-01 Microsoft Corporation Caching dynamically compiled code to storage
EP1857930A3 (en) * 2006-05-17 2008-07-23 Ipreo Holdings LLC System, method, and apparatus to allow for a design, administration, and presentation of computer software applications
US8429613B2 (en) * 2006-10-31 2013-04-23 Microsoft Corporation Stepping and application state viewing between points
US8291374B2 (en) * 2007-11-05 2012-10-16 Cullum Owen H G System and method for generating modified source code based on change-models
US8336027B2 (en) * 2009-05-27 2012-12-18 Microsoft Corporation Hierarchical view state storage

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070061372A1 (en) * 2005-09-14 2007-03-15 International Business Machines Corporation Dynamic update mechanisms in operating systems

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014126917A (ja) * 2012-12-25 2014-07-07 Nec Engineering Ltd 組み込みシステム及びcpu間通信方法

Also Published As

Publication number Publication date
WO2009139964A1 (en) 2009-11-19
EP2300924A1 (en) 2011-03-30
EP2300924A4 (en) 2011-08-10
US20090288069A1 (en) 2009-11-19
CN102027460B (zh) 2014-06-18
KR20110014146A (ko) 2011-02-10
CN102027460A (zh) 2011-04-20

Similar Documents

Publication Publication Date Title
JP2011521352A (ja) 動的宣言型アプリケーション記述
US8959477B2 (en) Scripting language for business applications
JP5710852B2 (ja) 設計時および実行時にワークフローを継ぎ目なくオーサリングし編集するためのフレームワーク
US7756905B2 (en) System and method for building mixed mode execution environment for component applications
US10417314B2 (en) Systems and methods of a script generation engine
US7469402B2 (en) Pluggable model framework
Meier et al. Professional Android
US8302069B1 (en) Methods and systems utilizing behavioral data models with variants
US8201147B2 (en) Generic XAD processing model
US8875089B2 (en) Workspace model for interrelated projects
US20090112570A1 (en) Declarative model interpretation
Perkins et al. beginning C# 6 programming with visual studio 2015
Jeanjean et al. From DSL specification to interactive computer programming environment
Cook Towards computer-supported collaborative software engineering
Taher Hands-On Object-Oriented Programming with C#: Build maintainable software with reusable code using C
Bock . NET Development Using the Compiler API
Álvarez-Acebal From JavaScript to React. js: Best Practices for Migration
Mlinarić Challenges in dynamic software updating
Kövesdán et al. Meta3: a code generator framework for domain-specific languages
Japikse et al. Introduction to TypeScript
Northwood et al. Javascript
Fergus et al. The Definitive Guide to the. NET Compact Framework
Fancher The Book of F#: Breaking Free with Managed Functional Programming
Nguyen Full-stack crud application: User management system
Seifzadeh et al. A Performance-based Approach to Automatic Redeployment of Enterprise Software Applications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120208

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130625

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130701

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131002

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131009

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140214