図面 (/)

技術 ソフトウェア試験装置及びソフトウェア試験プログラム

出願人 三菱電機株式会社
発明者 水野孝祐行田佳奈子
出願日 2014年2月28日 (5年4ヶ月経過) 出願番号 2014-038474
公開日 2015年9月7日 (3年10ヶ月経過) 公開番号 2015-162191
状態 特許登録済
技術分野 デバッグ/監視
主要キーワード 本フェーズ 多重書込 メモリアクセス監視 メモリマップ情報 トリガ設定 原因箇所 システムシミュレータ 保守支援装置
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2015年9月7日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (17)

課題

ソフトウェア品質評価におけるデータコピー処理の正確性を保証できる手段を提供する。

解決手段

システムシミュレータ10は、ソフトウェアを実行してソフトウェアを模擬する命令セットシミュレータ100と、命令セットシミュレータ100が模擬するソフトウェアによってアクセスされるメモリの動作を模擬するメモリモデル200と、ソフトウェアによるメモリモデルへのアクセスを監視し、監視したアクセス監視結果を記録し、記録したアクセス監視結果に基づいて、ソフトウェアによる処理であってコピー元となるコピー元メモリのデータを読み出しコピー先となるコピー先メモリへ書き込む処理であるデータコピー処理に、予め定義されたエラーが発生したかどうかを検出するコピー漏れ検出部200とを備えた。

概要

背景

組込みソフトウェア試験(以下、ソフトウェアはS/Wと記す)では一般的に、コードカバレッジなどのテストカバレッジを利用することによって、S/W品質評価が行われる。例えば特許文献1では、複数のモジュールで構成されたコンピュータシステムが組み込まれた組込みシステム保守支援装置において、クラスタテストを行ない、その結果に対して評価指標となるテスト網羅率を示すテストカバレッジを表示する技術が提案されている。特許文献2では、新たなコードカバレッジを用いて、コード間の一致と不一致とを明確に区別することができる一致性検査方法などが提案されている。特許文献3では、デバイスAPI呼び出しカバレッジを計算することにより、テストシナリオを評価する技術が提案されている。

概要

ソフトウェア品質評価におけるデータコピー処理の正確性を保証できる手段を提供する。システムシミュレータ10は、ソフトウェアを実行してソフトウェアを模擬する命令セットシミュレータ100と、命令セットシミュレータ100が模擬するソフトウェアによってアクセスされるメモリの動作を模擬するメモリモデル200と、ソフトウェアによるメモリモデルへのアクセスを監視し、監視したアクセス監視結果を記録し、記録したアクセス監視結果に基づいて、ソフトウェアによる処理であってコピー元となるコピー元メモリのデータを読み出しコピー先となるコピー先メモリへ書き込む処理であるデータコピー処理に、予め定義されたエラーが発生したかどうかを検出するコピー漏れ検出部200とを備えた。

目的

この発明は、S/W品質評価におけるデータコピー処理の正確性を保証することを目的とする

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

ソフトウェアを実行して前記ソフトウェアを模擬するソフトウェア模擬部と、前記ソフトウェア模擬部が模擬する前記ソフトウェアによってアクセスされるメモリの動作を模擬するメモリ模擬部と、前記ソフトウェアによる前記メモリ模擬部へのアクセスを監視し、監視したアクセス監視結果を記録し、記録した前記アクセス監視結果に基づいて、前記ソフトウェアによる処理であってコピー元となるコピー元メモリのデータを読み出しコピー先となるコピー先メモリへ書き込む処理であるデータコピー処理に、予め定義されたエラーが発生したかどうかを検出するエラー検出部とを備えたことを特徴とするソフトウェア試験装置

請求項2

前記ソフトウェア試験装置は、前記データコピー処理において前記コピー元メモリのアドレスと、前記コピー先メモリのアドレスとの組を含むメモリマップ情報が予め格納されたメモリマップ情報格納部を備え、前記エラー検出部は、前記アクセス監視結果を前記メモリマップ情報に記録し、前記アクセス監視結果が記録された前記メモリマップ情報に基づいて、前記エラーを検出することを特徴とする請求項1記載のソフトウェア試験装置。

請求項3

前記メモリマップ情報格納部が格納する前記メモリマップ情報は、有効と無効との2つの状態のいずれにあるかを示す第1のフラグを含み、前記エラー検出部は、前記ソフトウェアによって前記メモリ模擬部へ前記コピー元メモリへのデータの書き込み指示が送信されたか監視し、前記コピー元メモリへのデータの書き込み指示の検出に基づき前記第1のフラグを有効にすると共に、前記第1のフラグの状態に基づいて、前記エラーを検出することを特徴とする請求項2記載のソフトウェア試験装置。

請求項4

前記メモリマップ情報格納部が格納する前記メモリマップ情報は、有効と無効との2つの状態のいずれにあるかを示す第2のフラグを含み、前記エラー検出部は、前記ソフトウェアによって前記メモリ模擬部へ前記コピー先メモリへのデータの書き込み指示が送信されたかどうかを監視し、前記コピー先メモリへのデータの書き込み指示の検出に基づき前記第2のフラグの状態を有効にすると共に、前記第1のフラグと前記第2のフラグとの状態に基づいて、前記エラーを検出することを特徴とする請求項3記載のソフトウェア試験装置。

請求項5

前記ソフトウェア試験装置は、さらに、前記ソフトウェアを模擬するソフトウェア模擬部から出力される実行命令アドレスに基づいて、命令網羅率を示すコードカバレッジを測定するコードカバレッジ測定部を備えたことを特徴とする請求項1〜4のいずれかに記載のソフトウェア試験装置。

請求項6

前記エラー検出部は、前記コードカバレッジ測定部による前記コードカバレッジの測定結果が予め設定された閾値を超える場合に、前記アクセス監視結果に基づいて、前記予め定義されたエラーが発生したかどうかを検出することを特徴とする請求項5記載のソフトウェア試験装置。

請求項7

コンピュータに、ソフトウェアを実行して前記ソフトウェアを模擬する処理、模擬される前記ソフトウェアによってアクセスされるメモリの動作を模擬する処理、模擬される前記ソフトウェアによるメモリアクセス処理を監視し、監視したアクセス監視結果を記録し、記録した前記アクセス監視結果に基づいて、前記ソフトウェアによる処理であってコピー元となるコピー元メモリのデータを読み出してコピー先となるコピー先メモリへ書き込む処理であるデータコピー処理に、予め定義されたエラーが発生したかどうかを検出する処理を実行させるためのソフトウェア試験プログラム

技術分野

0001

この発明は、ソフトウェア品質試験するソフトウェア試験プログラムに関する。

背景技術

0002

組込みソフトウェア試験(以下、ソフトウェアはS/Wと記す)では一般的に、コードカバレッジなどのテストカバレッジを利用することによって、S/W品質評価が行われる。例えば特許文献1では、複数のモジュールで構成されたコンピュータシステムが組み込まれた組込みシステム保守支援装置において、クラスタテストを行ない、その結果に対して評価指標となるテスト網羅率を示すテストカバレッジを表示する技術が提案されている。特許文献2では、新たなコードカバレッジを用いて、コード間の一致と不一致とを明確に区別することができる一致性検査方法などが提案されている。特許文献3では、デバイスAPI呼び出しカバレッジを計算することにより、テストシナリオを評価する技術が提案されている。

先行技術

0003

特開2012−073692号公報
特開2009−163636号公報
特開2012−103745号公報

発明が解決しようとする課題

0004

コードカバレッジを利用した従来のS/W品質評価では、多様な条件で発生するデータコピー漏れを検出できないという課題があった。特許文献1〜3はコードカバレッジを利用しているため、データコピー処理が適切に実装されていない場合においても、誤って品質に問題が無いと判断してしまう。なぜなら、コードカバレッジはソースコードにおいて、通り得る論理パスの網羅率を示す指標であり、一つ一つの命令正誤までは判断しないからである。

0005

この発明は、S/W品質評価におけるデータコピー処理の正確性を保証することを目的とする。

課題を解決するための手段

0006

この発明のソフトウェア試験装置は、
ソフトウェアを実行して前記ソフトウェアを模擬するソフトウェア模擬部と、
前記ソフトウェア模擬部が模擬する前記ソフトウェアによってアクセスされるメモリの動作を模擬するメモリ模擬部と、
前記ソフトウェアによる前記メモリ模擬部へのアクセスを監視し、監視したアクセス監視結果を記録し、記録した前記アクセス監視結果に基づいて、前記ソフトウェアによる処理であってコピー元となるコピー元メモリのデータを読み出しコピー先となるコピー先メモリへ書き込む処理であるデータコピー処理に、予め定義されたエラーが発生したかどうかを検出するエラー検出部と
を備えたことを特徴とする。

発明の効果

0007

この発明によれば、S/W品質評価におけるデータコピー処理の正確性を保証することができる。

図面の簡単な説明

0008

実施の形態1の図で、システムシミュレータ10の構成図。
実施の形態1の図で、システムシミュレータ10を用いた際の、コピー漏れ検出手順を示すフローチャート
実施の形態1の図で、コピー漏れ検出部200の構成図。
図2のコピー漏れ検出S11の内容を示す詳細フローチャート
実施の形態1の図で、メモリマップ400を示す図。
実施の形態1の図で、コピー漏れ検出結果500を示す図。
実施の形態1の図で、コピー漏エラーリストを示す図。
図4のテーブル初期化S110の内容を示す詳細フローチャート。
図4メモリアクセス監視S111の内容を示す詳細フローチャート。
図9のS1112の内容を示す詳細フローチャート。
図9のS1114の内容を示す詳細フローチャート。
図9のS1116の内容を示す詳細フローチャート。
図4のエラー検出S114の内容を示す詳細フローチャート。
実施の形態2のシステムシミュレータ20の構成図。
実施の形態2の図で、システムシミュレータ20を用いた際の、コピー漏れ検出手順を示すフローチャート。
実施の形態2の図で、システムシミュレータ10,20のハードウェア構成の一例を示す図。

実施例

0009

実施の形態1.
[システムシミュレータ10の構成]
図1は、システムシミュレータ10(ソフトウェア試験装置)の構成図である。図1を参照してシステムシミュレータ10の構成を説明する。システムシミュレータ10は、命令セットシミュレータ(Instruction Set Simulator)100、コピー漏れ検出部200(エラー検出部)、メモリモデル300(メモリ模擬部)を備える。図2でシステムシミュレータ10の動作を後述する。

0010

(命令セットシミュレータ100)
命令セットシミュレータ100(ソフトウェア模擬部)は、S/Wとテストパタンを読み込み、命令処理メモリアクセス、及びプログラムカウンタの動作をシミュレーション(模擬)する機能を有する。

0011

(コピー漏れ検出部200)
コピー漏れ検出部200は、S/Wによるメモリモデル300へのアクセスを監視し、監視したアクセス監視結果を後述のメモリマップレコード211に記録し、メモリマップレコード211に基づいて、模擬されているS/Wによるデータコピー処理に、予め定義されたエラーが発生したかどうかを検出する。なおデータコピー処理とは、S/Wによる処理であり、コピー元となるSourceメモリのデータを読み出して、コピー先となるDestinationメモリへ書き込む処理である。具体的には、コピー漏れ検出部200は、命令セットシミュレータ100から出力される実行命令アドレス、メモリモデルへのR/W(リードライトリクエスト、アドレス、データ、及びメモリマップ400を基にコピー漏れ検出を行う。検出結果はコピー漏れ検出結果500に出力される。図3図4で、コピー漏れ検出部200の内部構成及び動作を後述する。

0012

(メモリモデル300)
メモリモデル300は、システムに実装されるメモリの動作を模擬する機能を有する。システムシミュレータ10では、データのコピー元となるSourceメモリと、データのコピー先となるDestinationメモリの2種類を想定する。この2種類のメモリは同一メモリでもよいし、または独立した2枚のメモリを用いて構成される。メモリの動作を正しく模擬できるのであれば、システムシミュレータ10に適用するためのメモリモデルの実装方法は特に制限されない。

0013

(メモリマップ400)
メモリマップ400は、SourceメモリのR/Wトリガ設定、Sourceメモリのアドレスと、Destinationメモリのアドレスのペアを定義したファイルである。
図5は、メモリマップ400のイメージを示す。

0014

(コピー漏れ検出結果500)
コピー漏れ検出結果500は、コピー漏れ検出部200が検出したコピー漏れに関する詳細情報の出力である。
図6は、コピー漏れ検出結果の出力イメージを示す。
図7は、検出可能なエラーのリストを示す。

0015

[システムシミュレータ10の全体動作フローチャート]
図2は、システムシミュレータ10を用いた際の、コピー漏れ検出手順を示すフローチャートである。図2を参照してシステムシミュレータ10の動作を説明する。
(1)S10では、命令セットシミュレータ100がS/Wシミュレーションを実行する。
(2)S11では、コピー漏れの検出を行う。コピー漏れの検出の詳細フローは、図4図8図9図10図11図12図13で説明する。図2のS11の詳細が図4である。図4はさらに、図8図9図13で詳しく説明(後述)する。図4のS110、S111、S114の詳細が、それぞれ図8図9図13である。また、図9のS1112、S1114、S1116の詳細が、それぞれ図10図12である(後述)。
(3)S12では、コピー漏れが0かどうか(コピー漏れが無いかどうか)の判断を行う。S12が真である(コピー漏れが無い)場合、テストを終了する。S12がである(コピー漏れがある)場合、S13に分岐する。
(4)S13では、例えば担当者が、コピー漏れ検出結果500を評価し、コピー漏れ原因箇所を特定する。
(5)S14では、例えば担当者が、コピー漏れ原因箇所を修正する。修正後、再びS10を実行する。
(6)以上のプロセスをS12において、コピー漏れが0と判断されるまで実行する。

0016

[コピー漏れ検出部200の構成]
図3は、コピー漏れ検出部200の構成図である。図3を参照してコピー漏れ検出部200の内部構成について説明する。コピー漏れ検出部200は、メモリマップテーブル210、テーブル初期化部220、メモリアクセス監視部230、エラー検出部240を備える。

0017

(メモリマップテーブル210)
メモリマップテーブル210は、メモリマップレコード211(メモリマップ情報)をSourceメモリアドレスとDestinationメモリアドレスの組み合わせ数分保持する。SourceメモリアドレスとDestinationメモリアドレスの組み合わせは、メモリマップ400で定義される。メモリマップレコード211は、Sourceメモリアドレス、またはDestinationメモリアドレスをキーとして検索できるように、登録される。
なおメモリマップテーブル210はシステムシミュレータ10のハードウェア構成を示す実施の形態3における磁気ディスク装置960(メモリマップ情報格納部の一例)あるいはRAM952(メモリマップ情報格納部の一例)に格納される。

0018

(メモリマップレコード211)
メモリマップレコード211は、SourceメモリR/Wトリガ設定212、SourceメモリPUSHフラグ213(第1のフラグ)、SourceメモリPOPフラグ214(第2のフラグ)、Sourceメモリアドレス215、Destinationメモリアドレス216、実行命令アドレス217、及びメモリデータ218から構成される。
SourceメモリR/Wトリガ設定212、Sourceメモリアドレス215、Destinationメモリアドレス216は、後述(テーブル初期化処理)のようにそれぞれメモリマップ400の値が記載される。SourceメモリPUSHフラグ213、SourceメモリPOPフラグ214、実行命令アドレス217、及びメモリデータ218等は、後述(S11142,S11163)のように、メモリアクセスの監視結果に応じて記録される。

0019

(1)SourceメモリR/Wトリガ設定212は、Sourceメモリのリードとライトどちらの発生タイミングでデータを登録するのかを表す。
(2)SourceメモリPUSHフラグ213は、Sourceメモリのデータがテーブルに登録された状態かどうかを表す。
(3)SourceメモリPOPフラグ214は、Sourceメモリのデータがテーブルから削除された状態かどうかを表す。
(4)Sourceメモリアドレス215は、Sourceメモリのアドレスを表す。
(5)Destinationメモリアドレス216は、Destinationメモリのアドレスを表す。
(6)実行命令アドレス217は、Sourceメモリにアクセスをおこなった命令のアドレスを表す。
(7)メモリデータ218は、Sourceメモリに書き込まれたデータ、またはSourceメモリから読みだされたデータを表す。

0020

(テーブル初期化部220)
テーブル初期化部220は、メモリアクセス監視部230がメモリマップテーブル210上をSourceメモリアドレス、またはDestinationメモリアドレスをキーとして検索を行えるように、メモリマップテーブル210を初期化する。初期化はS/Wシミュレーション開始時に実行される。テーブル初期化部220は、メモリマップ400に記述されたSourceメモリアドレスとDestinationメモリアドレスを1セットとして、1つのレコードのSourceメモリアドレス215とDestinationメモリアドレス216に値を設定する。またテーブル初期化部220は、メモリマップ400に記述されたSourceメモリR/Wトリガ設定をSourceメモリR/Wトリガ設定212に設定する。テーブル初期化部220は、SourceメモリPUSHフラグ213、SourceメモリPOPフラグ214、実行命令アドレス217、及びメモリデータ218は、0に設定する。データの設定完了後、テーブル初期化部220は、メモリマップテーブル210にメモリマップレコード211を登録する。テーブル初期化部220の動作のフローチャートは、図8で後述する。

0021

(メモリアクセス監視部230)
メモリアクセス監視部230は、メモリR/Wリクエストの発生をトリガとしてメモリマップテーブル210上を検索する。メモリアドレスをキーとしてメモリマップテーブル210の検索を行い、ヒットするレコードが存在すれば、データの登録・削除を行う。シミュレーションの途中でコピー漏れが発生した場合は、メモリアクセス監視部230は、エラー検出部240に通知し、コピー漏れ検出結果500に検出結果を出力させる。メモリアクセス監視部230の動作は、図9図10図11図12の説明で後述する。

0022

(エラー検出部240)
エラー検出部240は、メモリアクセス監視部230からのエラー通知、またはシミュレーション終了のタイミングで動作する。エラー検出部240は、各メモリマップレコード211の状態を基に、コピー漏れの原因を検出し、コピー漏れ検出結果500に検出結果を出力する。エラー検出部240の動作は、図13で後述する。

0023

[コピー漏れ検出S11の詳細動作]
図4はコピー漏れ検出S11の詳細フローチャートである。図4を参照してコピー漏れ検出S11の詳細動作を説明する。
(1)S110では、テーブル初期化部220がテーブルの初期化を行う。このテーブル初期化部220の動作詳細は図8で後述する。
(2)S111では、メモリアクセス監視部230が、ソフトウェアのメモリアクセスを監視し、アクセスがあればメモリマップテーブル210の検索・更新を行う。メモリアクセス監視部230の動作詳細は図9図10図11図12で後述する。
(3)S112では、メモリアクセス監視部230が、エラーが起こったかどうかを判定し、S111でエラーが起こったかどうかで分岐する。S112が真(エラーが発生)の場合、S114へ進む。S112が偽である(エラーが発生していない)場合、S113へ進む。
(4)S113では、シミュレーションが終了したかどうかで分岐する。S113が真である(シミュレーション終了)場合、S114へ進む。S113が偽である(シミュレーションが終了していない)場合、S111に戻る。
(5)S114では、メモリアクセス監視部230によるメモリアクセス監視(S111)でエラーが発生した場合に、エラー検出部240が、詳細情報をコピー漏れ検出結果500に出力する。また、エラー検出部240は、シミュレーション終了後に、メモリマップテーブル210中の各メモリマップレコード211のフラグをチェックし、エラーが発生していないかどうかチェックする。この詳細は図13で後述する。

0024

[テーブル初期化S110の詳細動作]
図8は、テーブル初期化部220が実行するテーブル初期化(S110)の詳細フローチャートである。図を参照してテーブル初期化部220によるテーブル初期化S110の動作について説明する。図8動作主体はテーブル初期化部220である。
(1)S1100では、テーブル初期化部220は、メモリマップ400からメモリマップデータを読み出す。
(2)S1101では、テーブル初期化部220は、メモリマップレコード211を生成し、全ての設定(212)、フラグ(213、214)、アドレス(215〜217)、データ(218)を0にクリアする。
(3)S1102では、テーブル初期化部220は、S11001で生成したメモリマップレコード211の各項目(212,215,216)に、S1100で読み出したSourceメモリR/Wトリガ設定、Sourceメモリアドレス、Destinationメモリアドレスを設定する。
(4)S1103では、テーブル初期化部220は、S1101で生成したメモリマップレコード211をメモリマップテーブル210に登録する。
(5)S1104では、メモリマップ400の全データを読み出したかどうかで分岐する。
S1104が真(読出し完了)であれば、終了する。S1104が偽(読出し未完了)であれば、S1100に戻る。

0025

[メモリアクセス監視S111の詳細動作]
図9は、メモリアクセス監視部230によるメモリアクセス監視S111の詳細フローチャートであり、動作主体はメモリアクセス監視部230である。図9を参照してメモリアクセス監視部230が行うメモリアクセス監視S111の詳細動作を説明する。図9におけるS1111,S1113、S1115等の判断は、メモリアクセス監視部230が、図3のメモリR/Wリクエスト、メモリアドレス等の入力されるデータをメモリマップテーブル210で参照することで判断できる。
(1)S1110では、メモリアクセスがあるかどうか判断する。エラー検出部240は図2においてメモリR/Wリクエスト等が入力されたかどうかで判断可能である。S1110が真(メモリアクセスあり)であれば、S1111へ分岐する。S1110が偽(メモリアクセスなし)であれば、終了する。
(2)S1111では、メモリアクセス監視部230は、Destinationメモリからの読出しかどうか判断する。S1111が真(Destinationメモリからの読出しである)であれば、S1112に分岐する。S1111が偽(Destinationメモリからの読出しではない)であれば、S1113に分岐する。
(3)S1112では、メモリアクセス監視部230はDestinationメモリ読出し時の処理を行う。詳細は図10で後述する。
(4)S1113では、メモリアクセス監視部230は、Sourceメモリへの書込みかどうか判断する。S1113が真(Sourceメモリへの書込みである)であれば、S1114に分岐する。S1113が偽(Sourceメモリへの書込みではない)であれば、S1115に分岐する。
(5)S1114では、メモリアクセス監視部230は、Sourceメモリ書込み時の処理を行う。詳細動作は図11で後述する。
(6)S1115では、メモリアクセス監視部230は、Destinationメモリへの書込みかどうか判断する。S1115が真(Destinationメモリへの書込みである)であれば、S1116に分岐する。S1115が偽(Destinationメモリへの書込みではない)であれば、終了する。
(7)S1116では、メモリアクセス監視部230は、Destinationメモリ書込み時の処理を行う。詳細は図12で後述する。

0026

[Destinationメモリ読出し時の処理S1112の詳細]
図10は、Destinationメモリ読出し時の処理S1112の詳細フローチャートである。動作主体はメモリアクセス監視部230である。図10を参照して、メモリアクセス監視部230による、Destinationメモリ読出し時の処理S1112の詳細内容を説明する。
(1)S11120では、メモリアクセス監視部230は、メモリマップテーブル210に、入力されたメモリアドレスに対してヒットするメモリマップレコードが存在するかどうか検索する。S11120が真(該当レコードが存在する)であれば、処理はS11121に分岐する。S11120が偽(該当レコードが存在しない)であれば、処理は終了する。
(2)S11121では、メモリアクセス監視部230は、SourceメモリPUSHフラグ213が無効かどうかで処理を分岐する。S11121が真(SourceメモリPUSHフラグ213が無効)であれば、終了する。S11121が偽(SourceメモリPUSHフラグ213が有効)であれば、S11122に分岐する。なおSourceメモリPUSHフラグ213は、図11のS11142で有効にされる。
(3)S11122では、読出しタイミングエラーを発生する。読出しタイミングエラーは、割り込みや外部からの非同期の読出しによって、SourceメモリへのデータをDestinationメモリにコピーする前に、誤ってDestinationメモリが読み出されたことを示す。つまりS11121でS11121が偽(SourceメモリPUSHフラグ213が有効)とは、メモリマップテーブル210にSourceメモリのデータが登録状態図12のS1113の処理を経ていない)にあることを示す。なお図10図13では、メモリアクセス監視部230は,エラー発生の場合(S11122,S11143、S11164,S11167,S11168、S11169、S11143)、エラー検出リクエストを、エラー検出部240に送信する(図2図3)が、「S11122,S11143、S11164,S11167,S11168、S11169、S11143」の各エラーは、エラーとして検出するために、「予め定義されたエラー」である。

