プログラム変換装置及びプログラム変換方法及びプログラム
【課題】新ソフトウェアの試験スクリプトを自動生成する。
【解決手段】変換履歴付きソフトウェア変換部102が、ソフトウェア要素ごとに、旧ソフトウェアを変換して新ソフトウェアを生成し、ソフトウェア変換履歴格納部105が、対応関係にある旧ソフトウェア要素と新ソフトウェア要素を対応付けるソフトウェア変換履歴情報を記憶する。試験スクリプト変換部107は、旧ソフトウェアの試験のための旧試験スクリプトのコードのうちソフトウェア変換履歴情報に示される旧ソフトウェア要素と一致するコードを検索し、検索したコードをソフトウェア変換履歴情報において当該旧ソフトウェア要素と対応付けられている新ソフトウェア要素に変換する。他のコードは試験スクリプト変換規則に従って変換する。これにより、試験手続と区別して試験対象依存コードを正しく変換でき、新ソフトウェアに対する試験スクリプトを正確に自動生成できる。
【解決手段】変換履歴付きソフトウェア変換部102が、ソフトウェア要素ごとに、旧ソフトウェアを変換して新ソフトウェアを生成し、ソフトウェア変換履歴格納部105が、対応関係にある旧ソフトウェア要素と新ソフトウェア要素を対応付けるソフトウェア変換履歴情報を記憶する。試験スクリプト変換部107は、旧ソフトウェアの試験のための旧試験スクリプトのコードのうちソフトウェア変換履歴情報に示される旧ソフトウェア要素と一致するコードを検索し、検索したコードをソフトウェア変換履歴情報において当該旧ソフトウェア要素と対応付けられている新ソフトウェア要素に変換する。他のコードは試験スクリプト変換規則に従って変換する。これにより、試験手続と区別して試験対象依存コードを正しく変換でき、新ソフトウェアに対する試験スクリプトを正確に自動生成できる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、第1の言語で記述されている第1のソフトウェアから第2の言語で記述される第2のソフトウェアを生成するともに、第1のソフトウェアの試験のための第1の試験プログラムから第2のソフトウェアの試験のための第2の試験プログラムを生成する技術に関する。
【背景技術】
【0002】
本発明に関係する技術として、例えば、特許文献1に開示されているレガシーマイグレーション支援システムがある。
レガシーマイグレーション支援システムは、一般的に、既存資産のソフトウェアを、異なるコンピュータ言語に移植するためのシステムである。
特許文献1では、以下の機能を有するレガシーマイグレーション支援システムが開示されている。
特許文献1のレガシーマイグレーション支援システムは、ソフトウェアを異なるコンピュータ言語に記述し直すソフトウェア用言語変換ツールによって、旧ソフトウェアを新ソフトウェアに変換する。
そして、変換した新ソフトウェアを試験するために、試験スクリプト用言語変換ツールによって、旧ソフトウェアを試験するための旧試験スクリプトを新ソフトウェアを試験するための新試験スクリプトに変換する。
また、新旧の試験スクリプトからそれぞれ新旧ソフトウェアを実行して、新旧ソフトウェアのそれぞれの出力ログが一致していることを確認する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2009−245066号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来のレガシーマイグレーション支援システムは、試験対象であるソフトウェアの変換と、試験スクリプトの変換を、それぞれ独立した言語変換ツールだけで実施している。
しかし試験スクリプト中には、試験スクリプトに固有な記述である試験手続(例えばテストケース名の宣言)と、試験対象依存コード(例えば試験対象を生成するコード)が混在している。
従来のレガシーマイグレーション支援システムのように、試験スクリプトだけを試験スクリプト用言語変換ツールで変換するだけでは、試験手続は変換できるが、試験対象依存コードは変換できない。
更に試験対象依存コードを変換するために、試験スクリプトに対してソフトウェア用言語変換ツールを併用しようとしても、試験スクリプト中の試験手続と試験対象依存コードを区別する手段がないため、どちらの言語変換ツールを適用するかが制御できない。
この場合、例えば試験スクリプト中のコードに対してソフトウェア用言語変換が行われた上に、更に不適切に試験スクリプト用言語変換までされてしまう危険がある。
このため、従来は、手作業で試験スクリプトを修正する必要があるという課題があった。
【0005】
この発明は上記のような課題を解決することを主な目的としており、変換されたソフトウェアを試験するための試験プログラムを自動生成することを主な目的とする。
【課題を解決するための手段】
【0006】
本発明に係るプログラム変換装置は、
第1の言語で記述されている第1のソフトウェア要素を、第2の言語で記述される第2のソフトウェア要素に変換して、第1のソフトウェア要素で構成される第1のソフトウェアから第2のソフトウェア要素で構成される第2のソフトウェアを生成するソフトウェア変換部と、
前記ソフトウェア変換部により変換が実施された第1のソフトウェア要素と第2のソフトウェア要素とを対応付けて示す変換実施情報を記憶する変換実施情報記憶部と、
前記第1のソフトウェアの試験のための第1の試験プログラム内で前記変換実施情報に示される第1のソフトウェア要素と一致するプログラム要素を検索し、第1のソフトウェア要素と一致するプログラム要素を前記変換実施情報において当該第1のソフトウェア要素と対応付けられている第2のソフトウェア要素に変換して、前記第1の試験プログラムから、前記第2のソフトウェアの試験のための第2の試験プログラムを生成する試験プログラム変換部とを有することを特徴とする。
【発明の効果】
【0007】
本発明では、試験プログラム内のプログラム要素のうち第1のソフトウェア要素と一致するプログラム要素を当該第1のソフトウェア要素と対応付けられている第2のソフトウェア要素に変換する。
このため、試験手続と区別して試験対象依存コードを正しく変換することができ、変換後のソフトウェアに対する試験プログラムを正確に自動生成することができる。
【図面の簡単な説明】
【0008】
【図1】実施の形態1に係るソフトウェア試験装置の構成例を示す図。
【図2】実施の形態1に係るソフトウェア変換と試験スクリプト変換の動作例を示す図。
【図3】実施の形態1に係る試験スクリプト変換部の動作例を示すフローチャート図。
【図4】実施の形態1に係る旧ソフトウェアの例を示す図。
【図5】実施の形態1に係る新ソフトウェアの例を示す図。
【図6】実施の形態1に係るソフトウェア変換規則の例を示す図。
【図7】実施の形態1に係るソフトウェア変換履歴の例を示す図。
【図8】実施の形態1に係る旧試験スクリプトの例を示す図。
【図9】実施の形態1に係る新試験スクリプトの例を示す図。
【図10】実施の形態1に係る試験スクリプト変換規則の例を示す図。
【図11】実施の形態2に係るソフトウェア試験装置の構成例を示す図。
【図12】実施の形態2に係る新ソフトウェア編集部の動作例を示すフローチャート図。
【図13】実施の形態1及び2に係るソフトウェア試験装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【0009】
実施の形態1.
本実施の形態では、既存資産のソフトウェア(SWとも表記する)を異なるコンピュータ言語に移植する際、移植後のソフトウェアを試験するスクリプトを自動生成する例を説明する。
【0010】
図1は、本実施の形態に係るソフトウェア試験装置100の構成例を示すブロック構成図である。
【0011】
図1において、旧ソフトウェア格納部101は、マイグレーション前のソフトウェア(以下、旧ソフトウェアという)を格納する。
新ソフトウェア格納部103は、マイグレーション後のソフトウェア(新ソフトウェアという)を格納する。
変換履歴付きソフトウェア変換部102は、旧ソフトウェアを新ソフトウェアに変換し、変換履歴を出力する。
ソフトウェア変換規則格納部104は、旧ソフトウェアを新ソフトウェアに変換する規則(以下、ソフトウェア変換規則という)を格納する。
【0012】
旧ソフトウェアと新ソフトウェアは異なるコンピュータ言語で記述されている。
旧ソフトウェアは第1のソフトウェアの例に相当し、新ソフトウェアは第2のソフトウェアの例に相当する。
以下では、旧ソフトウェアのコンピュータ言語を第1の言語といい、新ソフトウェアのコンピュータ言語を第2の言語という。
また、変換履歴付きソフトウェア変換部102は、ソフトウェア変換規則に従い、旧ソフトウェア中のソフトウェア要素(以下、旧ソフトウェア要素という)を、第2の言語で記述されるソフトウェア要素(以下、新ソフトウェア要素という)に変換して、旧ソフトウェアから新ソフトウェアを生成する。
また、旧ソフトウェア要素と新ソフトウェア要素との対応付けを示すソフトウェア変換履歴情報を、後述するソフトウェア変換履歴格納部105に出力する。
なお、旧ソフトウェア要素は第1のソフトウェア要素の例に相当し、新ソフトウェア要素は第2のソフトウェア要素の例に相当する。
また、変換履歴付きソフトウェア変換部102は、ソフトウェア変換部の例に相当する。
また、変換履歴付きソフトウェア変換部102が行うソフトウェアの変換処理は、ソフトウェア変換ステップの例に相当する。
【0013】
ソフトウェア変換履歴格納部105は、旧ソフトウェアを新ソフトウェアに変換した履歴を格納する。
より具体的には、ソフトウェア変換履歴格納部105は、変換履歴付きソフトウェア変換部102により変換が実施された旧ソフトウェア要素と新ソフトウェア要素とを対応付けて示すソフトウェア変換履歴情報(変換実施情報の例)を記憶する。
ソフトウェア変換履歴格納部105は、変換実施情報記憶部の例に相当する。
ソフトウェア変換履歴格納部105が行うソフトウェア変換履歴情報の記憶処理は、変換実施情報記憶ステップの例に相当する。
【0014】
旧試験スクリプト格納部106は、旧ソフトウェアを試験するためのスクリプト(以下、旧試験スクリプトという)を格納する。
新試験スクリプト格納部108は、新ソフトウェアを試験するためのスクリプト(以下、新試験スクリプトという)を格納する。
試験スクリプト変換部107は、旧試験スクリプトを新試験スクリプトに変換する。
試験スクリプト変換規則格納部109は、旧試験スクリプトを新試験スクリプトに変換する規則(以下、試験スクリプト変換規則という)を格納する。
【0015】
旧試験スクリプトは第1の試験プログラムの例に相当し、新試験スクリプトは第2の試験プログラムの例に相当する。
旧試験スクリプトは、旧ソフトウェアの言語である第1の言語、新ソフトウェアの言語である第2の言語のいずれとも異なる言語で記述されている。
旧試験スクリプトの言語を第3の言語という。
但し、旧試験スクリプトには、旧ソフトウェアの要素である旧ソフトウェア要素が部分的に含まれており、旧試験スクリプトに部分的に含まれる旧ソフトウェア要素は第1の言語で記述されている。
また、新試験スクリプトは、第1の言語、第2の言語及び第3言語のいずれとも異なる言語で記述される。
新試験スクリプトの言語を第4の言語という。
試験スクリプト変換部107は、旧試験スクリプト内でソフトウェア変換履歴情報に示される旧ソフトウェア要素と一致するスクリプト要素を検索し、旧ソフトウェア要素と一致するスクリプト要素をソフトウェア変換履歴情報において当該旧ソフトウェア要素と対応付けられている新ソフトウェア要素に変換する。
また、試験スクリプト変換部107は、いずれの旧ソフトウェア要素とも一致しないスクリプト要素を、試験スクリプト変換規則に従い、第3の言語による記述から第4の言語による記述に変換する。
このようにして、試験スクリプト変換部107は、旧試験スクリプトから新試験スクリプトを生成する。
新試験スクリプトでは、部分的に含まれる新ソフトウェア要素は第2の言語で記述され、その他の部分は第4の言語で記述される。
試験スクリプト変換部107は、試験プログラム変換部の例に相当する。
また、試験スクリプト変換部107が行う試験スクリプトの変換処理は、試験プログラム変換ステップの例に相当する。
また、試験スクリプト変換規則格納部109は、試験プログラム変換規則情報記憶部の例に相当する。
【0016】
旧ソフトウェア実行部110は、旧試験スクリプトによって旧ソフトウェアを実行する。
旧ソフトウェア出力データ格納部111は、旧ソフトウェア実行部110が旧ソフトウェアを実行して出力した結果を格納する。
新ソフトウェア実行部112は、新試験スクリプトによって新ソフトウェアを実行する。
新ソフトウェア出力データ格納部113は、新ソフトウェア実行部112が新ソフトウェアを実行して出力した結果を格納する。
データ比較部114は、旧ソフトウェア出力データ格納部111の内容と新ソフトウェア出力データ格納部113の内容が一致していることを確認する。
試験結果格納部115は、データ比較の結果を格納する。
【0017】
なお、ソフトウェア試験装置100を、プロセッサ、RAM(Random Access Memory)、磁気ディスク装置等を備えるコンピュータとすることができる。
この場合、例えば、「〜格納部」を磁気ディスク装置で、「変換履歴付きソフトウェア変換部102」、「試験スクリプト変換部107」「旧ソフトウェア実行部110」「新ソフトウェア実行部112」及び「データ比較部114」をプロセッサで実行されるコンピュータプログラムとして、実現することができる。
【0018】
次に、本実施の形態に係るソフトウェア試験装置100の動作の概要を説明する。
【0019】
まず、変換履歴付きソフトウェア変換部102がソフトウェア変換規則に従って旧ソフトウェアを新ソフトウェアに変換し、そのソフトウェア変換履歴情報を出力する。
次に、試験スクリプト変換部107が、ソフトウェア変換規則と試験スクリプト変換規則とソフトウェア変換履歴に従って旧試験スクリプトを新試験スクリプトに変換する。
旧ソフトウェア実行部110は、旧試験スクリプトによって旧ソフトウェアを実行し、その結果を旧ソフトウェア出力データとして出力する。
また、新ソフトウェア実行部112は、新試験スクリプトによって新ソフトウェアを実行し、その結果を新ソフトウェア出力データとして出力する。
最後に、データ比較部114が、旧ソフトウェア出力データと新ソフトウェア出力データが一致していることを確認し、その結果を試験結果格納部115に保存する。
なお、ソフトウェア試験装置100において、少なくとも変換履歴付きソフトウェア変換部102、ソフトウェア変換履歴格納部105及び試験スクリプト変換部107が、本発明に係るプログラム変換装置の例を構成する。
【0020】
次に、変換履歴付きソフトウェア変換部102と試験スクリプト変換部107の動作について図2を用いて説明する。
まず、変換履歴付きソフトウェア変換部102の動作を説明する。
【0021】
変換履歴付きソフトウェア変換部102は、旧ソフトウェアから、旧ソフトウェアの要素実体である旧ソフトウェア要素、例えばA1を抽出する。
要素実体とは、ソフトウェアのソースコード中の意味のあるコード断片である。
要素実体A1の種類と一致する要素種類をソフトウェア変換規則から検索し、あれば変換後要素を実体化して新ソフトウェアに出力する。
そして、変換履歴付きソフトウェア変換部102は、要素実体A1(旧ソフトウェア要素)を要素実体B1(新ソフトウェア要素)に変換したことを示すソフトウェア変換履歴情報を生成し、ソフトウェア変換履歴情報をソフトウェア変換履歴格納部105に記録させる。
同様な処理を、旧ソフトウェアから全ての要素実体を抽出し終わるまで繰り返す。
【0022】
次に、試験スクリプト変換部107の動作を図2及び図3を参照して説明する。
この変換動作の流れは、旧試験スクリプトのうちの試験手続実体を変換する(以下、試験スクリプト変換という)のか、試験対象実体を変換する(以下、ソフトウェア変換という)のかに大別される。
最初に、試験スクリプト変換部107が試験スクリプト変換を実施する流れを説明する。
【0023】
まず、試験スクリプト変換部107は、旧試験スクリプトからスクリプト要素である要素実体1を抽出する(S101)。
図2の例では要素実体1として試験手続実体X1が抽出されたとする(S102でYES)。
試験手続実体とは、試験対象に依存しない試験コードに固有なコード断片であり、例えばテストケース名を宣言するコードが該当する。
次に、試験スクリプト変換部107は、試験手続実体X1の種類と一致する要素種類をソフトウェア変換規則から検索(S103)して成功する(S104でYES)。
次に、試験スクリプト変換部107は、試験手続実体X1がソフトウェア変換履歴情報の変換前実体に記録されているかを検索(S105)して失敗する(S106でNO)。
次に、試験スクリプト変換部107は、試験手続実体X1の種類と一致する要素種類を試験スクリプト変換規則から検索(S108)して成功する(S109でYES)。
最後に、試験スクリプト変換部107は、試験スクリプト変換規則中で該当する変換後要素を実体化して新試験スクリプトに出力する(S110)。
図2の例では試験手続実体Y1が出力されている。
【0024】
次に、試験スクリプト変換部107がソフトウェア変換を実施する流れを説明する。
【0025】
まず、試験スクリプト変換部107は、旧試験スクリプトから要素実体1を抽出する(S101)。
図2の例では要素実体1として試験対象実体A1が抽出されたとする(S102でYES)。
試験対象実体とは、試験対象に依存する試験コードの断片であり、例えば試験対象を生成するコードが該当する。
次に、試験スクリプト変換部107は、試験対象実体A1の種類と一致する要素種類をソフトウェア変換規則から検索(S103)して成功する(S104でYES)。
次に、試験スクリプト変換部107は、試験対象実体A1がソフトウェア変換履歴情報の変換前実体に記録されているかを検索(S105)して成功する(S106でYES)。
最後に、試験スクリプト変換部107は、該当するソフトウェア変換履歴情報の変換後実体をもとに新試験スクリプトに出力する(S107)。
図2の例では試験対象実体B1が出力されている。
【0026】
次に、図4から図10を用いて、Java(登録商標)コードからC++コードに変換し、更にJava(登録商標)用試験スクリプトであるJUnit用コードからC++用試験スクリプトであるCppUnit用コードに変換する例を説明する。
【0027】
図4は変換前のJava(登録商標)コードの例、図5は変換後のC++コードの例、図6はJava(登録商標)コードからC++コードにソフトウェア変換する規則の例である。
図7はソフトウェア変換時の履歴であり、この例では図6の規則1によって変換された履歴が記録されている。
図8は図4のJava(登録商標)コードを試験するJUnit用コードの例、図9は図5のC++コードを試験するために図8を変換したCppUnit用コードの例、図10はJUnit用コードからCppUnit用コードに変換する規則の例である。
【0028】
まず試験手続実体の変換例を説明する。
図8の「class PointTest extends TestCase {」が、図3のS101で抽出されたとする。
図3のS103でソフトウェア変換規則(図6)を検索し、規則2の「クラス宣言」が見つかる。
図3のS105でソフトウェア変換履歴(図7)を検索するが見つからないので図3のS108を実行する。
S108において試験スクリプト変換規則(図10)を検索して規則1の「クラス宣言」が見つかる。
図3のS110において、S108で見つかった規則を適用して、図9の試験手続実体「class PointTest : public CPPUNIT_NS::TestFixture {」が生成される。
【0029】
次に試験対象実体の変換例を説明する。
図8の「pt = new Point_();」が、図3のS101で抽出されたとする。
図3のS103でソフトウェア変換規則(図6)を検索し、規則4の「インスタンス生成」が見つかる。
図3のS105でソフトウェア変換履歴(図7)を検索し、クラス名「Point」が見つかるので、図3のS107を実行する。
S107において、S103で見つかった規則を適用して、図9の試験対象実体「pt = new Point_();」が生成される。
【0030】
以上のように、試験スクリプト変換において、試験スクリプトが、試験固有なコード断片と、試験対象に依存するコード断片が混在している問題に対して、試験対象に依存するコード断片はソフトウェア変換の際に記録されたソフトウェア変換履歴を用いて変換するようにしているので、試験スクリプト変換精度を向上することができる。
【0031】
以上、本実施の形態では、
試験対象の変換履歴を用いて試験スクリプト変換するレガシーマイグレーション支援システムであって、以下の手段を備えるものを説明した。
マイグレーション前のソフトウェアを格納する旧ソフトウェア格納手段、
旧ソフトウェアを試験するスクリプトを格納する旧試験スクリプト格納手段、
旧試験スクリプトによって旧ソフトウェアを実行する旧ソフトウェア実行手段、
旧ソフトウェアが実行して出力した結果を格納する旧ソフトウェア出力データ格納手段、
マイグレーション後のソフトウェアを格納する新ソフトウェア格納手段、
新ソフトウェアを試験するスクリプトを格納する新試験スクリプト格納手段、
新試験スクリプトによって新ソフトウェアを実行する新ソフトウェア実行手段、
新ソフトウェアが実行して出力した結果を格納する新ソフトウェア出力データ格納手段、
旧ソフトウェア出力データ格納手段の内容と新ソフトウェア出力データ格納手段の内容が一致していることを確認するデータ比較手段、
データ比較の結果を格納する試験結果格納手段、
旧ソフトウェアを新ソフトウェアに変換する規則を格納するソフトウェア変換規則格納手段、
旧ソフトウェアを新ソフトウェアに変換し変換履歴を出力する変換履歴付きソフトウェア変換手段、
旧ソフトウェアを新ソフトウェアに変換した履歴を格納するソフトウェア変換履歴格納手段、
旧試験スクリプトを新試験スクリプトに変換する規則を格納する試験スクリプト変換規則格納手段、
旧試験スクリプトを新試験スクリプトに変換する試験スクリプト変換手段。
【0032】
実施の形態2.
以上の実施の形態1では、マイグレーション後の試験対象となる新ソフトウェアが全て自動変換されるとして、その変換履歴を試験スクリプト変換時に利用するものであるが、次に新ソフトウェアが手作業で修正されるような場合にも、試験スクリプトを自動変換する実施の形態を示す。
【0033】
図11は、このような場合のソフトウェア試験装置100の構成例を示すブロック構成図である。
図11において、新ソフトウェア編集部116は新ソフトウェアを手作業で編集するための要素である。
新ソフトウェア編集部116は、変換実施情報更新部の例に相当する。
その他の要素は図1と同様である。
【0034】
次に、新ソフトウェア編集部116の動作について図12を用いて説明する。
【0035】
新ソフトウェア編集部116は、自動変換された新ソフトウェアを新ソフトウェア格納部103から読み出して、作業者が新ソフトウェアを編集できるようにする(S201)。
作業者が編集を終わると(S202でYES)、新ソフトウェア編集部116は作業者が編集した結果を新ソフトウェア格納部103に保存する(S203)。
更に、作業者が編集したコード断片をソフトウェア変換履歴格納部105から検索(S204)し、その変換履歴の変換後要素を、作業者が編集したコード断片に更新する(S205、S206)。
つまり、新ソフトウェア編集部116は、作業者により新ソフトウェア要素が編集された場合に、編集後の新ソフトウェア要素と、当該編集後の新ソフトウェア要素の変換元の旧ソフトウェア要素とが対応付けられるようにソフトウェア変換履歴情報(変換実施情報)を更新する。
このように更新されたソフトウェア変換履歴格納部105を用いて、試験スクリプト変換部107が新試験スクリプトを生成する動作は、実施の形態1と同様である。
【0036】
以上のように、試験対象となる新ソフトウェアが手作業で編集される場合、その編集結果を新試験スクリプトにも手作業で反映しなければならない問題に対して、新ソフトウェアの編集結果をソフトウェア変換履歴格納部105に反映し、それを用いて試験スクリプト変換することによって、試験スクリプト変換精度を向上することができる。
【0037】
以上、本実施の形態では、
試験対象を手作業で編集した履歴を用いて試験スクリプト変換するレガシーマイグレーション支援システムであって、実施の形態1で示した構成に加えて、以下の手段を備えるものを説明した。
マイグレーション後の新ソフトウェアを手作業で編集可能にし、その結果をソフトウェア変換履歴格納手段に記録する新ソフトウェア編集手段。
【0038】
最後に、実施の形態1及び2に示したソフトウェア試験装置100のハードウェア構成例について説明する。
図13は、実施の形態1及び2に示すソフトウェア試験装置100のハードウェア資源の一例を示す図である。
なお、図13の構成は、あくまでもソフトウェア試験装置100のハードウェア構成の一例を示すものであり、ソフトウェア試験装置100のハードウェア構成は図13に記載の構成に限らず、他の構成であってもよい。
【0039】
図13において、ソフトウェア試験装置100は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、SSD(Solid State Drive)、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態1及び2で説明した「〜格納部」及び「〜格納手段」は、例えば、磁気ディスク装置920により実現される。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
【0040】
通信ボード915は、ネットワークに接続されている。
例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されている。
【0041】
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
【0042】
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
【0043】
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
ソフトウェア試験装置100の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
【0044】
上記プログラム群923には、実施の形態1及び2の説明において「〜部」(「〜格納部」以外、以下同様)、「〜手段」(「〜格納手段」以外、以下同様)として説明している機能を実行するプログラムが記憶されている。
プログラムは、CPU911により読み出され実行される。
【0045】
ファイル群924には、実施の形態1及び2の説明において、「〜の変換」、「〜の抽出」、「〜の比較」、「〜の検索」、「〜の更新」、「〜の生成」、「〜の照合」、「〜の選択」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1及び2で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。
また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0046】
また、実施の形態1及び2の説明において「〜部」、「〜手段」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態1及び2で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「プログラム変換方法」を実現することができる。
また、「〜部」、「〜手段」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。
プログラムはCPU911により読み出され、CPU911により実行される。
すなわち、プログラムは、実施の形態1及び2の「〜部」、「〜手段」としてコンピュータを機能させるものである。あるいは、実施の形態1及び2の「〜部」、「〜手段」の手順や方法をコンピュータに実行させるものである。
【0047】
このように、実施の形態1及び2に示すソフトウェア試験装置100は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」、「〜手段」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【0048】
100 ソフトウェア試験装置、101 旧ソフトウェア格納部、102 変換履歴付きソフトウェア変換部、103 新ソフトウェア格納部、104 ソフトウェア変換規則格納部、105 ソフトウェア変換履歴格納部、106 旧試験スクリプト格納部、107 試験スクリプト変換部、108 新試験スクリプト格納部、109 試験スクリプト変換規則格納部、110 旧ソフトウェア実行部、111 旧ソフトウェア出力データ格納部、112 新ソフトウェア実行部、113 新ソフトウェア出力データ格納部、114 データ比較部、115 試験結果格納部、116 新ソフトウェア編集部。
【技術分野】
【0001】
本発明は、第1の言語で記述されている第1のソフトウェアから第2の言語で記述される第2のソフトウェアを生成するともに、第1のソフトウェアの試験のための第1の試験プログラムから第2のソフトウェアの試験のための第2の試験プログラムを生成する技術に関する。
【背景技術】
【0002】
本発明に関係する技術として、例えば、特許文献1に開示されているレガシーマイグレーション支援システムがある。
レガシーマイグレーション支援システムは、一般的に、既存資産のソフトウェアを、異なるコンピュータ言語に移植するためのシステムである。
特許文献1では、以下の機能を有するレガシーマイグレーション支援システムが開示されている。
特許文献1のレガシーマイグレーション支援システムは、ソフトウェアを異なるコンピュータ言語に記述し直すソフトウェア用言語変換ツールによって、旧ソフトウェアを新ソフトウェアに変換する。
そして、変換した新ソフトウェアを試験するために、試験スクリプト用言語変換ツールによって、旧ソフトウェアを試験するための旧試験スクリプトを新ソフトウェアを試験するための新試験スクリプトに変換する。
また、新旧の試験スクリプトからそれぞれ新旧ソフトウェアを実行して、新旧ソフトウェアのそれぞれの出力ログが一致していることを確認する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2009−245066号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来のレガシーマイグレーション支援システムは、試験対象であるソフトウェアの変換と、試験スクリプトの変換を、それぞれ独立した言語変換ツールだけで実施している。
しかし試験スクリプト中には、試験スクリプトに固有な記述である試験手続(例えばテストケース名の宣言)と、試験対象依存コード(例えば試験対象を生成するコード)が混在している。
従来のレガシーマイグレーション支援システムのように、試験スクリプトだけを試験スクリプト用言語変換ツールで変換するだけでは、試験手続は変換できるが、試験対象依存コードは変換できない。
更に試験対象依存コードを変換するために、試験スクリプトに対してソフトウェア用言語変換ツールを併用しようとしても、試験スクリプト中の試験手続と試験対象依存コードを区別する手段がないため、どちらの言語変換ツールを適用するかが制御できない。
この場合、例えば試験スクリプト中のコードに対してソフトウェア用言語変換が行われた上に、更に不適切に試験スクリプト用言語変換までされてしまう危険がある。
このため、従来は、手作業で試験スクリプトを修正する必要があるという課題があった。
【0005】
この発明は上記のような課題を解決することを主な目的としており、変換されたソフトウェアを試験するための試験プログラムを自動生成することを主な目的とする。
【課題を解決するための手段】
【0006】
本発明に係るプログラム変換装置は、
第1の言語で記述されている第1のソフトウェア要素を、第2の言語で記述される第2のソフトウェア要素に変換して、第1のソフトウェア要素で構成される第1のソフトウェアから第2のソフトウェア要素で構成される第2のソフトウェアを生成するソフトウェア変換部と、
前記ソフトウェア変換部により変換が実施された第1のソフトウェア要素と第2のソフトウェア要素とを対応付けて示す変換実施情報を記憶する変換実施情報記憶部と、
前記第1のソフトウェアの試験のための第1の試験プログラム内で前記変換実施情報に示される第1のソフトウェア要素と一致するプログラム要素を検索し、第1のソフトウェア要素と一致するプログラム要素を前記変換実施情報において当該第1のソフトウェア要素と対応付けられている第2のソフトウェア要素に変換して、前記第1の試験プログラムから、前記第2のソフトウェアの試験のための第2の試験プログラムを生成する試験プログラム変換部とを有することを特徴とする。
【発明の効果】
【0007】
本発明では、試験プログラム内のプログラム要素のうち第1のソフトウェア要素と一致するプログラム要素を当該第1のソフトウェア要素と対応付けられている第2のソフトウェア要素に変換する。
このため、試験手続と区別して試験対象依存コードを正しく変換することができ、変換後のソフトウェアに対する試験プログラムを正確に自動生成することができる。
【図面の簡単な説明】
【0008】
【図1】実施の形態1に係るソフトウェア試験装置の構成例を示す図。
【図2】実施の形態1に係るソフトウェア変換と試験スクリプト変換の動作例を示す図。
【図3】実施の形態1に係る試験スクリプト変換部の動作例を示すフローチャート図。
【図4】実施の形態1に係る旧ソフトウェアの例を示す図。
【図5】実施の形態1に係る新ソフトウェアの例を示す図。
【図6】実施の形態1に係るソフトウェア変換規則の例を示す図。
【図7】実施の形態1に係るソフトウェア変換履歴の例を示す図。
【図8】実施の形態1に係る旧試験スクリプトの例を示す図。
【図9】実施の形態1に係る新試験スクリプトの例を示す図。
【図10】実施の形態1に係る試験スクリプト変換規則の例を示す図。
【図11】実施の形態2に係るソフトウェア試験装置の構成例を示す図。
【図12】実施の形態2に係る新ソフトウェア編集部の動作例を示すフローチャート図。
【図13】実施の形態1及び2に係るソフトウェア試験装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【0009】
実施の形態1.
本実施の形態では、既存資産のソフトウェア(SWとも表記する)を異なるコンピュータ言語に移植する際、移植後のソフトウェアを試験するスクリプトを自動生成する例を説明する。
【0010】
図1は、本実施の形態に係るソフトウェア試験装置100の構成例を示すブロック構成図である。
【0011】
図1において、旧ソフトウェア格納部101は、マイグレーション前のソフトウェア(以下、旧ソフトウェアという)を格納する。
新ソフトウェア格納部103は、マイグレーション後のソフトウェア(新ソフトウェアという)を格納する。
変換履歴付きソフトウェア変換部102は、旧ソフトウェアを新ソフトウェアに変換し、変換履歴を出力する。
ソフトウェア変換規則格納部104は、旧ソフトウェアを新ソフトウェアに変換する規則(以下、ソフトウェア変換規則という)を格納する。
【0012】
旧ソフトウェアと新ソフトウェアは異なるコンピュータ言語で記述されている。
旧ソフトウェアは第1のソフトウェアの例に相当し、新ソフトウェアは第2のソフトウェアの例に相当する。
以下では、旧ソフトウェアのコンピュータ言語を第1の言語といい、新ソフトウェアのコンピュータ言語を第2の言語という。
また、変換履歴付きソフトウェア変換部102は、ソフトウェア変換規則に従い、旧ソフトウェア中のソフトウェア要素(以下、旧ソフトウェア要素という)を、第2の言語で記述されるソフトウェア要素(以下、新ソフトウェア要素という)に変換して、旧ソフトウェアから新ソフトウェアを生成する。
また、旧ソフトウェア要素と新ソフトウェア要素との対応付けを示すソフトウェア変換履歴情報を、後述するソフトウェア変換履歴格納部105に出力する。
なお、旧ソフトウェア要素は第1のソフトウェア要素の例に相当し、新ソフトウェア要素は第2のソフトウェア要素の例に相当する。
また、変換履歴付きソフトウェア変換部102は、ソフトウェア変換部の例に相当する。
また、変換履歴付きソフトウェア変換部102が行うソフトウェアの変換処理は、ソフトウェア変換ステップの例に相当する。
【0013】
ソフトウェア変換履歴格納部105は、旧ソフトウェアを新ソフトウェアに変換した履歴を格納する。
より具体的には、ソフトウェア変換履歴格納部105は、変換履歴付きソフトウェア変換部102により変換が実施された旧ソフトウェア要素と新ソフトウェア要素とを対応付けて示すソフトウェア変換履歴情報(変換実施情報の例)を記憶する。
ソフトウェア変換履歴格納部105は、変換実施情報記憶部の例に相当する。
ソフトウェア変換履歴格納部105が行うソフトウェア変換履歴情報の記憶処理は、変換実施情報記憶ステップの例に相当する。
【0014】
旧試験スクリプト格納部106は、旧ソフトウェアを試験するためのスクリプト(以下、旧試験スクリプトという)を格納する。
新試験スクリプト格納部108は、新ソフトウェアを試験するためのスクリプト(以下、新試験スクリプトという)を格納する。
試験スクリプト変換部107は、旧試験スクリプトを新試験スクリプトに変換する。
試験スクリプト変換規則格納部109は、旧試験スクリプトを新試験スクリプトに変換する規則(以下、試験スクリプト変換規則という)を格納する。
【0015】
旧試験スクリプトは第1の試験プログラムの例に相当し、新試験スクリプトは第2の試験プログラムの例に相当する。
旧試験スクリプトは、旧ソフトウェアの言語である第1の言語、新ソフトウェアの言語である第2の言語のいずれとも異なる言語で記述されている。
旧試験スクリプトの言語を第3の言語という。
但し、旧試験スクリプトには、旧ソフトウェアの要素である旧ソフトウェア要素が部分的に含まれており、旧試験スクリプトに部分的に含まれる旧ソフトウェア要素は第1の言語で記述されている。
また、新試験スクリプトは、第1の言語、第2の言語及び第3言語のいずれとも異なる言語で記述される。
新試験スクリプトの言語を第4の言語という。
試験スクリプト変換部107は、旧試験スクリプト内でソフトウェア変換履歴情報に示される旧ソフトウェア要素と一致するスクリプト要素を検索し、旧ソフトウェア要素と一致するスクリプト要素をソフトウェア変換履歴情報において当該旧ソフトウェア要素と対応付けられている新ソフトウェア要素に変換する。
また、試験スクリプト変換部107は、いずれの旧ソフトウェア要素とも一致しないスクリプト要素を、試験スクリプト変換規則に従い、第3の言語による記述から第4の言語による記述に変換する。
このようにして、試験スクリプト変換部107は、旧試験スクリプトから新試験スクリプトを生成する。
新試験スクリプトでは、部分的に含まれる新ソフトウェア要素は第2の言語で記述され、その他の部分は第4の言語で記述される。
試験スクリプト変換部107は、試験プログラム変換部の例に相当する。
また、試験スクリプト変換部107が行う試験スクリプトの変換処理は、試験プログラム変換ステップの例に相当する。
また、試験スクリプト変換規則格納部109は、試験プログラム変換規則情報記憶部の例に相当する。
【0016】
旧ソフトウェア実行部110は、旧試験スクリプトによって旧ソフトウェアを実行する。
旧ソフトウェア出力データ格納部111は、旧ソフトウェア実行部110が旧ソフトウェアを実行して出力した結果を格納する。
新ソフトウェア実行部112は、新試験スクリプトによって新ソフトウェアを実行する。
新ソフトウェア出力データ格納部113は、新ソフトウェア実行部112が新ソフトウェアを実行して出力した結果を格納する。
データ比較部114は、旧ソフトウェア出力データ格納部111の内容と新ソフトウェア出力データ格納部113の内容が一致していることを確認する。
試験結果格納部115は、データ比較の結果を格納する。
【0017】
なお、ソフトウェア試験装置100を、プロセッサ、RAM(Random Access Memory)、磁気ディスク装置等を備えるコンピュータとすることができる。
この場合、例えば、「〜格納部」を磁気ディスク装置で、「変換履歴付きソフトウェア変換部102」、「試験スクリプト変換部107」「旧ソフトウェア実行部110」「新ソフトウェア実行部112」及び「データ比較部114」をプロセッサで実行されるコンピュータプログラムとして、実現することができる。
【0018】
次に、本実施の形態に係るソフトウェア試験装置100の動作の概要を説明する。
【0019】
まず、変換履歴付きソフトウェア変換部102がソフトウェア変換規則に従って旧ソフトウェアを新ソフトウェアに変換し、そのソフトウェア変換履歴情報を出力する。
次に、試験スクリプト変換部107が、ソフトウェア変換規則と試験スクリプト変換規則とソフトウェア変換履歴に従って旧試験スクリプトを新試験スクリプトに変換する。
旧ソフトウェア実行部110は、旧試験スクリプトによって旧ソフトウェアを実行し、その結果を旧ソフトウェア出力データとして出力する。
また、新ソフトウェア実行部112は、新試験スクリプトによって新ソフトウェアを実行し、その結果を新ソフトウェア出力データとして出力する。
最後に、データ比較部114が、旧ソフトウェア出力データと新ソフトウェア出力データが一致していることを確認し、その結果を試験結果格納部115に保存する。
なお、ソフトウェア試験装置100において、少なくとも変換履歴付きソフトウェア変換部102、ソフトウェア変換履歴格納部105及び試験スクリプト変換部107が、本発明に係るプログラム変換装置の例を構成する。
【0020】
次に、変換履歴付きソフトウェア変換部102と試験スクリプト変換部107の動作について図2を用いて説明する。
まず、変換履歴付きソフトウェア変換部102の動作を説明する。
【0021】
変換履歴付きソフトウェア変換部102は、旧ソフトウェアから、旧ソフトウェアの要素実体である旧ソフトウェア要素、例えばA1を抽出する。
要素実体とは、ソフトウェアのソースコード中の意味のあるコード断片である。
要素実体A1の種類と一致する要素種類をソフトウェア変換規則から検索し、あれば変換後要素を実体化して新ソフトウェアに出力する。
そして、変換履歴付きソフトウェア変換部102は、要素実体A1(旧ソフトウェア要素)を要素実体B1(新ソフトウェア要素)に変換したことを示すソフトウェア変換履歴情報を生成し、ソフトウェア変換履歴情報をソフトウェア変換履歴格納部105に記録させる。
同様な処理を、旧ソフトウェアから全ての要素実体を抽出し終わるまで繰り返す。
【0022】
次に、試験スクリプト変換部107の動作を図2及び図3を参照して説明する。
この変換動作の流れは、旧試験スクリプトのうちの試験手続実体を変換する(以下、試験スクリプト変換という)のか、試験対象実体を変換する(以下、ソフトウェア変換という)のかに大別される。
最初に、試験スクリプト変換部107が試験スクリプト変換を実施する流れを説明する。
【0023】
まず、試験スクリプト変換部107は、旧試験スクリプトからスクリプト要素である要素実体1を抽出する(S101)。
図2の例では要素実体1として試験手続実体X1が抽出されたとする(S102でYES)。
試験手続実体とは、試験対象に依存しない試験コードに固有なコード断片であり、例えばテストケース名を宣言するコードが該当する。
次に、試験スクリプト変換部107は、試験手続実体X1の種類と一致する要素種類をソフトウェア変換規則から検索(S103)して成功する(S104でYES)。
次に、試験スクリプト変換部107は、試験手続実体X1がソフトウェア変換履歴情報の変換前実体に記録されているかを検索(S105)して失敗する(S106でNO)。
次に、試験スクリプト変換部107は、試験手続実体X1の種類と一致する要素種類を試験スクリプト変換規則から検索(S108)して成功する(S109でYES)。
最後に、試験スクリプト変換部107は、試験スクリプト変換規則中で該当する変換後要素を実体化して新試験スクリプトに出力する(S110)。
図2の例では試験手続実体Y1が出力されている。
【0024】
次に、試験スクリプト変換部107がソフトウェア変換を実施する流れを説明する。
【0025】
まず、試験スクリプト変換部107は、旧試験スクリプトから要素実体1を抽出する(S101)。
図2の例では要素実体1として試験対象実体A1が抽出されたとする(S102でYES)。
試験対象実体とは、試験対象に依存する試験コードの断片であり、例えば試験対象を生成するコードが該当する。
次に、試験スクリプト変換部107は、試験対象実体A1の種類と一致する要素種類をソフトウェア変換規則から検索(S103)して成功する(S104でYES)。
次に、試験スクリプト変換部107は、試験対象実体A1がソフトウェア変換履歴情報の変換前実体に記録されているかを検索(S105)して成功する(S106でYES)。
最後に、試験スクリプト変換部107は、該当するソフトウェア変換履歴情報の変換後実体をもとに新試験スクリプトに出力する(S107)。
図2の例では試験対象実体B1が出力されている。
【0026】
次に、図4から図10を用いて、Java(登録商標)コードからC++コードに変換し、更にJava(登録商標)用試験スクリプトであるJUnit用コードからC++用試験スクリプトであるCppUnit用コードに変換する例を説明する。
【0027】
図4は変換前のJava(登録商標)コードの例、図5は変換後のC++コードの例、図6はJava(登録商標)コードからC++コードにソフトウェア変換する規則の例である。
図7はソフトウェア変換時の履歴であり、この例では図6の規則1によって変換された履歴が記録されている。
図8は図4のJava(登録商標)コードを試験するJUnit用コードの例、図9は図5のC++コードを試験するために図8を変換したCppUnit用コードの例、図10はJUnit用コードからCppUnit用コードに変換する規則の例である。
【0028】
まず試験手続実体の変換例を説明する。
図8の「class PointTest extends TestCase {」が、図3のS101で抽出されたとする。
図3のS103でソフトウェア変換規則(図6)を検索し、規則2の「クラス宣言」が見つかる。
図3のS105でソフトウェア変換履歴(図7)を検索するが見つからないので図3のS108を実行する。
S108において試験スクリプト変換規則(図10)を検索して規則1の「クラス宣言」が見つかる。
図3のS110において、S108で見つかった規則を適用して、図9の試験手続実体「class PointTest : public CPPUNIT_NS::TestFixture {」が生成される。
【0029】
次に試験対象実体の変換例を説明する。
図8の「pt = new Point_();」が、図3のS101で抽出されたとする。
図3のS103でソフトウェア変換規則(図6)を検索し、規則4の「インスタンス生成」が見つかる。
図3のS105でソフトウェア変換履歴(図7)を検索し、クラス名「Point」が見つかるので、図3のS107を実行する。
S107において、S103で見つかった規則を適用して、図9の試験対象実体「pt = new Point_();」が生成される。
【0030】
以上のように、試験スクリプト変換において、試験スクリプトが、試験固有なコード断片と、試験対象に依存するコード断片が混在している問題に対して、試験対象に依存するコード断片はソフトウェア変換の際に記録されたソフトウェア変換履歴を用いて変換するようにしているので、試験スクリプト変換精度を向上することができる。
【0031】
以上、本実施の形態では、
試験対象の変換履歴を用いて試験スクリプト変換するレガシーマイグレーション支援システムであって、以下の手段を備えるものを説明した。
マイグレーション前のソフトウェアを格納する旧ソフトウェア格納手段、
旧ソフトウェアを試験するスクリプトを格納する旧試験スクリプト格納手段、
旧試験スクリプトによって旧ソフトウェアを実行する旧ソフトウェア実行手段、
旧ソフトウェアが実行して出力した結果を格納する旧ソフトウェア出力データ格納手段、
マイグレーション後のソフトウェアを格納する新ソフトウェア格納手段、
新ソフトウェアを試験するスクリプトを格納する新試験スクリプト格納手段、
新試験スクリプトによって新ソフトウェアを実行する新ソフトウェア実行手段、
新ソフトウェアが実行して出力した結果を格納する新ソフトウェア出力データ格納手段、
旧ソフトウェア出力データ格納手段の内容と新ソフトウェア出力データ格納手段の内容が一致していることを確認するデータ比較手段、
データ比較の結果を格納する試験結果格納手段、
旧ソフトウェアを新ソフトウェアに変換する規則を格納するソフトウェア変換規則格納手段、
旧ソフトウェアを新ソフトウェアに変換し変換履歴を出力する変換履歴付きソフトウェア変換手段、
旧ソフトウェアを新ソフトウェアに変換した履歴を格納するソフトウェア変換履歴格納手段、
旧試験スクリプトを新試験スクリプトに変換する規則を格納する試験スクリプト変換規則格納手段、
旧試験スクリプトを新試験スクリプトに変換する試験スクリプト変換手段。
【0032】
実施の形態2.
以上の実施の形態1では、マイグレーション後の試験対象となる新ソフトウェアが全て自動変換されるとして、その変換履歴を試験スクリプト変換時に利用するものであるが、次に新ソフトウェアが手作業で修正されるような場合にも、試験スクリプトを自動変換する実施の形態を示す。
【0033】
図11は、このような場合のソフトウェア試験装置100の構成例を示すブロック構成図である。
図11において、新ソフトウェア編集部116は新ソフトウェアを手作業で編集するための要素である。
新ソフトウェア編集部116は、変換実施情報更新部の例に相当する。
その他の要素は図1と同様である。
【0034】
次に、新ソフトウェア編集部116の動作について図12を用いて説明する。
【0035】
新ソフトウェア編集部116は、自動変換された新ソフトウェアを新ソフトウェア格納部103から読み出して、作業者が新ソフトウェアを編集できるようにする(S201)。
作業者が編集を終わると(S202でYES)、新ソフトウェア編集部116は作業者が編集した結果を新ソフトウェア格納部103に保存する(S203)。
更に、作業者が編集したコード断片をソフトウェア変換履歴格納部105から検索(S204)し、その変換履歴の変換後要素を、作業者が編集したコード断片に更新する(S205、S206)。
つまり、新ソフトウェア編集部116は、作業者により新ソフトウェア要素が編集された場合に、編集後の新ソフトウェア要素と、当該編集後の新ソフトウェア要素の変換元の旧ソフトウェア要素とが対応付けられるようにソフトウェア変換履歴情報(変換実施情報)を更新する。
このように更新されたソフトウェア変換履歴格納部105を用いて、試験スクリプト変換部107が新試験スクリプトを生成する動作は、実施の形態1と同様である。
【0036】
以上のように、試験対象となる新ソフトウェアが手作業で編集される場合、その編集結果を新試験スクリプトにも手作業で反映しなければならない問題に対して、新ソフトウェアの編集結果をソフトウェア変換履歴格納部105に反映し、それを用いて試験スクリプト変換することによって、試験スクリプト変換精度を向上することができる。
【0037】
以上、本実施の形態では、
試験対象を手作業で編集した履歴を用いて試験スクリプト変換するレガシーマイグレーション支援システムであって、実施の形態1で示した構成に加えて、以下の手段を備えるものを説明した。
マイグレーション後の新ソフトウェアを手作業で編集可能にし、その結果をソフトウェア変換履歴格納手段に記録する新ソフトウェア編集手段。
【0038】
最後に、実施の形態1及び2に示したソフトウェア試験装置100のハードウェア構成例について説明する。
図13は、実施の形態1及び2に示すソフトウェア試験装置100のハードウェア資源の一例を示す図である。
なお、図13の構成は、あくまでもソフトウェア試験装置100のハードウェア構成の一例を示すものであり、ソフトウェア試験装置100のハードウェア構成は図13に記載の構成に限らず、他の構成であってもよい。
【0039】
図13において、ソフトウェア試験装置100は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、SSD(Solid State Drive)、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態1及び2で説明した「〜格納部」及び「〜格納手段」は、例えば、磁気ディスク装置920により実現される。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
【0040】
通信ボード915は、ネットワークに接続されている。
例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されている。
【0041】
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
【0042】
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
【0043】
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
ソフトウェア試験装置100の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
【0044】
上記プログラム群923には、実施の形態1及び2の説明において「〜部」(「〜格納部」以外、以下同様)、「〜手段」(「〜格納手段」以外、以下同様)として説明している機能を実行するプログラムが記憶されている。
プログラムは、CPU911により読み出され実行される。
【0045】
ファイル群924には、実施の形態1及び2の説明において、「〜の変換」、「〜の抽出」、「〜の比較」、「〜の検索」、「〜の更新」、「〜の生成」、「〜の照合」、「〜の選択」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1及び2で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。
また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0046】
また、実施の形態1及び2の説明において「〜部」、「〜手段」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態1及び2で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「プログラム変換方法」を実現することができる。
また、「〜部」、「〜手段」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。
プログラムはCPU911により読み出され、CPU911により実行される。
すなわち、プログラムは、実施の形態1及び2の「〜部」、「〜手段」としてコンピュータを機能させるものである。あるいは、実施の形態1及び2の「〜部」、「〜手段」の手順や方法をコンピュータに実行させるものである。
【0047】
このように、実施の形態1及び2に示すソフトウェア試験装置100は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」、「〜手段」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【0048】
100 ソフトウェア試験装置、101 旧ソフトウェア格納部、102 変換履歴付きソフトウェア変換部、103 新ソフトウェア格納部、104 ソフトウェア変換規則格納部、105 ソフトウェア変換履歴格納部、106 旧試験スクリプト格納部、107 試験スクリプト変換部、108 新試験スクリプト格納部、109 試験スクリプト変換規則格納部、110 旧ソフトウェア実行部、111 旧ソフトウェア出力データ格納部、112 新ソフトウェア実行部、113 新ソフトウェア出力データ格納部、114 データ比較部、115 試験結果格納部、116 新ソフトウェア編集部。
【特許請求の範囲】
【請求項1】
第1の言語で記述されている第1のソフトウェア要素を、第2の言語で記述される第2のソフトウェア要素に変換して、第1のソフトウェア要素で構成される第1のソフトウェアから第2のソフトウェア要素で構成される第2のソフトウェアを生成するソフトウェア変換部と、
前記ソフトウェア変換部により変換が実施された第1のソフトウェア要素と第2のソフトウェア要素とを対応付けて示す変換実施情報を記憶する変換実施情報記憶部と、
前記第1のソフトウェアの試験のための第1の試験プログラム内で前記変換実施情報に示される第1のソフトウェア要素と一致するプログラム要素を検索し、第1のソフトウェア要素と一致するプログラム要素を前記変換実施情報において当該第1のソフトウェア要素と対応付けられている第2のソフトウェア要素に変換して、前記第1の試験プログラムから、前記第2のソフトウェアの試験のための第2の試験プログラムを生成する試験プログラム変換部とを有することを特徴とするプログラム変換装置。
【請求項2】
前記プログラム変換装置は、更に、
いずれの第1のソフトウェア要素とも一致しないプログラム要素を第3の言語による記述から第4の言語による記述に変換することが定義されている試験プログラム変換規則情報を記憶する試験プログラム変換規則情報記憶部を有し、
前記試験プログラム変換部は、
前記第1の試験プログラム内でいずれの第1のソフトウェア要素とも一致しないプログラム要素は、前記試験プログラム変換規則情報に従って、第3の言語による記述から第4の言語による記述に変換して、前記第1の試験プログラムから前記第2の試験プログラムを生成することを特徴とする請求項1に記載のプログラム変換装置。
【請求項3】
前記ソフトウェア変換部は、
変換を実施した第1のソフトウェア要素と第2のソフトウェア要素とを対応付けて示す変換実施情報を生成し、生成した変換実施情報を前記変換実施情報記憶部に格納することを特徴とする請求項1又は2に記載のプログラム変換装置。
【請求項4】
前記プログラム変換装置は、更に、
前記ソフトウェア変換部により生成された第2のソフトウェア要素が編集された場合に、編集後の第2のソフトウェアと、当該編集後の第2のソフトウェアの変換元の第1のソフトウェア要素とが対応付けられるように前記変換実施情報を更新する変換実施情報更新部を有し、
前記変換実施情報記憶部は、
前記変換実施情報更新部による更新後の変換実施情報を記憶することを特徴とする請求項1〜3のいずれかに記載のプログラム変換装置。
【請求項5】
前記プログラム変換装置は、
前記第1の試験プログラムを用いて前記第1のソフトウェアに対する試験を行い、
前記第2の試験プログラムを用いて前記第2のソフトウェアに対する試験を行い、
前記第1のソフトウェアに対する試験結果と前記第2のソフトウェアに対する試験結果とを照合することを特徴とする請求項1〜4のいずれかに記載のプログラム変換装置。
【請求項6】
コンピュータが、第1の言語で記述されている第1のソフトウェア要素を、第2の言語で記述される第2のソフトウェア要素に変換して、第1のソフトウェア要素で構成される第1のソフトウェアから第2のソフトウェア要素で構成される第2のソフトウェアを生成するソフトウェア変換ステップと、
前記コンピュータが、前記ソフトウェア変換ステップにより変換が実施された第1のソフトウェア要素と第2のソフトウェア要素とを対応付けて示す変換実施情報を記憶する変換実施情報記憶ステップと、
前記コンピュータが、前記第1のソフトウェアの試験のための第1の試験プログラム内で前記変換実施情報に示される第1のソフトウェア要素と一致するプログラム要素を検索し、第1のソフトウェア要素と一致するプログラム要素を前記変換実施情報において当該第1のソフトウェア要素と対応付けられている第2のソフトウェア要素に変換して、前記第1の試験プログラムから、前記第2のソフトウェアの試験のための第2の試験プログラムを生成する試験プログラム変換ステップとを有することを特徴とするプログラム変換方法。
【請求項7】
第1の言語で記述されている第1のソフトウェア要素を、第2の言語で記述される第2のソフトウェア要素に変換して、第1のソフトウェア要素で構成される第1のソフトウェアから第2のソフトウェア要素で構成される第2のソフトウェアを生成するソフトウェア変換ステップと、
前記ソフトウェア変換ステップにより変換が実施された第1のソフトウェア要素と第2のソフトウェア要素とを対応付けて示す変換実施情報を記憶する変換実施情報記憶ステップと、
前記第1のソフトウェアの試験のための第1の試験プログラム内で前記変換実施情報に示される第1のソフトウェア要素と一致するプログラム要素を検索し、第1のソフトウェア要素と一致するプログラム要素を前記変換実施情報において当該第1のソフトウェア要素と対応付けられている第2のソフトウェア要素に変換して、前記第1の試験プログラムから、前記第2のソフトウェアの試験のための第2の試験プログラムを生成する試験プログラム変換ステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項1】
第1の言語で記述されている第1のソフトウェア要素を、第2の言語で記述される第2のソフトウェア要素に変換して、第1のソフトウェア要素で構成される第1のソフトウェアから第2のソフトウェア要素で構成される第2のソフトウェアを生成するソフトウェア変換部と、
前記ソフトウェア変換部により変換が実施された第1のソフトウェア要素と第2のソフトウェア要素とを対応付けて示す変換実施情報を記憶する変換実施情報記憶部と、
前記第1のソフトウェアの試験のための第1の試験プログラム内で前記変換実施情報に示される第1のソフトウェア要素と一致するプログラム要素を検索し、第1のソフトウェア要素と一致するプログラム要素を前記変換実施情報において当該第1のソフトウェア要素と対応付けられている第2のソフトウェア要素に変換して、前記第1の試験プログラムから、前記第2のソフトウェアの試験のための第2の試験プログラムを生成する試験プログラム変換部とを有することを特徴とするプログラム変換装置。
【請求項2】
前記プログラム変換装置は、更に、
いずれの第1のソフトウェア要素とも一致しないプログラム要素を第3の言語による記述から第4の言語による記述に変換することが定義されている試験プログラム変換規則情報を記憶する試験プログラム変換規則情報記憶部を有し、
前記試験プログラム変換部は、
前記第1の試験プログラム内でいずれの第1のソフトウェア要素とも一致しないプログラム要素は、前記試験プログラム変換規則情報に従って、第3の言語による記述から第4の言語による記述に変換して、前記第1の試験プログラムから前記第2の試験プログラムを生成することを特徴とする請求項1に記載のプログラム変換装置。
【請求項3】
前記ソフトウェア変換部は、
変換を実施した第1のソフトウェア要素と第2のソフトウェア要素とを対応付けて示す変換実施情報を生成し、生成した変換実施情報を前記変換実施情報記憶部に格納することを特徴とする請求項1又は2に記載のプログラム変換装置。
【請求項4】
前記プログラム変換装置は、更に、
前記ソフトウェア変換部により生成された第2のソフトウェア要素が編集された場合に、編集後の第2のソフトウェアと、当該編集後の第2のソフトウェアの変換元の第1のソフトウェア要素とが対応付けられるように前記変換実施情報を更新する変換実施情報更新部を有し、
前記変換実施情報記憶部は、
前記変換実施情報更新部による更新後の変換実施情報を記憶することを特徴とする請求項1〜3のいずれかに記載のプログラム変換装置。
【請求項5】
前記プログラム変換装置は、
前記第1の試験プログラムを用いて前記第1のソフトウェアに対する試験を行い、
前記第2の試験プログラムを用いて前記第2のソフトウェアに対する試験を行い、
前記第1のソフトウェアに対する試験結果と前記第2のソフトウェアに対する試験結果とを照合することを特徴とする請求項1〜4のいずれかに記載のプログラム変換装置。
【請求項6】
コンピュータが、第1の言語で記述されている第1のソフトウェア要素を、第2の言語で記述される第2のソフトウェア要素に変換して、第1のソフトウェア要素で構成される第1のソフトウェアから第2のソフトウェア要素で構成される第2のソフトウェアを生成するソフトウェア変換ステップと、
前記コンピュータが、前記ソフトウェア変換ステップにより変換が実施された第1のソフトウェア要素と第2のソフトウェア要素とを対応付けて示す変換実施情報を記憶する変換実施情報記憶ステップと、
前記コンピュータが、前記第1のソフトウェアの試験のための第1の試験プログラム内で前記変換実施情報に示される第1のソフトウェア要素と一致するプログラム要素を検索し、第1のソフトウェア要素と一致するプログラム要素を前記変換実施情報において当該第1のソフトウェア要素と対応付けられている第2のソフトウェア要素に変換して、前記第1の試験プログラムから、前記第2のソフトウェアの試験のための第2の試験プログラムを生成する試験プログラム変換ステップとを有することを特徴とするプログラム変換方法。
【請求項7】
第1の言語で記述されている第1のソフトウェア要素を、第2の言語で記述される第2のソフトウェア要素に変換して、第1のソフトウェア要素で構成される第1のソフトウェアから第2のソフトウェア要素で構成される第2のソフトウェアを生成するソフトウェア変換ステップと、
前記ソフトウェア変換ステップにより変換が実施された第1のソフトウェア要素と第2のソフトウェア要素とを対応付けて示す変換実施情報を記憶する変換実施情報記憶ステップと、
前記第1のソフトウェアの試験のための第1の試験プログラム内で前記変換実施情報に示される第1のソフトウェア要素と一致するプログラム要素を検索し、第1のソフトウェア要素と一致するプログラム要素を前記変換実施情報において当該第1のソフトウェア要素と対応付けられている第2のソフトウェア要素に変換して、前記第1の試験プログラムから、前記第2のソフトウェアの試験のための第2の試験プログラムを生成する試験プログラム変換ステップとをコンピュータに実行させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2012−248037(P2012−248037A)
【公開日】平成24年12月13日(2012.12.13)
【国際特許分類】
【出願番号】特願2011−119823(P2011−119823)
【出願日】平成23年5月30日(2011.5.30)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】
【公開日】平成24年12月13日(2012.12.13)
【国際特許分類】
【出願日】平成23年5月30日(2011.5.30)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】
[ Back to top ]