JP2009245066A - ソフトウェアマイグレーションシステム及び方法 - Google Patents
ソフトウェアマイグレーションシステム及び方法 Download PDFInfo
- Publication number
- JP2009245066A JP2009245066A JP2008089492A JP2008089492A JP2009245066A JP 2009245066 A JP2009245066 A JP 2009245066A JP 2008089492 A JP2008089492 A JP 2008089492A JP 2008089492 A JP2008089492 A JP 2008089492A JP 2009245066 A JP2009245066 A JP 2009245066A
- Authority
- JP
- Japan
- Prior art keywords
- software
- old
- test
- target
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【解決手段】旧言語のソフトウェアを構成する各FU(Functional Unit)のソースコードが分析され、その分析の結果を基に、旧言語のFU間の呼出し依存関係が把握される。そして、把握された呼出し依存関係に基づいて、旧言語のFUから新言語のFUへのFU変換と、正しくFU変換が行われたかどうかの内部レベル(ソースコードレベル)のテストが行われる。各FU変換についての各内部レベルのテストの結果が異常無しであれば、新言語のFUとそれに対応する旧言語のFUに対して、ソフトウェアの外部(例えばスクリーン或いはバッチ)から情報を入力し同じ振舞いが行われたかどうかの外部レベルのテストが行われる。外部レベルのテストの結果も異常無しであれば、ソフトウェアマイグレーションの完了となる。
【選択図】図5
Description
P1000:現行システム分析;
P2000:変換方式設計;
P3000:技術差異分析;
P4000:継続的インテグレーション;及び
P5000:新旧稼動比較テスト
がある(ここでの「P」は、Phaseの頭文字を表す)。以下、これら5つのフェーズの概要を説明する。
現行システム分析では、旧ソフトウェア(マイグレーション対象のソフトウェア)に含まれている各FU(Functional Unit)のキャプチャが行われる(以下、旧ソフトウェア内のFUを「旧FU」と言う)。具体的には、旧ソフトウェアのソースコードが分析され、FU間の呼出し依存関係(以下、「FU呼出し依存関係」と言う)が算出される。そして、算出されたFU呼出し依存関係を基に、どの旧FUをいつ新FU(新言語で記述されたFU)に変換するかのFU変換スケジュールが作成される。ここで重要な点は、旧ソフトウェアのソースコード分析では、旧ソフトウェアの業務要件を知る必要は全く無いことである。なお、「FU」とは、何かしらの振舞いを行う、プログラムの最小単位(最小振舞い単位)であり、典型的には、プロシージャ、サブルーチン、或いは関数と呼ばれるモジュールである。
旧ソフトウェアのソースコードを新ソフトウェアのソースコードに変換するためにどんな言語変換ツール(コンピュータプログラム)を用いるかの選定が行われる。また、言語変換ツールのテストランやテストラン結果の検証も行われる。その結果、旧ソフトウェアの何パーセントを自動で言語変換できるかがわかる。旧ソフトウェアの自動で言語変換できないパートについては、手動で言語変換する必要がある。
旧ソフトウェアの手動で言語変換する必要のあるパートについて、このフェーズが実行される。具体的には、旧ソフトウェアに関する技術(以下、「旧技術」と言う)と新ソフトウェアに関する技術(以下、「新技術」と言う)との比較が行われ、その比較の結果を基に、P4000(継続的インテグレーション)においてどのような処理を行うかのガイドラインを表す情報(以下、「ガイドライン情報」と言う)が決定される。例えば、旧技術ではサポートされているが新技術でサポートされていない仕様がある場合には、継続的インテグレーションにおいてどのような処理を行うかが決定される。
P1000(現行システム分析)で作成されたFU変換スケジュールは、依存度の低い旧FUほど先に新FUへと変換するスケジュールとなっている。このフェーズでは、そのスケジュールに従って(必要に応じて、P3000(技術差異分析)で作成されたガイドライン情報が更に参酌されて)、依存度の低い旧FUから先に、以下の(処理1)〜(処理3)、
(処理1)旧FUから新FUへの変換(FUの言語変換、以下、「FU変換」と言う)、
(処理2)FU変換が正しく行われたか否かのテスト、
(処理3)テストの結果が異常無しであり、且つ、(処理1)で得られた新FUより依存度が低い新FUが存在する場合に、その新FUに(処理1)で得られた新FUをインテグレートする処理、
が行われる。全ての旧FUについて(処理1)〜(処理3)が行われることで、新ソフトウェアが構築される。このフェーズで、旧ソフトウェアから新ソフトウェアへのマイグレーションが暫定的に完了したことになる。この後に、P5000(新旧稼働比較テスト)が実行され、異常が無ければ、ソフトウェアマイグレーションが完全に完了したことになる。具体的には、P4000(継続的インテグレーション)では、FU変換の都度に、そのFU変換が正しく行われたか否かがテストされるが、そのテストは、内部レベルのテスト(ソースコードレベルのテスト)であり、次のP5000(新旧稼働比較テスト)で、外部レベルのテストが実行される。内部レベルのテストと外部レベルのテストの両方で異常が無ければ、ソフトウェアマイグレーションが正しく行われたことになる。
前述したように、外部レベルのテストが実行される。外部レベルのテストでは、旧ソフトウェア内の旧AR(Action Receiver)と、新ソフトウェア内の新AR(その旧ARから得られた新AR)が、ソフトウェアの外部から同じ入力(以下、外部からの入力を「外部入力」と言う)を受ける。新旧のソフトウェアが、その外部入力に応答したアクションを行い、それらのアクションが同じか否かが検証される。このような検証は、新旧のソフトウェアにアクションが行われる都度に実行される。ここで、「AR」とは、外部入力を受け付けるFUのこと(つまり一種のFU)である。FUがARであるか否かは、P1000(現行システム分析)で把握される。また、「外部」とは、例えば、スクリーン(ARのユーザに対するインタフェース、典型的にはGUI(Graphical User Interface))、又はバッチプログラムである。従って、外部入力は、例えば、ユーザからスクリーンに対して情報が入力されて特定の操作が行われたことに起因してスクリーンから入力されるパラメータ値、或いは、バッチプログラムから入力されるパラメータ値がある。
旧ソフトウェアから複数の旧FUが把握される。具体的には、入力された旧ソフトウェアソースコードから複数の旧FUソースコードが把握される。ここで重要なことは、図6に例示するように、旧ソフトウェアソースコード201を所定の規則に従って形式的に区切ることで、結果として、旧FUソースコード201から複数の旧FUソースコードが特定されることである。従って、旧ソフトウェアが有する業務要件を理解して旧ソフトウェアソースコード201を旧ソフトウェアの業務要件単位で区切る(つまり意味的に区切る)ことは、全く必要ない。つまり、旧ソフトウェアがどんな業務要件を有するかということは全く考慮する必要が無い。このS1100の処理は、作業者によって行われるが、それに代えて、例えば、コンピュータプログラムが、上記の所定の規則に従って旧ソフトウェアソースコード201から複数の旧FUソースコードを把握することも可能である。なお、上記の所定の規則としては、例えば、第一種の所定のコード(例えば“Sub”)と第二種の所定のコード(例えば“End Sub”)との間を一つの旧FUソースコードとするという規則を採用することができる。
対象旧FUから複数のセクションが把握される。具体的には、対象旧FUソースコードから、複数のセクションソースコードが把握される。ここでも、対象旧FUソースコードが意味的に区切られるのではなく(すなわち、対象旧FUの機能を理解し機能毎に区切らえるのではなく)、形式的に区切られる(すなわち、所定の規則に従って区切られる)ことで、結果として、対象旧FUソースコードから複数のセクションソースコードが把握されることになる。S1200も、S1100と同様、作業者によって行われるが、それに代えて、例えば、コンピュータプログラムが、所定の規則に従って対象旧FUソースコードを複数のセクションソースコードに区切ることも可能である。
作業者が、セクション関係を構築する。すなわち、セクションとセクションとの関連付けが行われる。この結果、図7に例示するように、どのセクションがどのセクションに対して関連するかが定義される。図7では、丸が、セクションを表しており、矢印が、リンクを表している。図7から分かるように、セクションとセクションとの関連付けにより、多数通りのパスができる。パスは、リンクで結ばれた一連のセクションで構成される。セクション間の関連付けは、対象旧FUソースコードを基に機械的に行うことができる。つまり、ここでも、対象旧FUソースコードが有する機能が何であるかを理解する必要は無い。なお、S1300では、セクション関係情報(どのセクションがどのセクションにリンクを張られているかを表す情報)を基に、循環的複雑度分析プログラム121が、図7に例示したようなセクション関係を表すセクション関係情報を、作業者端末50の表示装置53に表示することができる。この場合、作業者端末50で実行される図示しないブラウザが、そのセクション関係情報が表すセクション関係(つまり図7に示す関係)を、表示装置53のディスプレイ画面に表示することができる。
循環的複雑度分析プログラム121が、セクション関連情報から、セクション数及びリンク数を把握し、把握したセクション数及びリンク数を用いて、循環的複雑度を算出する。循環的複雑度を算出する目的は、対象旧FUについて幾つの旧テストプログラム122を作成したら良いかを知るためである。備循環的複雑度数の計算式は、下記(式1)、
循環的複雑度=リンク数−セクション数+(1+リーフ数(終点セクション数))・・(式1)、
である。
作業者が、算出された循環的複雑度に基づく数の旧テストプログラム122を作成する。「循環的複雑度に基づく数」とは、循環的複雑度を考慮して決定された数のことであり、循環的複雑度と同じ数であっても異なる数であっても良い。本実施形態では循環的複雑度と同じ数とする。旧テストプログラム122は、複数のパスのうちの対象とするパスを経由させる情報を対象旧FUに入力することで、旧ソフトウェアのプロセスの結果としてのログファイルを出力させるためのコンピュータプログラムである。旧テストプログラム122の作成においても、旧ソフトウェアがどんな業務要件を有しているかを作業者は全く知らなくてよい。すなわち、本実施形態では、旧ソフトウェアの業務要件を把握することなく、いきなり、業務が有するプロセスを調べることになる。ちなみに、本実施形態の説明では、旧テストプログラム122(又は新テストプログラム123)が対象の旧FU(又は新FU)を呼び出すことで行われる振舞いのことを「プロセス」と言い、ARが外部入力を受けることで行われる振舞いのことを「アクション」と言う。
対象旧FUに対応した全ての旧テストプログラム122が実行される。旧テストプログラム122が実行されると、旧ソフトウェアのプロセスの結果として旧ログファイルが作成される。一つの旧テストプログラム122の実行につき、一つの旧ログファイルが作成されるので、このS1600では、対象旧FUの循環的複雑度と同数の旧ログファイルが作成される。作成された旧ログファイルは記憶装置105に格納される。
全ての旧FUについてS1200〜S1600が実行されると、旧ソフトウェアについて多数の旧ログファイルが作成されていることになる。ログチェッカー125が、それら多数の旧ログファイルを入力し、多数の旧ログファイルを分析して、スケジューラ用テキストを作成する。「スケジューラ用テキスト」とは、FU変換スケジューラ131に入力されるテキストファイルである。このテキストファイルには、複数のFU呼出し関係が記録されている。「FU呼出し関係」とは、どの旧FUからどの旧FUが呼び出されたかの関係である。
FU変換スケジューラ131が、入力されたスケジューラ用テキストを基に(例えば、複数のFU呼出し関係を基に)、FU呼出し依存関係を把握する。FU呼出し関係に対し、「FU呼出依存関係」とは、FUの呼出しの向きとFUの依存度とによって定まるFU間の関係である。FU呼出し依存関係の一例を図12に示す。図12の矢印の向きは、呼び出しの向きである。従って、例えば、FU11からFU10が呼び出され、FU10からFU2が呼び出され、FU2からFU1が呼び出される場合には、図12に示すような関係になる。末端(木構造におけるリーフ)に近いほど、依存度が低く、先端に近いほど(末端から遠いほど)、依存度が高いということになる。従って、FU1,FU3,FU5,FU7,FU12が、最も依存度が低く、FU2,FU4,FU8,FU9が、2番目に依存度が低く、FU6,FU10が、3番目に依存度が低く、FU11が、4番目に依存度が低い(つまり最も依存度が高い)、ということになる。図12では、FU4は、一つのFU3にのみ依存し、FU8は、二つのFU5及びFU7に依存し、この結果、FU8の方がFU4よりも依存度が高いように見えるが、末端FUからの距離が同じため、依存度も同じである。FU変換スケジューラ131は、把握されたFU呼出し依存関係を基に、依存度の低い旧FUからFU変換を行うことを表したFU変換スケジュールを作成する。
対象の旧FUから新FUへのFU変換が行われる。
対象の旧FUに対応する旧テストプログラム122を基に(例えば、旧テストプログラム122の言語が旧言語から新言語に言語変換ツール130を使用して変換されることにより)、新テストプログラム132が作成される(新テストプログラム132は、継続的インテグレーションの前に作成されていても良い)。そして、内部レベルテストが行われる。具体的には、例えば、対象の新FU(変換後の新FU)に対応した新テストプログラム132が実行されることで、対象の新FUに対応した新ログファイルが作成される。また、対象の新FUに対応した旧FUの旧ログファイルが記憶装置105から読み出される。そして、作成された新ログファイルが、読み出された旧ログファイルと比較される。それらのログファイルの内容が実質的に同じであれば、正しくFU変換が行われたということであり、故に、次のS4300(インテグレーション処理)が行われる。それらのログファイルの内容が実質的に違っていれば、手動で、新FUが編集される。
S4200で得られた新FUの呼出し先の新FUが既にあれば(S4200で得られた新FUよりも依存度の低い新FUが取得済みであれば)、その呼び出し先の新FUに、S4200で得られた新FUがインテグレートされる。
複数のスクリーン入力ケースデータが作成される。「スクリーン入力ケースデータ」とは、作業者がどのスクリーンに対してどんなスクリーン入力を行うか(例えばどんな値を入力してどんなボタンを押すか)のケースを規定したデータである。一つのARにつき、そのARの循環的複雑度と同数のスクリーン入力ケースデータが作成される。また、スクリーン入力ケースデータは、新旧のARについてそれぞれ作成される。以下、旧ARに対応したスクリーン入力ケースデータを「旧スクリーン入力ケースデータ」と言い、新ARに対応したスクリーン入力ケースデータを「新スクリーン入力ケースデータ」と言う。
新旧のスクリーン入力ケースデータに従うスクリーン入力が新旧のスクリーンに対して行われると、新旧のARが、新旧のスクリーンから同一の外部入力を受ける。その外部入力に応じたアクションを、新旧のソフトウェアが実行する。また、新旧のアクションに関して、チェックポイント外部化プログラム群129も実行される。
(1)初期値(入力情報)の設定、
(2)前バッチプログラム126の呼び出し、
(3)旧ログファイル(セクションログファイル)の作成、
(3−1)旧ログファイルのオープン(準備)、
(3−2)対象旧FUの呼び出し、
(3−3)旧ログファイルのクローズ、
(4)チェックポイント結果チェッカー123の呼び出し、
(5)後バッチプログラム127の呼び出し、
で処理を実行することが定義されている。なお、(3−1)の処理定義に関連して、準備された旧ログファイル203に書き込むべき情報、すなわち、FUフルネーム(SC名及びFU名で構成された名称)、テストケース番号及び対象のパスの構成が書き込まれている。
旧テストプログラム122は、図示しない所定の初期値(入力情報)を、旧ソフトウェア200に設定する。
旧テストプログラム122は、前バッチプログラム126を呼び出す。
・ファイル状況差分検出プログラム(FileDiffDetector)1292の呼び出し、
・ネットワークリクエスト検出プログラム(NetworkReqDetector)1293の開始、
・変数値検出プログラム(VariableDiffDetector)1295の呼び出し、
を実行する。
旧テストプログラム122が、このプログラム122に記述されているFUフルネーム及びテストケース番号を使用して、ロガーフレームワーク601に組み込まれているセクションロガー603を呼び出す。それにより、FUフルネーム及びテストケース番号を持った、ロガーのインスタンスが、サーバ100内の主記憶装置に展開される。旧テストプログラム122が、セクションロガー603に、旧ログファイルの準備を要求する。その際、旧テストプログラム122は、このプログラム122に記述されている対象パスの構成を、セクションロガー603に渡す。セクションロガー603は、旧テストプログラム122からの準備要求に応答して、FUフルネーム及びテストケース番号に基づいて作成したファイル名の旧ログファイル203を準備する(例えば、メモリ等の主記憶装置に旧ログファイル203を展開する)。そして、セクションロガー603は、FUフルネーム、テストケース番号及び対象パスの構成を、準備された旧ログファイル203に書き込む(図10の1〜3行目を参照)。
次に、旧テストプログラム122が、FUフルネームから特定される対象の旧FUを呼び出す。これにより、図8を参照して説明したように、セクションが次々に呼び出される。具体的には、対象パスを構成する複数のセクションが、対象パスを構成するセクションの並び順で呼び出される。セクションが呼び出される都度に、呼び出されたセクションに埋め込まれているログステートメントがセクションロガー603を使用する(セクションロガー603に要求を出す)ことによって、呼び出されたセクションを表す情報(つまりそのセクションが呼び出されたことのログ)が旧ログファイル203に書き込まれる。図9の例は、対象の旧FUに存在する二つのセクションA及びBがセクションA、Bの順で呼び出され、セクションAに埋め込まれているログステートメント内の値(セクションAを表す情報)と、セクションBに埋め込まれているログステートメント内の値(セクションBを表す情報)が、セクションロガー603によってログファイル203に書き込まれたことを表す。
対象パスを構成する全てのセクションが呼び出されたならば、旧テストプログラム122が、ロガーフレームワーク601に組み込まれているセクションロガー603に、クローズを要求する。セクションロガー603は、旧テストプログラム122からのクローズ要求に応答して、旧ログファイル203をクローズする(例えば、主記憶装置から補助記憶装置にログファイル203を書き出し、主記憶装置からそのログファイル203を削除する)。これにより、作成された旧ログファイル203が記憶装置105に保存される。その際、そのクローズ要求を受けたセクションロガー603がサーバ100内の主記憶装置から消去されても良いし、消去されずに後でパラメータ(FUフルネーム及びテストケース番号)が設定され直されても良い。
旧テストプログラム122が、チェックポイント結果チェッカー123を呼び出す。呼び出されたチェックポイント結果チェッカー123は、まず、ロガーフレームワーク601に組み込まれているチェックポイント結果ライタ605に、チェックポイント結果ファイルの準備を要求する。チェックポイント結果ライタ605は、チェックポイント結果チェッカー123からの準備要求に応答して、チェックポイント結果ファイル430を準備する。次に、チェックポイント結果チェッカー123は、旧テストプログラム122の実行結果として旧ソフトウェアに発生したチェックポイント結果値を参照し、参照したチェックポイント結果値の書込みを、チェックポイント結果ライタ605に依頼する。チェックポイント結果ライタ605は、その依頼に応答して、チェックポイント結果値を、チェックポイント結果ファイル430に書き込む。最後に、チェックポイント結果チェッカー123は、チェックポイント結果ライタ605に、チェックポイント結果ファイルのクローズを要求する。チェックポイント結果ライタ605は、チェックポイント結果チェッカー123からのクローズ要求に応答して、チェックポイント結果ファイル430をクローズする。これにより、チェックポイント結果ファイル430が、記憶装置105に格納される。
旧テストプログラム122は、後バッチプログラム127を呼び出す。
・ファイル状況差分検出プログラム1292の呼び出し、
・ネットワークリクエスト検出プログラム1293の終了、
・変数値検出プログラム1295の呼び出し、
を実行する。
(1)各対象パスが正確に経由されたかを検出し、検出の結果を表す情報を、結果ファイル420に書き込む、
(2)各FU呼び出し関係を記録したスケジューラ用テキスト440を作成する、
を実行する。
(A)各旧FUに対応した循環的複雑度、
(B)作業者の人数、
を参照することで、図11に示すスケジューラ用テキスト440を作成する。
(1)新ログファイル作成前の新ファイル状況を表す結果ファイル、
(2)新ログファイル作成後の新ファイル状況を表す結果ファイル、
(3)ネットワークリクエストの検出結果を表す結果ファイル、
(4)新ログファイル作成前の新全変数値を表す結果ファイル、
(5)新ログファイル作成後の新全変数値を表す結果ファイル、
が作成される。
(a)ログチェッカー125が、新ログファイルを旧ログファイルと比較する処理、
(b)比較プログラム133が、新内部ファイル状況差分を旧内部ファイル状況差分と比較する処理、
(c)比較プログラム133が、ネットワークリクエストの検出結果を表す新旧の結果ファイル(具体的には、上記(3)の結果ファイルと、図9に示した結果ファイル410)を比較する処理、
(d)比較プログラム133が、新内部全変数値差分を旧内部全変数値差分と比較する処理、
が実行される。
(1)外部入力受領前の新旧のファイル状況を取得する、
(2)アクション実行後の新旧のファイル状況を取得する、
(3)外部入力受領前の新旧のファイル状況と、アクション実行後の新旧のファイル状況とを比較することにより、旧外部ファイル状況差分と、新外部ファイル状況差分とを取得する、
を実行する。そして、比較プログラム133が、新外部ファイル状況差分を旧外部ファイル状況差分と比較する。この比較の結果、不一致があれば、外部レベルテストの結果が異常有りということになる。
(1)外部入力受領前の新旧の全変数値を取得する、
(2)アクション実行後の新旧の全変数値を取得する、
(3)外部入力受領前の新旧の全変数値と、アクション実行後の新旧の全変数値とを比較することにより、旧外部全変数値差分と、新外部全変数値差分とを取得する、
を実行する。そして、比較プログラム133が、新外部全変数値差分を旧外部全変数値差分と比較する。この比較の結果、不一致があれば、外部レベルテストの結果が異常有りということである。
Claims (9)
- 第一言語で記述された第一ソフトウェアを第二言語で記述された第二ソフトウェアにマイグレーションする方法であって、
(A)前記第一ソフトウェアのソースコードに含まれている各第一ファンクショナルユニット(FU)のソースコードについて、以下の(a1)及び(a2)、
(a1)対象の第一FUにおけるセクションの数とリンクの数とに基づいて循環的複雑度を算出する処理、
(a2)算出された循環的複雑度に基づく数の作成された第一テストプログラムの各々が前記対象の第一FUを呼び出すことで呼び出された第一FUを表す情報を記述した、各前記第一テストプログラムに対応した各第一ログファイルを作成する処理、
を実行し、
(B)前記第一ソフトウェアについて作成された複数の第一ログファイルを基に、FU間の呼出しの向きとFUの依存度とによって定まるFU呼出し依存関係を把握し、
(C)把握されたFU呼出し依存関係において依存度の低い前記第一FUから順に、以下の(c1)乃至(c3)、
(c1)前記第一FUを第二言語で記述された第二FUに変換することであるFU変換、
(c2)各前記第一テストプログラムに対応する各第二テストプログラムが前記(c1)で得られた第二FUを呼び出すことで呼び出された第二FUを表す情報を記述した、前記各第二テストプログラムに対応した各第二ログファイルを作成し、前記各第二ログファイルを、前記各第一のテストプログラムに対応した前記各第一ログファイルと比較する内部レベルテスト、
(c3)前記内部レベルテストの結果に異常が無く、前記(c1)で得られた前記第二FUの呼出し先の第二FUが既に存在する場合に、前記得られた第二FUを前記呼出し先の第二FUにインテグレートする処理、
を実行し、
(D)全ての前記第一FUについて前記(C)が実行されることにより得られた前記第二ソフトウェアと、前記第一ソフトウェアとの両方について、ユーザからの情報入力を受け付けるスクリーン及び/又はバッチで実行されるコンピュータプログラムである外部からの入力に従うテストである外部レベルテストを実行する、
ソフトウェアマイグレーション方法。 - 前記外部レベルテストでは、以下の(d1)乃至(d3)のうちの少なくとも一つ、
(d1)前記外部からの入力に従う前記第一ソフトウェアのアクション後の所定種類の対象の状況と、前記外部からの入力に従う前記第二ソフトウェアのアクション後の所定種類の対象の状況とを比較する、
(d2)前記第一ソフトウェアについての、前記外部からの入力の前から前記アクション後までの所定種類の監視結果と、前記第二ソフトウェアについての前記外部からの入力の前から前記アクション後までの所定種類の監視の結果とを比較する、
(d3)前記第一ソフトウェアについての、前記外部からの入力前の所定種類の対象の状況と前記アクション後の所定種類の対象の状況との差分と、前記第二ソフトウェアについての、前記外部からの入力前の所定種類の対象の状況と前記アクション後の所定種類の対象の状況との差分とを、比較する、
ことが実行される、
請求項1記載のソフトウェアマイグレーション方法。 - 前記第一テストプログラムが実行されると、以下の(p1)及び/又は(p2)、
(p1)前記対象の第一FUの呼出し前の所定種類の対象の状況Aを取得し、且つ、前記第一ログファイルが作成された後の前記所定種類の対象の状況Bを取得し、
(p2)前記対象の第一FUの呼出し前から前記第一ログファイル作成後まで所定種類の対象を監視し、
が実行され、
前記第一テストプログラムに対応する第二テストプログラムが実行されると、以下の(q1)及び/又は(q2)、
(q1)前記対象の第二FUの呼出し前の所定種類の対象の状況Cを取得し、且つ、前記第二ログファイルが作成された後の前記所定種類の対象の状況Dを取得し、
(q2)前記対象の第二FUの呼出し前から前記第二ログファイル作成後まで所定種類の対象を監視し、
が実行され、
前記内部レベルテストでは、以下の(r1)及び/又は(r2)、
(r1)前記状況Aと前記状況Bとの差分と、前記状況Cと前記状況Dとの差分を比較する、
(r2)前記(p2)の監視の結果と前記(q2)の監視の結果とを比較する、
が実行される、
請求項1又は2記載のマイグレーション方法。 - 前もって各第一FUのソースコードにログステートメントが設定され、ログステートメントにより、前記第一ログファイルに、呼び出された第一FUを表すログが記録される、
請求項1乃至3のうちのいずれか一項に記載のマイグレーション方法。 - 第一ソフトウェアのソースコードにおける各第一FUのソースコードにロガーステートメントを設定しておき、
前記第一ソフトウェアのソースコードに含まれている各第一FUのソースコードについて、以下の(a1)及び(a2)、
(a1)対象の第一FUにおけるセクションの数とリンクの数とに基づいて循環的複雑度を算出する処理、
(a2)算出された循環的複雑度に基づく数の作成された第一テストプログラムの各々が、前記対象の第一FUを呼び出すことで、呼び出された第一FUの前記ロガーステートメントが前記呼び出された第一FUを表す情報を記述した、各前記第一テストプログラムに対応した各第一ログファイルを作成する処理、
を実行する、
FU呼出し依存関係の把握を支援する方法。 - 第一言語で記述された第一ソフトウェアがそれのソースコードの分析結果を基にマイグレーションされたものである、第二言語で記述された第二ソフトウェアが、前記第一ソフトウェアの正しいマイグレーションであるか否かのテストの方法であって、
前記第二ソフトウェアと前記第一ソフトウェアとの両方について、ユーザからの情報入力を受け付けるスクリーン及び/又はバッチで実行されるコンピュータプログラムである外部からの入力に従うテストである外部レベルテストを実行し、
前記外部レベルテストでは、以下の(d1)乃至(d3)のうちの少なくとも一つ、
(d1)前記外部からの入力に従う前記第一ソフトウェアのアクション後の所定種類の対象の状況と、前記外部からの入力に従う前記第二ソフトウェアのアクション後の所定種類の対象の状況とを比較する、
(d2)前記第一ソフトウェアについての、前記外部からの入力の前から前記アクション後までの所定種類の監視結果と、前記第二ソフトウェアについての前記外部からの入力の前から前記アクション後までの所定種類の監視の結果とを比較する、
(d3)前記第一ソフトウェアについての、前記外部からの入力前の所定種類の対象の状況と前記アクション後の所定種類の対象の状況との差分と、前記第二ソフトウェアについての、前記外部からの入力前の所定種類の対象の状況と前記アクション後の所定種類の対象の状況との差分とを、比較する、
ことが実行される、
ソフトウェアマイグレーションの成否をテストする方法。 - 第一言語で記述された第一ソフトウェアを第二言語で記述された第二ソフトウェアにマイグレーションするコンピュータシステムであって、
前記第一ソフトウェアのソースコードに含まれている各第一ファンクショナルユニット(FU)のソースコードについて、各第一FUにおけるセクションの数とリンクの数とに基づいて各循環的複雑度を算出する循環的複雑度算出部と、
各第一FUに対応した、算出された循環的複雑度に基づく数の第一テストプログラムと、
各第一テストプログラムに対応した各第二テストプログラムと、
前記第一ソフトウェアのソースコードに含まれている各第一ファンクショナルユニット(FU)に設定されたロガーと、
内部レベルテスト部と、
外部レベルテスト部と、
を備え、
各第一テストプログラムが対象の第一FUを呼び出し、その後に呼び出された第一FUに設定されているロガーが、第一ログファイルに、前記呼び出された第一FUを表す情報を書き込み、それにより、各第一テストプログラムに対応した各第一ログファイルが作成され、
前記第一ソフトウェアについての複数の第一ログファイルに基づいて把握されたFU呼出し依存関係に基づく順番で第一FUから得られた第二FUを、前記各第二プテストログラムが呼び出し、その後に呼び出された第二FUに設定されているロガーが、第二ログファイルに、前記呼び出された第二FUを表す情報を書き込み、それにより、各第二テストプログラムに対応した各第二ログファイルが作成され、
前記内部レベルテスト部が、前記各第一ログファイルと前記各第二ログファイルを比較し、
前記外部レベルテスト部が、前記第二ソフトウェアと前記第一ソフトウェアとの両方について、ユーザからの情報入力を受け付けるスクリーン及び/又はバッチで実行されるコンピュータプログラムである外部からの入力に従うテストである外部レベルテストを実行する、
ソフトウェアマイグレーションシステム。 - 第一言語で記述された第一ソフトウェアのソースコードに含まれている各第一ファンクショナルユニット(FU)のソースコードについて、各第一FUにおけるセクションの数とリンクの数とに基づいて各循環的複雑度を算出する循環的複雑度算出部と、
各第一FUに対応した、算出された循環的複雑度に基づく数の第一テストプログラムと、
前記各第一FUに設定されたロガーと
を備え、
各前記第一テストプログラムが、そのプログラムの対象の第一FUを呼び出すことで、呼び出された第一FUの前記ロガーが、前記呼び出された第一FUを表す情報を、第一のログファイルに記録する、
FU呼出し依存関係の把握を支援するコンピュータシステム。 - 第一言語で記述された第一ソフトウェアがそれのソースコードの分析結果を基にマイグレーションされたものである、第二言語で記述された第二ソフトウェアが、前記第一ソフトウェアの正しいマイグレーションであるか否かをテストするコンピュータシステムであって、
前記第二ソフトウェアと前記第一ソフトウェアとの両方について、ユーザからの情報入力を受け付けるスクリーン及び/又はバッチで実行されるコンピュータプログラムである外部からの入力に従うテストである外部レベルテストを実行する外部レベルテスト部、
を備え、
前記外部レベルテスト部は、以下の(d1)乃至(d3)のうちの少なくとも一つ、
(d1)前記外部からの入力に従う前記第一ソフトウェアのアクション後の所定種類の対象の状況と、前記外部からの入力に従う前記第二ソフトウェアのアクション後の所定種類の対象の状況とを比較する、
(d2)前記第一ソフトウェアについての、前記外部からの入力の前から前記アクション後までの所定種類の監視結果と、前記第二ソフトウェアについての前記外部からの入力の前から前記アクション後までの所定種類の監視の結果とを比較する、
(d3)前記第一ソフトウェアについての、前記外部からの入力前の所定種類の対象の状況と前記アクション後の所定種類の対象の状況との差分と、前記第二ソフトウェアについての、前記外部からの入力前の所定種類の対象の状況と前記アクション後の所定種類の対象の状況との差分とを、比較する、
を実行する、
ソフトウェアマイグレーションの成否をテストするシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008089492A JP5294675B2 (ja) | 2008-03-31 | 2008-03-31 | ソフトウェアマイグレーションシステム及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008089492A JP5294675B2 (ja) | 2008-03-31 | 2008-03-31 | ソフトウェアマイグレーションシステム及び方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009245066A true JP2009245066A (ja) | 2009-10-22 |
JP5294675B2 JP5294675B2 (ja) | 2013-09-18 |
Family
ID=41306893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008089492A Expired - Fee Related JP5294675B2 (ja) | 2008-03-31 | 2008-03-31 | ソフトウェアマイグレーションシステム及び方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5294675B2 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011052148A1 (ja) * | 2009-10-30 | 2011-05-05 | 日本電気株式会社 | システムモデル管理支援システム、システムモデル管理支援方法およびプログラム |
CN106649110A (zh) * | 2016-12-15 | 2017-05-10 | 中标软件有限公司 | 软件测试方法及系统 |
JP2019109687A (ja) * | 2017-12-18 | 2019-07-04 | 東芝産業機器システム株式会社 | プログラミング言語変換支援装置、プログラミング言語変換支援方法、およびプログラム |
CN112732584A (zh) * | 2021-01-15 | 2021-04-30 | 安徽七色米信息科技有限公司 | 一种用于新旧系统数据移植过程的复杂业务逻辑完备性测试方法 |
JP2022525250A (ja) * | 2019-05-22 | 2022-05-11 | アビニシオ テクノロジー エルエルシー | コンピュータプログラムシステムの静的及び実行時分析 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0689171A (ja) * | 1992-03-26 | 1994-03-29 | Nec Ic Microcomput Syst Ltd | プログラムの検査方法 |
JP2004094374A (ja) * | 2002-08-29 | 2004-03-25 | Ntt Comware Corp | ロギングシステム |
JP2004220269A (ja) * | 2003-01-14 | 2004-08-05 | Cyx Inc | 統合テスト管理システム |
-
2008
- 2008-03-31 JP JP2008089492A patent/JP5294675B2/ja not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0689171A (ja) * | 1992-03-26 | 1994-03-29 | Nec Ic Microcomput Syst Ltd | プログラムの検査方法 |
JP2004094374A (ja) * | 2002-08-29 | 2004-03-25 | Ntt Comware Corp | ロギングシステム |
JP2004220269A (ja) * | 2003-01-14 | 2004-08-05 | Cyx Inc | 統合テスト管理システム |
Non-Patent Citations (2)
Title |
---|
CSNG201000786007; 望月 智之: '大規模情報制御システムの段階マイグレーションにおけるプログラム動作等価性検証に関する考察' 情報処理学会研究報告 平成22年度▲2▼ [CD-ROM] , 20100815, pp.1-8, 一般社団法人情報処理学会 * |
JPN6012054496; 望月 智之: '大規模情報制御システムの段階マイグレーションにおけるプログラム動作等価性検証に関する考察' 情報処理学会研究報告 平成22年度▲2▼ [CD-ROM] , 20100815, pp.1-8, 一般社団法人情報処理学会 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011052148A1 (ja) * | 2009-10-30 | 2011-05-05 | 日本電気株式会社 | システムモデル管理支援システム、システムモデル管理支援方法およびプログラム |
JP5605370B2 (ja) * | 2009-10-30 | 2014-10-15 | 日本電気株式会社 | システムモデル管理支援システム、システムモデル管理支援方法およびプログラム |
CN106649110A (zh) * | 2016-12-15 | 2017-05-10 | 中标软件有限公司 | 软件测试方法及系统 |
CN106649110B (zh) * | 2016-12-15 | 2023-09-15 | 中标软件有限公司 | 软件测试方法及系统 |
JP2019109687A (ja) * | 2017-12-18 | 2019-07-04 | 東芝産業機器システム株式会社 | プログラミング言語変換支援装置、プログラミング言語変換支援方法、およびプログラム |
JP7045846B2 (ja) | 2017-12-18 | 2022-04-01 | 東芝産業機器システム株式会社 | プログラミング言語変換支援装置、プログラミング言語変換支援方法、およびプログラム |
JP2022525250A (ja) * | 2019-05-22 | 2022-05-11 | アビニシオ テクノロジー エルエルシー | コンピュータプログラムシステムの静的及び実行時分析 |
US11487534B2 (en) | 2019-05-22 | 2022-11-01 | Ab Initio Technology Llc | Static and runtime analysis of computer program ecosystems |
JP7204011B2 (ja) | 2019-05-22 | 2023-01-13 | アビニシオ テクノロジー エルエルシー | コンピュータプログラムシステムの静的及び実行時分析 |
CN112732584A (zh) * | 2021-01-15 | 2021-04-30 | 安徽七色米信息科技有限公司 | 一种用于新旧系统数据移植过程的复杂业务逻辑完备性测试方法 |
CN112732584B (zh) * | 2021-01-15 | 2023-12-15 | 安徽七色米信息科技有限公司 | 一种用于新旧系统数据移植过程的复杂业务逻辑完备性测试方法 |
Also Published As
Publication number | Publication date |
---|---|
JP5294675B2 (ja) | 2013-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7055067B2 (en) | System for creating, storing, and using customizable software test procedures | |
US10572360B2 (en) | Functional behaviour test system and method | |
US10228932B2 (en) | Upgrade verification tool | |
US8079018B2 (en) | Test impact feedback system for software developers | |
US11762717B2 (en) | Automatically generating testing code for a software application | |
CN109783388B (zh) | Ui自动化测试方法、装置及电子设备 | |
CN110764753A (zh) | 一种业务逻辑代码生成方法、装置、设备及存储介质 | |
US11775262B2 (en) | Multi-technology visual integrated data management and analytics development and deployment environment | |
US9721315B2 (en) | Claim processing validation system | |
US20090271351A1 (en) | Rules engine test harness | |
US7913229B2 (en) | Computer-implemented system for generating automated tests from a web application | |
US9952855B2 (en) | Software test automation | |
US20160170719A1 (en) | Software database system and process of building and operating the same | |
US20150254166A1 (en) | Automatic test case generation | |
EP2431869A1 (en) | Dry-run design time environment | |
CN104077140A (zh) | 用于持续集成的自动化编译方法和编译装置 | |
CN104123219A (zh) | 测试软件的方法和设备 | |
US20130086420A1 (en) | Method and system for implementing a test automation results importer | |
Beller et al. | Oops, my tests broke the build: An analysis of travis ci builds with github | |
US20120005520A1 (en) | Simplifying automated software maintenance of data centers | |
JP5294675B2 (ja) | ソフトウェアマイグレーションシステム及び方法 | |
US8606762B2 (en) | Data quality administration framework | |
CN115617780A (zh) | 数据导入方法、装置、设备及存储介质 | |
CN107480050A (zh) | 一种自动测试更新包的测试方法 | |
CN114185791A (zh) | 一种数据映射文件的测试方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110113 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120928 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121023 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130402 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130515 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130604 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130611 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |