JP6854994B1 - 動作確認支援装置、動作確認支援方法及び動作確認支援プログラム - Google Patents

動作確認支援装置、動作確認支援方法及び動作確認支援プログラム Download PDF

Info

Publication number
JP6854994B1
JP6854994B1 JP2020570075A JP2020570075A JP6854994B1 JP 6854994 B1 JP6854994 B1 JP 6854994B1 JP 2020570075 A JP2020570075 A JP 2020570075A JP 2020570075 A JP2020570075 A JP 2020570075A JP 6854994 B1 JP6854994 B1 JP 6854994B1
Authority
JP
Japan
Prior art keywords
code
target arrival
inspection
inspection condition
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
JP2020570075A
Other languages
English (en)
Other versions
JPWO2021214843A1 (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 JP6854994B1 publication Critical patent/JP6854994B1/ja
Publication of JPWO2021214843A1 publication Critical patent/JPWO2021214843A1/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/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

プログラム情報取得部(15)は、入力値を読み込んで動作する動作プログラムのソースコードである動作コードを取得する。検査条件取得部(16)は、前記動作コードの目標到達箇所を含む目標到達箇所に関する情報を検査条件として取得する。検査条件変換部(17)は、前記検査条件取得部が取得した前記検査条件に含まれる目標到達箇所へ到達したことを判定する判定式を生成する。解析部(18)は、前記検査条件変換部が生成した前記判定式を用いて前記目標到達箇所へ到達させる前記入力値として生成値を生成する。

Description

本開示は、動作確認支援装置、動作確認支援方法及び動作確認支援プログラムに関する。
ソフトウェア開発時、動作確認を行う担当者(以下、担当者という)は開発しているソフトウェア自体の動作、又はソフトウェアにより制御される機器の動作確認をするために、入力値により遷移するソフトウェアの内部状態を特定の状態に遷移させる場合がある。
このような場合、担当者は目標となる特定の状態にソフトウェアの内部状態を遷移させるための入力値を決定する必要がある。そして、担当者は決定した入力値をソフトウェアに入力することで、ソフトウェアの内部状態が実際に目標となる特定の状態へ遷移することが実現できるかを確認する。又は、担当者は、目標となる特定の状態への遷移の実現により、ソフトウェアにより制御される機器が目標となる特定の状態への遷移に対応して動作することができるかを確認する。
このようなソフトウェア開発時の確認作業の具体例として、ソフトウェアを搭載したECU(Electronic Control Unit)等の組込み機器の動作確認作業がある。組込み機器に搭載されたソフトウェアは、複雑な制御を実現するために、ソフトウェアへの入力により遷移する内部状態を持ち、入力及び内部状態によりソフトウェアの出力が変化する。このような組込み機器の特定の動作確認するために、担当者はソフトウェアの内部状態を特定の状態に遷移させる場合がある。そのために、担当者は、ソフトウェアの仕様情報を基に、ソフトウェアの内部状態を表す内部状態値を、内部状態が特定の状態となる値として目標に設定し、設定した目標から遡ってソフトウェアへ入力する入力値を決定する必要がある。
しかし、ソフトウェア開発における担当者は、必ずしもソフトウェアの仕様を全て把握しているとは限らない。また、担当者がソフトウェアの仕様を把握しているとしても、担当者はソフトウェアの仕様を考慮して、目標の内部状態値に到達する入力値を決定しなければならず、動作確認に必要な入力値の作成には工数がかかっていた。加えて、様々なシステム又は製品に搭載されるソフトウェアは、社会的な要求に応えて機能を充実させることにより、ソフトウェアの仕様は大規模複雑化している。これに伴い、担当者が入力値を手動で作成する工数が増加している。
このソフトウェア開発時の動作確認における入力値の作成に関する工数増加を抑制するために、数学及び論理学に基づいてシステムの性質を証明する形式検証技術を用いて、動作確認に必要な入力値を自動で生成する手法がある。
このような形式検証技術を用いた手法の例として、特許文献1に記載された手法がある。特許文献1に記載の手法は、形式検証技術の一つであるモデル検査を用いて、ソフトウェアの動作プログラムの動作確認をする検査装置の手法である。当該文献では、検査装置がソフトウェアへの入力値又はその時系列である入力値列と、ソフトウェアの内部状態値又はその時系列である内部状態値列と、ソフトウェアからの出力値又はその時系列である出力値列とが満たすべき条件が検査条件とされる。そして、SAT(Satisfiability Problem)ソルバを用いて検査条件を満たす入力値列の解を探索し、入力値列の解が存在する場合は、解である入力値列と、内部状態値列と、出力値列とを出力する手法が開示されている。なお、SATソルバは、論理式を取得すると、論理式を真とする解を探索し、探索した結果存在した解を出力する公知の技術である。
特開2019−083018号公報
特許文献1の手法では、ソフトウェアを目標となる特定の内部状態へ遷移させる入力値を求めるために、担当者は目標となる特定の内部状態を表す内部状態値を検査条件として設定する必要がある。つまり、担当者が内部状態に関する仕様情報を参照して、設定対象として目標となる特定の内部状態を選択し、その目標となる特定の内部状態を表す内部状態値を決定する作業が必要となる。したがって、内部状態値を決定する作業により動作確認の工数が増加してしまうといった課題があった。
また、担当者が人手で内部状態値をSATソルバが解析可能な論理式を作成しなければならない作業も必要となる。したがって、内部状態値をSATソルバが解析可能な論理式を作成する作業により動作確認の工数が増加してしまうといった課題があった。
特に、大規模なソフトウェア等では、内部状態が取りうる状態の数は多く複雑である。このようなソフトウェアの動作確認では、目標となる特定の内部状態を選択し、内部状態に関する仕様情報を参照し、その目標となる特定の内部状態を表す内部状態値を決定する作業は困難であり、動作確認の工数が大幅に増加してしまう。
本開示は、ソフトウェアの動作確認作業の工数を削減することを主な目的とする。
本開示に係る動作確認支援装置は、
入力値を読み込んで動作する動作プログラムのソースコードである動作コードを取得するプログラム情報取得部と、
前記動作コードの目標到達箇所を含む目標到達箇所に関する情報を検査条件として取得する検査条件取得部と、
前記検査条件取得部が取得した前記検査条件に含まれる目標到達箇所へ到達したことを判定する判定式を生成する検査条件変換部と、
前記検査条件変換部が生成した前記判定式を用いて前記目標到達箇所へ到達させる前記入力値として生成値を生成する解析部とを備える。
本開示によれば、動作確認の作業において、担当者が動作コードと動作コードの目標到達箇所を含む目標到達箇所に関する情報を入力することで、解析部は動作確認の作業に必要な入力値を生成する。したがって、ソフトウェアの動作確認作業の工数を削減することができる。
実施の形態1に係る動作確認支援装置のハードウェア構成例を示す図。 実施の形態1に係る動作確認支援装置の機能構成例を示す図。 実施の形態1に係る動作確認支援装置の処理動作を示すフローチャート。 実施の形態1に係る動作コードを示す図。 実施の形態1に係る動作コードへのマーキング方法を示す図。 実施の形態1に係る検査用コードを示す図。 実施の形態1に係る入力値及び被確認ソフトウェアの実行順序を示す図。 実施の形態2に係る動作確認支援装置の処理動作を示すフローチャート。 実施の形態2に係る動作コードを示す図。 実施の形態2に係る目標到達順序条件式及び目標到達条件式を示す図。 実施の形態2に係る条件付き検査用コードを示す図。 実施の形態3に係る動作確認支援装置の機能構成例を示す図。 実施の形態3に係る動作確認支援装置の処理動作を示すフローチャート。 実施の形態3に係る動作コードを示す図。 実施の形態3に係る入力値及び被確認ソフトウェアの実行順序を示す図。
以下、本開示の実施の形態について、図を用いて説明する。各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、説明を適宜省略又は簡略化する。
なお、本開示は、以下に説明する実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。例えば、以下に説明する実施の形態のうち、2つ以上の実施の形態が組み合わせられて実施されても構わない。あるいは、以下に説明する実施の形態のうち、1つの実施の形態又は2つ以上の実施の形態の組み合わせが部分的に実施されても構わない。
以下の説明では、本開示の動作確認対象のソフトウェアを被確認ソフトウェアと示す。そして、被確認ソフトウェアのプログラムを動作プログラムと示す。また、動作プログラムのソースコードを動作コードと示す。
実施の形態1.
本実施の形態について、図1から図7を用いて説明する。
***構成の説明***
図1を参照して、本実施の形態に係る動作確認支援装置10のハードウェア構成例を説明する。
動作確認支援装置10は、コンピュータである。動作確認支援装置10は、プロセッサ11を備えるとともに、メモリ12、通信装置13、及び入出力装置14といった他のハードウェアを備える。プロセッサ11は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
なお、動作確認支援装置10の動作手順は、動作確認支援方法に相当する。また、動作確認支援装置10の動作を実現するプログラムは、動作確認支援プログラムに相当する。
プロセッサ11は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ11は、具体例としては、CPU(Central Processing Unit)、DSP(Digital Signal Processor)等である。
プロセッサ11は、動作確認支援装置10の動作を実現するプログラムを実行する。動作確認支援装置10の動作を実現するプログラムは、後述の、プログラム情報取得部15、検査条件取得部16、検査条件変換部17、解析部18、及び入力値出力部19の機能を実現するプログラムである。
メモリ12は、記憶装置である。メモリ12は、具体例としては、RAM(Random Access Memory)、フラッシュメモリ又はこれらの組み合わせである。
メモリ12には、動作確認支援装置10の動作を実現するプログラム、動作コード30、及び被確認ソフトウェアの仕様情報が記憶される。被確認ソフトウェアは、任意の種類のソフトウェアでよいが、本実施の形態では組込みソフトウェアであるとして説明を進める。
通信装置13は、信号線を介して接続先との情報の通信処理を実行する電子回路である。通信装置13は、動作確認支援装置10に入力される情報を受信するレシーバと、動作確認支援装置10から出力される情報を送信するトランスミッタとを含む。通信装置13は、具体例としては、通信チップ又はNIC(Network Interface Card)である。
入出力装置14は、情報の入出力処理を実行する電子回路である。入出力装置14は、動作確認支援装置10へ入力される入力情報の入力操作に用いられる入力機器又は動作確認支援装置10から出力される出力情報を画面に表示するディスプレイ等の外部装置に接続される。
入力機器は、具体例としては、マウス、キーボード、タッチパネル、又は、これらのうちいくつか、もしくは、すべての組み合わせである。ディスプレイは、具体例としては、LCD(Liquid Crystal Display)である。ディスプレイは、後述のプログラム情報取得部15が取得した動作コード30を表示してもよい。また、ディスプレイは、後述の入力値出力部19が出力した入力値を表示してもよい。なお、入力値出力部19が出力した入力値は、後述の解析部18が生成する入力値と同一であり、以下では生成値34として説明する。
動作確認支援装置10の動作を実現するプログラムは、メモリ12からプロセッサ11に読み込まれ、プロセッサ11によって実行される。メモリ12には、動作確認支援装置10の動作を実現するプログラムだけでなく、OS(Operating System)も記憶されている。プロセッサ11は、OSの少なくとも一部を実行しながら、動作確認支援装置10の動作を実現するプログラムを実行する。なお、動作確認支援装置10の動作を実現するプログラムの一部又は全部がOSに組み込まれていてもよい。プロセッサ11がOSを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
動作確認支援装置10の動作を実現するプログラム、動作コード30、被確認ソフトウェアの仕様情報、及びOSは、補助記憶装置に記憶されていてもよい。補助記憶装置は、具体例としては、ハードディスク、フラッシュメモリ又はこれらの組み合わせである。また、補助記憶装置は、SSD(登録商標、Solid State Drive)、SD(登録商標、Secure Digital)メモリカード、CF(登録商標、CompactFlash)、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD(登録商標、Digital Versatile Disk)といった可搬記録媒体又はこれらの組み合わせであってもよい。
動作確認支援装置10の動作を実現するプログラム及びOSは、補助記憶装置に記憶されている場合、補助記憶装置からメモリ12にロードされ、メモリ12からプロセッサ11に読み込まれ、プロセッサ11によって実行される。
動作確認支援装置10は、プロセッサ11を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、動作確認支援装置10の動作を実現するプログラムの実行を分担する。それぞれのプロセッサは、具体例としては、CPUである。
動作確認支援装置10の動作を実現するプログラムにより利用、処理又は出力されるデータ、情報、信号値、及び変数値は、メモリ12、補助記憶装置、又は、プロセッサ11内のレジスタ又はキャッシュメモリの少なくともいずれかに記憶される。
動作確認支援装置10の動作を実現するプログラムは、コンピュータ読取可能な媒体に記憶されて提供されてもよく、記憶媒体に格納されて提供されてもよく、またプログラムプロダクトとして提供されてもよい。プログラムプロダクトは、見た目形式の物に限られなく、コンピュータ読取可能なプログラムをロードしているものである。また、動作確認支援装置10の動作を実現するプログラムは、ネットワークを介して提供されてもよい。
図2を参照して、本実施の形態に係る動作確認支援装置10の機能構成例を説明する。
動作確認支援装置10は、プログラム情報取得部15、検査条件取得部16、検査条件変換部17、解析部18、及び入力値出力部19を備える。
プログラム情報取得部15は、動作コード30をメモリ12から、又は通信装置13を介して接続先から取得する。
検査条件取得部16は、検査条件31として、プログラム情報取得部15が取得した動作コード30における動作確認の目標となる目標到達箇所を含む目標到達箇所に関する情報(以下、目標到達箇所情報という)を取得する。本実施の形態に係る検査条件31は、担当者により入出力装置14を介して外部装置から入力される。
検査条件31には、少なくとも1つ以上の目標到達箇所が含まれる。目標到達箇所は、動作コード30における特定の箇所であり、動作確認の目標とする箇所である。より具体的には、目標到達箇所は、動作コード30の行番号である。したがって、目標到達箇所情報は動作コード30の行番号として入力され、検査条件取得部16により検査条件31として取得される。また、それに限らず、入出力装置14を介してディスプレイに表示された動作コード30に直接、目標到達箇所をマーキングし、指定することで目標到達箇所情報が入力されてもよい。
検査条件変換部17は、検査条件取得部16が取得した検査条件31を基に、検査条件31に含まれる目標到達箇所へ到達したことを判定する判定式を生成する。
本実施の形態では、検査条件31に含まれる目標到達箇所へ到達したことを判定する判定式は、解析部18が解析可能な論理式として生成される。この判定式の論理式は、目標到達箇所を示す動作コード30の行番号へ到達したときに満たされる条件を示した条件式の論理式であり、目標到達条件式32ともいう。
また、検査条件変換部17は、検査条件取得部16が取得した検査条件31を基に、目標到達箇所変数を用いた到達判定に用いるコードをプログラム情報取得部15が取得した動作コード30に追加した検査用コードを生成する。そして、検査条件変換部17は、検査用コードを解析部18のSATソルバが解析可能な論理式へ変換して検査用コードの論理式33を生成する。
したがって、検査条件変換部17の出力は、目標到達条件式32と検査用コードの論理式33となる。
解析部18は、検査条件変換部17が生成した目標到達条件式32を用いて目標到達箇所へ到達させる入力値を探索し、目標到達箇所へ到達させる入力値として生成値34を生成する。より具体的には、解析部18は、SATソルバを用いて、検査条件変換部17が生成した目標到達条件式32と検査用コードの論理式33の論理積を解くことで、目標到達箇所へ到達させる入力値を探索する。そして、解析部18は、目標到達箇所へ到達させる入力値として生成値34を生成する。なお、論理積を解くとは、論理積で表される論理式を充足する解、つまり論理式を真とさせる論理変数の解である入力値を求めることである。
入力値出力部19は、解析部18が生成した生成値34を出力する。また、入力値出力部19は、解析部18は探索の結果、生成値34が生成できなかった場合には、生成値34が生成できなかった旨の通知を出力する。
また、プログラム情報取得部15、検査条件取得部16、検査条件変換部17、解析部18、及び入力値出力部19の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、動作確認支援装置10は、処理回路により実現されてもよい。処理回路は、例えば、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)である。
この場合は、プログラム情報取得部15、検査条件取得部16、検査条件変換部17、解析部18、及び入力値出力部19は、それぞれ処理回路の一部として実現される。
なお、本明細書では、プロセッサと処理回路との上位概念を、「プロセッシングサーキットリー」という。
つまり、プロセッサと処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
動作確認支援装置10の動作を実現するプログラムは、プログラム情報取得部15、検査条件取得部16、検査条件変換部17、解析部18、及び入力値出力部19により行われる手順をそれぞれプログラム情報取得手順、検査条件取得手順、検査条件変換手順、解析手順及び入力値出力手順としてコンピュータに実行させるプログラムである。
***動作の説明***
図3から図7を参照して、本実施の形態に係る動作確認支援装置10の動作例を説明する。
まず、図3のフローチャートを参照して、本実施の形態に係る動作確認支援装置10の処理動作の例を説明する。
ステップS101において、プログラム情報取得部15は、動作コード30を取得する。そして、処理はステップS102へ進む。
次に、ステップS102において、検査条件取得部16は、検査条件31として、動作コード30の目標到達箇所情報を、入出力装置14を介して外部装置から取得する。そして、処理はステップS103へ進む。
次に、ステップS103において、検査条件変換部17は、ステップS102の処理において検査条件取得部16が取得した検査条件31を基に、目標到達箇所変数を定義する。目標到達箇所変数は、目標到達箇所へ到達したことを判定する到達判定に用いられる変数である。そして、処理はステップS104へ進む。
次に、ステップS104において、検査条件変換部17は、ステップS102の処理において検査条件取得部16が取得した検査条件31を基に、目標到達箇所変数を用いた到達判定に用いるコードを動作コード30に追加した検査用コードを生成する。
検査用コードは、動作コード30において、目標到達箇所の行へ到達時に必ず実行される、目標到達箇所の行の前後の行のうちどちらか一方に、目標到達箇所変数の演算式で示されるコードを挿入したものとなる。
そして、検査条件変換部17は、検査用コードを解析部18のSATソルバが解析可能な論理式へ変換して検査用コードの論理式33を生成する。そして、処理はステップS105へ進む。
次に、ステップS105において、検査条件変換部17は、ステップS102の処理において取得された検査条件31を基に、目標到達箇所変数を用いて到達判定に用いる目標到達条件式32を生成する。検査条件変換部17が生成する目標到達条件式32は、検査用コードに含まれる目標到達箇所変数を用いた到達判定に用いるコードを挿入した行が実行されたときに目標到達箇所変数が満たす条件を論理式で示した条件式である。そして、処理はステップS106へ進む。
なお、ステップS105の処理とステップS104の処理とは依存関係がないため、動作確認支援装置10は実行順序を入れ替えて実行したり並行して実行したりしてもよい。
次に、ステップS106において、解析部18は、SATソルバを用いて検査用コードの論理式33と目標到達条件式32との論理積を解くことで、目標到達箇所へ到達させる入力値を探索する。
論理積の解である入力値が存在した場合、解析部18は、目標到達箇所へ到達させる入力値として生成値34を生成する。そして、処理はステップS107へ進む。
一方、論理積の解である入力値が存在しない場合、解析部18は、生成値34を生成せず、生成値34を生成できなかったことを入力値出力部19に通知する。そして、処理はステップS108へ進む。
次に、ステップS107において、入力値出力部19は、ステップS106において解析部18が生成した生成値34を、入出力装置14を介して外部装置に出力する。
次に、ステップS108において、入力値出力部19は、ステップS106において解析部18が検査用コードの論理式33と目標到達条件式32の論理積の解がなく、生成値34が生成できない旨の通知を出力する。入力値出力部19は、この通知を出力することによって、目標到達箇所で示される特定の内部状態への遷移は、被確認ソフトウェアにおいて起こりえない動作であることを担当者に通知する。
図4に示す動作コード30の具体例を用いて、本実施の形態における動作確認支援装置10のより詳細な動作例を説明する。
具体的には、以下の例では、図4に示す動作コード30で生成される被確認ソフトウェアのSLEEPモードでの動作確認のために、動作確認支援装置10が被確認ソフトウェアの内部状態をSLEEPモードへ遷移させる生成値34を生成する動作を説明する。
なお、図4の左端にある数字列は動作コード30の行番号を示す。
本例の動作コード30は、被確認ソフトウェアの内部状態である動作モードを表すモード変数modeと、入力値を代入する2つの入力変数Demo_I_x及びDemo_I_yと、出力値を代入する出力変数Demo_Oとを有する。
図3のステップS101において、プログラム情報取得部15は、図4に示す動作コード30を取得する。そして、処理はステップS102へ進む。
なお、本例では動作コード30は1つの関数mainを記述した1ファイルだけだが、これに限らず、複数の関数又は複数のファイルの集合であってもよい。
図3のステップS102において、検査条件取得部16は、動作コード30における目標到達箇所情報を検査条件31として取得する。そして、処理はステップS103へ進む。
本例において、動作コード30における目標到達箇所は、「動作モードがSLEEPモードに遷移した被確認ソフトウェアの内部状態」に相当する図4に示す動作コード30の26行目である。
したがって、本例では、担当者は、入出力装置14を介して検査条件取得部16に直接、「動作コード30の26行目」という情報を、目標到達箇所情報として入力する。
ただし、目標到達箇所情報の入力方法はこれに限らず、図5で示すように、入出力装置14を介してディスプレイに表示された動作コード30に目標到達箇所を視覚的にマーキングする方法等、動作コード30の中の特定箇所を指定して入力する方法であればよい。
図3のステップS103において、検査条件変換部17は、「動作コード30の26行目」という1つの検査条件31を基に、1つの目標到達箇所変数reachを定義する。そして、処理はステップS104へ進む。
ここで定義される目標到達箇所変数reachの初期値は0である。
図3のステップS104において、検査条件変換部17は、「動作コード30の26行目」という検査条件31を基に、図6に示すように、27行目に目標到達箇所変数の演算式(reach++;)のコードを挿入して追加した、検査用コードを生成する。
さらに、検査条件変換部17は、検査用コードをSATソルバが解析可能な論理式に変換して、検査用コードの論理式33を生成する。そして、処理はステップS105に進む。
図3のステップS105において、検査条件変換部17は、検査条件31を基に定義した目標到達箇所変数reachを基に、目標到達箇所へ到達したときに満たされる目標到達条件式32として「reach>0」を生成する。そして、処理はステップS106へ進む。
図3のステップS106において、解析部18は、SATソルバを用いて検査用コードの論理式33と目標到達条件式32との論理積を解く。そして、解析部18は、被確認ソフトウェアの実行処理が目標到達箇所である動作コード30の26行目に到達するまでに入力変数Demo_I_x及びDemo_I_yへ代入される入力値を探索する。そして、解析部18は、目標到達箇所へ到達させる入力値として生成値34を生成する。
本例では、被確認ソフトウェアの実行処理がreach++;を挿入された検査用コードの27行目に到達し、目標到達条件式32である「reach>0」を真にする解である目標到達箇所へ到達させる入力値が存在する。したがって、目標到達箇所へ到達させる入力値として生成値34が生成される。そのため、処理はステップS107へ進む。
図3のステップS107において、入力値出力部19は、ステップS106の処理で生成された生成値34を出力する。
図7では、本例で生成される生成値34及び目標到達箇所へ到達するまでの被確認ソフトウェアの実行順序を示す。
図7の右下の表は、被確認ソフトウェアへの入力として、3回の被確認ソフトウェアの実行周期の各々の周期に入力変数Demo_I_x及びDemo_I_yへ代入される入力値を示す。
具体的には、1周期目に入力変数Demo_I_x及びDemo_I_yへ代入される入力値は、10と3である。また、2周期目に入力変数Demo_I_x及びDemo_I_yへ代入される入力値は、90と3である。また、3周期目に入力変数Demo_I_x及びDemo_I_yへ代入される入力値は、どちらも任意の値を示すxxとyyである。
図7の右上の表は、入力変数Demo_I_x及びDemo_I_yに入力値が代入される前後の出力変数Demo_Oの値及びモード変数modeの値を示す。
具体的には、1周期目の開始時、出力変数Demo_Oは値をもたず、モード変数modeはSTARTである。入力変数Demo_I_x及びDemo_I_yへ10と3が代入されると、動作コード30の8行目及び9行目の処理が実行され、出力変数Demo_Oに100が、モード変数modeにRUNが代入される。そして、1周期目の終了時には出力変数Demo_Oは100となり、モード変数modeはRUNとなる。
また、2周期目の開始時、出力変数Demo_Oは100、モード変数modeはRUNである。入力変数Demo_I_x及びDemo_I_yへ90と3が代入されると、動作コード30の21行目及び22行目の処理が実行され、出力変数Demo_Oに50が、モード変数modeにSLEEPが代入される。そして、1周期目の終了時には出力変数Demo_Oは50となり、モード変数modeはSLEEPとなる。
また、3周期目の開始時、出力変数Demo_Oは50、モード変数modeはSLEEPである。入力変数Demo_I_x及びDemo_I_yへ代入される値がどの値であるかに関わらず、被確認ソフトウェアの実行処理が本例の目標到達箇所を示す動作コード30の26行目に到達する。
本例では、図7の右下の表で示される、入力変数Demo_I_x及びDemo_I_yへの入力値が、1周期目では10と3、2周期目では90と3、3周期目では各々任意の値、という3周期分の入力値として生成値34が出力される。
このように、本実施の形態では、生成される生成値34は、1周期分のみとは限らず、複数周期分の入力値列として生成されてもよい。
以上のように生成された生成値34を各々の実行周期で被確認ソフトウェアへ入力して実行することで、被確認ソフトウェアの実行処理は3周期目において動作コード30の26行目に到達し、内部状態がSLEEPモードへと遷移する。したがって、SLEEPモードにおける動作確認を行うことが可能となる。
なお、本例では、検査条件取得部16が1つの目標到達箇所を含む目標到達箇所情報を検査条件31として取得する場合を説明したが、それに限らず、複数の目標到達箇所を含む目標到達箇所情報を検査条件31として取得してもよい。具体例としては、「動作コード30の11行目と26行目」というように、検査条件取得部16は2つの目標到達箇所を示す動作コード30の2つの行番号を検査条件31として取得してもよい。
そして、動作確認支援装置10は、これら「動作コード30の11行目と26行目」という2つの目標到達箇所の両方の目標到達箇所へ到達するような生成値34を生成してもよい。
また、動作確認支援装置10は、2つの目標到達箇所の両方の目標到達箇所へ到達するような生成値34を生成できなかった場合、2つの目標到達箇所の両方の目標到達箇所へ到達するような生成値34を生成できなかったことを通知してもよい。
また、動作確認支援装置10は、2つの目標到達箇所の両方へ到達するような生成値34を生成できず、且ついずれかの目標到達箇所へのみ到達する生成値34を生成できた場合、2つの目標到達箇所の両方の目標到達箇所へ到達するような生成値34を生成できなかったことと共にいずれかの目標到達箇所へしか到達できないことを通知してもよい。
***実施の形態の効果の説明***
以上のように、本実施の形態では、担当者が被確認ソフトウェアの内部状態に関する仕様情報を参照せずとも、動作コード30に目標到達箇所(上記例では26行目)を指定するだけで、動作確認の目標となる特定の内部状態を検査条件31として入力できる。そして、動作確認支援装置10は、この検査条件31を用いて、目標到達箇所へ到達させる生成値34を生成することができる。
よって、上記例では、内部状態を26行目で示される特定の状態へ遷移させる被確認ソフトウェアの動作確認、又はその特定の状態において被確認ソフトウェアにより制御される機器の動作確認に担当者が内部状態値を決定する作業が不要となる。したがって、動作確認に要する工数を削減することができる。
また、検査条件変換部17が、検査条件31である「動作コード30の26行目」を基に、目標到達箇所変数(reach)を用いた目標到達条件式32(reach>0)を生成する。
よって、解析部18の用いるSATソルバが解析可能な論理式を担当者が人手で作成する必要が無くなる。したがって、動作確認に要する工数の削減に加えて、数学的知識を持っていなくても担当者が動作確認することも可能となる。
また、生成値34が生成できないことを通知することによって、担当者は、検査条件31として入力した目標到達箇所で示される状態への状態遷移が、被確認ソフトウェアにおいて起こりえない動作であることを確認することができる。
したがって、被確認ソフトウェアの振舞いが仕様に従って実装されていない可能性を示すこともできる。
一方、本実施の形態と比較して、特許文献1の手法では、担当者が被確認ソフトウェアの仕様情報を参照して、動作確認の目標とする内部状態を表す変数を抽出し、その変数が満たすべき内部状態値を設定する作業が必要である。さらに、この内部状態値をSATソルバが解析可能な論理式で記述する作業が発生するため、担当者は数学的知識が必要となる。
より効果を明確にするために、具体例として、特許文献1の手法を用いて、図4に示す動作コード30で生成される被確認ソフトウェアの内部状態をSLEEPモードへ遷移させる生成値34を作成した場合について説明する。
まず、担当者は、被確認ソフトウェアの仕様情報を参照し、動作確認の目標とするSLEEPモードが、内部状態を表す動作モードにおける特定の状態であり、動作モードはモード変数modeの値により表されることを理解する必要がある。
次に、担当者は、被確認ソフトウェアの仕様情報から、SLEEPモードを表すモード変数modeの値を決定する必要がある。
さらに、このようにして決定したSLEEPモードを表すモード変数modeを、SATソルバが解析可能な論理式に変換する必要がある。
図4の動作コード30は1つの関数mainを記述した1ファイルだけであるが、被確認ソフトウェアが大規模かつ複雑な場合は、動作確認の目標となる内部状態値は多く複雑であるため、動作確認の工数は大幅に増加する。
***他の構成***
<変形例1>
実施の形態1では、プログラム情報取得部15は、動作コード30を取得する例を説明した。しかし、プログラム情報取得部15は、動作プログラムとしてノード又はブランチを含むAST(Abstract Syntax Tree)で作成されたASTプログラムを取得し、ASTプログラムのソースコードであるASTコードへと変換し、動作コード30としてASTコードを取得してもよい。
変形例1では、担当者は、入出力装置14を介して検査条件取得部16に直接、目標到達箇所を示すノード又はブランチに関する情報を、目標到達箇所情報として入力する。また、目標到達箇所情報の入力方法は、これに限らず、入出力装置14を介してディスプレイに表示されたASTに含まれるノード又はブランチを視覚的に指定して入力する方法であってもよい。
図3のステップS101においてASTコードが取得された場合、図3のステップS102において、検査条件取得部16は、目標到達箇所を示すノード又はブランチに関する情報を検査条件31として、入出力装置14を介して外部装置から取得してもよい。そして、図3のステップS104において、検査条件変換部17は、検査条件31に基づき動作コード30の中から目標到達箇所を示すノード又はブランチに対応するコードの行番号を抽出し、検査用コードの論理式33を生成してもよい。そして、図3のステップS105において、動作コード30の中の目標到達箇所を示すノード又はブランチに対応するコードの行番号へ到達したときに満たされる目標到達条件式32を生成してもよい。
<変形例2>
変形例2として、プログラム情報取得部15は、動作プログラムとしてノード又はエッジを含む状態遷移図で作成された状態遷移プログラムを取得し、状態遷移プログラムのソースコードである状態遷移コードへと変換し、動作コード30として状態遷移コードを取得してもよい。
変形例2では、担当者は、入出力装置14を介して検査条件取得部16に直接、目標到達箇所を示すノード又はエッジに関する情報を、目標到達箇所情報として入力する。また、目標到達箇所情報の入力方法は、これに限らず、入出力装置14を介してディスプレイに表示された状態遷移図の中のノード又はエッジを視覚的に指定して入力する方法であってもよい。
図3のステップS101において状態遷移コードが取得された場合、図3のステップS102において、検査条件取得部16は、目標到達箇所を示すノード又はエッジに関する情報を検査条件31として、入出力装置14を介して外部装置から取得してもよい。そして、図3のステップS104において、検査条件変換部17は、検査条件31に基づき動作コード30の中から目標到達箇所を示すノード又はエッジに対応するコードの行番号を抽出し、検査用コードの論理式33を生成してもよい。そして、図3のステップS105において、動作コード30の中の目標到達箇所を示すノード又はエッジに対応するコードの行番号へ到達したときに満たされる目標到達条件式32を生成してもよい。
実施の形態2.
本実施の形態について、図8から図11を用いて説明する。
本実施の形態では、検査条件31に複数の目標到達箇所とそれら複数の目標到達箇所の到達順序とが含まれる例を説明する。
本実施の形態では、主に実施の形態1との差異を説明する。
なお、以下で説明していない事項は、実施の形態1と同様である。
***構成の説明***
本実施の形態に係る動作確認支援装置10のハードウェア構成は、図1に示した実施の形態1の構成と同一であるため、その説明を省略する。
本実施の形態に係る検査条件変換部17は、実施の形態1と同様に目標到達条件式32と検査用コードとを生成した後、検査用コードと検査条件31とを基に、条件付き検査用コードを生成する。
そして、検査条件変換部17は、条件付き検査用コードを解析部18のSATソルバが解析可能な論理式に変換して条件付き検査用コードの論理式を生成する。
したがって、検査条件変換部17の出力は、目標到達条件式32と条件付き検査用コードの論理式となる。
***動作の説明***
まず、図8のフローチャートを参照して、本実施の形態に係る動作確認支援装置10の処理動作の例を説明する。なお、実施の形態1と同一の動作には同一番号を付してその説明を省略する。
ステップS101が完了した後、ステップS202において、検査条件取得部16は、検査条件31として、動作コード30の目標到達箇所情報を、入出力装置14を介して外部装置から取得する。そして、処理はステップS203へ進む。
検査条件取得部16が取得した検査条件31には、複数の目標到達箇所とそれら複数の目標到達箇所の到達順序(以下、目標到達順序という)とが含まれる。
次に、ステップS203において、検査条件変換部17は、ステップS202の処理において検査条件取得部16が取得した検査条件31を基に、検査条件31に含まれる複数の目標到達箇所と同数の複数の目標到達箇所変数を定義する。そして、処理はステップS204へ進む。
次に、ステップS204において、検査条件変換部17は、ステップS202の処理において検査条件取得部16が取得した検査条件31を基に、複数の目標到達箇所変数を用いた到達判定に用いるコードを動作コード30に追加した検査用コードを生成する。そして、処理はステップS205へ進む。
動作コード30には、複数の目標到達箇所の各々の行へ到達時に必ず実行される行に、複数の目標到達箇所変数を用いた到達判定に用いるコードが追加される。つまり、検査用コードは、動作コード30に、複数の目標到達箇所の各々の行の前後の行のうちどちらか一方に、各々の目標到達箇所変数の演算式で示される到達判定に用いるコードを挿入したものとなる。
次に、ステップS205において、検査条件変換部17は、ステップS202の処理において検査条件取得部16が取得した検査条件31を基に、ステップS203の処理において定義した複数の目標到達箇所変数を用いて目標到達順序条件式を生成する。そして、処理はステップS206へ進む。
目標到達順序条件式は、目標到達順序の通りに複数の目標到達箇所の各々へ到達して、到達判定に用いるコードが実行された場合の目標到達箇所変数が満たす条件を、目標到達箇所変数又は目標到達箇所変数の否定を用いた論理積で記述した式である。なお、目標到達順序条件式の数は、複数の目標到達箇所の数と同数である。
次に、ステップS206において、検査条件変換部17は、検査用コードに目標到達順序条件式を追加した条件付き検査用コードを生成する。そして、検査条件変換部17は、条件付き検査用コードを解析部18のSATソルバが解析可能な論理式に変換して条件付き検査用コードの論理式を生成する。そして、処理はステップS207へ進む。
検査条件変換部17が生成する条件付き検査用コードは、検査用コードの中の目標到達箇所変数の演算式で示される到達判定に用いるコードを挿入した各々行の後の行に、各々の目標到達順序条件式を挿入したものとなる。
次に、ステップS207において、検査条件変換部17は、ステップS205の処理において生成した目標到達順序条件式を用いて目標到達条件式32を生成する。そして、処理はステップS208へ進む。
検査条件変換部17が生成する目標到達条件式32は、条件付き検査用コードにおける目標到達箇所を目標到達順序の通りに到達し、全ての目標到達順序条件式が真となることを検査するための条件式である。そのため、目標到達条件式32は、目標到達順序条件式の論理積により構成される。
なお、ステップS207の処理とステップS206の処理とは依存関係がないため、被確認ソフトウェアは実行順序を入れ替えて実行したり並行して実行したりしてもよい。
次に、ステップS208において、解析部18は、SATソルバを用いて条件付き検査用コードの論理式と目標到達条件式32との論理積を解くことで、目標到達箇所へ到達させる入力値を探索する。
論理積の解である入力値が存在する場合、解析部18は、目標到達箇所へ到達させる入力値として生成値34を生成する。そして、処理はステップS107へ進む。
一方、論理積の解である入力値が存在しない場合、解析部18は、生成値34を生成せず、生成値34を生成できなかったことを入力値出力部19に通知する。そして、処理はステップS108へ進む。
ステップS107及びステップS108は、上述の通りであるため、説明を省略する。
図9に示す動作コード30の具体例を用いて、本実施の形態における動作確認支援装置10のより詳細な動作例を説明する。
具体的には、以下の例では、担当者が「STARTモードから開始して、RUNモード、STOPモード、SLEEPモード、ReSTARTモード、ENDモードの順序で動作モードが遷移する」という動作確認を行う。
この動作確認のため、担当者が動作コード30に5つの目標到達箇所と目標到達順序とを検査条件31として指定して入力することによって、動作確認支援装置10が5つの目標到達箇所へ目標到達順序の通りに到達させる生成値34を生成する例を説明する。
図9の左端の円は目標到達箇所を示す。また、図9の左端の円内に記述された1から5までの数字は目標到達順序を示す。
つまり、図9の例では、動作コード30に5つの目標到達箇所が指定されていることを示す。また、目標到達順序は、目標到達箇所1(10行目)、目標到達箇所2(21行目)、目標到達箇所3(33行目)、目標到達箇所4(56行目)、目標到達箇所5(79行目)の順であることを示す。
図8のステップS101において、プログラム情報取得部15は、図9に示す動作コード30を取得する。そして、処理はステップS202へ進む。
なお、本例では動作コード30は1つの関数mainを記述した1ファイルだけだが、これに限らず、複数の関数又は複数のファイルの集合であってもよい。
図8のステップS202において、検査条件取得部16は、動作コード30における目標到達箇所情報を検査条件31として取得する。そして、処理はステップS203へ進む。
検査条件取得部16が取得した検査条件31には、複数の目標到達箇所と複数の目標到達箇所の到達順序である目標到達順序とが含まれる。
本例の動作確認の目標は、以下の(1)から(6)で示される。
(1)被確認ソフトウェアの内部状態である動作モードがRUNモードに遷移する。
(2)動作モードがSTOPモードに遷移する。
(3)動作モードがSLEEPモードに遷移する。
(4)動作モードがReSTARTモードに遷移する。
(5)動作モードがENDモードに遷移する。
(6)動作モードが、STARTモードから開始して、RUNモード、STOPモード、SLEEPモード、ReSTARTモード、ENDモードの順序で遷移する。
そのため、検査条件31となる複数の目標到達箇所は、(1)から(5)の各々の被確認ソフトウェアの内部状態の遷移に相当する、動作コード30の10行目、21行目、33行目、56行目、79行目となる。
また、検査条件31となる目標到達順序は、(6)の被確認ソフトウェアの内部状態の遷移順序に相当する、動作コード30の10行目から順に、21行目、33行目、56行目、79行目となる。
したがって、本例では、担当者は、入出力装置14を介して検査条件取得部16に直接、「動作コード30の10行目、21行目、33行目、56行目、79行目」という複数の目標到達箇所を示す情報を、目標到達箇所情報として入力する。また、担当者は、「最初に10行目、続いて21行目、33行目、56行目、79行目の順」という目標到達順序を示す情報を、目標到達箇所情報として入力する。
ただし、目標到達箇所情報の入力方法はこれに限らず、図9で示すように、入出力装置14を介してディスプレイに表示された動作コード30に直接、複数の目標到達箇所と目標到達順序とを視覚的にマーキングする等、動作コード30の中の特定箇所と順序とを指定して入力する方法であればよい。
図8のステップS203において、検査条件変換部17は、「動作コード30の10行目、21行目、33行目、56行目、79行目」という検査条件31を基に、これら5つの目標到達箇所に対応する5つの目標到達箇所変数を定義する。具体的には、検査条件変換部17は、目標到達箇所変数としてreach1、reach2、reach3、reach4、reach5を定義する。そして、処理はステップS204へ進む。
図8のステップS204において、検査条件変換部17は、目標到達箇所が「動作コード30の10行目、21行目、33行目、56行目、79行目」という検査条件31を基に、各々の目標到達箇所変数の演算式で示される到達判定に用いるコードを動作コード30に挿入することで検査用コードを生成する。
具体的には、検査条件変換部17は、11行目に「reach1++;」、22行目に「reach2++;」、34行目に「reach3++;」、57行目に「reach4++;」、80行目に「reach5++;」を動作コード30挿入して検査用コードを生成する。そして、処理はステップS205へ進む。
図8のステップS205において、検査条件変換部17は、検査条件31として取得した目標到達順序に基づき、図10で示すような5つの目標到達順序条件式を定義する。具体的には、検査条件変換部17は、目標到達順序条件式として、condition1、condition2、condition3、condition4、condition5を定義する。そして、処理はステップS206へ進む。
本例の目標到達順序条件式は、動作コード30の5つの目標到達箇所を目標到達順序の通りに到達して、到達判定に用いるコードが実行された場合の5つの目標到達箇所変数が満たす条件を記述した式である。また、目標到達順序条件式は、目標到達箇所変数又は目標到達箇所変数の否定を用いた論理積で記述した式である。
図8のステップS206において、検査条件変換部17は、図11に示すように、検査用コードに目標到達順序条件式を追加した条件付き検査用コードを生成する。
具体的には、検査条件変換部17は、12行目にcondition1、25行目にcondition2、39行目にcondition3、64行目にcondition4、89行目にcondition5を挿入し、条件付き検査用コードを生成する。さらに、検査条件変換部17は、条件付き検査用コードを解析部18のSATソルバが解析可能な論理式に変換して条件付き検査用コードの論理式を生成する。そして、処理はステップS207へ進む。
図8のステップS207において、検査条件変換部17は、目標到達順序条件式を用いて条件付き検査用コードにおける5つの目標到達箇所へ目標到達順序の通りに到達したときに満たされる条件を示す、目標到達条件式32を生成する。そして、処理はステップS208へ進む。
図10で示すように、本例の目標到達条件式32は、condition1 && condition2 && condtion3 && condtion4 && condtion5である。
図8のステップS208において、解析部18は、SATソルバを用いて条件付き検査用コードの論理式と目標到達条件式32との論理積を解くことで、目標到達順序通りに5つの目標到達箇所へ到達させる入力値を探索する。そして、解析部18は、目標到達順序通りに5つの目標到達箇所へ到達させる入力値として、生成値34を生成する。
なお、本実施の形態では、生成される生成値34は、1周期分のみとは限らず、複数周期分の入力値列として生成されてもよい。
本例では、条件付き検査用コードの論理式と目標到達条件式32との論理積を真にする解である目標到達順序通りに5つの目標到達箇所へ到達させる入力値が存在する。したがって、目標到達順序通りに5つの目標到達箇所へ到達させる入力値として生成値34が生成される。そして、処理はステップS107へ進む。
図8のステップS107において、入力値出力部19は、ステップS208の処理で生成された生成値34を出力する。
以上のように生成された生成値34を各々の周期で被確認ソフトウェアへ入力して実行することで、被確認ソフトウェアの実行処理が目標到達箇所へ目標到達順序の通りに到達させることができる。具体的には、被確認ソフトウェアの実行処理は、「動作コード30の10行目、21行目、33行目、56行目、79行目」へ、最初に10行目、続いて21行目、33行目、56行目、79行目の順の通りに到達することができる。
その結果、「STARTモードから開始して、RUNモード、STOPモード、SLEEPモード、ReSTARTモード、ENDモードの順序で動作モードが遷移する」という動作確認が可能となる。
***実施の形態の効果の説明***
以上のように、本実施の形態では、担当者が被確認ソフトウェアの内部状態に関する仕様情報を参照せずに、動作コード30の中の複数の目標到達箇所と、それら複数の目標到達箇所の目標到達順序とを指定して入力する。そして、担当者がこのように指定するだけで、動作確認の目標となる複数の内部状態とそれらの遷移順序を検査条件31として入力することができる。そして、動作確認支援装置10は、この検査条件31を用いて、取得された遷移順序の通りに複数の内部状態を遷移させる入力値として生成値34を生成することができる。
よって、上記例では、内部状態を複数の状態(10行目、21行目、33行目、56行目、79行目)へ特定の順序(最初に10行目、続いて21行目、33行目、56行目、79行目の順)で遷移させる動作確認において、内部状態値を決定する作業が不要となる。したがって、動作確認に要する工数を削減することができる。
また、検査条件変換部17が、検査条件31を基に目標到達条件式32を生成する。
よって、解析部18の用いるSATソルバが解析可能な論理式を担当者が人手で作成する必要が無くなる。したがって、動作確認に要する工数の削減に加えて、数学的知識を持っていなくても担当者が動作確認することも可能となる。
***他の構成***
<変形例1>
実施の形態2では、プログラム情報取得部15は、動作コード30を取得する例を説明した。しかし、プログラム情報取得部15は、動作プログラムとしてノード又はブランチを含むASTで作成されたASTプログラムを取得し、ASTプログラムのソースコードであるASTコードへと変換し、動作コード30としてASTコードを取得してもよい。
変形例1では、担当者は、入出力装置14を介して検査条件取得部16に直接、複数の目標到達箇所を示す、ノード、ブランチ、又はノードとブランチとの組み合わせに関する情報を、目標到達箇所情報として入力する。また、担当者は、入出力装置14を介して検査条件取得部16に直接、ノード又はブランチで示される複数の目標到達箇所の目標到達順序を、目標到達箇所情報として入力する。
なお、目標到達箇所情報の入力方法は、これに限らず、入出力装置14を介してディスプレイに表示されたASTに含まれるノード又はブランチを視覚的に指定して入力する方法であってもよい。また、目標到達箇所情報の入力方法は、入出力装置14により表示されたASTに含まれるノード又はブランチを順に指定して目標到達順序を入力する方法であってもよい。
図8のステップS101においてASTコードが取得された場合、図8のステップS202において、検査条件取得部16は、目標到達箇所を示す、ノード、ブランチ、又はノードとブランチとの組み合わせに関する情報を検査条件31として、入出力装置14を介して外部装置から取得してもよい。そして、図8のステップS204において、検査条件変換部17は、検査条件31に基づき動作コード30の中から目標到達箇所を示すノード又はブランチに対応するコードの行番号を抽出し、検査用コードを生成してもよい。そして、図8のステップS205において、検査条件変換部17は、検査条件31に基づき複数の目標到達箇所を示すノード又はブランチに対応する各々のコードの行番号へ到達する目標到達順序を抽出し、目標到達順序条件式を生成してもよい。そして、図8のステップS207において、動作コード30の中の複数の目標到達箇所を示すノード又はブランチに対応するコードの行番号へ、目標到達順序の通りに到達したときに満たされる目標到達条件式32を生成してもよい。
<変形例2>
変形例2として、プログラム情報取得部15は、動作プログラムとしてノード又はエッジを含む状態遷移図で作成された状態遷移プログラムを取得し、状態遷移プログラムのソースコードである状態遷移コードへと変換し、動作コード30として状態遷移コードを取得してもよい。
変形例2では、担当者は、入出力装置14を介して検査条件取得部16に直接、複数の目標到達箇所を示す、ノード、エッジ、又はノードとエッジとの組み合わせに関する情報を、目標到達箇所情報として入力する。また、担当者は、入出力装置14を介して検査条件取得部16に直接、ノード又はエッジで示される複数の目標到達箇所の目標到達順序を、目標到達箇所情報として入力する。
なお、目標到達箇所情報の入力方法は、これに限らず、入出力装置14を介してディスプレイに表示された状態遷移図に含まれるノード又はエッジを視覚的に指定して入力する方法であってもよい。また、目標到達箇所情報の入力方法は、入出力装置14により表示された状態遷移図に含まれるノード又はエッジを順に指定して目標到達順序を入力する方法であってもよい。
図8のステップS101において状態遷移コードが取得された場合、図8のステップS202において、検査条件取得部16は、目標到達箇所を示す、ノード、エッジ、又はノードとエッジとの組み合わせに関する情報を検査条件31として、入出力装置14を介して外部装置から取得してもよい。そして、図8のステップS204において、検査条件変換部17は、検査条件31に基づき動作コード30の中から目標到達箇所を示すノード又はエッジに対応するコードの行番号を抽出し、検査用コードを生成してもよい。そして、図8のステップS205において、検査条件変換部17は、検査条件31に基づき複数の目標到達箇所を示すノード又はエッジに対応する各々のコードの行番号へ到達する目標到達順序を抽出し、目標到達順序条件式を生成してもよい。そして、図8のステップS207において、動作コード30の中の複数の目標到達箇所を示すノード又はエッジに対応するコードの行番号へ、目標到達順序の通りに到達したときに満たされる目標到達条件式32を生成してもよい。
実施の形態3.
本実施の形態について、図12から図14を用いて説明する。
本実施の形態では、被確認ソフトウェアの実行処理が目標到達箇所へ到達し、かつ、被確認ソフトウェアから出力される出力値が特定の値となるような入力値である生成値34を、動作確認支援装置10が生成する例を説明する。
本実施の形態では、主に実施の形態1との差異を説明する。
なお、以下で説明していない事項は、実施の形態1と同様である。
***構成の説明***
図12を参照して、本実施の形態に係る動作確認支援装置10の機能構成を説明する。なお、図2に示した実施の形態1と同一構成部分には同一番号を付してその説明を省略する。
本実施の形態では、動作確認支援装置10は、新たに入出力条件取得部20を備える。
入出力条件取得部20は、入出力条件35として、プログラム情報取得部15が取得した動作コード30に含まれる入力変数で示される入力値及び出力変数で示される出力値の少なくともいずれか一方に関する条件を、入出力装置14を介して外部装置から取得する。
入出力条件35は、被確認ソフトウェアの入出力値の条件を定めた条件であり、具体的には値域又は特定の値である。
なお、動作確認支援装置10の動作を実現するプログラムは、実施の形態1の動作確認支援装置10の動作を実現するプログラムに、入出力条件取得部20の機能を実現する入出力変数条件入力手順を追加したものである。
***動作の説明***
図13から図15を参照して、本実施の形態に係る動作確認支援装置10の動作例を説明する。
まず、図13のフローチャートを参照して、本実施の形態に係る動作確認支援装置10の処理動作の例を示す。
なお、実施の形態1と同一の動作には同一番号を付してその説明を省略する。
ステップS301において、プログラム情報取得部15は、動作コード30を取得する。また、プログラム情報取得部15が動作コード30を取得すると、プログラム情報取得部15が動作コード30を解析し、被確認ソフトウェアへ入力される入力値又は被確認ソフトウェアから出力される出力値である入出力値が代入される入出力変数を抽出する。そして、処理はステップS102へ進む。
ステップS102は実施の形態1で説明したものと同じであるため、説明を省略する。
ステップS102の処理が完了後、ステップS302において、入出力条件取得部20は、被確認ソフトウェアの入出力値の条件を定めた入出力条件35を取得する。
この入出力条件35は、値域又は値であり、ステップS301の処理で抽出した入出力変数が満たすべき条件を示す。そして、処理はステップS303へ進む。
ステップS303において、検査条件変換部17は、ステップS302の処理で取得された入出力条件35を基に、入出力変数の値を検査する式として、入力変数検査式及び出力変数検査式の少なくともいずれか一方を生成する。そして、検査条件変換部17は、入出力変数の値を検査する式を動作コード30に挿入して追加する。そして、処理はステップS103へ進む。
動作コード30に入出力変数の値を検査する式が挿入されたコードは、ステップS103以降の処理で動作コード30として用いられる。
ステップS103以降は、上述の通りであるため、説明を省略する。
このように、本実施の形態では、被確認ソフトウェアの入出力値に関する条件を、担当者が使用環境を想定して入力することで、想定した使用環境における被確認ソフトウェアの動作確認をすることができる。
図14に示す動作コード30の具体例を用いて、本実施の形態における動作確認支援装置10のより詳細な動作例を説明する。
具体的には、以下の例では、図14に示す動作コード30で生成される被確認ソフトウェアの、RUNモードにおける動作確認のために、以下の(1)及び(2)の条件を満たす生成値34を生成する動作を説明する。
(1)被確認ソフトウェアの内部状態がRUNモードへ遷移する。
(2)被確認ソフトウェアの出力値を代入する出力変数Demo_Oの値が300となる。
本例の動作コード30は、被確認ソフトウェアの内部状態である動作モードを表すモード変数modeと、入力値を代入する2つの入力変数Demo_I_x及びDemo_I_yと、出力値を代入する出力変数Demo_Oとを有する。
図13のステップS301において、プログラム情報取得部15は、図14に示す動作コード30を取得する。その後、プログラム情報取得部15は、取得した動作コード30を解析し、入出力変数を抽出する。そして、処理はステップS102へ進む。
本例では、入力変数Demo_I_x及びDemo_I_yと、出力変数Demo_Oとがプログラム情報取得部15により抽出される。
図13のステップS102において、検査条件取得部16は、検査条件31として、動作コード30における目標到達箇所情報を取得する。そして、ステップS302へ進む。
本例において、動作コード30における目標到達箇所は、「動作モードがRUNモードに遷移した被確認ソフトウェアの内部状態」に相当する図14に示す動作コード30の19行目である。
図13のステップS302において、入出力条件取得部20は、被確認ソフトウェアの入出力値の条件を定めた入出力条件35を取得する。そして、処理はステップS303へ進む。
本例における動作確認では、「出力変数の値が300となる」という条件を満たすため、この入出力条件35は「Demo_O=300」という出力変数の条件となる。
図13のステップS303において、検査条件変換部17は、動作コード30に、S302の処理で取得した入出力条件35を基に、出力変数の値を検査する式として、出力変数検査式を生成する。そして、検査条件変換部17は、生成した出力変数検査式を動作コード30に挿入する。具体例としては、出力変数検査式をassert文として挿入する。そして、処理はステップS103へ進む。
図13のステップS103において、検査条件変換部17は、「動作コード30の19行目」という1つの検査条件31を基に、1つの目標到達箇所変数reachを定義する。そして、処理はステップS104へ進む。
図13のステップS104において、検査条件変換部17は、「動作コード30の19行目」という検査条件31を基に、20行目に目標到達箇所変数の演算式(reach++;)のコードを挿入して追加した、検査用コードを生成する。
さらに、検査条件変換部17は、検査用コードをSATソルバが解析可能な論理式に変換して、検査用コードの論理式33を生成する。そして、処理はステップS105へ進む。
図13のステップS105において、検査条件変換部17は、検査条件31を基に定義した目標到達箇所変数reachを基に、目標到達箇所へ到達したときに満たされる目標到達条件式32(reach>0)を生成する。そして、処理はステップS106へ進む。
図13のステップS106において、解析部18は、SATソルバを用いて検査用コードの論理式33と目標到達条件式32との論理積を解くことで入出力条件35を満たし、かつ、目標到達箇所へ到達させる入力値を探索する。そして、解析部18は、入出力条件35を満たし、かつ、目標到達箇所へ到達させる入力値として生成値34を生成する。具体的には、解析部18は、目標到達箇所である動作コード30の19行目に到達し、かつ、出力変数Demo_Oの値が300となる、入力変数Demo_I_x及びDemo_I_yへ代入される入力値を探索する。そして、解析部18は、入出力条件35を満たし、かつ、目標到達箇所へ到達させる入力値として生成値34を生成する。
本例では、reach++;が挿入された検査用コードの20行目に到達し、目標到達条件式32である「reach>0」を真にする解である入力値が存在する。したがって、「Demo_O=300」という入出力条件35を満たし、かつ、動作コード30の19行目へ到達させる入力値として生成値34が生成される。そのため、処理はステップS107へ進む。
図13のステップS107において、入力値出力部19は、ステップS106の処理で生成された生成値34を出力する。
図15では、本例で生成される生成値34及び目標到達箇所へ到達するまでの被確認ソフトウェアの実行順序を示す。
図15の右下の表は、被確認ソフトウェアへの入力として、3回の被確認ソフトウェアの実行周期の各々の周期に入力変数Demo_I_x及びDemo_I_yへ代入される入力値を示す。
具体的には、1周期目に入力変数Demo_I_x及びDemo_I_yへ代入される入力値は、10と3である。また、2周期目に入力変数Demo_I_x及びDemo_I_yへ代入される入力値も、10と3である。また、3周期目に入力変数Demo_I_x及びDemo_I_yへ代入される入力値も、10と3である。
図15の右上の表は、入力変数Demo_I_x及びDemo_I_yへの入力値の代入前後の出力変数Demo_Oの値及びモード変数modeの値を示す。
具体的には、1周期目の開始時、出力変数Demo_Oは値をもたず、モード変数modeはSTARTである。入力変数Demo_I_x及びDemo_I_yへ10と3が代入されると、動作コード30の8行目及び9行目の処理が実行され、出力変数Demo_Oに100が、モード変数modeにRUNが代入される。そして、1周期目の終了時には出力変数Demo_Oは100となり、モード変数modeはRUNとなる。
また、2周期目の開始時、出力変数Demo_Oは100、モード変数modeはRUNである。入力変数Demo_I_x及びDemo_I_yへ10と3が代入されると、動作コード30の18行目及び19行目の処理が実行され、出力変数Demo_OにDemo_O+100が、モード変数modeにRUNが代入される。そして、1周期目の終了時には出力変数Demo_Oは200となり、モード変数modeはRUNとなる。
また、3周期目の開始時、出力変数Demo_Oは200、モード変数modeはRUNである。入力変数Demo_I_x及びDemo_I_yへ10と3が代入されると、動作コード30の18行目及び19行目の処理が実行され、出力変数Demo_OにDemo_O+100が、モード変数modeにRUNが代入される。そして、1周期目の終了時には出力変数Demo_Oは300となり、モード変数modeはRUNとなる。
したがって、3周期目の終了時点で被確認ソフトウェアの実行処理は本例の目標到達箇所を示す動作コード30の19行目に到達し、かつ、入出力条件35である「Demo_O=300」が満たされる。
本例では、図7の右下の表で示されるように、入力変数Demo_I_x及びDemo_I_yへの入力値が、1周期目では10と3、2周期目でも10と3、3周期目でも10と3、という3周期分の入力値として生成値34が出力される。
このように、本実施の形態では、生成値34は、1周期分のみとは限らず、複数周期分の入力値列として生成されてもよい。
以上のように生成された生成値34を各々の周期で被確認ソフトウェアへ入力して実行することで、3周期目において、実行処理を目標到達箇所である動作コード30の19行目に到達させ、かつ、出力変数Demo_Oの値を300とすることができる。
本例では、入出力条件取得部20が、出力変数Demo_O=300という出力値に関する条件を入出力条件35として取得した場合を説明した。しかし、それに限らず、入出力条件取得部20が、特定の入力値を入出力条件35として取得してもよく、また入出力値の値域を入出力条件35として取得してもよい。
***実施の形態の効果の説明***
以上のように、担当者が被確認ソフトウェアの入出力値に関する入出力条件35を入力することで、被確認ソフトウェアの使用環境において取りえない入出力値を生じさせる生成値34の生成を除外することができる。
これにより、担当者は被確認ソフトウェアの使用環境において想定されない不要な処理動作の実行を除外し、動作確認を実行することが可能となる。しがたって、動作確認に要する工数を削減することができる。
<変形例1>
実施の形態3では、プログラム情報取得部15は、動作コード30を取得する例を説明した。しかし、プログラム情報取得部15は、動作プログラムとしてノード又はブランチを含むAST(Abstract Syntax Tree)で作成されたASTプログラムを取得し、ASTプログラムのソースコードであるASTコードへと変換し、動作コード30としてASTコードを取得してもよい。
変形例1では、担当者は、入出力装置14を介して検査条件取得部16に直接、目標到達箇所を示すノード又はブランチに関する情報を、目標到達箇所情報として入力する。また、目標到達箇所情報の入力方法は、これに限らず、入出力装置14を介してディスプレイに表示されたASTに含まれるノード又はブランチを視覚的に指定して入力する方法であってもよい。
図13のステップS301においてASTコードが取得された場合、図13のステップS102において、検査条件取得部16は、目標到達箇所を示すノード又はブランチに関する情報を検査条件31として、入出力装置14を介して外部装置から取得してもよい。そして、図13のステップS104において、検査条件変換部17は、検査条件31に基づき動作コード30の中から目標到達箇所を示すノード又はブランチに対応するコードの行番号を抽出し、検査用コードの論理式33を生成してもよい。そして、図13のステップS105において、動作コード30の中の目標到達箇所を示すノード又はブランチに対応するコードの行番号へ到達したときに満たされる目標到達条件式32を生成してもよい。
<変形例2>
変形例2として、プログラム情報取得部15は、動作プログラムとしてノード又はエッジを含む状態遷移図で作成された状態遷移プログラムを取得し、状態遷移プログラムのソースコードである状態遷移コードへと変換し、動作コード30として状態遷移コードを取得してもよい。
変形例2では、担当者は、入出力装置14を介して検査条件取得部16に直接、目標到達箇所を示すノード又はエッジに関する情報を、目標到達箇所情報として入力する。また、目標到達箇所情報の入力方法は、これに限らず、入出力装置14を介してディスプレイに表示された状態遷移図に含まれるノード又はエッジを視覚的に指定して入力する方法であってもよい。
図13のステップS301において状態遷移コードが取得された場合、図13のステップS102において、検査条件取得部16は、目標到達箇所を示すノード又はエッジに関する情報を検査条件31として、入出力装置14を介して外部装置から取得してもよい。
そして、図13のステップS104において、検査条件変換部17は、検査条件31に基づき動作コード30の中から目標到達箇所を示すノード又はエッジに対応するコードの行番号を抽出し、検査用コードの論理式33を生成してもよい。そして、図13のステップS105において、動作コード30の中の目標到達箇所を示すノード又はエッジに対応するコードの行番号へ到達したときに満たされる目標到達条件式32を生成してもよい。
10 動作確認支援装置、11 プロセッサ、12 メモリ、13 通信装置、14 入出力装置、15 プログラム情報取得部、16 検査条件取得部、17 検査条件変換部、18 解析部、19 入力値出力部、20 入出力条件取得部、30 動作コード、31 検査条件、32 目標到達条件式、33 検査用コードの論理式、34 生成値、35 入出力条件。

