そろそろ大規模ソフトウェア開発に一言いっておくか。デイリービルドとリグレッションテスト
会社の勉強会で自分の今までの経験からテストについてお話をした。その資料を公開する。自分が関わった、Oracle8、DEC Rdb、日本語COBOL、そしてSamba3.0国際化プロジェクトでのテストやディリービルドなどについて紹介した。
テストファースト開発など、最近広く知られるようになってきたが、ディリービルドとリグレッションテストの実行という方法論は昔からソフトウェア製品開発の現場では行われていたベストプラクティスである。そのリズムとか雰囲気を伝えたかった。
テストがある開発現場ってのは、こんな感じなんだ〜という雰囲気が伝われば幸いだ。
アジャイル開発方法論としてXPの手法とかいろいろ知られているが、このディリービルドとリグレッションテストというプラクティスもその一つである。
闘うプログラマー(ビル・ゲイツの野望を担った男達)には、大規模ソフトウェア開発のドラマが記されている。そしてディリービルドやリグレッションテストの話が出ている。わたしも1998年ごろに書いたシリコンバレー日記やこのはてなの日記でもそれを何度か取り上げた。
リグレッションテストがあると、安心して心の平静が保てるのである。
例えば、テストのないレガシーコードにテストを作ることによって、そのシステムの理解が深まったり、動作を記述することによって、変更の影響が即座にわかったりする。変更の影響がわかれば、大胆に実装を変更したりすることが容易にできるようになり、開発の俊敏性が高まる。それが安心であり、心の平静が保てる。
テストがないシステムはレガシーシステムであるが、それをモダンにする第一歩はテストを書くことである。
新規に開発するプログラムもテストがなければレガシーシステムである。そして初めからテストを書いていれば、実装したプログラムの機能を確認できて、安心であり、心の平静が保てる。
Oracle8の開発には100名以上のプログラマが関わった。間違いなく大規模ソフトウェア開発である。そして大規模なソフトウェアだからこそ開発の俊敏性が求められ、市場の変化に柔軟に対応することが市場に生き残る条件となるのである。
以下は、「未来のいつか/hyoshiokの日記」より
ロートルの嘆き、アジャイル開発って何 http://d.hatena.ne.jp/hyoshiok/20100211#p1
日本オラクルの若手エンジニアに会って来た http://d.hatena.ne.jp/hyoshiok/20090314#p2
OSSに対する企業の貢献 http://d.hatena.ne.jp/hyoshiok/20041022
デイリービルドの続き http://d.hatena.ne.jp/hyoshiok/20040516#p1
98/2/18 デイリービルド http://d.hatena.ne.jp/hyoshiok/20040429
デイリービルド http://d.hatena.ne.jp/hyoshiok/20040412
以下は「ユメのチカラ」より
新卒プログラマのころ http://blog.miraclelinux.com/yume/2007/11/post_607a.html
リグレッションテスト http://blog.miraclelinux.com/yume/2007/04/post_5140.html
大規模ソフトウェアの効率的な理解(その6)、リグレッションテスト http://blog.miraclelinux.com/yume/2006/08/6_570e.html
開発工程を別々に担当してはいけない http://blog.miraclelinux.com/yume/2007/10/post_4e54.html