JP2008537222A - ソフトウェアプログラムに関するパフォーマンス分析の方法と装置 - Google Patents

ソフトウェアプログラムに関するパフォーマンス分析の方法と装置 Download PDF

Info

Publication number
JP2008537222A
JP2008537222A JP2008506502A JP2008506502A JP2008537222A JP 2008537222 A JP2008537222 A JP 2008537222A JP 2008506502 A JP2008506502 A JP 2008506502A JP 2008506502 A JP2008506502 A JP 2008506502A JP 2008537222 A JP2008537222 A JP 2008537222A
Authority
JP
Japan
Prior art keywords
thread
threads
software program
area
event
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.)
Granted
Application number
JP2008506502A
Other languages
English (en)
Other versions
JP5021623B2 (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 JP2008537222A publication Critical patent/JP2008537222A/ja
Application granted granted Critical
Publication of JP5021623B2 publication Critical patent/JP5021623B2/ja
Active 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/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • 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
    • G06F11/3409Recording 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 for performance assessment
    • G06F11/3419Recording 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 for performance assessment by assessing time
    • G06F11/3423Recording 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 for performance assessment by assessing time where the assessed time is active or idle time
    • 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
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

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

Abstract

ソフトウェアに関するパフォーマンステスト情報を表示するシステムが開示されている。本システムは、パフォーマンス上の問題とその原因の即時特定を可能にするフォーマットで情報を表示するグラフィカルユーザインタフェースを具備している。このインタフェースは、テスト対象プログラムの実行期間にアクティビティレベルを示す時系列ビュー(timeline view)を含んでいる。プログラム実行期間における時間のサブレンジ期間のイベントは、そのプログラムを構成するスレッドのやりとり(interactions)を示す情報と共に表示可能になっている。追加情報は、テキスト情報と共に、別の表示フィールドに表示可能になっている。表示される情報の多くはグラフィカルに表現されているので、パフォーマンスエンジニアはさらに調査すべきプログラムの個所を迅速に特定できるようにしている。

Description

本発明は、一般的にはソフトウェアプログラム開発に関し、具体的にはソフトウェアプログラムのパフォーマンス分析に関する。
ソフトウェアプログラムは、その開発期間にテストされるのが一般的である。従来から、このテストは、ソフトウェアプログラムが関数を意図通りに実行することを検証するために使用されている。ソフトウェアプログラムが複雑化するのに伴い、パフォーマンステストは、開発サイクルの重要なコンポーネントになっている。パフォーマンステストは、「パフォーマンスエンジニアリング」作業をサポートし、その作業期間にプログラム実行の遅延の原因となったプログラム部分が特定され、プログラム実行に要する時間を短縮するように書き直されている。
パフォーマンステストは、テスト対象プログラムの中に「プローブ(probe)」を挿入することによって行なわれることが多い。プローブは、その実行時にログファイルにデータを書き込む単純な関数である。ログファイル内のデータはそのあと分析され、プログラム動作の種々の特性を判断することを可能にしている。
従来のパフォーマンス分析ツールは、ログファイル内のデータを使用してテスト対象ソフトウェアプログラムの実行の集約ビュー(aggregated view)を提示している。例えば、ログファイル内のデータは、テスト対象ソフトウェアプログラムの中の各関数が起動される回数を判断するために使用されることがある。この情報から、パフォーマンスエンジニアは、例えば、特定の関数が意図する回数以上に実行されるループに入っていることを知ることができる。そのような観察により、例えば、ループが実行される回数を減らすようにプログラムを作り直すと、プログラムのパフォーマンスを向上させることができる。
データの集約ビューからは、各関数が実行される平均時間量を知ることもできる。ある関数の平均実行時間が期待実行時間を大幅に超えていれば、パフォーマンスエンジニアは、なんらかのイベントがその関数の実行をブロック(block)しているかどうかを調べることができる。
パフォーマンスエンジニアがレビューするために、テスト対象ソフトウェアプログラムに関するパフォーマンスデータを提示するツールが、採用されている。この種のルールは、例えば、パフォーマンスエンジニアが複数のタイプの集約データから選択することを可能にして、パフォーマンスエンジニアがテスト対象ソフトウェアプログラムのさまざまな側面を検査できるようにしている。また、この種のツールには時系列ビュー(timeline views)も含まれているので、パフォーマンスエンジニアは、テスト対象ソフトウェアプログラムのアクティビティレベルを見ることができる。
本発明は、テスト対象ソフトウェアプログラムに関するパフォーマンスデータを提供するユーザインタフェースに関する。このユーザインタフェースを使用すると、パフォーマンスエンジニアまたは他のユーザは、テスト対象ソフトウェアプログラムのうち、パフォーマンス上の問題の原因となっている可能性のある部分をより即時に特定できるようにパフォーマンスデータの提示を操作することができる。
本発明の一側面では、テスト対象ソフトウェアプログラムに関するパフォーマンスデータを表示する方法が提供されている。この方法によれば、テスト対象ソフトウェアプログラムが実行される期間のタイムレンジ(time range)の表現が第1ディスプレイエリアに表示される。第1ディスプレイエリアに表示されたタイムレンジの指示部分(indicated portion)を示すユーザインプットはユーザインタフェースデバイスを通して受信される。複数のグラフィカルインジケータ(graphical indicator)は、第2ディスプレイエリアに表示される。各グラフィカルインジケータは、タイムレンジのサブレンジ(sub−range)期間における複数のスレッドの1つの実行でのイベントを表わしている。サブレンジには、第1ディスプレイエリアに表わされたタイムレンジの指示部分が含まれている。
本発明の別の側面では、テスト対象ソフトウェアプログラムの中の複数のスレッドに関するパフォーマンスの情報がそこにレンダリングされているディスプレイデバイスが、提供されている。パフォーマンスの情報は、複数のスレッドの各々について、スレッドの動作を表わすスレッドエリアを含んでいる。スレッドエリアには少なくとも1つのインジケータがあり、各々のインジケータはスレッドの動作イベント(operating event)を表わし、複数のスレッドのスレッドエリアは、複数のスレッドのスレッドエリア内のインジケータが複数のスレッドにおける動作イベントの時間的相関関係をグラフィカルに示すような位置に置かれている。
さらに、本発明の別の側面では、テスト対象ソフトウェアプログラムのパフォーマンスを分析するためのコンピュータ実行可能コンポーネントを収めたコンピュータ可読媒体が提供されており、テスト対象ソフトウェアプログラムは、複数のスレッドで実行されるように構成されている。コンピュータ実行可能コンポーネントは、テスト対象ソフトウェアプログラムの中の複数のスレッドの実行に関するデータを収集するように構成されたデータ収集コンポーネント(data collection component)、収集されたデータを分析して複数のスレッドに関する実行データを導き出すように構成された分析コンポーネント(analysis component)、および複数のスレッドの少なくとも一部分に関する実行情報を、人間が目に見える形式で表示するように構成された報告コンポーネント(reporting component)を含み、人間が目に見える形式は、前記一部分の中の複数のスレッドの各々について時間の関数として実行情報をグラフィカルに表現したものを含み、一部分の中の複数のスレッドの各々のグラフィカル表現は、一部分の中の複数のスレッドの各々におけるイベントを、時間的に相関付けることを可能にするフォーマットで表示されるようにしている。
添付図面は、一律の縮尺で描かれることを目的としていない。図面において、各図面に示されている各々の同一またはほぼ同一のコンポーネントは類似の符号で示されている。明確化のために、すべてのコンポーネントがすべての図面において標識付けされているとは限らない。
パフォーマンスの分析のために使用できる改良パフォーマンス分析ツールが提供されている。このツールは、パフォーマンス分析情報を複数のフォーマットで提示するので、データを異なるフォーマットで提示するディスプレイエリアを構成することを可能にしている。構成可能であるため、パフォーマンスエンジニアなどのユーザは、テスト対象プログラムの中でパフォーマンス上の問題が発生した個所を特定できると共に、パフォーマンス上の問題の原因まで「掘り下げて(drill down)」その原因を突き止めることができる。
図1は、この種のツールが使用できる開発環境100を示すブロック図である。開発環境100は、例えば、コンピュータワークステーションやサーバで構築することも、ネットワークで結ばれたコンピュータのグループやプログラムを実行できる他の適当なプラットフォーム上で構築することもできる。
テスト対象プログラム(program under test)110は、ここでは複数のプロセスから構成されているものとして示されている。図1の例では、プロセス1121、1122および1123が示されている。テスト対象プログラム110の中のプロセスの数は本発明を限定するものではない。なお、本発明は、多数のプロセスを含むテスト対象プログラムのパフォーマンスを分析するのに利用すると、非常に便利である。
各プロセスは、「スレッド」を実行することができる。スレッド(thread)とは、大部分のケースでは、プロセスの中で実行されるプログラムの一部である。従って、プロセスとスレッドは密接に関係のある概念である。各スレッドは関数コール(function call)と他のプログラムイベント(program event)のシーケンスを独自に持っている。
別個のプロセス群を別個のプロセッサ群上で実行させることができる。しかし、別個のプロセス群を、シングルプロセッサ上で作成することができる。プロセッサのリソースは、プロセス間で共有され、任意の時点でアクティブ状態にあるすべてのスレッドは順番にプロセッササイクルを消費している。1つのプロセスがある時点でプロセッササイクルを消費している場合であっても、複数のスレッドはシングルプロセッサ上で「仮想的に」アクティブでいることができる。
上記とは対照的に、スレッドは利用可能なプロセッサの数に関係なく、「ブロック(block)」されることがある。マルチプロセスシステムには、別々のプロセスで実行されるスレッド間でデータをやりとりするメカニズムが用意されている。あるスレッドが別のスレッドとデータをやりとりする必要が起こった場合、これらの2スレッドは同時にデータをやりとりできる状態にないことがある。従って、他方のスレッドがデータをやりとりするために読み取られる個所まで実行されるまで、一方のスレッドを待たせる必要が起こる場合がある。別のスレッドがデータをやりとりするまで、あるいは他の何らかの関数を実行するまであるスレッドが待っている間、そのスレッドは「ブロック」されていると言う。重要なイベントでスレッドを「ブロック」すると、プログラムのパフォーマンスに影響を与えることになる。
図1に図示の例では、プロセス1121、1122および1123の各々は、従来技術に見られるような、プローブ関数(probe function)を備えている。テスト対象プログラム110が実行されると、このプローブ関数は、データをデータファイル120に書き込む。この実施形態で、データファイル120は、複数バッファ1221、1222 ...1225として編成されている。この実施形態では、テスト対象プログラム110の中のプロセスの各々に1つのバッファが用意されている。
テスト対象プログラム110が実行されると、プロセス1121、1122および1123内に埋め込まれたプローブが実行される。別々のプロセスの中のプローブは、そのプロセスに関連するバッファにデータ値を書き込む。このようにして、バッファ1221、1222 、および1223の各々には、その実行時にそのプロセス内で発生したイベントの順序付けリスト(ordered list of events)が収められている。スレッドとプロセスは密接な関係があるため、この情報を利用すると、イベントが関係するスレッドを特定することもできる。図示の実施形態では、バッファに書き込まれる各イベントには、そのイベントを示すインジケータがそのイベントが発生した時刻と共に含まれている。
図示の実施形態で、テスト対象プログラム110は、予め定められたアプリケーションプログラミングインタフェース(application programming interface(API))を通してコールが行なわれると、イベントがバッファに記録されるように作られている。図示の例で、予め定められたAPIを通したコールは、バッファ1224に記録される。バッファ1224は、APIのどの部分がコールされたのか、どのプロセスからそのコールが行なわれたのか、およびそのコールがいつ行なわれたのか、を特定する情報をストアしている。
テスト対象プログラム110は、オペレーティングシステム114を含んでいるプロットフォーム上で実行されている。この実施形態で、オペレーティングシステム114は、種々のイベントをデータファイル120に書き込むようにも構成されている。例外条件(exception condition)やディスクアクセス(disk access)のような、予め定められたイベントはイベントの通知をデータファイル120に書き込むようにオペレーティングシステム114の内部にプログラミングすることもできる。このようなイベントが発生すると、その通知は、バッファ1225に書き込まれる。イベントの通知には、発生した特定イベントのID、そのイベントが発生した時刻およびそのイベントを発生させる原因となったスレッドのプロセスを含めることができる。
図1は、テスト対象ソフトウェアプログラムの実行期間にキャプチャ(capture)することができるイベントのタイプを例示している。本発明の一実施形態によれば、多くのタイプのイベントは、人間のユーザ(human user)に使い易い形式で表示されるようになっている。例えば、SQLイベント、OSカーネルイベント、ウェブサーバイベントまたは他の所望のタイプのイベントを、以後の分析と表示のためにデータファイル120にキャプチャしておくことができる。
図示の実施形態で、データファイル120にストアされたデータは、プログラム110の実行後に分析される。この分析は分析プログラム(analysis program)130によって行なわれる。ここで説明している実施形態で、分析プログラム130は、バッファ1221...1225の各々にストアされたイベントの時間を相関付ける。バッファの各々の中のイベントの時刻を相関づけるにはさまざまな方法を利用できる。ここで説明している実施形態では、インデックスが作成される。インデックスは、各バッファ内のどのエントリがテスト対象プログラム110の実行期間の特定時刻に対応しているかを示している。このようにすると、分析されたデータが処理されるとき、分析プログラム130は、テスト対象プログラム110の実行期間の特定時点に対応するデータを、バッファの各々から即時にアクセスすることができる。インデックスは、特定時刻に発生しているイベントに対応する、各バッファ内のロケーションの推定値をインデックスが表わすように適応的に作成することができる。データファイル120が処理されるとき、これらの推定値は更新されることがある。しかし、インデックスを作る方法が適切であれば、どのような方法でも使用できる。
データファイル120にストアされたデータにインデックスを付けると、分析プログラム130は、異なるプロセス内のイベントが共通時間フレーム(common time frame)を基準にして表示されるように、即時にデータをユーザインタフェース140から表示するフォーマットにすることができる。異なるプロセスまたはスレッドでのイベントを相関付けるとき、絶対標準を基準にして時刻をトラッキングする必要がない。むしろ、テスト対象プログラム110の実行開始または他の好都合な個所を基準にして時刻をトラッキングすることができる。時刻は、例えば、テスト対象プログラム110がそこで実行されているプロセッサ内部のクロックの刻み(tick)を基準にしてトラッキングすることができる。
図示の実施形態で、ユーザインタフェース140は、コンピュータワークステーションの一部になっている。しかし、適切であれば、どのようなユーザインタフェースデバイスでも採用できる。この例で、ユーザインタフェース140は、アウトプットメカニズムを備えたディスプレイ142を含んでいる。ディスプレイ142は、例えば、アウトプットを人間のユーザに提供することを可能にするCRTまたはTFTディスプレイにすることができる。他の形体のアウトプットデバイスを使用することもできる。例えば、グラフィカルアウトプットは印刷することも、スクリーン上に投影させることもできる。別の方法として、アウトプットを他のプログラムまたはシステムに渡し、使用に先立って詳細分析を行なってから情報をユーザに提供することもできる。
ユーザインタフェース140は、ユーザインタフェース選択デバイスを含んでいる。このユーザインタフェース選択デバイスを使用すると、ユーザは分析プログラム130の動作を制御できるインプットを、ユーザインタフェース140から与えることができる。図示の実施形態で、ユーザインタフェース140は、ユーザのインプットをユーザインタフェース140から与えるために使用できるマウス146を含んでいる。従来のデスクトップコンピュータの場合と同様に、人間のユーザは、マウスを操作してカーソルをディスプレイ142上に位置づけ、マウス146のボタンを操作して(つまり、「クリック」して)ディスプレイ142上のインプットアイテムとして選択することができる。ユーザインタフェース140からは、ボタンが押されたときの位置に基づいてプログラムオブジェクトを起動させることができる。
キーボード144は単独でも、マウス146との併用でも、ユーザインタフェース選択デバイスとして働かせることもできる。人間のユーザは、キーボード144を使用して、インプットをユーザインタフェース140から与えるのに適したコマンド、パラメータまたは他の情報を入力することができる。ここで説明している実施形態で、ユーザのインプットは、望ましい表示をディスプレイ142から得られるように分析プログラム130を制御している。
図2は、分析プログラム130によって作成され、テスト対象ソフトウェアプログラムの実行期間に収集されたデータを、人間のユーザに提示するためにディスプレイ142から表示できるサンプルユーザインタフェース210を示す図である。図2の実施形態で、ユーザインタフェース210は、複数の領域を収めている。ここで説明している実施形態で、これらの領域は、論理的に関係のある情報をグループ化するために使用される。例えば、メニューバー212は、ユーザインタフェース210の情報または機能を制御するためにユーザがアクセスできるコマンドを見つけるための領域の働きをする。メニューバー210に含まれるコマンドは、特定のファイルをオープンまたはクローズするコマンドのように、従来のグラフィカルユーザインタフェースで使用されているコマンドにすることができる。コマンドは、ユーザインタフェース210の残り部分に表示される情報を表示することも、テスト対象ソフトウェアプログラムの実行から収集されたパフォーマンスデータを表示するために使用されるユーザインタフェースに固有の操作を制御することもできる。
図2に図示の実施形態で、ユーザインタフェース210は、3つの領域を収めており、テスト対象ソフトウェアプログラム110の実行に関する情報であって、論理的に関係があるが、異なるタイプの情報がそこに表示される。これらの領域は時系列(timeline)フィールド220、スレッドビュー(threadview)フィールド230およびテキストビュー(textview)フィールド260を含んでいる。
時系列フィールド220は、テスト対象ソフトウェアプログラム110の実行期間のアクティビティのレベルをグラフィカルに表現したものを含んでいる。この実施形態で、アクティビティのレベルは、時系列フィールド220内に陰影付け(shading)することで示される。例えば、領域222は領域224よりも陰影付けが少なくなっている。この陰影付けは、領域224に比べて領域222で表わされた時間期間に少ないアクティビティが行なわれたこと、すなわち、領域222で表わされた時間期間のアクティビティが少ないことを示している。
この例で、テスト対象ソフトウェアプログラム110の実行全体は、左から右に向かう時系列で表わされている。適切であれば、どのようなアクティビティの表現形体でも使用できる。例えば、異なるアクティビティレベルを示すために異なるカラーを使用することができる。別の方法として、時系列フィールド220で表わされた時系列をヒストグラム(histogram)として表示し、時系列のディスプレイの高さがテスト対象ソフトウェアプログラム110の実行期間の任意の特定時刻におけるアクティビティレベルを示すようにすることができる。
アクティビティのレベルは適切であれば、どのような方法でも測定することができる。実行中のプログラムによって消費されるCPU時間の割合(パーセンテージ)をトラッキングするプロセスモニタはこの分野では公知であり、これは、例えば、220のように、アクティビティのレベルを示す時系列フィールドを生成するデータを作成するために使用することができる。この実施形態で、時系列フィールド220は、テスト対象ソフトウェアプログラム110の部分を実行するプロセス1121、1122および1123のすべての集約アクティビティ(aggregate activity)を示している。この例で、時系列フィールドには、オペレーティングシステム114の一部であるプログラムを実行するプロセスにおけるアクティビティに関する情報は含まれていない。
時系列フィールド220は、タイムインジケータ(time indicator)226を含んでいる。タイムインジケータ226は、ユーザが操作できるコントロールである。例えば、タイムインジケータ226は、ユーザがマウス146(図1)を操作することで選択できる。そのあと、ユーザはマウス146を操作すると、プログラムインタフェースで常用されているドラッグアンドドロップアクションを使用してタイムインジケータ226を時系列フィールド220上の関心のある望みの個所にスライドすることができる。このようにすると、ユーザは、データファイル120(図1)にストアされたデータ部分を指定して、さらに詳しく調べることができる。具体的には、タイムインジケータ226によって指定された実行時間のサブレンジの間に収集されたデータは、スレッドビューフィールド230にさらに詳しく表示させることができる。
図示のように、タイムインジケータ226は、単一の時間を指定している。スレッドビューフィールド230に表示させる時間の範囲をユーザが指定するには、さまざまな実施形態が可能である。この例で、スレッドビューフィールド230には、テスト対象ソフトウェアプログラム110の動作に関する情報がタイムインジケータ226によって示された時間の前後の時間サブレンジで収められている。しかし、適切であれば、どのような規則でも使用可能である。例えば、時系列フィールド220には、あるタイムインジケータは、スレッドビューフィールド230に表示させるインターバルの開始を特定し、別のタイムインジケータは、スレッドビューフィールド230に表示させる終了時間を特定する、といったように複数のインジケータを含めることができる。
スレッドビューフィールド230に表示する時間のサブレンジを特定するためにどのようなメカニズムが使用されるかに関係なく、スレッドビューフィールド230は、選択されたインターバル期間にテスト対象ソフトウェアプログラム110の一部として実行されるスレッド内のイベントをグラフィカルに表現したものを収めている。図2に示す実施形態で、各スレッドはエリアで表わされ、ここではトレースバー(trace bar)
2401、2402...2409として示されている。ここでは、9個のスレッドが示されている。イベントが示されるときのスレッドの数は、本発明を限定するものではない。
各スレッド内のイベントは、対応するトレースバー内にグラフィカルに示されている。複数のタイプのイベントが示されている。イベントの数とタイプは単なる例示であり、表示できるイベントの数またはタイプは任意である。
図2に示す実施形態で、トレースバー2401、2402...2409の各々は、その対応するスレッドが存在している時間を示している。テスト対象プログラムが動作しているとき、スレッドの開始時間と終了時間はさまざまであり、これらは、スレッドビューフィールド230にグラフィカルに表わされることができる。
さらに、スレッドが存在していても、アクティブでいられるのは、それが存在する時間の一部だけである。適切であれば、スレッドアクティビティはどのような尺度で測ることも可能である。しかし、図示の実施形態で、プロセッサの数が限られているシステムでは複数のプロセスがスケジューリングされるために、あるスレッドがCPUサイクルをアクティブに消費していない場合でも、実行すべきオペレーションがあるとき、そのスレッドは、「アクティブ」とみなされている。ユーザインタフェース210で、トレースバー2401、2402...2409は、対応するスレッドがアクティブであるか、あるいはブロックされている時間期間をビジュアルに示すように作られている。アクティブまたはブロックされている期間を特定するには、適切であればどのような方法を使用することもできる。この例で、アクティブインジケータ(active indicator)242のようなアクティブインジケータは、対応するスレッドがアクティブである期間の時間を示すためにトレースバーの上に重ねられている。これとは逆に、ブロックされたインターバル254におけるように、アクティブインジケータがないことは、対応するスレッドが特定のインターバル期間ブロックされていることを示している。
スレッドビューフィールド230には、他のイベントをグラフィカルに表示させることもできる。この例では、244のようなユーザマーク(user mark)が示されている。図1に関連して上述したように、テスト対象ソフトウェアプログラム110内のイベントを記録できる。この例で、ユーザマーク244の各々は、テスト対象ソフトウェアプログラム110のAPI内の関数へのコールが出されたことをグラフィカルに示している。システムマーク(system mark)250も、同じように、オペレーティングシステム114によってトラッキングされたイベントの1つが発生したことを示している。この例で、システムマーク250は、ユーザマーク244とビジュアルに区別可能になっている。異なるタイプのマーク間を区別するために、カラー、形状または位置付けを使用することができる。図2には、複数のユーザマークが示されている。これらのユーザマークはすべて同じグラフィカルシンボルで示されているが、これは同じイベントが複数回発生したことを表わしている。異なるタイプのユーザマークは同じまたは異なるグラフィカルシンボルで表わすことができる。
スレッドビューフィールド230は、タイムスケール(time scale)232を含んでいる。各トレースバー2401、2402...2409内のイベントは、このタイムスケール232と相関付けされている。従って、トレースバー内のイベントは相互に相関付けされている。スレッドビューフィールド230を横に読んでいくと、スレッド内で一度に発生したイベントを比較することができる。スレッドフィールド230を下に読んでいくと、イベントのシーケンスが明らかになる。
タイムスケール232は、時系列フィールド220に示された時間のサブレンジを表示する。表示される特定のサブレンジは、ユーザがタイムインジケータ226を操作することによって選択することができる。さらに、スレッドビューフィールド230は、スクロールバー252を含んでいる。スクロールバーは、表示すべき時間サブレンジを選択するために他のメカニズムを提供する。スクロールバー252は、現時点で公知タイプのコントロールにすることも、グラフィカルユーザインタフェースで使用するために将来開発されるタイプのコントロールにすることもできる。スクロールバー252を使用すると、ユーザはスレッドビューフィールド230に表示されている時間サブレンジを以前または以後の時間に変換することができる。この実施形態では、タイムインジケータ226とスクロールバー252は相互に関係付けられたコントロールであり、このことは、タイムインジケータ226とスクロールバー252のどちらかを調整すると、スレッドビューフィールド230に表示されている時間のサブレンジのセンタポイントが調整されることを意味している。
スレッド内のイベントを相互に関係付けて表示できるので、人間のユーザは、テスト対象プログラム110の実行時にパフォーマンス上の問題の原因となった可能性のあるプログラム部分を即時に特定することができる。例えば、図2は、スレッド3が比較的短時間の期間アクティブであり、そのあと非アクティブになったことを示している。この非アクティブの期間に、スレッド4は、比較的長時間の期間アクティブになっている。そのあと、スレッド4は、非アクティブになり、スレッド3は、再びアクティブになっている。このようなパターンから、例えば、人間のユーザは、スレッド4で待たされている間スレッド3がブロックされていることを知ることができる。また、このパターンから、スレッド4の実行に必要な時間を調べるか、あるいはスレッド3がスレッド4を待っている間本当にブロックされていたかどうかを調べることにより、プログラム全体のパフォーマンスを改善できることを知ることができる。このようなシナリオは、集約統計(aggregated statistics)を見るだけでは明らかにならない。集約統計からは、スレッド3の実行時間が長かったことを知ることができるが、その原因を知ることはできない。
図2は、ユーザインタフェース210に含まれるテキストビュー(text view)フィールド260を使用すると、種々のスレッドの実行に関する追加データを取得できることを示している。図示の実施形態で、スレッド3とスレッド4は、テキストビューフィールド260に強調表示(highlight)されている。ここで説明している実施形態で、ユーザは、どのフィールドをテキストフィールド260に表示させるかを選択しているが、適切であれば、テキストビューフィールド260に表示させるスレッドは、どのような方法を用いても選択することができる。例えば、ユーザは、スレッドビューフィールド220に表示されているスレッドの1つについてマウス146のボタンを使用してプロパティメニュー(properties menu)にアクセスし、スレッドをテキストビューフィールド260に表示させることを、そのメニューの中で選択することができる。別の例として、ユーザは、マウス146を使用して、テキストビューフィールド260内の望みのフィールドを表わしているトレースバーをドラッグアンドドロップすることもできる。
テキストビューフィールド260に表示するために選択された各スレッドは、2641または2642のようなイベントトレース(event trace)によって表わされている。各イベントトレースには、イベントトレースによって示されたスレッド内のイベントをリストしたものが含まれている。この例で、イベントトレース2641または2642にリストされたイベントは、スレッドによって起動された特定のAPIへのコールやオペレーティングシステムのユーティリティのアクセスのように、スレッドから行なわれた関数へのコールおよびマークイベントを表わしている。しかし、どのような望みタイプのイベントを表示させることもできる。例えば、SQLイベント、OSカーネルイベント、ウェブサーバイベントなどを、図2に示すイベントに代えて表示させることも、付加的に表示させることもできる。
テキストビューフィールド260は、タイムスケール262を含んでいる。タイムスケール262は、テキストビューフィールド260に示されたイベントトレースが、テスト対象ソフトウェアプログラム110が実行されている時間のサブレンジ内のイベントを説明していることを示している。テキストビューフィールド260に示された時間のサブレンジは、スレッドビューフィールド230に示されたサブレンジと同じにすることができる。しかし、図2の例で、テキストビューフィールド260は、テキストビューフィールド260に示されたサブレンジのセンタポイントを調整するためにユーザインプットによって操作できるスクロールバー264を含んでいる。
タイムスケール262は、ここでは不連続であると示されている。図示実施形態では、エントリがテキストビューフィールド260に作られるのは、表示のためのイベントがそのときにあるときだけである。このようにすると、連続するイベントは、これらイベントの発生時刻の間に時間的ギャップがあっても、相互に隣接して表示されることになる。
図2の例で、スレッドビューフィールド230とテキストビューフィールド260は、同時に表示されるが、異なるサイズになっている。この実施形態で、これらのフィールドは、従来のユーザインタフェースで使用されているようなディスプレイエリアとして実現されているので、各ウィンドウに表示されるデータ量を増減するために、適切ならばどのような方法でもサイズを変えることができる。また、図示実施形態で、時系列フィールド220、テキストビューフィールド260およびトレースビューフィールド230は、ディスプレイ上に同時に表示されている。各フィールドを別々の時刻に表示させることも、望みの組み合わせで同時に表示させることもできる。
テキストビューフィールド260は、テスト対象ソフトウェアプログラム110のパフォーマンスの分析を容易化することができる。図示の例で、スレッド3のイベントトレース2641は、時刻6にスレッド3が別のスレッドを待っていることを確かめている。テキストビューフィールド260のさらに詳細な表示は、時刻5に実行されたWRITEデータ関数に続いてスレッド3が待ちに置かれていることを示している。イベントトレース2642は、スレッド4がデータ書き込みに関連する種々の操作を実行中であることを示している。イベントトレース2642は、スレッド4は時刻10から始まって、_STRLEN関数を実行するのに相当の時間を消費していることを示している。この情報を使用すると、人間のユーザは、テスト対象プログラム110のパフォーマンス上の問題を即時に特定することができる。
プログラム実行のスレッドビューとイベントトレースの両方を表示すると、パフォーマンスエンジニアは、問題の原因を即時に特定することができる。グラフィカル表現を使用すると、さらに調査すべき特定個所を特定することができ、これらの特定個所の表現をテキストの形式で得ることができる。さらに、これらのフィールドの各々に表示される時刻の値のサブレンジを変更できるので、パフォーマンスエンジニアが問題を特定するときの容易さがさらに促進されることになる。例えば、スレッド3と4は時刻23に同じようなパターンを示しているが、このことは、時刻23に、スレッド3もスレッド4によって実行された関数へのコールを行なう可能性があることを示している。しかし、時刻23に示す事例で、スレッド4は、時刻5に示す事例よりもはるかに短い時間の間アクティブになっている。このようなパフォーマンスデータのパターンは、スレッド3がWRITEデータ関数をコールするとき、そのオペレーションが他の時間よりもかなり長くなること示す場合がある。このようなパフォーマンスパターンは、どの関数が特定のパフォーマンス上の問題の原因であるかを、集約データから特定することを困難にしている。しかし、選択可能なサブレンジにわたって時間的に相関付けられた異なるスレッドにおけるイベントをユーザが調べられるようにすると、パフォーマンス上の問題の特定はさらに容易化される。
図3は、ユーザインタフェース210の別の特徴を示す図である。図3に示す例で、スレッドビューフィールド230のタイムスケール232は、拡張されている。この図例で、スレッドビューフィールド230が表示されるウィンドウは、図2のそれと同じサイズになっているが、タイムスケール232がカバーしているサブレンジは図2に関連して図示したもののほぼ10分の1になっている。その結果、スレッドビューフィールド230に表示されたスレッド内のイベントは、より高解像度で表示される。タイムスケールの解像度を、例えば、ユーザのインプットに基づいて調整することができる。ユーザは、例えば、マウス146(図1)を使用してカーソルをタイムスケール232上に置き、そのフィールドで右クリックすると、プロパティダイアログボックス(properties dialog box)または他のコントロールがオープンされるので、ユーザは、タイムスケール232の望みの解像度を指定した情報をインプットすることができる。なお、インプットを与える方法が適切なものであれば、どのような方法を用いてもタイムスケールを指定することができる。
図3は、テキストビューフィールド260に関連するタイムスケール262も、解像度がプログラム可能であることを示している。図3の例で、タイムスケール262の解像度は、タイムスケール232の解像度に一致している。なお、タイムスケール262の解像度は、任意の適当な手段を用いてセットできるので、タイムスケール262の解像度は、タイムスケール232の解像度に一致している必要はない。
図3は、232または262のようなタイムスケールの解像度を変更すると得られる利点を示している。図2に示す解像度で、スレッド4は、関数_STRLENで長時間期間を消費しているように見える。図3に示す解像度では、明らかであるように、スレッド4が関数_STRLEN内で消費している時間の一部は_funclなどの、他の関数へのコールで消費されている。
図3は、ユーザインタフェース210の別の側面も示している。マウス146(図1)を操作すると、イベントのグラフィカル表現のどこにでもカーソル312を置くことができる。ユーザインタフェース210にグラフィカルに示されたイベントの各々に関する追加情報を得ることができる。図3の例で、ユーザは、マーク344の上にカーソル312を置いている。ユーザは、マーク344の上でクリックするか、マーク344の上でカーソルを「ホバリング」するだけでインプットを与えることができる。このユーザのインプットに応答して、分析プログラム130は、そのマークに関する追加情報をテキストボックス310に表示することができる。テキストボックス310に表示される情報は、ユーザによって選択されたグラフィカルオブジェクトで表わされた特定イベントによって決まり、SQLイベント、OSカーネルイベントまたはウェブサーバイベントを含む、望みのイベントに関する情報をディスプレイ上に表示することができる。
図4は、本発明の別の実施形態によるユーザインタフェース410を示す図である。この実施形態では、テキストビューフィールド460には、4301、4302および4303などの複数のタブが設けられている。これらのタブの各々は、マウス146を操作してカーソルをタブの上に置き、そこでクリックすることによりユーザインタフェースを通して選択できる。タブの各々は、選択されると、テキストビューフィールド460内に異なる種類の情報を表示することができる。タブ4301は、関数に関する集約情報を提示するが、この情報は、従来技術ではパフォーマンス分析システムによって提示されていたものである。タブ4301が選択されると、テスト対象ソフトウェアプログラムの実行期間にコールされた関数をリストしたカラム4201が表示される。隣接カラムには、カラム4201にリストされた関数の各々に関する情報が表示される。例えば、カラム4202は、テスト対象ソフトウェアプログラム110の実行期間に記録された関数に入った回数を示している。カラム4203は関数内の総実行時間(aggregate execution time)を示している。このタブに提示された情報は、集約または統計情報であり、そこに示されるイベントは発生順になっていない。
タブ4302が選択されると、従来のパフォーマンス分析システムで表示されたコールツリーに類似したコールツリーが表示される。パフォーマンス分析システムによって生成できる、他のどのタイプのデータも、現時点で公知であるか、将来に開発されるかに関係なく、そのデータにアクセスするために選択できるタブを用意することによって、人間のユーザのために選択的に表示させることができる。タブ4303をアクティブにすると、図3に示したようなイベントトレースを得ることができる。
図4は、ユーザインタフェース410の別の側面を示している。この例で、スレッドビューフィールド230は、図2に示す時間のサブレンジの後にある時間のサブレンジを示している。従って、タイムインジケータ226は、図2よりも時系列フィールド220内でさらに右に現れている。
図5は、ユーザインタフェース410のさらに別の側面を示している。スレッドビューフィールド230に示されたスレッドを、ユーザのインプットに基づいて選択することができる。ユーザがスレッドを選択できるようにすると、ユーザは異なるトレース内のイベントのグラフィカル表現を並置することによりパフォーマンス上の問題を特定するプロセスが容易化される。このようにすると、ユーザは、スレッド相互間の依存関係を特定し、これらの依存関係が原因で起こるパフォーマンス上の問題を特定することができる。
図5は、表示するスレッドをユーザに選択させるために使用できる1つのメカニズムの例を示している。この例で、ユーザインタフェース410は、メニューバー212上に選択エリア510を含んでいる。選択エリア510は、グラフィカルユーザインタフェースで従来から使用されているように、選択されたとき、リストボックス512をオープンするメニューアイテムとして実現することができる。
リストボックス512は、テスト対象プログラム110の中のスレッドのリストを含み、スレッドの各々にはその隣にチェックボックスが付いている。各チェックボックスは、コントロールの働きをし、選択されると、対応するスレッドをレッドビューウィンドウ230に表示されたスレッドのリストに組み入れる。
スレッド選択の他の側面は、ユーザインタフェース410内のコントロールを通して利用できる。例えば、コントロールを使用すると、ユーザはスレッドビューウィンドウ230内のスレッドの順序付けを指定することができる。
上述した特徴を使用すると、ユーザは、テスト対象プログラムのパフォーマンスデータを、マルチスレッドプログラム(multi−threaded program)の動的やりとり(dynamic interactions)を即時に理解できるような形式に編成することができる。複数レベルで掘り下げること(drill down)ができるので、パフォーマンスエンジニアまたは他のユーザは効果的なプロセスでプログラムについてパフォーマンスエンジニアリングを行なうことができる。代表的なシナリオでは、このプロセスには、詳しく調査する価値のあるプログラムの実行期間に時系列フィールド220を使用してサブ領域を特定することを含めることができる。例えば、集中的アクティビティまたは非常に少ないアクティビティが行なわれているサブ領域を特定して、詳しく調査することができる。
詳細調査するサブ領域が選択されると、そのサブ領域における特定のスレッドを調べることができる。ユーザは、タイムスケールを調整してスレッドビューフィールド230に表示するようにすると、シングルスレッドのある個所またはスレッド間のやりとりの組み合わせがプログラムの実行速度を低下させていた個所が特定しやすくなる。マーカやアクティビティバーのような、スレッドビューフィールド230におけるビジュアルインジケータを手引きとしてユーザは問題個所を特定することができる。
そのあと、ユーザは、いくつかのスレッドを選択してテキストビューウィンドウ460に表示するようにすると、これらスレッドの特定のやりとりに関するより詳細な情報を得ることができる。イベントを発生順に提示させることも、関数または他のプログラムエレメントの集約データを提示させることもできる。
ディスプレイエリアは、従来の多くのグラフィカルユーザインタフェースと同じように、ユーザがディスプレイの外観をカスタマイズできるように、オープンし、クローズし、最小化し、再位置付けすることができる。
ユーザインタフェースにおけるコントロールは、現時点で公知であるか、将来開発されるかに関係なく、適切であればどのような方法でも実現することができる。例えば、ソフトウェア開発環境には、拡張可能インタフェースがあるため、プログラムとのグラフィカルユーザインタフェースにメニューアイテムを組み込むことができることが多い。さらに、このような開発環境では、予め定義されたコントロールを、アプリケーション用にカスタマイズしたアクションと共に、グラフィカルユーザインタフェースに組み込むこともできる。スクロールバー、テキストボックスおよびドロップダウンリストなどのコントロールは、グラフィカルユーザインタフェースで使用されている、現時点で公知のコントロールの例であり、例えば、Active−Xオブジェクトして実現することができる。
動作時には、グラフィカルユーザインタフェース上に表示される情報は、適切であればどのような方法でも生成することができる。上述したように、イベントに関する情報はバッファに収集される。これらのバッファは、情報の即時処理ができるようにインデックスが付けられている。分析プログラム130は、この分野で公知のように集約データを計算することができる。また、分析プログラム130は、バッファ内の時間順の情報を使用して、の始まりと終わりを通知するイベントを特定することもできる。
分析プログラムは、C++のような、任意の適当なプログラミング言語で作成されたプログラムにすることができる。これは、パフォーマンスエンジニアによって使用されるワークステーションに関連するプロセッサなどの、任意の適当なプロセッサに関連するコンピュータ可読媒体(computer−readable media)にストアしておくことができる。
以上、本発明の少なくとも1つの実施形態のいくつかの側面を説明してきたが、以上の説明から理解されるように、この分野の精通者には容易であるように、種々の変更、修正および改善を行なうことができる。
かかる変更、修正および改善は本明細書の開示内容の一部となるものであり、また本発明の精神と範囲に属するものである。従って、上述の説明と図面は単なる例示である。
本発明の上述した実施形態を実現するには、多数の方法を利用できる。例えば、これらの実施形態は、ハードウェア、ソフトウェアまたはハードウェアとソフトウェアの組み合わせを使用して実現することができる。ソフトウェアで実現されるときは、ソフトウェアコードは、そのコードがシングルコンピュータに用意されているか、あるいは複数のプロセッサ間に分散されているかに関係なく、任意の適当なプロセッサまたはプロセッサの集まり上で実行させることができる。
また、上述した種々のメソッドまたはプロセスは、種々のオペレーティングシステムまたはプラットフォームのいずれかを採用する1または2以上のプロセッサ上で実行可能なソフトウェアとしてコーディングすることができる。さらに、かかるソフトウェアは、いくつかの適当なプログラミング言語および/または従来のプログラミングまたはスクリプトツールのいずれかを用いて書くことができ、実行可能マシン言語コードとしてコンパイルすることもができる。
以上の観点において、本発明は、1または2以上のコンピュータまたは他のプロセッサ上で実行されたとき、上述した本発明の種々実施形態を実現するメソッドを実行する1または2以上のプログラムと共に符号化されたコンピュータ可読媒体(または複数のコンピュータ可読媒体)(例えば、コンピュータメモリ、1または2以上のフロッピディスク、コンパクトディスク、光ディスク、磁気テープ)として具現化することができる。1または2以上のコンピュータ可読媒体は、そこにストアされた1または2以上のプログラムが上述した本発明の種々側面を実現するために1または2以上の異なるコンピュータまたは他のプロセッサ上にロードされるようにトランスポート可能にすることができる。
「プログラム」という用語は、上述した本発明の種々側面を実現するようにコンピュータまたは他のプロセッサをプログラミングするために採用できる任意タイプのコンピュータコードまたは命令セットのことを指すために、ここでは広義の意味に用いられている。さらに、当然に理解されるように、本実施形態の一側面によれば、その実行時に本発明の方法を実行する1または2以上のコンピュータプログラムはシングルコンピュータまたはプロセッサ上に置いておく必要はなく、複数の異なるコンピュータまたはプロセッサ間にモジュール方式で分散させて本発明の種々側面を実現させることができる。
本発明の種々側面は単独で使用することも、組み合わせで使用することも、上記に説明した実施形態の中で明示的に説明しなかった種々の構成の中で使用することも可能であり、従って、本発明を適用する際には、上記説明の中で述べたまたは図面に図示したコンポーネントの詳細または構成に限定されない。例えば、ある実施形態の中で説明した側面は他の実施形態の中で説明した側面と、どのような方法でも組み合わせることができる。
クレームエレメントを修飾するためにクレームの中で「第1」、「第2」、「第3」などの序数を表わす用語が用いられているが、それ自体はあるクレームエレメントが他のクレームエレメントよりも優先または先行すること、またはある方法のアクトが実行される時間的順序を意味するものではなく、クレームエレメントを区別するために、ある名前をもつあるクレームエレメントを同じ名前をもつ別のエレメント(序数の使用を除く)から区別するために単なるラベルとして用いられたものである。
また、本明細書の中で用いられている言い回しまたは用語は説明目的のためであり、限定的なものではない。「含んでいる(including)」、「含むまたは備えた(comprising)」、または「持つまたは有する(having)」、「収めた(containing)」、「伴う(involving)」およびこれらの変形は、そのあとに列挙されたアイテムおよびその等価アイテムだけでなく、追加アイテムも包含するものである。
開発環境を示す概略図である。 図1の開発環境におけるユーザインタフェースを示す概略図である。 別の動作ステートにある図2のユーザインタフェースを示す概略図である。 図1の開発環境におけるユーザインタフェースの代替実施形態を示す図である。 別の動作ステートにある図4のユーザインタフェースを示す概略図である。

Claims (20)

  1. ディスプレイとユーザインタフェースデバイスを含むグラフィカルユーザインタフェースを有するコンピュータシステムにおいて、テスト対象ソフトウェアプログラムに関するパフォーマンスの情報を表示する方法であって、前記テスト対象ソフトウェアプログラムは、各々が実行されるように構成された複数のスレッドにおいて実行されるように構成されているものにおいて、前記方法は、
    a)テスト対象ソフトウェアプログラムが実行されている期間のタイムレンジの表現を第1ディスプレイエリアに表示するステップと、
    b)前記第1ディスプレイエリアに表示された前記タイムレンジの指示部分を示すユーザインプットを、ユーザインタフェースデバイスを通して受信するステップと、
    c)複数のグラフィカルインジケータを第2ディスプレイエリアに表示するステップであって、各グラフィカルインジケータは、タイムレンジのサブレンジ期間の複数のスレッドの1つの実行でのイベントを表わしていて、前記サブレンジは、前記第1ディスプレイエリアに表わされたタイムレンジの指示部分を含んでいるものとを備えることを特徴とする方法。
  2. a)前記第1ディスプレイエリアにおけるタイムレンジの表現は、グラフィカル表現を含み、
    b)前記ユーザインタフェースデバイスは、ポインティングデバイスを含み、前記タイムレンジの指示部分を示すユーザインプットを受信するステップは、前記ユーザが前記ポインティングデバイスを使用して、前記タイムレンジの一部のインジケータをドラッグして、そのインジケータを前記タイムレンジの前記グラフィカル表現のロケーションでドロップしたことを検出することを含むことを特徴とする請求項1に記載の方法。
  3. 前記テスト対象ソフトウェアプログラムは、アクティビティレベルと共に実行され、前記第1ディスプレイエリアは、前記テスト対象ソフトウェアプログラムの実行のアクティビティレベルのグラフィカル表現をさらに含んでいることを特徴とする請求項1に記載の方法。
  4. 前記第2ディスプレイエリアのタイムスケールを示すユーザインプットを受信し、タイムスケールを示す前記ユーザインプットに応答して前記サブレンジを調整するステップをさらに備えることを特徴とする請求項1に記載の方法。
  5. 前記第2ディスプレイエリアは、スクロールバーをさらに含み、前記方法は、前記スクロールバーを移動するためにユーザインプットを前記ユーザインタフェースデバイスを通して受信するステップと、前記第2ディスプレイエリアに表示された前記サブレンジを、前記スクロールバーを移動する前記ユーザインプットに応答して調整するステップとをさらに備えることを特徴とする請求項4に記載の方法。
  6. 少なくとも1つのテキスト表現を第3ディスプレイエリアに表示するステップをさらに備え、前記テキスト表現は、複数のスレッドの1つの実行でのイベントであって、グラフィカルインジケータによって前記第2ディスプレイエリアに表わされたイベントの指示を含み、前記イベントは、前記スレッド内で行なわれた関数へのコールを含むことを特徴とする請求項1に記載の方法。
  7. 前記テスト対象ソフトウェアプログラムは、前記テスト対象ソフトウェアプログラムの実行時に実行される関数を含み、第3ディスプレイエリアに表示するステップは、
    a)前記第3ディスプレイエリアに表示される前記テキスト情報の内容を指定するユーザインプットを受信し、
    b)前記テキスト情報の内容を指定する前記ユーザインプットに応答して、前記テスト対象ソフトウェアプログラム内の関数の実行を特徴付ける集約情報を選択的に表示することをさらに含むことを特徴とする請求項6に記載の方法。
  8. a)前記テスト対象ソフトウェアプログラムは、オペレーティングシステムを含むプラットフォーム上で実行されるアプリケーションプログラムを含み、
    b)イベントを表わす複数のグラフィカルインジケータを表示することは、オペレーティングシステムの予め定められた部分または前記テスト対象ソフトウェアプログラムの予め定められた部分のどちらかへの関数コールの実行を示すことを含むことを特徴とする請求項1に記載の方法。
  9. テスト対象ソフトウェアプログラムの実行期間に動作する複数のスレッドに関するパフォーマンスの情報がディスプレイデバイス上でレンダリングされて、前記テスト対象ソフトウェアプログラムの実行期間の時々に動作イベントが現れるようにしたものにおいて、前記パフォーマンスの情報は、前記複数のスレッドの各々について、
    前記スレッドの動作を表わすスレッドエリアを含み、前記スレッドエリアは少なくとも1つのインジケータをもち、各々のインジケータは、前記スレッドの動作イベントを表わしており、前記複数のスレッドの各々のスレッドエリアは、前記複数のスレッドの前記スレッドエリアにおけるインジケータが前記複数のスレッドの動作イベントの時間的相関関係をグラフィカルに示すような位置に置かれていることを特徴とするディスプレイデバイス。
  10. 前記スレッドエリアの各々は、前記ディスプレイスクリーン上に延長領域を含み、前記複数のスレッドエリアの少なくとも一部内でインジケータは、前記スレッドエリアによって表わされた前記スレッドがブロックされて別のスレッドを待っているときのタイムレンジを表わしていることを特徴とする請求項9に記載のディスプレイデバイス。
  11. 前記スレッドエリアの各々は、前記ディスプレイスクリーン上に延長領域を含み、前記複数のスレッドエリアの少なくとも一部内でインジケータは、前記スレッドエリアによって表わされた前記スレッドがアクティブであるときのタイムレンジを表わしていることを特徴とする請求項9に記載のディスプレイデバイス。
  12. 前記スレッドエリアの少なくとも1つは、予め定められた関数が前記スレッドエリアによって表わされた前記スレッド内からアクセスされたことを表わすインジケータを含むことを特徴とする請求項10に記載のディスプレイデバイス。
  13. 前記テスト対象ソフトウェアプログラムは、オペレーティングシステム上で稼動するアプリケーションプログラムであり、前記予め定められた関数は、前記アプリケーションプログラム内の関数を含むことを特徴とする請求項12に記載のディスプレイデバイス。
  14. 前記スレッドエリアに隣接するタイムスケールエリアをさらに備え、前記タイムスケールエリアは、インジケータによって表わされた前記複数のスレッドにおける前記イベントと時間的に相関付けられていることを特徴とする請求項9に記載のディスプレイデバイス。
  15. 時系列エリアをさらに備え、前記時系列エリアは、前記テスト対象ソフトウェアプログラムの実行期間の処理の集中度をグラフィカルに示していることを特徴とする請求項9に記載のディスプレイデバイス。
  16. テキストエリアをさらに備え、前記テキストエリアは、少なくとも1つのスレッドの動作期間の、順序付けられたイベントのリストを含み、前記順序付けられたイベントのリストは、関数入口、関数出口およびSQLイベント、OSカーネルイベントおよびウェブサーバイベントからなるセットの中の少なくとも1つのイベントを含むことを特徴とする請求項9に記載のディスプレイデバイス。
  17. テスト対象ソフトウェアプログラムのパフォーマンスを分析するためのコンピュータで実行可能なコンポーネントを有するコンピュータ可読媒体であって、前記テスト対象ソフトウェアプログラムは、複数のスレッドで実行されるように構成され、前記コンピュータで実行可能なコンポーネントは、
    a)前記テスト対象ソフトウェアプログラム内の前記複数のスレッドの実行に関するデータを収集するように構成されたデータ収集コンポーネントと、
    b)前記収集されたデータを分析して、前記複数のスレッドに関する実行情報を導き出すように構成された分析コンポーネントと、
    c)前記複数のスレッドの少なくとも一部分に関する前記実行情報を人間の目に見える形式で表示し、前記人間の目に見える形式は、前記一部分の中の前記複数のスレッドの各々の実行情報を時間の関数としてグラフィカルに表現したものを含み、前記一部分の中の複数のスレッドの各々の前記グラフィカル表現は、前記一部分の中の前記複数のスレッドの各々におけるイベントを、時間的に相関付けることを可能にするフォーマットで表示されるように構成された報告コンポーネントとを備えることを特徴とするコンピュータ可読媒体。
  18. 前記報告コンポーネントは、前記複数のスレッドの少なくとも1つのグラフィカル表現を表示するように構成され、前記グラフィカル表現は、少なくとも1つのスレッドがいつブロックされて、前記複数のスレッドの中の別のスレッドからの応答待ちに置かれているかを示すインジケータを含むことを特徴とする請求項17に記載のコンピュータ可読媒体。
  19. 前記テスト対象ソフトウェアプログラムは、予め定められたイベントを実行できるオペレーティングシステムを含むプラットフォーム上で実行されるように構成され、前記報告コンポーネントは、前記一部分の中の前記複数のスレッドの少なくとも1つのグラフィカル表現を表示するように構成され、前記グラフィカル表現は、前記予め定められたイベントを実行するためにそのスレッドが前記オペレーティングシステムをトリガしたかどうかを示すインジケータを含んでいることを特徴とする請求項18に記載のコンピュータ可読媒体。
  20. 前記テスト対象ソフトウェアプログラムは、少なくとも1つのAPIを含み、前記データ収集コンポーネントは、APIがアクセスされたことを示すデータを収集するように構成され、前記報告コンポーネントは、前記一部分の中の前記複数のスレッドの少なくとも1つのグラフィカル表現を表示するように構成され、前記グラフィカル表現は、前記APIが前記スレッド内でアクセスされたかどうかを示すインジケータを含んでいることを特徴とする請求項18に記載のコンピュータ可読媒体。
