(57)【要約】【課題】モジュールの不正分岐に関し、不具合モジュールを自動的に特定化し、バグ票を自動作成し、該当するモジュールの担当者に対して自動送信することで、バグ原因の調査にかかる作業を軽減できるデバッグシステムを提供する。【解決手段】被テストプログラムの基本設計において、設計者は複数の小さなモジュールに分割し、このモジュール階層からデバッグシステムがプログラム分岐期待値情報テーブル１０１を作成する。更に、作成された被テストプログラムにデバッグ用モジュールを組み込み、実行可能なプログラムを作成する。このプログラムを実行することにより、モジュールトレース情報１０２が採取される。そして、プログラム分岐期待値情報テーブル１０１とモジュールトレース情報１０２を比較することにより、期待しない分岐を行っているモジュールを特定し、該当するモジュールの設計担当者に対してバグ票１０５を通知する。【選択図】        図１
2004341689.tif 000002
【特許請求の範囲】
【請求項１】
複数のモジュールから構成されるプログラムのデバッグ方法であって、
前記プログラムの各モジュールに該当モジュールの実行開始を示す開始モジュールと終了を示す終了モジュールを組み込み、
前記プログラムの実行時に、前記開始モジュールと前記終了モジュールの実行に基づいて分岐元モジュール名と分岐先モジュール名が記載された分岐トレース情報を出力することを特徴とするデバッグ方法。
【請求項２】
請求項１記載のデバッグ方法において、
前記各モジュールの分岐元と分岐先情報を定義した分岐期待値情報を持ち、
前記分岐期待値情報と前記出力された分岐トレース情報とを照合して不正分岐を行ったモジュールを特定することを特徴とするデバッグ方法。
【請求項３】
請求項２記載のデバッグ方法において、
前記各モジュールのモジュール名称とモジュール開発担当者情報とを関係付けたテーブルを持ち、
前記特定された不正分岐を行ったモジュールに対応するモジュール名称よりモジュール開発担当者を特定することを特徴とするデバッグ方法。
【請求項４】
請求項３記載のデバッグ方法において、
前記特定された不正分岐を行ったモジュール名称に対応するモジュール開発担当者へバグ票を作成発行することを特徴とするデバッグ方法。
【請求項５】
請求項４記載のデバッグ方法において、
前記モジュール開発担当者情報に宛先情報を持ち、
前記作成したバグ票を前記不正分岐を行ったモジュール名称に対応するモジュール開発担当者の宛先へ送信することを特徴とするデバッグ方法。
【請求項６】
請求項５記載のデバッグ方法において、
前記宛先情報は電子メールアドレスであり、
前記電子メールアドレスへ前記作成したバグ票を送信することを特徴とするデバッグ方法。
【請求項７】
請求項１、２、３、４、５または６記載のデバッグ方法を実現し、前記プログラムを実行して、不正分岐モジュールを自動的に特定化し、バグ票を自動作成し、該当するモジュールの担当者に対して自動送信する手段を有することを特徴とするデバッグシステム。
【請求項８】
コンピュータからなるデバッグシステムを、不正分岐モジュールを自動的に特定化し、バグ票を自動作成し、該当するモジュールの担当者に対して自動送信する手段として機能させるプログラムであって、
複数のモジュールから構成され、各モジュールに該当モジュールの実行開始を示す開始モジュールと終了を示す終了モジュールが組み込まれていることを特徴とするデバッグ機能を含むプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムのデバッグ技術に関し、特に、テスト対象のプログラム（以下、被テストプログラムと呼称）が、複数のサブプログラム（以下、モジュールと呼称）から構成され、複数のモジュール作成者により、開発が行われるプログラムのデバッグシステムに適用して有効な技術に関する。
【０００２】
【従来の技術】
本発明者が検討したところによれば、被テストプログラムのデバッグシステムに関する従来の技術としては、例えば特許文献１に記載されたものが知られている。この特許文献１では、テスト実行結果と結果判定データとを比較することによってバグ票の出力を自動化し、バグ情報ばかりではなくバグ原因までも含めて一括管理ができるバグ情報管理部を有するバグ管理システムが提案されている。
【０００３】
【特許文献１】
特開平７−１７５６８３号公報
【０００４】
【発明が解決しようとする課題】
ところで、上述した前記特許文献１のバグ管理システムでは、バグ票の出力を自動化するものの、バグ原因となるモジュールを特定し、担当者に通知するようにはなっていなかったので、バグ票毎に纏め者やテスト担当者が人手で、対策担当者を割り当てたり、全てのモジュール担当者が常に共有のバグ票を確認する必要があった。
【０００５】
そこで、本発明の目的は、特に、従来、切り分け作業に時間がかかっていたモジュールの不正分岐に関し、不具合モジュールを自動的に特定化し、バグ票を自動作成し、該当するモジュールの担当者（該当モジュールの開発取り纏め者含む）に対して自動送信することで、バグ原因の調査にかかる作業を軽減できるデバッグシステムを提供することにある。
【０００６】
【課題を解決するための手段】
本発明は、複数のモジュールから構成される被テストプログラムのデバッグ方法に適用され、被テストプログラムの各モジュールに該当モジュールの実行開始を示す開始モジュールと終了を示す終了モジュールを組み込み、被テストプログラムの実行時に、開始モジュールと終了モジュールの実行に基づいて分岐元モジュール名と分岐先モジュール名が記載された分岐トレース情報を出力するものである。
【０００７】
さらに、本発明によるデバッグ方法は、分岐期待値情報と出力された分岐トレース情報とを照合して不正分岐を行ったモジュールを特定し、この特定された不正分岐を行ったモジュールに対応するモジュール名称よりモジュール開発担当者を特定し、さらに特定された不正分岐を行ったモジュール名称に対応するモジュール開発担当者へバグ票を作成発行するようにしたものである。
【０００８】
さらに、本発明によるデバッグ方法は、作成したバグ票を不正分岐を行ったモジュール名称に対応するモジュール開発担当者の宛先へ送信し、特に宛先情報が電子メールアドレスの場合、電子メールアドレスへ作成したバグ票を送信するようにしたものである。
【０００９】
また、本発明によるデバッグシステムは、前記デバッグ方法を実現し、被テストプログラムを実行して、不正分岐モジュールを自動的に特定化し、バグ票を自動作成し、該当するモジュールの担当者に対して自動送信する手段を有するものである。
【００１０】
また、本発明によるデバッグ機能を含むプログラムは、コンピュータからなるデバッグシステムを、不正分岐モジュールを自動的に特定化し、バグ票を自動作成し、該当するモジュールの担当者や該当モジュールの開発纏め者に対して自動送信する手段として機能させる被テストプログラムに適用され、複数のモジュールから構成され、各モジュールに該当モジュールの実行開始を示す開始モジュールと終了を示す終了モジュールが組み込まれているものである。
【００１１】
【発明の実施の形態】
以下、本発明の実施の形態について図表を参照しながら詳細に説明する。
【００１２】
まず、図１により、本発明の一実施の形態におけるプログラム開発処理手順の一例を説明する。図１は、本実施の形態のデバッグシステムを含むプログラム開発システムにおいて、プログラム開発処理手順を説明するためのフローチャートである。
【００１３】
本実施の形態のデバッグシステムは、例えばコンピュータからなり、不正分岐モジュールを自動的に特定化し、バグ票を自動作成し、該当するモジュールの担当者に対して自動送信する手段として機能させる被テストプログラムなどを備えて構成される。この被テストプログラムは、複数のモジュールから構成されている。
【００１４】
図１において、ステップＳ１０１からステップＳ１０５までは、一般的なプログラムの開発手順であり、ステップＳ１０６以降の処理ステップが、本実施の形態のデバッグシステムにおける処理手順を示している。
【００１５】
ステップＳ１０１は、被テストプログラムの基本設計、さらに、複数の小さなモジュールに分割し、各モジュールの詳細の仕様書作成工程を示す。その仕様書作成工程において、さらに、被テストプログラム内のモジュールの呼び出し関係を後述する図２に例示するモジュール階層図に表現する。上記モジュール階層図に基づいて、モジュールの呼び出し関係をテーブル化したプログラム分岐期待値情報テーブル１０１を作成する。
【００１６】
ステップＳ１０２では、各モジュールの担当者は、ステップＳ１０１で作成した仕様書に従い、各モジュールのソースを作成する。
【００１７】
ステップＳ１０３では、ステップＳ１０２で作成された全モジュールのソースにデバッグ用モジュールの組み込みを行う。本デバッグ用モジュールは、コンパイルのデバッグモードを指定された時のみ、有効となるように動作する。デバッグモードを持たないコンパイラの場合は、プログラム内にデバッグモードに相当するプリセット機能を設けることにより、テストモードを設定し、同様な機能を実現できる。
【００１８】
ステップＳ１０４では、ステップＳ１０３で作成された被テストプログラムのコンパイルとリンクを実行し、実行形式のファイルを作成する。ここで、デバッグ用モジュールを機能させるために、コンパイル時、デバッグモードであることを示すパラメータを指定して、コンパイルを行う。
【００１９】
ステップＳ１０５では、実行形式の被テストプログラムをテスト実行することで、モジュールトレース情報１０２を採取する。
【００２０】
ステップＳ１０６では、テスト終了後、モジュールトレース情報１０２を読み取り、分岐解析用中間情報１０３を作成する。
【００２１】
ステップＳ１０７では、プログラム分岐期待値情報テーブル１０１と分岐解析用中間情報１０３を読み取り、不正分岐モジュールを特定する。
【００２２】
ステップＳ１０８では、バグ票通知先情報１０４を読み取り、ステップＳ１０６で、不正分岐を特定したモジュールより、プログラム担当者を特定し、バグ票１０５を作成する。
【００２３】
ステップＳ１０９では、作成したバグ票を特定したモジュール開発担当者のメールアドレスを使用して、モジュール開発担当者に送信する。
【００２４】
次に、図２により、被テストプログラムのモジュール階層の一例を説明する。図２は、被テストプログラムのモジュール階層の一例を示した図である。枠内は各モジュール名称を表し、上位のモジュールが下位のモジュールをコールすることを示す。
【００２５】
例えば、本実施の形態では、“ｍａｉｎモジュール”が“モジュールＡＡ”と“モジュールＢＢ”をコールする。同様に、“モジュールＡＡ”が“モジュールＡ１”と“モジュールＡ２”を、“モジュールＡ１”が“モジュールＡ２”を、それぞれコールする。
【００２６】
次に、図３により、モジュール階層情報をテーブル化した一例を説明する。図３は、前記図２のモジュール階層図より、各モジュールから、呼び出される分岐先モジュールを一覧した形でテーブル化したモジュール階層テーブル１０６を示している。
【００２７】
モジュール階層テーブル１０６は、「モジュール名」、「分岐先モジュール数」、及び「分岐先モジュール名１」、「分岐先モジュール名２」、・・・、「分岐先モジュール名ｎ」の複数の分岐先モジュール名の各項目を持つ。
【００２８】
例えば、本実施の形態では、“ｍａｉｎモジュール”からは、分岐先モジュール数が２つで、“モジュールＡＡ”と“モジュールＢＢ”に分岐する。同様に、“モジュールＡＡ”からは２つで“モジュールＡ１”と“モジュールＡ２”に、“モジュールＡ１”からは１つで“モジュールＡ２”に、それぞれ分岐し、また、“モジュールＡ２”、“モジュールＢＢ”からは分岐するモジュールが無い。
【００２９】
次に、図４により、プログラム分岐期待値をテーブル化した一例を説明する。図４は、前記図３のモジュール階層テーブル１０６から、さらに、分岐元、分岐先という１対の対応関係を定義したプログラム分岐期待値情報テーブル１０１の形式を示している。
【００３０】
プログラム分岐期待値情報テーブル１０１は、「分岐元モジュール名」、「分岐先モジュール名」の各項目を持つ。
【００３１】
このプログラム分岐期待値情報テーブル１０１の作成方法について、例えば、本実施の形態では、図３で示されるモジュール階層テーブル１０６から１レコード単位で読み込み、モジュール名である“ｍａｉｎモジュール”と分岐先モジュール名である“モジュールＡＡ”をプログラム分岐期待値情報テーブル１０１の分岐元モジュール名と分岐先モジュール名にそれぞれ対にして、登録する。同様に、“ｍａｉｎモジュール”と“モジュールＢＢ”を、“モジュールＡＡ”と“モジュールＡ１”を、“モジュールＡＡ”と“モジュールＡ２”を、“モジュールＡ１”と“モジュールＡ２”を、それぞれ対にして登録する。このようにして、モジュール階層テーブル１０６から全てのレコードを読み込み、プログラム分岐期待値情報テーブル１０１を作成する。
【００３２】
次に、図５により、被テストプログラムの一例を説明する。図５は、被テストプログラム中のｍａｉｎモジュールにおいて、他のモジュールを呼び出す場合のフローチャートの例である。但し、本例は、ｍａｉｎモジュール固有の話ではなく、他のモジュールに関しても、同様に適用可能である。
【００３３】
例えば、本実施の形態のｍａｉｎモジュールは、処理を開始してから終了するまでの間に、モジュールＡＡをコールした後、モジュールＢＢをコールして終了する。
【００３４】
次に、図６により、デバッグ用モジュールの組み込み後の被テストプログラムの一例を説明する。図６は、上記ｍａｉｎモジュールの最初に、本ｍａｉｎモジュールが開始することを示す開始デバッグモジュール（開始モジュール）を組み込み、ｍａｉｎモジュールの終了時、本ｍａｉｎモジュールが終了することを示すための終了デバッグモジュール（終了モジュール）を組み込んだ場合のモジュールのフローチャートを示している。
【００３５】
例えば、本実施の形態のｍａｉｎモジュールは、最初に開始デバッグモジュールをコールし、モジュールＡＡをコールした後、モジュールＢＢをコールし、最後に終了デバッグモジュールをコールして終了する。
【００３６】
開始デバッグモジュール、終了デバッグモジュールの組み込み方法としては、モジュールの開始を示すソース文の直後、モジュールの終了を示すソース文の手前に、それぞれ、開始デバッグモジュール、終了デバッグモジュールを呼び出すソース文を記述することにより行う。
【００３７】
この組み込み操作は、全モジュールに対して、同じ開始デバッグモジュールと終了デバッグモジュールを適用する。組み込み方法として、他の組み込みプログラムを使用して、各モジュールの先頭を示すソース文と、終了を示すソース文を検出し、その直後、直前に、それぞれ、組み込むことも可能である。
【００３８】
次に、図７により、開始デバッグモジュールの一例を説明する。図７は、開始デバッグモジュールのフローチャートである。
【００３９】
ステップＳ７０１では、組み込み対象のシンボリックモジュール名を取得する。例えば、前記図６の場合は“ｍａｉｎ”というシンボリック名称そのものを取得する。
【００４０】
ステップＳ７０２では、モジュールトレース情報１０２の日時フィールドに、該モジュール実行時点の日時を書き込む。
【００４１】
ステップＳ７０３では、モジュールトレース情報１０２の開始フィールドにステップＳ７０１で取得したシンボリックモジュール名称を書き込む。
【００４２】
次に、図８により、終了デバッグモジュールの一例を説明する。図８は、終了デバッグモジュールのフローチャートである。
【００４３】
ステップＳ８０１では、組み込み対象のシンボリックモジュール名を取得する。例えば、前記図６の場合は“ｍａｉｎ”というシンボリック名称そのものを取得する。
【００４４】
ステップＳ８０２では、モジュールトレース情報１０２の日時フィールドに、概モジュール終了時点の日時を書き込む。
【００４５】
ステップＳ８０３では、モジュールトレース情報１０２の終了フィールドにステップＳ８０１で取得したシンボリックモジュール名称を書き込む。
【００４６】
本例では、モジュールのシンボリック名称を獲得することができるコンパイラを想定したが、本機能が無い場合は、人手作業または、別の組み込み専用プログラムを用いて、開始デバッグモジュールと終了デバッグモジュールに組み込み先のモジュールのシンボリック名称を定数として組み込んだ個別の開始デバッグモジュールと終了デバッグモジュールを組み込む。
【００４７】
次に、図９により、デバッグモジュールによるモジュールトレースの一例を説明する。図９は、被テストプログラムが実行されることにより採取されるモジュールトレース情報１０２の一例を示した図である。
【００４８】
モジュールトレース情報１０２は、「日時」、「開始フィールド」、「終了フィールド」の各項目を持つ。
【００４９】
例えば、本実施の形態では、１／１３  １０：００：００にｍａｉｎモジュールが呼び出され、同様に、１０：００：１０にモジュールＡＡが、１０：００：１５にモジュールＡ１が、１０：００：１８にモジュールＡ２が、それぞれ呼び出される。また、１／１３  １０：００：３０にモジュールＡ２が終了し、１０：００：５０にモジュールＡ１が終了する。さらに、１／１３  １０：０１：１５にモジュールＡ２が呼び出され、１０：０１：３０にモジュールＡ２が、１０：０２：００にモジュールＡＡが、それぞれ終了する。さらに、１／１３  １０：０２：３０にモジュールＢＢが呼び出され、１０：０４：００にモジュールＢＢが、１０：０５：３０にｍａｉｎモジュールが、それぞれ終了する。
【００５０】
次に、図１０により、分岐解析用中間情報の一例を説明する。図１０は、採取されたモジュールトレース情報１０２から、比較のため、前記図４のプログラム分岐期待値情報テーブル１０１の形式に合わせた分岐解析用中間情報１０３の一例を示した図である。
【００５１】
分岐解析用中間情報１０３は、「日時」、「分岐元モジュール名」、「分岐先モジュール名」の各項目を持つ。
【００５２】
例えば、本実施の形態では、１／１３  １０：００：１０にｍａｉｎモジュールからモジュールＡＡに分岐する。同様に、１／１３  １０：００：１５にモジュールＡＡからモジュールＡ１に、１０：００：１８にモジュールＡ１からモジュールＡ２に、１０：０１：１５にモジュールＡＡからモジュールＡ２に、１０：０２：３０にｍａｉｎモジュールからモジュールＢＢに、それぞれ分岐する。
【００５３】
なお、この分岐解析用中間情報１０３の作成手順は、図１２において後述する。
【００５４】
次に、図１１により、分岐元モジュール編集エリアの一例を説明する。図１１は、分岐元モジュール編集エリアを示す。
【００５５】
分岐元モジュール編集エリアのテーブル１０７は、前述の分岐解析用中間情報１０３を作成する際に、上位モジュールから、下位モジュール、下位モジュールからさらに下位のモジュールを呼び出していく多重の分岐を行う際、順次、分岐元モジュール名を一時保管していくワークエリアである。
【００５６】
例えば、本実施の形態では、Ｎｏ１にｍａｉｎモジュールを保管し、同様に、Ｎｏ２にモジュールＡＡを、Ｎｏ３にモジュールＡ１を、それぞれ保管する。
【００５７】
次に、図１２により、トレース解析用中間情報の作成手順の一例を説明する。図１２は、モジュールトレース情報１０２から、分岐解析用中間情報１０３を作成する手順を示したフローチャートである。
【００５８】
ステップＳ１２０１では、モジュールトレース情報１０２の読み出しレコード番号を示すＲＰ（ＲｅａｄＰｏｉｎｔｅｒ）、分岐解析用中間情報１０３への書き込みレコード番号を示すＷＰ（ＷｒｉｔｅＰｏｉｎｔｅｒ）、分岐元モジュール編集エリアへの書き込みレコード番号を示すＥＰ（ＥｄｉｔＰｏｉｎｔｅｒ）のそれぞれを１に、また、分岐元モジュール編集エリアをクリアして、初期化する。
【００５９】
ステップＳ１２０２では、モジュールトレース情報１０２内のＲＰで示されるレコードを読み取る。前記図９に示すモジュールトレース情報１０２の先頭レコードを例にとると、日時フィールドの“１／１３  １０：００”と、開始フィールドの“ｍａｉｎ”、終了フィールドの空白が読み取られる。
【００６０】
ステップＳ１２０３では、ステップＳ１２０２で読み取った開始フィールドが空白以外の場合は、ステップＳ１２０４に進み、それ以外の場合はステップＳ１２１１に進む。前記の例では、開始フィールドに“ｍａｉｎ”が存在するため、ステップＳ１２０４へ進む。
【００６１】
ステップＳ１２０４では、分岐元モジュール編集エリア内のＥＰで示されるレコードにモジュール名が登録されている場合は、ステップＳ１２０５へ進み、それ以外の場合はステップＳ１２０７へ進む。前記の例では、ＥＰが１であり、該当する分岐元モジュール編集エリアのレコードには何も登録されていないため、ステップＳ１２０７へ進む。
【００６２】
ステップＳ１２０５では、分岐解析用中間情報１０３内のＷＰで示されるレコード内の日時、分岐元モジュール名、分岐先モジュール名に、ステップＳ１２０２で読み取られた日時フィールド、開始フィールド、分岐元モジュール編集エリア内のＥＰで示されるレコードのモジュール名フィールドを書き込む。続いて、ＷＰの値に１を加える（ステップＳ１２０６）。
【００６３】
ステップＳ１２０７では、分岐元モジュール編集エリア内のＥＰで示されるレコードのモジュール名にステップＳ１２０２で読み取られた開始フィールドを書き込み、続いてＥＰの値に１を加える（ステップＳ１２０８）。これにより、分岐元モジュール編集エリアの１レコード目が書き込まれる。
【００６４】
ステップＳ１２１０では、ＲＰの値に１を加えた後（ステップＳ１２０９）、モジュールトレース情報１０２内のＲＰで示されるレコードが存在する場合はステップＳ１２０２へ進み、存在しない場合は、分岐解析用中間情報１０３の作成を終了する。
【００６５】
ステップＳ１２１１では、分岐元モジュール編集エリア内のＥＰで示されるレコードを削除し、ＥＰの値から１を差引き（ステップＳ１２１２）、ステップＳ１２０９へ進む。
【００６６】
次に、図１３により、モジュールトレース情報の不正ケースの一例を説明する。図１３は、分岐不正が発生した場合のモジュールトレース情報１０２の不正ケースを示した一例である。
【００６７】
例えば、本実施の形態では、４レコード目において、“モジュールＡ１”が“モジュールＢＢ”を不正にコールしている。すなわち、前記図９に示した正しいモジュールトレース情報に対して、４レコード目（開始フィールド）および５レコード目（終了フィールド）が追加された形で異なっている。この分岐が以下の説明で不正として検出される。
【００６８】
次に、図１４により、分岐解析用中間情報の不正ケースの一例を説明する。図１４は、前記図１３のモジュールトレース情報から作成した分岐解析用中間情報１０３の不正ケースを示した一例である。
【００６９】
例えば、本実施の形態では、１／１３  １０：００：１８にモジュールＡ１からモジュールＢＢに不正に分岐している。すなわち、前記図１０に示した正しい分岐解析用中間情報に対して、３レコード目が追加された形で異なっている。
【００７０】
次に、図１５により、不良モジュールを特定する手順の一例を説明する。図１５は、不良モジュールを特定する手順を示したフローチャートである。
【００７１】
ステップＳ１５０１では、分岐解析用中間情報１０３を１レコード読み取る。前記図１４で示される分岐解析用中間情報１０３の１レコード目を例に取ると、分岐元モジュール名に“ｍａｉｎ”、分岐先モジュール名に“ＡＡ”が読み込まれる。
【００７２】
ステップＳ１５０２では、ステップＳ１５０１で読み取った分岐元モジュール名をプログラム分岐期待値情報テーブル１０１の分岐元モジュール名フィールドから検索する。前記の例の場合、分岐期待値情報テーブルの１レコード目と２レコード目を抽出することができる。
【００７３】
ステップＳ１５０３では、ステップＳ１５０２の検索結果から分岐先モジュール名を読み取る。前記の例では、まずプログラム分岐期待値情報テーブル１０１の１レコード目の“ＡＡ”が読み取られる。
【００７４】
ステップＳ１５０４では、ステップＳ１５０１で取得した分岐先モジュールとステップＳ１５０３の検索結果の分岐先モジュールが一致した場合は、ステップＳ１５０７へ進み、一致しない場合はステップＳ１５０５へ進む。前記の例では、ステップＳ１５０１で取得した分岐先モジュール名が“ＡＡ”であり、ステップＳ１５０３の検索結果が“ＡＡ”で一致するため、ステップＳ１５０７へ進む。
【００７５】
ステップＳ１５０５では、ステップＳ１５０３の検索結果から、読み取られていないレコードがある場合はステップＳ１５０３へ進み、検索結果が終了している場合はステップＳ１５０６へ進む。
【００７６】
ステップＳ１５０６では、分岐元モジュールを不良モジュールとして特定し、後述のバグ票１０５を発行する。本実施の形態ではバグ票１０５の発行後、分岐解析を継続するが、バグ票１０５の発行後に不良モジュールの特定処理を終了させることも可能である。
【００７７】
ステップＳ１５０７では、ステップＳ１５０１で読み取ったレコードが分岐解析用中間情報１０３の最後のレコードかを判断し、最後のレコードの場合は、不良モジュールの特定処理を終了させ、それ以外の場合はステップＳ１５０１へ進む。
【００７８】
ところが、ステップＳ１５０１において、前記図１３に示したような分岐不正が発生し、前記図１４で示される分岐解析用中間ファイルの３レコード目を読み込んだ場合、ステップＳ１５０２の処理でプログラム分岐期待値情報テーブルの５レコード目のみが抽出され、この分岐先モジュール名がステップＳ１５０１で読み込んだレコードと一致しないため、ステップＳ１５０６においてバグ票が生成される。
【００７９】
次に、図１６により、バグ票通知先情報をテーブル化した一例を説明する。図１６は、モジュールの分岐不正を検出した際に通知する担当者の連絡先と担当モジュールを明記したバグ票通知先情報１０４である。
【００８０】
バグ票通知先情報１０４は、「担当モジュール名」、「担当者名」、「通知先」の各項目を持つ。
【００８１】
例えば、本実施の形態では、ｍａｉｎモジュールはＴａｒｏｕの担当で通知先がｔａｒｏｕ＠ＸＸ．ｃｏ．ｊｐである。同様に、それぞれ、モジュールＡＡとモジュールＡ１とモジュールＡ２はＨａｎａｋｏの担当で通知先がｈａｎａｋｏ＠ＹＹ．ｃｏ．ｊｐ、モジュールＢＢはＪｉｒｏｕの担当で通知先がｊｉｒｏｕ＠ＺＺ．ｃｏ．ｊｐである。
【００８２】
本実施の形態では、通知方法を電子メールとし、通知先をＥ−Ｍａｉｌアドレスとしたが、通知方法をＦＡＸや電話や郵送とし、通知先をＦＡＸ番号や電話番号や住所としても可能である。また、各モジュールの担当者とは別に、開発纏め者を追加することも可能であり、通知先を開発纏め者とすることも可能である。
【００８３】
次に、図１７により、バグ票の一例を説明する。図１７は、通知するバグ票１０５の一例を示す。
【００８４】
バグ票１０５は、「発生日」、「発生モジュール」、「原因追及担当者」、「対策担当者」、「対策完了日」や、「現象」、「原因」、「対策」、「確認方法」の各項目を持つ。
【００８５】
例えば、本実施の形態では、１／１３にモジュールＡ１に不正が発生し、このモジュールＡ１の開発担当者であるＨａｎａｋｏが原因を追及する。この不正の現象は、モジュールＡ１からモジュールＢＢへの不正分岐である。
【００８６】
本実施の形態では、発生日、発生モジュール名、原因追及担当者や現象等を自動生成したが、この他に纏め者や、審査者や、承認者や、モジュールトレース情報の管理番号等も追加することが可能である。
【００８７】
従って、本実施の形態によれば、不正分岐による不具合モジュールを自動的に特定化し、バグ票を自動作成し、該当するモジュールの担当者に対して自動送信することにより、従来、切り分け作業に時間がかかっていたモジュールの不正分岐に関して、バグ原因の調査にかかる作業を軽減することができる。
【００８８】
【発明の効果】
以上説明したように、本発明によれば、被テストプログラムの分岐期待値と、被テストプログラムのモジュールトレース情報とを比較することで、切り分け作業に時間がかかっていたモジュールの不正分岐の原因となる不具合モジュールを自動的に特定し、当該モジュールの担当者に対してバグ票を自動発行し、これらの処理の自動化によってバグ原因の調査にかかる作業を軽減でき、ソフトウェアのデバッグ作業を軽減することができるという効果が得られる。
【図面の簡単な説明】
【図１】本発明の一実施の形態におけるプログラム開発処理手順を説明するためのフローチャートである。
【図２】本発明の一実施の形態において、被テストプログラムのモジュール階層の一例を示す図である。
【図３】本発明の一実施の形態において、図２のモジュール階層情報をテーブル化した一例を示す図である。
【図４】本発明の一実施の形態において、図３からプログラム分岐期待値をテーブル化した一例を示す図である。
【図５】本発明の一実施の形態において、被テストプログラムの一例を示すフローチャートである。
【図６】本発明の一実施の形態において、デバッグ用モジュールの組み込み後の被テストプログラムの一例を示すフローチャートである。
【図７】本発明の一実施の形態において、開始デバッグモジュールの一例を示すフローチャートである。
【図８】本発明の一実施の形態において、終了デバッグモジュールの一例を示すフローチャートである。
【図９】本発明の一実施の形態において、デバッグモジュールによるモジュールトレースの一例を示す図である。
【図１０】本発明の一実施の形態において、分岐解析用中間情報の一例を示す図である。
【図１１】本発明の一実施の形態において、分岐元モジュール編集エリアの一例を示す図である。
【図１２】本発明の一実施の形態において、トレース解析用中間情報の作成手順の一例を示すフローチャートである。
【図１３】本発明の一実施の形態において、モジュールトレース情報の不正ケースの一例を示す図である。
【図１４】本発明の一実施の形態において、分岐解析用中間情報の不正ケースの一例を示す図である。
【図１５】本発明の一実施の形態において、不良モジュールを特定する手順の一例を示すフローチャートである。
【図１６】本発明の一実施の形態において、バグ票通知先情報をテーブル化した一例を示す図である。
【図１７】本発明の一実施の形態において、バグ票の一例を示す図である。
【符号の説明】
１０１…プログラム分岐期待値情報テーブル、１０２…モジュールトレース情報、１０３…分岐解析用中間情報、１０４…バグ票通知先情報、１０５…バグ票、１０６…モジュール階層テーブル、１０７…分岐元モジュール編集エリアのテーブル。
【図１】
2004341689.tif 000003
【図２】
2004341689.tif 000004
【図３】
2004341689.tif 000005
【図４】
2004341689.tif 000006
【図５】
2004341689.tif 000007
【図６】
2004341689.tif 000008
【図７】
2004341689.tif 000009
【図８】
2004341689.tif 000010
【図９】
2004341689.tif 000011
【図１０】
2004341689.tif 000012
【図１１】
2004341689.tif 000013
【図１２】
2004341689.tif 000014
【図１３】
2004341689.tif 000015
【図１４】
2004341689.tif 000016
【図１５】
2004341689.tif 000017
【図１６】
2004341689.tif 000018
【図１７】
2004341689.tif 000019