(57)【要約】【課題】プログラム開発において似た処理についてはコピーして修正するという開発方法がしばしばとられる。このときもとのプログラムにバグが含まれていたらバグの拡大再生産になる。【解決手段】コピーをシステムが管理することにより、もとのプログラムを含めコピーされた範囲でバグが見つかったときは、それをコピーされた範囲の利用者に自動的に警告する。また、そのとき、コピー後どのくらい修正されているかにより警告するかどうか決める。【選択図】図１
2008269020.tif 000002
【特許請求の範囲】
【請求項１】
コピー管理装置と一つ以上の編集機能がネットワークに接続されたプログラム開発支援装置であって、該コピー管理装置はコピー履歴記録機能とコピー履歴データとバグ報告配信機能からなり、該バグ報告配信機能はバグ報告受付機能、コピー範囲同定機能、バグ含有可能性判定機能、利用者への警告機能からなり、該コピー履歴記録機能は利用者の入力手段である該編集機能から、コピーの報告を受けるとその履歴を該コピー履歴データに格納し、該バグ報告受付機能は利用者端末からバグの報告を受けると、該コピー範囲同定機能により、そのバグを含む箇所がコピーされた範囲を調べ、該バグ含有可能性判定機能によりコピー先にバグ含有の可能性があるかどうかを調べ、あれば該利用者への警告機能が、そのコピー利用者端末に警告をだすことを特徴とするコピー履歴管理型プログラム開発支援装置。
【請求項２】
請求項１のプログラム開発支援装置であって、バグ報告には、プログラムパターンを入力することができ、該バグ含有可能性判定機能は、コピーされた範囲に対して、プログラムパターンとマッチするかどうかをチェックし、マッチした場合のみ利用者への警告機能が警告を出すことを特徴とするコピー履歴管理型プログラム開発支援装置。
【請求項３】
請求項２のプログラム開発支援装置であって、プログラムパターンにはコードの並びのパターンを書けることを特徴とするコピー履歴管理型プログラム開発支援装置。
【請求項４】
請求項３のプログラム開発支援装置であって、プログラムパターンにはコードの並び以外に特定のコードが欠落しているパターンも書けることを特徴とするコピー履歴管理型プログラム開発支援装置。
【請求項５】
請求項１のプログラム開発支援装置であって、該バグ含有可能性判定機能は、バグ報告を受けた箇所とバグ含有可能性を調べている箇所とが一定量以上の共通コードを含むときに、利用者への警告機能が警告を出すことを特徴とするコピー履歴管理型プログラム開発支援装置。
【請求項６】
請求項１のプログラム開発支援装置であって、バグ報告受付機能はバグの発生した箇所だけでなく、バグの症状と原因の情報も受け付けることができ、利用者への警告機能は概情報を警告のとき表示することを特徴とするコピー履歴管理型プログラム開発支援装置。
【請求項７】
請求項１のプログラム開発支援装置であって、利用者はプログラムの中の指定した箇所について、コピー管理装置の保持する概箇所とコピー関係にある箇所のバグ報告を参照することができることを特徴とするコピー履歴管理型プログラム開発支援装置。
【請求項８】
コピー管理装置と一つ以上の編集機能がスタンドアローンで使用されるプログラム開発支援装置であって、該コピー管理装置はコピー履歴記録機能とコピー履歴データとバグ報告配信機能からなり、該バグ報告配信機能はバグ報告受付機能、コピー範囲同定機能、バグ含有可能性判定機能、利用者への警告機能からなり、該コピー履歴記録機能は利用者の入力手段である該編集機能から、コピーの報告を受けるとその履歴を該コピー履歴データに格納し、該バグ報告受付機能は利用者端末からバグの報告を受けると、該コピー範囲同定機能により、そのバグを含む箇所がコピーされた範囲を調べ、該バグ含有可能性判定機能によりコピー先にバグ含有の可能性があるかどうかを調べ、あれば該利用者への警告機能が、そのコピー利用者端末に警告をだすことを特徴とするコピー履歴管理型プログラム開発支援装置。
【請求項９】
コピー管理装置と一つ以上の編集機能がネットワークに接続されたプログラム開発支援方法であって、該コピー管理装置はコピー履歴記録機能とコピー履歴データとバグ報告配信機能からなり、該バグ報告配信機能はバグ報告受付機能、コピー範囲同定機能、バグ含有可能性判定機能、利用者への警告機能からなり、該コピー履歴記録機能は利用者の入力手段である該編集機能から、コピーの報告を受けるとその履歴を該コピー履歴データに格納し、該バグ報告受付機能は利用者端末からバグの報告を受けると、該コピー範囲同定機能により、そのバグを含む箇所がコピーされた範囲を調べ、該バグ含有可能性判定機能によりコピー先にバグ含有の可能性があるかどうかを調べ、あれば該利用者への警告機能が、そのコピー利用者端末に警告をだすことを特徴とするコピー履歴管理型プログラム開発支援方法。
【請求項１０】
請求項９のプログラム開発支援方法であって、バグ報告には、プログラムパターンを入力することができ、該バグ含有可能性判定機能は、コピーされた範囲に対して、プログラムパターンとマッチするかどうかをチェックし、マッチした場合のみ利用者への警告機能が警告を出すことを特徴とするコピー履歴管理型プログラム開発支援方法。
【請求項１１】
請求項１０のプログラム開発支援方法であって、プログラムパターンにはコードの並びのパターンを書けることを特徴とするコピー履歴管理型プログラム開発支援方法。
【請求項１２】
請求項１１のプログラム開発支援方法であって、プログラムパターンにはコードの並び以外に特定のコードが欠落しているパターンも書けることを特徴とするコピー履歴管理型プログラム開発支援方法。
【請求項１３】
コピー管理装置と一つ以上の編集機能がスタンドアローンで使用されるプログラム開発支援方法であって、該コピー管理装置はコピー履歴記録機能とコピー履歴データとバグ報告配信機能からなり、該バグ報告配信機能はバグ報告受付機能、コピー範囲同定機能、バグ含有可能性判定機能、利用者への警告機能からなり、該コピー履歴記録機能は利用者の入力手段である該編集機能から、コピーの報告を受けるとその履歴を該コピー履歴データに格納し、該バグ報告受付機能は利用者端末からバグの報告を受けると、該コピー範囲同定機能により、そのバグを含む箇所がコピーされた範囲を調べ、該バグ含有可能性判定機能によりコピー先にバグ含有の可能性があるかどうかを調べ、あれば該利用者への警告機能が、そのコピー利用者端末に警告をだすことを特徴とするコピー履歴管理型プログラム開発支援方法。
【請求項１４】
コピー管理装置と一つ以上の編集機能がネットワークに接続されたプログラム開発支援プログラムであって、該コピー管理装置はコピー履歴記録機能とコピー履歴データとバグ報告配信機能からなり、該バグ報告配信機能はバグ報告受付機能、コピー範囲同定機能、バグ含有可能性判定機能、利用者への警告機能からなり、該コピー履歴記録機能は利用者の入力手段である該編集機能から、コピーの報告を受けるとその履歴を該コピー履歴データに格納し、該バグ報告受付機能は利用者端末からバグの報告を受けると、該コピー範囲同定機能により、そのバグを含む箇所がコピーされた範囲を調べ、該バグ含有可能性判定機能によりコピー先にバグ含有の可能性があるかどうかを調べ、あれば該利用者への警告機能が、そのコピー利用者端末に警告をだすことを特徴とするコピー履歴管理型プログラム開発支援プログラム。
【請求項１５】
請求項１４のプログラム開発支援プログラムであって、バグ報告には、プログラムパターンを入力することができ、該バグ含有可能性判定機能は、コピーされた範囲に対して、プログラムパターンとマッチするかどうかをチェックし、マッチした場合のみ利用者への警告機能が警告を出すことを特徴とするコピー履歴管理型プログラム開発支援プログラム。
【請求項１６】
請求項１５のプログラム開発支援プログラムであって、プログラムパターンにはコードの並びのパターンを書けることを特徴とするコピー履歴管理型プログラム開発支援プログラム。
【請求項１７】
請求項１６のプログラム開発支援プログラムであって、プログラムパターンにはコードの並び以外に特定のコードが欠落しているパターンも書けることを特徴とするコピー履歴管理型プログラム開発支援プログラム。
【請求項１８】
コピー管理装置と一つ以上の編集機能がスタンドアローンで使用されるプログラム開発支援プログラムであって、該コピー管理装置はコピー履歴記録機能とコピー履歴データとバグ報告配信機能からなり、該バグ報告配信機能はバグ報告受付機能、コピー範囲同定機能、バグ含有可能性判定機能、利用者への警告機能からなり、該コピー履歴記録機能は利用者の入力手段である該編集機能から、コピーの報告を受けるとその履歴を該コピー履歴データに格納し、該バグ報告受付機能は利用者端末からバグの報告を受けると、該コピー範囲同定機能により、そのバグを含む箇所がコピーされた範囲を調べ、該バグ含有可能性判定機能によりコピー先にバグ含有の可能性があるかどうかを調べ、あれば該利用者への警告機能が、そのコピー利用者端末に警告をだすことを特徴とするコピー履歴管理型プログラム開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウエア開発支援技術に関し、コピー履歴管理型プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援プログラムに関する。
【背景技術】
【０００２】
過去、人間はプログラムの不具合（バグ）に悩まされ続けてきた。巨大なプログラムの中から不具合の箇所を発見するためにはいろいろな工夫をしてきた。一般に不具合を発見する方法として、事例データベースを検索するという方法が提案されてきた。
【０００３】
例えば、特許文献１の「不具合事例登録検索方法および装置」、特許文献２の「事例ベース推論方法および事例ベース推論装置」は、プログラムの不具合に特化している発明ではないが、似た不具合事例を検索して直面している不具合の対策の参考にするものである。また、ソースプログラムでの差異を計算する方法としては特許文献３の「ソースプログラム比較情報生成システム」がある。
【０００４】
しかしながら、例え、これらを組み合わせても、似たプログラムの不具合事例を見つけることができるだけで、発見された類似プログラムの不具合と同じ不具合が対象としているプログラムに含まれているかどうかの確証は一般には高くない。
【特許文献１】特開２００６−３１２１３号公報
【特許文献２】特開２００３−１５８７７号公報
【特許文献３】特開２００３−２８０９０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来事例では似た症状などのあいまいな検索機能を提供するのみであり、バグの原因究明が必ずしも検索した事例と同じであるとは限らなかった。一方、プログラム開発の現場では、生産性を上げるためにすでに作成されたプログラムのコードで似た機能や処理のものをコピーしてきて修正して使うということが頻繁になされている。このとき、元のプログラムにバグがあれば、コピー先のプログラムにもバグがコピーされ、また、コピー先のプログラムをさらにコピーすることで、バグを含んだコードが拡散していくことがある。
【０００６】
本発明の目的は、
（１）症状の類似性のような不確かな情報だけでなく、利用者がコピーして使ったというバグ拡散のはっきりした原因を利用して製品プログラムでのバグ発生を抑えること
（２）コピーの繰り返しにより、バグの拡散範囲が同定できなくなる状況を抑える手段を与えることである。
【課題を解決するための手段】
【０００７】
（１）ネットワークに接続された複数の開発支援環境でプログラムを個人のプログラム内、あるいはプログラム間、あるいは他人のプログラムへとコピーした場合は、その履歴をデータベースにとっておき、そのうちのひとつでバグが発生したら、データベース内のコピー履歴を利用して、そのコードがコピーされた範囲を同定して、その利用者端末に警告を出すことを特徴とする。
（２）上記手段（１）において、バグを報告するとき、コピーされたコードの中でバグの原因となるパターンを指定することができ、コピーされた範囲のプログラムが同じパターンをもっている場合に警告を発することを特徴とする。
（３）上記手段（１）バグ報告されたプログラムと一致している量がある一定の比率を超えたときにバグの警告を発することを特徴とする。
（４）上記手段（１）において、バグ報告として、箇所だけでなく症状と原因も入力できるようにし、警告時にそれらの情報を利用者に通知することを特徴とする。
（５）上記手段（１）において、ネットワークによって開発支援環境とコピー履歴のデータベースをつなぐのではなく、ひとつの計算機の中で実施し、個人のプログラム内およびプログラム間でのコピー履歴を管理し、バグ報告をしたとき、コピーして作成した箇所がすべて列挙できることを特徴とする。
（６）上記手段（１）において、バグ報告があったときすぐに通知するのではなく、それをデータとして蓄えておいて、利用者が自分のプログラムのコピー元、コピー先でバグ報告がなかったかを調べることができることを特徴とする。
【発明の効果】
【０００８】
コピーされた範囲でだれかがバグを見つけた場合、その部分をコピーしたほかの利用者に速やかにバグの所在を知ることができバグ発生を抑えることに貢献する。
【発明を実施するための最良の形態】
【０００９】
以下に、本発明の実施の形態について、図面を用いて詳細に説明する。
【実施例１】
【００１０】
図１は本発明の構成図を示している。本発明では、各利用者がプログラムを編集するための編集機能１０１０がネットワークに接続され、またそのネットワークには各利用者が行ったコピー操作を記録するコピー履歴管理装置１００１が接続されている。コピー履歴管理装置１００１は、大きくコピー履歴記録機能１００２、記録されたデータであるコピー履歴データ１００４、バグが報告されたとき適切な利用者に警告を出すためのバグ報告配信機能１００５からなる。コピー履歴データ１００４内部にはコピー操作がなされたプログラムの領域１００９の集合が格納されており、各領域間にはコピーされた関係や、一方が一方を包含する「含む」関係が管理されている。
【００１１】
バグ報告配信機能はバグ報告を受けるバグ報告受付機能１００５、指定された領域コピーされた範囲を同定するコピー範囲同定機能１００６、コピー先にまだコピー元で報告されたバグが含まれる可能性があるかどうかを判定するバグ含有可能性判定機能１００７、含有される可能性があるときはその所持者にバグ報告を行う利用者への警告機能１００８からなる。
【００１２】
図１では、また、Ａさん、Ｂさん、Ｃさんが作成したプログラムの間でどのようにコードがコピーされ、元のプログラムに含まれていたバグが拡散していったかの様子が記されている。すなわちＡさんが作成したプログラムＡの領域１００４にバグが含まれていて、それがＡさんのプログラムＡの別の部分１０１５にコピーされ、またＢさんのプログラムＢの領域１０１４にコピーされ、その領域１０１４を含む領域１０１２はＣさんのプログラムＣ内の１０１６にコピーされている。このようにもとのプログラムにバグがあるとき、それが作成者のプログラムのいろいろなところやほかのプログラマのプログラムに拡散していってしまうことがある。
【００１３】
図２と図３はバグの具体的な例を示している。図２の２００１はＣ言語で書かれた素数を求めるプログラムであるが、領域２００２の部分にバグがある。ここで不等号が「ｉ＜＝ｎ」となっていて、等しい場合を含むように書かれているが、正しくは「ｉ＜ｎ」であり、しかもこのバグは、たまたま、ｎにＮを入れたときだけ、症状が発生する。このような誤りはｎが特殊な値のときだけしか発現せず、発見が難しいので、コピーによって拡散していく可能性がある。次に図３は複数の命令文がお互いに関係しあってバグを形成する場合の例である。
【００１４】
一般にコピーを行った利用者はコピー後、その部分を修正して使用するため、もとのプログラムのバグがいつまでも存在するかどうかは分からない。図２、図３の例では、コピーされた部分に元のプログラムでバグの原因になったコードあるいはコードの並びがある場合、それらが関与するバグが修正されずに残っている可能性があることを示唆している。本発明の実施例では、後で、この性質を利用して、バグ含有可能性を判定する方法を述べる。
【００１５】
図４はコピー履歴データ１００４内のデータ構造をあらわしている。コピー履歴データ１００４の中にはプログラムの領域を表すデータ４００１，４００２，４００３，４００４，４００５などが入っている。利用者によりコピー操作が実施されるたびにこのようなデータ項目がコピー履歴データ１００４の中に作成されるようにする。プログラムの領域を表すデータ４００１などはファイル名とそのファイル内の場所を表すＩＤを含んでいる。
【００１６】
例えば、４００１の領域はファイル名が「プログラムＡ」場所のＩＤが００１である。編集機能でコピー操作が行われた場合は、これらの領域に対応するデータ項目が作成され、コピーされたデータ項目間にリンクが張られ、コピーされたという情報が格納される。また、コピーしたとき、その領域がほかの領域を含んでいる場合は「含む」というリンクが生成される。これらはコピー履歴記録機能１００２により作成される。
【００１７】
図５にプログラム内の領域の例を示す。ここでは５００１は全体のプログラムで５００２はその中の一部分である。コピーはこのような領域を指定し、その範囲にあるテキスト情報をコピーすることにより実施される。
【００１８】
図６にこの領域の格納方法の一例を示す。図６の６００１は図５のプログラムのテキスト情報を出現順に格納したものである。ここではスペースの都合で２次元的に書いているが左から右に順に進み、行末で次の行の左端に移り、以下同様に並べられたものをあらわしているものとする。この中で２行目の行頭に
▼（００１）
というテキストの並び、最下行に
▲（００１）
というテキストの並びがある。ここで「▲」や「▼」は特殊な文字コードとする。この文字列の間に挟まれた部分が領域「００１」とする。編集作業において、これらの領域を表す区切りの文字コードが常に現れていてはプログラム開発の邪魔になることがある。したがって、これらのコードを表示上は見せない、あるいは、その領域だけ色を変えて表示するなど、表示上の工夫をしておくことで編集を容易にすることができる。
【００１９】
また、編集機能では、これらの文字列のならびは、編集中にその領域を完全に含む領域が削除されない限り削除しないように管理する。また、これらを含む領域がコピーされた場合は、領域の番号を新たに生成し、別の領域として格納する。これによってプログラム内の領域の表現の方法を説明した。
【００２０】
図７はバグ報告受付機能１００５が利用者から受けるバグ報告の内容例を示している。ここではバグはプログラム７００１内の領域７００２で発生し、それはコード７００４，７００５，７００６が関連している様子を示している。また入力ダイアログ７００３にはそのバグの症状「無限ループ」と原因が「これらの相互関係が間違っていたのでループを終了できなかった」が入力されているところを示している。この報告は、バグ報告受付機能１００５が、後でコピーした先の利用者に警告を出すために、プログラム内の領域、バグが現れるコードのパターン、症状、原因を結びつけて格納する。
【００２１】
図８、図９、図１０はコードのパターンの例を表している。図８では箱８００２、８００４、８００６に現れる「＋」がその後に記述されたコード「命令文２；」、「命令文３；」、「命令文５」がこの順に現れないといけないことを示しており、箱８００３、８００５の「＊」は何が現れてもよいことを示しているものとする。
【００２２】
図９では箱９００６に「−」の記号が書かれており、これはそこに「命令文５；」が現れてはいけないことを示すものとする。
【００２３】
図１０ではプログラムの構造を意識したパターンの例をしめした。すなわち、１０００３で示されるｗｈｉｌｅループは「命令文２；」１０００２などと同列でなく、１段ネストが深くなった部分にあり、そこに１０００５の「命令文３」が無いといけないことを表している。
【００２４】
図８、図９、図１０でコードのパターンの実施例を示した。このほかにも正規表現でさらに複雑なプログラムパターンを表現するなど、必要に応じてパターンを工夫して導入することができる。
【００２５】
図１１はバグ報告を蓄積した表データ１１０００１を表している。この表のフィールドは「ファイル名」１１０００２、領域を表す「部分」１１０００３、「パターン」１１０００４、バグの「症状」１１０００５、そして「原因」１１０００６からなる。これらの情報を使ってバグ含有可能性判定機能１００７がコピーされた領域に対してバグ含有の可能性を調べ、もし含有している可能性があるなら利用者への警告機能１００８が「症状」フィールドや「原因」フィールドの文言を利用者に警告する。
【００２６】
次に図１２、図１３、図１４、図１５、図１６を使って、コピー履歴記録機能１００２、バグ報告受付機能１００５、コピー範囲同定機能１００６、バグ含有可能性判定機能１００７、利用者への警告機能１００８の処理手順を詳細に説明する。
【００２７】
図１２を使って、コピー履歴記録機能の処理フローを詳細に説明する。まず、処理１２００１で、コピー元のファイル名と領域ＩＤおよびそれが含むすべての領域ＩＤの集合を受け取る。次に、処理１２００２で、コピー先のファイル名と領域ＩＤを受け取る。次に、処理１２００３で、これらのファイル名と領域ＩＤの組がコピー履歴データになければ作成する。また領域ＩＤ間に「含む」の関係があれば、それも記録する。最後に、処理１２００４で、コピー元のファイル名と領域ＩＤの組からコピー先のファイル名と領域ＩＤの組へ「コピー」のリンクを張る。
【００２８】
図１３を使って、バグ報告受付機能の処理フローを詳細に説明する。まず、処理１３００１で、次の情報を編集機能経由で利用者から受け取る。
・ソースプログラム内の領域指定
・バグを構成する箇所指定
・バグの症状文
・バグの原因文
【００２９】
そして処理１３００２で、バグを構成する箇所指定からそのパターンを作り、以下を表に記録する。
・ソースファイル名
・コピーされた領域ＩＤ
・上記で作成したパターン
・バグの症状文
・バグの原因文
【００３０】
図１４を使って、コピー範囲同定機能の処理フローを詳細に説明する。まず、処理１４００１で、コピーされた範囲を格納する変数をｓｃｏｐｅとする。そして、処理１４００２で、ｓｃｏｐｅが変化しなくなるまで、処理１４００３以下の一連の処理を繰り返す。まず、処理１４００３で、ｓｃｏｐｅの中のコード領域とコピーリンクで結ばれているものをｓｃｏｐｅに加える。そのとき、リンクの方向はどちらでもよいを行なう。そして、処理１４００４で、ｓｃｏｐｅの中のコード領域を含むコード領域もｓｃｏｐｅに加える。このようにして次々にコピー関係にあるものを加えて行って変化しなくなった集合ｓｃｏｐｅがバグの警告が必要な範囲である。
【００３１】
図１５を使って、バグ含有可能性判定機能の処理フローを詳細に説明する。まず、処理１５００１で、ｒｅｇｉｏｎを判定しようとしているコード領域とする。そして、処理１５００２で、バグ報告表のパターンを調べ、そのパターンとｒｅｇｉｏｎがマッチするならバグ含有の可能性があると判断する。マッチするとは「＋」で指定してあるコードがパターン内に記載されている通りに存在し「−」で指定してあるコードが指定してある場所に存在しないことである。「＊」は任意のコードにマッチするとする。
【００３２】
図１６を使って、利用者への警告機能の処理フローを詳細に説明する。まず、処理１６００１で、対象の領域の利用者名をＵＳＥＲとする。次に、処理１６００２で、バグ報告表の「症状」と「原因」を取り出す。最後に、処理１６００３で、ＵＳＥＲに領域のファイル名、領域の位置、症状、原因を警告する。
【００３３】
以上により、コピーの履歴管理とバグ報告があった場合に、その箇所とコピー関係にある箇所を同定して、さらにそこに元のバグが含まれる可能性が高いかどうかを判定し、警告する装置の実施方法を述べた。
【００３４】
最後に図１７は本装置を実現する計算機システム例である。本システムの構成要素である図１の１００１を図１７の補助記憶装置１７００４に記憶しておき、またそれぞれの利用者の編集機能１０１０をそれぞれ実行時に記憶装置１７００３に読み込み、ＣＰＵ１７００２で実行し、キーボード、マウスなどの入力装置１７００４やディスプレイ、スピーカなどの出力装置１７００５を用いて採点者と対話を行うことにより本発明の装置を実現することができる。
【００３５】
また、図１の構成をすべて記憶装置１７００３に読み込み、ネットワークに接続された形態ではなく、スタンドアローンの形態で個人のコピー操作の履歴を管理することにより、バグのコピー範囲を管理することができる。また、別の実装の方法としては、図１の各部を直接ハードウェアで実現することもできる。
【実施例２】
【００３６】
実施例１ではプログラム内のコードのパターンを使ってバグの含有の可能性を調べる方式を述べたが、もっと単純にそれぞれコピー関係にあるコードの領域がバグ報告された部分とどれだけコードを共有するかを調べ、確率的にバグの判定を行う実施例を述べる。
【００３７】
それには実施例１において図１５のバグ含有可能性判定機能の処理において、パターンを使ってバグ含有の確からしさを判定するのではなく、バグ報告されたコード領域との共通のコードの比率により判定するようにすればよい。
【実施例３】
【００３８】
実施例１、実施例２ではバグ含有の可能性があるコピーされたコード領域を持つ利用者に自動的に警告が発せられるプログラム開発支援装置を述べたが、ここでは利用者が自ら、いままで報告されたバグを検索に行くことができるプログラム開発支援装置の実施例を述べる。
【００３９】
それには実施例１においてバグ報告受付機能１００５はバグの報告を受付、それをバグ１１００１に記録するだけにしておいて、利用者がバグの情報を求めたときだけ、その表の「ファイル名」フィールド１１００２、「部分」１１００３フィールドを参照し、利用者の指定したコード領域とコピー関係にあるものがあるかどうか、そして、「パターン」フィールド１１００４を参照して、指摘したコードがそのパターンに当てはまるかどうかを判定し、当てはまるなら「症状」フィールド１１００５、「原因」フィールド１１００６の情報を利用者に提示すればよい。
【実施例４】
【００４０】
実施例１ではネットワークに接続され、複数の利用者が概プログラム開発支援装置を利用している実施例を述べた。しかし、これはネットワークにより編集機能１０１０とコピー管理機能１００１を分けないで、１つの計算装置の中で実現しても、個人の利用者なのプログラム内、あるいはプログラム間でのコピー履歴を管理するという効果を得ることができる。したがって図１において、プログラム編集機能１０１０とコピー履歴管理機能１００１だけからなるプログラム開発支援装置を構成することもできる。
【産業上の利用可能性】
【００４１】
本発明によりバグのいろいろなソフトウエアへの伝播を防ぐことができ、品質の高いソフトウエアの開発・保守を行うことができる。
【図面の簡単な説明】
【００４２】
【図１】本発明の装置の構成図。
【図２】バグのあるプログラムの例１。
【図３】バグのあるプログラムの例２。
【図４】プログラム内の領域間のコピー履歴データ。
【図５】プログラム内の領域の例。
【図６】プログラム内の領域を保持するデータ構造例。
【図７】バグ報告における利用者の入力例。
【図８】領域内のパターン１。
【図９】領域内のパターン２。
【図１０】領域内のパターン３。
【図１１】バグ報告を蓄積する表データのデータ構造。
【図１２】コピー履歴記録機能の動作フロー図。
【図１３】バグ報告受付機能の動作フロー図。
【図１４】コピー範囲同定機能の動作フロー図。
【図１５】バグ含有可能性判定機能の動作フロー図。
【図１６】利用者への警告機能の動作フロー図。
【図１７】本発明を実装する計算機システム構成例。
【符号の説明】
【００４３】
１００１    コピー履歴管理装置
１００２    コピー履歴記録機能
１００３    バグ報告配信機能
１００４    コピー履歴データ
１００５    バグ報告受付機能
１００６    コピー範囲同定機能
１００７    バグ含有可能性判定機能
１００８    利用者への警告機能
１００９    プログラムの領域データ
１０１０    編集機能
１０１１    プログラム
１０１２    プログラム
１０１３    プログラム
１０１４    プログラム内領域
１０１５    プログラム内領域
１０１６    プログラム内領域
２００１    バグを含むプログラムの例１
３００１    バグを含むプログラムの例２
６００１    コード領域の計算機内での表現方法例
８００１    コードパターンの表現例１
９００２    コードパターンの表現例２
１０００３    コードパターンの表現例３
１１００１    バグ報告を蓄積した表データ
【図１】
2008269020.tif 000003
【図２】
2008269020.tif 000004
【図３】
2008269020.tif 000005
【図４】
2008269020.tif 000006
【図５】
2008269020.tif 000007
【図６】
2008269020.tif 000008
【図７】
2008269020.tif 000009
【図８】
2008269020.tif 000010
【図９】
2008269020.tif 000011
【図１０】
2008269020.tif 000012
【図１１】
2008269020.tif 000013
【図１２】
2008269020.tif 000014
【図１３】
2008269020.tif 000015
【図１４】
2008269020.tif 000016
【図１５】
2008269020.tif 000017
【図１６】
2008269020.tif 000018
【図１７】
2008269020.tif 000019