(57)【特許請求の範囲】
【請求項１】
統合開発環境（１１３）においてソフトウェアプログラムを検証する、コンピュータ実装される方法であって、
データ処理システム（１００）により、前記ソフトウェアプログラムの仕様に基づいて、ロギングステートメントを含む、前記ソフトウェアプログラムのソースコードを生成することを含み、前記ロギングステートメントは、前記ソフトウェアプログラムの前記仕様にタグ付けされたメタデータに基づいて、前記ソフトウェアプログラムの前記ソースコードにおける１つまたは複数の箇所に追加され、なお、前記ソフトウェアプログラムの前記仕様は、モデリング言語で表現されており、
前記方法は、
前記ロギングステートメントを有する前記ソースコードを実行することと、
前記ロギングステートメントに基づいて前記ソースコードの実行中に１つまたは複数のログファイルを生成することと、
前記１つまたは複数のログファイルを使用して前記モデリング言語での前記ソースコードの表現（５００）を生成することと、
前記モデリング言語での前記ソースコードの表現（５００）を使用して前記ソフトウェアプログラムの前記ソースコードを検証することと
を含む、コンピュータ実装される方法。
【請求項２】
前記ソフトウェアプログラムの前記ソースコードは、手続き型プログラミング言語で生成される、
請求項１記載のコンピュータ実装される方法。
【請求項３】
前記ソフトウェアプログラムの前記ソースコードを検証することは、
前記モデリング言語での前記ソースコードの表現（５００）を、前記モデリング言語での、前記ソフトウェアプログラムの前記仕様と比較することと、
前記比較の結果に基づいて、前記ソフトウェアプログラムの前記ソースコードが前記ソフトウェアプログラムの前記仕様に準拠しているかどうかを判断することと、
前記ソフトウェアプログラムの前記ソースコードが前記ソフトウェアプログラムの前記仕様に準拠していない場合に、前記ソフトウェアプログラムの前記ソースコードを変更することと
を含む、請求項１記載のコンピュータ実装される方法。
【請求項４】
前記モデリング言語での前記ソースコードの表現（５００）は、統合モデリング言語（ＵＭＬ）図を含む、
請求項１記載のコンピュータ実装される方法。
【請求項５】
前記ソフトウェアプログラムの前記仕様は、前記ソフトウェアプログラムによって駆動されるシステムに関連する複数の異なる要素間の相互作用の時系列のシーケンスで、前記ソフトウェアプログラムによって駆動されるシステムの挙動を規定するものである、
請求項１記載のコンピュータ実装される方法。
【請求項６】
前記ソフトウェアプログラムの前記ソースコードの実行中に前記ログファイルを生成することは、
前記ソースコードの実行中に前記ロギングステートメントに基づいて前記ソフトウェアプログラムによって駆動されるシステムの要素間の１つまたは複数の相互作用を決定することと、
前記ソフトウェアプログラムによって駆動されるシステムの要素間の前記１つまたは複数の相互作用を前記ログファイルに時系列のシーケンスで記録することと
を含む、請求項５記載のコンピュータ実装される方法。
【請求項７】
データ処理システム（１００）であって、
処理ユニット（１０２）と、
前記処理ユニット（１０２）に結合されたメモリ（１０４）と
を含み、
前記メモリ（１０４）は、モデル駆動型開発モジュール（１１４）を含み、
前記モデル駆動型開発モジュール（１１４）は、
ソフトウェアプログラムの仕様に基づいて、ロギングステートメントを含む、前記ソフトウェアプログラムのソースコードを生成するように構成されており、前記ロギングステートメントは、前記ソフトウェアプログラムの前記仕様にタグ付けされたメタデータに基づいて、前記ソフトウェアプログラムの前記ソースコードにおける１つまたは複数の箇所に追加され、なお、前記ソフトウェアプログラムの前記仕様は、モデリング言語で表現されており、
前記モデル駆動型開発モジュール（１１４）は、
前記ロギングステートメントを有する前記ソースコードを実行し、
前記ロギングステートメントに基づいて前記ソースコードの実行中に１つまたは複数のログファイルを生成し、
前記１つまたは複数のログファイルを使用してモデリング言語での前記ソースコードの表現（５００）を生成する
ように構成されており、
前記モデル駆動型開発モジュール（１１４）は、前記モデリング言語での前記ソースコードの表現（５００）を使用して前記ソフトウェアプログラムの前記ソースコードを検証するように構成されている、
データ処理システム（１００）。
【請求項８】
前記ソフトウェアプログラムの前記ソースコードは、手続き型プログラミング言語で生成される、
請求項７記載のデータ処理システム（１００）。
【請求項９】
前記ソフトウェアプログラムの前記ソースコードを検証する際に、
前記モデル駆動型開発モジュール（１１４）は、
前記モデリング言語での前記ソースコードの表現（５００）を、前記モデリング言語での、前記ソフトウェアプログラムの前記仕様と比較し、
前記ソフトウェアプログラムの前記ソースコードが前記ソフトウェアプログラムの前記仕様に準拠しているかどうかを判断し、
前記ソフトウェアプログラムの前記ソースコードが前記ソフトウェアプログラムの前記仕様に準拠していない場合には、前記ソフトウェアプログラムの前記ソースコードを変更する
ように構成されている、請求項７記載のデータ処理システム（１００）。
【請求項１０】
前記モデリング言語での前記ソースコードの表現は、統合モデリング言語（ＵＭＬ）図を含む、
請求項７記載のデータ処理システム（１００）。
【請求項１１】
前記ソフトウェアプログラムの前記仕様は、前記ソフトウェアプログラムによって駆動されるシステムに関連する複数の異なる要素間の相互作用の時系列のシーケンスで、前記ソフトウェアプログラムによって駆動されるシステムの挙動を規定するものである、
請求項７記載のデータ処理システム（１００）。
【請求項１２】
前記１つまたは複数のログファイルを生成する際に、
前記モデル駆動型開発モジュール（１１４）は、
前記ソースコードの実行中に前記ロギングステートメントに基づいて前記ソフトウェアプログラムによって駆動されるシステムの要素間の１つまたは複数の相互作用を決定し、
前記ソフトウェアプログラムによって駆動されるシステムの要素間の前記１つまたは複数の相互作用を前記ログファイルに時系列のシーケンスで記録する
ように構成されている、請求項７記載のデータ処理システム（１００）。
【請求項１３】
データ処理システム（１００）によって実行された場合に、前記データ処理システム（１００）に、統合開発環境（１１３）においてソフトウェアプログラムを検証する方法を実行させる命令が格納された、非一時的なコンピュータ可読記憶媒体であって、
前記方法は、
前記ソフトウェアプログラムの仕様に基づいて、ロギングステートメントを含む、前記ソフトウェアプログラムのソースコードを生成するステップを含み、前記ロギングステートメントは、前記ソフトウェアプログラムの前記仕様にタグ付けされたメタデータに基づいて、前記ソフトウェアプログラムの前記ソースコードにおける１つまたは複数の箇所に追加され、なお、前記ソフトウェアプログラムの前記仕様は、モデリング言語で表現されており、
前記方法は、
前記ロギングステートメントを有する前記ソースコードを実行するステップと、
前記ロギングステートメントに基づいて前記ソースコードの実行中に１つまたは複数のログファイルを生成するステップと、
前記１つまたは複数のログファイルを使用してモデリング言語での前記ソースコードの表現（５００）を生成するステップと、
前記モデリング言語での前記ソースコードの表現（５００）を使用して前記ソフトウェアプログラムの前記ソースコードを検証することと
を含む、非一時的なコンピュータ可読記憶媒体。
【請求項１４】
前記１つまたは複数のログファイルを生成する際に、
前記命令は、前記データ処理システム（１００）に、
前記ソースコードの実行中に前記ロギングステートメントに基づいて前記システムの要素間の１つまたは複数の相互作用を決定することと、
前記システムの要素間の前記１つまたは複数の相互作用を前記ログファイルに時系列のシーケンスで記録することと
を含む方法ステップを実行させる、
請求項１３記載の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、モデル駆動型ソフトウェア開発の分野に関し、より具体的には、統合開発環境においてソフトウェアプログラムを検証するための方法およびシステムに関する。
【０００２】
統合開発環境（ＩＤＥ）は、ソフトウェア開発のために包括的な機能をソフトウェアエンジニアに提供するソフトウェアアプリケーションである。一部の統合開発環境では、モデル駆動型ソフトウェア開発のような形式的な構造化されたトップダウン開発アプローチを使用してソフトウェアを開発することが可能である。モデル駆動型ソフトウェア開発アプローチに基づいて、ソフトウェアエンジニアは、統合開発環境を使用して、統一モデリング言語（ＵＭＬ）図を使用して仕様に準拠してソフトウェアをモデル化することができる。例示的な統一モデリング言語図は、シーケンス図を含むことができ、このシーケンス図は、外部イベントに応答してシステムを構成する種々の要素間の相互作用の時系列のシーケンスで、システムの挙動を規定するものである。ソフトウェアエンジニアは、シーケンス図を使用してソフトウェアプログラムを開発する。査読者は、ソフトウェアプログラムのソースコードを検査し、ソフトウェアプログラムが仕様に準拠していることを確認することができる。
【０００３】
一般に、ソフトウェアプログラムは、「Ｃ」プログラミング言語のような手続き型プログラミング言語を使用して開発される。このような場合、ソフトウェアエンジニアは、シーケンス図を理解し、所期の挙動を、ソフトウェアプログラムとして「Ｃ」プログラミング言語で実装する。しかしながら、ソフトウェアプログラムは、シーケンス図と１対１で対応していない場合がある。したがって、査読者がソフトウェアプログラムのソースコードを検査し、シーケンス図に準拠していることを確認することは、時間のかかる面倒な作業となってしまう。
【０００４】
統合開発環境においてソフトウェアプログラムを検証するための方法およびシステムが開示される。１つの態様では、統合開発環境においてソフトウェアプログラムを検証する、コンピュータ実装される本方法は、データ処理システムにより、ソフトウェアプログラムの仕様に基づいて、ロギングステートメントを含む、ソフトウェアプログラムのソースコードを生成することを含む。本方法は、ロギングステートメントを有するソースコードを実行することと、ロギングステートメントに基づいてソースコードの実行中に１つまたは複数のログファイルを生成することとを含む。本方法は、１つまたは複数のログファイルを使用してモデリング言語でのソースコードの表現を生成することを含む。さらに、本方法は、モデリング言語でのソースコードの表現を使用してソフトウェアプログラムのソースコードを検証することを含む。
【０００５】
別の態様では、データ処理システムが、処理ユニットと、処理ユニットに結合されたメモリとを含む。メモリは、機械可読命令の形態で格納されている、処理ユニットによって実行可能なモデル駆動型開発モジュールを含む。モデル駆動型開発モジュールは、ソフトウェアプログラムの仕様に基づいて、ロギングステートメントを含む、ソフトウェアプログラムのソースコードを生成するように構成されている。モデル駆動型開発モジュールは、ロギングステートメントを有するソースコードを実行し、ロギングステートメントに基づいてソースコードの実行中に１つまたは複数のログファイルを生成するように構成されている。さらに、モデル駆動型開発モジュールは、１つまたは複数のログファイルを使用してモデリング言語でのソースコードの表現を生成するように構成されている。
【０００６】
さらに別の態様は、データ処理システムによって実行された場合に、データ処理システムに、上述した統合開発環境においてソフトウェアプログラムを検証する方法を実行させる命令が格納された、非一時的なコンピュータ可読記憶媒体に関する。
【０００７】
この概要は、以下の説明でさらに記載されるコンセプトの選択肢を、簡略化した形式で紹介するために提供されている。特許請求される主題の特徴または本質的な特徴を特定することは、意図されていない。さらに、特許請求される主題は、本開示の任意の部分に記載された欠点のいずれかまたは全てを解決する実装態様に限定されていない。
【０００８】
本開示のより完全な評価と、それに付随する態様の多くとは、添付の図面に関連して考慮したときに、以下の説明を参照することによってより良好に理解されるので、容易に得られるであろう。
【図面の簡単な説明】
【０００９】
【図１】一実施形態が実施され得る、データ処理システムのブロック図である。
【図２】一実施形態による、図１のモデル駆動型開発モジュールの種々のモジュールを示すブロック図である。
【図３】一実施形態による、統合開発環境においてソフトウェアプログラムを検証する例示的な方法のプロセスフローチャートである。
【図４】一実施形態が実施され得る、別のデータ処理システムのブロック図である。
【図５】発券システムのためのＣコードの実行中に記録された情報に基づいて生成される例示的なシーケンス図の概略図である。
【００１０】
統合開発環境においてソフトウェアプログラムを検証するための方法およびシステムが開示される。種々の実施形態が図面を参照しながら説明され、全体を通して同様の要素を指すために同様の参照番号が使用される。以下の説明では、本開示の実施形態の完全な理解を提供するために、多数の特定の詳細が述べられている。本開示の実施形態を実施するために必ずしもこれらの特定の詳細を使用する必要がないことは、当業者には明らかであろう。他の例では、本開示の実施形態を不必要に曖昧にすることを避けるために、周知の材料または方法は、詳細には説明されていない。本開示は種々の修正形態および代替形態が可能であるが、その特定の実施形態が、一例として図面に示されており、本明細書において詳細に説明される。しかしながら、本開示を、開示された特定の形態に限定することを意図したわけではなく、反対に、本開示が、本開示の精神および範囲に含まれる全ての修正物、均等物、および代替物を網羅することを理解すべきでる。
【００１１】
図１は、データ処理システム１００のブロック図を示し、このデータ処理システム１００では、例えば、本明細書に記載されたプロセスを実行するための、特にソフトウェアなどによって構成されたデータ処理システムとして、一実施形態を実装することができる。データ処理システム１００は、パーソナルコンピュータ、ラップトップコンピュータ、タブレット、スマートフォンなどであり得る。図１では、データ処理システム１００は、処理ユニット１０２と、アクセス可能メモリ１０４と、記憶ユニット１０６と、入力ユニット１０８と、出力ユニット１１０と、バス１１２とを含む。
【００１２】
本明細書で使用される処理ユニット１０２は、限定するわけではないが、マイクロプロセッサユニット、マイクロコントローラ、複合命令セット計算マイクロプロセッサユニット、縮小命令セット計算マイクロプロセッサユニット、超長命令語マイクロプロセッサユニット、明示的並列命令計算マイクロプロセッサユニット、グラフィックス処理ユニット、デジタル信号処理ユニット、または任意の他の種類の処理回路のような、任意の種類の計算回路を意味する。処理ユニット１０２は、汎用またはプログラミング可能な論理デバイスまたはアレイ、特定用途向け集積回路、シングルチップコンピュータなどのような、組み込みコントローラを含むこともできる。
【００１３】
メモリ１０４は、非一時的な揮発性メモリ、および不揮発性メモリであり得る。メモリ１０４を、コンピュータ可読記憶媒体のように、通信のために処理ユニット１０２に結合させることができる。処理ユニット１０２は、メモリ１０４に格納された機械可読命令および／またはソースコードを実行することができる。種々の機械可読命令をメモリ１０４に格納することができ、また、メモリ１０４から種々の機械可読命令にアクセスすることができる。メモリ１０４は、読み取り専用メモリ、ランダムアクセスメモリ、消去可能プログラマブル読み取り専用メモリ、電気的消去可能プログラマブル読み取り専用メモリ、ハードドライブ、コンパクトディスクを処理するためのリムーバブルメディアドライブ、デジタルビデオディスク、ディスケット、磁気テープカートリッジ、メモリカードなどのような、データおよび機械可読命令を格納するための任意の適切な要素を含むことができる。本実施形態では、メモリ１０４は、統合開発環境（ＩＤＥ）１１３を含む。ＩＤＥ１１３は、上述の記憶媒体のいずれかに機械可読命令の形態で格納されたモデル駆動型開発モジュール１１４を含み、処理ユニット１０２と通信することができ、処理ユニット１０２によって実行され得る。
【００１４】
処理ユニット１０２によって実行されると、モデル駆動型開発モジュール１１４は、処理ユニット１０２に、ソフトウェアプログラムの仕様を使用して、ロギングステートメントを含む、ソフトウェアプログラムのソースコードを生成させる。ソフトウェアプログラムの仕様は、モデリング言語で表現されている。例えば、ソフトウェアプログラムの仕様は、ドメイン固有言語（ＤＳＬ）を使用して表現されている。ソフトウェアプログラムは、例えば、システム（例えば自動車）のための組み込みシステム（例えばクルーズコントロールシステム）のために開発され得る。ソフトウェアプログラムは、展開されると、システムが所期の機能を実行すること（例えば自動車のオートクルーズモードを有効にすること）を可能にする。モデル駆動型開発モジュール１１４は、処理ユニット１０２に、ロギングステートメントに基づいてソースコードの実行中にログファイルを生成させ、このログファイルを使用してモデリング言語でのソースコードの表現を生成させる。また、モデル駆動型開発モジュール１１４は、処理ユニット１０２に、モデリング言語でのソースコードの表現をモデリング言語での仕様と比較することにより、ソースコードが仕様に準拠していることを検証させる。モデル駆動型開発モジュール１１４は、処理ユニット１０２に、検証の結果に基づいてソフトウェアプログラムのソースコードを変更させる。上記の機能を達成するために処理ユニット１０２によって実行される方法ステップは、図３により詳細に説明されている。
【００１５】
記憶ユニット１０６は、仕様データベース１１６およびログファイルデータベース１１８を格納する非一時的な記憶媒体であり得る。仕様データベース１１６は、ソフトウェアプログラムの仕様を格納する。例えば、ソフトウェアプログラムの仕様は、シーケンス図のような統合モデリング言語図を使用して表現されている。ログファイルデータベース１１８は、ソフトウェアプログラムのソースコードの実行中に生成されたログファイルを格納する。それぞれのログファイルは、ソフトウェアプログラムを使用して動作されるシステム（例えば車）の要素（例えばコンポーネントおよび／またはオブジェクト）間の相互作用の時系列のシーケンスを表現する情報を含む。
【００１６】
入力ユニット１０８は、ＩＤＥ１１３内のソフトウェアプログラムを生成および検証するためのユーザコマンドのような、１つまたは複数の入力信号を受信することが可能な入力装置、例えば、キーパッド、タッチセンシティブディスプレイ、カメラ（ジェスチャベースの入力を受信するカメラなど）などを含むことができる。出力ユニット１１０は、モデリング言語でのソースコードの表現と、ソースコードの検証の結果とを視覚化する、グラフィカルユーザインターフェースを表示するためのディスプレイユニットであり得る。出力ユニット１１０は、ユーザがＩＤＥ１１３と相互作用することを可能にするグラフィカルユーザインターフェースも提供する。例えば、グラフィカルユーザインターフェースは、ソースコードが仕様に準拠するように、ユーザがソースコードを変更することを可能にする。バス１１２は、処理ユニット１０２と、メモリ１０４と、記憶ユニット１０６と、入力ユニット１０８と、出力ユニット１１０との間の相互接続部として機能する。
【００１７】
当業者は、図１に図示されたハードウェアが特定の実装に対して変更され得ることを理解するであろう。例えば、図示されているハードウェアに加えてまたはこれに代えて、光ディスクドライブなどのような他の周辺機器、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、ワイヤレス（例えばＷｉ−Ｆｉ）アダプタ、グラフィックアダプタ、ディスクコントローラ、入出力（Ｉ／Ｏ）アダプタを使用することもできる。図示の例は、説明の目的のためだけに提供されており、本開示に関するアーキテクチャ上の制限を示唆することを意図したものではない。
【００１８】
本開示の一実施形態によるデータ処理システムは、グラフィカルユーザインターフェースを使用するオペレーティングシステムを含む。オペレーティングシステムは、それぞれの表示ウィンドウによって、それぞれ異なるアプリケーションまたは同じアプリケーションのそれぞれ異なるインスタンスへのインターフェースを提供しながら、複数の表示ウィンドウを、グラフィカルユーザインターフェースに同時に表示することを可能にする。グラフィカルユーザインターフェースのカーソルを、ポインティングデバイスを介してユーザによって操作することができる。所期の応答を実行するために、カーソルの位置を変更することができ、かつ／またはマウスボタンのクリックのようなイベントを生成することができる。
【００１９】
ワシントン州レドモンドにあるMicrosoft Corporation社の製品であるMicrosoft Windows（登録商標）のバージョンのような種々の商用オペレーティングシステムのうちの１つを、これが適切に修正される場合において使用することができる。オペレーティングシステムは、説明するような本開示に従って修正または作成される。
【００２０】
本開示による実施形態は、統合開発環境においてソフトウェアプログラムを検証するシステムおよび方法を提供する。特に、本開示による技術は、ロギングステートメントを有する、ソフトウェアプログラムのソースコードを生成し、ロギングステートメントに基づいてソースコードの実行中にログファイルを生成し、ログファイルに基づいてモデリング言語でのソースコードの表現を生成し、モデリング言語でのソースコードの表現を使用してソースコードを検証することができる。
【００２１】
本明細書では、単純化および明確化のために、本開示と共に使用するために適した全てのデータ処理システムの完全な構造および動作が図示または説明されているわけではないということを、当業者であれば認識するであろう。その代わりに、データ処理システムのうち、本開示に特有であるもの、または本開示を理解するために必要であるものだけが図示および説明されている。データ処理システム１００の残りの構造および動作は、当技術分野で知られている現在の種々の実装および慣行のいずれかに準拠することができる。
【００２２】
図２は、一実施形態による、図１のモデル駆動型開発モジュール１１４の種々のモジュールを示すブロック図である。モデル駆動型開発モジュール１１４は、モデル生成モジュール２０２と、メタデータタグ付けモジュール２０４と、コード生成器２０６と、コード実行モジュール２０８と、シーケンス図生成器２１０と、検証モジュール２１２とを含む。
【００２３】
モデル生成モジュール２０２は、ソフトウェアプログラムの仕様の統一モデリング言語（ＵＭＬ）図を生成するように構成されている。いくつかの実施形態では、モデル生成モジュール２０２は、開発されるべきソフトウェアプログラムの仕様を表現するシーケンス図を生成するように構成されている。シーケンス図は、ソフトウェアプログラムによって駆動されるシステムの種々の要素（例えばコンポーネントおよび／またはオブジェクト）間の相互作用の時系列のシーケンスで、システムの挙動を規定するものである。例えば、開発されるべきソフトウェアプログラムは、組み込みシステムのためのソフトウェアである。メタデータタグ付けモジュール２０４は、仕様のＵＭＬ図にメタデータをタグ付けするように構成されている。メタデータは、モデリング言語（例えばＵＭＬ）でソースコードを表現することを可能にするために、ＵＭＬ図内のシステムの１つまたは複数の要素（すなわちコンポーネントまたはコンポーネントのオブジェクト）にタグ付けされる。ソフトウェアエンジニアは、仕様のシーケンス図を生成している最中に、１つまたは複数の要素にメタデータをタグ付けすることができる。
【００２４】
コード生成器２０６は、ＵＭＬ図を使用して、ロギングステートメントを含む、ソフトウェアプログラムのソースコードを生成するように構成されている。例示的な実装では、コード生成器２０６は、Ｃのような手続き型プログラミング言語でソフトウェアプログラムのソースコードを生成するように構成されている。ソースコードの生成中に、コード生成器２０６は、仕様のＵＭＬ図にタグ付けされたメタデータに基づいて、ソースコードにおける１つまたは複数の箇所にロギングステートメントを追加するように構成されている。ロギングステートメントは、ソースコードの実行中におけるシステムの種々の要素間の相互作用を記録するために、ソースコードに挿入される。ＵＭＬ図にタグ付けされた要素に関して、相互作用が記録される。
【００２５】
コード実行モジュール２０８は、ロギングステートメントを有するソースコードを実行するように構成されている。コード生成器モジュール２０８は、ロギングステートメントに基づいてソースコードの実行中にログファイルを生成するようにも構成されている。いくつかの実施形態では、コード生成器２０８は、ソースコードの実行中にロギングステートメントに基づいてシステムの要素間の相互作用を決定するように構成されている。これらの実施形態では、コード生成器２０８は、システムの要素間の相互作用を時系列のシーケンスでログファイルに記録するように構成されている。
【００２６】
シーケンス図生成器２１０は、ソースコードの実行中にログファイルに記録された相互作用に基づいてモデリング言語でのソースコードの表現を生成するように構成されている。いくつかの実施形態では、シーケンス図生成器２１０は、ログファイルに記録された相互作用に基づいてＵＭＬ図を生成するように構成されている。例えば、シーケンス図生成器２１０は、システムの要素間の相互作用を時系列のシーケンスで示すシーケンス図を生成するように構成されている。要素間の相互作用は、リアルタイムでソースコードが実行されたときのシステムの挙動を示す。
【００２７】
検証モジュール２１２は、シーケンス図生成器２１０によって生成されたＵＭＬ図に基づいてソフトウェアプログラムのソースコードを検証するように構成されている。いくつかの実施形態では、検証モジュール２１２は、ログファイルを使用して生成されたＵＭＬ図を仕様のＵＭＬ図と比較するように構成されている。この比較に基づいて、検証モジュール２１２は、ソースコードがソフトウェアプログラムの仕様に準拠しているかどうかを判断するように構成されている。すなわち、検証モジュール２１２は、ログファイルを使用して生成されたＵＭＬ図によるシステムの挙動が、仕様のＵＭＬ図によるシステムの挙動と同じかどうかを判断するように構成されている。ソースコードが仕様に準拠していないことが判明した場合には、検証モジュール２１２は、ソースコードが仕様に準拠するように、適切な箇所においてソースコードを変更するように構成されている。
【００２８】
図３は、一実施形態による、統合開発環境においてソフトウェアプログラムを検証する例示的な方法のプロセスフローチャート３００を示す。ステップ３０２において、ソフトウェアプログラムのソースコードが、ソフトウェアプログラムの仕様を使用して手続き型プログラミング言語で生成される。例えば、ソースコードは、「Ｃ」プログラミング言語を使用して生成される。ソフトウェアプログラムの仕様は、シーケンス図を使用して表現されている。
【００２９】
ステップ３０４では、ソフトウェアプログラムの仕様（すなわち、仕様のシーケンス図）にタグ付けされたメタデータに基づいて、ソフトウェアプログラムのソースコードにおける１つまたは複数の箇所にロギングステートメントが追加される。ロギングステートメントは、ソースコードの実行中におけるシステムの種々の要素間の相互作用がログファイルに記録されるように、ソースコードにおける適切な箇所に挿入される。相互作用は、シーケンス図にタグ付けされた要素（例えばコンポーネントおよび／またはコンポーネントのオブジェクト）に対応するように記録される。ロギングステートメントは、適切な名前を有するタグ付きのコンポーネントおよびメソッドを含むインストルメント済みコードの形態である。
【００３０】
ソフトウェアプログラムが、発券システムに関して作成されることを検討する。例えば、ソフトウェアプログラムは、カードを介した支払いが正常に認証されたときに自動的に切符を発行するためのものであり得る。ユーザは、カード払いを使用してキオスクを介して切符を発行するための仕様を、コンポーネント（発券システム）と、オブジェクト（発券サーバ、キオスク、支払いゲートウェイ、カード認証、出札窓口など）と、オブジェクト間の相互作用との形態で、ドメイン固有言語を使用して開発する。仕様に対応するＣコードは、自動コード生成器を使用して生成される。仕様におけるタグ付きコンポーネントと、オブジェクトと、オブジェクト間の相互作用とに対応するロギングステートメントが、Ｃコードにおける適切な箇所に追加される。発券システムのためのロギングステートメントを有するＣコードの一例が、付録「Ａ」に示されている。
【００３１】
ステップ３０６において、ロギングステートメントを有するソースコードが実行される。例えば、テストケースに対応するソースコードが実行される。テストケースは、シーケンス図によって定義されたユースケースを複製する。ステップ３０８では、ソースコードの実行中にロギングステートメントに基づいて１つまたは複数のログファイルが生成される。ロギングステートメントに対応するインストルメント済みコードが、１つまたは複数のログファイルに情報を記録する。情報は、ソースコードの実行中にキャプチャされるような、ソフトウェアプログラムによって制御されるシステムの要素間の相互作用の順序を、時系列のシーケンスで表現したものを含む。情報は、コンポーネント（またはクラス）の実行オブジェクト情報の形態でキャプチャされ、メソッドおよびコンポーネントのタグ付けの詳細の形態でキャプチャされ、メソッド呼び出しの発生方法、メソッド呼び出しを開始したコンポーネント、またはメソッド呼び出しを開始したコンポーネントのオブジェクトなどのようなメソッド呼び出し情報の形態でキャプチャされる。発券システムの要素間の相互作用を、拡張マークアップ言語（ＸＭＬ）形式で表現している例示的なログ情報が、付録「Ｂ」に記載されている。ステップ３１０では、１つまたは複数のログファイルに記録された情報に基づいてモデリング言語（例えば統合モデリング言語）でのソースコードの表現が生成される。例えば、ソースの実行中にキャプチャされたシステムの要素間の相互作用を規定するシーケンス図が、ログファイルを使用して生成される。発券システムのログ情報に基づいて生成される例示的なシーケンス図５００が、図５に図示されている。このシーケンス図は、コンポーネントと、コンポーネントのオブジェクトとを図示すると共に、ロギングステートメントを有するＣコードの実行中にログファイルに記録された、発券システムにおけるオブジェクト間の相互作用を図示している。
【００３２】
ステップ３１２において、モデリング言語でのソースコードの表現を使用してソフトウェアプログラムのソースコードが検証される。換言すれば、ステップ３１０で生成されたシーケンス図が、ソフトウェアプログラムの仕様を表現しているシーケンス図と比較される。この比較に基づいて、生成されたシーケンス図が仕様のシーケンス図と一致しているかどうかが判断される。このことは、ソフトウェアプログラムのソースコードがソフトウェアプログラムの仕様に準拠しているかどうかを判断するために役立つ。生成されたシーケンス図が仕様のシーケンス図と一致していない場合には、このことは、ソースコードの実行から決定されるシステムの挙動が、仕様によって定義されたシステムの所期の挙動とは異なっているということを示唆している。そのような場合には、変更後のソースコードがソフトウェアプログラムの仕様に準拠するように、ソースコードにおける適切な箇所でソースコードが変更される。その後、ロギングステートメントを有する変更されたソースコードが実行され、変更されたソースコードを実行することにより、システムの要素間の相互作用を示すログファイルが生成される。したがって、ログファイルを使用してＵＭＬ図が生成され、生成されたＵＭＬ図を使用して、変更されたソースコードが検証される。上記の各ステップは、変更されたソースコードが仕様に準拠するまで実行される。このようにして、統合開発環境においてソフトウェアプログラムが検証される。
【００３３】
図４は、一実施形態が実施され得る、別のデータ処理システム４００のブロック図を示す。特に、データ処理システム４００は、サーバ４０２と、複数のクライアントデバイス４０６Ａ〜Ｎとを含む。クライアントデバイス４０６Ａ〜Ｎの各々は、ネットワーク４０４（例えば、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、Ｗｉ−Ｆｉなど）を介してサーバ４０２に接続されている。データ処理システム４００は、図１のデータ処理システム１００の別の実装態様であり、ここでは、モデル駆動型開発モジュール１１４が、サーバ４０２内に設けられており、ネットワーク４０４を介してクライアントデバイス４０６Ａ〜Ｎによってアクセスされる。
【００３４】
サーバ４０２は、モデル駆動型開発モジュール１１４と、仕様データベース１１６と、ログファイルデータベース１１８とを含む。サーバ４０２は、処理ユニットと、メモリと、記憶ユニットとを含むこともできる。モデル駆動型開発モジュール１１４は、機械可読命令の形態でメモリ上に格納され、処理ユニットによって実行可能であり得る。仕様データベース１１６およびログファイルデータベース１１８を、記憶ユニットに格納することができる。サーバ４０２は、ネットワーク４０４を介したクライアントデバイス４０６Ａ〜Ｎとの通信を可能にするための通信インターフェースを含むこともできる。
【００３５】
機械可読命令が実行されると、モデル駆動型開発モジュール１１４は、サーバ４０２に、ロギングステートメントを含む、ソフトウェアプログラムのソースコードを生成させ、ソースコードの実行中にログファイルを生成させ、ログファイルを使用してモデリング言語でのソースコードの表現を生成させ、モデリング言語でのソースコードの表現を使用してソースコードを検証させる。上述の機能を達成するためにサーバ４０２によって実行される方法ステップは、図２および３により詳細に説明されている。クライアントデバイス４０６Ａ〜Ｎは、統合開発環境（ＩＤＥ）１１３を含み、この統合開発環境（ＩＤＥ）１１３は、ソフトウェアプログラムを上述したように生成および検証するために、ソフトウェアエンジニアが、サーバ４０２内のモデル駆動型開発モジュール１１４にアクセスすることを可能にする。
【００３６】
モデル駆動型開発モジュール１１４を、クラウドコンピューティング環境内のクラウドサーバに設けることができ、クラウドネットワークを介して接続されたクライアントデバイス４０６Ａ〜Ｎが、モデリング言語図を使用してソフトウェアプログラムを生成および検証するために、モデル駆動型開発モジュール１１４にアクセスすることができるということを想定することができる。
【００３７】
種々の実施形態において、図１〜４に示される方法およびシステムは、ソースコードの実行に基づいて生成されたシーケンス図をソフトウェアプログラムの仕様のシーケンス図と比較することにより、ソフトウェアプログラムの検証を可能にする。本方法および本システムは、大規模かつ複雑なソースコードが仕様に準拠していることを検証することができる。
【００３８】
本明細書で説明されるシステムおよび方法を、ハードウェア、ソフトウェア、ファームウェア、専用処理ユニット、またはそれらの組み合わせの種々の形態で実装することができることを理解すべきである。本実施形態の１つまたは複数は、１つまたは複数のコンピュータ、処理ユニット、または命令実行システムによって、またはそれらに関連して使用するためのプログラムコードを格納するコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセス可能なプログラムモジュールを含むコンピュータプログラム製品の形態をとることができる。この説明の目的のために、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって、またはそれらに関連して使用するためのプログラムを含むこと、格納すること、通信すること、伝播すること、または転送することが可能な任意の装置であり得る。媒体は、電子的、磁気的、光学的、電磁的、赤外線、または半導体のシステム（または装置またはデバイス）であり得るか、または伝播媒体自体であり得るが、なぜなら、信号キャリアは、物理的なコンピュータ可読媒体の定義に含まれていないからであり、この物理的なコンピュータ可読媒体には、半導体またはソリッドステートメモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、リジッド磁気ディスクおよび光ディスク、例えば、コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、コンパクトディスク読み取り／書き込み、およびデジタル多用途ディスク（ＤＶＤ）などが含まれる。本技術の各態様を実装するための処理ユニットおよびプログラムコードの両方を、当業者に知られているように集中化または分散（またはその組み合わせ）することができる。
【００３９】
特定の実施形態を参照しながら本開示を詳細に説明してきたが、本開示が、それらの実施形態に限定されていないことを理解すべきである。本開示に鑑みて、当業者には、本明細書に記載される本開示の種々の実施形態の範囲から逸脱することなく、多数の修正自体および変形自体が提示されるであろう。したがって、本開示の範囲は、前述の説明ではなく特許請求の範囲によって指定されている。特許請求の範囲の等価の意味内および範囲内に含まれる全ての変更、修正、および変形は、特許請求の範囲の範囲内にあると見なされるべきである。
【００４０】
付録「Ａ」
【表１−１】
0006748307.tif 000002
【表１−２】
0006748307.tif 000003
【００４１】
付録「Ｂ」
【表２】
0006748307.tif 000004
【図１】
0006748307.tif 000005
【図２】
0006748307.tif 000006
【図３】
0006748307.tif 000007
【図４】
0006748307.tif 000008
【図５】
0006748307.tif 000009