(57)【要約】【課題】本発明は、ユーザが作成したプログラムをテストして修正を行い、その修正の妥当性をチェックすることができるプログラム修正装置を提供する。【解決手段】プログラムの規約や修正方法を予めＤＢとして記憶する。ユーザにより設定された条件でプログラムをテスト手段に送信してテストを行ってテスト結果を記憶し、プログラムから規約違反箇所を検出して規約違反箇所情報として登録する。そして、検出された違反箇所を、優先度に応じて選択された修正方法に基づいて修正し、修正されたプログラムを再びテスト手段に送信してテストを行ってテスト結果を記憶する。そして、プログラムの修正前後のテスト結果を比較して一致しない場合、不適切な修正箇所を調査して他の修正方法により再修正し、その結果を表示する。【選択図】図１０
2008250914.tif 000002
【特許請求の範囲】
【請求項１】
ユーザが作成したプログラムをテスト可能なテスト手段と、作成したプログラムを修正する修正手段とを備えるプログラム修正装置において、
前記プログラムの規約と修正方法を記憶するプログラム規約記憶手段と、
前記プログラム及びテスト結果を記憶する第１のテスト結果記憶手段と、
前記プログラムから前記規約に違反する箇所を検出して規約違反箇所情報として登録する規約違反管理手段と、
前記検出された違反箇所を前記修正方法に基づいて修正する第１のプログラム修正手段と、
前記修正されたプログラムをテストしてテスト結果を記憶する第２のテスト結果記憶手段と、
前記第１のテスト結果記憶手段で記憶されたテスト結果と前記第２のテスト結果記憶手段で記憶されたテスト結果を比較して一致しない場合、修正箇所を再修正する第２のプログラム修正手段とを備えることを特徴とするプログラム修正装置。
【請求項２】
前記第２のプログラム修正手段は、前記プログラム規約記憶手段に記憶された複数の修正方法から優先度に応じて修正方法を選択し、当該修正方法に基づいて修正箇所を再修正することを特徴とする請求項１記載のプログラム修正装置。
【請求項３】
前記第２のプログラム修正手段は、前記検出された違反個所が複数ある場合、検出された違反ごとに修正することを特徴とする請求項１又は２記載のプログラム修正装置。
【請求項４】
前記テスト手段は、前記プログラム又は前記修正されたプログラムから実行ファイルを作成し、当該実行ファイルの作成が成功したかを判別することを特徴とする請求項１乃至３のいずれか１項に記載のプログラム修正装置。
【請求項５】
前記第１及び前記第２のプログラム修正手段は、前記修正を行った際に、当該修正箇所にタグを埋め込むことを特徴とする請求項１乃至４のいずれか１項の記載のプログラム修正装置。
【請求項６】
前記規約違反個所情報は前記規約に違反する箇所の行番号情報を備え、
前記第１及び前記第２のプログラム修正手段は、修正したプログラムへの挿入行数を記憶し、前記修正プログラム内の次の違反箇所を修正する際に、前記規約違反箇所情報の行番号情報に前記挿入行数を加えることを特徴とする請求項１乃至５のいずれか１項の記載のプログラム修正装置。
【請求項７】
前記プログラムを修正した内容をレポートファイルとして作成するレポート作成手段をさらに備えることを特徴とする請求項１乃至６のいずれか１項に記載のプログラム修正装置。
【請求項８】
ユーザが作成したプログラムを修正するプログラム修正方法において、
前記プログラムの規約と修正方法を記憶手段に記憶するプログラム規約記憶工程と、
前記プログラムをテスト可能なテスト手段に送信し、返信されたテスト結果を記憶する第１のテスト結果記憶工程と、
前記プログラムから前記規約に違反する箇所を検出して規約違反箇所情報として登録する規約違反管理工程と、
前記検出された違反箇所を前記修正方法に基づいて修正する第１のプログラム修正工程と、
前記修正されたプログラムをテスト可能なテスト手段に送信し、返信されたテスト結果を記憶する第２のテスト結果記憶工程と、
前記第１のテスト結果記憶工程で記憶されたテスト結果と前記第２のテスト結果記憶工程で記憶されたテスト結果を比較して一致しない場合、修正箇所を再修正する第２のプログラム修正工程とを備えることを特徴とするプログラム修正方法。
【請求項９】
請求項８記載のプログラム修正方法をコンピュータに実行させるためのコンピュータに読み取り可能なプログラム。
【請求項１０】
請求項１乃至７のいずれか１項に記載のプログラム修正装置にネットワークを介して接続された端末を備えるプログラム修正システムにおいて、
前記端末は、プログラムの解析又は修正に必要な設定情報を入力させて前記プログラム修正装置に送る入力手段と、前記プログラム修正装置からの前記プログラムの修正状況及び結果を示す情報を出力する出力手段とを備えることを特徴とするプログラム修正システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム修正装置及び方法、並びにプログラムに関し、特に、プログラムを静的又は動的に解析し、規約違反箇所を指摘して自動的に修正するプログラム修正装置及び方法、並びにプログラムに関する。
【背景技術】
【０００２】
近年のソフトウェア規模の拡大、複雑化に伴い、ソフトウェアの生産性向上が課題となっている。その一環としてコーディング規約を設定し、プログラムの品質を向上させる試みが広く行われている。
【０００３】
また、作られたプログラムが規約に準拠しているかのチェックのために、ソースコードレビューや静的解析ソフト（市販の静的解析ツールの中には、ＡＮＳＩ−Ｃ準拠以外に、ルールを独自に設定可能なものもある）の導入などが行われている。
【０００４】
しかしながら、ソースコードレビューは、人の目によるチェックであるため、規約違反箇所の指摘漏れが起こる可能性がある。一方、静的解析ソフト等の静的解析ツールは、規約違反箇所を指摘してくれるが、修正はユーザ自身が行う必要がある。これらの問題点を解決すべく、コーディング規約を定義した上で、作成されたプログラムに対して静的・動的な解析を行い、規約違反の箇所があれば、エラーメッセージを出し、修正推奨パターンを画面表示し、ユーザに選択させ、それに従ってプログラムを修正する技術が提案されている（例えば、特許文献１参照）。
【特許文献１】特開２００６−２３６０４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来技術では、ユーザの選択に従ってシステムが自動的にプログラムを修正するが、その修正の妥当性をチェックしていないという問題がある。
【０００６】
本発明は、上記問題に鑑みて成されたものであり、ユーザが作成したプログラムをテストして修正を行い、その修正の妥当性をチェックすることができるプログラム修正装置及び方法、並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、請求項１記載のプログラム修正装置は、ユーザが作成したプログラムをテスト可能なテスト手段と、作成したプログラムを修正する修正手段とを備えるプログラム修正装置において、前記プログラムの規約と修正方法を記憶するプログラム規約記憶手段と、前記プログラム及びテスト結果を記憶する第１のテスト結果記憶手段と、前記プログラムから前記規約に違反する箇所を検出して規約違反箇所情報として登録する規約違反管理手段と、前記検出された違反箇所を前記修正方法に基づいて修正する第１のプログラム修正手段と、前記修正されたプログラムをテストしてテスト結果を記憶する第２のテスト結果記憶手段と、前記第１のテスト結果記憶手段で記憶されたテスト結果と前記第２のテスト結果記憶手段で記憶されたテスト結果を比較して一致しない場合、修正箇所を再修正する第２のプログラム修正手段とを備えることを特徴とする。
【０００８】
上記目的を達成するために、請求項８記載のプログラム修正方法は、ユーザが作成したプログラムを修正するプログラム修正方法において、前記プログラムの規約と修正方法を記憶手段に記憶するプログラム規約記憶工程と、前記プログラムをテスト可能なテスト手段に送信し、返信されたテスト結果を記憶する第１のテスト結果記憶工程と、前記プログラムから前記規約に違反する箇所を検出して規約違反箇所情報として登録する規約違反管理工程と、前記検出された違反箇所を前記修正方法に基づいて修正する第１のプログラム修正工程と、前記修正されたプログラムをテスト可能なテスト手段に送信し、返信されたテスト結果を記憶する第２のテスト結果記憶工程と、前記第１のテスト結果記憶工程で記憶されたテスト結果と前記第２のテスト結果記憶工程で記憶されたテスト結果を比較して一致しない場合、修正箇所を再修正する第２のプログラム修正工程とを備えることを特徴とする。
【０００９】
上記目的を達成するために、請求項１０記載のプログラム修正システムは、請求項１乃至７のいずれか１項に記載のプログラム修正装置にネットワークを介して接続された端末を備えるプログラム修正システムにおいて、前記端末は、プログラムの解析又は修正に必要な設定情報を入力させて前記プログラム修正装置に送る入力手段と、前記プログラム修正装置からの前記プログラムの修正状況及び結果を示す情報を出力する出力手段とを備えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、ユーザが作成したプログラムをテストして修正を行い、その修正の妥当性をチェックすることができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態を図面を参照して説明する。
【００１２】
図１は、本発明の実施の形態に係るプログラム修正システムの構成例を示すブロック図である。
【００１３】
図１において、本プログラム修正システムは、パーソナルコンピュータ等から成る端末１と、サーバコンピュータ等から成るサーバ装置３と、これらを互いに接続する通信ネットワーク２とで構成されている。
【００１４】
端末１は、図８に示すようなＧＵＩ（Graphical User Interface）やＣＵＩ（Character-based User Interface）を提供し、修正を行うプログラムのファイル名、規約名や規約レベル、修正の妥当性を検証するために行うテストケース等の入力又は選択をユーザから受けつける。また、端末１は、図１４に示すように、プログラムの修正結果として、検出した規約違反とその内容、規約違反箇所、行われた修正内容について画面表示する。
【００１５】
通信ネットワーク２は、インターネットやＬＡＮ（Local Area Network）等から成り、端末１とサーバ装置３との間を接続するデータ通信網である。
【００１６】
サーバ装置３は、プログラム解析装置として機能し、通信ネットワーク２を介して端末１から受信した規約レベルやテストケース等に基づいて、後述するプログラム解析処理や修正を行い、その修正結果を端末１に送信する。
【００１７】
図２は、図１のサーバ装置３の内部構成を示すブロック図である。
【００１８】
図２において、サーバ装置３は、ＣＰＵ３１と、ＲＡＭ３２と、ＲＯＭ３３と、ハードディスク３４と、入力装置３５と、表示装置３６と、印刷装置３７と、通信インターフェース３８とを備える。
【００１９】
ＲＯＭ３３又はハードディスク３４は、ＣＰＵ３１の制御プログラムであるＢＩＯＳ（Basic Input/Output System）やオペレーティングシステム（以下、「ＯＳ」という。）等を記憶するものである。ＲＡＭ３２は、ＣＰＵ３１の主メモリ、ワークエリア等として機能するものである。
【００２０】
ＣＰＵ３１は、システムバス３９に接続された各種デバイスとのアクセスを総括的に制御すると共に、後述する処理の実行に際して必要なプログラム等をＲＡＭ３２にロードし、当該プログラム等を実行することで各種動作を実現するものである。
【００２１】
入力装置３５は、キーボードやポインティングデバイス等で構成されるものである。表示装置３６は、ＬＣＤ（Liquid Crystal Display）等で構成されるものである。印刷装置３７は、レーザプリンタ等で構成されるものである。通信インターフェース３８は、所定のプロトコルにより通信ネットワーク２に接続すると共に、外部装置との通信を制御するものである。
【００２２】
ハードディスク３４は、規約ＤＢ４、タグＤＢ５、修正内容ＤＢ６、テストケースＤＢ７、規約違反管理ＤＢ８、及びテストマクロＤＢ９等のプログラム解析・修正用の各種データベース（ＤＢ）が格納された記憶装置である。テストマクロＤＢ９は、解析対象のプログラムのテストマクロ及びシステム全体のテストマクロなどが集められたＤＢで、テストケースＤＢ７のテスト内容に従ってテストマクロを提供する。規約ＤＢ４、タブＤＢ５、修正内容ＤＢ６、テストケースＤＢ７、規約違反管理ＤＢ８の詳細については後述する。
【００２３】
端末１は、サーバ装置３と同様に、上記構成を有するものであるが、ハードディスクには各種データベースが格納されていないものとする。
【００２４】
図３は、図２における規約ＤＢ４の構成例を示す図である。
【００２５】
図３において、規約ＤＢ４は、開発するプログラムの品質を一定に保つために規約として定められた条項がまとめられたデータベース（ＤＢ）であり、規約番号４１１、規約違反内容４１２、規約レベル４１３、及び修正番号４１４の項目からなる。規約ＤＢ４は、プログラムの開示範囲及び開発言語に対応した複数の規約テーブル４０で構成される。
【００２６】
規約番号４１１は、複数の各規約違反内容に割り当てられた識別用の数値である。規約違反内容４１２は、プログラムの品質を一定に保つために設定された各種規約違反の内容である。規約レベル４１３は、規約ＤＢ４内の各規約違反内容についての重要度を表すレベルであり、レベルが高い規約ほど重要度が高い。そのため、図８に示すプログラム自動修正システム入力画面１０上で、プログラムの修正に使用する規約レベルをユーザに設定させ、規約レベルが設定された値以上の規約違反に対してのみ修正が行われる。修正番号４１４は、修正内容ＤＢ６の各データに対応させるための値である。
【００２７】
図４は、図２におけるタグＤＢ５の構成例を示す図である。
【００２８】
図４において、タグＤＢ５は、プログラムを解析・修正するにあたり、特殊な処理を行う必要があるタグについてまとめられたＤＢであり、タグ番号５１１、タグ内容５１２、処理内容５１３の項目からなる。タグＤＢ５は、プログラムの開示範囲及び開発言語に対応した複数のタグテーブル５０で構成される。
【００２９】
タグ番号５１１は、各種タグに割り当てられた識別用の番号である。タグ内容５１２は、各種タグの内容である。処理内容５１３は、各タグに対応する処理の内容である。
【００３０】
図５は、図２における修正内容ＤＢ６の構成例を示す図である。
【００３１】
図５において、修正内容ＤＢ６は、プログラム上の規約違反箇所の修正方法が書かれたＤＢであり、修正番号６１１、修正方法の優先度６１２、修正方法６１３、埋め込みタグ６１４の項目からなる。修正内容ＤＢ６は、プログラムの開示範囲及び開発言語に対応した複数の修正テーブル６０で構成される。
【００３２】
修正番号６１１は、規約ＤＢ４の修正番号４１４に対応する番号である。修正方法の優先度６１２は、プログラムの規約違反に対応する複数の修正方法に設定された優先度である。優先度は、１が最も優先度が高く、順に優先度が低くなっていくものとする。修正方法６１３は、プログラムの規約違反に対する各種修正方法であり、各修正方法には異なる優先度が設定されている。なお、修正方法の優先度６１２の最も低い優先度には、修正方法６１３の「修正しない」が設定されている。これは、後述するプログラムの修正処理において、規約違反箇所に対して優先度の高い修正方法から順に当該修正方法を用いて修正を行って修正が適正か否かを判断する。そして、優先度が最も低い修正方法を選択せざるを得なかったときに、「修正しない」を選択させるためである。
【００３３】
埋め込みタグ６１４は、各修正方法に対応して規約違反箇所に埋め込まれるタグである。なお、埋め込みタグは、プログラムコードの仕様ではコメント文とみなされるテキストとする。
【００３４】
図６は、図２におけるテストケースＤＢ７の構成例を示す図である。
【００３５】
図６において、テストケースＤＢ７は、プログラム上の規約違反箇所の修正に対する妥当性を検証するために自動実行するテストケースをまとめたＤＢであり、テストケース番号７０１、テスト内容７０２の項目からなる。テストケース番号７０１は、各種テストケースに割り当てられた識別用の番号である。テスト内容７０２は、テスト内容である。
【００３６】
図７は、図２における規約違反管理ＤＢ８の構成例を示す図である。
【００３７】
図７において、規約違反管理ＤＢ８は、プログラムから検出した規約違反の内容及び規約違反箇所の位置、修正方法等をまとめたＤＢであり、規約違反の通し番号８１１、ファイル名８１２、規約違反箇所の行番号８１３、行のズレ量８１４、規約番号８１５、修正番号８１６、修正方法の優先度８１７、修正済みフラグ８１８の項目からなる（なお、ファイル名８１２は、絶対パス及び相対パス等によるディレクトリ構造も考慮できる）。
【００３８】
規約違反の通し番号８１１は、プログラム上で検出された複数の規約違反箇所に対応する番号である。ファイル名８１２は、規約違反を検出したファイル名である。規約違反箇所の行番号８１３は、規約違反を検出した箇所の行番号である。行のズレ量８１４は、規約違反の修正及びタグの埋め込みによる規約違反箇所の行のシフト量を表す。規約番号８１５は、規約ＤＢ４の規約番号４１１に対応する番号である。修正番号８１６は、規約ＤＢ４の修正番号４１４及び修正内容ＤＢ６の修正番号６１１に対応して規約違反箇所の修正方法を示すものである。修正方法の優先度８１７は、修正内容ＤＢ６の修正方法の優先度６１２に対応するものである。修正済みフラグ８１８は、規約違反箇所の修正の有無を表し、未修正の場合には「ＦＡＬＳＥ」、修正済みの場合には「ＴＲＵＥ」が格納される。
【００３９】
図８は、端末１に表示されるプログラム自動修正システム入力画面の一例を示す図である。
【００４０】
図８において、入力用ＧＵＩであるプログラム自動修正システム入力画面１０は、後述するプログラム修正処理の開始前に端末１に表示され、プログラムの解析・修正時に必要な各種情報をユーザに入力させるための画面である。本画面１０は、端末１内のアプリケーションにより表示させても、ＡＳＰ等により表示させてもよい。
【００４１】
解析対象ファイル名入力欄９０１は、解析対象となるプログラムのファイル名が入力されるテキストボックスである。入力されるファイル名は複数であってもよい。また、ディレクトリ単位で入力されてもよい。参照ボタン９０２は、クリックされることでディレクトリ構造をツリー状で表示し、ファイル名の入力を簡易化する機能ボタンである。
【００４２】
言語選択ラジオボタン９１１は、プログラムの開発言語を選択させるものである。規約選択ラジオボタン９２１は、プログラムの解析・修正・タグの解析に使用する規約を選択させるものである。規約名リスト９２２には、規約ＤＢ４、タグＤＢ５、修正内容ＤＢ６にあるテーブル名が表示される。規約レベル設定コンボボックス９２３は、プログラムの解析に使用する規約レベルを設定させるものである。
【００４３】
テストケース選択チェックボックス９３１は、プログラムの修正に対する妥当性の検証に用いるテストケースを選択させるものである。リスト９３２には、テストケースＤＢ７にあるテスト内容が表示される。さらに、画面１０上には、処理を開始するための開始ボタン９４０、処理を中止するためのキャンセルボタン９５０が配置されている。
【００４４】
次に、図１のプログラム修正システムに適用されたプログラム修正方法のアルゴリズムについて説明する。
【００４５】
図９及び図１０は、図１のプログラム修正システムにおけるプログラム修正処理を示すフローチャートである。本処理は、プログラム自動修正システム入力画面１０上で必要な項目が全てに入力された上で、開始ボタン９４０がクリックされると、開始される。なお、ＣＵＩの場合は開始コマンドが入力されたときに、本処理が開始される。また、本処理は、ハードディスク３４に格納された所定の制御プログラムに基づいてＣＰＵ３１により実行される処理である。
【００４６】
ステップＳ１では、プログラム自動修正システム入力画面１０上で入力された解析対象ファイル名から１つの処理対象ファイルを選択し、別名でハードディスク３４に保存する。画面１０上で入力されたファイル名が１つであったときは、当該ファイルを処理対象ファイルとして選択する。
【００４７】
ステップＳ２では、選択された処理対象ファイルのプログラム内のタグを解析する。このステップでは、プログラム自動修正システム入力画面１０上の規約選択ラジオボタン９２１で選択された規約及び言語選択ラジオボタン９１１で選択されたプログラムの開発言語に対応するタグテーブルをタグＤＢ５内のタグテーブル５０から選択する。そして、プログラム内に選択されたタグテーブル内のタグ内容５１２に該当するタグがあった場合、処理内容５１３に基づいて処理を行う。なお、プログラム内でタグが使用されていない場合は、本ステップをスルーする。
【００４８】
ステップＳ３では、処理対象ファイルの修正前のプログラムに対して所定のテストを行い、そのテスト結果を保存する。このステップでは、まずプログラム自動修正システム入力画面１０上のテストケース選択チェックボックス９３１で選択されたテストケース（テスト内容）をテストケースＤＢ７から検索する。そして、そのテストケースに対応するテストマクロをテストマクロＤＢ９から抽出し、当該テストマクロに基づいてプログラムのテストを行い、そのテスト結果をハードディスク３４に保存する。保存されたテスト結果は、プログラムの修正に対する妥当性検証に使用される。
【００４９】
ステップＳ４では、処理対象ファイルのプログラムを静的及び動的に解析することにより規約違反箇所を検出する（プログラム解析処理）。このとき、プログラム上で規約違反を検出した場合、当該プログラムのファイル名や規約違反箇所の行番号、行のズレ量等の規約違反箇所に関する情報（規約違反箇所情報）を規約違反管理ＤＢ８に登録する。このステップの詳細については図１１で説明する。
【００５０】
ステップＳ５では、規約違反箇所があるか否かを判別する。規約違反箇所が無い場合は、図１０のステップＳ１１へ移行する一方、プログラム上に規約違反箇所がある場合は、規約違反管理ＤＢ８から規約違反箇所情報の１つを抽出し、修正対象となる規約違反箇所を選択する（ステップＳ６）。規約違反箇所情報は、規約違反管理ＤＢ８における修正済みフラグ８１８の値が「ＦＡＬＳＥ」になっている行である。そして、抽出された規約違反箇所情報における規約違反の通し番号８１１を用いて以降の処理（ステップＳ７〜ステップＳ９）を行う。
【００５１】
ステップＳ７では、修正対象となる規約違反箇所を修正し、埋め込みタグの挿入を行う。このステップでは、まず、プログラム自動修正システム入力画面１０上の規約選択ラジオボタン９２１で選択された規約と言語選択ラジオボタン９１１で選択されたプログラムの開発言語に対応する修正テーブルを修正内容ＤＢ６内の修正テーブル６０から選択する。そして、規約違反箇所に対応する規約違反の通し番号８１１をキーとして規約違反管理ＤＢ８から規約違反箇所情報を検索する。そして、検索した規約違反箇所情報の修正番号８１６の値に対応する修正番号を修正内容ＤＢ６の修正番号６１１から検索する。さらにその修正番号６１１に対応する修正方法６１３の中から、修正方法の優先度８１７の値に対応する優先度を修正内容ＤＢ６内の修正方法の優先度６１２から選択し、選択された修正方法６１３により当該規約違反箇所を修正する。そして、選択された修正方法６１３に対応する埋め込みタグ６１４のタグ（テキスト）を修正された行の上に挿入する。
【００５２】
ステップＳ８では、規約違反箇所の修正及びタグの挿入による行のズレ量（行の増加分）を計算し、算出したズレ量を規約違反管理ＤＢ８のズレ量８１４の値に加えて規約違反管理ＤＢ８を更新する。このとき、算出したズレ量を規約違反管理ＤＢ８におけるズレ量８１４の全ての値に加えるのではなく、ファイル名８１２のファイル名が修正された規約違反箇所を含むプログラムファイルと同一のプログラムファイル（同一ファイル名）で、規約違反箇所の行番号８１３の値が、修正された規約違反箇所に対応する行番号８１３の値以上のものに対して加える。これにより、ずれた量だけ行番号がずれるので、規約違反箇所の行番号が適切なものとなる。
【００５３】
ステップＳ９では、修正された規約違反箇所に対応する、規約違反管理ＤＢ８の修正済みフラグ８１８の値を「ＴＲＵＥ」に変更する。ステップＳ１０では、処理対象ファイルの規約違反箇所を全て修正したか否かを判別する。処理対象ファイルの全ての規約違反箇所の修正が完了している場合は、図１１のステップＳ１１へ移行する一方、未完了の場合はステップＳ６の処理に戻る。すなわち、規約違反管理ＤＢ８の修正済みフラグ８１８の値が全て「ＴＲＵＥ」となれば、当該処理対象ファイルの規約違反箇所の修正を完了とする。
【００５４】
図１０において、ステップＳ１１では、修正したプログラムの実行ファイルを作成する。なお、実行ファイルの作成が不要な言語の場合は、このステップをスルーする。この判断は、プログラム自動修正システム入力画面１０上の言語選択ラジオボタン９１１の設定により判断する。
【００５５】
ステップＳ１２では、実行ファイルの作成に成功したか否かを判別する。実行ファイルの作成に失敗した場合は、プログラム内の不適当な修正箇所の調査及び不適当な修正箇所の再修正処理を行う（ステップＳ１６）。このステップ１６の詳細については図１２で説明する。
【００５６】
一方、実行ファイルの作成に成功した場合及び実行ファイル作成が不要な言語の場合は、修正後のプログラムに対して所定のテストを行い、そのテスト結果を保存する（ステップＳ１３）。このステップでは、ステップＳ１１で作成した修正後のプログラムの実行ファイルに対して、ステップＳ３で行ったものと同じテストを行い、そのテスト結果をハードディスク３４に保存する。
【００５７】
ステップＳ１４では、プログラムの修正前後のテスト結果を比較する。すなわち、ステップＳ３及びステップＳ１３でハードディスク３４に保存したテスト結果を比較する。ステップＳ１５では、比較したテスト結果が一致したか否かを判別する。テスト結果が一致したときは、ステップＳ１７へ移行する一方、テスト結果が一致していないときは、ステップＳ１６へ移行する。
【００５８】
ステップＳ１７では、プログラム自動修正システム入力画面１０上で入力された全ての解析対象ファイルについてプログラム修正処理が終了したか否かを判別する。この結果、全ての解析対象ファイルについてプログラム修正処理が終了した場合は、ステップＳ１８へ移行する一方、全てのファイルについて終了していない場合は、図９のステップＳ１の処理に戻り、他の処理対象ファイルを選択する。
【００５９】
ステップＳ１８では、ステップＳ１〜ステップＳ１７までに行った内容をレポートファイルとして作成してハードディスク３４に保存する。ステップＳ１９では、ステップＳ１８で作成したレポートファイルの内容に基づいて、図１４に示すようなプログラム自動修正システム出力画面３００を端末１に表示する。
【００６０】
図１１は、図９ステップＳ４におけるプログラム解析処理の詳細を示すフローチャートである。
【００６１】
ステップＳ４１では、プログラムを静的・動的に解析することにより規約違反箇所を検出する。次に、ステップＳ４２では、規約違反箇所があるか否かを判別する。規約違反箇所がある場合は、ステップＳ４３へ移行する一方、規約違反箇所がない場合はステップＳ４５へ移行する。
【００６２】
ステップＳ４３では、検出された規約違反箇所の規約レベルとプログラム自動修正システム入力画面１０上の規約レベル設定コンボボックス９２３で設定された規約レベルとの比較を行い、「規約違反箇所の規約レベル≧規約レベル設定コンボボックス９２３で設定された規約レベル」が成り立つか否かを判別する。規約違反箇所の規約レベルは、画面１０上の規約選択ラジオボタン９２１で選択された規約及び言語選択ラジオボタン９１１で選択されたプログラムの開発言語に対応する、規約ＤＢ４内の規約テーブルの該当する規約違反内容に対応する規約レベルである。ステップＳ４３が成り立つときは、ステップＳ４４へ移行する一方、成り立たないときは、ステップＳ４５へ移行する。
【００６３】
ステップＳ４４では、規約違反箇所を検出したプログラムのファイル名や規約違反箇所の行番号等を規約違反管理ＤＢ８に登録する。規約違反管理ＤＢ８の各項目にはそれぞれ以下の値を入力する。
【００６４】
ファイル名８１２：規約違反箇所を検出したプログラムのファイル名
規約違反箇所の行番号８１３：検出した規約違反箇所の行番号
行のズレ量８１４：０
規約番号８１５：検出した規約違反箇所の規約違反内容に対応する規約ＤＢ４上の規約番号４１１の値
修正番号８１６：検出した規約違反箇所の規約違反内容に対応する規約ＤＢ４上の修正番号４１４の値
修正方法の優先度８１７：１
修正済みフラグ８１８：ＦＡＬＳＥ
ステップＳ４５では、処理対象ファイルの末尾（ＥＯＦ）まで解析したか否かを判別する。ファイルの末尾まで解析が完了した場合はリターンする一方、未完了の場合はステップＳ４１の処理に戻る。
【００６５】
図１２及び図１３は、図９のステップＳ１６における処理の詳細を示すフローチャートである。
【００６６】
ステップＳ１６０１では、処理対象ファイルを修正前の状態に戻す。修正前の状態に戻すには、図９のステップＳ３にてハードディスク３４に別名で保存した処理対象ファイルを、現在処理中のファイルに上書きすることで実現する。ステップＳ１６０２では、規約違反管理ＤＢ８における該当ファイルの行のズレ量８１４の値を「０」に変更する。
【００６７】
次に、ステップＳ１６０３では、規約違反管理ＤＢ８における該当ファイルの修正済みフラグ８１８の値を「ＦＡＬＳＥ」に変更する。ステップＳ１６０４では、図９のステップＳ６と同様に、規約違反管理ＤＢ８から規約違反箇所情報の１つを抽出し、修正対象となる規約違反箇所を選択する。規約違反箇所情報は、規約違反管理ＤＢ８における修正済みフラグ８１８の値が「ＦＡＬＳＥ」になっている行である。そして、抽出された規約違反箇所情報における規約違反の通し番号８１１を用いてステップＳ１６０５以降の処理を行う。
【００６８】
ステップＳ１６０５は、図９のステップＳ７と同様に、修正対象となる規約違反箇所を修正し、埋め込みタグの挿入を行う。このステップでは、まず、プログラム自動修正システム入力画面１０上の規約選択ラジオボタン９２１で選択された規約と言語選択ラジオボタン９１１で選択されたプログラムの開発言語に対応する修正テーブルを修正内容ＤＢ６の修正テーブル６０から選択する。そして、規約違反箇所に対応する規約違反の通し番号８１１をキーとして規約違反管理ＤＢ８から規約違反箇所情報を検索する。そして、検索した規約違反箇所情報の修正番号８１６の値に対応する修正番号を修正内容ＤＢ６の修正番号６１１から検索する。さらにその修正番号６１１に対応する修正方法６１３の中から、修正方法の優先度８１７の値に対応する優先度を修正内容ＤＢ６内の修正方法の優先度６１２から選択し、選択された修正方法６１３により当該規約違反箇所を修正する。そして、選択された修正方法６１３に対応する埋め込みタグ６１４のタグ（テキスト）を修正された行の上に挿入する。
【００６９】
ステップＳ１６０６では、図９のステップＳ８と同様に、規約違反箇所の修正及びタグの挿入による行のズレ量（行の増加分）を計算し、算出した行のズレ量を規約違反管理ＤＢ８のズレ量８１４の値に加えて規約違反管理ＤＢ８を更新する。このとき、算出したズレ量を規約違反管理ＤＢ８におけるズレ量８１４の全ての値に加えるのではなく、ファイル名８１２のファイル名が修正された規約違反箇所を含むプログラムファイルと同一のプログラムファイル（同一ファイル名）で、規約違反箇所の行番号８１３の値が、修正された規約違反箇所に対応する行番号８１３の値以上のものに対して加える。これにより、ずれた量だけ行番号がずれるので、規約違反箇所の行番号が適切なものとなる。
【００７０】
ステップＳ１６０７では、図１０のステップＳ１１と同様に、修正したプログラムの実行ファイルを作成する。なお、実行ファイルの作成が不要な言語の場合は、このステップをスルーする。この判断は、プログラム自動修正システム入力画面１０上の言語選択ラジオボタン９１１の設定により判断する。
【００７１】
ステップＳ１６０８では、図１０のステップＳ１２と同様に、実行ファイルの作成に成功したか否かを判別する。実行ファイルの作成に成功した場合及び実行ファイルの作成が不要な言語の場合は、ステップＳ１６０９へ移行する一方、実行ファイルの作成に失敗した場合は、図１３のステップＳ１６１４へ移行する。
【００７２】
ステップＳ１６０９では、図９のステップＳ１３と同様に、修正後のプログラムに対して所定のテストを行い、そのテスト結果を保存する。このステップでは、ステップＳ１６０７で作成した修正後のプログラムの実行ファイルに対し、図９のステップＳ３で行ったテストと同じテストを行い、テスト結果をハードディスク３４に保存する。
【００７３】
ステップＳ１６１０では、図９のステップＳ１４と同様に、プログラムの修正前後のテスト結果を比較する。すなわち、図９のステップＳ３及びステップＳ１６０９でハードディスク３４に保存したテスト結果を比較する。ステップＳ１６１１では、ステップＳ１６１０において比較したテスト結果が一致したか否かを判別する。テスト結果が一致したときは、ステップＳ１６１２へ移行する一方、テスト結果が一致していなければ、図１３のステップＳ１６１４へ移行する。
【００７４】
ステップＳ１６１２は、ステップＳ１６１０で行った比較においてテスト結果が一致していた場合に行うステップである。このステップでは、規約違反管理ＤＢ８における、修正対象としている規約違反箇所情報の修正済みフラグ８１８の値を「ＴＲＵＥ」にする。
【００７５】
ステップＳ１６１３は、処理対象ファイルにおける全ての規約違反箇所の修正が完了している場合、すなわち当該処理対象ファイルに対応する規約違反管理ＤＢ８の修正済みフラグ８１８の値が全て「ＴＲＵＥ」であるときは、全修正完了としてリターンする。一方、未完了の場合はステップＳ１６０４の処理に戻る。
【００７６】
図１３において、ステップＳ１６１４は、ステップＳ１６１０で行った比較においてテスト結果が不一致だった場合及びステップＳ１６０７で行った実行ファイルの作成に失敗した場合、すなわち修正が不適当であった場合に行うステップである。このステップでは、ステップＳ１６０５で行った修正箇所（修正と同時に埋め込まれたタグを含む）を修正前の状態に戻す。また、プログラムを修正前の状態に戻すことによりプログラムの行数が増減する場合は、ステップＳ１６０５と同様にズレ量をカウントし、ステップＳ１６１５へ移行する。
【００７７】
ステップＳ１６１５では、プログラムを修正前の状態に戻すことによりプログラムの行数が増減する場合は、ステップＳ１６０５と同様にズレ量（行の減少分）を計算し、算出した規約違反箇所の行のズレ量を規約違反管理ＤＢ８のズレ量８１４から引いて規約違反管理ＤＢ８を更新する。このとき、算出したズレ量を規約違反管理ＤＢ８におけるズレ量８１４の全てから引くのではなく、修正された規約違反箇所を含むプログラムファイルと同一のファイル（同一ファイル名）で、規約違反箇所の行番号８１３の値が、修正された規約違反箇所に対応する行番号８１３の値以上のものに対して減算する。これにより、ステップＳ１６０６でずれた量だけ行番号が元に戻るので、規約違反箇所の行番号が適切なものとなる。
【００７８】
ステップＳ１６１６では、修正対象の修正方法の優先度８１７の値に１を加えて、ステップＳ１６０５へ移行する。ステップＳ１６０５では、修正内容ＤＢ６上の同一の修正番号に対応する修正方法の優先度６１２から、増加した優先度の値に基づいて該当する修正方法を選択し、選択された修正方法により規約違反箇所を修正し、図１２のステップＳ１６０５へ移行する。
【００７９】
テストを行って修正の前後でテスト結果が一致しなかった場合、不適当な修正箇所があったと判断して修正箇所を戻し、再度テスト実行・比較を行うことで、どの修正箇所が不適当であったかを調査する。そして、修正が不適当であった箇所は優先順位が次点である修正を行い、再度テストを実行する。全ての修正方法が不適当であった場合、その箇所の修正は行わず、さらに、修正内容ＤＢ６の設定に従ってその箇所にタグを埋め込むこともできる。
【００８０】
図１４は、端末１に表示されるプログラム自動修正システム出力画面の一例を示す図である。
【００８１】
図１４において、出力用ＧＵＩであるプログラム自動修正システム出力画面３００は、プログラム修正処理の終了後の図１０のステップＳ１９で端末１に表示される画面である。本プログラム自動修正システム出力画面３００は、プログラム自動修正システム入力画面１０と同様に、端末１内のアプリケーションにより表示させても、ＡＳＰ等により表示させてもよい。
【００８２】
設定条件表示欄３０１０では、プログラム自動修正システム入力画面１０で入力又は選択された項目が表示される。テストケース表示欄３０２０では、プログラム自動修正システム入力画面１０で選択されたテストケースの内容を表示する。
【００８３】
解析・修正結果表示欄３０３０では、解析及び修正したファイル名リスト３０３１、各ファイルの規約違反箇所数リスト３０３２を表示する。ファイル名リスト３０３２から１つのファイル名が選択された後、詳細ボタン３０３３がクリックされると、その詳細内容が詳細表示欄３０４０に表示される。
【００８４】
詳細表示欄３０４０では、現在詳細表示しているファイル名３０４１と規約違反箇所数３０４２が表示される。また、詳細表示欄３０４０には、修正前のプログラムの行番号を示す行番号３０４３と、修正前のプログラムを表示するエディター領域（修正前）３０４４と、修正後のプログラムを表示するエディター領域（修正後）３０４５とが表示される。
【００８５】
保存ボタン３０５０は、詳細表示された内容をＨＴＭＬ（HyperText Markup Language）形式で保存するための機能ボタンであり、閉じるボタン３０６０は、プログラム自動修正システム出力画面３００を閉じるための機能ボタンである。
【００８６】
また、プログラム自動修正システム出力画面３００では、修正を行った箇所、例外的に認められた箇所などにタグが埋め込まれているため、タグを解析することにより「修正箇所を太字で表示」「例外的な箇所を赤文字で表示」など、視覚的に分かりやすい表示を行うことができる。
【００８７】
次に、上記プログラム修正システムによるプログラムの修正例について説明する。
【００８８】
図１５は、解析対象となるプログラムの一例を示す図であり、図１６は、図１５に示すプログラムの修正例を示す図である。
【００８９】
図１５において、プログラム１００は、開発言語がＣ言語で社内システム用のプログラム（ファイル名「ａａａ．ｃ」）であり、変数宣言箇所１００１で規約違反となる「ｕｎｓｉｇｎｅｄ」修飾子が使われている。このプログラム１００に対して、プログラム自動修正システム入力画面１０において下記設定を行い（図８参照）、上記プログラム修正システムを使用して規約に適合するかのチェックと自動修正を行う。
【００９０】
解析対象となるプログラム１００のファイル名：「ａａａ．ｃ」
言語選択ラジオボタン９１１で選択されたプログラムの開発言語：「Ｃ言語」
規約選択ラジオボタン９２１及び規約レベル設定コンボボックス９２３で選択された規約及び規約レベル：「社内システム用」、「規約レベル４」
テストケース選択チェックボックス９３１で選択されたテストケース：「関数Ａの繰り返しテストを行う」、「サブシステムＢの繰り返しテストを行う」
プログラム自動修正システム入力画面１０上で上記設定が行われ、開始ボタン９４０がクリックされると、図９及び図１０に示すフローチャートに基づいて処理が行われる。
【００９１】
ステップＳ１では、解析対象ファイルとして「ａａａ．ｃ」を選択し、別名で保存する。次に、ステップＳ２では、処理対象ファイルとして選択されたファイル名「ａａａ．ｃ」のプログラム１００内のタグを解析する。本例ではプログラム１００内でタグが使用されていないために何も行わない。つづいて、ステップＳ３では、テストケース選択チェックボックス９３１で選択されたテストケースに従ってプログラム１００にテストを行い、そのテスト結果をプログラム修正前のテスト結果としてハードディスク３４に保存する。
【００９２】
次に、ステップＳ４では、プログラム１００を静的及び動的に解析し、プログラム１００上の変数宣言箇所１００１が規約ＤＢ４における規約番号３（図３の囲み箇所４２０）の規約に違反することを検出する（図１１のステップＳ４２でＹＥＳ）。そして、規約違反箇所に対応する規約レベル：「９」（図３の囲み箇所４２０）＞プログラム自動修正システム入力画面１０上の規約レベル設定コンボボックスで設定された規約レベル：「４」（図８参照）であることから、規約違反と判断し（図１１のステップＳ４３でＹＥＳ）、図７に示すように、規約違反管理ＤＢ８の通し番号８１１の値が１である行に、下記項目について規約違反箇所情報を登録する。
【００９３】
ファイル名８１２：「ａａａ．ｃ」
規約違反箇所の行番号８１３：２
行のズレ量８１４：０
規約番号８１５：３（図３の囲み箇所４２０の規約番号４１１）
修正番号８１６：３（図３の囲み箇所４２０の修正番号４１４）
修正方法の優先度８１７：１
修正済みフラグ８１８：「ＦＡＬＳＥ」
ステップＳ５では、ステップＳ４で規約違反を検出したためにステップＳ６の処理に進む。ステップＳ６では、規約違反管理ＤＢ８から通し番号１の規約違反箇所情報を抽出する。ステップＳ７では、ステップＳ６で抽出した規約違反箇所情報における規約番号８１５の値「３」に対応する修正を行う。このとき、修正内容ＤＢ６の社内システム用修正テーブル（Ｃ言語）を選択し、修正番号６１１の値が「３」で且つ修正方法の優先度が「１」の修正方法６１３の「”ｕｎｓｉｇｎｅｄ”削除する」修正方法を行う（図５の囲み箇所６２０）。また、埋め込みタグ６１４に従って、「/* <color BLUE> rule3 p1 */」をプログラム１００の修正された行の上に挿入する。その結果、プログラム１００は図１６に示すプログラム２００のように修正される。そして、ステップＳ７の処理により規約違反箇所の行番号「２」行目以下のプログラムが１行分シフトするため、行のずれ量として「１」をステップＳ８に渡す。
【００９４】
ステップＳ８では、ステップＳ７から渡されたズレ量「１」を規約違反管理ＤＢ８の行のズレ量８１４の値に加えて更新する。次に、ステップＳ９では、規約違反管理ＤＢ８の修正済みフラグ８１８を「ＴＲＵＥ」に変更する。ステップＳ１０では、ステップＳ９で処理対象ファイル「ａａａ．ｃ」の規約違反箇所が全て修正されたため（すなわち、修正済みフラグ８１８が「ＴＲＵＥ」）、ステップＳ１１へ進む。
【００９５】
ステップＳ１１では、ステップＳ９で修正されたプログラム２００の実行ファイルを作成する。ステップＳ１２では、ステップＳ１１での実行ファイルの作成が成功したかを判断する。本例では成功したとして、ステップＳ１３へ進む。ステップＳ１３では、ステップＳ１１で作成した修正後のプログラム２００の実行ファイルに対し、ステップＳ３と同様のテストを行い、そのテスト結果をプログラム修正後のテスト結果としてハードディスク３４に保存する。
【００９６】
ステップＳ１４では、ステップＳ３で保存したプログラム修正前のテスト結果と、ステップＳ１３で実行したプログラム修正後のテスト結果とを比較する。ステップＳ１５では、ステップＳ１４での比較において、両者が一致するか否かを判断する。本例では一致するとしてステップＳ１７へ進む。
【００９７】
ステップＳ１７では、プログラム自動修正システム入力画面１０で入力された全てのファイル名のプログラムに対して、プログラム修正処理を行ったかを判断する。本例では、処理対象ファイルのプログラムがプログラム１００（ファイル名「ａａａ．ｃ」）のみであり、当該プログラム１００に対して処理を行ったので、ステップＳ１８へ進む。
【００９８】
ステップＳ１８では、ステップＳ１〜ステップＳ１７で行った処理内容についてレポートファイルを作成する。レポートファイルは、修正前後のプログラム及び各ＤＢの内容に基づいて作成される。ステップＳ１９では、ステップＳ１８で作成したレポートファイルを元に、図１４に示すプログラム自動修正システム出力画面３００を端末１に表示する。このプログラム自動修正システム出力画面３００において、ユーザが囲み箇所３０３４にあるファイル名リスト３０３１でファイル名「ａａａ．ｃ」を選択し、詳細ボタン３０３３をクリックすると、詳細表示欄３０４０にプログラム修正前後のプログラム比較結果を表示する。さらに、囲み箇所３０４６にあるように、修正後のプログラムにのみ規約違反の内容と修正方法を表示する。また、修正した箇所にあたる囲み箇所３０４７の文字の色を青色とする。これら修正方法の表示と修正箇所の色の変更は、プログラム内に挿入したタグと、各ＤＢの内容に従う。なお、修正した箇所にあたる文字色を青色にしているが、ユーザが識別しやすいものであればよく、他の色を配色したり、枠を表示したりしてもよい。
【００９９】
上記処理により、ファイル名「ａａａ．ｃ」のプログラム１００は図１６に示すプログラム２００のように修正される。修正後のプログラム２００では、変数宣言箇所２００２に「ｕｎｓｉｇｎｅｄ」修飾子がなくなり、その上の行にタグ２００１が埋め込まれている。
【０１００】
このように、プログラムに対して開発規約が守られているかのチェックを行い、規約違反箇所があれば修正方法を選択して自動修正すると共に、修正内容の妥当性を自動でチェックすることができる。
【０１０１】
上記実施の形態によれば、プログラムを予め設定された規約に従って自動修正するので、ユーザが作成したプログラムの品質を安定させる。また、修正されたプログラムに対してテストを行い、修正内容の妥当性を判断するため、修正後のプログラムをユーザがテストする必要がなくなり、開発効率が向上する。
【０１０２】
さらに、修正前後のプログラムの修正箇所には、タグが挿入されているため、タグに応じてテキストのカラーを変えることが可能なエディターで閲覧することで、修正箇所及び修正理由をグラフィカルに表示することが可能となる。これにより、ユーザへの規約の浸透を図ることができる。
【０１０３】
なお、上記実施の形態では、テストケースに従って、プログラムの修正の前後でテストを行い、そのテスト結果が一致するかを確認している。このテストケースは、ユーザがテストケースＤＢ７に登録した内容でもよいし、また、ＡＴＧ（Automatic Test case Generation）により自動で生成するものでもよい。さらに、プログラム上にタグの内容で記述したものでもよい。また、実施するテストは単体テストでもよいし、複数のテスト対象からなる結合テストや複数のシステムからなるシステムテストでもよい。
【０１０４】
他の実施の形態として、規約に従ったプログラムの解析に加えて、プログラム内に書かれたタグ（プログラムのコメントとして記載されたもの）に従って処理を行うようにしてもよい。例えば、「タグＡがあった場合、例外的に規約違反が認められた箇所であることを自動で認識し、修正は行わない」と設定することによって、例外的に規約違反が容認された箇所があった場合に、自動修正を行わないようにすることができる。
【０１０５】
また、一連の処理が終わった後、修正箇所・修正内容・修正できなかった箇所、テスト結果などをレポートファイルとして作成し、画面３００に出力する。この際、修正を行った箇所、例外的に認められた箇所など、このシステムで制御する箇所にタグが埋め込まれているため、タグを解析することにより、「修正箇所を太字で表示」、「例外的な箇所を赤文字で表示」など、視覚的に分かりやすい表示を行うことができる。
【０１０６】
また、本発明の目的は、以下の処理を実行することによって達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出す処理である。
【０１０７】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１０８】
また、プログラムコードを供給するための記憶媒体としては、次のものを用いることができる。例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等である。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【０１０９】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１１０】
さらに、前述した実施形態の機能が以下の処理によって実現される場合も本発明に含まれる。即ち、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行う場合である。
【０１１１】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現する場合も含まれる。この場合、上記プログラムは、該プログラムを記憶した記憶媒体から直接、又はインターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続された不図示の他のコンピュータやデータベース等からダウンロードすることにより供給される。
【０１１２】
上記プログラムの形態は、オブジェクトコード、インタプリタにより実行されるプログラムコード、ＯＳ（オペレーティングシステム）に供給されるスクリプトデータ等の形態から成ってもよい。
【図面の簡単な説明】
【０１１３】
【図１】本発明の実施の形態に係るプログラム修正システムの構成例を示すブロック図である。
【図２】図１のサーバ装置の内部構成を示すブロック図である。
【図３】図２における規約ＤＢの構成例を示す図である。
【図４】図２におけるタグＤＢの構成例を示す図である。
【図５】図２における修正内容ＤＢの構成例を示す図である。
【図６】図２におけるテストケースＤＢの構成例を示す図である。
【図７】図２における規約違反管理ＤＢの構成例を示す図である。
【図８】端末に表示されるプログラム自動修正システム入力画面の一例を示す図である。
【図９】図１のプログラム修正システムにおけるプログラム修正処理を示すフローチャート（その１）である。
【図１０】図１のプログラム修正システムにおけるプログラム修正処理を示すフローチャート（その２）である。
【図１１】図９ステップＳ４におけるプログラム解析処理の詳細を示すフローチャートである。
【図１２】図９のステップＳ１６における処理の詳細を示すフローチャート（その１）である。
【図１３】図９のステップＳ１６における処理の詳細を示すフローチャート（その２）である。
【図１４】端末に表示されるプログラム自動修正システム出力画面の一例を示す図である。
【図１５】解析対象となるプログラムの一例を示す図である。
【図１６】図１５に示すプログラムの修正例を示す図である。
【符号の説明】
【０１１４】
１  端末
２  通信ネットワーク
３  サーバ装置
４  規約ＤＢ
５  タグＤＢ
６  修正内容ＤＢ
７  テストケースＤＢ
８  規約違反管理ＤＢ
９  テストマクロＤＢ
３１  ＣＰＵ
３４  ハードディスク
【図１】
2008250914.tif 000003
【図２】
2008250914.tif 000004
【図３】
2008250914.tif 000005
【図４】
2008250914.tif 000006
【図５】
2008250914.tif 000007
【図６】
2008250914.tif 000008
【図７】
2008250914.tif 000009
【図８】
2008250914.tif 000010
【図９】
2008250914.tif 000011
【図１０】
2008250914.tif 000012
【図１１】
2008250914.tif 000013
【図１２】
2008250914.tif 000014
【図１３】
2008250914.tif 000015
【図１４】
2008250914.tif 000016
【図１５】
2008250914.tif 000017
【図１６】
2008250914.tif 000018