TDDのデメリットを整理する-自分のためのメモ-
TDDとはいわゆるテスト駆動開発ではなく、トラブル駆動開発のことです。
- VCSを使っていないか、あってもブランチは1本だけである
- 品質を担保するのは常に後工程である
- 品質が評価されるのは納品直前(場合によっては納品後)である
- 暗黙の掟として、不具合は発見した人が対策する
- 開発者はマージが怖いため、ローカルで変更貯めこむ傾向にある
- 変更を貯めこむためさらにマージリスクが大きくなる
- 開発者はローカルでソース管理を新たにやり始めている
- 神に祈ることに既に抵抗がない
- トラブル毎の調査工数が無駄に多くかかる
- トラブル対応は予定されていない工数、追加の原価消費となる
ウォータフォールのテスト工程だと不具合は想定されるが、トラブルは想定外として計画されないことが多い。計画時はトラブルなどおこらないと楽観的なことが多い。結果的にプロジェクトは赤字になることが多い。
- トラブルは残業対応が原則であり、開発者は疲弊する
トラブルは開発側に起因する遅延となるため、納期の調整は許されない。常に開発者は残業対応が求められる。開発者は自分がババをひきやしないかと、怯えながらSVNの更新をし、えぇいままよとコミットする。
プロジェクト期間中は残業が常態化し、体力と睡眠時間を削がれ、やる気も失っていく。
- コードはさらに汚れていく
時が経てば経つほどに「つぎ」が大きく多くなり、より保守性は失われていく。そしてさらにトラブルの調査がストレスな作業になってゆく
- 原因と責任の所在が不透明
メリットと考える人もいるだろう。この開発手法は全ての人が「頑張っている」。みな遅くまで残業している。時間がかかった…なかなか手がまわらなかった。仕方なかったねで終わってゆく。不具合が起こるのは確率的に当然とする前提からすると、この赤字、納期遅延、品質(機能性保守性)低下の原因がどこにあるのかとても究明しづらい。また、繰り返す可能性が高い。
メリット
- 少なくともコードは統合されていて、ただひとつである
- 統合された物があることに安心感を得られる(まやかしだが)
- プロトタイプ的にお客様に見せることもできる(ここまでできてますよ)
いつでも組み合わせテストをできる、プログラムの出来具合を外部仕様の目線で確認できるということである。これはウォータフォールの下流の組み合わせテスト、システムテスト工程の担当者、開発の最終アウトプットの品質や進捗を把握したいPLにとっては非常に心強く感じるもののようである。対象が早い段階で見えるというのはなんとも頼もしい。
:
トラブル駆動から抜けださねばらない。今まで自分とともに開発してきたたみなに大変な苦労をかけてきていたことを謝りたい。こんなダメ手法は俺の代で終わればいい。
リファクタリング―プログラムの体質改善テクニック (Object Technology Series)
- 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/05
- メディア: 単行本
- 購入: 94人 クリック: 3,091回
- この商品を含むブログ (304件) を見る
レガシーコード改善ガイド (Object Oriented SELECTION)
- 作者: マイケル・C・フェザーズ,ウルシステムズ株式会社,平澤章,越智典子,稲葉信之,田村友彦,小堀真義
- 出版社/メーカー: 翔泳社
- 発売日: 2009/07/14
- メディア: 大型本
- 購入: 45人 クリック: 673回
- この商品を含むブログ (145件) を見る
アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣
- 作者: Venkat Subramaniam,Andy Hunt,木下史彦,角谷信太郎
- 出版社/メーカー: オーム社
- 発売日: 2007/12/22
- メディア: 単行本(ソフトカバー)
- 購入: 35人 クリック: 995回
- この商品を含むブログ (293件) を見る
Test Driven Development: By Example (Addison-Wesley Signature Series (Beck))
- 作者: Kent Beck
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2002/11/08
- メディア: ペーパーバック
- 購入: 1人 クリック: 8回
- この商品を含むブログ (12件) を見る