RedmineプラグインRodmapsにEVMの機能を追加する
Redmineのロードマップス・プラグインにEVMの機能を追加するアイデアをメモ。
下記はあくまでもラフなメモ。
【元ネタ】
Redmineプラグイン開発 - Roadmapsプラグインリリース - フジハラボ -- 目指せ!スーパーエンジニア
Redmineのチケット集計機能を強化するプラグイン: プログラマの思索
Redmineの集計プラグイン、statSVN諸々: プログラマの思索
プロジェクトマネジメント・コンサルティング・サービス会社 ピーエム・アラインメント PM Alignment
PMBOKのEVMは「WBS/EVMによるITプロジェクトマネジメント」が一番分かりやすい。
公式とその具体例がグラフで掲載されているので、理解しやすい。
EVMがすごいのは、PV・AC・EVというたった三つの値で、今後のコストやスケジュールを予測できてシミュレーションできることだ。
EVMをRedmineに実装したいのは、PV・AC・EVという三つの値は既にDBに格納されているので、今後のコストやスケジュールを簡単にシミュレーションできるからだ。
PMBOKのEVMで定義されているPV・AC・EVは理解しづらいが、Redmineによるチケット駆動開発上では、下記のように簡単に定義できる。
特に、EV(達成価値)が「終了チケットの総予定工数」として表現できるのに注意せよ。
【RedmineにおけるEVMの定義】
・BAC:プロジェクト総予算 → 全チケットの総予定工数に相当する。
・PV:計画出来高 → 今日時点のチケットの総予定工数に相当する。
・AC:実績コスト → 今日時点のチケットの総実績工数に相当する。
・EV:実績出来高 → 今日時点の終了チケットの総予定工数に相当する。
・SAC:当初予定期間 →「プロジェクトの期限日-プロジェクトの開始日」に相当する。
【EVMの計算式】
・スケジュール差異。SV > 0なら予定よりも進捗が進んでいるので良い。
SV = EV - PV
・コスト差異。CV > 0なら予定よりもコストがかかっていないので良い。
CV = EV - AC
・スケジュール効率指数。SPI > 1なら予定よりも進捗が進んでいるので良い。
SPI = PV / EV
・コスト効率指数。CPI > 1なら予定よりもコストがかかっていないので良い。
CPI = AC / EV
・危険度指数。SPIとCPIが共に1.0未満の場合、CRはより小さくなる。スケジュールやコストを含めたプロジェクト全体の効率指標と言える。
CR = CPI * SPI
・出来高パーセント。プロジェクトの全体価値に対してどのくらい(何%分)達成しているかを表す。
PC = 100 * EV / BAC
・残作業効率指数。残作業を残予算で完了するために必要なコスト効率。例えば、TCPIが1.5ならば今よりも1.5倍働かないと、採算が合わなくなる。
TCPI = (BAC-EV) / (BAC-AC)
・完成時総コスト見積り。上司や顧客にとってすごく重要。CPI < 1ならば、予定よりもコストオーバーになる。
EAC = BAC / CPI
・完成時コスト差異。VAC<0ならば、コストオーバー。
VAC = BAC - EAC
・完了期間予測。上司や顧客にとってすごく重要。SPI < 1ならば、予定よりも納期が遅れる。
TEAC = TAC / SPI
・完了時期予測差異。TVAC<0ならば、納期が遅れる。
TVAC = SAC - TEAC
・完了予定日=プロジェクト開始日 + TEAC
【RedmineのRoadmapsプラグイン】
Redmineプラグイン開発 - Roadmapsプラグインリリース - フジハラボ -- 目指せ!スーパーエンジニア
Roadmapsプラグインはバージョン単位の進捗を集計表示してくれる。
実は、Roadmapsプラグインで出てくる値はEVMの概念とほぼ似ている。
・進捗(%) → 終了チケット数/総チケット数。チケットの工数の粒度が安定していれば、PCとほぼ一致するはず。
・バージョンの期限日-バージョンの開始日 → 当初予定期間。SACに相当する。
・予定工数 → バージョンに紐づく全チケットの総予定工数。BACに相当する。
・経過時間 → 今日時点のチケットの総実績工数。ACに相当する。
できれば、EVとPVの値を集計表示して欲しい。
・実績出来高:EV → 今日時点の終了チケットの総予定工数
・計画出来高:PV → 今日時点のチケットの総予定工数
そうすれば、バージョン単位で下記の値を計算できる。
・スケジュール差異:SV = EV - PV
・コスト差異:CV = EV - AC
・スケジュール効率指数:SPI = EV / PV
・コスト効率指数:CPI = EV / AC
・危険度指数:CR = CPI * SPI
・出来高パーセント:PC = 100 * EV / BAC
・残作業効率指数:TCPI = (BAC-EV) / (BAC-AC)
・完成時総コスト見積り:EAC = BAC / CPI
・完成時コスト差異:VAC = BAC - EAC
・完了期間予測:TEAC = TAC / SPI
・完了時期予測差異:TVAC = SAC - TEAC
・完了予定日=バージョン開始日 + TEAC
Rodmapsプラグインはサブプロジェクト単位でバージョンの進捗を集計してくれるから、最終的にはサブプロジェクトやプロジェクト全体のEVMを計算することができる。
つまり、チケットの入力ルールが徹底できれば、Redmine上でスケジュールだけでなくコストの管理も可能だ。
あるいは、プロジェクト開始前に、WBSをチケットにして、予定工数と実績工数をチケットの属性として登録して一括インポートすれば、プロジェクトの進捗やコストをシミュレーションできる。
そのシミュレーションでは、納期やコストが予算内に収まるSPIやCPIの下限値を計算できると良い。
そうすれば、その下限値よりSPIやCPIが低くなるならば、プロジェクトが危険な状況になった、というアラームを知らせることができるだろう。
「WBS/EVMによるITプロジェクトマネジメント」では、SPIやCPIが0.9以下になると危険というアドバイスがある。
実際のプロジェクトで、実績を貯めていければ、予測しやすくなると思う。
EVMの公式にある概念は、パイロットが操縦している時の計測器に喩えられる。
パイロットの部屋は、計測器だらけ。
理由は、飛行機を操縦する時に現在の状況を確かめるには、実際の窓から見ることはできず、たくさんの計測器によって知るしかないからだ。
SW開発のプロジェクト管理も同様だ。
EVMのたくさんの概念を計測して、実際のプロジェクトの危険度を察知できれば、Redmineはかなり強力なツールになるだろう。
| 固定リンク
「プロジェクトマネジメント」カテゴリの記事
- 「スクラムの拡張による組織づくり」のScrum@Scaleの感想(2024.03.31)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart2~プロセスのレイヤと達成目標のレイヤが異なる(2023.02.18)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart1~CSFはWBSみたいなものと捉える(2023.02.14)
- PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか(2023.01.22)
- 現代日本人の弱点はリーダーシップ不足と生産性が著しく低いこと、そしてリスク許容度が著しく低いことだ(2022.12.23)
「Redmine」カテゴリの記事
- Redmineのバージョン設定でプロジェクトの設定方法が違う(2024.06.23)
- ウクライナのRedmine開発者が作ったRedmineテーマやプラグイン(2024.06.18)
- 第26回redmine.tokyo勉強会の感想~多様性はコミュニティが成功する重要な要因の一つ #redmineT(2024.06.15)
- Redmineで持ち株管理する事例(2024.04.21)
- チケットはデータでとプロセスの二面性を持つ #redmine(2023.12.24)
「ソフトウェア工学」カテゴリの記事
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「システムアーキテクチャ構築の原理」の感想(2024.05.06)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- マイクロサービス設計は従来のアーキテクチャ設計と何が違うのか(2024.01.02)
- 「ソフトウェアアーキテクチャ・ハードパーツ」の情報リンク~マイクロサービスの設計技法の課題は何なのか(2023.11.12)
「チケット駆動開発」カテゴリの記事
- 第26回redmine.tokyo勉強会の感想~多様性はコミュニティが成功する重要な要因の一つ #redmineT(2024.06.15)
- チケットはデータでとプロセスの二面性を持つ #redmine(2023.12.24)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
- プロジェクト管理の基本はテーラリング、Redmineはプロセスをテーラリングするツール(2022.04.21)
コメント