JP2008506502A 2005-04-15 2006-04-03 ソフトウェアプログラムに関するパフォーマンス分析の方法と装置 Active JP5021623B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/107,464 2005-04-15
US11/107,464 US7698686B2 (en) 2005-04-15 2005-04-15 Method and apparatus for performance analysis on a software program
PCT/US2006/012176 WO2006113111A2 (en) 2005-04-15 2006-04-03 Method and apparatus for performance analysis on a software program

Publications (2)

Publication Number Publication Date
JP2008537222A true JP2008537222A (ja) 2008-09-11
JP5021623B2 JP5021623B2 (ja) 2012-09-12

Family

ID=37115641

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008506502A Active JP5021623B2 (ja) 2005-04-15 2006-04-03 ソフトウェアプログラムに関するパフォーマンス分析の方法と装置

Country Status (6)

Country Link
US (1) US7698686B2 (ja)
EP (1) EP1869555B1 (ja)
JP (1) JP5021623B2 (ja)
KR (1) KR20070121649A (ja)
CN (1) CN101208659B (ja)
WO (1) WO2006113111A2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010015482A (ja) * 2008-07-07 2010-01-21 Yokogawa Electric Corp Icテスタのデバック装置
JP2015043197A (ja) * 2013-07-22 2015-03-05 株式会社東芝 情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システム
JP2015170009A (ja) * 2014-03-05 2015-09-28 株式会社東芝 表示情報生成装置、プログラム実行状況表示システム、方法およびプログラム
JP2016045893A (ja) * 2014-08-26 2016-04-04 株式会社東芝 プログラム情報生成システム、方法、及びプログラム
JP2016514318A (ja) * 2013-03-13 2016-05-19 インテル・コーポレーション 性能及び正確性のためのマルチスレッドソフトウェアプログラムの記録された実行の視覚化
JP2017539031A (ja) * 2014-12-09 2017-12-28 エントイット ソフトウェア エルエルシーEntit Software Llc テスト実行からのテスト検証の分離

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8132124B2 (en) * 2003-03-13 2012-03-06 Hewlett-Packard Development Company, L.P. Method and system for representing Web service activity through a user interface
US7774784B2 (en) * 2005-03-17 2010-08-10 Microsoft Corporation Determining an actual amount of time a processor consumes in executing a portion of code
US7747653B2 (en) * 2005-08-26 2010-06-29 International Business Machines Corporation Summarizing application performance in a large system from a components perspective
US8001532B1 (en) * 2006-03-10 2011-08-16 Parasoft Corporation System and method for generating source code-based test cases
US8341604B2 (en) 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US8380966B2 (en) 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8370806B2 (en) 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US8533530B2 (en) 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
NZ577198A (en) * 2006-12-28 2012-03-30 Arcsight Inc Storing logdata efficiently while supporting querying to assist in computer network security
US8484516B2 (en) * 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
US8032867B2 (en) 2007-06-05 2011-10-04 Computer Associates Think, Inc. Programmatic root cause analysis for application performance management
US8010900B2 (en) * 2007-06-08 2011-08-30 Apple Inc. User interface for electronic backup
US8140919B2 (en) * 2007-10-15 2012-03-20 International Business Machines Corporation Display of data used for system performance analysis
JP2009303462A (ja) * 2008-06-17 2009-12-24 Mitsubishi Electric Corp 監視制御システム
US7526682B1 (en) * 2008-06-20 2009-04-28 International Business Machines Corporation Effective diagnosis of software hangs
US8502822B2 (en) * 2008-09-30 2013-08-06 Nintendo Co., Ltd. Method and apparatus for visualizing and interactively manipulating profile data
US8499240B2 (en) * 2008-10-31 2013-07-30 Sap Ag Rule-based presentation of log messages on a graphic timeline
US8266593B2 (en) * 2008-12-01 2012-09-11 Wipro Limited System and method for analyzing performance of a software testing system
US8572581B2 (en) * 2009-03-26 2013-10-29 Microsoft Corporation Measurement and reporting of performance event rates
US8099631B2 (en) * 2009-07-17 2012-01-17 Sap Ag Call-stacks representation for easier analysis of thread dump
US8423088B2 (en) * 2009-07-22 2013-04-16 Microsoft Corporation Aggregated, interactive communication timeline
US20110098973A1 (en) * 2009-10-23 2011-04-28 Computer Associates Think, Inc. Automatic Baselining Of Metrics For Application Performance Management
US8601444B2 (en) * 2009-10-27 2013-12-03 Microsoft Corporation Analysis and timeline visualization of thread activity
JP2011138219A (ja) * 2009-12-25 2011-07-14 Toshiba Corp 並列プログラム解析結果表示装置および並列プログラム解析結果表示方法
US9846628B2 (en) * 2010-06-15 2017-12-19 Microsoft Technology Licensing, Llc Indicating parallel operations with user-visible events
US8966447B2 (en) 2010-06-21 2015-02-24 Apple Inc. Capturing and displaying state of automated user-level testing of a graphical user interface application
KR101623564B1 (ko) * 2010-10-19 2016-05-24 삼성전자주식회사 멀티쓰레드 환경을 테스트하는 커버리지 장치 및 방법
JP4905597B1 (ja) * 2011-03-15 2012-03-28 オムロン株式会社 コントローラサポート装置、その装置において実行されるためのコントローラサポートプログラム、およびそのプログラムを格納する記録媒体
CN102855173B (zh) * 2011-06-27 2015-10-28 北京新媒传信科技有限公司 一种软件性能测试方法和装置
US9069899B2 (en) * 2012-06-27 2015-06-30 Microsoft Technology Licensing, Llc Integrating diagnostic information in development environment
US9691171B2 (en) 2012-08-03 2017-06-27 Dreamworks Animation Llc Visualization tool for parallel dependency graph evaluation
US9064037B2 (en) * 2012-12-14 2015-06-23 Microsoft Corporation Automated correlation and analysis of callstack and context data
CN104008030A (zh) * 2013-02-27 2014-08-27 腾讯科技(深圳)有限公司 内核性能测试的方法及装置
WO2015027403A1 (en) * 2013-08-28 2015-03-05 Hewlett-Packard Development Company, L.P. Testing multi-threaded applications
WO2015094312A1 (en) 2013-12-20 2015-06-25 Hewlett-Packard Development Company, L.P. Identifying a path in a workload that may be associated with a deviation
US10489266B2 (en) * 2013-12-20 2019-11-26 Micro Focus Llc Generating a visualization of a metric at one or multiple levels of execution of a database workload
JP6189232B2 (ja) 2014-03-04 2017-08-30 株式会社東芝 プログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システム
WO2015159365A1 (ja) * 2014-04-15 2015-10-22 富士機械製造株式会社 Nc工作機械
US9360523B2 (en) * 2014-04-18 2016-06-07 Breker Verification Systems Display in a graphical format of test results generated using scenario models
CN105204981A (zh) * 2014-05-28 2015-12-30 北京奇虎科技有限公司 应用性能测试方法和装置
US10353701B2 (en) 2014-09-29 2019-07-16 Sap Se Code analysis for cloud-based integrated development environments
CN104765685B (zh) * 2015-04-01 2017-12-05 上海闻泰电子科技有限公司 一种内核进程图形化分析方法
US10430316B2 (en) 2015-05-21 2019-10-01 Entit Software Llc Application thread visualization
JP6532762B2 (ja) * 2015-06-02 2019-06-19 株式会社東芝 情報生成システム、装置、方法、及びプログラム
US10922212B2 (en) * 2017-05-06 2021-02-16 Servicenow, Inc. Systems and methods for service catalog analysis
CN109298995B (zh) * 2017-07-24 2022-05-13 北京搜狗科技发展有限公司 一种性能测试方法、装置、电子设备以及存储介质
US10572374B2 (en) * 2017-09-06 2020-02-25 Mayank Mohan Sharma System and method for automated software testing based on machine learning (ML)
CN109753414A (zh) * 2017-11-01 2019-05-14 阿里巴巴集团控股有限公司 性能数据的采集方法、展示方法、电子设备和客户端
CN111061621B (zh) * 2019-12-30 2022-07-29 苏州浪潮智能科技有限公司 一种验证程序性能的方法、装置、设备及存储介质
CN113282444B (zh) * 2020-02-20 2023-09-22 北京京东振世信息技术有限公司 用于业务流程调试的可视化方法和装置
US11847597B2 (en) 2020-11-29 2023-12-19 Performetriks Llc Computer network with a performance engineering maturity model system
US11625313B2 (en) * 2021-04-22 2023-04-11 Microsoft Technology Licensing, Llc Aggregated view of task performance data

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03127236A (ja) * 1989-10-13 1991-05-30 Internatl Business Mach Corp <Ibm> トレースデータを図形形式に変換するためのコンピュータが実現する方法
JPH07110781A (ja) * 1993-01-29 1995-04-25 Internatl Business Mach Corp <Ibm> トレース・データのグラフィック表示を可視的に生成する装置及び方法
JPH07200364A (ja) * 1994-01-08 1995-08-04 Hitachi Denshi Ltd リアルタイムプログラム測定器
US6226787B1 (en) * 1999-01-25 2001-05-01 Hewlett-Packard Company Visualization method and system for dynamically displaying operations of a program
US6275956B1 (en) * 1997-10-28 2001-08-14 Electronics And Telecommunications Research Institute Integrated dynamic-visual parallel debugging apparatus and method thereof
US20020065948A1 (en) * 2000-11-30 2002-05-30 Morris Larry A. Operating system event tracker
US20030001854A1 (en) * 2001-06-27 2003-01-02 Microsoft Corporation Capturing graphics primitives associated with any display object rendered to a graphical user interface
JP2003208339A (ja) * 2002-01-17 2003-07-25 Fujitsu Ltd プロセッサ動作表示装置及びプログラム
US6611276B1 (en) * 1999-08-31 2003-08-26 Intel Corporation Graphical user interface that displays operation of processor threads over time
US6701363B1 (en) * 2000-02-29 2004-03-02 International Business Machines Corporation Method, computer program product, and system for deriving web transaction performance metrics
JP2004508757A (ja) * 2000-09-08 2004-03-18 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ カラースライダーバーを提供する再生装置
US20040117768A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corporation System and method on generating multi-dimensional trace files and visualizing them using multiple Gantt charts
US6789182B1 (en) * 2000-11-13 2004-09-07 Kevin Jay Brothers System and method for logging computer event data and physical components of a complex distributed system
US20050108689A1 (en) * 2003-11-13 2005-05-19 Hooper Donald F. Instruction operand tracing for software debug
US20070022407A1 (en) * 2001-07-27 2007-01-25 Accordsqa, Inc. Automated software testing and validation system

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5960199A (en) * 1996-11-12 1999-09-28 International Business Machines Corporation Model trace view for object-oriented systems
US5862381A (en) * 1996-11-26 1999-01-19 International Business Machines Corporation Visualization tool for graphically displaying trace data
DE10055250A1 (de) * 2000-11-08 2002-06-06 Siemens Ag Softwarewerkzeug zur Überwachung eines Automatisierungsgerätes auf Störungen
US7120901B2 (en) * 2001-10-26 2006-10-10 International Business Machines Corporation Method and system for tracing and displaying execution of nested functions

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03127236A (ja) * 1989-10-13 1991-05-30 Internatl Business Mach Corp <Ibm> トレースデータを図形形式に変換するためのコンピュータが実現する方法
JPH07110781A (ja) * 1993-01-29 1995-04-25 Internatl Business Mach Corp <Ibm> トレース・データのグラフィック表示を可視的に生成する装置及び方法
JPH07200364A (ja) * 1994-01-08 1995-08-04 Hitachi Denshi Ltd リアルタイムプログラム測定器
US6275956B1 (en) * 1997-10-28 2001-08-14 Electronics And Telecommunications Research Institute Integrated dynamic-visual parallel debugging apparatus and method thereof
US6226787B1 (en) * 1999-01-25 2001-05-01 Hewlett-Packard Company Visualization method and system for dynamically displaying operations of a program
US6611276B1 (en) * 1999-08-31 2003-08-26 Intel Corporation Graphical user interface that displays operation of processor threads over time
US6701363B1 (en) * 2000-02-29 2004-03-02 International Business Machines Corporation Method, computer program product, and system for deriving web transaction performance metrics
JP2004508757A (ja) * 2000-09-08 2004-03-18 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ カラースライダーバーを提供する再生装置
US6789182B1 (en) * 2000-11-13 2004-09-07 Kevin Jay Brothers System and method for logging computer event data and physical components of a complex distributed system
US20020065948A1 (en) * 2000-11-30 2002-05-30 Morris Larry A. Operating system event tracker
US20030001854A1 (en) * 2001-06-27 2003-01-02 Microsoft Corporation Capturing graphics primitives associated with any display object rendered to a graphical user interface
US20070022407A1 (en) * 2001-07-27 2007-01-25 Accordsqa, Inc. Automated software testing and validation system
JP2003208339A (ja) * 2002-01-17 2003-07-25 Fujitsu Ltd プロセッサ動作表示装置及びプログラム
US20040117768A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corporation System and method on generating multi-dimensional trace files and visualizing them using multiple Gantt charts
US7131113B2 (en) * 2002-12-12 2006-10-31 International Business Machines Corporation System and method on generating multi-dimensional trace files and visualizing them using multiple Gantt charts
US20050108689A1 (en) * 2003-11-13 2005-05-19 Hooper Donald F. Instruction operand tracing for software debug

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010015482A (ja) * 2008-07-07 2010-01-21 Yokogawa Electric Corp Icテスタのデバック装置
JP2016514318A (ja) * 2013-03-13 2016-05-19 インテル・コーポレーション 性能及び正確性のためのマルチスレッドソフトウェアプログラムの記録された実行の視覚化
JP2015043197A (ja) * 2013-07-22 2015-03-05 株式会社東芝 情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システム
JP2015170009A (ja) * 2014-03-05 2015-09-28 株式会社東芝 表示情報生成装置、プログラム実行状況表示システム、方法およびプログラム
JP2016045893A (ja) * 2014-08-26 2016-04-04 株式会社東芝 プログラム情報生成システム、方法、及びプログラム
JP2017539031A (ja) * 2014-12-09 2017-12-28 エントイット ソフトウェア エルエルシーEntit Software Llc テスト実行からのテスト検証の分離
US10534700B2 (en) 2014-12-09 2020-01-14 Micro Focus Llc Separating test verifications from test executions

