以下、情報処理装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
(実施の形態)
図1は、本実施の形態における情報処理装置1のブロック図である。
情報処理装置1は、エラーパターン情報格納部11、変換プログラム格納部12、変換前ソース格納部13、変換ツール格納部14、変換後情報格納部15、エラー情報取得部16、エラー箇所格納部17、エラーパターン決定部18、出現回数取得部19、出現回数格納部20、出現回数出力部21、受付部22、変換部23、ソースプログラム出力部24、エラーパターン情報登録部25を備える。
エラーパターン情報格納部11には、1または2以上のエラーパターン情報が格納される。エラーパターン情報とは、変換前のソースプログラムである変換前ソースを変換ツールに与えて起動した場合のエラーに関する情報のパターンである。ソースプログラムとは、プログラミング言語の仕様に従って記述されたプログラムである。ソースプログラムは、ソースコードとも呼ばれる。ソースプログラムに用いられるプログラミング言語は問わない。ソースプログラムは、例えば、visual basic(登録商標)や、COBOL、C言語、perl、PL/I、JAVA(登録商標)等により記述されたソースプログラムである。である。変換ツールとは、例えば、一のソースプログラムを、他のソースプログラムに自動変換するツールである。変換ツールとは、例えば、変換前ソースを、変換前ソースに用いられているプログラミング言語とは仕様が異なるプログラミング言語のソースプログラムに自動変化するためのツールである。変換ツールは、例えば、ソフトウェアとして提供される。仕様が異なるプログラミング言語は、例えば、言語が異なるプログラミング言語である。仕様が異なるプログラミング言語は、例えば、OS等の動作する環境が異なるプログラミング言語である。プログラミング言語とは、例えば、バージョンが異なるプログラミング言語も含む概念である。変換前ソースを変換ツールに与えて起動した場合のエラーに関する情報とは、例えば、一の変換ツールが、変換前ソースを変換した場合に出力したエラーに関する情報である。変換ツールは、通常、変換後のソースプログラム内に、エラーに関する情報を出力するが、変換後のソースプログラム外に、例えば、別ファイル等の情報として、エラーに関する情報を出力しても良い。変換ツールにより変換された変換後のソースプログラムを、ここでは、変換後ソースと呼ぶ。変換ツールについては、公知の技術であるので、ここでは詳細な説明は省略する。
エラーに関する情報を、ここでは、エラー情報と呼ぶ。エラー情報は、ソースプログラムの、変換ツールにより正常に変換できなかった箇所に関する情報と考えてもよい。ここでのソースプログラムの箇所は、通常は、変換後ソース内の箇所であるが、変換前ソース内の箇所と考えても良い。ここでのエラーとは、例えば、変換ツールで変換前ソースを正常に変換できなかったことによって、変換後ソースにおいて発生する不具合等である。正常に変換できなかったということは、例えば、変換ツールによる変換によって、文法上の誤りが生じてしまったことや、変換前ソースにおける動作や機能と同じ動作や機能を実現できなくなってしまったこと等を意味するものである。ここでのエラーとは、例えば、変換後ソース、あるいはこの変換後ソースをコンパイルして得られるプログラムを実行した場合に発生するエラーである。エラー情報とは、例えば、エラーが発生することを示す情報である。エラー情報とは、例えば、エラーの内容を示す情報を有する情報である。エラー情報は、例えば、変換後ソースや変換前ソースにおける、変換後ソースにおいてエラーとなる箇所を示す情報と対応付けられた情報である。例えば、エラー情報は、エラーとなる箇所を示す情報を有する情報である。エラーとなる箇所を示す情報とは、変換ツールにより正常に変換されなかった箇所を示す情報と考えても良い。エラーとなる箇所を示す情報は、例えば、変換前ソース内や変換後ソース内の、エラーとなる文字列を示す情報であっても良いし、エラーとなる行番号等を示す情報であっても良い。エラーとなる箇所を示す情報は、例えば、エラーの対象となる関数名や、変数名や、クラス名である。エラーとなる箇所を示す情報は、例えば、予約語以外の文字列である。ただし、予約語や、予約語を含む文字列であっても良い。エラー情報は、変換されたソースプログラムにおいてエラーとなる箇所と対応付けられて出力されても良く、例えば、エラーとなる箇所を示す情報を有していても良い。また、エラー情報は、エラーの属性や分類等を示す情報を有していても良い。また、エラー情報は、エラーの識別子を有していても良い。エラー情報は、例えば、上記の情報のうちの二以上を有していても良い。エラー情報は、通常、自然言語で示されたエラーメッセージ等の情報であるが、自然言語で示されていなくても良い。エラー情報は、エラーコードや、エラーに対応する箇所の変数名等を有していてもよい。
エラーパターン情報は、エラー情報のパターンの情報である。エラーパターン情報格納部11には、例えば、ソースプログラムの変換に用いられる変換ツール(図示せず)が出力しうる1以上のエラー情報にそれぞれ対応するエラーパターン情報が予め格納されている。エラーパターン情報とは、例えば、文字列と変数とを含むパターンである。エラーパターン情報は、例えば、エラー情報と一致するものであっても良い。ここでの一致は、完全一致であっても部分一致であっても良い。例えば、エラーパターン情報は、エラー情報のうちの、エラー情報であることを示す情報を除外した部分や、予め指定されている属性等を有する文字列等を除外した部分が完全一致する情報であっても良い。また、エラーパターン情報は、エラー情報の少なくとも一部を正規表現化した情報であっても良い。正規表現とは、例えば、文字列の集合を一の文字列で表したものである。正規表現とは、例えば、文字列を、文字の属性や、文字数等を表す特殊文字等を用いて、パターン化したものである。文字の属性とは、文字の大文字、小文字等の属性や、日本語、英語等の属性や、数字やカタカナ等の属性である。正規表現化とは、文字列をいわゆるワイルドカード化することと考えても良い。エラー情報のうちの正規表現化する部分とは、例えば、エラー情報のうちの、変数名や、参照するデータ名等である。また、正規化する部分は、エラーとなる箇所を示す文字列等であっても良い。エラーパターン情報格納部11には、例えば、上述した変換ツールが出力しうる全てのエラー情報に対応したエラーパターン情報が予め格納されていることが好ましい。エラーパターン情報は、エラーパターン情報を識別する識別子と対応付けられて、エラーパターン情報格納部11に格納されていても良い。
エラーパターン情報格納部11には、1以上のエラーパターン情報がグループ分けされて格納されていてもよい。ここでのグループ分けとは、例えば、エラーパターン情報の属性に応じたグループ分けである。属性に応じたグループ分けとは、例えば、エラーパターン情報が示すエラーの種類毎のグループ分けや、エラーの重要度や深刻度等に応じたグループ分けである。また、このグループ分けは、エラーの対応策毎や、エラーの修正に用いられる修正ツール(図示せず)毎のグループ分けであっても良い。修正ツールとは、変換後ソースのエラーを修正するためのツールであり、通常、プログラムで提供される。また、エラーパターン情報格納部11に格納されている一のエラーパターン情報が、複数のグループに属するようグループ分けされていても良い。エラーパターン情報格納部11に格納されている各エラーパターン情報がグループ分けされているということは、各エラーパターン情報が、それぞれが属するグループ毎に分類されて格納されていることであっても良い。また、各エラーパターン情報がグループ分けされているということは、各エラーパターン情報のエラーパターン識別子が、各エラーパターン情報が属するグループ毎に分類されて管理されていることであっても良い。また、また、各エラーパターン情報がグループ分けされているということは、各エラーパターン情報に、各エラーパターン情報が属するグループの識別子であるグループ識別子が対応付けられていることであっても良い。
エラーパターン情報格納部11には、1または2以上の集約情報が更に格納されていても良い。集約情報は、例えば、一のエラーパターン情報に集約される2以上のエラーパターン情報を特定する情報である。各集約情報は、例えば、一のエラーパターン情報に集約される集約対象となる二以上のエラーパターン情報またはそのエラーパターン情報識別子と、これらのエラーパターン情報の集約先となる一のエラーパターン情報またはそのエラーパターン識別子とを有する情報である。集約先のエラーパターン情報は、エラーパターン情報格納部11に格納されているエラーパターン情報であっても良いし、他のエラーパターン情報であっても良い。集約先のエラーパターン情報の代わりに、各集約情報は、更に、集約情報の識別子である集約情報識別子を有していても良い。集約情報が集約情報識別子を有する場合、集約先のエラーパターン情報は省略しても良い。集約情報で集約される二以上のエラーパターン情報は、同じ修正ツール等で修正可能なエラーをそれぞれ示す二以上のエラーパターン情報であることが好ましい。集約情報で集約される集約対象となる二以上のエラーパターン情報および集約先のエラーパターン情報は、一のグループに属するエラーパターン情報であることが好ましい。なお、以下においては、集約情報が、集約対象となる二以上のエラーパターン情報またはそのエラーパターン情報識別子と、集約先となる一のエラーパターン情報またはそのエラーパターン識別子とを有する情報である場合を例に挙げて説明する。
エラーパターン情報格納部11は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。かかることは、他の格納部においても同様である。
変換プログラム格納部12には、1または2以上の変換プログラムが格納される。変換プログラムは、エラーパターン情報格納部11に格納されている1以上の各エラーパターン情報に対応付けられたプログラムである。変換プログラムは、エラーパターン情報に対応するエラー情報が示すエラーを修正するプログラムや、エラーが発生しないようにするプログラムである。各変換プログラムは、例えば、変換部23により実行可能なプログラムである。各変換プログラムは、ソースプログラム内の、各変換プログラムが対応付けられているエラーパターン情報に対応する箇所を変換するプログラムである。ここでのソースプログラムとは、通常、変換前ソースを変換ツールに与えて起動した場合の出力に含まれるソースプログラムであり、変換ツールにより変換前ソースを変換して得られた変換後ソースである。ただし、ここでのソースプログラムは、変換前ソースと考えても良い。ソースプログラムの少なくとも一部を変換する変換プログラムについては、公知技術であるので、ここでは詳細な説明は省略する。
一の変換プログラムにより実行される変換とは、例えば、変換後のソースプログラムのエラーパターン情報に対応するエラー情報が示すエラーを修正することである。また、一の変換プログラムにより実行される変換とは、変換後のソースプログラムをエラーが発生しないよう変換することであってもよい。一の変換プログラムにより実行される変換は、例えば、変換前あるいは変換後ソース内の、この一の変換プログラムが対応付けられたエラーパターン情報に対応する箇所を、エラーが発生しないよう正常に変換することである。エラーパターン情報に対応する箇所とは、例えば、ソースプログラム内の、エラーパターン情報に対応するエラー情報が示すエラーの発生する箇所である。変換プログラム格納部12に格納される変換プログラムは、実行時に、ユーザ等が入力する変数等の入力を受け付け、この変数等を用いて、変換を行うものであっても良い。
変換プログラムと、エラーパターン情報との対応付けは、1対1であっても、1対多であっても良い。
変換プログラム格納部12には、例えば、後述する出現回数出力部21の出力結果に応じて、ユーザが作成、あるいは変更した変換プログラムが格納されるようにしても良い。例えば、ユーザが作成した、あるいは変更した変更プログラムと、1または2以上のエラーパターン情報とを、図示しない受付部や受付部22等が受け付け、この変更プログラムとエラーパターン情報とを対応付けて変換プログラム格納部12に蓄積するようにしてもよい。この蓄積は、同じエラーパターン情報と対応付けられた変更プログラムの上書きであっても良い。
変換前ソース格納部13には、1または2以上の変換前ソースが格納される。
変換ツール格納部14には、1または2以上の変換ツールが格納される。変換ツールは、具体的には、変換前ソースを与えて起動した場合に、変換後情報を出力するプログラムである。変換後情報については、後述する。
変換後情報格納部15には、1または2以上の変換後情報が格納される。変換後情報は、変換前ソースを変換ツールに与えて起動した場合の出力である。変換後情報は、変換後ソースと、1または2以上のエラー情報とを有する情報である。例えば、変換後情報は、変換後ソース内に、エラー情報等を配置した情報である。この場合、エラー情報は、例えば、変換後ソース内の、エラーに関連する箇所、例えば、エラーの発生する箇所等に配置される。
変換後ソース内において、エラー情報は、例えば、エラー情報であることが他のソースプログラムの部分に対して識別可能な態様で配置されることが好ましい。例えば、「エラー:」等の予め指定された文字列や、予め指定された文字や制御記号等のエラー箇所を特定する情報が、エラー情報の先頭や、末尾や、両端に配置されていることが好ましい。予め指定された文字は、プログラミング言語では使用されない文字(記号も含む)等であることが好ましい。このような変換後ソースにおいて、エラー情報が配置されている箇所を特定する情報を、ここでは、エラー情報特定情報と呼ぶ。エラー情報特定情報と、エラー箇所との位置関係を示す情報とは、例えば、予め図示しない格納部等に格納されていても良いし、後述するエラー情報取得部16が有していても良い。
また、エラー情報内において、ソースプログラムのエラーとなる箇所を示す情報は、エラー情報内の他の部分に対して識別可能な態様で配置されることが好ましい。例えば、「エラー対象箇所:」等の予め指定された文字列や、予め指定された文字や制御記号等のエラー箇所を特定する情報が、エラーとなる箇所を示す情報の先頭や、末尾や、両端に配置されていることが好ましい。予め指定された文字は、プログラミング言語では使用されない文字(記号も含む)等であることが好ましい。このような変換後ソースにおいて、エラーとなる箇所を示す情報が配置されている箇所を特定する情報を、ここでは、箇所特定情報と呼ぶ。箇所特定情報と、エラー情報内の、エラーとなる箇所を示す情報との位置関係を示す情報は、例えば、予め図示しない格納部等に格納されていても良いし、後述するエラー情報取得部16が有していても良い。また、エラーとなる箇所を示す情報は、アルファベットや数字、カタカナ、1バイトコード等の予め指定された属性を有する文字列であっても良い。
なお、エラー情報におけるエラーとなる箇所を指定する情報は、エラーパターン情報内の、予め指定された部分に対応した部分、例えば、所定の文字列や正規表現に対応した部分であってもよい。例えば、エラーパターン情報の「"AAA"」という正規表現に対応する部分が、エラーとなる箇所を指定する情報であるとすると、一のエラー情報が、「"AAA"は変換されませんでした。」というエラーパターン情報と一致した場合、エラーパターン決定部18は、エラー情報の「"AAA"」に対応する部分の情報を、箇所情報として取得しても良い。
また、エラー情報におけるエラーとなる箇所を指定する情報は、エラーパターン情報と対応付けられて、エラーパターン情報格納部11に予め格納されているようにしても良い。この場合、後述するエラーパターン決定部18は、エラー情報に一致するエラーパターン情報に対応付けられたエラー箇所を指定する情報が示す箇所を、箇所情報として取得するようにしても良い。例えば、一のエラー情報が、「"AAA"は変換されませんでした。」(ただし、"AAA"は正規表現であるとする)というエラーパターン情報と一致し、このエラーパターン情報には、エラーとなる箇所を示す情報として、「"AAA"」という情報が対応付けられていたとする。この場合、エラーパターン決定部18は、エラー情報の「"AAA"」に対応する部分の情報を、箇所情報として取得しても良い。
変換後情報は、例えば、テキストで構成される情報である。なお、エラー情報は、変換後ソース内に配置されていなくても良い。例えば、エラー情報は、変換後ソースと異なるファイル等として、変換後ソースと対応付けられて、変換後情報格納部105内に格納されていても良い。この場合、変換後情報は、変換後ソースと、エラー情報のファイルとを有する情報と考えても良い。
変換後情報格納部15に変換後情報が記憶される過程は問わない。この実施の形態においては、一例として、変換部23が、変換前ソース格納部13に格納されている変換前ソースを、変換ツール格納部14に格納されている変換ツールを用いて変換して取得した変換後情報が変換後情報格納部15に蓄積される場合を例に挙げて説明する。
エラー情報取得部16は、変換後情報格納部15に格納されている変換後情報から1以上のエラー情報を取得する。エラー情報取得部16は、例えば図示しない受付部等を介してユーザにより指定された変換後情報から、1以上のエラー情報を取得する。
エラー情報取得部16がどのように変換後情報からエラー情報を取得するかは問わない。エラー情報取得部16は、例えば、上述したエラー情報特定情報を利用してエラー情報を取得する。エラー情報取得部16は、例えば、変換後情報において、上述したエラー情報特定情報を順次検索し、検出したエラー特定情報に対して予め指定された位置関係にある文字列をエラー情報として取得する。例えば、変換ツールが、各エラー情報の先頭に「WARNING:」という文字列を付与し、末尾に改行コードを付与して、各エラー情報を変換後情報内に配置したとする。この場合、エラー情報取得部16は、例えば、変換後情報内において「WARNING:」というエラー情報特定情報で始まる行を順次検出し、検出した行の「WARNING:」以降の文字列を、エラー情報として順次取得する。ここでの行は、例えば、改行コードで区切られた文字列である。あるいは、エラー情報取得部16は、例えば、「WARNING:」以降の文字列であって、「。」(句点)が現れるまでの文字列をエラー情報として取得しても良い。
また、例えば、変換ツールが出力した変換後情報において、エラー情報が、「<?」と「?>」という二つのエラー特定情報に挟まれて配置されていたとする。この場合、エラー情報取得部16は、「<?」という第一のエラー特定情報を検索し、検出したエラー特定情報の直後の文字列から、次に「?>」という第二のエラー特定情報が現れる直前までの文字列を、エラー情報として順次取得するようにしても良い。また、エラー情報が変換後ソースと別のファイル等として存在している場合、このエラー情報のファイルから、順次、エラー情報を読み出すようにしても良い。
エラー箇所格納部17には、箇所情報とエラーパターン情報とが対応付けられて格納される。箇所情報は、変換後ソース内において、エラーとなる箇所を示す情報である。ただし、箇所情報が示す箇所は、変換後ソース内において、エラーとなる箇所を結果的に示していれば、変換後ソース内の箇所であっても、変換前ソース内の、変換ツールによる変換後にエラーとなる箇所であっても良い。箇所情報は、変換ツールを用いて正常に変換できなかった箇所を示す情報と考えても良い。箇所情報は、例えば、変換後ソース等のソースプログラム内の、エラーの対象となる関数名や、変数名や、クラス名である。エラーとなる箇所を示す情報は、通常は、予約語以外の文字列であるが、予約語や、予約語を含む文字列であっても良い。箇所情報は、ソースプログラム内の位置を示す行番号やオフセット、ID等であっても良い。箇所情報と対応付けられたエラーパターン情報は、例えば、対応付けられた箇所情報が示す箇所に関して発生するエラーのパターンを示す情報である。
エラー箇所格納部17に箇所情報とエラーパターン情報とが蓄積される過程は問わない。例えば、箇所情報とエラーパターン情報とを受け付ける図示しない受付部が、通信回線等を介して送信された箇所情報とエラーパターン情報との組や、図示しない格納部から読み出した箇所情報とエラーパターン情報との組を受け付け、受け付けた情報を、エラー箇所格納部17に蓄積するようにしても良い。ここでは、エラーパターン決定部が決定したエラー情報と箇所情報との組が、エラー箇所格納部17に格納される場合を例に挙げて説明する。エラーパターン情報と対応付けられて格納されるということは、エラーパターン情報の識別情報、例えばエラーパターンのIDと対応付けられて格納されることと考えても良い。
エラーパターン決定部18は、エラー情報取得部16が取得したエラー情報に対応する1以上のエラーパターン情報と箇所情報とを決定する。エラーパターン決定部18は、エラーパターン情報格納部11に格納されているエラーパターン情報の中から、エラー情報に対応するエラーパターン情報を決定する。ここでの決定は、検出したエラーパターン情報および箇所情報の取得と考えても良い。エラーパターン決定部18は、決定したエラーパターン情報と箇所情報とを対応付けて、エラー箇所格納部17に蓄積する。また、エラーパターン決定部18は、エラー情報、あるいはエラー情報が対応付けられているソースプログラム内の位置等から、箇所情報を取得する。
エラーパターン決定部18は、例えば、エラー情報取得部16が取得した各エラー情報の文字列とエラーパターン情報格納部11に格納されているエラーパターン情報の文字列との比較を行い、各エラー情報に一致するエラーパターン情報を検出する。ここでの一致とは通常は完全一致である。但し、ここでの一致は、部分一致であっても良い。エラーパターン決定部18は、例えば、エラー情報取得部16が取得した各エラー情報とエラーパターン情報格納部11に格納されているエラーパターン情報とのパターンマッチングを行い、各エラー情報に一致するエラーパターン情報を検出する。ここでの一致とは、通常は、パターンが完全に一致していることを指すが、マッチング率が、予め指定された閾値以上(例えば、90%以上等)である場合も一致すると判断しても良い。例えば、エラーパターン情報が正規表現を有するものである場合、エラー情報に対応するエラーパターン情報の検出には、パターンマッチングを利用する。なお、ここでのパターンマッチングは、例えば、変数以外の部分が一致しているか否かを判断する処理等であってもよい。
以下、エラーパターン決定部18によるエラーパターン情報の決定処理の例について説明する。ただし、エラーパターン決定部18がどのようにエラーパターン情報を決定するかについては問わない。
例えば、エラーパターン決定部18は、エラーパターン情報格納部11から一のエラーパターン情報を読み出す。そして、このエラーパターン情報が、正規表現を含むか否かを判断する。正規表現を含まない場合、エラー情報取得部16が取得した一のエラー情報と、読み出したエラーパターン情報とが一致するか否かを判断し、一致する場合、このエラーパターン情報をこの一のエラー情報に対応するエラーパターン情報として決定する。また、正規表現を含む場合、エラーパターン決定部18は、例えば、正規表現も含めてパターンマッチングを行い、パターンが完全にマッチングしている場合、このエラーパターン情報を、一のエラー情報に対応するエラーパターン情報として決定する。
エラーパターン情報のパターンマッチングの例について以下に簡単に説明する。一のエラーパターン情報が、例えば、k(kは二以上の整数)個の文字列の間に、k−1個の正規表現が個別に含まれているものであったとする。この場合、エラーパターン決定部18は、一のエラー情報内に、上記の一のエラーパターン情報のk個の文字列と一致する文字列が、それぞれ、エラーパターン情報に含まれている順番通りに含まれているか否かを判断する。ここでの一致は、通常、完全一致である。全てが順番通りに含まれていなければ、一致しないエラーパターン情報であると判断する。順番通りに全て含まれている場合、エラーパターン決定部18は、エラー情報における、一致すると判断された文字列の間に配置されている各文字列が、エラーパターン情報のk−1個の正規表現のうちの、同じ配列順番の各正規表現に対応する文字列であるか否かを判断する。対応する文字列であるか否かの判断は、例えば、正規表現が示す属性等を有する文字列であるか否かによって行われる。そして、全ての文字列が、同じ配列順番の正規表現に対応する文字列である場合、この一のエラーパターン情報を、一のエラー情報に一致するエラーパターン情報として決定する。同じ配列順番の正規表現に対応する文字列でない場合、エラーパターン決定部18は、一致しないエラーパターン情報であると判断する。
なお、ここでのパターンマッチングの処理は、一例であり、エラー情報と、エラーパターン情報とのパターンマッチングとしては、どのようなアルゴリズムのパターンマッチング処理を用いても良い。また、エラーパターン決定部18が行うエラー情報とエラーパターン情報とが一致するか否かの判断処理は、パターンマッチングの一形態、例えば、正規表現を用いないパターンマッチングと考えても良い。
次に、エラーパターン決定部18によるエラー情報から箇所情報を決定する処理の例について説明する。ただし、エラーパターン決定部18がどのように箇所情報を決定するかについては問わない。
例えば、エラーパターン情報格納部11に格納されているエラーパターン情報が、エラーとなる箇所を示す情報である文字列を正規表現化したエラーパターン情報である場合、エラーパターン決定部18は、上記のエラーパターン情報を決定する処理において検出した正規表現化された部分に対応する文字列、即ちエラーとなる箇所を示す情報を、箇所情報として決定しても良い。また、エラー情報内におけるエラーとなる箇所を示す情報が配置される位置が、予め指定されている場合、エラー情報のこの指定されている位置の情報を、箇所情報として決定しても良い。
また、エラー情報内において、エラーとなる箇所を示す情報の配置されている位置等が上述した箇所特定情報で指定されている場合、この箇所特定情報が示す位置の文字列等を、箇所情報として決定しても良い。例えば、箇所特定情報が2つの「"」(クオーテーション)である場合、エラー情報内のこの2つの「"」で囲まれた文字列を箇所情報として取得してもよい。あるいは、エラー情報の先頭や、末尾の指定された文字数の文字列や指定された区切文字で区切られた文字列を箇所情報として決定しても良い。また、予めエラーパターン情報格納部11にエラーパターン情報と、エラーパターン情報に対応するエラー情報内におけるエラー箇所を示す情報が配置される位置を示す情報が含まれている場合、エラーパターン決定部18は、この位置を示す情報が示す位置から、箇所情報を決定しても良い。また、エラー情報が、エラーとなる箇所を示す情報と、その他のエラーに関する情報とで構成される情報である場合、このエラーとなる箇所を示す情報を、箇所情報として決定してもよい。
また、エラー情報において、エラーとなる箇所に関する情報が、他の情報と異なる所定の属性を有する文字列等で示されている場合、エラー情報内の、この所定の属性を有する情報を、エラーとなる箇所を示す情報として取得しても良い。例えば、アルファベット及び数字の1以上で構成される文字列を、エラーとなる箇所を示す情報として取得しても良い。
また、エラーパターン決定部18は、エラーパターン情報格納部11に格納されている1以上のエラーパターン情報と集約情報とを用いて、エラー情報取得部16が取得した1以上の各エラー情報に対応するエラーパターン情報を決定するようにしても良い。集約情報を用いて、エラーパターン情報を決定するということは、具体的には、各エラー情報が対応するエラーパターン情報の集約先となる一のエラーパターン情報を、集約情報を用いて決定することと考えても良い。
例えば、エラーパターン決定部18は、エラーパターン情報格納部11に格納されている1以上のエラーパターン情報を用いて、エラー情報取得部16が取得した1以上の各エラー情報に対応するエラーパターン情報を決定する。そして、エラーパターン決定部18は、このエラーパターン情報を集約対象のエラーパターン情報として有する一の集約情報を検出する。そして、検出した集約情報が集約先のエラーパターン情報として有するエラーパターン情報を、エラー情報取得部16が取得した1以上の各エラー情報に対応するエラーパターン情報として決定する。これにより、一の集約情報が示す二以上のエラーパターン情報に対応するエラー情報を、この集約情報が集約先としてしめす一のエラーパターン情報に対応するエラー情報として決定することができる。
エラーパターン決定部18は、更に、エラー情報取得部16が取得した1以上の各エラー情報において、エラーパターン情報格納部11に格納されているいずれのエラーパターン情報にも対応しないエラー情報を検出しても良い。
出現回数取得部19は、エラー箇所格納部17に格納されるエラーパターン情報の、各エラーパターン情報毎の出現回数を取得して、出現回数格納部20に蓄積する。なお、ここでの格納されるエラーパターン情報は、結果的に格納されるエラーパターン情報を意味するものであり、格納される前のエラーパターン情報および格納後のエラーパターン情報のうちのいずれでもよい。例えば、出現回数取得部19は、エラーパターン決定部18が決定したエラーパターン情報の、各エラーパターン情報毎の出現回数を取得する。そして、出現回数取得部19は、取得した各エラーパターン情報毎の出現回数を、出現回数格納部20に蓄積してもよい。また、エラーパターン決定部18が決定してエラー箇所格納部17に蓄積したエラーパターン情報について、各エラーパターン情報毎の出現回数を取得、例えばカウントしてもよい。この場合も、ここでは、エラーパターン決定部18が決定したエラーパターン情報の、各エラーパターン情報毎の出現回数を取得することと考えてもよい。
出現回数取得部19は、例えば、エラーパターン決定部18が一のエラーパターン情報を検出する毎に、この検出したエラーパターン情報の出現回数の値を1インクリメントする。即ち、出現回数取得部19は、検出したエラーパターン情報の出現回数をカウントする。
出現回数取得部19は、さらにグループ毎にエラーパターン情報の出現回数を取得してもよい。即ち、出現回数取得部19は、グループ単位のエラーパターン情報の出現回数を取得してもよい。例えば、出現回数取得部19は、上記で取得した各エラーパターン情報毎の出現回数を、エラーパターン情報が属するグループ毎に集計する。なお、例えば、出現回数取得部19は、エラーパターン決定部18が一のエラーパターン情報を検出する毎に、この検出したエラーパターン情報に対応するグループの出現回数の値を1インクリメントして、グループに属するエラーパターン情報の出現回数を、グループの出現回数としてカウントしても良い。
なお、エラーパターン決定部18が一以上の集約情報によって集約されたエラーパターン情報を決定する場合、出現回数取得部19は、各集約情報が集約したエラーパターン情報についての出現回数を取得するようにしても良い。この場合、集約前の各エラーパターン情報については、通常、出現回数を取得しないが、出現回数を取得するようにしても良い。例えば、一の集約情報において、集約対象となっているエラーパターン情報が決定された場合に、出現回数取得部19は、この集約情報が集約先に指定するエラーパターン情報の出現回数をカウントアップする。また、出現回数取得部19は、一の集約情報によって集約される集約対象となる2以上のエラーパターン情報の出現回数を集計した値を、集約先のエラーパターン情報の出現回数として取得しても良い。
出現回数格納部20には、エラー箇所格納部17に箇所情報に対応付けられて格納されているエラーパターン情報の、各エラーパターン情報毎の出現回数が格納される。出現回数格納部20には、例えば、1以上のエラーパターン情報と、各エラーパターン情報がエラー箇所格納部17に格納されているエラーパターン情報において出現する回数とが対応付けられて格納される。出現回数格納部20には、例えば、出現回数取得部19が取得したエラーパターン情報毎の出現回数を示す情報が蓄積される。ここでの蓄積は一時記憶も含む概念である。
出現回数出力部21は、出現回数格納部20に格納されているエラーパターン情報毎の出現回数を出力する。出現回数出力部21は、例えば、出現回数取得部19が取得して、出現回数格納部20に一時記憶したエラーパターン情報毎の出現回数を出力してもよい。
出現回数出力部21は、グループ毎およびエラーパターン情報毎に、出現回数格納部20に格納されている出現回数を出力してもよい。グループ毎およびエラーパターン情報毎に出現回数を出力するということは、例えば、各エラーパターン情報を各エラーパターン情報が属するグループ毎に分類、あるいはソートして出力することと考えても良い。また、出現回数出力部21は、各グループ毎に、各グループに属するエラーパターン情報毎の出現回数の合計を出力してもよい。
また、出現回数出力部21は、集約情報により集約されたエラーパターン情報の出現回数を出力しても良い。この場合、出現回数出力部21は、集約前のエラーパターン情報の出現回数も出力するようにしても良いし、出力しないようにしても良い。
ここでの出現回数の出力は、出現回数をそのまま出力することであっても良いし、出現回数を指標化した値を出力することであっても良い。また、出現回数の出力は、出現回数の値の属する範囲を示す情報の出力でも良い。
ここでの出力とは、ディスプレイへの表示、プロジェクターを用いた投影、プリンタへの印字、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。
出現回数出力部21は、ディスプレイやプリンタ等の出力デバイスを含むと考えても含まないと考えても良い。出現回数出力部21は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
受付部22は、第二部分ソースプログラムを受け付ける。第二部分ソースプログラムは、出現回数が所定回数(所定回数は2以上である)未満であるエラーパターン情報に対応付けられた箇所情報が示す箇所に対応したソースプログラムである。第二部分ソースプログラムは、例えば、ユーザ等が図示しない入力デバイス等を介して手入力等で入力されるソースプログラムである。ここでの出現回数とは、例えば、出現回数格納部20に格納されている出現回数である。所定回数は、出現回数の閾値と考えても良い。
第二部分ソースプログラムは、例えば、変換後ソース内に配置される部分的なソースプログラムである。ここでの配置は、変換後ソースの少なくとも一部に対する追記や、置換、挿入等を含む概念である。第二部分ソースプログラムは、例えば、変換後ソースプログラムの書き換えに用いられる部分的なソースプログラムである。第二部分プログラムは、箇所情報が示すエラーとなる箇所に対応した部分的なソースプログラムである。第二部分プログラムは、箇所情報が示すエラーとなる箇所を修正するための部分的なソースプログラムである。エラーとなる箇所を修正する、とは、例えば、エラーとなる箇所を修復することや、エラーを無くすことである。なお、受付部22が受け付けた入力により、変換後ソースを構成する文字列の一文字以上を削除したり、置換したり、上書きしたり、一文字以上の文字列を挿入したりすることも、ここでは、第二部分ソースプログラムの取得と考えても良い。例えば、変換部23が、文字列の削除や、置換や上書き、挿入をおこなった第一部分ソースプログラムを取得したと考えて良い。この場合、文字列の削除や置換や上書き、挿入が行われた変換後ソースを、第一部分ソースプログラムで更新した変換後ソースと考えても良い。ソースプログラム内の文法的に誤った部分を削除することで、ソースプログラム内のこの削除した部分を有していた部分を正常なソースプログラムに置き換えたことと実質的に同じこととなるからである。
ここでの受け付けとは、キーボードやマウス、タッチパネルなどの入力デバイスから入力された情報の受け付け、有線もしくは無線の通信回線を介して送信された情報の受信、光ディスクや磁気ディスク、半導体メモリなどの記録媒体から読み出された情報の受け付けなどを含む概念である。
第二部分ソースプログラムの入力手段は、テンキーやキーボードやマウスやメニュー画面によるもの等、何でも良い。受付部22は、テンキーやキーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
変換部23は、第一部分ソースプログラムを取得する。変換部23は、エラー箇所格納部17に格納されているエラーパターン情報に対応する変換プログラムを用いて、このエラーパターン情報と対応付けられてエラー箇所格納部17に格納されている箇所情報が示す箇所を変換して第一部分ソースプログラムを取得する。そして、変換部23は、第一部分ソースプログラムと、変換前ソースを変換ツールに与えて変換した変換後ソースと、を用いて、新しいソースプログラムを作成する。変換部23は、例えば、変換後ソースのエラー情報が対応する箇所を、第一部分ソースプログラムに書き換え、新しいソースプログラムを作成する。変換部23は、例えば、変換後ソースに含まれるエラー情報が対応する箇所を、このエラー情報に対応するエラーパターン情報に対応する変換プログラムを用いて上記のように取得した第一部分ソースプログラムに書き換える。ここでの、エラー情報が対応する箇所とは、例えば、エラー情報から取得された箇所情報が示す箇所や、この箇所に関連してエラーとなる箇所である。エラー情報が対応する箇所は、例えば、エラー情報が示すエラーとなる箇所である。変換部23は、通常、変換後ソースの箇所情報が示す箇所を変換して第一部分ソースプログラムを取得するが、変換前ソースの箇所情報が示す箇所を変換して第一部分ソースプログラムを取得しても良い。
なお、変換プログラムによる第一ソースプログラムの作成および第一ソースプログラムによるソースプログラムの書き換えは、変換ツールと同様のソースプログラムの変換処理を、ソースプログラムの一部についてのみ行うものと考えてもよい。
エラーパターン情報に対応する変換プログラムとは、変換プログラム格納部12に、エラーパターン情報と対応付けられて格納されている変換プログラムである。例えば、変換部23は、エラー箇所格納部17に格納されている一のエラーパターン情報に対応する変換プログラムを、変換プログラム格納部12から検索等により取得する。また、変換部23は、この一のエラーパターン情報と対応付けられている箇所情報を、エラー箇所格納部17から取得する。そして、変換部23は、この一のエラーパターン情報と対応付けられている変換後ソースの、上記で取得した箇所情報が示す箇所を、上記で取得した変換プログラムを用いて変換して第一部分ソースプログラムを取得する。そして、第一部分ソースプログラムで、変換後ソースを部分的に更新することで、新しいソースプログラムを作成する。なお、第一部分ソースプログラムにより更新する部分は、エラーパターン情報や箇所情報が示す箇所等によって異なるため、変換プログラムが、この更新する部分を決定するようにしても良い。変換後ソース内の第一部分ソースプログラムによって変換される箇所は、第一ソースプログラムを生成する各変換プログラムに予め設定されているようにしても良い。ここでの更新は、例えば、ソースプログラムの書き換えである。ここでの更新は、例えば、エラーの修正や修復等と考えても良い。また、ここでの更新は、例えば、ソースプログラムの追記、置換、挿入等を含む概念である。変換プログラムを用いて変換する、ということは、変換プログラムを変換部23が実行して、変換を行うことと考えても良い。なお、変換後ソースを構成する文字列の一文字以上を削除したり、置換したり、上書きしたり、一文字以上の文字列を挿入したりすることも、ここでは、第一部分ソースプログラムの取得と考えても良い。例えば、変換部23が、文字列の削除や、置換や上書き、挿入をおこなった第一部分ソースプログラムを取得したと考えて良い。この場合、文字列の削除や置換や上書き、挿入が行われた変換後ソースを、第一部分ソースプログラムで更新した変換後ソースと考えても良い。なお、この例で示すように、通常は、更新対象となるソースプログラムは変換後ソースであるが、本願においては、更新対象となるソースプログラムは変換前ソースであっても良い。
なお、変換部23は、出現回数格納部20に格納されている出現回数を用いて、出現回数が所定回数以上であるエラーパターン情報に対応する箇所情報が示す箇所のみを、変換して第一部分ソースプログラムを取得してもよい。ここでの所定回数は2以上である。所定回数は、固定の値でなくてもよい。例えば、所定回数の値は、エラーパターン情報毎にそれぞれ指定された値であってもよい。また、所定回数の値は、予め指定されたルールにより変動する値や、ルールにより設定される値であっても良い。例えば、所定の回数の値は、ソースプログラムの文字数や行数、データサイズ、エラー情報の総数等に応じて(例えば、比例して)設定される値であってもよい。また、ソースプログラムの文字数や行数、データサイズ等に応じて、2以上の段階で設定される値であっても良い。箇所情報が示す箇所の変換は、例えば、変換プログラム格納部12にこの箇所情報に対応付けられて格納されている変換プログラムを用いて行われる。そして、変換部23は、取得した第一部分ソースプログラムと、受付部22が受け付けた第二部分ソースプログラムと、変換後ソースとを用いて、新しいソースプログラムを作成するようにしてもよい。
例えば、変換部23は、エラー箇所格納部17に格納されているエラーパターン情報について、その出現回数が所定回数(所定回数は2以上の整数)以上であるか否かを、出現回数格納部20に格納されている出現回数を用いて判断する。そして、所定回数以上である場合にのみ、このエラーパターン情報に対応する箇所情報を、エラー箇所格納部17から取得する。また、検出した各エラーパターン情報に対応する変換プログラムを、変換プログラム格納部12から取得する。そして、各エラーパターン情報について取得した箇所情報が示す箇所のみを、各エラーパターン情報について取得した変換プログラムを用いて変換して第一部分ソースプログラムを取得する。そして、取得した第一部分ソースプログラムと、受付部22が受け付けた第二部分ソースプログラムと、変換後ソースとを用いて、新しいソースプログラムを作成する。
また、この場合、例えば、変換部23が、出現回数が所定回数(所定回数は2以上の整数)未満であると判断したエラーパターン情報に対応する箇所情報が示す箇所についてのみ、受付部22が第二部分プログラムを受け付けるようにしてもよい。例えば、変換部23は、エラー箇所格納部17に格納されているエラーパターン情報について、出現回数格納部20に格納されている出現回数が所定回数(所定回数は2以上である)未満であるか否かを判断する。そして、受付部22は、変換部23により出現回数が所定回数未満であると判断されたエラーパターン情報に対応する箇所情報が示す箇所に関してのみ、第二部分ソースプログラムを受け付けるようにしてもよい。例えば、受付部22は、出現回数が所定回数未満であると判断されたエラーパターン情報に対応する箇所情報が示す箇所に関してのみ、第二部分ソースプログラムを受け付けるためのインターフェース画面やメニュー画面等を出力しても良い。
なお、変換プログラム格納部12に、変換部23が出現回数が所定回数以上であると判断したエラーパターン情報に対応する変換プログラムが格納されていない場合等においては、ユーザが作成したこのエラーパターン情報と対応付けられた変換プログラムを、図示しない受付部や受付部22等が受け付けて、変換プログラム格納部12に蓄積するようにしても良い。あるいは、出現回数出力部21の出力結果において、出現回数が所定回数以上であると判断したエラーパターン情報に対応する変換プログラムが格納されていない場合等においては、ユーザが生成したエラーパターン情報と対応付けられた変換プログラムを、図示しない受付部や受付部22等が受け付けて、変換プログラム格納部12に蓄積するようにしても良い。そして、変換部23は、ここで受け付けた変換プログラムを用いて、第二部分ソースプログラムを取得する処理を行っても良い。このようにすることで、出現回数が所定回数以上であるエラーパターン情報と対応付けられたエラーとなる箇所については、変換プログラムを用意して、自動変換させることができる。
ソースプログラム出力部24は、変換部23が作成した新しいソースプログラムを出力する。新しいソースプログラムとは、例えば、変換前ソースをマイグレーションした変換後ソースである。新しいソースプログラムは、例えば、変換ツールにより得られた変換後ソースから、エラーを解消したソースプログラムである。
ここでの出力とは、ディスプレイへの表示、プロジェクターを用いた投影、プリンタへの印字、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。
ソースプログラム出力部24は、ディスプレイ等の出力デバイスを含むと考えても含まないと考えても良い。ソースプログラム出力部24は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
エラーパターン情報登録部25は、エラー情報取得部16が取得したエラー情報のうちの、エラーパターン決定部18がエラーパターン情報格納部11に格納されているいずれのエラーパターン情報にも対応しないと判断したエラー情報に関する情報を、新しいエラーパターン情報として、エラーパターン情報格納部11に蓄積する。ここでの蓄積は、例えばエラーパターン情報の追記である。ここでのエラー情報に関する情報は、エラー情報そのものであっても良いし、エラー情報に、予め指定された文字列等を付与した情報であっても良い。また、ここでのエラー情報に関する情報は、エラー情報の一部を予め指定されたルール等に応じてエラーパターン情報登録部25が正規表現化したものであっても良い。例えば、エラーパターン情報登録部25は、エラー情報のアルファベット等の予め指定された属性を有する連続した二以上の文字で構成されている文字列を検出し、この部分を二以上の予め指定された属性を有する文字で構成された文字列を表す正規表現で置き換えたエラーパターン情報を蓄積しても良い。あるいは、予め登録されている一群の文字列のいずれか一つに一致する文字列をエラー情報から検出し、検出したこの文字列を、この文字列の群に対応付けられた正規表現に置き換えたエラーパターン情報を蓄積しても良い。
次に、情報処理装置1の動作の一例について図2のフローチャートを用いて説明する。
(ステップS101)情報処理装置1は、図示しない受付部や受付部22等を介して、変換前ソース格納部13に格納されている一の変換前ソースを変換ツールを用いて変換する指示を受け付けたか否かを判断する。変換に利用可能な変換前ソースが変換ツール格納部14に2以上格納されている場合、この指示は、変換ツールを指定する指示を更に有していても良い。受け付けた場合、ステップS102に進み、受け付けていない場合、ステップS107に進む。
(ステップS102)変換部23は、変換対象となる変換前ソースを変換前ソース格納部13から読み出す。
(ステップS103)変換部23は、変換ツール格納部14から変換に利用する変換ツールを読み出す。この変換ツールは、例えば、ステップS101で指定された変換ツールである。
(ステップS104)変換部23は、ステップS103で読み出した変換ツールを用いて、ステップS102で読み出した変換前ソースを変換して変換後情報を取得する。例えば、変換部23は、変換ツールを実行して、変換前ソースを変換する。
(ステップS105)変換部23は、ステップS104で取得した変換後情報を、変換後情報格納部15に蓄積する。
(ステップS106)情報処理装置1は、ステップS105で蓄積した変換後情報を用いて、エラーパターン情報の出現状況を取得する処理を行う。この処理の詳細については、後述する。
(ステップS107)情報処理装置1は、図示しない受付部や受付部22等を介して、変換後情報格納部15に格納されている一の変換後情報を、変換プログラムを用いて変換する指示を受け付けたか否かを判断する。受け付けた場合、ステップS108に進み、受け付けていない場合、ステップS101に戻る。
(ステップS108)変換部23は、カウンターpの値に1を代入する。
(ステップS109)変換部23は、ステップS107で指定された一の変換後情報に対応したp番目の箇所情報があるか否かを判断する。ある場合、ステップS110に進み、ない場合、ステップS120に進む。
(ステップS110)変換部23は、p番目の箇所情報に対応付けられたエラーパターン情報を、エラー箇所格納部17から読み出す。なお、ここでのエラーパターン情報の読み出しは、エラーパターン情報の識別子を読み出しと考えても良い。
(ステップS111)変換部23は、ステップS110で取得したエラーパターン情報に対応する出現回数の値を、出現回数格納部20から読み出す。
(ステップS112)変換部23は、ステップS111で読み出した出現回数が、所定回数(所定回数は二以上である)以上であるか否かを判断する。所定回数以上である場合、ステップS113に進み、所定回数未満である場合、ステップS117に進む。
(ステップS113)変換部23は、ステップS110で読み出したエラーパターン情報と一致するエラーパターン情報と対応付けられた変換プログラムを、変換プログラム格納部12から読み出す。つまり、p番目の箇所情報に対応する変換プログラムを読み出す。
(ステップS114)変換部23は、ステップS113で読み出した変換プログラムを用いて、ステップS107で指定された一の変換後情報に含まれる変換後ソースのp番目の箇所情報が示す箇所を変換して第一部分ソースプログラムを取得する。
(ステップS115)変換部23は、ステップS114で取得した第一部分ソースプログラムで、変換後ソースを書き換える。書き換える際、p番目の箇所情報に対応するエラー情報等は削除して良い。
(ステップS116)変換部23は、カウンターpの値を1インクリメントする。そして、ステップS109に戻る。
(ステップS117)情報処理装置1の図示しない出力部等が、p番目の箇所情報が示す箇所に対する第二部分ソースプログラムの入力画面を出力する。入力画面を出力する代わりに、出力部等が、第二部分ソースプログラムの入力を促すダイアログ等を出力しても良い。
(ステップS118)受付部22は、第二部分ソースプログラムを受け付けたか否かを判断する。受け付けた場合、ステップS119に進み、受け付けていない場合、ステップS118に戻る。
(ステップS119)変換部23は、ステップS118で受け付けた第二部分ソースプログラムで、変換後ソースを書き換える。書き換える際、p番目の箇所情報に対応するエラー情報等は削除して良い。そして、ステップS116に進む。
(ステップS120)ソースプログラム出力部24は、変換部23により変換された新しいソースプログラムを出力する。そして、ステップS101に戻る。
なお、図1のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
次に、情報処理装置1のエラーパターン情報の出現状況を取得する処理の詳細の一例について図3のフローチャートを用いて説明する。この処理は、図2に示すフローチャートのステップS106の処理に相当する処理であり、図2に示したフローチャートのステップS105において変換部23が蓄積した変換後情報についてのエラーパターン情報の出現状況を取得する処理である。
(ステップS201)出現回数取得部19は、エラーパターン情報格納部11に格納されている各エラーパターン情報に対する出現回数の値を、「0」にセットする。この処理は出現回数の値をリセットすることと考えても良い。
(ステップS202)エラー情報取得部16は、カウンターmの値に1を代入する。
(ステップS203)エラー情報取得部16は、図2に示したフローチャートのステップS105において変換部23が蓄積した変換後情報から、m番目のエラー情報を検出する処理を行い、m番目のエラー情報が検出できたか否かを判断する。エラー情報は、検出できた場合、ステップS204に進み、検出できなかった場合、ステップS221に進む。
(ステップS204)エラーパターン決定部18は、カウンターnの値に1を代入する。
(ステップS205)エラーパターン決定部18は、エラーパターン情報格納部11にn番目のエラーパターン情報が格納されているか否かを判断する。格納されている場合、ステップS206に進み、格納されていない場合、ステップS219に進む。
(ステップS206)エラーパターン決定部18は、n番目のエラーパターン情報を読み出す。
(ステップS207)エラーパターン決定部18は、n番目のエラーパターン情報に正規表現が含まれているか否かを判断する。含まれている場合、ステップS210に進み、含まれていない場合、ステップS208に進む。
(ステップS208)エラーパターン決定部18は、n番目のエラーパターン情報と、m番目のエラー情報とが一致するか否かの判断を行う。一致した場合、ステップS213に進み、一致していない場合、ステップS209に進む。
(ステップS209)エラーパターン決定部18は、カウンターnの値を1インクリメントする。そして、ステップS205に戻る。
(ステップS210)エラーパターン決定部18は、n番目のエラーパターン情報と、m番目のエラー情報とのパターンマッチングを行う。
(ステップS211)エラーパターン決定部18は、ステップS210のパターンマッチングの結果、n番目のエラーパターン情報と、m番目のエラー情報とが一致したか否か判断し、一致した場合、ステップS2130に進む。また、一致していない場合、ステップS212に進む。
(ステップS212)エラーパターン決定部18は、カウンターnの値を1インクリメントする。そして、ステップS205に戻る。
(ステップS213)エラーパターン決定部18は、n番目のエラーパターン情報に対応する集約情報があるか否かを判断する。具体的には、n番目のエラーパターン情報を、集約対象のエラーパターン情報に指定する集約情報があるか否かを判断する。ある場合、ステップS215に進み、ない場合、ステップS214に進む。
(ステップS214)出現回数取得部19は、エラーパターン情報格納部11に格納されているn番目のエラーパターン情報の出現回数に値を1インクリメントする。そして、ステップS216に進む。
(ステップS215)出現回数取得部19は、エラーパターン情報格納部11に格納されているエラーパターン情報毎の出現回数の値のうちの、ステップS213で検出した集約情報が示す集約先のエラーパターン情報の出現回数の値を1インクリメントする。そして、ステップS216に進む。
(ステップS216)エラーパターン決定部18は、m番目のエラー情報に対応するエラーとなる箇所を示す箇所情報を取得する。
(ステップS217)エラーパターン決定部18は、n番目のエラーパターン情報と、ステップS216で取得した箇所情報とを対応付けて、エラー箇所格納部17に蓄積する。n番目のエラーパターン情報の代わりに、n番目のエラーパターン情報の識別子等を対応付けて蓄積することも、ここでは、エラーパターン情報を対応付けて蓄積することと考えて良い。かかることは、他の情報についても同様である。
(ステップS218)エラー情報取得部16は、カウンターmの値を1インクリメントする。そして、ステップS203に戻る。
(ステップS219)エラーパターン情報登録部25は、m番目のエラー情報に関する情報を、新たなエラーパターン情報として登録する。具体的には、エラーパターン情報登録部25は、m番目のエラー情報に関する情報を、エラーパターン情報格納部11に蓄積する。
(ステップS220)出現回数取得部19は、ステップS219で登録したエラーパターン情報の出現回数を1に設定する。そして、ステップS216に戻る。
(ステップS221)出現回数取得部19は、取得したエラーパターン情報の出現回数の値を、グループ毎に集計する。出現回数取得部19が取得したエラーパターン情報毎の出現回数の値は、例えば、出現回数格納部20に格納されているエラーパター情報との出現回数のカウント値である。出現回数取得部19は、集計結果をグループ毎に出現回数格納部20に蓄積する。例えば、出現回数取得部19は、集計結果をグループの識別情報等と対応付けて蓄積する。
(ステップS222)出現回数出力部20は、出現回数取得部19が取得したエラーパターン情報毎の出現回数と、グループ毎の出現回数とを出力する。そして、上位の処理にリターンする。
以下、本実施の形態における情報処理装置1の具体的な動作について一例を挙げて説明する。情報処理装置1の概念図は図1である。
図4は、エラーパターン情報格納部11に格納されているエラーパターン情報を管理するエラーパターン管理情報を示す図である。エラーパターン管理情報は、「パターンID」と、「エラーパターン」という属性を有している。「パターンID」は、エラーパターン識別情報である。「エラーパターン」は、エラーパターン情報である。なお、エラーパターン情報内において、ここでは、一例として、「"xxx"」が、一文字以上の任意の文字列を示す正規表現であるとする。また、ここでは、一例として、エラー情報のアルファベットまたは数字で構成された文字列のうちの、「'」で挟まれた文字列を除いた文字列が、変換後ソースにおいて、エラーとなる箇所を示す情報であるとする。
図5は、エラーパターンで構成されるグループを管理するグループ管理情報を示す図である。グループ管理情報は、ここでは、エラーパターン情報格納部11に格納されているものとする。グループ管理情報は、「パターンID」と、「グループID」と、「グループ名」という属性を有している。「パターンID」は、エラーパターン識別情報である。「グループID」は、対応する「パターンID」が示すエラーパターン情報が属するグループのグループ識別情報である。「グループ名」は、グループの名称であり、ここでは、グループを構成するエラーパターン情報がどのようなエラーであるかを分類した分類名をグループの名称として用いている。
図6は、集約情報を管理する集約情報管理情報を示す図である。集約情報は、ここでは、エラーパターン情報格納部11に格納されているものとする。集約情報管理情報は、「対象パターンID」と、「集約先パターンID」という属性を有している。「対象パターンID」は、集約の対象となるエラーパターン情報のエラーパターン識別子である。「集約先パターンID」は、集約先のエラーパターン情報のエラーパターン識別子である。ここでは、一の「対象パターンID」と対応付けられたエラーパターン情報と一致するエラー情報が一つ検出された場合、この一の「対象パターンID」に対応付けられた「集約先パターンID」が示すエラーパターン情報の検出数が1インクリメントされる。一の集約情報は、この集約情報管理情報における一の「集約先パターンID」と、この一の「集約先パターンID」と対応付けられた複数の「対象パターンID」とで構成されている。ここでは、一例として、一のエラーパターン情報に集約される複数のエラーパターン情報は、同じ手法や、同じエラー修正ツール(図示せず)等を用いて修正可能なエラー情報に対応するエラーパターン情報であるとする。
図7は、変換前ソース格納部13に格納されている変換前ソースの一例を示す図であり、変換前ソースの一部を抜粋して示している。例えば、この変換前ソースのファイル名は、「prg001.vb」であるとする。
また、変換ツール格納部14には、上記のファイル名が、「prg001.vb」である変換前ソースを、他の環境で実行可能なソースプログラムに自動変換する変換ツールである「converter.exe」というプログラムが格納されているものとする。図4に示したエラーパターン情報は、この一の変換ツールが出力しうるエラーパターン情報であるとする。
ユーザが、情報処理装置1の図示しない受付部等に、変換前ソース格納部13に格納されているファイル名が「prg001.vb」である変換前ソースを、「converter.exe」という変換ツールに与えて起動させる指示を与えたとする。変換部23は、この指示に応じて、変換ツール格納部14に格納されている変換ツール「converter.exe」を読み出して起動し、変換前ソース格納部13に格納されている変換前ソース「prg001.vb」を読み込んで予め指定された仕様のソースプログラムに自動変換し、変換後情報を生成する。そして、生成した変換後情報を、変換後情報格納部15に蓄積する。生成した変換後情報は、変換前ソースを予め指定された仕様に変換した変換後ソース内の、エラーとなる1以上の箇所に、発生するエラーに対応するエラー情報をそれぞれ配置したものであるとする。
図8は、変換後情報格納部15に格納された変換後情報の一例を示す図であり、図7に示した変換前ソースを、変換ツール「converter.exe」により変換して得られた変換後情報の一部を抜粋して示したものである。この変換後情報は、エラー情報71〜73等を備えている。この一部は、図7に表示されている変換前ソースの一部に対応した部分であるとする。図8に示す変換後情報のファイル名は、「converted.vb」であるとする。
なお、本具体例において示す変換前ソースや、変換後情報に含まれる変換後のソースプログラム等は、説明のための便宜上のものであって、必ずしも実際に実行可能なものではなく、また、変換の前後のプログラミング言語の仕様に必ずしも沿ったものではない。
図9は、エラーパターン情報の出現回数の集計結果を管理するためのパターン集計情報を示す図である。パターン集計情報は、出現回数格納部20に格納される。パターン集計情報は、「パターンID」と「集計」という属性を有している。「パターンID」は、エラーパターン識別情報であり、「集計」は、エラーパターン情報の出現回数であり、ここでは、エラーパターン決定部18が決定したエラーパターン情報のカウント数で順次更新される。なお、「パターンID」においては、集約情報で他のエラーパター情報に集約されるエラーパターン情報に対応するエラーパターン識別子は、ここでは、除外されている。ただし、対応するエラーパターン識別子を除外しないようにしても良い。
出現回数取得部19は、上記で取得した変換後情報「converted.vb」におけるエラーパターン情報の出現回数をカウントするため、エラーパターン情報格納部11に格納されている各エラーパターン情報の出現回数の値を「0」に設定する。具体的には、出現回数取得部19は、図9に示すように、パターン集計情報の「集計」に対応する各属性値を「0」に設定する。
エラー情報取得部16は、「converted.vb」という変換後情報のファイルから、1番目のエラー情報を取得する。ここでは、変換後情報を得るために用いた変換ツール「converter.exe」の仕様が、エラー情報として、文頭が、「'UPGRADE_WARNING:」という文字列(即ち、エラー箇所特定情報)で、文末が「。」(句点)で区切られたデータを変換後ソース内に出力する仕様であり、更に、その後には、エラー情報をサポートするための情報として、エラー情報の詳細な内容を示す情報のアドレス等を示す情報を出力する仕様であったとする。エラー情報取得部16は、変換後情報の先頭から、検索により、「'UPGRADE_WARNING:」というエラー箇所特定情報と一致する文字列を検出する。そして、エラー情報取得部16は、1番目に検出された「'UPGRADE_WARNING:」という文字列の直後から、最初に現れる「。」(句点)までの文字列を、エラー情報として取得する。ここでは、エラー情報をサポートするための情報は取得しないものとする。
ここでエラー情報取得部16が取得した1番目のエラー情報は、例えば、「オブジェクトdtDataの既定プロパティを解決できませんでした」という文字列であったとする。エラー情報取得部16は、取得したエラー情報を図示しない記憶媒体等に一時記憶する。
次に、エラーパターン決定部18は、図4に示したエラーパターン管理情報から、1番目(ここでは一行目)のエラーパターン情報とエラーパターン識別子とを取得する。ここでは、「パターンID」が「101」である「エラーパターン」の属性値である「固定長文字列のサイズはバッファに合わせる必要があります」と、その「パターンID」の値とを取得する。
エラーパターン決定部18は、取得した1番目のエラーパターン情報が、正規表現を含むか否かを判断する。ここでは、1番目のエラーパターン情報が「"xxx"」を含まないため、エラーパターン決定部18は、正規表現を含まないと判断する。このため、エラーパターン決定部18は、エラー情報取得部16が取得した1番目のエラー情報の文字列と、1番目のエラーパターン情報の文字列とを、例えば先頭から一文字ずつ比較していき、1番目のエラー情報の文字列と、1番目のエラーパターン情報の文字列とが一致するか否かを判断する。
ここでは、一致しないと判断されたとすると、エラーパターン決定部18は、図4に示したエラーパターン管理情報から、2番目(ここでは二行目)のエラーパターン情報「オブジェクト"xxx"の既定プロパティを解決できませんでした」を取得する。次に、この2番目のエラーパターン情報が正規表現を含むか否かを判断する。ここでは、「"xxx"」を含むため、エラーパターン決定部18は、正規表現を含むと判断する。このため、エラーパターン決定部18は、1番目のエラー情報と、2番目のエラーパターン情報とのパターンマッチングを行う。
具体的には、エラーパターン決定部18は、2番目のエラーパターン情報から、正規表現である「"xxx"」の部分の前の文字列である「オブジェクト」を取り出し、エラー情報の先頭の文字列が、この取り出した文字列「オブジェクト」と一致するか否かを判断する。一致しなければ、エラー情報とエラーパターン情報が一致しないと判断する。ここでは、一致するため、エラーパターン決定部18は、2番目のエラーパターン情報から、正規表現の後の文字列である「の既定プロパティを解決できませんでした」を取り出し、エラー情報の末尾の文字列が、この取り出した文字列と一致するか否かを判断する。一致しなければ、エラー情報とエラーパターン情報が一致しないと判断する。ここでは、一致するため、更に、エラーパターン決定部18は、エラー情報内の、エラーパターン情報の正規表現の前後の文字列と一致すると判断された文字列間の文字列「dtData」が、正規表現「"xxx"」に対応する属性の文字列であるか否かを判断する。ここでは、正規表現「"xxx"」が一文字以上の任意の文字列を示すものであるとすると、エラーパターン決定部18は、文字列が正規表現に対応する属性の文字列であると判断する。これにより、エラーパターン決定部18は、1番目のエラー情報と、2番目のエラーパターン情報とが一致すると判断し、1番目のエラー情報に対応するエラーパターン情報として、「パターンID」が「102」である2番目のエラーパターン情報を決定する。なお、文字列が正規表現に対応する属性の文字列でない場合、エラーパターン決定部18は、エラー情報とエラーパターン情報が一致しないと判断する。
エラーパターン決定部18が、「パターンID」が「102」である2番目のエラーパターン情報を1番目のエラー情報に対応するエラーパターン情報として決定した。このため、出現回数取得部19は、図6に示した集約情報管理情報の「対象パターンID」の属性値に、エラーパターン決定部18が決定したエラーパターン情報の「パターンID」である「102」と一致するものがあるか否かを判断する。
ここでは、一致するものがないため、出現回数取得部19は、「パターンID」が「102」であるエラーパターン情報の出現回数の値を1インクリメントする。具体的には、図9に示したパターン集計情報の「パターンID」が「102」であるレコード(行)の「集計」の値に1を加算する。
なお、仮に、図6に示した集約情報管理情報の「対象パターンID」の属性値に、エラーパターン決定部18が決定したエラーパターン情報の「パターンID」である「102」と一致するものがあったとする。この場合、出現回数取得部19は、「対象パターンID」が「102」であるレコード(行)に対応する「集約先パターンID」の属性値を取得し、取得した属性値が示すエラーパターン情報の出現回数の値を1インクリメントする。例えば、取得した「集約先パターンID」が「123」であったとすると、出現回数取得部19は、「パターンID」が「123」であるエラーパターン情報の出現回数の値を1インクリメントする。これにより、例えば、同じエラーを修正するツール等で修正可能なエラー情報等を、一のエラー情報として集約してカウントすることが可能となる。
また、仮に、エラーパターン決定部18が、2番目のエラーパターン情報が、1番目のエラー情報に対応するエラーパターン情報でないと判断したとする。この場合、エラーパターン決定部18は、3番目以降のエラーパターン情報についても、同様に、1番目のエラー情報に対応するエラーパターン情報を検出する処理を行う。そして、一致するエラーパターン情報が検出された場合、このエラーパターン情報、もしくはこのエラーパターン情報の集約先となるエラーパターン情報の出現回数を1インクリメントする。
つぎに、エラーパターン決定部18は、1番目のエラー情報から、箇所情報を取得する。例えば、ここでは、変換ツール「converter.exe」は、上述したように、エラー情報として、エラーとなる箇所を示す情報のみが、アルファベットまたは数字で構成される文字列を有するエラー情報を出力する仕様であるとする。ただし、「'」で囲まれたアルファベットはエラーとなる箇所を示す情報から除外するものとする。この場合、エラーパターン決定部18は、1番目のエラー情報から、アルファベットの文字列である「dtData」を、箇所情報として取得する。
エラーパターン決定部18は、上記で決定した「パターンID」が「102」であるエラーパターン情報と、箇所情報「dtData」とを対応付けて、エラー箇所格納部17に蓄積する。ここでは、パターンID「102」と、箇所情報「dtData」とを対応付けて、エラー箇所格納部17に蓄積する。
図10は、エラー箇所格納部17に格納されているエラーパターン情報と箇所情報とを管理するエラー箇所管理情報の一例を示す図である。エラー箇所管理情報は、エラーパターン情報の識別子である「パターンID」と、箇所情報である「箇所」という属性を有している。一のレコード(行)の「パターンID」の値と、「箇所」の値とは、互いに対応付けられているものとする。なお、ここでは、説明の便宜上、既に、他のパターンIDと箇所情報との組も蓄積された状態のエラー箇所管理情報の例を示している。なお、ここでは省略しているが、エラー箇所管理情報、あるいはエラー箇所管理情報の各レコードは、エラーパターン情報や箇所情報の取得対象となった変換後情報と対応付けて、エラー箇所格納部17に格納されているものとする。例えば、エラー箇所管理情報、あるいはそのレコードは、エラーパターン情報や箇所情報の取得対象となった変換後情報のファイル名等と対応付けて、エラー箇所格納部17に格納されているものとする。かかることは、変換後情報について取得されるパターン集計情報等の他の情報についても同様である。
なお、仮に、1番目のエラー情報に対応するエラーパターン情報が、エラーパターン情報格納部11に格納されているエラーパターン情報の中になかった場合を考える。この場合、エラーパターン情報登録部25は、1番目のエラー情報に関する情報を、新しいエラーパターン情報として登録する。具体的には、エラーパターン情報登録部25は、1番目のエラー情報に関する情報を、エラーパターン情報格納部11に蓄積する。例えば、エラーパターン情報登録部25は、1番目のエラー情報「オブジェクトdtDataの既定プロパティを解決できませんでした」を、そのまま、新しいエラーパターン情報として登録しても良い。また、エラーパターン情報登録部25は、1番目のエラー情報の予め指定された属性を有する部分、例えば、アルファベットで記載された部分を、正規表現に置き換えて得られた情報を新たなエラーパターン情報として登録しても良い。この場合、登録されるエラーパターン情報は、例えば、「パターンID」が「102」であるエラーパターン情報と同じものとなる。なお、新たに登録するエラーパターン情報が属するグループを、エラーパターン情報登録部25が、どのように決定しても良い。例えば、エラーパターン情報登録部25は、新たに登録するエラーパターン情報を、デフォルト等で指定されているグループ(例えば、「新規登録エラー」等)にグループ分けするようにしても良い。また、新たにエラーパターン情報を登録した際に、このエラーパターン情報に対応する出現回数は、例えば、「1」に設定する。また、このエラー情報についても、上記と同様に箇所情報を取得し、エラーパターン情報と対応付けてエラー箇所格納部17に蓄積する。
1番目のエラー情報に対応するエラーパターン情報の出現回数を1インクリメントする処理、または、1番目のエラー情報に関する情報を新たなエラーパターン情報として登録する処理が終了した場合、情報処理装置1は、ファイル名が「converted.vb」である変換後情報に含まれる2番目以降の各エラー情報についても、上記と同様の処理を行う。
そして、ファイル名が「converted.vb」である変換後情報に含まれる全てのエラー情報について上記の処理が終了したとする。
図11は、全てのエラー情報について上記の処理が終了した後の、出現回数格納部20に格納されているパターン集計情報を示す図である。このパターン集計情報が、出現回数取得部19が取得したエラーパターン情報毎の出現回数を示す情報である。
出現回数取得部19は、図11に示したパターン集計情報と、図5に示したグループ管理情報とを用いて、エラーパターン情報の出現回数を、グループ毎に合計する。具体的には、出現回数取得部19は、図5に示したグループ管理情報から、「グループID」毎に、各「グループID」と対応付けられた1以上の「パターンID」を取得する。そして、出現回数取得部19は、この取得した1以上の「パターンID」のそれぞれと対応付けられた「集計」の属性値(即ちエラーパターン情報の出現回数)を、図11に示したパターン集計情報から読み出し、集計していく。これにより、出現回数取得部19は、「グループID」毎の集計数を取得する。
図12は、出現回数取得部19が、「グループID」毎に取得したエラーパターン情報の出現回数の合計を管理するためのグループ回数管理情報を示す図である。グループ回数管理情報において、「グループID」は、グループ識別情報であり、「回数」は、「グループID」が示すグループに属するエラーパターン情報の出現回数の合計である。
出現回数出力部21は、図11に示したパターン集計情報が示すエラーパターン情報毎の出現回数と、図11に示したグループ回数管理情報が示すグループ毎のエラーパターン情報の出現回数を出力する。ここでは、一例として、出現回数出力部21は、パターン集計情報が示すエラーパターン情報の出現回数を、各エラーパターン情報が属するグループ毎に分類して並べて出力する。出現回数出力部21は、例えば、図5に示したグループ管理情報が示すグループ毎に、各グループを構成する各「パターンID」が示す各エラーパターン情報に対応する出現回数の値である「集計」の値を、図11に示したパターン集計情報から取得する。また、出現回数出力部21は、「集計」の値を取得した各エラーパターン情報を、図4に示したエラーパターン管理情報から取得する。また、出現回数出力部21は、図5に示したグループ管理情報が示すグループ毎に、各グループに対応する「グループ名」の属性値を取得するとともに、各グループ毎に各グループに属するエラーパターン情報の出現回数の合計を、図12に示したグループ回数管理情報から取得する。そして、出現回数出力部21は、各グループに属するエラーパターン情報と、各エラーパターン情報の出現回数とをグループ毎に分類して並べて出力するとともに、各グループに属するエラーパターン情報と対応付けて、グループ毎に取得したエラーパターン情報の出現数の合計と、「グループ名」の属性値とを出力する。ここでは一例として、出現回数出力部21は、これらの情報を、モニタ21aに出力する。
図13は、出現回数出力部21が出力するエラーパターン情報の出現回数の表示例を示す図である。このように出力されたエラーパターン情報の出現回数を見ることで、ユーザは、どのようなエラーが存在し、エラーの修正にどのような作業がどの程度の量だけ必要かということ等を正確に見積もることが可能となる。
図14は、変換プログラム格納部12に格納されている変換プログラムを管理する変換プログラム管理情報である。変換プログラム管理情報は、「パターンID」と「プログラム」という属性を有している。「パターンID」は、エラーパターン情報の識別子である。「プログラム」は、変換プログラムのファイル名であるとする。なお、一の変換プログラムが、複数のエラーパターン情報を変換可能である場合、複数のエラーパターン情報と対応付けられた変換プログラムが、同じ変換プログラムであっても良い。
図15は、変換プログラム格納部12に格納されている変換プログラムの処理内容を示す図である。「プログラム」は変換プログラムのファイル名であり、「処理内容」は、変換プログラムが、変換後情報内の箇所情報が示す箇所に対応した第一部分ソースプログラムを作成するための処理内容を示す。ただし、ここでの「処理内容」は、説明の便宜上、処理の内容を自然言語で説明したものであって、実際には、例えば、これらの自然言語に相当する一以上の関数や、メソッド名や、「if」、「then」等で示される制御構文等で構成されていてもよい。また、「処理内容」は、これらの自然言語に対応する判断処理等を行うためのアルゴリズムであっても良い。また、ここでの処理内容は、説明のための便宜上のものであって、必ずしも実際のエラーを修正できるものではない。
次に、ユーザが、情報処理装置1の図示しない受付部等に対し、上記で取得した変換後情報「converted.vb」を変換プログラム格納部12に格納されている変換プログラムを用いて変換する指示を与えたとする。この指示は、例えば、変換後情報のエラーを修正する指示と考えても良い。この指示を受け付けると、変換部23は、変換後情報「converted.vb」に対応付けられているエラー箇所管理情報の1番目のレコードから、「パターンID」の属性値を取得する。例えば、図10に示すようなエラー箇所管理情報がエラー箇所格納部17に格納されていたとすると、変換部23は、例えば、図10に示したエラー箇所管理情報の1行目のレコードの「パターンID」の値である「102」を読み出す。
変換部23は、読み出した1番目のパターンID「102」に対応するエラーパターン情報の出現回数を、出現回数格納部20に格納されている図11に示すようなパターン集計情報から取得する。具体的には、変換部23は、図11に示すパターン集計情報の、パターンIDが「102」であるレコードの「集計」の値である出現回数「252」を取得する。
次に、変換部23は、取得した出現回数「252」が、所定の回数以上であるか否かを判断する。ここでは、所定の回数が「2」であったとすると、取得した出現回数は、所定の回数以上であると判断する。このため、変換部23は、図4に示した変換プログラム管理情報から、パターンID「102」と対応付けられた変換プログラム「rep102.exe」を読み出す。そして、変換部23は、読み出した変換プログラム「rep102.exe」を起動して、変換後情報「converted.vb」の変換を行う。この変換プログラム「rep102.exe」が実行する処理は、図15において、「プログラム」が「rep102.exe」であるレコード(行)の「処理内容」が示す処理である。具体的には、「Dim "XXX" As Strings」という文字列で構成される第一部分ソースプログラムを取得し、この第一部分ソースプログラムで、変換後情報の「Dim "XXX" As Object」という文字列を書き換える処理等である。なお、ここでの「"XXX"」は、エラーパターン情報と対応付けられた箇所情報の値で置き換えられるものとする。ここでの「"XXX"」は、図10に示したエラー箇所管理情報の1行目の「箇所情報」の値「dtData」である。また、変換部23は、この箇所情報に対応するエラー情報を削除する。ここでは、「dtData」を有するエラー情報を削除する。
この書き換えの処理が終わると、変換部23は、図10に示したエラー箇所管理情報の2行目のレコードの「パターンID」の値である「106」を読み出す。
変換部23は、読み出した2番目のパターンID「106」に対応するエラーパターン情報の出現回数を、出現回数格納部20に格納されている図11に示すようなパターン集計情報から取得する。具体的には、変換部23は、図11に示すパターン集計情報の、パターンIDが「106」であるレコードの「集計」の値である出現回数「1」を取得する。
次に、変換部23は、取得した出現回数「1」が、所定の回数以上であるか否かを判断する。ここでは、所定の回数が「2」であったとすると、取得した出現回数は、所定の回数未満であると判断する。このため、例えば、ソースプログラム出力部24等が、このパターンID「106」に対応する箇所情報「E_MSGDISP()」を図10に示したエラー箇所管理情報から読み出し、変換後情報「converted.vb」において、この箇所情報と一致する文字列を検索する。そして、変換後情報の検索により検出された部分の周辺と、手入力によるソースプログラムの変更を促すダイアログを、モニタ21aに表示する。
図16は、情報処理装置1による、変換後情報のエラーとなる箇所に対する手入力による変更をユーザに促す入力画面の表示例を示す図である。
ユーザがこの表示に従って、箇所情報「E_MSGDISP()」に対応するエラーが発生する箇所(例えば文字列)をカーソル等を用いて指定し、この箇所を修正するための第二部分ソースプログラムを、キーボード等の入力デバイス(図示せず)を用いて手入力により入力したとする。例えば、「Dim E_MSGDISP() As Strings」という第二部分ソースプログラムを入力したとすると、受付部22は、この第二部分ソースプログラムを受け付ける。そして、変換部23は、受け付けた第二部分ソースプログラムで、指定されたエラーが発生する箇所を上書きする。なお、変換部23は、このエラーに対応したエラー情報を自動で削除しても良いし、ユーザに削除させるようにしても良い。
変換部23は、この書き換えの処理が終わると、図10に示したエラー箇所管理情報の3行目以降の各レコードの「パターンID」についても、上記と同様の処理を繰り返す。
そして、全てのエラー箇所管理情報の全てのレコードについての変換処理が終了すると、ソースプログラム出力部24は、変換が終了した変換後情報「converted.vb」を、新たなソースプログラムとして出力する。ここでの出力は、例えば、モニタ21aによる表示であるとする。また、出力は、図示しない記憶媒体等への蓄積でも良い。なお、ソースプログラム出力部24は、出力時に、ファイル名を変換プログラムで処理する前の変換後情報のファイル名から変更してもよい。
図17は、ソースプログラム出力部24が出力する新たなソースプログラムの一例を示す図であり、新たなソースプログラムの一部を抜粋して示している。
例えば、図17において、文字列171は、図8のエラー情報71についてユーザにより手入力され、変換部23により配置された第二部分ソースプログラムである。また、文字列172は、図8のエラー情報72について変換プログラムを用いて変換部23により自動生成され、配置された第一部分ソースプログラムである。また、図8に示した変換後情報において配置されていたエラー情報は、変換部23により削除されている。
なお、上記具体例において、出現回数出力部21が、エラーパターン情報毎の出現回数等を出力した後に、情報処理装置1が、図示しない受付部等を介して、ユーザ等が生成したエラーパターン情報に対応するエラーを変換するための1以上の変換プログラムと、そのエラーパターン情報とを受け付けて変換プログラム格納部12に蓄積し、変換部23は、この変換プログラムを用いて変換後情報の変換を行うようにしてもよい。このようにすることで、例えば、出現回数が所定の回数以上であるエラーパターン情報に対応した箇所情報が示すエラーを修正するための変換プログラムを適宜ユーザが作成、あるいは既存の変換プログラムをカスタマイズや選択して、変換プログラム格納部12に蓄積することが可能となる。そして、この変換プログラムを用いて、変換後情報の所定回数以上出現するエラーパターン情報に対応した箇所情報が示すエラーを変換するための第一部分ソースプログラムを取得することができる。これにより、出現回数が所定の回数以上のエラーパターン情報に対応したエラーを、自動変換、即ち自動修正することができ、エラーの修正の効率化を図ることができる。
また、上記具体例においては、変換プログラム格納部12に蓄積されている変換プログラムを用いて、変換部23が第一部分ソースプログラムを作成する際に、変換部23は、図示しない受付部等を介して、修正するエラーに応じたパラメータ等を適宜受け付けるようにしても良い。
以上、本実施の形態によれば、エラー情報に対応するエラーパターン情報を決定し、このエラーパターン情報に対応付けられた変換プログラムを用いて、変換後ソースから新たなソースプログラムを取得することができるため、変換ツールを用いて自動変換したソースプログラムのエラーとなる箇所を、適切に処理することができる。これにより、既存の変換ツールを利用しつつ、エラーを低減した高品質な変換後のソースプログラムを容易に取得することが可能となる。
更に、本実施の形態においては、変換後情報において所定回数以上出現するエラーパターン情報に対応する箇所情報が示すエラーについては、変換プログラムを用いて自動変換するとともに、所定回数未満の出現回数のエラーパターン情報に対応する箇所情報が示すエラーについては、ユーザが手入力する第二部分ソースプログラムを用いて変換を行うようにしている。これにより、所定回数未満の出現回数のエラーパターン情報に対応する箇所情報が示すエラーについては、変換プログラムを用いて自動変換を行ったとしても、最終的には、変換箇所を、ユーザが目視等で確認し、不適切な部分を修正する必要がある。このため、このようなエラーに関してのみ考えると、変換プログラムを用いて自動変換しても十分に効率化が図れない場合も考えられる。特に、変換後情報に出現するエラーパターン情報に応じて変換プログラム作成したりカスタマイズして、この変換プログラムを用いて変換後ソースのエラーを修正する場合においては、変換プログラムを用意する労力分だけ、十分な効率化が図れなくなると考えられる。しかしながら、本実施の形態においては、このようなエラーを、ユーザが直接修正を行うこととなり、エラーの修正と修正箇所の確認とを同時に行うことができ、作業の効率化とマイグレーションの高品質化を図ることができる。
なお、本実施の形態においては、箇所情報に対応するエラーパターン情報の出現回数が所定回数以上でないと判断された場合に、手入力による第二部分ソースプログラムを受け付けるようにした。しかし、本発明においては、出現回数が所定回数以上でないエラーパターン情報に対応する箇所情報を、図示しない記憶媒体等に一時記憶するようにし、出現回数が所定回数以上であるエラーパターン情報に対応する箇所情報が示す箇所についての変換部23による変換プログラムを用いた変換が終了した後に、一時記憶した各箇所情報についての第二部分ソースプログラムの受け付けを行って、この第二部分ソースプログラムを用いた変換後情報の書き換えを行うようにしても良い。
また、上記実施の形態においては、エラー情報取得部16が、変換後情報からエラー情報特定情報等を用いてエラー情報を検出し、検出されたエラー情報に対応するエラーパターン情報を、エラーパターン決定部18が決定するようにしたが、本発明においては、エラーパターン決定部18が、変換後情報において、エラーパターン情報格納部11に格納されている各エラーパターン情報と一致する、あるいはパターンマッチングする文字列を検索することで、エラー情報の検出と、検出したエラー情報のエラーパターン情報の決定とを同時に行うようにしても良い。
なお、上記各実施の形態において、各処理(各機能)は、単一の装置(システム)によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりする情報や、各構成要素が処理で用いるしきい値や数式、アドレス等の情報等は、上記説明で明記していない場合であっても、図示しない記録媒体において、一時的に、あるいは長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、あるいは、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、あるいは、図示しない読み出し部が行ってもよい。
また、上記実施の形態では、情報処理装置がスタンドアロンである場合について説明したが、情報処理装置は、スタンドアロンの装置であってもよく、サーバ・クライアントシステムにおけるサーバ装置であってもよい。後者の場合には、出力部や受付部は、通信回線を介して入力を受け付けたり、画面を出力したりすることになる。
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、格納部(例えば、ハードディスクやメモリ等の記録媒体)にアクセスしながらプログラムを実行してもよい。
なお、上記実施の形態における情報処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、変換前のソースプログラムである変換前ソースを変換ツールに与えて起動した場合のエラーに関する情報のパターンである1以上のエラーパターン情報が格納されるエラーパターン情報格納部と、エラーパターン情報格納部に格納されている1以上の各エラーパターン情報に対応付けられたプログラムであって、対応付けられたエラーパターン情報に対応する箇所を変換するプログラムである1以上の変換プログラムが格納される変換プログラム格納部と、エラーとなる箇所を示す箇所情報と、箇所情報が示す箇所のエラーパターンを示すエラーパターン情報とが対応付けて格納されるエラー箇所格納部とにアクセス可能なコンピュータを、変換前ソースを変換し、新しいソースプログラムを作成するマイグレーションを支援する情報処理装置として機能させるためのプログラムであって、エラー箇所格納部に格納されているエラーパターン情報に対応する変換プログラムを用いて、エラーパターン情報に対応付けられた箇所情報が示す箇所を変換して第一部分ソースプログラムを取得し、第一部分ソースプログラムと、変換前ソースを変換ツールに与えて変換した変換後のソースプログラムである変換後ソースと、を用いて、新しいソースプログラムを作成する変換部と、変換部が作成した新しいソースプログラムを出力するソースプログラム出力部として機能させるためのプログラムである。
なお、上記プログラムにおいて、情報を送信する送信ステップや、情報を受信する受信ステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理(ハードウェアでしか行われない処理)は含まれない。
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を取得する取得部や、情報を出力する出力部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には含まれない。
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
図18は、上記プログラムを実行して、上記実施の形態による情報処理装置を実現するコンピュータの外観の一例を示す模式図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
図18において、コンピュータシステム900は、CD−ROM(Compact Disk Read Only Memory)ドライブ905、FD(Floppy(登録商標) Disk)ドライブ906を含むコンピュータ901と、キーボード902と、マウス903と、モニタ904とを備える。
図19は、コンピュータシステム900の内部構成を示す図である。図19において、コンピュータ901は、CD−ROMドライブ905、FDドライブ906に加えて、MPU(Micro Processing Unit)911と、ブートアッププログラム等のプログラムを記憶するためのROM912と、MPU911に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するRAM(Random Access Memory)913と、アプリケーションプログラム、システムプログラム、及びデータを記憶するハードディスク914と、MPU911、ROM912等を相互に接続するバス915とを備える。なお、コンピュータ901は、LANへの接続を提供する図示しないネットワークカードを含んでいてもよい。
コンピュータシステム900に、上記実施の形態による情報処理装置等の機能を実行させるプログラムは、CD−ROM921、またはFD922に記憶されて、CD−ROMドライブ905、またはFDドライブ906に挿入され、ハードディスク914に転送されてもよい。これに代えて、そのプログラムは、図示しないネットワークを介してコンピュータ901に送信され、ハードディスク914に記憶されてもよい。プログラムは実行の際にRAM913にロードされる。なお、プログラムは、CD−ROM921やFD922、またはネットワークから直接、ロードされてもよい。
プログラムは、コンピュータ901に、上記実施の形態による情報処理装置の機能を実行させるオペレーティングシステム(OS)、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム900がどのように動作するのかについては周知であり、詳細な説明は省略する。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。