JP6748307B2 - ソフトウェアプログラムを検証するための方法およびシステム - Google Patents

ソフトウェアプログラムを検証するための方法およびシステム Download PDF

Info

Publication number
JP6748307B2
JP6748307B2 JP2019542430A JP2019542430A JP6748307B2 JP 6748307 B2 JP6748307 B2 JP 6748307B2 JP 2019542430 A JP2019542430 A JP 2019542430A JP 2019542430 A JP2019542430 A JP 2019542430A JP 6748307 B2 JP6748307 B2 JP 6748307B2
Authority
JP
Japan
Prior art keywords
software program
source code
modeling language
data processing
specifications
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.)
Active
Application number
JP2019542430A
Other languages
English (en)
Other versions
JP2020505710A (ja
Inventor
ミシュラ サンジット
ミシュラ サンジット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Siemens Industry Software NV
Original Assignee
Siemens Industry Software NV
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Siemens Industry Software NV filed Critical Siemens Industry Software NV
Publication of JP2020505710A publication Critical patent/JP2020505710A/ja
Application granted granted Critical
Publication of JP6748307B2 publication Critical patent/JP6748307B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Description

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

Claims (14)

  1. 統合開発環境(113)においてソフトウェアプログラムを検証する、コンピュータ実装される方法であって、
    データ処理システム(100)により、前記ソフトウェアプログラムの仕様に基づいて、ロギングステートメントを含む、前記ソフトウェアプログラムのソースコードを生成することを含み、前記ロギングステートメントは、前記ソフトウェアプログラムの前記仕様にタグ付けされたメタデータに基づいて、前記ソフトウェアプログラムの前記ソースコードにおける1つまたは複数の箇所に追加され、なお、前記ソフトウェアプログラムの前記仕様は、モデリング言語で表現されており、
    前記方法は、
    前記ロギングステートメントを有する前記ソースコードを実行することと、
    前記ロギングステートメントに基づいて前記ソースコードの実行中に1つまたは複数のログファイルを生成することと、
    前記1つまたは複数のログファイルを使用して前記モデリング言語での前記ソースコードの表現(500)を生成することと、
    前記モデリング言語での前記ソースコードの表現(500)を使用して前記ソフトウェアプログラムの前記ソースコードを検証することと
    を含む、コンピュータ実装される方法。
  2. 前記ソフトウェアプログラムの前記ソースコードは、手続き型プログラミング言語で生成される、
    請求項1記載のコンピュータ実装される方法。
  3. 前記ソフトウェアプログラムの前記ソースコードを検証することは、
    前記モデリング言語での前記ソースコードの表現(500)を、前記モデリング言語での、前記ソフトウェアプログラムの前記仕様と比較することと、
    前記比較の結果に基づいて、前記ソフトウェアプログラムの前記ソースコードが前記ソフトウェアプログラムの前記仕様に準拠しているかどうかを判断することと、
    前記ソフトウェアプログラムの前記ソースコードが前記ソフトウェアプログラムの前記仕様に準拠していない場合に、前記ソフトウェアプログラムの前記ソースコードを変更することと
    を含む、請求項1記載のコンピュータ実装される方法。
  4. 前記モデリング言語での前記ソースコードの表現(500)は、統合モデリング言語(UML)図を含む、
    請求項1記載のコンピュータ実装される方法。
  5. 前記ソフトウェアプログラムの前記仕様は、前記ソフトウェアプログラムによって駆動されるシステムに関連する複数の異なる要素間の相互作用の時系列のシーケンスで、前記ソフトウェアプログラムによって駆動されるシステムの挙動を規定するものである、
    請求項1記載のコンピュータ実装される方法。
  6. 前記ソフトウェアプログラムの前記ソースコードの実行中に前記ログファイルを生成することは、
    前記ソースコードの実行中に前記ロギングステートメントに基づいて前記ソフトウェアプログラムによって駆動されるシステムの要素間の1つまたは複数の相互作用を決定することと、
    前記ソフトウェアプログラムによって駆動されるシステムの要素間の前記1つまたは複数の相互作用を前記ログファイルに時系列のシーケンスで記録することと
    を含む、請求項5記載のコンピュータ実装される方法。
  7. データ処理システム(100)であって、
    処理ユニット(102)と、
    前記処理ユニット(102)に結合されたメモリ(104)と
    を含み、
    前記メモリ(104)は、モデル駆動型開発モジュール(114)を含み、
    前記モデル駆動型開発モジュール(114)は、
    ソフトウェアプログラムの仕様に基づいて、ロギングステートメントを含む、前記ソフトウェアプログラムのソースコードを生成するように構成されており、前記ロギングステートメントは、前記ソフトウェアプログラムの前記仕様にタグ付けされたメタデータに基づいて、前記ソフトウェアプログラムの前記ソースコードにおける1つまたは複数の箇所に追加され、なお、前記ソフトウェアプログラムの前記仕様は、モデリング言語で表現されており、
    前記モデル駆動型開発モジュール(114)は、
    前記ロギングステートメントを有する前記ソースコードを実行し、
    前記ロギングステートメントに基づいて前記ソースコードの実行中に1つまたは複数のログファイルを生成し、
    前記1つまたは複数のログファイルを使用してモデリング言語での前記ソースコードの表現(500)を生成する
    ように構成されており、
    前記モデル駆動型開発モジュール(114)は、前記モデリング言語での前記ソースコードの表現(500)を使用して前記ソフトウェアプログラムの前記ソースコードを検証するように構成されている、
    データ処理システム(100)。
  8. 前記ソフトウェアプログラムの前記ソースコードは、手続き型プログラミング言語で生成される、
    請求項7記載のデータ処理システム(100)。
  9. 前記ソフトウェアプログラムの前記ソースコードを検証する際に、
    前記モデル駆動型開発モジュール(114)は、
    前記モデリング言語での前記ソースコードの表現(500)を、前記モデリング言語での、前記ソフトウェアプログラムの前記仕様と比較し、
    前記ソフトウェアプログラムの前記ソースコードが前記ソフトウェアプログラムの前記仕様に準拠しているかどうかを判断し、
    前記ソフトウェアプログラムの前記ソースコードが前記ソフトウェアプログラムの前記仕様に準拠していない場合には、前記ソフトウェアプログラムの前記ソースコードを変更する
    ように構成されている、請求項7記載のデータ処理システム(100)。
  10. 前記モデリング言語での前記ソースコードの表現は、統合モデリング言語(UML)図を含む、
    請求項7記載のデータ処理システム(100)。
  11. 前記ソフトウェアプログラムの前記仕様は、前記ソフトウェアプログラムによって駆動されるシステムに関連する複数の異なる要素間の相互作用の時系列のシーケンスで、前記ソフトウェアプログラムによって駆動されるシステムの挙動を規定するものである、
    請求項7記載のデータ処理システム(100)。
  12. 前記1つまたは複数のログファイルを生成する際に、
    前記モデル駆動型開発モジュール(114)は、
    前記ソースコードの実行中に前記ロギングステートメントに基づいて前記ソフトウェアプログラムによって駆動されるシステムの要素間の1つまたは複数の相互作用を決定し、
    前記ソフトウェアプログラムによって駆動されるシステムの要素間の前記1つまたは複数の相互作用を前記ログファイルに時系列のシーケンスで記録する
    ように構成されている、請求項7記載のデータ処理システム(100)。
  13. データ処理システム(100)によって実行された場合に、前記データ処理システム(100)に、統合開発環境(113)においてソフトウェアプログラムを検証する方法を実行させる命令が格納された、非一時的なコンピュータ可読記憶媒体であって、
    前記方法は、
    前記ソフトウェアプログラムの仕様に基づいて、ロギングステートメントを含む、前記ソフトウェアプログラムのソースコードを生成するステップを含み、前記ロギングステートメントは、前記ソフトウェアプログラムの前記仕様にタグ付けされたメタデータに基づいて、前記ソフトウェアプログラムの前記ソースコードにおける1つまたは複数の箇所に追加され、なお、前記ソフトウェアプログラムの前記仕様は、モデリング言語で表現されており、
    前記方法は、
    前記ロギングステートメントを有する前記ソースコードを実行するステップと、
    前記ロギングステートメントに基づいて前記ソースコードの実行中に1つまたは複数のログファイルを生成するステップと、
    前記1つまたは複数のログファイルを使用してモデリング言語での前記ソースコードの表現(500)を生成するステップと、
    前記モデリング言語での前記ソースコードの表現(500)を使用して前記ソフトウェアプログラムの前記ソースコードを検証することと
    を含む、非一時的なコンピュータ可読記憶媒体。
  14. 前記1つまたは複数のログファイルを生成する際に、
    前記命令は、前記データ処理システム(100)に、
    前記ソースコードの実行中に前記ロギングステートメントに基づいて前記システムの要素間の1つまたは複数の相互作用を決定することと、
    前記システムの要素間の前記1つまたは複数の相互作用を前記ログファイルに時系列のシーケンスで記録することと
    を含む方法ステップを実行させる、
    請求項13記載の記憶媒体。
JP2019542430A 2017-02-01 2017-09-05 ソフトウェアプログラムを検証するための方法およびシステム Active JP6748307B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IN201731003703 2017-02-01
IN201731003703 2017-02-01
PCT/EP2017/072187 WO2018141424A1 (en) 2017-02-01 2017-09-05 Methods and systems for verifying a software program

Publications (2)

Publication Number Publication Date
JP2020505710A JP2020505710A (ja) 2020-02-20
JP6748307B2 true JP6748307B2 (ja) 2020-08-26

Family

ID=59772634

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019542430A Active JP6748307B2 (ja) 2017-02-01 2017-09-05 ソフトウェアプログラムを検証するための方法およびシステム

Country Status (5)

Country Link
US (1) US10929108B2 (ja)
EP (1) EP3563232A1 (ja)
JP (1) JP6748307B2 (ja)
CN (1) CN110574005B (ja)
WO (1) WO2018141424A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11385940B2 (en) 2018-10-26 2022-07-12 EMC IP Holding Company LLC Multi-cloud framework for microservice-based applications
US11533317B2 (en) * 2019-09-30 2022-12-20 EMC IP Holding Company LLC Serverless application center for multi-cloud deployment of serverless applications
US11580255B2 (en) * 2019-11-11 2023-02-14 Bank Of America Corporation Security tool for n-tier platforms
US11860795B2 (en) * 2020-02-18 2024-01-02 Arm Limited Device, system, and method of determining memory requirements and tracking memory usage

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004038741A (ja) 2002-07-05 2004-02-05 Fujitsu Ltd システムlsi開発支援システム
US8020153B2 (en) 2004-10-04 2011-09-13 Panasonic Corporation Source code checker, source code checking method, program for causing execution of the method, and storage medium for storing the program
JP5203806B2 (ja) 2008-06-06 2013-06-05 インターナショナル・ビジネス・マシーンズ・コーポレーション シーケンス図作成装置、シーケンス図作成方法及びコンピュータプログラム
US8726254B2 (en) * 2009-06-20 2014-05-13 Microsoft Corporation Embedded annotation and program analysis
US20120159429A1 (en) * 2010-12-15 2012-06-21 Microsoft Corporation Metadata based eventing
US9448792B2 (en) * 2013-03-14 2016-09-20 Microsoft Technology Licensing, Llc Automatic risk analysis of software
KR101770292B1 (ko) * 2014-11-27 2017-08-22 주식회사 엘지씨엔에스 컴퓨터 수행 가능한 모델 역공학 방법 및 장치
CN106557413A (zh) * 2015-09-25 2017-04-05 伊姆西公司 基于代码覆盖率获取测试用例的方法和设备
US20180129581A1 (en) * 2016-11-07 2018-05-10 International Business Machines Corporation Method for static and dynamic configuration verification

Also Published As

Publication number Publication date
CN110574005B (zh) 2021-06-08
US10929108B2 (en) 2021-02-23
WO2018141424A1 (en) 2018-08-09
EP3563232A1 (en) 2019-11-06
JP2020505710A (ja) 2020-02-20
US20190377556A1 (en) 2019-12-12
CN110574005A (zh) 2019-12-13

Similar Documents

Publication Publication Date Title
US11934301B2 (en) System and method for automated software testing
US20240037020A1 (en) System and Method for Automated Software Testing
JP6748307B2 (ja) ソフトウェアプログラムを検証するための方法およびシステム
CN112424748B (zh) 源代码文件推荐通知
CN107220172B (zh) 通过模型驱动技术进行自动用户界面(ui)测试的方法和系统
US10289397B2 (en) Silent installation of software with dependencies
US20200050540A1 (en) Interactive automation test
JP2014191830A (ja) アプリケーションの自動的な特徴駆動型のテスト及び品質チェックの方法、システム及び製品
US10884905B2 (en) Test script creation based on abstract test user controls
US20120084684A1 (en) Rapid Automation Front-end Framework Library and Executable Graphic User Interface Testing System and Method
US11010286B1 (en) Software testing with machine learning models
US9477582B2 (en) Executable software specification generation
US20180150378A1 (en) Verification of model-driven software architecture
US20120330859A1 (en) Interactive business process modeling and simulation
US20220058582A1 (en) Technical specification deployment solution
US11281437B2 (en) User interface design platform, system, and method for applying consistent look and feel
US20180150379A1 (en) Method and system of verifying software
US11030362B2 (en) Modeling and cooperative simulation of systems with interdependent discrete and continuous elements
Riccobene et al. Model-based simulation at runtime with abstract state machines
CN111949514A (zh) 一种模型预测方法、装置及存储介质
US20070226706A1 (en) Method and system for generating multiple path application simulations
KR102087210B1 (ko) 알고리즘을 통한 테스트 케이스 생성 및 페어와이즈 조합 기법을 사용한 테스트 케이스 추출 방법 및 이를 이용하는 추출 장치
US20230401355A1 (en) Method and system for validating product and manufacturing information of a geometric model
CN114943068A (zh) 基于一站式开发构建平台的多人协同开发方法及相关设备
Bell et al. Azure IoT Solutions: Cloud Services

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20190927

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190927

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20191106

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20191126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200312

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200409

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200622

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: 20200708

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200806

R150 Certificate of patent or registration of utility model

Ref document number: 6748307

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250