(57)【特許請求の範囲】
【請求項１】
コンピュータデバイスから、前記コンピュータデバイスで動作するソフトウェアの操作性を示すソフトウェア操作性シグニチャと、関連するコンテクストデータとを受信するステップと、
更なるコンピュータデバイスから受信される更なるソフトウェア操作性シグニチャをグループ化するステップであって、該更なるソフトウェア操作性シグニチャの夫々は、前記更なるコンピュータデバイスで動作する前記ソフトウェアの操作性を示し、当該ソフトウェア操作性シグニチャに関連するコンテクストデータと同じ又は類似するコンテクストデータに関連付けられる、ステップと、
前記更なるソフトウェア操作性シグニチャから、通常のソフトウェア動作を示すベースライン操作性シグニチャを生成するステップと
前記ソフトウェア操作性シグニチャを前記ソフトウェアの前記ベースライン操作性シグニチャと比較して、前記ソフトウェアが前記ベースライン操作性シグニチャと整合して又は前記ベースライン操作性シグニチャと不整合に動作しているかどうかを決定するステップと
を有するコンピュータ実施の方法。
【請求項２】
前記ソフトウェア操作性シグニチャ及び前記更なるソフトウェア操作性シグニチャは、前記ソフトウェアの同じ又は類似するアクティビティをモニタすることから生成される、
請求項１に記載のコンピュータ実施の方法。
【請求項３】
前記ソフトウェア操作性シグニチャに基づき、前記ソフトウェアが前記ベースライン操作性シグニチャと不整合に動作していると決定するステップと、
前記ベースライン操作性シグニチャと不整合に動作している前記ソフトウェアが通常のソフトウェア動作に対応すると決定するステップと、
前記ソフトウェアのために受信された前記ソフトウェア操作性シグニチャに基づき、前記ソフトウェアの新たなベースライン操作性シグニチャを生成するステップと
を更に有する請求項１に記載のコンピュータ実施の方法。
【請求項４】
前記ソフトウェア操作性シグニチャに基づき、前記ソフトウェアが前記ベースライン操作性シグニチャのコンテクストと不整合に動作していると決定するステップと、
前記ソフトウェアの動作不具合を決定するよう前記ソフトウェア操作性シグニチャを解析するステップと
を更に有する請求項１に記載のコンピュータ実施の方法。
【請求項５】
前記ソフトウェア操作性シグニチャと前記ベースライン操作性シグニチャのコンテクストとの比較から、前記ソフトウェアの前記動作不具合の原因を決定するステップと、
前記ソフトウェアの前記動作不具合を抑制するソリューションを起動するステップと
を更に有する請求項４に記載のコンピュータ実施の方法。
【請求項６】
前記ソフトウェア操作性シグニチャに基づき、前記ソフトウェアが前記ベースライン操作性シグニチャのコンテクストと不整合に動作していると決定するステップと、
前記ソフトウェアの動作退行を決定するよう前記ソフトウェア操作性シグニチャを解析するステップと
を更に有する請求項１に記載のコンピュータ実施の方法。
【請求項７】
前記ソフトウェア操作性シグニチャと前記ベースライン操作性シグニチャのコンテクストとの比較から、前記ソフトウェアの前記動作退行の原因を決定するステップと、
前記ソフトウェアの前記動作退行を抑制するソリューションを起動するステップと
を更に有する請求項６に記載のコンピュータ実施の方法。
【請求項８】
コンピュータデバイスから、前記コンピュータデバイスで動作するソフトウェアの操作性を示すソフトウェア操作性シグニチャと、関連するコンテクストデータとを受信するよう構成されるデータ通信インタフェースと、
更なるコンピュータデバイスから受信される更なるソフトウェア操作性シグニチャをグループ化し、該更なるソフトウェア操作性シグニチャの夫々は、前記更なるコンピュータデバイスで動作する前記ソフトウェアの操作性を示し、当該ソフトウェア操作性シグニチャに関連する前記コンテクストデータと同じ又は類似するコンテクストデータに関連付けられ、
前記更なるソフトウェア操作性シグニチャから、通常のソフトウェア動作を示すベースライン操作性シグニチャを生成し、
前記ソフトウェア操作性シグニチャを前記ソフトウェアの前記ベースライン操作性シグニチャと比較して、前記ソフトウェアが前記ベースライン操作性シグニチャに整合して又は前記ベースライン操作性シグニチャと不整合に動作しているかどうかを決定する
よう構成されるソフトウェア操作性サービスを実施する少なくともメモリ及びプロセッサと
を有するネットワークシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
ソフトウェアアプリケーションは、オペレーティングシステムの更新及び／又はサービスパックの更新によって引き起こされる動作不具合又は動作退行を起こしやすい。例えば、オペレーティングシステム及び／又はサービスパックの更新は、ハードウェアデバイスと対応するデバイスドライバとの間の互換性を崩す変更をコンピュータシステムに導入することがある。これは、デバイスの性能において低下をもたらしうる。
【発明の概要】
【課題を解決するための手段】
【０００２】
この要約は、ソフトウェア操作性サービスの簡易的な概念を導入するために設けられており、当該概念は更に、詳細な説明において以下で記載され、且つ／あるいは、図面において示される。この要約は、請求される対象の必須の特徴を記載すると見なされるべきでも、請求される対象の適用範囲を決定又は制限するために使用されるべきでもない。
【０００３】
ソフトウェア操作性サービスが記載される。実施形態において、ソフトウェアのアクティビティは、ソフトウェアアクティビティデータを収集するためにモニタされ得る。次いで、ソフトウェアのためのソフトウェア操作性シグニチャがソフトウェアアクティビティデータから生成され得る。ソフトウェア操作性シグニチャはソフトウェアの操作性を示す。次いで、ソフトウェア操作性シグニチャ及び関連するコンテクストデータが、ソフトウェア操作性シグニチャを解析するネットワークサービスへ送信され得る。
【０００４】
他の実施形態では、ネットワークサービスは、コンピュータデバイスからソフトウェア操作性シグニチャ及び関連するコンテクストデータを受信することができる。ソフトウェア操作性シグニチャは、コンピュータデバイスで動作するソフトウェアの操作性を示す。更なるコンピュータデバイスから受信される更なるソフトウェア操作性シグニチャはグループにまとめられ得る。更なるソフトウェア操作性シグニチャの夫々は、更なるコンピュータデバイスで動作するソフトウェアの操作性を示し、ソフトウェアに関連するコンテクストデータと同じ又は類似するコンテクストデータに関連付けられる。次いで、ベースライン操作性シグニチャが更なるソフトウェア操作性シグニチャから生成され、ベースライン操作性シグニチャは通常のソフトウェア動作を示す。次いで、ソフトウェア操作性シグニチャは、ソフトウェアがベースライン操作性シグニチャと整合して又はベースライン操作性シグニチャと不整合に動作しているかどうかを決定するよう、ソフトウェアのベースライン操作性シグニチャと比較され得る。実施形態において、通常のソフトウェア動作を示すベースライン操作性シグニチャは、ソフトウェア操作性シグニチャが生成されるコンテクストの関数であってよい。
【０００５】
他の実施形態では、ソフトウェア操作性シグニチャに基づき、ソフトウェアがベースライン操作性シグニチャと不整合に動作していると決定される。次いで、ネットワークサービスは、ベースライン操作性シグニチャと不整合な動作が通常のソフトウェア動作に対応すると決定することができる。然るに、次いで、ソフトウェアの新たなベースライン操作性シグニチャは、ソフトウェア操作性シグニチャに基づき生成され得る。代替的に、ネットワークサービスは、ソフトウェア操作性シグニチャに基づきソフトウェアがベースライン操作性シグニチャと不整合に動作していると決定される場合にソフトウェアの動作不具合又は動作退行を決定するよう、ソフトウェア操作性シグニチャを解析することができる。また、ネットワークサービスは、動作不具合又は退行の原因を決定し、ソフトウェアの動作不具合又は退行を抑制するソリューションを起動することができる。
【図面の簡単な説明】
【０００６】
【図１】ソフトウェア操作性サービスの実施形態が実施され得るシステムの例を表す。
【図２】１又はそれ以上の実施形態に従うソフトウェア操作性サービスを実施するネットワークサービスを表す。
【図３】１又はそれ以上の実施形態に従うソフトウェア操作性サービスの方法の例を表す。
【図４】１又はそれ以上の実施形態に従うソフトウェア操作性サービスの方法の更なる例を表す。
【図５】１又はそれ以上の実施形態に従うソフトウェア操作性サービスの方法の更なる例を表す。
【図６】ソフトウェア操作性サービスの実施形態を実施することができる装置の例の様々な構成要素を表す。
【発明を実施するための形態】
【０００７】
ソフトウェア操作性サービスの実施形態は、添付の図面を参照して記載される。図面において、同じ参照符号は、同じ特徴及び構成要素を参照するために使用される。
【０００８】
ソフトウェア操作性サービスが記載される。実施形態において、ソフトウェア操作性モジュールは、例えばあらゆるタイプのソフトウェア、アプリケーション、デバイスドライバ、ファームウェア（例えば、デバイスファームウェア若しくはシステムファームウェア）、マイクロコード、ハードウェア部品、又はそれらの何らかの組み合わせからソフトウェアアクティビティデータを収集するために、ソフトウェアのアクティビティをモニタするよう実施され得る。次いで、ソフトウェア操作性モジュールは、ソフトウェアアクティビティデータから、ソフトウェアのためのソフトウェア操作性シグニチャを生成することができる。ソフトウェア操作性シグニチャは、ソフトウェアの操作性、すなわち、一般的に、ソフトウェア、アプリケーション、デバイスドライバ、ファームウェア、ハードウェア等の“調子”を示す。次いで、ソフトウェア操作性モジュールは、ソフトウェア操作性シグニチャと、動作コンテクストを示す関連するコンテクストデータとを、ソフトウェア操作性シグニチャを解析するネットワークサービスへ送信することができる。
【０００９】
他の実施形態では、ネットワークサービスは、コンピュータデバイスからソフトウェア操作性シグニチャ及び関連するコンテクストデータを受信することができる。ソフトウェア操作性シグニチャは、コンピュータデバイスで動作するソフトウェアの操作性を示す。実施形態において、ネットワークサービスは、更なるソフトウェア操作性シグニチャからベースライン操作性シグニチャを生成することができる。ネットワークサービスは、更なるコンピュータデバイスから受信される更なるソフトウェア操作性シグニチャをグループ化することができる。更なるソフトウェア操作性シグニチャの夫々は、更なるコンピュータデバイスで動作するソフトウェアの操作性を示し、ソフトウェアに関連するコンテクストデータと同じ又は類似するコンテクストデータと関連付けられる。次いで、ネットワークサービスは、更なるソフトウェア操作性シグニチャからベースライン操作性シグニチャを生成することができ、ベースライン操作性シグニチャは通常のソフトウェア動作を示す。次いで、ネットワークサービスは、ソフトウェア操作性シグニチャをソフトウェアのベースライン操作性シグニチャと比較して、ソフトウェアがベースライン操作性シグニチャと整合して又はベースライン操作性シグニチャと不整合に動作しているかどうかを決定することができる。
【００１０】
実施形態において、通常のソフトウェア動作を示すベースライン操作性シグニチャは、ソフトウェア操作性シグニチャが生成されるコンテクストの関数であってよい。例えば、ベースライン操作性シグニチャは、コンピュータデバイスのアーキテクチャ（例えば、Ｘ６４又はＡＲＭ）、性能（例えば、高性能又は低性能）、解析下の市場区分（例えば、ＯＥＭに基づく、ＰＣモデル、ロケール、ＣＰＵ速度、等）、等を含みうるコンテクストに基づき生成され得る。デバイスドライバ及びオペレーティングシステム開発バージョンの２つの変数のみに基づき生成されるベースライン操作性シグニチャは、ドライバごとオペレーティングシステムごとのベースラインコンテクストを有する。更に、更なる特質がベースラインコンテクストに加えられてよい。例えば、ベースラインコンテクストの特質は、特定のロケールで１ＧＢ未満のメモリを備えるタブレット型コンピュータにおいて実行される場合に、電力管理機能のためのドライバのベースライン操作性シグニチャを特定するよう加えられてよい。
【００１１】
他の実施形態では、ソフトウェア操作性シグニチャに基づき、ソフトウェアがベースライン操作性シグニチャと不整合に動作していると決定されてよい。次いで、ネットワークサービスは、ベースライン操作性シグニチャと不整合な動作が通常のソフトウェア動作に対応すると決定することができる。然るに、次いで、ソフトウェアの新たなベースライン操作性シグニチャは、ソフトウェア操作性シグニチャに基づき生成され得る。代替的に、ネットワークサービスは、ソフトウェア操作性シグニチャに基づきソフトウェアがベースライン操作性シグニチャと不整合に動作していると決定される場合にソフトウェアの動作不具合又は動作退行を決定するよう、ソフトウェア操作性シグニチャを解析することができる。また、ネットワークサービスは、動作不具合又は退行の原因を決定し、ソフトウェアの動作不具合又は退行を抑制するソリューションを起動することができる。
【００１２】
例えば、プリンタと、コンピュータデバイスにおける対応するプリンタドライバとを考える。サービスパックの更新がコンピュータデバイスに適用された後、プリンタは、例えば、より長い時間をかけて印刷ジョブを完了することによって、異なるふうに動作しうる。通常、プリンタドライバが異なるふうに動作していると決定することは困難であり、また、サービスパックの更新がプリンタの速度を減速させたと決定することも困難である。やがて、プリンタのユーザは、プリンタが印刷ジョブを完了するのに時間がかかるようになったと気付くかもしれないが、何が性能の低下を引き起こしたのかをユーザが指摘することは困難であろう。更に、多くのユーザは、プリンタドライバが完全に動作不能にならない場合には、プリンタの性能の低下に気付きさえしないかもしれない。
【００１３】
しかし、様々な実施形態に従って、ソフトウェア操作性モジュールは、プリンタドライバのアクティビティデータを収集するために、プリンタドライバをモニタするよう実施され得る。次いで、プリンタドライバのためのソフトウェア操作性シグニチャが生成され、ネットワークサービスへ送信され得る。次いで、ネットワークサービスは、プリンタドライバのためのソフトウェア操作性シグニチャをプリンタドライバのベースライン操作性シグニチャと比較して、プリンタドライバがベースライン操作性シグニチャと整合して又は不整合に動作しているかどうかを決定することができる。この場合に、ネットワークサービスは、プリンタドライバがサービスパックの更新後に適切に動作していないので、プリンタドライバがベースライン操作性シグニチャと不整合に動作していると決定することができる。プリンタドライバがベースライン操作性シグニチャと不整合に動作しているとの決定に応答して、ネットワークサービスは、プリンタドライバの動作不具合又は動作退行を決定するよう、プリンタドライバのためのソフトウェア操作性シグニチャを解析することができる。次いで、プリンタドライバの動作不具合又は動作退行を抑制するソリューションが起動され得る。例えば、ネットワークサービスは、プリンタドライバをサービスパックの更新に伴って適切に動作させるソフトウェア更新を生成し及び／又はコンピュータデバイスへ送信することができる。
【００１４】
ソフトウェア操作性サービスの特徴及び概念はあらゆる数の異なったデバイス、システム、環境、ネットワーク及び／又は構成において実施され得るが、ソフトウェア操作性サービスの実施形態は、以下の例となるデバイス、システム、及び方法との関連で記載される。
【００１５】
図１は、ソフトウェア操作性サービスの様々な実施形態が実施され得るシステム１００の例を表す。例となるシステム１００は、如何なるタイプのコンピュータデバイス１０４としても実施されてよいコンピュータデバイス１０２を有する。様々なコンピュータデバイス１０４のいずれも、コンピュータデバイス１０２として構成され得、図６に示されるデバイスの例を参照して更に記載されるようにあらゆる数及び組み合わせの異なる構成要素を有して実施されてよい。
【００１６】
コンピュータデバイス１０４は、テレビジョン装置１０６、コンピュータ１０８、ゲームシステム１１０、電気器具、電子機器、及び／又は何らかの他のタイプの装置の中のいずれか１つ又は組み合わせとして実施され得る。様々なコンピュータデバイスは、無線データを受信及び／又は通信するよう実施される無線デバイス、例えば、携帯電話１１２（セルラー、ＶｏＩＰ、ＷｉＦｉ、等）、携帯型コンピュータデバイス１１４、メディアプレーヤ１１６、及び／又は何らかの他の無線デバイスを更に有することができる。クライアントシステムは、各自のコンピュータデバイス及びディスプレイデバイス１１８を有することができる。
【００１７】
コンピュータデバイス１０２は、コンピュータデバイスの動作を制御するよう様々なコンピュータ実行可能命令を処理する１又はそれ以上のプロセッサ１２０（例えば、マイクロプロセッサ、コントローラ、等のいずれか）を有することができる。コンピュータデバイス１０２は、データ記憶を可能にするメモリ１２２（例えば、１又はそれ以上のコンピュータ可読記憶媒体デバイス）を更に有する。メモリは、如何なるタイプのメモリ、記憶媒体、及び／又は適切な電子データ記憶としても実施され得る。
【００１８】
メモリ１２２は、メモリによりソフトウェアアプリケーションとして保持されてプロセッサ１２０によって実行され得るオペレーティングシステム１２４を更に有する。オペレーティングシステム１２４は、ソフトウェア操作性モジュール１２６及びオペレーティングシステムカーネル１２８を有する。ソフトウェア操作性モジュール１２６は、コンピュータ実行可能命令、例えば、ソフトウェアアプリケーションとして実施され、ここで記載される実施形態を実施するよう様々なコンピュータデバイス１０４のいずれかにおけるプロセッサによって実行され得る。
【００１９】
ソフトウェア操作性モジュール１２６は、ソフトウェアアクティビティデータ１３２を収集するために、ソフトウェア１３０のアクティビティをモニタするよう実施される。ここで記載されるように、ソフトウェア１３０は、如何なるタイプのソフトウェアアプリケーションも、例えば、２〜３例を挙げると、ワード処理アプリケーション、ウェブ検索アプリケーション、又はデバイスドライバを有することができる。ソフトウェア１３０は、ファームウェア（例えば、デバイスファームウェア又はシステムファームウェア）、マイクロコード、ハードウェア部品、又はそれらの何らかの組み合わせを更に有することができる。ソフトウェアアクティビティデータ１３２は、通常のソフトウェアアクティビティ、ソフトウェア動作変化、及びソフトウェア不具合を含む、ソフトウェア１３０のアクティビティ及び／又は動作に関連する何らかのデータを有することができる。
【００２０】
実施形態において、ソフトウェア操作性モジュール１２６は、ソフトウェア１３０の特定のアクティビティをモニタするために、ネットワークサービス２００（以下でより詳細に記載される。）からリクエストを受信するよう実施される。例えば、リクエストは、ソフトウェア１３０の電力管理動作に関連する特定のアクティビティをモニタし、全ての他のアクティビティを無視するよう、受信され得る。代替的に、ソフトウェア操作性モジュール１２６は、ソフトウェア１３０の全てのアクティビティをモニタするよう実施され得る。
【００２１】
実施形態において、ソフトウェア操作性モジュール１２６は、１又はそれ以上の基準に基づきモニタするソフトウェアを選択するよう実施される。１又はそれ以上の基準は、ソフトウェア操作性モジュール１２６自体によって生成され得、あるいは、基準は、ネットワークサービス２００から受信され得る。例えば、ソフトウェア操作性モジュール１２６は、ランダムに、又は一連のエラーイベントのような何らかの顕著な動作を発見することによって、モニタするソフトウェアを選択するよう実施され得る。他の例として、ネットワークサービス２００は、様々なコンピュータデバイスの操作性についての幅広い概観をコンパイルするために、多種多様なソフトウェアがモニタされることを確かにするようサンプリングロジックを用いてよい。
【００２２】
次いで、ソフトウェア操作性モジュール１２６は、ソフトウェアアクティビティデータ１３２からソフトウェアのためのソフトウェア操作性シグニチャ１３４を生成するよう実施される。ソフトウェア操作性シグニチャ１３４はソフトウェアの操作性を示し、ソフトウェアアクティビティデータ１３２のサマリを含んでよい。例えば、ソフトウェア操作性シグニチャ１３４は、ソフトウェアがクラッシュして、アプリケーションタスクを終了しなかった、又はアプリケーション操作を実行することができなかったとのインジケータを含むことができる。従って、当然に、ソフトウェア操作性シグニチャ１３４は、ソフトウェアがモニタされる時間中に、ソフトウェアの操作性のスナップショットを提供する。
【００２３】
実施形態において、ソフトウェア操作性モジュール１２６は、トリガイベントに応答して、ソフトウェアアクティビティデータ１３２を収集し、そしてソフトウェア操作性シグニチャ１３４を生成するよう実施される。トリガイベントは、ソフトウェア操作性シグニチャ１３４を生成するために使用されるソフトウェアアクティビティデータ１３２が一致することを確かにする。トリガイベントは、コンピュータデバイスの再起動のような特定のイベント、又は特定の時間若しくは時間期間であってよい。例えば、ソフトウェア操作性シグニチャ１３４は、コンピュータデバイスが再起動するたびに、毎日午前８時に、又は１２時間ごとに、生成され得る。トリガイベントは、ソフトウェア操作性モジュール１２６によって決定されてよく、あるいは、トリガイベントは、ネットワークサービス２００から受信されるコマンドに基づき選択されてよい。
【００２４】
ソフトウェア操作性モジュール１２６は、次いで、ソフトウェア操作性シグニチャ１３４及び関連するコンテクストデータ１３６を、ソフトウェア操作性シグニチャ１３４を解析するネットワークサービス２００へ送信するよう実施される。実施形態において、コンテクストデータ１３６は、他のシステム又はエンティティによって収集及び／又は通信されてよく、その場合に、ソフトウェア操作性シグニチャ１３４は、コンテクストデータ１３６に対するポインタ又は参照とともに送信されてよい。
【００２５】
コンテクストデータ１３６は、ソフトウェアアクティビティデータ１３２が収集され、且つ、ソフトウェア操作性シグニチャ１３４が生成される動作環境を特定する。コンテクストデータ１３６は、ソフトウェアの動作に対して影響を有しうるコンピュータデバイスの設定又は動作環境に関連する如何なる情報も含んでよい。例えば、コンテクストデータ１３６は、ハードウェア、ファームウェア、若しくはＢＩＯＳタイプ情報、コンピュータデバイスに関連するデバイスのタイプ（例えば、埋め込み型、内蔵型、及び外部デバイス）、コンピュータデバイスのドライバのタイプ、及び／又はオペレーティングシステムのタイプを含んでよい。コンテクストデータ１３６はまた、ソフトウェアアクティビティデータ１３２が収集された時間に対応する時間データ、又はソフトウェアアクティビティデータ１３２が収集された時点におけるコンピュータデバイスの環境（例えば、オペレーティングシステムのステータス）に対応する環境データを含んでよい。
【００２６】
当然に、ソフトウェアの動作は、ソフトウェアのコンテクスト又は動作環境によって大いに影響を及ぼされ得る。従って、収集されるコンテクストデータ１３６の質及び量は、ネットワークサービス２００によるソフトウェア操作性シグニチャ１３４の解析に影響を与えうる。例えば、ソフトウェア又はデバイスは、ＡＲＭシステムにおける場合とは対照的に、３２ビットシステムにおいて異なったように動作することがある。同様に、デバイスは、同じコンピュータデバイスで動作する同じデバイスの２又はそれ以上が存在する場合に、異なったように動作することがある。然るに、コンテクストは、ソフトウェア操作性シグニチャ１３４に影響を与えうる。従って、夫々のシグニチャに関連付けられ得る更なるコンテクストデータはより良く、これは、ネットワークサービス２００によるシグニチャのバックエンド解析を助ける。
【００２７】
ソフトウェア操作性モジュール１２６は、通信ネットワーク１３８を介してネットワークサービス２００と通信することができる。通信ネットワーク１３８は、ソフトウェア操作性シグニチャ１３４の通信及び分配を助ける有線及び／又は無線ネットワークを有するよう実施され得る。通信ネットワーク１３８はまた、如何なるタイプのネットワークトポロジ及び／又は通信プロトコルを用いても実施され得、２又はそれ以上のネットワークの組み合わせとして表され又は別なふうに実施され得る。通信ネットワーク１３８はまた、通信サービスプロバイダ、携帯電話プロバイダ、及び／又はインターネットサービスプロバイダのようなモバイルオペレータによって管理されるモバイルオペレータネットワークを有してよい。モバイルオペレータは、如何なるタイプの無線デバイス又は携帯電話のためのモバイルデータ及び／又はボイス通信（例えば、セルラー、ＶｏＩＰ、ＷｉＦｉ、等）も促進することができる。
【００２８】
様々な実施形態において、ソフトウェア１３０は、オペレーティングシステムカーネル１２８との通信を介して対応するデバイス１４２を制御するよう実施されるデバイスドライバ１４０を有する。デバイス１４２の例として、キーボード、スピーカ、プリンタ、ユニバーサルシリアルバス（ＵＳＢ）記憶装置、ウェブカメラ、及びコンピュータデバイス１０２とインタフェース接続することができるあらゆる他のタイプのハードウェアデバイスがある。実施形態において、ソフトウェア操作性モジュール１２６は、ソフトウェアアクティビティデータ１３２を収集するようデバイスドライバとオペレーティングシステムカーネル１２８との間の通信を受動的にモニタするモニタリングモジュール１４４を用いてデバイスドライバ１４０をモニタするよう実施される。モニタリングモジュール１４４は、デバイスドライバ１４０に対応するソフトウェアアクティビティデータ１３２を収集するようデバイスドライバ１４０とオペレーティングシステムカーネル１２８との間の通信を受動的にモニタする“シム（shim）”として構成されてよい。ここで記載されるように、“受動的に”モニタするとは、デバイスドライバ１４０とオペレーティングシステムカーネル１２８との間の通信に干渉することなくモニタすることをいう。
【００２９】
ソフトウェア操作性モジュール１２６は、次いで、デバイスドライバ１４０に対応するソフトウェアアクティビティデータ１３２からソフトウェア操作性シグニチャ１３４を生成するよう実施される。例えば、ソフトウェア操作性シグニチャ１３４は、デバイスドライバがクラッシュし、終了しなかったか又は機能しなくなったとのインジケータを含むことができる。デバイスドライバの動作不具合は、例えば、デバイスドライバが、要求された電力状態に入ることができず、コンピュータデバイスの最適なバッテリ寿命に満たないことをもたらすことで、オペレーティングシステムカーネル１２８からのコマンドに適切に応答することができなかった事例を含むことができる。ソフトウェア操作性シグニチャ１３４は、デバイスドライバがモニタされる時間中に、デバイスドライバの操作性のスナップショットを提供する。次いで、ソフトウェア操作性モジュール１２６は、上述されたように、ソフトウェア操作性シグニチャ１３４を解析するネットワークサービス２００へ、デバイスドライバに対応するソフトウェア操作性シグニチャ１３４を送信する。
【００３０】
図２は、ここで記載される実施形態に従うネットワークサービス２００の例を表す。ネットワークサービスはデータ通信インタフェース２０２を有する。データ通信インタフェース２０２を介して、ソフトウェア操作性シグニチャ２０４及び関連するコンテクストデータ２０６は、図１を参照して記載されたようにコンピュータデバイス１０２から受信される。
【００３１】
ネットワークサービス２００はまた、ネットワークサービスの動作を制御するよう様々なコンピュータ実行可能命令を処理する１又はそれ以上のプロセッサ（例えば、マイクロプロセッサ、コントローラ、等のいずれか）を有することができる。ネットワークサービス２００はまた、データ記憶を可能にするメモリ２１０（例えば、１又はそれ以上のコンピュータ可読記憶媒体デバイス）を有する。メモリ２１０は、如何なるタイプのメモリ、記憶媒体、及び／又は適切な電子データ記憶としても実施され得る。ネットワークサービス２００はまた、図６に示されるデバイスの例を参照して更に記載されるように、如何なる数及び組み合わせの異なる構成要素によっても実施され得る。ネットワークサービス２００はまた、ソフトウェアアプリケーションのようなコンピュータ実行可能命令として実施され、ここで記載される様々な実施形態を実施するよう１又はそれ以上のプロセッサ２０８によって実行され得るソフトウェア操作性サービス２１２を有する。
【００３２】
ソフトウェア操作性サービス２１２は、コンピュータデバイス１０２からソフトウェア操作性シグニチャ２０４及び関連するコンテクストデータ２０６を受信するよう実施される。図１を参照して記載されたように、ソフトウェア操作性シグニチャ２０４は、コンピュータデバイス１０２で動作するソフトウェア１３０の操作性を示す。
【００３３】
実施形態において、ソフトウェア操作性サービス２１２は、通常のソフトウェア動作を示すベースライン操作性シグニチャ２１４を決定するよう実施される。ベースライン操作性シグニチャ２１４を生成するよう、ソフトウェア操作性サービス２１２は、更なるコンピュータデバイス１０２から受信される更なるソフトウェア操作性シグニチャ２０４をグループ化することができる。更なるソフトウェア操作性シグニチャ２０４の夫々は、更なるコンピュータデバイスで動作するソフトウェア１３０の操作性を示す。次いで、ソフトウェア操作性サービス２１２は、更なるソフトウェア操作性シグニチャ２０４からベースライン操作性シグニチャ２１４を生成することができ、ベースライン操作性シグニチャ２１４は通常のソフトウェア動作を示す。ベースライン操作性シグニチャ２１４は、更なるソフトウェア操作性シグニチャ２０４が生成されるコンテクストの関数であってよい。例えば、ベースライン操作性シグニチャ２１４は、コンピュータデバイス１０２のアーキテクチャ、デバイスの性能、及び／又は解析のために選択されるデバイスの特性を含みうるコンテクストに基づき生成され得る。
【００３４】
実施形態において、ベースライン操作性シグニチャ２１４は、ソフトウェア１３０が同じ又は類似する動作環境において動作している場合に、及び／又は同じ又は類似するソフトウェアアクティビティがモニタされる場合に、通常のソフトウェア動作を示す。例えば、ベースライン操作性シグニチャ２１４は、ソフトウェア操作性シグニチャに関連するコンテクストデータと同じ又は類似するコンテクストデータに関連付けられる更なるソフトウェア操作性シグニチャをグループ化することによって、動的に生成されてよい。これは、コンピュータデバイス１０２のコンテクスト又は動作環境がソフトウェア操作性シグニチャ２０４とベースライン操作性シグニチャ２１４との比較に影響を及ぼさないことを提供する。
【００３５】
例えば、最低限のＢＩＯＳバージョンを必要とするディスプレイドライバは、より古いＢＩＯＳバージョンを備えたコンピュータデバイスで不十分に動作するが、新しいＢＩＯＳバージョンを備えたシステムにおいて適切に動作することができる。従って、ソフトウェア操作性シグニチャが新しいＢＩＯＳを有するコンピュータデバイスから生成され、ベースライン操作性シグニチャがより古いＢＩＯＳバージョンを有するコンピュータデバイスに関する更なるソフトウェア操作性シグニチャから生成される場合は、比較は的確ではない。然るに、ディスプレイドライバについてソフトウェア操作性シグニチャとベースライン操作性シグニチャとを比較する場合に、ソフトウェア操作性シグニチャ及びベースライン操作性シグニチャは両方とも、新しいＢＩＯＳバージョンを有するコンピュータデバイスから生成される。
【００３６】
代替的に、あるいは、同じ又は類似するコンテクストデータに関連付けられることに加えて、ソフトウェア操作性シグニチャ及び更なるソフトウェア操作性シグニチャは、ソフトウェアの同じ又は類似するアクティビティをモニタすることから生成されてよい。例えば、ソフトウェア操作性シグニチャが電力管理動作に関するアクティビティをモニタすることによって生成される場合は、ベースライン操作性シグニチャを生成するために使用される更なるソフトウェア操作性シグニチャは、電力管理動作に関するアクティビティをモニタすることによって更に生成されることに基づき、グループ化され得る。然るに、ベースライン操作性シグニチャを生成するために使用される更なるソフトウェア操作性シグニチャは、正確なベースライン操作性シグニチャを生成するために同じ又は類似するコンテクストデータを有するか又は同じ若しくは類似するアクティビティをモニタすることから生成される１又はそれ以上に基づき、グループ化され得る。
【００３７】
ソフトウェア操作性サービス２１２は、ソフトウェア操作性シグニチャ２０４をソフトウェアのベースライン操作性シグニチャ２１４と比較して、ソフトウェアがベースライン操作性シグニチャ２１４と整合して又はベースライン操作性シグニチャ２１４と不整合に動作しているかどうかを決定するよう実施される。ベースライン操作性シグニチャ２１４は通常のソフトウェア動作を示す。然るに、ソフトウェア操作性シグニチャ２０４をベースライン操作性シグニチャ２１４と比較することによって、ネットワークサービス２００は、ソフトウェアが通常のソフトウェア動作又は挙動と整合して又は不整合に動作しているかどうかを決定することができる。
【００３８】
例えば、ソフトウェア操作性サービス２１２は、データチャートにおいてベースライン操作性シグニチャ２１４とともにソフトウェア操作性シグニチャ２０４をグラフにし、それらのシグニチャを統計的に解析して、ソフトウェアがベースライン操作性シグニチャ２１４と整合して又は不整合に動作しているかどうかを決定することができる。例えば、ソフトウェア操作性シグニチャ２０４がベースライン操作性シグニチャ２１４にマッピングする場合は、ソフトウェア操作性サービス２０４は、ソフトウェアがベースライン操作性シグニチャ２１４と整合して動作していると決定する。代わりに、ソフトウェア操作性シグニチャ２０４がベースライン操作性シグニチャ２１４にマッピングしない場合は、ソフトウェア操作性サービス２０４は、ソフトウェアがベースライン操作性シグニチャ２１４と不整合に動作していると決定することができる。
【００３９】
実施形態において、ソフトウェア操作性サービス２１２は、ソフトウェア操作性シグニチャ２０４に基づき、ソフトウェア１３０がベースライン操作性シグニチャ２１４と不整合に動作していると決定し、次いで、ベースライン操作性シグニチャ２１４と不整合に動作しているソフトウェア１３０が通常のソフトウェア動作に対応すると決定することができる。例えば、コンピュータデバイスの更新は、ソフトウェアを異なるふうに動作させることがあり、これは、ソフトウェア操作性シグニチャを変化させうる。しかし、幾つかの場合に、ソフトウェアの異なる動作は、ソフトウェアの許容できる又はより良い動作に対応することがある。そのような場合に、従って、異なるソフトウェア操作性シグニチャは通常のソフトウェア動作に対応してよい。然るに、ソフトウェア操作性サービス２１２は、次いで、ソフトウェアについて受信されたソフトウェア操作性シグニチャに基づきソフトウェアの新たなベースライン操作性シグニチャ２１４を生成するよう実施される。
【００４０】
他の実施形態において、ソフトウェア操作性サービス２１２は、ソフトウェア操作性シグニチャ２０４に基づき、ソフトウェア１３０がベースライン操作性シグニチャ２１４と不整合に動作していると決定し、次いで、ソフトウェア操作性シグニチャ２０４を解析してソフトウェアの動作不具合を決定することができる。ソフトウェアの動作不具合は、適切に動作するソフトウェアの不具合に対応することができる。ソフトウェアの動作不具合を決定するよう、ソフトウェア操作性サービス２１２は、ソフトウェア操作性シグニチャ２０４がソフトウェアの不具合を示すかどうかを決定するよう、不整合動作に対応するソフトウェア操作性シグニチャ２０４を解析する。例えば、ソフトウェア操作性シグニチャ２０４は、ソフトウェアがクラッシュしたか又は特定のコマンドの実行を終了しなかったことを示してよい。他の例として、ソフトウェア操作性シグニチャ２０４は、オペレーティングシステムカーネル１２８によって電力状態を変更するよう要求される場合にデバイスドライバが電力状態を変更することができなかったことを示してよい。
【００４１】
他の実施形態では、ソフトウェア操作性サービス２１２は、ソフトウェア操作性シグニチャ２０４に基づき、ソフトウェア１３０がベースライン操作性シグニチャ２１４と不整合に動作していると決定し、次いで、ソフトウェア操作性シグニチャ２０４を解析してソフトウェアの動作退行を決定することができる。ソフトウェアの動作退行は、ソフトウェアの操作性がオペレーティングシステムの更新又はサービスパックの更新といったコンピュータデバイスの更新に応答して後戻りする（例えば、ソフトウェアの性能が低下する。）事例をいう。
【００４２】
動作退行は、コンピュータデバイスの更新の後に受信されたソフトウェア１３０のソフトウェア操作性シグニチャ２０４を、コンピュータデバイスの更新の前に生成されたベースライン操作性シグニチャ２１４と比較することによって、特定され得る。例えば、サービスパックの更新の後に受信されたソフトウェア操作性シグニチャ２０４は、サービスパックの更新の前に生成されたベースライン操作性シグニチャ２１４と同じか又は略同じであるべきである。しかし、ソフトウェア操作性シグニチャ２０４がサービスパックの更新後にベースライン操作性シグニチャ２１４と異なる場合は、ソフトウェア操作性シグニチャ２０４は、ソフトウェア操作性シグニチャ２０４が、動作退行を示すソフトウェアの性能における低下に対応するかどうかを確認するよう、調べられ得る。
【００４３】
例えば、プリンタドライバについてのソフトウェア操作性シグニチャを解析することによって、ソフトウェア操作性サービス２１２は、プリンタドライバが、より古いバージョンのオペレーティングシステムを実行する場合に、印刷処理の特定のステップの間、５％の時間機能しなくなると決定してよい。しかし、ソフトウェア操作性シグニチャ２０４は、より新しいバージョンのオペレーティングシステムがインストールされる場合に、プリンタドライバが、印刷処理の特定のステップを実行する場合に、２０％の時間機能しなくなることを示してよい。プリンタドライバがより新しいバージョンのオペレーティングシステムによりますます機能しなくなるという事実は、プリンタドライバの性能がオペレーティングシステムのアップグレードに応答して低下又は退行したことを示す。
【００４４】
ソフトウェア操作性サービス２１２は、次いで、ソフトウェア操作性シグニチャ２０４とベースライン操作性シグニチャ２１４との比較からソフトウェア１３０の動作不具合又は動作退行の原因を決定するよう実施される。例えば、ソフトウェア操作性サービス２１２は、ソフトウェアの動作不具合又は動作退行の原因を決定するよう、ソフトウェアに関連するコンテクストデータ２０６を調べることができる。
【００４５】
ソフトウェア操作性サービス２１２は、次いで、ソフトウェア１３０の動作不具合又は動作退行を抑制するソリューションを起動するよう実施される。例えば、ソフトウェア操作性サービス及び／又は他のサービス若しくは処理は、動作不具合又は動作退行を抑制するソフトウェア・ソリューションを起動することができる。例えば、ソフトウェア・ソリューションは起動されて、より新しいバージョンのオペレーティングシステムとの互換性のためにプリンタドライバを更新する。
【００４６】
次いで、ソリューションは、コンピュータデバイスでのソフトウェアの動作不具合又は動作退行を抑制するようコンピュータデバイス１０２へ通信ネットワーク１３８を介して送信され得る。代替的に、又は追加的に、動作不具合又は動作退行に関する情報は、ソフトウェアの製造者又は開発者（すなわち、他の第三者機関）へ送信されて、第三者機関がソフトウェアの動作不具合又は動作退行を抑制するソリューションを開発することができるようにすることができる。ソフトウェア操作性サービス２１２はまた、動作不具合又は動作退行が後に検出される場合にそのソリューションによるコンピュータデバイスの自動更新を開始するよう、動作不具合又は動作退行に対応するソフトウェア操作性シグニチャ２０４にタグ付けすることができる。
【００４７】
例となる方法３００，４００及び５００は、ソフトウェア操作性サービスの１又はそれ以上の実施形態に従って、夫々図３，４及び５を参照して記載される。概して、ここで記載されるサービス、機能、方法、手順、構成要素、及びモジュールのいずれも、ソフトウェア、ファームウェア、ハードウェア（例えば、固定ロジック回路）、手動処理、又はそれらの何らかの組み合わせを用いて実施され得る。ソフトウェア実施は、コンピュータプロセッサによって実行される場合に特定のタスクを実行するプログラムコードを表す。例となる方法は、概してコンピュータ実行可能命令に関連して記載される。かかる命令は、ソフトウェア、アプリケーション、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、プロシージャ、モジュール、関数、等を含むことができる。プログラムコードは、コンピュータプロセッサの近く及び／又は遠くの１又はそれ以上のコンピュータ可読記憶媒体デバイスにおいて記憶され得る。方法はまた、複数のコンピュータデバイスによる分散型コンピュータ環境において実施されてよい。更に、ここで記載される特徴は、プラットフォーム独立型であり、様々なプロセッサを有する様々なコンピュータプラットフォームにおいて実施され得る。
【００４８】
図３は、ソフトウェア操作性サービスの方法３００の例を表し、コンピュータデバイスで実施されるソフトウェア操作性モジュールを参照して記載される。方法ブロックが記載される順序は、限定として解されるよう意図されず、如何なる数の記載される方法ブロックも、方法又は代替の方法を実施するよう如何なる順序においても組み合わされ得る。
【００４９】
ブロック３０２で、ソフトウェアは、ソフトウェアアクティビティデータを収集するためにモニタされる。例えば、コンピュータデバイス１０２にあるソフトウェア操作性モジュール１２６（図１）は、ソフトウェアアクティビティデータ１３２を収集するようソフトウェア１３０をモニタする。ブロック３０４で、ソフトウェアのためのソフトウェア操作性シグニチャがソフトウェアアクティビティデータから生成される。例えば、ソフトウェア操作性モジュール１２６は、ソフトウェア１３０のためのソフトウェア操作性シグニチャ１３４をソフトウェアアクティビティデータ１３２から生成する。
【００５０】
ブロック３０６で、ソフトウェア操作性シグニチャ及び関連するコンテクストデータが、ソフトウェア操作性シグニチャを解析するネットワークサービスへ送信される。例えば、ソフトウェア操作性モジュール１２６は、ソフトウェア操作性シグニチャ１３４及び関連するコンテクストデータ１３６を、ソフトウェア操作性シグニチャを解析するネットワークサービス２００（図２）へ送信する。
【００５１】
図４は、ソフトウェア操作性サービスの方法４００の例を表し、図２に示されるネットワークサービスを参照して記載される。方法ブロックが記載される順序は、限定として解されるよう意図されず、如何なる数の記載される方法ブロックも、方法又は代替の方法を実施するよう如何なる順序においても組み合わされ得る。
【００５２】
ブロック４０２で、ソフトウェア操作性シグニチャ及び関連するコンテクストデータがコンピュータデバイスから受信される。例えば、ネットワークサービス２００（図２）は、コンピュータデバイス１０２（図１）からソフトウェア操作性シグニチャ２０４及び関連するコンテクストデータ２０６を受信する。ソフトウェア操作性シグニチャは、コンピュータデバイスで動作するソフトウェア１３０の操作性を示す。
【００５３】
ブロック４０４で、更なるコンピュータデバイスから受信される更なるソフトウェア操作性シグニチャがグループ化される。例えば、ソフトウェア操作性サービス２１２は、更なるコンピュータデバイス１０４から受信される更なるソフトウェア操作性シグニチャ２０４をグループ化する。更なるソフトウェア操作性シグニチャの夫々は、更なるコンピュータデバイスで動作するソフトウェアの操作性を示す。更に、更なるソフトウェア操作性シグニチャの夫々は、ソフトウェア操作性シグニチャに関連するコンテクストデータと同じ又は類似するコンテクストデータに関連付けられてよい。
【００５４】
ブロック４０６で、ベースライン操作性シグニチャが、更なるソフトウェア操作性シグニチャから生成される。例えば、ソフトウェア操作性サービス２１２は、更なるソフトウェア操作性シグニチャからベースライン操作性シグニチャ２１４を生成する。実施形態において、ベースライン操作性シグニチャは、更なるソフトウェア操作性シグニチャが生成されるコンテクストの関数であってよい。例えば、ベースライン操作性シグニチャは、コンピュータデバイスのアーキテクチャ、デバイスの性能、及び／又は解析のために選択されるデバイスの特性を含んでよいコンテクストに基づき生成され得る。
【００５５】
ブロック４０８で、ソフトウェア操作性シグニチャは、ソフトウェアがベースライン操作性シグニチャと整合し又は不整合に動作しているかどうかを決定するために、ソフトウェアのベースライン操作性シグニチャと比較される。例えば、ソフトウェア操作性サービス２１２は、ソフトウェア操作性シグニチャ２０４をソフトウェアのベースライン操作性シグニチャ２１４と比較して、ソフトウェアがベースライン操作性シグニチャと整合して又は不整合に動作しているかどうかを決定する。
【００５６】
図５は、ネットワークサービスの方法５００の例を表し、図２に示されるソフトウェア操作性サービスを参照して記載される。方法ブロックが記載される順序は、限定として解されるよう意図されず、如何なる数の記載される方法ブロックも、方法又は代替の方法を実施するよう如何なる順序においても組み合わされ得る。
【００５７】
ブロック５０２で、ソフトウェア操作性シグニチャに基づき、ソフトウェアがベースライン操作性シグニチャと不整合に動作していると決定される。例えば、ソフトウェア操作性サービス２１２（図２）は、ソフトウェア操作性シグニチャ２０４に基づき、ソフトウェア１３０がベースライン操作性シグニチャ２１４と不整合に動作していると決定する（例えば、ブロック４０８（図４）を参照して記載される比較に基づき決定されてよい。）。ソフトウェアがベースライン操作性シグニチャと不整合に動作しているとの決定に応答して、方法は任意にブロック５０４又はブロック５０８に続くことができる。
【００５８】
実施形態において、ブロック５０４で、ベースライン操作性シグニチャと不整合に動作しているソフトウェアが通常のソフトウェア動作に対応すると決定される。例えば、ソフトウェア操作性サービス２１２は、たとえソフトウェア操作性がベースライン操作性シグニチャと不整合であるとしても、ソフトウェア１３０の操作性が通常のソフトウェア動作に対応すると決定する。
【００５９】
ブロック５０６で、新たなベースライン操作性シグニチャが、ソフトウェアについて受信されたソフトウェア操作性シグニチャに基づき生成される。例えば、ソフトウェア操作性サービス２１２は、ソフトウェア１３０について受信されたソフトウェア操作性シグニチャ２０４に基づき、新たなベースライン操作性シグニチャ２１４を生成する。他の実施形態では、ブロック５０８で、ソフトウェア操作性シグニチャは、ソフトウェアの動作不具合又は動作退行を決定するために解析される。例えば、ソフトウェア操作性サービス２１２は、ソフトウェア操作性シグニチャ２０４を解析して、ソフトウェア１３０の動作不具合又は動作退行を決定する。
【００６０】
ブロック５１０で、ソフトウェアの動作不具合又は動作退行の原因が、ソフトウェア操作性シグニチャとベースライン操作性シグニチャとの比較から決定される。例えば、ソフトウェア操作性サービス２１２は、ソフトウェア操作性シグニチャ２０４とベースライン操作性シグニチャ２１４との比較から、ソフトウェア１３０の動作不具合又は動作退行の原因を決定する。更に、ベースライン操作性シグニチャのコンテクストは、ソフトウェアの動作不具合又は動作退行を決定する場合に考慮される因子であってよい。ブロック５１２で、ソフトウェアの動作不具合又は動作退行を抑制するソリューションが起動される。例えば、ソフトウェア操作性サービス２１２は、ソフトウェア１３０の動作不具合又は動作退行を抑制するソリューションを起動する。
【００６１】
図６は、図１乃至５を参照して記載されたデバイス又はデバイスによって実施されるサービスのいずれかとして実施され得るデバイス６００の例の様々な構成要素を表す。実施形態において、デバイスは、あらゆる形態のコンシューマ、コンピュータ、サーバ、ポータブル、ユーザ、通信、電話、ナビゲーション、テレビジョン、器具、ゲーム、メディア再生、及び／又は電子機器において、固定又は移動式デバイスのいずれか１つ又は組み合わせとして実施されてよい。デバイスはまた、デバイスがユーザ、ソフトウェア、ファームウェア、ハードウェア、及び／又はデバイスの組み合わせを含む論理デバイスを表すようにデバイスを操作するユーザ（すなわち、人）及び／又はエンティティに関連付けられてよい。
【００６２】
デバイス６００は、受信されたデータ、受信されているデータ、放送のためにスケジューリングされているデータ、データのデータパケット、等のようなデバイスデータ６０４の有線及び／又は無線通信を可能にする通信デバイス６０２を有する。デバイスデータ６０４又は他のデバイスコンテンツは、デバイスのコンフィギュレーション設定、デバイスに記憶されるメディアコンテンツ、及び／又はデバイスのユーザに関連する情報を含むことができる。デバイスに記憶されるメディアコンテンツは、如何なるタイプのオーディオ、ビデオ、及び／又は画像データも含むことができる。デバイス６００は、１又はそれ以上のデータ入力部６０６を有する。データ入力部６０６を介して、ユーザ選択可能な入力、メッセージ、通信、音楽、テレビジョンコンテンツ、録画ビデオコンテンツ、並びにあらゆるコンテンツ及び／又はデータ源から受信されるあらゆる他のタイプのオーディオ、ビデオ、及び／又は画像データのような如何なるタイプのデータ、メディアコンテンツ、及び／又は入力も受信され得る。
【００６３】
デバイス６００は、シリアル、パラレル、ネットワーク、又は無線インタフェースのいずれか１つ又はそれ以上のような通信インタフェース６０８を更に有する。通信インタフェース６０８は、デバイス６００と通信ネットワークとの間の接続及び／又は通信リンクを提供し、それによって、他の電子、コンピュータ、及び通信デバイスはデバイス６００とデータをやり取りする。
【００６４】
デバイス６００は、デバイスの動作を制御するよう様々なコンピュータ実行可能命令を処理する１又はそれ以上のプロセッサ６１０（例えば、マイクロプロセッサ、コントローラ、等のいずれか）を有する。代替的に、又は追加的に、デバイス６００は、概して６１２で特定される処理及び制御回路に関連して実施されるソフトウェア、ハードウェア、ファームウェア、又は固定ロジック回路のいずれか１つ又は組み合わせにより実施され得る。図示されていないが、デバイス６００は、デバイス内の様々な構成要素を結合するシステムバス又はデータ伝送システムを有することができる。システムバスは、メモリバス若しくはメモリコントローラ、ペリフェラルバス、ユニバーサルシリアルバス、及び／又は様々なバスアーキテクチャのいずれかを利用するプロセッサ若しくはローカルバスのような異なるバス構造のいずれか１つ又は組み合わせを有することができる。
【００６５】
デバイス６００は、ランダムアクセスメモリ（ＲＡＭ）、不揮発性メモリ（例えば、読出専用メモリ（ＲＯＭ）、フラッシュメモリ、等）、及びディスク記憶デバイスのような、データ記憶を可能にする１又はそれ以上のメモリデバイス（例えば、コンピュータ可読記憶媒体）６１４を更に有する。ディスク記憶デバイスは、ハードディスクドライブ、書込及び／又は書換可能ディスク、等のような如何なるタイプの磁気的又は光学的記憶デバイスとしても実施されてよい。
【００６６】
コンピュータ可読媒体は、コンピュータデバイスによってアクセスされる如何なる利用可能な媒体であってもよい。限定されない例として、コンピュータ可読媒体は、記憶媒体及び通信媒体を有してよい。記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータのような情報の記憶のための如何なる方法又は技術においても実施される揮発性及び不揮発性、リムーバブル及び非リムーバブル媒体を含む。記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ若しくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）若しくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気記憶デバイス、又は情報を記憶するために使用され得且つコンピュータによってアクセスされ得る如何なる他の媒体も含むが、それらに限られない。
【００６７】
通信媒体は、通常、搬送波又は他の伝送メカニズムのような変調データ信号においてコンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータを具現する。通信媒体はまた、如何なる情報送達媒体も含む。語「変調データ信号」は、信号に含まれる情報を符号化するように変更された又はその特定の組の１若しくはそれ以上を有する信号を意味する。限定されない例として、通信媒体は、有線ネットワーク又は直接有線接続のような有線媒体と、アコースティック、ＲＦ、赤外線、及び他の無線媒体のような無線媒体とを含む。
【００６８】
メモリデバイス６１４は、デバイスデータ６０４、他のタイプの情報及び／又はデータ、並びに様々なデバイスアプリケーション６１６を記憶するようデータ記憶メカニズムを提供する。例えば、オペレーティングシステム６１８は、メモリデバイスによりソフトウェアアプリケーションとして保持されて、プロセッサで実行され得る。デバイスアプリケーションはまた、あらゆる形態の制御アプリケーション、ソフトウェアアプリケーション、信号処理及び制御モジュール、特定のデバイスを原産とするコード、特定のデバイスのためのハードウェアアブストラクションレイヤ、等のようなデバイスマネージャを含んでよい。
【００６９】
この例では、デバイスアプリケーション６１６は、例えばデバイス６００がコンピュータデバイスとして実施される場合に、ソフトウェア操作性モジュール６２０を含む。代替的に、又は追加的に、デバイスアプリケーション６１６は、例えばデバイス６００が図２を参照して記載されたネットワークサービスとして実施される場合に、ソフトウェア操作性サービス６２２を含む。ソフトウェア操作性モジュール６２０及びソフトウェア操作性サービス６２２は、ソフトウェア及び／又はコンピュータアプリケーションとして示される。代替的に、又は追加的に、ソフトウェア操作性モジュール６２０及び／又はソフトウェア操作性サービス６２２は、ハードウェア、ソフトウェア、ファームウェア、固定ロジック、又はそれらの何らかの組み合わせとして実施され得る。
【００７０】
デバイス６００は、オーディオシステム６２６のためのオーディオデータを生成し及び／又はディスプレイシステム６２８のためのディスプレイデータを生成するオーディオ及び／又はビデオ処理システム６２４を更に有する。オーディオシステム６２６及び／又はディスプレイシステム６２８は、オーディオ、ビデオ、ディスプレイ、及び／又は画像データを処理し、表示し、及び／又は別なふうにレンダリングする如何なるデバイスも有してよい。ディスプレイデータ及びオーディオ信号は、ＲＦ（無線周波数）リンク、Ｓ−ビデオリンク、コンポジットビデオリンク、コンポーネントビデオリンク、ＤＶＩ（デジタルビデオインタフェース）、アナログオーディオ接続、又は他の同様の通信リンクを介してオーディオデバイス及び／又はディスプレイデバイスへ送信され得る。実施において、オーディオシステム６２６及び／又はディスプレイシステム６２８は、デバイス６００の外部構成要素である。代替的に、オーディオシステム６２６及び／又はディスプレイシステム６２８は、例となるデバイス６００の組み込み型構成要素である。
【００７１】
ソフトウェア操作性サービスの実施形態は特徴及び／又は方法に特有の言語において記載されてきたが、添付の特許請求の範囲の対象は必ずしも、記載される特定の特徴又は構成に限定されない。むしろ、特定の特徴及び方法は、ソフトウェア操作性サービスの例となる実施として開示される。
【図１】
0005840290.tif 000002
【図２】
0005840290.tif 000003
【図３】
0005840290.tif 000004
【図４】
0005840290.tif 000005
【図５】
0005840290.tif 000006
【図６】
0005840290.tif 000007