JP5840290B2 - ソフトウェア操作性サービス - Google Patents

ソフトウェア操作性サービス Download PDF

Info

Publication number
JP5840290B2
JP5840290B2 JP2014506397A JP2014506397A JP5840290B2 JP 5840290 B2 JP5840290 B2 JP 5840290B2 JP 2014506397 A JP2014506397 A JP 2014506397A JP 2014506397 A JP2014506397 A JP 2014506397A JP 5840290 B2 JP5840290 B2 JP 5840290B2
Authority
JP
Japan
Prior art keywords
software
signature
operability
usability
baseline
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
JP2014506397A
Other languages
English (en)
Other versions
JP2014512061A (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 JP2014512061A publication Critical patent/JP2014512061A/ja
Application granted granted Critical
Publication of JP5840290B2 publication Critical patent/JP5840290B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Description

ソフトウェアアプリケーションは、オペレーティングシステムの更新及び/又はサービスパックの更新によって引き起こされる動作不具合又は動作退行を起こしやすい。例えば、オペレーティングシステム及び/又はサービスパックの更新は、ハードウェアデバイスと対応するデバイスドライバとの間の互換性を崩す変更をコンピュータシステムに導入することがある。これは、デバイスの性能において低下をもたらしうる。
この要約は、ソフトウェア操作性サービスの簡易的な概念を導入するために設けられており、当該概念は更に、詳細な説明において以下で記載され、且つ/あるいは、図面において示される。この要約は、請求される対象の必須の特徴を記載すると見なされるべきでも、請求される対象の適用範囲を決定又は制限するために使用されるべきでもない。
ソフトウェア操作性サービスが記載される。実施形態において、ソフトウェアのアクティビティは、ソフトウェアアクティビティデータを収集するためにモニタされ得る。次いで、ソフトウェアのためのソフトウェア操作性シグニチャがソフトウェアアクティビティデータから生成され得る。ソフトウェア操作性シグニチャはソフトウェアの操作性を示す。次いで、ソフトウェア操作性シグニチャ及び関連するコンテクストデータが、ソフトウェア操作性シグニチャを解析するネットワークサービスへ送信され得る。
他の実施形態では、ネットワークサービスは、コンピュータデバイスからソフトウェア操作性シグニチャ及び関連するコンテクストデータを受信することができる。ソフトウェア操作性シグニチャは、コンピュータデバイスで動作するソフトウェアの操作性を示す。更なるコンピュータデバイスから受信される更なるソフトウェア操作性シグニチャはグループにまとめられ得る。更なるソフトウェア操作性シグニチャの夫々は、更なるコンピュータデバイスで動作するソフトウェアの操作性を示し、ソフトウェアに関連するコンテクストデータと同じ又は類似するコンテクストデータに関連付けられる。次いで、ベースライン操作性シグニチャが更なるソフトウェア操作性シグニチャから生成され、ベースライン操作性シグニチャは通常のソフトウェア動作を示す。次いで、ソフトウェア操作性シグニチャは、ソフトウェアがベースライン操作性シグニチャと整合して又はベースライン操作性シグニチャと不整合に動作しているかどうかを決定するよう、ソフトウェアのベースライン操作性シグニチャと比較され得る。実施形態において、通常のソフトウェア動作を示すベースライン操作性シグニチャは、ソフトウェア操作性シグニチャが生成されるコンテクストの関数であってよい。
他の実施形態では、ソフトウェア操作性シグニチャに基づき、ソフトウェアがベースライン操作性シグニチャと不整合に動作していると決定される。次いで、ネットワークサービスは、ベースライン操作性シグニチャと不整合な動作が通常のソフトウェア動作に対応すると決定することができる。然るに、次いで、ソフトウェアの新たなベースライン操作性シグニチャは、ソフトウェア操作性シグニチャに基づき生成され得る。代替的に、ネットワークサービスは、ソフトウェア操作性シグニチャに基づきソフトウェアがベースライン操作性シグニチャと不整合に動作していると決定される場合にソフトウェアの動作不具合又は動作退行を決定するよう、ソフトウェア操作性シグニチャを解析することができる。また、ネットワークサービスは、動作不具合又は退行の原因を決定し、ソフトウェアの動作不具合又は退行を抑制するソリューションを起動することができる。
ソフトウェア操作性サービスの実施形態が実施され得るシステムの例を表す。 1又はそれ以上の実施形態に従うソフトウェア操作性サービスを実施するネットワークサービスを表す。 1又はそれ以上の実施形態に従うソフトウェア操作性サービスの方法の例を表す。 1又はそれ以上の実施形態に従うソフトウェア操作性サービスの方法の更なる例を表す。 1又はそれ以上の実施形態に従うソフトウェア操作性サービスの方法の更なる例を表す。 ソフトウェア操作性サービスの実施形態を実施することができる装置の例の様々な構成要素を表す。
ソフトウェア操作性サービスの実施形態は、添付の図面を参照して記載される。図面において、同じ参照符号は、同じ特徴及び構成要素を参照するために使用される。
ソフトウェア操作性サービスが記載される。実施形態において、ソフトウェア操作性モジュールは、例えばあらゆるタイプのソフトウェア、アプリケーション、デバイスドライバ、ファームウェア(例えば、デバイスファームウェア若しくはシステムファームウェア)、マイクロコード、ハードウェア部品、又はそれらの何らかの組み合わせからソフトウェアアクティビティデータを収集するために、ソフトウェアのアクティビティをモニタするよう実施され得る。次いで、ソフトウェア操作性モジュールは、ソフトウェアアクティビティデータから、ソフトウェアのためのソフトウェア操作性シグニチャを生成することができる。ソフトウェア操作性シグニチャは、ソフトウェアの操作性、すなわち、一般的に、ソフトウェア、アプリケーション、デバイスドライバ、ファームウェア、ハードウェア等の“調子”を示す。次いで、ソフトウェア操作性モジュールは、ソフトウェア操作性シグニチャと、動作コンテクストを示す関連するコンテクストデータとを、ソフトウェア操作性シグニチャを解析するネットワークサービスへ送信することができる。
他の実施形態では、ネットワークサービスは、コンピュータデバイスからソフトウェア操作性シグニチャ及び関連するコンテクストデータを受信することができる。ソフトウェア操作性シグニチャは、コンピュータデバイスで動作するソフトウェアの操作性を示す。実施形態において、ネットワークサービスは、更なるソフトウェア操作性シグニチャからベースライン操作性シグニチャを生成することができる。ネットワークサービスは、更なるコンピュータデバイスから受信される更なるソフトウェア操作性シグニチャをグループ化することができる。更なるソフトウェア操作性シグニチャの夫々は、更なるコンピュータデバイスで動作するソフトウェアの操作性を示し、ソフトウェアに関連するコンテクストデータと同じ又は類似するコンテクストデータと関連付けられる。次いで、ネットワークサービスは、更なるソフトウェア操作性シグニチャからベースライン操作性シグニチャを生成することができ、ベースライン操作性シグニチャは通常のソフトウェア動作を示す。次いで、ネットワークサービスは、ソフトウェア操作性シグニチャをソフトウェアのベースライン操作性シグニチャと比較して、ソフトウェアがベースライン操作性シグニチャと整合して又はベースライン操作性シグニチャと不整合に動作しているかどうかを決定することができる。
実施形態において、通常のソフトウェア動作を示すベースライン操作性シグニチャは、ソフトウェア操作性シグニチャが生成されるコンテクストの関数であってよい。例えば、ベースライン操作性シグニチャは、コンピュータデバイスのアーキテクチャ(例えば、X64又はARM)、性能(例えば、高性能又は低性能)、解析下の市場区分(例えば、OEMに基づく、PCモデル、ロケール、CPU速度、等)、等を含みうるコンテクストに基づき生成され得る。デバイスドライバ及びオペレーティングシステム開発バージョンの2つの変数のみに基づき生成されるベースライン操作性シグニチャは、ドライバごとオペレーティングシステムごとのベースラインコンテクストを有する。更に、更なる特質がベースラインコンテクストに加えられてよい。例えば、ベースラインコンテクストの特質は、特定のロケールで1GB未満のメモリを備えるタブレット型コンピュータにおいて実行される場合に、電力管理機能のためのドライバのベースライン操作性シグニチャを特定するよう加えられてよい。
他の実施形態では、ソフトウェア操作性シグニチャに基づき、ソフトウェアがベースライン操作性シグニチャと不整合に動作していると決定されてよい。次いで、ネットワークサービスは、ベースライン操作性シグニチャと不整合な動作が通常のソフトウェア動作に対応すると決定することができる。然るに、次いで、ソフトウェアの新たなベースライン操作性シグニチャは、ソフトウェア操作性シグニチャに基づき生成され得る。代替的に、ネットワークサービスは、ソフトウェア操作性シグニチャに基づきソフトウェアがベースライン操作性シグニチャと不整合に動作していると決定される場合にソフトウェアの動作不具合又は動作退行を決定するよう、ソフトウェア操作性シグニチャを解析することができる。また、ネットワークサービスは、動作不具合又は退行の原因を決定し、ソフトウェアの動作不具合又は退行を抑制するソリューションを起動することができる。
例えば、プリンタと、コンピュータデバイスにおける対応するプリンタドライバとを考える。サービスパックの更新がコンピュータデバイスに適用された後、プリンタは、例えば、より長い時間をかけて印刷ジョブを完了することによって、異なるふうに動作しうる。通常、プリンタドライバが異なるふうに動作していると決定することは困難であり、また、サービスパックの更新がプリンタの速度を減速させたと決定することも困難である。やがて、プリンタのユーザは、プリンタが印刷ジョブを完了するのに時間がかかるようになったと気付くかもしれないが、何が性能の低下を引き起こしたのかをユーザが指摘することは困難であろう。更に、多くのユーザは、プリンタドライバが完全に動作不能にならない場合には、プリンタの性能の低下に気付きさえしないかもしれない。
しかし、様々な実施形態に従って、ソフトウェア操作性モジュールは、プリンタドライバのアクティビティデータを収集するために、プリンタドライバをモニタするよう実施され得る。次いで、プリンタドライバのためのソフトウェア操作性シグニチャが生成され、ネットワークサービスへ送信され得る。次いで、ネットワークサービスは、プリンタドライバのためのソフトウェア操作性シグニチャをプリンタドライバのベースライン操作性シグニチャと比較して、プリンタドライバがベースライン操作性シグニチャと整合して又は不整合に動作しているかどうかを決定することができる。この場合に、ネットワークサービスは、プリンタドライバがサービスパックの更新後に適切に動作していないので、プリンタドライバがベースライン操作性シグニチャと不整合に動作していると決定することができる。プリンタドライバがベースライン操作性シグニチャと不整合に動作しているとの決定に応答して、ネットワークサービスは、プリンタドライバの動作不具合又は動作退行を決定するよう、プリンタドライバのためのソフトウェア操作性シグニチャを解析することができる。次いで、プリンタドライバの動作不具合又は動作退行を抑制するソリューションが起動され得る。例えば、ネットワークサービスは、プリンタドライバをサービスパックの更新に伴って適切に動作させるソフトウェア更新を生成し及び/又はコンピュータデバイスへ送信することができる。
ソフトウェア操作性サービスの特徴及び概念はあらゆる数の異なったデバイス、システム、環境、ネットワーク及び/又は構成において実施され得るが、ソフトウェア操作性サービスの実施形態は、以下の例となるデバイス、システム、及び方法との関連で記載される。
図1は、ソフトウェア操作性サービスの様々な実施形態が実施され得るシステム100の例を表す。例となるシステム100は、如何なるタイプのコンピュータデバイス104としても実施されてよいコンピュータデバイス102を有する。様々なコンピュータデバイス104のいずれも、コンピュータデバイス102として構成され得、図6に示されるデバイスの例を参照して更に記載されるようにあらゆる数及び組み合わせの異なる構成要素を有して実施されてよい。
コンピュータデバイス104は、テレビジョン装置106、コンピュータ108、ゲームシステム110、電気器具、電子機器、及び/又は何らかの他のタイプの装置の中のいずれか1つ又は組み合わせとして実施され得る。様々なコンピュータデバイスは、無線データを受信及び/又は通信するよう実施される無線デバイス、例えば、携帯電話112(セルラー、VoIP、WiFi、等)、携帯型コンピュータデバイス114、メディアプレーヤ116、及び/又は何らかの他の無線デバイスを更に有することができる。クライアントシステムは、各自のコンピュータデバイス及びディスプレイデバイス118を有することができる。
コンピュータデバイス102は、コンピュータデバイスの動作を制御するよう様々なコンピュータ実行可能命令を処理する1又はそれ以上のプロセッサ120(例えば、マイクロプロセッサ、コントローラ、等のいずれか)を有することができる。コンピュータデバイス102は、データ記憶を可能にするメモリ122(例えば、1又はそれ以上のコンピュータ可読記憶媒体デバイス)を更に有する。メモリは、如何なるタイプのメモリ、記憶媒体、及び/又は適切な電子データ記憶としても実施され得る。
メモリ122は、メモリによりソフトウェアアプリケーションとして保持されてプロセッサ120によって実行され得るオペレーティングシステム124を更に有する。オペレーティングシステム124は、ソフトウェア操作性モジュール126及びオペレーティングシステムカーネル128を有する。ソフトウェア操作性モジュール126は、コンピュータ実行可能命令、例えば、ソフトウェアアプリケーションとして実施され、ここで記載される実施形態を実施するよう様々なコンピュータデバイス104のいずれかにおけるプロセッサによって実行され得る。
ソフトウェア操作性モジュール126は、ソフトウェアアクティビティデータ132を収集するために、ソフトウェア130のアクティビティをモニタするよう実施される。ここで記載されるように、ソフトウェア130は、如何なるタイプのソフトウェアアプリケーションも、例えば、2〜3例を挙げると、ワード処理アプリケーション、ウェブ検索アプリケーション、又はデバイスドライバを有することができる。ソフトウェア130は、ファームウェア(例えば、デバイスファームウェア又はシステムファームウェア)、マイクロコード、ハードウェア部品、又はそれらの何らかの組み合わせを更に有することができる。ソフトウェアアクティビティデータ132は、通常のソフトウェアアクティビティ、ソフトウェア動作変化、及びソフトウェア不具合を含む、ソフトウェア130のアクティビティ及び/又は動作に関連する何らかのデータを有することができる。
実施形態において、ソフトウェア操作性モジュール126は、ソフトウェア130の特定のアクティビティをモニタするために、ネットワークサービス200(以下でより詳細に記載される。)からリクエストを受信するよう実施される。例えば、リクエストは、ソフトウェア130の電力管理動作に関連する特定のアクティビティをモニタし、全ての他のアクティビティを無視するよう、受信され得る。代替的に、ソフトウェア操作性モジュール126は、ソフトウェア130の全てのアクティビティをモニタするよう実施され得る。
実施形態において、ソフトウェア操作性モジュール126は、1又はそれ以上の基準に基づきモニタするソフトウェアを選択するよう実施される。1又はそれ以上の基準は、ソフトウェア操作性モジュール126自体によって生成され得、あるいは、基準は、ネットワークサービス200から受信され得る。例えば、ソフトウェア操作性モジュール126は、ランダムに、又は一連のエラーイベントのような何らかの顕著な動作を発見することによって、モニタするソフトウェアを選択するよう実施され得る。他の例として、ネットワークサービス200は、様々なコンピュータデバイスの操作性についての幅広い概観をコンパイルするために、多種多様なソフトウェアがモニタされることを確かにするようサンプリングロジックを用いてよい。
次いで、ソフトウェア操作性モジュール126は、ソフトウェアアクティビティデータ132からソフトウェアのためのソフトウェア操作性シグニチャ134を生成するよう実施される。ソフトウェア操作性シグニチャ134はソフトウェアの操作性を示し、ソフトウェアアクティビティデータ132のサマリを含んでよい。例えば、ソフトウェア操作性シグニチャ134は、ソフトウェアがクラッシュして、アプリケーションタスクを終了しなかった、又はアプリケーション操作を実行することができなかったとのインジケータを含むことができる。従って、当然に、ソフトウェア操作性シグニチャ134は、ソフトウェアがモニタされる時間中に、ソフトウェアの操作性のスナップショットを提供する。
実施形態において、ソフトウェア操作性モジュール126は、トリガイベントに応答して、ソフトウェアアクティビティデータ132を収集し、そしてソフトウェア操作性シグニチャ134を生成するよう実施される。トリガイベントは、ソフトウェア操作性シグニチャ134を生成するために使用されるソフトウェアアクティビティデータ132が一致することを確かにする。トリガイベントは、コンピュータデバイスの再起動のような特定のイベント、又は特定の時間若しくは時間期間であってよい。例えば、ソフトウェア操作性シグニチャ134は、コンピュータデバイスが再起動するたびに、毎日午前8時に、又は12時間ごとに、生成され得る。トリガイベントは、ソフトウェア操作性モジュール126によって決定されてよく、あるいは、トリガイベントは、ネットワークサービス200から受信されるコマンドに基づき選択されてよい。
ソフトウェア操作性モジュール126は、次いで、ソフトウェア操作性シグニチャ134及び関連するコンテクストデータ136を、ソフトウェア操作性シグニチャ134を解析するネットワークサービス200へ送信するよう実施される。実施形態において、コンテクストデータ136は、他のシステム又はエンティティによって収集及び/又は通信されてよく、その場合に、ソフトウェア操作性シグニチャ134は、コンテクストデータ136に対するポインタ又は参照とともに送信されてよい。
コンテクストデータ136は、ソフトウェアアクティビティデータ132が収集され、且つ、ソフトウェア操作性シグニチャ134が生成される動作環境を特定する。コンテクストデータ136は、ソフトウェアの動作に対して影響を有しうるコンピュータデバイスの設定又は動作環境に関連する如何なる情報も含んでよい。例えば、コンテクストデータ136は、ハードウェア、ファームウェア、若しくはBIOSタイプ情報、コンピュータデバイスに関連するデバイスのタイプ(例えば、埋め込み型、内蔵型、及び外部デバイス)、コンピュータデバイスのドライバのタイプ、及び/又はオペレーティングシステムのタイプを含んでよい。コンテクストデータ136はまた、ソフトウェアアクティビティデータ132が収集された時間に対応する時間データ、又はソフトウェアアクティビティデータ132が収集された時点におけるコンピュータデバイスの環境(例えば、オペレーティングシステムのステータス)に対応する環境データを含んでよい。
当然に、ソフトウェアの動作は、ソフトウェアのコンテクスト又は動作環境によって大いに影響を及ぼされ得る。従って、収集されるコンテクストデータ136の質及び量は、ネットワークサービス200によるソフトウェア操作性シグニチャ134の解析に影響を与えうる。例えば、ソフトウェア又はデバイスは、ARMシステムにおける場合とは対照的に、32ビットシステムにおいて異なったように動作することがある。同様に、デバイスは、同じコンピュータデバイスで動作する同じデバイスの2又はそれ以上が存在する場合に、異なったように動作することがある。然るに、コンテクストは、ソフトウェア操作性シグニチャ134に影響を与えうる。従って、夫々のシグニチャに関連付けられ得る更なるコンテクストデータはより良く、これは、ネットワークサービス200によるシグニチャのバックエンド解析を助ける。
ソフトウェア操作性モジュール126は、通信ネットワーク138を介してネットワークサービス200と通信することができる。通信ネットワーク138は、ソフトウェア操作性シグニチャ134の通信及び分配を助ける有線及び/又は無線ネットワークを有するよう実施され得る。通信ネットワーク138はまた、如何なるタイプのネットワークトポロジ及び/又は通信プロトコルを用いても実施され得、2又はそれ以上のネットワークの組み合わせとして表され又は別なふうに実施され得る。通信ネットワーク138はまた、通信サービスプロバイダ、携帯電話プロバイダ、及び/又はインターネットサービスプロバイダのようなモバイルオペレータによって管理されるモバイルオペレータネットワークを有してよい。モバイルオペレータは、如何なるタイプの無線デバイス又は携帯電話のためのモバイルデータ及び/又はボイス通信(例えば、セルラー、VoIP、WiFi、等)も促進することができる。
様々な実施形態において、ソフトウェア130は、オペレーティングシステムカーネル128との通信を介して対応するデバイス142を制御するよう実施されるデバイスドライバ140を有する。デバイス142の例として、キーボード、スピーカ、プリンタ、ユニバーサルシリアルバス(USB)記憶装置、ウェブカメラ、及びコンピュータデバイス102とインタフェース接続することができるあらゆる他のタイプのハードウェアデバイスがある。実施形態において、ソフトウェア操作性モジュール126は、ソフトウェアアクティビティデータ132を収集するようデバイスドライバとオペレーティングシステムカーネル128との間の通信を受動的にモニタするモニタリングモジュール144を用いてデバイスドライバ140をモニタするよう実施される。モニタリングモジュール144は、デバイスドライバ140に対応するソフトウェアアクティビティデータ132を収集するようデバイスドライバ140とオペレーティングシステムカーネル128との間の通信を受動的にモニタする“シム(shim)”として構成されてよい。ここで記載されるように、“受動的に”モニタするとは、デバイスドライバ140とオペレーティングシステムカーネル128との間の通信に干渉することなくモニタすることをいう。
ソフトウェア操作性モジュール126は、次いで、デバイスドライバ140に対応するソフトウェアアクティビティデータ132からソフトウェア操作性シグニチャ134を生成するよう実施される。例えば、ソフトウェア操作性シグニチャ134は、デバイスドライバがクラッシュし、終了しなかったか又は機能しなくなったとのインジケータを含むことができる。デバイスドライバの動作不具合は、例えば、デバイスドライバが、要求された電力状態に入ることができず、コンピュータデバイスの最適なバッテリ寿命に満たないことをもたらすことで、オペレーティングシステムカーネル128からのコマンドに適切に応答することができなかった事例を含むことができる。ソフトウェア操作性シグニチャ134は、デバイスドライバがモニタされる時間中に、デバイスドライバの操作性のスナップショットを提供する。次いで、ソフトウェア操作性モジュール126は、上述されたように、ソフトウェア操作性シグニチャ134を解析するネットワークサービス200へ、デバイスドライバに対応するソフトウェア操作性シグニチャ134を送信する。
図2は、ここで記載される実施形態に従うネットワークサービス200の例を表す。ネットワークサービスはデータ通信インタフェース202を有する。データ通信インタフェース202を介して、ソフトウェア操作性シグニチャ204及び関連するコンテクストデータ206は、図1を参照して記載されたようにコンピュータデバイス102から受信される。
ネットワークサービス200はまた、ネットワークサービスの動作を制御するよう様々なコンピュータ実行可能命令を処理する1又はそれ以上のプロセッサ(例えば、マイクロプロセッサ、コントローラ、等のいずれか)を有することができる。ネットワークサービス200はまた、データ記憶を可能にするメモリ210(例えば、1又はそれ以上のコンピュータ可読記憶媒体デバイス)を有する。メモリ210は、如何なるタイプのメモリ、記憶媒体、及び/又は適切な電子データ記憶としても実施され得る。ネットワークサービス200はまた、図6に示されるデバイスの例を参照して更に記載されるように、如何なる数及び組み合わせの異なる構成要素によっても実施され得る。ネットワークサービス200はまた、ソフトウェアアプリケーションのようなコンピュータ実行可能命令として実施され、ここで記載される様々な実施形態を実施するよう1又はそれ以上のプロセッサ208によって実行され得るソフトウェア操作性サービス212を有する。
ソフトウェア操作性サービス212は、コンピュータデバイス102からソフトウェア操作性シグニチャ204及び関連するコンテクストデータ206を受信するよう実施される。図1を参照して記載されたように、ソフトウェア操作性シグニチャ204は、コンピュータデバイス102で動作するソフトウェア130の操作性を示す。
実施形態において、ソフトウェア操作性サービス212は、通常のソフトウェア動作を示すベースライン操作性シグニチャ214を決定するよう実施される。ベースライン操作性シグニチャ214を生成するよう、ソフトウェア操作性サービス212は、更なるコンピュータデバイス102から受信される更なるソフトウェア操作性シグニチャ204をグループ化することができる。更なるソフトウェア操作性シグニチャ204の夫々は、更なるコンピュータデバイスで動作するソフトウェア130の操作性を示す。次いで、ソフトウェア操作性サービス212は、更なるソフトウェア操作性シグニチャ204からベースライン操作性シグニチャ214を生成することができ、ベースライン操作性シグニチャ214は通常のソフトウェア動作を示す。ベースライン操作性シグニチャ214は、更なるソフトウェア操作性シグニチャ204が生成されるコンテクストの関数であってよい。例えば、ベースライン操作性シグニチャ214は、コンピュータデバイス102のアーキテクチャ、デバイスの性能、及び/又は解析のために選択されるデバイスの特性を含みうるコンテクストに基づき生成され得る。
実施形態において、ベースライン操作性シグニチャ214は、ソフトウェア130が同じ又は類似する動作環境において動作している場合に、及び/又は同じ又は類似するソフトウェアアクティビティがモニタされる場合に、通常のソフトウェア動作を示す。例えば、ベースライン操作性シグニチャ214は、ソフトウェア操作性シグニチャに関連するコンテクストデータと同じ又は類似するコンテクストデータに関連付けられる更なるソフトウェア操作性シグニチャをグループ化することによって、動的に生成されてよい。これは、コンピュータデバイス102のコンテクスト又は動作環境がソフトウェア操作性シグニチャ204とベースライン操作性シグニチャ214との比較に影響を及ぼさないことを提供する。
例えば、最低限のBIOSバージョンを必要とするディスプレイドライバは、より古いBIOSバージョンを備えたコンピュータデバイスで不十分に動作するが、新しいBIOSバージョンを備えたシステムにおいて適切に動作することができる。従って、ソフトウェア操作性シグニチャが新しいBIOSを有するコンピュータデバイスから生成され、ベースライン操作性シグニチャがより古いBIOSバージョンを有するコンピュータデバイスに関する更なるソフトウェア操作性シグニチャから生成される場合は、比較は的確ではない。然るに、ディスプレイドライバについてソフトウェア操作性シグニチャとベースライン操作性シグニチャとを比較する場合に、ソフトウェア操作性シグニチャ及びベースライン操作性シグニチャは両方とも、新しいBIOSバージョンを有するコンピュータデバイスから生成される。
代替的に、あるいは、同じ又は類似するコンテクストデータに関連付けられることに加えて、ソフトウェア操作性シグニチャ及び更なるソフトウェア操作性シグニチャは、ソフトウェアの同じ又は類似するアクティビティをモニタすることから生成されてよい。例えば、ソフトウェア操作性シグニチャが電力管理動作に関するアクティビティをモニタすることによって生成される場合は、ベースライン操作性シグニチャを生成するために使用される更なるソフトウェア操作性シグニチャは、電力管理動作に関するアクティビティをモニタすることによって更に生成されることに基づき、グループ化され得る。然るに、ベースライン操作性シグニチャを生成するために使用される更なるソフトウェア操作性シグニチャは、正確なベースライン操作性シグニチャを生成するために同じ又は類似するコンテクストデータを有するか又は同じ若しくは類似するアクティビティをモニタすることから生成される1又はそれ以上に基づき、グループ化され得る。
ソフトウェア操作性サービス212は、ソフトウェア操作性シグニチャ204をソフトウェアのベースライン操作性シグニチャ214と比較して、ソフトウェアがベースライン操作性シグニチャ214と整合して又はベースライン操作性シグニチャ214と不整合に動作しているかどうかを決定するよう実施される。ベースライン操作性シグニチャ214は通常のソフトウェア動作を示す。然るに、ソフトウェア操作性シグニチャ204をベースライン操作性シグニチャ214と比較することによって、ネットワークサービス200は、ソフトウェアが通常のソフトウェア動作又は挙動と整合して又は不整合に動作しているかどうかを決定することができる。
例えば、ソフトウェア操作性サービス212は、データチャートにおいてベースライン操作性シグニチャ214とともにソフトウェア操作性シグニチャ204をグラフにし、それらのシグニチャを統計的に解析して、ソフトウェアがベースライン操作性シグニチャ214と整合して又は不整合に動作しているかどうかを決定することができる。例えば、ソフトウェア操作性シグニチャ204がベースライン操作性シグニチャ214にマッピングする場合は、ソフトウェア操作性サービス204は、ソフトウェアがベースライン操作性シグニチャ214と整合して動作していると決定する。代わりに、ソフトウェア操作性シグニチャ204がベースライン操作性シグニチャ214にマッピングしない場合は、ソフトウェア操作性サービス204は、ソフトウェアがベースライン操作性シグニチャ214と不整合に動作していると決定することができる。
実施形態において、ソフトウェア操作性サービス212は、ソフトウェア操作性シグニチャ204に基づき、ソフトウェア130がベースライン操作性シグニチャ214と不整合に動作していると決定し、次いで、ベースライン操作性シグニチャ214と不整合に動作しているソフトウェア130が通常のソフトウェア動作に対応すると決定することができる。例えば、コンピュータデバイスの更新は、ソフトウェアを異なるふうに動作させることがあり、これは、ソフトウェア操作性シグニチャを変化させうる。しかし、幾つかの場合に、ソフトウェアの異なる動作は、ソフトウェアの許容できる又はより良い動作に対応することがある。そのような場合に、従って、異なるソフトウェア操作性シグニチャは通常のソフトウェア動作に対応してよい。然るに、ソフトウェア操作性サービス212は、次いで、ソフトウェアについて受信されたソフトウェア操作性シグニチャに基づきソフトウェアの新たなベースライン操作性シグニチャ214を生成するよう実施される。
他の実施形態において、ソフトウェア操作性サービス212は、ソフトウェア操作性シグニチャ204に基づき、ソフトウェア130がベースライン操作性シグニチャ214と不整合に動作していると決定し、次いで、ソフトウェア操作性シグニチャ204を解析してソフトウェアの動作不具合を決定することができる。ソフトウェアの動作不具合は、適切に動作するソフトウェアの不具合に対応することができる。ソフトウェアの動作不具合を決定するよう、ソフトウェア操作性サービス212は、ソフトウェア操作性シグニチャ204がソフトウェアの不具合を示すかどうかを決定するよう、不整合動作に対応するソフトウェア操作性シグニチャ204を解析する。例えば、ソフトウェア操作性シグニチャ204は、ソフトウェアがクラッシュしたか又は特定のコマンドの実行を終了しなかったことを示してよい。他の例として、ソフトウェア操作性シグニチャ204は、オペレーティングシステムカーネル128によって電力状態を変更するよう要求される場合にデバイスドライバが電力状態を変更することができなかったことを示してよい。
他の実施形態では、ソフトウェア操作性サービス212は、ソフトウェア操作性シグニチャ204に基づき、ソフトウェア130がベースライン操作性シグニチャ214と不整合に動作していると決定し、次いで、ソフトウェア操作性シグニチャ204を解析してソフトウェアの動作退行を決定することができる。ソフトウェアの動作退行は、ソフトウェアの操作性がオペレーティングシステムの更新又はサービスパックの更新といったコンピュータデバイスの更新に応答して後戻りする(例えば、ソフトウェアの性能が低下する。)事例をいう。
動作退行は、コンピュータデバイスの更新の後に受信されたソフトウェア130のソフトウェア操作性シグニチャ204を、コンピュータデバイスの更新の前に生成されたベースライン操作性シグニチャ214と比較することによって、特定され得る。例えば、サービスパックの更新の後に受信されたソフトウェア操作性シグニチャ204は、サービスパックの更新の前に生成されたベースライン操作性シグニチャ214と同じか又は略同じであるべきである。しかし、ソフトウェア操作性シグニチャ204がサービスパックの更新後にベースライン操作性シグニチャ214と異なる場合は、ソフトウェア操作性シグニチャ204は、ソフトウェア操作性シグニチャ204が、動作退行を示すソフトウェアの性能における低下に対応するかどうかを確認するよう、調べられ得る。
例えば、プリンタドライバについてのソフトウェア操作性シグニチャを解析することによって、ソフトウェア操作性サービス212は、プリンタドライバが、より古いバージョンのオペレーティングシステムを実行する場合に、印刷処理の特定のステップの間、5%の時間機能しなくなると決定してよい。しかし、ソフトウェア操作性シグニチャ204は、より新しいバージョンのオペレーティングシステムがインストールされる場合に、プリンタドライバが、印刷処理の特定のステップを実行する場合に、20%の時間機能しなくなることを示してよい。プリンタドライバがより新しいバージョンのオペレーティングシステムによりますます機能しなくなるという事実は、プリンタドライバの性能がオペレーティングシステムのアップグレードに応答して低下又は退行したことを示す。
ソフトウェア操作性サービス212は、次いで、ソフトウェア操作性シグニチャ204とベースライン操作性シグニチャ214との比較からソフトウェア130の動作不具合又は動作退行の原因を決定するよう実施される。例えば、ソフトウェア操作性サービス212は、ソフトウェアの動作不具合又は動作退行の原因を決定するよう、ソフトウェアに関連するコンテクストデータ206を調べることができる。
ソフトウェア操作性サービス212は、次いで、ソフトウェア130の動作不具合又は動作退行を抑制するソリューションを起動するよう実施される。例えば、ソフトウェア操作性サービス及び/又は他のサービス若しくは処理は、動作不具合又は動作退行を抑制するソフトウェア・ソリューションを起動することができる。例えば、ソフトウェア・ソリューションは起動されて、より新しいバージョンのオペレーティングシステムとの互換性のためにプリンタドライバを更新する。
次いで、ソリューションは、コンピュータデバイスでのソフトウェアの動作不具合又は動作退行を抑制するようコンピュータデバイス102へ通信ネットワーク138を介して送信され得る。代替的に、又は追加的に、動作不具合又は動作退行に関する情報は、ソフトウェアの製造者又は開発者(すなわち、他の第三者機関)へ送信されて、第三者機関がソフトウェアの動作不具合又は動作退行を抑制するソリューションを開発することができるようにすることができる。ソフトウェア操作性サービス212はまた、動作不具合又は動作退行が後に検出される場合にそのソリューションによるコンピュータデバイスの自動更新を開始するよう、動作不具合又は動作退行に対応するソフトウェア操作性シグニチャ204にタグ付けすることができる。
例となる方法300,400及び500は、ソフトウェア操作性サービスの1又はそれ以上の実施形態に従って、夫々図3,4及び5を参照して記載される。概して、ここで記載されるサービス、機能、方法、手順、構成要素、及びモジュールのいずれも、ソフトウェア、ファームウェア、ハードウェア(例えば、固定ロジック回路)、手動処理、又はそれらの何らかの組み合わせを用いて実施され得る。ソフトウェア実施は、コンピュータプロセッサによって実行される場合に特定のタスクを実行するプログラムコードを表す。例となる方法は、概してコンピュータ実行可能命令に関連して記載される。かかる命令は、ソフトウェア、アプリケーション、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、プロシージャ、モジュール、関数、等を含むことができる。プログラムコードは、コンピュータプロセッサの近く及び/又は遠くの1又はそれ以上のコンピュータ可読記憶媒体デバイスにおいて記憶され得る。方法はまた、複数のコンピュータデバイスによる分散型コンピュータ環境において実施されてよい。更に、ここで記載される特徴は、プラットフォーム独立型であり、様々なプロセッサを有する様々なコンピュータプラットフォームにおいて実施され得る。
図3は、ソフトウェア操作性サービスの方法300の例を表し、コンピュータデバイスで実施されるソフトウェア操作性モジュールを参照して記載される。方法ブロックが記載される順序は、限定として解されるよう意図されず、如何なる数の記載される方法ブロックも、方法又は代替の方法を実施するよう如何なる順序においても組み合わされ得る。
ブロック302で、ソフトウェアは、ソフトウェアアクティビティデータを収集するためにモニタされる。例えば、コンピュータデバイス102にあるソフトウェア操作性モジュール126(図1)は、ソフトウェアアクティビティデータ132を収集するようソフトウェア130をモニタする。ブロック304で、ソフトウェアのためのソフトウェア操作性シグニチャがソフトウェアアクティビティデータから生成される。例えば、ソフトウェア操作性モジュール126は、ソフトウェア130のためのソフトウェア操作性シグニチャ134をソフトウェアアクティビティデータ132から生成する。
ブロック306で、ソフトウェア操作性シグニチャ及び関連するコンテクストデータが、ソフトウェア操作性シグニチャを解析するネットワークサービスへ送信される。例えば、ソフトウェア操作性モジュール126は、ソフトウェア操作性シグニチャ134及び関連するコンテクストデータ136を、ソフトウェア操作性シグニチャを解析するネットワークサービス200(図2)へ送信する。
図4は、ソフトウェア操作性サービスの方法400の例を表し、図2に示されるネットワークサービスを参照して記載される。方法ブロックが記載される順序は、限定として解されるよう意図されず、如何なる数の記載される方法ブロックも、方法又は代替の方法を実施するよう如何なる順序においても組み合わされ得る。
ブロック402で、ソフトウェア操作性シグニチャ及び関連するコンテクストデータがコンピュータデバイスから受信される。例えば、ネットワークサービス200(図2)は、コンピュータデバイス102(図1)からソフトウェア操作性シグニチャ204及び関連するコンテクストデータ206を受信する。ソフトウェア操作性シグニチャは、コンピュータデバイスで動作するソフトウェア130の操作性を示す。
ブロック404で、更なるコンピュータデバイスから受信される更なるソフトウェア操作性シグニチャがグループ化される。例えば、ソフトウェア操作性サービス212は、更なるコンピュータデバイス104から受信される更なるソフトウェア操作性シグニチャ204をグループ化する。更なるソフトウェア操作性シグニチャの夫々は、更なるコンピュータデバイスで動作するソフトウェアの操作性を示す。更に、更なるソフトウェア操作性シグニチャの夫々は、ソフトウェア操作性シグニチャに関連するコンテクストデータと同じ又は類似するコンテクストデータに関連付けられてよい。
ブロック406で、ベースライン操作性シグニチャが、更なるソフトウェア操作性シグニチャから生成される。例えば、ソフトウェア操作性サービス212は、更なるソフトウェア操作性シグニチャからベースライン操作性シグニチャ214を生成する。実施形態において、ベースライン操作性シグニチャは、更なるソフトウェア操作性シグニチャが生成されるコンテクストの関数であってよい。例えば、ベースライン操作性シグニチャは、コンピュータデバイスのアーキテクチャ、デバイスの性能、及び/又は解析のために選択されるデバイスの特性を含んでよいコンテクストに基づき生成され得る。
ブロック408で、ソフトウェア操作性シグニチャは、ソフトウェアがベースライン操作性シグニチャと整合し又は不整合に動作しているかどうかを決定するために、ソフトウェアのベースライン操作性シグニチャと比較される。例えば、ソフトウェア操作性サービス212は、ソフトウェア操作性シグニチャ204をソフトウェアのベースライン操作性シグニチャ214と比較して、ソフトウェアがベースライン操作性シグニチャと整合して又は不整合に動作しているかどうかを決定する。
図5は、ネットワークサービスの方法500の例を表し、図2に示されるソフトウェア操作性サービスを参照して記載される。方法ブロックが記載される順序は、限定として解されるよう意図されず、如何なる数の記載される方法ブロックも、方法又は代替の方法を実施するよう如何なる順序においても組み合わされ得る。
ブロック502で、ソフトウェア操作性シグニチャに基づき、ソフトウェアがベースライン操作性シグニチャと不整合に動作していると決定される。例えば、ソフトウェア操作性サービス212(図2)は、ソフトウェア操作性シグニチャ204に基づき、ソフトウェア130がベースライン操作性シグニチャ214と不整合に動作していると決定する(例えば、ブロック408(図4)を参照して記載される比較に基づき決定されてよい。)。ソフトウェアがベースライン操作性シグニチャと不整合に動作しているとの決定に応答して、方法は任意にブロック504又はブロック508に続くことができる。
実施形態において、ブロック504で、ベースライン操作性シグニチャと不整合に動作しているソフトウェアが通常のソフトウェア動作に対応すると決定される。例えば、ソフトウェア操作性サービス212は、たとえソフトウェア操作性がベースライン操作性シグニチャと不整合であるとしても、ソフトウェア130の操作性が通常のソフトウェア動作に対応すると決定する。
ブロック506で、新たなベースライン操作性シグニチャが、ソフトウェアについて受信されたソフトウェア操作性シグニチャに基づき生成される。例えば、ソフトウェア操作性サービス212は、ソフトウェア130について受信されたソフトウェア操作性シグニチャ204に基づき、新たなベースライン操作性シグニチャ214を生成する。他の実施形態では、ブロック508で、ソフトウェア操作性シグニチャは、ソフトウェアの動作不具合又は動作退行を決定するために解析される。例えば、ソフトウェア操作性サービス212は、ソフトウェア操作性シグニチャ204を解析して、ソフトウェア130の動作不具合又は動作退行を決定する。
ブロック510で、ソフトウェアの動作不具合又は動作退行の原因が、ソフトウェア操作性シグニチャとベースライン操作性シグニチャとの比較から決定される。例えば、ソフトウェア操作性サービス212は、ソフトウェア操作性シグニチャ204とベースライン操作性シグニチャ214との比較から、ソフトウェア130の動作不具合又は動作退行の原因を決定する。更に、ベースライン操作性シグニチャのコンテクストは、ソフトウェアの動作不具合又は動作退行を決定する場合に考慮される因子であってよい。ブロック512で、ソフトウェアの動作不具合又は動作退行を抑制するソリューションが起動される。例えば、ソフトウェア操作性サービス212は、ソフトウェア130の動作不具合又は動作退行を抑制するソリューションを起動する。
図6は、図1乃至5を参照して記載されたデバイス又はデバイスによって実施されるサービスのいずれかとして実施され得るデバイス600の例の様々な構成要素を表す。実施形態において、デバイスは、あらゆる形態のコンシューマ、コンピュータ、サーバ、ポータブル、ユーザ、通信、電話、ナビゲーション、テレビジョン、器具、ゲーム、メディア再生、及び/又は電子機器において、固定又は移動式デバイスのいずれか1つ又は組み合わせとして実施されてよい。デバイスはまた、デバイスがユーザ、ソフトウェア、ファームウェア、ハードウェア、及び/又はデバイスの組み合わせを含む論理デバイスを表すようにデバイスを操作するユーザ(すなわち、人)及び/又はエンティティに関連付けられてよい。
デバイス600は、受信されたデータ、受信されているデータ、放送のためにスケジューリングされているデータ、データのデータパケット、等のようなデバイスデータ604の有線及び/又は無線通信を可能にする通信デバイス602を有する。デバイスデータ604又は他のデバイスコンテンツは、デバイスのコンフィギュレーション設定、デバイスに記憶されるメディアコンテンツ、及び/又はデバイスのユーザに関連する情報を含むことができる。デバイスに記憶されるメディアコンテンツは、如何なるタイプのオーディオ、ビデオ、及び/又は画像データも含むことができる。デバイス600は、1又はそれ以上のデータ入力部606を有する。データ入力部606を介して、ユーザ選択可能な入力、メッセージ、通信、音楽、テレビジョンコンテンツ、録画ビデオコンテンツ、並びにあらゆるコンテンツ及び/又はデータ源から受信されるあらゆる他のタイプのオーディオ、ビデオ、及び/又は画像データのような如何なるタイプのデータ、メディアコンテンツ、及び/又は入力も受信され得る。
デバイス600は、シリアル、パラレル、ネットワーク、又は無線インタフェースのいずれか1つ又はそれ以上のような通信インタフェース608を更に有する。通信インタフェース608は、デバイス600と通信ネットワークとの間の接続及び/又は通信リンクを提供し、それによって、他の電子、コンピュータ、及び通信デバイスはデバイス600とデータをやり取りする。
デバイス600は、デバイスの動作を制御するよう様々なコンピュータ実行可能命令を処理する1又はそれ以上のプロセッサ610(例えば、マイクロプロセッサ、コントローラ、等のいずれか)を有する。代替的に、又は追加的に、デバイス600は、概して612で特定される処理及び制御回路に関連して実施されるソフトウェア、ハードウェア、ファームウェア、又は固定ロジック回路のいずれか1つ又は組み合わせにより実施され得る。図示されていないが、デバイス600は、デバイス内の様々な構成要素を結合するシステムバス又はデータ伝送システムを有することができる。システムバスは、メモリバス若しくはメモリコントローラ、ペリフェラルバス、ユニバーサルシリアルバス、及び/又は様々なバスアーキテクチャのいずれかを利用するプロセッサ若しくはローカルバスのような異なるバス構造のいずれか1つ又は組み合わせを有することができる。
デバイス600は、ランダムアクセスメモリ(RAM)、不揮発性メモリ(例えば、読出専用メモリ(ROM)、フラッシュメモリ、等)、及びディスク記憶デバイスのような、データ記憶を可能にする1又はそれ以上のメモリデバイス(例えば、コンピュータ可読記憶媒体)614を更に有する。ディスク記憶デバイスは、ハードディスクドライブ、書込及び/又は書換可能ディスク、等のような如何なるタイプの磁気的又は光学的記憶デバイスとしても実施されてよい。
コンピュータ可読媒体は、コンピュータデバイスによってアクセスされる如何なる利用可能な媒体であってもよい。限定されない例として、コンピュータ可読媒体は、記憶媒体及び通信媒体を有してよい。記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータのような情報の記憶のための如何なる方法又は技術においても実施される揮発性及び不揮発性、リムーバブル及び非リムーバブル媒体を含む。記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ若しくは他のメモリ技術、CD−ROM、デジタルバーサタイルディスク(DVD)若しくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気記憶デバイス、又は情報を記憶するために使用され得且つコンピュータによってアクセスされ得る如何なる他の媒体も含むが、それらに限られない。
通信媒体は、通常、搬送波又は他の伝送メカニズムのような変調データ信号においてコンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータを具現する。通信媒体はまた、如何なる情報送達媒体も含む。語「変調データ信号」は、信号に含まれる情報を符号化するように変更された又はその特定の組の1若しくはそれ以上を有する信号を意味する。限定されない例として、通信媒体は、有線ネットワーク又は直接有線接続のような有線媒体と、アコースティック、RF、赤外線、及び他の無線媒体のような無線媒体とを含む。
メモリデバイス614は、デバイスデータ604、他のタイプの情報及び/又はデータ、並びに様々なデバイスアプリケーション616を記憶するようデータ記憶メカニズムを提供する。例えば、オペレーティングシステム618は、メモリデバイスによりソフトウェアアプリケーションとして保持されて、プロセッサで実行され得る。デバイスアプリケーションはまた、あらゆる形態の制御アプリケーション、ソフトウェアアプリケーション、信号処理及び制御モジュール、特定のデバイスを原産とするコード、特定のデバイスのためのハードウェアアブストラクションレイヤ、等のようなデバイスマネージャを含んでよい。
この例では、デバイスアプリケーション616は、例えばデバイス600がコンピュータデバイスとして実施される場合に、ソフトウェア操作性モジュール620を含む。代替的に、又は追加的に、デバイスアプリケーション616は、例えばデバイス600が図2を参照して記載されたネットワークサービスとして実施される場合に、ソフトウェア操作性サービス622を含む。ソフトウェア操作性モジュール620及びソフトウェア操作性サービス622は、ソフトウェア及び/又はコンピュータアプリケーションとして示される。代替的に、又は追加的に、ソフトウェア操作性モジュール620及び/又はソフトウェア操作性サービス622は、ハードウェア、ソフトウェア、ファームウェア、固定ロジック、又はそれらの何らかの組み合わせとして実施され得る。
デバイス600は、オーディオシステム626のためのオーディオデータを生成し及び/又はディスプレイシステム628のためのディスプレイデータを生成するオーディオ及び/又はビデオ処理システム624を更に有する。オーディオシステム626及び/又はディスプレイシステム628は、オーディオ、ビデオ、ディスプレイ、及び/又は画像データを処理し、表示し、及び/又は別なふうにレンダリングする如何なるデバイスも有してよい。ディスプレイデータ及びオーディオ信号は、RF(無線周波数)リンク、S−ビデオリンク、コンポジットビデオリンク、コンポーネントビデオリンク、DVI(デジタルビデオインタフェース)、アナログオーディオ接続、又は他の同様の通信リンクを介してオーディオデバイス及び/又はディスプレイデバイスへ送信され得る。実施において、オーディオシステム626及び/又はディスプレイシステム628は、デバイス600の外部構成要素である。代替的に、オーディオシステム626及び/又はディスプレイシステム628は、例となるデバイス600の組み込み型構成要素である。
ソフトウェア操作性サービスの実施形態は特徴及び/又は方法に特有の言語において記載されてきたが、添付の特許請求の範囲の対象は必ずしも、記載される特定の特徴又は構成に限定されない。むしろ、特定の特徴及び方法は、ソフトウェア操作性サービスの例となる実施として開示される。

Claims (8)

  1. コンピュータデバイスから、前記コンピュータデバイスで動作するソフトウェアの操作性を示すソフトウェア操作性シグニチャと、関連するコンテクストデータとを受信するステップと、
    更なるコンピュータデバイスから受信される更なるソフトウェア操作性シグニチャをグループ化するステップであって、該更なるソフトウェア操作性シグニチャの夫々は、前記更なるコンピュータデバイスで動作する前記ソフトウェアの操作性を示し、当該ソフトウェア操作性シグニチャに関連するコンテクストデータと同じ又は類似するコンテクストデータに関連付けられる、ステップと、
    前記更なるソフトウェア操作性シグニチャから、通常のソフトウェア動作を示すベースライン操作性シグニチャを生成するステップと
    前記ソフトウェア操作性シグニチャを前記ソフトウェアの前記ベースライン操作性シグニチャと比較して、前記ソフトウェアが前記ベースライン操作性シグニチャと整合して又は前記ベースライン操作性シグニチャと不整合に動作しているかどうかを決定するステップと
    を有するコンピュータ実施の方法。
  2. 前記ソフトウェア操作性シグニチャ及び前記更なるソフトウェア操作性シグニチャは、前記ソフトウェアの同じ又は類似するアクティビティをモニタすることから生成される、
    請求項に記載のコンピュータ実施の方法。
  3. 前記ソフトウェア操作性シグニチャに基づき、前記ソフトウェアが前記ベースライン操作性シグニチャと不整合に動作していると決定するステップと、
    前記ベースライン操作性シグニチャと不整合に動作している前記ソフトウェアが通常のソフトウェア動作に対応すると決定するステップと、
    前記ソフトウェアのために受信された前記ソフトウェア操作性シグニチャに基づき、前記ソフトウェアの新たなベースライン操作性シグニチャを生成するステップと
    を更に有する請求項1に記載のコンピュータ実施の方法。
  4. 前記ソフトウェア操作性シグニチャに基づき、前記ソフトウェアが前記ベースライン操作性シグニチャのコンテクストと不整合に動作していると決定するステップと、
    前記ソフトウェアの動作不具合を決定するよう前記ソフトウェア操作性シグニチャを解析するステップと
    を更に有する請求項1に記載のコンピュータ実施の方法。
  5. 前記ソフトウェア操作性シグニチャと前記ベースライン操作性シグニチャのコンテクストとの比較から、前記ソフトウェアの前記動作不具合の原因を決定するステップと、
    前記ソフトウェアの前記動作不具合を抑制するソリューションを起動するステップと
    を更に有する請求項に記載のコンピュータ実施の方法。
  6. 前記ソフトウェア操作性シグニチャに基づき、前記ソフトウェアが前記ベースライン操作性シグニチャのコンテクストと不整合に動作していると決定するステップと、
    前記ソフトウェアの動作退行を決定するよう前記ソフトウェア操作性シグニチャを解析するステップと
    を更に有する請求項1に記載のコンピュータ実施の方法。
  7. 前記ソフトウェア操作性シグニチャと前記ベースライン操作性シグニチャのコンテクストとの比較から、前記ソフトウェアの前記動作退行の原因を決定するステップと、
    前記ソフトウェアの前記動作退行を抑制するソリューションを起動するステップと
    を更に有する請求項に記載のコンピュータ実施の方法。
  8. コンピュータデバイスから、前記コンピュータデバイスで動作するソフトウェアの操作性を示すソフトウェア操作性シグニチャと、関連するコンテクストデータとを受信するよう構成されるデータ通信インタフェースと、
    更なるコンピュータデバイスから受信される更なるソフトウェア操作性シグニチャをグループ化し、該更なるソフトウェア操作性シグニチャの夫々は、前記更なるコンピュータデバイスで動作する前記ソフトウェアの操作性を示し、当該ソフトウェア操作性シグニチャに関連する前記コンテクストデータと同じ又は類似するコンテクストデータに関連付けられ、
    前記更なるソフトウェア操作性シグニチャから、通常のソフトウェア動作を示すベースライン操作性シグニチャを生成し、
    前記ソフトウェア操作性シグニチャを前記ソフトウェアの前記ベースライン操作性シグニチャと比較して、前記ソフトウェアが前記ベースライン操作性シグニチャに整合して又は前記ベースライン操作性シグニチャと不整合に動作しているかどうかを決定する
    よう構成されるソフトウェア操作性サービスを実施する少なくともメモリ及びプロセッサと
    を有するネットワークシステム
JP2014506397A 2011-04-21 2011-10-10 ソフトウェア操作性サービス Expired - Fee Related JP5840290B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/091,494 US20120272103A1 (en) 2011-04-21 2011-04-21 Software operability service
US13/091,494 2011-04-21
PCT/US2011/055605 WO2012145022A1 (en) 2011-04-21 2011-10-10 Software operability service

Publications (2)

Publication Number Publication Date
JP2014512061A JP2014512061A (ja) 2014-05-19
JP5840290B2 true JP5840290B2 (ja) 2016-01-06

Family

ID=47022210

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014506397A Expired - Fee Related JP5840290B2 (ja) 2011-04-21 2011-10-10 ソフトウェア操作性サービス

Country Status (6)

Country Link
US (1) US20120272103A1 (ja)
EP (1) EP2700011A4 (ja)
JP (1) JP5840290B2 (ja)
KR (1) KR20140020287A (ja)
CN (1) CN103477327B (ja)
WO (1) WO2012145022A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150161236A1 (en) * 2013-12-05 2015-06-11 Lenovo (Singapore) Pte. Ltd. Recording context for conducting searches
US11334338B2 (en) * 2019-01-25 2022-05-17 Vmware, Inc. Operating system update management
US11106520B2 (en) * 2019-04-16 2021-08-31 Dell Products L.L.P. Systems and methods for preventing client application crashes due to operating system updates
US11281519B2 (en) * 2019-07-15 2022-03-22 Microsoft Technology Licensing, Llc Health indicator platform for software regression reduction

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571180B1 (en) * 1997-04-11 2003-05-27 Keystone International Holding Corp. Self-contained steam trap monitor
US7100195B1 (en) * 1999-07-30 2006-08-29 Accenture Llp Managing user information on an e-commerce system
US6718535B1 (en) * 1999-07-30 2004-04-06 Accenture Llp System, method and article of manufacture for an activity framework design in an e-commerce based environment
US6880086B2 (en) * 2000-05-20 2005-04-12 Ciena Corporation Signatures for facilitating hot upgrades of modular software components
WO2003054704A1 (en) * 2001-12-19 2003-07-03 Netuitive Inc. Method and system for analyzing and predicting the behavior of systems
US7703077B2 (en) * 2002-04-30 2010-04-20 Microsoft Corporation Programming model to detect deadlocks in concurrent programs
AU2002341754A1 (en) * 2002-07-05 2004-01-23 Cyberscan Technology, Inc. Secure game download
US8488143B2 (en) * 2002-08-07 2013-07-16 Hewlett-Packard Development Company, L.P. Method and apparatus for detecting printer internet protocol addresses
US7386839B1 (en) * 2002-11-06 2008-06-10 Valery Golender System and method for troubleshooting software configuration problems using application tracing
US7047448B2 (en) * 2002-11-21 2006-05-16 Bitfone Corporation Software self-repair toolkit for electronic devices
US7269824B2 (en) * 2003-02-13 2007-09-11 Path Reliability, Inc. Software behavior pattern recognition and analysis
US8032866B1 (en) * 2003-03-27 2011-10-04 Identify Software Ltd. System and method for troubleshooting runtime software problems using application learning
US7421621B1 (en) * 2003-09-19 2008-09-02 Matador Technologies Corp. Application integration testing
US7574706B2 (en) * 2003-12-15 2009-08-11 Microsoft Corporation System and method for managing and communicating software updates
US7506371B1 (en) * 2004-01-22 2009-03-17 Guardium, Inc. System and methods for adaptive behavior based access control
US20060080656A1 (en) * 2004-10-12 2006-04-13 Microsoft Corporation Methods and instructions for patch management
JP2006146600A (ja) * 2004-11-19 2006-06-08 Ntt Docomo Inc 動作監視サーバ、端末装置及び動作監視システム
US20060209328A1 (en) * 2005-03-15 2006-09-21 Microsoft Corporation Systems and methods that facilitate selective enablement of a device driver feature(s) and/or application(s)
CA2577244A1 (en) * 2005-04-18 2006-10-26 Research In Motion Limited Method and system for controlling software version updates
DE102005018910A1 (de) * 2005-04-22 2006-10-26 Endress + Hauser Gmbh + Co. Kg Verfahren zum Aufrüsten eines mikroprozessorgesteuerten Geräts mit neuem Softwarecode über ein Kommunikationsnetzwerk
US8341605B2 (en) * 2005-12-15 2012-12-25 Ca, Inc. Use of execution flow shape to allow aggregate data reporting with full context in an application manager
US8051163B2 (en) * 2006-05-11 2011-11-01 Computer Associates Think, Inc. Synthetic transactions based on system history and load
US7359819B2 (en) * 2006-07-21 2008-04-15 Microsoft Corporation Evaluation of device driver output
US7865910B2 (en) * 2006-07-28 2011-01-04 Microsoft Corporation Bypassing class drivers through virtual driver enablement
US8055989B2 (en) * 2006-08-08 2011-11-08 Stmicroelectronics, Inc. Boot security using embedded counters
US7954143B2 (en) * 2006-11-13 2011-05-31 At&T Intellectual Property I, Lp Methods, network services, and computer program products for dynamically assigning users to firewall policy groups
US20080184041A1 (en) * 2007-01-31 2008-07-31 Microsoft Corporation Graph-Based Tamper Resistance Modeling For Software Protection
US20080301666A1 (en) * 2007-05-30 2008-12-04 Susan Gordon System for aggregating content data and methods relating to analysis of same
US8543866B2 (en) * 2007-07-20 2013-09-24 Qualcomm Incorporated Remote access diagnostic mechanism for communication devices
US8146061B2 (en) * 2007-12-12 2012-03-27 Via Technologies, Inc. Systems and methods for graphics hardware design debugging and verification
US8219983B1 (en) * 2008-03-31 2012-07-10 Symantec Corporation Systems and methods for providing guidance on the potential impact of application and operating-system changes on a computing system
US20100094861A1 (en) * 2008-10-01 2010-04-15 Henrique Andrade System and method for application session tracking
US7877642B2 (en) * 2008-10-22 2011-01-25 International Business Machines Corporation Automatic software fault diagnosis by exploiting application signatures
US8522085B2 (en) * 2010-01-27 2013-08-27 Tt Government Solutions, Inc. Learning program behavior for anomaly detection
CN101930361B (zh) * 2009-06-26 2013-10-09 中国电信股份有限公司 在线数据存储服务提供方法及系统
US8769296B2 (en) * 2009-10-19 2014-07-01 Uniloc Luxembourg, S.A. Software signature tracking
JP5961638B2 (ja) * 2011-02-17 2016-08-02 ターセーラ, インコーポレイテッド アプリケーション証明のためのシステムおよび方法

Also Published As

Publication number Publication date
EP2700011A4 (en) 2016-03-30
JP2014512061A (ja) 2014-05-19
CN103477327B (zh) 2016-08-10
WO2012145022A1 (en) 2012-10-26
US20120272103A1 (en) 2012-10-25
EP2700011A1 (en) 2014-02-26
CN103477327A (zh) 2013-12-25
KR20140020287A (ko) 2014-02-18

Similar Documents

Publication Publication Date Title
US8225308B2 (en) Managing software lifecycle
JP5182681B2 (ja) プラットフォーム管理システム、プラットフォーム管理方法およびプログラム
KR102268355B1 (ko) 클라우드 배치 기반구조 검증 엔진
US9645815B2 (en) Dynamically recommending changes to an association between an operating system image and an update group
KR101021394B1 (ko) 컴퓨팅 시스템에서 문제의 근본 원인을 프로그램적으로 진단하는 방법 및 컴퓨팅 시스템에서 문제의 근본 원인을 결정하는 방법, 및 컴퓨터 판독가능 저장 매체
US20170046152A1 (en) Firmware update
CN111767184A (zh) 一种故障诊断方法、装置及电子设备和存储介质
US8677194B2 (en) Method and system for site configurable error reporting
US20080052677A1 (en) System and method for mitigating repeated crashes of an application resulting from supplemental code
US20070011507A1 (en) System and method for remote system support
CN102419729B (zh) 并行测试执行
US8719634B2 (en) System health and performance care of computing devices
CN111767066A (zh) 用于现场减轻固件故障的方法和设备
Levy et al. Predictive and Adaptive Failure Mitigation to Avert Production Cloud {VM} Interruptions
CN104137062A (zh) 将代码动态注入到运行中的进程
JP2015510644A (ja) サブ・デバイスの発見および管理
US20170206121A1 (en) Monitoring components in a service framework
JP5840290B2 (ja) ソフトウェア操作性サービス
US10430119B2 (en) Mechanism for multiple coexisting configurations support in virtual tape applications
US20100333066A1 (en) Method and system for managing software issues
US20130080751A1 (en) Method and device for updating bios program for computer system
US11151020B1 (en) Method and system for managing deployment of software application components in a continuous development pipeline
US11630714B2 (en) Automated crash recovery
US7895259B2 (en) Method for preventing use of multiple application instances
WO2010120272A1 (en) System care of computing devices

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140925

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150523

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150616

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150911

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151110

R150 Certificate of patent or registration of utility model

Ref document number: 5840290

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees