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はかなり強力なツールになるだろう。
| 固定リンク
「Redmine」カテゴリの記事
- 第8回RxTstudy勉強会でRedmineコミッタが来られます(2013.05.25)
- ソフトウェア開発の「新」3種の神器(2013.05.25)
- チケット駆動開発の適用範囲part5~どの工程をカバーするのかという質問(2013.05.22)
- Chefで構築するRedmine環境(2013.05.14)
- マージ処理はコードを理解すべきである~チケット駆動開発の発展形(2013.04.29)
「ソフトウェア工学」カテゴリの記事
- ERPの落とし穴part3~外部システム連携がプロジェクトのボトルネック(2013.05.25)
- ソフトウェア開発の「新」3種の神器(2013.05.25)
- チケット駆動開発の適用範囲part5~どの工程をカバーするのかという質問(2013.05.22)
- テスト駆動開発による組み込みプログラミングも良い本です(2013.05.19)
- 業務システム設計の隠れた要件~会計監査やシステム監査(2013.05.18)
「チケット駆動開発」カテゴリの記事
- チケット駆動開発の適用範囲part5~どの工程をカバーするのかという質問(2013.05.22)
- ソフトウェア開発における「かんばん」とは何か(2013.05.07)
- マージ処理はコードを理解すべきである~チケット駆動開発の発展形(2013.04.29)
- XP祭り関西2013の感想(2013.04.28)
- Redmine 2.3の新機能(2013.04.20)
「プロジェクトマネジメント」カテゴリの記事
- チケット駆動開発の適用範囲part5~どの工程をカバーするのかという質問(2013.05.22)
- わかりやすいAgile開発の教科書はお勧めです(2013.05.11)
- ソフトウェア開発に特有な技術~ソフトウェア見積り(2011.08.21)
- Scrumの見積りと計画づくりは何故優れているのか?(2011.08.24)
- ソフトウェア開発における「かんばん」とは何か(2013.05.07)



コメント