Claims (10)

  1. 入力値を読み込んで動作する動作プログラムのソースコードである動作コードを取得するプログラム情報取得部と、
    前記動作コードの目標到達箇所を含む目標到達箇所に関する情報を検査条件として取得する検査条件取得部と、
    前記検査条件取得部が取得した前記検査条件に含まれる目標到達箇所へ到達したことを判定する判定式を生成する検査条件変換部と、
    前記検査条件変換部が生成した前記判定式を用いて前記目標到達箇所へ到達させる前記入力値として生成値を生成する解析部とを備え
    前記検査条件変換部は、
    前記判定式として前記目標到達箇所への到達判定に用いる論理式を生成し、前記目標到達箇所への到達判定に用いるコードを前記動作コードの前記目標到達箇所に追加した検査用コードを作成し、前記検査用コードを論理式へ変換して前記検査用コードの論理式を生成し、
    前記解析部は、
    前記判定式と前記検査用コードの論理式との論理積を充足する前記入力値を探索して、前記目標到達箇所へ到達させる前記入力値として生成値を生成する動作確認支援装置。
  2. 前記検査条件変換部は、
    前記検査条件取得部が取得した検査条件を基に、前記目標到達箇所へ到達したことを判定する到達判定に用いられる目標到達箇所変数を定義し、
    前記動作コードの実行時に前記目標到達箇所の行へ到達時に必ず実行される、目標到達箇所の行の前後の行のうちどちらか一方に、前記目標到達箇所変数の演算式で示されるコードを挿入したものを前記検査用コードとして作成する請求項1に記載の動作確認支援装置。
  3. 前記検査条件取得部は、
    前記目標到達箇所を示す前記動作コードの行番号を前記検査条件として取得し、
    前記検査条件変換部は、
    前記判定式として、前記目標到達箇所を示す前記動作コードの行番号へ到達したときに満たされる目標到達条件式を生成する請求項1又は請求項2に記載の動作確認支援装置。
  4. 前記検査条件取得部は、
    複数の目標到達箇所を示す前記動作コードの行番号と、前記複数の目標到達箇所の到達順序である目標到達順序とを前記検査条件として取得し、
    前記検査条件変換部は、
    前記判定式として、前記目標到達順序の通りに前記複数の目標到達箇所を示す前記動作コードの行番号へ到達したときに満たされる目標到達条件式を生成する請求項1から請求項3のいずれか1項に記載の動作確認支援装置。
  5. 動作確認支援装置は、更に、
    前記入力値及び前記動作プログラムが出力する出力値の少なくともいずれか一方の値域又は値である入出力条件を取得する入出力条件取得部を備え、
    前記解析部は、
    前記検査条件変換部が生成した前記判定式を用いて、前記入出力条件を満たし、かつ、前記目標到達箇所へ到達させる前記入力値として生成値を生成する請求項1から請求項4のいずれか1項に記載の動作確認支援装置。
  6. 前記解析部は、
    前記目標到達箇所へ到達させる前記入力値を生成できなかった場合に、生成できなかったことを通知する請求項1から請求項5のいずれか1項に記載の動作確認支援装置。
  7. 前記プログラム情報取得部は、
    前記動作プログラムとしてノード又はブランチを含むAST(Abstract Syntax Tree)で作成されたASTプログラムを取得し、前記ASTプログラムを前記ASTプログラムのソースコードであるASTコードへと変換し、前記ASTコードを前記動作コードとして取得し、
    前記検査条件取得部は、
    前記目標到達箇所を示す前記ノード又はブランチを前記検査条件として取得し、
    前記検査条件変換部は、
    前記検査条件の前記ノード又はブランチに対応する前記動作コードの行番号を抽出し、
    前記判定式として、前記動作コードの行番号へ到達したときに満たされる目標到達条件式を生成する請求項1から請求項6のいずれか1項に記載の動作確認支援装置。
  8. 前記プログラム情報取得部は、
    前記動作プログラムとしてノード又はエッジを含む状態遷移図で作成された状態遷移プログラムを取得し、前記状態遷移プログラムを前記状態遷移プログラムのソースコードである状態遷移コードへと変換し、前記状態遷移コードを前記動作コードとして取得し、
    前記検査条件取得部は、
    前記目標到達箇所を示す前記ノード又はエッジを前記検査条件として取得し、
    検査条件変換部は、
    前記検査条件の前記ノード又はエッジに対応する前記動作コードの行番号を抽出し、
    前記判定式として、前記動作コードの行番号へ到達したときに満たされる目標到達条件式を生成する請求項1から請求項6のいずれか1項に記載の動作確認支援装置。
  9. コンピュータが、
    入力値を読み込んで動作する動作プログラムのソースコードである動作コードを取得し、
    前記動作コードの目標到達箇所を含む目標到達箇所に関する情報を検査条件として取得し、
    前記検査条件に含まれる目標到達箇所へ到達したことを判定する判定式を生成し、
    前記判定式を用いて前記目標到達箇所へ到達させる前記入力値として生成値を生成する動作確認支援方法であって
    前記判定式として前記目標到達箇所への到達判定に用いる論理式を生成し、前記目標到達箇所への到達判定に用いるコードを前記動作コードの前記目標到達箇所に追加した検査用コードを作成し、前記検査用コードを論理式へ変換して前記検査用コードの論理式を生成し、
    前記判定式と前記検査用コードの論理式との論理積を充足する前記入力値を探索して、前記目標到達箇所へ到達させる前記入力値として前記生成値を生成する動作確認支援方法
  10. 入力値を読み込んで動作する動作プログラムのソースコードである動作コードを取得するプログラム情報取得処理と、
    前記動作コードの目標到達箇所を含む目標到達箇所に関する情報を検査条件として取得する検査条件取得処理と、
    前記検査条件取得処理により取得した前記検査条件に含まれる目標到達箇所へ到達したことを判定する判定式を生成する検査条件変換処理と、
    前記検査条件変換処理により生成した前記判定式を用いて前記目標到達箇所へ到達させる前記入力値として生成値を生成する解析処理とをコンピュータに実行させる動作確認支援プログラムであって、
    前記検査条件変換処理は、
    前記判定式として前記目標到達箇所への到達判定に用いる論理式を生成し、前記目標到達箇所への到達判定に用いるコードを前記動作コードの前記目標到達箇所に追加した検査用コードを作成し、前記検査用コードを論理式へ変換して前記検査用コードの論理式を生成し、
    前記解析処理は、
    前記判定式と前記検査用コードの論理式との論理積を充足する前記入力値を探索して、前記目標到達箇所へ到達させる前記入力値として生成値を生成する動作確認支援プログラム
