(57)【要約】【課題】構成可能なプログラムのための言語フレームワークを使用する優れた方法及び装置を得る。【解決手段】上記言語フレームワークを使用する方法及び装置が本明細書に開示される。一実施形態に係る方法は、少なくとも１つのソフトウェアコンポーネントが組み込まれてたアクティブコンテンツにアクセスするステップであり、各ソフトウェアコンポーネントが、アクティビティのシーケンスのワークフローを一緒に実施する複数のコンポーネントを有し、複数のコンポーネントが、１つ又は複数の外部サービス、１つ又は複数のユーザインターフェースコントロール、１つ又は複数の入力、および、１つ又は複数の出力を表す、当該ステップと、ソフトウェアコンポーネントを実行するステップであって、情報フローベースのセキュリティモデルを用いてコンポーネント間の通信を仲介する処理を含む当該ステップと、を含む。【選択図】図１
2011504256.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのソフトウェアコンポーネントが組み込まれているアクティブコンテンツ、にアクセスするステップであって、それぞれのソフトウェアコンポーネントが、アクティビティのシーケンスのワークフローを一緒に実施する複数のコンポーネントを有し、前記複数のコンポーネントが、１つ又は複数の外部サービス、１つ又は複数のユーザインターフェースコントロール、１つ又は複数の入力、および、１つ又は複数の出力を表す、当該ステップと、
前記ソフトウェアコンポーネントを実行するステップであって、情報フローベースのセキュリティモデルを用いてコンポーネント間の通信を仲介する処理を含む、当該ステップと、
を含む方法。
【請求項２】
命令を格納するための１つ又は複数のコンピュータ読取り可能記憶媒体を有する製品であって、
前記命令は、システムによって実行されるとき、
少なくとも１つのソフトウェアコンポーネントが組み込まれているアクティブコンテンツ、にアクセスするステップであって、それぞれのソフトウェアコンポーネントが、アクティビティのシーケンスのワークフローを一緒に実施する複数のコンポーネントを有し、前記複数のコンポーネントが、１つ又は複数の外部サービス、１つ又は複数のユーザインターフェースコントロール、１つ又は複数の入力、および、１つ又は複数の出力を表す、当該ステップと、
前記ソフトウェアコンポーネントを実行するステップであって、情報フローベースのセキュリティモデルを用いてコンポーネント間の通信を仲介する処理を含む、当該ステップと、
を含む方法を、前記システムに実施させる、
当該製品。
【請求項３】
複数のソフトウェアコンポーネントにアクセスするステップであって、それぞれのソフトウェアコンポーネントは、アクティビティのシーケンスのワークフローを一緒に実施する複数のコンポーネントを有し、前記複数のコンポーネントが、１つ又は複数の外部サービス、１つ又は複数のユーザインターフェースコントロール、１つ又は複数の入力、および、１つ又は複数の出力を表し、それぞれのソフトウェアコンポーネントは健全である、当該ステップと、
健全であると保証された単一のソフトウェアコンポーネントを作成するために前記複数のソフトウェアコンポーネント上で構成操作を実施するステップと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータソフトウェア及びその作成の分野に関し、より具体的には、本発明は、証明可能な安全なやり方で構成することができ、またウェブサービス、デバイス又は他のアプリケーション及びコンポーネントからなり得る、ソフトウェアコンポーネントの環境と対話する能力を提供するソフトウェアコンポーネントに関する。
【０００２】
（優先権）
本特許出願は、２００７年１０月３１日に出願された対応する仮特許出願第６０／９８４，２６６号、「Ｌａｎｇｕａｇｅ  Ｆｒａｍｅｗｏｒｋ  ａｎｄ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ｆｏｒ  Ｓａｆｅ  ａｎｄ  Ｃｏｍｐｏｓａｂｌｅ  Ａｐｐｌｉｃａｔｉｏｎｓ」の優先権を主張するものであり、参照により同特許を組み込む。
【背景技術】
【０００３】
エンドユーザによる現代の計算タスクは、計算結果及びユーザの嗜好を共有することによってしばしば互いに相互接続される既製のアプリケーション及びウェブサービスを頻繁に使用することを要する。これらのタスクを遂行するために、ユーザは、これらのアプリケーションを手作業でそれぞれカスタマイズし、何らかのバージョンのカット＆ペースト操作によって計算結果の共有を可能にしなければならない。この問題は、こうした頻繁なユーザ操作を行うのに多くの費用がかかる携帯電話などのスモールフォームファクタのデバイスでは、ますます深刻になる。
【０００４】
使い易さの課題の大部分は、ウェブサービスに対してフロントエンドとして働くアプリケーション又はウェブサイト間、及びその中でナビゲートする際の難しさから生じている。例えば、ユーザが携帯電話によって映画に行く計画を立てたいと望むシナリオについて考慮されたい。そうするために、ユーザは、どんな映画が上映中か調べ、一部の映画についての映画批評を読み、映画及び上映時間を選び、チケットを購入し、ユーザのカレンダーに映画のエントリを加え、友人に詳細をメールする。それらの６つのアクションはそれぞれ、ウェブサイトでクリック又は入力を複数回行うことを要することがある。ユーザは、辛抱できなくなり、その実行を完全にやめてしまうであろう。この使い易さの課題は、計画、消費、コミュニケーションに関する決定など日常生活における決定に向けてアプリケーション及びサービスを統合することが難しいとユーザが感じるので、こうしたアプリケーション及びサービス自体の実行可能性に影響を及ぼす。
【０００５】
最近の２つのカテゴリのアプリケーションが、ユーザ体験の向上のために使用することができる品質を実証している。マッシュアップは、複数のウェブアプリケーションを単一のユーザインターフェース（ＵＩ：ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ）へと組み合わせて、構成要素となるアプリケーションからのコンテンツを相関させる。例えばｐａｃｋａｇｅｍａｐｐｅｒ．ｃｏｍは、ユーザのパッケージが辿る経路をＧｏｏｇｌｅ（登録商標）マップ上に重ね合わせる。これによって、Ｇｏｏｇｌｅ（登録商標）マップは、住所を緯度／経度座標に変換するヤフー（登録商標）サービスと共に、ＦｅｄＥｘ（登録商標）及びＵＰＳ（登録商標）からのパッケージ追跡サービスと組み合わされる。
【０００６】
ウィジェット又はガジェットは、より大きいウェブページに組み込み、又は携帯電話にダウンロードすることができる小さいミニアプリケーションである。これらのアプリケーションは通常、外部のウェブサイト（例えばＢＢＣ（登録商標）ニュース、ウィキペディア、フェイスブックなど）のサブセットへの単純なインターフェースを提供する。これらのアプリケーションは、ユーザによって、設定又はパラメータのページを介してカスタマイズ可能である。さらに、ほとんどのウィジェットフレームワークプロバイダは、ウィジェットの作成、共有及び適応（ａｄａｐｔ）を容易にするためのウェブサイトを提供している。
【０００７】
残念ながら、マッシュアップとウィジェットの両方に、これらの手法を用いて展開されるアプリケーションのタイプを制限するセキュリティ問題がある。マッシュアップ及びウィジェットは、有用となるには、ユーザがコンテンツを求めて利用する基礎アプリケーションに対するユーザのアクセス権を有さなければならない。しかし、ユーザは、マッシュアップ／ウィジェットがそれらの権利を用いて何を行うかに対しては制御できない。例えば、マッシュアップ／ウィジェットは、ユーザのコンテンツの削除、ユーザの私的データを第三者のサイトに渡すこと（しかしこれは、セイムオリジン（ｓａｍｅ−ｏｒｉｇｉｎ）セキュリティポリシーを使用して防止できる）など、基礎サイトへの他の動作を実施し、或いはマッシュアップの場合には、ユーザの私的データをマッシュアップサイトのうちの１つから別のサイトに渡すことがある。
【０００８】
最後に、特にモバイルユーザ用の既存のソフトウェア開発プラットフォームは、これらの基本的な問題のいずれにも対処しない。モバイルユーザをターゲットにすることを望む開発者は現在、アプリケーションプラットフォームに対する２つの主要なオプション、様々なバージョンのＪａｖａ及びＢＲＥＷなどのネイティブプラットフォーム、又はウェブブラウザを有する。ネイティブプラットフォームは、デバイスのハードウェアへのアクセスを提供するが、不十分な外部接続性サポート及び低レベルＡＰＩを有する。ブラウザは、高水準のプログラミングモデル及び容易な接続性を提供するが、デバイスのハードウェアへのアクセスを有さない。より深刻には、ブラウザベースのアプリケーションはしばしば、クロスサイトスクリプティング（ＸＳＳ：ｃｒｏｓｓ−ｓｉｔｅ  ｓｃｒｉｐｔｉｎｇ）、クロスサイトリクエストフォージェリ（ＣＳＲＦ：ｃｒｏｓｓ−ｓｉｔｅ  ｒｅｑｕｅｓｔ  ｆｏｒｇｅｒｙ）及びセッション固定攻撃など、セキュリティ脆弱性を有する。
【発明の概要】
【０００９】
構成可能なプログラムのための言語フレームワークを使用する方法及び装置が、本明細書に開示される。一実施形態では、この方法は、少なくとも１つのソフトウェアコンポーネントが組み込まれているアクティブコンテンツ、にアクセスするステップであって、それぞれのソフトウェアコンポーネントが、アクティビティのシーケンスのワークフローを一緒に実施する複数のコンポーネントを有し、前記複数のコンポーネントが、１つ又は複数の外部サービス、１つ又は複数のユーザインターフェースコントロール、１つ又は複数の入力、および、１つ又は複数の出力を表す、当該ステップと、前記ソフトウェアコンポーネントを実行するステップであって、情報フローベースのセキュリティモデルを用いてコンポーネント間の通信を仲介する処理を含む、当該ステップと、を含む。
【００１０】
本発明は、以下に述べられた詳細な説明、及び本発明の様々な実施形態の添付の図面からより完全に理解されるが、しかし、それは、本発明を特定の実施形態に限定するものと解釈すべきでなく、説明及び理解のためのものにすぎない。
【図面の簡単な説明】
【００１１】
【図１】モバイルコンポーネントを実施するためのプロセスの一実施形態のフローチャートである。
【図２Ａ】映画モバイルコンポーネントの一実施形態を示す図である。
【図２Ｂ】映画モバイルコンポーネントの一実施形態の要素間の接続を示す図である。
【図３】モバイルコンポーネントのための情報フローグラフを示す図である。
【図４】タグ格子要素間の関係を示す図である。
【図５】コンパイルプロセスの一実施形態のフローチャートである。
【図６】映画モバイルコンポーネントを示す図である。
【図７】否定された権利の一例を示す図である。
【図８】コンピュータシステムの一実施形態のブロック図である。
【発明を実施するための形態】
【００１２】
本明細書ではモバイルコンポーネント（「モーネント」とも称される）と呼ばれるソフトウェアアプリケーションコンポーネントの新しいクラスについて述べられる。一実施形態では、モバイルコンポーネントは、外部サービスへのユーザインターフェースを提供する。モバイルコンポーネントは、設定、エンドユーザによって調整可能な永続パラメータによってカスタマイズすることができる。一実施形態では、複数ウェブサイト／サービスからのデータを相関させることができる。モバイルコンポーネントは、共有設定及びサービスによってデータが交換される単純なエンドユーザ構成を提供する。したがって、モバイルコンポーネントは、カスタムプログラミングなしに、複数ウェブサイト／サービスからのデータを相関させる。
【００１３】
モバイルコンポーネントは、セキュリティモデル上に構築され、このセキュリティモデルは、情報フローについて推論し、外部サービス及びモバイルコンポーネントの環境（他のモバイルコンポーネント及びローカルハードウェア）へのアクセスを制御する。一実施形態では、このモデルによって実施されるポリシーは、ユーザ主導によるものであり、タグ付け機構によって管理される。本明細書では、タグは、信頼のレベル、及びそれぞれのタグ付けされたもの（ｔａｇｅｅ）とユーザが何を共有したいかに基づいて、ユーザが人々及びサービスを分類するカテゴリ化を表すラベルである。
【００１４】
一実施形態では、２つ以上のモバイルコンポーネントが、ユーザの仲介を必要としないマッチング規則を使用して組み合わされる。構成操作の結果は、構成要素を直接組み合わせることによって組み立てられたモバイルコンポーネントと同じ操作振舞い及び能力を有する有効なモバイルコンポーネントとなることが保証される。さらに、モバイルコンポーネントの集合がセキュリティポリシーに個々に従う場合、これらのモバイルコンポーネントの構成もまた、そのセキュリティポリシーに従う。
【００１５】
以下の説明では、本発明についてより完全に説明するために、多くの詳細が示されている。しかし、本発明は、これらの具体的な詳細なしに実施できることが当業者には明らかになろう。他の例では、本発明を不明瞭にしないために、よく知られている構造及びデバイスが、詳細にではなく、ブロック図の形で示されている。
【００１６】
下記の詳細な説明の一部は、コンピュータメモリ内のデータビットに対する操作のアルゴリズム及び記号表現に関して提示されている。これらのアルゴリズムの記述及び表現は、データ処理技術分野の当業者によって、その仕事の内容を他の当業者に最も有効に伝えるための手段である。本明細書ではアルゴリズムは一般に、所望の結果をもたらす自己一貫性のあるステップシーケンスであると考えられる。諸ステップは、物理量の物理的な操作を必要とするステップである。
【００１７】
必ずしも必要でないが、通常これらの量は、格納され、転送され、組み合わされ、比較され、他のやり方で操作することができる、電気的又は磁気的信号の形を取る。主として一般的に使用するために、これらの信号をビット、値、要素、記号、文字、用語、数字などと呼ぶことが時々好都合であることが分かっている。
【００１８】
しかし、これらの及び類似の用語はすべて、適切な物理量と関連付けられるものであり、これらの量に適用された便宜的なラベルにすぎないことに留意されたい。他に特に述べられていない限り、以下の議論から明らかであるように、説明全体を通して、「処理する」、「コンピュータ処理する」、「計算する」、「判定する」、「表示する」などの用語を使用する議論は、コンピュータシステムのレジスタ及びメモリ内の物理（電子）量として表されたデータを操作し、コンピュータシステムメモリ又はレジスタ、或いは他のこうした情報記憶、伝送又は表示装置内の物理量として同様に表された他のデータに変換するコンピュータシステム又は類似の電子コンピューティングデバイスのアクション及びプロセスを指すことが理解されよう。
【００１９】
本発明は、本発明の操作を実施するための装置にも関する。この装置は、必要な目的のために特別に構築されてもよく、或いはこの装置は、コンピュータに格納されたコンピュータプログラムによって選択的にアクティブ化され、又は再構成された汎用コンピュータを備えてもよい。こうしたコンピュータプログラムに、それだけに限らないが、フレキシブルディスク、光ディスク、ＣＤ−ＲＯＭ及び磁気光ディスクを含めて任意のタイプのディスク、読取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気又は光カードなどのコンピュータ読取り可能記憶媒体、或いは電子命令を格納するのに適した任意のタイプの媒体など、コンピュータ読取り可能記憶媒体内に格納されてもよく、それぞれの媒体がコンピュータシステムバスに結合される。
【００２０】
本明細書に提示されたアルゴリズム及びディスプレイは本質的に、特定のコンピュータ又は他の装置に関連しない。様々な汎用システムは、本発明の教示に従ってプログラムと共に使用することができ、或いは、必要な方法ステップを実施するためのより専門の装置を構築することが好都合であると分かり得る。様々なこれらのシステムに必要な構造は、以下の説明から明らかになる。さらに、本発明は、いずれかの特定のプログラミング言語に関して述べるものではない。本明細書に述べられた本発明の教示を実施するために様々なプログラミング言語を使用してもよいことが理解されよう。
【００２１】
マシン読取り可能媒体は、マシン（例えばコンピュータ）によって読取り可能な形で情報を格納又は送信するための任意の機構を含む。例えば、マシン読取り可能媒体には、読取り専用メモリ（「ＲＯＭ」）、ランダムアクセスメモリ（「ＲＡＭ」）、磁気ディスク記憶媒体、光学的記憶媒体、フラッシュメモリデバイスなどが含まれる。
【００２２】
概観
モバイルコンポーネントは、外部サービスへのユーザインターフェースを含むソフトウェアコンポーネントである。一実施形態では、モバイルコンポーネントは、設定、エンドユーザによって調整可能な永続パラメータによってカスタマイズされる。モバイルコンポーネントは、共有設定及びサービスによってデータが交換される単純なエンドユーザ構成を提供する。
【００２３】
一実施形態では、モバイルコンポーネントは、外部サービス及びモバイルコンポーネントの環境（例えば他のモバイルコンポーネント及びローカルハードウェア）へのアクセスを制御する情報フローセキュリティモデル上に構築される。一実施形態では、セキュリティモデルによって実施されるセキュリティポリシーは、ユーザ主導によるものであり、タグ付け機構によって管理される。
【００２４】
２つ以上のモバイルコンポーネントを、ユーザ介入を必要としないマッチング規則を使用して組み合わせることができる。一実施形態では、この構成操作は、２つの主要特性、すなわち構成閉包及び健全な構成を有する。構成閉包は、他のモバイルコンポーネントから構成されたモバイルコンポーネントが、構成要素を直接組み合わせることによって組み立てられたモバイルコンポーネントと同じ操作振舞い及び能力を有することを必要とする。健全な構成に関しては、モバイルコンポーネントの集合がセキュリティポリシーに関して個々に健全である場合、これらのモバイルコンポーネントの構成もまた健全である。
【００２５】
モバイルコンポーネントフレームワークの一実施形態について述べられる。モバイルコンポーネントフレームワークは、コンパイラと、コンポーザと、ランタイム基盤と、サーバ側モバイルコンポーネント共有アプリケーションとを含む。コンパイラは、モバイルコンポーネントのサービス、設定及びＵＩコンポーネントの高水準記述を受け付ける。高水準記述から、コンパイラは、アドビフラッシュ（Ａｄｏｂｅ  Ｆｌａｓｈ）（登録商標）アプリケーションを生成する。コンポーザは、２つ以上のモバイルコンポーネントのソース記述を受け付け、組み合わされたモバイルコンポーネントを作成し、次いで、この組み合わされたモバイルコンポーネントは、さらにコンパイル又は構成されてもよい。
【００２６】
構成されたモバイルコンポーネントは、その後、実行されてもよい。図１は、モバイルコンポーネントを実施するためのプロセスの一実施形態のフローチャートである。このプロセスは、ハードウェア（回路、専用論理など）、ソフトウェア（汎用コンピュータシステム又は専用マシン上で実行されるものなど）、又はその両方の組合せを含んでもよい処理論理によって実施される。
【００２７】
図１を参照すると、このプロセスは、ソフトウェアコンポーネントを有するアクティブコンテンツにアクセスする処理論理によって開始する（処理ブロック１０１）。本明細書では、アクティブコンテンツは、それだけに限らないが、テキスト（例えばＩＭ、電子メールなど）、ＨＴＭＬ（例えばウェブページ、ＨＴＭＬ電子メールなど）、文書（例えばスプレッドシート、プレゼンテーションなど）、Ｆｌａｓｈ（登録商標）などを含めて、モバイルコンポーネントが組み込まれ得るいずれかのデータ型であってもよい。一実施形態では、ソフトウェアコンポーネントは、アクティビティのシーケンスのワークフローを共に実施する諸コンポーネントを有し、諸ソフトウェアコンポーネントが、１つ又は複数の外部サービス、１つ又は複数のユーザインターフェースコントロール、並びに１つ又は複数の入力及び出力を表す。一実施形態では、ソフトウェアコンポーネントは、名前及びデータ型によって、１つ又は複数の他のソフトウェアコンポーネントに暗黙的にリンクされる。一実施形態では、ソフトウェアコンポーネントは、共有される設定及びサービスによって、１つ又は複数の他のソフトウェアコンポーネントと通信する。
【００２８】
一実施形態では、ソフトウェアコンポーネントのコンポーネントは、サービスのカスタマイズ可能ラッパーと、他のソフトウェアコンポーネントにデータを通信するためのカテゴリ化された設定と、カスタマイズ可能なユーザ対話のためのユーザインターフェース層とを備え、コンポーネント間の通信が、宣言的に指定される。一実施形態では、設定及びサービスは、セキュリティマネージャの制御の下、外部位置との対話を容易にする。一実施形態では、セキュリティマネージャは、ユーザ定義のラベル付けに従ってデータ送信装置及び受信装置を特徴付けるセキュリティポリシーを使用して入力と出力の間の情報フローを評価することによってソフトウェアコンポーネントをアクティブ化するかどうか決定する。
【００２９】
一実施形態では、複数のコンポーネント内のコンポーネントは、宣言的に相互接続される。一実施形態では、コンポーネントは、複数の外部ソースからのデータを組み合わせる。これらの外部ソースは、Ｍｉｃｒｏｓｏｆｔ（登録商標）  Ｏｕｔｌｏｏｋ（登録商標）のようなアプリケーション、ブラウザ、例えばＧＰＳ位置サービスのようなサービス、他のデバイスセンサなどを含んでもよい。一実施形態では、サービスは、コンテンツを提供する呼出し可能のエンティティである。一実施形態では、呼出し可能のエンティティは、ウェブサイトを備える。
【００３０】
一実施形態では、コンポーネント間の通信は、設定を介して行われる。一実施形態では、設定はキー値の対を含み、それぞれの設定は入力、出力、或いはソフトウェアコンポーネントについての内部データ、又はコンポーネントの内部のデータである。一実施形態では、入力は、直接ユーザから、他のソフトウェアコンポーネントから、又は環境からデータを取得し、さらに各出力又は内部設定が、ソフトウェアコンポーネント内からのサービス又はユーザインターフェースコントロールから値を取得する。
【００３１】
一実施形態では、ユーザインターフェースコントロールは、リモートサービスと通信する。
【００３２】
一実施形態では、ソフトウェアコンポーネントの作成は、すべてのソフトウェアコンポーネントサービス及び設定を受け取るステップと、ソフトウェアコンポーネントがその操作に必要とする１つ又は複数の権利のリストを構築するステップであって、権利が入力設定読出しの権利、及びサービス呼出しの権利をうちの少なくとも１つを含む、ステップと、権利のリスト、ソフトウェアコンポーネントの情報フローグラフ及び環境に基づいて１つ又は複数の権利のそれぞれを付与するかどうか評価するステップとを含む。一実施形態では、各権利を付与するかどうか評価するステップは、情報フロー解析に基づく。一実施形態では、それぞれの権利を付与すべきかどうかを評価するステップは、直接情報フローグラフを構築することによって入力と出力の間のリンクを示すグラフをコンパイル時に構築するステップと、直接情報フローグラフを推移情報フローグラフに変換するステップと、推移情報フローグラフをソフトウェアコンポーネント内に格納するステップとを含む。別の実施形態では、入力と出力の間のリンクを示すグラフは、実行時に構築される。一実施形態では、情報フローグラフは個々のコンポーネントによって外面化され、すなわち、個々のコンポーネントの内部が特定の環境にないことがある場合でも外部的には見える。この情報フローグラフは、信頼できるコンポーネントについては手動で構築してもよいし、コンポーネントの静的又は動的解析によって計算してもよい。次いで、フレームワークは、個々の情報フローグラフの推移閉包の計算により、推移情報フローグラフを計算する。情報フローグラフを外面化することによって、個々のコンポーネントは、それぞれ異なるセキュリティポリシーを有するそれぞれ異なる環境で再使用することができる。
【００３３】
ソフトウェアコンポーネントが作成された後、処理論理はその次に、ソフトウェアコンポーネントを受け取る（処理ブロック１０２）。処理論理は、モバイルデバイス、又は遠隔に置かれた他のデバイス又はクライアント、或いはソフトウェアコンポーネントを実行できる他の任意のデバイスの一部であってもよい。
【００３４】
処理論理は、受け取られた後、ソフトウェアコンポーネントを実行する（処理ブロック１０３）。これは、情報フロー注釈ベースのセキュリティモデルを使用してコンポーネント間の通信を仲介するステップを含む。一実施形態では、注釈ベースセキュリティモデルは、タグベースのセキュリティモデルである。一実施形態では、セキュリティモデルは、セキュリティマネージャがコンポーネント間の通信を仲介するように、セキュリティマネージャで実施される。こうした場合、一実施形態では、このプロセスは、外部位置との対話を制御し、情報フローを制御するユーザ定義のセキュリティポリシーを実施するセキュリティマネージャをも含む。一実施形態では、ユーザ定義のセキュリティポリシーの実施は、ソフトウェアコンポーネントがアクティブ化されるとき、セキュリティマネージャによって実施される。一実施形態では、セキュリティポリシーは、その保護必要性によってデータを特徴付ける入力及び出力にタグを割り当てる。一実施形態では、ユーザは、サービス及び設定に手動でタグを付けることによってセキュリティポリシーを指定する。
【００３５】
モバイルコンポーネントの要素
一実施形態では、モバイルコンポーネントの要素は、設定と、サービスと、ユーザインターフェース（ＵＩ）コンポーネントとを含む。
【００３６】
設定
設定は、モバイルコンポーネント内及びモバイルコンポーネント間の通信を容易にするために使用される。一実施形態では、設定は、キー／値の対を使用して実施される。一実施形態では、それぞれの設定は、入力、出力、又はモバイルコンポーネント内部のものである。入力設定は、直接ユーザ入力、他のモバイルコンポーネント、又は環境から値を取得することができる。環境は、ローカルデバイス（例えば位置情報、個人情報など）、又は囲んでいるアプリケーションコンテキスト（例えばブックマーク、電子メール受信者など）からの入手可能な情報を表す設定の集合である。
【００３７】
出力及び内部設定は、モバイルコンポーネント内のサービス又はＵＩコンポーネントから値を得る。一実施形態では、出力設定の値は、他のモバイルコンポーネントから使用できるようになる。
【００３８】
サービス
サービスは、モバイルコンポーネントのためにコンテンツを提供する呼出し可能エンティティを表す。これは、外部ウェブサイト、ウェブサービス、又はサービスインターフェース内にラップされたデバイス特徴（ハードウェア又はアプリケーション）を含んでもよい。ウェブサイトのように、サービスは、そのＵＲＬによって識別される。このＵＲＬは、２つの部分、すなわちセキュリティポリシーによって評価される位置、その後に続くクエリに分割され、このクエリは、特定の要求に固有のデータを含む。サービス呼出しの結果は、ＸＭＬ、ＨＴＭＬ又はＪＳＯＮなどの構造化コンテンツである。
【００３９】
ＵＩコンポーネント
モバイルコンポーネント開発者に提供されるユーザインターフェースコンポーネントは、外部のコンテンツへの単純なフロントエンドを迅速に実装することを可能にするように設計される。一実施形態では、サポートされるコンポーネントは、ラベル、ボタン、テキスト入力ボックス及びデータグリッド（サービスからのレコード状のコンテンツを表示する）を含む。モバイルデバイスのフォームファクタが小さいので、一実施形態では、タブ付きナビゲーションを使用して、コンテンツをセグメント化する。タブは厳密にはユーザインターフェースのアーティファクトであり、タブは、それぞれ異なるタブに表示されたＵＩコンポーネントの相関性を制限するものではない。しかし、一実施形態では、それぞれのＵＩコンポーネントは、単一のタブに属する。
【００４０】
これらの要素は、一例によってさらに理解され得る。
【００４１】
以下の例では、映画シナリオについて述べられる。ユーザは、映画鑑賞外出の設定を求めて複数のウェブサイトを使用することを望む。この例では、Ｇｏｏｇｌｅ（登録商標）の映画ウェブサイト（ｇｏｏｇｌｅ．ｃｏｍ／ｍｏｖｉｅｓ）、インターネット映画データベース（ｉｍｄｂ．ｃｏｍ）及びＭｏｖｉｅＴｉｃｋｅｔｓ．ｃｏｍが使用される。映画チケットサイトは、ユーザのクレジットカードを求める。ユーザは、モバイルコンポーネントを信頼するために、サイトに悪意がなく、モバイルコンポーネントがユーザのクレジットカード番号を他のウェブサイトに渡さないこと確信しなければならない。さらに、ユーザは、モバイルコンポーネントがユーザのアドレスブック内の皆にスパム送信しないことを確信しなければならない。
【００４２】
モバイルコンポーネントは、使い易さの問題にも対処すべきである。コンテストを使用して、ユーザ対話を有効に活用することができる。例えば、劇場のリストを表示するとき、モバイルコンポーネントは、適切な結果を表示するために、ユーザの位置についての知識を使用することができる。ユーザは、あるウェブサイトで劇場及び映画を選択すると、その後の各サイトでは劇場及び映画を再選択不要とすべきである。
【００４３】
図２Ａは、映画モバイルコンポーネントの実施形態を示している。２Ａを参照すると、それぞれの正方形は、ステップ、サブアプリケーション、又は関与する映画鑑賞外出の設定を表し、ウェブサイト又はサービスとの対話に対応する。表示場所が限られているので、一度に１つのステップだけが示されている。一実施形態では、サブアプリケーション間のナビゲーションは、各サブアプリケーションが表示の最上部にタブを有しており、そのサブアプリケーションのタブを選択するとサブアプリケーションが表示されるタブメタファを使用して遂行される。
【００４４】
図２Ａの実線矢印は、サブアプリケーションと外部サービスの間のリンクを表している。破線矢印は、サブアプリケーション間のコンテキストの推移を表している。サブアプリケーション２０１からの選択された映画館は、映画選択サブアプリケーション２０２、チケット購入サブアプリケーション２０４、及びカレンダー／電子メールサブアプリケーション２０５に渡される。選択された映画及びショータイムは、映画レビューサブアプリケーション２０３、チケット購入サブアプリケーション２０４、及びカレンダー／電子メールサブアプリケーション２０５に渡される。
【００４５】
上述された映画の例では、現在位置（例えば郵便番号又は緯度／経度）、選択された映画館／映画／上映時間、及びユーザのクレジットカード情報についての設定が使用される。また、それぞれの外部のウェブサイトは、ユーザの電子メールアプリケーション、別個のタブが与えられた映画モバイルコンポーネント用の各ウェブサイトと共に、サービスとして表される。
【００４６】
モバイルコンポーネント要素の接続
一実施形態では、モバイルコンポーネントの要素は、宣言的なスタイルで相互接続される。設定は、データグリッド内の選択された記録から、又はサービス呼出しの結果からの値を抽出することによって値を取得することができる。一実施形態では、サービス呼出しの結果から値を抽出することは、ＸＰａｔｈのような表記法を使用して実施される。同様に、ＵＩコンポーネントは、設定、サービス及び他のＵＩコンポーネントからそれらの値を得ることができる。例えば、ユーザの郵便番号が入力設定である場合、ラベルは、以下のようにこの設定の値を含み得る。
Ｃｕｒｒｅｎｔ  ｍｏｖｉｅｓ  ｆｏｒ  ｚｉｐｃｏｄｅ  ＄｛ＺｉｐＣｏｄｅ｝
この＄｛ＺｉｐＣｏｄｅ｝文字列は、ＺＩＰＣＯＤＥ設定の値で置き換えられる。
【００４７】
一実施形態では、サービスの位置及びクエリは、類似のテンプレート表記法を使用して、設定又はＵＩコンポーネントからの値でパラメータ化される。例えば、特定の郵便番号についてのリストを得るためにＧｏｏｇｌｅ（登録商標）映画を呼び出すサービスは、ｇｏｏｇｌｅ．ｃｏｍ／ｍｏｖｉｅの位置、及び、？ｎｅａｒ＝＄｛ＺｉｐＣｏｄｅ｝のクエリを使用することがある。要求を行う場合、サービスはまず、＄｛ＺｉｐＣｏｄｅ｝文字列をＺＩＰＣＯＤＥ設定の値で置き換え、次いで、ＵＲＬを得るために位置とクエリを連結する。したがって、９４３０４の郵便番号が与えられると、サービスは、ｇｏｏｇｌｅ．ｃｏｍ／ｍｏｖｉｅｓ？ｎｅａｒ＝９４３０４に要求を送る。図２Ｂは、Ｇｏｏｇｌｅ（登録商標）と対話する映画モバイルコンポーネントの一実施形態のサブセットについてのための要素の相互接続を示している。図２Ｂを参照すると、要素間のデータのフローを示すために矢印が使用されている。ＺＩＰＣＯＤＥ設定２１１は、Ｇｏｏｇｌｅ（登録商標）劇場サービス２４１、及び劇場タブ２５１上のラベルによって使用される。次いで、Ｇｏｏｇｌｅ（登録商標）劇場サービス２４１からの結果が、データグリッド２３１によって、同じタブ、すなわち劇場タブ２５１上に表示される。一実施形態では、それぞれのレコードは、特定の劇場の名前及びアドレスを表示する。選択された劇場の名前は、劇場出力設定２１２に格納される。劇場出力設定２１２は、第２のクエリを構築するためにＧｏｏｇｌｅ（登録商標）映画サービス２４２によって使用され、この第２のクエリは、指定された劇場で上映されている映画を取り出す。さらに、劇場出力設定が、映画タブ２５２上のラベルに含まれる。Ｇｏｏｇｌｅ（登録商標）映画サービス２４２によって返される結果は、第２のデータグリッド２３２を使用して表示される。選択された映画の名前は、映画出力設定２２１を介して出力される。
【００４８】
選択された映画の詳細は、チケット購入タブ２５３から入力される購入量と共に、映画チケットサービス２４３に渡される。購入のためのクレジットカード番号は、入力設定２１３から映画チケットサービス２４３に渡される。一実施形態では、映画チケットサービス２４３は、ユーザが「購入」ボタン２６１を押下するまで実際には呼び出されない。
【００４９】
変更への応答
ユーザが郵便番号入力設定２１１又は選択された劇場を変更することがあるならば、変更は、モバイルコンポーネントにも反映される。本明細書に述べられたモバイルコンポーネントフレームワークは、どんな設定、サービス結果またレコード選択も変化することがあると想定している。これに対処するために、モバイルコンポーネントコンパイラは、モバイルコンポーネント要素間の依存性を追跡し、変更が生じる場合は、依存した要素をリフレッシュするためにイベントドリブンコードを自動的に生成する。例えば、ユーザが異なる劇場を選択する場合、劇場設定２１２が変更され、選択された映画は無効になる。一部の状況（購入を行うなど）では、ユーザからの明示的な入力なしにはサービス要求が開始されないモバイルコンポーネントが構築される。この状況に対処するために、ＵＩ内のボタンコントロールが、サービスに接続されてもよい。ボタンがサービスに接続される場合、呼出しは、ボタンが押下され、サービスが有効な入力を有するまで開始されない。
【００５０】
セキュリティモデル
一実施形態では、モバイルコンポーネントは、設定及びサービスによって外部（潜在的に安全でない）世界と対話する。一実施形態では、ハイレベルのモデルでは、モバイルコンポーネントは、ＵＩによって、又はＣＰＵの過度な消費によって、サービスを否定することはできない。したがって、主要なセキュリティ問題は、外部世界とのこれらの対話である。問題に対処するために、それぞれのモバイルコンポーネントは、論理サンドボックス内で実行され、そのすべての外部対話が制御される。これは、本明細書ではセキュリティマネージャと呼ばれるモバイルコンポーネント基盤コンポーネントによって実施される。一実施形態では、セキュリティマネージャは、モバイルコンポーネントコンパイラによってモバイルコンポーネント定義に含まれる共有コードである。別の実施形態では、セキュリティマネージャは、モバイルデバイス上で（例えばライブラリ、又はオペレーティングシステムの一部として）出荷されるソフトウェアである。
【００５１】
権利
外部対話を実施する能力は、権利と表される。あるモデルでは、以下の２つのタイプの権利が追跡される。入力設定を読み出す権利、及びサービスの位置を呼び出す（したがってその結果を読み出す）権利。モバイルコンポーネントが開始するとき、セキュリティマネージャは、すべてのモバイルコンポーネントのサービス及び設定をレビューし、モバイルコンポーネントがその操作に必要とする権利のリストを構築する。要求された権利のリスト、モバイルコンポーネントの情報フローグラフ及びモバイルコンポーネントの現在の環境はすべて、権利が付与され得るかどうか評価するために使用される。この決定を行う際、セキュリティマネージャは、各サービスについてタグを返すポリシーコンポーネントに問い合せる。一実施形態では、セキュリティポリシーは、入力として設定及びサービスＵＲＬのリストを取り、それをタグのリストに写像する。一実施形態では、ポリシーマネージャは、各設定及びＵＲＬについて事前に構成されたタグを格納するデータベースである。クエリの結果は、オールオアナッシングの決定である。一実施形態では、１組の権利が一緒に付与され得ない場合、モバイルコンポーネントはディセーブルされ、どの権利が付与され得ないか説明する適切なエラーメッセージがユーザに提示される。
【００５２】
サービス位置は設定を含んでもよく、この設定は、モバイルコンポーネントが開始された後、変更されることがある。したがって、モバイルコンポーネントが必要とする１組の権利も変化することがある。これに対処するために、セキュリティマネージャは、サービス位置でどの設定が使用されるか追跡する。一実施形態では、これらの設定のうちの１つが変化する場合は、要求された１組の新しい権利が構築され評価され、そうではなく、新しいセットが付与され得ない場合は、モバイルコンポーネントはディセーブルされ、設定変更によってセキュリティ問題が生じたことを知らせるフィードバックが提供される。
【００５３】
情報フロー
一実施形態では、セキュリティマネージャは、情報フロー解析に基づいて１組の権利を付与するかどうか決定する。この解析は、各入力の可能な宛先を見て、それらの宛先がセキュリティポリシーによって許容されるかどうか判定する。
【００５４】
情報フロー解析をイネーブルするために、モバイルコンポーネントの入力と出力の間の（推移的）リンクを示すグラフＧ＝（Ｖ，Ｅ）が、コンパイル時に構築される。モバイルコンポーネントの入力は、モバイルコンポーネントの入力設定及びサービス呼出しからの応答を含む。モバイルコンポーネントの出力は、モバイルコンポーネントの出力設定及びサービスパラメータである。一実施形態では、グラフは、以下のように構築される。まず、各設定及びＵＩコンポーネントについて頂点を有する直接情報フローグラフが構築される。各サービスについて、２つの頂点、すなわちアウトバウンド要求について１つ、及び応答について１つが作成される。入力頂点はＩでラベル付けされ、出力頂点は０でラベル付けされる。エッジは、以下のように作成される。
１．サービスがその位置又はクエリ内のテンプレートパラメータとして設定を使用する場合、エッジは、設定からサービスの要求頂点まで追加される。
２．設定がその値をサービス呼出しの応答から取る場合、エッジは、サービスの応答頂点から設定まで追加される。
３．ＵＩコンポーネントがその値をサービス呼出しの応答から取る場合、エッジは、サービスの応答頂点からＵＩコンポーネントの頂点まで追加される。
４．ＵＩコンポーネントがその値を設定から取る場合、エッジは、設定からＵＩコンポーネントまで追加される。
５．設定がその値をＵＩコンポーネントから取る場合、エッジは、ＵＩコンポーネントから設定まで追加される。
【００５５】
次いで、直接情報フローグラフは、一連の操作を使用して推移情報フローグラフに変換される。まず、すべてのエッジの推移閉包が取られ、次いで、エッジＡ→Ｂ、及びＢ→Ｃである場合、エッジＡ→Ｃが追加される。次いで、Ｉ又はＯでラベル付けされていないどんな頂点も、こうした頂点で開始又は終了するあらゆるエッジと共に削除される。最後に、Ｏとラベル付けされた頂点間のエッジも削除される。結果として生じる推移情報フローグラフは、モバイルコンポーネントに格納され、モバイルコンポーネントが実行時に使用できるようになる。
【００５６】
図３は、図２Ｂに示されたモバイルコンポーネント接続のための情報フローグラフを示している。図３を参照すると、２つのＧｏｏｇｌｅ（登録商標）サービスは、それぞれ２つのノード、すなわち要求について１つ、及び応答について１つを有する。Ｇｏｏｇｌｅ（登録商標）劇場サービス２４１応答で開始する２つのエッジは間接的であり、すなわち、２つのエッジは、劇場データグリッドコンポーネント２３１を通過し、この劇場データグリッドコンポーネント２３１は、グラフから削除される。劇場出力設定２１２からの（冗長）リンク及びＧｏｏｇｌｅ（登録商標）映画要求も削除される。
【００５７】
映画チケットサービス２４３は、データを返さず、ステータス応答だけを返すので、入力ノードだけを有する。クレジットカード設定２１３は、クレジットカード設定２１３を映画チケットサービス２４３に接続する１つのアウトバンドエッジだけを有する。したがって、クレジットカード番号は、他のウェブサイトのいずれにも渡されない。
【００５８】
タグ
ユーザのクレジットカード番号が他のウェブサイトに渡されない情報フロー解析について示した。しかし、映画チケットサイト自体を信頼できることがどのようにして分かるだろうか。また、ユーザは、ユーザの郵便番号をウェブ上のランダムないずれかのサイトに配布することに快く思わないかもしれない。他のウェブサイトを信頼できることがどのようにして分かるだろうか。これらは、セキュリティポリシー決定である。一実施形態では、これらの決定を評価するために、入力及び出力が、タグ集合でラベル付けされる。タグは、サービス及び人々のカテゴリを表し、暗黙的には、ユーザのデータのカテゴリを表す。タグ集合Ｔが与えられると、タグ集合が表す基礎カテゴリを意味するために、
【数１】
2011504256.tif 000003
が書かれる。出力Ｏ１…Ｏｎへと流れる入力Ｉが与えられると、セキュリティマネージャは、以下を保証する。
【数２】
2011504256.tif 000004
換言すると、入力から流れるすべての出力は、入力タグ集合内に表されたカテゴリを有さなければならない。これを保証することができる場合、モバイルコンポーネントは、そのタグラベル付けに関して健全であると見なされる。これを保証することができない場合、セキュリティマネージャは、モバイルコンポーネントに権利を付与しない。
【００５９】
入力及び出力の実際のラベル付けは、セキュリティポリシーによって行われる。これは、セキュリティマネージャとは別個のコンポーネントであり、以下により詳細に論じられる。
【００６０】
タグ格子
一実施形態では、個々のタグは、入力又は出力についてすべての可能なカテゴリを列挙するのではなく、カテゴリの集合を表す。これを行うために、本明細書ではθと呼ばれるタグの格子（すなわち半順序）が定義される。タグｔｏｐは、すべての可能なカテゴリの集合を表し、タグｂｏｔｔｏｍは、空集合を表す。ユーザ又はセキュリティポリシーによって定義され得る他のタグは、半順序においてこれらの２つのタグの間に含まれる。例えば、セキュリティポリシーは、機密の財務情報用のタグｆｉｎａｎｃｉａｌを使用することができる。２項述語⊆は、θ１がθ２に等しい場合又は格子によって確立された半順序内でθ１がθ２の前に現れる場合、θ１⊆θ２について真（ｔｒｕｅ）を返す。この格子は、θ、θ１、θ２をθからの格子の任意の要素として、以下の恒等式に従う。
θ⊆ｔｏｐ  ＝  真（ｔｒｕｅ）
ｂｏｔｔｏｍ⊆θ  ＝  真（ｔｒｕｅ）
θ⊆θ  ＝  真（ｔｒｕｅ）
【００６１】
図３は、タグ格子の要素の間の関係の一例を示している。図３を参照すると、グラフ内の頂点が、（セキュリティポリシーによって）タグでラベル付けされている。Ｇｏｏｇｌｅ（登録商標）劇場サービス２４１及びｇｏｏｇｌｅ映画サービス２４２の入力は、ｐｕｂｌｉｃとラベル付けされており、モバイルコンポーネント作成者（ユーザ）が、非特定的（ｎｏｎ−ｉｄｅｎｔｉｆｙｉｎｇ）個人情報（例えば郵便番号）で入力を信頼することを意味している。これらのサービスからの応答に制約は課されず、したがって、これらのサービスは、ｔｏｐでラベル付けされる。映画チケットサービス２４３は、クレジットカード情報で信頼され、したがって、ｆｉｎａｎｃｉａｌとラベル付けされる。すべての設定は、クレジットカード２１３を除いてｐｕｂｌｉｃとラベル付けされる。
【００６２】
このモバイルコンポーネントに権利を付与するかどうか評価するために、セキュリティマネージャは、各エッジにおけるソースのタグとターゲットのタグとを比較する。各エッジについて、ターゲットのタグ⊆ソースのタグである場合、モバイルコンポーネントは健全である。この場合、以下の比較が得られる。
ｐｕｂｌｉｃ⊆ｐｕｂｌｉｃ    劇場サービス要求
ｐｕｂｌｉｃ⊆ｔｏｐ          劇場サービス応答
ｐｕｂｌｉｃ⊆ｔｏｐ          映画サービス要求
ｐｕｂｌｉｃ⊆ｔｏｐ          映画設定
ｆｉｎａｎｃｉａｌ⊆ｔｏｐ    チケットサービス要求
ｆｉｎａｎｃｉａｌ⊆ｆｉｎａｎｃｉａｌ    チケットサービス要求
これらの比較はすべて真であり、したがって、モバイルコンポーネントは、このラベル付けに関して健全である。
【００６３】
連絡先タグ付け
一実施形態では、タグは、外部のウェブサイトとの対話を容易にすることに加えて、ユーザの友人及び同僚との対話を容易にする。これを行うために、ユーザ連絡先が、タグ格子に組み込まれる。それぞれの連絡先は、格子の要素になる。さらに、ユーザは、各連絡先を追加のタグでラベル付けして、特定のカテゴリ内のその連絡先のメンバーシップを示すことができる。例えば、ある連絡先は、ｆｒｉｅｎｄｓやｃｏｗｏｒｋｅｒｓなどのタグを有し得る。連絡先がこれらのカテゴリジ化タグのうちの１つでラベル付けされる場合、連絡先の関連する格子要素は、タグ格子順序においてカテゴリの前に現れる。例えば、サリー（ｓａｌｌｙ）及びスティーブ（ｓｔｅｖｅ）がｆｒｉｅｎｄｓでタグ付けされる場合、ｓａｌｌｙ⊆ｆｒｉｅｎｄｓであり、ｓｔｅｖｅ⊆ｆｒｉｅｎｄｓである。図４は、スティーブがｆｒｉｅｎｄｓでタグ付けされ、メアリー（ｍａｒｙ）がｃｏｗｏｒｋｅｒｓでタグ付けされ、サリーがｆｒｉｅｎｄｓ及びｃｏｗｏｒｋｅｒｓでタグ付けされる場合の格子要素間の関係を示している。
【００６４】
タグ集合の格子
セキュリティポリシーは、入力及び出力をタグの集合でラベル付けすることができる。これは、人々の集合（例えばメアリー、サリー、スティーブ）に言及するとき、特に有用である。この情報フロー解析においてこれに対処するために、タグ格子は、タグ集合に拡張される。この格子の各要素θｓｅｔは、最大要素
【数３】
2011504256.tif 000005
＝｛ｔｏｐ｝及び最小要素⊥＝｛ｂｏｔｔｏｍ｝を有するタグの集合である。単一のタグ格子比較演算子≡に関して要素順序演算子⊆ｓｅｔが、以下のように定義される。
【数４】
2011504256.tif 000006
換言すると、タグ集合Ｔ１がタグ集合Ｔ２以下になるには、Ｔ１の各要素が、Ｔ２内の要素によって支配され、又はそれに等しくなければならない。
【００６５】
一実施形態では、タグ集合格子の要素は冗長情報を含んでいてもよい。例えば、ｔ１⊆ｔ２であるようにタグｔ１及びｔ２が与えられると、タグ集合格子要素｛ｔ２｝及び｛ｔ１，ｔ２｝は、⊆ｓｅｔに関して同値である。タグ集合の冗長な表現を回避するために、関数のノルム、θｓｅｔ→θｓｅｔを定義し、この関数ノルムによって、任意の集合格子要素の非冗長表現が返される。
【数５】
2011504256.tif 000007
タグ集合格子が与えられると、モバイルコンポーネントが健全であるための要件について記述することができる。セキュリティポリシーの出力は本明細書ではタグ環境と呼ばれ、このタグ環境は、モバイルコンポーネントの入力及び出力を、タグ集合格子からの要素でラベル付けする。定義１（健全性）入力集合Ｉ、出力集合Ｏ及び情報フローグラフＧｍ＝（Ｖｍ，Ｅｍ）が与えられると、Ｍは、タグ環境Ｅに関して健全であり、
【数６】
2011504256.tif 000008
の時且つその時に限り、Ｉ∪Ｏ→Θｓｅｔである。換言すると、グラフ内の各エッジでは、出力タグ集合は、入力タグ集合以下でなければならない。
【００６６】
セキュリティポリシー
モバイルコンポーネントのためのタグ環境の作成は、セキュリティポリシーによって行われる。一実施形態では、それぞれ異なるポリシーの使用を可能にするために、これは、故意にセキュリティマネージャから離した状態に保たれる。セキュリティポリシーを実施するためのいくつかの可能な機構を使用してもよい。一実施形態では、セキュリティポリシーは、ユーザに手動でタグをサービス及び設定に付けさせることによって実施される。これによって、ユーザに、そのモバイルコンポーネントの操作に対する最大の制御権が与えられる。別の実施形態では、セキュリティポリシーは、１つ又は複数の評判の高い外部サービスにホワイトリスト及び／又はブラックリストに基づいてサービスについてのタグを返させることによって実施される。さらに別の実施形態では、セキュリティポリシーは、第三者、信頼できる機関によって暗号署名されたそれ自体のタグをサービスに返させることによって実施される。別の実施形態では、セキュリティポリシーは、上記手法の組合せに基づいて、タグを決定するために使用され得る規則べースのポリシー言語によって実施される。これらすべては、単独で使用してもよいし、互いに組み合わせて使用してもよいことに留意されたい。
【００６７】
一実施形態では、第１と第２の手法の組合せが使用され、ユーザは、設定のためのそれ自体のタグを定義し、サービスは、評判のサービスによってラベル付けされる。環境によって定義された設定は、システムによって決定された不変のタグを有する。環境設定は、その設定のモバイルコンポーネントのラベルが、⊆ｓｅｔ関係単位に互換性がある場合にだけ、モバイルコンポーネントが使用できるようになる。
【００６８】
タグ多相性
サービスへのタグ付けを、そのサービスによって行われる特定のクエリに基づいて行いたいと望むことがある。例えば、特定の連絡先についてメッセージを送信／受信するとき、関連のサービスを連絡先のタグでラベル付けさせることが有用である。一実施形態では、これは、サービスの位置の一部として連絡先（例えばＵＲＬは、ｍａｉｌ．ｏｒｇ／ｍｙｅｍａｉｌ／ｓｔｅｖｅのようなものであってもよい）を含めることによって遂行される。次いで、セキュリティポリシーは、要求から名前を抽出し、名前をサービスのタグとして返すことができる。これは、文献『Ａ．Ｍｙｅｒｓ他、「Ａ  Ｄｅｃｅｎｔｒａｌｉｚｅｄ  Ｍｏｄｅｌ  ｆｏｒ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｆｌｏｗ  Ｃｏｎｔｒｏｌ」、ＳＯＳＰ’９７、１２９〜１４２頁、ＡＣＭ  Ｐｒｅｓｓ、１９９７年』において紹介されたラベル多相性にちなんで、タグ多相性と呼ばれている。
【００６９】
モバイルコンポーネント構成
一実施形態では、より小さい複数のモバイルコンポーネントが構築され、より大きいモバイルコンポーネントを作成するために組み合わされる。これは、構成操作によって行われる。例えば、図２Ａの映画モバイルコンポーネントの各タブは、別個のモバイルコンポーネントとして実施され得る。モバイルコンポーネントは、十分に小さく一般的である場合、新しいコンテキストで再使用することができる。例えば、上述された映画モバイルコンポーネント内のコンポーネントを再使用するいくつかの可能性がある。第１に、ユーザが映画を選択するのに別のウェブサイトを使用することを望む場合、そのサイトから映画を選択するためのモバイルコンポーネントが構築され、次いで、既存の映画レビュー及びチケット購入モバイルコンポーネントと共に使用される。第２に、カレンダーモバイルコンポーネントは、日付、時間及び位置を提供する他の任意のモバイルコンポーネントと共に使用され得る。第３に、映画館への道順を提供するために、地図及び道順モバイルコンポーネントが、映画モバイルコンポーネントと共に構成され得る。
【００７０】
暗黙リンク
一実施形態では、構成は、暗黙のリンクを使用して遂行される。これによって、ユーザは、単純なＵｌアクションが必要とされるモバイルデバイス上でモバイルコンポーネントを構成することを含めて、それ自体のモバイルコンポーネントを構成することができる。
【００７１】
一実施形態では、ソースモバイルコンポーネントの構成要素は、名前及びデータ型によって暗黙にリンクされる。例えば、あるモバイルコンポーネントが文字列（ｓｔｒｉｎｇ）タイプの劇場出力設定を提供し、別のモバイルコンポーネントが文字列（ｓｔｒｉｎｇ）タイプの劇場入力設定を提供する場合、これらの設定は、合成モバイルコンポーネントにマージされる。したがって、共有される設定及びサービスは、モバイルコンポーネント間の通信機構になる。一実施形態では、２つのモバイルコンポーネントが互いに互換性のない設定又はサービスを有する（例えば名前は同じであるが、データ型はそれぞれ異なる）場合、適切なコンポーネントは別個にされ、競合を避けるためにリネームされる。一実施形態では、ソースモバイルコンポーネントの個々のＵＩコンポーネントは、直接にはリンクされない。モバイルコンポーネントユーザインターフェースがタブ付きナビゲーションによって編成されるので、ユーザインターフェースは、単に個々のタブ集合の和集合を取ることにより組み合わせることができる。
【００７２】
静的対動的構成
１組のモバイルコンポーネントは、コンパイル時に静的に構成することも、実行時に動的に構成することもできる。一実施形態では、静的構成は動的なリンク機構又はコードの実行時ロードを必要としないので、静的構成が使用される。しかし、モバイルコンポーネントの動的構成も同様に使用することができる。
【００７３】
構成規則
他のモバイルコンポーネントからモバイルコンポーネントを構成するために使用される複数の規則がある。
【００７４】
マージ設定
一実施形態では、モバイルコンポーネントを構成するために、すべてのソースモバイルコンポーネントからの設定がまず、単一の出力集合にマージされる。下記のアルゴリズム１は、すべてのソースモバイルコンポーネントからの設定を第１の出力集合にマージするためのプロセスの一実施形態を示している。一実施形態では、静的構成を使用する場合、モバイルコンポーネントコンパイラは、設定をマージするためのプロセスを実施する。別の実施形態では、動的構成を使用する場合、設定をマージするためのプロセスは、実行時に、モバイルデバイス上で実行されるソフトウェアによって実施される。アルゴリズム１を参照すると、アルゴリズムは、その入力として、ソースモバイルコンポーネントの集合Ｍを取り、ただし、それぞれのモバイルコンポーネントＭ∈Ｍは、設定の集合、Ｍ．Ｓｅｔｔｉｎｇｓを有し、Ｓｅｔｔｉｎｇｓ、合成モバイルコンポーネント内の設定名からその定義への写像、並びにＮａｍｅＭａｐｓｅｔ、元のソースモバイルコンポーネント内の設定名（元のソースモバイルコンポーネントのモバイルコンポーネント名が先頭に付けられた）からターゲットモバイルコンポーネント内の対応する名前への写像を返す。
【００７５】
それぞれの設定は、ターゲットモーメントに直接追加し、リネームし、又は別の設定とマージすべきかどうか確かめるために検査される。この名前を有する設定が以前に見られていない場合、設定は、（多分、後にマージするために）出力集合に直接追加される。設定が内部的であり（内部設定が秘密に保たれ）、又は出力集合内の同じ名前の既存の設定と互換性がない場合、新しい設定は、新しい名前で追加され、元の名前の先頭にソースモバイルコンポーネントの名前を付けることによって作成される。最後に、同じ名前を有する出力集合内に互換性のある（両方が出力とは限らないが、同じデータ型の）モバイルコンポーネントがある場合、２つがマージされる。ソースモバイルコンポーネントの入力（ｉｎｐｕｔ）設定が別のモバイルコンポーネントの出力（ｏｕｔｐｕｔ）設定によって提供され得る場合、その２つは、出力設定にマージされる。
【数７】
2011504256.tif 000009
【００７６】
マージサービス
一実施形態では、サービスは、類似のやり方でマージされる。下記のアルゴリズム２は、サービスをマージするためのプロセスを示している。アルゴリズム２を参照すると、各ソースモバイルコンポーネントの各サービスは、検査され、同じ名前を有する他のいずれかのサービスと比較される。２つのサービスは、名前、位置及びクエリが一致する場合、組み合わされ、ただし、組み合わされるとは、２つのサービス定義が同値であり、合成モバイルコンポーネントにおいて１つだけが使用されることを意味する。こうした場合、元の（構成されなかった）モバイルコンポーネント内の他のサービスへのどんな参照も、合成モバイルコンポーネント内で使用されるサービス定義にリネームされる。さらに、それらは両方とも、ユーザインターフェース内のトリガボタンに接続されてはならない。同じ名前の２つのサービス間の競合は、サービスのうちの１つをリネームすることによって解決される。このプロセスの結果は、Ｓｅｒｖｉｃｅｓ、ターゲットサービス名からターゲットサービス定義への写像、及びＮａｍｅＭａｐｓｖｃ、（接頭語付き）ソースサービス名からターゲットサービス名前への写像である。ターゲットサービス定義は、合成モバイルコンポーネント内で使用される定義である。
【数８】
2011504256.tif 000010
【００７７】
ＵＩコンポーネントのマージ
一実施形態では、ＵＩコンポーネントは、各コンポーネントの名前の先頭にそのソースモバイルコンポーネントの名を付けることによってマージされる。次いで、リネームされたこれらのコンポーネントは、競合のない単一のセットへ組み合わせることができる。
【００７８】
要素参照の解決
上記アルゴリズムを使用してソースモバイルコンポーネントの設定、サービス及びＵＩコンポーネントが組み合わされた後、それらの間のどんな参照も解決される。一実施形態では、これは、（アルゴリズム１を使用して作成された）ＮａｍｅＭａｐｓｅｔ及び（アルゴリズム２を使用して作成された）ＮａｍｅＭａｐｓｖｃを使用して行われる。これらの２つのデータ構造は、そのソースモバイルコンポーネントが先頭に付けられた設定／サービス名から、構成されたモバイルコンポーネント内の関連する設定／サービス用に使用される名前への写像である。
【００７９】
参照された設定又はサービスがＮａｍｅＭａｐ＿ｓｅｔ又はＮａｍｅＭａｐ＿ｓｖｃによって、そのソースモバイルコンポーネントが先頭に付けられた名前に写像される場合、この名前は、参照要素内で使用される。これは、設定又はサービスが他のいずれかのソースモバイルコンポーネントの設定又はサービスとは共有されないことを示す。参照された設定又はサービスがその元の名前（接頭語なし）に写像される場合、この元の名前は、参照内に保たれる。ＵＩコンポーネントへのすべての参照は、接頭語付きの名前を参照するように変更される（例えば、モバイルコンポーネントｍ１内にＵＩコンポーネント「ＭｏｖｉｅＬａｂｅｌ」への参照がある場合、これは、構成モバイルコンポーネント内では、「ｍ１．ＭｏｖｉｅＬａｂｅｌ」になる）。
【００８０】
構成の特性
一実施形態では、モバイルコンポーネントは、より小さいモバイルコンポーネントを構成することによって構築される場合、基礎となる設定、サービス及びＵＩコンポーネントから直接構築されたモノリシックのモバイルコンポーネントと同じように動作する。この特性は、本明細書では構成閉包と呼ばれる。これは、２つのより単純な特性を実証することによって真であると示される。第１に、モバイルコンポーネントは、分割し、次いで、元のモバイルコンポーネントに同値なモバイルコンポーネントを生じさせるように構成することができる。第２に、小さい例外を除いて、モバイルコンポーネントは、同値なモバイルコンポーネントがもたらされる任意の順序で構成することができる。
【００８１】
モバイルコンポーネント同値性
第１に、モバイルコンポーネントの同値性は、グラフ同型性に基づいて定義される。２つのモバイルコンポーネントＭ１及びＭ２は、Ｍ１の要素とＭ１の要素の間で、リンクされた要素のそれぞれの対（ｅ１，ｅ２）∈βについて、以下になるように全単射βを構築できる場合、同型である。
１．ｅ１とｅ２は同じ要素タイプ（設定、サービス又はＵＩコンポーネント）のものであり、同じ内部特性（例えばデータ型、方向）を有する。
２．ｅ１からＭ１の別の要素ｅ’１への各リンクについて、（ｅ’１，ｅ’２）∈βになるようにｅ２からＭ２のｅ’２への対応するリンクがある。
【００８２】
モバイルコンポーネント分割及び構成
一実施形態では、少なくとも２つのＵＩタブを含むモバイルコンポーネントＭは、以下のように、独立した２つのモバイルコンポーネントＭ１及びＭ２に任意に分割することができる。
Ｍが１組のタブＴを有するならば、これらのタブのサブセットＴ１をモバイルコンポーネントＭ１に、残りのタブＴ＼Ｔ１をＭ２に置く。それぞれのＵＩコンポーネントは、その関連するタブと同じモバイルコンポーネントに置かれる。
【００８３】
サービスの応答は、ＵＩコンポーネントによって消費される場合、そのコンポーネントと同じモバイルコンポーネントに置かれる。応答が複数のＵＩコンポーネントによって消費される場合、サービスは、両方のモバイルコンポーネントに追加される。残りのサービスは、モバイルコンポーネント間で任意に分割される。
【００８４】
入力設定は、入力設定の値を消費するすべてのモバイルコンポーネント内に置かれる。出力及び内部設定は、出力及び内部設定の値を生成するサービス又はＵＩコンポーネントを含むモバイルコンポーネントに置かれる。出力又は内部の設定の値があるモバイルコンポーネント内で生成されるが、他方のモバイルコンポーネント内で使用される場合、設定は、値が使用されたモバイルコンポーネントへの入力として追加される。ソース設定が内部的であった場合、それは、出力になるように促される。
【００８５】
必要な入力が提供される限り、モバイルコンポーネントＭ１及びＭ２はそれぞれ独立して機能することができる。モバイルコンポーネントＭ１及びＭ２が単一のモバイルコンポーネントＭ’内に構成される場合、Ｍ’及びＭは同型である。
【００８６】
構成順序付け
一実施形態では、モバイルコンポーネントの順序付きリスト、Ｍ＝［Ｍ１，Ｍ２，…Ｍｎ］が与えられると、２ｎ−１内これらのモバイルコンポーネントは、元の順序を依然として保ちながら、それぞれ異なるやり方で構成することができる。例えば、［Ｍ１，Ｍ２，Ｍ３］は、Ｍ１＋Ｍ２＋Ｍ３、（Ｍ１＋Ｍ２）＋Ｍ３又はＭ１＋（Ｍ２＋Ｍ３）のように単一のモバイルコンポーネントに構成することができる。それらの構成はそれぞれ、他のすべての構成に対して同型である。任意順序内のモバイルコンポーネントの構成もまた、入力として第３のモバイルコンポーネントによって使用される同じ出力名及びデータ型を有する設定を２つのモバイルコンポーネントが有さない場合は同型である。その場合、他のモバイルコンポーネントによってどの出力が使用されるかの選択は、モバイルコンポーネントが構成される順序に依存する。競合する出力のうちの１つが、この競合を回避するために構成前にリネームされる場合、順序独立が回復される。
【００８７】
健全な構成
本明細書に述べられた構成アルゴリズムの別の特性は健全な構成であり、すなわち、モバイルコンポーネントＭ１、Ｍ２…Ｍｎの集合がタグ環境Ｅに関して個々に健全である場合、これらのモバイルコンポーネントの構成Ｍ’も健全である。
【００８８】
これは、Ｍ’について推移情報フローグラフＧｍ’を見ることによって真であると示され得る。写像Ｍは、Ｍ’の各頂点Ｖからソースモバイルコンポーネント内の１組の頂点ｖへの写像が、各ソースモバイルコンポーネントからのｖ内にせいぜい１つの頂点があり、ｖ∪｛Ｖ｝内のすべての頂点が同じタグ集合でレベル付けされるように定義される。さらに、各エッジ（Ｖ１→Ｖ２）∈Ｇｍ’は、Ｖｉ１∈Ｍ［Ｖ１］及びＶｉ２∈Ｍ［Ｖ２］であるようにソースモバイルコンポーネントＭｉのグラフ内に対応するエッジ（Ｖｉ１，Ｖｉ２）∈Ｇｉを有する。したがって、ｔａｇｓｅｔ（Ｖ１）＝ｔａｇｓｅｔ（Ｖｉ１）及びｔａｇｓｅｔ（Ｖ２）＝ｔａｇｓｅｔ（Ｖｉ２）である。それぞれのソースモバイルコンポーネントが健全であるので、ｔａｇｓｅｔ（Ｖｉ２）  ⊆ｓｅｔ  ｔａｇｓｅｔ（Ｖｉ１）であることが分かる。したがって、Ｇｍ’内の各エッジについて、ｔａｇｓｅｔ（Ｖ２）  ⊆ｓｅｔ  ｔａｇｓｅｔ（Ｖ１）は真（ｔｒｕｅ）であり、構成されたモバイルコンポーネントは、Ｅに関して健全である。
【００８９】
モバイルコンポーネントフレームワークの一実施形態は、ターゲットプラットフォームとしてアドビフラッシュプレーヤーを使用してプロトタイプが作られている。図５は、モバイルコンポーネントがどのようにコンパイルされるか示すコンパイルプロセスの一実施形態のフローチャートである。このプロセスは、ハードウェア（回路、専用論理など）、ソフトウェア（汎用コンピュータシステム又は専用マシン上で実行されるものなど）、又は両方の組合せを備えてもよい処理論理によって実施される。図５を参照すると、モバイルコンポーネント５０１が、以下の２つのファイル、すなわちモバイルコンポーネント５０１によって使用される設定及びサービスについて記述するメタデータファイル５０２、並びにモバイルコンポーネントのＵＩコンポーネントについて記述するＵＩ記述ファイル５０３内に指定されている。一実施形態では、ＵＩ記述ファイル５０３は、ＡｄｏｂｅのフレックスＸＭＬ言語（埋込みコードなし）のサブセットを使用する。これによって、ＵＩをＡｄｏｂｅの視覚デザイナーを使用して構築することが可能になる。さらに、画像ファイル５０４が、モバイルコンポーネント内に含まれてもよい。上述されたように、設定、サービス及びＵＩコンポーネントは、互いに参照してもよい。
【００９０】
モバイルコンポーネントコンパイラ５１０は、フラッシュソース５２０を生成するために、モバイルコンポーネントソース５０１をコンパイルする。完了すると、モバイルコンポーネントは、アドビフレックス（Ａｄｏｂｅ  Ｆｌｅｘ）（登録商標）アプリケーション５２１に変換される。それぞれの設定及びサービスは、このアプリケーション内のオブジェクトになり、下流のデータ変更に基づいてオブジェクトをリフレッシュ／無効化するために、イベントドリブンのコードが追加される。セキュリティマネージャを含むクライアント側基盤５２２は、ＡｃｔｉｏｎＳｃｒｉｐｔ（フラッシュプレーヤー用のＡｄｏｂｅバージョンのＪａｖａＳｃｒｉｐｔ）内で実装され、モバイルコンポーネントにコピーされる。ユーザがモバイルコンポーネントの入力設定の値を変更することを可能にするために、設定と呼ばれる追加のタブが、各モバイルコンポーネントに追加される。
【００９１】
次に、ＡｄｏｂｅのＦｌｅｘコンパイラ５３０が、コンパイルされたフラッシュファイル５３１を作成するために実行される。このコンパイルされたファイルは、任意のフラッシュプレーヤーによって、典型的にはブラウザプラグインとして実行することができる。一実施形態では、別個のプログラムがモバイルコンポーネント構成を実装することに留意されたい。そのプログラムは、その入力として、任意の数のモバイルコンポーネントソース定義を得る。これらの定義は、上述された手法を使用して単一の出力定義へと組み合わされる。次いで、上述されたように、結果として生じるモバイルコンポーネントはコンパイルすることができる。
【００９２】
映画モバイルコンポーネント
本明細書に述べられたフレームワークの一実施形態では、Ｇｏｏｇｌｅ（登録商標）映画及びインターネット映画データベースからのライブデータの読出しを含めて、映画モバイルコンポーネントのサブセットが生成されている。これは、図６に示されている。図６を参照すると、チケットは、シミュレートされた電子商取引ウェブサービスを呼び出すことによって購入される。これらのウェブサイトから関連するコンテンツを抽出する一実施形態では、別個のプロキシサーバが、ＸＳＬＴ及びＪａｖａを使用して適切なコンテンツを抽出し、次いでモバイルコンポーネントにＸＭＬ文書を返す。
【００９３】
一実施形態では、プロキシサービスのホスト名は、モバイルコンポーネントの入力設定である。この設定は、プロキシを使用する各サービスの位置の一部である。したがって、プロキシが変更されるとき、セキュリティポリシーは、モバイルコンポーネントがそのプロキシを使用できるかどうか確かめるために自動的に再評価される。セキュリティチェックが失敗する場合、モバイルコンポーネントは、設定タブを除いて、ディセーブルされる。図７は、ユーザがプロキシをｕｎｔｒｕｓｔｅｄ．ｃｏｍと設定しようと試みたいずれかの例を示しており、このｕｎｔｒｕｓｔｅｄ．ｃｏｍはセキュリティポリシーによって否定されている。こうした場合、セキュリティマネージャによって権利が付与され得ないことを示すウィンドウが表示される。
【００９４】
モバイルコンポーネント共有アプリケーション
一実施形態では、モバイルコンポーネントは、ウェブベースのアプリケーションを使用して共有し、構成し、編成することができる。使用可能なモバイルコンポーネントのリストは、アプリケーションのデータベース内に維持され、ユーザに対してアイコンの選択として表示される。ユーザは、モバイルコンポーネントを実行し、構成し、又は編成することを選択することができる。モバイルコンポーネントを実行すると、関連するフラッシュファイルがユーザのブラウザにダウンロードされることになる。ユーザは、モバイルコンポーネントの設定のための値及びタグ（これらは各ユーザにとってローカルである）を編集することができる。最後に、ユーザは、構成のために２つ以上のモバイルコンポーネントを選択することができる。これによって、新しいモバイルコンポーネントを生成するサーバ上でコンポーザ及びコンパイラが実行されることになる。次いで、この新しいモバイルコンポーネントは、共有アプリケーション上で使用可能になる。
【００９５】
コンピュータシステムの例
図８は、本明細書に述べられた操作のうちの１つ又は複数を実施することができる例示的なコンピュータシステムのブロック図である。図８を参照すると、コンピュータシステム８００は、例示的なクライアント又はサーバコンピュータシステムを備えてもよい。コンピュータシステム８００は、情報を通信するための通信機構又はバス８１１と、バス８１１に結合された、情報を処理するためのプロセッサ８１２とを備える。プロセッサ８１２は、マイクロプロセッサを含むが、例えばペンティアム（Ｐｅｎｔｉｕｍ）（登録商標）、パワーＰＣ（ＰｏｗｅｒＰＣ）（登録商標）、アルファ（Ａｌｐｈａ）（登録商標）などのマイクロプロセッサだけに限定されない。
【００９６】
システム８００はさらに、ランダムアクセスメモリ（ＲＡＭ）、或いはバス８１１に結合された、プロセッサ８１２によって実行される情報及び命令を格納するための他の動的記憶装置８０４（主記憶と呼ばれる）を備える。主記憶装置８０４は、プロセッサ８１２による命令の実行の間、一時変数又は他の中間情報を格納するために使用することもできる。
【００９７】
コンピュータシステム８００は、読取り専用メモリ（ＲＯＭ：ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、及び／又はバス８１１に結合された、プロセッサ８１２のための静的情報及び命令を格納するための他の静的記憶装置８０６、磁気ディスクや光ディスク、及びその対応するディスクドライブなどのデータ記憶装置８０７を備える。情報及び命令を格納するためのデータ記憶装置８０７は、バス８１１に結合される。
【００９８】
コンピュータシステム８００はさらに、バス８１１に結合された、情報をコンピュータユーザに表示するための陰極線管（ＣＲＴ：ｃａｔｈｏｄｅ  ｒａｙ  ｔｕｂｅ）や液晶ディスプレイ（ＬＣＤ：ｌｉｑｕｉｄ  ｃｒｙｓｔａｌ  ｄｉｓｐｌａｙ）などの表示装置８２１に結合されてもよい。プロセッサ８１２に情報及びコマンド選択を伝えるために、英数字及び他のキーを含む英数字入力デバイス８２２もまた、バス８１１に結合することができる。追加のユーザ入力デバイスは、バス８１１に結合された、プロセッサ８１２に方向情報及びコマンド選択を伝え、またディスプレイ８２１上のカーソルの動きを制御するためのマウス、トラックボール、トラックパッド、スタイラス又はカーソル方向キーなど、カーソルコントロール８２３である。
【００９９】
バス８１１に結合され得る別の装置は、ハードコピー装置８２４であり、このハードコピー装置８２４は、紙、フィルム又は類似のタイプの媒体などの媒体上で情報をマーキングするために使用されてもよい。バス８１１に結合され得る別の装置は、電話又は携帯パーム型装置への通信のための有線／無線通信機能を持つ装置である。
【０１００】
システム８００のコンポーネント及び関連ハードウェアのいずれか又はすべてを本発明において使用できることに留意されたい。しかし、コンピュータシステムの他の構成は、デバイスの一部又はすべてを含んでもよいことが理解されよう。上記説明を読んだ後、本発明の多くの変更及び修正が当業者には間違いなく明らかになろうが、例示するために示され述べられたいずれかの特定の実施形態は、限定的と見なすべきものでは決してないことを理解されたい。したがって、様々な実施形態の詳細への言及は、本発明にとって不可欠と見なされる特徴だけをそれ自体に列挙する特許請求の範囲を制限するものではない。
【図１】
2011504256.tif 000011
【図２Ａ】
2011504256.tif 000012
【図２Ｂ】
2011504256.tif 000013
【図３】
2011504256.tif 000014
【図４】
2011504256.tif 000015
【図５】
2011504256.tif 000016
【図６】
2011504256.tif 000017
【図７】
2011504256.tif 000018
【図８】
2011504256.tif 000019
【手続補正書】
【提出日】平成22年6月2日(2010.6.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つのソフトウェアコンポーネントが組み込まれているアクティブコンテンツ、にアクセスするステップであって、それぞれのソフトウェアコンポーネントが、アクティビティのシーケンスのワークフローを一緒に実施する複数のコンポーネントを有し、前記複数のコンポーネントが、１つ又は複数の外部サービス、１つ又は複数のユーザインターフェースコントロール、１つ又は複数の入力、および、１つ又は複数の出力を表す、当該ステップと、
前記ソフトウェアコンポーネントを実行するステップであって、情報フローベースのセキュリティモデルを用いてコンポーネント間の通信を仲介する処理を含む、当該ステップと、
を含む方法。
【請求項２】
前記セキュリティモデルは、セキュリティマネージャがコンポーネント間の前記通信を仲介するように前記セキュリティマネージャにより用いられる、請求項１に記載の方法。
【請求項３】
前記方法は、
前記セキュリティマネージャが外部位置との対話を制御し、情報フローを制御するためのユーザ定義のセキュリティポリシーを前記セキュリティマネージャが執行するステップ、
をさらに含む請求項２に記載の方法。
【請求項４】
前記ユーザ定義のセキュリティポリシーの執行は、
前記ソフトウェアコンポーネントがアクティブ化されるときに、前記セキュリティマネージャによって実施される、請求項３に記載の方法。
【請求項５】
注釈ベースの前記セキュリティモデルがタグベースのセキュリティモデルである、請求項１に記載の方法。
【請求項６】
前記複数のコンポーネント内のコンポーネントが宣言的に相互接続される、請求項１に記載の方法。
【請求項７】
前記コンポーネントが複数の外部ソースからのデータを組み合わせる、請求項６に記載の方法。
【請求項８】
前記複数の外部ソースは、
ウェブサイト、メールプログラム、ブラウザ、サービス及びセンサ、
から成るグループ、から選択された外部ソースを含む、請求項７に記載の方法。
【請求項９】
前記サービスが、コンテンツを提供する呼出し可能なエンティティである、請求項１に記載の方法。
【請求項１０】
前記呼出し可能なエンティティは、ウェブサイトを含む、請求項９に記載の方法。
【請求項１１】
コンポーネント間の通信は、設定を介して行われる、請求項１に記載の方法。
【請求項１２】
前記設定は、キー値の対を含む、請求項１１に記載の方法。
【請求項１３】
それぞれの設定は、入力、出力、前記ソフトウェアコンポーネントのための内部データ、又はコンポーネントの内部のデータである、請求項１１に記載の方法。
【請求項１４】
入力は、データを、直接ユーザから、他のソフトウェアコンポーネントから、又は環境から取得し、
さらに、各出力又は各内部設定は、前記ソフトウェアコンポーネント内のサービス又はユーザインターフェースコントロールから、値を取得する、請求項１に記載の方法。
【請求項１５】
前記ユーザインターフェースは、リモートサービスとの通信を制御する、請求項１に記載の方法。
【請求項１６】
前記方法は、
前記ソフトウェアコンポーネント内のコンポーネント間の接続従属性を追跡するステップと、
いずれかの設定、サービス結果又はユーザ選択において変更が生じるとき、依存するコンポーネントを変更するためのイベントドリブンコードを自動的に生成するステップと、
をさらに含む請求項１に記載の方法。
【請求項１７】
前記方法は、
前記ソフトウェアコンポーネントの各コンポーネントについて情報フローインターフェースを定義するステップ、
をさらに含み、
情報フローインターフェースは、
入力及び出力の集合、並びに、前記入力及び出力の間の情報フロー関係として、前記各コンポーネントを記述する、請求項１に記載の方法。
【請求項１８】
前記セキュリティポリシーは、
データをその意図された受信者に従って特徴付ける前記入力及び前記出力、にタグを割り当てる、請求項１に記載の方法。
【請求項１９】
前記ユーザは、サービス及び設定にタグを手動で付けることによって前記セキュリティポリシーを指定する、請求項１８に記載の方法。
【請求項２０】
前記ソフトウェアコンポーネントは、
名前及びデータ型によって１つ又は複数の他のソフトウェアコンポーネントに暗黙的にリンクされる、請求項１に記載の方法。
【請求項２１】
前記ソフトウェアコンポーネントは、共有設定及びサービスによって前記１つ又は複数の他のソフトウェアコンポーネントと通信する、請求項２０に記載の方法。
【請求項２２】
前記方法は、
すべてのソフトウェアコンポーネントサービス及び設定を受け取るステップと、
前記ソフトウェアコンポーネントがその操作に必要とする１つ又は複数の権利のリストを構築するステップであって、前記権利が、入力設定を読み出す権利及びサービスを呼び出す権利のうちの少なくとも１つを含む、当該ステップと、
前記権利リスト、前記ソフトウェアコンポーネントの情報フローグラフ及び環境に基づいて、前記１つ又は複数の権利のそれぞれを付与するかどうか評価するステップと、
をさらに含む、請求項１に記載の方法。
【請求項２３】
前記１つ又は複数の権利のそれぞれを付与するかどうか評価するステップは、情報フロー解析に基づいて実行される、請求項２２に記載の方法。
【請求項２４】
前記１つ又は複数の権利のそれぞれを付与するかどうか評価するステップは、
直接情報フローグラフを構築し、
前記直接情報フローグラフを推移情報フローグラフに変換し、
前記ソフトウェアコンポーネント内に前記推移情報フローグラフを格納すること、
によって、入力と出力間のリンクを示すグラフをコンパイル時に構築するステップ、
を含む請求項２３に記載の方法。
【請求項２５】
前記方法は、
それぞれ異なるセキュリティポリシーを有するそれぞれ異なる環境においてあるソフトウェアコンポーネントを再使用できるように、前記あるソフトウェアコンポーネントの外面化されたバージョンの情報フローグラフにそれぞれ異なる注釈を付けるステップ、
をさらに含む請求項１に記載の方法。
【請求項２６】
前記ソフトウェアコンポーネントの前記コンポーネントは、
カスタマイズ可能なサービスのラッパーと、
他のソフトウェアコンポーネントにデータを通信するためのカテゴリ化された複数の設定と、
カスタマイズ可能なユーザ対話のためのユーザインターフェース層であって、コンポーネント間の通信が宣言的に指定される、ユーザインターフェース層と、
を備える、請求項１に記載の方法。
【請求項２７】
設定及びサービスが、セキュリティマネージャの制御下における外部位置との対話を容易にする、請求項２６に記載の方法。
【請求項２８】
前記セキュリティマネージャは、
ユーザ定義のラベル付けに従ってデータ送信装置と受信装置とを特徴付けるセキュリティポリシー、を使用して入力と出力間の情報フローを評価することによって、ソフトウェアコンポーネントをアクティブ化するかどうか決定する、請求項２６に記載の方法。
【請求項２９】
前記個々のモバイルコンポーネントの前記情報フローグラフは、手動又は自動的に計算される、請求項１に記載の方法。
【請求項３０】
命令を格納するための１つ又は複数のコンピュータ読取り可能記憶媒体を有する製品であって、
前記命令は、システムによって実行されるとき、
少なくとも１つのソフトウェアコンポーネントが組み込まれているアクティブコンテンツ、にアクセスするステップであって、それぞれのソフトウェアコンポーネントが、アクティビティのシーケンスのワークフローを一緒に実施する複数のコンポーネントを有し、前記複数のコンポーネントが、１つ又は複数の外部サービス、１つ又は複数のユーザインターフェースコントロール、１つ又は複数の入力、および、１つ又は複数の出力を表す、当該ステップと、
前記ソフトウェアコンポーネントを実行するステップであって、情報フローベースのセキュリティモデルを用いてコンポーネント間の通信を仲介する処理を含む、当該ステップと、
を含む方法を、前記システムに実施させる、
当該製品。
【請求項３１】
複数のソフトウェアコンポーネントにアクセスするステップであって、それぞれのソフトウェアコンポーネントは、アクティビティのシーケンスのワークフローを一緒に実施する複数のコンポーネントを有し、前記複数のコンポーネントが、１つ又は複数の外部サービス、１つ又は複数のユーザインターフェースコントロール、１つ又は複数の入力、および、１つ又は複数の出力を表し、それぞれのソフトウェアコンポーネントは健全である、当該ステップと、
健全であると保証された単一のソフトウェアコンポーネントを作成するために前記複数のソフトウェアコンポーネント上で構成操作を実施するステップと、
を含む方法。
【国際調査報告】
2011504256.tif 000020
2011504256.tif 000021
2011504256.tif 000022