Index: [Article Count Order] [Thread]

Date:  Sun, 17 Jun 2001 01:22:11 +0900
From:  Kaoru Hosokawa <khosokawa@....com>
Subject:  [XP-jp:02028] VXP again - Iteration planning 1
To:  "extremeprogramming jp ObjectClub.esm.co.jp"	<extremeprogramming-jp@....jp>
Message-Id:  <B751B6C3.3D5E%khosokawa@....com>
X-Mail-Count: 02028

ホソカワです。

Virtual XPの再開を試みます。イテレーションプラニングにもどって考えてみました。
まず、ストーリーの分割をしたいと思っています。CVSにあるソースコードは、無駄
にしないようにしたいです。

#一年ぐらい前にスタートしたVXPです。初期の議論はアーカイブのどこかにあると
#思います。

#平鍋さん、wikiをアップデートしようと思いましたが、「ストリーカード」のペー
ジに例えば「Story1.1」とかどのように追加すればいいのでしょうか?

StoryCard1のストーリーから始めます。ストーリーをタスクに分解して見積もりを出
してみます。

==== Story 1
メーリングリスト(以下ML)のユーザが、MLのアドレスにメールを送信すると、MLに
所属するメンバ全員に、そのメールが配信される。MLに属するメンバは、あるファイ
ルに1行1名で記述されている。メンバ以外から来たメールは、エラーとして差出人
に返す。(エラーとするかどうかは、MLのポリシ設定による。)
====

ストーリーが大きいのと本処理とエラー処理にきれいに別れるので、まずは、ストー
リーを二つに分割します。配信(Story 1.1)とエラー処理(Story 1.2)のストーリー
二つです。

==== Story 1.1
メーリングリスト(以下ML)のユーザが、MLのアドレスにメールを送信すると、MLに
所属するメンバ全員に、そのメールが配信される。(MLに属するメンバは、あるファ
イルに1行1名で記述されている。)
# ファイルフォーマットの話はストーリーに直接関係ないので、「MLに属するメンバ
は…」は()で囲みました。
====
==== Story 1.2
メンバ以外から来たメールは、エラーとして差出人に返す。(エラーとするかどうか
は、MLのポリシ設定による。)
====

ここで、先に「Story 1.1」に取り掛かります。(なんで?顧客がそういったから。)

前回もメールの実際の受信/送信をどうするか議論があったと思いますが、受信/送
信は別プログラムに任せます。実は、JavaMailが使えそうな気がしているのでこのよ
うに言い切っています。しかしまだ、勉強不足で、JavaMailをどのように使うのかわ
かっていません。つまり、メールの受信/送信は行わないで、なにか動く物(受け入
れテストができるもの)を考えなくてはなりません。

実際に送信は行わずに、送信ログを吐くことを考えてみます。送信ログはファイルで
すのでテストができます。「送信しろ」といわれた物が送信ログにあればテストパス
です。また、ストーリーを送信「しない」と「する」に分割します。

==== Story 1.1.1
メーリングリスト(以下ML)のユーザが、MLのアドレスにメールを送信すると、MLに
所属するメンバ全員に、そのメールが送信され、送信ログに記録される。このストー
リーでは実際に送信されない。(MLに属するメンバは、あるファイルに1行1名で記
述されている。)
====
==== Story 1.1.2
メーリングリスト(以下ML)のユーザが、MLのアドレスにメールを送信すると、MLに
所属するメンバ全員に、そのメールが配信され、送信ログに記録される。このストー
リーでは実際に送信される。(MLに属するメンバは、あるファイルに1行1名で記述
されている。)
====

こんどは、「Story 1.1.1」です。メールを受信してmajordomoをキックするところは、
多分、JavaMailの受信イベント(?)を処理する部分でカバーできると思っています。
(JavaMail関係は全部、想像です。)なので、受信してキックするところをストーリー
から分離します。

==== Story 1.1.1.1
指定されたメールを、MLに所属するメンバ全員に送信し、送信ログに記録される。こ
のストーリーでは実際に送信されない。(MLに属するメンバは、あるファイルに1行
1名で記述されている。)
====
==== Story 1.1.1.2
メーリングリスト(以下ML)のユーザが、MLのアドレスにメールを送信すると、その
メールを渡してmajordomoを起動する。
====

「Story 1.1.1.1」は、じゅうぶんに小さくなったと思います。これでしたら、タス
クに分割することができます。(他のストーリーはまた今度タスクに分割します。)

こんなタスクがあると思います。

・stdin からメールをもらう。(メモリーに保持?)
・メンバーリストのファイルからメンバーメールアドレスを取得。
・メールとアドレスをメール送信クラスに送り送信してもらう。
・送信クラスはログを吐く。

私でしたら、「2 ideal days」かなと思います。(多めかもしれませんが…)で、
週末だけ作業して、「2 calendar weeks」になりそうです。

-- 
Kaoru Hosokawa
khosokawa@....com