Vapor Trail

明るく楽しく元気よく

『XPエクストリーム・プログラミング導入編 XP実践の手引』を読んだ

XPとはなにか

慎重で継続的な設計や、広範囲のテスティング、わかりやすさを追求した質の高いコードの維持を説くものである。

焼畑式プログラミング=やっつけで1回限りのコードを書く方法
コードアンドフィクス=とりあえずコードを書いてパッチを当てるような手法

XPの目指すもの

プログラマがプログラミングを行い、顧客はビジネス価値を手に入れる。

マネジャーがやるべき1つのこと

作業を行っているスタッフの障害を取り除いて解決すること。

サークル・オブ・ライフ

顧客の仕事は何に価値があるのかを定義すること。プログラマはストーリーを実装し、価値を作り上げること。

プログラマが見積もりをし、顧客が選択をする
見積もりをした結果、予想よりも機能の実現に時間がかかることもあるが、締切までに実現できる最高の機能の組み合わせを選びだすのが望ましい。
→スコープ管理が必要になる。

顧客は価値を定義する→プログラマはコストを見積もる→顧客は価値を選ぶ→プログラマは価値を作る

http://objectclub.jp/community/XP-jp/xp_relate/img/circle-of-life.gif

ユーザーストーリー

ユーザーストーリーはユーザの目から見たシステムの振る舞いを1つずつ簡潔に言い表したもの。

ストーリーの数
プログラマ一人あたり1ヶ月に2つずつくらいのストーリーが必要になる。

ストーリーの大きさ
1~2週間で作れる大きさのストーリーがベスト。
→顧客がスコープをコントロールできる期間であり、プログラマが正確に見積もり可能な範囲。
大きいストーリーは小さく分割する。

受け入れテスト

リリース直前までテスティングしないシステムもある。その場合、スケジュールがずれ込んでテスティング期間がずれ込む。

顧客の責任はイテレーションの一部として受け入れテストを提供すること。

XPで行われるすべてのテストは自動化されなくてはならない。そうすればいつでも要求を変更できるようになる。自身を持って前に進むためには受け入れテストと自動テストの強力なネットワークを築く必要がある。
→以前に動いていたものが壊れていないと保証してくれる。

ストーリーの見積もり

ストーリーはポイント単位で分類をする。
新しいストーリーを見積もりするときはすでに実装されたストーリーと比較して相対的にポイントを決める。
1ポイントの古いストーリーと比較して2倍難しそうなら2ポイントと見積もる。
プロジェクトの最初の頃は直感でポイントを決めて良い。
ストーリーはイテレーションを繰り返すたびに増えていくので徐々に精度が増すはず。
→1度のイテレーションで実装できるポイント数をトラッキングして、限られた時間と資金の中でどのストーリーを組み合わせていくか決める。

達成感

プロジェクトは区切りを必要とする。タスクを完了することにより数時間おきに達成感が得られる。
ストーリーを完成させることは重要なマイルストーンである。
仕事は区切られ、意義と進捗感を与える。この瞬間がなくては仕事は単調な骨折り作業となり、終わりのないデスマーチとなる。
→何を作ればいいのかゴールが見えないときが一番つらい。イテレーションで区切ることで達成感と進捗が得られる。重要なエッセンス、「達成感」、「意義」、「進捗感」。

プログラマは自分自身の達成感を作り上げる義務がある。
一度に一つのストーリーに取り組むこと。ストーリーをタスクに分解し、そしてテストを書くこと。
テストを実行して、必要なテストにパスさせること。
→テストがパスする=小さな達成感
ストーリーの完了=すべてのテストにパスしていること=コードをリリースする時

小さなリリース

ユーザが本当に欲しがっているもの
人の役に立つことをやり遂げたと示し信頼関係を築く
機会を放棄したくないはず

短期リリースが上記のことを可能にする。

ソフトウェアの部分部分でも顧客に手渡し、顧客が毎日使うことができれば、顧客は自分が本当に欲しかったものは何なのか学ぶことになる。
→プロジェクトを成功が近づく

失敗したプロジェクトは、待ってばかりいないでこまめに機能を提供することができれば成功しただろうと思うものばかり。

小さな単位で頻繁にリリースし、本当の顧客に使ってもらうこと

リリースプランニングミーティング

リリース計画=ストーリーの集まり

リリース計画のステップ
1. 完成品を定義するために、十分な数のストーリーを書くこと。
2. ストーリー1つ1つの難易度を見積もること。
3. ストーリーを実装するスピードを見積もること。
4. ビジネス価値と難易度を考えて、最初のリリースに入れるストーリーを選ぶこと。

・実装スピードの見積もり
ストーリーの実装スピードは、週単位で大体2~3週間で1ポイント
1イテレーション=5ポイントとして、リリース日までに6イテレーション回せるとすると6 * 5=30ポイント分できるものとして計画をたてる。
計画は希望ではなく実際のスピードをもとにたてなくてはならない。

・難易度の見積もり
最初のリリースに持ち込みたいストーリーをすべて作り、そのストーリー1つ1つの難易度を見積もりポイントとして1~3ポイントで付けていく。
イテレーション1回で10ポイントできるなら、ストーリーの難易度とビジネス価値を考えて、10ポイント分でそのストーリーを作るのか計画をたてる。

重要なことはこれはあくまで計画や見積もりであり、事実ではないということ、計画したものが起きていくわけではない。