JP5951130B2 - プログラム検証装置及びプログラム検証方法及びプログラム - Google Patents

プログラム検証装置及びプログラム検証方法及びプログラム Download PDF

Info

Publication number
JP5951130B2
JP5951130B2 JP2015522353A JP2015522353A JP5951130B2 JP 5951130 B2 JP5951130 B2 JP 5951130B2 JP 2015522353 A JP2015522353 A JP 2015522353A JP 2015522353 A JP2015522353 A JP 2015522353A JP 5951130 B2 JP5951130 B2 JP 5951130B2
Authority
JP
Japan
Prior art keywords
interrupt
program
verification
target program
verification target
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
JP2015522353A
Other languages
English (en)
Other versions
JPWO2014199496A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP5951130B2 publication Critical patent/JP5951130B2/ja
Publication of JPWO2014199496A1 publication Critical patent/JPWO2014199496A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、プログラム(以下、ソフトウェアともいう)を検証する技術に関する。
組込みソフトウェア(以下、S/Wとも表記する)の一種である制御S/Wは、多機能化・高付加価値化の要望に応えるために、大規模化・複雑化が急速に進んでいる。
また、ユーザの安全志向の高まりにより、製品の安全性を機能的に担保するための機能安全規格が様々な分野で策定されている。
一例として、自動車向けの機能安全規格ISO26262が2011年11月に策定され、製品開発において、コストアップを伴わない規格への対応が要求されている。
ISO26262では、ハードウェア(以下、H/Wとも表記する)のランダム故障だけではなくS/Wの系統故障のリスクの増加に対応すべく、安全性を達成するための開発プロセスと作業項目、各作業項目の成果物と推奨技法を規定している。
ISO26262に適合させながら製品を開発するためには、安全要求を実現するのに必要十分な作業項目と推奨技法を取捨選択して成果物を作成し、ISO26262認証を取得している各種ツールを活用して成果物の妥当性を検証することが、品質・コスト面から必要である。
また、近年の制御S/Wの開発プロジェクトでは、多機能化・高付加価値化の要望に応えるために、制御S/Wが制御対象とするI/O(Input/Output)デバイスの点数及び種類が増加している。
I/Oデバイスの点数及び種類の増加により、処理順序や実行タイミングの全てを網羅した試験を行うことが困難になっている。
このため、S/W結合試験以降の実機動作時(制御S/Wが制御機器に実装されて実行される際)に、試験では想定されなかった特殊な条件下で制御S/Wが実行され、H/W−S/Wインタフェースに関する不具合が発生することが問題になっている。
制御S/Wの単体試験で実施するH/W−S/Wインタフェース検証では、試験後の実機動作時にまれにしか起こらない条件を全て想定し、全ての条件に対応させた試験をもれなく行うことが要求される。
具体的には、以下の要求事項を実現することが求められる。
(1)検証結果を保証するため、可能な限り、検証対象のプログラムである実装コードを修正しないこと。
(2)H/WとS/Wの並行動作による処理のバリエーションをもれなく検証可能なこと。
(3)実装コードの有限時間動作を模擬可能なこと。
一般に、機器を止めずに無限時間動作を続ける状況は考えにくいため、有限時間動作の模擬でよい。
H/W−S/Wインタフェース検証のための従来のソフトウェア並行動作検証技術としては、I/Oデバイスの動作を模擬する方法(例えば特許文献1)と、モデル検査による実装コード解析(例えば非特許文献1)とが用いられることが多い。
I/Oデバイスの動作を模擬する方法(例えば特許文献1)では、手作業で設定したI/Oデバイスの動作条件に従って、I/Oデバイスの演算と割込み処理の有限時間動作を模擬することが可能である。
また、モデル検査による実装コード解析(例えば非特許文献1)では、実装コードをSMT(Satisfiability Modulo Theories)形式という専用記述に変換することで、有限時間での並行動作のバリエーションをもれなく検証可能である。
特開2007−233675号公報
従来のソフトウェア並行動作検証技術には以下に示す課題がある。
I/Oデバイスの動作を模擬する方法では、実装コードを修正せずに有限時間動作を検証可能である(要求事項(1)および(3)を達成可能)。
しかし、試験実施者が手作業により検証の条件を設定すると、試験実施者が想定する条件内での試験しかできず、H/WとS/Wの並行動作による処理のバリエーションをもれなく検証できるとは限らない(要求事項(2)を達成できない)。
モデル検査による実装コード解析では、H/WとS/Wの並行動作による処理のバリエーションを検証可能である(要求事項(2)および(3)を達成可能)。
しかし、実装コードと専用記述とが一致していることの保証が困難であり、実装コードと専用記述との間の一致性を保証するための追加工数が発生してしまう(要求事項(1)を達成できない)。
この発明は、上記のような事情に鑑みたものであり、検証対象プログラムを修正することなく、実機動作時に発生する条件にて検証対象プログラムの検証を行うことを主な目的とする。
本発明に係るプログラム検証装置は、
割込みに関する設定を行う割込み設定処理が含まれる検証対象プログラムを検証するプログラム検証装置であって、
前記検証対象プログラムを解析し、前記検証対象プログラムを実行する機器にて前記検証対象プログラムが実行された際に割込みが発生する可能性がある複数のタイミングをそれぞれ割込み候補タイミングとして指定する割込み候補タイミング指定部と、
前記検証対象プログラムを実行するプログラム実行部と、
前記プログラム実行部による前記検証対象プログラムの実行時に、前記割込み設定処理により前記割込み候補タイミングに割込みを禁止する設定が行われていれば、前記割込み候補タイミングに割込みを発生させず、前記割込み設定処理により前記割込み候補タイミングに割込みを許可する設定が行われていれば、前記割込み候補タイミングに割込みを発生させる割込み発生部と、
前記複数の割込み候補タイミングのうち、割込みを禁止することが適正であると想定される割込み候補タイミングを割込み禁止想定タイミングとして選択し、前記検証対象プログラムの実行結果を解析し、前記割込み禁止想定タイミングに前記割込み設定処理により割込みを禁止する設定が行われたか否かを判断する検証部とを有することを特徴とする。
本発明では、検証対象プログラムを解析し、検証対象プログラムが機器で実行される際に割込みが発生する可能性がある割込み候補タイミングを指定し、割込み候補タイミングでの割込み設定処理の設定に従って割込みの発生有無を調整する。
このため、割込み制御について、実機動作時と同じ条件で検証対象プログラムの検証を行うことができる。
実施の形態1に係るシミュレータ装置の構成例を示す図。 実施の形態1に係るシミュレータ装置と実装コードとI/Oデバイス模擬プログラムとの関係を示す図。 実施の形態1に係る実装コードのS/Wアーキテクチャを示す図。 実施の形態1に係るシミュレータ装置の動作例を示すフローチャート図。 実施の形態1に係る検証シナリオの生成手順の例を示す図。 実施の形態1に係る割込みポイントの例を示す図。 実施の形態1に係る入力シーケンス情報の例を示す図。 実施の形態1に係る割込みポイント情報の例を示す図。 実施の形態1に係るスケジューラ設定の例を示す図。 実施の形態1に係るI/Oデバイス状態情報(割込み)の例を示す図。 実施の形態1に係るI/Oデバイス状態情報(タイマ)の例を示す図。 実施の形態1に係る制御操作回数情報(連携操作)の例を示す図。 実施の形態1に係る制御操作回数情報(I/O操作)の例を示す図。 実施の形態1に係る制御操作回数情報(割込み操作)の例を示す図。 実施の形態1に係る制御操作回数情報(タイマ操作)の例を示す図。 実施の形態1に係る制御信号アクセスログの例を示す図。 実施の形態2に係るスケジューラ設定の例を示す図。 実施の形態3に係る制御操作回数情報(割込み操作)の例を示す図。 実施の形態1に係る制御操作情報の例を示す図。 実施の形態1〜3に係るシミュレータ装置のハードウェア構成例を示す図。
実施の形態1.
本実施の形態では、検証対象プログラムである実装コードを可能な限り修正せずに、H/WとS/Wの並行動作による処理のバリエーションを検証するシミュレータ装置を説明する。
より具体的には、本実施の形態では、単体試験においてI/Oデバイスの動作を模擬するI/Oデバイス模擬プログラムを用いて、実装コードを検証するシミュレータ装置を説明する。
本実施の形態に係るシミュレータ装置により、S/W結合試験以降からの手戻り工数を削減することが可能になる。
図2は、本実施の形態の形態に係るシミュレータ装置100と、検証の対象となる実装コード500と、I/Oデバイスを模擬するI/Oデバイス模擬プログラム600との関係を示す。
なお、シミュレータ装置100は、プログラム検証装置の例に相当する。
実装コード500は、制御機器200の動作アルゴリズムが記述されたプログラムである。
実装コード500は、シミュレータ装置100を用いた検証を含む試験後に、制御機器200に実装され、制御機器200で実行される。
実装コード500は、シミュレータ装置100による検証の対象となるプログラムであり、検証対象プログラムの例に相当する。
制御機器200は、図2に示すように、制御対象であるセンサデバイス300及び駆動デバイス400を制御する。
制御機器200には、ハードウェアとして、I/Oポート204、I/Oポート205、割込み206、タイマ207が含まれる。
また、図2には図示を省略しているが、制御機器200にはCPU(Central Processing Unit)又はマイクロコンピュータ、メモリといったハードウェアが搭載される。
制御機器200は、センサデバイス300や駆動デバイス400などの制御対象に、デジタル信号またはアナログ信号を送受信するためのI/Oポート204、205を介して接続され、I/Oポート204、205を介してセンサデバイス300及び駆動デバイス400を制御する。
I/Oデバイス模擬プログラム600は、図2に示すように、センサデバイス300、駆動デバイス400、I/Oポート204、I/Oポート205、割込み206及びタイマ207を模擬するプログラムである。
シミュレータ装置100は、実装コード500及びI/Oデバイス模擬プログラム600を実行して、制御機器200の動作を模擬する。
実装コード500に含まれるS/Wは、制御処理A201、制御処理B202及びハードウェアドライバ203がある。
制御処理A201及び制御処理B202は、制御対象に物理的な制御をかけるための制御ロジックを実現する。
ハードウェアドライバ203は、制御処理A201及び制御処理B202とH/W(I/Oポート204、I/Oポート205、割込み206、タイマ207)との間を仲介するプログラムである。
ハードウェアドライバ203において、I/O処理2031は、制御処理A201、制御処理B202のI/Oポート204、205へのレジスタアクセスを仲介する。
割込み処理2032は、H/Wからの割込み発生に対するハンドラとして機能する。
タイマ処理2033は、H/Wからのタイムアウト発生に対するハンドラとして機能する。
なお、図2に示した制御機器200の構成及び制御機器200に接続されるデバイスは一例であり、本実施の形態の適用範囲を図2の例に限定するものではない。
シミュレータ装置100は、実装コード500を、I/Oデバイス模擬プログラム600とともに実行して、実装コード500の検証を行う。
シミュレータ装置100には、スケジューラ101、検証シナリオ作成部102、制御監視部103、検証項目解析部104、割込み模擬部105、タイマ模擬部106が含まれる。
各要素の詳細は、図2を参照して後述する。
シミュレータ装置100は、主に、割込みについての検証と、イベント発生回数についての検証を行う。
以下にて、割込みについての検証とイベント発生回数についての検証を概説する。
また、以下では、説明の便宜上、割込みについての検証と、イベント発生回数についての検証を分けて説明するが、シミュレータ装置100は、割り込みについての検証とイベント発生回数についての検証を並行して行うことができる。
実装コード500の実行時に、制御処理またはハードウェアドライバ内の各処理が、複数の変数(後述する連携信号251、I/Oポート信号252、状態変数253、カウンタ変数254)に排他的に(割込みを介在させずに)連続してアクセスすべき局面がある。
このような局面では、制御処理またはハードウェアドライバ内の各処理は、割込みを禁止して当該複数の変数にアクセスすることが必要である。
割込みについての検証では、シミュレータ装置100は、このような割込みを禁止することが適正と想定されるタイミング(割込み禁止想定タイミングという)で制御処理A201が適切に割込みを禁止しているか否かを検証する。
制御処理及びハードウェアドライバ内の各処理は、上述のように、変数にアクセスする処理であり、変数アクセス処理の例に相当する。
また、制御処理及びハードウェアドライバ内の各処理は、割込みを許可する設定(以下、許可設定ともいう)及び割込みを禁止する設定(以下、禁止設定ともいう)を行っており、割込み設定処理の例にも相当する。
なお、以下では、制御処理A201が割込みの制御を適切に行っているかを検証する例を説明するが、制御処理B202、ハードウェアドライバ内の各処理が割込みの制御を適切に行っているかを検証する場合も同様の手順による。
シミュレータ装置100では、まず、検証シナリオ作成部102が実装コード500を解析する。
検証シナリオ作成部102は、実装コード500が制御機器200に実装されて制御機器200により実行される際に割込みが発生する可能性のある複数のタイミング(割込み候補タイミング又は割込みポイントという)を指定する。
次に、スケジューラ101が、検証のために実装コード500を実行する。
実装コード500の実行中に割込み候補タイミングが到来する度に、割込み模擬部105は、制御処理A201が許可設定及び禁止設定のいずれを行っているかを調査する。
割込み模擬部105は、割込み候補タイミングにおいて許可設定が行われていれば、割込みを発生させる。
一方、割込み候補タイミングにおいて禁止設定が行われていれば、割込み模擬部105は、割込みを発生させない。
実装コード500の実行が完了すると、検証項目解析部104が、複数の割込み候補タイミングのうち、割込みを禁止すること適正が想定される割込み候補タイミング(制御処理による禁止設定の適否をユーザに判断してもらうことが望ましいと考えられる割込み候補タイミング)を割込み禁止想定タイミングとして選択し、実装コード500の実行結果に基づき、割込み禁止想定タイミングで制御処理A201が適切に割込みを禁止しているか否かを検証する。
イベント発生回数の検証では、シミュレータ装置100は、関連のある2以上のイベントの各々の発生回数が適正であるかを検証する。
シミュレータ装置100は、実装コード500の実行により発生する複数のイベントのうち関連のある2以上のイベントをそれぞれ関連イベントとして相互に対応付けて記憶している。
関連イベントは、例えば、要求イベントと応答イベントのように因果関係にある2つ以上のイベントである。
また、シミュレータ装置100は、実装コード500が適正な場合の関連イベント間の発生回数の関係を記憶している。
例えば、シミュレータ装置100が、イベントAとイベントBとを関連イベントとして対応付けて記憶していると仮定する。
この場合に、シミュレータ装置100は、関連イベントの発生回数の関係として、例えば、イベントAの発生回数とイベントBの発生回数とが等しいという関係を記憶している。
スケジューラ101が実装コード500を実行し、実装コード500の実行により発生するイベントの発生回数を制御監視部103が計数する。
そして、実装コード500の実行が完了した後に、検証項目解析部104が、関連イベントの発生回数が適正であるか否かを検証する。
前出の例では、制御監視部103がイベントAの発生回数とイベントBの発生回数を計数し、検証項目解析部104が、計数されたイベントAの発生回数とイベントBの発生回数が等しいか否かを検証する。
図3は、実装コード500のS/Wアーキテクチャを示す。
スケジューラ101は、制御処理A201及び制御処理B202とハードウェアドライバ203内の各処理を周期的に起動する。
これらの処理間で制御信号と呼ぶ共有変数を介してデータが送受信され、また、制御操作が実行される。
なお、図3に示した処理と信号の関係は例示であり、本実施の形態の適用範囲を図3の例に限定するものではない。
制御操作と制御信号に関する説明を以下にて行う。
制御操作には、制御処理間での連携操作と、制御処理からハードウェアドライバに対して行われるI/O操作、割込み操作、タイマ操作が含まれる。
連携操作には、ある制御処理(例えば制御処理A201)が他の制御処理(例えば制御処理B202)に所定の演算を要求する要求操作と、演算を要求された制御処理(例えば制御処理B202)が要求元の制御処理(例えば制御処理A201)に演算結果を応答する応答操作が含まれる。
I/O操作には、制御処理がI/Oデバイスからデータを読み込む操作、制御処理がI/Oデバイスへデータを書き出す操作が含まれる。
割込み操作には、制御処理が割込み許可を設定する操作、制御処理が割込み禁止を設定する操作が含まれる。
タイマ操作には、制御処理がタイマ開始を通知する操作、制御処理がタイマ終了を通知する操作、制御処理がタイムアウトの通知を受け付ける操作が含まれる。
制御信号には、制御処理間で送受信する連携信号251と、制御処理とハードウェアドライバとの間で送受信するI/O信号が含まれる。
I/O信号には、制御処理とI/O処理2031との間の情報伝達のためのI/Oポート信号252、制御処理と割込み処理2032との間の情報伝達のための状態変数253、制御処理とタイマ処理2033との間の情報伝達のためのカウンタ信号254が含まれる。
なお、I/O信号として、図3に示していない信号を追加してもよい。
シミュレータ装置100は、例えば、連携操作における要求操作と応答操作を関連イベントとして管理する。
また、シミュレータ装置100は、例えば、I/O操作におけるI/O読み込み操作とI/O書出し操作も関連イベントとして管理する。
また、シミュレータ装置100は、例えば、割り込み操作における割込み許可の設定操作と割込み禁止の設定操作も関連イベントとして管理する。
更に、シミュレータ装置100は、例えば、タイマ操作におけるタイマ開始を通知する操作、タイマ終了の通知を受け付ける操作、タイムアウトの通知を受け付ける操作も関連イベントとして管理する。
ハードウェアドライバ203では、I/Oポートのレジスタアクセス、H/Wでの割込み発生、およびH/Wでのタイムアウト発生を処理するため、I/O処理2031、割込み処理2032、タイマ処理2033が制御処理と並行に動作する。
スケジューラ101は、制御処理A201、制御処理B202、I/O処理2031、割込み処理2032、タイマ処理2033の実行を管理する。
例えば、スケジューラ101は、ハードウェアドライバ203の実行優先度が制御処理よりも高ければ、制御処理の実行を中断してハードウェアドライバ203の実行を開始し、ハードウェアドライバ203の実行が終了した後に制御処理の実行を再開する。
制御処理とハードウェアドライバ203は、制御信号の値に基づいて、それぞれの処理内容を変更する。
次に、本実施の形態に係るシミュレータ装置100の構成を、図1を用いて説明する。
検証シナリオ作成部102は、プログラム記憶部108から実装コード500を読み出し、また、連携変数記憶部107から連携変数を読み出し、実装コード500と連携変数を解析して検証シナリオを作成する。
検証シナリオは、入力シーケンス情報と割込みポイント情報で構成される。
入力シーケンス情報は、実装コード500に入力される入力値の変遷が示される情報である。
入力シーケンス情報は、例えば、図7に示す情報である。
割込みポイント情報は、割込みポイントが示される情報である。
割込みポイント情報は、例えば、図8に示す情報である。
なお、入力シーケンス情報及び割込みポイント情報の詳細は、後述する。
なお、検証シナリオ作成部102により生成された検証シナリオは、検証シナリオ記憶部110に格納される。
なお、検証シナリオ作成部102は、割込み候補タイミング指定部の例に相当する。
実装コード実行部1011は、プログラム記憶部108から実装コード500を読み出し、また、スケジューラ設定記憶部109からスケジューラ設定を読み出し、スケジューラ設定に従って実装コード500を実行する。
スケジューラ設定は、実装コード500とI/Oデバイス模擬プログラム600の起動周期及び起動順序が示されている情報である。
スケジューラ設定は、例えば、図9に示す情報である。
スケジューラ設定の詳細は後述する。
なお、実装コード実行部1011は、プログラム実行部の例に相当する。
I/Oデバイス模擬プログラム実行部1012は、プログラム記憶部108からI/Oデバイス模擬プログラム600を読み出し、検証シナリオ記憶部110から検証シナリオを読み出し、スケジューラ設定記憶部109からスケジューラ設定を読み出す。
そして、I/Oデバイス模擬プログラム実行部1012は、検証シナリオ及びスケジューラ設定に従って、I/Oデバイス模擬プログラム600を実行する。
I/Oデバイス模擬プログラム実行部1012は、I/Oデバイス模擬プログラム600の実行にあたって、タイマ模擬部106からのタイマ通知も利用する。
また、I/Oデバイス模擬プログラム実行部1012は、割込み模擬部105からのH/W割込みに基づき、割込み206を模擬して、ハードウェアドライバ203内の割込み処理2032に対して割込みを要求する。
I/Oデバイス模擬プログラム実行部1012は、プログラム実行部の例に相当し、また、割込み発生部の例にも相当する。
なお、実装コード実行部1011とI/Oデバイス模擬プログラム実行部1012は、図2に示したスケジューラ101を詳細化したものである。
割込み模擬部105は、検証シナリオ記憶部110から検証シナリオを読み出し、I/Oデバイス状態記憶部111からI/Oデバイス状態情報(割込み)を読み出す。
そして、割込み模擬部105は、検証シナリオとI/Oデバイス状態情報(割込み)に従ってH/W割込みの動作を模擬する。
I/Oデバイス状態情報(割込み)には、割込みが許可されているか、割込みが禁止されているかが示される。
I/Oデバイス状態情報(割込み)は、例えば、図10に示す情報である。
割込み模擬部105は、検証シナリオに示される割込みポイントが到来した際に、I/Oデバイス状態情報(割込み)を参照し、割込みが許可されている場合に、H/W割込みをI/Oデバイス模擬プログラム実行部1012に通知する。
I/Oデバイス状態情報(割込み)の詳細は後述する。
割込み模擬部105は、割込み発生部の例に相当する。
タイマ模擬部106は、I/Oデバイス状態記憶部111からI/ Oデバイス状態情報(タイマ)を読み出し、I/Oデバイス状態情報(タイマ)に従ってH/Wタイマの動作を模擬する。
I/Oデバイス状態情報(タイマ)には、タイマ設定の詳細が示される。
I/Oデバイス状態情報(タイマ)は、図11に示す情報である。
I/Oデバイス状態情報(タイマ)の詳細は後述する。
制御監視部103は、制御操作情報記憶部115から制御操作情報を読み出し、実装コード500の実行中に、制御操作情報に従って、イベント発生回数である制御操作回数を計数する。
また、制御監視部103は、実装コード500の実行中に、制御処理A201等による制御信号(変数)へのアクセス状況を監視する。
更に、制御監視部103は、制御操作回数を制御操作回数記憶部112に記録し、変数アクセス状況を制御信号アクセスログとして制御信号アクセスログ記憶部113に記録する。
制御操作回数は、例えば図12〜図15に示す形式で制御操作回数記憶部112に記録される。
また、制御信号アクセスログは、例えば図16に示す情報である。
制御操作情報には、関連イベントである関連操作が示され、関連操作間の発生回数の関係についての条件が示される。
制御操作情報は、例えば、図19に示す情報である。
図19では、制御処理A201と制御処理B202との間の連携操作での関連操作が示される。
図19の例では、演算の種類が異なる連携操作Xと連携操作Yが示される。
連携操作Xでは、制御処理A201からの要求操作と制御処理B202からの応答操作が関連操作として定義され、連携操作Yでは、制御処理B202からの要求操作と制御処理A201からの応答操作が関連操作として定義されている。
また、図19の例では、関係条件が「±0」となっており、要求操作の発生回数と応答操作の発生回数が等しいことが条件となっている。
関係条件は、実装コード500が適正な場合の関連操作間の発生回数の関係が定義されており、図19の例では、実装コード500が適正な場合は、要求操作の発生回数と応答操作の発生回数が等しいことが定義されている。
図19では図示を省略しているが、制御操作情報には、図19と同様の内容がI/O操作、割込み操作、タイマ操作にも定義されている。
また、図19の例では、要求操作の発生回数と応答操作の発生回数が等しいことが条件となっているが、これ以外の条件を定義してもよい。
例えば、[要求操作の回数]≧[応答操作の回数]であれば実装コード500が適正と判断する旨の条件を定義してもよい。
なお、制御監視部103は、計数部の例に相当する。
また、制御操作情報は関連イベント情報の例に相当する。
また、制御操作情報記憶部115は関連イベント情報記憶部の例に相当する。
検証項目解析部104は、制御操作回数記憶部112から制御操作回数を読み出し、制御操作回数が制御操作情報に示す関係条件に合致するかを検証する。
また、検証項目解析部104は、制御信号アクセスログ記憶部113から制御信号アクセスログを読み出す。
そして、検証項目解析部104は、制御処理A201等による制御信号(変数)へのアクセス状況を解析し、割込み禁止想定タイミングにおいて適切に割込みが禁止されているか否かを検証する。
また、検証項目解析部104は検証結果を示す検証レポートを作成し、作成した検証レポートを検証レポート記憶部114に格納する。
検証項目解析部104は、検証部の例に相当する。
次に、本実施の形態に係るシミュレータ装置100の動作例を図4のフローチャートを用いて説明する。
図4のフローチャートの入力は、実装コード500と連携変数を識別する情報である。
図4のフローチャートの出力は、実装コード500の実行結果を検証項目解析部104が検証した結果である検証レポートである。
センサデバイス300及び駆動デバイス400といったI/Oデバイスの動作を模擬するには、I/Oデバイス模擬プログラム600を実装コード500とは異なる短い周期で実行する必要がある。
以降では、図4のフローチャートの各ステップを順に説明していくが、各ステップを説明順に実行するわけではない。
実装コード500の実行(S102)から割込み処理の実行(S106)までの各ステップが逐次実行され、I/Oデバイス模擬プログラム600の実行(S107)からタイマ処理の実行(S109)までの各ステップが逐次実行され、これら2つのフローが並行に実行される。
まず、検証シナリオ作成部102が、実装コード500と連携変数を解析して、検証シナリオを作成する(S101)。
前述したように、検証シナリオは、入力シーケンス情報と割込みポイント情報から構成される。
入力シーケンス情報は、ハードウェアドライバ203を介して実装コード500に与える入力値を時系列に並べた情報である。
割込みポイント情報は、H/Wでの割込み発生を模擬するタイミング(割込みポイント)を指定する情報である。
図5に示すように、検証シナリオ作成部102は、客先仕様書、制御仕様書、関数仕様書など実装コード500を作成するための入力成果物に基づいて、例えば既存の方法を用いて入力シーケンス情報を作成する。
または、検証シナリオ作成部102は、実装コード500のカバレッジ基準(例えばC0、C1、C2、MC/DC(Modified Condition/Decision Coverage)など)に基づいて、例えば既存の方法を用いて入力シーケンス情報を作成してもよい。
または、これら2つの方法を組み合わせて作成してもよい。
割込みポイント情報の作成では、検証シナリオ作成部102は、実装コード500内で、複数の処理(複数の制御処理、制御処理とハードウェアドライバ内の処理)が同一の制御信号(変数)にアクセスしている箇所を特定し、複数の処理がアクセスする制御信号(変数)を競合制御信号(競合変数)として抽出する。
そして、検証シナリオ作成部102は、競合制御信号へのアクセスの前後をそれぞれ割込みポイントとして指定する。
図6は、競合制御信号及び割込みポイントを説明する。
図6では、制御処理A201及び割込み処理2032が状態変数1〜3にアクセスし、タイマ処理2033が状態変数3にアクセスしている。
このように、状態変数1〜3は、複数の処理によりアクセスされており、検証シナリオ作成部102は、状態変数1〜3を競合制御信号として抽出する。
そして、検証シナリオ作成部102は、各状態変数へのアクセスの前後のタイミングを割込みポイントとして指定する。
図6の例では、検証シナリオ作成部102は、4つのタイミングを割込みポイントとして指定している。
図7は、入力シーケンス情報の例を示している。
図7の例では、実装コード500の入力変数をi、jとし、入力変数i、jに代入される値を時系列に示している。
図7の各行は、1つの試験での入力値のパターンを示している。
本実施の形態では、シミュレータ装置100は有限時間動作を模擬するため、入力シーケンス情報では、最大ステップ数が指定されている。
最大ステップ数は、起動回数の最大値、すなわち動作終了時点を判定するための起動回数である。
図8は、割込みポイント情報の例を示している。
図8は、図6の例に対応させた割込みポイント情報である。
前述したように、状態変数1〜3へのアクセスの前後のタイミングが割込みポイントである。
シミュレータ装置100は、図7の行数分の試験を行う。
つまり、入力シーケンス情報がn行で構成されていれば、割込み模擬部105は、入力シーケンス情報の各行の入力値のパターンを用いて、実装コード500の実行をn回繰り返す。
そして、割込み模擬部105は、実装コード500の各回の実行時に、図8に示す割込みポイントにて割込みが禁止されていなければ、H/W割込みを発生させる。
説明を図4のフローチャートに戻す。
検証シナリオが生成されると、スケジューラ設定で指定されている起動周期と起動順序に従って、実装コード500中の制御処理とI/Oデバイス模擬プログラム600が実行される(S102、S107)。
I/Oデバイス模擬プログラム600の実行(S107)では、I/Oデバイス模擬プログラム実行部1012が、検証シナリオの入力シーケンス情報から該当するステップの入力値を読み取って、実装コード500の入力変数に設定する。
スケジューラ設定を図9に示す。
図9では、シミュレータ装置100において二種類のI/Oデバイス模擬プログラム600が実行され、二種類のI/O処理2031が実行され、二種類の制御処理が実行される場合のスケジューラ設定を示している。
また、起動順序は、同じ起動周期を持つ処理が複数ある場合の実行優先度を表す。
起動順序が「1」の処理が優先して実行される。
実装コード500の実行(S102)では、実装コード実行部1011が、実装コード500に記述されている制御ロジックのとおりに、入力値の読込み、各制御信号の読込み・書出し、制御演算を実行し、演算結果である出力値を出力変数に書出す。
実装コード500の実行中に、制御処理により割込みの許可又は割込みの禁止が設定される。
具体的には、I/Oデバイス状態記憶部111内のI/Oデバイス状態情報(割込み)に、割込みの許可又は割込みの禁止が設定される。
図10は、I/Oデバイス状態情報(割込み)の例を示す。
図10では、X及びYという2つの割込み206が配置される場合のI/Oデバイス状態情報(割込み)が示されている。
また、制御処理の中でタイマ開始又はタイマ終了が発生すると、I/Oデバイス状態記憶部111内のI/Oデバイス状態情報(タイマ)にタイマ管理のための情報が記述される。
図11は、I/Oデバイス状態情報(タイマ)の例を示す。
図11では、X及びYという2つのタイマ207が配置される場合のI/Oデバイス状態情報(タイマ)が示されている。
I/Oデバイス状態情報(タイマ)では、タイマ種別としてワンショット(1回タイムアウトしたらタイマが自動的に終了)又は継続(タイマ終了操作をするまで何度でもタイムアウトが発生)、タイマ状態として開始又は終了が設定される。
また、I/Oデバイス状態情報(タイマ)では、タイマ値やカウンタも設定される。
説明を図4のフローチャートに戻す。
制御監視部103は、実装コード500の実行の間(S102)、制御操作と制御信号アクセスを監視する(S103)。
制御監視部103は、制御操作を検出した場合は、該当する制御操作の制御操作回数をインクリメントする(S104)。
また、制御監視部103は、制御信号アクセスを検出した場合は、制御信号アクセスログに制御信号名、アクセス種別、およびアクセス値を時間順に追加していく(S105)。
図12〜図15に制御操作回数情報を示す。
図12は、連携操作での制御操作回数を示す制御操作回数情報(連携操作)である。
図13は、I/O操作での制御操作回数を示す制御操作回数情報(I/O操作)である。
図14は、割込み操作での制御操作回数を示す制御操作回数情報(割込み操作)である。
図15は、タイマ操作での制御操作回数を示す制御操作回数情報(タイマ操作)である。
制御操作回数情報(連携操作)及び制御操作回数情報(I/O操作)では、「関係条件」が「YES」となっている2つの制御操作が関連操作である。
つまり、「関係条件」が「YES」となっている2つの制御操作は、図19の制御操作情報で関連操作として定義されている。
また、制御操作回数情報(割込み操作)及び制御操作回数情報(タイマ操作)では、同じ行に記述されている制御操作の対が関連操作である。
図16に制御信号アクセスログを示す。
制御信号アクセスログには、「処理名」、「制御信号名」、「アクセス種別」、「アクセス値」が記述される。
「処理名」の欄では、制御信号へのアクセスを行った処理の名称が記述される。
「制御信号名」の欄では、アクセスの対象となった制御信号の名称が記述される。
「アクセス種別」の欄では、実施されたアクセスの種別が記述される。
「アクセス値」の欄では、制御信号から読み出された又は制御信号に書き出された値が記述される。
説明を図4のフローチャートに戻す。
割込み模擬部105は、図8に示した割込みポイントの際に、図10のI/Oデバイス状態情報(割込み)を参照し、割込み状態が「許可」の場合に、H/W割込みを発生させる(S106)。
割込み模擬部105がH/W割込みを発生させると、I/Oデバイス模擬プログラム実行部1012がI/Oポート205を模擬して、実装コード500の割込み処理2032に対して割込みを発生させる。
割込み処理2032は、対象の制御信号(例えば、状態変数1)にアクセスする。
一方、割込みポイントの際の割込み状態が「禁止」であれば、割込み模擬部105はH/W割込みを発生させない。
また、タイマ模擬部106が、図11のI/Oデバイス状態情報(タイマ)を参照し、タイマ状態が「開始」である場合は、該当するタイマをカウントアップする(S108)。
また、カウンタがタイマ値以上になってタイマが満了したら、実装コード実行部1011は、該当するタイマ処理2033を実行する。
そして、実装コード500とI/Oデバイス模擬プログラム600の起動回数が図7の最大ステップ数に到達したら、検証項目解析部104が制御捜査回数と制御信号アクセスログの検証を行い、検証レポートを作成する(S110)。
より具体的には、検証項目解析部104は、図12〜図15の制御操作回数情報を参照し、関連操作間の発生回数がつり合っていれば、制御操作回数が適正と判断する。
各制御操作の判定方法を以下に示す。
「要求操作」の発生回数=「応答操作」の発生回数(関係条件がYESの場合)
「I/O読込み」の発生回数=「I/O書出し」の発生回数(関係条件がYESの場合)
「割込み許可」の発生回数=「割込み禁止」の発生回数
「タイマ開始」の発生回数=「タイマ終了」の発生回数+「タイムアウト」の発生回数(ワンショットの場合)
「タイマ開始」の発生回数=「タイマ終了」の発生回数(継続の場合)
図12〜図15の例では、検証項目解析部104は、制御処理Aの連携操作Xは適正と判断し、制御処理Bの連携操作Yも適正と判断する。
また、制御処理AのI/O操作Xは適正でないと判断する。
また、制御処理Aの割込み操作Xは適正と判断し、制御処理Bの割込み操作Yは適正でないと判断する。
制御処理Aのタイマ操作Xは適正と判断し、制御処理Bのタイマ操作Yは適正でないと判断する。
また、検証項目解析部104は、図16の制御信号アクセスログを参照し、制御処理A等による競合制御信号へのアクセスの間に他の処理による競合制御信号へのアクセスが混在していなければ、割込み制御が適正と判断する。
図16の例では、検証項目解析部104は、競合制御信号である状態変数1、状態変数2、状態変数3に着目する。
図16の例では、制御処理Aからこれらの状態変数へのアクセス(No.2、No.4、No.5)の間に、割込み処理から状態変数1へのアクセス(No.3)が混在しているので、検証項目解析部104は、割込み禁止想定タイミングにおいて適正に割込みが禁止されなかったと判断する。
つまり、検証項目解析部104は、複数の割込み候補タイミングのうち、制御処理Aから状態変数1、状態変数2、状態変数3へのアクセスの合間にあたるタイミングを割込み禁止想定タイミングとして選択し、割込み禁止想定タイミングに状態変数1、状態変数2、状態変数3のいずれかに対して他の処理からのアクセスがあったか否かを検査する。
そして、検証項目解析部104は、割込み禁止想定タイミングに状態変数1、状態変数2、状態変数3のいずれかに対して他の処理からのアクセスがあれば、適正に割込みが禁止されなかったと判断する。
また、検証項目解析部104は、制御信号アクセスログに示されるアクセス値が、客先仕様書、制御仕様書、関数仕様書など実装コード500を作成するための入力成果物に照らして正しいかどうかを判断する。
そして、検証項目解析部104は、検証レポートを出力する。
検証レポートには、少なくとも、検証項目解析部104により適正と判断されなかった項目(制御操作回数、割込み制御)が記述される。
例えば、シミュレータ装置100の利用者は、シミュレータ装置100により生成された検証レポートを用いて、ISO26262認証取得のマイクロコンピュータ・エミュレータで実装コードの動作確認を行う。
このようにすると、実装コードを容易にISO26262規格に適合させることができる。
本実施の形態に係るシミュレータ装置100によれば、以下の効果を得ることができる。
実装コードを計算機上で動作させて検証するため、従来技術のように専用記述を生成する必要がない。
このため、実装コードと専用記述との一致性保証が不要であり、検証結果の正しさの保証が容易である。
I/Oデバイス模擬プログラムの実行によりS/Wへの入力シーケンスと割込みポイントを網羅的に実行することで、H/WとS/Wの並行動作による処理のバリエーションをもれなく検証できる。
H/W−S/Wインタフェースに関する不具合を単体試験で検出することで、S/W結合試験以降からの手戻り工数を削減できる。
以上、本実施の形態では、
実装コードと連携変数を解析して入力シーケンスと割込みポイントからなる検証シナリオを作成する構成と、
スケジューラ設定で指定する起動周期と起動順序に従って実装コードを実行する構成と、
スケジューラ設定と検証シナリオに従って、I/Oデバイス模擬プログラムを実行する構成と、
I/Oデバイス状態情報で指定するタイマ種別、タイマ状態、およびタイマ値に従ってH/Wタイマの動作を模擬する構成と、
実装コードの実行中の制御操作を監視して制御操作回数を記録する構成と、
実装コードの実行中の制御信号へのアクセスを監視して制御信号アクセスログを記録する構成と、
検証シナリオとI/Oデバイス状態情報で指定する割込み状態に従ってH/W割込みの動作を模擬する構成と、
制御操作回数の記録において要求と応答が正しく対応するかチェックする構成と、
制御信号アクセスログの記録において競合制御信号に排他的にアクセスしているかを検証する構成と、
制御操作回数と制御信号アクセスログのチェック結果から検証レポートを作成する構成と、
を備えたソフトウェア並行動作検証装置を説明した。
実施の形態2.
実施の形態1では、検証対象の制御処理を常時動作させて実装コード500を検証する方法を説明した。
本実施の形態では、検証対象の制御処理を動的に生成又は削除して実装コード500を検証する方法を説明する。
本実施の形態では、図9のスケジューラ設定に代えて、図17のスケジューラ設定を用いる。
図17のスケジューラ設定では、図9のスケジューラ設定と比較して、起動トリガと起動状態の欄が追加されている。
起動トリガの欄には、制御処理を起動又は終了するためのイベントが示される。
図17の例では、連携信号、I/Oポート、状態変数、カウンタが記述される。
図17の例では、制御処理Cは、例えば、所定の連携信号251を入力するイベントが発生した際に、動作を開始する。
実装コード実行部1011は、起動状態が「常時」になっている制御処理とハードウェアドライバ203を周期的に実行する。
そして、ある制御処理の起動トリガに合致する状態が発生したら、起動状態が「開始」であれば、実装コード実行部1011は、その制御処理の周期的な実行を開始する。
また、ある制御処理の起動トリガに合致する状態が発生したら、起動状態が「終了」であれば、実装コード実行部1011は、その制御処理の周期的な実行を終了する。
以上のように、本実施の形態によれば、限られた時間の間だけ動作する制御処理が含まれる実装コードの検証も行うことができる。
以上、本実施の形態では、スケジューラ設定にあらかじめ起動トリガを設定しておき、実装コードを実行中に起動トリガに合致する状態が発生したら、該当する制御処理を動的に生成し、また、該当する制御処理を終了させるソフトウェア並行動作検証装置を説明した。
実施の形態3.
実施の形態1では、制御処理ごとに制御操作回数を検証する方法を説明した。
本実施の形態では、複数の制御処理をまとめたグループ単位で制御操作回数を検証する方法を説明する。
つまり、本実施の形態では、検証項目解析部104は、複数の制御処理にまたがって、制御操作回数間の関係が適正であるかを検証する。
ある制御処理が割込み許可し、他の制御処理が割込み禁止するというように、複数の制御処理の中で要求・応答の対応を取る場合がある。
このような場合に対応させるため、本実施の形態に係るシミュレータ装置100では、制御処理のグループを作成して、グループ内で要求操作の回数と応答操作の回数が等しければ適正と判定する。
本実施の形態では、実施の形態1と同様に、割込み模擬部105は、制御処理の単位で制御操作回数を計数するが、検証項目解析部104による検証は、制御処理のグループ単位で行う。
本実施の形態では、例えば、図18に示す制御操作回数情報を用いる。
図18では、図14の制御操作回数情報(割込み操作)に対して、「グループ名」の欄が追加されている。
つまり、図18の例では、制御処理Aと制御処理Bがグループ化されている。
図18では、制御操作回数情報(割込み操作)だけを示すが、制御操作回数情報(連携操作)、制御操作回数情報(I/O操作)、制御操作回数情報(タイマ操作)でも同様にグループの情報を追加する。
図18では、制御処理A及び制御処理Bのそれぞれでは、割込み許可の回数≠割込み禁止の回数になっているが、グループαの単位で検証すると、割込み許可の回数=割込み禁止の回数となっているので、検証項目解析部104は、制御操作回数が適正であると判断する。
このように、本実施の形態では、制御操作の発生状況に合わせて柔軟な検証を行うことができる。
以上、本実施の形態では、複数の制御処理をまとめたグループ単位で、複数の制御操作の回数が正しく対応するかを検証するソフトウェア並行動作検証装置を説明した。
最後に、実施の形態1〜3に示したシミュレータ装置100のハードウェア構成例を図20を参照して説明する。
シミュレータ装置100はコンピュータであり、シミュレータ装置100の各要素をプログラムで実現することができる。
シミュレータ装置100のハードウェア構成としては、バスに、演算装置901、外部記憶装置902、主記憶装置903、通信装置904、入出力装置905が接続されている。
演算装置901は、プログラムを実行するCPUである。
外部記憶装置902は、例えばROM(Read Only Memory)やフラッシュメモリ、ハードディスク装置である。
主記憶装置903は、RAM(Random Access Memory)である。
図1に示す「〜記憶部」は、外部記憶装置902又は主記憶装置903で実現される。
通信装置904は、例えばNIC(Network Interface Card)である。
入出力装置905は、例えばマウス、キーボード、ディスプレイ装置である。
プログラムは、通常は外部記憶装置902に記憶されており、主記憶装置903にロードされた状態で、順次演算装置901に読み込まれ、実行される。
プログラムは、図1に示す「〜部」(「〜記憶部」を除く。以下でも同様)として説明している機能を実現するプログラムである。
更に、外部記憶装置902にはオペレーティングシステム(OS)も記憶されており、OSの少なくとも一部が主記憶装置903にロードされ、演算装置901はOSを実行しながら、図1に示す「〜部」の機能を実現するプログラムを実行する。
また、実施の形態1〜3の説明において、「〜の判断」、「〜の判定」、「〜の検証」、「〜の抽出」、「〜の検出」、「〜の指定」、「〜の設定」、「〜の計数」、「〜の模擬」、「〜の実行」、「〜の選択」、「〜の生成」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置903にファイルとして記憶されている。
また、暗号鍵・復号鍵や乱数値やパラメータが、主記憶装置903にファイルとして記憶されてもよい。
なお、図20の構成は、あくまでもシミュレータ装置100のハードウェア構成の一例を示すものであり、シミュレータ装置100のハードウェア構成は図20に記載の構成に限らず、他の構成であってもよい。
また、実施の形態1〜3に示す手順により、本発明に係るプログラム検証方法を実現可能である。
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、2つ以上を組み合わせて実施しても構わない。
あるいは、これらの実施の形態のうち、1つを部分的に実施しても構わない。
あるいは、これらの実施の形態のうち、2つ以上を部分的に組み合わせて実施しても構わない。
なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
100 シミュレータ装置、101 スケジューラ、102 検証シナリオ作成部、103 制御監視部、104 検証項目解析部、105 割込み模擬部、106 タイマ模擬部、107 連携変数記憶部、108 プログラム記憶部、109 スケジューラ設定記憶部、110 検証シナリオ記憶部、111 I/Oデバイス状態記憶部、112 制御操作回数記憶部、113 制御信号アクセスログ記憶部、114 検証レポート記憶部、115 制御操作情報記憶部、1011 実装コード実行部、1012 I/Oデバイス模擬プログラム実行部、200 制御機器、201 制御処理A、202 制御処理B、203 ハードウェアドライバ、204 I/Oポート、205 I/Oポート、206 割込み、207 タイマ、2031 I/O処理、2032 割込み処理、2033 タイマ処理、251 連携信号、252 I/Oポート信号、253 状態変数、254 カウンタ信号、300 センサデバイス、400 駆動デバイス、500 実装コード、600 I/Oデバイス模擬プログラム。