0027

[Sourceメモリ書込み時の処理S1114の詳細]
図11を参照して、Sourceメモリ書込み時の処理S1114の詳細を説明する。図11は、Sourceメモリ書込み時の処理S1114の詳細フローチャートである。図11の動作主体はメモリアクセス監視部230である。
(1)S11140では、メモリアクセス監視部230は、メモリマップテーブル210に、入力されたメモリアドレスにヒットするレコードが存在するかどうか検索する。S11140が真(該当レコードが存在する)であれば、S11141に分岐する。S11140が偽(該当レコードが存在しない)であれば、終了する。
(2)S11141では、メモリアクセス監視部230は、SourceメモリPUSHフラグ213が無効かどうかで分岐する。S11141が真(SourceメモリPUSHフラグ213が無効)であれば、S11142に分岐する。S11141が偽(SourceメモリPUSHフラグ213が有効)であれば、S11143に分岐する。
(3)S11142では、メモリアクセス監視部230は、入力されたSourceメモリデータ、入力された実行命令アドレスを登録し、SourceメモリPUSHフラグ213を有効にする。
(4)S11143では、メモリアクセス監視部230は、コピー漏れエラーを出力する。コピー漏れエラーは、Sourceメモリの有効データをDestinationメモリにコピーする前に、Sourceメモリへの書込みを行ったことを示す。

