(57)【要約】【課題】  実行の不安定のレベルに基づいて、コンピュータプログラムにカスタム製品のサポートを提供する方法および装置を提供すること。【解決手段】  ソフトウェアプログラムの実行を一定時間監視して、プログラムの実行の安定を決定する。監視および１つまたは複数の不安定のしきい値のレベルに基づいて、プログラムの実行の安定を分類する。分類に基づいて、カスタム製品のサポートを、プログラムを実行するコンピュータシステムのユーザに提供することができる。例えば、分類に基づいて、無料または割引された費用の製品サポートを提供することができる。【選択図】  図３
2006107428.tif 000002
【特許請求の範囲】
【請求項１】
プログラム実行の不安定の状態に基づくソフトウェアプログラムのカスタム製品のサポートを提供する方法であって、
前記ソフトウェアプログラムの実行を一定時間監視して、前記プログラムの実行の安定を決定するステップと、
１つまたは複数の不安定のしきい値レベルに基づいて、前記プログラムの実行の安定を分類するステップと、
前記分類に基づいて、前記ソフトウェアプログラムのカスタム製品のサポートを提供するステップと
を備えたことを特徴する方法。
【請求項２】
前記ソフトウェアプログラムの実行を一定時間監視するステップは、前記プログラムが実行される各時間のログに、前記プログラムを識別するデータ、前記プログラムが実行された前記時間の長さ、および前記プログラムの実行が正常終了したか異常終了したかどうかを示すデータを含んだセッションエントリを生成するステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
異常終了がプログラムクラッシュか、プログラムのハングか、またはプログラムの異常終了かを含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記プログラムの実行の安定を決定するステップは、前記ログを分析して、前記プログラムの実行の安定を説明する１つまたは複数の統計を生成するステップを含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記統計は、プログラム実行数毎に前記異常終了数を含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記統計は、プログラム実行の分単位の数毎に前記異常終了数をさらに含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記１つまたは複数の不安定のしきい値レベルに基づいて、前記プログラムの実行の安定を分類するステップは、
１つまたは複数のプログラム実行の不安定のしきい値を識別するデータを含んだ、遠隔制御のファイルを周期的に受信するステップと、
各々の統計を対応するしきい値と比較して、前記プログラム実行の不安定を複数のプログラム実行の不安定の状態のうちの１つに分類するステップと
を含むことを特徴する請求項６に記載の方法。
【請求項８】
前記遠隔制御のファイルは、前記プログラムの１つまたは複数のバージョンについて、プログラム実行の不安定の１つまたは複数のしきい値を識別するデータを含み、および前記プログラムの実行の安定を分類する前に、前記遠隔制御のファイルが前記プログラムのバージョンについてのしきい値を含むかどうかを決定するステップをさらに備えたことを特徴とする請求項７に記載の方法。
【請求項９】
前記ソフトウェアプログラムのカスタム製品のサポートを提供するステップは、前記コンピュータプログラムのユーザを、前記分類に基づく前記ソフトウェアプログラムの無料または割引した費用の製品サポートを有する情報源に向けるステップを含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記ソフトウェアプログラムのカスタム製品のサポートを提供するステップは、前記コンピュータプログラムのユーザを、前記分類に基づいて識別された情報源に向けるステップを含むことを特徴とする請求項８に記載の方法。
【請求項１１】
前記ソフトウェアプログラムのカスタム製品のサポートを提供するステップは、前記分類に基づいて診断プログラムを実行するステップを含むことを特徴とする請求項８に記載の方法。
【請求項１２】
プログラム実行の不安定のしきい値レベルに基づくソフトウェアプログラムのカスタム製品のサポートを提供するシステムであって、
前記ソフトウェアプログラムの１つまたは複数のバージョンについて、プログラム実行の不安定の１つまたは複数のしきい値を識別するデータを含む遠隔制御のファイルを、サーバコンピュータから受信する手段と、
前記ソフトウェアプログラムの実行を一定時間監視して、前記プログラムの実行の安定を決定する手段と、
前記遠隔制御のファイルに含まれた前記プログラム実行の不安定のしきい値に基づいて、前記プログラムの実行の安定を分類する手段と、
前記分類に基づいて、前記ソフトウェアプログラムのカスタム製品のサポートを提供する手段と
を備えるクライアントコンピュータを備えたことを特徴するシステム。
【請求項１３】
前記ソフトウェアプログラムの実行を一定時間監視する手段は、前記クライアントコンピュータにおいて格納される、前記プログラムが実行される各時間のログに、前記プログラムを識別するデータ、前記プログラムが実行された前記時間の長さ、および前記プログラムの実行が正常終了したか異常終了したかどうかを示すデータを含んだセッションエントリを生成する手段を含むことを特徴とする請求項１２に記載のシステム。
【請求項１４】
異常終了がプログラムクラッシュか、プログラムのハングか、またはプログラムの異常終了かを含むことを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記プログラムの実行の安定を決定する手段は、クライアントコンピュータにおいて、前記ログを分析して、前記プログラムの実行の安定を説明する１つまたは複数の統計を生成する手段を含むことを特徴とする請求項１４に記載のシステム。
【請求項１６】
前記統計は、プログラム実行数毎に前記異常終了数を含むことを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記統計は、プログラム実行の分単位の数毎に前記異常終了数をさらに含むことを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記１つまたは複数の不安定のしきい値レベルに基づいて、前記プログラムの実行の安定を分類する手段は、各々の統計を対応するしきい値と比較して、前記プログラム実行の不安定を複数のプログラム実行の不安定の状態のうちの１つに分類する手段を含むことを特徴する請求項１７に記載のシステム。
【請求項１９】
前記ソフトウェアプログラムのカスタム製品のサポートを提供する手段は、ユーザを、前記プログラム実行の不安定に従って、無料または割引した費用の製品サポートを提供する情報源に向ける手段を含むことを特徴とする請求項１８に記載のシステム。
【請求項２０】
前記ソフトウェアプログラムのカスタム製品のサポートを提供する手段は、前記クライアントコンピュータのユーザを、前記プログラム実行の不安定のレベルに基づいて決定された情報源に向ける手段を含むことを特徴とする請求項１８に記載のシステム。
【請求項２１】
前記ソフトウェアプログラムのカスタム製品のサポートを提供する手段は、前記クライアントコンピュータの診断プログラムを実行して、前記プログラムの問題を診断する手段を含むことを特徴とする請求項１８に記載のシステム。
【請求項２２】
コンピュータに格納されたコンピュータ実行可能な命令を有するコンピュータ読取可能な媒体であって、前記コンピュータによって実行されると、
前記ソフトウェアプログラムの実行を一定時間監視して、前記プログラムの実行の安定を決定するステップと、
１つまたは複数の不安定のしきい値レベルに基づいて、前記プログラムの実行の安定を分類するステップと、
前記分類に基づいて、前記ソフトウェアプログラムのカスタム製品のサポートを提供するステップと
を前記コンピュータが行うことを特徴するコンピュータ読取可能な媒体。
【請求項２３】
前記ソフトウェアプログラムの実行を一定時間監視するステップは、前記プログラムが実行される各時間のログに、前記プログラムを識別するデータ、前記プログラムが実行された前記時間の長さ、および前記プログラムの実行が正常終了したか異常終了したかどうかを示すデータを含んだセッションエントリを生成するステップを含むことを特徴とする請求項２２に記載のコンピュータ読取可能な媒体。
【請求項２４】
異常終了がプログラムクラッシュか、プログラムのハングか、またはプログラムの異常終了かを含むことを特徴とする請求項２３に記載のコンピュータ読取可能な媒体。
【請求項２５】
前記プログラムの実行の安定を決定するステップは、前記ログを分析して、前記プログラムの実行の安定を説明する１つまたは複数の統計を生成するステップを含むことを特徴とする請求項２４に記載のコンピュータ読取可能な媒体。
【請求項２６】
前記統計は、プログラム実行数毎に前記異常終了数を含むことを特徴とする請求項２５に記載のコンピュータ読取可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、ソフトウェアプログラムに関し、より詳細には、プログラム実行の不安定の状態に基づくソフトウェアプログラムのカスタム製品のサポートを提供する方法、システムおよび装置に関する。
【背景技術】
【０００２】
ソフトウェアの開発サイクルにおける最も重要な段階のひとつは、ソフトウェア製品が顧客に送られた後に起こるデバッグの段階である。デバッグの段階は重要である。なぜならば、デバッグの段階の間に、ユーザによるソフトウェア製品の実際の体験を利用して、プログラムエラーを分離し、頻繁に使用された特徴か、またはたまに使用された特徴かを識別し、および一般にソフトウェア製品をより良く、より安定させることができる。
【０００３】
リリース後のデバッグの段階における分析の主な焦点は、通常、ほとんど頻繁に起こるプログラムエラー（本明細書では、「バグ」ともいう）を識別することである。ほとんど頻繁に起こるバグを識別し、およびバグを修正することによって、多くのユーザの使用体験を改善することができる。しかし、一般に、先行されたリリース後のデバッグシステムによって向けられていない分析の別のカテゴリがある。この分析の別のカテゴリは、アプリケーションプログラムの実行の間に、ほとんど頻繁に問題に出くわすコンピュータシステムを識別することを含む。これらの問題は、すべてのユーザの間にほとんど頻繁に起こるプログラムエラーを含むことがあるかまたは含むことがない。
【０００４】
統計学は、少数のユーザが問題全体の合計数のうちの高い割合を体験することを示す。そのような問題は、プログラムクラッシュ、プログラムのハング、プログラムの突然終了、および他の種類のプログラムの異常終了を含むことができる。これらの種類の問題を出すアプリケーションプログラムを、一般に、本明細書では「不安定」である、または「プログラム実行の不安定」を有するという。不安定の問題によって、特に、プログラムの使用中に頻繁に問題に出くわすコンピュータユーザを失望させる傾向がある。
【０００５】
【特許文献１】米国特許出願第１０／３０２，２８２号明細書、”Method and System for Remotely Controlling the Reporting of Events Occurring within a Computer System”
【特許文献２】米国特許出願第１０／３０５，２１５号明細書、”Queued Mode Transmission of Event Reports”
【発明の開示】
【発明が解決しようとする課題】
【０００６】
先行されたリリース後のデバックシステムは、最も高い頻度のプログラム実行の不安定を有するコンピュータシステムを識別する方法を提供せず、結果として、ユーザ体験の問題を援助する、ソフトウェア開発者向けの仕組みを提供しない。したがって、高い頻度のプログラム実行の不安定を有するコンピュータシステムを識別し、および、そのようなコンピュータシステムのユーザにカスタム製品のサポートを提供する方法、システム、および装置が必要である。
【０００７】
これらのおよび他の考慮すべき事柄に関して、本発明の種々の実施形態を作成している。
【課題を解決するための手段】
【０００８】
本発明の実施形態に従って、上述のおよび他の問題を、実行の不安定の状態に基づくコンピュータプログラムのカスタム製品のサポートを提供する方法および装置によって解決する。プログラム実行の不安定の異なるレベルを有するコンピュータシステムを識別することによって、カスタム製品のサポートを高い頻度のプログラム実行エラーを有するユーザに提供することができる。カスタム製品のサポートの提供が、しきい値に基づいてプログラムの不安定の状態に分類することに基づくので、しきい値を調整して、異なる数のユーザにカスタム製品のサポートを提供することができる。
【０００９】
本発明のひとつの態様に従って、方法によって、プログラム実行の不安定の状態に基づくソフトウェアプログラムのカスタム製品のサポートを提供することを与える。方法に従って、ソフトウェアプログラムの実行を一定時間監視して、プログラムの実行の安定を決定する。監視および１つまたは複数の不安定のしきい値レベルに基づいて、プログラムの実行の安定を状態に分類する。例えば、プログラムの安定を、「良い」、「悪い」または「非常に悪い」として分類することができる。分類に基づいて、カスタムプログラムのサポートを、プログラムが実行されるコンピュータシステムのユーザに提供することができる。例えば、分類に基づいて、無料または割引した費用の製品サポートを提供することができる。あるいはまた、コンピュータのユーザを、状態に基づいて決定された、ウェブページ等の情報源に向けることができる。同様に、診断プログラムを実行して、分類に基づくコンピュータシステムおよびアプリケーションプログラムの問題を識別し、および修正することができる。
【００１０】
方法の態様に従って、ソフトウェアプログラムの実行を一定時間監視することを、プログラムが実行される各時間のログにおいて、セッションエントリを生成することによって実行することができる。セッションエントリは、プログラムを識別するデータ、プログラムが実行される時間の長さ、およびプログラムが正常終了したか、異常終了したかどうかを示すデータを含む。異常終了は、プログラムクラッシュ、（プログラムが実行を継続するが、しかしユーザには無応答に見える）プログラムのハング、または（プログラムの実行中にコンピュータから電源がはずされた場合等の）あらゆる他の種類の異常終了を含むことができる。
【００１１】
プログラムの実行の安定を、ログの分析に基づいて決定することができる。特に、プログラムの実行の安定を説明する、１つまたは複数の統計を生成することができる。例えば、プログラム実行数毎に異常終了数を計算することができる。同様に、プログラム実行の分単位の数毎に異常終了数を計算することができる。他の種類の統計もまた生成することができる。
【００１２】
プログラムの実行の安定を状態に分類するために、１つまたは複数の不安定のしきい値レベルを利用することができる。しきい値の値を、コンピュータシステムに格納することができ、および遠隔制御のファイルにおいてサーバコンピュータから周期的に更新することができる。しきい値の値は、プログラム実行の安定を分類するのに利用すべきである値を定義する。しきい値の値を統計と比較して、プログラムの安定を１つまたは複数のプログラム実行の不安定の状態に分類する。しきい値を、異なるバージョンのプログラムについて、遠隔制御のファイルにおいて提供することができる。遠隔制御のファイルの内容を、周期的に修正して、しきい値の値を変更することができる。
【００１３】
本発明を、コンピュータ処理、コンピュータ処理装置もしくはシステムとして、またはコンピュータプログラム製品もしくはコンピュータ読取可能な媒体等の製造の物品として実装することができる。コンピュータプログラム製品は、コンピュータシステムよって読取可能なコンピュータ記憶媒体であり、およびコンピュータ処理を実行するコンピュータプログラムの命令をエンコードされていることができる。また、コンピュータプログラム製品は、コンピュータ処理システムによって読取可能な搬送波上の伝播された信号であり、およびコンピュータ処理を実行するコンピュータプログラムの命令をエンコードされていることができる。
【００１４】
本発明の実施形態を特徴付ける、これらおよび他の種々の特徴は、利点も同様に、以下の詳細な説明を読み、添付の図面を参照することにより、明らかになるであろう。
【発明を実施するための最良の形態】
【００１５】
次に図面を参照して、同一の参照符号が同一の要素を表し、本発明の種々の態様を説明するものである。特に、図１および対応する説明は、本発明の実施形態を実装することができる適切なコンピュータ処理環境の簡潔な全体的な説明を提供する。本発明を、パーソナルコンピュータのオペレーティングシステム上で実行されるプログラムモジュールと結合して実行されるプログラムモジュールの一般的な文脈において説明するものである一方、当事業者は、本発明がコンピュータシステムおよびプログラムモジュールの他の種類と結合して実装することもできることを承知するであろう。
【００１６】
一般に、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造体、および特定のタスクを実行するまたは特定の抽象データ型を実装する他の構造体型を含む。さらに、当事業者は、本発明を、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサに基づくまたはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータ等を含む、他のコンピュータシステム構成で実践することができることを理解するであろう。本発明を、通信ネットワークを介して連結された遠隔処理装置によってタスクが実行される、分散コンピュータ処理環境において実践することもできる。分散コンピュータ処理環境において、プログラムモジュールを、構内と遠隔との両方のメモリ記憶装置に置くことができる。次に図面を参照して、いくつかの図面を通じて同一の参照符号が同一の要素を表し、本発明の態様および例示的オペレーティング環境を説明するものである。
【００１７】
図１は、本発明の種々の実施形態に関する例示的オペレーティング環境を示す。図１に示すように、クライアントコンピュータ２を本発明の種々の実施形態において利用する。クライアントコンピュータは、１つまたは複数のプログラムモジュールに使用することができる標準的なデスクトップまたはサーバコンピュータを含む。クライアントコンピュータ２は、アプリケーションプログラムの実行を監視しおよびプログラムの実行の安定を決定するプログラムモジュールをも装備する。クライアントコンピュータ２は、１つまたは複数のしきい値の値に基づくプログラムの安定を分類しおよび分類に基づくアプリケーションのカスタム製品のサポートを提供する処理がある。
【００１８】
クライアントコンピュータ２においてプログラム実行の安定を分類するために、クライアントコンピュータ２は、ソフトウェアプログラムの開発者によって操作されたエラー報告サーバからの遠隔制御のファイルを周期的に受信する処理がある。エラー報告サーバコンピュータ１０は、ＬＡＮまたはインターネット８を介して維持されおよびアクセスされる従来技術のサーバコンピュータを含む。エラー報告サーバコンピュータ１０を、関与するアプリケーションプログラムの開発者が操作する。遠隔制御のファイルの内容および使用に関する追加の詳細を、以下の図２〜７に関して提供するものである。製品サポートサーバコンピュータ６を開発者が操作して、カスタム製品のサポートを提供することもできる。例えば、製品サポートサーバは、プログラムの不安定のレベルに基づくウェブページまたは他の情報をユーザ体験に提供することができる。
【００１９】
次に、図２を参照して、本発明の種々の実施形態を利用するクライアントコンピュータ２の例示的コンピュータアーキテクチャを説明するものである。図２に示すコンピュータアーキテクチャは、中央処理ユニット５（「ＣＰＵ」）、ランダムアクセスメモリ９（「ＲＡＭ」）および読み出し専用記憶装置（「ＲＯＭ」）１１を含むシステムメモリ７、ならびにメモリとＣＰＵ５とを連結するシステムバス１２を含む、従来技術のデスクトップまたはラップトップコンピュータを例示する。起動中などの、コンピュータ内の要素間の情報転送に援助する基本ルーチンを含む基本入出力システムをＲＯＭ１１に格納する。コンピュータ２は、以下により詳細に説明する、オペレーティングシステム１６、アプリケーションプログラム１８、および他のプログラムモジュールを格納する大容量記憶装置１４をさらに含む。
【００２０】
大容量記憶装置１４を、バス１２に接続される大容量記憶コントローラ（図示せず）を介してＣＰＵ５に接続する。大容量記憶装置１４および関連付けられたコンピュータ読取可能な媒体は、コンピュータ２に不揮発性の記憶装置を提供する。本明細書において含まれるコンピュータ読取可能な媒体には、ハードディスクまたはＣＤ−ＲＯＭドライブなどの大容量記憶装置を引用するが、当事業者は、コンピュータ読取可能な媒体がコンピュータ２によってアクセスできるあらゆる利用可能な媒体とすることができることを理解するであろう。
【００２１】
例として、限定はしないが、コンピュータ読取可能な媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ読取可能な命令、データ構造体、プログラムモジュールまたは他のデータなどの情報の記憶についてのあらゆる方法または技術において実装された、揮発性および不揮発性、取外し可能および固定の媒体を含むことができる。コンピュータ記憶媒体は、限定はしないが、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他の固体素子のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（「ＤＶＤ」）、または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または所望の情報を格納するのに使用することができおよびコンピュータ２によってアクセスすることができるあらゆる他の媒体を含む。
【００２２】
本発明の種々の実施形態に従って、コンピュータ２を、インターネットなどのネットワーク８を介したリモートコンピュータとの論理接続を使用する、ネットワーク化された環境において操作することができる。クライアントコンピュータ２を、バス１２に接続されたネットワークインターフェースユニット２０を介してネットワーク８に接続することができる。ネットワークインターフェースユニット２０を利用して、他の種類のネットワークおよびリモートコンピュータシステムに接続することもできることを理解するであろう。コンピュータ２は、キーボード、マウス、または電子的なスタイラス（図１に示さず）を含む、多くの他の装置からの入力を受信しおよび処理する入出力制御装置２２を含むこともできる。
【００２３】
簡潔に上述したように、米国ワシントン州レドモンドのマイクロソフトコーポレーションからのオペレーティングシステムのウィンドウズ（登録商標）ＸＰなど、ネットワーク化されたパーソナルコンピュータの処理を制御するのに適したオペレーティングシステム１６を含む、多くのプログラムモジュールおよびデータファイルを、コンピュータ２の大容量記憶装置１４およびＲＡＭ９において格納することができる。大容量記憶装置１４およびＲＡＭ９は、１つまたは複数のプログラムモジュールを格納することもできる。特に、大容量記憶装置１４およびＲＡＭ９は、１つまたは複数のアプリケーションプログラム１８の実行の安定を監視しおよび、プログラムが所定の設定可能なしきい値を越えて不安定になる場合に、アプリケーションプログラム１８にカスタム製品のサポートを提供するアプリケーション安定監視のプログラム２４を格納することができる。アプリケーション安定監視２４を、クライアントコンピュータ２内のプログラム実行の例外を捕らえおよび処理する処理がある、例外処理３２の実行に応答して実行することができる。アプリケーション安定監視２４を、クライアントコンピュータ２のユーザによって手動で実行することもできる。
【００２４】
アプリケーションプログラム１８の安定を監視するために、アプリケーション安定監視２４は、イベントサービス２６のサービスを利用する。イベントサービス２６は、クライアントコンピュータ２で起こるイベントのログ記録を行うために、オペレーティングシステム２６によって、イベントログ２８が容易に提供される。例えば、イベントサービス２６は、セキュリティに関連したイベント（例えば、認証されないログイン試行）、システムに関連したイベント（例えば、ディスクドライブの障害検出）、およびアプリケーションに関連したイベントのログ記録を行うことができる。以下に、より詳細に説明するように、アプリケーションプログラム１８の実行および障害に関するイベントは、イベントログ２８に記録される。特に、セッションエントリを、アプリケーションプログラムが実行される各時間のイベントログ２８において、生成することができる。セッションエントリは、プログラムを識別するデータ、プログラムが実行される時間の長さ、およびプログラムが正常終了したか異常終了したかどうかを示すデータを含む。異常終了は、プログラムクラッシュ、（プログラムが実行を継続するが、しかしユーザには無応答に見える）プログラムのハング、または（プログラムの実行中にコンピュータから電源がはずされた場合等の）あらゆる他の種類の異常終了を含むことがある。
【００２５】
以下に、より詳細に説明するように、イベントログ２８は、周期的に構文解析され、およびアプリケーションプログラム１８の安定を説明する、生成された統計とすることができる。統計は、プログラム実行数毎の異常終了数や、プログラム実行の分単位の数毎に異常終了数を計算することができ、またはアプリケーションプログラム１８の安定を示す他の種類の統計を含むことができる。
【００２６】
統計が生成されると、プログラムの実行の安定を、統計および遠隔制御のファイル３６に格納された１つまたは複数のしきい値の値に基づいて、状態に分類することができる。しきい値の値は、プログラムの安定の種々のレベルを定義する。例えば、プログラムモジュールの実行を「良い」、「悪い」、または「非常に悪い」として分類する、しきい値の値を定義することができる。本発明の一実施形態に従って、「良い」のしきい値は、アプリケーションプログラムが十分安定であり、取るべき行動がないことを示す。「悪い」のしきい値は、アプリケーションプログラムが少々不安定であるが、ユーザに無料または割引した費用の製品サポートの提供を保証するのに足りる程度の不安定ではないことを示す。ユーザを、診断または他の情報に向けることができる。「非常に悪い」のしきい値は、アプリケーションの安定が少ないので、無料または割引した費用の製品サポートを保証することを示す。３つより多いしきい値を定義し、およびこれらのしきい値の定義をソフトウェア製品およびソフトウェア製品の開発者に従って変更することができることを、理解すべきであろう。アプリケーションプログラムの実行の監視およびカスタムサポートの提供を、アプリケーション毎にアプリケーションプログラムの開発者によって可能とすることができる。
【００２７】
遠隔制御のファイル３６の内容を、周期的に更新し、およびエラー報告サーバコンピュータ１０からクライアントコンピュータ２に送信することができる。遠隔制御のファイル３６は、しきい値が利用されないであろう後の時間を定義する、各々のしきい値の有効期限を格納することもできる。遠隔制御のファイル３６は、しきい値の各々に対するアプリケーションのバージョン数を格納することもできる。アプリケーションのバージョン数が異なるしきい値を許容して、クライアントコンピュータ２においてインストールされ使用中のアプリケーションプログラムの異なるバージョンを割り当てる。遠隔制御のファイル３６は他のデータを格納することができ、および追加の方法でクライアントコンピュータ２の操作を制御するのに遠隔制御のファイル３６を利用することができることを理解すべきであろう。遠隔制御のファイルの内容および使用に関するより多くの情報を、共同出願中の特許文献１に見つけることができ、および本明細書において参照によって明白に組み入れる。
【００２８】
割り当てられたしきい値に基づいて、カスタムプログラムのサポートを、アプリケーション安定監視２４によってプログラムを実行するコンピュータシステムのユーザに提供することができる。例えば、分類に基づいて、ユーザを分類に基づいて決定されたウェブページなどの情報源に向けることができる。同様にして、診断のプログラム３４を実行して、コンピュータシステムおよび分類に基づくアプリケーションプログラムの問題を識別し修正することができる。
【００２９】
本発明の実施形態に従って、オペレーティングシステム１６は、レジストリ３０にデータを格納する処理がある。レジストリ３０は、１つまたは複数のユーザ、アプリケーションおよびハードウェア装置に対して、クライアントコンピュータ２を構成するために必要な情報を格納するのに利用される中心的な階層型データベースである。例えば、レジストリ３０は、診断３４によってクライアントコンピュータのソフトウェアコンポーネントに施された修正の最新の時間を識別する、「最終修正時間」のレジストリキーを格納する処理がある。レジストリ３０は、さらに、アプリケーション安定監視２４との現在のユーザの前の相互通信を識別する、「診断状態」のレジストリキーを格納する処理がある。診断状態のレジストリキーに適している値は、ユーザがアプリケーション安定監視２４を以前に利用していない「新しい」、診断３４が以前に実行されおよび変更がクライアントコンピュータ２に施された「変更された」、診断３４が実行されおよび不安定が生じている問題がアプリケーションプログラム１８の外部（例えば、ハードウェア障害など）であることを決定した「識別された」、ならびに診断３４が実行されおよびユーザが製品サポートスペシャリスト（「ＰＳＳ」）の形式の顧客サポートに向けられた「救援された」である。以下に、より詳細に説明するように、「診断状態」のレジストリキーの値を利用して、新しく出くわした問題をユーザがどう処理すべきかを決定する。イベントログ２８の生成、例外処理３２の処理、アプリケーション安定監視２４の処理に関する追加の詳細を、以下に、図３〜７に関してより詳細に提供する。
【００３０】
次に、図３を参照して、イベントログ２８の記録の生成が実行された処理を例示する、例示的ルーチン３００を説明するものである。本明細書において提示されるルーチンの説明を読むと、本発明の種々の実施形態の論理的な処理を、（１）コンピュータ処理システムで実行する、コンピュータに実装された動作またはプログラムモジュールの連続として、および／または（２）コンピュータ処理システムの内部に内部接続されたコンピュータ論理回路または回路モジュールとして、実装することを理解すべきであろう。実装は、本発明を実装するコンピュータ処理システムの実行要件に依存する選択の問題である。したがって、図３〜７に例示され、および本発明の実施形態を構成する論理的な処理を、処理、構造装置、動作またはモジュールと様々にいう。当事業者は、これらの処理、構造装置、動作またはモジュールを、本明細書の外部にある特許請求の範囲内で説明する、本発明の精神および範囲から逸脱することなく、ソフトウェアにおいて、ファームウェアにおいて、専用のデジタル論理回路において、およびこれらの結合で実装することができることを理解するであろう。
【００３１】
ルーチン３００は、処理３０２において開始する。処理３０２では、アプリケーションプログラム１８のうちのひとつが開始されたかどうかに関して、イベントサービス２６によって決定を行う。アプリケーションプログラムが開始されていない場合、ルーチン３００は、決定処理３０２に戻り、別の決定を行う。アプリケーションプログラムが開始された場合、ルーチン３００は、処理３０６に進む。処理３０６では、アプリケーションが開始された時刻をメモリに格納する。
【００３２】
処理３０６から、ルーチン３００は、処理３０８に進む。処理３０８では、イベントサービス２６によって、アプリケーションプログラムが、ユーザ要求に応答してなど、正常終了したかどうかを決定する。アプリケーションプログラムが正常終了した場合、ルーチン３００は処理３１０に分岐する。処理３１０では、アプリケーションが正常終了したことを示すデータをメモリに格納する。ルーチン３００は、処理３１２に進む。処理３１２では、アプリケーションがセッション中に実行された時間の長さをメモリに記録する。ルーチン３００は、処理３１２から処理３０４に進む。処理３０４では、新しいエントリを、現在のアプリケーションセッション（「セッションエントリ」）に対して、イベントログ２８において生成する。プログラムの実行に関する、メモリに記録されたデータを、セッションエントリに格納する。これらの処理を、例外処理内で実行することができる。処理３０４から、ルーチン３００は処理３２０に進む。処理３２０では、ルーチン３００を終了する。
【００３３】
処理３０８において、イベントサービス２６によって、アプリケーションプログラムが実行を正常に終了しなかったと決定した場合、ルーチン３００は、処理３０８から処理３１４に進む。決定処理３１４では、アプリケーションプログラムがハングしたかどうかに関しての決定を行う。ハングしたアプリケーションは、実行しているように見えるが、ユーザ入力に応答しないアプリケーションである。プログラムがハングしたかどうかに関しての決定は、オペレーティングである可能性がある、または別のプログラムによる可能性があることを理解すべきであろう。アプリケーションがハングしたように見える場合、ルーチン３００は処理３１４から決定処理３２２に進む。決定処理３２２では、アプリケーションプログラムがクラッシュしたかどうかに関しての決定を行う。プログラムクラッシュは、正常に実行するプログラムの障害をいい、結果としてプログラムの処理が停止する。処理３２２においてクラッシュを検出する場合、ルーチン３００は、処理３１６に分岐する。クラッシュを検出しない場合、ルーチン３００は、処理３２０に進む。処理３２０では、ルーチン３００を終了する。プログラムクラッシュの場合、オペレーティングシステムは、クラッシュしたアプリケーションプログラムを強行して、自動的にシャットダウンすることができることを理解すべきであろう。ハングしたプログラムの場合、ユーザに対して、プログラムがハングしたことを気づかせおよびプログラムを再起動させる準備ができる。
【００３４】
処理３１６において、適切に、セッションが、クラッシュで終了したかハングで終了したかどうかを示すデータをメモリに書き込む。ルーチン３００は、処理３１８に進む。処理３１８では、クラッシュまたはハングの前にアプリケーションが実行された時間の長さをメモリに格納する。ルーチン３００は、処理３１８から処理３１９に進む。処理３１９では、オペレーティングシステムによって例外を処理する。例外処理３２の処理の態様に関する詳細を、以下に、図５に関して提供する。ルーチン３００は、処理３０４に進む。処理３０４では、新しいエントリを、現在のアプリケーションセッションに対して、イベントログ２８において生成する。プログラムの実行に関する、メモリに記録されたデータを、セッションエントリに格納する。処理３１９から、ルーチン３００は処理３２０に進む。処理３２０では、ルーチン３００を終了する。
【００３５】
次に、図４を参照して、イベントログにおけるセッションエントリを完了するルーチン４００の詳細を提供するものである。本発明の実施形態に従って、ルーチン４００を、イベントログ２８における、完了していないことがあるセッションエントリを完了することを始動中のクライアントコンピュータ２で実行する。例えば、アプリケーションが実行中に電源がコンピュータ２からはずされる場合、クラッシュするとクラッシュがオペレーティングシステム１６に起こる場合、または終了の種類およびセッション長をイベントログ２８に書き込むことができない他の環境の下で、未完了のセッションエントリが生じる傾向がある。
【００３６】
ルーチン４００は、処理４０２において開始する。処理４０２では、先行のセッションエントリが完了したかどうかに関しての決定を行う。セッションエントリが完了の場合、さらにセッションエントリの処理を実行する必要はない。したがって、セッションエントリが完了の場合、ルーチン４００は、処理４０２から処理４１２に分岐する。処理４１２では、ルーチン４００を終了する。セッションエントリが完了していない場合、ルーチン４００は、処理４０６に進む。処理４０６では、セッションエントリにおいて、アプリケーションプログラムが異常終了したことの表示を行う。ルーチン４００は、処理４１２に進む。処理４１２では、ルーチン４００を終了する。
【００３７】
次に、図５を参照して、例外処理３２の処理に関する追加の詳細を説明するものである。簡潔に上述したように、例外処理３２は、アプリケーションプログラムの異常終了の次に呼び出される。例外処理３２は、例外を捕らえおよび処理するために、図５に示す関数よりも多くの関数を実行することを理解すべきであろう。例外処理によって実行され、アプリケーション安定監視２４の処理の説明に関係のあるこれらの関数のみを図５に示し、および本明細書において説明する。
【００３８】
ルーチン５００は、処理５０２において開始する。処理５０２では、クライアントコンピュータ２において実装されたポリシーまたはユーザが報告に煩わされたくないことを示すレジストリエントリによって、アプリケーション安定監視２４の実行を防止するかどうかに関しての決定を行う。防止する場合は、ルーチン５００は、処理５１２に分岐する。処理５１２では、ルーチン５００を終了する。防止しない場合は、ルーチン５００は、処理５０４に進む。処理５０４では、ユーザインターフェース（「ＵＩ」）のペスタスロットル（ｐｅｓｔｅｒ  ｔｈｒｏｔｔｌｅ）によって、アプリケーション安定監視２４の実行を防止するかどうかに関しての決定を行う。ＵＩペスタスロットルは、ユーザが過度に頻繁にアプリケーション安定監視を行うことに関係するＵＩによって煩わされることを防止する。ＵＩペスタスロットルがアプリケーション安定監視２４の実行を閉塞する場合、ルーチン５００は処理５１２に進む。処理５１２では、ルーチン５００を終了する。閉塞しない場合、ルーチン５００は、処理５０６に進む。処理５０６では、監査（ａｕｄｉｔ）ペスタスロットルによって、アプリケーション安定監視２４の実行を閉塞するかどうかに関しての決定を行う。監査ペスタスロットルは、アプリケーション安定監視２４に、過度に頻繁に実行させずおよびクライアントコンピュータ２の実行への影響を与えさせない。監査ペスタスロットルによってアプリケーション安定監視２４の実行を閉塞する場合、ルーチン５００は処理５１２に進む。処理５１２では、ルーチン５００を終了する。閉塞しない場合、ルーチン５００は、処理５０６から処理５０８に進む。ＵＩペスタスロットルおよび監査ペスタスロットルに関する追加の詳細を、共同出願中の特許文献２に見つけることができ、および本明細書において参照によって明白に組み入れる。
【００３９】
次に、図６を参照して、アプリケーション安定監視２４に関する追加の詳細を提供するものである。特に、アプリケーション安定監視２４の実行について、ルーチン６００を説明するものである。ルーチン６００は、処理６０２において開始する。処理６０２では、イベントログ２８の分析を実行する。イベントログ２８を分析して、アプリケーションプログラムの安定を安定の状態に分類する。上述したように、本発明の一実施形態に従って、安定を「良い」、「悪い」、または「非常に悪い」として分類することができる。イベントログの分析を実行する例示的ルーチン７００を、以下に、図７に関して説明する。
【００４０】
処理６０２から、ルーチン６００は処理６０４に進む。処理６０４では、アプリケーションプログラムの安定が、イベントログの分析によって「良い」として分類されたかどうかに関しての決定を行う。アプリケーションプログラムの安定が「良い」の場合、ルーチン６００は処理６０６に分岐する。処理６０６では、アプリケーション安定監視２４がユーザによって手動で開始されたかどうかに関しての決定を行う。アプリケーション安定監視２４がユーザによって手動で開始されない場合、ルーチン６００は処理６２０に進む。処理６２０では、ルーチン６００を終了する。アプリケーション安定監視２４がユーザによって手動で開始された場合、ルーチン６００は処理６０６から処理６０８に進む。プログラムの安定が「良い」場合でもユーザが手動でプログラムを開始すると、ユーザはアプリケーション安定監視２４と互いに通信することができる。
【００４１】
処理６０４において、アプリケーションプログラムの安定が、イベントログの分析によって「悪い」または「非常に悪い」として分類されたことを決定する場合、ルーチン６００は、処理６０４から処理６０８に進む。処理６０８では、ルーチン６００は、上述した診断状態のレジストリキーの現在の値によって定義されるように、アプリケーション安定監視とのユーザプレビューによる双方向通信に基づいて、処理６１０、６１２、６１４か６１８に分岐する。診断状態のレジストリキー値が「新しい」の場合、ルーチン６００は処理６１０に分岐する。「新しい」は、ユーザがアプリケーション安定監視２４を以前に利用していないことを意味する。したがって、ダイアログボックスによって、ユーザに診断３４の実行を示すことができる。診断の結果しだいで、診断状態のレジストリキーの値を
「救援された」、「変更された」、または「識別された」に設定することができる。
【００４２】
診断状態のレジストリキーの値が「診断は変更された」である場合、ルーチン６００は処理６０８から処理６１２に進む。「診断は変更された」は、診断が以前に実行され、およびアプリケーションプログラムの安定を改善する試みで、変更がアプリケーションプログラムに施されたことを示す。この点において、ユーザを、製品に対して、無料または割引した費用の製品サポートに向けることができる。選択された方向しだいで、診断状態のレジストリキーの値を「救援された」、「変更された」、または「識別された」に設定することができる。
【００４３】
診断状態のレジストリキーの値が「診断は外部」である場合、ルーチン６００は処理６１４に分岐する。「診断は外部」は、診断３４が以前に実行され、および問題がアプリケーションプログラム以外で検出されたことを示す。この場合、ユーザは、ユーザインターフェースの通知に煩わされない。
【００４４】
診断状態のレジストリキーの値が「救援された」である場合、ルーチン６００は処理６１８に分岐する。「救援された」は、ユーザに、割引した費用または無料の製品サポートの情報が以前に提供されていることを示す。ユーザに、再びこの情報を与えることができる。例えば、ユーザを、製品サポートを取得することができる製品サポートのウェブサイトに向けることができる。処理６１０、６１２、６１４および６１８から、ルーチン６００は処理６２０に進む。処理６２０では、ルーチン６００を終了する。
【００４５】
次に、図７に向けると、イベントログ２８の分析について、ルーチン７００を説明するものである。ルーチン７００は、処理７０２において開始する。処理７０２では、利用するしきい値のバージョンがどれかに関しての決定を行う。上述したように、しきい値の値に、クライアントコンピュータ２のアプリケーションプログラムのバージョンに対応するバージョン数を割り当てることができる。これによって、異なるしきい値を、同一のアプリケーションプログラムの異なるバージョンに割り当てることができる。使用するしきい値のバージョンを、分析が実行されるべきアプリケーションプログラムのバージョンに基づいて決定することができる。
【００４６】
アプリケーションプログラムのバージョン数が識別されると、ルーチン７００は処理７０４に進む。処理７０４では、しきい値の値が、アプリケーションプログラムのバージョンについて、遠隔制御のファイル３６に示されたかどうかに関しての決定を行う。バージョンについてしきい値が存在しない場合、ルーチン７００は処理７２２に分岐する。処理７２２では、「良い」のしきい値の値を戻す。しかし、適したしきい値の値が存在すれば、ルーチン７００は処理７０６に進む。
【００４７】
処理７０６では、セッションの分析において利用されるべきイベントログのエントリの適した時間周期を決定する。時間周期は、現在の時刻と、アプリケーションプログラムに適用された修正の最終時刻との間の一定時間を含むことができる。あるいはまた、修正が施されていない場合、時間周期は、現在の時刻と好ましい時間の枠との間の時間周期（例えば、３０日間）を含むことができる。この方法において、分析で考慮されるログエントリの領域を制限することができる。
【００４８】
処理７０６から、ルーチン７００は処理７０８に進む。処理７０８では、セッションの統計的に重要な最小数が、計算された時間周期についてイベントログ２８において示されるかどうかに関しての決定を行う。セッションの必要な最小数が存在する場合、ルーチン７００は処理７０８から処理７１０に進む。
【００４９】
処理７１０では、時間周期について、およびアプリケーションプログラムの安定を説明する特定のアプリケーションプログラムについて、統計数を、イベントログ２８の内容に基づいて生成する。例えば、統計を、プログラム実行数毎にプログラムの異常終了数に基づいて生成することができる。別の統計を、プログラム実行の分単位の数毎に異常終了数に基づいて生成することができる。アプリケーションプログラムの安定を示す他の種類の統計もまた、時間周期の間のイベントログ２８の内容に基づいて生成することができる。所定の統計を個々のアプリケーションについて生成することができること、および他の統計を、アプリケーションの組になったソフトウェアなど、アプリケーションのグループについて生成することができることを理解すべきであろう。
【００５０】
統計が生成されていると、統計を、遠隔制御のファイル３６に含まれるしきい値の値と比較する。比較に基づいて、アプリケーションプログラムの安定を、「良い」、「悪い」、または「非常に悪い」として分類することができる。アプリケーションプログラムの安定が分類されていると、ルーチン７００は、処理７１２に進む。処理７１２では、プログラムの安定が非常に悪いとして分類されているかどうかに関しての決定を行う。安定が非常に悪いとして分類されていない場合、ルーチン７００は、処理７１４に分岐する。処理７１４では、安定が悪いとして分類されているかどうかに関しての決定を行う。安定が悪いとして分類されている場合、ルーチン７００は処理７２０に進む。処理７２０では、「悪い」のしきい値を戻す。安定が悪いとして分類されていない場合、ルーチン７００は処理７２２に分岐する。処理７２２では、「良い」のしきい値を戻す。
【００５１】
処理７１２において、しきい値が「非常に悪い」として分類されていることを決定する場合、ルーチン７００は、処理７１６に進む。処理７１６において、しきい値の値についての期限が切れているかどうかに関しての決定を行う。簡潔に上述したように、しきい値は有効期限を含むことができる。しきい値の値についての期限が切れている場合、ルーチン７００は、処理７２０に進む。処理７２０では、「悪い」のしきい値を戻す。期限が切れていない場合、ルーチン７００は、処理７１８に進む。処理７１８では、「非常に悪い」のしきい値を戻す。
【００５２】
上述に基づいて、本発明の種々の実施形態は、実行の不安定のレベルに基づくコンピュータプログラムのカスタム製品のサポートを提供する方法、システム、装置およびコンピュータ読取可能な媒体を含むことを理解すべきであろう。上述の明細書、例およびデータは、本発明からなる、製品の完全な説明および構成の使用を提供する。本発明の精神および範囲から分離することなく、本発明の多くの実施形態を作成することができるので、本発明は、本明細書に添えた特許請求の範囲に属する。
【図面の簡単な説明】
【００５３】
【図１】本発明の様々な態様を例示するために利用されたコンピュータネットワークの態様を例示するネットワークの図である。
【図２】本発明の様々な実施形態によって利用されおよび提供されるコンピュータシステムを例示するコンピュータシステムのアーキテクチャの図である。
【図３】本発明の様々な実施形態によって提供されおよび利用される処理を例示するフロー図である。
【図４】本発明の様々な実施形態によって提供されおよび利用される処理を例示するフロー図である。
【図５】本発明の様々な実施形態によって提供されおよび利用される処理を例示するフロー図である。
【図６】本発明の様々な実施形態によって提供されおよび利用される処理を例示するフロー図である。
【図７】本発明の様々な実施形態によって提供されおよび利用される処理を例示するフロー図である。
【図１】
2006107428.tif 000003
【図２】
2006107428.tif 000004
【図３】
2006107428.tif 000005
【図４】
2006107428.tif 000006
【図５】
2006107428.tif 000007
【図６】
2006107428.tif 000008
【図７】
2006107428.tif 000009
【外国語明細書】
2006107428000001.pdf