説明

検証支援プログラム、検証支援装置、および検証支援方法

【課題】デバイスの動作を検証する検証期間の短縮化を図ること。
【解決手段】検証支援装置101は、トランザクションT3のパケットP3が未送信となった時点t1を検出する。このあと、検証支援装置101は、パケットP3が未送信となった時点t1以降に最初にパケットP3が送信された時点t2を検出する。つぎに、検証支援装置101は、パケットP3が未送信となった時点t1からパケットP3が送信された時点t2までの時間d1を算出する。そして、検証支援装置101は、算出された時間d1を、パケットP3がスキップされたことで発生したパケットP3の遅延時間として出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デバイスの検証を支援する検証支援プログラム、検証支援装置、および検証支援方法に関する。
【背景技術】
【0002】
任意の処理における一連のデータ(以下、「トランザクション」という)が送信元デバイスから送信先デバイスへ送信される場合、トランザクションは複数のパケットに分割されて送信される。また、複数のトランザクションがある場合、予め規定された順序で各トランザクションに属するパケットが送信される。トランザクションA,Bを例に挙げると、予め規定された順序とは、例えば、トランザクションAのパケットとトランザクションBのパケットとが1パケットずつ交互に送信される順序である。
【0003】
また、パケット通信に関連する従来技術として、ネットワークの品質を評価するものがある。例えば、従来技術は、パケットヘッダ情報から測定対象となる、送受信端末間での通信の開始から終了までのフローを抽出する。そして、従来技術は、パケットのシーケンス番号を有するヘッダ情報をもとに、受信側装置へのパケット到着の時系列的な情報から、ネットワーク途中でのパケット損失に関する情報を含むネットワークの通信品質を推定する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2005−210515号公報
【特許文献2】特開2001−111608号公報
【特許文献3】特開2008−17407号公報
【特許文献4】特開平6−152648号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上述した従来技術では、予め規定された順序で送信元デバイスから送信されるべきパケットがスキップされることで発生するトランザクションの遅延時間を把握することが難しいという問題があった。このため、トランザクションの遅延を引き起こす送信元デバイスでの原因を特定するのにかかる検証者の作業時間および作業負担が増大し、ひいては、検証期間の長期化を招くという問題があった。
【0006】
本発明は、上述した従来技術による問題点を解消するため、デバイスの動作を検証する検証期間の短縮化を図ることができる検証支援プログラム、検証支援装置、および検証支援方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の一観点によれば、本検証支援プログラム、検証支援装置、および検証支援方法は、検証対象となるデバイスから予め規定された順序で周期的に送信されるべき一連のトランザクションのうちいずれかのトランザクションのデータが未送信となった時点を検出し、検出された前記データが未送信となった時点以降に最初に前記データが送信された時点を検出し、前記データが未送信となった時点から、検出された前記データが送信された時点までの時間を算出し、算出された算出結果を出力する。
【発明の効果】
【0008】
本検証支援プログラム、検証支援装置、および検証支援方法によれば、デバイスの動作を検証する検証期間の短縮化を図ることができるという効果を奏する。
【図面の簡単な説明】
【0009】
【図1】本実施の形態にかかるシステムの一実施例を示す説明図である。
【図2】本実施の形態にかかる検証支援装置の処理手順の一例を示す説明図(その1)である。
【図3】本実施の形態にかかる検証支援装置の処理手順の一例を示す説明図(その2)である。
【図4】本実施の形態にかかる検証支援装置のハードウェア構成の一例を示すブロック図である。
【図5】本実施の形態にかかる検証支援装置の機能的構成を示すブロック図である。
【図6】シミュレーション結果の具体例を示す説明図である。
【図7】遅延時間テーブルの記憶内容の一例を示す説明図である。
【図8】回数テーブルの記憶内容の一例を示す説明図である。
【図9】遅延リストの具体例を示す説明図である。
【図10】リストの具体例を示す説明図である。
【図11】規定順序と異なる順序でパケットが送信された例を示す説明図である。
【図12】リスト内のノードが削除される例を示す説明図である。
【図13】本実施の形態にかかる検証支援装置の検証支援処理手順の一例を示すフローチャート(その1)である。
【図14】本実施の形態にかかる検証支援装置の検証支援処理手順の一例を示すフローチャート(その2)である。
【図15】本実施の形態にかかる検証支援装置の検証支援処理手順の一例を示すフローチャート(その3)である。
【発明を実施するための形態】
【0010】
以下に添付図面を参照して、この発明にかかる検証支援プログラム、検証支援装置、および検証支援方法の好適な実施の形態を詳細に説明する。
【0011】
(システムの一実施例)
図1は、本実施の形態にかかるシステムの一実施例を示す説明図である。図1において、システム100は、検証支援装置101と、送信元デバイス102と、送信先デバイス103と、を含む構成である。システム100において、検証支援装置101、送信元デバイス102および送信先デバイス103は、バス110を介して接続されている。
【0012】
検証支援装置101は、送信元デバイス102の動作の検証を支援するコンピュータである。送信元デバイス102は、検証対象となるデバイスであり、一連のトランザクションT1〜Tnを予め規定された順序(以下、「規定順序」という)で周期的に送信する。送信元デバイス102は、例えば、USB(Universal Serial Bus)ホストコントローラである。送信先デバイス103は、送信元デバイス102から送信される一連のトランザクションT1〜Tnを受信するデバイスである。送信先デバイス103は、例えば、USBデバイスである。
【0013】
送信元デバイス102および送信先デバイス103は、HDL(Hardware Discription Language)などを用いて設計されたモデルでもよく、また、設計データをもとにFPGA(Field Programmable Gate Array)などにより実装されたものでもよい。
【0014】
ここで、各トランザクションT1〜Tnは、複数のデータの集合である。また、各トランザクションT1〜Tnに含まれる各データは、該データの識別子、内容などを含む情報である。本実施の形態では、データの一例として、データ部とヘッダ部を含むパケットを用いて説明する。また、送信元デバイス102としてUSB(Universal Serial Bus)ホストコントローラを用い、送信先デバイス103としてUSBデバイスを用いて説明する。
【0015】
図2,図3は、本実施の形態にかかる検証支援装置の処理手順の一例を示す説明図である。以下、一連のトランザクションT1〜Tnのうち任意のトランザクションを「トランザクションTi」と表記し(i=1,2,…,n)、トランザクションTiに含まれるパケットを「パケットPi」と表記する。
【0016】
ここで、送信元デバイス102のUSBホストコントローラは、フレーム単位で時間を管理して各パケットPiの送信を制御する。各パケットPiのヘッダ部には、トランザクションTiの識別子(以下、「トランザクションID(Identification)」という)、宛先アドレスなどが含まれている。
【0017】
図2,図3中、SOF(Start Of Frame)は、フレームの始まりを示すためにバス110に発行されるパケットである。また、Pi(ここでは、i=1,2,…,5)が付された実線の□は、トランザクションTiのパケットPiを示している。
【0018】
ここでは、送信元デバイス102から送信先デバイス103へ送信される一連のトランザクションT1〜Tnを『トランザクションT1〜T5』とし、規定順序をトランザクションIDが昇順となる順序『T1→T2→…→T5』とする。まず、図2の例について説明する。
【0019】
図2において、送信元デバイス102から送信先デバイス103へSOFが送信されたあと、パケットP1,P2が規定順序で送信されている。規定順序通りであれば、つぎは送信元デバイス102から送信先デバイス103へパケットP3が送信されるところ、パケットP4が送信されている。
【0020】
すなわち、送信元デバイス102での何らかの原因によりパケットP2のつぎに送信されるべきパケットP3がスキップされ(図2中、点線の□)、パケットP3の換わりにパケットP4が送信されている。パケットP3がスキップされる原因としては、例えば、送信元デバイス102の動作の不正確さのほか、通信プロトコルや送信元デバイス102の設計仕様に基づくものがある。
【0021】
パケットP3がスキップされると、つぎにパケットP3を送信するまでの遅延時間が発生する。パケットP3の遅延時間は、送信元デバイス102からトランザクションT3の送信が完了するまでの遅延時間となる。本実施の形態では、送信元デバイス102から規定順序で送信されるべきパケットPiがスキップされる度に、パケットPiがスキップされたあと、最初にパケットPiが送信されるまでの時間を求めて提示する。
【0022】
図2の例では、まず、検証支援装置101は、トランザクションT3のパケットP3が未送信となった時点t1を検出する。具体的には、例えば、検証支援装置101は、スキップされたパケットP3の換わりに送信されたパケットP4の送信時刻を、パケットP3が未送信となった時点t1として検出する。
【0023】
このあと、検証支援装置101は、パケットP3が未送信となった時点t1以降に最初にパケットP3が送信された時点t2を検出する。具体的には、例えば、検証支援装置101は、パケットP3が未送信となった時点t1以降に最初に送信されたパケットP3の送信時刻を時点t2として検出する。
【0024】
つぎに、検証支援装置101は、パケットP3が未送信となった時点t1からパケットP3が送信された時点t2までの時間d1を算出する。時間d1は、パケットP3がスキップされたことで発生したパケットP3の遅延時間である。そして、検証支援装置101は、算出された時間d1をパケットP3の遅延時間として出力する。つぎに、図3の例について説明する。
【0025】
図3において、送信元デバイス102から送信先デバイス103へSOFが送信されたあと、パケットP1,P2が規定順序で送信されている。規定順序通りであれば、つぎは送信元デバイス102から送信先デバイス103へパケットP3が送信されるところ、パケットP5が送信されている。すなわち、パケットP2のつぎに送信されるべきパケットP3がスキップされ、さらに、パケットP4が連続してスキップされている(図3中、点線の□)。
【0026】
この場合、まず、検証支援装置101は、トランザクションT3のパケットP3が未送信となった時点t3を検出する。具体的には、例えば、検証支援装置101は、スキップされたパケットP3の換わりに送信されたパケットP5の送信時刻を、パケットP3が未送信となった時点t3として検出する。
【0027】
このあと、検証支援装置101は、パケットP3が未送信となった時点t3以降に最初にパケットP3が送信された時点t4を検出する。具体的には、例えば、検証支援装置101は、パケットP3が未送信となった時点t3以降に最初に送信されたパケットP3の送信時刻を時点t4として検出する。
【0028】
つぎに、検証支援装置101は、パケットP3が未送信となった時点t3からパケットP3が送信された時点t4までの時間d2を算出する。時間d2は、パケットP3がスキップされたことで発生したパケットP3の遅延時間である。そして、検証支援装置101は、算出された時間d2をパケットP3の待ち時間として出力する。
【0029】
さらに、検証支援装置101は、トランザクションT4のパケットP4が未送信となった時点t3を検出する。この時点t3は、トランザクションT3のパケットP3が未送信となった時点と同一である。すなわち、パケットP3,P4が連続してスキップされた場合、パケットP3,P4が未送信となった時点は同じものとなる。
【0030】
このあと、検証支援装置101は、パケットP4が未送信となった時点t3以降に最初にパケットP4が送信された時点t5を検出する。具体的には、例えば、検証支援装置101は、パケットP4が未送信となった時点t3以降に最初に送信されたパケットP4の送信時刻を時点t5として検出する。
【0031】
つぎに、検証支援装置101は、パケットP4が未送信となった時点t3からパケットP4が送信された時点t5までの時間d3を算出する。時間d3は、パケットP4がスキップされたことで発生したパケットP4の遅延時間である。そして、検証支援装置101は、算出された時間d3をパケットP4の遅延時間として出力する。
【0032】
以上説明した検証支援装置101によれば、規定順序で送信されるべきトランザクションTiのパケットPiがスキップされた場合、パケットPiがスキップされてから最初にパケットPiが送信されるまでの時間を求めることができる。これにより、何らかの原因によって送信元デバイス102がパケットPiを規定順序で送信し損なったことにより発生するパケットPiの送信開始までの遅延時間を特定することができる。
【0033】
また、トランザクションTiに含まれる複数のパケットPiのうち未送信となったパケットPiの遅延時間を足し合わせることで、トランザクションTiの送信完了までの遅延時間を特定することができる。この結果、例えば、検証者は、トランザクションTiの遅延時間が、設計者や顧客が許容できる値以下であるかを検証することができる。
【0034】
(検証支援装置101のハードウェア構成)
図4は、本実施の形態にかかる検証支援装置のハードウェア構成の一例を示すブロック図である。図4において、検証支援装置101は、CPU(Central Processing Unit)401と、ROM(Read‐Only Memory)402と、RAM(Random Access Memory)403と、磁気ディスクドライブ404と、磁気ディスク405と、光ディスクドライブ406と、光ディスク407と、ディスプレイ408と、I/F(Interface)409と、キーボード410と、マウス411と、スキャナ412と、プリンタ413と、を備えている。また、各構成部はバス400によってそれぞれ接続されている。
【0035】
ここで、CPU401は、検証支援装置101の全体の制御を司る。ROM402は、ブートプログラムなどのプログラムを記憶している。RAM403は、CPU401のワークエリアとして使用される。磁気ディスクドライブ404は、CPU401の制御にしたがって磁気ディスク405に対するデータのリード/ライトを制御する。磁気ディスク405は、磁気ディスクドライブ404の制御で書き込まれたデータを記憶する。
【0036】
光ディスクドライブ406は、CPU401の制御にしたがって光ディスク407に対するデータのリード/ライトを制御する。光ディスク407は、光ディスクドライブ406の制御で書き込まれたデータを記憶したり、光ディスク407に記憶されたデータをコンピュータに読み取らせたりする。
【0037】
ディスプレイ408は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ408は、例えば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【0038】
I/F409は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク414に接続され、このネットワーク414を介して他の装置に接続される。そして、I/F409は、ネットワーク414と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F409には、例えばモデムやLANアダプタなどを採用することができる。
【0039】
キーボード410は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス411は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【0040】
スキャナ412は、画像を光学的に読み取り、検証支援装置101内に画像データを取り込む。なお、スキャナ412は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ413は、画像データや文書データを印刷する。プリンタ413には、例えば、レーザプリンタやインクジェットプリンタを採用することができる。
【0041】
(検証支援装置101の機能的構成)
図5は、本実施の形態にかかる検証支援装置の機能的構成を示すブロック図である。図5において、検証支援装置101は、取得部501と、第1の検出部502と、第2の検出部503と、第1の算出部504と、第2の算出部505と、遅延判定部506と、計数部507と、第3の算出部508と、割合判定部509と、出力部510と、を含む構成である。
【0042】
各機能部(取得部501〜出力部510)は、具体的には、例えば、図4に示したROM402、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶されたプログラムをCPU401に実行させることにより、または、I/F409により、その機能を実現する。なお、各機能部(取得部501〜出力部510)の処理結果は、特に指定する場合を除いて、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。
【0043】
取得部501は、送信元デバイス102から送信先デバイス103へ送信されたパケットPiに関する情報を取得する。ここで、パケットPiに関する情報(以下、「パケット情報」という)とは、例えば、パケットPiの送信時刻、パケットPiを含むトランザクションTiのトランザクションIDや転送方式などのパケットPiのヘッダ部に含まれる情報である。
【0044】
トランザクションTiの転送方式としては、例えば、バルク転送、インタラプト転送、コントロール転送、アイソクロナス転送(データフロー転送)などがある。以下の説明では、複数の転送方式を「転送方式Ty[1]〜Ty[m]」と表記し、トランザクションTiの転送方式を「転送方式Ty[j]」と表記する。また、パケットPiの送信時刻は、現実の時刻でもよく、シミュレーションにおける時刻でもよい。
【0045】
具体的には、例えば、取得部501が、送信元デバイス102からパケットPiを受信することで、パケット情報を取得してもよい。また、取得部501が、シミュレータ上で動作する送信元デバイス102のシミュレーション結果をパケット情報として取得してもよい。ここで、シミュレーション結果の具体例について説明する。
【0046】
図6は、シミュレーション結果の具体例を示す説明図である。図6において、シミュレーション結果600は、送信元デバイス102の動作を模擬するシミュレーションの開始から終了までの間に、送信元デバイス102から送信先デバイス103へ送信されたパケットPiのパケット情報Skの集合である。
【0047】
ここで、順番は、シミュレーション中に送信元デバイス102から送信されたパケットPiの送信順序である。パケットIDは、パケットPiの識別子である。トランザクションIDは、トランザクションTiの識別子である。転送方式は、トランザクションTiの転送方式Ty[j]である。送信時刻は、パケットPiの送信時刻である。
【0048】
上記取得部501は、シミュレーションの開始から終了までのシミュレーション結果600を一括して取得してもよい。また、上記取得部501は、シミュレーション中に送信元デバイス102から送信先デバイス103へ送信されたパケットPiのパケット情報Skをリアルタイムで取得してもよい。
【0049】
図5の説明に戻り、第1の検出部502は、送信元デバイス102から規定順序で周期的に送信されるべき一連のトランザクションT1〜TnのうちいずれかのトランザクションTiのパケットPiが未送信となった時点txを検出する。ここで、一連のトランザクションT1〜Tnを送信する規定順序は、例えば、送信元デバイス102の設計者によって任意に設定されている。
【0050】
具体的には、例えば、最初に送信するトランザクションを指定して、それ以外のトランザクションの規定順序を、どのトランザクションのつぎに送信するかによって規定してもよい。また、各トランザクションの規定順序を何番目に送信するかによって規定することにしてもよい。以下の説明では、一連のトランザクションT1〜Tnを送信する規定順序として、トランザクションIDが昇順となる順序(T1→T2→…→Tn)を例に挙げて説明する。
【0051】
具体的には、例えば、まず、第1の検出部502が、送信元デバイス102のシミュレーション結果に基づいて、送信元デバイス102から規定順序と異なる順序で送信されたパケットP[k]を特定する。このあと、第1の検出部502が、送信元デバイス102からパケットP[k]の直前に送信されたパケットP[l]を特定する。
【0052】
つぎに、第1の検出部502が、規定順序がパケットP[l]とパケットP[k]との間のパケットP[l+1],P[l+2],…,P[k−1]を未送信となったパケットPiとして特定する。そして、第1の検出部502が、パケットP[k]の送信時刻を、各パケットPiが未送信となった時点txとして検出する。
【0053】
図2に示した例では、まず、第1の検出部502が、送信元デバイス102から規定順序と異なる順序で送信されたパケットP4を特定する。このあと、第1の検出部502が、送信元デバイス102からパケットP4の直前に送信されたパケットP2を特定する。つぎに、第1の検出部502が、規定順序がパケットP2とパケットP4との間のパケットP3を未送信となったパケットとして特定する。そして、第1の検出部502が、パケットP4の送信時刻をパケットP3が未送信となった時点txとして検出する。
【0054】
図3に示した例では、まず、第1の検出部502が、送信元デバイス102から規定順序と異なる順序で送信されたパケットP5を特定する。このあと、第1の検出部502が、送信元デバイス102からパケットP5の直前に送信されたパケットP2を特定する。つぎに、第1の検出部502が、規定順序がパケットP2とパケットP5との間のパケットP3,P4を未送信となったパケットとして特定する。そして、第1の検出部502が、パケットP5の送信時刻を、各パケットP3,P4が未送信となった時点txとして検出する。
【0055】
なお、送信元デバイス102から規定順序と異なる順序で送信されたパケットP[k]と、未送信となったパケットPiと、を特定するための第1の検出部502の具体的な処理内容の一例については、図10〜図12を用いて説明する。
【0056】
第2の検出部503は、検出されたパケットPiが未送信となった時点tx以降に最初にパケットPiが送信された時点tyを検出する。具体的には、例えば、まず、第2の検出部503が、送信元デバイス102のシミュレーション結果に基づいて、規定順序と異なる順序で送信されたパケットP[k]の送信時刻以降で最初に送信されたパケットPiを特定する。そして、第2の検出部503が、特定されたパケットPiの送信時刻を時点tyとして検出する。
【0057】
第1の算出部504は、パケットPiが未送信となった時点txからパケットPiが送信された時点tyまでの時間d[i]を算出する。ここで、時間d[i]は、何らかの原因によって送信元デバイス102がパケットPiを規定順序で送信し損なったことにより発生するパケットPiの送信開始までに余分にかかった遅延時間である。
【0058】
具体的には、例えば、第1の算出部504が、規定順序と異なる順序で送信されたパケットP[k]の送信時刻と、パケットP[k]の送信時刻以降で最初に送信されたパケットPiの送信時刻との時間差を時間d[i]として算出する。より具体的には、例えば、下記式(1)を用いて、時間d[i]を算出することができる。
【0059】
d[i]=ty−tx ・・・(1)
【0060】
第2の算出部505は、トランザクションTiごとに、算出されたパケットPiの時間d[i]を累積することにより、トランザクションTiに関する遅延時間D[i]を算出する。ここで、遅延時間D[i]は、トランザクションTiに含まれる複数のパケットPiのうち未送信となったパケットPiの時間d[i]が蓄積されて発生するトランザクションTiの送信完了までに余分にかかった遅延時間である。
【0061】
具体的には、例えば、第2の算出部505が、パケットPiの時間d[i]が算出されると、その都度、下記式(2)を用いて、トランザクションTiに関する遅延時間D[i]を算出する。ただし、D[i]は、トランザクションTiに関する遅延時間である。d[i]は、未送信となったパケットPiの送信開始までに余分にかかった遅延時間である。
【0062】
D[i]=D[i]+d[i] ・・・(2)
【0063】
算出されたトランザクションTiに関する遅延時間D[i]は、例えば、図7に示す遅延時間テーブル700に記憶される。ここで、遅延時間テーブル700の記憶内容について説明する。遅延時間テーブル700は、例えば、RAM403、磁気ディスク405、光ディスク407などの記憶装置により実現される。
【0064】
図7は、遅延時間テーブルの記憶内容の一例を示す説明図である。図7において、遅延時間テーブル700は、トランザクションID、遅延時間および判定フラグのフィールドを有する。各フィールドに情報を設定することで、各トランザクションT1〜Tnに関する遅延時間情報700−1〜700−nがレコードとして記憶されている。
【0065】
ここで、トランザクションIDは、トランザクションTiの識別子である。遅延時間は、トランザクションTiに関する遅延時間D[i]である。遅延時間D[i]の初期値は「0」である。判定フラグは、後述する遅延判定部506によって判定された判定結果に応じて変更されるフラグである。判定フラグは、初期状態では「0」である。なお、判定フラグについての詳細な説明は後述する。
【0066】
遅延時間テーブル700の記憶内容は、上記第2の算出部505によってトランザクションTiに関する遅延時間D[i]が算出されると、その都度更新される。例えば、トランザクションT1に関する遅延時間D[1]が算出されると、遅延時間テーブル700内の遅延時間情報700−1の遅延時間が更新される。
【0067】
図5の説明に戻り、遅延判定部506は、算出されたトランザクションTiに関する遅延時間D[i]が所定の閾値Dthより大きいか否かを判定する。具体的には、例えば、遅延判定部506が、図7に示した遅延時間テーブル700を参照して、トランザクションTiに関する遅延時間D[i]が閾値Dthより大きいか否かを判定する。
【0068】
ここで、閾値Dthは、例えば、トランザクションTiに関する遅延時間D[i]として設計者や顧客が許容できる値以下に設定される。より具体的には、例えば、遅延時間D[i]をα以下に抑えたい場合、閾値Dthはαに設定される。閾値Dthは、例えば、予め設定されて図4に示したROM402、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶されている。
【0069】
トランザクションTiに関する遅延時間D[i]が閾値Dthより大きいと判定された場合、遅延時間テーブル700内の遅延時間情報700−iの判定フラグが「0」から「1」に変更される。遅延時間テーブル700内の判定フラグを参照することで、遅延時間D[i]が閾値Dthを超えたトランザクションTiを特定することができる。
【0070】
計数部507は、トランザクションTiを転送する転送方式Ty[j]ごとに、トランザクションTiに関する遅延時間D[i]が閾値Dthより大きいと判定された回数C[j]を計数する。具体的には、例えば、まず、計数部507が、未送信となったパケットPiに関するパケット情報Skを参照して、トランザクションTiの転送方式Ty[j]を特定する。そして、計数部507が、図8に示す回数テーブル800内の転送方式Ty[j]の回数C[j]をインクリメントすることで、回数C[j]を計数する。
【0071】
第3の算出部508は、総回数CALLに対する転送方式Ty[j]の回数C[j]の割合R[j]を算出する。ここで、総回数CALLは、計数された各転送方式Ty[1]〜Ty[m]の回数C[1]〜C[m]を足し合わせた回数である。具体的には、例えば、まず、第3の算出部508が、下記式(3)を用いて、回数C[1]〜C[m]を足し合わせた総回数CALLを算出する。なお、回数C[1]〜C[m]は、例えば、図8に示す回数テーブル800を参照することで特定することができる。
【0072】
【数1】

