説明

シーケンス情報生成装置およびシーケンス情報生成方法およびプログラムおよび記録媒体

【課題】プログラムの実際の実行プロセスをシーケンス図として可視化し、ソースコードが存在しないプログラムではシーケンス図が作成できなかったり、条件分岐等の点からシーケンスが曖昧となってしまう等のプログラムのソースコードからシーケンス図を生成する従来の方法の問題点を解決し、デバッグ作業の効率化、設計矛盾の指摘など、開発効率の改善を図ること。
【解決手段】トレース情報生成機能11により実行されるプログラムをトレースして前記プログラム実行時のトレース情報を生成し、該生成されたトレース情報に基づいて、モデル情報生成機能12,シーケンス情報生成機能13により、前記プログラムのシーケンス情報を生成する構成を特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、システム開発の保守工程における、リバースエンジニアリング作業を自動化するものであり、例えば、オブジェクト指向プログラムにおいては、プログラムやオブジェクトの状態の変化を示すシーケンス図を作成するためのシーケンス情報を生成するシーケンス情報生成装置およびシーケンス情報生成方法およびプログラムおよび記録媒体に関するものである。
【背景技術】
【0002】
従来より、入力したイベントシーケンスにもとづき、所望の状態遷移図を得る為の状態遷移図作成装置が特許文献1で提案されている。
【0003】
また、ソースコードから所望のシーケンス図を得る為のシーケンス図作成装置が特許文献2で提案されている。
【特許文献1】特開平11-24900号公報
【特許文献2】特開2004-94496号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら特許文献1に記載の状態遷移図作成装置には、プログラムのイベントシーケンスを入力しなければならないという問題があり、例えば、プログラムのソースコードが存在しない状況下(例えば、誤ってソースコードを消去してしまった等の状況下)では、適用不可能であるといった問題があった。
【0005】
また、特許文献2に記載のシーケンス図作成装置はシーケンス図の作成にソースコードを用いる事から、特許文献1に記載の状態遷移図作成装置と同様の問題があった。
【0006】
さらに、上記特許文献1,2のように、プログラムのソースコードからシーケンス図を生成した場合、プログラムの実際の実行状態をトレースしているわけではないため、条件分岐等の点からシーケンスが曖昧となってしまい、プログラムのシーケンス上の矛盾点を発見することが困難である等の問題点もあった。
【0007】
本発明は、上記の問題点を解決するためになされたもので、本発明の目的は、実行されるプログラムをトレースして前記プログラム実行時のトレース情報を生成し、該生成されたトレース情報に基づいて、前記プログラムのシーケンス情報を生成することにより、プログラムの実際の実行プロセスをシーケンス図として可視化することができ、プログラムのソースコードからシーケンス図を生成する従来の方法のように、ソースコードが存在しないプログラムではシーケンス図が作成できなかったり、条件分岐等の点からシーケンスが曖昧となってしまうことがなく、デバッグ作業の効率化、設計矛盾の指摘など、開発効率の改善を図ることができるシーケンス情報生成装置およびシーケンス情報生成方法およびプログラムおよび記録媒体を提供することである。
【課題を解決するための手段】
【0008】
本発明によれば、実行されるプログラムをトレースして前記プログラム実行時のトレース情報を生成するトレース情報生成手段と、前記トレース情報生成手段により生成されたトレース情報に基づいて、前記プログラムのシーケンス情報を生成するシーケンス情報生成手段とを有することを特徴とする。
【発明の効果】
【0009】
本発明によれば、実行されるプログラムをトレースして前記プログラム実行時のトレース情報を生成し、該生成されたトレース情報に基づいて、前記プログラムのシーケンス情報を生成することにより、プログラムの実際の実行プロセスをシーケンス図として可視化することができ、プログラムのソースコードからシーケンス図を生成する従来の方法のように、条件分岐等の点からシーケンスが曖昧となってしまうことがなく、デバッグ作業の効率化、設計矛盾の指摘など、開発効率の改善を図ることができる等の効果を奏する。
【0010】
また、プログラムの実行状態をトレースし、プログラムのシーケンス情報を自動生成するため、プログラムの実行状態をトレース(追跡)して、ソースコードが存在しない(誤ってソースコードを消去してしまった,ソースコードが入手不可能な)プログラム・アプリケーションに関するシーケンス情報を取得することができ、さらに、既存のソフトウェアに手を加えることなく、既存ソフトウェアのシーケンス情報を取得することができる。
【発明を実施するための最良の形態】
【0011】
以下、本発明の実施の形態を、シーケンス図自動生成装置の実施形態により詳しく説明する。
【0012】
本実施形態は、スタンドアロンの情報処理装置を想定しているが、これに限らず、ネットワークで構成されたシステム形態にも適用可能である。
【0013】
〔第1実施形態〕
図1は、本発明の第1実施形態を示すシーケンス情報自動生成装置の機能構成を示す機能ブロック図である。
【0014】
図1において、31は入力機能である。この入力機能31は、シーケンス情報作成対象のプログラム情報の入力を行うためのものである。10はプログラム実行監視機能である。このプログラム実行監視機能10は、入力機能31で入力されたプログラム情報に応じてプログラムを実行して、該実行されるプログラムを監視し、該プログラムの実行時に実際にオブジェクト間で送受信されるイベント(メソッド開始,メソッド終了等)の情報を出力する。
【0015】
11はトレース情報生成機能である。このトレース情報生成装置11は、プログラム実行監視機能10から出力されるイベントの情報からプログラムの実行状態をトレースしたトレース情報を生成して、トレース情報格納部21に格納する。
【0016】
12はモデル情報生成機能である。このモデル情報生成機能12は、トレース情報格納部21に格納されたトレース情報を利用してシーケンス情報のモデル情報を生成して、モデル情報格納部22に格納する。
【0017】
13はシーケンス情報出力機能である。このシーケンス情報出力機能13は、モデル情報格納部22に格納されるシーケンス情報のモデル情報からシーケンス情報を作成して、シーケンス情報格納部23に格納する。32はシーケンス図表示機能で、このシーケンス図表示機能32は、シーケンス情報格納部23に格納されるシーケンス情報に基づいてシーケンス図を表示するものである。また、このシーケンス図表示機能32は、一般のシーケンス図表示ツール、例えば、Rational社の「Rose」(商品名),SparksSystem社の「EA」(商品名)等に対応する。なお、この一般のシーケンス図表示ツールは、表示されるシーケンス図を印刷可能である。また、このシーケンス図表示機能32の代わりにシーケンス図印刷機能等を設けてもよい。即ち、シーケンス情報に基づいて視覚可能にシーケンス図を生成する機能であればよく、表示機能であっても印刷機能であってもよい。
【0018】
なお、本実施形態においていては、一例として対象プログラムがJava(登録商標)プログラムである場合について記述する。しかしながら、本発明は、特定の言語で記述されたプログラムには依存しておらず、Java(登録商標)プログラムのような実行状態のトレースができる言語で記述されたプログラムならば実現可能である。
【0019】
図2は、本発明のシーケンス情報自動生成装置のハードウェア構成の一例を示すブロック図である。
【0020】
図2において、40は本発明のシーケンス情報自動生成装置としてのコンピュータである。41はCPUである。このCPU41は、ROM43又はハードディスク(HD)44又は図示しないその他の記録媒体(例えば、フレキシブルディスク,CD−ROM,DVD−ROM等)に格納されたプログラムをRAM42上にロードして実行することにより、コンピュータ40全体を制御する。RAM42は、CPU41の作業領域として使用される。
【0021】
45はDBで、このDB45には、後述するシーケンス情報を生成するためのXMIコードの部品(オブジェクトに対応するXMIコード,メッセージに対応するXMIコード等)やその他の情報が格納されている。
【0022】
47は入力装置で、キーボードやマウス等のポインティングデバイス等に相当する。46は表示装置で、CRT,LCD等で構成される。
【0023】
以下、図3〜図12を参照して、図1,図2に示したシーケンス情報自動生成装置におけるシーケンス情報自動生成処理について説明する。
【0024】
図3は、本発明のシーケンス情報自動生成装置における第1の制御処理手順の一例を示すフローチャートであり、シーケンス情報自動生成処理に対応する。なお、このフローチャートの処理は、図2に示したCPU41がHD44等に格納されたプログラムをRAM42にロードして実行することにより実現される。また、図中、S101〜S105は各ステップを示す。さらに、この処理を実行することにより、入力されたプログラムに対応したシーケンス情報を自動生成することができる。
【0025】
まず、ステップS101において、CPU41は、対象プログラムの情報をユーザインタフェースの機能を利用して作成する。具体的には、図4に示すユーザインタフェースを表示装置46に表示制御し、ユーザにプログラム情報を入力させる(図1に示した入力機能31に相当)。
【0026】
図4は、シーケンス情報作成対象プログラムの情報を入力するためのユーザインタフェースの一例を示す模式図である。
【0027】
図4において、U101は出力ファイル名入力欄で、シーケンス情報作成処理により作成されるシーケンス情報を出力するファイル(XMI形式)のファイル名を指定するためのものである。
【0028】
U102はルートフォルダ入力欄で、本実施形態のシーケンス情報作成処理対象とするJava(登録商標)プログラムのルートフォルダを指定するためのものである。
【0029】
U103はメインクラス入力欄で、ルートフォルダ入力欄102で指定されたJava(登録商標)プログラムの起動に必要なメインクラスのクラス名を指定するためのものである。
【0030】
U104は実行ボタンで、このボタンを押下することにより、このユーザインタフェースでの入力を有効に、出力ファイル名入力欄U101,ルートフォルダ入力欄U102,メインクラス入力欄103で指定された対象プログラム情報に対する、シーケンス情報作成処理が開始される。
【0031】
以下、図3のフローチャートの説明に戻る。
【0032】
ステップS101で、対象プログラム情報が入力されると(OKボタンU104が押下されると)、ステップS102において、CPU41は、ステップS101で入力された対象プログラム情報に基づいて対象プログラムを実行状態がトレース可能な状態で起動する(図1に示したプログラム実行監視機能10に相当)。例えば、Java(登録商標)言語の開発環境にはJPDA(Java(登録商標) Plattform Debugger Architecture)と呼ばれるプログラム実行状態をデバッグする環境が提供されており、本実施形態においては、JPDAを通してプログラムを起動する。このJPDAは、実行されるプログラムの実行状態を監視して、メソッドの開始,終了等の情報を時系列に沿って出力可能とする。なお、本シーケンス情報作成処理で作成されるシーケンス情報から、Java(登録商標)実行環境において標準で提供されているメソッドや、シーケンスの対象にしたくないメソッドなどを省くこともできる。これによって、プログラムのメソッドコール全てを含むような冗長なシーケンス情報の生成を回避できる。例えば、Java(登録商標)言語において標準パッケージとして提供されている「java(登録商標).lang」パッケージ内に含まれる「System.out.println()」などのメソッドはシーケンス図上に表現する必要はないことが多い。その際、JPDAに対して「java(登録商標).lang」パッケージのトレースを行なわない事を宣言できる。この機能を利用すれば、上記シーケンスの対象にしたくないメソッドなどをシーケンス情報から省く機能を実現できる。
【0033】
次に、ステップS103において、CPU41は、起動されたプログラムを上記JPDAを介してトレースし、トレース情報を生成する(図1に示したプログラム実行監視機能10及びトレース情報生成機能11に相当)。なお、ステップS103の詳細な説明は後述する図5に示す。また、ステップS103では、生成したトレース情報を、図2に示したHD44内にトレース情報ファイル(図1に示したトレース情報格納部21に相当)として格納する。
【0034】
次に、ステップS104において、CPU41は、ステップS103で生成されたトレース情報に基づいて、対象プログラムのモデル情報を生成する(図1に示したモデル情報生成機能12に相当)。なお、ステップS104の詳細な説明は後述する図7に示す。また、ステップS104では、生成したモデル情報を、図2に示したHD44内にモデル情報ファイル(図1に示したモデル情報格納部22に相当)として格納する。
【0035】
次に、ステップS105において、CPU41は、ステップS104で生成されたモデル情報に基づいて、シーケンス情報を出力する(図1に示したシーケンス情報出力機能13に相当)。本実施形態においては、このシーケンス情報の出力には、XMI(XML Metadata Interchange)を利用する。よって、上記ステップS105では、XMI形式のシーケンス情報を出力するものとする。また、ステップS103ででは、シーケンス情報を図2に示したHD44内に図4の出力ファイル名入力欄U101で指定した出力ファイル名のファイル(図1に示したシーケンス情報格納部23に相当)として格納する。
【0036】
図5は、本発明のシーケンス情報自動生成装置における第2の制御処理手順の一例を示すフローチャートであり、図3のステップS103のトレース情報の生成処理(対象プログラムをトレースしてトレース情報を生成する処理)に対応する。なお、このフローチャートの処理は、図2に示したCPU41がHD44等に格納されたプログラムをRAM42にロードして実行することにより実現される。また、図中、S204〜S209は各ステップを示す。
【0037】
まず、ステップS204において、プログラム実行監視機能10(前述のJPDAに相当(CPU41が実行))より、トレース情報生成機能11(CPU41が実行)が、「メソッド開始」のイベント(時系列)等を受け取ると、ステップS205において、トレース情報生成機能11は、該受け取った「メソッド開始」のイベントに基づいてトレース情報(例えば、後述する図6に示すTR001〜TR004)をRAM42のメモリ空間に生成し、ステップS206において、トレース情報生成機能11は、該メモリ空間に生成されたトレース情報をプログラムのトレース情報を格納するファイル(図6)(トレース情報格納部21)に追記する。
【0038】
また、ステップS207において、プログラム実行監視機能10より、トレース情報生成機能11が、「メソッド終了」のイベントを受け取ると、ステップS208において、トレース情報生成機能11は、該受け取った「メソッド終了」のイベントに基づいてトレース情報(例えば、図6に示すTR005〜TR008)をRAM42のメモリ空間に生成し、ステップS209において、トレース情報生成機能11は、該生成したトレース情報をプログラムのトレース情報を表現するファイル(図6)(トレース情報格納部21)に追記していく。
【0039】
これらの処理をプログラムトレース中に繰り返すことで、プログラムのトレース情報を生成する。
【0040】
なお、上述したように、本実施形態においていては、一例として対象プログラムがJava(登録商標)プログラムである場合について記述している。しかしながら、本発明は、特定の言語で記述されたプログラムには依存しておらず、Java(登録商標)プログラムのような実行状態のトレースができる言語で記述されたプログラムならば実現可能である。例えば、上記JPDAと同様に、実行されるプログラムの実行状態を監視して、メソッドの開始,終了等の情報を時系列に沿って出力可能なデバッガ等の実行監視環境を有するプログラムであれば、どのようなプログラムであってもよい。この場合、前記デバッガがプログラム実行監視機能10となる。
【0041】
図6は、図4に示したトレース情報生成処理により生成され出力されたトレース情報ファイルの内容の一例を示す模式図である。
【0042】
図6において、TR001はプログラム内においてメソッドが開始されたことを表し、以下のTR002,TR003,TR004はそれぞれ1つのメソッドの情報を表している。詳細には、TR002は、メソッド名に相当する。また、TR003は、メソッドをコールされたオブジェクトのクラス名である。さらに、TR003は、メソッドをコールされたオブジェクトのオブジェクト識別キー値を示すメッセージ受信オブジェクト識別キー値である。このオブジェクト識別キー値は、対象プログラム内においてオブジェクト(インスタンス)を一意に識別するキー値であり、この値によって出現オブジェクトを管理する事で、同一クラスに複数インスタンスが生成された場合においても、それらを識別したシーケンス情報を生成することを可能にしている。
【0043】
また、TR005は、プログラム内においてメソッドが終了したことを表し、以下のTR006,TR007,TR008はそれぞれ1つのメソッドの情報を表している。詳細には、TR006は、メソッド名に相当する。また、TR007は、メソッドをコールされたオブジェクトのクラス名である。さらに、TR008は、そのメソッドをコールされたオブジェクトを一意に識別する為のキー値である。
【0044】
図7は、本発明のシーケンス情報自動生成装置における第3の制御処理手順の一例を示すフローチャートであり、図3のステップS104のモデル情報の生成処理(図6に示したトレース情報ファイルを読み込みモデル情報を生成する処理)に対応する。なお、このフローチャートの処理は、図2に示したCPU41がHD44等に格納されたプログラムをRAM42にロードして実行することにより実現される。また、図中、S301〜S316は各ステップを示す。
【0045】
まず、ステップS301において、CPU41は、トレース情報ファイル(図6)より1行分の読み込を行ない、RAM42上に確保される変数lineに格納する。
【0046】
次に、ステップS302において、CPU41は、変数「line」の値が"[ENTRY]"と同等かどうかを判定する。
【0047】
ステップS302において、CPU41が変数「line」の値が"[ENTRY]"と同等であると判定した場合には、ステップS303に進み、以降の処理はメソッドの開始情報を取得する処理となり、一方、CPU41が変数「line」の値が"[ENTRY]"と同等でないと判定した場合には、ステップS313に進み、以降の処理はメソッドの終了情報を取得する処理となる。まずは、前者の場合について示す。
【0048】
ステップS303において、CPU41は、トレース情報ファイルから1行読み込み、該読み込んだ行のデータをRAM42上に確保される変数「メソッド名」に格納する。
【0049】
次に、ステップS304において、CPU41は、RAM42上に確保される変数「メッセージ受信者」の値がNULLかどうかを判定する。なお、最初にステップS304の処理を行う場合は変数「メッセージ受信者」の値がNULLとなっている。なお、このフローチャートにおいて、上記変数「メッセージ受信者」は、メソッドをコールされたオブジェクトを格納するための変数であり、また、RAM42上に確保される変数「メッセージ送信者」は、メソッドコールしたオブジェクトを格納するための変数である。
【0050】
ステップS304で、CPU41は、変数「メッセージ受信者」の値がNULLであると判定した場合には、ステップS305において、CPU41は、トレース情報ファイルをから次行を1行読み込み、該読み込んだ行のデータを変数「メッセージ受信者」に格納する。なお、変数「メッセージ受信者」の値がNULLであると判定した場合は、最初にステップS304の処理を行う場合であるため、CPU41は、メッセージ受信者がこのメソッドのメッセージ送信者と同一であると判断する。そして、ステップS306において、CPU41は、変数「メッセージ送信者」に、変数「メッセージ受信者」の値を格納し、ステップS307に進む。
【0051】
一方、ステップS304で、CPU41が、変数「メッセージ受信者」の値がNULLでないと判定した場合には、ステップS311において、CPU41は、変数「メッセージ送信者」に変数「メッセージ受信者」の値(即ち、前のメソッドのメッセージ受信者の値)を格納する。
【0052】
次に、ステップS312において、CPU41は、トレース情報ファイルから次行を1行読み込み、該読み込んだ行のデータを変数「メッセージ受信者」に格納し、ステップS307に移行する。
【0053】
次に、ステップS307において、CPU41は、トレース情報ファイルから次行を1行読み込み、該読み込んだ行のデータをRAM42上に確保される変数「メッセージ受信オブジェクト識別キー値」に格納する。
【0054】
次に、ステップS308においては、CPU41は、変数「メソッド名」の値,変数「メッセージ送信者」の値,変数「メッセージ受信者」の値,変数「メッセージ受信オブジェクト識別キー値」の値を、メソッド情報として、RAM42上のマップ(図8(a))に登録する。
【0055】
次に、ステップS309において、CPU41は、変数「メソッド名」の値,変数「メッセージ送信者」の値,変数「メッセージ受信者」の値から構成されるメソッド情報を、モデル情報として、HD44内のモデル情報ファイル(後述する図8(b))(図1のモデル情報格納部22)に追加(時系列に追加)して、ステップS310に進む。
【0056】
一方、ステップS302で、CPU41が変数「line」の値が"[ENTRY]"と同等でないと判定した場合(即ち"[EXIT]"の場合)には、ステップS313に進み、CPU41は、トレース情報ファイルから1行読み込み、該読み込んだ行のデータをRAM42上に確保される変数「メソッド名」に格納する。
【0057】
次に、ステップS314において、CPU41は、トレース情報ファイルから次行を1行読み込み、該読み込んだ行のデータをRAM42上に確保される変数「メッセージ送信者」に格納する。
【0058】
次に、ステップS315において、CPU41は、トレース情報ファイルから次行を1行読み込み、該読み込んだ行のデータを変数「メッセージ受信オブジェクト識別キー値」に格納する。
【0059】
次に、ステップS316において、CPU41は、ステップS314でセットした変数「メソッド名」の値,ステップS315でセットした変数「メッセージ受信オブジェクト識別キー値」の値の組み合わせに対応するメッセージ情報をマップ(図8(a))の後方より(新しい情報から)検索し、該検索されたメッセージ情報内の「メッセージ送信者」の値を、変数「メッセージ受信者」に格納し、ステップS309に進み、CPU41は、変数「メソッド名」の値,変数「メッセージ送信者」の値,変数「メッセージ受信者」の値を、モデル情報として、HD44内のモデル情報ファイル(図8(b))に追加して、ステップS309に進む。
【0060】
次に、ステップS310において、CPU41は、トレース情報ファイルに次の行が存在するか否かを判定し、存在すると判定した場合には、ステップS301の処理に戻る。
【0061】
一方、ステップS310で、CPU41が、トレース情報ファイルに次の行が存在しない(EOF)と判定した場合には、本フローチャートの処理を終了する。
【0062】
図8は、図7に示したモデル情報生成処理により生成された情報の内容の一例を示す模式図である。なお、図8(a)は図7のステップS308で登録されたマップに対応し、図8(b)は図7のステップS309で出力されたモデル情報ファイルに対応する。
【0063】
ここで、図6のトレース情報ファイルを用いて、図7のフローチャートに示した処理により、図8(b)のモデル情報ファイルが生成される様子を説明する。
【0064】
まず、ステップS301において、CPU41は、トレース情報ファイルの1行目"[ENTRY]"を読み込み、変数lineに格納する。
【0065】
次に、ステップS302において、CPU41は、変数「line」の値が"[ENTRY]"と同等であると判定し、ステップS303において、CPU41は、トレース情報ファイルの2行目"main"を読み込み、変数「メソッド名」に格納する。
【0066】
次に、ステップS304において、CPU41は、変数「メッセージ受信者」の値がNULLであると判定し、ステップS305において、CPU41は、トレース情報ファイルをから3行目"Object1"を読み込み、変数「メッセージ受信者」に格納する。
【0067】
つぎに、ステップS306において、CPU41は、変数「メッセージ送信者」に、変数「メッセージ受信者」の値(即ち、"Object1")を格納する。
【0068】
次に、ステップS307において、CPU41は、トレース情報ファイルから4行目"10082904"を読み込み、「オブジェクト識別キー値」に格納する。
【0069】
次に、ステップS308においては、CPU41は、変数「メソッド名」の値"main",変数「メッセージ送信者」の値"Object1",変数「メッセージ受信者」の値"Object1",変数「メッセージ受信オブジェクト識別キー値」の値"10082904"を、メソッド情報として、マップに登録する(図8(a)のMP001)。
【0070】
次に、ステップS309において、CPU41は、変数「メソッド名」の値"main",変数「メッセージ送信者」の値"Object1",変数「メッセージ受信者」の値"Object1"を、モデル情報として、HD44内のモデル情報ファイルに追加する(図8(b)のMD001)。
【0071】
次に、ステップS310において、CPU41は、トレース情報ファイルはまだEOFでないので、ステップS301の処理に戻る。
【0072】
そして、再び、ステップS301において、CPU41は、トレース情報ファイルより5行目"[ENTRY]"を読み込みを行ない、変数lineに格納する。
【0073】
次に、ステップS302において、CPU41は、変数「line」の値が"[ENTRY]"と同等であるので、ステップS303において、CPU41は、トレース情報ファイルの6行目"<init>"を読み込み、変数「メソッド名」に格納する。
【0074】
次に、ステップS304において、CPU41は、変数「メッセージ受信者」の値"Object1"はNULLでないので、ステップS311において、CPU41は、変数「メッセージ受信者」の値"Object1"を変数「メッセージ送信者」に格納する。
【0075】
次に、ステップS312において、CPU41は、トレース情報ファイルの7行目"Object2"を読み込み、変数「メッセージ受信者」に格納する。
【0076】
次に、ステップS307において、CPU41は、トレース情報ファイルから8行目"10084080"を読み込み、「オブジェクト識別キー値」に格納する。
【0077】
次に、ステップS308においては、CPU41は、変数「メソッド名」の値"<init>",変数「メッセージ送信者」の値"Object1",変数「メッセージ受信者」の値"Object2",変数「メッセージ受信オブジェクト識別キー値」の値"10084080"を、メソッド情報として、マップに登録する(図8(a)のMP002)。
【0078】
次に、ステップS309において、CPU41は、変数「メソッド名」の値"<init>",変数「メッセージ送信者」の値"Object1",変数「メッセージ受信者」の値"Object2"を、モデル情報として、HD44内のモデル情報ファイルに追加する(図8(b)のMD002)。
【0079】
次に、ステップS310において、CPU41は、トレース情報ファイルはまだEOFでないので、ステップS301の処理に戻る。
【0080】
そして、再び、ステップS301において、CPU41は、トレース情報ファイルより9行目"[EXIT]"を読み込み、変数lineに格納する。
【0081】
次に、ステップS302において、CPU41は、変数「line」の値が"[EXIT]"であるので、ステップS313において、CPU41は、トレース情報ファイルの10行目"<init>"を読み込み、変数「メソッド名」に格納する。
【0082】
次に、ステップS314において、CPU41は、トレース情報ファイルから11行目"Object2"を読み込み、該読み込んだ行のデータを変数「メッセージ送信者」に格納する。
【0083】
次に、ステップS315において、CPU41は、トレース情報ファイルから12行目"10084080"を読み込み、変数「メッセージ受信オブジェクト識別キー値」に格納する。
【0084】
次に、ステップS316において、CPUY41は、変数「メソッド名」の値"<init>",変数「メッセージ受信オブジェクト識別キー値」の値"10084080"の組み合わせに対応するメッセージ情報をマップ(図8(a))の後方より検索し、該検索されたメッセージ情報MP002内の「メッセージ送信者」の値"Object1"を、変数「メッセージ受信者」に格納する。
【0085】
次に、ステップS309において、CPU41は、変数「メソッド名」の値"<init>",変数「メッセージ送信者」の値"Object2",変数「メッセージ受信者」の値"Object1"を、モデル情報として、HD44内のモデル情報ファイルに追加する(図8(b)のMD003)。
【0086】
次に、ステップS310において、CPU41は、トレース情報ファイルはまだEOFでないので、ステップS301の処理に戻る。
【0087】
この後、同様に処理を繰り返し、ステップS310において、CPU41が、トレース情報ファイルがEOFであると判断すると、処理を終了する。
【0088】
以上の処理により、図6に示したトレース情報ファイルより、図8(b)に示したモデル情報ファイルが生成される。
【0089】
図9は、本発明のシーケンス情報自動生成装置における第4の制御処理手順の一例を示すフローチャートであり、図3のステップS105のシーケンス情報の生成処理(図8(b)に示したモデル情報ファイルを読み込みシーケンス情報を出力する処理)に対応する。なお、このフローチャートの処理は、図2に示したCPU41がHD44等に格納されたプログラムをRAM42にロードして実行することにより実現される。また、図中、S601〜S605は各ステップを示す。
【0090】
まず、ステップS601において、CPU41は、モデル情報ファイル(図8(b))をRAM42上に読み込み、後述する図11に示すシーケンス図に登場する全てのオブジェクト,メッセージの情報を取得し、RAM42内に対応プログラム内の出現順に格納する。図8(b)に示した例では、オブジェクトとして"Object1","Object1"、メッセージとして"main","<init>","update"を取得する
次に、ステップS602において、CPU41は、ステップS601で取得したオブジェクトの情報を対応プログラム内の出現順に1つ取り出し、該オブジェクト(例えば、後述する図11のSQ001,SQ002)に対応するXMIコード(図10のXMI001,XMI002)を生成し、シーケンス情報ファイル(後述する図10)に出力する。
【0091】
なお、ステップS602のオブジェクトに対応するXMIコードの作成処理,後述するステップS604に示すメッセージに対応するXMIコードの作成処理では、例えば、図2に示したHD44内のDB45に格納されるXMIコードの部品(ヘッダ部分のXMIコードや、オブジェクトに対応するXMIコード,メッセージに対応するXMIコード)を読み出して、モデル情報ファイルから読み出した情報に対応させて、個々のオブジェクト,メッセージに対応するように編集し(例えば、名称,送信者,受信者等の編集を行い)、モデル情報ファイルから読み出したオブジェクト,メッセージに対応するXMIコードを生成するものとする。
【0092】
次に、ステップS603において、CPU41は、まだXMIコードを生成していないオブジェクトが存在するか否かを判定し、存在すると判定した場合には、ステップS602に戻り、次のオブジェクトに対する処理を行う。
【0093】
一方、ステップS603で、CPU41が、もうXMIコードを生成していないオブジェクトは存在しないと判定した場合には、ステップS604に進む。
【0094】
次に、ステップS604において、CPU41は、ステップS601で取得したメッセージの情報を対応プログラム内の出現順に1つ取り出し、該メッセージ(図11のSQ003,SQ004,SQ005)に対応するXMIコード(図10のXMI0003,XMI0004,XMI0005)を生成し、シーケンス情報ファイル(後述する図10)に出力する。
【0095】
次に、ステップS605において、CPU41は、まだXMIコードを生成していないメッセージが存在するか否かを判定し、存在すると判定した場合には、ステップS604に戻り、次のメッセージに対する処理を行う。
【0096】
一方、ステップS605で、CPU41が、もうXMIコードを生成していないメッセージは存在しないと判定した場合には、本フローチャートの処理を終了する。
【0097】
図10は、図9に示したシーケンス情報の生成処理(図3のステップS105)で生成されるシーケンス情報の一例を示す模式図である。
【0098】
図10に示すように、シーケンス情報は、XMI形式で記述したファイルとして出力され、図1のシーケンス図表示機能32により図11に示すようなシーケンス図として表示可能である。
【0099】
図11は、図10に示したシーケンス情報ファイルに基づいて、図1のシーケンス図表示機能32により表示装置46に表示されるシーケンス図の一例を示す模式図である。
【0100】
図11において、SQ001,SQ002はオブジェクトを示す。また、SQ003〜SQ005は、オブジェクトSQ001,SQ002間で送受信されるメッセージを示す。
【0101】
また、801は、オブジェクトの生命線を示し、802は、オブジェクトの活性区間を示す。
【0102】
図12は、図10に示したシーケンス情報内のXMI形式のコードと、図11に示したシーケンス図との対応関係を示す図である。
【0103】
図12に示すように、図10に示したXMI形式のコードXM001と、図11に示したシーケンス図内のSQ001とがオブジェクト"Object1"として対応する。
【0104】
また、図10に示したXMI形式のコードXM002と、図11に示したシーケンス図内のSQ002とがオブジェクト"Object2"として対応する。
【0105】
さらに、図10に示したXMI形式のコードXM003と、図11に示したシーケンス図内のSQ003とがメッセージ"main"として対応する。
【0106】
また、図10に示したXMI形式のコードXM004と、図11に示したシーケンス図内のSQ004とがメッセージ"<init>"として対応する。
【0107】
さらに、図10に示したXMI形式のコードXM005と、図11に示したシーケンス図内のSQ005とがメッセージ"update"として対応する。
【0108】
なお、本実施形態では、図11に示したシーケンス図の表示を、図10に示したシーケンス情報ファイル(XMIファイル)の生成完了後に行っているが、これによらず対象プログラムの進行にあわせて、シーケンス図をリアルタイムでシーケンス図表示機能32により表示していくように構成してもよい。
【0109】
以上示したように、本実施形態によれば、プログラムの実際の実行プロセスを可視化することが可能となり、プログラムのソースコードからシーケンス図を生成する従来の方法のように、条件分岐等の点からシーケンスが曖昧となってしまうことがなく、デバッグ作業の効率化、設計矛盾の指摘など、開発効率の改善を図ることができる。
【0110】
また、プログラムのソースコードが存在しない状況下(例えば、誤ってソースコードを消去してしまった等の状況下)であっても、シーケンス図を作成することが可能となる。
【0111】
〔第2実施形態〕
上記第1実施形態では、プログラム構成がシングルスレッド構成である場合にのみ対応する構成について説明したが、マルチスレッド構成のプログラムにも対応可能に構成してもよい。以下、その場合の実施形態について説明する。
【0112】
本発明をマルチスレッドで構成されるプログラムのシーケンス情報生成に適用させるには、上記第1実施形態においてトレース情報生成機能によって生成されるトレース情報(図6に示す形式)を以下の図13に示す形式に変更し、さらに、上記第1実施形態において図7に示されるモデル情報出力処理を以下の図14に示すフローチャートに示す処理に変更することで可能となる。
【0113】
以下、図13,図14を参照して、第2実施形態の構成について上記第1実施形態の構成との差異点を中心に説明する。
【0114】
図13は、図4に示したトレース情報生成処理により生成され出力されたトレース情報ファイルの内容の一例を示す模式図である。
【0115】
図13に示すトレース情報ファイルが、図6に示したトレース情報ファイルとの異なる点は、メッセージの送信者(メソッドをコールしたオブジェクト)を情報として保存している点にある。
【0116】
なお、新たなトレース生成処理のフローチャートは示していないが、図5に示した第1実施形態のトレース情報生成処理に変更を加え、図5のステップS206,ステップS209の該処理により出力する情報の形式を変更している。上記第1実施形態で出力している情報に加え、メッセージ送信者の情報もトレース情報として出力するように変更するものとする。
【0117】
図13に示した例では、TR103がメッセージ送信者(メソッドをコールしたオブジェクトのクラス名)にあたり、TR106がそのメッセージ送信オブジェクトを一意に識別する為のキー値(即ち、メッセージ送信オブジェクト識別キー値)となる。
【0118】
また、TR101は、図6に示したTR001と同様に、プログラム内でメソッドが開始されたことを表し、以下のTR102,TR103,TR104,TR105,TR106はそれぞれ1つのメソッドの情報を表している。詳細には、TR102は、図6に示したTR002と同様に、メソッド名に相当する。また、TR103,TR104は、上述したように、メッセージ送信者,メッセージ送信オブジェクト識別キー値を示す。さらに、TR105,TR106は、図6に示したTR003,TR004と同様に、メッセージ受信者,メッセージ受信オブジェクト識別キー値を示す。
【0119】
図14は、本発明のシーケンス情報自動生成装置における第5の制御処理手順の一例を示すフローチャートであり、図3のステップS104のモデル情報の生成処理(マルチスレッド構成のプログラムに対応したモデル情報生成処理)に対応する。なお、このフローチャートの処理は、図2に示したCPU41がHD44等に格納されたプログラムをRAM42にロードして実行することにより実現される。また、図中、S401〜S414は各ステップを示す。
【0120】
本フローチャートの処理が、図7に示したフローチャートの処理と異なる点は、トレース情報ファイルより変数「メッセージ送信者」を設定する点にある。図7に示したフローチャートの処理では、プログラム内の前回のメッセージ受信者を変数「メッセージ送信者」に設定していたが、これはシングルスレッド構成のプログラムを対象に置いた為である。
【0121】
以下、本発明のマルチスレッド構成のプログラムに対応したモデル情報生成処理について詳細に説明する。
【0122】
まず、ステップS401において、CPU41は、トレース情報ファイル(図13)より1行分の読み込を行ない、RAM42上に確保される変数lineに格納する。
【0123】
次に、ステップS402において、CPU41は、変数「line」の値が"[ENTRY]"と同等かどうかを判定する。
【0124】
ステップS402において、CPU41が変数「line」の値が"[ENTRY]"と同等であると判定した場合には、ステップS403に進み、以降の処理はメソッドの開始情報を取得する処理となり、一方、CPU41が変数「line」の値が"[ENTRY]"と同等でないと判定した場合には、ステップS414に進み、以降の処理はメソッドの終了情報を取得する処理となる。まずは、前者の場合について示す。
【0125】
ステップS403において、CPU41は、トレース情報ファイルから1行読み込み、該読み込んだ行のデータをRAM42上に確保される変数「メソッド名」に格納する。
【0126】
次に、ステップS404において、CPU41は、トレース情報ファイルから1行読み込み、該読み込んだ行のデータをRAM上に確保される変数「メッセージ送信者」に格納する。次に、ステップS405において、CPU41は、トレース情報ファイルをから次行を1行読み込み、該読み込んだ行のデータをRAM上に確保される変数「メッセージ送信オブジェクト識別キー値」に格納する。
【0127】
次に、ステップS406において、CPU41は、トレース情報ファイルをから次行を1行読み込み、該読み込んだ行のデータをRAM上に確保される変数「メッセージ受信者」に格納する。次に、ステップS407において、CPU41は、トレース情報ファイルをから次行を1行読み込み、該読み込んだ行のデータをRAM上に確保される変数「メッセージ受信オブジェクト識別キー値」に格納する。
【0128】
次に、ステップS408においては、CPU41は、変数「メソッド名」の値,変数「メッセージ送信者」の値,変数「メッセージ送信オブジェクト識別キー値」の値を、変数「メッセージ受信者」の値,変数「メッセージ受信オブジェクト識別キー値」の値を、メソッド情報として、RAM42上のマップ(図15(a))に登録する。
【0129】
次に、ステップS409において、CPU41は、変数「メソッド名」の値,変数「メッセージ送信者」の値,変数「メッセージ受信者」の値を、モデル情報として、HD44内のモデル情報ファイル(後述する図15(b))(図1のモデル情報格納部22)に追加して、ステップS410に進む。
【0130】
一方、ステップS402で、CPU41が変数「line」の値が"[ENTRY]"と同等でないと判定した場合(即ち"[EXIT ]"の場合)には、ステップS411に進み、CPU41は、トレース情報ファイルから1行読み込み、該読み込んだ行のデータをRAM42上に確保される変数「メソッド名」に格納する。
【0131】
次に、ステップS412において、CPU41は、トレース情報ファイルから次行を1行読み込み、該読み込んだ行のデータをRAM42上に確保される変数「メッセージ送信者」に格納する。
【0132】
次に、ステップS413において、CPU41は、トレース情報ファイルから次行を1行読み込み、該読み込んだ行のデータを変数「メッセージ受信オブジェクト識別キー値」に格納する。
【0133】
次に、ステップS414において、CPU41は、ステップS311でセットした変数「メソッド名」の値,ステップS413でセットした変数「メッセージ受信オブジェクト識別キー値」の値の組み合わせに対応するメッセージ情報をマップ(図15(a))の後方より(新しい情報から)検索し、該検索されたメッセージ情報内の「メッセージ送信者」の値を、変数「メッセージ受信者」に格納し、ステップS409に進み、CPU41は、変数「メソッド名」の値,変数「メッセージ送信者」の値,変数「メッセージ受信者」の値を、モデル情報として、HD44内のモデル情報ファイル(図15(b))に追加して、ステップS410に進む。
【0134】
次に、ステップS410において、CPU41は、トレース情報ファイルに次の行が存在するか否かを判定し、存在すると判定した場合には、ステップS401の処理に戻る。
【0135】
一方、ステップS410で、CPU41が、トレース情報ファイルに次の行が存在しない(EOF)と判定した場合には、本フローチャートの処理を終了する。
【0136】
図15は、図14に示したマルチスレッド構成のプログラムに対応したモデル情報生成処理により生成された情報の内容の一例を示す模式図である。なお、図15(a)は図14のステップS408で登録されたマップに対応し、図15(b)は図7のステップS409で出力されたモデル情報ファイルに対応する。
【0137】
以上示したように、本実施形態によれば、マルチレッド構成のプログラムであっても、プログラムの実際の実行プロセスをシーケンス図として可視化することが可能となり、プログラムのソースコードからシーケンス図を生成する従来の方法のように、条件分岐等の点からシーケンスが曖昧となってしまうことがなく、デバッグ作業の効率化、設計矛盾の指摘など、開発効率の改善を図ることができる。
【0138】
また、プログラムのソースコードが存在しない状況下(例えば、誤ってソースコードを消去してしまった等の状況下)であっても、マルチレッド構成のプログラムのシーケンス図を作成することが可能となる。
【0139】
〔第3実施形態〕
上記第1実施形態、第2実施形態では、シーケンス情報ファイル内に、表示についての情報(オブジェクトの配置順、位置等の情報)は特に設定していない。表示についてはXMI形式のファイルを表示できる一般の表示ツール(シーケンス図表示機能32)で行う為、表示ツールによって表示にばらつきがでることがある。しかしながら、以下、本実施形態で示す構成により、表示ツール間での表示を統一することも可能である。その為の方法を以下に説明する。
【0140】
本発明によって外部ツール間でのシーケンス図の表示を統一する為には、図3のステップS104(モデル情報の生成)によって得たモデル情報ファイルに、ダイアグラム(シーケンス図の構成要素(オブジェクト,活性区間,メッセージ等))の表示情報(オブジェクトの配置順、位置等の情報)を追加するように構成すれば良い。以下、この構成を示す、ダイアグラムの表示情報の算出方法を図16のフローチャートによって説明する。
【0141】
図16は、本発明のシーケンス情報自動生成装置における第6の制御処理手順の一例を示すフローチャートであり、図3のステップS104のモデル情報の生成処理とステップS105のシーケンス情報の出力処理との間で実行するダイアグラムの表示情報の算出処理に対応する。なお、このフローチャートの処理は、図2に示したCPU41がHD44等に格納されたプログラムをRAM42にロードして実行することにより実現される。また、図中、S501〜S511は各ステップを示す。
【0142】
まず、ステップS501において、CPU41は、描画開始位置の取得を行う。この描画開始位置はプログラム内でスタティックな値として保持するべきであり、予めDB45内やHD44内に記憶されるファイル等から読み込みRAM42内に保持しておく方法が考えられる。
【0143】
次に、ステップS502において、CPU41は、シーケンス図を構成する構成要素である、オブジェクト,メッセージ,活性区間の為の情報を取得している。これらの情報は描画開始位置の場合と同様に、DB45内やHD44内に記憶されるファイルなどから読み込む方法が考えられる。このステップS502において読み込んだ値は、RAM42内に保持されて以下のステップで、ダイアグラムの表示情報の算出に利用する事となる。
【0144】
ステップS503において、CPU41は、図3のステップS104(モデル情報の生成)によって得たモデル情報ファイル(図8(b)又は図15(b))より、シーケンス図に登場する全てのオブジェクト,メッセージの情報を取得する。ここで得た全てのオブジェクト,メッセージに対して、この後の処理で配置処理を行なう事でダイアグラムの表示情報の追加を実現している。なお、ここで得たオブジェクト,メッセージの情報は、プログラム内での出現順に整列されてRAM42内に保持される。
【0145】
次に、ステップS504において、CPU41は、ステップS503で取得した全オブジェクトから出現順に1つ取り出し、該オブジェクトに配置座標を設定する。詳細には、「描画開始位置+(順序×オブジェクトの配置間隔)」をRAM42内にオブジェクト毎に確保される変数「オブジェクトの配置座標」として設定する。
【0146】
次に、ステップS505において、CPU41は、まだ配置していないオブジェクトが存在するか否かを判定し,存在すると判定した場合には、ステップS504の処理に戻り、次のオブジェクトの配置を行う。
【0147】
一方、ステップS505で、CPU41が、もう配置していないオブジェクトが存在しない(全てのオブジェクトを配置した)と判定した場合には、ステップS506に進む。以上、ステップS504,S505により、対応プログラム内の出現順に沿った形で、シーケンス図上にオブジェクト(図11のSQ001,SQ002)を配置することができる。
【0148】
次に、ステップS506において、CPU41は、ステップS504で設定した全オブジェクトの配置座標から出現順に1つ取り出し、該オブジェクトの配置座標に基づいて、対応するオブジェクトの活性区間の配置を行うための基準となる点(x,y)として、活性区間毎にRAM42上に確保される変数x,変数yを「変数x=(オブジェクトの配置座標X+オブジェクトの描画幅)/2」,「変数y=(オブジェクトの配置座標Y+オブジェクトの描画高さ)/2」のように設定する。
【0149】
次に、ステップS507において、CPU41は、対応するオブジェクトの持つ活性区間の配置を行っている。この活性区間は、例えば図11の802等であり、オブジェクトがメソッド(アクション)を実行している区間を表現している。
【0150】
詳細には、活性区間毎にRAM42内に確保される活性区間開始点X,活性区間開始点Y,活性区間終了点X,活性区間終了点Yに対して、「活性区間開始点X=変数x−(活性区間の幅/2)」,「活性区間開始点Y=変数y+メッセージの配置間隔」),「活性区間終了点X=活性区間開始点X+活性区間の幅」,「活性区間終了点Y=変数y+最後に送受信したメッセージの出現順序×メッセージの配置間隔」を設定する。
【0151】
なお、フローチャートには示していないが、活性区間を複数有するオブジェクトには、活性区間毎に変数yを「変数y=変数y+活性区間終了点Y」のように設定して、ステップS506の処理を繰り返すものとする。
【0152】
次に、ステップS508において、CPU41は、まだ活性区間を配置していないオブジェクトが存在するか否かを判定し,存在すると判定した場合には、ステップS506の処理に戻り、次のオブジェクトの活性区間の配置を行う。
【0153】
一方、ステップS508で、CPU41が、もう活性区間を配置していないオブジェクトが存在しない(全てのオブジェクトの活性区間を配置した)と判定した場合には、ステップS509に進む。以上、ステップS506〜S508により、対応プログラム内の出現順に沿った形で、シーケンス図上に活性区間(図11の802)を配置することができる。
【0154】
次に、ステップS509において、CPU41は、ステップS503で取得した全メッセージから出現順に1つ取り出し、該メッセージに配置座標を設定する。詳細には、メッセージ毎にRAM42に確保されるメッセージ開始点X,メッセージ開始点Y,メッセージ終了点X,メッセージ終了点Yに対して、「メッセージ開始点X=メッセージ送信オブジェクトの活性区間開始点X+(活性区間の幅/2)」,「メッセージ開始点Y=変数y+メッセージの出現順序×メッセージの配置間隔」),「メッセージ終了点X=メッセージ受信オブジェクトの活性区間開始点X+(活性区間の幅/2)」,「メッセージ終了点Y=メッセージ開始点Y」を設定する。
【0155】
次に、ステップS510において、CPU41は、まだ配置していないメッセージが存在するか否かを判定し,存在すると判定した場合には、ステップS509の処理に戻り、次のメッセージの配置を行う。
【0156】
一方、ステップS510で、CPU41が、もう配置していないメッセージが存在しない(全てのメッセージを配置した)と判定した場合には、ステップS511に進む。以上、ステップS509,S510により、対応プログラム内の出現順に沿った形で、シーケンス図上にメッセージ(図11のS003,SQ004,SQ004)を配置することができる。
【0157】
次に、ステップS511において、CPU41は、ステップS504〜S509を通して設定した各ダイアグラムの配置情報(各ダイアグラム(構成要素)の配置順,配置位置,配置サイズ等の情報(各ダイアグラム表示情報))をモデル情報ファイルに追加し、本ダイアグラムの表示情報の算出フローチャートを終了する。
【0158】
以下、図17のフローチャートを参照して、ダイアグラム表示情報が追加されたモデル情報ファイルからシーケンス情報ファイルを生成する処理について説明する。
【0159】
図17は、本発明のシーケンス情報自動生成装置における第7の制御処理手順の一例を示すフローチャートであり、図3のステップS105のシーケンス情報の生成処理(ダイアログの表示情報を追加してモデル情報を読み込みシーケンス情報を出力する処理)に対応する。なお、このフローチャートの処理は、図2に示したCPU41がHD44等に格納されたプログラムをRAM42にロードして実行することにより実現される。また、図中、S601〜S605,S701〜S703は各ステップを示し、図9と同一のステップには同一のステップ番号を付してある。
【0160】
図17において、ステップS601〜S1605は、図9と同一であるので、説明を省略する。
【0161】
ステップS701において、CPU41は、モデル情報ファイルをRAM42上に読み込み、ダイアグラムの表示情報を全て取得する。
【0162】
次に、ステップS702において、CPU41は、ステップS701で取得したダイアグラムの表示情報を1つ取り出し、ダイアグラムの表示情報に対応するXMIコード(図18のXMI01)を生成し、シーケンス情報ファイル(後述する図18)に出力する。
【0163】
なお、ステップS702のダイアグラムの表示情報に対応するXMIコードの作成処理では、例えば、図1に示したHD44内のDB45に格納されるXMIコードの部品(ヘッダ部分のXMIコードや、ダイアグラムの表示情報に対応するXMIコード)を読み出して、モデル情報ファイルから読み出した情報に対応させて、個々のダイアグラムの表示情報に対応するように編集し(例えば、表示位置,開始位置,終了位置の編集を行い)、モデル情報ファイルから読み出したダイアグラムの表示位置に対応するXMIコードを生成するものとする。
【0164】
次に、ステップS703において、CPU41は、まだXMIコードを生成していないダイアグラムの表示情報が存在するか否かを判定し、存在すると判定した場合には、ステップS702に戻り、次のオブジェクトに対する処理を行う。
【0165】
一方、ステップS703で、CPU41が、もうXMIコードを生成していないダイアグラムの表示情報は存在しないと判定した場合には、本フローチャートの処理を終了する。
【0166】
以下、上記図16,図17の処理により、ダイアグラム表示情報が追加されたモデル情報ファイルから生成されたシーケンス情報ファイルの一例を図18に示す。
【0167】
図18は、本発明の第3実施形態において生成されるシーケンス情報ファイルの一例を示す図である。
【0168】
このシーケンス情報ファイルは、図16に示したフローチャートの処理により、オブジェクトの座標情報等の表示情報がモデル情報ファイルに追加されたものである。
【0169】
図18において、例えば、XM101は、シーケンス図内における一つのオブジェクトを定義する要素である。XM102,XM103はそのオブジェクトの描画幅、高さをそれぞれ示している。
【0170】
このように、シーケンス図を構成する全ての描画要素に対して、座標、幅、高さなどを設定する事で、さまざまなシーケンス図表示ツール間での表示を統一できる。
【0171】
以上示したように、本発明の第3実施形態によれば、ダイアグラムの表示情報の算出設定を行うことにより、シーケンス図表示機能32に対応する一般の表示ツール間での表示の統一を可能にし、全ての開発者・ユーザが共通のシーケンス図を得ることが可能となる。
【0172】
以上、各実施形態によれば、実際に実行されるプログラムのトレース状態からトレース情報をトレース情報生成機能11(プログラム実行監視手段10と連携)により出力し、トレース情報生成機能11によって出力されたトレース情報をモデル情報生成機能12がシーケンス情報に変換可能なモデル情報として出力し、モデル情報生成機能12によって生成されたモデル情報をシーケンス情報出力機能13がメタ言語(本実施形態では、XMI)を用いたシーケンス情報に変換して出力することにより、プログラムの実際の実行プロセスをシーケンス図として可視化することが可能となり、プログラムのソースコードからシーケンス図を生成する従来の方法のように、条件分岐等の点からシーケンスが曖昧となってしまうことがなく、デバッグ作業の効率化、設計矛盾の指摘など、開発効率の改善を図ることができる。
【0173】
また、プログラムのソースコードが存在しない状況下(例えば、誤ってソースコードを消去してしまった等の状況下)であっても、プログラムのシーケンス図を作成することが可能となる。
【0174】
従って、プログラムの実行状態をトレースし、プログラムのシーケンス情報を自動生成することにより、既存のソフトウェアに手を加えることなく、既存ソフトウェアのシーケンス情報を取得することができる。
【0175】
なお、上記第1実施形態〜第3実施形態を合わせた構成も本発明に含まれるものである。
【0176】
なお、上記実施形態で示した各種データはの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【0177】
以上、実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【0178】
従って、プログラムの実際の実行プロセスをシーケンス図として可視化し、ソースコードが存在しないプログラムではシーケンス図が作成できなかったり、条件分岐等の点からシーケンスが曖昧となってしまう等のプログラムのソースコードからシーケンス図を生成する従来の方法の問題点を解決し、デバッグ作業の効率化、設計矛盾の指摘など、開発効率の改善を図ることができる。
【0179】
以下、図19に示すメモリマップを参照して本発明に係るシーケンス情報作成装置で読み取り可能なデータ処理プログラムの構成について説明する。
【0180】
図19は、本発明に係るシーケンス情報作成装置で読み取り(読み出し)可能な各種データ処理プログラムを格納する記録媒体(記憶媒体)のメモリマップを説明する図である。
【0181】
なお、特に図示しないが、記録媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報,作成者等も記憶され、かつ、プログラム読み出し側のOS等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【0182】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、インストールするプログラムやデータが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【0183】
本実施形態における図3,図5,図7,図9,図14,図16,図17に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、CD−ROMやフラッシュメモリやFD等の記録媒体により、あるいはネットワークを介して外部の記録媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【0184】
以上のように、前述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【0185】
この場合、記録媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【0186】
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,DVD−ROM,磁気テープ,不揮発性のメモリカード,ROM,EEPROM,シリコンディスク等を用いることができる。
【0187】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0188】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0189】
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウエアによって表されるプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【0190】
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ,データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【図面の簡単な説明】
【0191】
【図1】本発明の第1実施形態を示すシーケンス情報自動生成装置の機能構成を示す機能ブロック図である。
【図2】本発明のシーケンス情報自動生成装置のハードウェア構成の一例を示すブロック図である。
【図3】本発明のシーケンス情報自動生成装置における第1の制御処理手順の一例を示すフローチャートである。
【図4】シーケンス情報作成対象プログラムの情報を入力するためのユーザインタフェースの一例を示す模式図である。
【図5】本発明のシーケンス情報自動生成装置における第2の制御処理手順の一例を示すフローチャートである。
【図6】図4に示したトレース情報生成処理により生成され出力されたトレース情報ファイルの内容の一例を示す模式図である。
【図7】本発明のシーケンス情報自動生成装置における第3の制御処理手順の一例を示すフローチャートである。
【図8】図7に示したモデル情報生成処理により生成された情報の内容の一例を示す模式図である。
【図9】本発明のシーケンス情報自動生成装置における第4の制御処理手順の一例を示すフローチャートである。
【図10】図9に示したシーケンス情報の生成処理(図3のステップS105)で生成されるシーケンス情報の一例を示す模式図である。
【図11】図10に示したシーケンス情報ファイルに基づいて、図1の表示機能により表示装置に表示されるシーケンス図である。
【図12】図10に示したシーケンス情報内のXMI形式のコードと図11に示したシーケンス図との対応関係を示す図である。
【図13】図4に示したトレース情報生成処理により生成され出力されたトレース情報ファイルの内容の一例を示す模式図である。
【図14】本発明のシーケンス情報自動生成装置における第5の制御処理手順の一例を示すフローチャートである。
【図15】図14に示したマルチスレッド構成のプログラムに対応したモデル情報生成処理により生成された情報の内容の一例を示す模式図である。
【図16】本発明のシーケンス情報自動生成装置における第6の制御処理手順の一例を示すフローチャートである。
【図17】本発明のシーケンス情報自動生成装置における第7の制御処理手順の一例を示すフローチャートである。
【図18】本発明の第3実施形態において生成されるシーケンス情報ファイルの一例を示す図である。
【図19】本発明に係るシーケンス情報作成装置で読み取り(読み出し)可能な各種データ処理プログラムを格納する記録媒体(記憶媒体)のメモリマップを説明する図である。
【符号の説明】
【0192】
10 プログラム実行監視機能
11 トレース情報生成機能
12 モデル情報生成機能
13 シーケンス情報出力機能
21 トレース情報格納部
22 モデル情報格納部
23 シーケンス情報格納部
31 入力機能
32 シーケンス図表示機能
41 CPU
42 RAM
43 ROM
44 HD
45 DB
46 表示装置
47 入力装置