JP2020570075A 2020-04-20 2020-04-20 動作確認支援装置、動作確認支援方法及び動作確認支援プログラム Active JP6854994B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/017102 WO2021214843A1 (ja) 2020-04-20 2020-04-20 動作確認支援装置、動作確認支援方法及び動作確認支援プログラム

Publications (2)

Publication Number Publication Date
JP6854994B1 true JP6854994B1 (ja) 2021-04-07
JPWO2021214843A1 JPWO2021214843A1 (ja) 2021-10-28

Family

ID=75267904

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020570075A Active JP6854994B1 (ja) 2020-04-20 2020-04-20 動作確認支援装置、動作確認支援方法及び動作確認支援プログラム

Country Status (2)

Country Link
JP (1) JP6854994B1 (ja)
WO (1) WO2021214843A1 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001306648A (ja) * 2000-03-20 2001-11-02 Nec Corp テストベンチ生成装置とその自動テストベンチ生成方法、検証方法、評価方法
JP2010140407A (ja) * 2008-12-15 2010-06-24 Nomura Research Institute Ltd ソースコード検査装置
JP2011159115A (ja) * 2010-02-01 2011-08-18 Fuji Electric Co Ltd シーケンス監視自動プログラミング装置、自動プログラミング方法、およびプログラム
JP2014063415A (ja) * 2012-09-24 2014-04-10 Mitsubishi Electric Corp テストケース自動生成装置及びテストケース自動生成プログラム
JP2015197868A (ja) * 2014-04-02 2015-11-09 トヨタ自動車株式会社 コンピュータ・プログラムの検査装置
JP2016031622A (ja) * 2014-07-29 2016-03-07 日立オートモティブシステムズ株式会社 ソフトウェア検証システムおよび制御装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001306648A (ja) * 2000-03-20 2001-11-02 Nec Corp テストベンチ生成装置とその自動テストベンチ生成方法、検証方法、評価方法
JP2010140407A (ja) * 2008-12-15 2010-06-24 Nomura Research Institute Ltd ソースコード検査装置
JP2011159115A (ja) * 2010-02-01 2011-08-18 Fuji Electric Co Ltd シーケンス監視自動プログラミング装置、自動プログラミング方法、およびプログラム
JP2014063415A (ja) * 2012-09-24 2014-04-10 Mitsubishi Electric Corp テストケース自動生成装置及びテストケース自動生成プログラム
JP2015197868A (ja) * 2014-04-02 2015-11-09 トヨタ自動車株式会社 コンピュータ・プログラムの検査装置
JP2016031622A (ja) * 2014-07-29 2016-03-07 日立オートモティブシステムズ株式会社 ソフトウェア検証システムおよび制御装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
橋本 祐介: "ソフトウェアモデル検査とテストケース生成の統合ツールチェイン", 情報処理学会 シンポジウム ソフトウェアエンジニアリングシンポジウム 2011, JPN7020002126, JP, ISSN: 0004446098 *