【0073】
そして、第3の算出部508が、下記式(4)を用いて、総回数CALLに対する各転送方式Ty[j]の回数C[j]の割合R[j]を算出する。ただし、R[j]は、総回数CALLに対する転送方式Ty[j]の回数C[j]の割合(単位:%)である。
【0074】
R[j]=100×C[j]/CALL ・・・(4)
【0075】
算出された転送方式Ty[j]の割合R[j]は、例えば、図8に示す回数テーブル800に記憶される。ここで、回数テーブル800の記憶内容について説明する。回数テーブル800は、例えば、RAM403、磁気ディスク405、光ディスク407などの記憶装置により実現される。
【0076】
図8は、回数テーブルの記憶内容の一例を示す説明図である。図8において、回数テーブル800は、転送方式および回数のフィールドを有する。各フィールドに情報を設定することで、各転送方式Ty[1]〜Ty[m]の回数情報800−1〜800−mがレコードとして記憶されている。
【0077】
ここで、転送方式は、トランザクションTiの転送方式Ty[j]である。回数は、トランザクションTiに関する遅延時間D[i]が閾値Dthより大きいと判定された回数C[j]である。各回数C[j]の初期値は「0」である。割合は、総回数CALLに対する回数C[j]の割合R[j]である。
【0078】
図5の説明に戻り、割合判定部509は、算出された転送方式Ty[j]の回数C[j]の割合R[j]が所定の閾値Rthより大きいか否かを判定する。閾値Rthとしては、例えば、30,40,50などの数値が設定される。閾値Rthは、例えば、予め設定されて図4に示したROM402、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶されている。
【0079】
また、割合R[j]が閾値Rthより大きいと判定された転送方式Ty[j]は、例えば、図9に示す遅延リスト900に登録される。ここで、遅延リスト900の具体例について説明する。ただし、上記閾値Rthが『Rth=30』の場合を例に挙げて説明する。
【0080】
図9は、遅延リストの具体例を示す説明図である。図9においては、遅延リスト900は、割合R[j]が閾値Rthより大きいと判定された転送方式Ty[j]を示す情報である。具体的には、遅延リスト900には、割合R[j]が閾値Rthより大きい転送方式Ty[1]と転送方式Ty[3]が示されている。転送方式Ty[1]の割合R[1]は33%であり、転送方式Ty[3]の割合R[3]は41%である。
【0081】
図5の説明に戻り、出力部510は、割合判定部509によって判定された判定結果を出力する。具体的には、例えば、出力部510が、図9に示した遅延リスト900を出力することにしてもよい。これにより、転送方式Ty[1]〜Ty[m]のうちトランザクションTiの遅延時間D[i]が閾値Dthを超える回数C[j]が相対的に多い転送方式Ty[j]を特定することができる。
【0082】
なお、出力部510の出力形式としては、例えば、ディスプレイ408への表示、プリンタ413への印刷出力、I/F409による外部装置への送信がある。また、RAM403、磁気ディスク405、光ディスク407などの記憶領域に記憶することとしてもよい。
【0083】
また、出力部510は、上記第1の算出部504によって算出されたパケットPiの時間d[i]を出力することにしてもよい。これにより、何らかの原因によって送信元デバイス102がパケットPiを規定順序で送信し損なったことにより発生するパケットPiの送信開始までに余分にかかった遅延時間を特定することができる。
【0084】
また、出力部510は、上記第2の算出部505によって算出されたトランザクションTiに関する遅延時間D[i]を出力することにしてもよい。これにより、トランザクションTiに含まれる複数のパケットPiのうち未送信となったパケットPiの時間d[i]が蓄積されて発生するトランザクションTiの送信完了までに余分にかかった遅延時間を特定することができる。
【0085】
また、出力部510は、上記遅延判定部506によって判定された判定結果を出力することにしてもよい。これにより、遅延時間D[i]が設計者や顧客が許容できる値(閾値Dth)を超えるトランザクションTiを特定することができる。
【0086】
また、出力部510は、上記計数部507によって計数された転送方式Ty[j]ごとの回数C[j]を出力することにしてもよい。これにより、転送方式Ty[j]ごとに、トランザクションTiの遅延時間D[i]が閾値Dthを超える回数C[j]を特定することができる。
【0087】
(第1の検出部502の具体的な処理内容)
つぎに、送信元デバイス102から規定順序と異なる順序で送信されたパケットP[k]と、未送信となったパケットPiを特定するための第1の検出部502の具体的な処理内容の一例について説明する。
【0088】
ここでは、図10に示すリスト構造のリスト1000を用いて、規定順序と異なる順序で送信されたパケットP[k]と未送信となったパケットPiと、を特定する場合について説明する。ただし、送信元デバイス102から送信先デバイス103に送信される一連のトランザクションT1〜Tnを「トランザクションT1〜T3」とする。
【0089】
図10は、リストの具体例を示す説明図である。図10において、リスト1000は、トランザクションT1〜T3のパケットP1〜P3の規定順序を示す情報である。リスト1000には、各トランザクションT1〜T3を表すノードN1〜N3が含まれている。各ノードは、フィールド1001およびフィールド1002を有する。
【0090】
フィールド1001には、次ノードのノードIDが保持されている。次ノードとは、各ノードが表すトランザクションのつぎに送信されるトランザクションを表すノードである。ノードIDとは、各ノードの識別子である。ここでは、ノードN1のフィールド1001には、ノードN2のノードID『N2』が保持されている。ノードN2のフィールド1001には、ノードN3のノードID『N3』が保持されている。ノードN3のフィールド1001には、ノードN1のノードID『N1』が保持されている。すなわち、一連のトランザクションT1〜T3が『T1→T2→T3』の順に送信されることを示している。
【0091】
フィールド1002には、各ノードに対応するトランザクションのトランザクションIDが保持されている。ここでは、ノードN1のフィールド1002には、トランザクションT1のトランザクションID『T1』が保持されている。ノードN2のフィールド1002には、トランザクションT2のトランザクションID『T2』が保持されている。ノードN3のフィールド1002には、トランザクションT3のトランザクションID『T3』が保持されている。
【0092】
第1の検出部502は、送信元デバイス102から送信先デバイス103へ送信されたパケット群の中からパケットPiが選択されると、現ノードのフィールド1001に保持されている次ノードを特定する。なお、パケットPiは、送信元デバイス102から送信先デバイス103へ送信された送信順に選択される。
【0093】
現ノードは、リスト1000内で基準となるノードであり、初期状態では最後尾のノードN3に設定されている。そして、第1の検出部502は、次ノードのフィールド1002に保持されているトランザクションIDと、選択されたパケットPiのトランザクションIDとが一致するか否かを判断する。
【0094】
ここで、トランザクションIDが一致する場合、第1の検出部502は、リスト1000内の現ノードを次ノードに設定する。一方、トランザクションIDが不一致の場合、第1の検出部502は、取得したパケットPiを規定順序と異なる順序で送信されたパケットP[k]として検出する。
【0095】
図11は、規定順序と異なる順序でパケットが送信された例を示す説明図である。図中、実線の□の上に付されている番号は、1フレームのうち何番目に送信されたパケットであるかを示している。図11において、規定順序でパケットP1〜P3が送信されたあと、4番目にパケットP2が送信されている。また、リスト1000内の現ノードは、ノードN3に設定されている。
【0096】
この場合、第1の検出部502は、パケットP2が選択されると、現ノードN3のフィールド1001に保持されている次ノードN1を特定する。そして、第1の検出部502は、次ノードN1のフィールド1002に保持されているトランザクションID『T1』と、選択されたパケットP2のトランザクションID『T2』とが一致するか否かを判断する。
【0097】
ここでは、トランザクションIDが不一致のため、第1の検出部502は、パケットP2を規定順序と異なる順序で送信されたパケットP[k]として検出する。そして、第1の検出部502は、次ノードN1のフィールド1002に保持されているトランザクションIDのトランザクションT1のパケットP1を未送信となったパケットPiとして特定する。
【0098】
つぎに、第1の検出部502は、リスト1000内の現ノードを、現ノードN3の次ノードN1に設定する。さらに、第1の検出部502は、現ノードN1のフィールド1001に保持されている次ノードN2を特定する。そして、第1の検出部502は、次ノードN2のフィールド1002に保持されているトランザクションID『T2』と、選択されたパケットP2のトランザクションID『T2』とが一致するか否かを判断する。
【0099】
ここでは、トランザクションIDが一致するため、第1の検出部502は、リスト1000内の現ノードを、現ノードN1の次ノードN2に設定する。なお、ここでもトランザクションIDが不一致の場合は、トランザクションIDが一致するまで処理を繰り返す。これにより、複数のパケットが連続して未送信となる場合に、未送信となった複数のパケットPiを特定することができる。
【0100】
以上説明した処理により、送信元デバイス102から規定順序と異なる順序で送信されたパケットP[k]と、未送信となったパケットPiとを特定することができる。つぎに、送信元デバイス102から送信されたパケットPiがトランザクションTiの最後のパケットの場合について説明する。
【0101】
一連のトランザクションT1〜Tnの送信処理は同一周期で終了するとは限らないため、すべてのパケットPiの送信が終了したトランザクションTiを表すノードNiをリストから削除する。ここでは、すべてのパケットP3の送信が終了したためトランザクションT3を表すノードN3を削除する場合を例に挙げて説明する。
【0102】
図12は、リスト内のノードが削除される例を示す説明図である。ここでは、1フレームのうちM番目に送信されたパケットP3をトランザクションT3の最後のパケットとする。なお、各パケットPiにはトランザクションTiの最後のパケットであるか否かに関するフラグが付されている。また、現ノードはノードN2である。
【0103】
第1の検出部502は、M番目に送信されたパケットP3が規定順序通りに送信されたパケットであるか否かを判断したあと、さらに、パケットP3がトランザクションT3の最後のパケットであるか否かを判断する。具体的には、例えば、第1の検出部502は、パケットP3のフラグを参照して、該パケットP3がトランザクションT3の最後のパケットであると判断する。
【0104】
そして、第1の検出部502は、現ノードN2のフィールド1001に、次ノードN3のフィールド1001に保持されているノードID『N1』を設定して、ノードN3を削除する。この場合、現ノードの設定変更は行われない。これにより、トランザクションTiに含まれるすべてのパケットPiの送信終了に合わせて、リスト(例えば、リスト1000)内の構造を修正することができる。
【0105】
(検証支援装置101の検証支援処理手順)
つぎに、検証支援装置101の検証支援処理手順について説明する。ここでは、検証支援装置101が、図6に示したシミュレーション結果600を用いて検証支援処理を実行する場合を例に挙げて説明する。
【0106】
図13〜図15は、本実施の形態にかかる検証支援装置の検証支援処理手順の一例を示すフローチャートである。図13のフローチャートにおいて、まず、取得部501により、送信元デバイス102の動作を模擬したシミュレーション結果600を取得したか否かを判断する(ステップS1301)。
【0107】
ここで、シミュレーション結果600を取得するのを待って(ステップS1301:No)、取得した場合(ステップS1301:Yes)、第1の検出部502により、パケット情報Skのkを「k=1」で初期化する(ステップS1302)。そして、第1の検出部502により、シミュレーション結果600の中からパケット情報Skを選択する(ステップS1303)。
【0108】
つぎに、第1の検出部502により、選択されたパケット情報Skから特定されるパケットPiが規定順序と異なる順序で送信されたパケットP[k]であるか否かを判断する(ステップS1304)。ここで、パケットPiが規定順序と異なる順序で送信されたパケットP[k]ではない場合(ステップS1304:No)、図14に示すステップS1406に移行する。
【0109】
一方、パケットPiが規定順序と異なる順序で送信されたパケットP[k]の場合(ステップS1304:Yes)、第1の検出部502により、シミュレーション結果600に基づいて、未送信となったパケットPiを特定する(ステップS1305)。つぎに、第1の検出部502により、特定された未送信となったパケットPiの中から任意のパケットPiを選択する(ステップS1306)。このステップS1306の処理は、未送信となったパケットPiが複数特定された場合を考慮して行われる。
【0110】
そして、第1の検出部502により、パケットP[k]の送信時刻を、選択されたパケットPiが未送信となった時点txとして検出する(ステップS1307)。つぎに、第2の検出部503により、未送信となったパケットPiを含むトランザクションTiを特定する(ステップS1308)。
【0111】
そして、第2の検出部503により、遅延時間テーブル700を参照して、特定されたトランザクションTiの判定フラグが「1」となっているか否かを判断する(ステップS1309)。ここで、判定フラグが「1」の場合(ステップS1309:Yes)、図14に示すステップS1405に移行する。
【0112】
一方、判定フラグが「0」の場合(ステップS1309:No)、第2の検出部503により、シミュレーション結果600を参照して、パケットPiが未送信となった時点tx以降で最初に送信されたパケットPiを特定する(ステップS1310)。
【0113】
そして、第2の検出部503により、特定されたパケットPiの送信時刻を、パケットPiが送信された時点tyとして検出する(ステップS1311)。このあと、第1の算出部504により、パケットPiが未送信となった時点txからパケットPiが送信された時点tyまでの時間d[i]を算出する(ステップS1312)。
【0114】
つぎに、第2の算出部505により、算出されたパケットPiの時間d[i]を上記式(2)に代入することにより、トランザクションTiに関する遅延時間D[i]を算出する(ステップS1313)。なお、上記式(2)の右辺のD[i]は遅延時間テーブル700から特定される。
【0115】
そして、第2の算出部505により、算出されたトランザクションTiに関する遅延時間D[i]を遅延時間テーブル700に登録して(ステップS1314)、図14に示すステップS1401に移行する。
【0116】
図14のフローチャートにおいて、まず、遅延判定部506により、遅延時間テーブル700を参照して、トランザクションTiに関する遅延時間D[i]が閾値Dthより大きいか否かを判定する(ステップS1401)。ここで、遅延時間D[i]が閾値Dth以下の場合(ステップS1401:No)、ステップS1405に移行する。
【0117】
一方、遅延時間D[i]が閾値Dthより大きい場合(ステップS1401:Yes)、遅延判定部506により、遅延時間テーブル700内の遅延時間情報700−iの判定フラグを「0」から「1」に変更する(ステップS1402)。そして、計数部507により、ステップS1306において選択された未送信となったパケットPiを含むトランザクションTiの転送方式Ty[j]を特定する(ステップS1403)。
【0118】
そして、計数部507により、回数テーブル800内の転送方式Ty[j]の回数C[j]をインクリメントする(ステップS1404)。つぎに、第1の検出部502により、ステップS1306において選択されていない未選択のパケットPiがあるか否かを判断する(ステップS1405)。
【0119】
ここで、未選択のパケットPiがある場合(ステップS1405:Yes)、ステップS1306に戻る。一方、未選択のパケットPiがない場合(ステップS1405:No)、第1の検出部502により、パケット情報Skのkをインクリメントして(ステップS1406)、kがKより大きいか否かを判断する(ステップS1407)。
【0120】
ここで、kがK以下の場合(ステップS1407:No)、図13に示したステップS1303に戻る。一方、kがKより大きい場合(ステップS1407:Yes)、図15に示すステップS1501に移行する。
【0121】
図15のフローチャートにおいて、まず、第3の算出部508により、回数テーブル800を参照して、回数C[1]〜C[m]を足し合わせた総回数CALLを算出する(ステップS1501)。つぎに、第3の算出部508により、転送方式Ty[j]のjを「j=1」で初期化する(ステップS1502)。
【0122】
そして、第3の算出部508により、上記式(4)を用いて、総回数CALLに対する転送方式Ty[j]の回数C[j]の割合R[j]を算出する(ステップS1503)。このあと、割合判定部509により、算出された転送方式Ty[j]の回数C[j]の割合R[j]が閾値Rthより大きいか否かを判定する(ステップS1504)。
【0123】
ここで、割合R[j]が閾値Rth以下の場合(ステップS1504:No)、ステップS1506に移行する。一方、割合R[j]が閾値Rthより大きい場合(ステップS1504:Yes)、割合判定部509により、転送方式Ty[j]および割合R[j]を遅延リスト900に登録する(ステップS1505)。
【0124】
つぎに、第3の算出部508により、転送方式Ty[j]のjをインクリメントして(ステップS1506)、jがmより大きいか否かを判断する(ステップS1507)。ここで、jがm以下の場合(ステップS1507:No)、ステップS1503に戻る。一方、jがmより大きい場合(ステップS1507:Yes)、出力部510により、遅延リスト900を出力して(ステップS1508)、本フローチャートによる一連の処理を終了する。
【0125】
以上説明したように、検証支援装置101によれば、送信元デバイス102から規定順序で周期的に送信されるべき一連のトランザクションT1〜TnのうちトランザクションTiのパケットPiが未送信となった時点txを検出することができる。また、検証支援装置101によれば、パケットPiが未送信となった時点tx以降に最初にパケットPiが送信された時点tyを検出することができる。そして、検証支援装置101によれば、パケットPiが未送信となった時点txからパケットPiが送信された時点tyまでの時間d[i]を算出することができる。これにより、何らかの原因によって送信元デバイス102がパケットPiを規定順序で送信し損なったことにより発生するパケットPiの送信開始までに余分にかかった遅延時間を特定することができる。
【0126】
また、検証支援装置101によれば、トランザクションTiに含まれるパケットPiの時間d[i]を累積することにより、トランザクションTiに関する遅延時間D[i]を算出することができる。これにより、トランザクションTiに含まれる複数のパケットPiのうち未送信となったパケットPiの時間d[i]が蓄積されて発生するトランザクションTiの送信完了までに余分にかかった遅延時間を特定することができる。
【0127】
また、検証支援装置101によれば、トランザクションTiに関する遅延時間D[i]が閾値Dthより大きいか否かを判定することができる。これにより、遅延時間D[i]が設計者や顧客が許容できる値(閾値Dth)を超えるトランザクションTiを特定することができる。
【0128】
また、検証支援装置101によれば、トランザクションTiを転送する転送方式Ty[j]ごとに、トランザクションTiに関する遅延時間D[i]が閾値Dthより大きいと判定された回数を計数することができる。これにより、転送方式Ty[j]ごとに、トランザクションTiの遅延時間D[i]が閾値Dthを超える回数C[j]を特定することができる。
【0129】
また、検証支援装置101によれば、各転送方式Ty[1]〜Ty[m]の回数C[1]〜C[m]を足し合わせた総回数CALLに対する転送方式Ty[j]の回数C[j]の割合R[j]を算出して、割合R[j]が閾値Rthより大きいか否かを判定することができる。これにより、転送方式Ty[1]〜Ty[m]のうちトランザクションTiの遅延時間D[i]が閾値Dthを超える回数C[j]が相対的に多い転送方式Ty[j]を特定することができる。
【0130】
これらのことから、本検証支援プログラム、検証支援装置、および検証支援方法によれば、トランザクションTiの遅延を引き起こす送信元デバイス102の原因を特定する検証作業を支援することができ、送信元デバイス102の検証期間の短縮化を図ることができる。
【0131】
なお、本実施の形態で説明した検証支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本検証支援プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本検証支援プログラムは、インターネット等のネットワークを介して配布してもよい。
【符号の説明】
【0132】
100 システム
101 検証支援装置
102 送信元デバイス
103 送信先デバイス
501 取得部
502 第1の検出部
503 第2の検出部
504 第1の算出部
505 第2の算出部
506 遅延判定部
507 計数部
508 第3の算出部
509 割合判定部
510 出力部
600 シミュレーション結果
700 遅延時間テーブル
800 回数テーブル
900 遅延リスト

