スタブ

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』

スタブstub)とは、コンピュータプログラムモジュールテストするさい、そのモジュールが下位かいモジュールのわりにもちいるだい用品ようひんのこと[1]下位かいモジュールが完成かんせいでもわりにスタブをもちいることでテストが可能かのうになる。ぎゃく上位じょういモジュールのわりにもちいるだい用品ようひんドライバソフトウェア場合ばあい)またはコントローラハードウェア場合ばあい)とぶ。ただし、かりのモジュールではなく正規せいきのモジュールについてもドライバまたはコントローラとばれることがあるので、区別くべつするために「テストドライバ」や「サンプルドライバ」などとぶこともおおい。

なお、stubの原義げんぎ使つかのこし、はんけんかぶといった意味いみである[2]

概要がいよう[編集へんしゅう]

がわ上位じょうい)のモジュールを検査けんさする場合ばあいに、されるがわ下位かい)の部品ぶひんモジュールが未完成みかんせいであることがある。このとき、されるがわ部品ぶひんモジュールの代用だいようとするかりのモジュールを、「スタブ」とぶ。スタブモジュールは設計せっけい仕様しよう定義ていぎされているすべての関数かんすう実装じっそうしてあるが、関数かんすう内部ないぶ正規せいき動作どうさをせず、定数ていすうかえすだけというつくりになっていることがおおい。下位かいモジュールの関数かんすうもどによって、上位じょういモジュールの動作どうさ分岐ぶんきする場合ばあいは、その分岐ぶんきパターンをたすための最低限さいていげんのいくつかの定数ていすうかえす、複数ふくすうのスタブをつく場合ばあいもある。あるいは(その関数かんすう引数ひきすうをとる場合ばあいは)あたえられる引数ひきすうによって(正規せいき処理しょりとは関係かんけいない、最低限さいていげん分岐ぶんき処理しょりだけを実装じっそうし)、それらのかえすスタブをつくることもある。

たとえば複数ふくすうじんプログラミングをするときなどでは、はじめはモジュールごとにプログラムを作成さくせいし、あとかくモジュールを結合けつごう(リンク)して、全体ぜんたいとしてうまく動作どうさするかどうかをテストする。この結合けつごうテストのぜん段階だんかいで、個々ここのモジュールは、あらかじめ正当せいとうせい検査けんさしておくことがのぞましい。その場合ばあい部品ぶひんモジュールがまだ完成かんせいしていないときには、スタブがもちいられる。スタブは、単純たんじゅんなにもしないようなものであってもよく、テストしたい部分ぶぶんとリンクして動作どうささせるのに十分じゅうぶんであればよい。

また、このようなスタブは、モジュールの仕様しよう設計せっけい段階だんかいつくられることがほとんどである。とりあえず設計せっけい段階だんかい中身なかみのないスタブモジュールをくことによって、モジュールあいだ結合けつごう設計せっけい問題もんだいがないかを具体ぐたいてきたしかめながら仕様しよう設計せっけいができるからである。また、スタブモジュールのみを作成さくせいすることもまずありえない。スタブモジュール作成さくせいによって工数こうすう消費しょうひすることはデメリット以外いがいなんぶつでもないからである。

一般いっぱんにテストする対象たいしょう上位じょうい階層かいそうのモジュールであって下位かい部品ぶひん完成かんせい場合ばあい、その代用だいようとなるかり下位かい階層かいそうモジュールを、「スタブ」とぶ。

いずれの場合ばあいも、全体ぜんたいのプログラムテストを飛躍ひやくてき効率こうりつよくする役割やくわりたす。

みシステム[編集へんしゅう]

みシステムのソフトウェアを開発かいはつするさいには、コンパイラなどの開発かいはつツールをうごかすコンピュータ(ホストコンピュータ)と、開発かいはつ対象たいしょうとなるコンピュータ(ターゲットコンピュータ)はまったことなるものであることがおおい。このとき、プログラムを実際じっさいうごかしながら動作どうさたしかめるデバッガは、ユーザインタフェース必要ひつようとする本体ほんたい部分ぶぶんをホストコンピュータじょう動作どうささせ、ターゲットコンピュータじょうでは本体ほんたい部分ぶぶんから通信つうしんせんによる指示しじけてCPUメモリ状態じょうたいきするちいさなプログラムをうごかしておくという構成こうせいになることがおおい。この、ターゲットじょうちいさなプログラムを「スタブ」とぶ。

このようなデバッガのスタブは、当然とうぜんのことながらターゲットコンピュータのCPUにつよ依存いぞんしたものになり、しばしばアセンブリ言語げんごもちいて作成さくせいされる。スタブがおこなわなければならないおも内容ないようは、つぎのようになる。

  • ホストコンピュータとの通信つうしん回線かいせん初期しょきする
  • 任意にんいのメモリ内容ないようして通信つうしん回線かいせんおく
  • 任意にんいのメモリ内容ないよう通信つうしん回線かいせんからけたデータでえる
  • CPUの内部ないぶ状態じょうたいレジスタ)をととのえて、実行じっこうコードの任意にんい位置いち制御せいぎょうつ
  • 実行じっこうコードちゅうにソフトウェア命令めいれいみターゲットソフトウェアの実行じっこう一時いちじてき停止ていしさせスタブに制御せいぎょもど
  • 上記じょうきのソフトウェア発生はっせいにCPUの内部ないぶ状態じょうたいって通信つうしん回線かいせんおく

みシステムようソフトウェア開発かいはつにおいては、このスタブをはや段階だんかい安定あんてい動作どうささせることができるかどうかが、その開発かいはつ作業さぎょうがスムーズにすすむかどうかにおおきく影響えいきょうする。なお、スタブ自身じしんデバッグ作業さぎょうには、一般いっぱんにはハードウェアてきにCPUの動作どうさ制御せいぎょするインサーキット・エミュレータもちいる。このインサーキット・エミュレータは比較的ひかくてき高価こうか装置そうちであるため、開発かいはつ人員じんいん全員ぜんいんぶん用意よういすると、開発かいはつコストがたかくなってしまう。このため、スタブを開発かいはつするさいやソフトウェアデバッガではどうしても検出けんしゅつできない事象じしょう確認かくにんするさいなどの要所ようしょにのみインサーキット・エミュレータをもちい、それ以外いがいはスタブを活用かつようして開発かいはつ作業さぎょうすすめることになる。

脚注きゃくちゅう[編集へんしゅう]

  1. ^ bit 編集へんしゅう『bit 単語たんごちょう共立きょうりつ出版しゅっぱん、1990ねん8がつ15にち、111ぺーじISBN 4-320-02526-1 
  2. ^ weblio『stub』 2016ねん9がつ29にち閲覧えつらん

関連かんれん項目こうもく[編集へんしゅう]

外部がいぶリンク[編集へんしゅう]