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年代は、ハードウェアに依存する組み込みシステムであってもどれだけテスト駆動開発でソフトウェアの品質を高め、短期間にバグの少ないソフトウェアを開発するかが、ソフトウェア開発組織の開発力の差として現れてくるかと思います。

「プログラミング作法」教育 [プログラマー現役続行]

The Practice of Programming (Addison-Wesley Professional Computing Series)

The Practice of Programming (Addison-Wesley Professional Computing Series)

  • 作者: Brian W. Kernighan/Rob Pike
  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 1999/02/04
  • メディア: ペーパーバック

1999年に若手技術者に基本的なことを学んでもらうために、当時はこの英語版を利用して第1章「Style」と第2章「Algorithms and Data Structures」の早朝勉強会を海老名プライムタワー(海老名市)、KSP(川崎市)、岩槻(さいたま市)の3拠点で私が出向いて開催しました。その時に作成したのが「勉強会ノート」です。

勉強会ノート: http://www001.upp.so-net.ne.jp/yshibata/TPOP.pdf

その後、日本語版が出版されました。

プログラミング作法

プログラミング作法

  • 作者: ブライアン カーニハン
  • 出版社/メーカー: アスキー
  • 発売日: 2000/11
  • メディア: 単行本

日本語版を使用して始めた社内教育が「プログラミング作法」教育です。当初は、以下の3部から構成される1日の教育コースでした。
  • 「ソフトウェアエンジニアの心得」
  • コードレビューの重要性とコードレビュー・ガイドの説明
  • 『プログラミング作法』の第1章「スタイル」の教育
4社※1でソフトウェア系技術者の新卒新人向け教育として行っていましたので、受講生の多くがすでに30代前後です。書籍『プログラミング作法』には多くの有益なことが書かれていますので、この教育では受講生に書籍が配布されていました。

「ソフトウェアエンジニアの心得」は、私が雑誌の記事に書いたものが付け加えられる形で内容が年々膨らんでいき、現在の「ソフトウェアエンジニアの心得」教育や講演の内容となっています。

転職後※2は、一日コースではなく、「ソフトウェアエンジニアの心得」と「プログラミング作法(スタイル)」に分離して、別々の社内教育コースとして行っています。「ソフトウェアエンジニアの心得」は、技術系新人の集合教育にお願いして入れてもらい話をしています。今年は子会社※3の集合教育にも入れてもらい、話をました。

書籍『プログラミング作法』の第1章「スタイル」は、私でなくてもできる教育なので、本当は若手エンジニアか中堅のエンジニアが行ってもらいたい内容ですが、残念ながら社内教育としてはまだ私が行っています。※4

※1 富士ゼロックス、富士ゼロックス情報システム、富士フィルム、富士フィルムソフトウェア
※2 リコー
※3 リコーITソリューションズ
※4 富士ゼロックスでは若手技術者が講師となって行ってくれているようです

第13期「プログラミング言語Java」コース終了 [プログラミング言語Java教育]

土曜日に勉強会的に開催してきた第13期「プログラミング言語Java」コースが4月9日(土)に無事終了しました。最終回の成果発表会には、体調不良で1名欠席となりましたが、6名の受講生に一年間の振り返りと発表と最終課題のデジタル時計のデモを行ってもらいました。

今まで開催している他のコースでは、基本的には会社内の業務として受講してもらうため、研修日は平日なのですが、この期は予習も研修もすべて非業務扱いで自分の時間を投資してもらうコースで、私自身も無償で行ったコースでした。

約900ページの技術書を読み通すというのは、大変だったと思いますが、今後のソフトウェア開発にきっと役立つと思います。

P1030581.jpg

第15期「プログラミング言語Java」コース(2) [プログラミング言語Java教育]

私にとっては通算で第15期になる「プログラミング言語Java」教育が、今日から開講します。今回は、社内向けのコースです。過去の期との違いは、次の通りです。
  • 最も少ない10名の受講生で開始する。
  • 今までは副読本扱いで必ずしも読む必要がなかった『Java 2 Standard Edition 5.0 Tiger』も予習テキストとして扱い、事前に学習して質問事項をまとめてもらう。
Java 7は今年の夏には登場するでしょうから、現在の言語仕様で教育するのはこの期が最後になるかもしれません。