TEF 東海メトリクス勉強会 第 10 回
方向を変えなければ、いま向かっているとこ ろにしかたどり着けない -老子
まだ着かないの? -こどもが、ドライブの とき親に必ず聞く言葉
進み具合はどう? -ソフトウェア管理者が
、開発者とテスト担当者に必ず聞く言葉
プロジェクトの目的
目的に対して現在位置を正確に知る
進捗状況を効果的に追跡
軌道修正
効果的な要求管理ができる
創造的作業・調査作業がつきもの
進捗管理を効果的に行うことが重要
進捗を測定するメカニズムとメトリクス を紹介する
紹介するメトリクスはインプロセスメトリクス と呼ばれる
1. プロジェクトのマイルストーン
2. コード結合 3. テストの進捗
4. 欠陥の発見と修正 5. プロセスの有効性
ソフトウェアを出荷するという目標 目標を達成するために
プロジェクト計画を明確に定義
詳細化すべき
進捗評価が促されるくらい
最も良い方法は
マイルストーンを測定可能にしておくこと
2週間間隔で定義するのが一般的
ただし、マイルストーンに何を選ぶかは
さまざまな要因に依存する
開発方法論
プロジェクトマネジメント方法論
プロジェクトのリスクレベル
チームの経験と成熟度
管理チームの快適さレベルと管理スタイル 要因を考慮したうえで、最良な方法は
Specific (明確性)
Measurable (測定可能性)
Achievable (達成可能性)
Relevant (関連性)
Time based (時間性)
ウォーターフォール型開発モデルに従って プロジェクトを進める…
要求定義
アーキテクチャ設計
詳細設計
コーディング
結合
テスト
カットオーバー
要求定義 ・・・
マイルストーン 期限
レビュー可能な要求仕様草稿の作成 2006年6月1日 開発メンバーとテストメンバーによる内部要求レビュー 2006年6月8日 要求仕様の改定と顧客への提出(顧客の同意確認のため) 2006年6月15日
顧客承認の獲得 2006年6月25日
要求仕様の最終版作成、公式な変更管理アイテムとして登録 2006年6月30日
Specific (明確性):
それぞれのマイルストーンの責任者を 決めるとよい
Specific (明確性):
マイルストーン 期限
レビュー可能な要求仕様草稿の作成 2006年6月1日 開発メンバーとテストメンバーによる内部要求レビュー 2006年6月8日 要求仕様の改定と顧客への提出(顧客の同意確認のため) 2006年6月15日
顧客承認の獲得 2006年6月25日
要求仕様の最終版作成、公式な変更管理アイテムとして登録 2006年6月30日
Measurable (測定可能性):
測定可能な関連イベントがある
「要求仕様の草稿は完成したか?」
イベントを測定すれば、達成度を把握できる
「レビュー会議は開催されたか?」など
Measurable (測定可能性):
マイルストーン 期限
レビュー可能な要求仕様草稿の作成 2006年6月1日 開発メンバーとテストメンバーによる内部要求レビュー 2006年6月8日 要求仕様の改定と顧客への提出(顧客の同意確認のため) 2006年6月15日
顧客承認の獲得 2006年6月25日
要求仕様の最終版作成、公式な変更管理アイテムとして登録 2006年6月30日
Achievable (達成可能性)
マイルストーンの設置間隔 過去の類似プロジェクト
リソース配分とプロジェクトニーズ 同じ顧客の過去プロジェクト
Achievable (達成可能性)
きちんと考慮しているなら...
達成可能性は高いと考えてよいだろう
Measurable (測定可能性):
マイルストーン 期限
レビュー可能な要求仕様草稿の作成 2006年6月1日 開発メンバーとテストメンバーによる内部要求レビュー 2006年6月8日 要求仕様の改定と顧客への提出(顧客の同意確認のため) 2006年6月15日
顧客承認の獲得 2006年6月25日
要求仕様の最終版作成、公式な変更管理アイテムとして登録 2006年6月30日
Relevant (関連性):
どのようなシステムを構築するのか
内部チームと顧客の両者が合意しているのか
これを確認することは・・・・・・・・・
Relevant (関連性):
製品の出荷を成功裏に収め 最終的に顧客満足を得るのに
極めて重要
Relevant (関連性):
マイルストーン 期限
レビュー可能な要求仕様草稿の作成 2006年6月1日 開発メンバーとテストメンバーによる内部要求レビュー 2006年6月8日 要求仕様の改定と顧客への提出(顧客の同意確認のため) 2006年6月15日
顧客承認の獲得 2006年6月25日
要求仕様の最終版作成、公式な変更管理アイテムとして登録 2006年6月30日
Time based (時間性):
それぞれのマイルストーンには 期限が設けてあるので
時間性を満たしている
Time based (時間性):
マイルストーン 期限
レビュー可能な要求仕様草稿の作成 2006年6月1日 開発メンバーとテストメンバーによる内部要求レビュー 2006年6月8日 要求仕様の改定と顧客への提出(顧客の同意確認のため) 2006年6月15日
顧客承認の獲得 2006年6月25日
要求仕様の最終版作成、公式な変更管理アイテムとして登録 2006年6月30日
開発工程が長くなればなるほど・・・
その中間にマイルストーンを設置したい 長期間にわたる
作業の進捗状況を見えないまま
放置しておきたくないと思うのは・・・ ごく常識的なこと
ググってみました
プロジェクト管理ツール MS Project
MS Project RedmineRedmine
開発マイルストーン 開発マイルストーン
ガントチャート forExcel ガントチャート
forExcel
OpenPro j
OpenPro j
TaskLine TaskLine GanttPrje
ct
GanttPrje ct
Tra c Tra
c
TracGant t
TracGant t
dotProje ct dotProje
ct ProjectKeepe
r
ProjectKeepe r
]project- open[ ]project-
open[
Retrospectiv a
Retrospectiv a
Tugboat GTD Tugboat レビュアブルマインド GTD
レビュアブルマインド Tam
a Tam
a JIRAJIRA
ナレジオン ナレジオン
Basecam p
Basecam p
Project.n et Project.n
et
eGroupWa re
eGroupWa re
SugarCR M SugarCR
M Gantte
r Gantte
r
Backlo g Backlo
g SI Object
Browser PM SI Object
Browser PM ProjectPier
ProjectPier
activeColl ab activeColl
ab TUTOS TUTOS
Zoho Project
Zoho Project TimeTracker
FX
TimeTracker FX
いろいろなビューを用いて可視化する
WBSWBS
マイルストーン マイルストーン
工数管理工数管理
PERT 図 PERT 図 ドキュメント管理 ドキュメント管理 コスト管理
コスト管理
イナズマ線 イナズマ線
進捗管理進捗管理 タスク管理
タスク管理
課題管理課題管理
ガントチャート ガントチャート
「ゲート」として利用できる 次のステップへと進むために
達成しなければならない基準が設けられた
プロジェクトの完了と成功を決定づける ソフトウェアプロジェクトの
プロジェクトの区切りである
重要な要因である
ゲートの基準を満たせないと・・・
ゲートの基準を満たしていないのに、
後に続くアクティビティを開始してしまうと リソースの再割り当てを行うことになったり
コストのかかる手戻しに結びつきかねない
上級マネージャがレビューし、承認したビジネスケース:プロジェクト を開始する前に、このプロジェクトに資金を投入してよいか判断する必 要がある。
開発チームがレビューし、承認したソフトウェア設計:コードを作成し 始める前に、ソフトウェア全体を知っておきたい。
重要度の高いすべてのコードに対するコードレビューの完了:レビュー により、できるだけ多くの欠陥を発見し、修正を終えておくことが望ま しい。レビューは、費用がかかる正式なテストを実施する前に実施する
。
正式テスト計画の完全な実施と、目標とした成功レベルの達成:ソフト ウェアが顧客の要望や契約上の期待に合致していることを、出荷前に確 認する必要がある。
実際にコードを作成
単体テストを実施
正式なシステムテストのために結合する作業
これらの作業を含んだソフトウェアライフサ イクル工程のひとつ
何度も実施する一連の作業
新たな欠陥を作りこんでしまうことがある
新規に作成したコードと
すでに結合を終えたコード両方に
修正するには新しいコードを作成・結合 この基本的な活動
決定的に重要
進捗状況を信頼できる方法で可視化が必要
成熟度の低い組織では
「完了率」を使っているかも
定義・計算次第では誤解を招く恐れ
開発者の主観によって決められたりすると
異なる結果が容易に得られる 間違った認識
「 M 」が欠落、 SMART の基準を満たしてい ない
そうでなく・・・
作業工数の工数を見積もり
値の比較結果に基づいて完了率が測定
「完了したマイルストーン比率」を測定
異なる結果が容易に得られる
コード結合の目標と密接に
「関連している」わけではない
どれだけ多くの工数を費やしたか
予算の観点から把握
コード量・コーディング進捗率
コード量・コーディング進捗率
作業工数から何も知ることができない
筆者が選ぶメトリクス
結合作業に引き渡したコード行数( KLOC)
別名、コード結合メトリクス
結合ライブラリへチェックインした行数 変更するには
正式な変更要求が必要
許容可能な値の程度
長期間わたって調査しておく必要がある
許容可能な値を
「期待されるコード結合パターン」
と呼ぶことにする
注目すべきは
結合時期が早いほど
プロジェクトのリスクが低減する 適切にテストするために多くの時間を
確保できる
1. プロジェクトの特性に最も適した成功コー ド結合パターンを選ぶ
2. 選択したパターンに基づいてコード結合計 画を作成する
3. コーディング工程におけるコード結合の進 捗実績を追跡し、計画と比較する。
4. 実績が計画から乖離したときには、適切な 対策を実施する
コーディング工程におけるコード結合 というマイルストーン
SMART の「 M 」にすることができ る
正式テスト
観測や測定が最も容易に行える段階のひとつ
テストの進捗の評価
テスト計画に基づいて行う
テスト計画には、テスト工程で
どのようなテストを実行するのか明記
テスト工程
何件のテストケースを実行
何件のテストケースがパスしたのか
明確に観測できる
1.ある時点で実行したテストケース数
2.ある時点で成功したテストケース数
許容可能な値の管理限界
実績値がこの範囲の外側に出てしまった場合 何らかの対策が必要
SMART の「 M] を満たしたテストマイルス トーンを設定できる
第 7 章で述べたとおり
欠陥は最も基本的で、かつ観測可能なもの
発見と修正を測定すると
品質とスケジュールの両方の進捗を測定可能
パワフルなインプロセスメトリクス
第 7 章で欠陥パターンを予測する方法
テストの進捗と同じく
実績値が予測値の管理限界の外側に出た場合
対策が必要
発見の実績値の曲線のピークが
予測パターンより早く・低い
⇒良いニュースかも ⇔ 逆も然り
テキスト図 10.5 と 10.6 の例
計画は過去の履歴の平均値に基づいている
標準偏差に基づいた管理限界を与える
欠陥発見計画を立案すれば
計画に対する実績の追跡と
計画から大幅に乖離した部分の調査も可能
テキスト図 10.7 の例
発見、修正済み、修正未了欠陥数
新しい欠陥が発見されるよりも早く
欠陥の修正を完了すべき
(欠陥バックログを減らす)
コードの品質を出荷可能状態へ近づける
欠陥除去率:欠陥発見パターンの実績から、 90%を達成していること
深刻な影響をもたらす欠陥がバックログに 残っていないこと
バックオフィスの業務自動化システムに対し てセーフティークリティカルなシステムの基 準はずっと厳しい
欠陥発見曲線の実績値を 1 日に割り当てた 要因による欠陥除去数結びつけて評価しても よく、出荷可能な品質レベルにいつ到達する か予測できるようになる
欠陥発見の実績値に対して
開発エンジンの欠陥修正能力を考える 欠陥バックログが時間経過とともに どのように減っていくかを予測できる
初期の計画とインプロセス
比較対象となる類似プロジェクトの選択
開発プロセスをどのくらい効果的に実施できるか 潜在的な期待
選択したメトリクスの目標値などに反映
前もって予測できないものの・・・
ばらつきが間違いなくある
他のメトリクス関連させて使えるような プロセス有効性メトリクス
導入することには意義がある
インスペクション有効性メトリクス
定義
インスペクション時間 ÷ インスペクション対象成果物の規模
インスペクション時間:インスペクションに費やした総工数 ( 人時 ) インスペクション対象成果物の規模:コードであれば KLOC
要求と設計であれば FP
プロジェクトが「計画どおりに」
進んでいるか判断するために
欠陥発見メトリクスと関連付けて
使うことができる
シナリオ1:
欠陥発見率は計画より低い
コードインスペクション有効性は目標どおり
または、目標を上回っている
「プロジェクトは安定して進んでいるようだ
。予想よりよさそう。現段階で対策必要なし」
シナリオ2:
欠陥発見率は計画より低い
コードインスペクション有効性も目標下回る
「欠陥の見逃しがあったに違いない
インスペクションを再び実施するか、または、。 これ以降の工程での欠陥除去数を増強する
それにはリソースの見直しが必要である
シナリオ3:
欠陥発見率は計画より多い
コードインスペクション有効性は目標どおり
または、目標を上回っている
「有効なインスペクションが実施できたので 早い段階で欠陥を見つけられたのだろう
コードの品質大丈夫。継続的状況把握必要。」。
シナリオ4:
欠陥発見率は計画より多い
コードインスペクション有効性は目標下回る
「注意!コード品質はどうも怪しい。 品質確保のための改善措置を直ちに実施。
スケジュール、予算の見直し必要。」
ソフトウェアプロジェクト
元来、リスクがつきもの
成功を収めるためには、
プロジェクトの進捗を正確に評価できる ことが徹底的に重要
1. 開発ライフサイクル全体をカバーする SMART な マイルストーンを定義しなさい
2. コード結合メトリクスと、対象とするコード結合 パターンを定めなさい
3. テストのメトリクスを定め、その目標値を設定し なさい
4. 欠陥発見および欠陥修正のパターンを定め、欠陥 バックログを監視しなさい
5. 開発ライフサイクルのすべての主要工程に対して
、プロセス有効性メトリクスとその目標値を設定 しなさい。