(57)【要約】【課題】ブレークポイントについての情報および該ブレークポイントに関連するプログラムの実行状態やバグについての情報を正確に記録して共有化する。【解決手段】本発明に係るデバッグ情報共有化システム１は、ネットワーク４で相互に接続されたサーバ２およびクライアント３からなり、クライアントは、少なくとも１カ所のブレークポイント３０６を有するソースファイル３０１と、ソースファイルを実行し、実行中のソースファイルがブレークポイントに到達したら実行を一時停止してソースファイルの変数状態３０８を取得するプログラム実行手段１０１と、取得された変数状態をブレークポイントに関連する情報として保存するデバッグ情報一時保存領域３０５と、保存されたブレークポイントに関連する情報をサーバに送信するデバッグ情報送受信手段１０３とを有する。【選択図】図１
2009086808.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークで相互に接続されたサーバおよびクライアントからなるデバッグ情報共有化システムであって、
前記クライアントは、
少なくとも１カ所のブレークポイントを有するソースファイルと、
前記ソースファイルを実行し、実行中の前記ソースファイルが前記ブレークポイントに到達したら実行を一時停止して前記ソースファイルの変数状態を取得するプログラム実行手段と、
取得された前記変数状態を前記ブレークポイントに関連する情報として保存するデバッグ情報一時保存領域と、
保存された前記ブレークポイントに関連する情報を前記サーバに送信するデバッグ情報送受信手段と
を有することを特徴とするデバッグ情報共有化システム。
【請求項２】
前記デバッグ情報一時保存領域は、前記変数状態とそれに関連するコメントを前記ブレークポイントに関連する情報として保存することを特徴とする、請求項１に記載のデバッグ情報共有化システム。
【請求項３】
前記サーバは、
前記クライアントから前記ブレークポイントに関連する情報を受信するバグ管理装置と、
前記ブレークポイントに関連する情報を保存するバグ情報データベースと
を有することを特徴とする、請求項２に記載のデバッグ情報共有化システム。
【請求項４】
前記バグ管理装置は、前記バグ情報データベースから特定のブレークポイントに関連する情報を検索して、前記検索された特定のブレークポイントに関連する情報を前記クライアントに送信し、
前記デバッグ情報送受信手段は前記バグ管理装置から送信された特定のブレークポイントに関連する情報を受信し、
前記プログラム実行手段は前記受信された特定のブレークポイントに関連する情報によってデバッグを行うことを特徴とする、請求項３に記載のデバッグ情報共有化システム。
【請求項５】
前記プログラム実行手段は、前記ソースファイルの実行中に前記ソースファイルのファイル名および実行中の行番号を含むプログラム実行履歴を前記ブレークポイントに関連する情報として前記デバッグ情報一時保存領域に保存し、
前記バグ管理装置は、前記プログラム実行履歴に基づいてシーケンス図を作成するシーケンス図作成手段を有することを特徴とする、請求項３に記載のデバッグ情報共有化システム。
【請求項６】
前記サーバは、
前記ソースファイルのバージョンおよび修正履歴を管理するソース管理データベースと、
前記ソースファイルのバージョンを前記バグ情報データベースと関連づけて前記ソース管理データベースのデータを更新するソース版管理装置と
を有することを特徴とする、請求項３に記載のデバッグ情報共有化システム。
【請求項７】
ネットワークで相互に接続されたサーバおよびクライアントからなるデバッグ情報共有化システムに使われるクライアントコンピュータであって、
少なくとも１カ所のブレークポイントを有するソースファイルと、
前記ソースファイルを実行し、実行中の前記ソースファイルが前記ブレークポイントに到達したら実行を一時停止して前記ソースファイルの変数状態を取得するプログラム実行手段と、
取得された前記変数状態を前記ブレークポイントに関連する情報として保存するデバッグ情報一時保存領域と、
保存された前記ブレークポイントに関連する情報を前記サーバに送信するデバッグ情報送受信手段と
を有することを特徴とするクライアントコンピュータ。
【請求項８】
前記デバッグ情報一時保存領域は、前記変数状態とそれに関連するコメントを前記ブレークポイントに関連する情報として保存することを特徴とする、請求項７に記載のクライアントコンピュータ。
【請求項９】
前記デバッグ情報送受信手段は前記バグ管理装置から送信された特定のブレークポイントに関連する情報を受信し、
前記プログラム実行手段は前記受信された特定のブレークポイントに関連する情報によってデバッグを行うことを特徴とする、請求項８に記載のクライアントコンピュータ。
【請求項１０】
前記プログラム実行手段は、前記ソースファイルの実行中に前記ソースファイルのファイル名および実行中の行番号を含むプログラム実行履歴を前記ブレークポイントに関連する情報として前記デバッグ情報一時保存領域に保存することを特徴とする、請求項８に記載のクライアントコンピュータ。
【請求項１１】
ネットワークで相互に接続されたサーバおよびクライアントからなるデバッグ情報共有化システムに使われるサーバであって、
前記クライアントからブレークポイントに関連する情報を受信するバグ管理装置と、
前記ブレークポイントに関連する情報を保存するバグ情報データベースと
を有することを特徴とするサーバ。
【請求項１２】
前記バグ管理装置は、前記バグ情報データベースから特定のブレークポイントに関連する情報を検索して、前記検索された特定のブレークポイントに関連する情報を前記クライアントに送信することを特徴とする、請求項１１に記載のサーバ。
【請求項１３】
前記バグ管理装置は、前記クライアントから受信したソースファイルのファイル名および実行中の行番号を含むプログラム実行履歴に基づいてシーケンス図を作成するシーケンス図作成手段を有することを特徴とする、請求項１２に記載のサーバ。
【請求項１４】
ソースファイルのバージョンおよび修正履歴を管理するソース管理データベースと、
前記ソースファイルのバージョンを前記バグ情報データベースと関連づけて前記ソース管理データベースのデータを更新するソース版管理装置と
を有することを特徴とする、請求項１２に記載のサーバ。
【請求項１５】
ネットワークで相互に接続されたサーバおよびクライアントからなるデバッグ情報共有化システムにおいてデバッグ情報を共有化する方法であって、
前記クライアントが、少なくとも１カ所のブレークポイントを有するソースファイルを実行する実行工程と、
実行中の前記ソースファイルが前記ブレークポイントに到達したら、前記クライアントが前記ソースファイルの実行を一時停止して前記ソースファイルの変数状態を取得する状態取得工程と、
前記クライアントが、前記状態取得工程で取得された前記変数状態を前記ブレークポイントに関連する情報として保存する一時保存工程と、
前記クライアントが、保存された前記ブレークポイントに関連する情報を前記サーバに送信する送信工程と
を有することを特徴とするデバッグ情報を共有化する方法。
【請求項１６】
前記一時保存工程は、前記クライアントが前記変数状態とそれに関連するコメントを前記ブレークポイントに関連する情報として保存することを特徴とする、請求項１５に記載のデバッグ情報を共有化する方法。
【請求項１７】
前記サーバが、前記クライアントから前記ブレークポイントに関連する情報を受信する受信工程と、
前記サーバが、前記ブレークポイントに関連する情報を保存する保存工程と
を有することを特徴とする、請求項１６に記載のデバッグ情報を共有化する方法。
【請求項１８】
ネットワークで相互に接続されたサーバおよびクライアントからなるデバッグ情報共有化システムにおいて、前記クライアントに、
少なくとも１カ所のブレークポイントを有するソースファイルを実行する処理と、
実行中の前記ソースファイルが前記ブレークポイントに到達したら、前記ソースファイルの実行を一時停止して前記ソースファイルの変数状態を取得する処理と、
取得された前記変数状態を前記ブレークポイントに関連する情報として保存する一時保存処理と、
保存された前記ブレークポイントに関連する情報を前記サーバに送信する処理と
を実行させることを特徴とする、デバッグ情報の共有化プログラム。
【請求項１９】
前記一時保存工程は、前記変数状態とそれに関連するコメントを前記ブレークポイントに関連する情報として保存することを特徴とする、請求項１８に記載のデバッグ情報の共有化プログラム。
【請求項２０】
ネットワークで相互に接続されたサーバおよびクライアントからなるデバッグ情報共有化システムにおいて、前記サーバに、
前記クライアントから前記ブレークポイントに関連する情報を受信する処理と、
前記ブレークポイントに関連する情報を保存する処理と
を実行させることを特徴とする、デバッグ情報の共有化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータにおいてソフトウェアをデバッグする方法に関し、特に複数の作業者によるデバッグを効率化する方法に関する。
【背景技術】
【０００２】
ソフトウェアの開発において、デバッグは最も重要な工程の一つである。特に開発されるソフトウェアの規模が巨大化すればするほど、デバッグにかかる手間は加速度的に増大する。そのため近年は、デバッグの作業は複数の開発者および作業者がチームを組んで行われることが非常に多い。
【０００３】
開発者は、開発中のプログラムの中で、デバッグ実行時に動作の要となる箇所や動作に疑いがある箇所に対して、適宜ブレークポイントを設定する。ブレークポイントは、デバッグを実行するソフトウェアであるデバッガに対して、特定の位置でプログラムの実行を一時停止するように指示するポイントである。ブレークポイントで実行が中断されたプログラムは中断モードになる。中断モードになったプログラムはいつでも実行を再開でき、またプログラムが使用している関数、変数、オブジェクトなどはそのままメモリに残される。デバッグ作業者は、この状態で各々の関数や変数の値を監視して、プログラムの中で不具合の生じている点を探すことができる。
【０００４】
なお、デバッグを支援する技術として、たとえば以下のような技術が開示されている。特許文献１には、トランザクション単位でデバッグ情報を出力して検索可能とするデバッグ制御方式が開示されている。特許文献２も同様に、複数プロセスのトランザクションのデバッグ情報を連続情報として出力するデバッグ制御方式が開示されている。また、情報を共有する技術として、特許文献３には、製品不具合に関するデータを登録して検索可能なデータベースの構築方法が開示されている。
【０００５】
【特許文献１】特開平０２−０１６６４３号公報
【特許文献２】特開平０５−２２４９８２号公報
【特許文献３】特開２００７−０６６２６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来の技術では、複数の作業者がチームを組んでデバッグの作業を行う場合においても、デバッグの作業そのものは個人単位で行われることが多かった。バグに関する情報を共有するためにデータベースなどによる情報共有システムを利用することは容易に考えられるが、デバッグの作業に使われる開発環境と、情報共有システムとは必ずしも連携していなかった。
【０００７】
チームでデバッグ作業を行っている場合、実際に行った作業とその条件および結果などについての情報は適切にドキュメント化されて正確に共有される必要がある。しかしながら、そのようなドキュメントは各々の作業者が手作業で入力するので、その記録内容は作業者のスキルに依存する。そのため、重要な情報が記録として残されない、もしくは残されても正確に記録されないことがある。特に変数が複雑に絡み合う処理では詳細な情報が必要になるが、処理が複雑であればあるほど実行箇所やプログラムの状態を適切にドキュメント化することが難しい。
【０００８】
デバッグ作業において、ブレークポイントの設定は特に重要である。ほとんどすべてのブレークポイントに、その位置にブレークポイントを設定した意図があると言える。開発者および各々の作業者は、ブレークポイントを設定した位置とその意図について全て正確に理解して記憶し、また自分以外の作業者にもそれらを正しく伝達する必要がある。
【０００９】
しかしながら、デバッグ作業において大量のブレークポイントを設定した場合に、ブレークポイントの位置とその意図について全て記憶することは、高い記憶力が要求されるので、大規模プログラムのデバッグや呼び出し階層の深い処理のデバッグは非常に負荷が高い作業である。さらに、１つのブレークポイントが１度のデバッグ作業で複数回実行されることもあり、ブレークポイントを通過する回数に応じて変化するプログラムの状況（たとえば関数や変数などの値など）を全て記録しなければならず、これもやはり開発者や作業者に負荷を与えることになる。
【００１０】
ブレークポイントを設定した意図を伝えるために、開発者や作業者がソースコードにコメントを書き残すことがよく行われているが、そのようなコメント文のみでその意図およびそれに関連する情報を正確に伝達するには不十分である。さらに、実際のデバッグ作業でブレークポイントにおいて発生したバグについて、各々のブレークポイントと関連づけて記録し、各々のバグ情報とソースファイルの関連付けやバグに対する修正のコメント等を管理できるようなシステムは、従来存在しなかった。
【００１１】
ちなみに特許文献１および２の技術は、トランザクション単位でデバッグ情報を出力できるようにしているが、ブレークポイントについての情報や、ブレークポイントに関連するバグ情報などを記録するものではない。特許文献３の技術は「不具合情報」を共有化できるが、その不具合情報は各々の作業者が手作業で入力する必要があるので、前述のような問題を解決するものではない。
【００１２】
本発明の目的は、ブレークポイントについての情報および該ブレークポイントに関連するプログラムの実行状態やバグについての情報を正確に記録して共有化し、複数の作業者によるデバッグを効率化することのできるデバッグ情報共有化システム、クライアントコンピュータ、サーバ、デバッグ情報の共有化方法とプログラムを提供することにある。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、本発明に係るデバッグ情報共有化システムは、ネットワークで相互に接続されたサーバおよびクライアントからなるデバッグ情報共有化システムであって、クライアントは、少なくとも１カ所のブレークポイントを有するソースファイルと、ソースファイルを実行し、実行中のソースファイルがブレークポイントに到達したら実行を一時停止してソースファイルの変数状態を取得するプログラム実行手段と、取得された変数状態をブレークポイントに関連する情報として保存するデバッグ情報一時保存領域と、保存されたブレークポイントに関連する情報をサーバに送信するデバッグ情報送受信手段とを有することを特徴とする。
【００１４】
上記目的を達成するため、本発明に係るクライアントコンピュータは、ネットワークで相互に接続されたサーバおよびクライアントからなるデバッグ情報共有化システムに使われるクライアントコンピュータであって、少なくとも１カ所のブレークポイントを有するソースファイルと、ソースファイルを実行し、実行中のソースファイルがブレークポイントに到達したら実行を一時停止してソースファイルの変数状態を取得するプログラム実行手段と、取得された変数状態をブレークポイントに関連する情報として保存するデバッグ情報一時保存領域と、保存されたブレークポイントに関連する情報をサーバに送信するデバッグ情報送受信手段とを有することを特徴とする。
【００１５】
上記目的を達成するため、本発明に係るサーバは、ネットワークで相互に接続されたサーバおよびクライアントからなるデバッグ情報共有化システムに使われるサーバであって、クライアントからブレークポイントに関連する情報を受信するバグ管理装置と、ブレークポイントに関連する情報を保存するバグ情報データベースとを有することを特徴とする。
【００１６】
上記目的を達成するため、本発明に係るデバッグ情報を共有化する方法は、ネットワークで相互に接続されたサーバおよびクライアントからなるデバッグ情報共有化システムにおいてデバッグ情報を共有化する方法であって、クライアントが、少なくとも１カ所のブレークポイントを有するソースファイルを実行する実行工程と、実行中のソースファイルがブレークポイントに到達したら、クライアントがソースファイルの実行を一時停止してソースファイルの変数状態を取得する状態取得工程と、クライアントが、状態取得工程で取得された変数状態をブレークポイントに関連する情報として保存する一時保存工程と、クライアントが、保存されたブレークポイントに関連する情報をサーバに送信する送信工程とを有することを特徴とする。
【００１７】
上記目的を達成するため、本発明に係るデバッグ情報の共有化プログラムは、ネットワークで相互に接続されたサーバおよびクライアントからなるデバッグ情報共有化システムにおいて、クライアントに、少なくとも１カ所のブレークポイントを有するソースファイルを実行する処理と、実行中のソースファイルがブレークポイントに到達したら、ソースファイルの実行を一時停止してソースファイルの変数状態を取得する処理と、取得された変数状態をブレークポイントに関連する情報として保存する一時保存処理と、保存されたブレークポイントに関連する情報をサーバに送信する処理とを実行させることを特徴とする。
【００１８】
上記目的を達成するため、本発明に係る他のデバッグ情報の共有化プログラムは、ネットワークで相互に接続されたサーバおよびクライアントからなるデバッグ情報共有化システムにおいて、サーバに、クライアントからブレークポイントに関連する情報を受信する処理と、ブレークポイントに関連する情報を保存する処理とを実行させることを特徴とする。
【発明の効果】
【００１９】
本発明は、上記したようにブレークポイントに関連して変数状態を取得して保存し、サーバに送信するように構成したので、各々のブレークポイントについての情報を正確に共有化できる。これによって、複数の作業者によるデバッグを効率化することのできる、従来にない優れたデバッグ情報共有化システム、クライアントコンピュータ、サーバ、デバッグ情報の共有化方法とプログラムを提供することができる。
【発明を実施するための最良の形態】
【００２０】
図１は、本発明の実施の形態に係るネットワークの構成を示すブロック図である。本実施の形態のデバッグ情報共有化システム１は、サーバ２および複数のクライアント３がネットワーク４で相互に接続されることによって構成される。
【００２１】
図２は、図１で示したクライアント３内部の構成を示す概念図である。図３は、図２で示したクライアント３の動作を示す概念図である。クライアント３では、プログラミングおよびデバッグなどの、ソフトウェアの開発に係る作業を一貫して行うことのできるソフトウェアであるクライアント開発環境１００が動作する。クライアント開発環境１００は、プログラム実行手段１０１、デバッグ情報一時保存手段１０２、デバッグ情報送受信手段１０３、ソースファイル３０１、デバッグ設定情報３０２、およびデバッグ情報一時保存領域３０５から構成される。
【００２２】
ソースファイル３０１は開発対象のソースファイルである。デバッグ設定情報３０２は、ソースファイル３０１に設定したブレークポイント３０６についての情報およびブレークポイント付加情報３０９である。デバッグ情報一時保存領域３０５は、デバッグ設定情報３０２と、ソースファイル３０１を実行する時に取得されたスナップショット３０８を保存するための領域である。デバッグ設定情報３０２およびスナップショット３０８についての詳細は後述する。
【００２３】
プログラム実行手段１０１は、デバッグモードでデバッグの対象となるプログラム（以後対象プログラムという）を実行する手段である。対象プログラムはローカルマシンで実行されるローカルデバッグ以外にも、リモート環境で動作するプログラムをデバッグするリモートデバッグも実行できるものとする。
【００２４】
まず開発者はクライアント開発環境１００を起動し、対象プログラムのソースファイル３０１上にブレークポイント３０６を設定する。ブレークポイント３０６は１つのソースファイル３０１の中に、１点以上何点でも設定することができる。
【００２５】
各々のブレークポイント３０６にはコメント３０７を付加することができる。開発者は各々のブレークポイント３０６に対して、該ブレークポイントを設定した理由、あるいはその文が正しく実行される事前条件、事後条件などをコメント３０７として記述する。開発者が記録したコメント３０７は、スナップショット３０８と共にブレークポイント付加情報３０９となる。
【００２６】
デバッグを開始すると、対象プログラムが動作を開始し、ブレークポイントの設定された箇所が実行されると対象プログラムの動作は一時停止する。そのとき、プログラム実行手段１０１は実行スタックの状態やスレッドの状態、変数の状態といったプログラムの状態に関するスナップショット３０８を表示し、該スナップショット３０８を保存するか否かをユーザに選択させる。
【００２７】
開発者は、表示されたスナップショット３０８がバグに関わる情報であるか否かを判断し、バグに関連する情報の場合には、該スナップショット３０８を保存するよう選択する。保存するよう選択した場合、デバッグ情報一時保存領域３０５に該スナップショット３０８が保存される。スナップショット３０８が保存された後で対象プログラムの動作を再開することもできるし、またスナップショット３０８を保存しないで再開することもできる。
【００２８】
また、デバッグ中には、プログラム実行手段１０１から随時、プログラム実行履歴３１１がデバッグ情報一時保存領域３０５に送られ、保存される。ここでいうプログラム実行履歴３１１とは、たとえばソースファイル３０１のファイル名、および実行中の行番号などについての情報である。
【００２９】
デバッグ情報一時保存手段１０２は、デバッグ中にプログラム実行手段１０１が取得した情報を一時的に保持する手段である。デバッグ情報一時保存手段１０２は、対象プログラムの実行開始から実行終了までを一連のデータとして扱い、プログラム実行手段１０１からデバッグ中に送信されてきたデータをデバッグ情報一時保存領域３０５に保存する。
【００３０】
同一プログラムについての情報であっても、該プログラムを実行した回数ごとにたとえば「n回目の実行」（ｎは自然数）といった形で保存できる。また、作業者が独自の名前をつけて保存することもできる。保存した情報に対し、開発者もしくは作業者はコメント３０７に、たとえば実行時に行った設定や実行時の環境などについての情報を付加することができる。以後、１回のデバッグごとに生成される、デバッグ設定情報３０２およびプログラム実行履歴３１１を総称してデバッグ情報３１０という。
【００３１】
デバッグ設定情報３０２はブレークポイント３０６とブレークポイント付加情報３０９とを含み、ブレークポイント付加情報３０９はコメント３０７およびスナップショット３０８からなる。１つのデバッグ情報３１０は、複数のブレークポイント３０６とそれらの各々に対応するブレークポイント付加情報３０９を含む。
【００３２】
デバッグ情報送受信手段１０３は、デバッグ情報一時保存領域３０５に保存されたデバッグ情報３１０を、サーバ２内部で動作するバグ情報管理システム４００（詳細は後述）に送信する。開発者もしくは作業者は、デバッグ情報一時保存領域３０５に保存されたデバッグ情報３１０の中で、保存しておきたいものや他の開発者と共有したいものを選択する。さらに、デバッグ情報送受信手段１０３は、バグ情報管理システム４００からデバッグ情報３１０を受信し、保存済みデバッグ情報３１２として保存することもできる（詳細は後述）。
【００３３】
作業者は、バグ情報管理システム４００に登録されているバグの中から、今回のデバッグで調査したバグを選択し、選択された該バグに関連するデバッグ情報３１０を送信することができる。また、新規バグ登録として、バグ情報管理システム４００に登録されていないバグについてのデバッグ情報３１０を送信することもできる。
【００３４】
図４は、図１で示したサーバ２内部で動作するソフトウェアの構成を示す概念図である。図５は、図４で示したバグ情報管理システム４００およびソース版管理システム５００のデータ構成を表す概念図である。また図６は、図４で示したバグ情報管理システム４００がクライアント開発環境１００からデバッグ情報３１０を受け取ったときの動作を表す概念図である。
【００３５】
サーバ２内部では、バグ情報管理システム４００と、ソース版管理システム５００とが動作する。サーバ２は物理的に１台のコンピュータであってもなくてもよい。バグ情報管理システム４００とソース版管理システム５００とが同一のコンピュータで動作しても、それぞれ別個のコンピュータで動作してもよい。
【００３６】
バグ情報管理システム４００は、バグ管理装置４０１と、バグ管理ＤＢ４０２と、ファイルサーバ４０３から構成される。またバグ管理装置４０１は、バグ情報入力手段１０４と、シーケンス図作成手段１０５と、デバッグ情報送受信手段１０６と、ソースファイル連携手段１０７とを含む。
【００３７】
バグ情報入力手段１０４は対象プログラムに対して発見されたバグを登録するための手段である。作業者がバグを発見すると、クライアント開発環境１００を介してバグ情報管理システム４００に、対象となるＯＳ、発見者、プログラムのバージョン、日付、状況、優先度、致命度等の情報を詳細に入力する。既にデバッグ情報３１０が取得されている場合は、該デバッグ情報３１０で記録されている情報をそれらの項目に入力することも可能である。
【００３８】
シーケンス図作成手段１０５は、クライアント開発環境１００から受信したデバッグ情報３１０の中に含まれるプログラム実行履歴３１１を元に、ＵＭＬ２．０で定義されているシーケンス図４０４を作成する。作成されたシーケンス図４０４は、後述のバグ補足情報の実体４１６として保存される。
【００３９】
デバッグ情報送受信手段１０６は、クライアント３とデバッグ情報３１０を送受信する機能である。デバッグ情報送受信手段１０６は、前述のクライアント開発環境１００から送信されるデバッグ情報３１０を受信することができる。作業者がデバッグ情報３１０をダウンロードする時には、クライアント開発環境１００を介して、ダウンロードしたいバグを選択して、該バグについてのデバッグ情報３１０をダウンロードする。
【００４０】
ソースファイル連携手段１０７は、ソース版管理システム５００に登録されたソースファイル５１３とバグの関連付けを行う。開発者はバグとソースの関連を発見した場合にバグ情報管理システム４００に関連情報を登録する。また、既にバグ情報管理システム４００に登録されたバグに関連した修正が行われた場合にもバグ情報とソースファイル５１３の関連付けが行われ、バグの修正箇所が特定することが可能になる。
【００４１】
図５に示すように、バグ管理ＤＢ４０２は、登録されたバグ情報４０５と、送信されてきたデバッグ情報３１０とを保持する。バグ管理ＤＢ４０２に保存されるデータは、デバッグＩＤ４１１と、バグＩＤ４１２、ソースＩＤ４１３、ブレークポイント４１４、バグ補足情報４１５などを含む。
【００４２】
デバッグＩＤ４１１は、行われた各々のデバッグごとに与えられるＩＤである。ソースＩＤ４１３は、該デバッグの対象となったソースファイル５１３を表す。バグＩＤ４１２は、ソースＩＤ４１３で表されるソースファイル５１３の中で既に知られているバグに与えられるＩＤである。ブレークポイント４１４は、ソースファイル５１３の中で該バグが存在する行番号であり、クライアント３から送信されたデバッグ設定情報３０２に含まれるブレークポイント３０６に相当する。
【００４３】
バグ補足情報４１５は、該バグに対する補足情報である。より具体的にはバグ補足情報４１５は、スナップショット３０８、およびプログラム実行履歴３１１からシーケンス図作成手段１０５によって作成されるシーケンス図４０４である。ただし、それらのスナップショット３０８およびシーケンス図４０４のデータの実体４１６はファイルサーバ４０３に保存されており、バグ補足情報４１５はそれらのデータの実体へのパスを記載している。
【００４４】
また、各々のバグＩＤ４１２には、バグ情報入力手段１０４によって入力された、発見者４２１、ＯＳ４２２などの情報が関連づけられている。同じくバグ情報入力手段１０４によって入力された、プログラムのバージョン、日付、状況、優先度、致命度、およびコメント３０７などの情報も、ここに記録される。
【００４５】
図６に示すように、デバッグ情報送受信手段１０６がクライアント開発環境１００からデバッグ情報３１０を受け取ると、デバッグ設定情報３０２はバグ情報入力手段１０４によって、スナップショット３０８はバグ補足情報の実体４１６に含まれて保存され、それ以外の情報はバグ管理ＤＢ４０２の対応するフィールドに保存される。またプログラム実行履歴３１１は、シーケンス図作成手段１０５によってシーケンス図４０４が生成され、これもバグ補足情報の実体４１６に含まれて保存される。
【００４６】
ソース版管理システム５００は、ソース管理装置５０１と、ソース管理ＤＢ５０２と、ファイルサーバ５０３と、ソースファイル情報ダウンロード手段１０８から構成される。ソース管理装置５０１は、ソース管理装置５０１はソース管理ＤＢ５０２に保存されたソースファイル５１３のバージョンや修正履歴を管理するための装置である。ファイルサーバ５０３は、対象のソースプログラムであるソースファイル５１３を保存する。
【００４７】
図５に示すように、ソース管理ＤＢ５０２は、バグ管理ＤＢ４０２のソースＩＤ４１３と関連して、各々のソースＩＤ４１３に対応するバージョン５１１、ファイル名５１２などの情報を保存する。ファイル名５１２は、ファイルサーバ５０３に保存されているソースファイル５１３のファイル名である。ソースファイル情報ダウンロード手段１０８は、クライアント３へソースファイル５１３を送信する機能である。送信されたソースファイル５１３は、クライアントでソースファイル３０１となる。
【００４８】
図７は、図２および図３で示したクライアント開発環境１００が、デバッグの際に行う処理を表すフローチャートである。対象プログラムのソースファイル３０１には、開発者があらかじめブレークポイント３０６を設定してあり、各々のブレークポイント３０６にコメント３０７を付加してあるものとする。なお、デバッグ中は任意のタイミングで、ブレークポイントを追加もしくは解除していくことが可能である。
【００４９】
処理を開始し（Ｓ０１）、クライアント開発環境１００を起動すると（Ｓ０２）、クライアント開発環境１００はデバッグ情報一時保存領域３０５にデバッグ情報３１０の記録を開始する（Ｓ０３）。対象プログラムをデバッグモードで実行開始（Ｓ０４）すると、１行分の文が実行されるごとに（Ｓ０５）、プログラム実行履歴３１１がデバッグ情報一時保存領域３０５に記録される（Ｓ０６）。
【００５０】
ここでクライアント開発環境１００が、対象プログラムの実行が、設定されたブレークポイント３０６に到達したか否かをまず判断し（Ｓ０７）、ブレークポイント３０６に到達していなければＳ０５に戻る。ブレークポイント３０６に到達していれば実行中のプログラムは一時停止し、作業者の操作指示を待つ（Ｓ０８）。作業者は、現在の変数の状態をスナップショット３０８として保存するか否かを選択する。
【００５１】
Ｓ０８で、保存することが選択されたら、クライアント開発環境１００はスナップショット３０８をデバッグ情報一時保存領域３０５に記録して（Ｓ０９）Ｓ１０に進む。保存しないことが選択されたら、そのままＳ１０に進む。Ｓ１０で、クライアント開発環境１００が、対象プログラムが終了に到達したか否かを判断し、終了していなければＳ０４に戻る。終了していればＳ１１に進む。
【００５２】
対象プログラムの実行が終了したＳ１１の状態で、クライアント開発環境１００はデバッグ情報一時保存領域３０５に記録されたスナップショット３０８の一覧を表示する。作業者は、その中からバグ情報管理システム４００に登録されるべきスナップショット３０８を選択する。
【００５３】
選択されたスナップショット３０８が存在する場合、クライアント開発環境１００はバグ情報管理システム４００に接続する（Ｓ１２）。バグ情報管理システム４００は、クライアント開発環境１００を介して、作業者に送信されるデバッグ情報３１０がどのバグに対して有効であるかを作業者に問い合わせる（Ｓ１３）。作業者がデバッグ情報３１０の対象となるバグを選択すると、Ｓ１１で選択されたスナップショット３０８を含むデバッグ情報３１０がバグ情報管理システム４００に送信される（Ｓ１４）。なお作業者は、送信されるデバッグ情報３１０に、コメント３０７、およびその他の情報（対象となるＯＳ、発見者、プログラムのバージョン、日付、状況、優先度、致命度など）を、Ｓ０３〜Ｓ１３までのどのタイミングにおいても入力して付加することができる。
【００５４】
クライアント開発環境１００は、送信されたデバッグ情報３１０を記録するか否かを作業者に問い合わせる（Ｓ１５）。記録する場合は、デバッグ情報３１０は保存済みデバッグ情報３１２としてクライアント３内部に保存され、デバッグ情報一時保存領域３０５からは抹消される（Ｓ１６〜１７）。記録しない場合は、デバッグ情報３１０はそのままデバッグ情報一時保存領域３０５から抹消される（Ｓ１７）。以上でクライアント開発環境１００での動作は終了する（Ｓ１８）。クライアント開発環境１００は、保存済みデバッグ情報３１２を読み込んで、同一のソースに対するデバッグを繰り返すことができる。
【００５５】
図８は、図４で示したバグ情報管理システム４００が、既存のデバッグ情報３１０を取得する際に行う処理を表すフローチャートである。バグ情報管理システム４００に登録されたデバッグ情報３１０は、デバッグ情報共有化システム１に含まれるどのクライアント３からも、参照して取得することができる。
【００５６】
処理を開始し（Ｓ１０１）、作業者がクライアント開発環境１００を介してバグ情報管理システム４００に接続すると（Ｓ１０２）、バグ情報管理システム４００はデバッグ作業の対象となるバグの一覧をクライアント開発環境１００の画面に表示する（Ｓ１０３）。その中から、作業者が作業しようとするバグを選択すると（Ｓ１０４）、バグ情報管理システム４００はデバッグ情報３１０と、それに対応するソースファイル３０１をクライアント開発環境１００に送信して（Ｓ１０５）処理を終了する（Ｓ１０６）。ソースファイル３０１は、ソース版管理システム５００から取得する。送信されたデバッグ情報３１０は、デバッグ情報送受信手段１０３によって受信され、保存済みデバッグ情報３１２としてクライアント３内部に保存される。
【００５７】
クライアント開発環境１００は、保存された保存済みデバッグ情報３１２を読み込んで、図７に示したものと同様の処理を行うことができ、それによって他の作業者が行ったデバッグの作業を引き継ぐことができる。
【００５８】
なお、Ｓ１０３で表示されるバグの一覧は、バグ情報管理システム４００に登録されている全てのデバッグ情報３１０を一括して表示してダウンロードするようにしてもよいし、また作業者、日時、対象プログラム名などの条件によって絞り込まれたデバッグ情報３１０を表示してダウンロードするようにしてもよい。
【００５９】
また、バグ情報管理システム４００がシーケンス図作成手段１０５によって生成したシーケンス図４０４を、クライアント開発環境１００の画面に表示させることも可能である。引き継がれたデバッグ作業で、動作が再現しないなどのような場合、作業者はシーケンス図４０４を参照して、取得したデバッグ情報３１０がどのような条件で作成されたものかを確認することができる。
【００６０】
デバッグによってバグの原因を特定した作業者は、対象プログラムのソースファイル３０１に含まれる当該バグを修正する。その場合、作業者は修正されたソースファイル３０１を、ファイル名５１２は同一で、バージョン５１１を更新して、同一のソースＩＤ４１３で、ソースファイル５１３としてファイルサーバ５０３に保存する。バグ管理ＤＢ４０２は、修正された対象のバグに対応するバグＩＤ４１２において、修正履歴をソース管理ＤＢ５０２に保存する。この修正履歴は、クライアント開発環境１００を介してバグ情報管理システム４００に接続することにより、すべての作業者が閲覧することができる。
【００６１】
以上のように構成した本実施の形態は、クライアント開発環境１００がプログラムの変数の状態をスナップショット３０８として記録することができ、デバッグ設定情報３０２およびプログラム実行履歴３１１を記録するので、デバッグ中のプログラムについて正確なデバッグ情報３１０を記録することができる。
【００６２】
また、記録されたデバッグ情報３１０をバグ情報管理システム４００に送信して保存し、他の作業者が該デバッグ情報３１０を容易に取得して、取得されたデバッグ情報３１０に対して作業を行うことができる。従って、記録されたデバッグ情報３１０を他の作業者に正確かつ容易に引き継ぐことができる。
【００６３】
さらに、ソースファイル５１３のバージョンを、バグＩＤ４１２に対応して管理しているので、バグが修正されたか否か、またどのように修正されたかを容易に知ることができる。これは、大人数の作業チームによる大規模なプログラムの開発において、特に有用である。
【００６４】
そして、ブレークポイント３０６やコメント３０７の付加について、熟練した作業者のノウハウを作業者全員で共有することもできる。これは、デバッグ作業そのものだけでなく、デバッグ作業についての教育に対しても有用である。
【００６５】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることは言うまでもないことである。
【産業上の利用可能性】
【００６６】
ソフトウェア開発におけるデバッグの工程に適用可能である。また、ソフトウェア開発の教育などの用途にも適用可能である。
【図面の簡単な説明】
【００６７】
【図１】本発明の実施の形態に係るネットワークの構成を示すブロック図である。
【図２】図１で示したクライアント内部の構成を示す概念図である。
【図３】図２で示したクライアントの動作を示す概念図である。
【図４】図１で示したサーバ内部で動作するソフトウェアの構成を示す概念図である。
【図５】図４で示したバグ情報管理システムおよびソース版管理システムのデータ構成を表す概念図である。
【図６】図４で示したバグ情報管理システムがクライアント開発環境からデバッグ情報を受け取ったときの動作を表す概念図である。
【図７】図２および図３で示したクライアント開発環境が、デバッグの際に行う処理を表すフローチャートである。
【図８】図４で示したバグ情報管理システムが、既存のデバッグ情報を取得する際に行う処理を表すフローチャートである。
【符号の説明】
【００６８】
１  デバッグ情報共有化システム
２  サーバ
３  クライアント（クライアントコンピュータ）
４  ネットワーク
１００  クライアント開発環境
１０１  プログラム実行手段
１０２  デバッグ情報一時保存手段
１０３  デバッグ情報送受信手段
１０４  バグ情報入力手段
１０５  シーケンス図作成手段
１０６  デバッグ情報送受信手段
１０７  ソースファイル連携手段
１０８  ソースファイル情報ダウンロード手段
３０１  ソースファイル
３０２  デバッグ設定情報
３０５  デバッグ情報一時保存領域
３０６  ブレークポイント
３０７  コメント
３０８  スナップショット（変数状態）
３０９  ブレークポイント付加情報
３１０  デバッグ情報
３１１  プログラム実行履歴
３１２  保存済みデバッグ情報
４００  バグ情報管理システム
４０１  バグ管理装置
４０２  バグ管理ＤＢ
４０３  ファイルサーバ
４０４  シーケンス図
５００  ソース版管理システム
５０１  ソース管理装置
５０２  ソース管理ＤＢ
５０３  ファイルサーバ
【図１】
2009086808.tif 000003
【図２】
2009086808.tif 000004
【図３】
2009086808.tif 000005
【図４】
2009086808.tif 000006
【図５】
2009086808.tif 000007
【図６】
2009086808.tif 000008
【図７】
2009086808.tif 000009
【図８】
2009086808.tif 000010