JP4828218B2 - 自己記述アーチファクトおよびアプリケーション抽象化 - Google Patents

自己記述アーチファクトおよびアプリケーション抽象化 Download PDF

Info

Publication number
JP4828218B2
JP4828218B2 JP2005354079A JP2005354079A JP4828218B2 JP 4828218 B2 JP4828218 B2 JP 4828218B2 JP 2005354079 A JP2005354079 A JP 2005354079A JP 2005354079 A JP2005354079 A JP 2005354079A JP 4828218 B2 JP4828218 B2 JP 4828218B2
Authority
JP
Japan
Prior art keywords
manifest
software
self
computer
application
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.)
Expired - Fee Related
Application number
JP2005354079A
Other languages
English (en)
Other versions
JP2006164287A5 (ja
JP2006164287A (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 JP2006164287A publication Critical patent/JP2006164287A/ja
Publication of JP2006164287A5 publication Critical patent/JP2006164287A5/ja
Application granted granted Critical
Publication of JP4828218B2 publication Critical patent/JP4828218B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation

Landscapes

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

Description

本発明は、一般に、1つまたは複数のコンピュータシステムのソフトウェアコンポーネントを管理するための技術に関する。
従来のソフトウェアベースのコンピュータのコンポーネントを信頼できる形でインストールすること、構成すること、保存すること、および削除することは、ずっと以前から、困難な問題であった。そのようなコンポーネントの例には、以下が含まれる。すなわち、オペレーティングシステム(OS)、アプリケーションプログラム、デバイスドライバ、アプリケーションプログラミングインタフェース、およびその他のシステムプログラムである。従来のソフトウェアベースのコンピュータの例には、多くの既存のOSの1つを実行する、通常の汎用パーソナルコンピュータ(PC)が含まれる。
ソフトウェアベースのコンピュータは、通常、コンピュータの2次コンピュータ記憶システム(例えば、「ハードディスク」)の永続的なコンテンツ、および構成によって実現される。従来のコンピュータを実現するコンテンツおよび構成は、単に、時間とともに、集中化された監督および調整なしに蓄積したビットの集合に過ぎない。通常、それらの蓄積したビットは、コンピュータの寿命全体にわたる、一連の個々の場当たり的なイベントの結果である。変更の例には、例えば、プログラムのインストール、レジストリキーにおける構成設定の変更、ファイルの削除、またはソフトウェアパッチのインストールが含まれる。
ソフトウェアベースのコンピュータは、起動されると、コンピュータがハードディスク上で見出す物ものであれば何であれ、単に実行する。コンピュータのディスク上のコンテンツの正しさは、最終的には、コンピュータの寿命全体にわたる、それらの場当たり的なイベントのそれぞれの正しさに依存するので、コンピュータのコンテンツおよび構成は、容易に破損する、損傷する、ゆがむ、陳腐化する、または単に正しくなくなる可能性がある。
コンピュータのコンテンツおよび構成の正しさは、ウイルス、ワーム、スパイウェアなどによる、悪意のある攻撃が関与する、他の外部で開始された場当たり的なイベントによってさらに脅かされる。ソフトウェアベースのコンピュータのユーザが気付かないうちに、それらの悪意のある攻撃は、コンピュータのコンテンツおよび構成を、たいてい、ユーザの所望とは矛盾する形で、コンピュータのコンテンツおよび構成を変更する。
破損した、損傷した、ゆがんだ、および/または攻撃されたコンピュータのコンテンツおよび構成を検出し、訂正するために、様々な製品およびサービス(例えば、いわゆる「ウイルス対策」ユーティリティおよび「ディスククリーンアップ」ユーティリティ)が、入手可能である。明らかに善意からであるが、それらのプログラムおよびサービスは、さらに別の場当たり的なイベントを、コンピュータのディスク上のビットの結果としての蓄積に導入することにより、問題を単にいっそうひどくする可能性がある。
従来のソフトウェアベースのコンピュータは、本質的に脆弱である。1つの理由は、コンピュータの蓄積したビットの集合が、せいぜい、個々の事例に基づく(anecdotal)不完全な記述を有するからである。それらの不完全な記述は、単に、同一の一連の場当たり的なイベントの結果に過ぎず、ディスク上のビット、またはそれらのビットをもたらした一連のイベントを体系的に記述しない。また、それらの記述には、システム構成が、どのようであるべきかの、完全な、または部分的な指定、あるいは指定に照らして状態を確認する方法も揃えられていない(unmatched)。
以下の事実が、従来のソフトウェアベースのコンピュータの欠点を示す。すなわち、任意のオフライン「システムイメージ」を所与として、一般に、そのシステムイメージが、動作可能なOS、または特定の動作可能なアプリケーションを含むと決定的に判定することができない。システムイメージは、従来のソフトウェアベースのコンピュータのハードディスク上に通常に保存された(persisted)コンテンツおよび構成情報のビットごとに対応する(bit−for−bit)コピーである。それらのコンテンツおよび構成が、前述したとおり、コンピュータを実現する。
システムイメージを所与として、そのイメージに特定のファイルが存在するかどうかを確認することができる。この確認は、特定のOS、または特定のアプリケーションに関して、いずれの特定のファイルがインストールされるかについての経験的な知識を利用して、行われることが可能である。しかし、そのような経験的な証拠は、必要なコンポーネント(特定のOS、または特定のアプリケーションの)のすべてがインストールされているかどうかを明かさない。そのような経験的な証拠は、競合するコンポーネントがインストールされているかどうかを明かさない。さらに、そのような経験的な証拠は、コンポーネント(特定のOS、または特定のアプリケーションの)のすべてが、動作可能なコンピュータをもたらすように正しく構成されているかどうかを明かさない。そのような確認は、必要であるが、不十分である。
特定のOSまたはアプリケーションが機能するのに必要な特定のファイルのすべての存在を経験的に特定した場合でも、その事実は、イメージ上の特定のOSまたはアプリケーションが正しく機能することを知るのに十分ではない。この場合も、それらの検査は、必要であるが、十分ではない。
実際、唯一の有効な従来の頼みの綱は、イメージのオフライン検査を放棄し、オンライン検査を実施することである。システムイメージを使用してコンピュータを起動し、結果を観察することができる。この従来のアプローチは、しばしば、実際的でなく、不十分であり、危険である。明らかに、このアプローチは、スケーラブル(scalable)ではない。
オンライン検査の従来のアプローチを使用しても、いずれの特定のアプリケーションおよび/またはOSコンポーネントがインストールされているか、もしくは、現在、実行されているかさえ、識別することは、しばしば、間違いなく困難である。しばしば、確認しているのは、特定の名前を有するアプリケーションまたはコンポーネントが、コンピュータ上に存在することだけである。この確認は、ソフトウェア開発者が、誤解させるような名前の使用を避けていることに頼る。そのような誤解させるような名前は、不注意で、または意図的に生じる可能性がある。
例えば、市販される既存のOS(Windows(登録商標)XPまたはLinuxのような)は、プロセスを開始するのに使用されるファイルの名前によって、実行中のプロセスのリストを示すことが可能であるが、それぞれの実行中のプロセスの名前は、プロセスの真の正体についての「ヒント」に過ぎない。例えば、当たり障りのない名前が付いたプロセスが、ウイルスによって乗っ取られ、別の潜在的に悪意のあるタスクに変えられている可能性がある。代替として、適切に名前の付けられたプロセスが、例えば、管理者が、一見、無関係のように見えるアプリケーションをインストールすることにより、壊れている可能性がある。
従来のソフトウェアベースのコンピュータでは、低レベルのソフトウェア抽象化と高レベルのソフトウェア抽象化の間に、記述的な構造上のリンクは、全く存在しない。これは、低レベルのソフトウェア抽象化と高レベルのソフトウェア抽象化を記述的に、必然的にリンクする、従来のソフトウェアベースのコンピュータの構造またはアーキテクチャに本来備わったものは何も存在しないことを意味する。
低レベルのソフトウェア抽象化には、例えば、ディスク上の特定のファイル群(例えば、ロードモジュール群)、およびコンピュータ上で実行される特定のプロセス群が含まれる。高レベルのソフトウェア抽象化には、例えば、アプリケーションプログラム群(例えば、Microsoft(登録商標)Publisher(登録商標)デスクトップパブリッシング製品)、およびアプリケーションのファミリ(例えば、オフィス生産性製品のMicrosoft(登録商標)Office(登録商標)スイート)が含まれる。
例えば、アプリケーションプログラムの概念は、ユーザ中心モデルの一部である。ユーザが特定の作業(例えば、ワードプロセッシング、スプレッドシート分析、およびデータベース管理)を達するのを助けるアプリケーションプログラム(またはグループのプログラム)が、ユーザに見える場合に、従来のソフトウェアベースのコンピュータには、単に、1つまたは複数のアクティブなプロセスが見える。アクティブなプロセス(およびそれらのプロセスのロードモデルソース)を、ユーザに見える(通常、グラフィカルユーザインタフェース(GUI)プロセスを介して)アプリケーションプログラムの表現に記述的に、必然的にリンクする、従来のソフトウェアベースのコンピュータのアーキテクチャに本来備わったものは何も存在しない。
いくつかの文献に上述のような従来の技術に関連した技術内容が開示されている(例えば、特許文献1、2参照)。
米国特許第6,292,941号明細書 米国特許第6,487,723号明細書
従来のシステムには上述したような種々の問題があり、さらなる改善が望まれている。
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、自己記述アーチファクトおよびアプリケーション抽象化を提供することにある。
本明細書で説明するのは、ソフトウェアベースのコンピュータの1つまたは複数のコンピュータ記憶媒体上に保存された複数の自己記述ソフトウェアアーチファクト(artifact)を使用する少なくとも1つのインプリメンテーションである。このインプリメンテーションでは、各アーチファクトは、コンピューティングシステムのソフトウェアコンポーネント(例えば、ロードモジュール、プロセス、アプリケーション、およびオペレーティングシステムコンポーネント)の少なくとも一部分を表し、各アーチファクトは、関連するアーチファクトのメタデータ宣言型記述(metadata declarative description)を含む、少なくとも1つの関連する「マニフェスト」によって記述される。
同一の符号は、すべての図面で、同様の要素および特徴を指すのに使用される。
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。
以下の説明は、自己記述ソフトウェアアーチファクトを使用するソフトウェアベースのコンピュータのためのコンピューティング技術を実施する技術を提示する。それらの技術の例示的なインプリメンテーションは、「例示的な自己記述アーチファクトアーキテクチャ」と呼ぶことができる。
例示的な自己記述アーチファクトアーキテクチャは、コンピュータサイエンスの分野に新鮮で、活性化をもたらすアプローチを提供する。ソフトウェアベースのコンピュータの寿命の間における一連の場当たり的なイベントからもたらされたビットの蓄積に過ぎないのではなく、この新たなアーキテクチャを利用するコンピュータのコンテンツおよび構成は、自己記述ソフトウェアアーチファクトの整理され、安定性があり、信頼できる、堅牢で、決定論的に構築可能な集合である。
新たなアーキテクチャを記述する前に、用語を簡単に説明するのが適切である。本明細書で使用する以下の用語を、ここで簡単に定義する。しかし、読者は、完全な説明の文脈で各用語の完全な意味を理解し、認識するように、完全なテキストを読むよう勧められる。
・ソフトウェアアーチファクト(または、単に「アーチファクト」)は、実行可能なエンティティ(例えば、プロセス、アプリケーション、オペレーティングシステムのコンポーネント)のオフライン表現(manifestation)であり、例えば、ロードモジュールおよび構成ファイルが含まれる。
・マニフェストは、実行可能なエンティティのメタデータ宣言型記述である。マニフェストは、実行可能なエンティティの各表現に関連することが可能である。マニフェストは、静的であっても、動的であってもよい。
・プロトタイプは、実行可能なエンティティの実行可能な(executable)(または「実行可能な(runable)」)表現であるが、エンティティのプロトタイプは、実行状態にはない。
・抽象化は、実行可能なエンティティが実行状態にある(「エンティティが実行されている」)場合の、実行可能なエンティティの表現である。
・コンポーネントは、実行可能なエンティティの表現の一部分、一部、または一構成要素であり、例えば、アプリケーションは、プロセスコンポーネントを含み、プロセスは、実行可能な命令をコンポーネントとして含む。
例示的な自己記述アーチファクトアーキテクチャ
図1は、例示的な自己記述アーチファクトアーキテクチャ100の1つの図を示す。この図では、アーキテクチャ100は、メモリ110(例えば、揮発性メモリ、不揮発性メモリ、リムーバブルなメモリ、リムーバブルでないメモリなどの)を備えて構成された、ソフトウェアベースのコンピュータ102上で実施される。コンピュータ102は、メモリ110内でアクティブなオペレーティングシステム(OS)112を有する。
コンピュータ102は、少なくとも1つのコンピュータ記憶装置120(例えば、「ハードディスク」)へのアクセスを有する。コンピュータ記憶装置120は、コンピュータ102を実現するコンテンツおよび構成を含む。コンテンツには、オペレーティングシステム(OS)、OS要素、すべてのインストール済みのアプリケーション、および他のすべての関連するコンポーネント(例えば、デバイスドライバ、インストールファイル、データ、ロードモジュールなど)を含む(例として、限定としてではなく)、様々なソフトウェアコンポーネントが含まれる。構成には、各ソフトウェアコンポーネントの指定されたプロパティ、およびコンポーネント間の定義された相互関係が含まれる。
この説明では、「システム」についての言及は、記憶装置120のコンテンツおよび構成によって実現された、ソフトウェアベースのコンピュータ102を表す。システムの保存されたオフライン(すなわち、実行されていない)コピーを、本明細書では、「システムイメージ」と呼ぶことができる。
図1は、例えば、記憶装置120上に格納された3つのアーチファクト(130、140、および150)を示す。本明細書で、「ソフトウェアアーチファクト」、または単に「アーチファクト」は、コンピュータ記憶装置120上に格納された個々のソフトウェアアイテムの集合である。それらのアイテムの一部は、ファイルシステム、データベース、構成レジストリなどを含め、様々なシステムストアの中に格納されてもよい。それらのアーチファクトは、システムを実現するコンテンツおよび構成を表す。コンピュータの記憶装置は、多数のアーチファクトを有することが可能である。コンピュータのシステムイメージは、多数のアーチファクトを含む。
従来のソフトウェアベースのコンピュータとは異なり、コンピュータ102のアーチファクトは、単に、コンピュータの寿命の間における一連の場当たり的なイベントからもたらされるビットの蓄積ではない。それどころか、コンピュータ102のアーチファクトのそれぞれは、少なくとも1つのマニフェストに関連する。例えば、システムアーチファクト130は、アーチファクト130とともに関連するマニフェスト132を格納しているか、または記憶装置120上の何らかの導き出せる(derivable)ロケーション、または既知のロケーションに格納している。アーチファクト140は、関連するマニフェスト142を、アーチファクト150は、関連するマニフェスト152をそれぞれ有する。
それらのアーチファクトは、アーチファクトのそれぞれが(関連するメタデータマニフェストを介して)、自己を記述するため、「自己記述アーチファクト」と呼ばれる。宣言型(例えば、実行されるべきアクションのリスト)であるのではなく、自己記述メタデータ記述は、アーチファクトの所望される状態の宣言型記述である。
各記述は、アーチファクトに整合性があり、正しいために必要な状態の完全な規範的レコードである。類比により(by analogy)、指示セットが手続き型である一方で、正確なアドレスは、宣言型であり、新たな計算を許す、例えば、そのアドレスを使用して、異なる開始点に関する新たな指示セットを特定することができるという意味で、より強力である。宣言型記述には、アーチファクトの相互依存関係、およびシステムの他のコンポーネントとの相互関係の全部のレコードが含まれる。
それらのメタデータ記述は、低レベルのソフトウェア抽象化と高レベルのソフトウェア抽象化を実質的に橋渡しする。低レベルのソフトウェア抽象化には、例えば、記憶装置上の特定のアーチファクト(例えば、ロードモジュール)、およびコンピュータ上で実行される特定のプロセスが含まれる。高レベルのソフトウェア抽象化には、例えば、実行中のアプリケーションプログラム、およびアプリケーションのファミリが含まれる。また、高レベルのソフトウェア抽象化には、実行中のオペレーティングシステム(OS112のような)およびそのようなOSの諸要素も含まれることが可能である。
図1に示すとおり、コンピュータ102は、メモリ110内に、コンピュータ102上のアーチファクトの自己記述プロパティを利用する3つの監督機能および管理機能のコンポーネントを有する。それらの機能コンポーネントには、自己記述アーチファクトマネージャ160、実行ゲートキーパ162、およびシステムベリファイア(verifier)164が含まれる。
それらの機能コンポーネントのそれぞれを、図1では別々に示しているが、コンポーネントの機能を結合して、より少ないコンポーネントにしても、追加のコンポーネントに拡張してもよい。さらに、それらの機能コンポーネントは、コンピュータのOS112の一部であっても、コンピュータ102のOSではないコンポーネントの一部であってもよい。
自己記述アーチファクトマネージャ160は、記憶装置120上の自己記述アーチファクトを管理する。その管理の一環として、マネージャは、アーチファクトの保存(persistence)および構造化を容易にすることができる。マネージャは、各アーチファクトとそのアーチファクトのマニフェストの間の関連付けの保持を確実にすることができる。マネージャは、アーチファクトの、そのアーチファクトのマニフェストの中の記述に対する整合性を確実にすることができる。さらに、マネージャは、システムの構成の変更に応答して、自己記述アーチファクトを更新することができる。
自己記述アーチファクトマネージャ160は、記憶装置120からのアーチファクトの読み込みに関する最適化を支援することができる。自己記述アーチファクトマネージャは、コンピュータのアプリケーション群およびOSの全体的動作のより広い見通しを有することができる。その見通しに基づき、自己記述アーチファクトマネージャ160は、いずれのアーチファクト(例えば、ロードモジュール)が、特定のアプリケーションためのプロセスにおいて組み合わせられるかを特定することができる。次に、マネージャは、アーチファクトを組み合わせて、より少ない、おそらく最適化された数のアーチファクトにすることができる。同様に、システムマニフェスト(システム全体の宣言型記述を含む)を使用して、いずれのアプリケーションが間もなく呼び出されるかを特定して、自己記述アーチファクトマネージャは、一部のアプリケーションの起動を、それらのアプリケーションが実際に呼び出される前に、促すことができる。
実行ゲートウェイ162が、アプリケーション(および、場合により、他の実行可能なコンポーネント)の呼び出しを許可する。アプリケーションの呼び出しが、保留中である際、実行ゲートキーパ162は、アプリケーションの関連する自己記述アーチファクトを検査する。自己記述アーチファクトの中の宣言型記述は、関連するアプリケーションに要求される明示的な静的状態または動的状態を指定することが可能である。典型的な明示的条件の例が、アプリケーションの実行が成功するためにシステム上に存在しなければならない、必要なコンポーネントのリストである。典型的な明示的条件の別の例が、アプリケーション自体が起動される前に、起動されていなければならない(または、指定された現在の状態にある)アプリケーション群およびシステムコンポーネント群のリストである。
ゲートキーパは、現在の条件を検査し、それらの条件が、関連するアーチファクトの宣言型記述の中で指定された諸要件を満たす場合、アプリケーションの呼び出しを許す。諸要件を満たさない場合、ゲートキーパは、アプリケーションの呼び出しを許可しない。
実行ゲートキーパ162の支配で、いずれのコードも、そのコードが、関連するマニフェストの中で記述されていない限り、コンピュータ102上で実行されない。一実施形態では、関連するマニフェストの中で記述され、信頼されるソフトウェア発行者によって署名されたコードだけが、コンピュータ102上にインストールされ、実行されることが可能である。
さらに、実行ゲートキーパ162は、外部変更(例えば、悪意のないデータ破損、または悪意のある攻撃を介する)に対する検査として、システムの整合性の監査を実行することができる。監査は、システムの自己記述アーチファクトのマニフェストに基づく。
システムベリファイア164が、自己記述アーチファクトに対して1つまたは複数の検証を実行する。ベリファイア164は、そうするようにという手動の要求に応答して、アクション(例えば、新たなソフトウェアのインストール)に応答して、新たな情報が利用可能になったことに応答して、かつ/またはそうするようにスケジュールされて、検証を実行することができる。さらに、システムベリファイア164によって行われる検証は、少なくともある程度、自己記述アーチファクトのマニフェストの検査から収集された情報に基づく。
システムベリファイア164は、以下の検証の1つまたは複数を実行する。すなわち、
・コンピュータ102にインストール済みのソフトウェアのすべての依存関係が満たされていること、
・コンピュータ102のオペレーティングシステムが、コンピュータ102のハードウェア構成上で実行されるのに必要なすべてのデバイスドライバを含むこと、
・コンピュータ102におけるコードおよび構成設定が、偶然に、または悪意で変更されていないこと、
・アプリケーションが、コンピュータ102に正しくインストールされていること、
・既知の障害のある、または悪意のあるプログラムが、コンピュータ102にインストールされていないこと、
・インストール前に、アプリケーション、ならびにそのアプリケーションの構成コンポーネントおよび依存関係のすべてが、コンピュータ102上に存在すること、
・アプリケーションのコンポーネントをシステムに読み込む前に、そのアプリケーションが、コンピュータ102にインストール可能であること、
・新たなアプリケーションまたはシステムコンポーネントのインストールが、既存のアプリケーション群またはコンポーネント群と競合しないこと、
・アプリケーションまたはオペレーティングシステムコンポーネントを、他のアプリケーション群またはコンポーネント群からの依存関係を切ることなしに、削除することができること、
・アプリケーションまたはオペレーティングシステムが、事前定義されたローカルポリシーを遵守すること、
・アプリケーション起動のための必要な事前条件が、アプリケーションが起動される前に満たされること、
・事前条件が満たされないアプリケーションは、実行されることが許されないこと、および
・実行中、実行のための必要条件が、もはや有効でない場合、アプリケーションは、もはや実行されることが許されないことである。
図1に示すとおり、別のコンピュータ170が、独自のメモリ172(例えば、揮発性メモリ、不揮発性メモリ、リムーバブルなメモリ、リムーバブルでないメモリなど)を備えて構成される。このメモリは、内部にシステムインスペクタ(inspector)180を有する。
大きい矢印(large−headed arrow)で表すとおり、システムインスペクタ180は、入力として、コンピュータ102の「システムイメージ」を受け取る。つまり、インスペクタ180は、コンピュータ102のシステムを実現するコンテンツおよび構成のコピーを受け取る。このコピーは、コンピュータ102から直接に受け取られても、「システムイメージ」の別個のコピーとして間接的に受け取られてもよい。
システムインスペクタ180は、オフライン「システムイメージ」の分析を実行して、コンピュータ102が、特定の機能コンポーネント(OSまたはアプリケーション群などの)を含むと決定的に検証する。より詳細には、インスペクタは、自己記述アーチファクトを検査して、必要なコンポーネント(自己記述アーチファクトのマニフェストによって、そのようなコンポーネントとして記述され、参照される)のすべてが、見つかり、適切に識別されるかどうかを調べる。インスペクタは、その検査の結果を報告する。
アーチファクトに関するマニフェストの中に含まれる情報は、アーチファクトのライブラリ、コンポーネント、および依存関係のすべてを記述することにより、コンパイラ、または他の最適化ツールによって、インストール時、プログラム読み込み時、またはユーザが選択した別の時点で、アーチファクトの中のコードの最適化を円滑にするのに使用されることが可能である。この記述により、コンパイラまたはツールは、アーチファクトがアーチファクトの中のコードを実行する環境についての、より正確な想定を行うことができるようになる。
アーチファクトに関するマニフェストの中に含まれる情報は、アーチファクトのライブラリ、コンポーネント、および依存関係のすべてを記述することにより、エラー検出ツールによって、インストール時、プログラム読み込み時、またはユーザが選択した別の時点で、アーチファクトの中のコードの正しさを確実にすることを円滑にするのに使用されることが可能である。この記述により、ツールが、アーチファクト、ならびにアーチファクトの中のコードが実行される環境についての、より正確な想定を行うことができるようになる。
マニフェスト
マニフェストは、コンピュータ102のアーチファクトを記述するメタデータを含む。また、メタデータは、外部依存関係および外部インタフェースを含め、アーチファクトに関係する構成情報も記述する。また、マニフェストは、ソフトウェアコンポーネント間の接続関係も記述する。
例えば、発行者によって提供される「ProgramA」と呼ばれるアプリケーションに関するマニフェストは、バイナリロードモジュール(EXE、DLLなど)のリスト、コンポーネントおよび提供元の真正性を証明する証明書、構成設定の名前と、それらの設定の既定値のリスト、プログラムのロードモジュールによって要求される外部バイナリロードモジュールのリスト、プログラムによってアクセスされる外部の設定および名前のリスト、ならびに、ProgramAが、「.ZZZ」という拡張子を有するファイルに関する既定のエディタであるのを望むことをオペレーティングシステムに知らせるのに要求される情報のような、ProgramAによって公開される名前および設定のリストを含む。
少なくとも1つの実施形態では、自己記述アーチファクトのマニフェストは、以下を可能にするのに十分な情報を提供する宣言型記述を含む。すなわち、
・プログラムインストールソフトウェアが、プログラム内に含まれるいずれの場当たり的なコードも実行することなしに、プログラムコンポーネントのインストールまたはアンインストールを行うこと、
・プログラムをインストールする個人またはエージェントが、プログラムコンポーネントを他のプログラム群またはリソース群にバインドすること、
・プログラムをインストールする個人またはエージェントが、あらゆる構成可能な既定の設定を無効にすること、
・プログラムをインストールする個人またはエージェントが、プログラムを、システム全体に関するマニフェストの一部にすること、
・特定のプログラムのインストールまたはアンインストールが正しく行われたことを、インスペクタソフトウェア(例えば、システムインスペクタ180)が、プログラム独自のコンテキストと、システム全体のコンテキストの両方において検証すること、
・特定のプログラムが、現在、実行可能であるかどうかを、検証ソフトウェア(例えば、システムベリファイア164)が判定すること、
・特定のプログラムがインストールされ、実行されることを可能にするのに必要なすべての依存関係が、システム上で満たされているかどうかを、プレインストール(pre−installation)ソフトウェアが判定すること、
・特定のプログラムをインストールする個人またはエージェントが、プログラム、またはシステム全体の将来の動作の他の諸態様を特定すること、
・コンパイラまたは最適化ツールが、アーチファクトの中のコード、ならびにそのコードが実行される環境の正確な記述を得ること、および
・エラー検出ツールが、アーチファクトの中のコード、ならびにそのコードが実行される環境の正確な記述を得ることである。
マニフェストは、プログラムまたはシステムに関する、すべての入手可能なメタデータを含む必要はないが、さらなるメタデータを信頼できる形で探し出すことを可能にするのに十分な情報を提供する必要がある。一実施形態では、例えば、あるプログラムに関するバイナリロードモジュール(EXE、DLLなど)が、特定のロードモジュールに関連するメタデータを参照するメタデータを含む。この実施形態では、マニフェストは、ロードモジュール内部の、そのさらなるメタデータの存在をシステムに知らせる。
一実施形態では、マニフェストは、マニフェストの各サブコンポーネントのタイプを明らかにする。サブコンポーネントタイプは、サブコンポーネントのコンテンツを解釈し、コンポーネントからさらなるメタデータを抽出し、コンポーネントに関するさらなるメタデータを導出することをどのように行うかを知っている、ヘルパ(helper)ソフトウェアを明らかにする。
例えば、一実施形態では、マニフェストの中で記述されたロードモジュールは、それらのモジュールが、通信要件の遵守のような、あるソフトウェアプロパティに従うかどうかを、検証ツールが判定することを可能にする、抽象命令セットで表現される。ロードモジュールに関するマニフェストは、各ロードモジュールのために使用される正確な抽象命令セットを明らかにして、いずれのヘルパソフトウェアを読み込んで、通信要件などの特定のシステムプロパティを検証するかを、システムベリファイア164が特定することができるようにする。
ある実施形態のさらに別の態様では、システムの諸部分の間の互換性を判定するのに使用される情報が、コンポーネントと独立に提供されるとともに、コンポーネントと一緒にも提供される。その情報は、多くのソースから届くことが可能であり、ローカル管理者またはローカルエージェントは、部分的な情報、または矛盾する情報のあいまいさを除くために、規則を定義すること、または規則に従うことができる。
ある実施形態のさらに別の態様では、システムの諸部分の間の互換性を判定するのに使用される情報は、新たな情報が、適切な場所で入手可能になるにつれ、または古い情報が取り消されるにつれ、時間とともに変化する。
マニフェストは、組み合わせて、任意の複雑さのソフトウェアシステムを記述するグラフにすることができる。マニフェストは、依存関係として外部マニフェストを参照することができる。また、マニフェストは、埋め込まれたマニフェストを含むことも可能である。一実施形態では、アプリケーションに関するマニフェストは、アプリケーションのサブコンポーネントに関するマニフェストを含むか、またはそのようなマニフェストを使用する。
アプリケーションの発行者によって行われたパッケージ決定に依存して、サブコンポーネントは、マニフェストの中に埋め込まれることも、外部エンティティとして参照されることも可能である。一実施形態では、外部依存関係は、依存関係の名前およびバージョン番号、または他の明確にする情報を含む。別の実施形態では、外部依存関係には、署名入りのダイジェスト(signed digest)を介して名前が付けられる。別の実施形態では、この情報は、更新されること、取り消されること、および明確にされること(すなわち、あいまいさが除かれること)が可能である。
一実施形態では、アプリケーションに関するマニフェストは、パッケージされ、関連するアプリケーションとともに提供される。別の実施形態では、アプリケーションに関するマニフェストは、パッケージされ、関連するアプリケーションとは別個に提供される。これにより、おそらく、アプリケーションの複数のコンポーネントが、別々に、関連するマニフェストの提供の後に、提供されることが可能である。
一実施形態では、外部マニフェストは、外部情報のソースとして参照されることも可能である。それらの外部マニフェストには、個々に名前が付けられても、グループのメンバとして名前が付けられてもよい。
2つの形態のマニフェスト、すなわち、静的マニフェストおよび動的マニフェストが存在する。静的マニフェストは、ソフトウェアアーチファクトに関連して格納される。動的マニフェストは、そのマニフェストに関連する実行可能なコンポーネントのランタイム中に使用される。動的マニフェストは、静的メタデータ(やはり、ランタイムに入手可能な)、ならびに、ランタイムに構築されて、プロセスやオペレーティングシステムオブジェクトのようなランタイムシステム要素を結び付ける、さらなる動的メタデータを含む。
この態様は、低レベルのインプリメンテーションの概念から、より高いレベルの概念にまで橋渡しすることをさらに可能にする。ソフトウェアアーチファクトの自己記述の特徴は、静的システム上だけでなく、実行中のアクティブなシステム上でも役立つ。例えば、実行中のプロセスシステムの「適格さ(well−formedness)」および/または整合性は、システムイメージの検証と同様の形で検証することができる。
一実施形態では、「ueber」マニフェストは、コンピュータ102上で、直接に、または間接的に利用可能なすべてのソフトウェアを、そのようなソフトウェアがインストールされているか否かに関わらず、記述する。
例示的な自己記述アーチファクトの管理およびゲートキーピングの方法上のインプリメンテーション
図2は、自己記述アーチファクトマネージャ160および/または実行ゲートキーパ162によって実行される方法200を示す。この方法上のインプリメンテーションは、ソフトウェアで実行されても、ハードウェアで実行されても、ソフトウェアとハードウェアの組み合わせで実行されてもよい。理解を容易にするため、方法は、図2に独立のブロックとして表す別々のステップとして示すが、それらの別々に示したステップは、ステップの実行の際に必ずしも順序に依存していると解釈してはならない。さらに、説明のため、方法200は、図2を参照して説明する。
図2の210で、自己記述アーチファクトマネージャ160が、マニフェストを関連するアーチファクトと一緒に保存することを円滑にする。図1に示したとおり、マニフェスト132は、システムアーチファクト130に関連して保存されるか、または記憶装置120上の何らかの導き出すことができるロケーション、または既知のロケーションに格納される。同様に、マニフェスト142および152は、アプリケーションアーチファクト140および150に関連して格納される。
212で、自己記述アーチファクトマネージャ160は、システムのコンテンツおよび/または構成の変化に応じて、システムの自己記述アーチファクトを更新する。そのような変化は、例えば、新たなコンテンツのインストール、手動の構成変更、およびオペレーティングシステムによって実行された自動的構成変更の結果であることが可能である。更新は、適用される前に、システムマニフェストの集合のコンテキストにおいてチェックされて、適用された場合、更新が、存立可能なシステムをもたらすことが確実にされることが可能である。
214で、自己記述アーチファクトマネージャ160は、実行のためにアーチファクトの使用を最適化する。マネージャは、いずれのロードモジュールが、アプリケーションに関するプロセスの中で組み合わせられるかを特定することができる。次に、マネージャは、ロードモジュールを組み合わせて、一緒に最適化されている、より少ない数のロードモジュールにすることができる。同様に、システムマニフェストを使用して、いずれのアプリケーションが間もなく呼び出されるかを特定して、自己記述アーチファクトマネージャは、一部のアプリケーションの起動を、それらのアプリケーションが実際に呼び出される前に、促すことができる。
216で、実行ゲートキーパ162は、関連する自己記述アーチファクトを検査して、関連するアプリケーション(または他のプログラム)の実行を許すかどうかを、現在の条件、および関連するマニフェストの宣言型記述に基づき、判定する。そのような判定が行われると、ゲートキーパは、関連するアプリケーション(または他のプログラム)の実行を制限する、または阻止することができる。
例えば、コンピュータのローカルポリシーにより、いずれのアプリケーションを呼び出すことができ、いずれのアプリケーションを呼び出すことができないか、ならびにアプリケーションを呼び出すことができる形が、正確に記述される可能性がある。記述される場合、ゲートキーパは、指定された形での呼び出しだけを許す。
218で、システムベリファイア164が、外部変更に対して、システムの整合性を監査する。監査は、システムの自己記述アーチファクトのマニフェストに基づく。例えば、ロードモジュールのマニフェストは、1つまたは複数の関連するロードモジュールのコンテンツの署名入りダイジェストを含むことが可能である。ゲートキーパは、すべてのロードモジュールのコンテンツを定期的に確認して、それらのコンテンツが、それらのコンテンツの指定されたダイジェストと合致するかどうかを調べることができる。
例示的なシステム検証の方法上のインプリメンテーション
図3は、システムベリファイア164によって実行される方法300を示す。この方法上のインプリメンテーションは、ソフトウェアで実行されても、ハードウェアで実行されても、ソフトウェアとハードウェアの組み合わせで実行されてもよい。理解を容易にするため、方法は、図3に独立のブロックとして表す別々のステップとして示すが、それらの別々に示したステップは、ステップの実行の際に必ずしも順序に依存していると解釈してはならない。さらに、説明のため、方法300は、図3を参照して説明する。
図3の310で、システムベリファイア164は、トリガイベントに応答する。トリガイベントの例には(例として、限定としてではなく)、手動検証要求を受け取ること、別のプログラム(例えば、インストールソフトウェア)によるアクションの実行、およびスケジュール時刻イベントが含まれる。そのトリガイベントは、識別可能であり、特定のタイプの所望される検証に関連することが可能である。
312で、システムベリファイア164が、自己記述アーチファクトのマニフェストを検査して、それらのマニフェストから情報を収集する。
314で、ベリファイアは、コンピュータ102のオンラインのアクティブなシステムの検証を実行する。より詳細には、この検証は、自己記述アーチファクトの検証である。可能なこととして、それらの検証は、オフラインの「システムイメージ」に対しても実行されることが可能である。
ベリファイアによって実行される検証は、完全に機能する条件におけるシステムの安定性、整合性、および堅牢性を促進するように設計される。以下は、システムベリファイア164によって実行されることが可能な、例示的な検証のリストである(リストは、例として、限定としてではなく、提供されている)。すなわち、
・コンピュータ102にインストール済みのソフトウェアのすべての依存関係が満たされていることを検証すること、
・コンピュータ102のオペレーティングシステムが、コンピュータ102のハードウェア構成上で実行されるのに必要なすべてのデバイスドライバを含むことを検証すること、
・コンピュータ102におけるコードが、偶然に、または悪意で変更されていないことを検証すること、
・アプリケーションが、コンピュータ102に正しくインストールされていることを検証すること、
・既知の障害のある、または悪意のあるプログラムが、コンピュータ102にインストールされていないことを検証すること、
・インストール前に、アプリケーション、ならびにそのアプリケーションの構成コンポーネントおよび依存関係のすべてが、コンピュータ102上に存在することを検証すること、
・アプリケーションのコンポーネントをシステムに読み込む前に、そのアプリケーションが、コンピュータ102にインストール可能であることを検証すること、
・新たなアプリケーションまたはシステムコンポーネントのインストールが、既存のアプリケーション群またはコンポーネント群と競合しないことを検証すること、
・アプリケーションまたはオペレーティングシステムコンポーネントを、他のアプリケーション群またはコンポーネント群からの依存関係を切ることなしに、削除することができることを検証すること、および
・アプリケーションまたはオペレーティングシステムが、事前定義されたローカルポリシーを遵守することを検証することである。
316で、ベリファイアは、検証の結果を何であれベリファイアを呼び出したもの(例えば、OS112および/またはユーザ)に報告する。
システム検査
この新たなアーキテクチャは、従来のソフトウェアベースのコンピュータの欠点の多くを克服する。例えば、新たなアーキテクチャを使用するソフトウェアベースのコンピュータの任意のオフライン「システムイメージ」を所与として、実際、そのイメージが、動作可能なOS、または特定の動作可能なアプリケーションを含むと決定的に判定することができる。これは、従来のアーキテクチャを使用するソフトウェアベースのコンピュータでは、行うことができない。
各アーチファクトのマニフェストは、ソフトウェアベースのコンピュータのコンテンツおよび構成の永続的(persistent)「システムイメージ」内に格納される(または、そのような「システムイメージ」とともに取り出すことができる)。アーチファクトは、関連するメタデータ(アーチファクトのマニフェストの)が、イメージがオフラインである場合に、検査されることが可能である(例えば、システムインスペクタ180によって)ような形で格納される。さらに、イメージの他のコンテンツも、検査されることが可能である。
以上を行う際に、システムインスペクタ180は、システムのコンテンツ、および将来の動作について明確な言明(strong statement)を行う。これは、システムイメージのメタデータ、および他の部分が、分散ストアにわたって分散しており、それらが、システムが起動され、実行される際にだけ一緒になるようになっている場合でも、可能である。自己記述アーチファクトの静的マニフェスト、ならびに関連するプロトタイプおよび抽象化の提案される、または予期される動的マニフェストを検査することにより、システムインスペクタ180は、ソフトウェアベースのコンピュータ102のいくつかのプロパティを検証することができる。
例えば、インスペクタは、構成検証(compositional verification)をサポートするプロパティのクラスを検証することができる。つまり、インスペクタは、ソフトウェアベースのコンピュータ102のコンポーネントの必要な要素のすべてが、保存されたシステムイメージ上に存在するかどうか、ならびにそれらの要素が、正しく構成されていることを確認することができる。
プロパティは、そのプロパティに関して、コンポーネントを個々に検証することができる場合、構成上、検証可能であり、構成されると、システムは、コンポーネントのすべてを再検証することなしに、同一のプロパティを保持するものと理解されることが可能である。例えば、プログラミングシステムでは、型の安全性は、個々のロードモジュールが、型安全であると検証されることが可能である場合、構成上、検証可能であると考えられ、正当に組み合わせられると、ロードモジュールは、型の安全性を保持する。そのケースでは、システムインスペクタ180は、新たなロードモジュールが追加されるたびに、システム全体にわたる複雑な検証を要することなしに、各ロードが、型安全であることを検証し、次に、ロードモジュールが正当な形で組み合わせられていることを検証することができる。
例示的なシステム検査の方法上のインプリメンテーション
図4は、システムインスペクタ180によって実行される方法400を示す。この方法上のインプリメンテーションは、ソフトウェアで実行されても、ハードウェアで実行されても、ソフトウェアとハードウェアの組み合わせで実行されてもよい。理解を容易にするため、方法は、図4に独立のブロックとして表す別々のステップとして示すが、それらの別々に示したステップは、ステップの実行の際に必ずしも順序に依存していると解釈してはならない。さらに、説明のため、方法400は、図4を参照して説明する。
図4の410で、システムインスペクタ180が、コンピュータ102のような、ソフトウェアベースのコンピュータのオフライン「システムイメージ」のコピーを獲得する。このアクションは、図1に、大きい矢印で示す。
412で、システムインスペクタ180は、オフラインシステムイメージの分析を実行して、コンピュータ102が、特定の機能コンポーネント(OSまたはアプリケーション群などの)を含むと決定的に検証する。より詳細には、インスペクタは、自己記述アーチファクトを検査して、必要なコンポーネント(自己記述アーチファクトのマニフェストによって、そのようなコンポーネントとして記述され、参照される)のすべてが、見つかり、適切に識別されるかどうかを調べる。
414で、インスペクタは、その分析の結果を報告する。
抽象化
オペレーティングシステムは、計算を枠に入れ、プログラマが、専門の分野により完全に集中することにより、ソフトウェアをより容易に作成することができるようにする抽象化を提供する。抽象化は、1つまたは複数のコンポーネントのモデルを表し、このモデルは、それらのコンポーネントを、他のすべての種類のコンポーネントから区別する、それらのコンポーネントの基本的な特性を表し、明確に定義された概念上の境界を提供する。
既存のオペレーティングシステム抽象化の例には、ストレージを制御し、管理するファイルシステム抽象化、I/Oデバイス群を制御するI/O抽象化、グラフィカルユーザインタフェース(GUI)抽象化、計算を保持するプロセス抽象化、およびプロセス間の通信を可能にするプロセス間通信(IPC)抽象化が含まれる。
以上の基本的な抽象化がなければ、プログラマは、一般的なタスクを実行するために、独自の場当たり的な方法を考案することを余儀なくされる。決まって、そのような多様な場当たり的な方法は、プログラマの生産性を低下させ、広範にわたる作業の繰り返しをもたらし、システムエラーを増加させる。
少なくとも1つのインプリメンテーションでは、例示的な自己記述アーチファクトアーキテクチャは、以下を含む、新たなオペレーティングシステム抽象化を作成する。すなわち、
・オペレーティングシステムおよびプログラム群を含む、「実行可能な」(例えば、コンピュータ102上で実行可能な)ソフトウェアシステムを表すシステムプロトタイプ、
・オペレーティングシステムおよびプログラム群を含む、アクティブな、または「実行中の」システムを表すシステム抽象化、
・実行可能なアプリケーションプログラムを表すアプリケーションプロトタイプ、
・アクティブな、または「実行中の」プログラムのインスタンスを表すアプリケーション抽象化、および
・実行可能なプロセスを表すプロセスプロトタイプである。
図5は、この新たなアーキテクチャを実施することができるソフトウェアベースのコンピュータの例示的な構造500を示す。この構造500は、従来の抽象化およびプロトタイプのコンテキストにおいて、この新たなアーキテクチャによって導入される新たな抽象化およびプロトタイプを含む。図5の上から下まで、この例示的な構造500内の4つの層は、以下のとおりである。すなわち、
1.以下を含むシステム層510、すなわち、
・システム抽象化512(オペレーティングシステムコンポーネント(例えば、スケジューラ、IPCマネージャ、I/Oマネージャ、セキュリティマネージャ、ガベージコレクション(garbage collection)、およびメモリマネージャなど)、および他の任意のシステムレベルのコンポーネント)、ならびに、包含により、すべてのアプリケーション、
・少なくとも1つのシステムに関連するシステムプロトタイプ514、
・OSおよびアプリケーション群を含む、少なくとも1つのシステムに関連するシステムマニフェスト516、
2.以下を含むアプリケーション層520、すなわち、
・1つまたは複数のアプリケーション抽象化522、
・アプリケーション抽象化の少なくとも1つに関連するアプリケーションプロトタイプ524、
・少なくとも1つのアプリケーションベースのアーチファクトに関連するアプリケーションマニフェスト526、
3.以下を含むプロセス層530、すなわち、
・1つまたは複数のプロセス抽象化532、
・プロセス抽象化の少なくとも1つに関連するプロセスプロトタイプ534、
・少なくとも1つのプロセスベースのアーチファクトに関連するプロセスマニフェスト536、および
4.少なくとも1つのロードソースアーチファクト(例えば、ロードモジュール)に関連するロードソースマニフェスト546を含む、ロードソース層540である。
完全にするため、システムモデルは、実行中のソフトウェアシステム全体を表すシステム抽象化も含むことが可能である。実際には、オペレーティングシステム512自体、通常、システム抽象化として作用する。
マニフェストは、ソフトウェアコンポーネント(例えば、プロセス要素、アプリケーション要素、またはOS要素)の宣言型記述である。マニフェストとソフトウェアコンポーネントが、互いに関連付けられて保存されている場合、コンポーネントは、自己記述アーチファクトである。
マニフェストは、プロトタイプを作成するのに使用される。マニフェスト、および記述されるアーチファクトをシステムにインストールする動作により、プロトタイプが作成される。プロトタイプは、ソフトウェアコンポーネントの「実行可能な(runable)」、または「実行可能な(executable)」表現である。プロトタイプは、ソフトウェアコンポーネントのインスタンス、または抽象化を作成するのに使用される。インスタンスまたは抽象化は、プロトタイプの「実行中の(running)」または「実行中の「executing」」表現である。
例示的な構造500では、右から左への矢印は、「によって記述される」と読まれる。したがって、例えば、最上層510は、次のように読むことができる。すなわち、OS抽象化512が、システムプロトタイプ514「によって記述され」、プロトタイプ514は、「システムマニフェスト」516「によって記述される」。
この構造では、左から右への矢印は、「作成するのに使用される」と読まれる。したがって、例えば、第2の層520は、次のように読むことができる。すなわち、アプリケーションマニフェスト526が、アプリケーションプロトタイプ524を「作成するのに使用され」、プロトタイプ524は、アプリケーション抽象化516を「作成するのに使用される」。
同様に、各層のメンバは、他の層におけるメンバ間の定義された関係を有する。順々に高い層の各メンバは、より低い層の同様のメンバを参照するか、または含む。
例示的な構造500では、上から下への矢印は、「含む」または「監督する(supervise)」と読まれる。したがって、例えば、システムマニフェスト516は、アプリケーションマニフェスト526を「含み」、マニフェスト526は、プロセスマニフェスト536を「含み」、マニフェスト536は、ロードソースマニフェスト546を「含む」。
この構造では、下から上への矢印は、「の中に含まれる」または「によって監督される」と読まれる。したがって、例えば、プロセスプロトタイプ534は、アプリケーションプロトタイプ524「によって監督され」、プロトタイプ524は、システムプロトタイプ514によって「監督される」。
代替のインプリメンテーションでは、例示的な自己記述アーチファクトアーキテクチャは、異なる数の層、異なる層構成、および/または異なる抽象化を有する。
システムマニフェスト516は、システム全体(すなわち、アーチファクトのすべて)を記述する。マニフェスト516は、各オペレーティングシステムコンポーネントおよび各アプリケーションに関するマニフェストをポイントする最上レベルのマニフェストである。範囲に依存して、個々のオペレーティングシステムコンポーネントは、アプリケーションマニフェスト、プロセスマニフェスト、またはロードソースマニフェストで記述される。
アプリケーションマニフェスト526は、プロセスマニフェスト536を含む。このため、アプリケーションマニフェストは、アプリケーション(アプリケーション抽象化522によって表される)が実行された際に作成されるプロセスを記述する、もしくは指定する。また、アプリケーションマニフェストは、アプリケーションによって公開される、または要求されるプロセス間通信インタフェースを明らかにし、アプリケーション内のプロセスのプロセス間通信インタフェース間のバインドを記述することもできる。
プロセスマニフェスト526は、プロセス(プロセス抽象化532によって表される)の中に含まれるロードモジュールを記述する、または指定するロードモジュールマニフェストを含む。プロセスマニフェストは、各プロセスによって公開される、または要求されるプロセス間通信インタフェースを明らかにし、ロードモジュール上のコードとデータインタフェース群の間のバインドを記述することができる。
ロードソースマニフェスト536は、ロードモジュールの実行可能なコードを含む、保存されたバイナリファイルを記述し、もしくは指定し、そのロードモジュールによって要求される、さらなるロードモジュールを明らかにする。ロードソースマニフェストは、ロードモジュールによって公開される、または要求されるコード、およびデータインタフェース群を明らかにする。
ある実施形態は、実行中のプロセスに関するマニフェスト、およびプロセスプロトタイプに関するマニフェスト、実行中のアプリケーションに関するマニフェスト、およびアプリケーションプロトタイプに関するマニフェスト、実行中のオペレーティングシステムコンポーネントに関するマニフェスト、およびそれらのコンポーネントのプロトタイプに関するマニフェスト、ハードウェアデバイスに関するマニフェスト、およびシステム全体に関する1つまたは複数のマニフェストを含め、いくつかのタイプのマニフェストをサポートすることができる。そのような実施形態では、相異なるマニフェストが、同一の構造上の要素を共有し、再使用することが可能である。
アプリケーション抽象化
単にユーザ中心モデルの一部であるのではなく、アプリケーションプログラムの概念は、実際に、以上の例示的な自己記述アーチファクトアーキテクチャ100の一部である。詳細には、OS112(またはOS112の諸部分)が、「アプリケーション抽象化」の概念を本来的に認識する。関連するマニフェストによって記述されるとおり、アプリケーション抽象化は、特定の低レベルの抽象化(アクティブなプロセス、およびそれらのプロセスのロードソースなどの)、および特定の高レベルの抽象化(オペレーティングシステムなどの)に記述的、かつ必然的にリンクされる。
ユーザが、直接にか、または間接的に、プログラムを実行すると、OS112が、アプリケーションプロトタイプ(アプリケーションプロトタイプ524のような)から、アプリケーション抽象化(アプリケーション抽象化522のような)のインスタンスを作成する。アプリケーションのインスタンスを作成することは、プロセスプロトタイプによって記述されるプロセスの新たなインスタンスを作成することを含む。
アプリケーションの静的記述は、1つまたは複数のアプリケーションマニフェスト(アプリケーションマニフェスト526のような)として実現される。OS112は、プロセスをアプリケーションにリンクし、プロセスをプロセスプロトタイプにリンクし、アプリケーションをアプリケーションプロトタイプにリンクする「動的」メタデータを保持する。また、OS112は、プロセスプロトタイプおよびアプリケーションプロトタイプをそれぞれのマニフェストにリンクする、さらなる動的メタデータも保持する。
アプリケーション抽象化は、動的オブジェクトとして実現される。他のソフトウェアコンポーネント(OSの一部などの)は、動的アプリケーション抽象化オブジェクトと通信して、いずれのアプリケーションが実行されているかを特定し、いずれのプロセスが、アプリケーションに属するかを特定し、やはり入手可能な、マニフェストなどの、他のメタデータを取得することができる。例えば、プロセスのIDを所与として、プログラムは、そのプロセスが属するアプリケーションのIDをOSに求めることができ、アプリケーションのIDを所与として、プログラムは、そのアプリケーションのアプリケーションプロトタイプのIDをオペレーティングシステムに求めることができるといった具合である。
例示的なアプリケーション抽象化管理の方法上のインプリメンテーション
図6は、アプリケーション抽象化を作成し、管理する目的で、OS112によって実行される方法600、または方法600の諸部分を示す。この方法上のインプリメンテーションは、ソフトウェアで実行されても、ハードウェアで実行されても、ソフトウェアとハードウェアの組み合わせで実行されてもよい。理解を容易にするため、方法は、図6に独立のブロックとして表す別々のステップとして示すが、それらの別々に示したステップは、ステップの実行の際に必ずしも順序に依存していると解釈してはならない。さらに、説明のため、方法600は、図6を参照して説明する。
図6の610で、OS112は、トリガイベントを認識する。トリガイベントの例には(例として、限定としてではなく)、ユーザから手動プログラム呼び出し要求を受け取ること、別のプログラムから呼び出し要求を受け取ること、およびプログラム呼び出しのためのスケジュールされた時刻のイベントが含まれる。そのトリガイベントは、通常、呼び出されるべきアプリケーションを明らかにする。
612で、OS112は、アプリケーションプロトタイプによって記述される、明らかにされたアプリケーションのインスタンスを作成する。このインスタンスが、「アプリケーション抽象化」と呼ばれる。図5の例示的な構造500で示すとおり、アプリケーション抽象化を作成することは、プロセスプロトタイプによって記述される、関連するプロセスの新たなインスタンスを作成することを含む。
614で、OSは、関連するプロセスを、明らかにされたアプリケーション抽象化にリンクし、プロセスをプロセスプロトタイプにリンクし、アプリケーション群をアプリケーションプロトタイプ群にリンクする「動的」メタデータを保持する。
616で、OSは、他のソフトウェアコンポーネントによるアプリケーション抽象化の識別、およびアプリケーション抽象化との通信を円滑にする。
例示的なコンピューティングシステムおよびコンピューティング環境
図7は、本明細書で説明する、例示的な自己記述アーチファクトアーキテクチャを実施することができる(完全にか、または部分的に)、適切なコンピューティング環境700の実施例を示す。コンピューティング環境700は、本明細書で説明するコンピュータアーキテクチャおよびネットワークアーキテクチャにおいて利用することができる。
典型的なコンピューティング環境700は、コンピューティング環境の一実施例に過ぎず、コンピュータアーキテクチャおよびネットワークアーキテクチャの用法または機能の範囲について、全く限定を示唆することは意図していない。また、コンピューティング環境700が、例示的なコンピューティング環境700に示したコンポーネントのいずれの1つ、または組み合わせに関連する依存関係または要件も有すると解釈してはならない。
例示的な自己記述アーチファクトアーキテクチャは、他の多数の汎用または専用のコンピューティングシステム環境またはコンピューティングシステム構成で実施することができる。使用に適する可能性がある、周知のコンピューティングシステム、コンピューティング環境、および/またはコンピューティング構成の例には、パーソナルコンピュータ、サーバコンピュータ、シンクライアント、シッククライアント、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、パーソナルデジタルアシスタント(PDA)、機器、専用エレクトロニクス(例えば、DVDプレーヤ)、プログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、以上のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれるが、以上には限定されない。
例示的な自己記述アーチファクトアーキテクチャは、コンピュータによって実行される、プログラムモジュールなどの、プロセッサ実行可能命令の一般的な状況で説明することができる。一般に、プログラムモジュールには、特定のタスクを実行する、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。また、例示的な自己記述アーチファクトアーキテクチャは、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される、分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含む、ローカルコンピュータ記憶媒体とリモートコンピュータ記憶媒体の両方の中に配置することができる。
コンピューティング環境700は、コンピュータ702の形態で汎用コンピューティングデバイスを含む。コンピュータ702のコンポーネントには、1つまたは複数のプロセッサ704、システムメモリ706、ならびにプロセッサ704からシステムメモリ706までを含む様々なシステムコンポーネントを結合するシステムバス708が含まれることが可能であるが、以上には限定されない。
システムバス708は、様々なバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポート(accelerated graphics port)、およびプロセッサバスまたはローカルバスを含め、いくつかのタイプのバス構造のいずれかの1つまたは複数を表す。例として、そのようなアーキテクチャには、CardBus、パーソナルコンピュータメモリカードインタナショナルアソシエーション(PCMCIA)、アクセラレーテッドグラフィックスポート(Accelerated Graphics Port)(AGP)、スモールコンピュータシステムインタフェース(SCSI)、ユニバーサルシリアルバス(USB)、IEEE1394、ビデオエレクトロニクススタンダーズアソシエーション(Video Electronics Standards Association)(VESA)ローカルバス、およびメザニン(Mezzanine)バスとしても知られる、ペリフェラルコンポーネントインタコネクツ(Peripheral Component Interconnects)(PCI)バスが含まれることが可能である。
コンピュータ702は、通常、様々なプロセッサ可読媒体を含む。そのような媒体は、コンピュータ702がアクセスすることができる任意の利用可能な媒体であることが可能であり、揮発性媒体と不揮発性媒体、リムーバブルな媒体とリムーバブルでない媒体がともに含まれる。
システムメモリ706は、ランダムアクセスメモリ(RAM)710のような、揮発性メモリ、および/または読み取り専用メモリ(ROM)712のような不揮発性メモリの形態のプロセッサ可読媒体を含む。起動中などに、コンピュータ702内部の要素間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム(BIOS)714が、ROM712の中に格納される。RAM710は、通常、プロセッサ704が即時にアクセスすることができ、かつ/または、現在、処理しているデータおよび/またはプログラムモジュールを含む。
また、コンピュータ702は、他のリムーバブルな/リムーバブルでない、揮発性/不揮発性のコンピュータ記憶媒体も含むことが可能である。例として、図7は、リムーバブルでない不揮発性の磁気媒体(図示せず)に対して読み取りおよび書き込みを行うためのハードディスクドライブ716、リムーバブルな不揮発性の磁気ディスク720(例えば、「フロッピー(登録商標)ディスク」)に対して読み取りおよび書き込みを行うための磁気ディスクドライブ718、およびCD−ROM、DVD−ROM、または他の光媒体などの、リムーバブルな不揮発性の光ディスク724に対して読み取りおよび/または書き込みを行うための光ディスクドライブ722を示す。ハードディスクドライブ716、磁気ディスクドライブ718、および光ディスクドライブ722はそれぞれ、1つまたは複数のデータ媒体インタフェース725でシステムバス708に接続される。代替として、ハードディスクドライブ716、磁気ディスクドライブ718、および光ディスクドライブ722は、1つまたは複数のインタフェース(図示せず)でシステムバス708に接続してもよい。
ディスクドライブ群、および関連するプロセッサ可読媒体により、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性ストレージが、コンピュータ702に提供される。実施例は、ハードディスク716、リムーバブルな磁気ディスク720、およびリムーバブルな光ディスク724を示しているが、磁気カセットまたは他の磁気記憶装置、フラッシュメモリカード、CD−ROM、デジタルバーサタイルディスク(DVD)または他の光ストレージ、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、電気的に消去可能なプログラマブルな読み取り専用メモリ(EEPROM)などの、コンピュータがアクセスできるデータを格納することが可能な、他のタイプのプロセッサ可読媒体を利用して、例示的なコンピューティングシステムおよびコンピューティング環境を実施することも可能であることを認識されたい。
例として、オペレーティングシステム726、1つまたは複数のアプリケーションプログラム728、その他のプログラムモジュール群730、およびプログラムデータ732を含め、任意の数のプログラムモジュールを、ハードディスク716、磁気ディスク720、光ディスク724、ROM712、および/またはRAM710に格納することができる。
ユーザは、キーボード734やポインティングデバイス736(例えば、「マウス」)などの入力デバイス群を介して、コマンドおよび情報をコンピュータ702に入力することができる。他の入力デバイス群738(特に図示せず)には、マイク、ジョイスティック、ゲームパッド、サテライトディッシュ、シリアルポート、スキャナ、および/または類似物が含まれることが可能である。以上、およびその他の入力デバイスは、システムバス708に結合された入出力インタフェース群740を介してプロセッサ704に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの、他のインタフェースおよびバス構造で接続してもよい。
また、モニタ742、または他のタイプのディスプレイデバイスも、ビデオアダプタ744のようなインタフェースを介して、システムバス708に接続されることが可能である。モニタ742に加え、他の周辺出力デバイス群には、入出力インタフェース群740を介してコンピュータ702に接続することができる、スピーカ(図示せず)やプリンタ746などのコンポーネントが含まれることが可能である。
コンピュータ702は、リモートコンピューティングデバイス748などの、1つまたは複数のリモートコンピュータに対する論理接続を使用する、ネットワーク化された環境において動作することもできる。例として、リモートコンピューティングデバイス748は、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイス、または他の一般的なネットワークノードなどであることが可能である。リモートコンピューティングデバイス748は、コンピュータ702に関して、本明細書で説明した諸要素および諸特徴の多く、またはすべてを含むことが可能なポータブルコンピュータとして図示する。
コンピュータ702とリモートコンピュータ748の間の論理接続は、ローカルエリアネットワーク(LAN)750、および一般的なワイドエリアネットワーク(WAN)752として図示する。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータ網、イントラネット、およびインターネットで一般的である。そのようなネットワーキング環境は、有線であることも、無線であることも可能である。
LANネットワーキング環境で実施される場合、コンピュータ702は、ネットワークインタフェースまたはネットワークアダプタ754を介して、ローカルネットワーク750に接続される。WANネットワーキング環境で実施される場合、コンピュータ702は、通常、ワイドネットワーク752を介して通信を確立するためのモデム756、またはその他の手段を含む。コンピュータ702の内部にあることも、外部にあることも可能なモデム756は、入出力インタフェース群740、または他の適切な機構を介してシステムバス708に接続することができる。図示したネットワーク接続は、例示的であり、コンピュータ702とコンピュータ748の間で通信リンクを確立する他の手段を使用してもよいことを認識されたい。
コンピューティング環境700で示したような、ネットワーク化された環境では、コンピュータ702に関連して示したプログラムモジュール群、またはプログラムモジュール群の諸部分は、リモートメモリ記憶装置の中に格納することができる。例として、リモートアプリケーションプログラム群758が、リモートコンピュータ748のメモリデバイス上に存在する。例示のため、アプリケーションプログラム群、ならびにオペレーティングシステムなどの、他の実行可能なプログラムコンポーネント群を本明細書では、別々のブロックとして示すが、そのようなプログラム群およびコンポーネント群は、様々な時点で、コンピューティングデバイス702の異なるストレージコンポーネントの中に存在し、コンピュータのデータプロセッサによって実行されることを認識されたい。
プロセッサ実行可能命令
例示的な自己記述アーチファクトアーキテクチャのインプリメンテーションは、1つまたは複数のコンピュータまたは他のデバイスによって実行される、プログラムモジュールなどの、プロセッサ実行可能命令の一般的な状況で説明することができる。一般に、プログラムモジュールには、特定のタスクを実行する、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。通常、プログラムモジュール群の機能は、様々な実施形態において、所望に応じて組み合わせても、分散させてもよい。
例示的な動作環境
図7は、例示的な自己記述アーチファクトアーキテクチャを実施することができる適切な動作環境700の実施例を示す。具体的には、本明細書で説明する例示的な自己記述アーチファクトアーキテクチャは、図7の任意のプログラムモジュール群728〜730および/またはオペレーティングシステム726またはその一部によって実施することができる(全体として、または部分的に)。
この動作環境は、適切な動作環境の実施例に過ぎず、本明細書で説明する例示的な自己記述アーチファクトアーキテクチャの機能の範囲または用法について、全く限定を示唆することは意図していない。使用するのに適した、他の周知のコンピューティングシステム、コンピューティング環境、および/またはコンピューティング構成には、パーソナルコンピュータ(PC)、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブル家庭用電化製品、無線電話および無線機器、汎用機器および専用機器、特定用途向け集積回路(ASIC)、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、以上のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれるが、以上には限定されない。
プロセッサ可読媒体
例示的な自己記述アーチファクトアーキテクチャのインプリメンテーションは、何らかの形態のプロセッサ可読媒体上に格納すること、またはそのような媒体を介して伝送することができる。プロセッサ可読媒体は、コンピュータがアクセスすることができる任意の利用可能な媒体であることが可能である。例として、プロセッサ可読媒体は、「コンピュータ記憶媒体」および「通信媒体」を含むことが可能であるが、以上には限定されない。
「コンピュータ記憶媒体」には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を格納するために任意の方法または技術で実装された、揮発性媒体および不揮発性媒体、リムーバブルな媒体およびリムーバブルでない媒体が含まれる。コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタルバーサタイルディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望の情報を格納するのに使用することができ、コンピュータがアクセスすることができる他の任意の媒体が含まれるが、以上には限定されない。
「通信媒体」は、通常、搬送波などの変調されたデータ信号、または他のトランスポート機構で、プロセッサ可読命令、データ構造、プログラムモジュール、またはその他のデータを実現する。また、通信媒体には、あらゆる情報配信媒体も含まれる。
結論
本明細書で説明した諸技術は、プログラムモジュール、汎用コンピューティングシステムおよび専用コンピューティングシステム、ネットワークサーバおよびネットワーク機器、専用エレクトロニクスおよび専用ハードウェアを含む(ただし、以上には限定されない)、多くの形で、1つまたは複数のコンピュータネットワークの一部として実施することができる。本明細書で説明した諸技術は、例えば、図7に示したコンピュータシステム上で実施することができる。より詳細には、それらの技術は、例えば、図7に示したコンピュータシステム上のオペレーティングシステムによって実施されることが可能である。
以上に説明した1つまたは複数のインプリメンテーションを、構造上の特徴および/または方法上のステップに固有の言い回しで説明してきたが、他のインプリメンテーションは、説明した特定の特徴またはステップなしに実施してもよいことを理解されたい。むしろ、特定の特徴およびステップは、1つまたは複数のインプリメンテーションの好ましい形態として開示している。
本明細書で説明するインプリメンテーションに関する例示的な動作シナリオを示す図である。 保存された(persisted)自己記述アーチファクトの管理のため、ならびに少なくとも部分的に自己記述アーチファクトから成るソフトウェアコンポーネントの実行に関するゲートキーピング(gatekeeping)を実行するための、本明細書で説明する、1つまたは複数の方法上のインプリメンテーションを示す流れ図である。 保存された自己記述アーチファクトを検証する本明細書で説明する方法上のインプリメンテーションを示す流れ図である。 少なくとも部分的に、保存された自己記述アーチファクトから成るオフライン「システムイメージ」を検査する本明細書で説明する方法上のインプリメンテーションを示す流れ図である。 ソフトウェアコンポーネント(例えば、ロードモジュール、プロセス、アプリケーション、およびオペレーティングシステムコンポーネント)の間の、本明細書で説明するインプリメンテーションによる例示的な相互関係構造を示す図である。 アプリケーション抽象化を作成し、管理する、本明細書で説明する方法上のインプリメンテーションを示す流れ図である。 本明細書で説明する少なくとも1つの実施形態を実施することができる(完全に、または部分的に)コンピュータ動作環境の実施例を示す図である。
符号の説明
110、172 メモリ
112 オペレーティングシステム
130 システムアーチファクト
140 アプリケーションアーチファクト
150 アプリケーションアーチファクト
160 自己記述アーチファクトマネージャ
162 実行ゲートキーパ
164 システムベリファイア
180 オフラインシステムインスペクタ

Claims (15)

  1. プロセッサ実行可能命令を実行するように構成されたプロセッサと、
    前記プロセッサに結合されたメモリと、
    前記プロセッサに結合され、コンピューティングシステムのソフトウェアコンポーネントを表す複数の自己記述ソフトウェアアーチファクトを永続的に保存するように構成されたストレージサブシステムであって、各ソフトウェアアーチファクトが、実行可能なエンティティのコンテンツおよび構成を表すオフライン表現を備え、各実行可能なエンティティが、プロセス、アプリケーション、またはオペレーティングシステムのコンポーネントのうちのいずれか1つのソフトウェアコンポーネントである、ストレージサブシステムと
    を備え、
    前記複数の自己記述ソフトウェアアーチファクトのそれぞれは、関連する永続的に保存されたマニフェストを有し、
    各マニフェストは、前記マニフェストのソフトウェアアーチファクトのメタデータ宣言型記述を含み、
    各マニフェストは、関連する実行可能なエンティティのメタデータ宣言型記述を含み、
    特定の実行可能なエンティティの複数の表現が存在する場合、別個のマニフェストが前記特定の実行可能なエンティティの各表現に関連付けられ、
    各マニフェストは、2つの形態のうちの1つで存在し、
    マニフェストが静的マニフェストの形態である場合、該静的マニフェストは、ソフトウェアアーチファクトに関連して格納され、
    マニフェストが動的マニフェストの形態である場合、該動的マニフェストは、ランタイムに入手可能な静的メタデータとランタイムに構築されて複数のランタイムシステム要素を結び付ける動的メタデータとを含むように、関連する実行可能なエンティティのそれぞれのランタイム中に使用される
    ことを特徴とするコンピューティングシステム。
  2. 前記コンピューティングシステムの前記ソフトウェアコンポーネントは、前記コンピューティングシステム上にインストールされ、前記プロセッサ上で実行されるように構成されたオペレーティングシステム要素およびアプリケーションを含むことを特徴とする請求項1に記載のシステム。
  3. 前記ストレージサブシステムは、前記複数の自己記述ソフトウェアアーチファクトの宣言型記述を含むシステムマニフェストを永続的に保存することを特徴とする請求項1に記載のシステム。
  4. 前記自己記述ソフトウェアアーチファクトを管理するように構成されたアーチファクトマネージャをさらに備えたことを特徴とする請求項1に記載のシステム。
  5. プロセッサによって実行されると、
    それぞれが、実行可能なエンティティのコンテンツおよび構成を表すオフライン表現を備え、コンピューティングシステム上にインストールされた動作可能なオペレーティングシステムコンポーネントまたは動作可能なアプリケーションを表す、複数の自己記述ソフトウェアアーチファクトを、前記コンピューティングシステム上に永続的に保存する動作と、
    前記複数の自己記述ソフトウェアアーチファクトにそれぞれ関連する複数のマニフェストを永続的に保存する動作であって、特定の実行可能なエンティティの複数の表現が存在する場合、別個のマニフェストが前記特定の実行可能なエンティティの各表現に関連付けられ、前記マニフェストは、
    前記複数の自己記述ソフトウェアアーチファクト、および
    関連する実行可能なエンティティ
    のメタデータ宣言型記述を含む、動作と、
    各マニフェストは、静的マニフェストの形態または動的マニフェストの形態のいずれかであって、
    マニフェストが静的マニフェストの形態の場合、自己記述ソフトウェアアーチファクトに関連する前記静的マニフェストを格納する動作と、
    マニフェストが動的マニフェストの形態の場合、前記動的マニフェストが、ランタイムに構築されて複数のランタイムシステム要素を結び付ける動的メタデータを含むように、関連する実行可能なエンティティのランタイム中に前記動的マニフェストを使用する動作と
    を含む処理を実行するプロセッサ実行可能命令を有することを特徴とする1つまたは複数のコンピュータ記録媒体。
  6. 前記処理は、前記マニフェストを検査して、前記複数の自己記述ソフトウェアアーチファクトに関する情報を検出する動作をさらに含むことを特徴とする請求項5に記載の1つまたは複数のコンピュータ記録媒体。
  7. プロセッサによって実行されると、
    コンピューティングシステム上に永続的に保存された複数の自己記述ソフトウェアアーチファクトと前記複数の自己記述ソフトウェアアーチファクトに関連するマニフェストとを検査して、前記自己記述ソフトウェアアーチファクトと前記マニフェストに関する情報を収集する動作であって、
    各ソフトウェアアーチファクトは、実行可能なエンティティのコンテンツおよび構成を表すオフライン表現を含み、各実行可能なエンティティは、プロセス、アプリケーション、またはオペレーションシステムのコンポーネントのうちの1つであり、
    前記マニフェストは、前記複数の自己記述ソフトウェアアーチファクトおよび関連する実行可能なエンティティのメタデータ宣言型記述を含み、
    特定の実行可能なエンティティの複数の表現が存在する場合、別個のマニフェストが、前記特定の実行可能なエンティティの各表現に関連付けられ、
    各マニフェストは、静的マニフェストの形態または動的マニフェストの形態のいずれかで存在し、
    前記静的マニフェストの形態のマニフェストは、ソフトウェアアーチファクトに関連して格納され、
    前記動的マニフェストの形態のマニフェストは、ランタイムに構築されて複数のランタイムシステム要素を結び付ける動的メタデータを含むように、関連する実行可能なエンティティのそれぞれのランタイム中に使用される、収集する動作と、
    前記複数の自己記述ソフトウェアアーチファクトに対して検証を実行する動作と、
    前記検証の結果を報告する動作と
    を含む処理を実行するプロセッサ実行可能命令を有することを特徴とする1つまたは複数のコンピュータ記録媒体。
  8. 前記処理は、アプリケーションコンピュータにインストールる前に、アプリケーション、および該アプリケーションの構成コンポーネント依存関係のすべてが、前記コンピュータからアクセス可能であることを検証する動作をさらに含むことを特徴とする請求項7に記載の1つまたは複数のコンピュータ記録媒体。
  9. 前記処理は、たなアプリケーションのインストールが、既存のアプリケーションと競合しないことを検証する動作をさらに含むことを特徴とする請求項7に記載の1つまたは複数のコンピュータ記録媒体。
  10. 前記処理は、プリケーションを、他のアプリケーションとの依存関係を切ることな削除することができることを検証する動作をさらに含むことを特徴とする請求項7に記載の1つまたは複数のコンピュータ記録媒体。
  11. プロセッサによって実行されると、
    ソフトウェアベースのコンピュータ上にインストールされたソフトウェアコンポーネントのコンテンツおよび構成を表すオフラインシステムイメージのコピーを獲得する動作であって、前記インストールされたソフトウェアコンポーネントは、前記システムイメージ上で自己記述ソフトウェアアーチファクトとして表わされ、各ソフトウェアアーチファクトは、実行可能なエンティティのコンテンツおよび構成を表すオフライン表現を含み、各実行可能なエンティティは、プロセス、アプリケーション、オペレーティングシステムのコンポーネントのうちの1つであり、各自己記述ソフトウェアアーチファクトは、前記マニフェストのソフトウェアアーチファクトのメタデータ宣言型記述および関連する実行可能なエンティティのメタデータ宣言型記述を含む、関連する永続的に保存されたマニフェストを有し、特定の実行可能なエンティティの複数の表現が存在する場合は、別個のマニフェストが前記特定の実行可能なエンティティの各表現に関連付けられ、各マニフェストは、静的マニフェストの形態または動的マニフェストの形態のいずれかで存在する、獲得する動作と、
    第1のマニフェストが前記静的マニフェストの形態で存在する場合、前記第1のマニフェストをソフトウェアアーチファクトに関連して格納する動作と、
    第2のマニフェストが前記動的マニフェストの形態で存在する場合、前記第2のマニフェストが、ランタイムに構築されて複数のランタイムシステム要素を結び付ける動的メタデータを含むように、関連する実行可能なエンティティのそれぞれのランタイム中に前記第2のマニフェストを使用する動作と、
    前記オフラインシステムイメージの前記自己記述ソフトウェアアーチファクトを分析する動作と、
    前記分析する動作の結果を報告する動作と
    を含む処理を実行するプロセッサ実行可能命令を有することを特徴とする1つまたは複数のコンピュータ記録媒体。
  12. 前記処理は、前記分析する動作に基づき、前記オフラインシステムイメージの中の前記ソフトウェアコンポーネントを識別する動作をさらに含むことを特徴とする請求項11に記載の1つまたは複数のコンピュータ記録媒体。
  13. 前記処理は、
    前記分析する動作に基づき、前記オフラインシステムイメージの中の前記ソフトウェアコンポーネントを識別する動作と、
    前記オフラインシステムイメージの中の前記識別されたソフトウェアコンポーネントが、不具合を含むかどうかを判定する動作と
    をさらに含むことを特徴とする請求項11に記載の1つまたは複数のコンピュータ記録媒体。
  14. 前記コンピューティングシステムの前記ソフトウェアコンポーネントは、オペレーティングシステム要素およびアプリケーションを含むことを特徴とする請求項11に記載の1つまたは複数のコンピュータ記録媒体。
  15. 前記オフラインシステムイメージは、前記自己記述ソフトウェアアーチファクトの宣言型記述を有する永続的に保存されたシステムマニフェストを含むことを特徴とする請求項11に記載の1つまたは複数のコンピュータ記録媒体。
JP2005354079A 2004-12-07 2005-12-07 自己記述アーチファクトおよびアプリケーション抽象化 Expired - Fee Related JP4828218B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/007,808 2004-12-07
US11/007,808 US7451435B2 (en) 2004-12-07 2004-12-07 Self-describing artifacts and application abstractions

Publications (3)

Publication Number Publication Date
JP2006164287A JP2006164287A (ja) 2006-06-22
JP2006164287A5 JP2006164287A5 (ja) 2009-03-05
JP4828218B2 true JP4828218B2 (ja) 2011-11-30

Family

ID=36284372

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005354079A Expired - Fee Related JP4828218B2 (ja) 2004-12-07 2005-12-07 自己記述アーチファクトおよびアプリケーション抽象化

Country Status (3)

Country Link
US (1) US7451435B2 (ja)
EP (1) EP1669901A3 (ja)
JP (1) JP4828218B2 (ja)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9361243B2 (en) 1998-07-31 2016-06-07 Kom Networks Inc. Method and system for providing restricted access to a storage medium
US8234477B2 (en) 1998-07-31 2012-07-31 Kom Networks, Inc. Method and system for providing restricted access to a storage medium
US7814198B2 (en) 2007-10-26 2010-10-12 Microsoft Corporation Model-driven, repository-based application monitoring system
JP4833568B2 (ja) * 2005-03-15 2011-12-07 株式会社リコー 情報処理装置、画像形成装置、起動プログラムおよび記憶媒体
US20060265387A1 (en) * 2005-05-20 2006-11-23 International Business Machines Corporation Method and apparatus for loading artifacts
US8849968B2 (en) 2005-06-20 2014-09-30 Microsoft Corporation Secure and stable hosting of third-party extensions to web services
US8495619B2 (en) * 2005-06-29 2013-07-23 Flexera Software Llc Method and system for pre-deployment conflict checking
US7657871B2 (en) * 2005-07-22 2010-02-02 Sbc Knowledge Ventures, L.P. Method and system of managing configuration profiles of a plurality of deployed network elements
US8074231B2 (en) 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
US8065666B2 (en) 2006-06-02 2011-11-22 Rockwell Automation Technologies, Inc. Change management methodologies for industrial automation and information systems
US8032898B2 (en) 2006-06-30 2011-10-04 Microsoft Corporation Kernel interface with categorized kernel objects
US7720931B2 (en) * 2006-10-13 2010-05-18 International Business Machines Corporation System and method of remotely managing and loading artifacts
US7761559B2 (en) * 2006-10-13 2010-07-20 International Business Machines Corporation System and method of remotely managing and loading artifacts
US20080155495A1 (en) * 2006-11-27 2008-06-26 Sourcecode Technology Holding, Inc. Methods and apparatus for modeling a workflow process in an offline environment
US8479283B2 (en) * 2006-11-28 2013-07-02 Microsoft Corporation Generating security validation code automatically
US8327327B2 (en) 2007-03-21 2012-12-04 Carnegie Mellon University Method for statically checking an object-oriented computer program module
US8789063B2 (en) 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
US8024396B2 (en) * 2007-04-26 2011-09-20 Microsoft Corporation Distributed behavior controlled execution of modeled applications
US8239505B2 (en) * 2007-06-29 2012-08-07 Microsoft Corporation Progressively implementing declarative models in distributed systems
US7970892B2 (en) * 2007-06-29 2011-06-28 Microsoft Corporation Tuning and optimizing distributed systems with declarative models
US20090037466A1 (en) * 2007-07-31 2009-02-05 Cross Micah M Method and system for resolving feature dependencies of an integrated development environment with extensible plug-in features
US8230386B2 (en) 2007-08-23 2012-07-24 Microsoft Corporation Monitoring distributed applications
US20090063623A1 (en) * 2007-08-31 2009-03-05 International Business Machines Corporation Determining connection information to use to access an artifact from an application on a remote server
US8225308B2 (en) * 2007-10-26 2012-07-17 Microsoft Corporation Managing software lifecycle
US7974939B2 (en) 2007-10-26 2011-07-05 Microsoft Corporation Processing model-based commands for distributed applications
US8181151B2 (en) * 2007-10-26 2012-05-15 Microsoft Corporation Modeling and managing heterogeneous applications
US8099720B2 (en) 2007-10-26 2012-01-17 Microsoft Corporation Translating declarative models
US7926070B2 (en) 2007-10-26 2011-04-12 Microsoft Corporation Performing requested commands for model-based applications
US20090172637A1 (en) * 2007-12-28 2009-07-02 Microsoft Corporation Markup-based language for manifests
US7657941B1 (en) 2008-12-26 2010-02-02 Kaspersky Lab, Zao Hardware-based anti-virus system
US9588803B2 (en) 2009-05-11 2017-03-07 Microsoft Technology Licensing, Llc Executing native-code applications in a browser
US20110288932A1 (en) * 2010-05-21 2011-11-24 Inedible Software, LLC, a Wyoming Limited Liability Company Apparatuses, systems and methods for determining installed software applications on a computing device
US9043863B1 (en) 2010-09-07 2015-05-26 Symantec Corporation Policy enforcing browser
US8832855B1 (en) 2010-09-07 2014-09-09 Symantec Corporation System for the distribution and deployment of applications with provisions for security and policy conformance
US8955152B1 (en) * 2010-09-07 2015-02-10 Symantec Corporation Systems and methods to manage an application
US9778915B2 (en) 2011-02-28 2017-10-03 Microsoft Technology Licensing, Llc Distributed application definition
US9891939B2 (en) * 2011-03-03 2018-02-13 Microsoft Technology Licensing, Llc Application compatibility with library operating systems
US9990184B2 (en) 2011-03-25 2018-06-05 Microsoft Technology Licensing, Llc Distributed component model
US9465589B2 (en) 2011-04-05 2016-10-11 Microsoft Technology Licensing, Llc Stateful component authoring and execution
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US8555250B2 (en) * 2011-05-31 2013-10-08 Microsoft Corporation Static semantic analysis of dynamic languages
US9256401B2 (en) 2011-05-31 2016-02-09 Microsoft Technology Licensing, Llc Editor visualization of symbolic relationships
US8752035B2 (en) 2011-05-31 2014-06-10 Microsoft Corporation Transforming dynamic source code based on semantic analysis
US8789018B2 (en) 2011-05-31 2014-07-22 Microsoft Corporation Statically derived symbolic references for dynamic languages
US8996916B2 (en) 2011-08-16 2015-03-31 Future Dial, Inc. System and method for identifying problems via a monitoring application that repetitively records multiple separate consecutive files listing launched or installed applications
US8825722B2 (en) * 2012-01-13 2014-09-02 Microsoft Corporation Calculation of properties of objects/shapes across versions of applications
US9875090B2 (en) * 2012-12-20 2018-01-23 Microsoft Technology Licensing, Llc Program analysis based on program descriptors
US8954939B2 (en) 2012-12-31 2015-02-10 Microsoft Corporation Extending a development environment
WO2015191731A1 (en) * 2014-06-13 2015-12-17 The Charles Stark Draper Laboratory, Inc. Systems and methods for software analytics
US9304763B1 (en) * 2014-08-21 2016-04-05 Amdocs Software Systems Limited System, method, and computer program for big data integration and configuration
US20160313958A1 (en) * 2015-04-27 2016-10-27 Microsoft Technology Licensing, Llc Cross-platform command extensibility
US10977016B2 (en) * 2017-10-31 2021-04-13 EMC IP Holding Company LLC Management of data using templates
US10817402B2 (en) * 2018-01-03 2020-10-27 Nec Corporation Method and system for automated building of specialized operating systems and virtual machine images based on reinforcement learning
US11086901B2 (en) 2018-01-31 2021-08-10 EMC IP Holding Company LLC Method and system for efficient data replication in big data environment

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8400291D0 (en) 1984-01-06 1984-02-08 Wiggins Teape Group Ltd Fibre reinforced plastics sheets
US4916637A (en) * 1987-11-18 1990-04-10 International Business Machines Corporation Customized instruction generator
JP2720904B2 (ja) * 1990-08-31 1998-03-04 富士通株式会社 自己記述によるデータベース管理システムの構成方法および開発/変更方法
US5481717A (en) * 1993-04-12 1996-01-02 Kabushiki Kaisha Toshiba Logic program comparison method for verifying a computer program in relation to a system specification
US5590001A (en) * 1994-03-15 1996-12-31 Fujitsu Limited Breather filter unit for magnetic disk drive
US5794052A (en) * 1995-02-27 1998-08-11 Ast Research, Inc. Method of software installation and setup
US5752032A (en) * 1995-11-21 1998-05-12 Diamond Multimedia Systems, Inc. Adaptive device driver using controller hardware sub-element identifier
US6009476A (en) * 1995-11-21 1999-12-28 Diamond Multimedia Systems, Inc. Device driver architecture supporting emulation environment
US5951639A (en) * 1996-02-14 1999-09-14 Powertv, Inc. Multicast downloading of software and data modules and their compatibility requirements
US6292941B1 (en) * 1996-04-30 2001-09-18 Sun Microsystems, Inc. Operating system installation
US5768532A (en) * 1996-06-17 1998-06-16 International Business Machines Corporation Method and distributed database file system for implementing self-describing distributed file objects
US5974572A (en) * 1996-10-15 1999-10-26 Mercury Interactive Corporation Software system and methods for generating a load test using a server access log
US5878408A (en) * 1996-12-06 1999-03-02 International Business Machines Corporation Data management system and process
US5884018A (en) * 1997-01-28 1999-03-16 Tandem Computers Incorporated Method and apparatus for distributed agreement on processor membership in a multi-processor system
US6144992A (en) * 1997-05-09 2000-11-07 Altiris, Inc. Method and system for client/server and peer-to-peer disk imaging
US6038399A (en) * 1997-07-22 2000-03-14 Compaq Computer Corporation Computer manufacturing architecture with two data-loading processes
US6247128B1 (en) * 1997-07-22 2001-06-12 Compaq Computer Corporation Computer manufacturing with smart configuration methods
US5963743A (en) * 1997-08-29 1999-10-05 Dell Usa, L.P. Database for facilitating software installation and testing for a build-to-order computer system
US6351850B1 (en) * 1997-11-14 2002-02-26 Frank Van Gilluwe Computer operating system installation
US6182275B1 (en) * 1998-01-26 2001-01-30 Dell Usa, L.P. Generation of a compatible order for a computer system
IL123512A0 (en) * 1998-03-02 1999-03-12 Security 7 Software Ltd Method and agent for the protection against hostile resource use access
US6092189A (en) * 1998-04-30 2000-07-18 Compaq Computer Corporation Channel configuration program server architecture
US6161051A (en) * 1998-05-08 2000-12-12 Rockwell Technologies, Llc System, method and article of manufacture for utilizing external models for enterprise wide control
US6080207A (en) * 1998-06-04 2000-06-27 Gateway 2000, Inc. System and method of creating and delivering software
US6381742B2 (en) * 1998-06-19 2002-04-30 Microsoft Corporation Software package management
DE19837871C2 (de) * 1998-08-20 2000-06-08 Manfred Broy Verfahren zum automatischen Erzeugen eines Programms
US6029174A (en) * 1998-10-31 2000-02-22 M/A/R/C Inc. Apparatus and system for an adaptive data management architecture
US6066182A (en) * 1998-11-05 2000-05-23 Platinum Technology Ip, Inc. Method and apparatus for operating system personalization during installation
US6842782B1 (en) 1998-12-08 2005-01-11 Yodlee.Com, Inc. Method and apparatus for tracking functional states of a web-site and reporting results to web developers
US6442754B1 (en) * 1999-03-29 2002-08-27 International Business Machines Corporation System, method, and program for checking dependencies of installed software components during installation or uninstallation of software
US6782541B1 (en) 1999-05-28 2004-08-24 Avaya Technology Corp. System and method of exchanging information between software modules
US7167867B1 (en) * 1999-10-05 2007-01-23 Emc Corporation Self-describing file system
US6871344B2 (en) * 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
US7155713B1 (en) * 2000-04-27 2006-12-26 Microsoft Corporation Componentized operating system
US7310801B2 (en) * 2000-04-27 2007-12-18 Microsoft Corporation Servicing a component-based software product throughout the software product lifecycle
US6868539B1 (en) * 2000-06-28 2005-03-15 Microsoft Corp. System and method providing single application image
US7124408B1 (en) * 2000-06-28 2006-10-17 Microsoft Corporation Binding by hash
US6816905B1 (en) 2000-11-10 2004-11-09 Galactic Computing Corporation Bvi/Bc Method and system for providing dynamic hosted service management across disparate accounts/sites
US7260845B2 (en) * 2001-01-09 2007-08-21 Gabriel Kedma Sensor for detecting and eliminating inter-process memory breaches in multitasking operating systems
US20040015958A1 (en) 2001-05-15 2004-01-22 Veil Leonard Scott Method and system for conditional installation and execution of services in a secure computing environment
US7028305B2 (en) * 2001-05-16 2006-04-11 Softricity, Inc. Operating system abstraction and protection layer
US20030031404A1 (en) 2001-08-07 2003-02-13 Corvis Corporation Optical transmission systems including optical components and optical filters and methods of use therein
IL145105A (en) 2001-08-23 2007-02-11 Gregory Bondar Method and system for providing a web service by a plurality of web domains through a single ip address
CA2404552C (en) 2001-09-21 2008-12-09 Corel Corporation System and method for secure communication
US7711570B2 (en) * 2001-10-21 2010-05-04 Microsoft Corporation Application abstraction with dialog purpose
CN1630853A (zh) 2001-10-30 2005-06-22 皇家飞利浦电子股份有限公司 用于构造分布式软件成分的方法
JP2003233521A (ja) * 2002-02-13 2003-08-22 Hitachi Ltd ファイル保護システム
US7856631B2 (en) * 2002-05-08 2010-12-21 Sap Aktiengesellschaft Software delivery manager
US7222106B2 (en) * 2002-05-21 2007-05-22 International Business Machines Corporation Mechanisms for handling software license agreements on multi-user system
US7062764B2 (en) * 2002-06-17 2006-06-13 Microsoft Corporation System and method for manipulating offline software
DE10235455B9 (de) 2002-08-02 2008-01-24 Leo Elektronenmikroskopie Gmbh Teilchenoptische Vorrichtung und Verfahren zum Betrieb derselben
US7832011B2 (en) * 2002-08-30 2010-11-09 Symantec Corporation Method and apparatus for detecting malicious code in an information handling system
ATE516537T1 (de) * 2002-10-01 2011-07-15 Sap Ag Prüfung von skriptsprachen mit schnittstellen mittels annotationen in xml
EP1431873A1 (en) * 2002-12-19 2004-06-23 Hewlett-Packard Company, A Delaware Corporation Computer programming
US8255361B2 (en) 2003-01-31 2012-08-28 Oracle America, Inc. Method and system for validating differential computer system update
US20050005261A1 (en) * 2003-07-02 2005-01-06 Severin William B. Component integration engine
US7533103B2 (en) * 2003-07-22 2009-05-12 Sap Ag Self-describing business objects
US7403956B2 (en) * 2003-08-29 2008-07-22 Microsoft Corporation Relational schema format
US20050060687A1 (en) * 2003-09-15 2005-03-17 Ghazaleh David Abu Method and apparatus for documenting and describing object oriented programming logic
US20050091658A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Operating system resource protection
CA2576508A1 (en) * 2004-08-04 2006-02-16 Osa Technologies, Inc. Software and firmware adaptation for unanticipated/changing hardware environments

Also Published As

Publication number Publication date
US7451435B2 (en) 2008-11-11
EP1669901A2 (en) 2006-06-14
JP2006164287A (ja) 2006-06-22
US20060123412A1 (en) 2006-06-08
EP1669901A3 (en) 2008-01-23

Similar Documents

Publication Publication Date Title
JP4828218B2 (ja) 自己記述アーチファクトおよびアプリケーション抽象化
Zerouali et al. A formal framework for measuring technical lag in component repositories—and its application to npm
JP4263476B2 (ja) ハッシュによるアセンブリの完全性の確認のための方法、コンピュータ可読媒体及びプログラム
CN100407142C (zh) 具有自动完整性参考生成及维护的计算设备
US11455400B2 (en) Method, system, and storage medium for security of software components
CN101542446B (zh) 用于系统分析和管理的方法和装置
KR101475987B1 (ko) 오프라인 가상 환경의 개선 또는 오프라인 가상 환경에 관련된 방법 및 시스템
Lindorfer et al. Lines of malicious code: Insights into the malicious software industry
US9910743B2 (en) Method, system and device for validating repair files and repairing corrupt software
CN101278260B (zh) 使软件程序免于弱点和攻击的约束注入方法
US8490082B2 (en) System and method for representing user processes as software packages in a software package management system
US7409675B2 (en) Code rewriting
US20070101197A1 (en) System and method for representing system capabilities as software packages in a software package management system
JP2005534092A (ja) プログラムの潜在的にワームのような挙動の自動決定の方法および装置
US20150256549A1 (en) System, method, and computer program product for conditionally performing an action based on an attribute
JP6469028B2 (ja) オペレーティング・システム・リソースに対する機械語のネイティブイメージのアクセス制御のシステム及び方法
Christensen et al. {DECAF}: Automatic, adaptive de-bloating and hardening of {COTS} firmware
Cui et al. Tracking rootkit footprints with a practical memory analysis system
AU2019371545A1 (en) Management system, acquisition device and management method
US20090193411A1 (en) Method and system for assessing deployment and un-deployment of software installations
US20050049790A1 (en) System and method for validating whether a software application is properly installed
CN118946884B (zh) 用于安全地运行软件组件的方法
Singh SMART CONTRACT SECURITY
CN114691159A (zh) 软件安装包的处理方法、装置、存储介质及处理器
WO2024242971A1 (en) Unpacking software via auto-unpacker interception

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110824

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

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

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

Free format text: PAYMENT UNTIL: 20140922

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4828218

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

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

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