0028

[Destinationメモリ書込み時の処理S1116の詳細]
図12は、Destinationメモリ書込み時の処理S1116の詳細フローチャートである。動作主体はメモリアクセス監視部230である。図12を参照してDestinationメモリ書込み時の処理S1116の動作について説明する。
(1)S11160では、メモリアクセス監視部230は、メモリマップテーブル210に入力されたメモリアドレスにヒットするレコードが存在するかどうか検索する。S11160が真(該当レコードが存在する)であれば、S11161に分岐する。S11160が偽(該当レコードが存在しない)であれば、終了する。
(2)S11161では、メモリアクセス監視部230はSourceメモリPUSHフラグ213が有効かどうかで処理を分岐する。S11161が真(SourceメモリPUSHフラグ213が有効)であれば、S11162に分岐する。S11161が偽(SourceメモリPUSHフラグ213が無効)であれば、S11165に分岐する。
(3)S11162では、メモリアクセス監視部230は、メモリマップレコードのDestinationメモリデータと、入力されたSourceメモリデータとが一致するかどうかで分岐する。S11162が真(DestinationメモリデータとSourceメモリデータ218が一致する)であれば、S11163に分岐する。S11162が偽(DestinationメモリデータとSourceメモリデータ218が一致しない)であれば、S11164に分岐する。
(4)S11163では、メモリアクセス監視部230はSourceメモリPUSHフラグ213を無効、SourceメモリPOPフラグ214を有効にする。S11163ではエラーは発生しないが、これは、メモリマップレコード211が存在し、SourceメモリデータPUSHフラグが有効(Sourceメモリにはデータが格納済み)であり、Destinationメモリデータ(図3左側の、入力されたデータ)とSourceメモリデータ(メモリマップレコード211のDestinationメモリアドレス216の値)とが同一のためである。
(5)S11164では、メモリアクセス監視部230は、Destinationメモリデータエラーを出力する。Destinationメモリデータエラーは、Destinationメモリへの書込みにおいて、コピー元のSourceメモリデータと異なるデータの書込みが行われたことを示す。
(6)S11165では、メモリアクセス監視部230はSourceメモリPOPフラグ214が有効かどうかで処理を分岐する。S11165が真(SourceメモリPOPフラグ214が有効)であれば、S11166に分岐する。S11165が偽(SourceメモリPOPフラグ214が無効)であれば、S11169に分岐する。
(7)S11166では、メモリアクセス監視部230は、DestinationメモリデータとSourceメモリデータ218が一致するかどうかで処理を分岐する。S11166が真(DestinationメモリデータとSourceメモリデータ218が一致する)であれば、S11167に分岐する。S11166が偽(DestinationメモリデータとSourceメモリデータ218が一致しない)であれば、S11168に分岐する。
(8)S11167では、メモリアクセス監視部230は、Destinationメモリ多重書込みエラーを出力する。Destinationメモリ多重書込みエラーは、Destinationメモリへの書き込みにおいて、既にコピーされているDestinationメモリアドレスへ、再度書込みをおこなったことを示す。
(9)S11168では、メモリアクセス監視部230は、コピー順序エラーを出力する。コピー順序エラーはSourceメモリにデータが格納される前に、Destinationメモリに書込みをおこなったことを示す。
(10)S11169では、メモリアクセス監視部230は、コピー順序エラーを出力する。コピー順序エラーはSourceメモリにデータが格納される前に、Destinationメモリに書込みをおこなったことを示す。