Also Published As

Publication number Publication date
JPWO2021214843A1 (ja) 2021-10-28
WO2021214843A1 (ja) 2021-10-28

Similar Documents

Publication Publication Date Title
US8181134B2 (en) Techniques for performing conditional sequential equivalence checking of an integrated circuit logic design
US8996339B2 (en) Incremental formal verification
US20150094997A1 (en) Explaining partially illegal combinations in combinatorial models
US9002694B2 (en) Verification of design derived from power intent
US8909579B2 (en) Identifying invariant candidates based on proofs
US9218273B2 (en) Automatic generation of a resource reconfiguring test
US8484591B2 (en) Enhancing redundancy removal with early merging
US20130275939A1 (en) Efficient file system object-based deduplication
US9378000B1 (en) Determination of unreachable elements in a design
JP6854994B1 (ja) 動作確認支援装置、動作確認支援方法及び動作確認支援プログラム
EP3564836A1 (en) Semiconductor lsi design device and design method
US8949766B2 (en) Detecting corresponding paths in combinationally equivalent circuit designs
JP2009230677A (ja) プロパティ生成システムおよびプロパティ検証システム
US10666255B1 (en) System and method for compacting X-pessimism fixes for gate-level logic simulation
US11461079B2 (en) Non-transitory computer-readable medium
JP2013003999A (ja) 検証装置、検証方法及び検証プログラム
Khomenko et al. Detecting state coding conflicts in stgs using integer programming
US8397189B2 (en) Model checking in state transition machine verification
JP6318976B2 (ja) デバッグ回路、デバッガ装置、半導体装置及びデバッグ方法
JP6818568B2 (ja) 通信装置、通信仕様差分抽出方法及び通信仕様差分抽出プログラム
US10635845B2 (en) Method and apparatus for improving Boolean satisfiability solver generated based on input design with data qualifier signals
US8996435B2 (en) Determining invariants in a model
Jayasena et al. HIVE: Scalable Hardware-Firmware Co-Verification using Scenario-based Decomposition and Automated Hint Extraction
US8584063B1 (en) Assertion-based design partitioning
US8782579B2 (en) Connection verification method, recording medium thereof, and connection verification apparatus

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201215

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201215

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20201215

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20210105

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210316

R150 Certificate of patent or registration of utility model

Ref document number: 6854994

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250