Also Published As

Publication number Publication date
WO2006113111A2 (en) 2006-10-26
US7698686B2 (en) 2010-04-13
EP1869555A2 (en) 2007-12-26
US20060248401A1 (en) 2006-11-02
EP1869555A4 (en) 2012-04-18
JP5021623B2 (ja) 2012-09-12
CN101208659B (zh) 2012-06-13
WO2006113111A3 (en) 2007-11-29
EP1869555B1 (en) 2014-05-07
KR20070121649A (ko) 2007-12-27
CN101208659A (zh) 2008-06-25

Similar Documents

Publication Publication Date Title
JP5021623B2 (ja) ソフトウェアプログラムに関するパフォーマンス分析の方法と装置
EP0714064B1 (en) Apparatus for visualizing program slices
US8499287B2 (en) Analysis of thread synchronization events
US5748878A (en) Method and apparatus for analyzing software executed in embedded systems
JP3472026B2 (ja) ログ情報採取解析装置
US8615739B2 (en) Resource monitoring
RU2483350C2 (ru) Диспетчер компоновки
US9576382B2 (en) Method and apparatus for visualizing and interactively manipulating profile data
US8365148B2 (en) Automated code review alert indicator
US20030058280A1 (en) Graphical application development system for test, measurement and process control applications
US20110307828A1 (en) Memory allocation visualization for unmanaged languages
US8116179B2 (en) Simultaneous viewing of multiple tool execution results
US10303751B1 (en) System and method for interaction coverage
US8418148B2 (en) Thread execution analyzer
US8769497B2 (en) System and method for use in indicating execution of application code
US20080126003A1 (en) Event-based setting of process tracing scope
US20130036330A1 (en) Execution difference identification tool
US10318122B2 (en) Determining event and input coverage metrics for a graphical user interface control instance
US11609772B2 (en) Dynamically generating guided tours for software
Roberts et al. TraceVis: an execution trace visualization tool
Jovic et al. Listener latency profiling: Measuring the perceptible performance of interactive Java applications
US20060206831A1 (en) Methods and apparatus providing custom analysis of test and measurement data
JP2008282174A (ja) 情報処理装置、情報処理方法、および情報処理プログラム
US20050022170A1 (en) Visual debugging interface
Baker et al. Automated usability testing using HUI analyzer

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090302

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110729

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120313

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120614

R150 Certificate of patent or registration of utility model

Ref document number: 5021623

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150622

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250