(57)【特許請求の範囲】
【請求項１】
モバイル・デバイス・ソフトウェアを管理する方法であって、
ソフトウェア・モジュール・マネージャが、異なるアクションをそれぞれ実行するように動作可能な複数のソフトウェア・モジュール・ハンドラと複数の異種ソフトウェア・モジュールとの間のインターフェースを提供するステップ（２００）と、
前記ソフトウェア・モジュール・マネージャが、１つ又は複数のソフトウェア・モジュールのインストール、削除、アクティブ化、または修正に対応するソフトウェア・モジュール・イベントに応答して前記インターフェースを呼び出すステップ（２０２）と、
前記ソフトウェア・モジュール・マネージャが、前記インターフェースを使用して前記ソフトウェア・モジュール・イベントに関連する前記ソフトウェア・モジュール及び対応する属性リストを識別するステップ（２０４）であって、前記属性リストは、識別された前記ソフトウェア・モジュールが呼び出し時に１つ又は複数の機能を提供することを可能にする、前記ソフトウェア・モジュール・ハンドラのうちの少なくとも１つによって実行される１つ又は複数のアクションを指定する、ステップと、
前記ソフトウェア・モジュール・マネージャが、前記属性リストを前記属性リスト内で識別される各ソフトウェア・モジュール・ハンドラに提供するステップ（２０６）と、
複数のソフトウェア・モジュールの相互運用性を保証するために、前記属性リスト内で指定される各アクションを対応する前記ソフトウェア・モジュール・ハンドラによって実行するステップ（２０８）と、
を含む方法。
【請求項２】
複数のソフトウェア・モジュール・ハンドラと複数のソフトウェア・モジュールとの間のインターフェースを提供する前記ステップは、
前記ソフトウェア・モジュール・マネージャが、第１のソフトウェア・プラットフォームに関連する第１の複数のソフトウェア・モジュール・ハンドラと第１の複数のソフトウェア・モジュールとの間の第１のインターフェースを提供するステップと、
前記ソフトウェア・モジュール・マネージャが、第２のソフトウェア・プラットフォームに関連する第２の複数のソフトウェア・モジュール・ハンドラと第２の複数のソフトウェア・モジュールとの間の第２のインターフェースを提供するステップと、
を含む、請求項１に記載の方法。
【請求項３】
前記第１及び第２の複数のソフトウェア・モジュール・ハンドラのうちの１つ又は複数は、共通である、請求項２に記載の方法。
【請求項４】
前記ソフトウェア・モジュール・イベントは、ファームウェア無線通信（Firmware Over The Air）アップデートイベント、ソフトウェア・アプリケーション管理イベント、またはソフトウェア・モジュール管理イベントである、請求項１に記載の方法。
【請求項５】
前記インターフェースを使用して前記ソフトウェア・モジュール・イベントに関連する前記ソフトウェア・モジュール及び対応する属性リストを識別する前記ステップは、
前記ソフトウェア・モジュール・マネージャが、前記ソフトウェア・モジュール・イベントに関連する前記ソフトウェア・モジュールからファイルを抽出するステップと、
前記ソフトウェア・モジュール・マネージャが、前記ファイルを構文解析して前記ファイル内で指定される各ソフトウェア・モジュール・ハンドラを識別するように構成された前記ソフトウェア・モジュール・ハンドラを呼び出すステップと、
を含む、請求項１に記載の方法。
【請求項６】
前記ファイルを抽出する前記ステップは、前記ソフトウェア・モジュール・マネージャが、拡張マークアップ言語ファイルを抽出するステップを含む、請求項５に記載の方法。
【請求項７】
前記属性リストを前記属性リスト内で識別される各ソフトウェア・モジュール・ハンドラに提供する前記ステップは、前記ソフトウェア・モジュール・マネージャが、前記インターフェースから前記ファイル内で識別される各ソフトウェア・モジュール・ハンドラに前記ファイルを渡すステップを含む、請求項５に記載の方法。
【請求項８】
複数のソフトウェア・モジュールの相互運用性を保証するために、前記属性リスト内で指定される各アクションを対応する前記ソフトウェア・モジュール・ハンドラによって実行する前記ステップは、前記ソフトウェア・モジュール・ハンドラによって、前記ソフトウェア・モジュールのうち、前記ソフトウェア・モジュール・イベントに関連する前記ソフトウェア・モジュールと、１つ又は複数の異なるソフトウェア・モジュールとの互換性の有無を判定するステップを含む、請求項１に記載の方法。
【請求項９】
前記ソフトウェア・モジュールのうち、前記ソフトウェア・モジュール・イベントに関連する前記ソフトウェア・モジュールと、前記１つ又は複数の異なるソフトウェア・モジュールとの互換性の有無を判定する前記ステップは、
前記ソフトウェア・モジュール・ハンドラが、前記ソフトウェア・モジュールの現在のバージョンを対応する前記属性リストから抽出するステップと、
前記ソフトウェア・モジュール・ハンドラが、前記ソフトウェア・モジュールの前記現在のバージョンと、前記１つ又は複数の異なるソフトウェア・モジュールの現在のバージョンとを比較するステップと、
を含む、請求項８に記載の方法。
【請求項１０】
複数のソフトウェア・モジュールの相互運用性を保証するために、前記属性リスト内で指定される各アクションを対応する前記ソフトウェア・モジュール・ハンドラによって実行する前記ステップは、前記ソフトウェア・モジュール・ハンドラが、前記ソフトウェア・モジュール・イベントに関連する前記ソフトウェア・モジュールの１つ又は複数の実行時特性を実行するステップを含む、請求項１に記載の方法。
【請求項１１】
複数のソフトウェア・モジュールの相互運用性を保証するために、前記属性リスト内で指定される各アクションを対応する前記ソフトウェア・モジュール・ハンドラによって実行する前記ステップは、前記ソフトウェア・モジュール・ハンドラが、前記ソフトウェア・モジュール・イベントに関連する前記ソフトウェア・モジュールの１つ又は複数の異なるコンポーネントをデプロイするステップを含む、請求項１に記載の方法。
【請求項１２】
モバイル・デバイス（１００）であって、
対応するソフトウェア・モジュールが呼び出し時に１つ又は複数の機能を提供することを可能にするために実行される１つ又は複数のアクションを指定する属性リスト（１４０）をそれぞれ有する複数の異種ソフトウェア・モジュール（１２０）と、
前記属性リストによって指定される前記アクションのうちの異なるアクションをそれぞれ実行するように動作可能な複数のソフトウェア・モジュール・ハンドラ（１３０）と、
前記ソフトウェア・モジュール・ハンドラと前記ソフトウェア・モジュールとの間に配設されるインターフェースであって、１つ又は複数のソフトウェア・モジュールのインストール、削除、アクティブ化、または修正に対応するソフトウェア・モジュール・イベントに応答して呼び出され、前記ソフトウェア・モジュール・イベントに関連する前記ソフトウェア・モジュール及び対応する前記属性リストを識別し、複数のソフトウェア・モジュールの相互運用性を保証するために、前記属性リスト内で指定される各アクションが対応する前記ソフトウェア・モジュール・ハンドラによって実行可能となるように、前記属性リストを前記属性リスト内で識別される各ソフトウェア・モジュール・ハンドラに提供するように動作可能なインターフェース（１１０）と、
を備えるモバイル・デバイス。
【請求項１３】
前記インターフェースは、
第１のソフトウェア・プラットフォームに関連する第１の複数のソフトウェア・モジュール・ハンドラと第１の複数のソフトウェア・モジュールとの間に配設される第１のインターフェースと、
第２のソフトウェア・プラットフォームに関連する第２の複数のソフトウェア・モジュール・ハンドラと第２の複数のソフトウェア・モジュールとの間に配設される第２のインターフェースと、
を備える、請求項１２に記載のモバイル・デバイス。
【請求項１４】
前記第１及び第２の複数のソフトウェア・モジュール・ハンドラのうちの１つ又は複数は、共通である、請求項１３に記載のモバイル・デバイス。
【請求項１５】
前記インターフェース（１１０）は、前記ソフトウェア・モジュール・イベントに関連する前記ソフトウェア・モジュールからファイルを抽出し、前記ファイルを構文解析して前記ファイル内で指定される各ソフトウェア・モジュール・ハンドラを識別するように構成された前記ソフトウェア・モジュール・ハンドラ（４４０）を呼び出すように動作可能である、請求項１２に記載のモバイル・デバイス。
【請求項１６】
前記インターフェース（１１０）は、前記ソフトウェア・モジュール・イベントに関連する前記ソフトウェア・モジュールから拡張マークアップ言語ファイルを抽出するように動作可能である、請求項１５に記載のモバイル・デバイス。
【請求項１７】
前記インターフェース（１１０）は、前記ファイル内で識別される各ソフトウェア・モジュール・ハンドラ（１３０）に前記ファイルを渡すように動作可能である、請求項１５に記載のモバイル・デバイス。
【請求項１８】
前記ソフトウェア・モジュール・ハンドラ（１３０）のうちの１つ又は複数は、前記ソフトウェア・モジュールのうち、前記ソフトウェア・モジュール・イベントに関連する前記ソフトウェア・モジュールと、１つ又は複数の異なるソフトウェア・モジュールとの互換性の有無を判定する（４２０，４３０）ように動作可能である、請求項１２に記載のモバイル・デバイス。
【請求項１９】
前記ソフトウェア・モジュール・ハンドラのうちの１つ又は複数は、前記ソフトウェア・モジュールの現在のバージョンを対応する前記属性リストから抽出し、前記ソフトウェア・モジュールの前記現在のバージョンと、前記１つ又は複数の異なるソフトウェア・モジュールの現在のバージョンとを比較する（４２０，４３０）ように動作可能である、請求項１８に記載のモバイル・デバイス。
【請求項２０】
前記ソフトウェア・モジュール・ハンドラのうちの１つ又は複数は、前記ソフトウェア・モジュール・イベントに関連する前記ソフトウェア・モジュールの１つ又は複数の実行時特性（４００）を実行するように動作可能である、請求項１２に記載のモバイル・デバイス。
【請求項２１】
前記ソフトウェア・モジュール・ハンドラのうちの１つ又は複数は、前記ソフトウェア・モジュール・イベントに関連する前記ソフトウェア・モジュールの１つ又は複数の異なるコンポーネントをデプロイする（４１０）ように動作可能である、請求項１２に記載のモバイル・デバイス。
【請求項２２】
コンピュータ・システムであって、
複数の異なる異種モバイル・デバイス・ソフトウェア・モジュールが呼び出し時にそれぞれ１つ又は複数の機能を提供することを可能にする１つ又は複数の異なるアクションを実行するように動作可能な複数のソフトウェア・モジュール・ハンドラ（１３０）と、
ソフトウェア・モジュール・マネージャ（１１０）であって、
前記ソフトウェア・モジュール・ハンドラ（１３０）と前記モバイル・デバイス・ソフトウェア・モジュール（１２０）との間のインターフェースを提供し（２００）、
１つ又は複数のソフトウェア・モジュールのインストール、削除、アクティブ化、または修正に対応するソフトウェア・モジュール・イベントを認識し（２０２）、
前記ソフトウェア・モジュール・イベントに関連する前記モバイル・デバイス・ソフトウェア・モジュール（１２０）と、前記ソフトウェア・モジュール・ハンドラのうちの少なくとも１つによって実行される１つ又は複数のアクションを指定する対応する属性リスト（１４０）と、を識別し（２０４）、
複数のソフトウェア・モジュールの相互運用性を保証するために、前記属性リスト（１４０）内で指定される各アクションが対応する前記ソフトウェア・モジュール・ハンドラ（１３０）によって実行可能となるように（２０８）、前記属性リストを前記属性リスト内で識別される各ソフトウェア・モジュール・ハンドラに提供するように動作可能なソフトウェア・モジュール・マネージャと、
を備えるコンピュータ・システム。
【請求項２３】
前記ソフトウェア・モジュール・ハンドラのうちの１つ又は複数は、前記モバイル・デバイス・ソフトウェア・モジュールのうち、前記ソフトウェア・モジュール・イベントに関連する前記モバイル・デバイス・ソフトウェア・モジュールと、１つ又は複数の異なるモバイル・デバイス・ソフトウェア・モジュールとの互換性の有無を判定する（４２０，４３０）ように動作可能である、請求項２２に記載のコンピュータ・システム。
【請求項２４】
前記ソフトウェア・モジュール・ハンドラのうちの１つ又は複数は、前記ソフトウェア・モジュール・イベントに関連する前記モバイル・デバイス・ソフトウェア・モジュールの１つ又は複数の実行時特性（４００）を実行するように動作可能である、請求項２２に記載のコンピュータ・システム。
【請求項２５】
前記ソフトウェア・モジュール・ハンドラのうちの１つ又は複数は、前記ソフトウェア・モジュール・イベントに関連する前記モバイル・デバイス・ソフトウェア・モジュールの、呼び出し時にデプロイ（４１０）すべき１つ又は複数の異なるコンポーネントを識別するように動作可能である、請求項２２に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、モバイル・デバイス・ソフトウェアに関し、特にモバイル・デバイス・ソフトウェアの管理に関する。
【背景技術】
【０００２】
モバイル・デバイス・ソフトウェアは従来、モノリシック・エンティティとして取り扱われる。モバイル・デバイス・ソフトウェアのこのような取り扱いは、しばしばビルド時間及びビルド・バリアント数の増加を招く。というのも、ソフトウェアのすべてのコンポーネントは、典型的にはビルド時に互いにリンクされるためである。それ故、コンポーネントの追加、削除、又は他の何らかの修正が発生するたびに、ソフトウェア・パッケージ全体の再リンクを行わなければならない。ソフトウェアの署名付けは、典型的には修正が発生するたびにソフトウェア・パッケージ全体に対して施されるので、このような署名付けに要する時間も長くなる。また、モバイル・デバイスは、ソフトウェアに変更が加えられるたびにモノリシック・ソフトウェア・パッケージ全体を処理しなければならないので、従来のソフトウェア・パッケージのダウンロード及びインストールに必要なモバイル・デバイス・リソースも増大する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
モバイル・デバイス・ソフトウェアの更新用にロードされるコード量を減少させる従来の一手法は、モノリシック・ソフトウェア・パッケージの現在のバージョンと当該ソフトウェアの新しいバージョンとの差を識別するものである。モバイル・デバイス上には、この差に対応する分のコードだけがダウンロード及びインストールされる。この手法は、帯域幅が制限される状況のＦＯＴＡ（Firmware Over The Air）アップグレードに使用されている。しかしながら、モバイル・デバイスの構成可能性は益々高まっている。この傾向は、モバイル・デバイスの多機能化が進むにつれて強くなる。今日の多くのモバイル・デバイスは、デバイス・セットアップ及び動作の様々な側面を独自に構成する能力を提供する。したがって、モバイル・デバイス・ソフトウェアの管理に関してもエンド・ユーザの固有性が益々高まっている。このため、多種多様なエンド・ユーザ固有のモバイル・デバイス構成を管理するために、ＦＯＴＡサーバに過度の負担が課されている。
【０００４】
モノリシック・パッケージをより小さいコンポーネントに分割してそれらを個別に管理するソフトウェアのモジュール化は、モバイル・デバイス環境ではまだ広く採用されていない。ＯＭＡソフトウェア・コンポーネント管理オブジェクト標準化団体では、モバイル・デバイス・ソフトウェアを個別に管理されるコンポーネントのグループとしてインストール及び実行する手法の実現に向けた取り組みがなされている。しかしながら、異種ソフトウェア・コンポーネント間の互換性の問題はまだ対処されていない。互換性のないソフトウェア・コンポーネントは、モバイル・デバイスの性能を低下させ、誤動作が発生しやすくなる恐れがある。例えば、モバイル・デバイス・プラットフォーム・プロバイダによってインストールされるソフトウェアは、典型的にはサード・パーティ・ベンダやプラットフォーム・プロバイダの顧客といった他のソースから提供されるソフトウェアとは異なるフレームワークで管理される。その結果、コード及びデータが最適な形で管理されない一貫性のないソフトウェア環境がもたらされる。このため、実行時又はインストール時に異なるソフトウェア・コンポーネント間の相互依存性が適切に解決されない限り、非効率的なデバイス動作あるいはエラーが生じやすいデバイス動作となる可能性がある。従来のモバイル・デバイス・ソフトウェアのモジュール化技法は、高度な調整を要するとともに多くの制約も伴うため、様々なタイプのモバイル・デバイス・ソフトウェアを適切に管理することが困難である。
【課題を解決するための手段】
【０００５】
本明細書に教示される方法及び装置によれば、異なるソースから提供される異種ソフトウェア・モジュールが同じモジュール化又はコンポーネント化フレームワークで管理される。モバイル・デバイス・ソフトウェアは、個別に管理可能なモジュールに分割される。モバイル・デバイス・ソフトウェアの追加、削除、又は他の変更は、ソフトウェア・パッケージ全体ではなく対応するモジュール（１つ又は複数）を修正することによって行うことができる。ソフトウェア・モジュール・ハンドラは、ソフトウェア・モジュールを管理して一貫性及び信頼性のあるモバイル・デバイス動作を保証する。ソフトウェア・モジュール・ハンドラは、ソフトウェア・モジュールのインストール、削除、アクティブ化、修正等のソフトウェア・イベントに応答して１つ又は複数のアクションを実行する。これらのアクションは、発生したイベント及び関与するモジュール（１つ又は複数）に関連するものである。ソフトウェア・モジュール・ハンドラによって実行されるアクションにより、各モジュールは、後に呼び出されたときにそれぞれの設計された機能を提供することが可能となる。例えば、これらのハンドラは、互換性検査を実行すること、実行時環境を適切にセットアップすること、ソフトウェア・モジュール・コンポーネントをそれぞれ適切な位置にデプロイすること等が可能である。それ故、これらのモジュール・ハンドラは、ソフトウェア・モジュールがモバイル・デバイス上にインストールされたときに互いに適切な形で相互作用することを保証する。
【０００６】
一実施形態では、複数のソフトウェア・モジュール・ハンドラと複数のソフトウェア・モジュールとの間のインターフェースを提供することによってモバイル・デバイス・ソフトウェアの管理が行われる。前記インターフェースは、ソフトウェア・モジュールのインストール、削除、アクティブ化、修正等のソフトウェア・モジュール・イベントに応答して呼び出される。前記インターフェースは、ソフトウェア・モジュール・イベントに関連する前記ソフトウェア・モジュール及び対応する属性リストを識別するのに使用される。前記属性リストは、識別された前記ソフトウェア・モジュールが呼び出し時に１つ又は複数の機能を提供することを可能にする、前記ソフトウェア・モジュール・ハンドラのうちの少なくとも１つによって実行される１つ又は複数のアクションを指定する。前記属性リストは、前記リスト内で識別される各ソフトウェア・モジュール・ハンドラに提供され、前記リスト内で指定される各アクションは、対応する前記ソフトウェア・モジュール・ハンドラによって実行される。このようにして、前記インターフェースは、前記モジュールによって提供される特定の機能あるいは前記ハンドラによって実行される特定のアクションを認識する必要なく、様々な前記ソフトウェア・モジュールを信頼性のある形で管理する。前記インターフェースは、ソフトウェア・モジュール・イベントを処理のために適切なハンドラ（１つ又は複数）に送ることにより、モバイル・デバイス・ソフトウェアの互換性及び相互運用性を保証する高レベルのソフトウェア管理メカニズムを提供する。
【０００７】
本発明は、上記の特徴及び利点に限定されないことは言うまでもない。以下の詳細な説明を添付の図面と併せて読めば、追加的な特徴及び利点が当業者には理解されるだろう。
【図面の簡単な説明】
【０００８】
【図１】ソフトウェア・モジュール・マネージャを含むモバイル・デバイスの一実施形態を示すブロック図である。
【図２】モバイル・デバイス・ソフトウェアを管理する処理ロジックの一実施形態を示す論理フロー図である。
【図３】モバイル・デバイス・ソフトウェア・モジュール・マネージャを含むリモート・コンピュータ・システムの一実施形態を示すブロック図である。
【図４】複数のモバイル・デバイス・ソフトウェア・モジュールと、複数のソフトウェア・モジュール・ハンドラとの間のインターフェースをとるソフトウェア・モジュール・マネージャの一実施形態を示すブロック図である。
【図５】モバイル・デバイス・ソフトウェア・モジュール・マネージャによって構文解析（parse）されるファイルの一実施形態を示す図である。
【発明を実施するための形態】
【０００９】
図１は、携帯電話、ポータブル・コンピューティング・デバイス、ハンドヘルド電子デバイス等のモバイル・デバイス１００の一実施形態を示す。モバイル・デバイス１００は、ソフトウェア、ハードウェア、あるいはそれらの任意の組み合わせの形で実施可能なソフトウェア（ＳＷ）・モジュール・マネージャ１１０を含む。ＳＷモジュール・マネージャ１１０は、複数の異種モバイル・デバイス・ソフトウェア（ＳＷ）・モジュール１２０と、複数のソフトウェア（ＳＷ）・モジュール・ハンドラ１３０との間のインターフェースとして働く。モバイル・デバイス１００上にインストールされるソフトウェア・アプリケーションは、ＳＷモジュール１２０のうちの１つ又は複数を利用する。ＳＷモジュール１２０は、モバイル・デバイス・プラットフォーム・プロバイダ、サード・パーティ・ベンダ、プラットフォーム・プロバイダの顧客等、様々なエンティティによって設計される可能性がある。それ故、ＳＷモジュール１２０は、コード、データ、ファイル、１つ又は複数のモバイル・デバイス・アプリケーションをサポートする他の任意のタイプの情報又はリソース等、様々なコンポーネントを有する可能性がある。
【００１０】
各ＳＷモジュール１２０は、呼び出し時に１つ又は複数のモバイル・デバイス機能をイネーブルする。ＳＷモジュール・ハンドラ１３０は、ＳＷモジュール・マネージャ１１０によって呼び出されたときに様々なアクションを実行する。また、ＳＷモジュール・ハンドラ１３０は、ソフトウェア、ハードウェア、あるいはそれらの任意の組み合わせの形で実施可能である。ＳＷモジュール・ハンドラ１３０によって実行されるアクションは、ＳＷモジュール１２０がデバイス１００上に適切にインストールされ、互いに相互運用可能となることを保証する。したがって、モバイル・デバイス・アプリケーションをサポートするためにＳＷモジュール１２０のうちの１つ又は複数が後に呼び出されたときも、モジュール１２０は、モバイル・デバイス動作に悪影響を与えることはなく、誤動作を引き起こすこともない。
【００１１】
ＳＷモジュール・マネージャ１１０は、例えば図２のステップ２００で示されるように、モジュール１２０によって提供される特定の機能あるいはＳＷモジュール・ハンドラ１３０によって実行される特定のアクションを認識する必要なく、様々なＳＷモジュール１２０の信頼性のある管理を実現するインターフェースを提供する。ＳＷモジュール・マネージャ１１０は、ソフトウェア・モジュール・イベントが発生したときに適切なＳＷモジュール・ハンドラ１３０（１つ又は複数）をアクティブ化してそれらのイベントをサービスすることにより、モバイル・デバイス・ソフトウェアの高レベルの互換性及び相互運用性を保証する。ソフトウェア・モジュール・イベントとしては、ＦＯＴＡイベント、ソフトウェア・アプリケーション管理イベント、ＳＷモジュール管理イベント等のアクションを挙げることができる。広義には、各ソフトウェア・モジュール・イベントは、例えば図２のステップ２０２で示されるようにＳＷモジュール１２０のうちの１つ又は複数のインストール、削除、アクティブ化、又は修正を行うものである。ＳＷモジュール・マネージャ１１０は、例えば図２のステップ２０４で示されるように、ソフトウェア・モジュール・イベントに関連するＳＷモジュール１２０及び対応する属性リスト１４０を識別する。リスト１４０は、ＳＷモジュール・ハンドラ１３０のうちの少なくとも１つによって実行される１つ又は複数のアクションを識別する。識別されたＳＷモジュール・ハンドラ１３０によって実行されるアクション（１つ又は複数）により、対応するＳＷモジュール１２０は、後に呼び出されたときに１つ又は複数の機能を提供することが可能となる。リスト１４０は、例えば図２のステップ２０６で示されるように、リスト１４０内で識別される各ＳＷモジュール・ハンドラ１３０に提供される。リスト１４０内で識別される各アクションは、例えば図２のステップ２０８で示されるように、対応するＳＷモジュール・ハンドラ１３０によって実行される。一実施形態によれば、ＳＷモジュール・ハンドラ１３０は、デバイス１００に含まれるＳＷモジュール・マネージャ１１０によってローカル呼び出しされる。別の実施形態では、ＳＷモジュール・ハンドラ１３０は、ＳＷモジュール１２０がモバイル・デバイス１００に転送される前にリモート呼び出しされる。
【００１２】
図３は、ＳＷモジュール・マネージャ１１０と、ＳＷモジュール・ハンドラ１３０のうちの少なくともいくつかと、を含むパーソナル・コンピュータ、ポータブル・コンピュータ、サーバ等のコンピュータ・システム３００の一実施形態を示す。ＳＷモジュール・マネージャ１１０及びハンドラ１３０は、モバイル・デバイス１００のリモートに位置する可能性もある。かかる一構成は、モバイル・デバイス製造業者によって利用されることも、サービス・プロバイダによって利用されることも、モバイル・デバイス１００にアクセス可能な他のリモート・エンティティによって利用されることもある。したがって、ＳＷモジュール１２０は、モバイル・デバイス１００に転送する前に検査することができる。これにより、モバイル・デバイス１００に課される処理需要が低減される。また、これによってリモート・エンティティがＳＷモジュール１２０をデプロイ前にテストすることも可能となる。モバイル・デバイス１００は、モバイル・デバイス・ソフトウェア管理の追加的なレイヤを提供するＳＷモジュール・マネージャ１１０及びハンドラ１３０も含むことができる。モバイル・デバイス１００に含まれるＳＷモジュール・マネージャ１１０は、モバイル・デバイス１００を対象とするソフトウェア・モジュール・イベントに応答し、現在のデバイス・セットアップ記述をリモート・コンピュータ３００上に存在するＳＷモジュール・マネージャ１１０に提供する。ＳＷモジュール・マネージャ１１０及びハンドラ１３０をコンピュータ３００とモバイル・デバイス１００の両方に含めることにより、コンピュータ・システム３００以外のソース（例えばメモリ・カード又は他のソース）からデバイス１００に転送されるソフトウェアの適切な管理及び維持が保証される。このようにすることで、ＳＷ互換性検査の追加的なレイヤも提供される。
【００１３】
コンピュータ・システム３００は、無線又は有線通信ネットワーク３１０を介してモバイル・デバイス１００にアクセスする。ＳＷモジュール・マネージャ１１０は、コンピュータ３００によって維持されるＳＷモジュール・ハンドラ１３０と、モバイル・デバイスＳＷモジュール１２０との間のインターフェースを提供する。ＳＷモジュール１２０の中には、デバイス１００上に既にロードされているものもあれば、まだインストールされていないものもある可能性がある。いずれにせよ、ＳＷモジュール・マネージャ１１０は、ソフトウェア・モジュール・イベントを認識し、そのイベントに関連するＳＷモジュール１２０及び対応する属性リスト１４０を識別する。ＳＷモジュール・マネージャ１１０は、該当するＳＷモジュール１２０がデバイス１００上に既にロードされている場合には、通信ネットワーク３１０を介してモバイル・デバイス１００からリスト１４０を取得する。そうでない場合には、リスト１４０は、コンピュータ３００によってローカルで検索される。いずれにせよ、リスト１４０は、コンピュータ３００によってローカルで維持されるＳＷモジュール・ハンドラ１３０のうちの１つ又は複数によって実行されるアクション（１つ又は複数）を識別する。ＳＷモジュール・マネージャ１１０は、識別されるアクションが対応するＳＷモジュール・ハンドラ１３０によって実行可能となるように、リスト１４０をリスト１４０内で識別される各ＳＷモジュール・ハンドラ１３０に提供する。ＳＷモジュール・ハンドラ１３０を追加、削除、又は他の方法で変更することにより、ＳＷモジュール１２０の管理及び維持手法を修正することができる。
【００１４】
図４は、モバイル・デバイス１００又はコンピュータ・システム３００あるいはその両方に含まれるＳＷモジュール・ハンドラ１３０の一実施形態を示す。本実施形態によれば、ＳＷモジュール・マネージャ１１０は、ＳＷモジュール１２０と、「type」ハンドラ４００、「parts」ハンドラ４１０、「provided」ハンドラ４２０、「required」ハンドラ４３０、及び「list parser」ハンドラ４４０のうちの１つ又は複数のインスタンスとの間のインターフェースとして働く。ソフトウェア・モジュール・イベントに応答してＳＷモジュール・マネージャ１１０によって「type」ハンドラ４００が呼び出されたときは、「type」ハンドラ４００は、そのイベントに関連するＳＷモジュール１２０（１つ又は複数）の実行時特性を管理する。「type」ハンドラ４００は、必ずしもそれだけに限定されるわけではないが、ＳＷモジュール１２０のアクティブ化又は非アクティブ化、ＳＷモジュール１２０の動的リンク、ＳＷモジュール１２０間の相互依存性の解決、メモリ管理等、任意の所望の実行時アクションを実行する。
【００１５】
「parts」ハンドラ４１０は、新しくインストールされた又は既存のＳＷモジュール１２０に含まれるコンポーネントのデプロイを管理する。このような管理には、必ずしもそれだけに限定されるわけではないが、コード、データ、ファイル・システム・リソース情報等のＳＷモジュール・コンポーネントをモバイル・デバイス１００内の適切な位置に記憶するアクション等が含まれ得る。「provided」ハンドラ４２０及び「required」ハンドラ４３０は共に、ソフトウェアの互換性を管理する。このようにして、様々なエンティティから提供されるソフトウェアをＳＷモジュール・マネージャ１１０によって普遍的に管理することが可能となる。「provided」ハンドラ４２０及び「required」ハンドラ４３０は、必ずしもそれだけに限定されるわけではないが、異なるＳＷモジュール１２０間のバージョン比較や、モバイル・デバイス・ソフトウェア・プラットフォームのあるＳＷモジュール・バージョンと現在のバージョンとの比較等のアクションを実行することができる。したがって、互換性のあるＳＷモジュール１２０だけがモバイル・デバイス１００で維持される。一実施形態では、ＳＷモジュール・ハンドラ１３０によって実行されるアクションを指定する属性リスト１４０は、対応するＳＷモジュール１２０と共に追加的なコンポーネントとして含まれる。ＳＷモジュール・マネージャ１１０は、「list parser」ハンドラ４４０を呼び出して属性リスト１４０を当該リスト１４０のフォーマットに基づいて適切に読み取る。属性リストの内容に基づいてＳＷモジュール１２０を処理する他の種類のハンドラ１３０を提供することも可能である。
【００１６】
一実施形態では、属性リスト１４０は、各ＳＷモジュール１２０に含まれるファイルである。ＳＷモジュール・マネージャ１１０は、ソフトウェア・イベントが発生したときに当該イベントに関連するＳＷモジュール１２０からこのファイルを抽出する。ＳＷモジュール・マネージャ１１０は、ファイルを構文解析する「list parser」ハンドラ４４０を呼び出して、ファイル内でコール・アウトされた各ＳＷモジュール・ハンドラ１３０を識別する。次に、構文解析されたファイルは、処理のために識別された各ＳＷモジュール・ハンドラ１３０に渡される。一実施形態では、ファイルは、該当する各ＳＷモジュール・ハンドラ１３０に送られるセクションを含む。各セクションは、対応するＳＷモジュール・ハンドラ１３０によって実行されるアクションを識別する。ファイルを受信した各ＳＷモジュール・ハンドラ１３０は、ファイルの構文解析を行って当該ハンドラ１３０宛てのセクション位置を突き止める。次に、各ＳＷモジュール・ハンドラ１３０は、ファイル内のそれぞれのセクションで指定された１つ又は複数のアクションを実行する。したがって、ＳＷモジュール・マネージャ１１０は、ＳＷモジュール・ハンドラ１３０によって実行されるアクションも、ＳＷモジュール１２０によって提供される機能も認識する必要がない。その代わりに、ＳＷモジュール・マネージャ１１０は、ファイルの構文解析を行い、当該ファイルをファイル内で識別されるＳＷモジュール・ハンドラ１３０に渡す。その後、識別されたＳＷモジュール・ハンドラ１３０は、指定されたタスクを実行する。一実施形態によれば、ファイル・フォーマットは、拡張マークアップ言語（ＸＭＬ）に基づくものである。
【００１７】
図５は、ＳＷモジュール１２０のうちの１つから抽出されたＸＭＬファイル５００の一実施形態を示す。ＸＭＬファイル５００の第１行は、ＸＭＬファイルのバージョン（例えば図５では１．０）と、サポートされるエンコード・タイプ（例えば図５ではＵＴＦ‐８）とを識別する。「list parser」ハンドラ４４０は、ＸＭＬファイル５００の特定のＸＭＬフォーマットを考慮してファイル５００を読み取り、関連する内容をＳＷモジュール・マネージャ１１０に通知する。呼び出し対象となる他のＳＷモジュール・ハンドラ１３０は、開始タグ及び終了タグを使用してＸＭＬファイル５００内で識別される。例えば、ＸＭＬファイル５００の第２行は、「type」ハンドラ４００を識別する属性タイプ「dpu」を含む。第３行は、「parts」ハンドラ４１０を識別する開始タグ<parts>を含む。第４行は、「load_module」と呼ばれる「parts」ハンドラ４１０を識別する「parts」ハンドラ４１０の参照がＳＷモジュール・マネージャ１１０に通知されると、ＳＷモジュール・マネージャ１１０は、ＸＭＬファイルを処理のためにload_module「parts」ハンドラ４１０に渡す。ＸＭＬファイルが受信されると、load_module「parts」ハンドラ４１０は、ＸＭＬファイル５００の第４行で指定されたアクションを実行する。この例示的な実施形態では、load_module「parts」ハンドラ４１０は、指定されたＥＬＦファイルをデプロイする。ＸＭＬファイル５００では「resource」という名前の「parts」ハンドラ４１０も識別されている。この参照がＳＷモジュール・マネージャ１１０に通知されると、ＳＷモジュール・マネージャ１１０は、ＸＭＬファイル５００を処理のためにresource「parts」ハンドラ４１０に渡す。resource「parts」ハンドラ４１０は、第５行及び第６行で指定されたアクションを実行する。ＸＭＬファイル５００の第７行は、「parts」ハンドラ・セクションの終了を示す終了タグ</parts>を含む。
【００１８】
ＸＭＬファイル５００は、開始タグ<provides>で示されるように、「provided」ハンドラ４２０に割り振られるセクションも有する。この参照がＳＷモジュール・マネージャ１１０に通知されると、ＳＷモジュール・マネージャ１１０は、ファイル５００を処理のために「provided」ハンドラ４２０に渡す。「provided」ハンドラ４２０は、ＸＭＬファイル５００の開始タグ<provides>と終了タグ</provides>の間の部分を処理する。具体的には、第９行は、ＸＭＬ５００の取得元であるＳＷモジュール１２０のバージョン（2.0）、ベンダ（EMP）、及び名前（SampleSuite）を指定する。「provided」ハンドラ４２０は、これらのパラメータを使用してＳＷモジュール１２０と他のＳＷモジュール１２０との互換性の有無を判定する。一実施形態では、「provided」ハンドラ４２０は、ファイル５００から対応するＳＷモジュール１２０の現在のバージョン（2.0）を抽出する。次に、「provided」ハンドラ４２０は、ＳＷモジュール１２０の現在のバージョンと、他の１つ又は複数のＳＷモジュール１２０の現在のバージョンとを比較する。一方、ＸＭＬファイル５００の第１０〜１３行は、これらの行で指定されたアクションを実行する「application」という名前の「provided」ハンドラ４２０を参照している。ＸＭＬファイル５００の第１４行及び第１５行は、「provided」ハンドラ・セクションの終了を示す終了タグを含む。
【００１９】
ＸＭＬファイル５００は、開始タグ<requires>で示されるように、「required」ハンドラ４３０に割り振られるまた別のセクションも含む。ファイル５００のこのセクションは、第１７行で「required_components」という名前の「required」ハンドラ４３０を参照する。第１８〜２０行は、「cid」という名前の「required」ハンドラ４３０に３つのタスクを委譲（relegate）する。ＸＭＬファイル５００の最後の３行は、それぞれ「required」ハンドラ・セクション及びＳＷモジュール・マネージャ・セクションの終了を示す終了タグを含む。本明細書に開示される様々な実施形態では、他のＳＷモジュール・ハンドラ・セクション及びタスクも予期されることは言うまでもない。したがって、図５に示したＸＭＬの実施形態は、例示的且つ非限定的なものと見なすべきである。ソフトウェア・モジュール・イベントに応答してどのＳＷモジュール・ハンドラ１３０を呼び出し、どのタスクを実行すべきかを指示するにあたっては、他のファイル拡張子、実装環境、あるいは手法を使用することも可能である。
【００２０】
上記の様々な変形例及び応用例を念頭に置けば、本発明が上記の説明あるいは添付の図面によって限定されないことが理解されるはずである。そうではなく、本発明は、特許請求の範囲に記載される各請求項及びそれらの法律上の等価物によってのみ限定されるものである。
【図１】
0005542796.tif 000002
【図２】
0005542796.tif 000003
【図３】
0005542796.tif 000004
【図４】
0005542796.tif 000005
【図５】
0005542796.tif 000006