(57)【特許請求の範囲】
【請求項１】
入力値を読み込んで動作する動作プログラムのソースコードである動作コードを取得するプログラム情報取得部と、
前記動作コードの目標到達箇所を含む目標到達箇所に関する情報を検査条件として取得する検査条件取得部と、
前記検査条件取得部が取得した前記検査条件に含まれる目標到達箇所へ到達したことを判定する判定式を生成する検査条件変換部と、
前記検査条件変換部が生成した前記判定式を用いて前記目標到達箇所へ到達させる前記入力値として生成値を生成する解析部とを備え、
前記検査条件変換部は、
前記判定式として前記目標到達箇所への到達判定に用いる論理式を生成し、前記目標到達箇所への到達判定に用いるコードを前記動作コードの前記目標到達箇所に追加した検査用コードを作成し、前記検査用コードを論理式へ変換して前記検査用コードの論理式を生成し、
前記解析部は、
前記判定式と前記検査用コードの論理式との論理積を充足する前記入力値を探索して、前記目標到達箇所へ到達させる前記入力値として生成値を生成する動作確認支援装置。
【請求項２】
前記検査条件変換部は、
前記検査条件取得部が取得した検査条件を基に、前記目標到達箇所へ到達したことを判定する到達判定に用いられる目標到達箇所変数を定義し、
前記動作コードの実行時に前記目標到達箇所の行へ到達時に必ず実行される、目標到達箇所の行の前後の行のうちどちらか一方に、前記目標到達箇所変数の演算式で示されるコードを挿入したものを前記検査用コードとして作成する請求項１に記載の動作確認支援装置。
【請求項３】
前記検査条件取得部は、
前記目標到達箇所を示す前記動作コードの行番号を前記検査条件として取得し、
前記検査条件変換部は、
前記判定式として、前記目標到達箇所を示す前記動作コードの行番号へ到達したときに満たされる目標到達条件式を生成する請求項１又は請求項２に記載の動作確認支援装置。
【請求項４】
前記検査条件取得部は、
複数の目標到達箇所を示す前記動作コードの行番号と、前記複数の目標到達箇所の到達順序である目標到達順序とを前記検査条件として取得し、
前記検査条件変換部は、
前記判定式として、前記目標到達順序の通りに前記複数の目標到達箇所を示す前記動作コードの行番号へ到達したときに満たされる目標到達条件式を生成する請求項１から請求項３のいずれか１項に記載の動作確認支援装置。
【請求項５】
動作確認支援装置は、更に、
前記入力値及び前記動作プログラムが出力する出力値の少なくともいずれか一方の値域又は値である入出力条件を取得する入出力条件取得部を備え、
前記解析部は、
前記検査条件変換部が生成した前記判定式を用いて、前記入出力条件を満たし、かつ、前記目標到達箇所へ到達させる前記入力値として生成値を生成する請求項１から請求項４のいずれか１項に記載の動作確認支援装置。
【請求項６】
前記解析部は、
前記目標到達箇所へ到達させる前記入力値を生成できなかった場合に、生成できなかったことを通知する請求項１から請求項５のいずれか１項に記載の動作確認支援装置。
【請求項７】
前記プログラム情報取得部は、
前記動作プログラムとしてノード又はブランチを含むＡＳＴ（Ａｂｓｔｒａｃｔ  Ｓｙｎｔａｘ  Ｔｒｅｅ）で作成されたＡＳＴプログラムを取得し、前記ＡＳＴプログラムを前記ＡＳＴプログラムのソースコードであるＡＳＴコードへと変換し、前記ＡＳＴコードを前記動作コードとして取得し、
前記検査条件取得部は、
前記目標到達箇所を示す前記ノード又はブランチを前記検査条件として取得し、
前記検査条件変換部は、
前記検査条件の前記ノード又はブランチに対応する前記動作コードの行番号を抽出し、
前記判定式として、前記動作コードの行番号へ到達したときに満たされる目標到達条件式を生成する請求項１から請求項６のいずれか１項に記載の動作確認支援装置。
【請求項８】
前記プログラム情報取得部は、
前記動作プログラムとしてノード又はエッジを含む状態遷移図で作成された状態遷移プログラムを取得し、前記状態遷移プログラムを前記状態遷移プログラムのソースコードである状態遷移コードへと変換し、前記状態遷移コードを前記動作コードとして取得し、
前記検査条件取得部は、
前記目標到達箇所を示す前記ノード又はエッジを前記検査条件として取得し、
検査条件変換部は、
前記検査条件の前記ノード又はエッジに対応する前記動作コードの行番号を抽出し、
前記判定式として、前記動作コードの行番号へ到達したときに満たされる目標到達条件式を生成する請求項１から請求項６のいずれか１項に記載の動作確認支援装置。
【請求項９】
コンピュータが、
入力値を読み込んで動作する動作プログラムのソースコードである動作コードを取得し、
前記動作コードの目標到達箇所を含む目標到達箇所に関する情報を検査条件として取得し、
前記検査条件に含まれる目標到達箇所へ到達したことを判定する判定式を生成し、
前記判定式を用いて前記目標到達箇所へ到達させる前記入力値として生成値を生成する動作確認支援方法であって、
前記判定式として前記目標到達箇所への到達判定に用いる論理式を生成し、前記目標到達箇所への到達判定に用いるコードを前記動作コードの前記目標到達箇所に追加した検査用コードを作成し、前記検査用コードを論理式へ変換して前記検査用コードの論理式を生成し、
前記判定式と前記検査用コードの論理式との論理積を充足する前記入力値を探索して、前記目標到達箇所へ到達させる前記入力値として前記生成値を生成する動作確認支援方法。
【請求項１０】
入力値を読み込んで動作する動作プログラムのソースコードである動作コードを取得するプログラム情報取得処理と、
前記動作コードの目標到達箇所を含む目標到達箇所に関する情報を検査条件として取得する検査条件取得処理と、
前記検査条件取得処理により取得した前記検査条件に含まれる目標到達箇所へ到達したことを判定する判定式を生成する検査条件変換処理と、
前記検査条件変換処理により生成した前記判定式を用いて前記目標到達箇所へ到達させる前記入力値として生成値を生成する解析処理とをコンピュータに実行させる動作確認支援プログラムであって、
前記検査条件変換処理は、
前記判定式として前記目標到達箇所への到達判定に用いる論理式を生成し、前記目標到達箇所への到達判定に用いるコードを前記動作コードの前記目標到達箇所に追加した検査用コードを作成し、前記検査用コードを論理式へ変換して前記検査用コードの論理式を生成し、
前記解析処理は、
前記判定式と前記検査用コードの論理式との論理積を充足する前記入力値を探索して、前記目標到達箇所へ到達させる前記入力値として生成値を生成する動作確認支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、動作確認支援装置、動作確認支援方法及び動作確認支援プログラムに関する。
【背景技術】
【０００２】
ソフトウェア開発時、動作確認を行う担当者（以下、担当者という）は開発しているソフトウェア自体の動作、又はソフトウェアにより制御される機器の動作確認をするために、入力値により遷移するソフトウェアの内部状態を特定の状態に遷移させる場合がある。
このような場合、担当者は目標となる特定の状態にソフトウェアの内部状態を遷移させるための入力値を決定する必要がある。そして、担当者は決定した入力値をソフトウェアに入力することで、ソフトウェアの内部状態が実際に目標となる特定の状態へ遷移することが実現できるかを確認する。又は、担当者は、目標となる特定の状態への遷移の実現により、ソフトウェアにより制御される機器が目標となる特定の状態への遷移に対応して動作することができるかを確認する。【０００３】
このようなソフトウェア開発時の確認作業の具体例として、ソフトウェアを搭載したＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）等の組込み機器の動作確認作業がある。組込み機器に搭載されたソフトウェアは、複雑な制御を実現するために、ソフトウェアへの入力により遷移する内部状態を持ち、入力及び内部状態によりソフトウェアの出力が変化する。このような組込み機器の特定の動作確認するために、担当者はソフトウェアの内部状態を特定の状態に遷移させる場合がある。そのために、担当者は、ソフトウェアの仕様情報を基に、ソフトウェアの内部状態を表す内部状態値を、内部状態が特定の状態となる値として目標に設定し、設定した目標から遡ってソフトウェアへ入力する入力値を決定する必要がある。【０００４】
しかし、ソフトウェア開発における担当者は、必ずしもソフトウェアの仕様を全て把握しているとは限らない。また、担当者がソフトウェアの仕様を把握しているとしても、担当者はソフトウェアの仕様を考慮して、目標の内部状態値に到達する入力値を決定しなければならず、動作確認に必要な入力値の作成には工数がかかっていた。加えて、様々なシステム又は製品に搭載されるソフトウェアは、社会的な要求に応えて機能を充実させることにより、ソフトウェアの仕様は大規模複雑化している。これに伴い、担当者が入力値を手動で作成する工数が増加している。
このソフトウェア開発時の動作確認における入力値の作成に関する工数増加を抑制するために、数学及び論理学に基づいてシステムの性質を証明する形式検証技術を用いて、動作確認に必要な入力値を自動で生成する手法がある。【０００５】
このような形式検証技術を用いた手法の例として、特許文献１に記載された手法がある。特許文献１に記載の手法は、形式検証技術の一つであるモデル検査を用いて、ソフトウェアの動作プログラムの動作確認をする検査装置の手法である。当該文献では、検査装置がソフトウェアへの入力値又はその時系列である入力値列と、ソフトウェアの内部状態値又はその時系列である内部状態値列と、ソフトウェアからの出力値又はその時系列である出力値列とが満たすべき条件が検査条件とされる。そして、ＳＡＴ（Ｓａｔｉｓｆｉａｂｉｌｉｔｙ  Ｐｒｏｂｌｅｍ）ソルバを用いて検査条件を満たす入力値列の解を探索し、入力値列の解が存在する場合は、解である入力値列と、内部状態値列と、出力値列とを出力する手法が開示されている。なお、ＳＡＴソルバは、論理式を取得すると、論理式を真とする解を探索し、探索した結果存在した解を出力する公知の技術である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１９−０８３０１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１の手法では、ソフトウェアを目標となる特定の内部状態へ遷移させる入力値を求めるために、担当者は目標となる特定の内部状態を表す内部状態値を検査条件として設定する必要がある。つまり、担当者が内部状態に関する仕様情報を参照して、設定対象として目標となる特定の内部状態を選択し、その目標となる特定の内部状態を表す内部状態値を決定する作業が必要となる。したがって、内部状態値を決定する作業により動作確認の工数が増加してしまうといった課題があった。
また、担当者が人手で内部状態値をＳＡＴソルバが解析可能な論理式を作成しなければならない作業も必要となる。したがって、内部状態値をＳＡＴソルバが解析可能な論理式を作成する作業により動作確認の工数が増加してしまうといった課題があった。
特に、大規模なソフトウェア等では、内部状態が取りうる状態の数は多く複雑である。このようなソフトウェアの動作確認では、目標となる特定の内部状態を選択し、内部状態に関する仕様情報を参照し、その目標となる特定の内部状態を表す内部状態値を決定する作業は困難であり、動作確認の工数が大幅に増加してしまう。【０００８】
本開示は、ソフトウェアの動作確認作業の工数を削減することを主な目的とする。
【課題を解決するための手段】
【０００９】
本開示に係る動作確認支援装置は、
入力値を読み込んで動作する動作プログラムのソースコードである動作コードを取得するプログラム情報取得部と、
前記動作コードの目標到達箇所を含む目標到達箇所に関する情報を検査条件として取得する検査条件取得部と、
前記検査条件取得部が取得した前記検査条件に含まれる目標到達箇所へ到達したことを判定する判定式を生成する検査条件変換部と、
前記検査条件変換部が生成した前記判定式を用いて前記目標到達箇所へ到達させる前記入力値として生成値を生成する解析部とを備える。
【発明の効果】
【００１０】
本開示によれば、動作確認の作業において、担当者が動作コードと動作コードの目標到達箇所を含む目標到達箇所に関する情報を入力することで、解析部は動作確認の作業に必要な入力値を生成する。したがって、ソフトウェアの動作確認作業の工数を削減することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１に係る動作確認支援装置のハードウェア構成例を示す図。
【図２】実施の形態１に係る動作確認支援装置の機能構成例を示す図。
【図３】実施の形態１に係る動作確認支援装置の処理動作を示すフローチャート。
【図４】実施の形態１に係る動作コードを示す図。
【図５】実施の形態１に係る動作コードへのマーキング方法を示す図。
【図６】実施の形態１に係る検査用コードを示す図。
【図７】実施の形態１に係る入力値及び被確認ソフトウェアの実行順序を示す図。
【図８】実施の形態２に係る動作確認支援装置の処理動作を示すフローチャート。
【図９】実施の形態２に係る動作コードを示す図。
【図１０】実施の形態２に係る目標到達順序条件式及び目標到達条件式を示す図。
【図１１】実施の形態２に係る条件付き検査用コードを示す図。
【図１２】実施の形態３に係る動作確認支援装置の機能構成例を示す図。
【図１３】実施の形態３に係る動作確認支援装置の処理動作を示すフローチャート。
【図１４】実施の形態３に係る動作コードを示す図。
【図１５】実施の形態３に係る入力値及び被確認ソフトウェアの実行順序を示す図。
【発明を実施するための形態】
【００１２】
以下、本開示の実施の形態について、図を用いて説明する。各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、説明を適宜省略又は簡略化する。
なお、本開示は、以下に説明する実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。例えば、以下に説明する実施の形態のうち、２つ以上の実施の形態が組み合わせられて実施されても構わない。あるいは、以下に説明する実施の形態のうち、１つの実施の形態又は２つ以上の実施の形態の組み合わせが部分的に実施されても構わない。
以下の説明では、本開示の動作確認対象のソフトウェアを被確認ソフトウェアと示す。そして、被確認ソフトウェアのプログラムを動作プログラムと示す。また、動作プログラムのソースコードを動作コードと示す。
【００１３】
実施の形態１．
本実施の形態について、図１から図７を用いて説明する。
＊＊＊構成の説明＊＊＊
図１を参照して、本実施の形態に係る動作確認支援装置１０のハードウェア構成例を説明する。
動作確認支援装置１０は、コンピュータである。動作確認支援装置１０は、プロセッサ１１を備えるとともに、メモリ１２、通信装置１３、及び入出力装置１４といった他のハードウェアを備える。プロセッサ１１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
なお、動作確認支援装置１０の動作手順は、動作確認支援方法に相当する。また、動作確認支援装置１０の動作を実現するプログラムは、動作確認支援プログラムに相当する。
【００１４】
プロセッサ１１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ１１は、具体例としては、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等である。
プロセッサ１１は、動作確認支援装置１０の動作を実現するプログラムを実行する。動作確認支援装置１０の動作を実現するプログラムは、後述の、プログラム情報取得部１５、検査条件取得部１６、検査条件変換部１７、解析部１８、及び入力値出力部１９の機能を実現するプログラムである。
【００１５】
メモリ１２は、記憶装置である。メモリ１２は、具体例としては、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュメモリ又はこれらの組み合わせである。
メモリ１２には、動作確認支援装置１０の動作を実現するプログラム、動作コード３０、及び被確認ソフトウェアの仕様情報が記憶される。被確認ソフトウェアは、任意の種類のソフトウェアでよいが、本実施の形態では組込みソフトウェアであるとして説明を進める。
【００１６】
通信装置１３は、信号線を介して接続先との情報の通信処理を実行する電子回路である。通信装置１３は、動作確認支援装置１０に入力される情報を受信するレシーバと、動作確認支援装置１０から出力される情報を送信するトランスミッタとを含む。通信装置１３は、具体例としては、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
【００１７】
入出力装置１４は、情報の入出力処理を実行する電子回路である。入出力装置１４は、動作確認支援装置１０へ入力される入力情報の入力操作に用いられる入力機器又は動作確認支援装置１０から出力される出力情報を画面に表示するディスプレイ等の外部装置に接続される。
入力機器は、具体例としては、マウス、キーボード、タッチパネル、又は、これらのうちいくつか、もしくは、すべての組み合わせである。ディスプレイは、具体例としては、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。ディスプレイは、後述のプログラム情報取得部１５が取得した動作コード３０を表示してもよい。また、ディスプレイは、後述の入力値出力部１９が出力した入力値を表示してもよい。なお、入力値出力部１９が出力した入力値は、後述の解析部１８が生成する入力値と同一であり、以下では生成値３４として説明する。
【００１８】
動作確認支援装置１０の動作を実現するプログラムは、メモリ１２からプロセッサ１１に読み込まれ、プロセッサ１１によって実行される。メモリ１２には、動作確認支援装置１０の動作を実現するプログラムだけでなく、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。プロセッサ１１は、ＯＳの少なくとも一部を実行しながら、動作確認支援装置１０の動作を実現するプログラムを実行する。なお、動作確認支援装置１０の動作を実現するプログラムの一部又は全部がＯＳに組み込まれていてもよい。プロセッサ１１がＯＳを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
動作確認支援装置１０の動作を実現するプログラム、動作コード３０、被確認ソフトウェアの仕様情報、及びＯＳは、補助記憶装置に記憶されていてもよい。補助記憶装置は、具体例としては、ハードディスク、フラッシュメモリ又はこれらの組み合わせである。また、補助記憶装置は、ＳＳＤ（登録商標、Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＳＤ（登録商標、Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカード、ＣＦ（登録商標、ＣｏｍｐａｃｔＦｌａｓｈ）、ＮＡＮＤフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（登録商標、Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）といった可搬記録媒体又はこれらの組み合わせであってもよい。
【００１９】
動作確認支援装置１０の動作を実現するプログラム及びＯＳは、補助記憶装置に記憶されている場合、補助記憶装置からメモリ１２にロードされ、メモリ１２からプロセッサ１１に読み込まれ、プロセッサ１１によって実行される。
動作確認支援装置１０は、プロセッサ１１を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、動作確認支援装置１０の動作を実現するプログラムの実行を分担する。それぞれのプロセッサは、具体例としては、ＣＰＵである。
動作確認支援装置１０の動作を実現するプログラムにより利用、処理又は出力されるデータ、情報、信号値、及び変数値は、メモリ１２、補助記憶装置、又は、プロセッサ１１内のレジスタ又はキャッシュメモリの少なくともいずれかに記憶される。
【００２０】
動作確認支援装置１０の動作を実現するプログラムは、コンピュータ読取可能な媒体に記憶されて提供されてもよく、記憶媒体に格納されて提供されてもよく、またプログラムプロダクトとして提供されてもよい。プログラムプロダクトは、見た目形式の物に限られなく、コンピュータ読取可能なプログラムをロードしているものである。また、動作確認支援装置１０の動作を実現するプログラムは、ネットワークを介して提供されてもよい。
【００２１】
図２を参照して、本実施の形態に係る動作確認支援装置１０の機能構成例を説明する。
動作確認支援装置１０は、プログラム情報取得部１５、検査条件取得部１６、検査条件変換部１７、解析部１８、及び入力値出力部１９を備える。
【００２２】
プログラム情報取得部１５は、動作コード３０をメモリ１２から、又は通信装置１３を介して接続先から取得する。
【００２３】
検査条件取得部１６は、検査条件３１として、プログラム情報取得部１５が取得した動作コード３０における動作確認の目標となる目標到達箇所を含む目標到達箇所に関する情報（以下、目標到達箇所情報という）を取得する。本実施の形態に係る検査条件３１は、担当者により入出力装置１４を介して外部装置から入力される。
検査条件３１には、少なくとも１つ以上の目標到達箇所が含まれる。目標到達箇所は、動作コード３０における特定の箇所であり、動作確認の目標とする箇所である。より具体的には、目標到達箇所は、動作コード３０の行番号である。したがって、目標到達箇所情報は動作コード３０の行番号として入力され、検査条件取得部１６により検査条件３１として取得される。また、それに限らず、入出力装置１４を介してディスプレイに表示された動作コード３０に直接、目標到達箇所をマーキングし、指定することで目標到達箇所情報が入力されてもよい。
【００２４】
検査条件変換部１７は、検査条件取得部１６が取得した検査条件３１を基に、検査条件３１に含まれる目標到達箇所へ到達したことを判定する判定式を生成する。
本実施の形態では、検査条件３１に含まれる目標到達箇所へ到達したことを判定する判定式は、解析部１８が解析可能な論理式として生成される。この判定式の論理式は、目標到達箇所を示す動作コード３０の行番号へ到達したときに満たされる条件を示した条件式の論理式であり、目標到達条件式３２ともいう。
また、検査条件変換部１７は、検査条件取得部１６が取得した検査条件３１を基に、目標到達箇所変数を用いた到達判定に用いるコードをプログラム情報取得部１５が取得した動作コード３０に追加した検査用コードを生成する。そして、検査条件変換部１７は、検査用コードを解析部１８のＳＡＴソルバが解析可能な論理式へ変換して検査用コードの論理式３３を生成する。
したがって、検査条件変換部１７の出力は、目標到達条件式３２と検査用コードの論理式３３となる。
【００２５】
解析部１８は、検査条件変換部１７が生成した目標到達条件式３２を用いて目標到達箇所へ到達させる入力値を探索し、目標到達箇所へ到達させる入力値として生成値３４を生成する。より具体的には、解析部１８は、ＳＡＴソルバを用いて、検査条件変換部１７が生成した目標到達条件式３２と検査用コードの論理式３３の論理積を解くことで、目標到達箇所へ到達させる入力値を探索する。そして、解析部１８は、目標到達箇所へ到達させる入力値として生成値３４を生成する。なお、論理積を解くとは、論理積で表される論理式を充足する解、つまり論理式を真とさせる論理変数の解である入力値を求めることである。
【００２６】
入力値出力部１９は、解析部１８が生成した生成値３４を出力する。また、入力値出力部１９は、解析部１８は探索の結果、生成値３４が生成できなかった場合には、生成値３４が生成できなかった旨の通知を出力する。
【００２７】
また、プログラム情報取得部１５、検査条件取得部１６、検査条件変換部１７、解析部１８、及び入力値出力部１９の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、動作確認支援装置１０は、処理回路により実現されてもよい。処理回路は、例えば、ロジックＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）である。
この場合は、プログラム情報取得部１５、検査条件取得部１６、検査条件変換部１７、解析部１８、及び入力値出力部１９は、それぞれ処理回路の一部として実現される。
なお、本明細書では、プロセッサと処理回路との上位概念を、「プロセッシングサーキットリー」という。
つまり、プロセッサと処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
動作確認支援装置１０の動作を実現するプログラムは、プログラム情報取得部１５、検査条件取得部１６、検査条件変換部１７、解析部１８、及び入力値出力部１９により行われる手順をそれぞれプログラム情報取得手順、検査条件取得手順、検査条件変換手順、解析手順及び入力値出力手順としてコンピュータに実行させるプログラムである。
【００２８】
＊＊＊動作の説明＊＊＊
図３から図７を参照して、本実施の形態に係る動作確認支援装置１０の動作例を説明する。
【００２９】
まず、図３のフローチャートを参照して、本実施の形態に係る動作確認支援装置１０の処理動作の例を説明する。
【００３０】
ステップＳ１０１において、プログラム情報取得部１５は、動作コード３０を取得する。そして、処理はステップＳ１０２へ進む。
【００３１】
次に、ステップＳ１０２において、検査条件取得部１６は、検査条件３１として、動作コード３０の目標到達箇所情報を、入出力装置１４を介して外部装置から取得する。そして、処理はステップＳ１０３へ進む。
【００３２】
次に、ステップＳ１０３において、検査条件変換部１７は、ステップＳ１０２の処理において検査条件取得部１６が取得した検査条件３１を基に、目標到達箇所変数を定義する。目標到達箇所変数は、目標到達箇所へ到達したことを判定する到達判定に用いられる変数である。そして、処理はステップＳ１０４へ進む。
【００３３】
次に、ステップＳ１０４において、検査条件変換部１７は、ステップＳ１０２の処理において検査条件取得部１６が取得した検査条件３１を基に、目標到達箇所変数を用いた到達判定に用いるコードを動作コード３０に追加した検査用コードを生成する。
検査用コードは、動作コード３０において、目標到達箇所の行へ到達時に必ず実行される、目標到達箇所の行の前後の行のうちどちらか一方に、目標到達箇所変数の演算式で示されるコードを挿入したものとなる。
そして、検査条件変換部１７は、検査用コードを解析部１８のＳＡＴソルバが解析可能な論理式へ変換して検査用コードの論理式３３を生成する。そして、処理はステップＳ１０５へ進む。
【００３４】
次に、ステップＳ１０５において、検査条件変換部１７は、ステップＳ１０２の処理において取得された検査条件３１を基に、目標到達箇所変数を用いて到達判定に用いる目標到達条件式３２を生成する。検査条件変換部１７が生成する目標到達条件式３２は、検査用コードに含まれる目標到達箇所変数を用いた到達判定に用いるコードを挿入した行が実行されたときに目標到達箇所変数が満たす条件を論理式で示した条件式である。そして、処理はステップＳ１０６へ進む。
なお、ステップＳ１０５の処理とステップＳ１０４の処理とは依存関係がないため、動作確認支援装置１０は実行順序を入れ替えて実行したり並行して実行したりしてもよい。
【００３５】
次に、ステップＳ１０６において、解析部１８は、ＳＡＴソルバを用いて検査用コードの論理式３３と目標到達条件式３２との論理積を解くことで、目標到達箇所へ到達させる入力値を探索する。
論理積の解である入力値が存在した場合、解析部１８は、目標到達箇所へ到達させる入力値として生成値３４を生成する。そして、処理はステップＳ１０７へ進む。
一方、論理積の解である入力値が存在しない場合、解析部１８は、生成値３４を生成せず、生成値３４を生成できなかったことを入力値出力部１９に通知する。そして、処理はステップＳ１０８へ進む。
【００３６】
次に、ステップＳ１０７において、入力値出力部１９は、ステップＳ１０６において解析部１８が生成した生成値３４を、入出力装置１４を介して外部装置に出力する。
【００３７】
次に、ステップＳ１０８において、入力値出力部１９は、ステップＳ１０６において解析部１８が検査用コードの論理式３３と目標到達条件式３２の論理積の解がなく、生成値３４が生成できない旨の通知を出力する。入力値出力部１９は、この通知を出力することによって、目標到達箇所で示される特定の内部状態への遷移は、被確認ソフトウェアにおいて起こりえない動作であることを担当者に通知する。
【００３８】
図４に示す動作コード３０の具体例を用いて、本実施の形態における動作確認支援装置１０のより詳細な動作例を説明する。
具体的には、以下の例では、図４に示す動作コード３０で生成される被確認ソフトウェアのＳＬＥＥＰモードでの動作確認のために、動作確認支援装置１０が被確認ソフトウェアの内部状態をＳＬＥＥＰモードへ遷移させる生成値３４を生成する動作を説明する。
なお、図４の左端にある数字列は動作コード３０の行番号を示す。
本例の動作コード３０は、被確認ソフトウェアの内部状態である動作モードを表すモード変数ｍｏｄｅと、入力値を代入する２つの入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙと、出力値を代入する出力変数Ｄｅｍｏ＿Ｏとを有する。
【００３９】
図３のステップＳ１０１において、プログラム情報取得部１５は、図４に示す動作コード３０を取得する。そして、処理はステップＳ１０２へ進む。
なお、本例では動作コード３０は１つの関数ｍａｉｎを記述した１ファイルだけだが、これに限らず、複数の関数又は複数のファイルの集合であってもよい。
【００４０】
図３のステップＳ１０２において、検査条件取得部１６は、動作コード３０における目標到達箇所情報を検査条件３１として取得する。そして、処理はステップＳ１０３へ進む。
本例において、動作コード３０における目標到達箇所は、「動作モードがＳＬＥＥＰモードに遷移した被確認ソフトウェアの内部状態」に相当する図４に示す動作コード３０の２６行目である。
したがって、本例では、担当者は、入出力装置１４を介して検査条件取得部１６に直接、「動作コード３０の２６行目」という情報を、目標到達箇所情報として入力する。
ただし、目標到達箇所情報の入力方法はこれに限らず、図５で示すように、入出力装置１４を介してディスプレイに表示された動作コード３０に目標到達箇所を視覚的にマーキングする方法等、動作コード３０の中の特定箇所を指定して入力する方法であればよい。
【００４１】
図３のステップＳ１０３において、検査条件変換部１７は、「動作コード３０の２６行目」という１つの検査条件３１を基に、１つの目標到達箇所変数ｒｅａｃｈを定義する。そして、処理はステップＳ１０４へ進む。
ここで定義される目標到達箇所変数ｒｅａｃｈの初期値は０である。
【００４２】
図３のステップＳ１０４において、検査条件変換部１７は、「動作コード３０の２６行目」という検査条件３１を基に、図６に示すように、２７行目に目標到達箇所変数の演算式（ｒｅａｃｈ＋＋；）のコードを挿入して追加した、検査用コードを生成する。
さらに、検査条件変換部１７は、検査用コードをＳＡＴソルバが解析可能な論理式に変換して、検査用コードの論理式３３を生成する。そして、処理はステップＳ１０５に進む。
【００４３】
図３のステップＳ１０５において、検査条件変換部１７は、検査条件３１を基に定義した目標到達箇所変数ｒｅａｃｈを基に、目標到達箇所へ到達したときに満たされる目標到達条件式３２として「ｒｅａｃｈ＞０」を生成する。そして、処理はステップＳ１０６へ進む。
【００４４】
図３のステップＳ１０６において、解析部１８は、ＳＡＴソルバを用いて検査用コードの論理式３３と目標到達条件式３２との論理積を解く。そして、解析部１８は、被確認ソフトウェアの実行処理が目標到達箇所である動作コード３０の２６行目に到達するまでに入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへ代入される入力値を探索する。そして、解析部１８は、目標到達箇所へ到達させる入力値として生成値３４を生成する。
本例では、被確認ソフトウェアの実行処理がｒｅａｃｈ＋＋；を挿入された検査用コードの２７行目に到達し、目標到達条件式３２である「ｒｅａｃｈ＞０」を真にする解である目標到達箇所へ到達させる入力値が存在する。したがって、目標到達箇所へ到達させる入力値として生成値３４が生成される。そのため、処理はステップＳ１０７へ進む。
【００４５】
図３のステップＳ１０７において、入力値出力部１９は、ステップＳ１０６の処理で生成された生成値３４を出力する。
【００４６】
図７では、本例で生成される生成値３４及び目標到達箇所へ到達するまでの被確認ソフトウェアの実行順序を示す。
図７の右下の表は、被確認ソフトウェアへの入力として、３回の被確認ソフトウェアの実行周期の各々の周期に入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへ代入される入力値を示す。
具体的には、１周期目に入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへ代入される入力値は、１０と３である。また、２周期目に入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへ代入される入力値は、９０と３である。また、３周期目に入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへ代入される入力値は、どちらも任意の値を示すｘｘとｙｙである。
【００４７】
図７の右上の表は、入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙに入力値が代入される前後の出力変数Ｄｅｍｏ＿Ｏの値及びモード変数ｍｏｄｅの値を示す。
具体的には、１周期目の開始時、出力変数Ｄｅｍｏ＿Ｏは値をもたず、モード変数ｍｏｄｅはＳＴＡＲＴである。入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへ１０と３が代入されると、動作コード３０の８行目及び９行目の処理が実行され、出力変数Ｄｅｍｏ＿Ｏに１００が、モード変数ｍｏｄｅにＲＵＮが代入される。そして、１周期目の終了時には出力変数Ｄｅｍｏ＿Ｏは１００となり、モード変数ｍｏｄｅはＲＵＮとなる。
また、２周期目の開始時、出力変数Ｄｅｍｏ＿Ｏは１００、モード変数ｍｏｄｅはＲＵＮである。入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへ９０と３が代入されると、動作コード３０の２１行目及び２２行目の処理が実行され、出力変数Ｄｅｍｏ＿Ｏに５０が、モード変数ｍｏｄｅにＳＬＥＥＰが代入される。そして、１周期目の終了時には出力変数Ｄｅｍｏ＿Ｏは５０となり、モード変数ｍｏｄｅはＳＬＥＥＰとなる。
また、３周期目の開始時、出力変数Ｄｅｍｏ＿Ｏは５０、モード変数ｍｏｄｅはＳＬＥＥＰである。入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへ代入される値がどの値であるかに関わらず、被確認ソフトウェアの実行処理が本例の目標到達箇所を示す動作コード３０の２６行目に到達する。
【００４８】
本例では、図７の右下の表で示される、入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへの入力値が、１周期目では１０と３、２周期目では９０と３、３周期目では各々任意の値、という３周期分の入力値として生成値３４が出力される。
このように、本実施の形態では、生成される生成値３４は、１周期分のみとは限らず、複数周期分の入力値列として生成されてもよい。
【００４９】
以上のように生成された生成値３４を各々の実行周期で被確認ソフトウェアへ入力して実行することで、被確認ソフトウェアの実行処理は３周期目において動作コード３０の２６行目に到達し、内部状態がＳＬＥＥＰモードへと遷移する。したがって、ＳＬＥＥＰモードにおける動作確認を行うことが可能となる。
なお、本例では、検査条件取得部１６が１つの目標到達箇所を含む目標到達箇所情報を検査条件３１として取得する場合を説明したが、それに限らず、複数の目標到達箇所を含む目標到達箇所情報を検査条件３１として取得してもよい。具体例としては、「動作コード３０の１１行目と２６行目」というように、検査条件取得部１６は２つの目標到達箇所を示す動作コード３０の２つの行番号を検査条件３１として取得してもよい。
そして、動作確認支援装置１０は、これら「動作コード３０の１１行目と２６行目」という２つの目標到達箇所の両方の目標到達箇所へ到達するような生成値３４を生成してもよい。
また、動作確認支援装置１０は、２つの目標到達箇所の両方の目標到達箇所へ到達するような生成値３４を生成できなかった場合、２つの目標到達箇所の両方の目標到達箇所へ到達するような生成値３４を生成できなかったことを通知してもよい。
また、動作確認支援装置１０は、２つの目標到達箇所の両方へ到達するような生成値３４を生成できず、且ついずれかの目標到達箇所へのみ到達する生成値３４を生成できた場合、２つの目標到達箇所の両方の目標到達箇所へ到達するような生成値３４を生成できなかったことと共にいずれかの目標到達箇所へしか到達できないことを通知してもよい。
【００５０】
＊＊＊実施の形態の効果の説明＊＊＊
以上のように、本実施の形態では、担当者が被確認ソフトウェアの内部状態に関する仕様情報を参照せずとも、動作コード３０に目標到達箇所（上記例では２６行目）を指定するだけで、動作確認の目標となる特定の内部状態を検査条件３１として入力できる。そして、動作確認支援装置１０は、この検査条件３１を用いて、目標到達箇所へ到達させる生成値３４を生成することができる。
よって、上記例では、内部状態を２６行目で示される特定の状態へ遷移させる被確認ソフトウェアの動作確認、又はその特定の状態において被確認ソフトウェアにより制御される機器の動作確認に担当者が内部状態値を決定する作業が不要となる。したがって、動作確認に要する工数を削減することができる。
【００５１】
また、検査条件変換部１７が、検査条件３１である「動作コード３０の２６行目」を基に、目標到達箇所変数（ｒｅａｃｈ）を用いた目標到達条件式３２（ｒｅａｃｈ＞０）を生成する。
よって、解析部１８の用いるＳＡＴソルバが解析可能な論理式を担当者が人手で作成する必要が無くなる。したがって、動作確認に要する工数の削減に加えて、数学的知識を持っていなくても担当者が動作確認することも可能となる。
また、生成値３４が生成できないことを通知することによって、担当者は、検査条件３１として入力した目標到達箇所で示される状態への状態遷移が、被確認ソフトウェアにおいて起こりえない動作であることを確認することができる。
したがって、被確認ソフトウェアの振舞いが仕様に従って実装されていない可能性を示すこともできる。
【００５２】
一方、本実施の形態と比較して、特許文献１の手法では、担当者が被確認ソフトウェアの仕様情報を参照して、動作確認の目標とする内部状態を表す変数を抽出し、その変数が満たすべき内部状態値を設定する作業が必要である。さらに、この内部状態値をＳＡＴソルバが解析可能な論理式で記述する作業が発生するため、担当者は数学的知識が必要となる。
【００５３】
より効果を明確にするために、具体例として、特許文献１の手法を用いて、図４に示す動作コード３０で生成される被確認ソフトウェアの内部状態をＳＬＥＥＰモードへ遷移させる生成値３４を作成した場合について説明する。
まず、担当者は、被確認ソフトウェアの仕様情報を参照し、動作確認の目標とするＳＬＥＥＰモードが、内部状態を表す動作モードにおける特定の状態であり、動作モードはモード変数ｍｏｄｅの値により表されることを理解する必要がある。
次に、担当者は、被確認ソフトウェアの仕様情報から、ＳＬＥＥＰモードを表すモード変数ｍｏｄｅの値を決定する必要がある。
さらに、このようにして決定したＳＬＥＥＰモードを表すモード変数ｍｏｄｅを、ＳＡＴソルバが解析可能な論理式に変換する必要がある。
図４の動作コード３０は１つの関数ｍａｉｎを記述した１ファイルだけであるが、被確認ソフトウェアが大規模かつ複雑な場合は、動作確認の目標となる内部状態値は多く複雑であるため、動作確認の工数は大幅に増加する。
【００５４】
＊＊＊他の構成＊＊＊
＜変形例１＞
実施の形態１では、プログラム情報取得部１５は、動作コード３０を取得する例を説明した。しかし、プログラム情報取得部１５は、動作プログラムとしてノード又はブランチを含むＡＳＴ（Ａｂｓｔｒａｃｔ  Ｓｙｎｔａｘ  Ｔｒｅｅ）で作成されたＡＳＴプログラムを取得し、ＡＳＴプログラムのソースコードであるＡＳＴコードへと変換し、動作コード３０としてＡＳＴコードを取得してもよい。
変形例１では、担当者は、入出力装置１４を介して検査条件取得部１６に直接、目標到達箇所を示すノード又はブランチに関する情報を、目標到達箇所情報として入力する。また、目標到達箇所情報の入力方法は、これに限らず、入出力装置１４を介してディスプレイに表示されたＡＳＴに含まれるノード又はブランチを視覚的に指定して入力する方法であってもよい。
図３のステップＳ１０１においてＡＳＴコードが取得された場合、図３のステップＳ１０２において、検査条件取得部１６は、目標到達箇所を示すノード又はブランチに関する情報を検査条件３１として、入出力装置１４を介して外部装置から取得してもよい。そして、図３のステップＳ１０４において、検査条件変換部１７は、検査条件３１に基づき動作コード３０の中から目標到達箇所を示すノード又はブランチに対応するコードの行番号を抽出し、検査用コードの論理式３３を生成してもよい。そして、図３のステップＳ１０５において、動作コード３０の中の目標到達箇所を示すノード又はブランチに対応するコードの行番号へ到達したときに満たされる目標到達条件式３２を生成してもよい。
【００５５】
＜変形例２＞
変形例２として、プログラム情報取得部１５は、動作プログラムとしてノード又はエッジを含む状態遷移図で作成された状態遷移プログラムを取得し、状態遷移プログラムのソースコードである状態遷移コードへと変換し、動作コード３０として状態遷移コードを取得してもよい。
変形例２では、担当者は、入出力装置１４を介して検査条件取得部１６に直接、目標到達箇所を示すノード又はエッジに関する情報を、目標到達箇所情報として入力する。また、目標到達箇所情報の入力方法は、これに限らず、入出力装置１４を介してディスプレイに表示された状態遷移図の中のノード又はエッジを視覚的に指定して入力する方法であってもよい。
図３のステップＳ１０１において状態遷移コードが取得された場合、図３のステップＳ１０２において、検査条件取得部１６は、目標到達箇所を示すノード又はエッジに関する情報を検査条件３１として、入出力装置１４を介して外部装置から取得してもよい。そして、図３のステップＳ１０４において、検査条件変換部１７は、検査条件３１に基づき動作コード３０の中から目標到達箇所を示すノード又はエッジに対応するコードの行番号を抽出し、検査用コードの論理式３３を生成してもよい。そして、図３のステップＳ１０５において、動作コード３０の中の目標到達箇所を示すノード又はエッジに対応するコードの行番号へ到達したときに満たされる目標到達条件式３２を生成してもよい。
【００５６】
実施の形態２．
本実施の形態について、図８から図１１を用いて説明する。
本実施の形態では、検査条件３１に複数の目標到達箇所とそれら複数の目標到達箇所の到達順序とが含まれる例を説明する。
本実施の形態では、主に実施の形態１との差異を説明する。
なお、以下で説明していない事項は、実施の形態１と同様である。
【００５７】
＊＊＊構成の説明＊＊＊
本実施の形態に係る動作確認支援装置１０のハードウェア構成は、図１に示した実施の形態１の構成と同一であるため、その説明を省略する。
本実施の形態に係る検査条件変換部１７は、実施の形態１と同様に目標到達条件式３２と検査用コードとを生成した後、検査用コードと検査条件３１とを基に、条件付き検査用コードを生成する。
そして、検査条件変換部１７は、条件付き検査用コードを解析部１８のＳＡＴソルバが解析可能な論理式に変換して条件付き検査用コードの論理式を生成する。
したがって、検査条件変換部１７の出力は、目標到達条件式３２と条件付き検査用コードの論理式となる。
【００５８】
＊＊＊動作の説明＊＊＊
まず、図８のフローチャートを参照して、本実施の形態に係る動作確認支援装置１０の処理動作の例を説明する。なお、実施の形態１と同一の動作には同一番号を付してその説明を省略する。
ステップＳ１０１が完了した後、ステップＳ２０２において、検査条件取得部１６は、検査条件３１として、動作コード３０の目標到達箇所情報を、入出力装置１４を介して外部装置から取得する。そして、処理はステップＳ２０３へ進む。
検査条件取得部１６が取得した検査条件３１には、複数の目標到達箇所とそれら複数の目標到達箇所の到達順序（以下、目標到達順序という）とが含まれる。
【００５９】
次に、ステップＳ２０３において、検査条件変換部１７は、ステップＳ２０２の処理において検査条件取得部１６が取得した検査条件３１を基に、検査条件３１に含まれる複数の目標到達箇所と同数の複数の目標到達箇所変数を定義する。そして、処理はステップＳ２０４へ進む。
【００６０】
次に、ステップＳ２０４において、検査条件変換部１７は、ステップＳ２０２の処理において検査条件取得部１６が取得した検査条件３１を基に、複数の目標到達箇所変数を用いた到達判定に用いるコードを動作コード３０に追加した検査用コードを生成する。そして、処理はステップＳ２０５へ進む。
動作コード３０には、複数の目標到達箇所の各々の行へ到達時に必ず実行される行に、複数の目標到達箇所変数を用いた到達判定に用いるコードが追加される。つまり、検査用コードは、動作コード３０に、複数の目標到達箇所の各々の行の前後の行のうちどちらか一方に、各々の目標到達箇所変数の演算式で示される到達判定に用いるコードを挿入したものとなる。
【００６１】
次に、ステップＳ２０５において、検査条件変換部１７は、ステップＳ２０２の処理において検査条件取得部１６が取得した検査条件３１を基に、ステップＳ２０３の処理において定義した複数の目標到達箇所変数を用いて目標到達順序条件式を生成する。そして、処理はステップＳ２０６へ進む。
目標到達順序条件式は、目標到達順序の通りに複数の目標到達箇所の各々へ到達して、到達判定に用いるコードが実行された場合の目標到達箇所変数が満たす条件を、目標到達箇所変数又は目標到達箇所変数の否定を用いた論理積で記述した式である。なお、目標到達順序条件式の数は、複数の目標到達箇所の数と同数である。
【００６２】
次に、ステップＳ２０６において、検査条件変換部１７は、検査用コードに目標到達順序条件式を追加した条件付き検査用コードを生成する。そして、検査条件変換部１７は、条件付き検査用コードを解析部１８のＳＡＴソルバが解析可能な論理式に変換して条件付き検査用コードの論理式を生成する。そして、処理はステップＳ２０７へ進む。
検査条件変換部１７が生成する条件付き検査用コードは、検査用コードの中の目標到達箇所変数の演算式で示される到達判定に用いるコードを挿入した各々行の後の行に、各々の目標到達順序条件式を挿入したものとなる。
【００６３】
次に、ステップＳ２０７において、検査条件変換部１７は、ステップＳ２０５の処理において生成した目標到達順序条件式を用いて目標到達条件式３２を生成する。そして、処理はステップＳ２０８へ進む。
検査条件変換部１７が生成する目標到達条件式３２は、条件付き検査用コードにおける目標到達箇所を目標到達順序の通りに到達し、全ての目標到達順序条件式が真となることを検査するための条件式である。そのため、目標到達条件式３２は、目標到達順序条件式の論理積により構成される。
なお、ステップＳ２０７の処理とステップＳ２０６の処理とは依存関係がないため、被確認ソフトウェアは実行順序を入れ替えて実行したり並行して実行したりしてもよい。
【００６４】
次に、ステップＳ２０８において、解析部１８は、ＳＡＴソルバを用いて条件付き検査用コードの論理式と目標到達条件式３２との論理積を解くことで、目標到達箇所へ到達させる入力値を探索する。
論理積の解である入力値が存在する場合、解析部１８は、目標到達箇所へ到達させる入力値として生成値３４を生成する。そして、処理はステップＳ１０７へ進む。
一方、論理積の解である入力値が存在しない場合、解析部１８は、生成値３４を生成せず、生成値３４を生成できなかったことを入力値出力部１９に通知する。そして、処理はステップＳ１０８へ進む。
ステップＳ１０７及びステップＳ１０８は、上述の通りであるため、説明を省略する。
【００６５】
図９に示す動作コード３０の具体例を用いて、本実施の形態における動作確認支援装置１０のより詳細な動作例を説明する。
具体的には、以下の例では、担当者が「ＳＴＡＲＴモードから開始して、ＲＵＮモード、ＳＴＯＰモード、ＳＬＥＥＰモード、ＲｅＳＴＡＲＴモード、ＥＮＤモードの順序で動作モードが遷移する」という動作確認を行う。
この動作確認のため、担当者が動作コード３０に５つの目標到達箇所と目標到達順序とを検査条件３１として指定して入力することによって、動作確認支援装置１０が５つの目標到達箇所へ目標到達順序の通りに到達させる生成値３４を生成する例を説明する。
図９の左端の円は目標到達箇所を示す。また、図９の左端の円内に記述された１から５までの数字は目標到達順序を示す。
つまり、図９の例では、動作コード３０に５つの目標到達箇所が指定されていることを示す。また、目標到達順序は、目標到達箇所１（１０行目）、目標到達箇所２（２１行目）、目標到達箇所３（３３行目）、目標到達箇所４（５６行目）、目標到達箇所５（７９行目）の順であることを示す。
【００６６】
図８のステップＳ１０１において、プログラム情報取得部１５は、図９に示す動作コード３０を取得する。そして、処理はステップＳ２０２へ進む。
なお、本例では動作コード３０は１つの関数ｍａｉｎを記述した１ファイルだけだが、これに限らず、複数の関数又は複数のファイルの集合であってもよい。
【００６７】
図８のステップＳ２０２において、検査条件取得部１６は、動作コード３０における目標到達箇所情報を検査条件３１として取得する。そして、処理はステップＳ２０３へ進む。
検査条件取得部１６が取得した検査条件３１には、複数の目標到達箇所と複数の目標到達箇所の到達順序である目標到達順序とが含まれる。
本例の動作確認の目標は、以下の（１）から（６）で示される。
（１）被確認ソフトウェアの内部状態である動作モードがＲＵＮモードに遷移する。
（２）動作モードがＳＴＯＰモードに遷移する。
（３）動作モードがＳＬＥＥＰモードに遷移する。
（４）動作モードがＲｅＳＴＡＲＴモードに遷移する。
（５）動作モードがＥＮＤモードに遷移する。
（６）動作モードが、ＳＴＡＲＴモードから開始して、ＲＵＮモード、ＳＴＯＰモード、ＳＬＥＥＰモード、ＲｅＳＴＡＲＴモード、ＥＮＤモードの順序で遷移する。
そのため、検査条件３１となる複数の目標到達箇所は、（１）から（５）の各々の被確認ソフトウェアの内部状態の遷移に相当する、動作コード３０の１０行目、２１行目、３３行目、５６行目、７９行目となる。
また、検査条件３１となる目標到達順序は、（６）の被確認ソフトウェアの内部状態の遷移順序に相当する、動作コード３０の１０行目から順に、２１行目、３３行目、５６行目、７９行目となる。
したがって、本例では、担当者は、入出力装置１４を介して検査条件取得部１６に直接、「動作コード３０の１０行目、２１行目、３３行目、５６行目、７９行目」という複数の目標到達箇所を示す情報を、目標到達箇所情報として入力する。また、担当者は、「最初に１０行目、続いて２１行目、３３行目、５６行目、７９行目の順」という目標到達順序を示す情報を、目標到達箇所情報として入力する。
ただし、目標到達箇所情報の入力方法はこれに限らず、図９で示すように、入出力装置１４を介してディスプレイに表示された動作コード３０に直接、複数の目標到達箇所と目標到達順序とを視覚的にマーキングする等、動作コード３０の中の特定箇所と順序とを指定して入力する方法であればよい。
【００６８】
図８のステップＳ２０３において、検査条件変換部１７は、「動作コード３０の１０行目、２１行目、３３行目、５６行目、７９行目」という検査条件３１を基に、これら５つの目標到達箇所に対応する５つの目標到達箇所変数を定義する。具体的には、検査条件変換部１７は、目標到達箇所変数としてｒｅａｃｈ１、ｒｅａｃｈ２、ｒｅａｃｈ３、ｒｅａｃｈ４、ｒｅａｃｈ５を定義する。そして、処理はステップＳ２０４へ進む。
【００６９】
図８のステップＳ２０４において、検査条件変換部１７は、目標到達箇所が「動作コード３０の１０行目、２１行目、３３行目、５６行目、７９行目」という検査条件３１を基に、各々の目標到達箇所変数の演算式で示される到達判定に用いるコードを動作コード３０に挿入することで検査用コードを生成する。
具体的には、検査条件変換部１７は、１１行目に「ｒｅａｃｈ１＋＋；」、２２行目に「ｒｅａｃｈ２＋＋；」、３４行目に「ｒｅａｃｈ３＋＋；」、５７行目に「ｒｅａｃｈ４＋＋；」、８０行目に「ｒｅａｃｈ５＋＋；」を動作コード３０挿入して検査用コードを生成する。そして、処理はステップＳ２０５へ進む。
【００７０】
図８のステップＳ２０５において、検査条件変換部１７は、検査条件３１として取得した目標到達順序に基づき、図１０で示すような５つの目標到達順序条件式を定義する。具体的には、検査条件変換部１７は、目標到達順序条件式として、ｃｏｎｄｉｔｉｏｎ１、ｃｏｎｄｉｔｉｏｎ２、ｃｏｎｄｉｔｉｏｎ３、ｃｏｎｄｉｔｉｏｎ４、ｃｏｎｄｉｔｉｏｎ５を定義する。そして、処理はステップＳ２０６へ進む。
本例の目標到達順序条件式は、動作コード３０の５つの目標到達箇所を目標到達順序の通りに到達して、到達判定に用いるコードが実行された場合の５つの目標到達箇所変数が満たす条件を記述した式である。また、目標到達順序条件式は、目標到達箇所変数又は目標到達箇所変数の否定を用いた論理積で記述した式である。
【００７１】
図８のステップＳ２０６において、検査条件変換部１７は、図１１に示すように、検査用コードに目標到達順序条件式を追加した条件付き検査用コードを生成する。
具体的には、検査条件変換部１７は、１２行目にｃｏｎｄｉｔｉｏｎ１、２５行目にｃｏｎｄｉｔｉｏｎ２、３９行目にｃｏｎｄｉｔｉｏｎ３、６４行目にｃｏｎｄｉｔｉｏｎ４、８９行目にｃｏｎｄｉｔｉｏｎ５を挿入し、条件付き検査用コードを生成する。さらに、検査条件変換部１７は、条件付き検査用コードを解析部１８のＳＡＴソルバが解析可能な論理式に変換して条件付き検査用コードの論理式を生成する。そして、処理はステップＳ２０７へ進む。
【００７２】
図８のステップＳ２０７において、検査条件変換部１７は、目標到達順序条件式を用いて条件付き検査用コードにおける５つの目標到達箇所へ目標到達順序の通りに到達したときに満たされる条件を示す、目標到達条件式３２を生成する。そして、処理はステップＳ２０８へ進む。
図１０で示すように、本例の目標到達条件式３２は、ｃｏｎｄｉｔｉｏｎ１  ＆＆  ｃｏｎｄｉｔｉｏｎ２  ＆＆  ｃｏｎｄｔｉｏｎ３  ＆＆  ｃｏｎｄｔｉｏｎ４  ＆＆  ｃｏｎｄｔｉｏｎ５である。
【００７３】
図８のステップＳ２０８において、解析部１８は、ＳＡＴソルバを用いて条件付き検査用コードの論理式と目標到達条件式３２との論理積を解くことで、目標到達順序通りに５つの目標到達箇所へ到達させる入力値を探索する。そして、解析部１８は、目標到達順序通りに５つの目標到達箇所へ到達させる入力値として、生成値３４を生成する。
なお、本実施の形態では、生成される生成値３４は、１周期分のみとは限らず、複数周期分の入力値列として生成されてもよい。
本例では、条件付き検査用コードの論理式と目標到達条件式３２との論理積を真にする解である目標到達順序通りに５つの目標到達箇所へ到達させる入力値が存在する。したがって、目標到達順序通りに５つの目標到達箇所へ到達させる入力値として生成値３４が生成される。そして、処理はステップＳ１０７へ進む。
【００７４】
図８のステップＳ１０７において、入力値出力部１９は、ステップＳ２０８の処理で生成された生成値３４を出力する。
【００７５】
以上のように生成された生成値３４を各々の周期で被確認ソフトウェアへ入力して実行することで、被確認ソフトウェアの実行処理が目標到達箇所へ目標到達順序の通りに到達させることができる。具体的には、被確認ソフトウェアの実行処理は、「動作コード３０の１０行目、２１行目、３３行目、５６行目、７９行目」へ、最初に１０行目、続いて２１行目、３３行目、５６行目、７９行目の順の通りに到達することができる。
その結果、「ＳＴＡＲＴモードから開始して、ＲＵＮモード、ＳＴＯＰモード、ＳＬＥＥＰモード、ＲｅＳＴＡＲＴモード、ＥＮＤモードの順序で動作モードが遷移する」という動作確認が可能となる。
【００７６】
＊＊＊実施の形態の効果の説明＊＊＊
以上のように、本実施の形態では、担当者が被確認ソフトウェアの内部状態に関する仕様情報を参照せずに、動作コード３０の中の複数の目標到達箇所と、それら複数の目標到達箇所の目標到達順序とを指定して入力する。そして、担当者がこのように指定するだけで、動作確認の目標となる複数の内部状態とそれらの遷移順序を検査条件３１として入力することができる。そして、動作確認支援装置１０は、この検査条件３１を用いて、取得された遷移順序の通りに複数の内部状態を遷移させる入力値として生成値３４を生成することができる。
よって、上記例では、内部状態を複数の状態（１０行目、２１行目、３３行目、５６行目、７９行目）へ特定の順序（最初に１０行目、続いて２１行目、３３行目、５６行目、７９行目の順）で遷移させる動作確認において、内部状態値を決定する作業が不要となる。したがって、動作確認に要する工数を削減することができる。
【００７７】
また、検査条件変換部１７が、検査条件３１を基に目標到達条件式３２を生成する。
よって、解析部１８の用いるＳＡＴソルバが解析可能な論理式を担当者が人手で作成する必要が無くなる。したがって、動作確認に要する工数の削減に加えて、数学的知識を持っていなくても担当者が動作確認することも可能となる。
【００７８】
＊＊＊他の構成＊＊＊
＜変形例１＞
実施の形態２では、プログラム情報取得部１５は、動作コード３０を取得する例を説明した。しかし、プログラム情報取得部１５は、動作プログラムとしてノード又はブランチを含むＡＳＴで作成されたＡＳＴプログラムを取得し、ＡＳＴプログラムのソースコードであるＡＳＴコードへと変換し、動作コード３０としてＡＳＴコードを取得してもよい。
変形例１では、担当者は、入出力装置１４を介して検査条件取得部１６に直接、複数の目標到達箇所を示す、ノード、ブランチ、又はノードとブランチとの組み合わせに関する情報を、目標到達箇所情報として入力する。また、担当者は、入出力装置１４を介して検査条件取得部１６に直接、ノード又はブランチで示される複数の目標到達箇所の目標到達順序を、目標到達箇所情報として入力する。
なお、目標到達箇所情報の入力方法は、これに限らず、入出力装置１４を介してディスプレイに表示されたＡＳＴに含まれるノード又はブランチを視覚的に指定して入力する方法であってもよい。また、目標到達箇所情報の入力方法は、入出力装置１４により表示されたＡＳＴに含まれるノード又はブランチを順に指定して目標到達順序を入力する方法であってもよい。
図８のステップＳ１０１においてＡＳＴコードが取得された場合、図８のステップＳ２０２において、検査条件取得部１６は、目標到達箇所を示す、ノード、ブランチ、又はノードとブランチとの組み合わせに関する情報を検査条件３１として、入出力装置１４を介して外部装置から取得してもよい。そして、図８のステップＳ２０４において、検査条件変換部１７は、検査条件３１に基づき動作コード３０の中から目標到達箇所を示すノード又はブランチに対応するコードの行番号を抽出し、検査用コードを生成してもよい。そして、図８のステップＳ２０５において、検査条件変換部１７は、検査条件３１に基づき複数の目標到達箇所を示すノード又はブランチに対応する各々のコードの行番号へ到達する目標到達順序を抽出し、目標到達順序条件式を生成してもよい。そして、図８のステップＳ２０７において、動作コード３０の中の複数の目標到達箇所を示すノード又はブランチに対応するコードの行番号へ、目標到達順序の通りに到達したときに満たされる目標到達条件式３２を生成してもよい。
【００７９】
＜変形例２＞
変形例２として、プログラム情報取得部１５は、動作プログラムとしてノード又はエッジを含む状態遷移図で作成された状態遷移プログラムを取得し、状態遷移プログラムのソースコードである状態遷移コードへと変換し、動作コード３０として状態遷移コードを取得してもよい。
変形例２では、担当者は、入出力装置１４を介して検査条件取得部１６に直接、複数の目標到達箇所を示す、ノード、エッジ、又はノードとエッジとの組み合わせに関する情報を、目標到達箇所情報として入力する。また、担当者は、入出力装置１４を介して検査条件取得部１６に直接、ノード又はエッジで示される複数の目標到達箇所の目標到達順序を、目標到達箇所情報として入力する。
なお、目標到達箇所情報の入力方法は、これに限らず、入出力装置１４を介してディスプレイに表示された状態遷移図に含まれるノード又はエッジを視覚的に指定して入力する方法であってもよい。また、目標到達箇所情報の入力方法は、入出力装置１４により表示された状態遷移図に含まれるノード又はエッジを順に指定して目標到達順序を入力する方法であってもよい。
図８のステップＳ１０１において状態遷移コードが取得された場合、図８のステップＳ２０２において、検査条件取得部１６は、目標到達箇所を示す、ノード、エッジ、又はノードとエッジとの組み合わせに関する情報を検査条件３１として、入出力装置１４を介して外部装置から取得してもよい。そして、図８のステップＳ２０４において、検査条件変換部１７は、検査条件３１に基づき動作コード３０の中から目標到達箇所を示すノード又はエッジに対応するコードの行番号を抽出し、検査用コードを生成してもよい。そして、図８のステップＳ２０５において、検査条件変換部１７は、検査条件３１に基づき複数の目標到達箇所を示すノード又はエッジに対応する各々のコードの行番号へ到達する目標到達順序を抽出し、目標到達順序条件式を生成してもよい。そして、図８のステップＳ２０７において、動作コード３０の中の複数の目標到達箇所を示すノード又はエッジに対応するコードの行番号へ、目標到達順序の通りに到達したときに満たされる目標到達条件式３２を生成してもよい。
【００８０】
実施の形態３．
本実施の形態について、図１２から図１４を用いて説明する。
本実施の形態では、被確認ソフトウェアの実行処理が目標到達箇所へ到達し、かつ、被確認ソフトウェアから出力される出力値が特定の値となるような入力値である生成値３４を、動作確認支援装置１０が生成する例を説明する。
本実施の形態では、主に実施の形態１との差異を説明する。
なお、以下で説明していない事項は、実施の形態１と同様である。
【００８１】
＊＊＊構成の説明＊＊＊
図１２を参照して、本実施の形態に係る動作確認支援装置１０の機能構成を説明する。なお、図２に示した実施の形態１と同一構成部分には同一番号を付してその説明を省略する。
本実施の形態では、動作確認支援装置１０は、新たに入出力条件取得部２０を備える。
入出力条件取得部２０は、入出力条件３５として、プログラム情報取得部１５が取得した動作コード３０に含まれる入力変数で示される入力値及び出力変数で示される出力値の少なくともいずれか一方に関する条件を、入出力装置１４を介して外部装置から取得する。
入出力条件３５は、被確認ソフトウェアの入出力値の条件を定めた条件であり、具体的には値域又は特定の値である。
なお、動作確認支援装置１０の動作を実現するプログラムは、実施の形態１の動作確認支援装置１０の動作を実現するプログラムに、入出力条件取得部２０の機能を実現する入出力変数条件入力手順を追加したものである。
【００８２】
＊＊＊動作の説明＊＊＊
図１３から図１５を参照して、本実施の形態に係る動作確認支援装置１０の動作例を説明する。
【００８３】
まず、図１３のフローチャートを参照して、本実施の形態に係る動作確認支援装置１０の処理動作の例を示す。
なお、実施の形態１と同一の動作には同一番号を付してその説明を省略する。
【００８４】
ステップＳ３０１において、プログラム情報取得部１５は、動作コード３０を取得する。また、プログラム情報取得部１５が動作コード３０を取得すると、プログラム情報取得部１５が動作コード３０を解析し、被確認ソフトウェアへ入力される入力値又は被確認ソフトウェアから出力される出力値である入出力値が代入される入出力変数を抽出する。そして、処理はステップＳ１０２へ進む。
【００８５】
ステップＳ１０２は実施の形態１で説明したものと同じであるため、説明を省略する。
【００８６】
ステップＳ１０２の処理が完了後、ステップＳ３０２において、入出力条件取得部２０は、被確認ソフトウェアの入出力値の条件を定めた入出力条件３５を取得する。
この入出力条件３５は、値域又は値であり、ステップＳ３０１の処理で抽出した入出力変数が満たすべき条件を示す。そして、処理はステップＳ３０３へ進む。
【００８７】
ステップＳ３０３において、検査条件変換部１７は、ステップＳ３０２の処理で取得された入出力条件３５を基に、入出力変数の値を検査する式として、入力変数検査式及び出力変数検査式の少なくともいずれか一方を生成する。そして、検査条件変換部１７は、入出力変数の値を検査する式を動作コード３０に挿入して追加する。そして、処理はステップＳ１０３へ進む。
動作コード３０に入出力変数の値を検査する式が挿入されたコードは、ステップＳ１０３以降の処理で動作コード３０として用いられる。
ステップＳ１０３以降は、上述の通りであるため、説明を省略する。
【００８８】
このように、本実施の形態では、被確認ソフトウェアの入出力値に関する条件を、担当者が使用環境を想定して入力することで、想定した使用環境における被確認ソフトウェアの動作確認をすることができる。
【００８９】
図１４に示す動作コード３０の具体例を用いて、本実施の形態における動作確認支援装置１０のより詳細な動作例を説明する。
具体的には、以下の例では、図１４に示す動作コード３０で生成される被確認ソフトウェアの、ＲＵＮモードにおける動作確認のために、以下の（１）及び（２）の条件を満たす生成値３４を生成する動作を説明する。
（１）被確認ソフトウェアの内部状態がＲＵＮモードへ遷移する。
（２）被確認ソフトウェアの出力値を代入する出力変数Ｄｅｍｏ＿Ｏの値が３００となる。
本例の動作コード３０は、被確認ソフトウェアの内部状態である動作モードを表すモード変数ｍｏｄｅと、入力値を代入する２つの入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙと、出力値を代入する出力変数Ｄｅｍｏ＿Ｏとを有する。
【００９０】
図１３のステップＳ３０１において、プログラム情報取得部１５は、図１４に示す動作コード３０を取得する。その後、プログラム情報取得部１５は、取得した動作コード３０を解析し、入出力変数を抽出する。そして、処理はステップＳ１０２へ進む。
本例では、入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙと、出力変数Ｄｅｍｏ＿Ｏとがプログラム情報取得部１５により抽出される。
【００９１】
図１３のステップＳ１０２において、検査条件取得部１６は、検査条件３１として、動作コード３０における目標到達箇所情報を取得する。そして、ステップＳ３０２へ進む。
本例において、動作コード３０における目標到達箇所は、「動作モードがＲＵＮモードに遷移した被確認ソフトウェアの内部状態」に相当する図１４に示す動作コード３０の１９行目である。
【００９２】
図１３のステップＳ３０２において、入出力条件取得部２０は、被確認ソフトウェアの入出力値の条件を定めた入出力条件３５を取得する。そして、処理はステップＳ３０３へ進む。
本例における動作確認では、「出力変数の値が３００となる」という条件を満たすため、この入出力条件３５は「Ｄｅｍｏ＿Ｏ＝３００」という出力変数の条件となる。
【００９３】
図１３のステップＳ３０３において、検査条件変換部１７は、動作コード３０に、Ｓ３０２の処理で取得した入出力条件３５を基に、出力変数の値を検査する式として、出力変数検査式を生成する。そして、検査条件変換部１７は、生成した出力変数検査式を動作コード３０に挿入する。具体例としては、出力変数検査式をａｓｓｅｒｔ文として挿入する。そして、処理はステップＳ１０３へ進む。
【００９４】
図１３のステップＳ１０３において、検査条件変換部１７は、「動作コード３０の１９行目」という１つの検査条件３１を基に、１つの目標到達箇所変数ｒｅａｃｈを定義する。そして、処理はステップＳ１０４へ進む。
【００９５】
図１３のステップＳ１０４において、検査条件変換部１７は、「動作コード３０の１９行目」という検査条件３１を基に、２０行目に目標到達箇所変数の演算式（ｒｅａｃｈ＋＋；）のコードを挿入して追加した、検査用コードを生成する。
さらに、検査条件変換部１７は、検査用コードをＳＡＴソルバが解析可能な論理式に変換して、検査用コードの論理式３３を生成する。そして、処理はステップＳ１０５へ進む。
【００９６】
図１３のステップＳ１０５において、検査条件変換部１７は、検査条件３１を基に定義した目標到達箇所変数ｒｅａｃｈを基に、目標到達箇所へ到達したときに満たされる目標到達条件式３２（ｒｅａｃｈ＞０）を生成する。そして、処理はステップＳ１０６へ進む。
【００９７】
図１３のステップＳ１０６において、解析部１８は、ＳＡＴソルバを用いて検査用コードの論理式３３と目標到達条件式３２との論理積を解くことで入出力条件３５を満たし、かつ、目標到達箇所へ到達させる入力値を探索する。そして、解析部１８は、入出力条件３５を満たし、かつ、目標到達箇所へ到達させる入力値として生成値３４を生成する。具体的には、解析部１８は、目標到達箇所である動作コード３０の１９行目に到達し、かつ、出力変数Ｄｅｍｏ＿Ｏの値が３００となる、入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへ代入される入力値を探索する。そして、解析部１８は、入出力条件３５を満たし、かつ、目標到達箇所へ到達させる入力値として生成値３４を生成する。
本例では、ｒｅａｃｈ＋＋；が挿入された検査用コードの２０行目に到達し、目標到達条件式３２である「ｒｅａｃｈ＞０」を真にする解である入力値が存在する。したがって、「Ｄｅｍｏ＿Ｏ＝３００」という入出力条件３５を満たし、かつ、動作コード３０の１９行目へ到達させる入力値として生成値３４が生成される。そのため、処理はステップＳ１０７へ進む。
【００９８】
図１３のステップＳ１０７において、入力値出力部１９は、ステップＳ１０６の処理で生成された生成値３４を出力する。
図１５では、本例で生成される生成値３４及び目標到達箇所へ到達するまでの被確認ソフトウェアの実行順序を示す。
【００９９】
図１５の右下の表は、被確認ソフトウェアへの入力として、３回の被確認ソフトウェアの実行周期の各々の周期に入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへ代入される入力値を示す。
具体的には、１周期目に入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへ代入される入力値は、１０と３である。また、２周期目に入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへ代入される入力値も、１０と３である。また、３周期目に入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへ代入される入力値も、１０と３である。
【０１００】
図１５の右上の表は、入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへの入力値の代入前後の出力変数Ｄｅｍｏ＿Ｏの値及びモード変数ｍｏｄｅの値を示す。
具体的には、１周期目の開始時、出力変数Ｄｅｍｏ＿Ｏは値をもたず、モード変数ｍｏｄｅはＳＴＡＲＴである。入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへ１０と３が代入されると、動作コード３０の８行目及び９行目の処理が実行され、出力変数Ｄｅｍｏ＿Ｏに１００が、モード変数ｍｏｄｅにＲＵＮが代入される。そして、１周期目の終了時には出力変数Ｄｅｍｏ＿Ｏは１００となり、モード変数ｍｏｄｅはＲＵＮとなる。
また、２周期目の開始時、出力変数Ｄｅｍｏ＿Ｏは１００、モード変数ｍｏｄｅはＲＵＮである。入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへ１０と３が代入されると、動作コード３０の１８行目及び１９行目の処理が実行され、出力変数Ｄｅｍｏ＿ＯにＤｅｍｏ＿Ｏ＋１００が、モード変数ｍｏｄｅにＲＵＮが代入される。そして、１周期目の終了時には出力変数Ｄｅｍｏ＿Ｏは２００となり、モード変数ｍｏｄｅはＲＵＮとなる。
また、３周期目の開始時、出力変数Ｄｅｍｏ＿Ｏは２００、モード変数ｍｏｄｅはＲＵＮである。入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへ１０と３が代入されると、動作コード３０の１８行目及び１９行目の処理が実行され、出力変数Ｄｅｍｏ＿ＯにＤｅｍｏ＿Ｏ＋１００が、モード変数ｍｏｄｅにＲＵＮが代入される。そして、１周期目の終了時には出力変数Ｄｅｍｏ＿Ｏは３００となり、モード変数ｍｏｄｅはＲＵＮとなる。
したがって、３周期目の終了時点で被確認ソフトウェアの実行処理は本例の目標到達箇所を示す動作コード３０の１９行目に到達し、かつ、入出力条件３５である「Ｄｅｍｏ＿Ｏ＝３００」が満たされる。
【０１０１】
本例では、図７の右下の表で示されるように、入力変数Ｄｅｍｏ＿Ｉ＿ｘ及びＤｅｍｏ＿Ｉ＿ｙへの入力値が、１周期目では１０と３、２周期目でも１０と３、３周期目でも１０と３、という３周期分の入力値として生成値３４が出力される。
このように、本実施の形態では、生成値３４は、１周期分のみとは限らず、複数周期分の入力値列として生成されてもよい。
【０１０２】
以上のように生成された生成値３４を各々の周期で被確認ソフトウェアへ入力して実行することで、３周期目において、実行処理を目標到達箇所である動作コード３０の１９行目に到達させ、かつ、出力変数Ｄｅｍｏ＿Ｏの値を３００とすることができる。
【０１０３】
本例では、入出力条件取得部２０が、出力変数Ｄｅｍｏ＿Ｏ＝３００という出力値に関する条件を入出力条件３５として取得した場合を説明した。しかし、それに限らず、入出力条件取得部２０が、特定の入力値を入出力条件３５として取得してもよく、また入出力値の値域を入出力条件３５として取得してもよい。
【０１０４】
＊＊＊実施の形態の効果の説明＊＊＊
以上のように、担当者が被確認ソフトウェアの入出力値に関する入出力条件３５を入力することで、被確認ソフトウェアの使用環境において取りえない入出力値を生じさせる生成値３４の生成を除外することができる。
これにより、担当者は被確認ソフトウェアの使用環境において想定されない不要な処理動作の実行を除外し、動作確認を実行することが可能となる。しがたって、動作確認に要する工数を削減することができる。
【０１０５】
＜変形例１＞
実施の形態３では、プログラム情報取得部１５は、動作コード３０を取得する例を説明した。しかし、プログラム情報取得部１５は、動作プログラムとしてノード又はブランチを含むＡＳＴ（Ａｂｓｔｒａｃｔ  Ｓｙｎｔａｘ  Ｔｒｅｅ）で作成されたＡＳＴプログラムを取得し、ＡＳＴプログラムのソースコードであるＡＳＴコードへと変換し、動作コード３０としてＡＳＴコードを取得してもよい。
変形例１では、担当者は、入出力装置１４を介して検査条件取得部１６に直接、目標到達箇所を示すノード又はブランチに関する情報を、目標到達箇所情報として入力する。また、目標到達箇所情報の入力方法は、これに限らず、入出力装置１４を介してディスプレイに表示されたＡＳＴに含まれるノード又はブランチを視覚的に指定して入力する方法であってもよい。
図１３のステップＳ３０１においてＡＳＴコードが取得された場合、図１３のステップＳ１０２において、検査条件取得部１６は、目標到達箇所を示すノード又はブランチに関する情報を検査条件３１として、入出力装置１４を介して外部装置から取得してもよい。そして、図１３のステップＳ１０４において、検査条件変換部１７は、検査条件３１に基づき動作コード３０の中から目標到達箇所を示すノード又はブランチに対応するコードの行番号を抽出し、検査用コードの論理式３３を生成してもよい。そして、図１３のステップＳ１０５において、動作コード３０の中の目標到達箇所を示すノード又はブランチに対応するコードの行番号へ到達したときに満たされる目標到達条件式３２を生成してもよい。
【０１０６】
＜変形例２＞
変形例２として、プログラム情報取得部１５は、動作プログラムとしてノード又はエッジを含む状態遷移図で作成された状態遷移プログラムを取得し、状態遷移プログラムのソースコードである状態遷移コードへと変換し、動作コード３０として状態遷移コードを取得してもよい。
変形例２では、担当者は、入出力装置１４を介して検査条件取得部１６に直接、目標到達箇所を示すノード又はエッジに関する情報を、目標到達箇所情報として入力する。また、目標到達箇所情報の入力方法は、これに限らず、入出力装置１４を介してディスプレイに表示された状態遷移図に含まれるノード又はエッジを視覚的に指定して入力する方法であってもよい。
図１３のステップＳ３０１において状態遷移コードが取得された場合、図１３のステップＳ１０２において、検査条件取得部１６は、目標到達箇所を示すノード又はエッジに関する情報を検査条件３１として、入出力装置１４を介して外部装置から取得してもよい。
そして、図１３のステップＳ１０４において、検査条件変換部１７は、検査条件３１に基づき動作コード３０の中から目標到達箇所を示すノード又はエッジに対応するコードの行番号を抽出し、検査用コードの論理式３３を生成してもよい。そして、図１３のステップＳ１０５において、動作コード３０の中の目標到達箇所を示すノード又はエッジに対応するコードの行番号へ到達したときに満たされる目標到達条件式３２を生成してもよい。
【符号の説明】
【０１０７】
１０  動作確認支援装置、１１  プロセッサ、１２  メモリ、１３  通信装置、１４  入出力装置、１５  プログラム情報取得部、１６  検査条件取得部、１７  検査条件変換部、１８  解析部、１９  入力値出力部、２０  入出力条件取得部、３０  動作コード、３１  検査条件、３２  目標到達条件式、３３  検査用コードの論理式、３４  生成値、３５  入出力条件。
【要約】
プログラム情報取得部（１５）は、入力値を読み込んで動作する動作プログラムのソースコードである動作コードを取得する。検査条件取得部（１６）は、前記動作コードの目標到達箇所を含む目標到達箇所に関する情報を検査条件として取得する。検査条件変換部（１７）は、前記検査条件取得部が取得した前記検査条件に含まれる目標到達箇所へ到達したことを判定する判定式を生成する。解析部（１８）は、前記検査条件変換部が生成した前記判定式を用いて前記目標到達箇所へ到達させる前記入力値として生成値を生成する。【図１】
0006854994.tif 000002
【図２】
0006854994.tif 000003
【図３】
0006854994.tif 000004
【図４】
0006854994.tif 000005
【図５】
0006854994.tif 000006
【図６】
0006854994.tif 000007
【図７】
0006854994.tif 000008
【図８】
0006854994.tif 000009
【図９】
0006854994.tif 000010
【図１０】
0006854994.tif 000011
【図１１】
0006854994.tif 000012
【図１２】
0006854994.tif 000013
【図１３】
0006854994.tif 000014
【図１４】
0006854994.tif 000015
【図１５】
0006854994.tif 000016