Claims (14)

  1. 割込みに関する設定を行う割込み設定処理が含まれる検証対象プログラムを検証するプログラム検証装置であって、
    前記検証対象プログラムを解析し、前記検証対象プログラムを実行する機器にて前記検証対象プログラムが実行された際に割込みが発生する可能性がある複数のタイミングをそれぞれ割込み候補タイミングとして指定する割込み候補タイミング指定部と、
    前記検証対象プログラムを実行するプログラム実行部と、
    前記プログラム実行部による前記検証対象プログラムの実行時に、前記割込み設定処理により前記割込み候補タイミングに割込みを禁止する設定が行われていれば、前記割込み候補タイミングに割込みを発生させず、前記割込み設定処理により前記割込み候補タイミングに割込みを許可する設定が行われていれば、前記割込み候補タイミングに割込みを発生させる割込み発生部と、
    数の前記割込み候補タイミングのうち、割込みを禁止することが適正であると想定される割込み候補タイミングを割込み禁止想定タイミングとして選択し、前記検証対象プログラムの実行結果を解析し、前記割込み禁止想定タイミングに前記割込み設定処理により割込みを禁止する設定が行われたか否かを判断する検証部とを有することを特徴とするプログラム検証装置。
  2. 前記プログラム実行部は、
    変数にアクセスする処理である変数アクセス処理が含まれる検証対象プログラムを実行し、
    前記割込み候補タイミング指定部は、
    前記変数アクセス処理によりアクセスされる変数であって前記割込み発生部が割込みを発生させる際に前記割込み発生部によりアクセスされる変数を競合変数として抽出し、
    前記変数アクセス処理による前記競合変数へのアクセスの前後のタイミングをそれぞれ割込み候補タイミングとして指定することを特徴とする請求項1に記載のプログラム検証装置。
  3. 前記検証部は、
    前記複数の割込み候補タイミングのうち、前記変数アクセス処理による前記競合変数へのアクセスの合間にあたる割込み候補タイミングを前記割込み禁止想定タイミングとして選択し、前記割込み禁止想定タイミングに前記割込み設定処理により割込みを禁止する設定が行われたか否かを判断することを特徴とする請求項2に記載のプログラム検証装置。
  4. 前記検証部は、
    前記検証対象プログラムの実行結果として前記競合変数へのアクセス履歴を解析し、前記変数アクセス処理による前記競合変数へのアクセスの合間に割込みによる前記競合変数へのアクセスがあったことを検出した場合に、前記割込み設定処理により前記割込み禁止想定タイミングに割込みを禁止する設定が行われなかったと判断することを特徴とする請求項3に記載のプログラム検証装置。
  5. 検証対象プログラムを検証するプログラム検証装置であって、
    前記検証対象プログラムの実行により発生する複数のイベントのうち関連のある2以上のイベントがそれぞれ関連イベントとして相互に対応付けられて示され、前記検証対象プログラムが適正な場合の関連イベント間の発生回数の関係が示される関連イベント情報を記憶する関連イベント情報記憶部と、
    前記検証対象プログラムを実行するプログラム実行部と、
    前記プログラム実行部による前記検証対象プログラムの実行中の各関連イベントの発生回数を計数する計数部と、
    前記計数部により計数された発生回数の関連イベント間の関係が前記関連イベント情報に示されている関係に合致するか否かを判断する検証部とを有することを特徴とするプログラム検証装置。
  6. 前記関連イベント情報記憶部は、
    関連イベント間の発生回数の関係として、関連イベント間で発生回数がつり合うことが示される関連イベント情報を記憶し、
    前記検証部は、
    前記計数部により計数された発生回数が関連イベント間でつり合っているか否かを判断することを特徴とする請求項5に記載のプログラム検証装置。
  7. 前記関連イベント情報記憶部は、
    前記検証対象プログラムに含まれる制御処理の実行により発生する、関連する2以上のイベント、
    前記検証対象プログラムに含まれるI/O(Input/Output)処理の実行により発生する、関連する2以上のイベント、
    前記検証対象プログラムに含まれる割込み処理の実行により発生する、関連する2以上のイベント、
    前記検証対象プログラムに含まれるタイマ処理の実行により発生する、関連する2以上のイベントのうちの少なくともいずれかが関連イベントとして示される関連イベント情報を記憶することを特徴とする請求項5又は6に記載のプログラム検証装置。
  8. 前記プログラム実行部は、
    I/O(Input/Output)デバイスを制御する制御機器の動作アルゴリズムが記述された検証対象プログラムを、前記I/Oデバイスの動作及び前記制御機器の前記I/Oデバイスに対するインタフェースの動作を模擬するI/Oデバイス模擬プログラムとともに、実行することを特徴とする請求項1〜7のいずれかに記載のプログラム検証装置。
  9. 前記プログラム実行部は、
    複数の制御処理が含まれ、前記複数の制御処理のうちの特定の制御処理に対して起動イベントが定義されている検証対象プログラムを実行し、
    前記検証対象プログラムの実行中に、前記特定の制御処理の起動イベントが発生した際に、前記特定の制御処理を起動することを特徴とする請求項1〜8のいずれかに記載のプログラム検証装置。
  10. 前記プログラム実行部は、
    複数の制御処理が含まれ、前記複数の制御処理のうちの特定の制御処理に対して終了イベントが定義されている検証対象プログラムを実行し、
    前記検証対象プログラムの実行中に、前記特定の制御処理の終了イベントが発生した際に、前記特定の制御処理を終了することを特徴とする請求項1〜9のいずれかに記載のプログラム検証装置。
  11. 前記プログラム実行部は、
    複数の制御処理が含まれる検証対象プログラムを実行し、
    前記計数部は、
    前記プログラム実行部による前記検証対象プログラムの実行中の各関連イベントの発生回数を制御処理の単位で計数し、
    前記検証部は、
    2以上の制御処理にまたがって、前記計数部により計数された発生回数の関連イベント間の関係が前記関連イベント情報に示されている関係に合致するか否かを判断することを特徴とする請求項5に記載のプログラム検証装置。
  12. コンピュータが、割込みに関する設定を行う割込み設定処理が含まれる検証対象プログラムを検証するプログラム検証方法であって、
    前記コンピュータが、前記検証対象プログラムを解析し、前記検証対象プログラムを実行する機器にて前記検証対象プログラムが実行された際に割込みが発生する可能性がある複数のタイミングをそれぞれ割込み候補タイミングとして指定し、
    前記コンピュータが、前記検証対象プログラムを実行し、
    前記コンピュータが、前記検証対象プログラムの実行時に、前記割込み設定処理により前記割込み候補タイミングに割込みを禁止する設定が行われていれば、前記割込み候補タイミングに割込みを発生させず、前記割込み設定処理により前記割込み候補タイミングに割込みを許可する設定が行われていれば、前記割込み候補タイミングに割込みを発生させ、
    前記コンピュータが、複数の前記割込み候補タイミングのうち、割込みを禁止することが適正であると想定される割込み候補タイミングを割込み禁止想定タイミングとして選択し、前記検証対象プログラムの実行結果を解析し、前記割込み禁止想定タイミングに前記割込み設定処理により割込みを禁止する設定が行われたか否かを判断することを特徴とするプログラム検証方法。
  13. コンピュータが、検証対象プログラムを検証するプログラム検証方法であって、
    前記検証対象プログラムの実行により発生する複数のイベントのうち関連のある2以上のイベントがそれぞれ関連イベントとして相互に対応付けられて示され、前記検証対象プログラムが適正な場合の関連イベント間の発生回数の関係が示される関連イベント情報を、前記コンピュータが、所定の記憶領域から読み出し、
    前記コンピュータが、前記検証対象プログラムを実行し、
    前記コンピュータが、前記検証対象プログラムの実行中の各関連イベントの発生回数を計数し、
    前記コンピュータが、計数された発生回数の関連イベント間の関係が前記関連イベント情報に示されている関係に合致するか否かを判断することを特徴とするプログラム検証方法。
  14. コンピュータを、請求項1又は5に記載されたプログラム検証装置として機能させることを特徴とするプログラム。
