(57)【要約】【要  約】【課  題】  本発明は、入力されたソースプログラムの誤りを自動的に検出して修正するプログラム開発装置に関する。【解決手段】  ソースプログラムの作成において実際に入力を誤った実績のある文字列と、入力を誤る恐れのある文字列をバグパターンとして蓄積し、かつ、当該バグパターンに対応してその誤りを修正した文字列を修正プログラムとして蓄積してなるプログラムバグデータベースと、前記プログラムバグデータベースを参照し、入力されたソースプログラムの文字列を前記バグパターンの文字列と比較して、一致した文字列をバグとして抽出するバグチェック自動化機構と、前記プログラムバグデータベースを参照し、該バグチェック自動化機構でバグとして抽出した文字列を、対応する修正プログラムの文字列に置き換えて自動修正を行うバグ自動修正機構と、を有してなる。【選択図】      図１
2005284785.tif 000002
【特許請求の範囲】
【請求項１】
入力されたソースプログラムの文字列の誤りを自動的に検出して修正するプログラム開発装置であって、
前記ソースプログラムの作成において実際に入力を誤った実績のある文字列と、入力を誤る恐れのある文字列をバグパターンとして蓄積し、かつ、当該バグパターンに対応してその誤りを修正した文字列を修正プログラムとして蓄積してなるプログラムバグデータベースと、
前記プログラムバグデータベースを参照し、入力されたソースプログラムの文字列を前記バグパターンの文字列と比較して、一致した文字列をバグとして抽出するバグチェック自動化機構と、
前記プログラムバグデータベースを参照し、該バグチェック自動化機構でバグとして抽出した文字列を、対応する修正プログラムの文字列に置き換えて自動修正を行うバグ自動修正機構と、
を有してなることを特徴とするプログラム開発装置。
【請求項２】
前記バグパターンを、コモン変数および／またはグローバル変数に限定してプログラムバグデータベースへの蓄積を行い、入力されたソースプログラムの文字列のうち、コモン変数および／またはグローバル変数のバグを自動修正するようにしたことを特徴とする請求項1に記載のプログラム開発装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機分野に利用するプログラム開発装置に関する。
【背景技術】
【０００２】
一般にプログラム開発においては、まず、コンピュータにソースプログラムをタイプインする。そして、タイプインが完了すると、コンパイラを用いて、タイプインしたソースプログラムをコンパイルする。
【０００３】
この時、タイプインにミスがあれば、コンパイラでそのミスがバグとして検出され、コンパイル作業はエラーで終了する。この場合は、当然、次の実行段階には進むことができない。
【０００４】
そのため、タイプインしたソースプログラムの修正作業を行い、バグの箇所を人手で検出してタイプインのミスを修正することになる。
【０００５】
規模の大きいソースプログラムになると、このようなバグが数十件から数百件にもおよぶ場合があり、その修正は非常に多くの労力がかかる作業であった。
【０００６】
さらに、コンパイラでは検出できないバグもあり、そのようなバグは、コンパイル作業の次の段階となるテスト段階にそのまま持ち越される。テスト段階では、ソースプログラムのテスト実行を行い、残ったバグをとる作業を行う。しかしながら、このテスト段階でも、残ったバグをとる作業が十分でない場合があり、バグが取りきれずに、実際にオンラインにした後もトラブルが発生する事態となる。
【０００７】
上記のようなプログラム開発におけるデバッグを容易に行い得るようにすることを目的としたプログラム作成システムが、例えば特許文献１に開示されている。
【０００８】
特許文献１は、過去の修正事例を蓄積したデータベースを具備し、コンパイル時にエラーが発生した場合など必要が生じた場合に、プログラム作成者が該データベースに蓄積した過去の修正事例を参照できるようにするものである。
【特許文献１】特開平7-311679号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、コンパイル実行時やソースプログラムのテスト実行時に検出されたバグを人手で修正することは、多大の労力を要することになる。
【００１０】
特に、規模の大きいソースプログラムでは、ミスが数百件におよぶ場合もあり、その修正を１件ごとに人手で行うのは大変な作業である。また、人手で行う修正では、見落としの恐れもあり、再度の修正ミスを引き起こす場合もある。
【００１１】
そのため、従来は、バグを解消するためには、通常、何回かの修正作業を行う必要があり、また、万全の修正をしたつもりにもかかわらず、オンライン後にさらに新たなバグが発見される場合も多い。
【００１２】
ところで、特許文献１に開示のように、コンパイルエラー発生時に、過去の修正事例を蓄積したデータベースを参照することは、人手でデバッグを行う上での補助手段としては有用であるが、それでも、人手を要することに変わりはない。
【００１３】
本発明は、人手を介することなく、コンパイルの前にあらかじめプログラムエラーを自動的に発見して修正することを可能とするプログラム開発装置を提供するものである。
【課題を解決するための手段】
【００１４】
本発明は、入力されたソースプログラムの文字列の誤りを自動的に検出して修正するプログラム開発装置であって、前記ソースプログラムの作成において実際に入力を誤った実績のある文字列と、入力を誤る恐れのある文字列をバグパターンとして蓄積し、かつ、当該バグパターンに対応してその誤りを修正した文字列を修正プログラムとして蓄積してなるプログラムバグデータベースと、前記プログラムバグデータベースを参照し、入力されたソースプログラムの文字列を前記バグパターンの文字列と比較して、一致した文字列をバグとして抽出するバグチェック自動化機構と、前記プログラムバグデータベースを参照し、該バグチェック自動化機構でバグとして抽出した文字列を、対応する修正プログラムの文字列に置き換えて自動修正を行うバグ自動修正機構と、を有してなることを特徴とするプログラム開発装置によって上記課題を解決した。
【００１５】
また、本発明は、前記バグパターンを、コモン変数および／またはグローバル変数に限定してプログラムバグデータベースへの蓄積を行い、入力されたソースプログラムの文字列のうち、コモン変数および／またはグローバル変数のバグを自動修正することを好適とするものである。
【発明の効果】
【００１６】
本発明によって、コンパイルやテスト実行を行う前に、あらかじめソースプルグラムのミスを自動的に発見して修正できるようになり、プログラム開発者の作業負荷を大幅に削減することができた。
【００１７】
また、本発明によって、ソースプログラムのコンパイルやテスト実行を効率的に行うことが可能となり、その信頼性も向上することから、作成したソースプログラムの品質の向上と生産性向上を達成できる。
【００１８】
特に、本発明は、プログラム開発作業における初心者が間違いやすいミスを事前に防止することに大きな威力を発する。
【発明を実施するための最良の形態】
【００１９】
図１に基づき、本発明のプログラム開発装置の基本的な動作について説明する。
【００２０】
プログラム開発者がソースプログラムを完成した時点で、その元のソースプログラム１をプログラム開発装置２内のコンピュータ３に具備したバグチェック自動化機構４に読み込ませる。
【００２１】
バグチェック自動化機構４では、後述するプログラムバグデータベース６を用いて、入力された元のソースプログラム１の文字列をチェックし、バグのある箇所が発見されたら、その箇所をバグとして抽出する。具体的には、入力されたソースプログラムの文字列をプログラムバグデータベース６に登録されたバグパターンの文字列と比較して、一致した文字列をバグとして抽出するのである。
【００２２】
次に、バグチェック自動化機構４でバグのある箇所が発見されたら、バグ自動修正機構５を呼び出す。
【００２３】
バグ自動修正機構５では、バグチェック自動化機構４でバグとして抽出した文字列を、プログラムバグデータベース６中の対応する修正プログラムの文字列に置き換えて自動修正を行う。なお、自動修正した箇所にはマークをつけておき、人手でも容易にチェックできるようにしておくことを好適とする。
【００２４】
そして、修正が完了すると、その自動修正後のソースプログラム７を出力し、一連の処理を完了する。
【００２５】
次に、プログラムバグデータベース６のデータベース構造の詳細について説明する。
【００２６】
プログラムバグデータベースには、これまでのソースプログラムの作成において実際に入力を誤った実績のある文字列や、入力を誤る恐れのある文字列をバグパターンとして蓄積しておく。さらに、当該バグパターンに対応してその誤りを正しく修正した文字列が修正プログラムとして蓄積する。
【００２７】
このような蓄積は、ソースプログラムをコンパイルした際や、テスト実行時にバグが発見されるごとに行うようにする。また、コンパイル前の人手によるチェック段階で発見したバグや、経験上から誤る恐れがあると思われる文字列のバグも登録して蓄積する。
【００２８】
このようにしてプログラムバグデータベースのデータを蓄積することで、精度の高いバグの検出が行えるようになる。
【００２９】
図２に、プログラムバグデータベースに登録されたバグパターンとその対応する修正プログラムを例示する。
【００３０】
例えば、No.１、２では、約束を決めている変数の文字列のバグパターンを登録している。また、No.３では、システム共通定数のバグパターンを登録している。
【００３１】
このように登録するバグを蓄積して、徐々にデータベースを充実していき、最終的には数千件程度の登録を行うようにするのである。
【００３２】
なお、このバグパターンを、コモン変数および／またはグローバル変数に限定してプログラムバグデータベースへの蓄積を行い、入力されたソースプログラムの文字列のうち、コモン変数および／またはグローバル変数のバグを自動修正することに限定することを好適とする。
【００３３】
コモン変数やグローバル変数は、プログラム開発の初心者が間違いやすい箇所であり、特にバグが発生しやすい。そのため、上記のように限定することで、本発明のプログラム開発装置を必要最小限の機能として制限し、初心者にとって有効であり、かつコンパクトな装置とすることができるのである。
【００３４】
特に、コモン変数やグローバル変数に間違いがあり、別のローカル変数になっていても、コンパイルを通ってしまう場合が多く、本発明は、その点からも有効である。
【実施例】
【００３５】
プログラム開発者がソースプログラムを完成したが、そのソースプログラムの一部に下記(1)のバグがあった場合について、本発明のプログラム開発装置で行う一連の動作について説明する。
(1) プログラムバグの事例
fp ＝ fopen（“dataXYZ”，“ｒ”）
ここで、上記の“dataXYZ”はプログラム実行段階のバグであり、ファイル名の誤りである。
【００３６】
なお、このバグは、プログラムバグデータベースに既に登録されており、その対応する修正プログラムとして“data001”が登録されているものとする。
【００３７】
本発明のプログラム開発装置では、ソースプログラムが入力されると、プログラムバグデータベースから上記のバグを自動的に検出し、その対応する修正プログラムを参照して下記(2)のようにソースプログラムの該当箇所を修正し、正しいファイル名に置き換え、更に、自動修正したことをコメントとしてマークする。
(2) プログラム開発装置による自動修正結果
fp ＝ fopen（“data001”，“ｒ”）    マーク：／＊  自動修正  ＊／
本発明では、このようなファイル名のミスであってもバグとして検出できる。
【００３８】
ところが、上記のようなバグは、単なるファイル名の誤りであり、通常行うコンパイルでは、コンパイルエラーとして検出されず、そのままコンパイラが通ってしまうことになる。そのため、テスト段階であらためて見つけ出すことが必要となり、本発明のプログラム開発装置を適用しない従来の方法では、非常に多くのデバッグ工数がかかることになる。
【図面の簡単な説明】
【００３９】
【図１】本発明のプログラム開発装置の処理フローを示す模式図である。
【図２】本発明に適用するプログラムバグデータベース構造を例示する模式図である。
【符号の説明】
【００４０】
１    （元の）ソースプログラム
２    プログラム開発装置
３    コンピュータ
４    バグチェック自動化機構
５    バグ自動修正機構
６    プログラムバグデータベース
７    （自動修正後の）ソースプログラム
【図１】
2005284785.tif 000003
【図２】
2005284785.tif 000004