【特許請求の範囲】
【請求項1】
実行されるプログラムをトレースして前記プログラム実行時のトレース情報を生成するトレース情報生成手段と、
前記トレース情報生成手段により生成されたトレース情報に基づいて、前記プログラムのシーケンス情報を生成するシーケンス情報生成手段と、
を有することを特徴とするシーケンス情報生成装置。
【請求項2】
前記トレース情報生成手段は、プログラムの実行状態を監視するプログラム実行環境より、メソッドの開始,終了の情報を時系列に沿って取得して出力することを特徴とする請求項1記載のシーケンス情報生成装置。
【請求項3】
前記シーケンス情報生成手段は、前記トレース情報生成手段により生成されたトレース情報を、シーケンス情報に変換可能な、メソッド名,該メソッドに対応するメッセージ送信オブジェクトを示す情報,該メソッドに対応するメッセージ受信オブジェクトの情報が時系列に追加された構成のモデル情報として生成し、該生成されるモデル情報を所定のメタ言語を用いたシーケンス情報に変換することを特徴とする請求項1又は2記載のシーケンス情報生成装置。
【請求項4】
前記トレース情報生成手段は、実行されるマルチスレッド構成のプログラムの実行状態をトレースして前記マルチスレッド構成のプログラムのトレース情報を生成可能なことを特徴とする請求項1〜3のいずれかに記載のシーケンス情報生成装置。
【請求項5】
前記シーケンス情報生成手段により生成されるシーケンス情報に基づいて、シーケンス図を生成するシーケンス図生成手段を設けたことを特徴とする請求項1〜4のいずれかに記載のシーケンス情報生成装置。
【請求項6】
前記シーケンス情報生成手段は、前記トレース情報生成手段により生成されたトレース情報に基づいて、前記シーケンス図生成手段により生成されるシーケンス図の各構成要素の配置情報を含んだシーケンス情報を生成することを特徴とする請求項1〜5記載のシーケンス情報生成装置。
【請求項7】
プログラムを実行可能な情報処理装置におけるシーケンス情報生成方法において、
実行されるプログラムをトレースして前記プログラム実行時のトレース情報を生成するトレース情報生成ステップと、
前記トレース情報生成ステップにより生成されたトレース情報に基づいて、前記プログラムのシーケンス情報を生成するシーケンス情報生成ステップと、
を有することを特徴とするシーケンス情報生成方法。
【請求項8】
請求項7に記載されたシーケンス情報生成方法を実行するためのプログラム。
【請求項9】
請求項7に記載されたシーケンス情報生成方法を実行するためのプログラムをコンピュータが読み取り可能に記憶した記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2006−18477(P2006−18477A)
【公開日】平成18年1月19日(2006.1.19)
【国際特許分類】
【出願番号】特願2004−194461(P2004−194461)
【出願日】平成16年6月30日(2004.6.30)
【出願人】(301015956)キヤノンソフトウェア株式会社 (364)
【Fターム(参考)】