JP2005284785A - プログラム開発装置 - Google Patents
プログラム開発装置 Download PDFInfo
- Publication number
- JP2005284785A JP2005284785A JP2004098658A JP2004098658A JP2005284785A JP 2005284785 A JP2005284785 A JP 2005284785A JP 2004098658 A JP2004098658 A JP 2004098658A JP 2004098658 A JP2004098658 A JP 2004098658A JP 2005284785 A JP2005284785 A JP 2005284785A
- Authority
- JP
- Japan
- Prior art keywords
- bug
- program
- character string
- character strings
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
【要 約】
【課 題】 本発明は、入力されたソースプログラムの誤りを自動的に検出して修正するプログラム開発装置に関する。
【解決手段】 ソースプログラムの作成において実際に入力を誤った実績のある文字列と、入力を誤る恐れのある文字列をバグパターンとして蓄積し、かつ、当該バグパターンに対応してその誤りを修正した文字列を修正プログラムとして蓄積してなるプログラムバグデータベースと、前記プログラムバグデータベースを参照し、入力されたソースプログラムの文字列を前記バグパターンの文字列と比較して、一致した文字列をバグとして抽出するバグチェック自動化機構と、前記プログラムバグデータベースを参照し、該バグチェック自動化機構でバグとして抽出した文字列を、対応する修正プログラムの文字列に置き換えて自動修正を行うバグ自動修正機構と、を有してなる。
【選択図】 図1
【課 題】 本発明は、入力されたソースプログラムの誤りを自動的に検出して修正するプログラム開発装置に関する。
【解決手段】 ソースプログラムの作成において実際に入力を誤った実績のある文字列と、入力を誤る恐れのある文字列をバグパターンとして蓄積し、かつ、当該バグパターンに対応してその誤りを修正した文字列を修正プログラムとして蓄積してなるプログラムバグデータベースと、前記プログラムバグデータベースを参照し、入力されたソースプログラムの文字列を前記バグパターンの文字列と比較して、一致した文字列をバグとして抽出するバグチェック自動化機構と、前記プログラムバグデータベースを参照し、該バグチェック自動化機構でバグとして抽出した文字列を、対応する修正プログラムの文字列に置き換えて自動修正を行うバグ自動修正機構と、を有してなる。
【選択図】 図1
Description
本発明は、計算機分野に利用するプログラム開発装置に関する。
一般にプログラム開発においては、まず、コンピュータにソースプログラムをタイプインする。そして、タイプインが完了すると、コンパイラを用いて、タイプインしたソースプログラムをコンパイルする。
この時、タイプインにミスがあれば、コンパイラでそのミスがバグとして検出され、コンパイル作業はエラーで終了する。この場合は、当然、次の実行段階には進むことができない。
そのため、タイプインしたソースプログラムの修正作業を行い、バグの箇所を人手で検出してタイプインのミスを修正することになる。
規模の大きいソースプログラムになると、このようなバグが数十件から数百件にもおよぶ場合があり、その修正は非常に多くの労力がかかる作業であった。
さらに、コンパイラでは検出できないバグもあり、そのようなバグは、コンパイル作業の次の段階となるテスト段階にそのまま持ち越される。テスト段階では、ソースプログラムのテスト実行を行い、残ったバグをとる作業を行う。しかしながら、このテスト段階でも、残ったバグをとる作業が十分でない場合があり、バグが取りきれずに、実際にオンラインにした後もトラブルが発生する事態となる。
上記のようなプログラム開発におけるデバッグを容易に行い得るようにすることを目的としたプログラム作成システムが、例えば特許文献1に開示されている。
特許文献1は、過去の修正事例を蓄積したデータベースを具備し、コンパイル時にエラーが発生した場合など必要が生じた場合に、プログラム作成者が該データベースに蓄積した過去の修正事例を参照できるようにするものである。
特開平7-311679号公報
しかしながら、コンパイル実行時やソースプログラムのテスト実行時に検出されたバグを人手で修正することは、多大の労力を要することになる。
特に、規模の大きいソースプログラムでは、ミスが数百件におよぶ場合もあり、その修正を1件ごとに人手で行うのは大変な作業である。また、人手で行う修正では、見落としの恐れもあり、再度の修正ミスを引き起こす場合もある。
そのため、従来は、バグを解消するためには、通常、何回かの修正作業を行う必要があり、また、万全の修正をしたつもりにもかかわらず、オンライン後にさらに新たなバグが発見される場合も多い。
ところで、特許文献1に開示のように、コンパイルエラー発生時に、過去の修正事例を蓄積したデータベースを参照することは、人手でデバッグを行う上での補助手段としては有用であるが、それでも、人手を要することに変わりはない。
本発明は、人手を介することなく、コンパイルの前にあらかじめプログラムエラーを自動的に発見して修正することを可能とするプログラム開発装置を提供するものである。
本発明は、入力されたソースプログラムの文字列の誤りを自動的に検出して修正するプログラム開発装置であって、前記ソースプログラムの作成において実際に入力を誤った実績のある文字列と、入力を誤る恐れのある文字列をバグパターンとして蓄積し、かつ、当該バグパターンに対応してその誤りを修正した文字列を修正プログラムとして蓄積してなるプログラムバグデータベースと、前記プログラムバグデータベースを参照し、入力されたソースプログラムの文字列を前記バグパターンの文字列と比較して、一致した文字列をバグとして抽出するバグチェック自動化機構と、前記プログラムバグデータベースを参照し、該バグチェック自動化機構でバグとして抽出した文字列を、対応する修正プログラムの文字列に置き換えて自動修正を行うバグ自動修正機構と、を有してなることを特徴とするプログラム開発装置によって上記課題を解決した。
また、本発明は、前記バグパターンを、コモン変数および/またはグローバル変数に限定してプログラムバグデータベースへの蓄積を行い、入力されたソースプログラムの文字列のうち、コモン変数および/またはグローバル変数のバグを自動修正することを好適とするものである。
本発明によって、コンパイルやテスト実行を行う前に、あらかじめソースプルグラムのミスを自動的に発見して修正できるようになり、プログラム開発者の作業負荷を大幅に削減することができた。
また、本発明によって、ソースプログラムのコンパイルやテスト実行を効率的に行うことが可能となり、その信頼性も向上することから、作成したソースプログラムの品質の向上と生産性向上を達成できる。
特に、本発明は、プログラム開発作業における初心者が間違いやすいミスを事前に防止することに大きな威力を発する。
図1に基づき、本発明のプログラム開発装置の基本的な動作について説明する。
プログラム開発者がソースプログラムを完成した時点で、その元のソースプログラム1をプログラム開発装置2内のコンピュータ3に具備したバグチェック自動化機構4に読み込ませる。
バグチェック自動化機構4では、後述するプログラムバグデータベース6を用いて、入力された元のソースプログラム1の文字列をチェックし、バグのある箇所が発見されたら、その箇所をバグとして抽出する。具体的には、入力されたソースプログラムの文字列をプログラムバグデータベース6に登録されたバグパターンの文字列と比較して、一致した文字列をバグとして抽出するのである。
次に、バグチェック自動化機構4でバグのある箇所が発見されたら、バグ自動修正機構5を呼び出す。
バグ自動修正機構5では、バグチェック自動化機構4でバグとして抽出した文字列を、プログラムバグデータベース6中の対応する修正プログラムの文字列に置き換えて自動修正を行う。なお、自動修正した箇所にはマークをつけておき、人手でも容易にチェックできるようにしておくことを好適とする。
そして、修正が完了すると、その自動修正後のソースプログラム7を出力し、一連の処理を完了する。
次に、プログラムバグデータベース6のデータベース構造の詳細について説明する。
プログラムバグデータベースには、これまでのソースプログラムの作成において実際に入力を誤った実績のある文字列や、入力を誤る恐れのある文字列をバグパターンとして蓄積しておく。さらに、当該バグパターンに対応してその誤りを正しく修正した文字列が修正プログラムとして蓄積する。
このような蓄積は、ソースプログラムをコンパイルした際や、テスト実行時にバグが発見されるごとに行うようにする。また、コンパイル前の人手によるチェック段階で発見したバグや、経験上から誤る恐れがあると思われる文字列のバグも登録して蓄積する。
このようにしてプログラムバグデータベースのデータを蓄積することで、精度の高いバグの検出が行えるようになる。
図2に、プログラムバグデータベースに登録されたバグパターンとその対応する修正プログラムを例示する。
例えば、No.1、2では、約束を決めている変数の文字列のバグパターンを登録している。また、No.3では、システム共通定数のバグパターンを登録している。
このように登録するバグを蓄積して、徐々にデータベースを充実していき、最終的には数千件程度の登録を行うようにするのである。
なお、このバグパターンを、コモン変数および/またはグローバル変数に限定してプログラムバグデータベースへの蓄積を行い、入力されたソースプログラムの文字列のうち、コモン変数および/またはグローバル変数のバグを自動修正することに限定することを好適とする。
コモン変数やグローバル変数は、プログラム開発の初心者が間違いやすい箇所であり、特にバグが発生しやすい。そのため、上記のように限定することで、本発明のプログラム開発装置を必要最小限の機能として制限し、初心者にとって有効であり、かつコンパクトな装置とすることができるのである。
特に、コモン変数やグローバル変数に間違いがあり、別のローカル変数になっていても、コンパイルを通ってしまう場合が多く、本発明は、その点からも有効である。
プログラム開発者がソースプログラムを完成したが、そのソースプログラムの一部に下記(1)のバグがあった場合について、本発明のプログラム開発装置で行う一連の動作について説明する。
(1) プログラムバグの事例
fp = fopen(“dataXYZ”,“r”)
ここで、上記の“dataXYZ”はプログラム実行段階のバグであり、ファイル名の誤りである。
(1) プログラムバグの事例
fp = fopen(“dataXYZ”,“r”)
ここで、上記の“dataXYZ”はプログラム実行段階のバグであり、ファイル名の誤りである。
なお、このバグは、プログラムバグデータベースに既に登録されており、その対応する修正プログラムとして“data001”が登録されているものとする。
本発明のプログラム開発装置では、ソースプログラムが入力されると、プログラムバグデータベースから上記のバグを自動的に検出し、その対応する修正プログラムを参照して下記(2)のようにソースプログラムの該当箇所を修正し、正しいファイル名に置き換え、更に、自動修正したことをコメントとしてマークする。
(2) プログラム開発装置による自動修正結果
fp = fopen(“data001”,“r”) マーク:/* 自動修正 */
本発明では、このようなファイル名のミスであってもバグとして検出できる。
(2) プログラム開発装置による自動修正結果
fp = fopen(“data001”,“r”) マーク:/* 自動修正 */
本発明では、このようなファイル名のミスであってもバグとして検出できる。
ところが、上記のようなバグは、単なるファイル名の誤りであり、通常行うコンパイルでは、コンパイルエラーとして検出されず、そのままコンパイラが通ってしまうことになる。そのため、テスト段階であらためて見つけ出すことが必要となり、本発明のプログラム開発装置を適用しない従来の方法では、非常に多くのデバッグ工数がかかることになる。
1 (元の)ソースプログラム
2 プログラム開発装置
3 コンピュータ
4 バグチェック自動化機構
5 バグ自動修正機構
6 プログラムバグデータベース
7 (自動修正後の)ソースプログラム
2 プログラム開発装置
3 コンピュータ
4 バグチェック自動化機構
5 バグ自動修正機構
6 プログラムバグデータベース
7 (自動修正後の)ソースプログラム
Claims (2)
- 入力されたソースプログラムの文字列の誤りを自動的に検出して修正するプログラム開発装置であって、
前記ソースプログラムの作成において実際に入力を誤った実績のある文字列と、入力を誤る恐れのある文字列をバグパターンとして蓄積し、かつ、当該バグパターンに対応してその誤りを修正した文字列を修正プログラムとして蓄積してなるプログラムバグデータベースと、
前記プログラムバグデータベースを参照し、入力されたソースプログラムの文字列を前記バグパターンの文字列と比較して、一致した文字列をバグとして抽出するバグチェック自動化機構と、
前記プログラムバグデータベースを参照し、該バグチェック自動化機構でバグとして抽出した文字列を、対応する修正プログラムの文字列に置き換えて自動修正を行うバグ自動修正機構と、
を有してなることを特徴とするプログラム開発装置。 - 前記バグパターンを、コモン変数および/またはグローバル変数に限定してプログラムバグデータベースへの蓄積を行い、入力されたソースプログラムの文字列のうち、コモン変数および/またはグローバル変数のバグを自動修正するようにしたことを特徴とする請求項1に記載のプログラム開発装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004098658A JP2005284785A (ja) | 2004-03-30 | 2004-03-30 | プログラム開発装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004098658A JP2005284785A (ja) | 2004-03-30 | 2004-03-30 | プログラム開発装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005284785A true JP2005284785A (ja) | 2005-10-13 |
Family
ID=35183085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004098658A Pending JP2005284785A (ja) | 2004-03-30 | 2004-03-30 | プログラム開発装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005284785A (ja) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007133622A (ja) * | 2005-11-10 | 2007-05-31 | Hitachi Ltd | エンジニアリングツール及びプログラム変換方法 |
JP2008027172A (ja) * | 2006-07-20 | 2008-02-07 | Kyocera Mita Corp | 画像形成装置 |
JP2008250914A (ja) * | 2007-03-30 | 2008-10-16 | Canon Software Inc | プログラム修正装置及び方法、並びにプログラム |
JP2011013887A (ja) * | 2009-07-01 | 2011-01-20 | Fuji Electric Systems Co Ltd | ソフトウェア開発支援装置 |
JP2011070254A (ja) * | 2009-09-24 | 2011-04-07 | Fujitsu Toshiba Mobile Communications Ltd | ソフトウェアミス検出ツール |
US8589889B2 (en) | 2006-12-01 | 2013-11-19 | Samsung Electronics Co., Ltd. | Apparatus and method of detecting errors in embedded software |
JP2015084246A (ja) * | 2014-12-24 | 2015-04-30 | 富士電機株式会社 | ソフトウェア開発支援装置 |
JP2015197902A (ja) * | 2014-04-03 | 2015-11-09 | 日本電信電話株式会社 | オンラインビルドシステム、オンラインビルド方法およびオンラインビルドプログラム |
-
2004
- 2004-03-30 JP JP2004098658A patent/JP2005284785A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007133622A (ja) * | 2005-11-10 | 2007-05-31 | Hitachi Ltd | エンジニアリングツール及びプログラム変換方法 |
JP2008027172A (ja) * | 2006-07-20 | 2008-02-07 | Kyocera Mita Corp | 画像形成装置 |
US8589889B2 (en) | 2006-12-01 | 2013-11-19 | Samsung Electronics Co., Ltd. | Apparatus and method of detecting errors in embedded software |
JP2008250914A (ja) * | 2007-03-30 | 2008-10-16 | Canon Software Inc | プログラム修正装置及び方法、並びにプログラム |
JP2011013887A (ja) * | 2009-07-01 | 2011-01-20 | Fuji Electric Systems Co Ltd | ソフトウェア開発支援装置 |
JP2011070254A (ja) * | 2009-09-24 | 2011-04-07 | Fujitsu Toshiba Mobile Communications Ltd | ソフトウェアミス検出ツール |
JP2015197902A (ja) * | 2014-04-03 | 2015-11-09 | 日本電信電話株式会社 | オンラインビルドシステム、オンラインビルド方法およびオンラインビルドプログラム |
JP2015084246A (ja) * | 2014-12-24 | 2015-04-30 | 富士電機株式会社 | ソフトウェア開発支援装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8230397B2 (en) | Automated solution that detects configuration problems in an eclipse-based software application | |
US20060107121A1 (en) | Method of speeding up regression testing using prior known failures to filter current new failures when compared to known good results | |
JPH08272648A (ja) | デバッグコマンドファイルを自動的に生成する方法、およびデバッグコマンドファイルにおいてブレークポイントを自動的に再生成する装置 | |
JP2005284785A (ja) | プログラム開発装置 | |
CN107643905B (zh) | 一种面向软件版本一致性缺陷的自动修复方法 | |
JP7384054B2 (ja) | 自動化されたソフトウェアプログラム修復 | |
JP2020129372A (ja) | 自動化されたソフトウェアプログラム修復 | |
CN109101355B (zh) | 一种提取错误现场特征测试激励的处理器调试方法 | |
JP4874277B2 (ja) | 自動テスト実行システム | |
JP2014126900A (ja) | プログラム解析装置、プログラム解析方法、及び、プログラム解析プログラム | |
JP2004326337A (ja) | コード解析プログラム、コード解析自動化プログラム及び自動コード解析システム | |
JP4501978B2 (ja) | データ処理装置、システム、プログラム、及び、方法 | |
JP2002342129A (ja) | コーディングチェック方式 | |
Mesbah et al. | Analyzing and repairing compilation errors | |
CN101599041A (zh) | 自动修正错误的粘贴方法及其设备 | |
JP5293563B2 (ja) | 言語変換装置、言語変換方法およびプログラム | |
CN109308183A (zh) | 一种面向vliw芯片可执行代码的逆向工具方法 | |
JP2013008304A (ja) | プログラム分析装置、プログラム分析方法、及びプログラム | |
JP2005141406A (ja) | コンパイラ検査システムおよび同プログラム | |
JP5343840B2 (ja) | プログラムの解析装置及び解析方法 | |
JP2011053948A (ja) | コンパイルエラー処理システム及びプログラム | |
Telang et al. | Effective Source Code Analysis with Minimization | |
JP2009104489A (ja) | コードクローンのテスト装置および方法 | |
JP2021124852A (ja) | 修正パターンのデータ駆動型合成 | |
JP2022022115A (ja) | 自動ソフトウェアプログラム修復 |