ホソカワです。
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