書評「初めて学ぶソフトウエアメトリクス ~プロジェクト見積もりのためのデータの導き方」
ローレンス・H・パトナム (著) , ウエア・マイヤーズ (著) , 山浦 恒央 (翻訳) , 日経BP社
設計・開発
概要
ソフトウェア開発プロジェクトを正しく見積り、プロジェクトを成功させる為にはどうすればよいのか。本書は、その答えとして、5つの中核メトリクス、すなわち、開発時間、工数、機能量、信頼性、生産性に注目した、メトリクスの使い方を解説する。プログラム開発には「最短開発時間」があるとして、時間と工数のトレードオフの判断をしながら、現実的な見積もり方法を説明する。入札の評価、プロセス改善へのメトリクスの活用法も充実している。
本書の使い方
第1部(第1章~第4章):ソフトウェア開発現場の現状と、5つの中核メトリクスの概要、メトリクスを使用することのメリットを知ることが出来る。すべての読者に通読を薦める。
第2部(第5章~第8章):本書の技術的な中心となる。5つの中核メトリクスの使い方を詳しく知ることができる。実務担当者に通読を薦める。
第3部(第9章~第15章):具体的に、開発現場にメトリクスを導入する際の考え方を知ることが出来る。管理、計画に携わる担当者は通読の上、必要に応じて興味のある部分を再読すると良い。
第4部(第16章~第22章):メトリクスを応用し、経営やプロセス改善に活用する方法について知ることが出来る。入札、プロセス改善に携わる管理者、経営者に薦める。
何を学べるか
第1部 ソフトウエア開発成功の知恵
成功しているソフトウェア開発会社においては、キーとなるメトリクスを開発プロセスの中で、適切に融合させている。この融合が「ソフトウェア管理を成功させる知恵」であり、これにより精度の高い予測が可能となる。第1部では、このことを様々な角度から考察する。
第1章 メトリクスが成功した組織
メトリクスの導入に成功した組織を紹介する。一方で組織の成熟度の低い会社がまだまだ多数派である現状を述べたうえで、メトリクスの活用により、開発プロジェクトを成功に導くことができることを説明する。とりわけ、「プロセス」「標準化」「開発ツール」「ソフトウェア製品」「リスク」の5つと、メトリクスを結びつけることが重要であると著者は説く。
第2章 限りある資源とメトリクス
ソフトウェア開発とメトリクスをうまく組み合わせることが出来ないのは、稚拙な方法でメトリクスを適用しているからである、と著者は説く。効果的で適切なメトリクスとして、開発時間、工数、機能量、信頼性、生産性の「5つの中核メトリクス」を紹介する。
第3章 メトリクスとソフトウェア開発の融合
よく考えずにメトリクスをプロセスに適用すると、プログラマの作業に不必要な負担をかける。一方で、適切なメトリクスを効率よく適用するとプロセスの信頼性や効率が上がる。本章では、ソフトウェア開発における各フェーズを分析し、メトリクスをプロセスと統合させる方法を検討する。
第4章 予測能力を希望
現在、ソフトウェア開発が危機的であること、その混乱の要因を解説し、正確な予測が最も期待されている現状を紹介する。その上で5つの中核メトリクス間の相関関係と、いくら努力しても、それ以上早く開発できない、「最短開発期間」の考え方を紹介する。メトリクス間に存在するトレードオフの関係などを考察し、問題解決の糸口を探る。
第2部 5つの中核メトリクス
第2部では効率よくプロジェクトをコントロールする上で必要となる、5つの中核メトリクスの具体的な適用法を取り上げる。5つとは、開発時間、工数、機能量、信頼性、生産性を指す。これらの予測値と実測値を比較することで、プロジェクトのコントロールが可能となる。また計測値を使えば、ソフトウェア開発をどの程度改善できたかが、定量的に知ることが出来る。
第5章 計測するということ
ソフトウェアの開発には「最短開発時間」が存在することを解説する。その前提の上で、ソフトウェア開発を計測する上でキーとなるコンセプトを解説する。「時間」「工数」「品質」「総作業量」「プロセス生産性」をそれぞれ掘り下げて説明する。
第6章 規模計測と機能メトリクス
ソフトウェア開発における作業量をどのように計測するのかを解説する。シャノンのビット数、総機能量の計測法、過去の履歴の利用など、様々な計測方法を紹介する。また、サイズの見積り方法を解説する。
第7章 生産性ジャングルの中央突破
5つの中核メトリクスの相関関係を数式として提示する。その上で、本章ではとりわけプロセス生産性に注目する。プロセス生産性を考慮することで、現実的な見積もりが可能となる、と著者は説く。他のメトリクスとの関係を考察しつつ、プロセス生産性を計測する方法を説明する。
第8章 欠陥率による信頼性測定
信頼性を確保するためには欠陥を減らす必要がある。本章では、欠陥を表すメトリクスを紹介する。またエラーを最小化するための計画の立て方として、機能、時間、工数、プロセス生産性に注目した戦略の立て方を紹介する。
第3部 開発フェーズでのメトリクス利用
第3部では、実際の開発プロジェクトにおいて、どのようにメトリクスを適用して計画や管理を行えばよいかを解説する。プロジェクトの開始段階から、要件定義と機能設計、実装とテスト、そして稼働と保守に至る各フェーズにおける、メトリクスの考え方と使い方を説明する。
第9章 第1の難関:実現可能性分析
多くの開発プロジェクトが途中でとん挫する理由の一つとして、最初に実現可能性を分析しなかったことが挙げられる。本章ではフェーズⅠ、すなわちプロジェクトに入る前にそのビジョンを検討する、方向付けフェーズを取り上げ、プロジェクトの実現可能性を分析する視点を解説する。
第10章 第2の難関:機能設計
本章では、フェーズⅡ、すなわち要求仕様から機能設計を含む、推敲フェーズを取り上げる。ソフトウェアの品質はこのフェーズⅠとⅡで決まる、と著者は説く。要求仕様の数式化、リスクの洗い出しなどのポイントを説明しつつ、フェーズⅡ自体のスケジュールと工数を見積もる方法を解説する。
第11章 トレードオフの効果
開発プロジェクトを現実的に見積る上で、トレードオフの考え方が重要となる。プロジェクトには最短開発期間が存在し、それより短い非現実的領域にスケジュールが入らないことが大切であること、時間と工数、時間と欠陥にはトレードオフの関係があることを述べる。そのうえで、プロジェクトの人数が少ないほうが品質が高い傾向があることなど、現実的な見積もりを行うためのポイントを解説する。
第12章 「範囲」の見積りから「点」の入札へ
見積りには不確定要素が常に存在するが、顧客は単一の入札値を求めてくる。本章では、入札において、不確定要素がビジネスに与える影響について解説する。時間と工数の相関関係を表すグラフを分析しつつ、コスト割れ、納期遅延などのリスクを回避する方法を考察する。
第13章 本体構築と開発能力
本章ではフェーズⅢ、すなわち本体構築フェーズにおける計測と、プロジェクトのコントロールについて解説する。実際にプロジェクトが動き始める前に、機能数、工数を見積り、人員割り当てなどの事前準備をしっかり行うことの重要性を説明する。また成功プロジェクト、失敗プロジェクトの様々なメトリクスが示すパターンを比較しながら、プロジェクトの監視とコントロールの方法について説明する。
第14章 稼働・保守フェーズ
本章では、フェーズⅣ、稼働・保守フェーズについて解説する。本章では、フェーズⅣがいつ開始され、いつ終了するのか。顧客を満足させ、なおかつ、利益を出すためにはどのような点が重要なのかを解説する。 第15章 問題プロジェクトの再計画 問題が発生し、当初の見積もりよりも大きく遅れたり、予算を超過したプロジェクトを、再度計画しなおす場合のポイントを解説する。
第4部 プロジェクトマネジメントでのメトリクス利用
ソフトウェア開発でメトリクス適用法を習得すると、プロジェクトだけでなく、開発組織全体もコントロールできる。例えば経営上層部は、全プロジェクトの財務状況を把握、管理でき、成功するための具体例を提示できる。また組織全体としてメトリクスの履歴を取ることで、改善の度合いも評価できる。第4部では、こうした、プロジェクトをより上位の管理レベルでコントロールするための方法について解説する。
第16章 通信会社における外注会社の評価例
ソフトウェア開発を外注した場合、当初の見積もりよりも、システムのボリュームは膨らみがちである。本章ではある通信会社が、発注先の開発会社に対して、中核メトリクスを用いてプロジェクトの現状を把握することにより、プロジェクトの成功率を向上させた事例を紹介する。
第17章 入札値の評価
ソフトウェア開発の入札にあたって、発注側と開発側の双方が協調的にコミュニケーションを行うためには、5つの中核メトリクスが有効であることを解説する。メトリクスと統計データを用いることにより、高い精度で、入札額の妥当性、スケジュール、工数、信頼性を見積ることが出来ることを、データを示しながら解説する。
第18章 プロジェクトの人員配置管理
経営上層部は、社内の人員リソース全体を管理し、どのプロジェクトがいつ完了し、新しいプロジェクトに人員を配置できるか、などを管理する必要がある。この管理を進める上で強力なツールとして、「マスタープラン」を紹介する。その効果的な使い方を事例を挙げて解説する。
第19章 ソフトウェア開発プロセスの改善
本章では、ソフトウェア開発において、開発時間、工数、信頼性を向上させる、プロセス改善について解説する。ソフトウェア開発をプロセスに分解し、それぞれのフェーズ毎に解説した後、プロセス改善を難しくしている原因を分析する。その上で、プロセス改善のためには、個人、プロジェクトチーム、組織全体、の3つのレベルでの協調が必要であることを説く。
第20章 再利用可能コンポーネントの有効利用
ソフトウェア開発において既存資産の再利用をうまく行うことが出来れば、開発規模を抑えることが可能である。しかし、再利用は容易ではない。本章では過去から現在にいたる、ソフトウェアの再利用の歴史を振り返り、現代において、有効な再利用を考察する。本章では主にコンポーネントベースのソフトウェア開発の考え方を紹介する。
第21章 交渉とメトリクス
利害を異にするステークホルダー間で、交渉事になった場合、双方のギャップを埋めるにあたって、客観的な評価基準としてメトリクスをベースに交渉を進めることが重要である。本章では、ソフトウェア開発にまつわる様々なトラブル、交渉事を分析し、その際におけるメトリクスの有用性を解説する。
第22章 ソフトウェア開発とヤル気
ソフトウェア開発を支える究極のリソースは、そこで働く人であり、彼らがやる気をもって働き続けられる環境を構築することが管理層の仕事である。本章では、プロジェクトメンバーのやる気を起こす要因を挙げ、そのためにしなければならないことについて解説する。最後に本書の結びとしてソフトウェア開発を正確に見積り、成功に導くための要点をまとめる。
付録A メトリクスの精度
メトリクスの精度はどこまで求めるべきか、についてのエッセイを掲載する。
付録B 中核メトリクスの性質
6,300件のプロジェクトから収集した中核メトリクスのデータをグラフにして解説する。
付録C 生産性指標について
著者が考案した、生産性指標(PI:Productivity Index)を導く数式を示す。
付録D 最短開発時間の算出法
著者が考案した、最短開発時間を算出する数式を示す。