SSブログ

書籍『Test Driven Development for Embedded C』 [プログラマー現役続行]

Test Driven Development for Embedded C

Test Driven Development for Embedded C

  • 作者: James W. Grenning
  • 出版社/メーカー: Pragmatic Bookshelf
  • 発売日: 2011/05/02
  • メディア: ペーパーバック

Beta版の時は、あまり内容を読んでいなかったのですが、最終版の1st printingを通勤電車の中で読んでいます。第1部である「Getting Started」である第6章「Yeah, but ...」までしかまだ読んでいませんが、組み込み向けテスト駆動開発本としてはお勧めです。

第5章「Embedded TDD Strategy」では、組み込みシステムでTDDを採用した利点が説明されています。特に、ハードウェアに依存する組み込みシステムでは、どうしても、(不安定な)ハードウェアが提供されてからデバッグに入ることに対して、TDDによりその問題をどのように解決すべきかが述べられています。

私自身も2003年から2009年まで行ってきた組み込みシステム開発では、ハードウェアが提供される前にソフトウェアをいかにテスト済みとして準備するかというテスト駆動開発を行っていました。数十万行のソフトウェアをハードウェアなしで事前にテスト済みにしておいて、実際のハードウェアが提供されたらその上で動作確認するという開発でした。短い時は3時間で新たなハードウェアで動作したこともありますし、インタフェースが大幅に変更になったハードウェアの場合には、数日で動作させたりということを経験してきました。

第6章「Yeah, but ...」は、TDDに対するよく聞かれる否定的な質問に対する答えが書かれています。実際、私が今良く聞くことが多い否定的な質問がほとんど含まれています(以下は、目次の抜粋です)。
6. Yeah, but... 122
6.1 We Don’t Have Time . . . . . . . . . . . . . . . . . . . 122
6.2 Why Not Write Tests After the Code? . . . . . . . . . 126
6.3 We’ll Have to Maintain the Tests . . . . . . . . . . . 127
6.4 Unit Tests Don’t Find All the Bugs . . . . . . . . . . 127
6.5 We Have a Long Build Time . . . . . . . . . . . . . . 128
6.6 We Have Existing Code . . . . . . . . . . . . . . . . . 128
6.7 We Have Constrained Memory . . . . . . . . . . . . . 129
6.8 We Have to Interact with Hardware . . . . . . . . . . 130
6.9 Why a C++ Test Harness for Testing C? . . . . . . . 131
6.10 Where Are We? . . . . . . . . . . . . . . . . . . . . . . 132
1990年代まではソフトウェアのテストと言えば手作業が主流であり、2000年代はテスト駆動開発が普及しはじめましたが、組み込みシステムまではそれほど普及していないかと思います。2010年代は、ハードウェアに依存する組み込みシステムであってもどれだけテスト駆動開発でソフトウェアの品質を高め、短期間にバグの少ないソフトウェアを開発するかが、ソフトウェア開発組織の開発力の差として現れてくるかと思います。
nice!(0)  コメント(1)  トラックバック(0) 

nice! 0

コメント 1

k

某子会社@名古屋のものです。いつもブログを拝見しております。

ここ数年、組み込みでTDDやってます。
Unit Test はほぼ問題ないのですが、Integration Test が悩みです。
参考になればと思い、注文してみました。

ご一緒に仕事をする機会などなさそうなのが残念です。
by k (2011-04-28 22:29) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0