チケット駆動開発でXPの計画ゲームを実施する
昔、XPlannerというXPのアイデアを実現したWebアプリがあった。
そのソフトは、XPのタスクカード単位で進捗管理できるのがウリだった。
でも、正直使い勝手は良くなかった。
そして、最近、Redmineを触って初めて、XPを実現できそうなプロジェクト管理ツールだと直感した。
Redmineによるチケット駆動開発のアイデアをまとめてみる。
【1】Redmineの特徴は、プロジェクトの進捗の可視化
Redmineの最大の特徴は、ガントチャート。
チケットに作業内容と開始日、終了日を入れると、すぐにガントチャートが出来上がる。
これを初めて見た時は感動した。
プロジェクトリーダーは、ガントチャートを作って保守するために、殆どの時間を費やしている。
WBSさえ作って入力すれば、ガントチャートを自動生成してくれるのだ!
他に、カレンダーもある。
開発時だけでなく、運用保守時にリリースする日やDBメンテナンスする日が一覧で表示できるのがいい。
また、ロードマップは、マイルストーン単位の進捗率そのものを表示する。
バーンダーンチャートに近い。
プロジェクトリーダーは、ロードマップを見ながら、マイルストーンまでに後どれくらいのタスクが残っているか、をすぐに把握できる。
また、プロジェクトリーダーはロードマップを見ながら、遅れている開発があれば、開発者のアサインを変えたり、納期をずらすよう顧客を説得するなど、色んな手を考えるだろう。
ガントチャート・カレンダー・ロードマップは、プロジェクトの進捗を数字で可視化させてくれる、プロジェクトリーダーにとってありがたいツール。
【2】RedmineのチケットとSVNリポジトリを連携させる
【2-1】Redmineでは、リポジトリというViewがある。
リポジトリViewでSubversionを設定すると、Subversionにあるソースの一覧とコミットログが表示される。
更に、リビジョン単位でソースとコミットログも表示できる。
また、ソースの差分も色分け表示してくれる。
プロジェクトリーダーは、リポジトリを見ながら、いつでもソースインスペクションできる。
チケットとSVNリポジトリを連携させる時に最重要な点は、SVNコミットログをきちんと書くこと。
駄目なプロジェクトは、コミットログが空欄。
だから、何故ソースを改修したのか、すぐに理由を忘れて、デグレが発生しやすくなる。
チケットとの連携は、「refs チケットNo」というコメントをコミット時に入れるだけ。
$ svn commit -m '○○○機能を利用時の△△△な問題を修正。 refs 123'
これによって、チケットにリビジョンNoがリンクされる。
更に、リポジトリにあるソースのリビジョンにチケットNoリンクが逆に表示される。
この作業で、チケットとSVNリビジョンの行き来が簡単になる。
【2-2】TracやRedmineが、ExcelやMS Projectよりも優れている点は、ソースコードとチケット(作業タスク)を紐付けることができること。
つまり、チケットを経由して、ドキュメントとソースコードの紐づけができるので、上流工程から下流工程まで一貫して、要件をトレースできる。
要望書→設計書・テスト仕様書→【チケット】←ソースコード
このやり方は、結合テスト以降のバグ修正や、運用保守時の機能追加で大きな威力を発揮する。
なぜなら、結合テスト以降や運用保守の工程では、死んだドキュメントよりも、実際に稼動中のプログラムの方が重要だから。
チケットのおかげで、バグ修正や機能追加の作業で、誰がどのソースコードをどんな理由で触ったのか、すぐに分かる。
【2-3】これがチケット駆動開発のアイデアだ。
つまり、チケットNo無しのSVNコミットはご法度。
SVNにコミットできるソースは、チケットというちゃんとした理由があるものだけで、そうでない場合はコミット不可になる。
この運用ルールは、本番稼動後の運用保守フェーズで最重要だ。
何故なら、実際に稼動しているソースコードを理由無しに書き換えるのは危険だからだ。
【3】チケット管理の肝
実際にTracやRedmineでチケットを使って開発したことがあったが、上記のような理想的な開発とはならなかった。
その時は、各開発者が勝手にチケットを乱発し、そのチケットを誰が担当するのか、そしてチケットを解決してもデグレが発生したり、とか、うまくコントロールできなかった。
「第2回:なぜTracの導入に失敗するのか?」では、チケット管理の運用で主に問題点として下記をあげている。
1・チケットの優先度を決めるのが難しい
2・チケットのマイルストーンを決めるのが難しい
3・チケットに書き込む内容と工数はどれくらいの規模がいいのか?
4・チケットを閉じる時、どのようなタイミングで行うべきか?
1と2は、チケットの属性に関すること。
3はチケットの作業内容と工数に関わること。
4はチケットの作業状態に関すること。
結合テスト以前と、結合テスト以降、そして運用保守時の2つで使い分けるとよいと考える。
【3-1】結合テスト以前のチケットは、要望を詳細化した仕様そのもの。
開発者はチケットにある仕様を実現するために実装する。
チケットの優先度は全て同じでいい。
マイルストーンは、ガントチャートにあわせればよい。
理由は、動くプログラムをまず作ることに注力したいから。
チケットの属性にあまりこだわらなくていい。
プロジェクトリーダーがあらかじめ決めておけばいい。
このフェーズでは、チケットの粒度が重要。
1チケットで担当者1人にアサインし、1チケットが平均2.5人日程度になるように細分化する。
つまり、1週間でチケット2枚を開発者1人が担当する。
1人月=8チケットぐらいのサイズ。
20人月なら160枚のチケットの規模になるだろう。
理由は、チケットを実装する工数が大きいと、進捗管理が難しくなるから。
開発者にとっても、チケットをこなす速度が上がれば、楽しくなるし。
プロジェクトリーダーは毎日、ロードマップでチケットの進捗率を見張っておく。
【3-2】結合テスト以降、そして運用保守時では、チケットの状態管理が重要だ。
この工程では、チケットはバグ修正や機能追加、仕様変更などの作業になる。
緊急のバグ修正のチケットなら、優先度=緊急で、マイルストーンは本番リリース日になるだろう。
いわゆる課題管理は、チケットの優先順位、つまり、どのチケットから順に消化していくか、という作業になる。
このフェーズでは、プロジェクトリーダーが細心の注意を払って、優先度やマイルストーンという属性を決めることになる。
また、チケットを解決のステータスへ変更する時、2人の担当者を経由させるか、最後にプロジェクトリーダーが必ずチケットを確認するような運用にする。
理由は、チケットの品質管理を徹底させるためだ。
特に本番稼動後のバグ修正や仕様変更では、デグレが許されない。
だからこそ、チケットを実装した開発者とは別に、テスト担当者にそのチケットを検証させる。
最後は、プロジェクトリーダーが実際にチケットを検証する時もあるだろう。
【3-3】チケットの運用方法は、プロジェクトリーダーの采配に大きく依存する。
Redmineには、チケットに経過時間という項目があり、これが実績に当たる。
レポートでは、見積もり工数と実績の比較を一覧に出す機能もあるらしい。
Redmineは複数プロジェクトにも対応しているので、見積もり工数と実績の工数を収集して蓄積できる。
そうすれば、ソフトウェアメトリックスらしき測定値を収集することもできる。
チケットを上手に運用できれば、ソフトウェア工学で習った知識を実際に現場で生かせるのだ!
【4】チケット駆動開発はXPの計画ゲームそのものだ
チケット駆動開発は、アジャイル開発に最も適しているように思う。
つまり、チケットはXPのストーリーカードやタスクカードに見立てることができる。
XPの計画ゲームは、1イテレーションで実現する機能をストーリーカードやタスクカードへ落として、下記の4つでコントロールする。
(By たけぷ~さん)
・T:時間
・S:スコープ(いわゆるストーリの数)
・R:リソース(開発者数/コストに相当)
・Q:品質
チケットの工数、作業内容、優先度は、まさに上記4つのバランスで決まる。
チケットの状態は、Redmineのガントチャート・カレンダー・ロードマップで可視化できる。
チケットはSVNリポジトリと連携できているので、要件定義からソースコードまで一貫してトレースできる。
上手に運用できれば、プロジェクト管理を効率化できるはずと思う。
| 固定リンク
「プロジェクトマネジメント」カテゴリの記事
- 「スクラムの拡張による組織づくり」のScrum@Scaleの感想(2024.03.31)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart2~プロセスのレイヤと達成目標のレイヤが異なる(2023.02.18)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart1~CSFはWBSみたいなものと捉える(2023.02.14)
- PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか(2023.01.22)
- 現代日本人の弱点はリーダーシップ不足と生産性が著しく低いこと、そしてリスク許容度が著しく低いことだ(2022.12.23)
「Redmine」カテゴリの記事
- 「RedmineのUbuntu+Docker構築への移行」の感想 #redmineT(2024.11.24)
- 第27回redmine.tokyo勉強会の感想 #redmineT(2024.11.10)
- Redmineのバージョン設定でプロジェクトの設定方法が違う(2024.06.23)
- ウクライナのRedmine開発者が作ったRedmineテーマやプラグイン(2024.06.18)
- 第26回redmine.tokyo勉強会の感想~多様性はコミュニティが成功する重要な要因の一つ #redmineT(2024.06.15)
「チケット駆動開発」カテゴリの記事
- 第26回redmine.tokyo勉強会の感想~多様性はコミュニティが成功する重要な要因の一つ #redmineT(2024.06.15)
- チケットはデータでとプロセスの二面性を持つ #redmine(2023.12.24)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
- プロジェクト管理の基本はテーラリング、Redmineはプロセスをテーラリングするツール(2022.04.21)
コメント