(57)【特許請求の範囲】
【請求項１】
検証対象となるデバイスから予め規定された順序で周期的に送信されるべき一連のトランザクションのうちいずれかのトランザクションのデータが未送信となった場合に、前記トランザクションのデータの換わりに送信された他のトランザクションのデータの送信時刻を、前記トランザクションのデータが未送信となった時点として検出する第１の検出工程と、
前記第１の検出工程によって検出された前記トランザクションのデータが未送信となった時点以降に最初に前記トランザクションのデータが送信された時点を検出する第２の検出工程と、
前記トランザクションのデータが未送信となった時点から前記第２の検出工程によって検出された前記トランザクションのデータが送信された時点までの時間を算出する算出工程と、
前記算出工程によって算出された算出結果を、前記トランザクションに関する遅延時間として出力する出力工程と、
をコンピュータに実行させることを特徴とする検証支援プログラム。
【請求項２】
前記トランザクションごとに、前記算出工程（以下、「第１の算出工程」という）によって算出された時間を累積することにより、前記トランザクションに関する遅延時間を算出する第２の算出工程を前記コンピュータに実行させ、
前記出力工程は、前記第２の算出工程によって算出された算出結果を出力することを特徴とする請求項１に記載の検証支援プログラム。
【請求項３】
前記第２の算出工程によって算出された前記トランザクションに関する遅延時間が所定の閾値より大きいか否かを判定する遅延判定工程を前記コンピュータに実行させ、
前記出力工程は、前記遅延判定工程によって判定された判定結果を出力することを特徴とする請求項２に記載の検証支援プログラム。
【請求項４】
前記トランザクションを転送する転送方式ごとに、前記遅延判定工程によって前記トランザクションに関する遅延時間が前記閾値より大きいと判定された回数を計数する計数工程を前記コンピュータに実行させ、
前記出力工程は、前記計数工程によって計数された前記転送方式ごとの回数を出力することを特徴とする請求項３に記載の検証支援プログラム。
【請求項５】
前記計数工程によって計数された前記各転送方式の回数を足し合わせた総回数に対する前記各転送方式の回数の割合を算出する第３の算出工程と、
前記第３の算出工程によって算出された前記各転送方式の回数の割合が所定の閾値より大きいか否かを判定する割合判定工程と、を前記コンピュータに実行させ、
前記出力工程は、前記割合判定工程によって判定された判定結果を出力することを特徴とする請求項４に記載の検証支援プログラム。
【請求項６】
検証対象となるデバイスから予め規定された順序で周期的に送信されるべき一連のトランザクションのうちいずれかのトランザクションのデータが未送信となった場合に、前記トランザクションのデータの換わりに送信された他のトランザクションのデータの送信時刻を、前記トランザクションのデータが未送信となった時点として検出する第１の検出手段と、
前記第１の検出手段によって検出された前記トランザクションのデータが未送信となった時点以降に最初に前記トランザクションのデータが送信された時点を検出する第２の検出手段と、
前記トランザクションのデータが未送信となった時点から前記第２の検出手段によって検出された前記トランザクションのデータが送信された時点までの時間を算出する算出手段と、
前記算出手段によって算出された算出結果を、前記トランザクションに関する遅延時間として出力する出力手段と、
を備えることを特徴とする検証支援装置。
【請求項７】
検証対象となるデバイスから予め規定された順序で周期的に送信されるべき一連のトランザクションのうちいずれかのトランザクションのデータが未送信となった場合に、前記トランザクションのデータの換わりに送信された他のトランザクションのデータの送信時刻を、前記トランザクションのデータが未送信となった時点として検出する第１の検出工程と、
前記第１の検出工程によって検出された前記トランザクションのデータが未送信となった時点以降に最初に前記トランザクションのデータが送信された時点を検出する第２の検出工程と、
前記トランザクションのデータが未送信となった時点から前記第２の検出工程によって検出された前記トランザクションのデータが送信された時点までの時間を算出する算出工程と、
前記算出工程によって算出された算出結果を、前記トランザクションに関する遅延時間として出力する出力工程と、
をコンピュータが実行することを特徴とする検証支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイスの検証を支援する検証支援プログラム、検証支援装置、および検証支援方法に関する。
【背景技術】
【０００２】
任意の処理における一連のデータ（以下、「トランザクション」という）が送信元デバイスから送信先デバイスへ送信される場合、トランザクションは複数のパケットに分割されて送信される。また、複数のトランザクションがある場合、予め規定された順序で各トランザクションに属するパケットが送信される。トランザクションＡ，Ｂを例に挙げると、予め規定された順序とは、例えば、トランザクションＡのパケットとトランザクションＢのパケットとが１パケットずつ交互に送信される順序である。
【０００３】
また、パケット通信に関連する従来技術として、ネットワークの品質を評価するものがある。例えば、従来技術は、パケットヘッダ情報から測定対象となる、送受信端末間での通信の開始から終了までのフローを抽出する。そして、従来技術は、パケットのシーケンス番号を有するヘッダ情報をもとに、受信側装置へのパケット到着の時系列的な情報から、ネットワーク途中でのパケット損失に関する情報を含むネットワークの通信品質を推定する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２１０５１５号公報
【特許文献２】特開２００１−１１１６０８号公報
【特許文献３】特開２００８−１７４０７号公報
【特許文献４】特開平６−１５２６４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では、予め規定された順序で送信元デバイスから送信されるべきパケットがスキップされることで発生するトランザクションの遅延時間を把握することが難しいという問題があった。このため、トランザクションの遅延を引き起こす送信元デバイスでの原因を特定するのにかかる検証者の作業時間および作業負担が増大し、ひいては、検証期間の長期化を招くという問題があった。
【０００６】
本発明は、上述した従来技術による問題点を解消するため、デバイスの動作を検証する検証期間の短縮化を図ることができる検証支援プログラム、検証支援装置、および検証支援方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一観点によれば、本検証支援プログラム、検証支援装置、および検証支援方法は、検証対象となるデバイスから予め規定された順序で周期的に送信されるべき一連のトランザクションのうちいずれかのトランザクションのデータが未送信となった時点を検出し、検出された前記データが未送信となった時点以降に最初に前記データが送信された時点を検出し、前記データが未送信となった時点から、検出された前記データが送信された時点までの時間を算出し、算出された算出結果を出力する。
【発明の効果】
【０００８】
本検証支援プログラム、検証支援装置、および検証支援方法によれば、デバイスの動作を検証する検証期間の短縮化を図ることができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】本実施の形態にかかるシステムの一実施例を示す説明図である。
【図２】本実施の形態にかかる検証支援装置の処理手順の一例を示す説明図（その１）である。
【図３】本実施の形態にかかる検証支援装置の処理手順の一例を示す説明図（その２）である。
【図４】本実施の形態にかかる検証支援装置のハードウェア構成の一例を示すブロック図である。
【図５】本実施の形態にかかる検証支援装置の機能的構成を示すブロック図である。
【図６】シミュレーション結果の具体例を示す説明図である。
【図７】遅延時間テーブルの記憶内容の一例を示す説明図である。
【図８】回数テーブルの記憶内容の一例を示す説明図である。
【図９】遅延リストの具体例を示す説明図である。
【図１０】リストの具体例を示す説明図である。
【図１１】規定順序と異なる順序でパケットが送信された例を示す説明図である。
【図１２】リスト内のノードが削除される例を示す説明図である。
【図１３】本実施の形態にかかる検証支援装置の検証支援処理手順の一例を示すフローチャート（その１）である。
【図１４】本実施の形態にかかる検証支援装置の検証支援処理手順の一例を示すフローチャート（その２）である。
【図１５】本実施の形態にかかる検証支援装置の検証支援処理手順の一例を示すフローチャート（その３）である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、この発明にかかる検証支援プログラム、検証支援装置、および検証支援方法の好適な実施の形態を詳細に説明する。
【００１１】
（システムの一実施例）
図１は、本実施の形態にかかるシステムの一実施例を示す説明図である。図１において、システム１００は、検証支援装置１０１と、送信元デバイス１０２と、送信先デバイス１０３と、を含む構成である。システム１００において、検証支援装置１０１、送信元デバイス１０２および送信先デバイス１０３は、バス１１０を介して接続されている。
【００１２】
検証支援装置１０１は、送信元デバイス１０２の動作の検証を支援するコンピュータである。送信元デバイス１０２は、検証対象となるデバイスであり、一連のトランザクションＴ１〜Ｔｎを予め規定された順序（以下、「規定順序」という）で周期的に送信する。送信元デバイス１０２は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ホストコントローラである。送信先デバイス１０３は、送信元デバイス１０２から送信される一連のトランザクションＴ１〜Ｔｎを受信するデバイスである。送信先デバイス１０３は、例えば、ＵＳＢデバイスである。
【００１３】
送信元デバイス１０２および送信先デバイス１０３は、ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｉｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）などを用いて設計されたモデルでもよく、また、設計データをもとにＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などにより実装されたものでもよい。
【００１４】
ここで、各トランザクションＴ１〜Ｔｎは、複数のデータの集合である。また、各トランザクションＴ１〜Ｔｎに含まれる各データは、該データの識別子、内容などを含む情報である。本実施の形態では、データの一例として、データ部とヘッダ部を含むパケットを用いて説明する。また、送信元デバイス１０２としてＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ホストコントローラを用い、送信先デバイス１０３としてＵＳＢデバイスを用いて説明する。
【００１５】
図２，図３は、本実施の形態にかかる検証支援装置の処理手順の一例を示す説明図である。以下、一連のトランザクションＴ１〜Ｔｎのうち任意のトランザクションを「トランザクションＴｉ」と表記し（ｉ＝１，２，…，ｎ）、トランザクションＴｉに含まれるパケットを「パケットＰｉ」と表記する。
【００１６】
ここで、送信元デバイス１０２のＵＳＢホストコントローラは、フレーム単位で時間を管理して各パケットＰｉの送信を制御する。各パケットＰｉのヘッダ部には、トランザクションＴｉの識別子（以下、「トランザクションＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）」という）、宛先アドレスなどが含まれている。
【００１７】
図２，図３中、ＳＯＦ（Ｓｔａｒｔ  Ｏｆ  Ｆｒａｍｅ）は、フレームの始まりを示すためにバス１１０に発行されるパケットである。また、Ｐｉ（ここでは、ｉ＝１，２，…，５）が付された実線の□は、トランザクションＴｉのパケットＰｉを示している。
【００１８】
ここでは、送信元デバイス１０２から送信先デバイス１０３へ送信される一連のトランザクションＴ１〜Ｔｎを『トランザクションＴ１〜Ｔ５』とし、規定順序をトランザクションＩＤが昇順となる順序『Ｔ１→Ｔ２→…→Ｔ５』とする。まず、図２の例について説明する。
【００１９】
図２において、送信元デバイス１０２から送信先デバイス１０３へＳＯＦが送信されたあと、パケットＰ１，Ｐ２が規定順序で送信されている。規定順序通りであれば、つぎは送信元デバイス１０２から送信先デバイス１０３へパケットＰ３が送信されるところ、パケットＰ４が送信されている。
【００２０】
すなわち、送信元デバイス１０２での何らかの原因によりパケットＰ２のつぎに送信されるべきパケットＰ３がスキップされ（図２中、点線の□）、パケットＰ３の換わりにパケットＰ４が送信されている。パケットＰ３がスキップされる原因としては、例えば、送信元デバイス１０２の動作の不正確さのほか、通信プロトコルや送信元デバイス１０２の設計仕様に基づくものがある。
【００２１】
パケットＰ３がスキップされると、つぎにパケットＰ３を送信するまでの遅延時間が発生する。パケットＰ３の遅延時間は、送信元デバイス１０２からトランザクションＴ３の送信が完了するまでの遅延時間となる。本実施の形態では、送信元デバイス１０２から規定順序で送信されるべきパケットＰｉがスキップされる度に、パケットＰｉがスキップされたあと、最初にパケットＰｉが送信されるまでの時間を求めて提示する。
【００２２】
図２の例では、まず、検証支援装置１０１は、トランザクションＴ３のパケットＰ３が未送信となった時点ｔ１を検出する。具体的には、例えば、検証支援装置１０１は、スキップされたパケットＰ３の換わりに送信されたパケットＰ４の送信時刻を、パケットＰ３が未送信となった時点ｔ１として検出する。
【００２３】
このあと、検証支援装置１０１は、パケットＰ３が未送信となった時点ｔ１以降に最初にパケットＰ３が送信された時点ｔ２を検出する。具体的には、例えば、検証支援装置１０１は、パケットＰ３が未送信となった時点ｔ１以降に最初に送信されたパケットＰ３の送信時刻を時点ｔ２として検出する。
【００２４】
つぎに、検証支援装置１０１は、パケットＰ３が未送信となった時点ｔ１からパケットＰ３が送信された時点ｔ２までの時間ｄ１を算出する。時間ｄ１は、パケットＰ３がスキップされたことで発生したパケットＰ３の遅延時間である。そして、検証支援装置１０１は、算出された時間ｄ１をパケットＰ３の遅延時間として出力する。つぎに、図３の例について説明する。
【００２５】
図３において、送信元デバイス１０２から送信先デバイス１０３へＳＯＦが送信されたあと、パケットＰ１，Ｐ２が規定順序で送信されている。規定順序通りであれば、つぎは送信元デバイス１０２から送信先デバイス１０３へパケットＰ３が送信されるところ、パケットＰ５が送信されている。すなわち、パケットＰ２のつぎに送信されるべきパケットＰ３がスキップされ、さらに、パケットＰ４が連続してスキップされている（図３中、点線の□）。
【００２６】
この場合、まず、検証支援装置１０１は、トランザクションＴ３のパケットＰ３が未送信となった時点ｔ３を検出する。具体的には、例えば、検証支援装置１０１は、スキップされたパケットＰ３の換わりに送信されたパケットＰ５の送信時刻を、パケットＰ３が未送信となった時点ｔ３として検出する。
【００２７】
このあと、検証支援装置１０１は、パケットＰ３が未送信となった時点ｔ３以降に最初にパケットＰ３が送信された時点ｔ４を検出する。具体的には、例えば、検証支援装置１０１は、パケットＰ３が未送信となった時点ｔ３以降に最初に送信されたパケットＰ３の送信時刻を時点ｔ４として検出する。
【００２８】
つぎに、検証支援装置１０１は、パケットＰ３が未送信となった時点ｔ３からパケットＰ３が送信された時点ｔ４までの時間ｄ２を算出する。時間ｄ２は、パケットＰ３がスキップされたことで発生したパケットＰ３の遅延時間である。そして、検証支援装置１０１は、算出された時間ｄ２をパケットＰ３の待ち時間として出力する。
【００２９】
さらに、検証支援装置１０１は、トランザクションＴ４のパケットＰ４が未送信となった時点ｔ３を検出する。この時点ｔ３は、トランザクションＴ３のパケットＰ３が未送信となった時点と同一である。すなわち、パケットＰ３，Ｐ４が連続してスキップされた場合、パケットＰ３，Ｐ４が未送信となった時点は同じものとなる。
【００３０】
このあと、検証支援装置１０１は、パケットＰ４が未送信となった時点ｔ３以降に最初にパケットＰ４が送信された時点ｔ５を検出する。具体的には、例えば、検証支援装置１０１は、パケットＰ４が未送信となった時点ｔ３以降に最初に送信されたパケットＰ４の送信時刻を時点ｔ５として検出する。
【００３１】
つぎに、検証支援装置１０１は、パケットＰ４が未送信となった時点ｔ３からパケットＰ４が送信された時点ｔ５までの時間ｄ３を算出する。時間ｄ３は、パケットＰ４がスキップされたことで発生したパケットＰ４の遅延時間である。そして、検証支援装置１０１は、算出された時間ｄ３をパケットＰ４の遅延時間として出力する。
【００３２】
以上説明した検証支援装置１０１によれば、規定順序で送信されるべきトランザクションＴｉのパケットＰｉがスキップされた場合、パケットＰｉがスキップされてから最初にパケットＰｉが送信されるまでの時間を求めることができる。これにより、何らかの原因によって送信元デバイス１０２がパケットＰｉを規定順序で送信し損なったことにより発生するパケットＰｉの送信開始までの遅延時間を特定することができる。
【００３３】
また、トランザクションＴｉに含まれる複数のパケットＰｉのうち未送信となったパケットＰｉの遅延時間を足し合わせることで、トランザクションＴｉの送信完了までの遅延時間を特定することができる。この結果、例えば、検証者は、トランザクションＴｉの遅延時間が、設計者や顧客が許容できる値以下であるかを検証することができる。
【００３４】
（検証支援装置１０１のハードウェア構成）
図４は、本実施の形態にかかる検証支援装置のハードウェア構成の一例を示すブロック図である。図４において、検証支援装置１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）４０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０３と、磁気ディスクドライブ４０４と、磁気ディスク４０５と、光ディスクドライブ４０６と、光ディスク４０７と、ディスプレイ４０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）４０９と、キーボード４１０と、マウス４１１と、スキャナ４１２と、プリンタ４１３と、を備えている。また、各構成部はバス４００によってそれぞれ接続されている。
【００３５】
ここで、ＣＰＵ４０１は、検証支援装置１０１の全体の制御を司る。ＲＯＭ４０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ４０３は、ＣＰＵ４０１のワークエリアとして使用される。磁気ディスクドライブ４０４は、ＣＰＵ４０１の制御にしたがって磁気ディスク４０５に対するデータのリード／ライトを制御する。磁気ディスク４０５は、磁気ディスクドライブ４０４の制御で書き込まれたデータを記憶する。
【００３６】
光ディスクドライブ４０６は、ＣＰＵ４０１の制御にしたがって光ディスク４０７に対するデータのリード／ライトを制御する。光ディスク４０７は、光ディスクドライブ４０６の制御で書き込まれたデータを記憶したり、光ディスク４０７に記憶されたデータをコンピュータに読み取らせたりする。
【００３７】
ディスプレイ４０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ４０８は、例えば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００３８】
Ｉ／Ｆ４０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク４１４に接続され、このネットワーク４１４を介して他の装置に接続される。そして、Ｉ／Ｆ４０９は、ネットワーク４１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ４０９には、例えばモデムやＬＡＮアダプタなどを採用することができる。
【００３９】
キーボード４１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス４１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００４０】
スキャナ４１２は、画像を光学的に読み取り、検証支援装置１０１内に画像データを取り込む。なお、スキャナ４１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ４１３は、画像データや文書データを印刷する。プリンタ４１３には、例えば、レーザプリンタやインクジェットプリンタを採用することができる。
【００４１】
（検証支援装置１０１の機能的構成）
図５は、本実施の形態にかかる検証支援装置の機能的構成を示すブロック図である。図５において、検証支援装置１０１は、取得部５０１と、第１の検出部５０２と、第２の検出部５０３と、第１の算出部５０４と、第２の算出部５０５と、遅延判定部５０６と、計数部５０７と、第３の算出部５０８と、割合判定部５０９と、出力部５１０と、を含む構成である。
【００４２】
各機能部（取得部５０１〜出力部５１０）は、具体的には、例えば、図４に示したＲＯＭ４０２、ＲＡＭ４０３、磁気ディスク４０５、光ディスク４０７などの記憶装置に記憶されたプログラムをＣＰＵ４０１に実行させることにより、または、Ｉ／Ｆ４０９により、その機能を実現する。なお、各機能部（取得部５０１〜出力部５１０）の処理結果は、特に指定する場合を除いて、ＲＡＭ４０３、磁気ディスク４０５、光ディスク４０７などの記憶装置に記憶される。
【００４３】
取得部５０１は、送信元デバイス１０２から送信先デバイス１０３へ送信されたパケットＰｉに関する情報を取得する。ここで、パケットＰｉに関する情報（以下、「パケット情報」という）とは、例えば、パケットＰｉの送信時刻、パケットＰｉを含むトランザクションＴｉのトランザクションＩＤや転送方式などのパケットＰｉのヘッダ部に含まれる情報である。
【００４４】
トランザクションＴｉの転送方式としては、例えば、バルク転送、インタラプト転送、コントロール転送、アイソクロナス転送（データフロー転送）などがある。以下の説明では、複数の転送方式を「転送方式Ｔｙ［１］〜Ｔｙ［ｍ］」と表記し、トランザクションＴｉの転送方式を「転送方式Ｔｙ［ｊ］」と表記する。また、パケットＰｉの送信時刻は、現実の時刻でもよく、シミュレーションにおける時刻でもよい。
【００４５】
具体的には、例えば、取得部５０１が、送信元デバイス１０２からパケットＰｉを受信することで、パケット情報を取得してもよい。また、取得部５０１が、シミュレータ上で動作する送信元デバイス１０２のシミュレーション結果をパケット情報として取得してもよい。ここで、シミュレーション結果の具体例について説明する。
【００４６】
図６は、シミュレーション結果の具体例を示す説明図である。図６において、シミュレーション結果６００は、送信元デバイス１０２の動作を模擬するシミュレーションの開始から終了までの間に、送信元デバイス１０２から送信先デバイス１０３へ送信されたパケットＰｉのパケット情報Ｓｋの集合である。
【００４７】
ここで、順番は、シミュレーション中に送信元デバイス１０２から送信されたパケットＰｉの送信順序である。パケットＩＤは、パケットＰｉの識別子である。トランザクションＩＤは、トランザクションＴｉの識別子である。転送方式は、トランザクションＴｉの転送方式Ｔｙ［ｊ］である。送信時刻は、パケットＰｉの送信時刻である。
【００４８】
上記取得部５０１は、シミュレーションの開始から終了までのシミュレーション結果６００を一括して取得してもよい。また、上記取得部５０１は、シミュレーション中に送信元デバイス１０２から送信先デバイス１０３へ送信されたパケットＰｉのパケット情報Ｓｋをリアルタイムで取得してもよい。
【００４９】
図５の説明に戻り、第１の検出部５０２は、送信元デバイス１０２から規定順序で周期的に送信されるべき一連のトランザクションＴ１〜ＴｎのうちいずれかのトランザクションＴｉのパケットＰｉが未送信となった時点ｔｘを検出する。ここで、一連のトランザクションＴ１〜Ｔｎを送信する規定順序は、例えば、送信元デバイス１０２の設計者によって任意に設定されている。
【００５０】
具体的には、例えば、最初に送信するトランザクションを指定して、それ以外のトランザクションの規定順序を、どのトランザクションのつぎに送信するかによって規定してもよい。また、各トランザクションの規定順序を何番目に送信するかによって規定することにしてもよい。以下の説明では、一連のトランザクションＴ１〜Ｔｎを送信する規定順序として、トランザクションＩＤが昇順となる順序（Ｔ１→Ｔ２→…→Ｔｎ）を例に挙げて説明する。
【００５１】
具体的には、例えば、まず、第１の検出部５０２が、送信元デバイス１０２のシミュレーション結果に基づいて、送信元デバイス１０２から規定順序と異なる順序で送信されたパケットＰ［ｋ］を特定する。このあと、第１の検出部５０２が、送信元デバイス１０２からパケットＰ［ｋ］の直前に送信されたパケットＰ［ｌ］を特定する。
【００５２】
つぎに、第１の検出部５０２が、規定順序がパケットＰ［ｌ］とパケットＰ［ｋ］との間のパケットＰ［ｌ＋１］，Ｐ［ｌ＋２］，…，Ｐ［ｋ−１］を未送信となったパケットＰｉとして特定する。そして、第１の検出部５０２が、パケットＰ［ｋ］の送信時刻を、各パケットＰｉが未送信となった時点ｔｘとして検出する。
【００５３】
図２に示した例では、まず、第１の検出部５０２が、送信元デバイス１０２から規定順序と異なる順序で送信されたパケットＰ４を特定する。このあと、第１の検出部５０２が、送信元デバイス１０２からパケットＰ４の直前に送信されたパケットＰ２を特定する。つぎに、第１の検出部５０２が、規定順序がパケットＰ２とパケットＰ４との間のパケットＰ３を未送信となったパケットとして特定する。そして、第１の検出部５０２が、パケットＰ４の送信時刻をパケットＰ３が未送信となった時点ｔｘとして検出する。
【００５４】
図３に示した例では、まず、第１の検出部５０２が、送信元デバイス１０２から規定順序と異なる順序で送信されたパケットＰ５を特定する。このあと、第１の検出部５０２が、送信元デバイス１０２からパケットＰ５の直前に送信されたパケットＰ２を特定する。つぎに、第１の検出部５０２が、規定順序がパケットＰ２とパケットＰ５との間のパケットＰ３，Ｐ４を未送信となったパケットとして特定する。そして、第１の検出部５０２が、パケットＰ５の送信時刻を、各パケットＰ３，Ｐ４が未送信となった時点ｔｘとして検出する。
【００５５】
なお、送信元デバイス１０２から規定順序と異なる順序で送信されたパケットＰ［ｋ］と、未送信となったパケットＰｉと、を特定するための第１の検出部５０２の具体的な処理内容の一例については、図１０〜図１２を用いて説明する。
【００５６】
第２の検出部５０３は、検出されたパケットＰｉが未送信となった時点ｔｘ以降に最初にパケットＰｉが送信された時点ｔｙを検出する。具体的には、例えば、まず、第２の検出部５０３が、送信元デバイス１０２のシミュレーション結果に基づいて、規定順序と異なる順序で送信されたパケットＰ［ｋ］の送信時刻以降で最初に送信されたパケットＰｉを特定する。そして、第２の検出部５０３が、特定されたパケットＰｉの送信時刻を時点ｔｙとして検出する。
【００５７】
第１の算出部５０４は、パケットＰｉが未送信となった時点ｔｘからパケットＰｉが送信された時点ｔｙまでの時間ｄ［ｉ］を算出する。ここで、時間ｄ［ｉ］は、何らかの原因によって送信元デバイス１０２がパケットＰｉを規定順序で送信し損なったことにより発生するパケットＰｉの送信開始までに余分にかかった遅延時間である。
【００５８】
具体的には、例えば、第１の算出部５０４が、規定順序と異なる順序で送信されたパケットＰ［ｋ］の送信時刻と、パケットＰ［ｋ］の送信時刻以降で最初に送信されたパケットＰｉの送信時刻との時間差を時間ｄ［ｉ］として算出する。より具体的には、例えば、下記式（１）を用いて、時間ｄ［ｉ］を算出することができる。
【００５９】
ｄ［ｉ］＝ｔｙ−ｔｘ      ・・・（１）
【００６０】
第２の算出部５０５は、トランザクションＴｉごとに、算出されたパケットＰｉの時間ｄ［ｉ］を累積することにより、トランザクションＴｉに関する遅延時間Ｄ［ｉ］を算出する。ここで、遅延時間Ｄ［ｉ］は、トランザクションＴｉに含まれる複数のパケットＰｉのうち未送信となったパケットＰｉの時間ｄ［ｉ］が蓄積されて発生するトランザクションＴｉの送信完了までに余分にかかった遅延時間である。
【００６１】
具体的には、例えば、第２の算出部５０５が、パケットＰｉの時間ｄ［ｉ］が算出されると、その都度、下記式（２）を用いて、トランザクションＴｉに関する遅延時間Ｄ［ｉ］を算出する。ただし、Ｄ［ｉ］は、トランザクションＴｉに関する遅延時間である。ｄ［ｉ］は、未送信となったパケットＰｉの送信開始までに余分にかかった遅延時間である。
【００６２】
Ｄ［ｉ］＝Ｄ［ｉ］＋ｄ［ｉ］        ・・・（２）
【００６３】
算出されたトランザクションＴｉに関する遅延時間Ｄ［ｉ］は、例えば、図７に示す遅延時間テーブル７００に記憶される。ここで、遅延時間テーブル７００の記憶内容について説明する。遅延時間テーブル７００は、例えば、ＲＡＭ４０３、磁気ディスク４０５、光ディスク４０７などの記憶装置により実現される。
【００６４】
図７は、遅延時間テーブルの記憶内容の一例を示す説明図である。図７において、遅延時間テーブル７００は、トランザクションＩＤ、遅延時間および判定フラグのフィールドを有する。各フィールドに情報を設定することで、各トランザクションＴ１〜Ｔｎに関する遅延時間情報７００−１〜７００−ｎがレコードとして記憶されている。
【００６５】
ここで、トランザクションＩＤは、トランザクションＴｉの識別子である。遅延時間は、トランザクションＴｉに関する遅延時間Ｄ［ｉ］である。遅延時間Ｄ［ｉ］の初期値は「０」である。判定フラグは、後述する遅延判定部５０６によって判定された判定結果に応じて変更されるフラグである。判定フラグは、初期状態では「０」である。なお、判定フラグについての詳細な説明は後述する。
【００６６】
遅延時間テーブル７００の記憶内容は、上記第２の算出部５０５によってトランザクションＴｉに関する遅延時間Ｄ［ｉ］が算出されると、その都度更新される。例えば、トランザクションＴ１に関する遅延時間Ｄ［１］が算出されると、遅延時間テーブル７００内の遅延時間情報７００−１の遅延時間が更新される。
【００６７】
図５の説明に戻り、遅延判定部５０６は、算出されたトランザクションＴｉに関する遅延時間Ｄ［ｉ］が所定の閾値Ｄｔｈより大きいか否かを判定する。具体的には、例えば、遅延判定部５０６が、図７に示した遅延時間テーブル７００を参照して、トランザクションＴｉに関する遅延時間Ｄ［ｉ］が閾値Ｄｔｈより大きいか否かを判定する。
【００６８】
ここで、閾値Ｄｔｈは、例えば、トランザクションＴｉに関する遅延時間Ｄ［ｉ］として設計者や顧客が許容できる値以下に設定される。より具体的には、例えば、遅延時間Ｄ［ｉ］をα以下に抑えたい場合、閾値Ｄｔｈはαに設定される。閾値Ｄｔｈは、例えば、予め設定されて図４に示したＲＯＭ４０２、ＲＡＭ４０３、磁気ディスク４０５、光ディスク４０７などの記憶装置に記憶されている。
【００６９】
トランザクションＴｉに関する遅延時間Ｄ［ｉ］が閾値Ｄｔｈより大きいと判定された場合、遅延時間テーブル７００内の遅延時間情報７００−ｉの判定フラグが「０」から「１」に変更される。遅延時間テーブル７００内の判定フラグを参照することで、遅延時間Ｄ［ｉ］が閾値Ｄｔｈを超えたトランザクションＴｉを特定することができる。
【００７０】
計数部５０７は、トランザクションＴｉを転送する転送方式Ｔｙ［ｊ］ごとに、トランザクションＴｉに関する遅延時間Ｄ［ｉ］が閾値Ｄｔｈより大きいと判定された回数Ｃ［ｊ］を計数する。具体的には、例えば、まず、計数部５０７が、未送信となったパケットＰｉに関するパケット情報Ｓｋを参照して、トランザクションＴｉの転送方式Ｔｙ［ｊ］を特定する。そして、計数部５０７が、図８に示す回数テーブル８００内の転送方式Ｔｙ［ｊ］の回数Ｃ［ｊ］をインクリメントすることで、回数Ｃ［ｊ］を計数する。
【００７１】
第３の算出部５０８は、総回数ＣALLに対する転送方式Ｔｙ［ｊ］の回数Ｃ［ｊ］の割合Ｒ［ｊ］を算出する。ここで、総回数ＣALLは、計数された各転送方式Ｔｙ［１］〜Ｔｙ［ｍ］の回数Ｃ［１］〜Ｃ［ｍ］を足し合わせた回数である。具体的には、例えば、まず、第３の算出部５０８が、下記式（３）を用いて、回数Ｃ［１］〜Ｃ［ｍ］を足し合わせた総回数ＣALLを算出する。なお、回数Ｃ［１］〜Ｃ［ｍ］は、例えば、図８に示す回数テーブル８００を参照することで特定することができる。
【００７２】
【数１】
0005573431.tif 000002
【００７３】
そして、第３の算出部５０８が、下記式（４）を用いて、総回数ＣALLに対する各転送方式Ｔｙ［ｊ］の回数Ｃ［ｊ］の割合Ｒ［ｊ］を算出する。ただし、Ｒ［ｊ］は、総回数ＣALLに対する転送方式Ｔｙ［ｊ］の回数Ｃ［ｊ］の割合（単位：％）である。
【００７４】
Ｒ［ｊ］＝１００×Ｃ［ｊ］／ＣALL      ・・・（４）
【００７５】
算出された転送方式Ｔｙ［ｊ］の割合Ｒ［ｊ］は、例えば、図８に示す回数テーブル８００に記憶される。ここで、回数テーブル８００の記憶内容について説明する。回数テーブル８００は、例えば、ＲＡＭ４０３、磁気ディスク４０５、光ディスク４０７などの記憶装置により実現される。
【００７６】
図８は、回数テーブルの記憶内容の一例を示す説明図である。図８において、回数テーブル８００は、転送方式および回数のフィールドを有する。各フィールドに情報を設定することで、各転送方式Ｔｙ［１］〜Ｔｙ［ｍ］の回数情報８００−１〜８００−ｍがレコードとして記憶されている。
【００７７】
ここで、転送方式は、トランザクションＴｉの転送方式Ｔｙ［ｊ］である。回数は、トランザクションＴｉに関する遅延時間Ｄ［ｉ］が閾値Ｄｔｈより大きいと判定された回数Ｃ［ｊ］である。各回数Ｃ［ｊ］の初期値は「０」である。割合は、総回数ＣALLに対する回数Ｃ［ｊ］の割合Ｒ［ｊ］である。
【００７８】
図５の説明に戻り、割合判定部５０９は、算出された転送方式Ｔｙ［ｊ］の回数Ｃ［ｊ］の割合Ｒ［ｊ］が所定の閾値Ｒｔｈより大きいか否かを判定する。閾値Ｒｔｈとしては、例えば、３０，４０，５０などの数値が設定される。閾値Ｒｔｈは、例えば、予め設定されて図４に示したＲＯＭ４０２、ＲＡＭ４０３、磁気ディスク４０５、光ディスク４０７などの記憶装置に記憶されている。
【００７９】
また、割合Ｒ［ｊ］が閾値Ｒｔｈより大きいと判定された転送方式Ｔｙ［ｊ］は、例えば、図９に示す遅延リスト９００に登録される。ここで、遅延リスト９００の具体例について説明する。ただし、上記閾値Ｒｔｈが『Ｒｔｈ＝３０』の場合を例に挙げて説明する。
【００８０】
図９は、遅延リストの具体例を示す説明図である。図９においては、遅延リスト９００は、割合Ｒ［ｊ］が閾値Ｒｔｈより大きいと判定された転送方式Ｔｙ［ｊ］を示す情報である。具体的には、遅延リスト９００には、割合Ｒ［ｊ］が閾値Ｒｔｈより大きい転送方式Ｔｙ［１］と転送方式Ｔｙ［３］が示されている。転送方式Ｔｙ［１］の割合Ｒ［１］は３３％であり、転送方式Ｔｙ［３］の割合Ｒ［３］は４１％である。
【００８１】
図５の説明に戻り、出力部５１０は、割合判定部５０９によって判定された判定結果を出力する。具体的には、例えば、出力部５１０が、図９に示した遅延リスト９００を出力することにしてもよい。これにより、転送方式Ｔｙ［１］〜Ｔｙ［ｍ］のうちトランザクションＴｉの遅延時間Ｄ［ｉ］が閾値Ｄｔｈを超える回数Ｃ［ｊ］が相対的に多い転送方式Ｔｙ［ｊ］を特定することができる。
【００８２】
なお、出力部５１０の出力形式としては、例えば、ディスプレイ４０８への表示、プリンタ４１３への印刷出力、Ｉ／Ｆ４０９による外部装置への送信がある。また、ＲＡＭ４０３、磁気ディスク４０５、光ディスク４０７などの記憶領域に記憶することとしてもよい。
【００８３】
また、出力部５１０は、上記第１の算出部５０４によって算出されたパケットＰｉの時間ｄ［ｉ］を出力することにしてもよい。これにより、何らかの原因によって送信元デバイス１０２がパケットＰｉを規定順序で送信し損なったことにより発生するパケットＰｉの送信開始までに余分にかかった遅延時間を特定することができる。
【００８４】
また、出力部５１０は、上記第２の算出部５０５によって算出されたトランザクションＴｉに関する遅延時間Ｄ［ｉ］を出力することにしてもよい。これにより、トランザクションＴｉに含まれる複数のパケットＰｉのうち未送信となったパケットＰｉの時間ｄ［ｉ］が蓄積されて発生するトランザクションＴｉの送信完了までに余分にかかった遅延時間を特定することができる。
【００８５】
また、出力部５１０は、上記遅延判定部５０６によって判定された判定結果を出力することにしてもよい。これにより、遅延時間Ｄ［ｉ］が設計者や顧客が許容できる値（閾値Ｄｔｈ）を超えるトランザクションＴｉを特定することができる。
【００８６】
また、出力部５１０は、上記計数部５０７によって計数された転送方式Ｔｙ［ｊ］ごとの回数Ｃ［ｊ］を出力することにしてもよい。これにより、転送方式Ｔｙ［ｊ］ごとに、トランザクションＴｉの遅延時間Ｄ［ｉ］が閾値Ｄｔｈを超える回数Ｃ［ｊ］を特定することができる。
【００８７】
（第１の検出部５０２の具体的な処理内容）
つぎに、送信元デバイス１０２から規定順序と異なる順序で送信されたパケットＰ［ｋ］と、未送信となったパケットＰｉを特定するための第１の検出部５０２の具体的な処理内容の一例について説明する。
【００８８】
ここでは、図１０に示すリスト構造のリスト１０００を用いて、規定順序と異なる順序で送信されたパケットＰ［ｋ］と未送信となったパケットＰｉと、を特定する場合について説明する。ただし、送信元デバイス１０２から送信先デバイス１０３に送信される一連のトランザクションＴ１〜Ｔｎを「トランザクションＴ１〜Ｔ３」とする。
【００８９】
図１０は、リストの具体例を示す説明図である。図１０において、リスト１０００は、トランザクションＴ１〜Ｔ３のパケットＰ１〜Ｐ３の規定順序を示す情報である。リスト１０００には、各トランザクションＴ１〜Ｔ３を表すノードＮ１〜Ｎ３が含まれている。各ノードは、フィールド１００１およびフィールド１００２を有する。
【００９０】
フィールド１００１には、次ノードのノードＩＤが保持されている。次ノードとは、各ノードが表すトランザクションのつぎに送信されるトランザクションを表すノードである。ノードＩＤとは、各ノードの識別子である。ここでは、ノードＮ１のフィールド１００１には、ノードＮ２のノードＩＤ『Ｎ２』が保持されている。ノードＮ２のフィールド１００１には、ノードＮ３のノードＩＤ『Ｎ３』が保持されている。ノードＮ３のフィールド１００１には、ノードＮ１のノードＩＤ『Ｎ１』が保持されている。すなわち、一連のトランザクションＴ１〜Ｔ３が『Ｔ１→Ｔ２→Ｔ３』の順に送信されることを示している。
【００９１】
フィールド１００２には、各ノードに対応するトランザクションのトランザクションＩＤが保持されている。ここでは、ノードＮ１のフィールド１００２には、トランザクションＴ１のトランザクションＩＤ『Ｔ１』が保持されている。ノードＮ２のフィールド１００２には、トランザクションＴ２のトランザクションＩＤ『Ｔ２』が保持されている。ノードＮ３のフィールド１００２には、トランザクションＴ３のトランザクションＩＤ『Ｔ３』が保持されている。
【００９２】
第１の検出部５０２は、送信元デバイス１０２から送信先デバイス１０３へ送信されたパケット群の中からパケットＰｉが選択されると、現ノードのフィールド１００１に保持されている次ノードを特定する。なお、パケットＰｉは、送信元デバイス１０２から送信先デバイス１０３へ送信された送信順に選択される。
【００９３】
現ノードは、リスト１０００内で基準となるノードであり、初期状態では最後尾のノードＮ３に設定されている。そして、第１の検出部５０２は、次ノードのフィールド１００２に保持されているトランザクションＩＤと、選択されたパケットＰｉのトランザクションＩＤとが一致するか否かを判断する。
【００９４】
ここで、トランザクションＩＤが一致する場合、第１の検出部５０２は、リスト１０００内の現ノードを次ノードに設定する。一方、トランザクションＩＤが不一致の場合、第１の検出部５０２は、取得したパケットＰｉを規定順序と異なる順序で送信されたパケットＰ［ｋ］として検出する。
【００９５】
図１１は、規定順序と異なる順序でパケットが送信された例を示す説明図である。図中、実線の□の上に付されている番号は、１フレームのうち何番目に送信されたパケットであるかを示している。図１１において、規定順序でパケットＰ１〜Ｐ３が送信されたあと、４番目にパケットＰ２が送信されている。また、リスト１０００内の現ノードは、ノードＮ３に設定されている。
【００９６】
この場合、第１の検出部５０２は、パケットＰ２が選択されると、現ノードＮ３のフィールド１００１に保持されている次ノードＮ１を特定する。そして、第１の検出部５０２は、次ノードＮ１のフィールド１００２に保持されているトランザクションＩＤ『Ｔ１』と、選択されたパケットＰ２のトランザクションＩＤ『Ｔ２』とが一致するか否かを判断する。
【００９７】
ここでは、トランザクションＩＤが不一致のため、第１の検出部５０２は、パケットＰ２を規定順序と異なる順序で送信されたパケットＰ［ｋ］として検出する。そして、第１の検出部５０２は、次ノードＮ１のフィールド１００２に保持されているトランザクションＩＤのトランザクションＴ１のパケットＰ１を未送信となったパケットＰｉとして特定する。
【００９８】
つぎに、第１の検出部５０２は、リスト１０００内の現ノードを、現ノードＮ３の次ノードＮ１に設定する。さらに、第１の検出部５０２は、現ノードＮ１のフィールド１００１に保持されている次ノードＮ２を特定する。そして、第１の検出部５０２は、次ノードＮ２のフィールド１００２に保持されているトランザクションＩＤ『Ｔ２』と、選択されたパケットＰ２のトランザクションＩＤ『Ｔ２』とが一致するか否かを判断する。
【００９９】
ここでは、トランザクションＩＤが一致するため、第１の検出部５０２は、リスト１０００内の現ノードを、現ノードＮ１の次ノードＮ２に設定する。なお、ここでもトランザクションＩＤが不一致の場合は、トランザクションＩＤが一致するまで処理を繰り返す。これにより、複数のパケットが連続して未送信となる場合に、未送信となった複数のパケットＰｉを特定することができる。
【０１００】
以上説明した処理により、送信元デバイス１０２から規定順序と異なる順序で送信されたパケットＰ［ｋ］と、未送信となったパケットＰｉとを特定することができる。つぎに、送信元デバイス１０２から送信されたパケットＰｉがトランザクションＴｉの最後のパケットの場合について説明する。
【０１０１】
一連のトランザクションＴ１〜Ｔｎの送信処理は同一周期で終了するとは限らないため、すべてのパケットＰｉの送信が終了したトランザクションＴｉを表すノードＮｉをリストから削除する。ここでは、すべてのパケットＰ３の送信が終了したためトランザクションＴ３を表すノードＮ３を削除する場合を例に挙げて説明する。
【０１０２】
図１２は、リスト内のノードが削除される例を示す説明図である。ここでは、１フレームのうちＭ番目に送信されたパケットＰ３をトランザクションＴ３の最後のパケットとする。なお、各パケットＰｉにはトランザクションＴｉの最後のパケットであるか否かに関するフラグが付されている。また、現ノードはノードＮ２である。
【０１０３】
第１の検出部５０２は、Ｍ番目に送信されたパケットＰ３が規定順序通りに送信されたパケットであるか否かを判断したあと、さらに、パケットＰ３がトランザクションＴ３の最後のパケットであるか否かを判断する。具体的には、例えば、第１の検出部５０２は、パケットＰ３のフラグを参照して、該パケットＰ３がトランザクションＴ３の最後のパケットであると判断する。
【０１０４】
そして、第１の検出部５０２は、現ノードＮ２のフィールド１００１に、次ノードＮ３のフィールド１００１に保持されているノードＩＤ『Ｎ１』を設定して、ノードＮ３を削除する。この場合、現ノードの設定変更は行われない。これにより、トランザクションＴｉに含まれるすべてのパケットＰｉの送信終了に合わせて、リスト（例えば、リスト１０００）内の構造を修正することができる。
【０１０５】
（検証支援装置１０１の検証支援処理手順）
つぎに、検証支援装置１０１の検証支援処理手順について説明する。ここでは、検証支援装置１０１が、図６に示したシミュレーション結果６００を用いて検証支援処理を実行する場合を例に挙げて説明する。
【０１０６】
図１３〜図１５は、本実施の形態にかかる検証支援装置の検証支援処理手順の一例を示すフローチャートである。図１３のフローチャートにおいて、まず、取得部５０１により、送信元デバイス１０２の動作を模擬したシミュレーション結果６００を取得したか否かを判断する（ステップＳ１３０１）。
【０１０７】
ここで、シミュレーション結果６００を取得するのを待って（ステップＳ１３０１：Ｎｏ）、取得した場合（ステップＳ１３０１：Ｙｅｓ）、第１の検出部５０２により、パケット情報Ｓｋのｋを「ｋ＝１」で初期化する（ステップＳ１３０２）。そして、第１の検出部５０２により、シミュレーション結果６００の中からパケット情報Ｓｋを選択する（ステップＳ１３０３）。
【０１０８】
つぎに、第１の検出部５０２により、選択されたパケット情報Ｓｋから特定されるパケットＰｉが規定順序と異なる順序で送信されたパケットＰ［ｋ］であるか否かを判断する（ステップＳ１３０４）。ここで、パケットＰｉが規定順序と異なる順序で送信されたパケットＰ［ｋ］ではない場合（ステップＳ１３０４：Ｎｏ）、図１４に示すステップＳ１４０６に移行する。
【０１０９】
一方、パケットＰｉが規定順序と異なる順序で送信されたパケットＰ［ｋ］の場合（ステップＳ１３０４：Ｙｅｓ）、第１の検出部５０２により、シミュレーション結果６００に基づいて、未送信となったパケットＰｉを特定する（ステップＳ１３０５）。つぎに、第１の検出部５０２により、特定された未送信となったパケットＰｉの中から任意のパケットＰｉを選択する（ステップＳ１３０６）。このステップＳ１３０６の処理は、未送信となったパケットＰｉが複数特定された場合を考慮して行われる。
【０１１０】
そして、第１の検出部５０２により、パケットＰ［ｋ］の送信時刻を、選択されたパケットＰｉが未送信となった時点ｔｘとして検出する（ステップＳ１３０７）。つぎに、第２の検出部５０３により、未送信となったパケットＰｉを含むトランザクションＴｉを特定する（ステップＳ１３０８）。
【０１１１】
そして、第２の検出部５０３により、遅延時間テーブル７００を参照して、特定されたトランザクションＴｉの判定フラグが「１」となっているか否かを判断する（ステップＳ１３０９）。ここで、判定フラグが「１」の場合（ステップＳ１３０９：Ｙｅｓ）、図１４に示すステップＳ１４０５に移行する。
【０１１２】
一方、判定フラグが「０」の場合（ステップＳ１３０９：Ｎｏ）、第２の検出部５０３により、シミュレーション結果６００を参照して、パケットＰｉが未送信となった時点ｔｘ以降で最初に送信されたパケットＰｉを特定する（ステップＳ１３１０）。
【０１１３】
そして、第２の検出部５０３により、特定されたパケットＰｉの送信時刻を、パケットＰｉが送信された時点ｔｙとして検出する（ステップＳ１３１１）。このあと、第１の算出部５０４により、パケットＰｉが未送信となった時点ｔｘからパケットＰｉが送信された時点ｔｙまでの時間ｄ［ｉ］を算出する（ステップＳ１３１２）。
【０１１４】
つぎに、第２の算出部５０５により、算出されたパケットＰｉの時間ｄ［ｉ］を上記式（２）に代入することにより、トランザクションＴｉに関する遅延時間Ｄ［ｉ］を算出する（ステップＳ１３１３）。なお、上記式（２）の右辺のＤ［ｉ］は遅延時間テーブル７００から特定される。
【０１１５】
そして、第２の算出部５０５により、算出されたトランザクションＴｉに関する遅延時間Ｄ［ｉ］を遅延時間テーブル７００に登録して（ステップＳ１３１４）、図１４に示すステップＳ１４０１に移行する。
【０１１６】
図１４のフローチャートにおいて、まず、遅延判定部５０６により、遅延時間テーブル７００を参照して、トランザクションＴｉに関する遅延時間Ｄ［ｉ］が閾値Ｄｔｈより大きいか否かを判定する（ステップＳ１４０１）。ここで、遅延時間Ｄ［ｉ］が閾値Ｄｔｈ以下の場合（ステップＳ１４０１：Ｎｏ）、ステップＳ１４０５に移行する。
【０１１７】
一方、遅延時間Ｄ［ｉ］が閾値Ｄｔｈより大きい場合（ステップＳ１４０１：Ｙｅｓ）、遅延判定部５０６により、遅延時間テーブル７００内の遅延時間情報７００−ｉの判定フラグを「０」から「１」に変更する（ステップＳ１４０２）。そして、計数部５０７により、ステップＳ１３０６において選択された未送信となったパケットＰｉを含むトランザクションＴｉの転送方式Ｔｙ［ｊ］を特定する（ステップＳ１４０３）。
【０１１８】
そして、計数部５０７により、回数テーブル８００内の転送方式Ｔｙ［ｊ］の回数Ｃ［ｊ］をインクリメントする（ステップＳ１４０４）。つぎに、第１の検出部５０２により、ステップＳ１３０６において選択されていない未選択のパケットＰｉがあるか否かを判断する（ステップＳ１４０５）。
【０１１９】
ここで、未選択のパケットＰｉがある場合（ステップＳ１４０５：Ｙｅｓ）、ステップＳ１３０６に戻る。一方、未選択のパケットＰｉがない場合（ステップＳ１４０５：Ｎｏ）、第１の検出部５０２により、パケット情報Ｓｋのｋをインクリメントして（ステップＳ１４０６）、ｋがＫより大きいか否かを判断する（ステップＳ１４０７）。
【０１２０】
ここで、ｋがＫ以下の場合（ステップＳ１４０７：Ｎｏ）、図１３に示したステップＳ１３０３に戻る。一方、ｋがＫより大きい場合（ステップＳ１４０７：Ｙｅｓ）、図１５に示すステップＳ１５０１に移行する。
【０１２１】
図１５のフローチャートにおいて、まず、第３の算出部５０８により、回数テーブル８００を参照して、回数Ｃ［１］〜Ｃ［ｍ］を足し合わせた総回数ＣALLを算出する（ステップＳ１５０１）。つぎに、第３の算出部５０８により、転送方式Ｔｙ［ｊ］のｊを「ｊ＝１」で初期化する（ステップＳ１５０２）。
【０１２２】
そして、第３の算出部５０８により、上記式（４）を用いて、総回数ＣALLに対する転送方式Ｔｙ［ｊ］の回数Ｃ［ｊ］の割合Ｒ［ｊ］を算出する（ステップＳ１５０３）。このあと、割合判定部５０９により、算出された転送方式Ｔｙ［ｊ］の回数Ｃ［ｊ］の割合Ｒ［ｊ］が閾値Ｒｔｈより大きいか否かを判定する（ステップＳ１５０４）。
【０１２３】
ここで、割合Ｒ［ｊ］が閾値Ｒｔｈ以下の場合（ステップＳ１５０４：Ｎｏ）、ステップＳ１５０６に移行する。一方、割合Ｒ［ｊ］が閾値Ｒｔｈより大きい場合（ステップＳ１５０４：Ｙｅｓ）、割合判定部５０９により、転送方式Ｔｙ［ｊ］および割合Ｒ［ｊ］を遅延リスト９００に登録する（ステップＳ１５０５）。
【０１２４】
つぎに、第３の算出部５０８により、転送方式Ｔｙ［ｊ］のｊをインクリメントして（ステップＳ１５０６）、ｊがｍより大きいか否かを判断する（ステップＳ１５０７）。ここで、ｊがｍ以下の場合（ステップＳ１５０７：Ｎｏ）、ステップＳ１５０３に戻る。一方、ｊがｍより大きい場合（ステップＳ１５０７：Ｙｅｓ）、出力部５１０により、遅延リスト９００を出力して（ステップＳ１５０８）、本フローチャートによる一連の処理を終了する。
【０１２５】
以上説明したように、検証支援装置１０１によれば、送信元デバイス１０２から規定順序で周期的に送信されるべき一連のトランザクションＴ１〜ＴｎのうちトランザクションＴｉのパケットＰｉが未送信となった時点ｔｘを検出することができる。また、検証支援装置１０１によれば、パケットＰｉが未送信となった時点ｔｘ以降に最初にパケットＰｉが送信された時点ｔｙを検出することができる。そして、検証支援装置１０１によれば、パケットＰｉが未送信となった時点ｔｘからパケットＰｉが送信された時点ｔｙまでの時間ｄ［ｉ］を算出することができる。これにより、何らかの原因によって送信元デバイス１０２がパケットＰｉを規定順序で送信し損なったことにより発生するパケットＰｉの送信開始までに余分にかかった遅延時間を特定することができる。
【０１２６】
また、検証支援装置１０１によれば、トランザクションＴｉに含まれるパケットＰｉの時間ｄ［ｉ］を累積することにより、トランザクションＴｉに関する遅延時間Ｄ［ｉ］を算出することができる。これにより、トランザクションＴｉに含まれる複数のパケットＰｉのうち未送信となったパケットＰｉの時間ｄ［ｉ］が蓄積されて発生するトランザクションＴｉの送信完了までに余分にかかった遅延時間を特定することができる。
【０１２７】
また、検証支援装置１０１によれば、トランザクションＴｉに関する遅延時間Ｄ［ｉ］が閾値Ｄｔｈより大きいか否かを判定することができる。これにより、遅延時間Ｄ［ｉ］が設計者や顧客が許容できる値（閾値Ｄｔｈ）を超えるトランザクションＴｉを特定することができる。
【０１２８】
また、検証支援装置１０１によれば、トランザクションＴｉを転送する転送方式Ｔｙ［ｊ］ごとに、トランザクションＴｉに関する遅延時間Ｄ［ｉ］が閾値Ｄｔｈより大きいと判定された回数を計数することができる。これにより、転送方式Ｔｙ［ｊ］ごとに、トランザクションＴｉの遅延時間Ｄ［ｉ］が閾値Ｄｔｈを超える回数Ｃ［ｊ］を特定することができる。
【０１２９】
また、検証支援装置１０１によれば、各転送方式Ｔｙ［１］〜Ｔｙ［ｍ］の回数Ｃ［１］〜Ｃ［ｍ］を足し合わせた総回数ＣALLに対する転送方式Ｔｙ［ｊ］の回数Ｃ［ｊ］の割合Ｒ［ｊ］を算出して、割合Ｒ［ｊ］が閾値Ｒｔｈより大きいか否かを判定することができる。これにより、転送方式Ｔｙ［１］〜Ｔｙ［ｍ］のうちトランザクションＴｉの遅延時間Ｄ［ｉ］が閾値Ｄｔｈを超える回数Ｃ［ｊ］が相対的に多い転送方式Ｔｙ［ｊ］を特定することができる。
【０１３０】
これらのことから、本検証支援プログラム、検証支援装置、および検証支援方法によれば、トランザクションＴｉの遅延を引き起こす送信元デバイス１０２の原因を特定する検証作業を支援することができ、送信元デバイス１０２の検証期間の短縮化を図ることができる。
【０１３１】
なお、本実施の形態で説明した検証支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本検証支援プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本検証支援プログラムは、インターネット等のネットワークを介して配布してもよい。
【符号の説明】
【０１３２】
１００  システム
１０１  検証支援装置
１０２  送信元デバイス
１０３  送信先デバイス
５０１  取得部
５０２  第１の検出部
５０３  第２の検出部
５０４  第１の算出部
５０５  第２の算出部
５０６  遅延判定部
５０７  計数部
５０８  第３の算出部
５０９  割合判定部
５１０  出力部
６００  シミュレーション結果
７００  遅延時間テーブル
８００  回数テーブル
９００  遅延リスト
【図１】
0005573431.tif 000003
【図２】
0005573431.tif 000004
【図３】
0005573431.tif 000005
【図４】
0005573431.tif 000006
【図５】
0005573431.tif 000007
【図６】
0005573431.tif 000008
【図７】
0005573431.tif 000009
【図８】
0005573431.tif 000010
【図９】
0005573431.tif 000011
【図１０】
0005573431.tif 000012
【図１１】
0005573431.tif 000013
【図１２】
0005573431.tif 000014
【図１３】
0005573431.tif 000015
【図１４】
0005573431.tif 000016
【図１５】
0005573431.tif 000017