0029

[エラー検出S114の詳細]
図13は、エラー検出部240が行う、エラー検出S114の詳細フローチャートである。図13の動作主体はエラー検出部240である。図13を参照してエラー検出S114の動作について説明する。
(1)S1140では、エラー検出部240は、メモリアクセス監視でエラーが発生したかどうかで分岐する。上記のように(図3図4)、メモリアクセス監視部230はエラーを検出すると、エラー検出部240にエラー出力として、エラー検出リクエストを送信する。S1140が真であれば、S1141に分岐する。S1140が偽であれば、S1142に分岐する。
(2)S1141では、エラー検出部240は、コピー漏れ検出結果500にエラーの詳細を出力する。
(3)S1142では、エラー検出部240は、メモリマップテーブル210からメモリマップレコード211の取得を行う(図2)。
(4)S1143では、エラー検出部240はSourceメモリPUSHフラグ213が有効かどうか判断する。S1143が真であれば、S1144に分岐する。S1143が偽であれば、S1145に進む。
(5)S1144では、エラー検出部240はコピー未実行エラーを出力する。コピー未実行エラーはコピー記述漏れ、コピー記述のアドレス指定ミス等の理由により、正常なコピーが行われなかったことを表す。
(6)S1145でエラー検出部240はコピー漏れ検出結果500にエラーの詳細を出力する。
(7)S1146ではメモリマップテーブル210に含まれる全レコードのチェックが完了したかどうかで分岐する。S1146が真であれば、終了する。S1146が偽であれば、S1142に戻る。

