(58)【調査した分野】(Int.Cl.,DB名)
前記オブジェクトの前記構造は、属性の名前及びタイプ、メソッド及び前記メソッドの引数を含み、前記操作手段によって抽出されて反映された前記構造内の前記変更は、前記名前及び/又は前記タイプ内の変更を含む
請求項1に記載の修正管理装置。
前記オブジェクトの前記構造は、メソッドの属性及び名前を含み、前記操作手段によって抽出されて反映された前記構造内の前記変更は、新たな属性の及び/又は新たなメソッドの追加、及び/又は、既存の属性及び/又は既存のメソッドの除去を含む
請求項1に記載の修正管理装置。
前記操作手段は、1)前記設計モデル及び前記アプリケーションプログラムから第1のメタデータ及び第2のメタデータをそれぞれ生成して、前記メタデータ記憶手段に格納し、2a)前記第1のメタデータを参照して、前記設計モデル内でなされた修正から前記構造内の前記変更を抽出し、前記第1のメタデータ及び前記第2のメタデータに対して前記変更を反映し、その後、前記第2のメタデータを参照して、前記アプリケーションプログラムに対して前記構造内の前記変更を反映し、又は2b)前記第2のメタデータを参照して、前記アプリケーションプログラム内でなされた修正から前記構造内の前記変更を抽出し、前記第1のメタデータ及び第2のメタデータに対して前記変更を反映し、その後、前記第1のメタデータを参照して、前記設計モデルに対して前記構造内の前記変更を反映する
請求項1乃至3のいずれか1項に記載の修正管理装置。
プログラミング言語内のオブジェクトを記載するアプリケーションプログラム及びモデリング言語内に前記オブジェクトの構造を記載する設計モデルのうちの一方になされた修正から前記構造内の変更を抽出し、前記構造内の前記変更に従って前記オブジェクトの前記構造を記載するメタデータを更新し、前記更新されたメタデータに従って前記アプリケーションプログラム及び前記設計モデルのうちの他方に対して前記構造内の前記変更を反映し、
前記反映の際に、前記アプリケーションプログラム、前記設計モデル、及び前記アプリケーションプログラムをテストするためのテスト部品のうちの1つにおいてなされた修正から前記構造内の前記変更を抽出し、前記アプリケーションプログラム、前記設計モデル、及び前記テスト部品のうちの他の2つに対して、前記構造内の前記変更を反映する
修正管理方法。
前記オブジェクトの前記構造は、属性の名前及びタイプ、メソッド及び前記メソッドの引数を含み、抽出され反映された前記構造内の前記変更は、前記名前及び/又は前記タイプ内の変更を含む
請求項6に記載の修正管理方法。
前記オブジェクトの前記構造は、メソッドの属性及び名前を含み、抽出され反映された前記構造内の前記変更は、新たな属性の及び/又は新たなメソッドの追加、及び/又は、既存の属性及び/又は既存のメソッドの除去を含む
請求項6に記載の修正管理方法。
プログラミング言語内のオブジェクトを記載するアプリケーションプログラム及びモデリング言語内に前記オブジェクトの構造を記載する設計モデルのうちの一方になされた修正から前記構造内の変更を抽出し、前記構造内の前記変更に従って前記オブジェクトの前記構造を記載するメタデータを更新し、前記更新されたメタデータに従って前記アプリケーションプログラム及び前記設計モデルのうちの他方に対して前記構造内の前記変更を反映し、
前記反映の際に、前記アプリケーションプログラム、前記設計モデル、及び前記アプリケーションプログラムをテストするためのテスト部品のうちの1つにおいてなされた修正から前記構造内の前記変更を抽出し、前記アプリケーションプログラム、前記設計モデル、及び前記テスト部品のうちの他の2つに対して、前記構造内の前記変更を反映する
処理をコンピュータに実行させる修正管理プログラム。
前記オブジェクトの前記構造は、属性の名前及びタイプ、メソッド及び前記メソッドの引数を含み、抽出され反映された前記構造内の前記変更は、前記名前及び/又は前記タイプ内の変更を含む
請求項9に記載の修正管理プログラム。
前記オブジェクトの前記構造は、メソッドの属性及び名前を含み、抽出され反映された前記構造内の前記変更は、新たな属性の及び/又は新たなメソッドの追加、及び/又は、既存の属性及び/又は既存のメソッドの除去を含む
請求項9に記載の修正管理プログラム。
【発明の概要】
【発明が解決しようとする課題】
【0006】
システムの要件又は仕様に変更が生じると、その設計書及び実装に対して変更が適切に反映されるか確かめる必要がある。更に、テストに関わるものであると、仕様書、設計書、実装、テスト仕様書、及びテストプログラムの間の整合性を維持する必要がある。
【0007】
問題は、設計書、実装、テスト仕様書、及びテストプログラムの間の整合性の維持が、恐らく別人である、設計者、開発者、及び試験者の手動によって非能率的に行われるということである。設計書及び実装の1つに対していくつかの変更がなされると、特許文献1〜8に開示された技術では、整合性を維持できない。
【0008】
本発明の目的は、上記の問題を解決する修正管理装置、修正管理方法、及び修正管理プログラムを提供することである。
【課題を解決するための手段】
【0009】
本発明によると、上述の課題は、
モデリング言語内にオブジェクトの構造を記載する設計モデルを記憶する設計モデル記憶手段と、
プログラミング言語内のオブジェクトを記載するアプリケーションプログラムを記憶するプログラム記憶手段と、
オブジェクトの構造を記載するメタデータを記憶するメタデータ記憶手段と、
アプリケーションプログラム及び設計モデルのうちの一方になされた修正から構造内の変更を抽出し、構造内の変更に従ってメタデータを更新し、更新されたメタデータに従ってアプリケーションプログラム及び設計モデルのうちの他方に対して構造内の変更を反映する操作手段と
を備える修正管理装置により解決される。
【0010】
本発明によると、上述の課題は、
モデリング言語内にオブジェクトの構造を記載する設計モデルを記憶し、
プログラミング言語内のオブジェクトを記載するアプリケーションプログラムを記憶し、
オブジェクトの構造を記載するメタデータを記憶し、
アプリケーションプログラム及び設計モデルのうちの一方になされた修正から構造内の変更を抽出し、構造内の変更に従ってメタデータを更新し、更新されたメタデータに従ってアプリケーションプログラム及び設計モデルのうちの他方に対して構造内の変更を反映すること
を備える修正管理方法により解決される。
【0011】
本発明によると、上述の課題は、
モデリング言語内にオブジェクトの構造を記載する設計モデルを記憶し、
プログラミング言語内のオブジェクトを記載するアプリケーションプログラムを記憶し、
オブジェクトの構造を記載するメタデータを記憶し、
アプリケーションプログラム及び設計モデルのうちの一方になされた修正から構造内の変更を抽出し、構造内の変更に従ってメタデータを更新し、更新されたメタデータに従ってアプリケーションプログラム及び設計モデルのうちの他方に対して構造内の変更を反映する処理
をコンピュータに実行させる修正管理プログラムにより解決される。
【発明の効果】
【0012】
本発明は、設計書と実装との間の整合性を維持するためのコスト及び負担が軽減される効果を有する。
【発明を実施するための形態】
【0014】
本発明が様々な変形及び代替形態の余地のある一方で、その特定の実施形態は、図面内の例として示されており、詳細な説明によって本明細書において記載されることになる。但し、本発明を開示された特定の形態に限定するようには意図しておらず、逆に、本発明が、添付の請求項によって定義されるような本発明の精神及び範囲以内にある変形、均等物、及び代替手段をすべて網羅することを理解するべきである。
【0015】
図1を参照すると、テストシステム100の簡略ブロック図が表される。
図1のテストシステム100は、本発明の修正管理装置300の例である。テストシステム100は、設計モデル入力モジュール102及びテスト結果報告モジュール112に接続される。設計モデル入力モジュール102は、端末装置であってもよい。テスト結果報告モジュール112は、ディスプレイ装置であってもよい。
【0016】
テストシステム100は、メタデータ操作モジュール106と、テスト制御/実行モジュール110と、設計モデル記憶部200と、プログラム記憶部201と、テスト部品記憶部202と、メタデータ記憶部203とを含む。
【0017】
メタデータ操作モジュール106及びテスト制御/実行モジュール110は、コンピュータであるテストシステム100のプロセッサがメモリ内に格納されたプログラムを読み込んで実行すると機能する。同等の機能は、集積回路などのハードウェア部によって実現されることができる。設計モデル記憶部200、プログラム記憶部201、テスト部品記憶部202及びメタデータ記憶部203は、ハードウェアディスクドライブ又はICメモリのようなメモリ装置であってもよい。
【0018】
また、
図1に示すのは、テスト対象システム(SUT)114の構成要素である。テスト対象システム114は、テストシステム100と、設計モデル120と、テスト部品116とによってテストされる対象である。設計モデル120は、テスト対象システムの構造的側面及び行動的側面を表現する。テスト部品116は、テスト対象システム114と通信する部品又はテストの行動的側面を実現する外部構成要素である設計モデル120、テスト対象システム114、及びテスト部品116は、設計モデル記憶部200、プログラム記憶装置201及びテスト部品記憶装置202内にそれぞれ格納される。
【0019】
例えば、テスト対象システム114は、アプリケーションプログラムのようなソフトウェアであってもよい。テスト対象システム114は、C++又はJAVA(登録商標)言語のようなオブジェクト指向言語を用いてアプリケーションシステム内のオブジェクトの構造及び行動を記載し、グラフィカルユーザインタフェースによりパーソナルコンピュータ上で動作する。テスト対象システム114の別の例は、ネットワーク又は通信チャネルによって接続される1つ以上のコンピュータ上で実行するクライアント・サーバプログラムである。テスト対象システム114の更なる例は、携帯電話又はタブレット型コンピュータなどのモバイル機器のマイクロプロセッサ上に動作する制御プログラムである。本発明を実施するための装置、システム、及び方法は、あらゆるタイプのテスト対象システム114により同様に充分に機能し、本明細書における例示的な実施形態は、請求項に係る発明を何らかの方法で限定するようには意図されない。
【0020】
図3内に示されるテスト部品116は、テストシーケンス及びテストの動作条件を定義する。また、テスト部品116は、1つ以上のソフトウェアモジュールから構成されてもよい。その1つ以上のソフトウェアモジュールは、テスト対象システム114が動作する条件を初期化し、テスト対象システム114の適切な行動を確認するために行われる動作のシーケンスを定義し、及び/又は、テスト対象システム114への入力を提供することによって、テスト対象システム114と相互に作用することができる。例えば、ATM(現金自動預け払い機)を用いて、銀行口座から現金を引き出すシナリオの適切な行動を確認するために、テスト部品116は、ソフトウェアモジュールから構成されてもよい。そのソフトウェアモジュールは、引き出す口座、認証のためのPINコード及びカードデータベース、バンキングシステムによって行われる引き出し動作のシーケンス、及びATMに対する預金引き出しの入力を設定する。
【0021】
テスト部品116は、ソースコードを編集することができるテキストエディタ内にプログラムコードを入力することによって、手動的に生成されてもよい。又は、テスト部品116は、プロトタイプから部分的に自動的に生成され、その後、テキストエディタによって要求通り修正されてもよい。例えば、テスト部品116は、動作条件がシナリオからシナリオに変化するように、テスト対象システム114のための複数の動作条件を設定するために修正されてもよい。
【0022】
設計モデル120は、テスト対象システム114の構造的側面及び/又は行動的側面を表現することができるモデリング言語により記載されてもよい。設計モデル120は、テスト対象システム114内のオブジェクトの構造的側面及び行動的側面を記載してもよい。例えば、設計モデル120は、UML(ユニファイドモデリング言語)クラス図、オブジェクト図、状態遷移図、シーケンス図、及びユースケース図を含んでもよい。あるいは、設計モデル120は、JML(Javaモデリング言語)、又は他の種類のモデリング言語によって記載されてもよい。バンキングアプリケーション内のオブジェクトの「口座(Account)」クラスの設計モデルの例は、図
4のUMLクラス図によって表される。図
4に示すように、クラスの名前は「口座(Account)」である。第2の部分において、クラスの属性(別名、メンバー変数)は、個別のラインにリストアップされる。各ラインは、属性名と属性タイプとのペアを示す。第3の部分において、クラスのメソッドは、個別のラインにリストアップされる。各ラインは、括弧内のパラメータリストを有するメソッド名と戻り値のタイプとのペアを示す。
【0023】
テスト制御/実行モジュール110は、テスト部品116とテスト対象システム114との間のインタフェースを提供し、テスト部品116によって定義されるようにテストを行う。好適な実施形態において、テスト制御/実行モジュール110は、
図2に示すように、テスト制御122とテスト実行124を論理的に含む。テスト制御122は、テスト部品116内に定義されたオブジェクトの生成、テストの開始及び終了などのテスト動作に対する制御を提供してもよい。テスト実行124は、テスト部品116によって指定されたテスト行動を実現するためにプログラムコードを実際に実行する少なくともインタプリタ又は仮想マシンによって実現されてもよい。テスト実行124は、後述するメタデータ内の変更のために動的な更新をサポートするために、動的クラスローディング及び動的オブジェクトバインディングの能力を持つべきである。
【0024】
設計モデル入力モジュール102は、テスト対象システム114の設計モデル120を記載する入力を受信することができ、且つ設計モデル記憶部200内に保存された出力データを提供することができる、インタフェースであってもよい。好適な実施形態において、設計モデル入力モジュール102は、設計モデル120を入力又は編集するために用いることができる、キーボード、ポインティングデバイス、ディスプレイ、及びグラフィカルユーザインタフェースを有するコンピュータ端末である。
【0025】
テスト結果報告モジュール112は、映像出力及び/又は音声出力、及び/又はデータ出力を、記憶装置若しくはメモリに対して提供することができる物理的なディスプレイ端末若しくはインタフェースであってもよい。好適な実施形態において、テスト報告モジュール112は、テスト制御/実行モジュール110に接続されたグラフィカルユーザインタフェースを有するコンピュータ端末である。又は、テスト報告モジュール112は、ネットワーク若しくは何らかの通信媒体を介してテスト制御/実行モジュール110と通信してもよい。
【0026】
メタデータ記憶部203は、
図4に示すようなメタデータを記憶する。メタデータは、テスト対象システム114内のオブジェクトの構造に関する仕様を提供する1セットのデータである。オブジェクトの構造は、オブジェクトのクラス名と、クラスの属性の名前及びタイプと、クラスのメソッドの名前及び戻り型と、クラスのメソッドの引数の名前及びタイプとを含む。例えば、
図4に示すXML内に記述されたメタデータのレコードは、図
6の設計モデルによって指定されたクラスの属性及びメソッドを伴うクラスの仕様を提供する。
図4及び図
6の上記の説明、例、及び構成要素は、単に例示的であって、請求項に係る発明を多少なりとも限定するようには意図されない。
【0027】
図1に示されて、
図5に更に詳細に示されるメタデータ操作モジュール106は、メタデータ126、128、130を生成することができるモジュールである。すなわち、メタデータ操作モジュール106は、(a)設計モデル120から設計書内の各オブジェクトのメタデータ126を生成し、(b)テスト対象システム114の各オブジェクトからメタデータ128を生成し、(c)テスト部品116の各オブジェクトからメタデータ130を生成する。以降、設計モデル120、テスト対象システム114及びテスト部品116の各々は、システム構成要素を指す。メタデータ操作モジュール106は、以下の(d)〜(g)のプロセスを行う能力を更に有する。(d)第1のシステム構成要素として以降称されるシステム構成要素の少なくとも1つに対して行われた修正を検出すること。(e)修正に従って、第1のシステム構成要素のメタデータを更新すること。(f)第2及び第3のシステム構成要素である他の2つのシステム構成要素のメタデータに対して、第1のシステム構成要素のメタデータに対して行われた更新を適用することによって、設計モデル120内のメタデータ126、テスト対象システム114内の対応するオブジェクトのメタデータ128、及びテスト部品116内の対応するオブジェクトのメタデータ130間の整合性を維持すること。(g)第2及び第3のシステム構成要素のメタデータに対して行われた変更を、第2及び第3のシステム構成要素に対してそれぞれ反映すること。
【0028】
例えば、上記のプロセス(d)において、メタデータ操作モジュール106は、設計モデル120に対する修正を検出する。プロセス(e)において、メタデータ操作モジュール106は、修正に従ってメタデータ126を更新する。プロセス(f)において、メタデータ操作モジュール106は、メタデータ126、128、130間の整合性を維持するためにメタデータ128及び130を変更する。プロセス(g)において、メタデータ操作モジュール106は、メタデータ128に対して行われた変更、及びテスト部品116に対するメタデータ130に対して行われた変更を、テスト対象システム114に反映する。
【0029】
プロセス(a)、(b)、及び(c)において、メタデータ操作モジュール106は、システム構成要素からメタデータを抽出するために、システム構成要素が記述された言語の構文規則を用いてもよい。例えば、メタデータ操作モジュール106は、テスト対象システム114及びテスト部品116がC++言語で記述された場合、テスト対象システム114及びテスト部品116から属性名及び属性タイプを抽出するためにC++言語の構文規則を用いる。
【0030】
プロセス(d)において、メタデータ操作モジュール106は、システム構成要素を修正するテキストエディタプログラムから通知を受信してもよい。
【0031】
プロセス(e)において、メタデータ操作モジュール106は、テキストエディタプログラムから第1のシステム構成要素に対して行われた修正のデータを受信してもよい。その後、第1のシステム構成要素のメタデータに対する修正がどこにどのように行われなければならないのか決定するために、第1のシステム構成要素が記述される言語の構文規則を用いてもよい。メタデータ操作モジュール106は、メタデータ126内の属性のタイプを変更するためにUMLの構文規則及び意味規則を用いて、属性のタイプが設計モデル120内で変更されることを検出する。
【0032】
プロセス(f)において、メタデータ操作モジュール106は、メタデータ126、128及び130が対応するオブジェクトごとに同一の構造を記載するように、第2及び第3のシステム構成要素のメタデータを更新する。例えば、対応するメソッドは、各メタデータ126、128及び130内に同一の名前及び同一の戻り型を有する。
【0033】
プロセス(g)において、メタデータ操作モジュール106は、第2のシステム構成要素のメタデータの更新版を参照し、第2のシステム構成要素が記述された言語の構文規則を用いてメタデータと第2のシステム構成要素との間の不一致を検出する。そして、メタデータ操作モジュール106は、メタデータに従って第2のシステム構成要素を修正する。例えば、第2のシステム構成要素がC++言語で記述されたSUT114である場合、メタデータ操作モジュール106は、C++言語の構文規則を用いて、メタデータ128内の属性のタイプと、SUT114のプログラムコード内の属性に対応する変数の定義との間の不一致を検出する。そして、メタデータ操作モジュール106は、メタデータ128に従って、SUT114内の定義内の変数のタイプを変更する。メタデータ操作モジュール106は、第3のシステム構成要素を同様に処理する。
【0034】
それらの間の不整合性は、設計モデル120に対する修正によって、及び/又はテスト対象システム114のプログラムコード又はテスト部品116のプログラムコードの修正によって、引き起こされ得る。
【0035】
例えば、
図4のメタデータは、設計モデル120内の口座クラス(class Account)のメタデータ126を図示する。テスト対象システム114内の口座クラスのプログラムコードとしての実装の場合、メタデータ操作モジュール106は、口座クラスの実装のメタデータ128から口座クラスの設計モデル120のメタデータ126への依存関係を維持する。すなわち、テスト対象システム114内の口座クラスの各々の実装されるメソッドは、クラスの設計モデル120のメソッドのメタデータ126の対応する構成要素との関係を有する。また、テスト部品116内の「bobAccount」と呼ばれる口座(Account)のインスタンスオブジェクトの場合、メタデータ操作モジュール106は、インスタンスオブジェクト「bobAccount」から口座クラスの設計モデル120のメタデータ126への依存関係を維持する。
【0036】
メタデータ操作モジュール106が検出する変更は、設計モデル120、テスト対象システム114、及びテスト部品116内に生じるあらゆる変更を含む。すなわち、設計書内の変更に従って設計モデル120内に生じる変更、テスト対象システム114のプログラムコードの修正に従ってテスト対象システム114内に生じる変更、及びテスト部品116のプログラムコードの修正に従ってテスト部品116内に生じる変更を含む。
【0037】
メタデータ操作モジュール106は、設計モデル120、テスト部品116、及びテスト対象システム114の変更に対してポーリングしてもよい。更に、テスト対象システム114及び/又はテスト部品116に対して行われた何らかの変更に関して、メタデータ操作モジュール106は、テスト制御/実行モジュール110に通知してもよい。その結果、モジュール110がランタイムオブジェクトを更新してテストを再実行することができる。
【0038】
テストシステム100の動作を要約するために、ユーザは設計モデル入力モジュール102を用いて、設計モデル120を生成する。その後、ユーザは、テスト対象システム114を実装し、テスト部品116を設計通りに生成する。その後、メタデータ操作モジュール106は、設計モデル120、テスト部品116、及びテスト対象システム114から、メタデータ126、128、130を生成する。上記の前処理の各々が完了すると、必ずしも上記の順序ではないが、テストシステム100は、テスト対象システム114をテストする準備ができている。
【0039】
第1のテストにおいて、テスト制御/実行モジュール110は、テスト部品116を読み込み、及びテスト部品116によって指定されるように、テストを実行する。テスト部品116は、テスト対象システム114と相互に作用することによって、例えば、テスト対象システム114が提供するAPIを呼び出して、ステップを実行する。各々の行動スクリプトのテスト結果は、テスト結果報告モジュール112によってレポートするために記録される。
【0040】
図7は、本発明の自動テストプロセスの動作を記載するフローチャートである。当業者は、テストプロセスが、変更を処理し、テストを中断し開始するために手動介入を要して行われてもよいし、又は、本発明により完全に自動化されたプロセスで行われてもよいことを認識するだろう。更に、本発明は、手動のプロセスと完全に自動化されたプロセスとの両方を組み込むハイブリッド手法が、設計モデル120内に生じる変更を処理することを可能にさせる。本質的には、本発明は、設計モデル120とメタデータ126との関係、テスト114下でのシステムの実装におけるメタデータ128とオブジェクトとの依存関係、及びテスト部品116の実装におけるメタデータ130とオブジェクトとの依存関係を定義する。更に、本発明は、変更を反映するための手段としてメタデータ126、128、130を活用する。当業者は、本発明が、完全に自動化されたプロセスが有効でない場合に既知の手動手順と組み合わせた自動プロセスと同様に、自動テストプロセスの提供が適することを認識するだろう。
【0041】
テストシステム100が処理することができる設計モデル120に対する変更は、メソッドの名前及び戻り型の変更、メソッドの署名内のデータ名及び引数のタイプの変更、クラス属性の名前及びタイプの変更、クラスの名前の変更、新たなメソッドの追加、新たな属性の追加、及び既存の属性及びメソッドの除去を含む。テストシステム100が処理することができるSUT114及びテスト部品116に対する変更は、以上に記載されたようなプログラムコード内の構造的な変更を含む。
【0042】
自動テストプロセスは、設計モデル120が生成される動作200から開始する。これは、設計モデル入力モジュール102によって行うことができる。動作204では、テスト対象システム114を設計通りに実装し、その後、動作206では、システム行動をテストするためのテスト部品116を生成する。
【0043】
その後、動作208において、設計モデル120、テスト対象システム114、及びテスト部品116のメタデータ126が、メタデータ操作モジュール106によって生成される。メタデータ126、128及び130の生成は、ソフトウエアコンポーネントであるトランスフォーマによって実現されてもよい。トランスフォーマは、ソースコードの表現からメタデータ126、128、130のXML記述の間を変換する(その逆も成立する)ことができるコンパイラのように機能する。ソースコードの表現は、(a)設計モデル120の入力フォーマット、(b)SUT114のプログラムソースコード、又は(c)テスト部品116のプログラムソースコードであってもよい。これら3つの表現の各々ごとにトランスフォーマを有してもよい。それぞれのトランスフォーマは、(a)設計モデル120から設計モデル126のメタデータへの間、(b)SUT114からSUT128のメタデータへの間、及び(c)テスト部品116からテスト部品130のメタデータへの間をそれぞれ変換する。
【0044】
次に、何らかの試験されていないテスト部品116が存在するか否かをテスト制御/実行モジュール110が判定する動作210において自動テストプロセスが起動される。存在する場合、動作212では、試験されていないテスト部品116をテストのために読み込み、動作214では、テスト部品116のテストを実行する。動作216では、次に、テスト結果を記録する。テストプロセスは、その後、試験されていないテスト部品116が存在するか否かをチェックする動作210まで一巡して戻ることによって継続する。テスト部品116がすべてテストされた場合、テストプロセスは、終了し、動作218では、テスト結果の報告を作成する。
【0045】
図8は、いくつかの変更がソースコードに対して行われる場合のメタデータ操作モジュール106の処理フローを表す。本明細書における用語「ソースコード(source)」は、設計モデル120又はSUT114又はテスト部品116(
図5参照)を指してもよい。変更が生じる前の最初は、設計モデル126のメタデータ、SUT130のメタデータ、及びテスト部品128のメタデータは、それらがオブジェクトの同一の構造を記載する状態と同じ又は同等である。
【0046】
動作300では、ソースコード内の変更を検出する。これは、ソースコードの各々に対する何らかの状態変化を観察して自動的に通知するソフトウエアコンポーネントであるオブザーバをバインディングするによって実現することができる。オブザーバは、ソースコードに対して何らかの状態変化の106が生じるとメタデータ操作モジュールに通知し、また、変更の前(β)及び後(α)の内容を提供する。変更β及びαの内容は、メタデータを修正する後続の動作によって用いられるだろう。一旦変更が検出されれば、動作302では、実行する仮想マシンに休止することを命令することにより、テスト制御/実行モジュール110に対してその実行を休止するように命じる。
【0047】
その後、動作304では、変更に従ってソースコードのメタデータを修正する。SによるソースコードのメタデータのXML記述を表すものとする(
図4(a)のXML記述を参照)。動作208内に記載されたように、このようなメタデータを生成する対応するトランスフォーマによって、メタデータのXML記述に対する変更β及びαの内容を変換によって、動作304を実現することができる。
変換は、
β⇒m(β)、
α⇒m(α)、
であり、ここで、m(β)及びm(α)は、それぞれ、β及びαのメタデータのXML記述であり、その後、m(α)によってm(β)に対応するSの部分を置換する。
【0048】
例えば、設計モデル120(ソースコード)に対して変更がなされるケースを図示するものとする。メソッド「credit」の引数「amount」のデータ型は、仕様書内の修正の結果として、整数(Integer)から文字列(String)に変更される。動作304では、設計モデル126のメタデータを更新する。これは、
図4(b)に示すように、<arg type="Integer" name="amount">から<arg type="String" name="amount">に、メタデータの対応するXML記述を置換するメタデータ操作モジュール106によって行うことができる。
【0049】
動作306では、ソースコードではない他の2つのシステム構成要素のメタデータを修正する。同じ方式で、メタデータ操作モジュール106は、対応するS内の部分を、m(β)をm(α)に置換する。先の例から継続すると、メタデータ操作モジュール106は、<arg type="Integer" name="amount">から<arg type="String" name="amount">に、メタデータの対応するXML記述を置換することによって、SUT128のメタデータ及びテスト部品130のメタデータを修正する。
【0050】
動作308では、ソースコード以外の2つのシステム構成要素に対して、メタデータの変更を反映する。動作208に記載したように、この動作は、対応するトランスフォーマによって実現することができる。先の例から、SUT114のトランスフォーマは、変更されたメタデータ128から新しい口座クラスを変換する。また、テスト部品116のトランスフォーマは、変更されたメタデータ130内の新しい口座クラスからインスタンス化された新しいオブジェクトを変換する。
【0051】
一旦変更が反映されれば、動作310では、更新されたランタイムオブジェクトを再ロードしてテストの実行を再開するように、動作302の実行から休止された仮想マシンに命令する。それによって、動作310では、ランタイムオブジェクトを更新するようにテスト制御/実行モジュール110に指示する。
【0052】
メタデータ操作モジュール106から構成される本発明の実施形態によれば、設計モデル120内の変更は、メタデータ126、128、130の変換を通じてテスト対象システム114及びテスト部品116の実装に反映されることができる。同様に、テスト対象システム114の実装内の変更は、メタデータ126、128、130の変換を通じて設計モデル120及びテスト部品116に反映されることができる。これは、設計書、実装及びテスト部品の間の整合性を維持するためのコスト及び労力を削減することができる。テスト制御/実行モジュール106から構成される本発明の実施形態によれば、テスト対象システム114又はテスト部品116内の修正は、手動の割り込みを伴わずに動的な再バインディングによって、テストにおいて有効になることができる。これは、時間を低減し、テストプロセスを制御するために必要だった配慮を最小限に抑えることができる。
【0053】
本発明の改善された実施形態において、メタデータの1つのみが修正管理装置200内に存在してもよい。この実施形態において、メタデータ操作モジュール106は、(a)、(b)及び(c)のプロセスのうちの1つのみを行ってもよく、必ずしもプロセス(f)を行う必要はない。
【0054】
本発明の別の改善された実施形態において、システム構成要素の2つのみが修正管理装置300内に存在する。例えば、設計モデル120及びテスト対象システム114のみが、修正管理装置300内に存在してもよい。
【0055】
<第2の好ましい実施形態>
図9を参照すると、第2の好ましい実施形態における修正管理装置300の簡略ブロック図が表される。修正管理装置300は、設計モデル記憶部200と、プログラム記憶部201と、メタデータ記憶部203と、メタデータ操作部106とを備える。
【0056】
設計モデル記憶装置200は、モデリング言語内のオブジェクトの構造を記載する設計モデル120を記憶する。プログラム記憶装置201は、テスト対象システムを記憶する。テスト対象システムは、プログラミング言語内のオブジェクトを記載するアプリケーションプログラムである。メタデータ記憶装置203は、オブジェクトの構造を記載するメタデータを記憶する。
【0057】
メタデータ操作部106は、アプリケーションプログラム及び設計モデル120のうちの一方になされた修正から構造内の変更を抽出する。更に、メタデータ操作部106は、構造内の変更に従ってメタデータを更新し、更新されたメタデータに従ってアプリケーションプログラム及び設計モデル120のうちの他方に対して構造内の変更を反映する。
【0058】
設計書と実装との間の整合性を維持するためのコスト及び負担が軽減される。これは、メタデータ操作モジュール106により、設計モデル120内の変更がメタデータの変換を通じてテスト対象システム114の実装に反映され得る(その逆も成立する)からである。