« ドメイン特化言語の感想~ドメイン専門家とプログラマが会話するための環境作り | トップページ | Atlassian製品による「No Ticket, No fork!」 »

2012/12/24

RedmineにおけるEVMの考え方

Redmine.JP Blogで>Redmine 2.2の新機能が紹介されていたのでメモ。

Redmine 2.2新機能紹介: 休業日の設定 | Redmine.JP Blog

Redmine 2.2新機能紹介: プロジェクトをまたいで子チケットを作成 | Redmine.JP Blog

Redmine 2.2のCHANGELOG (新機能のみ・日本語訳付き) | Redmine.JP Blog

【1】「休業日の設定。休業日は後続するチケットの開始日の再計算とガントチャートの表示で使われる」「先行するチケットの期日を前倒しした際に後続するチケットの開始日・期日も前倒し」などの機能改善を見ると、最近のVerUpが進捗管理の機能改善に力を入れているように思える。

【2】チケットの属性には開始日・期日・進捗率があるので、ガントチャートというビューをすぐに表示できるし、EVMプラグインを入れれば、EVMでコスト管理も可能。

EVM - Plugins - Redmine

imaginary-cloud/redmine_evm ・ GitHub

EVMプラグインでは、PV・AV・EVは以下のように定義されているらしい。

PV=チケットの予定工数
AC=チケットの実績工数の和
EV=チケットの予定工数 * 進捗率(%)

EVの解釈は、例えば、現時点のチケットが次のように考えると分かりやすい。

チケットの予定工数=10人日
チケットの実績工数の和=8人日
チケットの進捗率=60%

この例では、以下の計算になる。

PV=10人日
AC=8人日
EV=6人日(=10MD * 60%)

つまり、本来の予定(PV)では、10人かかるタスクに8人分のコスト(AC)が既に消費されているのに、成果物(出来高:EV)は6人分のタスクの量でしか達成されていない。
本来は、8人分のコストが計上されているなら、成果物も8人分の分量ができて然るべきなのに、6人分しかできていないから、効率が悪い。
この時の「効率」という概念がCPIであり、CPI=EV/AC で計算される。
つまり、CPI=6/8=0.75ゆえに、1よりも小さいからコストパフォーマンスが悪い。
CPIは開発能率、生産能力に相当するので、定義は違うけれどもアジャイル開発のVelocityに似ている。

【3】EVMプラグインのスクリーンショットにあるように、EVMプラグインはSPIやCPIもデフォルト表示されるので、プロジェクトの進捗でどれだけ工数を浪費しているのか、リアルタイムに観察することができる。
できれば、Redmine metrics pluginのようにEVMをマイルストーン単位にバッチ処理で集計できれば、マネージャの意に沿うようになるだろう。

redmine_evm/screenshot.png at master · imaginary-cloud/redmine_evm · GitHub

Redmine_evm

スクリーンショットの例では3つある。
Test_Redmine_Evmバージョンでは、PVがかなり大きく、EVがACを上回っているものの、PVよりもはるかに小さい。
CPI=1.2なので、1人投入して1.2人分の仕事はしているが、SPI=0.33なので、スケジュールはかなり遅れている。
普通は、他のプロジェクトに人員が取られて、予定通りにメンバーをアサインできず、少ない人数で進めている状況と思われる。
計画通りにメンバーをアサインできていないのだから、マネージャは組織上の上司に訴えかけてプロジェクトを打破する必要がある。

test_version_1バージョンでは、当初はPV=0の時期にACが発生していて、その後、ACは増えていないのにEVが増えている。
色々解釈できるが、当初の計画よりも先にメンバーがタスクを消化しようとしていたが、途中で実績工数を更新せずに進捗率だけ更新していると思われる。
マネージャはチーム状況をヒヤリングし、正しく実績入力するように指導するだろうと思う。

test_version_2バージョンでは、ACが一時期PVを追い越すほど高止まりしていて、EVが停滞している。
CPIもSPIも1よりもはるかに小さい。
普通は、メンバーが残業や休日出勤でリカバリーしようとしたが、本来想定している出来高(アウトプット)が出せていない状況に相当する。
多分デスマーチプロジェクトになっているのだろう。

【3】RedmineからPMBOKのEVMを計測する方法: プログラマの思索にも書いたけれども、EVの考え方には、WF型開発とアジャイル開発の2種類がある。
EVを進捗率で考える方法がWF型開発、EVをチケットが完了したかどうかで決める考え方がアジャイル開発。
つまり、仕掛中の成果物をEVという出来高に含めるかどうかで、EVの考え方が変わってくる。

マネージャの仕事の殆どは予算管理やコスト管理なので、EVの基準を定めることはまさにプロジェクトの成功基準を定めることと同じ。

EVMに限らず、先行・後行、クリティカルパスの計算なども、チケットの属性という入力さえあれば実装可能。
RedmineはRailsで作られているのだから、Rubyでアジャイルに開発してしまえばいいだけのことだ。

|

« ドメイン特化言語の感想~ドメイン専門家とプログラマが会話するための環境作り | トップページ | Atlassian製品による「No Ticket, No fork!」 »

プロジェクトマネジメント」カテゴリの記事

Redmine」カテゴリの記事

ソフトウェア工学」カテゴリの記事

チケット駆動開発」カテゴリの記事

Agile」カテゴリの記事

Ruby」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« ドメイン特化言語の感想~ドメイン専門家とプログラマが会話するための環境作り | トップページ | Atlassian製品による「No Ticket, No fork!」 »