0030

以上のように、システムシミュレータ10はコピー漏れ検出部200を備えたので、さまざまな要因、及びタイミングで発生するコピー漏れを検出することが可能となる。またシステムシミュレータ10によれば、多様な条件で発生するデータコピー漏れが検出可能となり、S/W品質評価におけるデータコピー処理の正確性を保証する手段を提供できる。

0031

実施の形態2.
図14図15を参照して実施の形態2のシステムシミュレータ20を説明する。実施の形態1のシステムシミュレータ10はコピー漏れ検出部200を備えるが、実施の形態2のシステムシミュレータ20は、コピー漏れ検出部200に加え、コードカバレッジ測定部600を備える。以下の説明では、実施の形態1と異なる部分についてのみ説明する。

0032

図14は、システムシミュレータ20の構成図である。図14を参照してシステムシミュレータ20の全体構成について説明する。システムシミュレータ20は、システムシミュレータ10に対して、さらにコードカバレッジ測定部600を備える。命令セットシミュレータ100、コピー漏れ検出部200、メモリモデル300、メモリマップ400、コピー漏れ検出結果500等は実施の形態1と同様である。

0033

(コードカバレッジ測定部600)
コードカバレッジ測定部600は、命令セットシミュレータ100から出力される実行命令アドレスを基に、命令網羅率を測定する機能を有数する。コードカバレッジ測定部600による測定結果は、コードカバレッジ測定結果700に出力される。コードカバレッジを正しく測定できるのであれば、本システムに適用するためのコードカバレッジ測定部600の実装方法は特に制限されない。コードカバレッジ測定結果700は、コードカバレッジ測定部600が計測したコードカバレッジに関する詳細情報の出力である。

0034

図15は、システムシミュレータ20の全体動作を示すフローチャートである。図15を参照してシステムシミュレータ20の動作について説明する。コードカバレッジ測定、コピー漏れ検出の2フェーズで構成されている。

0035

<フェーズ1>
(1)S20で命令セットシミュレータ100がS/Wシミュレーションを実行する。
(2)S21で、コードカバレッジ測定部600がコードカバレッジの測定を行う。
(3)S22で、コードカバレッジ測定部600は、コードカバレッジが100%(閾値の一例)かどうかの判断を行う。S22が真である(カバレッジが100%である)場合、S25に進む。なおコードカバレッジが100%は一例であり、90%以上でもよいし80%以上でも構わない。閾値としてのコードカバレッジの値は自由に設定すればよい。S22が偽である(カバレッジが100%ではない)場合、S23に分岐する。
(3)S23で例えば担当者が、コードカバレッジ測定結果700を評価する。S24で、例えば担当者が、該当箇所を修正する。修正後、再びS20を実行する。以上のプロセスをS22において、カバレッジが100%と判断されるまで実行する。カバレッジが100%と判断されれば、処理は、フェーズ2に進む。

