本書は、すぐれた組み込みソフトウェアを開発するための手法を豊富なサンプルコードとともに解説する本です。
前半では、制約のある組み込み環境でテスト駆動開発を行うための基礎知識とノウハウを懇切丁寧に紹介します。
後半では、オブジェクト指向をベースに考え出されたSOLID原則やリファクタリングをC言語に適用し、アジャイルな設計を実現するための方法を示します。
さらに、レガシーコードへのテストの追加方法についてもサンプルコードを使って詳細に解説します。
テスト駆動開発を学びたい、アジャイル開発について知りたい、レガシーコードと日々格闘している、そんなすべての組み込みCプログラマ必携の一冊です。
<b>「日本語版まえがき」より</b>
~本書は、C言語を使う組み込み開発の現場用に書かれた、テスト駆動開発の具体的な指南書である。
そう、C言語で! テスト駆動開発はオブジェクト指向言語が前提となることが多かったのに、本書は組み込み開発現場でのC言語を前提としている。
この手法をあなたの組み込み開発に取り込めないだろうか? きっと試す価値はあるはずだ。
組み込み開発のソフトウェア開発現場では、なかなか障害が収束せず、出荷ぎりぎりになってデバッグに追われる日々を強いられる状況も多い。
そして、みんなそんな状況から逃れたいと思っている。
ジェームズは、その1つの答えになるのがテスト駆動開発だと信じて本書を書いた(私もそう考えている一人だ)。
チームや個人が自らのソフトウェアの品質をよりよくしたい、と考えているなら、ぜひすぐにでも試してみてほしい。
組み込み開発の現場で日々ソースコードと格闘している、まさに、あなたのための手法だ。
私は著者のジェームズ・W・グレニング氏と数年来交流している。
昨年は彼の開催するテスト駆動開発のワークショップにも参加し、実際に手を動かしてC言語のコードを書いた。
そこで気づいたのは、彼のとても真剣な組み込みソフトウェア開発に対する情熱だ。
彼は、ワークショップが始まる前に、参加者の全員に一人ずつ自己紹介をしながら資料を手渡していた。
そして、ワークショップがはじまると、静かに、しかし熱く、組み込み開発の現場の悲惨な現状を語った。
彼も組み込み開発の現場を変えたいと考えている。
そして、その鍵がテスト駆動開発にあると信じている。
よく誤解されるのだが、テスト駆動開発は「テスト手法」ではない。
ユニットテストをうまく利用して、よりよい設計を導くための手法である。
この手法で開発されたソースコードは、「テストしやすい設計」になると同時に、動くユニットテスト群が同時に開発される、という優れものだ。
このユニットテスト群は回帰テストで利用されるとともに、将来の設計変更を安全に導く基礎になる。
私が本書で特に気に入っているのは、ボブおじさんこと、ロバート・C・マーティンのソフトウェア設計原則である「SOLID原則」にも章を割いて解説している点だ。
テスト駆動開発は、テストしやすい設計を導く設計手法であり、ソフトウェア設計原則と不可分なのである。
本書を読むことで、テスト駆動開発だけでなく、よい設計とは何か、というより大きな問題を考えるきっかけにもなるだろう。
さあ、本書を手に、すぐに試してみてほしい。
テスト駆動開発のよさに感染するだろう。
そして同時に疑問を抱くだろう。
どうやったら自分の現場に適用できるか、と。
そしたら、チームの仲間と勉強会をはじめてみてほしい。
開発の仲間を作ることが、ソフトウェア開発の現場をよくすることの第一歩だから。
組み込み開発のやりがい、そして楽しさ、を取り戻そう。
株式会社チェンジビジョン
平鍋 健児
2013年2月
すぐれた組み込みソフトウェアを開発するための手法を豊富なサンプルコードとともに解説する本。
前半では、制約のある組み込み環境でテスト駆動開発を行うための基礎知識とノウハウを懇切丁寧に紹介します。
後半では、オブジェクト指向をベースに考え出されたSOLID原則やリファクタリングをC言語に適用し、アジャイルな設計を実現するための方法を示します。
さらに、レガシーコードへのテストの追加方法についてもサンプルコードを使って詳細に解説します。
James Grenning(ジェームズ・W・グレニング):世界で活躍するトレーニング、コーチ、コンサルタント。
1970年代後期にソフトウェア開発を始め、組み込みエンジニア、テクニカルリーダ、エンジニアリング・マネージャなどの仕事に従事。
ジェームズはプランニングポーカーの発明で知られ、またアジャイルソフトウェア開発マニフェスト作者の1人でもある。
まだレビューがありません
テスト駆動開発による組み込みプログラミングをgoogletestでやる8章
C言語でマルチインスタンスモジュールを書く
Google Testで組み込みソフトをテストする
CでgoogletestとCMakeを使ってみた
若手エンジニアを不幸にしないための開発の「べからず」集 テスト編
引き継いだソースコードをメンテナンスしやすくする。
「橋を燃やすな原則」
もし軍曹が携帯電話をいま開発したら
テスト駆動開発による組み込みプログラミングをgoogletestでやる~SOLIDな設計編~
若手エンジニアを不幸にしないための開発の「べからず」集
テスト駆動開発による組み込みプログラミングをgoogletestでやる
テスト駆動開発による組み込みプログラミング~モック&フラッシュドライバ編~
「テスト駆動開発による組み込みプログラミング」の演習でIGNORE_TESTの罠
どこでも食っていけるC++のソフトウェアエンジニアになるために
C言語で構造体のメンバを隠蔽したい(ただしmalloc無しで)
TDD / naming > TEST_GROUP_RUNNER() > 複数のテストを行う関数
#ifdefが多数あるプロジェクトをどうテストする?
Agile Japan 2017 北陸(富山)サテライトに参加してきた