Open Source WEB

こんにちわ。ばたっちです。

原油の価格が上昇してる中、時速370kmも出るスーパー電気自動車 というのができてるそうです。

なんでも、ホイル(車輪)の中にモータが入っていて、直接タイヤ を回すという仕掛けだそうです。 写真を見るとタイヤが8つあります(^^;

何が優れているかというと、エネルギー消費をエンジンの1/4に しちゃったことです。

従来のエンジン式では、

  エンジン→トランスミッション→プロペラシャフト→ドライブシャフト。。

その他云々を経由してタイヤに力が伝えられるので、無駄が多かっ たのですが、それに比べて、

  モータ→タイヤ

にダイレクトに力を伝えることで、エネルギー損失(無駄)を格段に 減らすことで実現しているんですね♪

ソフトウェア開発も間に余計なもの(設計書、テスト仕様書。。(^^;) を省略して、損失を減らしたいですね。

そんなあなたには、XPの「テスト駆動開発」はいかがでしょう?

従来のドキュメント中心の情報伝達では、

  設計−(設計書)→コーディング−(テスト仕様書)→テスト

のように、伝言ゲーム状態になり、情報の損失が大きくなります。

テスト駆動開発では、

  自動テスト←→コーディング+再設計

のように、やりたいこと(要求)を表現した自動テストが、ちゃんと 動くようにコーディングすることを、動くプログラムで確認しなが ら、進めることができます。損失はかなり軽減されます。

なんたって、動かしながら確認できるので、フィードバックが明確 です。(百聞は一見にしかず状態ですね(^^;)

※偶然ですが、コラムメンバーの最新記事がすべて「テスト」ネタ のようです。いかに、XPでは「テスト」が重視されているかという ことですね♪

今回は、ビジネス編、開発編の2本立てです♪(^^;

ビジネス編「開発編」

  お客さん:「以前の機能A が動かないぞ!」

と、お客さんが怒鳴り込んでくる。

解析してみると、今回追加リリースした機能B の変更で、機能A の ルートが動かなくなっている。。。

  「デグレだ。。お客さんになんて言おう。。」

なんてことありませんか?

  お客さん:「この問題は大変だ!他に類似箇所がないか、全コード一斉チェックだ!」

と号令がかかる。。

全コードチェックだって!?この何万キロラインもある、重複バリ バリの(^^; コードを?

  「こんなの人手で確認しても確認しきれないぞ。。」
  
  「今後も発生し得るな。。」

なんてことも、ありませんか? (^^;

何か問題があれば、人手で全コードトレース。バージョンアップの たびにレグレッション・テストと称して、過去のテスト項目片手に しこしことテスト実施。

従来の開発ではテストは一度きり(ワンタイム・テスト)という性格 のため、テスト実施のタイミングをすり抜けて混入したバグは、後 で表面化し、災いをもたらしてくれます。

こうなったら、テストも対処療法です。基本的に手遅れな状態とい うことですね。(^^;

また、

  「動いたコードは触るな(変更するな)!」

という教訓により、継ぎ接ぎ、スパゲティ、重複バリバリでぶくぶ くと立派に育った(?)コードは、バグのコードも分散化。

治しても切りがない、もれがあるという状況になりがちです。。A(^^;

しかも、こんな状態ではあれほど大事に作った「ドキュメント」 (設計書など)はまったく役に立ちません。 実際のコードの内容ともどんどん離れていきます。

コードと設計書の内容がマッチしていてこそ、初めてドキュメント が意味を成しますが、いまだかって、そのようなドキュメントに出 会ったことはありません。コードを直接見る方が早いくらい。A^^;

頑張って、先にドキュメントを作っても、システムの品質を維持し てくれませんよぉ。エンジンとタイヤを中継する「プロペラシャフ ト」のように、時間や効率の損失を生むものでしかありません。

そんな時間があるのなら、自動テストを書く時間に使いましょう!

XPの「テスト駆動開発(TDD: Test Driven Development)」では、 従来、コーディングに先立って作っていたドキュメントにかかる時 間、そしてテストという名に隠れたデバッグにかかる時間を使って、 自動テストを書きます。

まぁ、どーしても設計書が必要なら、テスト駆動開発で高い品質で システムを完成させた後に、ゆっくり書けばいいでしょう。 完成したシステムをドキュメントに反映させるわけなので、内容は マッチしますし、バグなんか出ないから(^^;、内容が離れていくこ ともほとんどありません。

テスト駆動開発はあらかじめトラックにラインを引き(テストを作 り)、それからラインに沿って選手(プログラム)を走らせて、ゴール を目指すようなもの。

従来の開発は、選手(プログラム)が走り始めてから、「こっちだ」 「あっちだ」と指示して、ゴールへ向かわせるようなもの。 あっ、「すいか割り」っぽいかも A^^;

どちらが効率がいいか、はっきりしてますね♪

具体的な手順については、書籍など情報源はたくさんあるので、こ こでは説明しませんが、ケント・ベック様が作られた「xUnit」と は、あらゆる言語に移植され、誰でもすぐに始められるようになっ ています。

一人でも可能です。スモールスタートが切れるのも「テスト駆動開 発」のメリットです。

そして、今まで作った自動テストはプログラムなので、いつでも実 施できます。常時テスト(エニタイム・テスト)ですね。もはや、ワ ンタイム・テスト時のように、テストの隙間をぬぐって、バグが混 入する隙も与えません!(^^;

自動テストはコードとダイレクトに相互作用し、コードの品質を向 上させます。もはや、継ぎ接ぎ、重複、スパゲティとはおさらばで す!ドキュメントと違って、高効率な相互作用が品質を生み出しま す。

テスト駆動開発は、あなたを「デスマーチ」の恐怖から解放します。 自分の身を守ることから始めましょう♪

いずれ、すべての開発は「テスト駆動開発」になります(。。と言い 切ってみる)。とっととスタートを切っちゃいましょう。(^_^)/~


フィードバック下さい!

Name:
Comment:

There is no comment.

このサイトは、 IPA の「平成15年度オープンソフトウエア活用基盤整備事業」 の委託事業として開発されたKahuaで試験的に運用しております。

Copyright (c) 2004-2007 株式会社タイムインターメディア About Us