0036

<フェーズ2>
フェーズ2は実施の形態1の図2と同様である。
(1)S25で命令セットシミュレータ100がS/Wシミュレーションを実行する。
(2)S26でコピー漏れの検出を行う。
(3)S27でコピー漏れが0かどうか(コピー漏れが無いかどうか)の判断を行う。S27が真である(コピー漏れなし)場合、終了する。S27が偽である(コピー漏れがある)場合、S28に分岐する。
(4)S28で例えば担当者がコピー漏れ検出結果500を評価し、コピー漏れ原因箇所を特定する。
(5)S29で、例えば担当者がコピー漏れ原因箇所を修正する。修正後、再びS25を実行する。
(6)以上のプロセスをS27において、コピー漏れが0と判断されるまで実行する。

0037

実施の形態2のシステムシミュレータ20は、コピー漏れ検出部とコードカバレッジ計測部とを備えたので、以下のような2つのフェーズの検証が可能となり、S/W品質を保証することができる。
<フェーズ1>
コードカバレッジ計測の結果が100%になるまで、テストパタンの修正を行う。本フェーズでテストパタンの妥当性を保証することができる。
<フェーズ2>
コピー漏れが0になるまで、ソースコードのコピー漏れ原因箇所の修正を行う。本フェーズでコピー処理の正確性を保証することができる。

0038

実施の形態3.
図16は、システムシミュレータ10、20のハードウェア構成の一例を示す図である。図16を参照して実施の形態4を説明する。実施の形態4は、コンピュータであるシステムシミュレータ10、20のハードウェア構成を説明する。システムシミュレータ10、20のハードウェア構成は同様であるので、システムシミュレータ10について説明する。

0039

ハードウェア資源を示す図16において、コンピュータであるシステムシミュレータ10は、プログラムを実行するCPU950(Central Processing Unit)を備えている。CPU950は、バス958を介してROM(Read Only Memory)951、RAM(Random Access Memory)952、表示装置953、キーボード954、マウス955、通信ボード956、CDD957、磁気ディスク装置960と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置960の代わりに、光ディスク装置フラッシュメモリなどの記憶装置でもよい。

0040

RAM952は、揮発性メモリの一例である。ROM951、CDD957、磁気ディスク装置960等の記録媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部、格納部、バッファの一例である。通信ボード956、キーボード954などは、入力部、入力装置の一例である。また、通信ボード956、表示装置953などは、出力部、出力装置の一例である。通信ボード956は、ネットワークに接続されている。

0041

磁気ディスク装置960には、オペレーティングシステム961(OS)、プログラム群962、ファイル群963が記憶されている。プログラム群962のプログラムは、CPU950、オペレーティングシステム961により実行される。

0042

上記プログラム群962には、以上の実施の形態の説明において「〜部」として説明した機能を実行するプログラムが記憶されている。プログラムは、CPU950により読み出され実行される。

0043

ファイル群963には、以上の実施の形態の説明において、「〜の判定結果」、「〜の算出結果」、「〜の抽出結果」、「〜の生成結果」、「〜の処理結果」として説明した情報や、データや信号値変数値パラメータなどが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。また、ディスクやメモリなどの記録媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU950によりメインメモリキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。

0044

また、以上に述べた実施の形態の説明において、データや信号値は、RAM952のメモリ、CDD957のコンパクトディスク、磁気ディスク装置960の磁気ディスク、その他光ディスクミニディスク、DVD(Digital Versatile Disk)等の記録媒体に記録される。また、データや信号は、バス958や信号線ケーブルその他の伝送媒体によりオンライン伝送される。

0045

また、以上の実施の形態の説明において、「〜部」、「命令セットシミュレータ」及び「メモリモデル」として説明したものは、「〜手段」、であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明したものは、ソフトウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU950により読み出され、CPU950により実行される。すなわち、プログラムは、以上に述べた「〜部」としてコンピュータを機能させるものである。あるいは、以上に述べた「〜部」の手順や方法をコンピュータに実行させるものである。

0046

以上の実施の形態では、システムシミュレータ10を説明したが、この動作は、プログラムとしても把握できることは以上の説明から当然である。また、システムシミュレータ10の各「〜部」の動作は方法としても把握できることは以上の説明により明らかである。

0047

10,20システムシミュレータ、100命令セットシミュレータ、200コピー漏れ検出部、210メモリマップテーブル、211メモリマップレコード、212 SourceメモリR/Wトリガ設定、213 SourceメモリPUSHフラグ、214 SourceメモリPOPフラグ、215 Sourceメモリアドレス、216 Destinationメモリアドレス、217実行命令アドレス、218メモリデータ、220 テーブル初期化部、230メモリアクセス監視部、240エラー検出部、300メモリモデル、400 メモリマップ、500 コピー漏れ検出結果、600コードカバレッジ測定部、700 コードカバレッジ測定結果。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