JP2015522353A 2013-06-13 2013-06-13 プログラム検証装置及びプログラム検証方法及びプログラム Active JP5951130B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/066381 WO2014199496A1 (ja) 2013-06-13 2013-06-13 プログラム検証装置及びプログラム検証方法及びプログラム

Publications (2)

Publication Number Publication Date
JP5951130B2 true JP5951130B2 (ja) 2016-07-13
JPWO2014199496A1 JPWO2014199496A1 (ja) 2017-02-23

Family

ID=52021826

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015522353A Active JP5951130B2 (ja) 2013-06-13 2013-06-13 プログラム検証装置及びプログラム検証方法及びプログラム

Country Status (2)

Country Link
JP (1) JP5951130B2 (ja)
WO (1) WO2014199496A1 (ja)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07249012A (ja) * 1993-07-07 1995-09-26 Fujitsu Ltd シミュレータ
JPH09319613A (ja) * 1996-03-29 1997-12-12 Toshiba Corp プログラム開発支援装置及びプログラム開発支援方法
JP2005309800A (ja) * 2004-04-22 2005-11-04 Matsushita Electric Ind Co Ltd ソフトウェア検証方法および検証用データ作成方法
US7505952B1 (en) * 2003-10-20 2009-03-17 The Board Of Trustees Of The Leland Stanford Junior University Statistical inference of static analysis rules
JP2010160704A (ja) * 2009-01-08 2010-07-22 Toshiba Corp デバッグ支援装置
JP2012014523A (ja) * 2010-07-01 2012-01-19 Hitachi Ltd サブルーチン実行監視装置及びサブルーチン実行監視方法
JP2013045177A (ja) * 2011-08-22 2013-03-04 Canon Inc 情報処理装置及びプログラム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07249012A (ja) * 1993-07-07 1995-09-26 Fujitsu Ltd シミュレータ
JPH09319613A (ja) * 1996-03-29 1997-12-12 Toshiba Corp プログラム開発支援装置及びプログラム開発支援方法
US7505952B1 (en) * 2003-10-20 2009-03-17 The Board Of Trustees Of The Leland Stanford Junior University Statistical inference of static analysis rules
JP2005309800A (ja) * 2004-04-22 2005-11-04 Matsushita Electric Ind Co Ltd ソフトウェア検証方法および検証用データ作成方法
JP2010160704A (ja) * 2009-01-08 2010-07-22 Toshiba Corp デバッグ支援装置
JP2012014523A (ja) * 2010-07-01 2012-01-19 Hitachi Ltd サブルーチン実行監視装置及びサブルーチン実行監視方法
JP2013045177A (ja) * 2011-08-22 2013-03-04 Canon Inc 情報処理装置及びプログラム

