実施の形態1.
以下、本発明の第1の実施の形態を図面を参照して説明する。図1は、本発明によるシーケンス図表示装置の構成の一例を示すブロック図である。本実施の形態では、複数のオブジェクトを含む業務システムなどのプログラムを開発する場合に、開発中のプログラムの結合テストや本番テスト(以下、単にテストと記す)を行った結果を、シーケンス図表示装置がシーケンス図表示する場合を例に説明する。ただし、本発明は、結合テストや本番テストだけでなく、モジュール単体テストにも適用することができる。
図1に示すように、シーケンス図表示装置は、テスト対象のプログラムを実行する対象プログラム実行部100と、テスト対象のプログラムに従って処理されるデータを記憶するデータベース102と、プログラムの実行中に生成されるログファイルを記憶するログファイル記憶手段103と、ログ情報にもとづいてシーケンス図を表示する処理シーケンス表示装置110とを含む。
対象プログラム実行部100は、コンピュータなどの情報処理装置の制御部(図示せず)などによって実現される。対象プログラム実行部100は、プログラムの開発者(以下、単に開発者と記す)などの操作に従って、開発中のプログラムのテストを行う。以下、テスト対象のプログラムを対象プログラム100aと記す。
対象プログラム100aには、ログ情報を生成するためのプログラムであるログ部品101が組み込まれている。対象プログラム実行部100は、ログ部品101の手順に従って、対象プログラム100aを実行した際のログ情報を含むログファイルを生成する。また、対象プログラム実行部100は、ログ部品101の手順に従って、生成したログファイルをログファイル記憶手段103に記憶させる。
データベース102は、対象プログラム実行部100が対象プログラム100aに従って処理する各データを記憶する。ログファイル記憶手段103は、ハードディスクなどによって実現され、対象プログラム実行部100が生成するログファイルを記憶する。
処理シーケンス表示装置110は、ログファイルを読み込むログリーダ111と、ログファイルを記憶するログ記憶部112と、シーケンス図を表示するためのシーケンス図情報を生成するシーケンス図作成器113と、シーケンス図情報を記憶するシーケンス図情報記憶部114と、シーケンス図を表示するビューワ115と、シーケンス図の表示の設定情報を記憶する表示設定情報記憶部116と、シーケンス図の表示を設定する表示設定器117とを含む。
ログリーダ111は、情報処理装置の制御部などによって実現される。ログリーダ111は、ログファイル記憶手段103からログファイルを読み込んでログ記憶部112に記憶させる。ログ記憶部112は、情報処理装置のメモリなどの記憶装置(図示せず)によって実現される。ログ記憶部112は、ログリーダ111が読み込んだログファイルを記憶する。
シーケンス図作成器113は、シーケンス図作成プログラムに従って動作する情報処理装置の制御部などによって実現される。シーケンス図作成器113は、ログファイルに格納されているログ情報にもとづいてシーケンス図情報を生成する。
シーケンス図情報は、対象プログラム100aに含まれる各オブジェクトを時系列に相互に対応付けた情報である。例えば、シーケンス図情報は、各オブジェクト間でやりとりされるメッセージや、プログラム実行中に各オブジェクトが呼び出されている呼出時間を、各オブジェクトに時系列に対応付けた情報を含む。また、シーケンス図情報は、各オブジェクトの入出力パラメータや処理データなどの付加情報を含む。なお、本実施の形態では、対象プログラム100aに含まれる各オブジェクトが時系列に相互に対応付けられていることを、以下、単に構造化されていると記す。すなわち、本実施の形態において、シーケンス図情報は、対象プログラム100aの実行結果を構造化した構造化情報としての役割を果たす。
シーケンス図情報記憶部114は、情報処理装置の記憶装置などによって実現される。シーケンス図情報記憶部114は、シーケンス図作成器113が生成するシーケンス図情報を記憶する。
ビューワ115は、情報処理装置の表示部(図示せず)にシーケンス図を表示させるためのプログラムである。処理シーケンス表示装置110は、ビューワ115の機能を用いて、シーケンス図情報記憶部114が記憶するシーケンス図情報にもとづいてシーケンス図を表示部に表示する。また、処理シーケンス表示装置110は、開発者からの表示切替指示が入力されると、ビューワ115の機能を用いて、シーケンス図の表示範囲を切り替えて表示部に表示する。例えば、開発者は、ビューワ115による表示画面から操作することによって、表示部に表示されるシーケンス図の表示範囲を切り替えることができる。
また、処理シーケンス表示装置110は、表示設定情報記憶部116が記憶するシーケンス図の表示条件の設定情報(以下、表示設定情報と記す)にもとづいて、ビューワ115の機能を用いて、表示設定情報で設定されている表示条件に従ってシーケンス図を表示する。
また、処理シーケンス表示装置110は、ビューワ115の機能を用いて、対象プログラム100aに含まれる各オブジェクトを時系列に相互に対応付けて視覚的にシーケンス図上に表示する。例えば、処理シーケンス表示装置110は、各オブジェクト間でやりとりされるメッセージや各オブジェクトの呼出時間を、各オブジェクトに時系列に対応付けて表示する。また、処理シーケンス表示装置110は、各オブジェクトの入出力パラメータや処理データなどの付加情報を表示する。本実施の形態では、対象プログラム100aに含まれる各オブジェクトを時系列に相互に対応付けて視覚的に表示することを、以下、単に構造化表示すると記す。例えば、処理シーケンス表示装置110は、ビューワ115の機能を用いて、UML形式に従って構造化表示したシーケンス図を表示する。
表示設定情報記憶部116は、情報処理装置の記憶装置によって実現される。表示設定情報記憶部116は、表示設定情報を記憶する。表示設定情報は、シーケンス図に表示されうる各図形やデータのうち、いずれの図形やデータを表示するかの設定値などを含む情報である。例えば、表示設定情報は、シーケンス図に表示されうる図形やデータごとに「表示」または「非表示」の設定値情報を含む。表示設定器117は、情報処理装置の制御部およびキーボードなどの入力部(図示せず)によって実現される。表示設定器117は、開発者の入力指示に従って、表示設定情報記憶部116が記憶する表示設定情報を更新する。
構造化情報生成手段は、シーケンス図作成器113によって実現される。シーケンス図表示手段は、ビューワ115に従って動作する情報処理装置の制御部などによって実現される。表示設定情報記憶手段は、表示設定情報記憶部116によって実現される。表示設定情報更新手段は、表示設定器117によって実現される。
なお、処理シーケンス表示装置110を実現する情報処理装置(コンピュータ)の記憶装置は、コンピュータに、プログラムの実行結果のログ情報にもとづいて、プログラムに含まれる各オブジェクトを時系列に対応付けて構造化した構造化情報を生成する処理と、シーケンス図に表示される表示情報の表示条件を設定する情報である表示設定情報を抽出し、表示設定情報に設定される表示条件に従って、構造化情報にもとづいて、プログラムの実行結果を、各オブジェクトを時系列に対応付けたシーケンス図として表示する処理とを実行させるためのシーケンス図表示プログラムを記憶している。
図2は、ログファイルに格納されるログ情報のデータ形式の一例を示す説明図である。図2に示す例は、対象プログラム100aとして業務システムを実行した場合のログ情報のデータ形式を示したものである。図2に示すように、ログファイルには、ログ情報として、対象プログラム100aにおける各処理シーケンスと処理データや、データベース処理の処理前後のデータなどが格納される。
例えば、一般に業務システムは表示画面からの入力受付から処理を開始するので、図2に示すように、ログファイルには、ログ情報として、画面入力処理201の際の画面名、入力パラメータおよび処理前データなどのログ情報が最初に格納される。
また、画面入力処理が行われると、業務システムに含まれる具体的な処理が実行されるので、ログファイルには、ログ情報として、具体的な処理の処理開始202の際の呼出オブジェクト名、呼出メソッドおよびメソッド引数などの情報が格納される。例えば、ログファイルには、業務システムに含まれるデータ検索処理の処理開始の際の呼出オブジェクト名、呼出メソッドおよびメソッド引数などの情報が格納される。以下、業務システムに含まれるデータ検索処理などの具体的な処理を単に業務処理と記す。
ここでは、業務処理が開始されるとデータ検索などのデータベース処理が行われる。よって、ログファイルには、ログ情報として、業務処理で実行されるデータベース処理203の処理前データ、実行SQL(Structured Query Language )文および処理後データなどの情報が格納される。
また、データ検索などを完了すると業務処理を終了するので、ログファイルには、ログ情報として、業務処理の処理終了204の際の呼出オブジェクト名、呼出メソッドおよびメソッド返却値などの情報が格納される。さらに、業務システムは表示画面への出力で処理を終了するので、ログファイルには、ログ情報として、画面出力処理205の画面名、出力パラメータおよび処理後データが最後に格納される。
なお、業務処理を1つだけ含む場合に限らず、対象プログラム100aは、複数の業務処理を含むものであってもよい。この場合に、ログファイルには、業務処理の処理開始202の際のログ情報、データベース処理203のログ情報および処理終了204の際のログ情報が複数格納される。
図3は、ログファイルに格納されるログ情報の内容の具体例を示す説明図である。図3に示す例では、図2に示す処理開始202および処理終了204に相当する情報は省略されている。従って、図3に示すように、ログ情報は、画面入力処理のログ情報301,データベース処理のログ情報302および画面出力処理のログ情報303を含む。
例えば、対象プログラム100aを実行した際に最初に画面入力処理が行われるので、図3に示すように、ログファイルには、画面入力処理の画面名「ItemServlet 」および入力パラメータ「ITEM_CD=ITEM0003」のログ情報が格納される。入力パラメータは、「パラメータ名=パラメータ値」の形式で表示される。本例では、図3に示すように、入力パラメータのパラメータ名が「ITEM_CD 」であり、パラメータ値が「ITEM0003」である。なお、本例では、図3に示すように、画面入力処理の処理前データがない場合を説明する。
次に、データベース処理が行われるので、ログファイルには、データベース処理の処理前データ「ITEM_MST ITEM_CD=ITEM0003,ITEM_NAME=PC,PRICE=100000 」、実行するSQL文「SELECT*FROM ITEM_MST WHERE ITEM_CD='ITEM0003' 」および処理後データ「ITEM_MST ITEM_CD=ITEM0003,ITEM_NAME=PC,PRICE=100000 」のログ情報が格納される。
さらに、最後に画面出力処理が行われるので、ログファイルには、画面出力処理の画面名「ItemServlet 」および出力パラメータ「ITEM_CD=ITEM0003,ITEM_NAME=PC,PRICE=100000」のログ情報が格納される。出力パラメータは、入力パラメータと同様に、「パラメータ名=パラメータ値」の形式で表示される。本例では、図3に示すように、ログファイルには、3つの出力パラメータが格納される。出力パラメータの値は、それぞれ、パラメータ名「ITEM_CD 」に対してパラメータ値「ITEM0003」、パラメータ名「ITEM_NAME 」に対してパラメータ値「PC」、およびパラメータ名「PRICE 」に対してパラメータ値「100000」である。なお、本例では、図3に示すように、画面出力処理の処理後データがない場合を説明する。
図4は、シーケンス図作成器113が生成するシーケンス図情報のデータ形式の一例を示す説明図である。シーケンス図情報は、図4に示すように、UML形式に従って、「レーン」、「メッセージ」および「活性区間」の情報を含む。
「レーン」は、対象プログラム100aに含まれるオブジェクトやデータベースの範囲を示す情報である。また、図4に示すように、シーケンス図情報は、各レーンに対応付けて、レーンを識別するための「レーンID」、および各レーンの名称である「レーン名」の情報を含む。以下、レーンの属性を示す「レーンID」および「レーン名」の情報をレーン属性情報と記す。
なお、各レーンIDは、シーケンス図情報において一意に設定される。本実施の形態において、まず最初に生成されたレーンに対してレーンID「0000」と設定される。そして、生成された順番に、各レーンに対して「1」ずつ加算した値がレーンIDとして設定される。例えば、2番目に生成されたレーンに対してレーンID「0001」と設定される。
「メッセージ」は、ある活性区間から他の活性区間へのシグナルを示す。例えば、シーケンス図情報は、「メッセージ」として、処理の開始や終了を示す文字列情報を含む。また、図4に示すように、シーケンス図情報は、各メッセージを識別するための「メッセージID」、メッセージの名称を示す「メッセージ名」、およびメッセージが対象プログラム100a実行中のいずれの時間に発生したのかを示す「発生時間」を含む。以下、「メッセージID」、「メッセージ名」および「発生時間」などのメッセージの属性を示す情報をメッセージ属性情報と記す。
なお、レーンIDと同様に、メッセージIDおよび発生時間は、シーケンス図情報において一意に設定される。例えば、生成された順番に各メッセージに対して、メッセージID「M0000 」,「M0001 」・・・と設定される。また、例えば、メッセージが発生した順番に、発生時間「1」,「2」・・・と設定される。
ログ情報に入出力パラメータや処理データが含まれる場合には、シーケンス図情報は、オプションのメッセージ属性情報として、「パラメータ」、「引数」または「返値」の情報を含む。「パラメータ」は、画面入出力処理などにおいて、画面から入力される情報や画面表示される情報である。シーケンス図情報は、図4に示すように、「パラメータ」の情報を(<パラメータ名><パラメータ値>)の形式で含む。また、「引数」は、各処理においてメソッド呼び出しを行う際の引数である。また、「返値」は、各処理を行った際のメソッドの返却値である。
「活性区間」は、各レーンに対応するオブジェクトやデータベースが、対象プログラム100a実行中に呼び出されている時間を示す。図4に示すように、シーケンス図情報は、各活性区間に対応付けて、活性区間に対応するレーンの「レーンID」、活性区間の開始時間に対応するメッセージIDである「開始メッセージID」、活性区間の終了時間に対応するメッセージIDである「終了メッセージID」、および活性区間の名称を示す「活性区間名」を含む。以下、活性区間に対応する「レーンID」、「開始メッセージID」、「終了メッセージID」および「活性区間名」などの情報を活性区間属性情報と記す。
ログ情報にデータベース処理の処理前後データやSQLのコマンド文が含まれる場合には、シーケンス図情報は、オプションの活性区間属性情報として、「Before」、「SQL 」や「After 」の情報を含む。「Before」は、データベース処理の処理前データである。「SQL 」は、データベース処理で実行されるSQL文である。「After 」は、データベース処理の処理後データである。
なお、「Before」および「After 」は、図4に示すように、データベースのテーブル名(表名)と、テーブルに含まれるデータ列(「Row 」)とを含む。また、テーブルに含まれる各データは、図4に示すように、「Cell」単位で(<データ名><データ値>)の形式でシーケンス図情報に格納される。
本実施の形態では、図4に示すように、各メッセージが発生時間の情報を含み、各活性区間が対応するレーンID、開始メッセージIDおよび終了メッセージIDを含むので、各オブジェクト間でやりとりされるメッセージおよび各活性区間が、各オブジェクトに時系列に対応付けられる。すなわち、対象プログラム100aに含まれる各オブジェクトが時系列に相互に対応付けられる。
図5および図6は、シーケンス図情報の内容の具体例を示す説明図である。図5および図6に示すシーケンス図情報は、シーケンス図作成器113が図3に示すログ情報にもとづいて生成したものである。図5および図6に示すように、シーケンス図情報は、各レーン属性情報を含むタグ情報形式のレーン501,502と、各メッセージ属性情報を含むタグ情報形式のメッセージ503,504,505,506と、各活性区間属性情報を含むタグ情報形式の活性区間601,602とを含む。
次に、動作について説明する。開発者は、情報処理装置などを操作して、テストのために、対象プログラム100aの実行指示を入力する。対象プログラム実行部100は、開発者の操作に従って、対象プログラム100aを実行する。すると、対象プログラム実行部100は、ログ部品101の手順に従って、実行した対象プログラム100aに含まれるメソッドや処理データを含んだログ情報を生成し、生成したログファイルをログファイル記憶手段103に記憶させる。本例では、対象プログラム実行部100は、図3に示すログ情報を含むログファイルを生成する。
本実施の形態では、どのレベルまでのログ情報を出力するかを開発者が予め対象プログラム100aの実行前に設定するのでなく、ログ部品101は、対象プログラム100aに含まれる全てのメソッドおよび実行中の全ての処理データを含むログ情報を生成する。なお、開発者がどのレベルまでのログ情報を出力するかを予め対象プログラム100a実行前に設定できるようにしてもよい。
図7は、処理シーケンス表示装置110がログファイルを読み込んでシーケンス図を表示するシーケンス図表示処理の一例を示す流れ図である。テストを行った後に実行結果をシーケンス図表示させる場合には、開発者は、処理シーケンス表示装置110を操作して、シーケンス図の表示指示を入力する。シーケンス図の表示指示が入力されると、ログリーダ111は、ログファイル記憶手段103が記憶するログファイルを読み込む(ステップS101)。ログリーダ111は、読み込んだログファイルをログ記憶部112に記憶させる(ステップS102)。
シーケンス図作成器113は、ログ記憶部112が記憶するログファイルを読み込む(ステップS103)。シーケンス図作成器113は、ログファイルに格納されているログ情報の先頭行を抽出する(ステップS104)。本例では、シーケンス図作成器113は、図3に示すログ情報の先頭行の画面入力行「ItemServlet 」を抽出する。
シーケンス図作成器113は、あらたにシーケンス図情報を生成しシーケンス図情報記憶部114に記憶させる。シーケンス図作成器113は、抽出したログファイルの先頭行に対する「レーン」を生成しシーケンス図情報に格納する(ステップS105)。
本例では、図5に示すように、シーケンス図作成器113は、「レーン」のタグ情報501を生成する。また、シーケンス図作成器113は、生成したタグ情報501に対するレーン属性情報を生成する。本例では、シーケンス図作成器113は、レーンID「0000」を生成する。また、シーケンス図作成器113は、図3の先頭行の画面名にもとづいてレーン名「ItemServlet 」を生成する。そして、シーケンス図作成器113は、生成したレーン属性情報を含むタグ情報501をシーケンス図情報に格納する。
シーケンス図作成器113は、生成した「レーン」に対する「メッセージ」を生成しシーケンス図情報に格納する(ステップS106)。
本例では、図5に示すように、シーケンス図作成器113は、「メッセージ」のタグ情報503を生成する。また、シーケンス図作成器113は、生成したタグ情報503に対するメッセージ属性情報を生成する。本例では、シーケンス図作成器113は、メッセージID「M0000 」を生成する。また、シーケンス図作成器113は、画面名「ItemServlet 」に「Begin 」を付加してメッセージ名「ItemServlet Begin 」を生成する。また、「ItemServlet Begin 」は最初に発生したメッセージであるので、シーケンス図作成器113は、発生時間「1」を生成する。
また、図3に示すように、画面入力処理が入力パラメータを含むので、シーケンス図作成器113は、オプションのメッセージ属性情報としてパラメータ情報を生成する。本例では、シーケンス図作成器113は、図3の入力パラメータにもとづいて、パラメータ名「ITEM_CD」および値「ITEM0003」を生成する。そして、シーケンス図作成器113は、生成したメッセージ属性情報を含むタグ情報503をシーケンス図情報に格納する。
シーケンス図作成器113は、生成した「レーン」に対応する「活性区間」を生成しシーケンス図情報に格納する(ステップS107)。
本例では、図6に示すように、シーケンス図作成器113は、「活性区間」のタグ情報601を生成する。また、シーケンス図作成器113は、生成したタグ情報601に対する活性区間属性情報を生成する。本例では、シーケンス図作成器113は、ステップS105で生成したレーンのレーンID「0000」を生成する。
また、シーケンス図作成器113は、活性区間の開始時のメッセージのメッセージIDである開始メッセージIDを生成する。本例では、ステップS106で生成したメッセージが開始時のメッセージであるので、シーケンス図作成器113は、開始メッセージID「M0000 」を生成する。また、シーケンス図作成器113は、図3の画面名を含む活性区間名「ItemServlet 」を生成する。そして、シーケンス図作成器113は、生成した活性区間属性情報を含むタグ情報601をシーケンス図情報に格納する。
シーケンス図作成器113は、ログファイルに格納されているログ情報の次の行を抽出する(ステップS108)。シーケンス図作成器113は、ステップS108でログ情報に次の行が含まれていたか否かを判断する(ステップS109)。次の行が含まれていた場合には、シーケンス図作成器113は、次の処理が「処理開始」、「データベース処理」、「処理終了」または「画面出力処理」のいずれであるかを判断する(ステップS110)。
次の処理が「処理開始」であると判断した場合には、シーケンス図作成器113は、ログ情報に含まれる「処理開始」の呼出オブジェクト名を抽出し、抽出した呼出オブジェクト名に対応する「レーン」をシーケンス図情報から抽出する。また、対応するレーンがシーケンス図情報に含まれない場合には、シーケンス図作成器113は、呼出オブジェクト名をレーン名として、あらたに「レーン」を生成する(ステップS111)。
シーケンス図作成器113は、抽出または生成した「レーン」に対応する「メッセージ」を生成しシーケンス図情報に格納する(ステップS112)。この場合に、シーケンス図作成器113は、現在の最新のメッセージIDに「1」を加算した値をメッセージIDとして、ステップS106と同様の手順に従って「メッセージ」を生成する。また、シーケンス図作成器113は、ログ情報から「処理開始」の呼出メソッド名を抽出し、呼出メソッド名に「begin 」を付加した文字列をメッセージ名として「メッセージ」を生成する。また、ログ情報にメソッド引数が含まれる場合には、シーケンス図作成器113は、ログ情報からメソッド引数の値を抽出し、メッセージ属性情報の引数として「メッセージ」を生成する。
シーケンス図作成器113は、抽出または生成した「レーン」に対応する「活性区間」を生成しシーケンス図情報に格納する(ステップS113)。この場合に、シーケンス図作成器113は、ステップS111で抽出または生成した「レーン」のレーンID、および開始メッセージIDとしてステップS112で生成した「メッセージ」のメッセージIDにもとづいて、ステップS107と同様に手順に従って「活性区間」を生成する。また、シーケンス図作成器113は、ログ情報から呼出メソッド名を抽出し、抽出したメソッド名を活性区間名として「活性区間」を生成する。
生成した「活性区間」をシーケンス図情報に格納すると、シーケンス図作成器113は、ステップS108に戻りログ情報に含まれる全ての行について処理を終了するまでステップS108以降の処理を繰り返し実行する。なお、本例では、図3に示すように、ログファイルに「処理開始」のログ情報が格納されていないので、シーケンス図作成器113は、ステップS111からステップS113の処理を実行しない。
ステップS110で次の処理が「データベース処理」であると判断した場合には、シーケンス図作成器113は、ログ情報に含まれるSQL文からデータベースのテーブル名を抽出し、抽出したテーブル名に対応する「レーン」をシーケンス図情報から抽出する。また、対応するレーンがシーケンス図情報に含まれない場合には、シーケンス図作成器113は、テーブル名をレーン名として、あらたに「レーン」を生成する(ステップS114)。
本例では、図3に示すように、次の処理が「データベース処理」であるので、シーケンス図作成器113は、図3に示すログ情報に含まれるSQL文からデータベースのテーブル名「ITEM_MST」を抽出する。
テーブル名「ITEM_MST」に対応するレーンがシーケンス図情報に含まれていないので、シーケンス図作成器113は、図5に示すように、あたらに「レーン」のタグ情報502を生成する。また、シーケンス図作成器113は、生成したタグ情報502に対するレーン属性情報を生成する。本例では、タグ情報502が2つ目の「レーン」のタグ情報であるので、シーケンス図作成器113は、レーンID「0001」を生成する。また、シーケンス図作成器113は、テーブル名「ITEM_MST」にもとづいてレーン名「ITEM_MST」を生成する。そして、シーケンス図作成器113は、生成したレーン属性情報を含むタグ情報502をシーケンス図情報に格納する。
シーケンス図作成器113は、メッセージ名「Execute SQL begin 」として、抽出または生成した「レーン」に対する「メッセージ」を生成しシーケンス図情報に格納する(ステップS115)。
本例では、図5に示すように、シーケンス図作成器113は、「メッセージ」のタグ情報504を生成する。また、シーケンス図作成器113は、生成したタグ情報504に対するメッセージ属性情報を生成する。本例では、タグ情報504が2つ目の「メッセージ」のタグ情報であるので、シーケンス図作成器113は、メッセージID「M0001 」を生成する。また、シーケンス図作成器113は、メッセージ名「Execute SQL begin 」を生成する。また、「Execute SQL begin 」は2番目に発生したメッセージであるので、シーケンス図作成器113は、発生時間「2」を生成する。そして、シーケンス図作成器113は、生成したメッセージ属性情報を含むタグ情報504をシーケンス図情報に格納する。
シーケンス図作成器113は、メッセージ名「Execute SQL end 」として、抽出または生成した「レーン」に対する「メッセージ」を生成しシーケンス図情報に格納する(ステップS116)。
本例では、図5に示すように、シーケンス図作成器113は、「メッセージ」のタグ情報505を生成する。また、シーケンス図作成器113は、生成したタグ情報505に対するメッセージ属性情報を生成する。本例では、タグ情報505が3つ目の「メッセージ」のタグ情報であるので、シーケンス図作成器113は、メッセージID「M0002 」を生成する。また、シーケンス図作成器113は、メッセージ名「Execute SQL end 」を生成する。また、「Execute SQL end 」は3番目に発生したメッセージであるので、シーケンス図作成器113は、発生時間「3」を生成する。そして、シーケンス図作成器113は、生成したメッセージ属性情報を含むタグ情報505をシーケンス図情報に格納する。
シーケンス図作成器113は、抽出または生成した「レーン」に対応する「活性区間」を生成しシーケンス図情報に格納する(ステップS117)。
本例では、図6に示すように、シーケンス図作成器113は、「活性区間」のタグ情報602を生成する。また、シーケンス図作成器113は、生成したタグ情報602に対する活性区間属性情報を生成する。本例では、シーケンス図作成器113は、ステップS114で生成したレーンのレーンID「0001」を生成する。
また、シーケンス図作成器113は、ステップS115で生成したメッセージ「Execute SQL begin 」にもとづいて開始メッセージID「M0001 」を生成する。また、シーケンス図作成器113は、ステップS116で生成したメッセージ「Execute SQL end 」にもとづいて終了メッセージID「M0002 」を生成する。また、シーケンス図作成器113は、図3のログ情報に含まれるSQL文からコマンド「select」を抽出して活性区間名「select」を生成する。
また、図3に示すように「データベース処理」が処理前データ、SQL文および処理後データを含むので、シーケンス図作成器113は、オプションの活性区間属性情報として、「Before」、「SQL 」および「After 」のタグ情報を生成する。本例では、シーケンス図作成器113は、図6に示すように、ログ情報に含まれる処理前データからテーブル名「ITEM_MST」、データ名「ITEM_CD 」と値「ITEM0003」、データ名「ITEM_NAME 」と値「PC」およびデータ名「PRICE 」と値「100000」を抽出し、「Before」のタグ情報603を生成する。
また、シーケンス図作成器113は、図6に示すように、ログ情報に含まれるSQL文「SELECT * FROM ITEM_MST WHERE ITEM_CD = 'ITEM0003' 」を抽出し、「SQL 」のタグ情報604を生成する。また、シーケンス図作成器113は、図6に示すように、ログ情報に含まれる処理後データからテーブル名「ITEM_MST」、データ名「ITEM_CD 」と値「ITEM0003」、データ名「ITEM_NAME 」と値「PC」およびデータ名「PRICE 」と値「100000」を抽出し、「After 」のタグ情報605を生成する。そして、シーケンス図作成器113は、生成した活性区間属性情報を含むタグ情報602をシーケンス図情報に格納する。
生成した「活性区間」をシーケンス図情報に格納すると、シーケンス図作成器113は、ステップS108に戻りログ情報に含まれる全ての行について処理を終了するまでステップS108以降の処理を繰り返し実行する。
ステップS110で次の処理が「処理終了」であると判断した場合には、シーケンス図作成器113は、あたらに「メッセージ」を生成しシーケンス図情報に格納する(ステップS118)。この場合に、シーケンス図作成器113は、現在の最新のメッセージIDに「1」加算した値をメッセージIDとして、ステップS106と同様に手順に従って「メッセージ」を生成する。また、シーケンス図作成器113は、ログ情報から「処理終了」の呼出メソッド名を抽出し、呼出メソッド名に「end 」を付加した文字列をメッセージ名として「メッセージ」を生成する。また、ログ情報にメソッド返却値が含まれる場合には、シーケンス図作成器113は、ログ情報からメソッド返却値の値を抽出し、メッセージ属性情報の返値として「メッセージ」を生成する。
シーケンス図作成器113は、対応する「処理開始」を特定し、ステップS118で生成したメッセージIDを、特定した「処理開始」に対応する「活性区間」の終了メッセージIDとしてシーケンス図情報に格納する(ステップS119)。
終了メッセージIDをシーケンス図情報に格納すると、シーケンス図作成器113は、ステップS108に戻りログ情報に含まれる全ての行について処理を終了するまでステップS108以降の処理を繰り返し実行する。なお、本例では、図3に示すように、ログファイルに「処理終了」のログ情報が格納されていないので、シーケンス図作成器113は、ステップS118およびステップS119の処理を実行しない。
ステップS110で次の処理が「画面出力処理」であると判断した場合には、シーケンス図作成器113は、あらたに「メッセージ」を生成しシーケンス図情報に格納する(ステップS120)。
本例では、図5に示すように、シーケンス図作成器113は、「メッセージ」のタグ情報506を生成する。また、シーケンス図作成器113は、生成したタグ情報に対するメッセージ属性情報を生成する。本例では、タグ情報506が4つ目の「メッセージ」のタグ情報であるので、シーケンス図作成器113は、メッセージID「M0003 」を生成する。また、シーケンス図作成器113は、画面名「ItemServlet 」に「End 」を付加してメッセージ名「ItemServlet End 」を生成する。また、「ItemServlet End 」は4番目に発生したメッセージであるので、シーケンス図作成器113は、発生時間「4」を生成する。
また、図3に示すようにログ情報が出力パラメータを含むので、シーケンス図作成器113は、オプションのメッセージ属性情報として、「返値」のタグ情報を生成する。本例では、シーケンス図作成器113は、図5に示すように、ログ情報に含まれる出力パラメータからデータ名「ITEM_CD 」と値「ITEM0003」、データ名「ITEM_NAME 」と値「PC」およびデータ名「PRICE 」と値「100000」を抽出し、3つの「返値」のタグ情報を生成する。
シーケンス図作成器113は、ステップS120で生成したメッセージIDを、ステップS113で生成した「画面入力処理」の「活性区間」の終了メッセージIDとして生成しシーケンス図情報に格納する(ステップS121)。本例では、シーケンス図作成器113は、ステップS120で生成したメッセージにもとづいて、図6に示すタグ情報601の終了メッセージID「M0003 」を生成しシーケンス図情報に格納する。
終了メッセージIDをシーケンス図情報に格納すると、シーケンス図作成器113は、ステップS108に戻りログ情報に含まれる全ての行について処理を終了するまでステップS108以降の処理を繰り返し実行する。
以上のように、シーケンス図作成器113がステップS108からステップS121までの処理を繰り返し実行することによって、ログファイルに格納されているログ情報にもとづいてシーケンス図情報が生成されシーケンス図情報記憶部114に格納される。ログ情報に含まれる全ての行の処理を終了すると、シーケンス図作成器113は、ステップS109においてログ情報に次の行が含まれないと判断する。
ステップS109で次の行が含まれないと判断すると、処理シーケンス表示装置110は、ビューワ115の機能を用いて、シーケンス図情報記憶部114からシーケンス図情報を抽出する(ステップS122)。また、処理シーケンス表示装置110は、ビューワ115の機能を用いて、表示設定情報記憶部116から表示設定情報を抽出する(ステップS123)。すると、処理シーケンス表示装置110は、ビューワ115の機能を用いて、シーケンス図情報および表示設定情報にもとづいてシーケンス図を表示部に表示する(ステップS124)。
図8は、表示部に表示されるシーケンス図の一例を示す説明図である。図8は、処理シーケンス表示装置110が図5および図6に示すシーケンス図情報にもとづいて表示したシーケンス図である。図8に示すように、処理シーケンス表示装置110は、対象プログラム100aの実行結果を、UML形式に従ってシーケンス図として表示する。
本例では、図8に示すように、処理シーケンス表示装置110は、図5および図6に示すシーケンス図情報のタグ情報501,502にもとづいて、それぞれ「レーン」を縦棒の線分801,802として表示する。図8において、線分801はレーン名「ItemServlet 」の「レーン」に相当し、線分802はレーン名「ITEM_MST」の「レーン」に相当する。すなわち、対象プログラム100aに含まれる各オブジェクトは、シーケンス図上で縦棒の線分の図形として表示される。
また、処理シーケンス表示装置110は、図5および図6に示すシーケンス図情報の「活性区間」のタグ情報601,602に含まれる「開始メッセージID」および「終了メッセージID」を抽出する。処理シーケンス表示装置110は、抽出した「開始メッセージID」および「終了メッセージID」に対応する「メッセージ」のタグ情報503,504,505,506から、それぞれ発生時間を抽出する。処理シーケンス表示装置110は、「開始メッセージID」および「終了メッセージID」に対応する発生時間にもとづいて「活性区間」の表示の長さを決定する。そして、処理シーケンス表示装置110は、図8に示すように、決定した長さに従って、それぞれ活性区間807,808を表示する。すなわち、対象プログラム100a実行中の各オブジェクトの呼出時間は、シーケンス図上で活性区間807,808の矩形図形として表示される。
また、処理シーケンス表示装置110は、「活性区間」のタグ情報601,602に含まれる「開始メッセージID」および「終了メッセージID」に対応する「メッセージ」のタグ情報503,504,505,506から、メッセージ名を抽出する。そして、処理シーケンス表示装置110は、図8に示すように、抽出したメッセージ名に従って、それぞれメッセージ803,804,805,806を表示する。
図8に示すように、処理シーケンス表示装置110は、シーケンス図情報にもとづいて、各オブジェクト間でやりとりされるメッセージや各オブジェクトの呼出時間(活性区間)を、各オブジェクトに時系列に対応付けて表示する。すなわち、処理シーケンス表示装置110は、シーケンス図情報にもとづいて、対象プログラム100aの実行結果を構造化表示したシーケンス図を表示する。
なお、シーケンス図情報生成後に最初にシーケンス図を表示する場合には、表示設定情報は、デフォルト値として、全ての「レーン」、「メッセージ」および「活性区間」を表示する旨の設定値情報を含んでいる。処理シーケンス表示装置110は、図8に示すように、最初にシーケンス図を表示する場合には、デフォルト値を含む表示設定情報にもとづいて、シーケンス図情報に含まれる全ての「レーン」、「メッセージ」および「活性区間」を表示状態としたシーケンス図を表示する。
また、最初にシーケンス図を表示する場合には、表示設定情報は、デフォルト値として、各オブジェクトの入出力パラメータや処理データなどの付加情報を全て非表示とする旨の設定値情報を含んでいる。処理シーケンス表示装置110は、図8に示すように、最初にシーケンス図を表示する場合には、表示設定情報にもとづいて、入出力パラメータや処理データなど付加情報を非表示状態としてシーケンス図を表示する。
開発者は、シーケンス図に表示される表示情報量を変更したい場合には、表示設定器117を操作して表示設定情報の更新指示を入力する。表示設定器117は、表示設定情報の更新指示の入力を受け付けると、開発者の操作に従って表示設定情報記憶部116が記憶する表示設定情報を更新する(ステップS125)。
例えば、表示設定情報は、シーケンス図上に表示されるレーン801,802、メッセージ803,804,805,806、活性区間807,808、入出力パラメータや処理データごとに、「表示」または「非表示」のいずれかの設定値を含む。開発者は、表示設定器117を操作して、表示設定情報に含まれる「表示」または「非表示」の設定値を変更することによって、シーケンス図の表示情報量を変更することができる。なお、開発者は、ビューワ115による表示画面から操作することによって、表示設定情報に含まれる各設定値を変更できるようにしてもよい。
表示設定情報を更新すると、処理シーケンス表示装置110は、ビューワ115の機能を用いて、表示設定情報記憶部116から更新後の表示設定情報を抽出する(ステップS123)。そして、処理シーケンス表示装置110は、更新後の表示設定情報およびシーケンス図情報にもとづいてシーケンス図の表示を更新する(ステップS124)。なお、処理シーケンス表示装置110は、開発者が対象プログラム100aの実行結果のシーケンス図表示の確認作業を行っている間、ステップS123からステップS125までの処理を繰り返し実行する。
例えば、図8に示すシーケンス図の表示のうちレーン802の部分を表示しないようにする場合には、表示設定器117は、開発者の操作に従って、レーン802を「非表示」として表示設定情報を更新する。すると、処理シーケンス表示装置110は、更新後の表示設定情報にもとづいてレーン802を「非表示」にしたシーケンス図を表示する。図9は、レーン802を「非表示」にした場合のシーケンス図の一例を示す説明図である。図9に示すように、レーン802が「非表示」設定されると、処理シーケンス表示装置110は、レーン802と、レーン802に付随するメッセージ804,805および活性区間808とを削除したシーケンス図を表示する。
図9に示すように、任意のレーンを選択して「非表示」に設定できるので、対象プログラム100aの実行結果のうち、必要な部分だけを表示状態にしたシーケンス図を表示させることができる。すなわち、不具合分析作業に必要な部分だけを概要表示したシーケンス図を表示させることができる。
なお、表示設定器117は、開発者の操作に従って、メッセージ803,804,805,806または活性区間807,808を個別に「非表示」にして表示設定情報を更新してもよい。この場合に、処理シーケンス表示装置110は、更新後の表示設定情報にもとづいて、図8に示すシーケンス図の表示のうち、いずれかのメッセージ803,804,805,806または活性区間807,808を「非表示」にしたシーケンス図を表示するようにしてもよい。
また、例えば、図8に示すシーケンス図に入出力パラメータ、処理データおよびデータベース処理のSQLのコマンド文など付加情報を表示させる場合には、表示設定器117は、開発者の操作に従って、各入出力パラメータ、処理データおよびSQL文を「表示」として表示設定情報を更新する。すると、処理シーケンス表示装置110は、更新後の表示設定情報にもとづいて、図8に示す表示内容に加えて、各入出力パラメータ、処理データおよびSQL文を「表示」にしたシーケンス図を表示する。
図10は、各入出力パラメータ、処理データおよびSQL文など付加情報を「表示」にした場合のシーケンス図の一例を示す説明図である。図10に示すように、処理シーケンス表示装置110は、更新後の表示設定情報にもとづいて、図8に示す表示内容に加えて、メッセージ803に対する入力パラメータ1001、およびメッセージ806に対する出力パラメータ1002を表示する。また、処理シーケンス表示装置110は、図8に示す表示内容に加えて、活性区間808に対する処理前データ1003、SQL文1004および処理後データ1005を表示する。
図10に示すように、任意の付加情報を選択して「表示」に設定できるので、対象プログラム100aの実行結果のうち、開発者がより詳細に分析したい部分の付加情報を表示状態にしたシーケンス図を表示させることができる。すなわち、より詳細に不具合分析作業を行いたい部分を詳細表示したシーケンス図を表示させることができる。
なお、本実施の形態では、図3に示すように、ログファイルに画面入力処理、データベース処理および画面出力処理のログ情報のみが格納される場合を説明したが、さらにログファイルに各業務処理の処理開始および処理終了のログ情報が格納される場合も、同様の手順に従ってシーケンス図が表示される。
図11は、ログファイルに格納されるログ情報の他の例を示す説明図である。図11に示すように、本例では、ログファイルには、業務処理の処理開始のログ情報1101および処理終了のログ情報1102が格納される。例えば、ログファイルには、処理開始のログ情報1101として、オブジェクト名「ItemControl 」、メソッド名「search」およびメソッド引数「ITEM0003」が格納される。また、ログファイルには、処理終了のログ情報1102として、オブジェクト名「ItemControl 」、メソッド名「search」およびメソッド返却値「true」が格納される。なお、図11に示すログ情報1101,1102は、一例として業務システムに含まれる商品検索処理が実行された場合のログ情報を示したものである。
また、図12は、シーケンス図情報の内容の他の例を示す説明図である。図12に示すシーケンス図情報は、シーケンス図作成器113が図11に示すログ情報にもとづいて生成したものである。シーケンス図情報は、処理開始のログ情報1101および処理終了のログ情報1102に対応する「レーン」のタグ情報1201を含む。図12に示すように、タグ情報1201は、ログ情報1101,1102に含まれるオブジェクト名「ItemControl 」をレーン名として生成され、シーケンス図情報に格納される。
また、シーケンス図情報は、ログ情報1101,1102に対応する「活性区間」のタグ情報1204を含む。図12に示すように、タグ情報1204は、ログ情報1101,1102に含まれるメソッド名「search」を活性区間名として生成され、シーケンス図情報に格納される。
また、シーケンス図情報は、タグ情報1204の開始メッセージIDに対応する「メッセージ」のタグ情報1202、およびタグ情報1204の終了メッセージIDに対応する「メッセージ」のタグ情報1203を含む。図12に示すように、タグ情報1202は、ログ情報1101,1102に含まれるメソッド名「search」に「begin 」を付加した文字列をメッセージ名およびメソッド引数「ITEM0003」を引数として生成され、シーケンス図情報に格納される。また、図12に示すように、タグ情報1203は、ログ情報1101,1102に含まれるメソッド名「search」に「end 」を付加した文字列をメッセージ名およびメソッド返却値「true」を返値として生成され、シーケンス図情報に格納される。
処理シーケンス表示装置110は、図8で示したシーケンス図と同様に、図12に示すシーケンス図情報にもとづいてシーケンス図を表示する。例えば、処理シーケンス表示装置110は、図12のシーケンス図情報のタグ情報1201にもとづいて、シーケンス図上にレーン名「ItemControl 」の「レーン」に相当する線分を表示する。また、処理シーケンス表示装置110は、タグ情報1204にもとづいて、シーケンス図上に「活性区間」を表示する。また、処理シーケンス表示装置110は、タグ情報1202,1203にもとづいて、「活性区間」の開始メッセージおよび終了メッセージに対応する「メッセージ」をそれぞれ表示する。
以上のように、本実施の形態によれば、シーケンス図表示装置は、対象プログラムを実行した際のログ情報にもとづいて、対象プログラムに含まれる各オブジェクトを時系列に対応付けて構造化した情報であるシーケンス図情報を生成する。そして、シーケンス図表示装置は、シーケンス図情報にもとづいて、対象プログラムの実行結果を構造化表示したシーケンス図を表示する。そのため、開発者は、対象プログラムのソースコードなどの構造を容易に把握することができ、対象プログラムの不具合箇所を容易に特定することができる。よって、不具合分析作業において、開発者が対象プログラムの不具合箇所などの差異を容易に明細化することができ、不具合分析作業の作業時間を短縮し作業の効率化を図ることができる。
また、シーケンス図表示装置は、シーケンス図の各表示部分を個別に「表示」または「非表示」に設定する設定値を含む表示設定情報にもとづいて、シーケンス図を表示する。そのため、シーケンス図の表示情報量を動的に変更しながら、対象プログラムの実行結果の確認作業を行うことができ、開発者の不具合分析作業の効率化を図ることができる。また、結合テストや本番テストを行う場合であっても、デバッガを用いることなく、表示情報量を変化させながら対象プログラムの実行結果の確認作業を行うことができる。
従って、結合テストや本番テストを行う場合であっても、開発者が容易に対象プログラムの不具合箇所を特定することができ、不具合分析作業を短時間に効率的に行うことができる。
また、デバッガを用いて対象プログラムの実行結果を順次表示させる場合には、確認作業の途中で一つ前のメソッドの実行状態の表示に逆戻りすることができないので、開発者は、一つ前の実行状態の表示を確認したい場合には、対象プログラムを実行しなおさなければならない。本実施の形態によれば、対象プログラム実行時のログ情報にもとづいて、シーケンス図表示装置が擬似的にプログラムの実行状態をシーケンス図上に表示するので、開発者が各メソッドの実行前の状態を容易に把握することができる。従って、開発者が不具合箇所の際を見つける時間を短縮することができ、不具合分析作業を効率的に行うことができる。
また、本実施の形態によれば、対象プログラム実行の際のログファイルおよび処理シーケンス表示装置110さえあれば、対象プログラムの実行結果のログ情報にもとづいて、対象プログラムの実行状態を擬似的に表示できるので、開発者が不具合箇所の分析を短時間に効率的に行うことができる。そのため、開発者の開発システム上にテスト時と同じ状態を構築して再テストしなくても、不具合分析を行うことができる。従って、結合テストや本番テストを行った場合でも、不具合原因の再確認を行ったり、不具合箇所を修正した後の確認を行うことができ、不具合分析を行うことができる。
また、本実施の形態によれば、シーケンス図表示装置がプログラム実行時のログ情報にもとづいてシーケンス図を表示するので、ログ情報の内容と一致したシーケンス図を表示させることができる。そのため、オブジェクト指向プログラミング言語を用いてオブジェクトがプログラム実行時に動的に決定されるようなソースコードを作成した場合であっても、ログ情報の内容と一致したシーケンス図を表示させることができる。また、本実施の形態によれば、対象プログラム実行時のログ情報から生成したシーケンス図情報にもとづいてシーケンス図を表示するので、プログラムの実装状態と乖離しないシーケンス図を表示させることができる。
また、本実施の形態によれば、通常のUML形式のシーケンス図と異なり、単にオブジェクト間のメッセージの流れを表示するだけでなく、表示設定情報の設定情報を変更することによって、任意に入出力パラメータや処理データをシーケンス図上に表示させることができる。そのため、開発者は、対象プログラム実行時のデータフローと処理データとを対応付けてシーケンス図上で確認することができる。従って、開発者がデータフローと処理データとを容易に対応付けることができ、不具合分析作業を短期間に効率的に行うことができる。
実施の形態2.
次に、本発明の第2の実施の形態を図面を参照して説明する。図13は、シーケンス図表示装置の構成の他の例を示すブロック図である。本実施の形態では、シーケンス図表示装置は、対象プログラム100aのテスト後に、再実行用のデータを生成して対象プログラム100aを再実行する。図13に示すように、シーケンス図表示装置は、第1の実施の形態で示した構成に加えて、対象プログラム100aを再実行する際に用いる再実行データを生成する再実行データ生成器120と、対象プログラム100aの再実行を指示する再実行器121とを含む。
再実行データ生成器120は、情報処理装置の制御部などによって実現される。再実行データ生成器120は、テスト後にログ記憶部112からログ情報を抽出し、対象プログラム100aの再実行データを生成する。再実行データは、対象プログラム100aの入力パラメータや処理前データなどの入力値を含むデータである。
再実行器121は、情報処理装置の制御部などによって実現される。再実行器121は、再実行データ生成器120が生成する再実行データにもとづいて、対象プログラム実行部100に対象プログラム100aを再実行させる。
なお、再実行データ生成手段は、再実行データ生成器120によって実現される。また、プログラム再実行手段は、再実行器121および対象プログラム実行部100によって実現される。
次に、動作について説明する。図14は、テスト後にシーケンス図表示装置が対象プログラム100aを再実行する再実行処理の一例を示す流れ図である。シーケンス図表示装置は、第1の実施の形態で示した手順と同様の手順に従って、対象プログラム100aを実行しシーケンス図を表示する。処理シーケンス表示装置110は、ビューワ115の機能を用いて、シーケンス図情報記憶部114が記憶するシーケンス図情報にもとづいて、シーケンス図を表示する(ステップS21)。
開発者は、表示されたシーケンス図を確認して対象プログラム100aの不具合箇所を特定すると、対象プログラム100aのソースコードなどを修正する。修正した後に対象プログラム100aをテスト時と同じ条件で再実行させたい場合には、開発者は、シーケンス図表示装置を操作して、対象プログラム100aの再実行指示を入力する。再実行指示が入力されると、再実行データ生成器120は、ログ記憶部112から対象プログラム100aの実行結果のログ情報を読み込み、メモリなどに記憶させる(ステップS22)。
再実行データ生成器120は、メモリなどが記憶するログ情報から、画面入力行の入力パラメータや処理前データなどの入力値を抽出する。そして、再実行データ生成器120は、抽出した入力値の情報を含む再入力データを生成する(ステップS23)。
再実行器121は、再実行データ生成器120が生成した再入力データにもとづいて、対象プログラム実行部100に対象プログラム100aの再実行を指示する(ステップS24)。再実行を指示されると、対象プログラム実行部100は、再実行データに含まれる入力パラメータや処理前データを入力値として対象プログラム100aを再実行する。すると、対象プログラム実行部100のログ部品101は、再実行結果のログ情報を含むログファイルを生成し、ログファイル記憶手段103に記憶させる(ステップS25)。
以上のように、本実施の形態によれば、シーケンス図表示装置は、対象プログラムの実行結果のログ情報にもとづいて、テスト時の入力値を含む再実行データを自動生成する。そして、シーケンス図表示装置は、再実行データにもとづいて対象プログラムを再実行する。従って、対象プログラムの不具合を修正した後に対象プログラムを同じ入力条件で再テストしたい場合に、開発者は、容易に同じ入力条件で対象プログラムを実行させることができる。すなわち、開発者は、シーケンス図表示装置を回帰テストツールとして使用し、修正後の対象プログラムの再テストを行うことができる。
実施の形態3.
次に、本発明の第3の実施の形態を図面を参照して説明する。図15は、シーケンス図表示装置の構成のさらに他の例を示すブロック図である。図15に示すように、シーケンス図表示装置は、第1の実施の形態で示した構成に加えて、シーケンス図を印刷するための印刷機130を備える。印刷機130は、例えば、プリンタなどによって実現される。なお、印刷手段は、印刷機130によって実現される。
動作について説明する。図16は、シーケンス図表示装置が表示したシーケンス図を印刷するシーケンス図印刷処理の一例を示す流れ図である。シーケンス図表示装置は、第1の実施の形態で示した手順と同様の手順に従って、対象プログラム100aを実行しシーケンス図を表示する。処理シーケンス表示装置110は、ビューワ115の機能を用いて、シーケンス図情報記憶部114が記憶するシーケンス図情報にもとづいて、シーケンス図を表示する(ステップS31)。
開発者は、表示されたシーケンス図を紙媒体に印刷したい場合には、シーケンス図表示装置を操作して、シーケンス図の印刷指示を入力する。印刷指示が入力されると、処理シーケンス表示装置110は、表示しているシーケンス図の印刷を印刷機130に指示する。すると、印刷機130は、処理シーケンス表示装置110が表示するシーケンス図を印刷する(ステップS32)。
以上のように、本実施の形態によれば、シーケンス図表示装置は、表示したシーケンス図を紙媒体に印刷する。そのため、開発者は、対象プログラムにもとづくシーケンス図を紙媒体として取得することができる。また、オブジェクト指向プログラミング言語を用いてオブジェクトがプログラム実行時に動的に決定されるようなソースコードを作成した場合であっても、動的に決定されたオブジェクトを明確に表示したシーケンス図を紙媒体として取得することができる。従って、対象プログラムの正確な保守ドキュメントなどの文書を作成したい場合に、紙媒体として取得したシーケンス図を含む分かりやすくて正確な文書を作成することができる。