IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エルディーアールエイ テクノロジー インコーポレイテッドの特許一覧

特表2024-526371ソフトウェアコード内の制御結合及びデータ結合解析の検証方法及びシステム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-17
(54)【発明の名称】ソフトウェアコード内の制御結合及びデータ結合解析の検証方法及びシステム
(51)【国際特許分類】
   G06F 11/36 20060101AFI20240709BHJP
【FI】
G06F11/36 192
G06F11/36 176
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024519488
(86)(22)【出願日】2022-05-02
(85)【翻訳文提出日】2024-01-18
(86)【国際出願番号】 US2022027216
(87)【国際公開番号】W WO2022256103
(87)【国際公開日】2022-12-08
(31)【優先権主張番号】63/196,935
(32)【優先日】2021-06-04
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.HDMI
(71)【出願人】
【識別番号】523456755
【氏名又は名称】エルディーアールエイ テクノロジー インコーポレイテッド
【氏名又は名称原語表記】LDRA TECHNOLOGY, INC.
(74)【代理人】
【識別番号】100147485
【弁理士】
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【弁護士】
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100169823
【弁理士】
【氏名又は名称】吉澤 雄郎
(72)【発明者】
【氏名】イアン ジョン ヘンネル
(72)【発明者】
【氏名】ジェームス エイドリアン ハンソン
(72)【発明者】
【氏名】マイケル ピーター シースラー
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042HH10
5B042HH18
5B042HH30
5B042HH42
5B042HH43
5B042MA08
5B042MA10
5B042MA14
5B042MC12
(57)【要約】
ソフトウェアコードのテスト中に制御結合及びデータ結合解析を検証する方法及びシステムが、テストするソースファイルを選択するステップであってソースファイルがソースコードを有するステップと;ソースファイルのソースコードに対する静的解析を実行することによって、ソースファイル内の1つ以上の制御結合を識別するステップと;ソフトウェアコードの1つ以上のテスト実行動作を定義するステップであって、1つ以上のテスト実行動作は、識別した制御結合のうちの1つ以上を含み、1つ以上のテスト実行動作は動的解析を用いるステップと;定義した1つ以上のテスト実行動作を実行するステップと;動的解析に基づいてソースファイルの制御結合カバレッジを識別するステップと;識別したソースファイルの制御結合カバレッジに基づいて制御結合報告を生成するステップとを含む。
【特許請求の範囲】
【請求項1】
ソフトウェアコードのテスト中に制御結合解析を検証する方法であって、
テストするソースファイルを選択するステップであって、該ソースファイルがソースコードを有するステップと、
前記ソースファイルの前記ソースコードに対する静的解析を実行することによって、前記ソースファイル内の1つ以上の制御結合を識別するステップと、
前記ソースコードの1つ以上のテスト実行動作を定義するステップであって、該1つ以上のテスト実行動作は、前記識別した制御結合のうちの1つ以上を含み、該1つ以上のテスト実行動作は動的解析を用いるステップと、
前記1つ以上のテスト実行動作を実行するステップと、
前記動的解析に基づいて、前記ソースファイルの制御結合カバレッジを識別するステップと、
前記識別した前記ソースファイルの制御結合カバレッジに基づいて、制御結合報告を生成するステップと
を含む方法。
【請求項2】
前記1つ以上のテスト実行動作が、前記ソースファイル内の前記識別した制御結合の全部よりも少数の制御結合を含む、請求項1に記載の方法。
【請求項3】
前記制御結合報告が第1節を含み、該第1節は、前記ソースファイルの前記制御結合カバレッジを0%~100%の%比率として示し、かつ前記識別した制御結合の総数を示す、請求項1に記載の方法。
【請求項4】
前記制御結合報告が第2節を含み、該第2節は、前記識別した1つ以上の制御結合、前記識別した1つ以上の制御結合の、前記ソースファイルからの結合先の位置、及び前記識別した1つ以上の制御結合の各々についての、前記動的解析に基づく前記制御結合カバレッジをリストアップする、請求項1に記載の方法。
【請求項5】
前記制御結合報告が第3節を含み、該第3節は、前記ソースファイル内の1つ以上のコンポーネントの各々についての、前記識別した1つ以上の制御結合についての前記制御結合カバレッジをリストアップし、前記制御結合カバレッジは前記動的解析に基づく、請求項1に記載の方法。
【請求項6】
前記制御結合報告が第4節を含み、該第4節は第1テーブル及び第2テーブルを有し、前記第1テーブルは、前記識別した1つ以上の制御結合のうち、前記ソースファイルの前記1つ以上のコンポーネントの各々から生じる制御結合を示し、前記第2テーブルは、前記識別した1つ以上の制御結合のうち、当該制御結合の結合先が前記ソースファイルの前記1つ以上のコンポーネントのうちの1つである制御結合を示す、請求項5に記載の方法。
【請求項7】
前記第4節が、前記ソースファイルの前記1つ以上のコンポーネントの各々について反復される、請求項6に記載の方法。
【請求項8】
前記第1テーブル及び前記第2テーブルが、前記識別した1つ以上の制御結合間の呼出し元のポイントを識別する第1列と、前記識別した1つ以上の制御結合間の呼出し先のポイントを示す第2列と、前記呼出し先または前記呼出し元が結合先とするソースファイルを示す第3列と、前記ソースファイルにおける、前記識別した1つ以上の制御結合の各々が存在するソフトウェアコードラインを示す第4列と、前記動的解析に基づく、前記識別した1つ以上の制御結合の制御結合カバレッジを示す第5列とを含む、請求項6に記載の方法。
【請求項9】
前記第4節が、前記第1テーブル及び前記第2テーブルに関連する前記ソースファイルのソースコードを含む、請求項8に記載の方法。
【請求項10】
前記ソースファイルについてのファイル呼出し関係図を生成するステップであって、該ファイル呼出し関係図は、前記ソースファイルの1つ以上のコンポーネント間のローカル呼出しを示すステップを含む、請求項1に記載の方法。
【請求項11】
前記ソースファイルが、システム内の1つ以上のノードからの複数のソースファイルを含むシステムセットであり、
前記方法が、前記複数のソースファイルについてのシステム呼出し関係図を生成するステップを含み、該システム呼出し関係図は、前記複数のソースファイル内の1つ以上のコンポーネント間のローカル呼出し、及び前記システムセットの前記複数のソースファイルのうち、前記システムセットの前記複数のソースファイルの各々が当該ソースファイルへの制御結合を有するソースファイル間のソースファイル・コンポーネント間呼出しを示す、請求項1に記載の方法。
【請求項12】
前記複数のソースファイル内の前記1つ以上のコンポーネントのうちの1つのコンポーネントを選択するステップと、
前記システムの前記1つ以上のノードのうち、前記選択したコンポーネントについての制御結合に関与するノードを表示する呼出し関係図を生成するステップと
を含む、請求項11に記載の方法。
【請求項13】
ソフトウェアコードのテスト中にデータ結合解析を検証する方法であって、
テストするソースファイルを選択するステップであって、該ソースファイルが1つ以上のコンポーネントを有するステップと、
前記ソースファイルのソースコードに対する静的解析を実行することによって、前記ソースファイル内の1つ以上のデータ結合を識別するステップであって、前記データ結合は前記1つ以上のコンポーネントの変数及びパラメータであるステップと、
前記識別した1つ以上のデータ結合を含む前記1つ以上のコンポーネントの各々について1つ以上のテストを定義するステップであって、該1つ以上のテストは動的解析を用いるステップと、
前記1つ以上のテストを前記ソースファイルに対して実行するステップと、
前記動的解析に基づいて、前記ソースファイルのデータ結合変数使用カバレッジを識別するステップと、
前記識別したデータ結合変数使用カバレッジに基づいて、データ結合報告を生成するステップと
を含む方法。
【請求項14】
トレーサビリティ行列を生成するステップであって、該トレーサビリティ行列は、前記1つ以上のテストのどれを用いるかを、1つ以上の要件の各々について示すステップを含む、請求項13に記載の方法。
【請求項15】
前記データ結合が、前記ソースファイルの、他のコンポーネントに呼び出されるコンポーネント及び他のコンポーネントを呼び出すコンポーネントに関連するパラメータ結合から生じるデータ結合を含む、請求項13に記載の方法。
【請求項16】
前記1つ以上のテストの各々が個別に実行可能である、請求項13に記載の方法。
【請求項17】
前記データ結合報告が第1節を含み、該第1節は、前記ソースファイルにおけるデータ結合変数の使用率を0%~100%の%比率で示し、かつ前記識別したデータ結合の総数を示す、請求項13に記載の方法。
【請求項18】
前記データ結合報告が第2節を含み、該第2節は、前記識別した1つ以上のデータ結合のうちの1つ以上によってリンクされた前記ソースファイル内のコンポーネント、及び前記リンクされたコンポーネント内のデータ結合の数をリストアップする、請求項13に記載の方法。
【請求項19】
前記データ結合報告が第3節を含み、該第3節は、前記ソースファイル内の前記1つ以上のコンポーネントの各々についての、前記識別した1つ以上のデータ結合についてのデータ結合変数使用カバレッジ、及び前記ソースファイル内で用いられるグローバル変数の数をリストアップし、前記データ結合変数使用カバレッジは前記動的解析に基づく、請求項13に記載の方法。
【請求項20】
前記データ結合報告が第4節を含み、該第4節は第1テーブル及び第2テーブルを有し、前記第1テーブルは、前記識別した1つ以上のデータ結合のうち、前記ソースファイルの前記1つ以上のコンポーネントの各々から生じるデータ結合を示し、前記第2テーブルは、前記識別した1つ以上のデータ結合のうち、当該データ結合の結合先が前記ソースファイルの前記1つ以上のコンポーネントのうちの1つであるデータ結合を示し、前記第1テーブル及び前記第2テーブルは、前記1つ以上のテストのうちの1つについて生じる、請求項13に記載の方法。
【請求項21】
前記第4節が、前記ソースファイルの前記コンポーネントの各々について反復される、請求項20に記載の方法。
【請求項22】
前記第1テーブルが、前記識別した1つ以上のデータ結合のうちの1つのデータ結合の変数を識別する第1列と、前記ソースファイルのソフトウェアコードラインのうち前記変数が存在するソフトウェアコードラインを示す第2列と、前記変数の変数型を識別する第3列と、前記1つ以上のコンポーネントのパラメータのうち前記変数に結合されたパラメータを識別する第4列と、前記識別したパラメータを含む前記コンポーネントを識別する第5列と、前記パラメータが前記変数を呼び出す場所であるソースコードラインを識別する第6列と、前記ソースファイルのコンポーネントのうち前記コンポーネントを含むコンポーネントを識別する第7列とを含む、請求項20に記載の方法。
【請求項23】
前記第2テーブルが、前記識別した1つ以上のデータ結合のうちの1つのデータ結合の変数を識別する第1列と、前記変数の結合先のコンポーネントを識別する第2列と、前記ソースファイルのソースコードラインのうち前記変数が呼び出されるソースコードラインを識別する第3列と、前記コンポーネントを含む前記ソースファイルのコンポーネントのうち前記変数を呼び出すコンポーネントを識別する第4列と、前記変数の変数型を識別する第5列と、前記1つ以上のコンポーネントのパラメータのうち前記変数に結合されたパラメータを識別する第6列と、前記パラメータが存在するソースコードラインを識別する第7列とを含む、請求項20に記載の方法。
【請求項24】
前記第4節が第3テーブルを含み、該第3テーブルは、前記ソースファイルの変数を識別する第1列と、前記変数を含む前記ソースファイルを識別する第2列と、前記ソースファイルのコンポーネントのうち前記変数を含むコンポーネントを識別する第3列と、前記変数の変数型を識別する第4列と、前記変数の属性を識別する第5列と、前記ソースファイルのソースコードラインのうち前記変数が用いられるソースコードラインを識別する第6列とを含む、請求項20に記載の方法。
【請求項25】
前記データ結合報告が第5節及び第6節を含み、前記第5節は、前記ソースファイルの前記データ結合変数使用カバレッジの高レベルの概要を提供し、前記第6節は、前記ソースファイルの前記ソースコードのうち前記第1テーブル及び前記第2テーブルに関連する前記ソースコードを提供する、請求項20に記載の方法。
【請求項26】
ソフトウェアコードのテスト中に制御結合及びデータ結合解析を検証する方法であって、
テストするソースファイルを選択するステップであって、該ソースファイルがソースコードを有し、該ソースコードが1つ以上のコンポーネントを実現するステップと、
前記ソースファイルの前記ソースコードに対する静的解析を実行することによって、前記ソースファイル内の1つ以上の制御結合を識別するステップと、
前記ソフトウェアコードの1つ以上の制御結合テスト実行動作を定義するステップであって、該1つ以上の制御結合テスト実行動作は、前記識別した制御結合のうちの1つ以上を含み、前記1つ以上の制御結合テスト実行動作は動的解析を用いるステップと、
前記定義した1つ以上の制御結合テスト実行動作を実行するステップと、
前記動的解析に基づいて、前記ソースファイルの制御結合カバレッジを識別するステップと、
前記ソースファイルの前記ソースコードに対する静的解析を実行することによって、前記ソースファイル内の1つ以上のデータ結合を識別するステップであって、前記データ結合は前記1つ以上のコンポーネントのうちの1つのコンポーネントの変数及びパラメータであるステップと、
前記識別したデータ結合のうちの1つ以上を含む前記1つ以上のコンポーネントの各々について、1つ以上のデータ結合テストを定義するステップであって、該1つ以上のデータ結合テストは動的解析を用いるステップと、
前記1つ以上のデータ結合テストを前記ソースファイルに対して実行するステップと、
前記動的解析に基づいて、前記ソースファイルのデータ結合変数使用カバレッジを識別するステップと、
前記識別した制御結合カバレッジ及び前記識別したデータ結合変数使用カバレッジに基づいて報告を生成するステップと
を含む方法。
【請求項27】
前記1つ以上の制御結合テスト実行動作が、前記ソースファイル内の前記識別した制御結合の全部よりも少数の制御結合を含む、請求項26に記載の方法。
【請求項28】
前記データ結合が、前記ソースファイル内の呼出し先のコンポーネント及び呼出し元のコンポーネントに関連するパラメータ結合から生じるデータ結合を含む、請求項26に記載の方法。
【請求項29】
前記1つ以上のデータ結合テストの各々を個別に実行する、請求項26に記載の方法。
【請求項30】
前記報告が第1節及び第2節を含み、
前記第1節は、前記ソースファイルの前記制御結合カバレッジを0%~100%の%比率として示し、かつ前記識別した制御結合の総数を示し、
前記第2節は、前記ソースファイルの前記データ結合変数使用カバレッジを0%~100%の%比率として示し、かつ前記識別したデータ結合の総数を示す、
請求項26に記載の方法。
【請求項31】
前記報告が第3節及び第4節を含み、
前記第3節は、前記識別した1つ以上の制御結合、前記識別した1つ以上の制御結合の、前記ソースファイルからの結合先の位置、及び前記識別した1つ以上の制御結合の各々についての前記動的解析に基づく制御結合カバレッジをリストアップし、
前記第4節は、前記ソースファイルの前記コンポーネントのうち、前記識別した1つ以上のデータ結合のうちの1つ以上によってリンクされたコンポーネント、及び前記リンクされたコンポーネント内のデータ結合の数をリストアップする、
請求項26に記載の方法。
【請求項32】
前記報告が第4節及び第5節を含み、
前記第4節は、前記ソースファイル内の前記1つ以上のコンポーネントの各々についての、前記識別した1つ以上の制御結合についての前記制御結合カバレッジをリストアップし、前記制御結合カバレッジは前記動的解析に基づき、
前記第5節は、前記ソースファイル内の前記1つ以上のコンポーネントの各々についての、前記識別した1つ以上のデータ結合についてのデータ結合変数使用カバレッジ、及び使用されるグローバル変数の数をリストアップし、前記データ結合変数使用カバレッジは前記動的解析に基づく、
請求項26に記載の方法。
【請求項33】
前記報告が第6節を含み、該第6節は第1テーブル及び第2テーブルを有し、前記第1テーブルは、前記識別した1つ以上の制御結合のうち、前記ソースファイルの前記1つ以上のコンポーネントの各々から生じる制御結合を示し、前記第2テーブルは、前記識別した1つ以上の制御結合のうち、当該制御結合の結合先が前記ソースファイルの前記1つ以上のコンポーネントのうちの1つである制御結合を示す、請求項26に記載の方法。
【請求項34】
前記第6節が、前記定義した1つ以上の制御結合テスト実行動作の各々について反復される、請求項33に記載の方法。
【請求項35】
前記第1テーブル及び前記第2テーブルが、前記識別した1つ以上の制御結合間の呼出し元のポイントを識別する第1列と、前記識別した1つ以上の制御結合間の呼出し先のポイントを識別する第2列と、前記呼出し元または前記呼出し先が結合先とするソースファイルを示す第3列と、前記ソースファイルにおける、前記識別した1つ以上の制御結合の各々が存在するソフトウェアコードラインを示す第4列と、前記動的解析に基づく、前記識別した1つ以上の制御結合の制御結合カバレッジを示す第5列とを含む、請求項33に記載の方法。
【請求項36】
前記第4節が、前記第1テーブル及び前記第2テーブルに関連する前記ソースファイルのソースコードを含む、請求項35に記載の方法。
【請求項37】
前記報告が第7節を含み、該第7節は第3テーブル及び第4テーブルを有し、前記第3テーブルは、前記識別した1つ以上のデータ結合のうち、前記ソースファイルの前記1つ以上のコンポーネントの各々から生じるデータ結合を示し、前記第4テーブルは、前記識別した1つ以上のデータ結合のうち、当該データ結合の結合先が前記ソースファイルの前記1つ以上のコンポーネントのうちの1つのコンポーネントであるデータ結合を示し、前記第3テーブル及び前記第4テーブルが前記1つ以上のデータ結合テストのうちの1つの結果である、請求項26に記載の方法。
【請求項38】
前記第7節が、前記実行した1つ以上のデータ結合テストの各々について反復される、請求項37に記載の方法。
【請求項39】
前記第3テーブルが、前記識別した1つ以上のデータ結合のうちの1つのデータ結合の変数を識別する第1列と、前記ソースファイルのソフトウェアコードラインのうち前記変数が存在するソフトウェアコードラインを示す第2列と、前記変数の変数型を識別する第3列と、前記1つ以上のコンポーネントのパラメータのうち前記変数に結合されたパラメータを識別する第4列と、前記識別したパラメータを含む前記コンポーネントを識別する第5列と、前記パラメータが前記変数を呼び出すソースコードラインを識別する第6列と、前記ソースファイルのコンポーネントのうち前記コンポーネントを含むコンポーネントを識別する第7列とを含む、請求項37に記載の方法。
【請求項40】
前記第4テーブルが、前記識別した1つ以上のデータ結合のうちの1つのデータ結合の変数を識別する第1列と、前記変数の結合先のコンポーネントを識別する第2列と、前記ソースファイルのソースコードラインのうち前記変数が呼び出されるソースコードラインを識別する第3列と、前記ソースファイルのコンポーネントのうち前記変数を呼び出すコンポーネントを含むコンポーネントを識別する第4列と、前記変数の変数型を識別する第5列と、前記1つ以上のコンポーネントのパラメータのうち前記変数に結合されたパラメータを識別する第6列と、前記パラメータが存在するソースコードラインを識別する第7列とを含む、請求項37に記載の方法。
【請求項41】
前記第7節が第4テーブルを含み、該第4テーブルは、前記ソースファイルの変数を識別する第1列と、前記変数を含む前記ソースファイルを識別する第2列と、前記ソースファイル内のコンポーネントのうち前記変数を含むコンポーネントを識別する第3列と、前記変数の変数型を識別する第4列と、前記変数の属性を識別する第5列と、前記ソースファイルのソースコードラインのうち当該変数を使用するソースコードラインを識別する第6列とを含む、請求項37に記載の方法。
【請求項42】
前記報告が第8節及び第9節を含み、前記第8節は、前記ソースファイルの前記データ結合変数使用カバレッジの高レベルの概要を提供し、前記第9節は、前記ソースファイルの前記ソースコードのうち前記第1テーブル及び前記第2テーブルに関連する前記ソースコードを提供する、請求項37に記載の方法。
【請求項43】
ソフトウェアコードのテスト中に制御結合解析を識別するシステムであって、
1つ以上のプロセッサと、1つ以上のコンピュータ可読のメモリと、1つ以上のコンピュータ可読の有形な記憶装置と、前記1つ以上の記憶装置のうちの少なくとも1つに記憶され、前記1つ以上のプロセッサのうちの少なくとも1つによって、前記1つ以上のメモリのうちの少なくとも1つを介して実行される命令とを含むシステムにおいて、
前記命令は、
テストするソースファイルを選択する命令であって、該ソースファイルはソースコードを有する命令と、
前記ソースファイルの前記ソースコードに対する静的解析を実行することによって、前記ソースファイル内の1つ以上の制御結合を識別する命令と、
前記ソフトウェアコードの1つ以上のテスト実行動作を定義する命令であって、該1つ以上のテスト実行動作は、前記識別した制御結合のうちの1つ以上を含み、前記1つ以上のテスト実行動作は動的解析を用いる命令と、
前記定義した1つ以上のテスト実行動作を実行する命令と、
前記動的解析に基づいて、前記ソースファイルの制御結合カバレッジを識別する命令と、
前記ソースファイルの前記識別した制御結合カバレッジに基づいて、制御結合報告を生成する命令と
を含むシステム。
【請求項44】
前記1つ以上のテスト実行動作が、前記ソースファイル内の前記識別した制御結合の全部よりも少数の制御結合を含む、請求項43に記載のシステム。
【請求項45】
前記制御結合報告が第1節を含み、該第1節は、前記ソースファイルの前記制御結合カバレッジを0%~100%の%比率として示し、かつ前記識別した制御結合の総数を示す、請求項43に記載のシステム。
【請求項46】
前記制御結合報告が第2節を含み、該第2節は、前記識別した1つ以上の制御結合、前記識別した1つ以上の制御結合の、前記ソースファイルからの結合先、及び前記識別した1つ以上の制御結合の各々についての、前記動的解析に基づく前記制御結合カバレッジをリストアップする、請求項43に記載のシステム。
【請求項47】
前記制御結合報告が第3節を含み、該第3節は、前記ソースファイル内の1つ以上のコンポーネントの各々についての、前記識別した1つ以上の制御結合についての前記制御結合カバレッジをリストアップし、前記制御結合カバレッジは前記動的解析に基づく、請求項43に記載のシステム。
【請求項48】
前記制御結合報告が第4節を含み、該第4節は第1テーブル及び第2テーブルを有し、前記第1テーブルは、前記識別した1つ以上の制御結合のうち、前記ソースファイルの前記1つ以上のコンポーネントの各々から生じる制御結合を示し、前記第2テーブルは、前記識別した1つ以上の制御結合のうち、当該制御結合の結合先が前記ソースファイルの前記1つ以上のコンポーネントのうちの1つである制御結合を示す、請求項47に記載のシステム。
【請求項49】
前記第4節が、前記ソースファイルの前記1つ以上のコンポーネントの各々について反復される、請求項48に記載のシステム。
【請求項50】
前記第1テーブル及び前記第2テーブルが、前記識別した1つ以上の制御結合間の呼出し元のポイントを識別する第1列と、前記識別した1つ以上の制御結合間の呼出し先のポイントを示す第2列と、前記呼出し先または前記呼出し元が結合先とするソースファイルを示す第3列と、前記ソースファイルにおける、前記識別した1つ以上の制御結合の各々が存在するソフトウェアコードラインを示す第4列と、前記動的解析に基づく、前記識別した1つ以上の制御結合の制御結合カバレッジを示す第5列とを含む、請求項48に記載のシステム。
【請求項51】
前記第4節が、前記第1テーブル及び前記第2テーブルに関連する前記ソースファイルのソースコードを含む、請求項48に記載のシステム。
【請求項52】
前記ソースファイルについてのファイル呼出し関係図を生成する命令を含み、該ファイル呼出し関係図は、前記ソースファイルの1つ以上のコンポーネント間のローカル呼出しを示す、請求項43に記載のシステム。
【請求項53】
前記ソースファイルが、システム内の1つ以上のノードからの複数のソースファイルを含むシステムセットであり、
前記命令が、前記複数のソースファイルについてのシステム呼出し関係図を生成する命令を含み、該システム呼出し関係図は、前記複数のソースファイル内の1つ以上のコンポーネント間のローカル呼出し、及び前記システムセットの前記複数のソースファイルのうち、前記システムセットの前記複数のソースファイルの各々が当該ソースファイルへの制御結合を有するソースファイル間のソースファイル・コンポーネント間呼出しを示す、請求項43に記載のシステム。
【請求項54】
前記命令が、
前記複数のソースファイル内の前記1つ以上のコンポーネントのうちの1つのコンポーネントを選択する命令と、
前記システムの前記1つ以上のノードのうち、前記選択したコンポーネントについての制御結合に関与するノードを表示する呼出し関係図を生成する命令と
を含む、請求項53に記載のシステム。
【請求項55】
ソフトウェアコードのテスト中にデータ結合解析を検証するシステムであって、
1つ以上のプロセッサと、1つ以上のコンピュータ可読のメモリと、1つ以上のコンピュータ可読の有形な記憶装置と、前記1つ以上の記憶装置のうちの少なくとも1つに記憶され、前記1つ以上のプロセッサのうちの少なくとも1つによって、前記1つ以上のメモリのうちの少なくとも1つを介して実行される命令とを含むシステムにおいて、
前記命令は、
テストするソースファイルを選択する命令であって、該ソースファイルが1つ以上のコンポーネントを有する命令と、
前記ソースファイルのソースコードに対する静的解析を実行することによって、前記ソースファイル内の1つ以上のデータ結合を識別する命令であって、前記データ結合は前記1つ以上のコンポーネントの変数及びパラメータである命令と、
前記識別した1つ以上のデータ結合を含む前記1つ以上のコンポーネントの各々について1つ以上のテストを定義する命令であって、該1つ以上のテストは動的解析を用いる命令と、
前記1つ以上のテストを前記ソースファイルに対して実行する命令と、
前記動的解析に基づいて、前記ソースファイルのデータ結合変数使用カバレッジを識別する命令と、
前記識別したデータ結合変数使用カバレッジに基づいて、データ結合報告を生成する命令と
を含むシステム。
【請求項56】
前記命令が、トレーサビリティ行列を生成する命令を含み、該トレーサビリティ行列は、前記1つ以上のテストのどれを用いるかを、1つ以上の要件の各々について示す、請求項55に記載のシステム。
【請求項57】
前記データ結合が、前記ソースファイルの、他のコンポーネントに呼び出されるコンポーネント及び他のコンポーネントを呼び出すコンポーネントに関連するパラメータ結合から生じるデータ結合を含む、請求項55に記載のシステム。
【請求項58】
前記1つ以上のテストの各々が個別に実行可能である、請求項55に記載のシステム。
【請求項59】
前記データ結合報告が第1節を含み、該第1節は、前記ソースファイルにおける前記データ結合変数使用カバレッジを0%~100%の%比率で示し、かつ前記識別したデータ結合の総数を示す、請求項55に記載のシステム。
【請求項60】
前記データ結合報告が第2節を含み、該第2節は、前記識別した1つ以上のデータ結合のうちの1つ以上によってリンクされた前記ソースファイル内のコンポーネント、及び前記リンクされたコンポーネント内のデータ結合の数をリストアップする、請求項55に記載のシステム。
【請求項61】
前記データ結合報告が第3節を含み、該第3節は、前記ソースファイル内の前記1つ以上のコンポーネントの各々についての、前記識別した1つ以上のデータ結合についてのデータ結合変数使用カバレッジ、及び前記ソースファイル内で用いられるグローバル変数の数をリストアップし、前記データ結合変数使用カバレッジは前記動的解析に基づく、請求項55に記載のシステム。
【請求項62】
前記データ結合報告が第4節を含み、該第4節は第1テーブル及び第2テーブルを有し、前記第1テーブルは、前記識別した1つ以上のデータ結合のうち、前記ソースファイルの前記1つ以上のコンポーネントの各々から生じるデータ結合をし、前記第2テーブルは、前記識別した1つ以上のデータ結合のうち、当該データ結合の結合先が前記ソースファイルの前記1つ以上のコンポーネントのうちの1つであるデータ結合を示し、前記第1テーブル及び前記第2テーブルは、前記1つ以上のテストのうちの1つについて生じる、請求項55に記載のシステム。
【請求項63】
前記第4節が、前記ソースファイルの前記コンポーネントの各々について反復される、請求項62に記載のシステム。
【請求項64】
前記第1テーブルが、前記識別した1つ以上のデータ結合のうちの1つのデータ結合の変数を識別する第1列と、前記ソースファイルのソフトウェアコードラインのうち前記変数が存在するソフトウェアコードラインを示す第2列と、前記変数の変数型を識別する第3列と、前記1つ以上のコンポーネントのパラメータのうち前記変数に結合されたパラメータを識別する第4列と、前記識別したパラメータを含む前記コンポーネントを識別する第5列と、前記パラメータが前記変数を呼び出す場所であるソースコードラインを識別する第6列と、前記ソースファイルのコンポーネントのうち前記コンポーネントを含むコンポーネントを識別する第7列とを含む、請求項62に記載のシステム。
【請求項65】
前記第2テーブルが、前記識別した1つ以上のデータ結合のうちの1つのデータ結合の変数を識別する第1列と、前記変数の結合先のコンポーネントを識別する第2列と、前記ソースファイルのソースコードラインのうち前記変数が呼び出されるソースコードラインを識別する第3列と、前記コンポーネントを含む前記ソースファイルのコンポーネントのうち前記変数を呼び出すコンポーネントを識別する第4列と、前記変数の変数型を識別する第5列と、前記1つ以上のコンポーネントのパラメータのうち前記変数に結合されたパラメータを識別する第6列と、前記パラメータが存在するソースコードラインを識別する第7列とを含む、請求項62に記載のシステム。
【請求項66】
前記第4節が第3テーブルを含み、該第3テーブルは、前記ソースファイルの変数を識別する第1列と、前記変数を含む前記ソースファイルを識別する第2列と、前記ソースファイルのコンポーネントのうち前記変数を含むコンポーネントを識別する第3列と、前記変数の変数型を識別する第4列と、前記変数の属性を識別する第5列と、前記ソースファイルのソースコードラインのうち前記変数が用いられるソースコードラインを識別する第6列とを含む、請求項62に記載のシステム。
【請求項67】
前記データ結合報告が第5節及び第6節を含み、前記第5節は、前記ソースファイルの前記データ結合変数使用カバレッジの高レベルの概要を提供し、前記第6節は、前記ソースファイルの前記ソースコードのうち前記第1テーブル及び前記第2テーブルに関連する前記ソースコードを提供する、請求項62に記載のシステム。
【請求項68】
ソフトウェアコードのテスト中に制御結合及びデータ結合解析を識別するシステムであって、
1つ以上のプロセッサと、1つ以上のコンピュータ可読のメモリと、1つ以上のコンピュータ可読の有形な記憶装置と、前記1つ以上の記憶装置のうちの少なくとも1つに記憶され、前記1つ以上のプロセッサのうちの少なくとも1つによって、前記1つ以上のメモリのうちの少なくとも1つを介して実行される命令とを含むシステムにおいて、
前記命令は、
テストするソースファイルを選択する命令であって、該ソースファイルがソースコードを有し、該ソースコードが1つ以上のコンポーネントを実現する命令と、
前記ソースファイルの前記ソースコードに対する静的解析を実行することによって、前記ソースファイル内の1つ以上の制御結合を識別する命令と、
前記ソフトウェアコードの1つ以上の制御結合テスト実行動作を定義する命令であって、該1つ以上の制御結合テスト実行動作は、前記識別した制御結合のうちの1つ以上を含み、前記1つ以上の制御結合テスト実行動作は動的解析を用いる命令と、
前記定義した1つ以上の制御結合テスト実行動作を実行する命令と、
前記動的解析に基づいて、前記ソースファイルの制御結合カバレッジを識別する命令と、
前記ソースファイルの前記ソースコードに対する静的解析を実行することによって、前記ソースファイル内の1つ以上のデータ結合を識別する命令であって、前記データ結合は前記1つ以上のコンポーネントのうちの1つのコンポーネントの変数及びパラメータである命令と、
前記識別したデータ結合のうちの1つ以上を含む前記1つ以上のコンポーネントの各々について、1つ以上のデータ結合テストを定義する命令であって、該1つ以上のデータ結合テストは動的解析を用いる命令と、
前記1つ以上のデータ結合テストを前記ソースファイルに対して実行する命令と、
前記動的解析に基づいて、前記ソースファイルのデータ結合変数使用カバレッジを識別する命令と、
前記識別した制御結合カバレッジ及び前記識別したデータ結合変数使用カバレッジに基づいて報告を生成する命令と
を含むシステム。
【請求項69】
前記1つ以上の制御結合テスト実行動作が、前記ソースファイル内の前記識別した制御結合の全部よりも少数の制御結合を含む、請求項68に記載のシステム。
【請求項70】
前記データ結合が、前記ソースファイル内の呼出し先のコンポーネント及び呼出し元のコンポーネントに関連するパラメータ結合から生じるデータ結合を含む、請求項68に記載のシステム。
【請求項71】
前記1つ以上のデータ結合テストの各々を個別に実行する、請求項68に記載のシステム。
【請求項72】
前記報告が第1節及び第2節を含み、
前記第1節は、前記ソースファイルの前記制御結合カバレッジを0%~100%の%比率として示し、かつ前記識別した制御結合の総数を示し、
前記第2節は、前記ソースファイルの前記データ結合変数使用カバレッジを0%~100%の%比率として示し、かつ前記識別したデータ結合の総数を示す、
請求項68に記載のシステム。
【請求項73】
前記報告が第3節及び第4節を含み、
前記第3節は、前記識別した1つ以上の制御結合、前記識別した1つ以上の制御結合の、前記ソースファイルからの結合先の位置、及び前記識別した1つ以上の制御結合の各々についての前記動的解析に基づく制御結合カバレッジをリストアップし、
前記第4節は、前記ソースファイルの前記コンポーネントのうち、前記識別した1つ以上のデータ結合のうちの1つ以上によってリンクされたコンポーネント、及び前記リンクされたコンポーネント内のデータ結合の数をリストアップする、
請求項68に記載のシステム。
【請求項74】
前記報告が第4節及び第5節を含み、
前記第4節は、前記ソースファイル内の前記1つ以上のコンポーネントの各々についての、前記識別した1つ以上の制御結合についての前記制御結合カバレッジをリストアップし、前記制御結合カバレッジは前記動的解析に基づき、
前記第5節は、前記ソースファイル内の前記1つ以上のコンポーネントの各々についての、前記識別した1つ以上のデータ結合についてのデータ結合変数使用カバレッジ、及び使用されるグローバル変数の数をリストアップし、前記データ結合変数使用カバレッジは前記動的解析に基づく、
請求項68に記載のシステム。
【請求項75】
前記報告が第6節を含み、該第6節は第1テーブル及び第2テーブルを有し、前記第1テーブルは、前記識別した1つ以上の制御結合のうち、前記ソースファイルの前記1つ以上のコンポーネントの各々から生じる制御結合を示し、前記第2テーブルは、前記識別した1つ以上の制御結合のうち、当該制御結合の結合先が前記ソースファイルの前記1つ以上のコンポーネントのうちの1つである制御結合を示す、請求項68に記載のシステム。
【請求項76】
前記第6節が、前記定義した1つ以上の制御結合テスト実行動作の各々について反復される、請求項75に記載のシステム。
【請求項77】
前記第1テーブル及び前記第2テーブルが、前記識別した1つ以上の制御結合間の呼出し元のポイントを識別する第1列と、前記識別した1つ以上の制御結合間の呼出し先のポイントを識別する第2列と、前記呼出し元または前記呼出し先が結合先とするソースファイルを示す第3列と、前記ソースファイルにおける、前記識別した1つ以上の制御結合の各々が存在するソフトウェアコードラインを示す第4列と、前記動的解析に基づく、前記識別した1つ以上の制御結合の制御結合カバレッジを示す第5列とを含む、請求項75に記載のシステム。
【請求項78】
前記第4節が、前記第1テーブル及び前記第2テーブルに関連する前記ソースファイルのソースコードを含む、請求項77に記載のシステム。
【請求項79】
前記報告が第7節を含み、該第7節は第3テーブル及び第4テーブルを有し、前記第3テーブルは、前記識別した1つ以上のデータ結合のうち、前記ソースファイルの前記1つ以上のコンポーネントの各々から生じるデータ結合を示し、前記第4テーブルは、前記識別した1つ以上のデータ結合のうち、当該データ結合の結合先が前記ソースファイルの前記1つ以上のコンポーネントのうちの1つのコンポーネントであるデータ結合を示し、前記第3テーブル及び前記第4テーブルが前記1つ以上のデータ結合テストのうちの1つの結果である、請求項78に記載のシステム。
【請求項80】
前記第7節が、前記実行した1つ以上のデータ結合テストの各々について反復される、請求項79に記載のシステム。
【請求項81】
前記第3テーブルが、前記識別した1つ以上のデータ結合のうちの1つのデータ結合の変数を識別する第1列と、前記ソースファイルのソフトウェアコードラインのうち前記変数が存在するソフトウェアコードラインを示す第2列と、前記変数の変数型を識別する第3列と、前記1つ以上のコンポーネントのパラメータのうち前記変数に結合されたパラメータを識別する第4列と、前記識別したパラメータを含む前記コンポーネントを識別する第5列と、前記パラメータが前記変数を呼び出すソースコードラインを識別する第6列と、前記ソースファイルのコンポーネントのうち前記コンポーネントを含むコンポーネントを識別する第7列とを含む、請求項79に記載のシステム。
【請求項82】
前記第4テーブルが、前記識別した1つ以上のデータ結合のうちの1つのデータ結合の変数を識別する第1列と、前記変数の結合先のコンポーネントを識別する第2列と、前記ソースファイルのソースコードラインのうち前記変数が呼び出されるソースコードラインを識別する第3列と、前記ソースファイルのコンポーネントのうち前記変数を呼び出すコンポーネントを含むコンポーネントを識別する第4列と、前記変数の変数型を識別する第5列と、前記1つ以上のコンポーネントのパラメータのうち前記変数に結合されたパラメータを識別する第6列と、前記パラメータが存在するソースコードラインを識別する第7列とを含む、請求項79に記載のシステム。
【請求項83】
前記第7節が第4テーブルを含み、該第4テーブルは、前記ソースファイルの変数を識別する第1列と、前記変数を含む前記ソースファイルを識別する第2列と、前記ソースファイル内のコンポーネントのうち前記変数を含むコンポーネントを識別する第3列と、前記変数の変数型を識別する第4列と、前記変数の属性を識別する第5列と、前記ソースファイルのソースコードラインのうち当該変数を使用するソースコードラインを識別する第6列とを含む、請求項79に記載のシステム。
【請求項84】
前記報告が第8節及び第9節を含み、前記第8節は、前記ソースファイルの前記データ結合変数使用カバレッジの高レベルの概要を提供し、前記第9節は、前記ソースファイルの前記ソースコードのうち前記第1テーブル及び前記第2テーブルに関連する前記ソースコードを提供する、請求項79に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
分野
本発明は、ソフトウェアコード内の制御結合及びデータ結合解析の検証に関するものである。より具体的には、本発明は、ソフトウェアのテスト中に、静的解析及び動的解析を用いてソフトウェアコード内の制御結合及びデータ結合解析を検証することに関するものである。
【背景技術】
【0002】
背景
ソフトウェアを利用するか、さもなければソフトウェアに依存する産業では、これらの産業の多数が、これらの産業にとって最良の慣行に従ってソフトウェアが動作することを保証するための、当該ソフトウェアについての1つ以上の要件(要求事項)を規定する規格及び/または方針を有する。例えば、産業ソフトウェアの規格または政府の規制は、これらに限定されないが要件ベースのテスト手順または要件ベースのトレーサビリティのようなソフトウェアテストの使用を推奨することがある。上記の規格は、例えば構造カバレッジ(網羅率)の使用によるこうしたソフトウェア・テストプロセスの完全性を検証する必要性も識別する。こうしたテストの目的は、テスト中のソフトウェアのソースコード内のあらゆる構造カバレッジ不全を識別することにある。2つのこうした構造カバレッジ不全は、ソフトウェアコード内の制御結合及びデータ結合中に発生し得るし、文(Statement:ステートメント)、判定(Decision)、または改良条件判定カバレッジ(MC/DC:Modified Condition/Decision Coverage)のような既知のカバレッジ技術を用いて適切に検出することができない。従って、ソフトウェアテストがソフトウェアコード内の制御結合及びデータ結合解析を適切にチェックすることを検証する技術の必要性が存在する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許第8949770号明細書
【非特許文献】
【0004】
【非特許文献1】”LDRA Tool Qualification Packs”
【発明の概要】
【課題を解決するための手段】
【0005】
ソフトウェアコードのテスト中に制御結合解析を検証する方法を開示する。この方法は、テストするソースファイルを選択するステップであって、ソースファイルがソースコードを有するステップと;ソースファイルのソースコードに対する静的解析を実行することによって、ソースファイル内の1つ以上の制御結合を識別するステップと;ソフトウェアコードの1つ以上のテスト実行動作を定義するステップであって、1つ以上のテスト実行動作は、識別した制御結合のうちの1つ以上を含み、1つ以上のテスト実行動作は動的解析を用いるステップと;定義した1つ以上のテスト実行動作を実行するステップと;動的解析に基づいてソースファイルの制御結合カバレッジを識別するステップと;ソースファイルの識別した制御結合カバレッジに基づいて制御結合報告を生成するステップとを含む。
【0006】
ソフトウェアコードのテスト中にデータ結合解析を検証する方法を開示する。この方法は、テストするソースファイルを選択するステップであって、ソースファイルが1つ以上のコンポーネントを有するステップと;ソースファイルのソースコードに対する静的解析を実行することによって、ソースファイル内の1つ以上のデータ結合を識別するステップであって、データ結合は1つ以上のコンポーネントの変数及びパラメータであるステップと;識別したデータ結合のうちの1つ以上を含む1つ以上のコンポーネントの各々について、1つ以上のテストを定義するステップであって、1つ以上のテストは動的解析を用いるステップと;1つ以上のテストをソースファイルに対して実行するステップと;動的解析に基づいてソースファイルのデータ結合変数使用カバレッジを識別するステップと;識別したデータ結合カバレッジに基づいてデータ結合報告を生成するステップとを含む。
【0007】
ソフトウェアコードのテスト中に制御結合及びデータ結合の解析を検証する方法を開示する。この方法は、テストするソースファイルを選択するステップであって、ソースファイルがソースコードを有し、ソースコードが1つ以上のコンポーネントを実現するステップと;ソースファイルのソースコードに対する静的解析を実行することによって、ソースファイル内の1つ以上の制御結合を識別するステップと;1つ以上の制御結合テスト実行動作を定義するステップであって、1つ以上の制御結合テスト実行動作は、識別した制御結合のうちの1つ以上を含み、1つ以上の制御結合テスト実行動作は動的解析を用いるステップと;動的解析に基づいてソースファイルの制御結合カバレッジを識別するステップと;ソースファイルのソースコードに対する静的解析を実行することによって、ソースファイル内の1つ以上のデータ結合を識別するステップであって、データ結合は上記1つ以上のコンポーネントの変数及びパラメータであるステップと;識別したデータ結合のうちの1つ以上を含む1つ以上のコンポーネントの各々について、1つ以上のデータ結合テストを定義するステップであって、1つ以上のデータ結合テストは動的解析を用いるステップと;1つ以上のデータ結合テストをソースファイルに対して実行するステップと;動的解析に基づいてソースファイルのデータ結合変数使用カバレッジを識別するステップと;識別した制御結合カバレッジ及び識別したソースファイルのデータ結合変数使用カバレッジに基づいて、報告を生成するステップとを含む。
【0008】
ソフトウェアコードのテスト中に制御結合解析を検証するシステムを開示する。このシステムは、1つ以上のプロセッサと、1つ以上のコンピュータ可読のメモリと、1つ以上のコンピュータ可読の有形な記憶装置と、1つ以上の記憶装置のうちの少なくとも1つに記憶され、1つ以上のプロセッサのうちの少なくとも1つによって、1つ以上のメモリのうちの少なくとも1つを介して実行される命令とを含む。これらの命令は、テストするソースファイルを選択する命令であって、ソースファイルがソースコードを有する命令と;ソースファイルのソースコードに対する静的解析を実行することによって、ソースファイル内の1つ以上の制御結合を識別する命令と;ソフトウェアコードの1つ以上のテスト実行動作を定義する命令であって、1つ以上のテスト実行動作は、識別した制御結合のうちの1つ以上を含み、1つ以上のテスト実行動作は動的解析を用いる命令と;1つ以上のテスト実行動作を実行する命令と;動的解析に基づいてソースファイルの制御結合カバレッジを識別する命令と;ソースファイルの識別した制御結合カバレッジに基づいて制御結合報告を生成する命令とを含む。
【0009】
ソフトウェアコードのテスト中にデータ結合解析を検証するシステムを開示する。このシステムは、1つ以上のプロセッサと、1つ以上のコンピュータ可読のメモリと、1つ以上のコンピュータ可読の有形な記憶装置と、1つ以上の記憶装置のうちの少なくとも1つに記憶され、1つ以上のプロセッサのうちの少なくとも1つによって、1つ以上のメモリのうちの少なくとも1つを介して実行される命令とを含む。これらの命令は、テストするソースファイルを選択する命令であって、ソースファイルが1つ以上のコンポーネントを有する命令と;ソースファイルのソースコードに対する静的解析を実行することによって、ソースファイル内の1つ以上のデータ結合を識別する命令であって、データ結合は1つ以上のコンポーネントの変数及びパラメータである命令と;識別したデータ結合のうちの1つ以上を含む1つ以上のコンポーネントの各々について、1つ以上のテストを定義する命令であって、1つ以上のテストは動的解析を用いる命令と;1つ以上のテストをソースファイルに対して実行する命令と;動的解析に基づいてソースファイルのデータ結合変数使用カバレッジを識別する命令と;識別したデータ結合変数使用カバレッジに基づいてデータ結合報告を生成する命令とを含む。
【0010】
ソフトウェアコードのテスト中に制御結合及びデータ結合解析を検証するシステムを開示する。このシステムは、1つ以上のプロセッサと、1つ以上のコンピュータ可読のメモリと、1つ以上のコンピュータ可読の有形な記憶装置と、1つ以上の記憶装置のうちの少なくとも1つに記憶され、1つ以上のプロセッサのうちの少なくとも1つによって、1つ以上のメモリのうちの少なくとも1つを介して実行される命令とを含む。これらの命令は、テストするソースファイルを選択する命令であって、ソースファイルがソースコードを有し、ソースコードが1つ以上のコンポーネントを実現するする命令と;ソースファイルのソースコードに対する静的解析を実行することによって、ソースファイル内の1つ以上の制御結合を識別する命令と;1つ以上の制御結合テスト実行動作を定義する命令であって、1つ以上の制御結合テスト実行動作は、識別した制御結合のうちの1つ以上を含み、1つ以上の制御結合テスト実行動作は動的解析を用いる命令と;定義した1つ以上の制御結合テスト実行動作を実行する命令と;動的解析に基づいてソースファイルの制御結合カバレッジを識別する命令と;ソースファイルのソースコードに対する静的解析を実行することによって、ソースファイル内の1つ以上のデータ結合を識別する命令であって、データ結合は上記1つ以上のコンポーネントの変数及びパラメータである命令と;識別したデータ結合のうちの1つ以上を含む1つ以上のコンポーネントの各々について、1つ以上のデータ結合テストを定義する命令であって、1つ以上のデータ結合テストは動的解析を用いる命令と;1つ以上のデータ結合テストをソースファイルに対して実行する命令と;動的解析に基づいてソースファイルのデータ結合変数使用カバレッジを識別する命令と;識別した制御結合カバレッジ、及び識別したソースファイルのデータ結合変数使用カバレッジに基づいて、報告を生成する命令とを含む。
【0011】
本発明の範囲は、以下の好適な実施形態の詳細な説明を添付した図面と併せて読むと、これらの詳細な説明より最良に理解される。図面中には以下の図を含む。
【図面の簡単な説明】
【0012】
図1図1aは、好適な実施形態による制御結合の一例を示すブロック図であり、図1bは、好適な実施形態によるデータ結合の一例を示すブロック図である。
図2図2aは、好適な実施形態による、ソフトウェアコードのテスト中に制御結合及びデータ結合解析を検証するための高レベルのシステム・アーキテクチャを示すブロック図であり、図2bは、好適な実施形態による、図2aのソフトウェアコード要件検証のモジュールの例を示すブロック図である。
図3】好適な実施形態による、ソフトウェアコードのテスト中に制御結合解析を検証する好適な方法を示すフローチャートである。
図4図4a~4bは、好適な実施形態による制御結合報告の一例を示すブロック図であり、図4cは、好適な実施形態によるコールグラフを示すブロック図である。
図5】好適な実施形態による、ソフトウェアコードのテスト中にデータ結合解析を検証する好適な方法を示すフローチャートである。
図6】好適な実施形態による、要件トレーサビリティ行列の一例を示すブロック図である。
図7図7a~7cは、好適な実施形態による、データ結合報告の一例を示すブロック図である。
図8図8a~8bは、好適な実施形態による、ソフトウェアコードのテスト中に制御結合及びデータ結合カバレッジを検証する好適な方法を示すフローチャートである。
図9】好適な実施形態によるコンピュータシステム・アーキテクチャを示すブロック図である。
【発明を実施するための形態】
【0013】
詳細な説明
用語の解説
制御結合-1つのソフトウェア・コンポーネントが他のソフトウェア・コンポーネントの実行に影響を与える様態または度合い。
【0014】
データ結合-専らあるソフトウェア・コンポーネントの制御下にあるものではないデータへの、当該ソフトウェア・コンポーネントの依存性。データ結合は、完結したシステム、その代わりにサブシステムのいずれかの、制御フローグラフの構造に依存する。
【0015】
コンポーネント-システムの区別される機能を実行する自己完結した部品、部品の組合せ、サブアセンブリ(部分組立品)、またはユニット。一般に、この用語は、手順、機能、サブルーチン、モジュール、適合性単位(UoC:Unit of Conformance)、及び他の同様なプログラミング構成を含むことができる。
【0016】
図1aに、好適な実施形態による制御結合の一例を示す。3つのファイル102、104、及び106の各々が、少なくとも1回の関数fooの呼出し108を含む。ファイル102は関数fooの定義110を含み、ファイル104は関数fooの定義112を含む。定義110、112は同一であるか場合によっては同様(例えば、同じインスタンス)である。リンカは、ファイル102内の定義110の全ての呼出しを解決することを選定することができ(ケース1)、あるいは、リンカはファイル102内の定義110の呼出し、ファイル104内の定義112の呼出し、及びファイル106内の呼出しを解決することもできる(例えば、ケース2)。このことは制御結合の欠陥である、というのは、ユーザはその曖昧さ(即ちどの定義が解決すべき関数108の呼出しであるか)を意識していないことがあるからである。システムの設計は、これら2通りのリンクのケースのどちら(例えば、ケース1対ケース2)が要求されているかを解決することができるべきである。
【0017】
他の例として、制御結合がパラメータ型制御結合であることがある。関数fooが手続きのパラメータを有する(即ち、fooのパラメータリストを通して他の関数の名前を渡すことができる)。パラメータ型制御結合は次のように例示することができる:
Int var; int glob
void foo ( void (*pfunc) (void) ) {
if ( var == 1 ) {
pfunc (); /* case 1 */
}
else {
pfunc (); /* case 2 */
}
}
int main ( void ) {
loop:
get ( var ); get ( glob );
if( glob == 1 ) {
foo( &func1 );
} else {
foo( &func2 );
goto loop;
}
本例では、以下に示す2つのデータセットが、全ての文が実行され、それに加えて全ての分岐(または制御フローの判断)が実行されることを保証するであろう。
【0018】
【表1】
【0019】
しかし、上記の例では、ケース1及びケース2のラベルを付けたポイントで呼び出されている2つの関数が存在する可能性がある。上記に提供した2つのデータセットでは、各ポイントで1つの関数しか呼び出されず、ケース1のポイントで関数func2が呼び出され、ケース2のポイントで関数func1が呼び出される。制御結合は、可能性のある呼出しの全部を各ポイントで実行することを要求する。従って、制御フローの呼出しの全部が実行されることを保証するために、要件ベースのテストデータは2つの追加的なデータセットを含む必要がある。明らかに、この概念は、関数へのポインタの使用の全部の場合に適用することができる。関数がポインタの逆参照によって呼び出される所では、呼び出され得る可能性のある全部の関数を実行しなければならない。同様に、C++(言語)では、特定のポイントで呼び出され得る全部の仮想関数を、要件ベースのテストデータによって実行しなければならない。制御結合を確立するためには、第1に、呼び出される可能性のある関数の集合が既知であることが不可欠であり、第2に、この集合中のどのメンバーが実際に呼び出されるかが既知でなければならない。こうした情報は、通常はテスト中のコードの静的解析によって判明する。
【0020】
図1bに、好適な実施形態によるデータ結合検出の一例を示す。図1bのデータ結合は、関数120及び関数122を含み、これらの関数は共に、同じメインプログラム124から呼び出され、同じ変数126を共用する。関数122は、変数126の値を計算する(即ち、設定の操作)のに対し、関数120は、変数126の値を表示装置へ出力する(即ち、使用の操作)。メインプログラム124は次のように例示することができる:
int main(){
int speed, order;
loop:
get( order ){
case 1: calculate_airspeed(speed); (対気速度を計算する)
case 2: display_airspeed(speed); (対気速度を表示する)
}
goto loop
}
メインプログラム124についての第1のテストケースを構成することができ、このテストケースは、関数120を実行し、次に、関数122を実行する他のテストケースを構成する。この場合、制御結合は必要に応じてテストし(即ち、全部の文を実行し、全部の分岐/判断を実行し、この場合MC/DC要件はない)、但し呼出しの順序には欠陥がある、というのは、関数122が表示するための有効な変数を有しないからである。同様に、テストケースが関数120を呼び出し、後続する関数122の呼出しが存在しない場合、他の欠陥が存在する可能性が高い。従って、図1bの例は、ある呼出しのポイントで所定の関数への全部の入力が有効な値を有し、グローバル変数に割り当てられた全部の値が用いられることを実証する必要性が存在する。この関係では、グローバル変数は、外部的に宣言され、当該グローバル変数を使用する関数に対して外部的に設定された変数である。他の例として、データ結合は、当該コード内で関数fooがパラメトリック変数「x」を3回使用するコードを含むことができる:
int foo ( int x ) {
if ( x == 1 ) // xの1回の使用
{ return x; } // xの1回の使用
else
( return x; )
この関数は、次のメインプログラムから呼び出すことができる:
int main() {
int i, y, z;
for ( i-1; i<=2; i++) {
y = I; // yを設定する。
foo ( y ); // yはxに関連する。
}
scanf ( “%d”, &z); // zを設定する。
foo ( z ); //zはxのエイリアス(別名)である。
return ();
}
上記の例では、引数yによる1回目のfooの呼出しが、foo内の全ての文を実行させ、それに加えて全部の分岐/判定を実行させる、というのは、ループがyについての両方の可能性を生成するからである。このことはyの3回の使用の全部の実行も生じさせる。引数zによる2回目のfooの呼出しは、foo内のあらゆる文または分岐/判定のうちまだカバーされていないものをカバーしないが、他の3回の(zの)使用を確かに導入し、この3回のうちの1回は実行されない。テストに基づくデータ結合は、2回のテストケースを必要とし、1回は単位値を有するzによるものであり、2回目は異なる値によるものであり、これにより、fooにおける(エイリアスxを介した)全3回のzの使用がカバーされる。
【0021】
システムの概要
図2aに、好適な実施形態による、ソフトウェアコードのテスト中に制御結合及びデータ結合解析を検証するシステム200を示す。
【0022】
要件情報源202は、デスクトップ・コンピュータ、ノート型コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、ハンドヘルド(手持ち型)装置、スマートホン、シンクライアント、または音声、画像、またはテキスト(文字列)データ(例えば、要件情報214)を記憶、編集、及び編成することができ、かつ装置204及びユーザ装置230のような他のコンピュータ装置との間でデータ(例えば、要件情報214)を受信及び送信することができるあらゆる電子機器またはコンピュータシステムのようなコンピュータ装置とすることができ、但しこれらに限定されない。こうした実施形態では、要件情報214は、MS(Microsoft:マイクロソフト)ワード文書、PDFファイル、ウェブページ、または他のあらゆる適切な電子ファイル・フォーマット、等のような電子ファイルとすることができ、但しこれらに限定されない。一実施形態では、要件情報源202は、本、紙、パンフレット、または他のあらゆる適切な物理的情報源、等のような物理的情報源とすることができ、但しこれらに限定されない。好適な一実施形態では、要件情報ファイル214は、ソフトウェア規格またはソフトウェア要件とすることができ、これらは、制御結合及びデータ結合解析の規格/要件を、ソフトウェアの運用に関する他の任意数のソフトウェア規格/要件に加えて含み、但しこれらに限定されない。要件情報ファイル214は、運輸業、海運業、製造業、通信業、金融業、情報サービス業、消費財産業、小売業、ヘルスケア(健康管理)産業、不動産業、公共施設、エネルギー産業、原材料産業、及び建設業、等のようなあらゆる産業におけるソフトウェア用とすることができ、但しこれらに限定されない。単一の要件情報源202のみを図示しているが、任意数の要件情報源202をシステム200の一部とすることができることは理解することができる。
【0023】
装置204は、例えば、プロセッサ206、メモリ208、ディスプレイ210、記憶装置212、及びソフトウェアコード要件検証プログラム220を含む。装置204は、デスクトップ・コンピュータ、ノート型コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、ハンドヘルド装置、スマートホン、シンクライアント、あるいは、音声、画像、またはテキストデータを記憶、編集、及び編成することができ、かつこうしたデータを要件情報源202及びユーザ装置230のような他のコンピュータ装置との間で受信及び送信することができる他のあらゆる電子機器またはコンピュータシステムとすることができる。単一の装置204のみを図示しているが、任意数の装置204をシステム200の一部とすることができることは理解することができる。
【0024】
プロセッサ206は、本明細書中に説明する機能を実行するように特別に構成された専用または汎用のプロセッサとすることができる。本明細書中に説明するプロセッサ206のユニットまたはデバイスは、単一のプロセッサ、複数のプロセッサ、またはその組合せとすることができる。プロセッサデバイスは、1つ以上のプロセッサ「コア」とすることができる。好適な一実施形態では、プロセッサ206が、以下に図3~8bを参照しながら説明するソフトウェアコード要件検証プログラム220のモジュールに関連する機能を実行するように構成されている。
【0025】
メモリ208は、ランダムアクセスメモリ、読出し専用メモリ、または他のあらゆる既知のメモリ構成とすることができる。更に、一部の実施形態では、メモリ208は、記憶装置212を含む1つ以上の追加的メモリを含むことができる。メモリ208及び1つ以上の追加的メモリは、周知の方法で読出し及び/または書込みをすることができる。1つの実施形態では、メモリ及び1つ以上の追加的メモリを、非一時的なコンピュータ可読の記録媒体とすることができる。メモリ半導体(例えば、DRAM(Dynamic Random Access Memory:ダイナミック・ランダムアクセスメモリ)、等)は、ソフトウェアコード要件検証プログラム220のようなソフトウェアをコンピュータ装置に提供する手段とすることができる。コンピュータプログラム、例えばコンピュータ制御論理をメモリ208に記憶することができる。
【0026】
ディスプレイ210は、装置204及び/またはユーザ装置230のようなコンピュータ装置から表示信号を受信して、これらの表示信号を、これらに限定されないがLCD(Liquid Crystal Display:液晶ディスプレイ)スクリーン、プラズマ・スクリーン、LED(Light Emitting Diode:発光ダイオード)スクリーン、DLP(Digital Light Processing:デジタル光処理)スクリーン、CRT(Cathode Ray Tube:陰極線管)スクリーン、等のような表示ユニットに出力することができるあらゆる装置とすることができる。ディスプレイ210は装置204の一部として図示しているが、ディスプレイ210は、分離されたスタンドアロン(独立)型表示装置とすることができ、あるいは、これに限定されないがユーザ装置230のような他のコンピュータ装置の一部とすることができることは理解することができる。
【0027】
記憶装置212は、要件情報ファイル214、ソースファイル216、及びテストファイル218を含むことができる。単一の要件情報ファイル214、単一のソースファイル216、及び単一のテストファイル218のみを図示しているが、任意数の要件情報ファイル214、ソースファイル216,及び/またはテストファイル218を記憶装置212に記憶することができることは理解することができる。記憶装置212は、1つ以上のノード、例えば記憶装置またはメモリノード、あるいは、サーバー・コンピュータ、デスクトップ・コンピュータ、ノート型コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、ハンドヘルド装置、スマートホン、シンクライアント、またはデータ及びコンピュータ命令、例えば要件情報214、ソースファイル216、及びテストファイル218を記憶、編集、及び/または処理し、ユーザ装置230及び/または要件情報源202のような他のコンピュータ装置との間でデータを受信及び送信することができる他のあらゆる電子機器またはコンピュータシステムのような、より処理が可能なノード上に展開することができる。例えば、記憶装置212は、1つ以上の要件情報源202から受信した1つ以上の要件情報ファイル214、1つ以上のソースファイル216、及びソフトウェアコード要件検証プログラム220がアクセスして利用することができる1つ以上のテストファイルの集合体である。記憶装置212は、これらに限定されないが、リレーショナル(関係)データベース、構造化問合せ言語(SQL:Structured Query Language)データベース、分散データベース、またはオブジェクト・データベース、等のようなあらゆる適切な記憶構造とすることができる。適切な構成及び記憶装置の種類は、関連技術の当業者にとって明らかである。
【0028】
上述した要件情報ファイルは、装置204が受信して記憶装置212に記憶して、ソフトウェアコード要件検証プログラム220が使用することができる。ソースファイル216は、ソフトウェア・プログラム用のソースコードを含むあらゆるソースファイルとすることができる。好適な一実施形態では、ソースファイル216が、対応する要件情報ファイル214を有する。例えば、ソースファイル216は、トンネルシステム用の照明プログラムとすることができ、要件情報ファイル214は、こうしたトンネル照明システム用のソフトウェア規格とすることができる。更に、ソースファイル216は、単一のソースファイル216とすることができ、あるいはソースファイル216のシステムセットとすることができる。ソースファイル216は、装置204が直接受信することができ(例えば、装置204上に書き込まれ、あるいは装置204のドライブ(駆動装置)を通して受信し、等)、そして記憶装置212に記憶してソフトウェアコード要件検証プログラム220が使用することができ、あるいは、ソフトウェアコード要件検証プログラム220は、ソースファイル216を、グラフィカル・ユーザインタフェースを介したユーザ入力として受信することができる。テストファイル218は、ソースファイル216をテストするように設計された1つ以上のテスト実行動作とすることができる。例えば、テストファイル218は、制御結合テストまたはデータ結合テストとすることができる。制御結合テストファイル218は、ソースコード内の1つ以上の制御結合を実行するように設計されたソースファイル216のテスト実行中に生じる変数、整数、または判定を定義するテストとすることができる。データ結合テストファイル218は、ソースファイル216の1つ以上のコンポーネント内に含まれる1つ以上のデータ結合を実行するように設計されたソースファイル216のテスト実行中に生じる変数、整数、または判定を定義するテストとすることができる。ソースファイル216及びテストファイル218は、以下に図3、5、及び8a~8bを参照しながら説明する。単一の要件情報214、単一のソースファイル216、及び単一のテストファイル218のみを図示しているが、任意数の要件情報ファイル214、単一のソースファイル216、及び単一のテストファイル218を記憶装置212に記憶することができることは理解することができる。
【0029】
ユーザ装置230は、グラフィカル・ユーザインタフェース232及びユーザ記憶装置236を含む。ユーザ装置は、デスクトップ・コンピュータ、ノート型コンピュータ、ラップトップ・コンピュータ、ハンドヘルド装置、スマートホン、シンクライアント、あるいは、音声、画像、またはテキストデータ(例えば、要件情報ファイル214、ソースファイル216、及び/または報告234、等)を記憶、編集、及び編成し、要件情報源202及び装置204bのような他のコンピュータ装置との間でデータを受信し送信することができる他のあらゆる電子機器またはコンピュータシステムとすることができる。
【0030】
グラフィカル・ユーザインタフェース232は、ユーザ装置230からの入力を受信して、この入力をソフトウェアコード要件検証プログラム220へ送信するために、あるいは逆に、ソフトウェアコード要件検証プログラム220から情報を受信して、この情報をユーザ装置230上に表示するために用いられるコンポーネントを含むことができる。一実施形態では、グラフィカル・ユーザインタフェース232が、デバイスドライバのような技術と装置の組合せを用いて、ユーザ装置230及び/または装置204のユーザがソフトウェアコード要件検証プログラム220とやり取りすることを可能にするプラットフォームを提供することができる。一実施形態では、グラフィカル・ユーザインタフェース232をウェブ・インタフェースとすることができる。この実施形態では、グラフィカル・ユーザインタフェース232が、キーボード、マウス、タッチパッド、タッチスクリーン、カメラ、マイクロホン、等のような物理的入力装置からの入力を受信する。好適な一実施形態では、グラフィカル・ユーザインタフェース232が報告234を表示することができる。表示234は、制御結合報告、データ結合報告、制御結合報告とデータ結合報告の組合せ、ファイル呼出し関係図、及び/またはシステム呼出し関係図とすることができる。報告234は、単一のソースファイル216について、あるいはソースファイル216のシステムセットについて生成することができる。報告234は、HTML(Hyper Text Markup Language:ハイパーテキスト・マークアップ言語)、ASCII(American National Standard Code for Information Interchange:情報交換用米国標準コード)テキスト、及びXLSX(マイクロソフト社の表計算ソフトMicrosoft Excel(マイクロソフト・エクセル:登録商標)の標準ファイル形式の1つ)、等のようなあらゆる適切なフォーマットで生成することができる。ソフトウェアコード要件検証プログラム220は、要件情報214、ソースファイル216、及び/またはテストファイル218を、グラフィカル・ユーザインタフェース235を介して受信することができる。グラフィカル・ユーザインタフェース232はユーザ装置230の一部として図示しているが、グラフィカル・ユーザインタフェース232はソフトウェアコード要件検証プログラム220の一部であり、装置204及び/または要求情報源202の一部とすることができる。
【0031】
上述したように、ユーザ記憶装置236はソースファイル216を含むことができる。ユーザ記憶装置236は、1つ以上のノード、例えば記憶またはメモリノード、あるいは、サーバー・コンピュータ、デスクトップ・コンピュータ、ノート型コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、ハンドヘルド装置、スマートホン、シンクライアント、あるいは、データ及びコンピュータ命令(例えばソースファイル216)を記憶、編集、及び/または処理し、装置204のような他のコンピュータ装置との間でデータを受信及び送信することができる他のあらゆる電子機器またはコンピュータシステムのような、より処理が可能なノード上に展開することができる。例えば、ユーザ記憶装置236は、グラフィカル・ユーザインタフェース232を介してソフトウェアコード要件検証プログラム220がアクセスすることができ、あるいはソフトウェアコード要件検証プログラム220へ出力することができる1つ以上のソースプログラム216の集合体である。ユーザ記憶装置236は、これらに限定されないが、リレーショナル・データベース、構造化問合せ言語(SQL)データベース、分散データベース、またはオブジェクト・データベース、等のようなあらゆる適切な記憶構造とすることができる。適切な構成及び記憶装置の種類は、関連技術の当業者にとって明らかである。ユーザ記憶装置236はソースファイル216のみを記憶するものとして図示しているが、ユーザ記憶装置は要件情報214及び/またはテストファイル218を記憶することもできることは理解することができる。更に、単一のユーザ装置230のみを図示しているが、任意数のユーザ装置230をシステム200の一部とすることができること、及び/またはユーザ装置230と装置204を同じ装置とすることができることは、理解することができる。
【0032】
ネットワーク240は、本明細書中に開示する機能を実行するのに適したあらゆるネットワークとすることができ、ローカルエリア・ネットワーク(LAN:Local Area Network)、ワイドエリア・ネットワーク(WAN:Wide Area Network)、無線ネットワーク(例えば、WiFi(ワイファイ、登録商標))、移動(モバイル)通信ネットワーク、衛星ネットワーク、インターネット、光ファイバ、同軸ケーブル、赤外線、無線周波数(RF:Radio Frequency)、またはその任意の組合せを含むことができる。他の適切なネットワークの種類及び構成は、関連技術の当業者にとって明らかである。一般に、ネットワーク240は、要件情報源202、装置204、及びユーザ装置230相互間の通信をサポートする接続とプロトコルとの任意の組合せとすることができる。一部の実施形態では、ネットワーク240を、要件情報源202、装置204、及びユーザ装置230の構成に基づいて任意とすることができる。
【0033】
図2bに、好適な実施形態による、図2aのソフトウェアコード要件検証プログラム220のモジュール例を示す。
【0034】
ソフトウェアコード要件検証プログラム220は、ソースファイル選択モジュール250、静的解析モジュール252、動的解析モジュール254、報告生成モジュール256、呼出し関係図生成モジュール258、及びトレーサビリティ行列(マトリクス)生成モジュール260を含むことができる。ソフトウェアコード要件検証プログラム220は、本明細書中に開示する、ソフトウェアコードのテスト中に制御結合及びデータ結合解析を検証するための方法及び機能を実現することに特化してプログラムされたコンピュータプログラムである。ソフトウェアコード要件検証プログラム220及びモジュール250~260は、以下に図3~8bを参照しながらより詳細に説明する。ソフトウェアコード要件検証プログラム220は、米国特許第8949770号明細書(特許文献1)、発明の名称”Automated Management of Software Requirements Verification”に説明されているもののような、ソフトウェア要件を検証するための追加的モジュールを含むこともでき、特許文献1はその全文を参照することによって本明細書中に含める。
【0035】
ソフトウェアコードのテスト中に制御結合解析を検証する好適な方法
図3は、好適な実施形態による、ソフトウェアコードのテスト中に制御結合解析を検証する好適な方法300を示すフローチャートである。
【0036】
方法300は、テストするソースファイル216を選択するブロック302を含むことができ、ソースファイルはソースコードを有する。ソースファイル216は、記憶装置212から選択することができ、あるいはユーザ記憶装置236からグラフィカル・ユーザインタフェース232を介して選択することができる。ソースファイル216は、単一のソースファイルとすることができ、あるいはシステム内の1つ以上のノードからの複数のソースファイル216を含むシステムセットとすることができる。例えば、ソースファイル216は、1つ以上の「.c」ファイル、または他の何らかの適切な種類のソースコードファイルを含むコンピュータプログラムとすることができる。ソースファイル216は、人間が解読可能なテストケースファイル、ソフトウェア要件検証プログラム220によって解析される特定のファイルまたはセットに関連する情報を含むテキスト編集可能なファイルとすることもできる。ソースファイル216は、ソフトウェア要件検証プログラム220内で、1つ以上のドロップダウンメニュー及び/またはファイルフォルダの使用により選択することができる。好適な一実施形態では、ソースファイル選択モジュール250を、ブロック302の方法を実行するように構成することができる。
【0037】
方法300は、ソースファイル216内の1つ以上の制御結合を識別するブロック304を含むことができる。制御結合は、ソースファイル216のソースコードに対する静的解析を実行することによって識別することができる。静的解析は、ソフトウェア開発者が書いたソースファイル216を解析して、ソースコード内のコンポーネントを識別し、ソースコードが要件情報ファイル214に準拠していることを評価するために実現することができる。本明細書中で参照するように、「コンポーネント」は、以上で提供した定義に加えて、要件情報ファイル214の要件を実現するように書かれたソースコードの一部分とすることができる。例えば、コンポーネントは、Cプログラミング言語における関数、及びC++プログラミング言語におけるクラス及びメンバー関数を含むことができる。静的解析は、これらに限定されないがLDRA社のTestbed(登録商標)等のような既知のあらゆる静的解析テスト・ソフトウェアまたは技術を用いて実行することができる。更に、静的解析は、これらに限定されないが、メインの静的解析、複雑性解析、静的データフロー解析、クロスリファレンス(相互参照)解析、情報フロー解析、データオブジェクト解析、MC/DCテストコード・プランナーを含むことができ、そして計測プログラム、及び/または他のあらゆる適切な種類の静的解析、等を含むことができる。ソフトウェア要件検証プログラム220は、選択したソースファイル216の静的解析を開始することができる。例えば、このことに限定されないが、ユーザはアイコンをクリックするか、メニューからの選択を行って、選択したソースファイル216の静的解析を開始することができる。好適な一実施形態では、静的解析モジュール252を、ブロック304の方法を実行するように構成することができる。
【0038】
方法300は、ソフトウェアコードの1つ以上のテスト実行動作を定義するブロック306を含むことができる。ソースファイル216の1つ以上のテスト実行動作は、例えば、要件ベースのテスト、アクセス可能性(アクセッシビリティ)のテスト、承認テスト、ブロック・ボックステスト、エンド・ツー・エンド・テスト、機能テスト、対話式テスト、総合テスト、性能(パフォーマンス)テスト、セキュリティ(安全性)テスト、ストレステスト、負荷テスト、または他のあらゆるソフトウェアテスト、等を含むことができ、但しこれらに限定されない。1つ以上のテスト実行動作は、識別した制御結合のうちの1つ以上を含むことができる。例えば、ユーザは、ソースファイル216が要求した1つ以上の整数、変数、または判定ステップの応答を入力して、ソースファイル216をテスト実行することができる。例えば、ソースファイル216は、レジ(金銭登録器)のソフトウェア・プログラムとすることができ、ユーザは、これらに限定されないが、ソースファイル216を起動する「s」、ランダムショップを実行じて複数のアイテムをバスケット(即ち、テスト実行動作)に追加する「r」、及びソースファイル216を終了する「q」のような文字を定義することができる。これら3つの選択肢は、ソースファイル216のソフトウェアコードの異なる部分を用いて、テスト中のソフトウェアコード内のいくつかの関数の呼出しを実現する。1つ以上のテスト実行動作は、動的解析を用いて、ソースプログラム216内の制御結合カバレッジをテストすることができる。本明細書中で参照するように、動的解析は、上述した静的解析とコード・カバレッジとの統合を参照する。好適な一実施形態では、動的解析モジュール254を、ブロック306の方法を実行するように構成することができる。1つ以上のテスト実行動作は、ソースファイル内で識別された制御結合の全部を含まなくてもよい。
【0039】
方法300は、定義した1つ以上のテスト実行動作を実行するブロック308を含むことができる。好適な一実施形態では、動的解析モジュール254を、ブロック308の方法を実行するように構成することができる。
【0040】
方法300は、動的解析に基づいてソースファイル216の制御結合カバレッジを識別するブロック310を含むことができる。好適な一実施形態では、動的解析モジュール254を、ブロック310の方法を実行するように構成することができる。
【0041】
方法300は、ソースファイル216内で識別した制御結合カバレッジに基づいて制御結合報告(例えば、報告234)を生成するブロック312を含むことができる。制御結合報告は、ディスプレイ210及び/またはユーザ装置230に送信して、ディスプレイ210により、及び/またはユーザ装置230上のグラフィカル・ユーザインタフェース232により、ユーザに対して表示することができる。好適な一実施形態では、報告生成モジュール256を、ブロック312の方法を実行するように構成することができる。
【0042】
図4a~4bを参照すれば、ブロック図が、好適な実施形態による制御結合報告(例えば、報告234)の一例を示す。制御結合報告は、第1節402、第2節404、第3節406、及び第4節407を含む。第1節402は、ソースファイル216の制御結合情報の高レベルの要約である。第1節402は、制御結合カバレッジ、及びソースファイル216内で識別した制御結合の総数を示す。制御結合カバレッジは、例えば0%~100%の%比率として表示することができ、但しこのことに限定されない。第2節404は、ソースファイル216から生じる制御結合の結合先の概要を提供する。第2節404は、ソースファイル216内の1つ以上の制御結合の識別子、ソースファイル216から識別した1つ以上の制御結合の結合先の位置(例えば、ソースファイル216内のコンポーネント、ソースファイル216のシステムセット内の他のソースファイル216、及び/またはシステム・サブルーチン、等)、及び識別した1つ以上の制御結合の各々についての動的解析に基づく制御結合カバレッジを含むことができる。第3節406は、ソースファイル216内の1つ以上の手続きまたはコンポーネントの各々についての、識別した1つ以上の制御結合についての制御結合カバレッジの概要を提供する。第3節の各コンポーネントラインは、クリック可能にするか、さもなければソフトウェア要件検証プログラム220により(例えば、グラフィカル・ユーザインタフェースを介して)選択可能にすることができる。ユーザが第3節406内でコンポーネントラインのうちの1つを選択すれば、ソフトウェア要件検証プログラムは第4節を表示することができる。第4節407は、第1テーブル(表)408及び第2テーブル420を含む。第1テーブル408は、識別した1つ以上の制御結合のうち、ソースファイル216の1つ以上のコンポーネントの各々から生じた制御結合を示す。第2テーブル420は、識別した1つ以上の制御結合のうち、当該制御結合の結合先がソースファイル216の1つ以上のコンポーネントのうちの1つである制御結合を示す。第4節407は、ソースファイル216のソースコードのうち第1テーブル408及び第2テーブル420に関連するソースコードを提供するソースコードの節432を含むこともできる。第1テーブル408及び第2テーブル420は、第1列410、422、第2列412、424、第3列414、426、第4列416、428、及び第5列418、430を含み、第1列は識別した1つ以上の制御結合間の呼出し元のポイントを識別し、第2列は識別した1つ以上の制御結合間の呼出し先のポイントを識別し、第3列は、呼出し先または呼出し元が結合先とするソースファイル216を示し、第4列は、ソースファイル216における、識別した1つ以上の制御結合の各々が存在するソフトウェアコードラインを示し、第5列は、動的解析に基づく、識別した1つ以上の制御結合の制御結合カバレッジを示す。制御結合報告は、定義した1つ以上のテスト実行動作の各々について、第4節407を含む。
【0043】
再び図3を参照すれば、方法300は、ソースファイル216についてのファイル呼出し関係図440を生成するブロック314を含むことができる。図4cに、好適な実施形態による呼出し関係図の一例を示す。呼出し関係図440は、報告234の一部とすることもスタンドアロンの図とすることもできる。呼出し関係図440は、ソースファイル216の1つ以上のコンポーネント444a~444c間のローカル呼出しを示す。好適な実施形態では、呼出し関係図440のコンポーネント444a~444cが、コンポーネント444a~444cのソースコードライン位置446a~446c、及びテスト結果の指示448a~448cを含むことができ、但しこれらに限定されない。テスト結果の指示448a~448cは、コンポーネント444a~444c等の静的解析テスト結果及び動的テスト結果を含むことができ、但しこれらに限定されない。呼出し関係図440は、ソースファイル216の1つのコンポーネント、例えばコンポーネント444aと、ソースファイル216の他のコンポーネント、例えばコンポーネント444bとの間の呼出しを表すための直線及び矢印450a~450cを含むことができる。呼出し関係図440は、単一のソースファイル216内の呼出し、または複数のソースファイル216(例えば、ソースファイルのシステムセット)間の呼出しを含むことができる。呼出し関係図440は各ノード442a~442bを示すことができ、これらのノードは、コンピュータ装置204、ユーザ装置230、または特定の呼出しが当該ノードへ、または当該ノードから行われるシステム200の他のあらゆる装置とすることができる。ソフトウェア要件検証プログラム220は、呼出し関係図440の各ノード442a~442b上でユーザがズームイン及びズームアウトすることを可能にすることができる。例えば、ユーザは、マウスのホイールまたはラップトップ(コンピュータ)のトラックパッドをスクロールして、カーソルがその上に置かれた特定部分をズームインまたはズームアウトすること;見たいノード上のコンテキストメニューを起動して「スクリーンに合わせる」を選定すること;グラフィカル・ユーザインタフェース232上に表示された「ズーム」ボタンを選択すること;及び/またはカーソルを用いて呼出し関係図440の上記部分を選択して拡大または最小化すること、等をすることができ、但しこれらに限定されない。呼出し関係図440は、これらに限定されないが「静的な」種類のグラフ、または動的解析結果を重ね書きした静的な種類のグラフのような異なる種類のグラフを示すことができる。グラフの種類は、グラフィカル・ユーザインタフェース232により変更することができる。好適な一実施形態では、呼出し関係図生成モジュール258を、ブロック314の方法を実行するように構成することができる。
【0044】
方法300は、複数のソースファイル(例えば、ソースファイルのシステムセット)についてのシステム呼出し関係図を生成するブロック316を含むことができる。システム呼出し関係図は、複数のソースファイル内の1つ以上のコンポーネント間のローカル呼出し、及びシステムセットの複数のソースファイルうち、システムセットの複数のソースファイルの各々が当該ソースファイルへの制御結合を有するソースファイル間のソースファイル・コンポーネント間呼出しを示す。更に、ユーザは、複数のソースファイル内の1つ以上のコンポーネントのうちの単一のコンポーネントを選択して、システムの1つ以上のノードのうち、選択したコンポーネントについての制御結合に関与するノードを表示する呼出し関係図を生成することができる。好適な一実施形態では、呼出し関係図生成モジュール258を、ブロック316の方法を実行するように構成することができる。
【0045】
ソフトウェアコードの検査中に制御結合解析を検証する好適な方法
図5は、好適な実施形態による、ソフトウェアコードのテスト中にデータ結合解析を検証する好適な方法を示すフローチャートである。
【0046】
方法500は、テストするソースファイル216を選択するブロック502を含むことができる。選択したソースファイル216は、1つ以上のコンポーネントを含むことができる。ソースファイル216は、記憶装置212から選択することができ、あるいはユーザ記憶装置236からグラフィカル・ユーザインタフェース232を介して選択することができる。ソースファイル216は、単一のソースファイルとすることができ、あるいはシステム内の1つ以上のノードからの複数のソースファイル216を含むシステムセットとすることができる。例えば、ソースファイル216は、1つ以上の「.c」ファイルまたは他のあらゆる適切な種類のソースコードファイルを含むコンピュータプログラムとすることができる。ソースファイル216は、人間が解読可能なテストケースファイル、ソフトウェア要件検証プログラム220によって解析される特定のファイルまたはセットに関連する情報を含むテキスト編集可能なファイルとすることもできる。ソースファイル216は、ソフトウェア要件検証プログラム220内で、1つ以上のドロップダウンメニュー及び/またはファイルフォルダの使用により選択することができる。好適な一実施形態では、ソースファイル選択モジュール250を、ブロック502の方法を実行するように構成することができる。
【0047】
方法500は、ソースファイル216内の1つ以上のデータ結合を識別するブロック504を含むことができる。データ結合は、ソースファイル216のソースコードに対する静的解析を実行することによって識別することができる。静的解析は、ソフトウェア開発者が書いたソースファイル216を解析して、ソースコード内のコンポーネントを識別し、ソースコードが要件情報ファイル214に準拠していることを評価するために実現することができる。本明細書中で参照するように、「コンポーネント」は、以上で提供した定義に加えて、要件情報ファイル214の要件を実現するように書かれたソースコードの一部分とすることができる。例えば、コンポーネントは、Cプログラミング言語における関数、及びC++プログラミング言語におけるクラス及びメンバー関数を含むことができる。静的解析は、これらに限定されないがLDRA社のTestbed(登録商標)等のような既知のあらゆる静的解析テスト・ソフトウェアまたは技術を用いて実行することができる。更に、静的解析は、これらに限定されないが、メインの静的解析、複雑性解析、静的データフロー解析、クロスリファレンス(相互参照)解析、情報フロー解析、データオブジェクト解析、MC/DCテストコード・プランナーを含むことができ、そして計測プログラム、及び/または他のあらゆる適切な種類の静的解析、等を含むことができる。1つ以上のデータ結合は、ソースファイル216の1つ以上のコンポーネントの変数及びパラメータとすることができる。この変数は、変数の型及び/または変数の属性を有することもできる。変数の型は、定数の変数、ローカル変数、グローバル変数、パラメータ変数、及び/またはローカル-グローバル変数、等を含み、但しこれらに限定されない。変数の属性は、宣言、定義、参照、入力、出力、間接使用、未使用パラメータ、C++で用いられる「this」パラメータ、等を含み、但しこれらに限定されない。1つ以上のデータ結合は、ソースファイル216の「他のコンポーネントに呼び出される」コンポーネント及び「他のコンポーネントを呼び出す」コンポーネントに関連するパラメータ結合から生じるデータ結合を含むこともできる。好適な一実施形態では、静的解析モジュール502を、ブロック504の方法を実行するように構成することができる。
【0048】
方法500は、識別したデータ結合のうちの1つ以上を含む1つ以上のコンポーネントの各々について1つ以上のテストを定義するブロック506を含むことができる。1つ以上のテストは、動的解析を用いて、ソースファイル216内のデータ結合変数使用カバレッジを識別することができる。本明細書中で参照するように、動的解析は、上述した静的解析とコード・カバレッジとの統合を参照する。例えば、要件情報ファイル214は、ソースファイル216の「run speed command(RSC:実行速度コマンド)」モジュールについて表1に示す以下の要件を含むことができる:
【0049】
【表2】
【0050】
ユーザは、RSCモジュールの要件について、以下の表2に示す3つのテストを定義することができる。
【0051】
【表3】
【0052】
好適な一実施形態では、動的解析モジュール254を、ブロック506の方法を実行するように構成することができる。定義したテストの各々の、要件情報ファイル214内の要件に対するトレーサビリティは、図6に示すトレーサビリティ行列を生成することによって可視化することができる。トレーサビリティ行列600は、表1及び2の要件及びテストに基づいて生成される。トレーサビリティ行列600は、1つ以上のテストのどれを用いるかを、1つ以上の要件の各々について示す。好適な一実施形態では、トレーサビリティ行列生成モジュール260を、トレーサビリティ行列600を生成するように構成することができる。
【0053】
方法500は、上記1つ以上のテストをソースファイル216に対して実行するブロック508を含むことができる。1つ以上のテストの各々は個別に実行可能である。好適な一実施形態では、動的解析モジュール254を、ブロック508の方法を実行するように構成することができる。
【0054】
方法500は、ソースファイル216のデータ結合変数使用カバレッジを動的解析に基づいて識別するブロック510を含むことができる。好適な一実施形態では、動的解析モジュール254を、ブロック510の方法を実行するように構成することができる。
【0055】
方法500は、識別したデータ結合変数使用カバレッジに基づいて、データ結合報告(例えば、報告234)を生成するブロック512を含むことができる。データ結合報告は、ディスプレイ210及び/またはユーザ装置230に送信して、ディスプレイ210により、及び/またはユーザ装置230上のグラフィカル・ユーザインタフェース232により、ユーザに対して表示することができる。好適な一実施形態では、報告生成モジュール256を、ブロック512の方法を実行するように構成することができる。
【0056】
図7a~7cを参照すれば、データ結合報告(例えば、報告234)は、第1節702、第2節704、第3節706、第4節707、第5節754、及び第6節756含む。第1節702は、データ結合カバレッジ、及びソースファイル216内で識別したデータ結合の総数を示す。データ結合カバレッジは、0%~100%のデータ結合変数使用率として表示することができる。第2節704は、識別した1つ以上のデータ結合のうちの1つ以上によってリンクされたソースファイル216内のコンポーネント、及びリンクされたコンポーネント内のデータ結合の数をリストアップする。第3節706は、1つ以上のコンポーネントの各々についての、識別した1つ以上のデータ結合についてのデータ結合変数使用カバレッジ、及びソースファイル216内で用いられるグローバル変数の数をリストアップする。好適な一実施形態では、データ結合変数使用カバレッジが動的解析に基づく。第4節は第1テーブル708及び第2テーブル724を含み、第1テーブル708は、識別した1つ以上のデータ結合のうち、ソースファイル216の1つ以上のコンポーネントの各々から生じるデータ結合を示し、第2テーブル724は、識別した1つ以上のデータ結合のうち、当該データ結合の結合先がソースファイル216の1つ以上のコンポーネントのうちの1つであるデータ結合であるデータ結合を示す。データ結合報告は、第4節707を1つ以上のコンポーネントの各々について含むことができる。第1テーブル708は、第1列710、第2列712、第3列714、第4列716、第5列718、第6列720、及び第7列722を含む。第1列710は、識別した1つ以上のデータ結合のうちの1つのデータ結合の変数を識別する。第2列712は、ソースファイル216のソフトウェアコードラインのうち上記変数が存在するソフトウェアコードラインを示す。第3列714は上記変数の変数型を識別する。第4列716は、1つ以上のコンポーネントのパラメータのうち上記変数に結合されたパラメータを識別する。第5列718は、識別したパラメータを含むコンポーネントを識別する。第6列720は、上記変数に結合された上記パラメータの位置を含むソースコードラインを識別する。第7列722は、ソースファイル216のコンポーネントのうち上記コンポーネントを含むコンポーネントを識別する。第2テーブル724は、第1列726、第2列728、第3列730,第4列732、第5列734、第6列736、及び第7列738を含む。第1列726は、識別した1つ以上のデータ結合のうちの1つのデータ結合の変数を識別する。第2列728は、この変数の結合先のコンポーネントを識別する。第3列730は、ソースファイル216のソースコードラインのうち上記変数が呼び出されるソースコードラインを識別する。第4列732は、ソースファイル216のコンポーネントのうち上記変数を呼び出すコンポーネントを含むコンポーネントを識別する。第5列734は上記変数の変数型を識別する。第6列736は、1つ以上のコンポーネントのパラメータのうち上記変数に結合されたパラメータを識別する。第7列738は、上記パラメータが存在するソースコードラインを識別する。第4節707は、データ結合変数使用カバレッジ節740を含むこともでき、データ結合変数使用カバレッジ節740は、ソースファイル216のデータのうちソースファイル216の関心事のコンポーネント間で共有されるデータ、及びこの識別されたデータに対するカバレッジを示す。データ結合変数使用カバレッジ節740は、ソースファイル216の1つの変数を識別する第1列742、上記変数を含むソースファイル216を識別する第2列744、ソースファイル216のコンポーネントのうち上記変数を含むコンポーネントを識別する第3列746、上記変数の変数型を識別する第4列748、上記変数の属性を識別する第5列750、及びソースファイル216のソースコードラインのうち当該変数を使用するソースコードラインを識別する第6列752を含む。データ結合報告234は、ソースファイル216のデータ結合カバレッジの高レベルの概要を提供する第5節を含むこともできる。データ結合報告234は、ソースファイル216のソースコードのうち第1テーブル708及び第2テーブル724に関連するソースコードを提供する第6節を含むこともできる。
【0057】
ソフトウェアコードのテスト中に制御結合及びデータ結合解析を検証する好適な方法
図8a~8bに、好適な実施形態による、ソフトウェアコードのテスト中に制御結合及びデータ結合解析を検証する方法800を示す。方法800は報告324を生成し、報告324は、方法300の制御結合報告と方法500のデータ結合報告とを組み合わせたものである。従って、ブロック802は方法300及び500のそれぞれブロック302及び502に相当し;ブロック804~814は方法300のブロック304~310に相当し、ブロック812~818は方法500のブロック504~510に相当し;ブロック820は、方法300及び500の、それぞれブロック312及び512に相当する。
【0058】
ブロック820を参照すれば、方法800が生成する報告が、図4b~4c及び7a~7cを参照して説明した、方法300の制御結合報告及び方法500のデータ結合報告の全部の節を含む。
【0059】
本明細書中に提供する方法及びシステムは、適格性のあるツール、即ちソフトウェアのテスト中に用いるためのソフトウェア要件検証プログラム220を提供する。特に、本明細書中に提供する方法及びシステムの好適な実施形態は、ソフトウェアコード内の制御結合及びデータ結合解析の検証において用いるための適格性のあるツールを提供する。ソフトウェア要件検証プログラム220が生成する報告、例えば制御結合及びデータ結合報告234は、検証可能で、確定的で、予測可能なソフトウェアテストの結果をユーザに提供する。従って、本明細書中に提供する方法及びシステムは、手作業での検証のようなリソースがより重く時間を要するものと少なくとも等価な、ソフトウェアテストにおける信頼性を保証する。本発明の方法及びシステムの制御結合及びデータ結合報告は、ソフトウェア要件検証プログラム220が、そのタスクを1回適切に実行し、これにより、その後の実行を検証する必要性を解消する能力を証明する。本明細書中に提供する方法及びシステムは、特許文献1及び”LDRA Tool Qualification Packs”(非特許文献1)に開示された方法及びシステムを用いて、資格ソフトウェア要件検証プログラム220を実現することができ、これらの両文献はその全文を参照することによって本明細書に含める。
【0060】
コンピュータシステム・アーキテクチャ
図9に、本発明の実施形態、またはその1つ以上の部分をコンピュータ可読のコードとして実現することができるコンピュータシステム900を示す。例えば、図2aの要件情報源202、装置204、ユーザ装置230は、ハードウェア、命令を記憶している非一時的なコンピュータ可読媒体、またはその組合せを用いたコンピュータシステム900の形で実現することができ、1つ以上のコンピュータシステムまたは他の処理システムの形で実現することができる。ハードウェアは、図3、5、及び8a~8bの方法を実現するために用いるモジュール及びコンポーネントを具体化することができる。
【0061】
プログラマブル・ロジックを用いる場合、こうしたロジックは、実行可能なソフトウェアコードによって構成された市販の処理プラットフォーム上で実行されて、特定目的のコンピュータまたは特殊目的の装置(例えば、プログラマブル・ロジックアレイ、特定用途向け集積回路、等)となることができる。開示する主題の実施形態は、マルチコア・マルチプロセッサシステム、マイクロコンピュータ、メインフレーム(大型)コンピュータ、分散機能とリンクされるか一団となったコンピュータ、並びに実質的にあらゆる装置内に組み込むことができるパーベイシブ(pervasive:多種多様な機器に広く浸透した)コンピュータまたは小型コンピュータを含む種々のコンピュータシステム構成で実施することができることを、通常の当業者は理解することができる。例えば、少なくとも1つのプロセッサデバイス及びメモリを用いて、上述した実施形態を実現することができる。
【0062】
本明細書中に説明するプロセッサユニットまたはデバイスは、単一のプロセッサ、複数のプロセッサ、またはその組合せとすることができる。プロセッサデバイスは、1つ以上のプロセッサ「コア」を有することができる。本明細書中に説明する「コンピュータプログラム媒体」、「非一時的コンピュータ可読媒体」、及び「コンピュータで使用可能な媒体」は、一般に、リムーバブル(着脱可能な)記憶装置918、リムーバブル記憶装置922、及びハードディスクドライブ(ハードディスク駆動装置)912上に設置されたハードディスクのような有形の媒体を参照する。
【0063】
本発明の種々の実施形態を、本例のコンピュータシステム900に関して説明する。この説明を読んだ後に、他のコンピュータシステム及び/またはコンピュータ・アーキテクチャを用いて本発明を実現する方法は、関連技術の当業者にとって明らかになる、動作は順次のプロセスとして説明していることがあるが、一部の動作は、実際には、並行して、同時に、及び/または分散した環境で実行することができ、そして単一のマシンまたはマルチプロセッサのマシンによるアクセス用に、ローカルに、または遠隔的に(リモートで)記憶されているプログラムコードで実行することができる。それに加えて、一部の実施形態では、開示する主題の精神から逸脱することなしに、動作の順序を再編成することができる。
【0064】
プロセッサデバイス904は、本明細書中に説明する機能を実行するように具体的に構成された専用または汎用プロセッサとすることができる。プロセッサデバイス904は、バス、メッセージキュー、ネットワーク、マルチコア・メッセージパッシング(メッセージ受け渡し)スキーム、等のような通信インフラストラクチャに接続することができる。ネットワークは、本明細書中に説明する機能を実行するのに適したあらゆるネットワークとすることができ、そしてローカルエリア・ネットワーク(LAN)、ワイドエリア・ネットワーク(WAN)、無線ネットワーク(例えば、WiFi(登録商標))、移動(モバイル)通信ネットワーク、衛星ネットワーク、インターネット、光ファイバ、同軸ケーブル、赤外線、無線周波数(RF)、またはその任意の組合せを含むことができる。他の適切なネットワークの種類及び構成は、関連技術の当業者にとって明らかである。コンピュータシステム900は、メインメモリ(例えば、ランダムアクセスメモリ、読出し専用メモリ、等)を含むこともでき、そして二次メモリ910を含むこともできる。二次メモリ910は、ハードディスクドライブ912及びリムーバブル記憶装置ドライブ914、例えばフロッピー(登録商標)ディスク、磁気テープドライブ、光ディスクドライブ、フラッシュメモリ、等を含むことができる。
【0065】
リムーバブル記憶装置ドライブ914は、周知の方法で、リムーバブル記憶装置918から読み出し、及び/またはリムーバブル記憶装置918に書き込むことができる。リムーバブル記憶装置918はリムーバブル記憶媒体を含むことができ、リムーバブル記憶媒体はリムーバブル記憶装置ドライブ914によって読み出し、リムーバブル記憶装置ドライブ914によって書き込むことができる。例えば、リムーバブル記憶装置ドライブ914がフロッピー(登録商標)ディスクドライブまたはユニバーサル・シリアルバス・ポートである場合、リムーバブル記憶装置918は、それぞれ、フロッピー(登録商標)ディスクまたはポータブル(可搬型)フラッシュ・ドライブとすることができる。一実施形態では、リムーバブル記憶装置918を非一時的なコンピュータ可読記録媒体とすることができる。
【0066】
一部の実施形態では、二次メモリ910が、コンピュータプログラムまたは他の命令をコンピュータシステム500内にロードすることを可能にする代替手段、例えばリムーバブル記憶装置922及びインタフェース920を含むことができる。こうした手段の例は、(例えば、ビデオゲームシステムに見られる)プログラム・カートリッジとカートリッジ・インタフェース、リムーバブル・メモリチップ(例えば、EEPROM(Electrically Erasable Programmable Read-Only Memory:電気的消去可能プログラマブル読出し専用メモリ)、PROM(Programmable ROM)、等)と関連するソケット、及び他のリムーバブル記憶装置922とインタフェース920を含むことができ、これらは関連技術の当業者にとって明らかである。
【0067】
コンピュータシステム900(の、例えばメインメモリ908及び/または二次メモリ910)に記憶されているデータは、光記憶装置(例えば、コンパクトディスク、デジタル多用途ディスク、ブルーレイディスク、等)または磁気テープ記憶装置(例えば、ハードディスクドライブ)のような、あらゆる種類の適切なコンピュータ記憶媒体上に記憶することができる。これらのデータは、リレーショナル・データベース、構造化照会言語(SQL:Structured Query Language)データベース、分散データベース、オブジェクト・データベースのようなあらゆる種類の適切なデータベース構成の形に構成することができる。適切な構成及び記憶装置の種類は、関連技術の当業者にとって明らかである。
【0068】
コンピュータシステム900は、通信インタフェース924を含むこともできる。通信インタフェース924は、ソフトウェア及びデータをコンピュータシステム900と外部装置との間で転送することを可能にするように構成することができる。好適な通信インタフェース924は、モデム、ネットワーク・インタフェース(例えば、イーサネット(Ethernet:登録商標)カード)、通信ポート、PCMCIA(Personal Computer Memory Card International Association:パーソナル・コンピュータ・メモリカード国際協会)スロットカード、等を含むことができる。通信インタフェースを通して転送されたソフトウェア及びデータは、信号の形式にすることができ、これらの信号は、電子信号、電磁信号、光信号、または関連技術の当業者にとって明らかな他の信号とすることができる。これらの信号は通信経路926を通って進むことができ、通信経路926は、信号を搬送するように構成することができ、ワイヤ、ケーブル、光ファイバ、電話線、セルラホン(携帯電話)リンク、無線周波数リンク、等を用いて実現することができる。
【0069】
コンピュータシステム900は、表示インタフェース902を更に含むことができる。表示インタフェース902は、コンピュータシステム900と外部ディスプレイ930との間でデータを転送することを可能にするように構成することができる。好適な表示インタフェース902は、高精細度(高解像度)マルチメディア・インタフェース(HDMI:High-Definition Multimedia Interface)、デジタル・ビジュアル・インタフェース(DVI:Digital Visual Interface)、ビデオ・グラフィックス・アレイ(VGA:Video Graphics Array)、等を含むことができる。ディスプレイ930は、コンピュータシステム900の表示インタフェース902を通して伝送されたデータを表示するためのあらゆる適切な種類のディスプレイとすることができ、陰極線管(CRT)ディスプレイ、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、静電容量式タッチ・ディスプレイ、薄膜トランジスタ(TFT:Thin-Film Transistor)ディスプレイ、等を含む。
【0070】
コンピュータプログラム媒体及びコンピュータで使用可能な媒体は、メインメモリ908及び二次メモリ910のようなメモリを参照することができ、これらはメモリ半導体(例えば、DRAM、等)とすることができる。これらのコンピュータプログラム製品は、ソフトウェアをコンピュータシステム900に提供する手段とすることができる。コンピュータプログラム(例えば、コンピュータ制御論理)は、メインメモリ908及び/または二次メモリ910に記憶することができる。コンピュータプログラムは、通信インタフェース924を通して受信することもできる。こうしたコンピュータプログラムは、実行されると、コンピュータシステム900が本明細書中に説明する本発明の方法を実現することを可能にする。特に、これらのコンピュータプログラムは、実行されると、プロセッサデバイス904が、本明細書中に説明するように、図3、5、及び8a~8bに示す方法を実現することを可能にすることができる。従って、こうしたコンピュータプログラムは、コンピュータシステム900のコントローラを表現することができる。ソフトウェアを用いて本発明を実現する場合、このソフトウェアをコンピュータプログラム製品に記憶して、リムーバル記憶装置914、インタフェース920、及びハードディスク912、あるいは通信インタフェース924を用いて、コンピュータシステム900内にロードすることができる。
【0071】
プロセッサデバイス904は、コンピュータシステム900の機能を実行するように構成された1つ以上のモジュールまたはエンジンを具えることができる。モジュールまたはエンジンの各々は、ハードウェアを用いて実現することができ、一部の場合には、メインメモリ908または二次メモリ910に記憶されているプログラムコード及び/またはプログラムに相当するようなソフトウェアを利用することもできる。こうした例では、プログラムコードを、コンピュータシステム900のハードウェアによる実行の前に、プロセッサデバイス904によって(例えば、コンパイル・モジュールまたはエンジンによって)コンパイルすることができる。例えば、プログラムコードは、プログラミング言語で書かれたソースコードとすることができ、このソースコードは、コンピュータシステム900のプロセッサデバイス904及び/またはあらゆる追加的なハードウェア構成要素による実行用に、アセンブリ言語またはマシンコード(機械語)のようなより低水準の(低級な)言語に翻訳される。コンパイルするプロセスは、字句解析、処理、構文解析、意味解析、構文主導型翻訳、コード生成、コード最適化、及びプログラムコードを、コンピュータシステム900を制御して本明細書中に開示する機能を実行することに適したより低水準の言語に翻訳することに適し得る他のあらゆる技法を含むことができる。コンピュータシステム900が以上に説明した機能を実行するように特異的にプログラムされた特別に構成されたコンピュータシステム900となることを、こうしたプロセスが生じさせることは、関連技術の当業者にとって明らかである。
【0072】
本開示に一致する技術は、数ある特徴の中で特に、ソフトウェアコードのテスト中に制御結合及び/またはデータ結合解析を検証するシステム及び方法を提供する。開示するシステム及び方法の種々の好適な実施形態を上述してきたが、これらの実施形態は限定ではなく例示の目的のみで提示してきたことを理解するべきである。これらの実施形態は網羅的でなく、本発明を開示した明確な形態に限定しない。以上の教示を考慮して、本発明の全幅または範囲から逸脱することなしに、変更及び変形が可能であり、あるいは本発明の実施により変更及び変更を獲得することができる。
図1
図2a
図2b
図3
図4a
図4b
図4c
図5
図6
図7a
図7b
図7c
図8a
図8b
図9
【手続補正書】
【提出日】2024-01-18
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ソフトウェアコードのテスト中に制御結合解析を検証する方法であって、
テストするソースファイルを選択するステップであって、該ソースファイルがソースコードを有するステップと、
前記ソースファイルの前記ソースコードに対する静的解析を実行することによって、前記ソースファイル内の1つ以上の制御結合を識別するステップと、
前記ソースコードの1つ以上のテスト実行動作を定義するステップであって、該1つ以上のテスト実行動作は、前記識別した制御結合のうちの1つ以上を含み、該1つ以上のテスト実行動作は動的解析を用いるステップと、
前記1つ以上のテスト実行動作を実行するステップと、
前記動的解析に基づいて、前記ソースファイルの制御結合カバレッジを識別するステップと、
前記識別した前記ソースファイルの制御結合カバレッジに基づいて、制御結合報告を生成するステップと
を含む方法。
【請求項2】
前記ソースファイルについてのファイル呼出し関係図を生成するステップであって、該ファイル呼出し関係図は、前記ソースファイルの1つ以上のコンポーネント間のローカル呼出しを示すステップを含む、請求項1に記載の方法。
【請求項3】
前記ソースファイルが、システム内の1つ以上のノードからの複数のソースファイルを含むシステムセットであり、
前記方法が、前記複数のソースファイルについてのシステム呼出し関係図を生成するステップを含み、該システム呼出し関係図は、前記複数のソースファイル内の1つ以上のコンポーネント間のローカル呼出し、及び前記システムセットの前記複数のソースファイルのうち、前記システムセットの前記複数のソースファイルの各々が当該ソースファイルへの制御結合を有するソースファイル間のソースファイル・コンポーネント間呼出しを示す、請求項1に記載の方法。
【請求項4】
前記複数のソースファイル内の前記1つ以上のコンポーネントのうちの1つのコンポーネントを選択するステップと、
前記システムの前記1つ以上のノードのうち、前記選択したコンポーネントについての制御結合に関与するノードを表示する呼出し関係図を生成するステップと
を含む、請求項に記載の方法。
【請求項5】
ソフトウェアコードのテスト中にデータ結合解析を検証する方法であって、
テストするソースファイルを選択するステップであって、該ソースファイルが1つ以上のコンポーネントを有するステップと、
前記ソースファイルのソースコードに対する静的解析を実行することによって、前記ソースファイル内の1つ以上のデータ結合を識別するステップであって、前記データ結合は前記1つ以上のコンポーネントの変数及びパラメータであるステップと、
前記識別した1つ以上のデータ結合を含む前記1つ以上のコンポーネントの各々について1つ以上のテストを定義するステップであって、該1つ以上のテストは動的解析を用いるステップと、
前記1つ以上のテストを前記ソースファイルに対して実行するステップと、
前記動的解析に基づいて、前記ソースファイルのデータ結合変数使用カバレッジを識別するステップと、
前記識別したデータ結合変数使用カバレッジに基づいて、データ結合報告を生成するステップと
を含む方法。
【請求項6】
トレーサビリティ行列を生成するステップであって、該トレーサビリティ行列は、前記1つ以上のテストのどれを用いるかを、1つ以上の要件の各々について示すステップを含む、請求項5に記載の方法。
【請求項7】
ソフトウェアコードのテスト中に制御結合及びデータ結合解析を検証する方法であって、
テストするソースファイルを選択するステップであって、該ソースファイルがソースコードを有し、該ソースコードが1つ以上のコンポーネントを実現するステップと、
前記ソースファイルの前記ソースコードに対する静的解析を実行することによって、前記ソースファイル内の1つ以上の制御結合を識別するステップと、
前記ソフトウェアコードの1つ以上の制御結合テスト実行動作を定義するステップであって、該1つ以上の制御結合テスト実行動作は、前記識別した制御結合のうちの1つ以上を含み、前記1つ以上の制御結合テスト実行動作は動的解析を用いるステップと、
前記定義した1つ以上の制御結合テスト実行動作を実行するステップと、
前記動的解析に基づいて、前記ソースファイルの制御結合カバレッジを識別するステップと、
前記ソースファイルの前記ソースコードに対する静的解析を実行することによって、前記ソースファイル内の1つ以上のデータ結合を識別するステップであって、前記データ結合は前記1つ以上のコンポーネントのうちの1つのコンポーネントの変数及びパラメータであるステップと、
前記識別したデータ結合のうちの1つ以上を含む前記1つ以上のコンポーネントの各々について、1つ以上のデータ結合テストを定義するステップであって、該1つ以上のデータ結合テストは動的解析を用いるステップと、
前記1つ以上のデータ結合テストを前記ソースファイルに対して実行するステップと、
前記動的解析に基づいて、前記ソースファイルのデータ結合変数使用カバレッジを識別するステップと、
前記識別した制御結合カバレッジ及び前記識別したデータ結合変数使用カバレッジに基づいて報告を生成するステップと
を含む方法。
【請求項8】
前記データ結合が、前記ソースファイル内の呼出し先のコンポーネント及び呼出し元のコンポーネントに関連するパラメータ結合から生じるデータ結合を含む、請求項に記載の方法。
【請求項9】
前記1つ以上のデータ結合テストの各々を個別に実行する、請求項に記載の方法。
【請求項10】
前記報告が第1節及び第2節を含み、
前記第1節は、前記ソースファイルの前記制御結合カバレッジを0%~100%の%比率として示し、かつ前記識別した制御結合の総数を示し、
前記第2節は、前記ソースファイルの前記データ結合変数使用カバレッジを0%~100%の%比率として示し、かつ前記識別したデータ結合の総数を示す、
請求項に記載の方法。
【請求項11】
前記報告が第3節及び第4節を含み、
前記第3節は、前記識別した1つ以上の制御結合、前記識別した1つ以上の制御結合の、前記ソースファイルからの結合先の位置、及び前記識別した1つ以上の制御結合の各々についての前記動的解析に基づく制御結合カバレッジをリストアップし、
前記第4節は、前記ソースファイルの前記コンポーネントのうち、前記識別した1つ以上のデータ結合のうちの1つ以上によってリンクされたコンポーネント、及び前記リンクされたコンポーネント内のデータ結合の数をリストアップする、
請求項に記載の方法。
【請求項12】
前記報告が第4節及び第5節を含み、
前記第4節は、前記ソースファイル内の前記1つ以上のコンポーネントの各々についての、前記識別した1つ以上の制御結合についての前記制御結合カバレッジをリストアップし、前記制御結合カバレッジは前記動的解析に基づき、
前記第5節は、前記ソースファイル内の前記1つ以上のコンポーネントの各々についての、前記識別した1つ以上のデータ結合についてのデータ結合変数使用カバレッジ、及び使用されるグローバル変数の数をリストアップし、前記データ結合変数使用カバレッジは前記動的解析に基づく、
請求項に記載の方法。
【請求項13】
前記報告が第6節を含み、該第6節は第1テーブル及び第2テーブルを有し、前記第1テーブルは、前記識別した1つ以上の制御結合のうち、前記ソースファイルの前記1つ以上のコンポーネントの各々から生じる制御結合を示し、前記第2テーブルは、前記識別した1つ以上の制御結合のうち、当該制御結合の結合先が前記ソースファイルの前記1つ以上のコンポーネントのうちの1つである制御結合を示す、請求項に記載の方法。
【請求項14】
前記第1テーブル及び前記第2テーブルが、前記識別した1つ以上の制御結合間の呼出し元のポイントを識別する第1列と、前記識別した1つ以上の制御結合間の呼出し先のポイントを識別する第2列と、前記呼出し元または前記呼出し先が結合先とするソースファイルを示す第3列と、前記ソースファイルにおける、前記識別した1つ以上の制御結合の各々が存在するソフトウェアコードラインを示す第4列と、前記動的解析に基づく、前記識別した1つ以上の制御結合の制御結合カバレッジを示す第5列とを含む、請求項3に記載の方法。
【請求項15】
前記第4節が、前記第1テーブル及び前記第2テーブルに関連する前記ソースファイルのソースコードを含む、請求項14に記載の方法。
【請求項16】
前記報告が第7節を含み、該第7節は第3テーブル及び第4テーブルを有し、前記第3テーブルは、前記識別した1つ以上のデータ結合のうち、前記ソースファイルの前記1つ以上のコンポーネントの各々から生じるデータ結合を示し、前記第4テーブルは、前記識別した1つ以上のデータ結合のうち、当該データ結合の結合先が前記ソースファイルの前記1つ以上のコンポーネントのうちの1つのコンポーネントであるデータ結合を示し、前記第3テーブル及び前記第4テーブルが前記1つ以上のデータ結合テストのうちの1つの結果である、請求項に記載の方法。
【請求項17】
前記第7節が、前記実行した1つ以上のデータ結合テストの各々について反復される、請求項16に記載の方法。
【請求項18】
前記第3テーブルが、前記識別した1つ以上のデータ結合のうちの1つのデータ結合の変数を識別する第1列と、前記ソースファイルのソフトウェアコードラインのうち前記変数が存在するソフトウェアコードラインを示す第2列と、前記変数の変数型を識別する第3列と、前記1つ以上のコンポーネントのパラメータのうち前記変数に結合されたパラメータを識別する第4列と、前記識別したパラメータを含む前記コンポーネントを識別する第5列と、前記パラメータが前記変数を呼び出すソースコードラインを識別する第6列と、前記ソースファイルのコンポーネントのうち前記コンポーネントを含むコンポーネントを識別する第7列とを含む、請求項16に記載の方法。
【請求項19】
前記第4テーブルが、前記識別した1つ以上のデータ結合のうちの1つのデータ結合の変数を識別する第1列と、前記変数の結合先のコンポーネントを識別する第2列と、前記ソースファイルのソースコードラインのうち前記変数が呼び出されるソースコードラインを識別する第3列と、前記ソースファイルのコンポーネントのうち前記変数を呼び出すコンポーネントを含むコンポーネントを識別する第4列と、前記変数の変数型を識別する第5列と、前記1つ以上のコンポーネントのパラメータのうち前記変数に結合されたパラメータを識別する第6列と、前記パラメータが存在するソースコードラインを識別する第7列とを含む、請求項16に記載の方法。
【請求項20】
前記第7節が第4テーブルを含み、該第4テーブルは、前記ソースファイルの変数を識別する第1列と、前記変数を含む前記ソースファイルを識別する第2列と、前記ソースファイル内のコンポーネントのうち前記変数を含むコンポーネントを識別する第3列と、前記変数の変数型を識別する第4列と、前記変数の属性を識別する第5列と、前記ソースファイルのソースコードラインのうち当該変数を使用するソースコードラインを識別する第6列とを含む、請求項16に記載の方法。
【請求項21】
前記報告が第8節及び第9節を含み、前記第8節は、前記ソースファイルの前記データ結合変数使用カバレッジの高レベルの概要を提供し、前記第9節は、前記ソースファイルの前記ソースコードのうち前記第1テーブル及び前記第2テーブルに関連する前記ソースコードを提供する、請求項16に記載の方法。
【請求項22】
ソフトウェアコードのテスト中に制御結合解析を識別するシステムであって、
1つ以上のプロセッサと、1つ以上のコンピュータ可読のメモリと、1つ以上のコンピュータ可読の有形な記憶装置と、前記1つ以上の記憶装置のうちの少なくとも1つに記憶され、前記1つ以上のプロセッサのうちの少なくとも1つによって、前記1つ以上のメモリのうちの少なくとも1つを介して実行される命令とを含むシステムにおいて、
前記命令は、
テストするソースファイルを選択する命令であって、該ソースファイルはソースコードを有する命令と、
前記ソースファイルの前記ソースコードに対する静的解析を実行することによって、前記ソースファイル内の1つ以上の制御結合を識別する命令と、
前記ソフトウェアコードの1つ以上のテスト実行動作を定義する命令であって、該1つ以上のテスト実行動作は、前記識別した制御結合のうちの1つ以上を含み、前記1つ以上のテスト実行動作は動的解析を用いる命令と、
前記定義した1つ以上のテスト実行動作を実行する命令と、
前記動的解析に基づいて、前記ソースファイルの制御結合カバレッジを識別する命令と、
前記ソースファイルの前記識別した制御結合カバレッジに基づいて、制御結合報告を生成する命令と
を含むシステム。
【請求項23】
前記ソースファイルについてのファイル呼出し関係図を生成する命令を含み、該ファイル呼出し関係図は、前記ソースファイルの1つ以上のコンポーネント間のローカル呼出しを示す、請求項21に記載のシステム。
【請求項24】
前記ソースファイルが、システム内の1つ以上のノードからの複数のソースファイルを含むシステムセットであり、
前記命令が、前記複数のソースファイルについてのシステム呼出し関係図を生成する命令を含み、該システム呼出し関係図は、前記複数のソースファイル内の1つ以上のコンポーネント間のローカル呼出し、及び前記システムセットの前記複数のソースファイルのうち、前記システムセットの前記複数のソースファイルの各々が当該ソースファイルへの制御結合を有するソースファイル間のソースファイル・コンポーネント間呼出しを示す、請求項22に記載のシステム。
【請求項25】
前記命令が、
前記複数のソースファイル内の前記1つ以上のコンポーネントのうちの1つのコンポーネントを選択する命令と、
前記システムの前記1つ以上のノードのうち、前記選択したコンポーネントについての制御結合に関与するノードを表示する呼出し関係図を生成する命令と
を含む、請求項24に記載のシステム。
【請求項26】
ソフトウェアコードのテスト中にデータ結合解析を検証するシステムであって、
1つ以上のプロセッサと、1つ以上のコンピュータ可読のメモリと、1つ以上のコンピュータ可読の有形な記憶装置と、前記1つ以上の記憶装置のうちの少なくとも1つに記憶され、前記1つ以上のプロセッサのうちの少なくとも1つによって、前記1つ以上のメモリのうちの少なくとも1つを介して実行される命令とを含むシステムにおいて、
前記命令は、
テストするソースファイルを選択する命令であって、該ソースファイルが1つ以上のコンポーネントを有する命令と、
前記ソースファイルのソースコードに対する静的解析を実行することによって、前記ソースファイル内の1つ以上のデータ結合を識別する命令であって、前記データ結合は前記1つ以上のコンポーネントの変数及びパラメータである命令と、
前記識別した1つ以上のデータ結合を含む前記1つ以上のコンポーネントの各々について1つ以上のテストを定義する命令であって、該1つ以上のテストは動的解析を用いる命令と、
前記1つ以上のテストを前記ソースファイルに対して実行する命令と、
前記動的解析に基づいて、前記ソースファイルのデータ結合変数使用カバレッジを識別する命令と、
前記識別したデータ結合変数使用カバレッジに基づいて、データ結合報告を生成する命令と
を含むシステム。
【請求項27】
前記命令が、トレーサビリティ行列を生成する命令を含み、該トレーサビリティ行列は、前記1つ以上のテストのどれを用いるかを、1つ以上の要件の各々について示す、請求項26に記載のシステム。
【請求項28】
ソフトウェアコードのテスト中に制御結合及びデータ結合解析を識別するシステムであって、
1つ以上のプロセッサと、1つ以上のコンピュータ可読のメモリと、1つ以上のコンピュータ可読の有形な記憶装置と、前記1つ以上の記憶装置のうちの少なくとも1つに記憶され、前記1つ以上のプロセッサのうちの少なくとも1つによって、前記1つ以上のメモリのうちの少なくとも1つを介して実行される命令とを含むシステムにおいて、
前記命令は、
テストするソースファイルを選択する命令であって、該ソースファイルがソースコードを有し、該ソースコードが1つ以上のコンポーネントを実現する命令と、
前記ソースファイルの前記ソースコードに対する静的解析を実行することによって、前記ソースファイル内の1つ以上の制御結合を識別する命令と、
前記ソフトウェアコードの1つ以上の制御結合テスト実行動作を定義する命令であって、該1つ以上の制御結合テスト実行動作は、前記識別した制御結合のうちの1つ以上を含み、前記1つ以上の制御結合テスト実行動作は動的解析を用いる命令と、
前記定義した1つ以上の制御結合テスト実行動作を実行する命令と、
前記動的解析に基づいて、前記ソースファイルの制御結合カバレッジを識別する命令と、
前記ソースファイルの前記ソースコードに対する静的解析を実行することによって、前記ソースファイル内の1つ以上のデータ結合を識別する命令であって、前記データ結合は前記1つ以上のコンポーネントのうちの1つのコンポーネントの変数及びパラメータである命令と、
前記識別したデータ結合のうちの1つ以上を含む前記1つ以上のコンポーネントの各々について、1つ以上のデータ結合テストを定義する命令であって、該1つ以上のデータ結合テストは動的解析を用いる命令と、
前記1つ以上のデータ結合テストを前記ソースファイルに対して実行する命令と、
前記動的解析に基づいて、前記ソースファイルのデータ結合変数使用カバレッジを識別する命令と、
前記識別した制御結合カバレッジ及び前記識別したデータ結合変数使用カバレッジに基づいて報告を生成する命令と
を含むシステム。
【請求項29】
前記データ結合が、前記ソースファイル内の呼出し先のコンポーネント及び呼出し元のコンポーネントに関連するパラメータ結合から生じるデータ結合を含む、請求項8に記載のシステム。
【請求項30】
前記1つ以上のデータ結合テストの各々を個別に実行する、請求項8に記載のシステム。
【請求項31】
前記報告が第1節及び第2節を含み、
前記第1節は、前記ソースファイルの前記制御結合カバレッジを0%~100%の%比率として示し、かつ前記識別した制御結合の総数を示し、
前記第2節は、前記ソースファイルの前記データ結合変数使用カバレッジを0%~100%の%比率として示し、かつ前記識別したデータ結合の総数を示す、
請求項8に記載のシステム。
【請求項32】
前記報告が第3節及び第4節を含み、
前記第3節は、前記識別した1つ以上の制御結合、前記識別した1つ以上の制御結合の、前記ソースファイルからの結合先の位置、及び前記識別した1つ以上の制御結合の各々についての前記動的解析に基づく制御結合カバレッジをリストアップし、
前記第4節は、前記ソースファイルの前記コンポーネントのうち、前記識別した1つ以上のデータ結合のうちの1つ以上によってリンクされたコンポーネント、及び前記リンクされたコンポーネント内のデータ結合の数をリストアップする、
請求項8に記載のシステム。
【請求項33】
前記報告が第4節及び第5節を含み、
前記第4節は、前記ソースファイル内の前記1つ以上のコンポーネントの各々についての、前記識別した1つ以上の制御結合についての前記制御結合カバレッジをリストアップし、前記制御結合カバレッジは前記動的解析に基づき、
前記第5節は、前記ソースファイル内の前記1つ以上のコンポーネントの各々についての、前記識別した1つ以上のデータ結合についてのデータ結合変数使用カバレッジ、及び使用されるグローバル変数の数をリストアップし、前記データ結合変数使用カバレッジは前記動的解析に基づく、
請求項8に記載のシステム。
【請求項34】
前記報告が第6節を含み、該第6節は第1テーブル及び第2テーブルを有し、前記第1テーブルは、前記識別した1つ以上の制御結合のうち、前記ソースファイルの前記1つ以上のコンポーネントの各々から生じる制御結合を示し、前記第2テーブルは、前記識別した1つ以上の制御結合のうち、当該制御結合の結合先が前記ソースファイルの前記1つ以上のコンポーネントのうちの1つである制御結合を示す、請求項8に記載のシステム。
【請求項35】
前記第1テーブル及び前記第2テーブルが、前記識別した1つ以上の制御結合間の呼出し元のポイントを識別する第1列と、前記識別した1つ以上の制御結合間の呼出し先のポイントを識別する第2列と、前記呼出し元または前記呼出し先が結合先とするソースファイルを示す第3列と、前記ソースファイルにおける、前記識別した1つ以上の制御結合の各々が存在するソフトウェアコードラインを示す第4列と、前記動的解析に基づく、前記識別した1つ以上の制御結合の制御結合カバレッジを示す第5列とを含む、請求項34に記載のシステム。
【請求項36】
前記第4節が、前記第1テーブル及び前記第2テーブルに関連する前記ソースファイルのソースコードを含む、請求項35に記載のシステム。
【請求項37】
前記報告が第7節を含み、該第7節は第3テーブル及び第4テーブルを有し、前記第3テーブルは、前記識別した1つ以上のデータ結合のうち、前記ソースファイルの前記1つ以上のコンポーネントの各々から生じるデータ結合を示し、前記第4テーブルは、前記識別した1つ以上のデータ結合のうち、当該データ結合の結合先が前記ソースファイルの前記1つ以上のコンポーネントのうちの1つのコンポーネントであるデータ結合を示し、前記第3テーブル及び前記第4テーブルが前記1つ以上のデータ結合テストのうちの1つの結果である、請求項36に記載のシステム。
【請求項38】
前記第7節が、前記実行した1つ以上のデータ結合テストの各々について反復される、請求項7に記載のシステム。
【請求項39】
前記第3テーブルが、前記識別した1つ以上のデータ結合のうちの1つのデータ結合の変数を識別する第1列と、前記ソースファイルのソフトウェアコードラインのうち前記変数が存在するソフトウェアコードラインを示す第2列と、前記変数の変数型を識別する第3列と、前記1つ以上のコンポーネントのパラメータのうち前記変数に結合されたパラメータを識別する第4列と、前記識別したパラメータを含む前記コンポーネントを識別する第5列と、前記パラメータが前記変数を呼び出すソースコードラインを識別する第6列と、前記ソースファイルのコンポーネントのうち前記コンポーネントを含むコンポーネントを識別する第7列とを含む、請求項7に記載のシステム。
【請求項40】
前記第4テーブルが、前記識別した1つ以上のデータ結合のうちの1つのデータ結合の変数を識別する第1列と、前記変数の結合先のコンポーネントを識別する第2列と、前記ソースファイルのソースコードラインのうち前記変数が呼び出されるソースコードラインを識別する第3列と、前記ソースファイルのコンポーネントのうち前記変数を呼び出すコンポーネントを含むコンポーネントを識別する第4列と、前記変数の変数型を識別する第5列と、前記1つ以上のコンポーネントのパラメータのうち前記変数に結合されたパラメータを識別する第6列と、前記パラメータが存在するソースコードラインを識別する第7列とを含む、請求項7に記載のシステム。
【請求項41】
前記第7節が第4テーブルを含み、該第4テーブルは、前記ソースファイルの変数を識別する第1列と、前記変数を含む前記ソースファイルを識別する第2列と、前記ソースファイル内のコンポーネントのうち前記変数を含むコンポーネントを識別する第3列と、前記変数の変数型を識別する第4列と、前記変数の属性を識別する第5列と、前記ソースファイルのソースコードラインのうち当該変数を使用するソースコードラインを識別する第6列とを含む、請求項7に記載のシステム。
【請求項42】
前記報告が第8節及び第9節を含み、前記第8節は、前記ソースファイルの前記データ結合変数使用カバレッジの高レベルの概要を提供し、前記第9節は、前記ソースファイルの前記ソースコードのうち前記第1テーブル及び前記第2テーブルに関連する前記ソースコードを提供する、請求項7に記載のシステム。
【国際調査報告】