【特許請求の範囲】
【請求項1】
検証対象となるデバイスから予め規定された順序で周期的に送信されるべき一連のトランザクションのうちいずれかのトランザクションのデータが未送信となった時点を検出する第1の検出工程と、
前記第1の検出工程によって検出された前記データが未送信となった時点以降に最初に前記データが送信された時点を検出する第2の検出工程と、
前記データが未送信となった時点から前記第2の検出工程によって検出された前記データが送信された時点までの時間を算出する算出工程と、
前記算出工程によって算出された算出結果を出力する出力工程と、
をコンピュータに実行させることを特徴とする検証支援プログラム。
【請求項2】
前記トランザクションごとに、前記算出工程(以下、「第1の算出工程」という)によって算出された時間を累積することにより、前記トランザクションに関する遅延時間を算出する第2の算出工程を前記コンピュータに実行させ、
前記出力工程は、前記第2の算出工程によって算出された算出結果を出力することを特徴とする請求項1に記載の検証支援プログラム。
【請求項3】
前記第2の算出工程によって算出された前記トランザクションに関する遅延時間が所定の閾値より大きいか否かを判定する遅延判定工程を前記コンピュータに実行させ、
前記出力工程は、前記遅延判定工程によって判定された判定結果を出力することを特徴とする請求項2に記載の検証支援プログラム。
【請求項4】
前記トランザクションを転送する転送方式ごとに、前記遅延判定工程によって前記トランザクションに関する遅延時間が前記閾値より大きいと判定された回数を計数する計数工程を前記コンピュータに実行させ、
前記出力工程は、前記計数工程によって計数された前記転送方式ごとの回数を出力することを特徴とする請求項3に記載の検証支援プログラム。
【請求項5】
前記計数工程によって計数された前記各転送方式の回数を足し合わせた総回数に対する前記各転送方式の回数の割合を算出する第3の算出工程と、
前記第3の算出工程によって算出された前記各転送方式の回数の割合が所定の閾値より大きいか否かを判定する割合判定工程と、を前記コンピュータに実行させ、
前記出力工程は、前記割合判定工程によって判定された判定結果を出力することを特徴とする請求項4に記載の検証支援プログラム。
【請求項6】
検証対象となるデバイスから予め規定された順序で周期的に送信されるべき一連のトランザクションのうちいずれかのトランザクションのデータが未送信となった時点を検出する第1の検出手段と、
前記第1の検出手段によって検出された前記データが未送信となった時点以降に最初に前記データが送信された時点を検出する第2の検出手段と、
前記データが未送信となった時点から前記第2の検出手段によって検出された前記データが送信された時点までの時間を算出する算出手段と、
前記算出手段によって算出された算出結果を出力する出力手段と、
を備えることを特徴とする検証支援装置。
【請求項7】
検証対象となるデバイスから予め規定された順序で周期的に送信されるべき一連のトランザクションのうちいずれかのトランザクションのデータが未送信となった時点を検出する第1の検出工程と、
前記第1の検出工程によって検出された前記データが未送信となった時点以降に最初に前記データが送信された時点を検出する第2の検出工程と、
前記データが未送信となった時点から前記第2の検出工程によって検出された前記データが送信された時点までの時間を算出する算出工程と、
前記算出工程によって算出された算出結果を出力する出力工程と、
をコンピュータが実行することを特徴とする検証支援方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2012−15905(P2012−15905A)
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願番号】特願2010−152258(P2010−152258)
【出願日】平成22年7月2日(2010.7.2)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】