Index: [Article Count Order] [Thread]

Date:  Sat, 15 Apr 2000 17:11:21 +0900
From:  Kaoru Hosokawa <khosokawa@....com>
Subject:  [XP-jp:00215] XP Chapter 15 Planning Strategy
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <B51E51CB.E67%khosokawa@....com>
Posted:  Sat, 15 Apr 2000 17:10:31 +0900
X-Mail-Count: 00215

ホソカワです。

第15章 Planning Strategy の解説です。最後にコメントあります。

----

Chapter 15 Planning Strategy
============================

The Planning Game (Release Planning Game)
-----------------------------------------

XP では、開発計画をゲームとして扱っています。このゲームを「Planning Game」と
言っています。

プラニングゲームのゴールは、開発するソフトウェアの価値を最大にすることです。
戦略は、最少の投資、最短の期間で、最大限の価値を生むことです。ビジネスは、出
来上がったシステムから学習したことをベースに次のシステムへの要求を決め、開発
はすぐにそれを実装します。この繰り返しです。ゲームのコマは、story cards で、
選手はビジネスと開発です。ゲームには、3つのフェースがあり、それらは、
Exploration、Commitment、Steer と言います。これらのフェースは循環するので、
steering の後に exploration に戻ることもあります。

<Exploration フェーズ>

このフェーズでは、選手たち(ビジネスと開発)にシステムの最終型を認識させます。
3つの進め方があります。

・Write a story - ビジネスはシステムの仕様を説明している story を書きます。

・Estimate a story - 開発は story の見積もりを出します。この見積もりは、
「Ideal Engineering Time」で表され、中断や会議なしで、実装にかかる期間のこと
を言います。

・Split a story - 開発が story の見積もりをできない時やビジネスが story の一
部分が重要とわかった時は、story を分割します。

<Commitment フェーズ>

このフェーズでは、ビジネスがスコープと納期を決定し、開発がその条件下の開発を
引き受けます。ここでは、4つの進め方があります。

・Sort by value - ビジネスは story を「必須機能」、「あればビジネスに貢献で
きる機能」と「あればうれしい機能(Nice To Have)」に分けます。
 
・Sort by risk - 開発は story を「見積もりに自信がある機能」、「まあまあの見
積もりの機能」と「見積もりができない機能」に分けます。

・Set velocity - 開発は velocity(プログラミング速度)を宣言します。
        velocity = Ideal Engineering Time / calendar month

・Choose Scope - ビジネスはこのリリースのためにどの story を実装するか決定し
ます。

<Steering フェーズ>

このフェーズでは、プランのアップデートを行います。4つの進め方があります。

・Iteration - ビジネスは、iteration ごとに、もっとも重要な story を決定しま
す。

・Recovery - 開発が velocity を過大に評価したと発見した時、ビジネスに対して、
今回のリリースで重要な story を新しい velocity と見積もりで再度選択してもら
います。

・New story - ビジネスが新しい story を発見した時、その story を作成し、開発
は、見積もりを行います。重要度によっては、新しい story を入れ、重要度の低い
story を外します。

・Reestimate - 開発は、見積もりを再度行い、velocity を再設定することもできま
す。

Iteration Planning
------------------

今度は、Iteration Planning Game (IPG?です。Planning Game に似ていますが、
IPGのプレイヤーは、プログラマー、コマは、task card です。また、期間も短く、
1から3週間です。似たような、フェーズと進め方で構成されています。

<Exploration フェーズ>

・Write a task - story を実装するために必要なタスクを書きます。

・Split a task/combine tasks - 大きいタスクが分割して、短いタスクは統合しま
す。

<Commitment フェース>

・Accept a task - Practice にもありますが、タスクを買って出ます。

・Estimate a task - タスクを見積もります。

・Set load factor - load factor を決定します。
        load factor = ideal engineering time / calendar time

・Balancing - あるプログラマの持ち分が大きすぎる時は、他のプログラマにタスク
を分けます。

<Steering フェース>

・Implement a task - タスクを実装します。

・Record progress - 進捗状況を記録します。

・Recovery - あるプログラマが手一杯になった時は、例えば、タスクのスコープを
縮小したり、顧客に story のスコープを縮小してもらいます。

・Verify story - タスクをすべて作成した時、story が完成したかチェックします。

[コメント:
story は、曖昧なものが多いと思います。iteration をくり返すうちにだんだんと固
まって行くのでしょうが、その story からタスクを作るのは大変でしょうね。また、
初期のiterationでは、捨てられる story、タスクが多いでしょうね。プログラマー
のモラルは大丈夫なのでしょうか?「せっかくタスクを作ったのにもういらないの?」
]

-- 
Kaoru Hosokawa
khosokawa@....com