(57)【要約】【課題】プログラムの実際の実行プロセスをシーケンス図として可視化し、ソースコードが存在しないプログラムではシーケンス図が作成できなかったり、条件分岐等の点からシーケンスが曖昧となってしまう等のプログラムのソースコードからシーケンス図を生成する従来の方法の問題点を解決し、デバッグ作業の効率化、設計矛盾の指摘など、開発効率の改善を図ること。【解決手段】トレース情報生成機能１１により実行されるプログラムをトレースして前記プログラム実行時のトレース情報を生成し、該生成されたトレース情報に基づいて、モデル情報生成機能１２，シーケンス情報生成機能１３により、前記プログラムのシーケンス情報を生成する構成を特徴とする。【選択図】図１
2006018477.tif 000002
【特許請求の範囲】
【請求項１】
実行されるプログラムをトレースして前記プログラム実行時のトレース情報を生成するトレース情報生成手段と、
前記トレース情報生成手段により生成されたトレース情報に基づいて、前記プログラムのシーケンス情報を生成するシーケンス情報生成手段と、
を有することを特徴とするシーケンス情報生成装置。
【請求項２】
前記トレース情報生成手段は、プログラムの実行状態を監視するプログラム実行環境より、メソッドの開始，終了の情報を時系列に沿って取得して出力することを特徴とする請求項１記載のシーケンス情報生成装置。
【請求項３】
前記シーケンス情報生成手段は、前記トレース情報生成手段により生成されたトレース情報を、シーケンス情報に変換可能な、メソッド名，該メソッドに対応するメッセージ送信オブジェクトを示す情報，該メソッドに対応するメッセージ受信オブジェクトの情報が時系列に追加された構成のモデル情報として生成し、該生成されるモデル情報を所定のメタ言語を用いたシーケンス情報に変換することを特徴とする請求項１又は２記載のシーケンス情報生成装置。
【請求項４】
前記トレース情報生成手段は、実行されるマルチスレッド構成のプログラムの実行状態をトレースして前記マルチスレッド構成のプログラムのトレース情報を生成可能なことを特徴とする請求項１〜３のいずれかに記載のシーケンス情報生成装置。
【請求項５】
前記シーケンス情報生成手段により生成されるシーケンス情報に基づいて、シーケンス図を生成するシーケンス図生成手段を設けたことを特徴とする請求項１〜４のいずれかに記載のシーケンス情報生成装置。
【請求項６】
前記シーケンス情報生成手段は、前記トレース情報生成手段により生成されたトレース情報に基づいて、前記シーケンス図生成手段により生成されるシーケンス図の各構成要素の配置情報を含んだシーケンス情報を生成することを特徴とする請求項１〜５記載のシーケンス情報生成装置。
【請求項７】
プログラムを実行可能な情報処理装置におけるシーケンス情報生成方法において、
実行されるプログラムをトレースして前記プログラム実行時のトレース情報を生成するトレース情報生成ステップと、
前記トレース情報生成ステップにより生成されたトレース情報に基づいて、前記プログラムのシーケンス情報を生成するシーケンス情報生成ステップと、
を有することを特徴とするシーケンス情報生成方法。
【請求項８】
請求項７に記載されたシーケンス情報生成方法を実行するためのプログラム。
【請求項９】
請求項７に記載されたシーケンス情報生成方法を実行するためのプログラムをコンピュータが読み取り可能に記憶した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム開発の保守工程における、リバースエンジニアリング作業を自動化するものであり、例えば、オブジェクト指向プログラムにおいては、プログラムやオブジェクトの状態の変化を示すシーケンス図を作成するためのシーケンス情報を生成するシーケンス情報生成装置およびシーケンス情報生成方法およびプログラムおよび記録媒体に関するものである。
【背景技術】
【０００２】
従来より、入力したイベントシーケンスにもとづき、所望の状態遷移図を得る為の状態遷移図作成装置が特許文献１で提案されている。
【０００３】
また、ソースコードから所望のシーケンス図を得る為のシーケンス図作成装置が特許文献２で提案されている。
【特許文献１】特開平１１-２４９００号公報
【特許文献２】特開２００４-９４４９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら特許文献１に記載の状態遷移図作成装置には、プログラムのイベントシーケンスを入力しなければならないという問題があり、例えば、プログラムのソースコードが存在しない状況下（例えば、誤ってソースコードを消去してしまった等の状況下）では、適用不可能であるといった問題があった。
【０００５】
また、特許文献２に記載のシーケンス図作成装置はシーケンス図の作成にソースコードを用いる事から、特許文献１に記載の状態遷移図作成装置と同様の問題があった。
【０００６】
さらに、上記特許文献１，２のように、プログラムのソースコードからシーケンス図を生成した場合、プログラムの実際の実行状態をトレースしているわけではないため、条件分岐等の点からシーケンスが曖昧となってしまい、プログラムのシーケンス上の矛盾点を発見することが困難である等の問題点もあった。
【０００７】
本発明は、上記の問題点を解決するためになされたもので、本発明の目的は、実行されるプログラムをトレースして前記プログラム実行時のトレース情報を生成し、該生成されたトレース情報に基づいて、前記プログラムのシーケンス情報を生成することにより、プログラムの実際の実行プロセスをシーケンス図として可視化することができ、プログラムのソースコードからシーケンス図を生成する従来の方法のように、ソースコードが存在しないプログラムではシーケンス図が作成できなかったり、条件分岐等の点からシーケンスが曖昧となってしまうことがなく、デバッグ作業の効率化、設計矛盾の指摘など、開発効率の改善を図ることができるシーケンス情報生成装置およびシーケンス情報生成方法およびプログラムおよび記録媒体を提供することである。
【課題を解決するための手段】
【０００８】
本発明によれば、実行されるプログラムをトレースして前記プログラム実行時のトレース情報を生成するトレース情報生成手段と、前記トレース情報生成手段により生成されたトレース情報に基づいて、前記プログラムのシーケンス情報を生成するシーケンス情報生成手段とを有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、実行されるプログラムをトレースして前記プログラム実行時のトレース情報を生成し、該生成されたトレース情報に基づいて、前記プログラムのシーケンス情報を生成することにより、プログラムの実際の実行プロセスをシーケンス図として可視化することができ、プログラムのソースコードからシーケンス図を生成する従来の方法のように、条件分岐等の点からシーケンスが曖昧となってしまうことがなく、デバッグ作業の効率化、設計矛盾の指摘など、開発効率の改善を図ることができる等の効果を奏する。
【００１０】
また、プログラムの実行状態をトレースし、プログラムのシーケンス情報を自動生成するため、プログラムの実行状態をトレース（追跡）して、ソースコードが存在しない（誤ってソースコードを消去してしまった，ソースコードが入手不可能な）プログラム・アプリケーションに関するシーケンス情報を取得することができ、さらに、既存のソフトウェアに手を加えることなく、既存ソフトウェアのシーケンス情報を取得することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態を、シーケンス図自動生成装置の実施形態により詳しく説明する。
【００１２】
本実施形態は、スタンドアロンの情報処理装置を想定しているが、これに限らず、ネットワークで構成されたシステム形態にも適用可能である。
【００１３】
〔第１実施形態〕
図１は、本発明の第１実施形態を示すシーケンス情報自動生成装置の機能構成を示す機能ブロック図である。
【００１４】
図１において、３１は入力機能である。この入力機能３１は、シーケンス情報作成対象のプログラム情報の入力を行うためのものである。１０はプログラム実行監視機能である。このプログラム実行監視機能１０は、入力機能３１で入力されたプログラム情報に応じてプログラムを実行して、該実行されるプログラムを監視し、該プログラムの実行時に実際にオブジェクト間で送受信されるイベント（メソッド開始，メソッド終了等）の情報を出力する。
【００１５】
１１はトレース情報生成機能である。このトレース情報生成装置１１は、プログラム実行監視機能１０から出力されるイベントの情報からプログラムの実行状態をトレースしたトレース情報を生成して、トレース情報格納部２１に格納する。
【００１６】
１２はモデル情報生成機能である。このモデル情報生成機能１２は、トレース情報格納部２１に格納されたトレース情報を利用してシーケンス情報のモデル情報を生成して、モデル情報格納部２２に格納する。
【００１７】
１３はシーケンス情報出力機能である。このシーケンス情報出力機能１３は、モデル情報格納部２２に格納されるシーケンス情報のモデル情報からシーケンス情報を作成して、シーケンス情報格納部２３に格納する。３２はシーケンス図表示機能で、このシーケンス図表示機能３２は、シーケンス情報格納部２３に格納されるシーケンス情報に基づいてシーケンス図を表示するものである。また、このシーケンス図表示機能３２は、一般のシーケンス図表示ツール、例えば、Ｒａｔｉｏｎａｌ社の「Ｒｏｓｅ」（商品名），ＳｐａｒｋｓＳｙｓｔｅｍ社の「ＥＡ」（商品名）等に対応する。なお、この一般のシーケンス図表示ツールは、表示されるシーケンス図を印刷可能である。また、このシーケンス図表示機能３２の代わりにシーケンス図印刷機能等を設けてもよい。即ち、シーケンス情報に基づいて視覚可能にシーケンス図を生成する機能であればよく、表示機能であっても印刷機能であってもよい。
【００１８】
なお、本実施形態においていては、一例として対象プログラムがＪａｖａ（登録商標）プログラムである場合について記述する。しかしながら、本発明は、特定の言語で記述されたプログラムには依存しておらず、Ｊａｖａ（登録商標）プログラムのような実行状態のトレースができる言語で記述されたプログラムならば実現可能である。
【００１９】
図２は、本発明のシーケンス情報自動生成装置のハードウェア構成の一例を示すブロック図である。
【００２０】
図２において、４０は本発明のシーケンス情報自動生成装置としてのコンピュータである。４１はＣＰＵである。このＣＰＵ４１は、ＲＯＭ４３又はハードディスク（ＨＤ）４４又は図示しないその他の記録媒体（例えば、フレキシブルディスク，ＣＤ−ＲＯＭ，ＤＶＤ−ＲＯＭ等）に格納されたプログラムをＲＡＭ４２上にロードして実行することにより、コンピュータ４０全体を制御する。ＲＡＭ４２は、ＣＰＵ４１の作業領域として使用される。
【００２１】
４５はＤＢで、このＤＢ４５には、後述するシーケンス情報を生成するためのＸＭＩコードの部品（オブジェクトに対応するＸＭＩコード，メッセージに対応するＸＭＩコード等）やその他の情報が格納されている。
【００２２】
４７は入力装置で、キーボードやマウス等のポインティングデバイス等に相当する。４６は表示装置で、ＣＲＴ，ＬＣＤ等で構成される。
【００２３】
以下、図３〜図１２を参照して、図１，図２に示したシーケンス情報自動生成装置におけるシーケンス情報自動生成処理について説明する。
【００２４】
図３は、本発明のシーケンス情報自動生成装置における第１の制御処理手順の一例を示すフローチャートであり、シーケンス情報自動生成処理に対応する。なお、このフローチャートの処理は、図２に示したＣＰＵ４１がＨＤ４４等に格納されたプログラムをＲＡＭ４２にロードして実行することにより実現される。また、図中、Ｓ１０１〜Ｓ１０５は各ステップを示す。さらに、この処理を実行することにより、入力されたプログラムに対応したシーケンス情報を自動生成することができる。
【００２５】
まず、ステップＳ１０１において、ＣＰＵ４１は、対象プログラムの情報をユーザインタフェースの機能を利用して作成する。具体的には、図４に示すユーザインタフェースを表示装置４６に表示制御し、ユーザにプログラム情報を入力させる（図１に示した入力機能３１に相当）。
【００２６】
図４は、シーケンス情報作成対象プログラムの情報を入力するためのユーザインタフェースの一例を示す模式図である。
【００２７】
図４において、Ｕ１０１は出力ファイル名入力欄で、シーケンス情報作成処理により作成されるシーケンス情報を出力するファイル（ＸＭＩ形式）のファイル名を指定するためのものである。
【００２８】
Ｕ１０２はルートフォルダ入力欄で、本実施形態のシーケンス情報作成処理対象とするＪａｖａ（登録商標）プログラムのルートフォルダを指定するためのものである。
【００２９】
Ｕ１０３はメインクラス入力欄で、ルートフォルダ入力欄１０２で指定されたＪａｖａ（登録商標）プログラムの起動に必要なメインクラスのクラス名を指定するためのものである。
【００３０】
Ｕ１０４は実行ボタンで、このボタンを押下することにより、このユーザインタフェースでの入力を有効に、出力ファイル名入力欄Ｕ１０１，ルートフォルダ入力欄Ｕ１０２，メインクラス入力欄１０３で指定された対象プログラム情報に対する、シーケンス情報作成処理が開始される。
【００３１】
以下、図３のフローチャートの説明に戻る。
【００３２】
ステップＳ１０１で、対象プログラム情報が入力されると（ＯＫボタンＵ１０４が押下されると）、ステップＳ１０２において、ＣＰＵ４１は、ステップＳ１０１で入力された対象プログラム情報に基づいて対象プログラムを実行状態がトレース可能な状態で起動する（図１に示したプログラム実行監視機能１０に相当）。例えば、Ｊａｖａ（登録商標）言語の開発環境にはＪＰＤＡ（Ｊａｖａ（登録商標）  Ｐｌａｔｔｆｏｒｍ  Ｄｅｂｕｇｇｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ）と呼ばれるプログラム実行状態をデバッグする環境が提供されており、本実施形態においては、ＪＰＤＡを通してプログラムを起動する。このＪＰＤＡは、実行されるプログラムの実行状態を監視して、メソッドの開始，終了等の情報を時系列に沿って出力可能とする。なお、本シーケンス情報作成処理で作成されるシーケンス情報から、Ｊａｖａ（登録商標）実行環境において標準で提供されているメソッドや、シーケンスの対象にしたくないメソッドなどを省くこともできる。これによって、プログラムのメソッドコール全てを含むような冗長なシーケンス情報の生成を回避できる。例えば、Ｊａｖａ（登録商標）言語において標準パッケージとして提供されている「ｊａｖａ（登録商標）.ｌａｎｇ」パッケージ内に含まれる「Ｓｙｓｔｅｍ.ｏｕｔ.ｐｒｉｎｔｌｎ（）」などのメソッドはシーケンス図上に表現する必要はないことが多い。その際、ＪＰＤＡに対して「ｊａｖａ（登録商標）.ｌａｎｇ」パッケージのトレースを行なわない事を宣言できる。この機能を利用すれば、上記シーケンスの対象にしたくないメソッドなどをシーケンス情報から省く機能を実現できる。
【００３３】
次に、ステップＳ１０３において、ＣＰＵ４１は、起動されたプログラムを上記ＪＰＤＡを介してトレースし、トレース情報を生成する（図１に示したプログラム実行監視機能１０及びトレース情報生成機能１１に相当）。なお、ステップＳ１０３の詳細な説明は後述する図５に示す。また、ステップＳ１０３では、生成したトレース情報を、図２に示したＨＤ４４内にトレース情報ファイル（図１に示したトレース情報格納部２１に相当）として格納する。
【００３４】
次に、ステップＳ１０４において、ＣＰＵ４１は、ステップＳ１０３で生成されたトレース情報に基づいて、対象プログラムのモデル情報を生成する（図１に示したモデル情報生成機能１２に相当）。なお、ステップＳ１０４の詳細な説明は後述する図７に示す。また、ステップＳ１０４では、生成したモデル情報を、図２に示したＨＤ４４内にモデル情報ファイル（図１に示したモデル情報格納部２２に相当）として格納する。
【００３５】
次に、ステップＳ１０５において、ＣＰＵ４１は、ステップＳ１０４で生成されたモデル情報に基づいて、シーケンス情報を出力する（図１に示したシーケンス情報出力機能１３に相当）。本実施形態においては、このシーケンス情報の出力には、ＸＭＩ（ＸＭＬ  Ｍｅｔａｄａｔａ  Ｉｎｔｅｒｃｈａｎｇｅ）を利用する。よって、上記ステップＳ１０５では、ＸＭＩ形式のシーケンス情報を出力するものとする。また、ステップＳ１０３ででは、シーケンス情報を図２に示したＨＤ４４内に図４の出力ファイル名入力欄Ｕ１０１で指定した出力ファイル名のファイル（図１に示したシーケンス情報格納部２３に相当）として格納する。
【００３６】
図５は、本発明のシーケンス情報自動生成装置における第２の制御処理手順の一例を示すフローチャートであり、図３のステップＳ１０３のトレース情報の生成処理（対象プログラムをトレースしてトレース情報を生成する処理）に対応する。なお、このフローチャートの処理は、図２に示したＣＰＵ４１がＨＤ４４等に格納されたプログラムをＲＡＭ４２にロードして実行することにより実現される。また、図中、Ｓ２０４〜Ｓ２０９は各ステップを示す。
【００３７】
まず、ステップＳ２０４において、プログラム実行監視機能１０（前述のＪＰＤＡに相当（ＣＰＵ４１が実行））より、トレース情報生成機能１１（ＣＰＵ４１が実行）が、「メソッド開始」のイベント（時系列）等を受け取ると、ステップＳ２０５において、トレース情報生成機能１１は、該受け取った「メソッド開始」のイベントに基づいてトレース情報（例えば、後述する図６に示すＴＲ００１〜ＴＲ００４）をＲＡＭ４２のメモリ空間に生成し、ステップＳ２０６において、トレース情報生成機能１１は、該メモリ空間に生成されたトレース情報をプログラムのトレース情報を格納するファイル（図６）（トレース情報格納部２１）に追記する。
【００３８】
また、ステップＳ２０７において、プログラム実行監視機能１０より、トレース情報生成機能１１が、「メソッド終了」のイベントを受け取ると、ステップＳ２０８において、トレース情報生成機能１１は、該受け取った「メソッド終了」のイベントに基づいてトレース情報（例えば、図６に示すＴＲ００５〜ＴＲ００８）をＲＡＭ４２のメモリ空間に生成し、ステップＳ２０９において、トレース情報生成機能１１は、該生成したトレース情報をプログラムのトレース情報を表現するファイル（図６）（トレース情報格納部２１）に追記していく。
【００３９】
これらの処理をプログラムトレース中に繰り返すことで、プログラムのトレース情報を生成する。
【００４０】
なお、上述したように、本実施形態においていては、一例として対象プログラムがＪａｖａ（登録商標）プログラムである場合について記述している。しかしながら、本発明は、特定の言語で記述されたプログラムには依存しておらず、Ｊａｖａ（登録商標）プログラムのような実行状態のトレースができる言語で記述されたプログラムならば実現可能である。例えば、上記ＪＰＤＡと同様に、実行されるプログラムの実行状態を監視して、メソッドの開始，終了等の情報を時系列に沿って出力可能なデバッガ等の実行監視環境を有するプログラムであれば、どのようなプログラムであってもよい。この場合、前記デバッガがプログラム実行監視機能１０となる。
【００４１】
図６は、図４に示したトレース情報生成処理により生成され出力されたトレース情報ファイルの内容の一例を示す模式図である。
【００４２】
図６において、ＴＲ００１はプログラム内においてメソッドが開始されたことを表し、以下のＴＲ００２，ＴＲ００３，ＴＲ００４はそれぞれ１つのメソッドの情報を表している。詳細には、ＴＲ００２は、メソッド名に相当する。また、ＴＲ００３は、メソッドをコールされたオブジェクトのクラス名である。さらに、ＴＲ００３は、メソッドをコールされたオブジェクトのオブジェクト識別キー値を示すメッセージ受信オブジェクト識別キー値である。このオブジェクト識別キー値は、対象プログラム内においてオブジェクト（インスタンス）を一意に識別するキー値であり、この値によって出現オブジェクトを管理する事で、同一クラスに複数インスタンスが生成された場合においても、それらを識別したシーケンス情報を生成することを可能にしている。
【００４３】
また、ＴＲ００５は、プログラム内においてメソッドが終了したことを表し、以下のＴＲ００６，ＴＲ００７，ＴＲ００８はそれぞれ１つのメソッドの情報を表している。詳細には、ＴＲ００６は、メソッド名に相当する。また、ＴＲ００７は、メソッドをコールされたオブジェクトのクラス名である。さらに、ＴＲ００８は、そのメソッドをコールされたオブジェクトを一意に識別する為のキー値である。
【００４４】
図７は、本発明のシーケンス情報自動生成装置における第３の制御処理手順の一例を示すフローチャートであり、図３のステップＳ１０４のモデル情報の生成処理（図６に示したトレース情報ファイルを読み込みモデル情報を生成する処理）に対応する。なお、このフローチャートの処理は、図２に示したＣＰＵ４１がＨＤ４４等に格納されたプログラムをＲＡＭ４２にロードして実行することにより実現される。また、図中、Ｓ３０１〜Ｓ３１６は各ステップを示す。
【００４５】
まず、ステップＳ３０１において、ＣＰＵ４１は、トレース情報ファイル（図６）より１行分の読み込を行ない、ＲＡＭ４２上に確保される変数ｌｉｎｅに格納する。
【００４６】
次に、ステップＳ３０２において、ＣＰＵ４１は、変数「ｌｉｎｅ」の値が"[ＥＮＴＲＹ]"と同等かどうかを判定する。
【００４７】
ステップＳ３０２において、ＣＰＵ４１が変数「ｌｉｎｅ」の値が"[ＥＮＴＲＹ]"と同等であると判定した場合には、ステップＳ３０３に進み、以降の処理はメソッドの開始情報を取得する処理となり、一方、ＣＰＵ４１が変数「ｌｉｎｅ」の値が"[ＥＮＴＲＹ]"と同等でないと判定した場合には、ステップＳ３１３に進み、以降の処理はメソッドの終了情報を取得する処理となる。まずは、前者の場合について示す。
【００４８】
ステップＳ３０３において、ＣＰＵ４１は、トレース情報ファイルから１行読み込み、該読み込んだ行のデータをＲＡＭ４２上に確保される変数「メソッド名」に格納する。
【００４９】
次に、ステップＳ３０４において、ＣＰＵ４１は、ＲＡＭ４２上に確保される変数「メッセージ受信者」の値がＮＵＬＬかどうかを判定する。なお、最初にステップＳ３０４の処理を行う場合は変数「メッセージ受信者」の値がＮＵＬＬとなっている。なお、このフローチャートにおいて、上記変数「メッセージ受信者」は、メソッドをコールされたオブジェクトを格納するための変数であり、また、ＲＡＭ４２上に確保される変数「メッセージ送信者」は、メソッドコールしたオブジェクトを格納するための変数である。
【００５０】
ステップＳ３０４で、ＣＰＵ４１は、変数「メッセージ受信者」の値がＮＵＬＬであると判定した場合には、ステップＳ３０５において、ＣＰＵ４１は、トレース情報ファイルをから次行を１行読み込み、該読み込んだ行のデータを変数「メッセージ受信者」に格納する。なお、変数「メッセージ受信者」の値がＮＵＬＬであると判定した場合は、最初にステップＳ３０４の処理を行う場合であるため、ＣＰＵ４１は、メッセージ受信者がこのメソッドのメッセージ送信者と同一であると判断する。そして、ステップＳ３０６において、ＣＰＵ４１は、変数「メッセージ送信者」に、変数「メッセージ受信者」の値を格納し、ステップＳ３０７に進む。
【００５１】
一方、ステップＳ３０４で、ＣＰＵ４１が、変数「メッセージ受信者」の値がＮＵＬＬでないと判定した場合には、ステップＳ３１１において、ＣＰＵ４１は、変数「メッセージ送信者」に変数「メッセージ受信者」の値（即ち、前のメソッドのメッセージ受信者の値）を格納する。
【００５２】
次に、ステップＳ３１２において、ＣＰＵ４１は、トレース情報ファイルから次行を１行読み込み、該読み込んだ行のデータを変数「メッセージ受信者」に格納し、ステップＳ３０７に移行する。
【００５３】
次に、ステップＳ３０７において、ＣＰＵ４１は、トレース情報ファイルから次行を１行読み込み、該読み込んだ行のデータをＲＡＭ４２上に確保される変数「メッセージ受信オブジェクト識別キー値」に格納する。
【００５４】
次に、ステップＳ３０８においては、ＣＰＵ４１は、変数「メソッド名」の値，変数「メッセージ送信者」の値，変数「メッセージ受信者」の値，変数「メッセージ受信オブジェクト識別キー値」の値を、メソッド情報として、ＲＡＭ４２上のマップ（図８（ａ））に登録する。
【００５５】
次に、ステップＳ３０９において、ＣＰＵ４１は、変数「メソッド名」の値，変数「メッセージ送信者」の値，変数「メッセージ受信者」の値から構成されるメソッド情報を、モデル情報として、ＨＤ４４内のモデル情報ファイル（後述する図８（ｂ））（図１のモデル情報格納部２２）に追加（時系列に追加）して、ステップＳ３１０に進む。
【００５６】
一方、ステップＳ３０２で、ＣＰＵ４１が変数「ｌｉｎｅ」の値が"[ＥＮＴＲＹ]"と同等でないと判定した場合（即ち"［ＥＸＩＴ］"の場合）には、ステップＳ３１３に進み、ＣＰＵ４１は、トレース情報ファイルから１行読み込み、該読み込んだ行のデータをＲＡＭ４２上に確保される変数「メソッド名」に格納する。
【００５７】
次に、ステップＳ３１４において、ＣＰＵ４１は、トレース情報ファイルから次行を１行読み込み、該読み込んだ行のデータをＲＡＭ４２上に確保される変数「メッセージ送信者」に格納する。
【００５８】
次に、ステップＳ３１５において、ＣＰＵ４１は、トレース情報ファイルから次行を１行読み込み、該読み込んだ行のデータを変数「メッセージ受信オブジェクト識別キー値」に格納する。
【００５９】
次に、ステップＳ３１６において、ＣＰＵ４１は、ステップＳ３１４でセットした変数「メソッド名」の値，ステップＳ３１５でセットした変数「メッセージ受信オブジェクト識別キー値」の値の組み合わせに対応するメッセージ情報をマップ（図８（ａ））の後方より（新しい情報から）検索し、該検索されたメッセージ情報内の「メッセージ送信者」の値を、変数「メッセージ受信者」に格納し、ステップＳ３０９に進み、ＣＰＵ４１は、変数「メソッド名」の値，変数「メッセージ送信者」の値，変数「メッセージ受信者」の値を、モデル情報として、ＨＤ４４内のモデル情報ファイル（図８（ｂ））に追加して、ステップＳ３０９に進む。
【００６０】
次に、ステップＳ３１０において、ＣＰＵ４１は、トレース情報ファイルに次の行が存在するか否かを判定し、存在すると判定した場合には、ステップＳ３０１の処理に戻る。
【００６１】
一方、ステップＳ３１０で、ＣＰＵ４１が、トレース情報ファイルに次の行が存在しない（ＥＯＦ）と判定した場合には、本フローチャートの処理を終了する。
【００６２】
図８は、図７に示したモデル情報生成処理により生成された情報の内容の一例を示す模式図である。なお、図８（ａ）は図７のステップＳ３０８で登録されたマップに対応し、図８（ｂ）は図７のステップＳ３０９で出力されたモデル情報ファイルに対応する。
【００６３】
ここで、図６のトレース情報ファイルを用いて、図７のフローチャートに示した処理により、図８（ｂ）のモデル情報ファイルが生成される様子を説明する。
【００６４】
まず、ステップＳ３０１において、ＣＰＵ４１は、トレース情報ファイルの１行目"［ＥＮＴＲＹ］"を読み込み、変数ｌｉｎｅに格納する。
【００６５】
次に、ステップＳ３０２において、ＣＰＵ４１は、変数「ｌｉｎｅ」の値が"[ＥＮＴＲＹ]"と同等であると判定し、ステップＳ３０３において、ＣＰＵ４１は、トレース情報ファイルの２行目"ｍａｉｎ"を読み込み、変数「メソッド名」に格納する。
【００６６】
次に、ステップＳ３０４において、ＣＰＵ４１は、変数「メッセージ受信者」の値がＮＵＬＬであると判定し、ステップＳ３０５において、ＣＰＵ４１は、トレース情報ファイルをから３行目"Ｏｂｊｅｃｔ１"を読み込み、変数「メッセージ受信者」に格納する。
【００６７】
つぎに、ステップＳ３０６において、ＣＰＵ４１は、変数「メッセージ送信者」に、変数「メッセージ受信者」の値（即ち、"Ｏｂｊｅｃｔ１"）を格納する。
【００６８】
次に、ステップＳ３０７において、ＣＰＵ４１は、トレース情報ファイルから４行目"１００８２９０４"を読み込み、「オブジェクト識別キー値」に格納する。
【００６９】
次に、ステップＳ３０８においては、ＣＰＵ４１は、変数「メソッド名」の値"ｍａｉｎ"，変数「メッセージ送信者」の値"Ｏｂｊｅｃｔ１"，変数「メッセージ受信者」の値"Ｏｂｊｅｃｔ１"，変数「メッセージ受信オブジェクト識別キー値」の値"１００８２９０４"を、メソッド情報として、マップに登録する（図８（ａ）のＭＰ００１）。
【００７０】
次に、ステップＳ３０９において、ＣＰＵ４１は、変数「メソッド名」の値"ｍａｉｎ"，変数「メッセージ送信者」の値"Ｏｂｊｅｃｔ１"，変数「メッセージ受信者」の値"Ｏｂｊｅｃｔ１"を、モデル情報として、ＨＤ４４内のモデル情報ファイルに追加する（図８（ｂ）のＭＤ００１）。
【００７１】
次に、ステップＳ３１０において、ＣＰＵ４１は、トレース情報ファイルはまだＥＯＦでないので、ステップＳ３０１の処理に戻る。
【００７２】
そして、再び、ステップＳ３０１において、ＣＰＵ４１は、トレース情報ファイルより５行目"［ＥＮＴＲＹ］"を読み込みを行ない、変数ｌｉｎｅに格納する。
【００７３】
次に、ステップＳ３０２において、ＣＰＵ４１は、変数「ｌｉｎｅ」の値が"[ＥＮＴＲＹ]"と同等であるので、ステップＳ３０３において、ＣＰＵ４１は、トレース情報ファイルの６行目"＜ｉｎｉｔ＞"を読み込み、変数「メソッド名」に格納する。
【００７４】
次に、ステップＳ３０４において、ＣＰＵ４１は、変数「メッセージ受信者」の値"Ｏｂｊｅｃｔ１"はＮＵＬＬでないので、ステップＳ３１１において、ＣＰＵ４１は、変数「メッセージ受信者」の値"Ｏｂｊｅｃｔ１"を変数「メッセージ送信者」に格納する。
【００７５】
次に、ステップＳ３１２において、ＣＰＵ４１は、トレース情報ファイルの７行目"Ｏｂｊｅｃｔ２"を読み込み、変数「メッセージ受信者」に格納する。
【００７６】
次に、ステップＳ３０７において、ＣＰＵ４１は、トレース情報ファイルから８行目"１００８４０８０"を読み込み、「オブジェクト識別キー値」に格納する。
【００７７】
次に、ステップＳ３０８においては、ＣＰＵ４１は、変数「メソッド名」の値"＜ｉｎｉｔ＞"，変数「メッセージ送信者」の値"Ｏｂｊｅｃｔ１"，変数「メッセージ受信者」の値"Ｏｂｊｅｃｔ２"，変数「メッセージ受信オブジェクト識別キー値」の値"１００８４０８０"を、メソッド情報として、マップに登録する（図８（ａ）のＭＰ００２）。
【００７８】
次に、ステップＳ３０９において、ＣＰＵ４１は、変数「メソッド名」の値"＜ｉｎｉｔ＞"，変数「メッセージ送信者」の値"Ｏｂｊｅｃｔ１"，変数「メッセージ受信者」の値"Ｏｂｊｅｃｔ２"を、モデル情報として、ＨＤ４４内のモデル情報ファイルに追加する（図８（ｂ）のＭＤ００２）。
【００７９】
次に、ステップＳ３１０において、ＣＰＵ４１は、トレース情報ファイルはまだＥＯＦでないので、ステップＳ３０１の処理に戻る。
【００８０】
そして、再び、ステップＳ３０１において、ＣＰＵ４１は、トレース情報ファイルより９行目"［ＥＸＩＴ］"を読み込み、変数ｌｉｎｅに格納する。
【００８１】
次に、ステップＳ３０２において、ＣＰＵ４１は、変数「ｌｉｎｅ」の値が"［ＥＸＩＴ］"であるので、ステップＳ３１３において、ＣＰＵ４１は、トレース情報ファイルの１０行目"＜ｉｎｉｔ＞"を読み込み、変数「メソッド名」に格納する。
【００８２】
次に、ステップＳ３１４において、ＣＰＵ４１は、トレース情報ファイルから１１行目"Ｏｂｊｅｃｔ２"を読み込み、該読み込んだ行のデータを変数「メッセージ送信者」に格納する。
【００８３】
次に、ステップＳ３１５において、ＣＰＵ４１は、トレース情報ファイルから１２行目"１００８４０８０"を読み込み、変数「メッセージ受信オブジェクト識別キー値」に格納する。
【００８４】
次に、ステップＳ３１６において、ＣＰＵＹ４１は、変数「メソッド名」の値"＜ｉｎｉｔ＞"，変数「メッセージ受信オブジェクト識別キー値」の値"１００８４０８０"の組み合わせに対応するメッセージ情報をマップ（図８（ａ））の後方より検索し、該検索されたメッセージ情報ＭＰ００２内の「メッセージ送信者」の値"Ｏｂｊｅｃｔ１"を、変数「メッセージ受信者」に格納する。
【００８５】
次に、ステップＳ３０９において、ＣＰＵ４１は、変数「メソッド名」の値"＜ｉｎｉｔ＞"，変数「メッセージ送信者」の値"Ｏｂｊｅｃｔ２"，変数「メッセージ受信者」の値"Ｏｂｊｅｃｔ１"を、モデル情報として、ＨＤ４４内のモデル情報ファイルに追加する（図８（ｂ）のＭＤ００３）。
【００８６】
次に、ステップＳ３１０において、ＣＰＵ４１は、トレース情報ファイルはまだＥＯＦでないので、ステップＳ３０１の処理に戻る。
【００８７】
この後、同様に処理を繰り返し、ステップＳ３１０において、ＣＰＵ４１が、トレース情報ファイルがＥＯＦであると判断すると、処理を終了する。
【００８８】
以上の処理により、図６に示したトレース情報ファイルより、図８（ｂ）に示したモデル情報ファイルが生成される。
【００８９】
図９は、本発明のシーケンス情報自動生成装置における第４の制御処理手順の一例を示すフローチャートであり、図３のステップＳ１０５のシーケンス情報の生成処理（図８（ｂ）に示したモデル情報ファイルを読み込みシーケンス情報を出力する処理）に対応する。なお、このフローチャートの処理は、図２に示したＣＰＵ４１がＨＤ４４等に格納されたプログラムをＲＡＭ４２にロードして実行することにより実現される。また、図中、Ｓ６０１〜Ｓ６０５は各ステップを示す。
【００９０】
まず、ステップＳ６０１において、ＣＰＵ４１は、モデル情報ファイル（図８（ｂ））をＲＡＭ４２上に読み込み、後述する図１１に示すシーケンス図に登場する全てのオブジェクト，メッセージの情報を取得し、ＲＡＭ４２内に対応プログラム内の出現順に格納する。図８（ｂ）に示した例では、オブジェクトとして"Ｏｂｊｅｃｔ１"，"Ｏｂｊｅｃｔ１"、メッセージとして"ｍａｉｎ"，"＜ｉｎｉｔ＞"，"ｕｐｄａｔｅ"を取得する
次に、ステップＳ６０２において、ＣＰＵ４１は、ステップＳ６０１で取得したオブジェクトの情報を対応プログラム内の出現順に１つ取り出し、該オブジェクト（例えば、後述する図１１のＳＱ００１，ＳＱ００２）に対応するＸＭＩコード（図１０のＸＭＩ００１，ＸＭＩ００２）を生成し、シーケンス情報ファイル（後述する図１０）に出力する。
【００９１】
なお、ステップＳ６０２のオブジェクトに対応するＸＭＩコードの作成処理，後述するステップＳ６０４に示すメッセージに対応するＸＭＩコードの作成処理では、例えば、図２に示したＨＤ４４内のＤＢ４５に格納されるＸＭＩコードの部品（ヘッダ部分のＸＭＩコードや、オブジェクトに対応するＸＭＩコード，メッセージに対応するＸＭＩコード）を読み出して、モデル情報ファイルから読み出した情報に対応させて、個々のオブジェクト，メッセージに対応するように編集し（例えば、名称，送信者，受信者等の編集を行い）、モデル情報ファイルから読み出したオブジェクト，メッセージに対応するＸＭＩコードを生成するものとする。
【００９２】
次に、ステップＳ６０３において、ＣＰＵ４１は、まだＸＭＩコードを生成していないオブジェクトが存在するか否かを判定し、存在すると判定した場合には、ステップＳ６０２に戻り、次のオブジェクトに対する処理を行う。
【００９３】
一方、ステップＳ６０３で、ＣＰＵ４１が、もうＸＭＩコードを生成していないオブジェクトは存在しないと判定した場合には、ステップＳ６０４に進む。
【００９４】
次に、ステップＳ６０４において、ＣＰＵ４１は、ステップＳ６０１で取得したメッセージの情報を対応プログラム内の出現順に１つ取り出し、該メッセージ（図１１のＳＱ００３，ＳＱ００４，ＳＱ００５）に対応するＸＭＩコード（図１０のＸＭＩ０００３，ＸＭＩ０００４，ＸＭＩ０００５）を生成し、シーケンス情報ファイル（後述する図１０）に出力する。
【００９５】
次に、ステップＳ６０５において、ＣＰＵ４１は、まだＸＭＩコードを生成していないメッセージが存在するか否かを判定し、存在すると判定した場合には、ステップＳ６０４に戻り、次のメッセージに対する処理を行う。
【００９６】
一方、ステップＳ６０５で、ＣＰＵ４１が、もうＸＭＩコードを生成していないメッセージは存在しないと判定した場合には、本フローチャートの処理を終了する。
【００９７】
図１０は、図９に示したシーケンス情報の生成処理（図３のステップＳ１０５）で生成されるシーケンス情報の一例を示す模式図である。
【００９８】
図１０に示すように、シーケンス情報は、ＸＭＩ形式で記述したファイルとして出力され、図１のシーケンス図表示機能３２により図１１に示すようなシーケンス図として表示可能である。
【００９９】
図１１は、図１０に示したシーケンス情報ファイルに基づいて、図１のシーケンス図表示機能３２により表示装置４６に表示されるシーケンス図の一例を示す模式図である。
【０１００】
図１１において、ＳＱ００１，ＳＱ００２はオブジェクトを示す。また、ＳＱ００３〜ＳＱ００５は、オブジェクトＳＱ００１，ＳＱ００２間で送受信されるメッセージを示す。
【０１０１】
また、８０１は、オブジェクトの生命線を示し、８０２は、オブジェクトの活性区間を示す。
【０１０２】
図１２は、図１０に示したシーケンス情報内のＸＭＩ形式のコードと、図１１に示したシーケンス図との対応関係を示す図である。
【０１０３】
図１２に示すように、図１０に示したＸＭＩ形式のコードＸＭ００１と、図１１に示したシーケンス図内のＳＱ００１とがオブジェクト"Ｏｂｊｅｃｔ１"として対応する。
【０１０４】
また、図１０に示したＸＭＩ形式のコードＸＭ００２と、図１１に示したシーケンス図内のＳＱ００２とがオブジェクト"Ｏｂｊｅｃｔ２"として対応する。
【０１０５】
さらに、図１０に示したＸＭＩ形式のコードＸＭ００３と、図１１に示したシーケンス図内のＳＱ００３とがメッセージ"ｍａｉｎ"として対応する。
【０１０６】
また、図１０に示したＸＭＩ形式のコードＸＭ００４と、図１１に示したシーケンス図内のＳＱ００４とがメッセージ"＜ｉｎｉｔ＞"として対応する。
【０１０７】
さらに、図１０に示したＸＭＩ形式のコードＸＭ００５と、図１１に示したシーケンス図内のＳＱ００５とがメッセージ"ｕｐｄａｔｅ"として対応する。
【０１０８】
なお、本実施形態では、図１１に示したシーケンス図の表示を、図１０に示したシーケンス情報ファイル（ＸＭＩファイル）の生成完了後に行っているが、これによらず対象プログラムの進行にあわせて、シーケンス図をリアルタイムでシーケンス図表示機能３２により表示していくように構成してもよい。
【０１０９】
以上示したように、本実施形態によれば、プログラムの実際の実行プロセスを可視化することが可能となり、プログラムのソースコードからシーケンス図を生成する従来の方法のように、条件分岐等の点からシーケンスが曖昧となってしまうことがなく、デバッグ作業の効率化、設計矛盾の指摘など、開発効率の改善を図ることができる。
【０１１０】
また、プログラムのソースコードが存在しない状況下（例えば、誤ってソースコードを消去してしまった等の状況下）であっても、シーケンス図を作成することが可能となる。
【０１１１】
〔第２実施形態〕
上記第１実施形態では、プログラム構成がシングルスレッド構成である場合にのみ対応する構成について説明したが、マルチスレッド構成のプログラムにも対応可能に構成してもよい。以下、その場合の実施形態について説明する。
【０１１２】
本発明をマルチスレッドで構成されるプログラムのシーケンス情報生成に適用させるには、上記第１実施形態においてトレース情報生成機能によって生成されるトレース情報（図６に示す形式）を以下の図１３に示す形式に変更し、さらに、上記第１実施形態において図７に示されるモデル情報出力処理を以下の図１４に示すフローチャートに示す処理に変更することで可能となる。
【０１１３】
以下、図１３，図１４を参照して、第２実施形態の構成について上記第１実施形態の構成との差異点を中心に説明する。
【０１１４】
図１３は、図４に示したトレース情報生成処理により生成され出力されたトレース情報ファイルの内容の一例を示す模式図である。
【０１１５】
図１３に示すトレース情報ファイルが、図６に示したトレース情報ファイルとの異なる点は、メッセージの送信者（メソッドをコールしたオブジェクト）を情報として保存している点にある。
【０１１６】
なお、新たなトレース生成処理のフローチャートは示していないが、図５に示した第１実施形態のトレース情報生成処理に変更を加え、図５のステップＳ２０６，ステップＳ２０９の該処理により出力する情報の形式を変更している。上記第１実施形態で出力している情報に加え、メッセージ送信者の情報もトレース情報として出力するように変更するものとする。
【０１１７】
図１３に示した例では、ＴＲ１０３がメッセージ送信者（メソッドをコールしたオブジェクトのクラス名）にあたり、ＴＲ１０６がそのメッセージ送信オブジェクトを一意に識別する為のキー値（即ち、メッセージ送信オブジェクト識別キー値）となる。
【０１１８】
また、ＴＲ１０１は、図６に示したＴＲ００１と同様に、プログラム内でメソッドが開始されたことを表し、以下のＴＲ１０２，ＴＲ１０３，ＴＲ１０４，ＴＲ１０５，ＴＲ１０６はそれぞれ１つのメソッドの情報を表している。詳細には、ＴＲ１０２は、図６に示したＴＲ００２と同様に、メソッド名に相当する。また、ＴＲ１０３，ＴＲ１０４は、上述したように、メッセージ送信者，メッセージ送信オブジェクト識別キー値を示す。さらに、ＴＲ１０５，ＴＲ１０６は、図６に示したＴＲ００３，ＴＲ００４と同様に、メッセージ受信者，メッセージ受信オブジェクト識別キー値を示す。
【０１１９】
図１４は、本発明のシーケンス情報自動生成装置における第５の制御処理手順の一例を示すフローチャートであり、図３のステップＳ１０４のモデル情報の生成処理（マルチスレッド構成のプログラムに対応したモデル情報生成処理）に対応する。なお、このフローチャートの処理は、図２に示したＣＰＵ４１がＨＤ４４等に格納されたプログラムをＲＡＭ４２にロードして実行することにより実現される。また、図中、Ｓ４０１〜Ｓ４１４は各ステップを示す。
【０１２０】
本フローチャートの処理が、図７に示したフローチャートの処理と異なる点は、トレース情報ファイルより変数「メッセージ送信者」を設定する点にある。図７に示したフローチャートの処理では、プログラム内の前回のメッセージ受信者を変数「メッセージ送信者」に設定していたが、これはシングルスレッド構成のプログラムを対象に置いた為である。
【０１２１】
以下、本発明のマルチスレッド構成のプログラムに対応したモデル情報生成処理について詳細に説明する。
【０１２２】
まず、ステップＳ４０１において、ＣＰＵ４１は、トレース情報ファイル（図１３）より１行分の読み込を行ない、ＲＡＭ４２上に確保される変数ｌｉｎｅに格納する。
【０１２３】
次に、ステップＳ４０２において、ＣＰＵ４１は、変数「ｌｉｎｅ」の値が"[ＥＮＴＲＹ]"と同等かどうかを判定する。
【０１２４】
ステップＳ４０２において、ＣＰＵ４１が変数「ｌｉｎｅ」の値が"[ＥＮＴＲＹ]"と同等であると判定した場合には、ステップＳ４０３に進み、以降の処理はメソッドの開始情報を取得する処理となり、一方、ＣＰＵ４１が変数「ｌｉｎｅ」の値が"[ＥＮＴＲＹ]"と同等でないと判定した場合には、ステップＳ４１４に進み、以降の処理はメソッドの終了情報を取得する処理となる。まずは、前者の場合について示す。
【０１２５】
ステップＳ４０３において、ＣＰＵ４１は、トレース情報ファイルから１行読み込み、該読み込んだ行のデータをＲＡＭ４２上に確保される変数「メソッド名」に格納する。
【０１２６】
次に、ステップＳ４０４において、ＣＰＵ４１は、トレース情報ファイルから１行読み込み、該読み込んだ行のデータをＲＡＭ上に確保される変数「メッセージ送信者」に格納する。次に、ステップＳ４０５において、ＣＰＵ４１は、トレース情報ファイルをから次行を１行読み込み、該読み込んだ行のデータをＲＡＭ上に確保される変数「メッセージ送信オブジェクト識別キー値」に格納する。
【０１２７】
次に、ステップＳ４０６において、ＣＰＵ４１は、トレース情報ファイルをから次行を１行読み込み、該読み込んだ行のデータをＲＡＭ上に確保される変数「メッセージ受信者」に格納する。次に、ステップＳ４０７において、ＣＰＵ４１は、トレース情報ファイルをから次行を１行読み込み、該読み込んだ行のデータをＲＡＭ上に確保される変数「メッセージ受信オブジェクト識別キー値」に格納する。
【０１２８】
次に、ステップＳ４０８においては、ＣＰＵ４１は、変数「メソッド名」の値，変数「メッセージ送信者」の値，変数「メッセージ送信オブジェクト識別キー値」の値を、変数「メッセージ受信者」の値，変数「メッセージ受信オブジェクト識別キー値」の値を、メソッド情報として、ＲＡＭ４２上のマップ（図１５（ａ））に登録する。
【０１２９】
次に、ステップＳ４０９において、ＣＰＵ４１は、変数「メソッド名」の値，変数「メッセージ送信者」の値，変数「メッセージ受信者」の値を、モデル情報として、ＨＤ４４内のモデル情報ファイル（後述する図１５（ｂ））（図１のモデル情報格納部２２）に追加して、ステップＳ４１０に進む。
【０１３０】
一方、ステップＳ４０２で、ＣＰＵ４１が変数「ｌｉｎｅ」の値が"[ＥＮＴＲＹ]"と同等でないと判定した場合（即ち"［ＥＸＩＴ  ］"の場合）には、ステップＳ４１１に進み、ＣＰＵ４１は、トレース情報ファイルから１行読み込み、該読み込んだ行のデータをＲＡＭ４２上に確保される変数「メソッド名」に格納する。
【０１３１】
次に、ステップＳ４１２において、ＣＰＵ４１は、トレース情報ファイルから次行を１行読み込み、該読み込んだ行のデータをＲＡＭ４２上に確保される変数「メッセージ送信者」に格納する。
【０１３２】
次に、ステップＳ４１３において、ＣＰＵ４１は、トレース情報ファイルから次行を１行読み込み、該読み込んだ行のデータを変数「メッセージ受信オブジェクト識別キー値」に格納する。
【０１３３】
次に、ステップＳ４１４において、ＣＰＵ４１は、ステップＳ３１１でセットした変数「メソッド名」の値，ステップＳ４１３でセットした変数「メッセージ受信オブジェクト識別キー値」の値の組み合わせに対応するメッセージ情報をマップ（図１５（ａ））の後方より（新しい情報から）検索し、該検索されたメッセージ情報内の「メッセージ送信者」の値を、変数「メッセージ受信者」に格納し、ステップＳ４０９に進み、ＣＰＵ４１は、変数「メソッド名」の値，変数「メッセージ送信者」の値，変数「メッセージ受信者」の値を、モデル情報として、ＨＤ４４内のモデル情報ファイル（図１５（ｂ））に追加して、ステップＳ４１０に進む。
【０１３４】
次に、ステップＳ４１０において、ＣＰＵ４１は、トレース情報ファイルに次の行が存在するか否かを判定し、存在すると判定した場合には、ステップＳ４０１の処理に戻る。
【０１３５】
一方、ステップＳ４１０で、ＣＰＵ４１が、トレース情報ファイルに次の行が存在しない（ＥＯＦ）と判定した場合には、本フローチャートの処理を終了する。
【０１３６】
図１５は、図１４に示したマルチスレッド構成のプログラムに対応したモデル情報生成処理により生成された情報の内容の一例を示す模式図である。なお、図１５（ａ）は図１４のステップＳ４０８で登録されたマップに対応し、図１５（ｂ）は図７のステップＳ４０９で出力されたモデル情報ファイルに対応する。
【０１３７】
以上示したように、本実施形態によれば、マルチレッド構成のプログラムであっても、プログラムの実際の実行プロセスをシーケンス図として可視化することが可能となり、プログラムのソースコードからシーケンス図を生成する従来の方法のように、条件分岐等の点からシーケンスが曖昧となってしまうことがなく、デバッグ作業の効率化、設計矛盾の指摘など、開発効率の改善を図ることができる。
【０１３８】
また、プログラムのソースコードが存在しない状況下（例えば、誤ってソースコードを消去してしまった等の状況下）であっても、マルチレッド構成のプログラムのシーケンス図を作成することが可能となる。
【０１３９】
〔第３実施形態〕
上記第１実施形態、第２実施形態では、シーケンス情報ファイル内に、表示についての情報（オブジェクトの配置順、位置等の情報）は特に設定していない。表示についてはＸＭＩ形式のファイルを表示できる一般の表示ツール（シーケンス図表示機能３２）で行う為、表示ツールによって表示にばらつきがでることがある。しかしながら、以下、本実施形態で示す構成により、表示ツール間での表示を統一することも可能である。その為の方法を以下に説明する。
【０１４０】
本発明によって外部ツール間でのシーケンス図の表示を統一する為には、図３のステップＳ１０４（モデル情報の生成）によって得たモデル情報ファイルに、ダイアグラム（シーケンス図の構成要素（オブジェクト，活性区間，メッセージ等））の表示情報（オブジェクトの配置順、位置等の情報）を追加するように構成すれば良い。以下、この構成を示す、ダイアグラムの表示情報の算出方法を図１６のフローチャートによって説明する。
【０１４１】
図１６は、本発明のシーケンス情報自動生成装置における第６の制御処理手順の一例を示すフローチャートであり、図３のステップＳ１０４のモデル情報の生成処理とステップＳ１０５のシーケンス情報の出力処理との間で実行するダイアグラムの表示情報の算出処理に対応する。なお、このフローチャートの処理は、図２に示したＣＰＵ４１がＨＤ４４等に格納されたプログラムをＲＡＭ４２にロードして実行することにより実現される。また、図中、Ｓ５０１〜Ｓ５１１は各ステップを示す。
【０１４２】
まず、ステップＳ５０１において、ＣＰＵ４１は、描画開始位置の取得を行う。この描画開始位置はプログラム内でスタティックな値として保持するべきであり、予めＤＢ４５内やＨＤ４４内に記憶されるファイル等から読み込みＲＡＭ４２内に保持しておく方法が考えられる。
【０１４３】
次に、ステップＳ５０２において、ＣＰＵ４１は、シーケンス図を構成する構成要素である、オブジェクト，メッセージ，活性区間の為の情報を取得している。これらの情報は描画開始位置の場合と同様に、ＤＢ４５内やＨＤ４４内に記憶されるファイルなどから読み込む方法が考えられる。このステップＳ５０２において読み込んだ値は、ＲＡＭ４２内に保持されて以下のステップで、ダイアグラムの表示情報の算出に利用する事となる。
【０１４４】
ステップＳ５０３において、ＣＰＵ４１は、図３のステップＳ１０４（モデル情報の生成）によって得たモデル情報ファイル（図８（ｂ）又は図１５（ｂ））より、シーケンス図に登場する全てのオブジェクト，メッセージの情報を取得する。ここで得た全てのオブジェクト，メッセージに対して、この後の処理で配置処理を行なう事でダイアグラムの表示情報の追加を実現している。なお、ここで得たオブジェクト，メッセージの情報は、プログラム内での出現順に整列されてＲＡＭ４２内に保持される。
【０１４５】
次に、ステップＳ５０４において、ＣＰＵ４１は、ステップＳ５０３で取得した全オブジェクトから出現順に１つ取り出し、該オブジェクトに配置座標を設定する。詳細には、「描画開始位置＋（順序×オブジェクトの配置間隔）」をＲＡＭ４２内にオブジェクト毎に確保される変数「オブジェクトの配置座標」として設定する。
【０１４６】
次に、ステップＳ５０５において、ＣＰＵ４１は、まだ配置していないオブジェクトが存在するか否かを判定し，存在すると判定した場合には、ステップＳ５０４の処理に戻り、次のオブジェクトの配置を行う。
【０１４７】
一方、ステップＳ５０５で、ＣＰＵ４１が、もう配置していないオブジェクトが存在しない（全てのオブジェクトを配置した）と判定した場合には、ステップＳ５０６に進む。以上、ステップＳ５０４，Ｓ５０５により、対応プログラム内の出現順に沿った形で、シーケンス図上にオブジェクト（図１１のＳＱ００１，ＳＱ００２）を配置することができる。
【０１４８】
次に、ステップＳ５０６において、ＣＰＵ４１は、ステップＳ５０４で設定した全オブジェクトの配置座標から出現順に１つ取り出し、該オブジェクトの配置座標に基づいて、対応するオブジェクトの活性区間の配置を行うための基準となる点（ｘ，ｙ）として、活性区間毎にＲＡＭ４２上に確保される変数ｘ，変数ｙを「変数ｘ＝（オブジェクトの配置座標Ｘ＋オブジェクトの描画幅）／２」，「変数ｙ＝（オブジェクトの配置座標Ｙ＋オブジェクトの描画高さ）／２」のように設定する。
【０１４９】
次に、ステップＳ５０７において、ＣＰＵ４１は、対応するオブジェクトの持つ活性区間の配置を行っている。この活性区間は、例えば図１１の８０２等であり、オブジェクトがメソッド（アクション）を実行している区間を表現している。
【０１５０】
詳細には、活性区間毎にＲＡＭ４２内に確保される活性区間開始点Ｘ，活性区間開始点Ｙ，活性区間終了点Ｘ，活性区間終了点Ｙに対して、「活性区間開始点Ｘ＝変数ｘ−（活性区間の幅／２）」，「活性区間開始点Ｙ＝変数ｙ＋メッセージの配置間隔」），「活性区間終了点Ｘ＝活性区間開始点Ｘ＋活性区間の幅」，「活性区間終了点Ｙ＝変数ｙ＋最後に送受信したメッセージの出現順序×メッセージの配置間隔」を設定する。
【０１５１】
なお、フローチャートには示していないが、活性区間を複数有するオブジェクトには、活性区間毎に変数ｙを「変数ｙ＝変数ｙ＋活性区間終了点Ｙ」のように設定して、ステップＳ５０６の処理を繰り返すものとする。
【０１５２】
次に、ステップＳ５０８において、ＣＰＵ４１は、まだ活性区間を配置していないオブジェクトが存在するか否かを判定し，存在すると判定した場合には、ステップＳ５０６の処理に戻り、次のオブジェクトの活性区間の配置を行う。
【０１５３】
一方、ステップＳ５０８で、ＣＰＵ４１が、もう活性区間を配置していないオブジェクトが存在しない（全てのオブジェクトの活性区間を配置した）と判定した場合には、ステップＳ５０９に進む。以上、ステップＳ５０６〜Ｓ５０８により、対応プログラム内の出現順に沿った形で、シーケンス図上に活性区間（図１１の８０２）を配置することができる。
【０１５４】
次に、ステップＳ５０９において、ＣＰＵ４１は、ステップＳ５０３で取得した全メッセージから出現順に１つ取り出し、該メッセージに配置座標を設定する。詳細には、メッセージ毎にＲＡＭ４２に確保されるメッセージ開始点Ｘ，メッセージ開始点Ｙ，メッセージ終了点Ｘ，メッセージ終了点Ｙに対して、「メッセージ開始点Ｘ＝メッセージ送信オブジェクトの活性区間開始点Ｘ＋（活性区間の幅／２）」，「メッセージ開始点Ｙ＝変数ｙ＋メッセージの出現順序×メッセージの配置間隔」），「メッセージ終了点Ｘ＝メッセージ受信オブジェクトの活性区間開始点Ｘ＋（活性区間の幅／２）」，「メッセージ終了点Ｙ＝メッセージ開始点Ｙ」を設定する。
【０１５５】
次に、ステップＳ５１０において、ＣＰＵ４１は、まだ配置していないメッセージが存在するか否かを判定し，存在すると判定した場合には、ステップＳ５０９の処理に戻り、次のメッセージの配置を行う。
【０１５６】
一方、ステップＳ５１０で、ＣＰＵ４１が、もう配置していないメッセージが存在しない（全てのメッセージを配置した）と判定した場合には、ステップＳ５１１に進む。以上、ステップＳ５０９，Ｓ５１０により、対応プログラム内の出現順に沿った形で、シーケンス図上にメッセージ（図１１のＳ００３，ＳＱ００４，ＳＱ００４）を配置することができる。
【０１５７】
次に、ステップＳ５１１において、ＣＰＵ４１は、ステップＳ５０４〜Ｓ５０９を通して設定した各ダイアグラムの配置情報（各ダイアグラム（構成要素）の配置順，配置位置，配置サイズ等の情報（各ダイアグラム表示情報））をモデル情報ファイルに追加し、本ダイアグラムの表示情報の算出フローチャートを終了する。
【０１５８】
以下、図１７のフローチャートを参照して、ダイアグラム表示情報が追加されたモデル情報ファイルからシーケンス情報ファイルを生成する処理について説明する。
【０１５９】
図１７は、本発明のシーケンス情報自動生成装置における第７の制御処理手順の一例を示すフローチャートであり、図３のステップＳ１０５のシーケンス情報の生成処理（ダイアログの表示情報を追加してモデル情報を読み込みシーケンス情報を出力する処理）に対応する。なお、このフローチャートの処理は、図２に示したＣＰＵ４１がＨＤ４４等に格納されたプログラムをＲＡＭ４２にロードして実行することにより実現される。また、図中、Ｓ６０１〜Ｓ６０５，Ｓ７０１〜Ｓ７０３は各ステップを示し、図９と同一のステップには同一のステップ番号を付してある。
【０１６０】
図１７において、ステップＳ６０１〜Ｓ１６０５は、図９と同一であるので、説明を省略する。
【０１６１】
ステップＳ７０１において、ＣＰＵ４１は、モデル情報ファイルをＲＡＭ４２上に読み込み、ダイアグラムの表示情報を全て取得する。
【０１６２】
次に、ステップＳ７０２において、ＣＰＵ４１は、ステップＳ７０１で取得したダイアグラムの表示情報を１つ取り出し、ダイアグラムの表示情報に対応するＸＭＩコード（図１８のＸＭＩ０１）を生成し、シーケンス情報ファイル（後述する図１８）に出力する。
【０１６３】
なお、ステップＳ７０２のダイアグラムの表示情報に対応するＸＭＩコードの作成処理では、例えば、図１に示したＨＤ４４内のＤＢ４５に格納されるＸＭＩコードの部品（ヘッダ部分のＸＭＩコードや、ダイアグラムの表示情報に対応するＸＭＩコード）を読み出して、モデル情報ファイルから読み出した情報に対応させて、個々のダイアグラムの表示情報に対応するように編集し（例えば、表示位置，開始位置，終了位置の編集を行い）、モデル情報ファイルから読み出したダイアグラムの表示位置に対応するＸＭＩコードを生成するものとする。
【０１６４】
次に、ステップＳ７０３において、ＣＰＵ４１は、まだＸＭＩコードを生成していないダイアグラムの表示情報が存在するか否かを判定し、存在すると判定した場合には、ステップＳ７０２に戻り、次のオブジェクトに対する処理を行う。
【０１６５】
一方、ステップＳ７０３で、ＣＰＵ４１が、もうＸＭＩコードを生成していないダイアグラムの表示情報は存在しないと判定した場合には、本フローチャートの処理を終了する。
【０１６６】
以下、上記図１６，図１７の処理により、ダイアグラム表示情報が追加されたモデル情報ファイルから生成されたシーケンス情報ファイルの一例を図１８に示す。
【０１６７】
図１８は、本発明の第３実施形態において生成されるシーケンス情報ファイルの一例を示す図である。
【０１６８】
このシーケンス情報ファイルは、図１６に示したフローチャートの処理により、オブジェクトの座標情報等の表示情報がモデル情報ファイルに追加されたものである。
【０１６９】
図１８において、例えば、ＸＭ１０１は、シーケンス図内における一つのオブジェクトを定義する要素である。ＸＭ１０２，ＸＭ１０３はそのオブジェクトの描画幅、高さをそれぞれ示している。
【０１７０】
このように、シーケンス図を構成する全ての描画要素に対して、座標、幅、高さなどを設定する事で、さまざまなシーケンス図表示ツール間での表示を統一できる。
【０１７１】
以上示したように、本発明の第３実施形態によれば、ダイアグラムの表示情報の算出設定を行うことにより、シーケンス図表示機能３２に対応する一般の表示ツール間での表示の統一を可能にし、全ての開発者・ユーザが共通のシーケンス図を得ることが可能となる。
【０１７２】
以上、各実施形態によれば、実際に実行されるプログラムのトレース状態からトレース情報をトレース情報生成機能１１（プログラム実行監視手段１０と連携）により出力し、トレース情報生成機能１１によって出力されたトレース情報をモデル情報生成機能１２がシーケンス情報に変換可能なモデル情報として出力し、モデル情報生成機能１２によって生成されたモデル情報をシーケンス情報出力機能１３がメタ言語（本実施形態では、ＸＭＩ）を用いたシーケンス情報に変換して出力することにより、プログラムの実際の実行プロセスをシーケンス図として可視化することが可能となり、プログラムのソースコードからシーケンス図を生成する従来の方法のように、条件分岐等の点からシーケンスが曖昧となってしまうことがなく、デバッグ作業の効率化、設計矛盾の指摘など、開発効率の改善を図ることができる。
【０１７３】
また、プログラムのソースコードが存在しない状況下（例えば、誤ってソースコードを消去してしまった等の状況下）であっても、プログラムのシーケンス図を作成することが可能となる。
【０１７４】
従って、プログラムの実行状態をトレースし、プログラムのシーケンス情報を自動生成することにより、既存のソフトウェアに手を加えることなく、既存ソフトウェアのシーケンス情報を取得することができる。
【０１７５】
なお、上記第１実施形態〜第３実施形態を合わせた構成も本発明に含まれるものである。
【０１７６】
なお、上記実施形態で示した各種データはの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【０１７７】
以上、実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１７８】
従って、プログラムの実際の実行プロセスをシーケンス図として可視化し、ソースコードが存在しないプログラムではシーケンス図が作成できなかったり、条件分岐等の点からシーケンスが曖昧となってしまう等のプログラムのソースコードからシーケンス図を生成する従来の方法の問題点を解決し、デバッグ作業の効率化、設計矛盾の指摘など、開発効率の改善を図ることができる。
【０１７９】
以下、図１９に示すメモリマップを参照して本発明に係るシーケンス情報作成装置で読み取り可能なデータ処理プログラムの構成について説明する。
【０１８０】
図１９は、本発明に係るシーケンス情報作成装置で読み取り（読み出し）可能な各種データ処理プログラムを格納する記録媒体（記憶媒体）のメモリマップを説明する図である。
【０１８１】
なお、特に図示しないが、記録媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報，作成者等も記憶され、かつ、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【０１８２】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、インストールするプログラムやデータが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【０１８３】
本実施形態における図３，図５，図７，図９，図１４，図１６，図１７に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記録媒体により、あるいはネットワークを介して外部の記録媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【０１８４】
以上のように、前述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０１８５】
この場合、記録媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【０１８６】
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＤＶＤ−ＲＯＭ，磁気テープ，不揮発性のメモリカード，ＲＯＭ，ＥＥＰＲＯＭ，シリコンディスク等を用いることができる。
【０１８７】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１８８】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１８９】
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウエアによって表されるプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０１９０】
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ，データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【図面の簡単な説明】
【０１９１】
【図１】本発明の第１実施形態を示すシーケンス情報自動生成装置の機能構成を示す機能ブロック図である。
【図２】本発明のシーケンス情報自動生成装置のハードウェア構成の一例を示すブロック図である。
【図３】本発明のシーケンス情報自動生成装置における第１の制御処理手順の一例を示すフローチャートである。
【図４】シーケンス情報作成対象プログラムの情報を入力するためのユーザインタフェースの一例を示す模式図である。
【図５】本発明のシーケンス情報自動生成装置における第２の制御処理手順の一例を示すフローチャートである。
【図６】図４に示したトレース情報生成処理により生成され出力されたトレース情報ファイルの内容の一例を示す模式図である。
【図７】本発明のシーケンス情報自動生成装置における第３の制御処理手順の一例を示すフローチャートである。
【図８】図７に示したモデル情報生成処理により生成された情報の内容の一例を示す模式図である。
【図９】本発明のシーケンス情報自動生成装置における第４の制御処理手順の一例を示すフローチャートである。
【図１０】図９に示したシーケンス情報の生成処理（図３のステップＳ１０５）で生成されるシーケンス情報の一例を示す模式図である。
【図１１】図１０に示したシーケンス情報ファイルに基づいて、図１の表示機能により表示装置に表示されるシーケンス図である。
【図１２】図１０に示したシーケンス情報内のＸＭＩ形式のコードと図１１に示したシーケンス図との対応関係を示す図である。
【図１３】図４に示したトレース情報生成処理により生成され出力されたトレース情報ファイルの内容の一例を示す模式図である。
【図１４】本発明のシーケンス情報自動生成装置における第５の制御処理手順の一例を示すフローチャートである。
【図１５】図１４に示したマルチスレッド構成のプログラムに対応したモデル情報生成処理により生成された情報の内容の一例を示す模式図である。
【図１６】本発明のシーケンス情報自動生成装置における第６の制御処理手順の一例を示すフローチャートである。
【図１７】本発明のシーケンス情報自動生成装置における第７の制御処理手順の一例を示すフローチャートである。
【図１８】本発明の第３実施形態において生成されるシーケンス情報ファイルの一例を示す図である。
【図１９】本発明に係るシーケンス情報作成装置で読み取り（読み出し）可能な各種データ処理プログラムを格納する記録媒体（記憶媒体）のメモリマップを説明する図である。
【符号の説明】
【０１９２】
１０  プログラム実行監視機能
１１  トレース情報生成機能
１２  モデル情報生成機能
１３  シーケンス情報出力機能
２１  トレース情報格納部
２２  モデル情報格納部
２３  シーケンス情報格納部
３１  入力機能
３２  シーケンス図表示機能
４１  ＣＰＵ
４２  ＲＡＭ
４３  ＲＯＭ
４４  ＨＤ
４５  ＤＢ
４６  表示装置
４７  入力装置
【図１】
2006018477.tif 000003
【図２】
2006018477.tif 000004
【図３】
2006018477.tif 000005
【図４】
2006018477.tif 000006
【図５】
2006018477.tif 000007
【図６】
2006018477.tif 000008
【図７】
2006018477.tif 000009
【図８】
2006018477.tif 000010
【図９】
2006018477.tif 000011
【図１０】
2006018477.tif 000012
【図１１】
2006018477.tif 000013
【図１２】
2006018477.tif 000014
【図１３】
2006018477.tif 000015
【図１４】
2006018477.tif 000016
【図１５】
2006018477.tif 000017
【図１６】
2006018477.tif 000018
【図１７】
2006018477.tif 000019
【図１８】
2006018477.tif 000020
【図１９】
2006018477.tif 000021