Also Published As

Publication number Publication date
JPWO2014199496A1 (ja) 2017-02-23
WO2014199496A1 (ja) 2014-12-18

Similar Documents

Publication Publication Date Title
US10489564B2 (en) Method and execution environment for the secure execution of program instructions
De Schutter Better Software. Faster!: Best Practices in Virtual Prototyping
US9075911B2 (en) System and method for usage pattern analysis and simulation
US8543953B2 (en) Automated stimulus steering during simulation of an integrated circuit design
WO2012065774A1 (en) A method for attesting a plurality of data processing systems
US9792402B1 (en) Method and system for debugging a system on chip under test
US10592703B1 (en) Method and system for processing verification tests for testing a design under test
US10997344B2 (en) ECU simulation device
US20210374215A1 (en) Method for licensing a tool chain
Bognar et al. Mind the gap: Studying the insecurity of provably secure embedded trusted execution architectures
US10592623B2 (en) Assertion statement check and debug
JP5992107B2 (ja) プログラム検証装置及びプログラム検証方法及びプログラム
JP5951130B2 (ja) プログラム検証装置及びプログラム検証方法及びプログラム
US20160063162A1 (en) System and method using pass/fail test results to prioritize electronic design verification review
JP6155050B2 (ja) 情報処理装置の論理検証方法及びプログラム
US9152414B2 (en) System and method to select compatible open-source software and components for developed or conceptualized solution
US20160070846A1 (en) System for testing ic design
US20130074023A1 (en) Test Functionality Integrity Verification for Integrated Circuit Design
CN111708698B (zh) 一种应用程序模拟备案方法及相关装置
JP2828590B2 (ja) マイクロプログラム検証方法
JP5625942B2 (ja) 設計検証プログラム,設計検証装置,設計検証方法
CN111368264A (zh) 应用程序的验证方法、电脑装置及其主机板
JP6949440B2 (ja) ベクタ生成装置及びベクタ生成用プログラム
WO2022162998A1 (ja) 電子制御装置のシミュレーション装置
JP2014071775A (ja) システム開発支援装置およびシステム開発支援方法

Legal Events

Date Code Title Description
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: 20160510

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160607

R150 Certificate of patent or registration of utility model

Ref document number: 5951130

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250