(57)【要約】【課題】ソフトウェア開発プロジェクト（ＰＪ）の工数見積り精度の向上と伴に生産性  （工数）  目標を決定する際に開発現場との合意の形成を容易にし、開発プロセス改善活動の推進を図る。【解決手段】品質、生産性の高い複数モデルＰＪを抽出し、これらの実績生産性データに基いて基本（平均化）生産性モデルｆ０（ｘ）、抽出ＰＪのばらつき（ｆ０（ｘ）に対する生産性ギャップの大きさ）を求める（Ｓ１０２）。経験者によりモデルＰＪのばらつきの要因分析を行い要因とその重みをＰＪ特性として得る（Ｓ１０３）。ＰＪ特性と生産性ギャップの大きさとを基に生産性ナレッジ（標準生産性モデルｆ１（ｘ）×ＰＪ特性係数ｃ）を決定する。開発工数目標の見積り時に、標準生産性モデルｆ１（ｘ）の調整によって開発組織全体の生産性の向上を図り、対象ＰＪのＰＪ特性係数の調整によってコスト管理を可能にする。【選択図】        図２
2004334321.tif 000002
【特許請求の範囲】
【請求項１】
過去に実行されたソフトウェア開発プロジェクトから選ばれた複数のモデルプロジェクトの実績情報に基づいて一定の生産性傾向を示す基本生産性モデルを作成する手順、前記複数のモデルプロジェクトのプロジェクト特性を分析する手順、該分析手順により得られたプロジェクト特性と前記複数のモデルプロジェクトの前記基本生産性モデルに対するばらつきに基づいて生産性モデルに適用するプロジェクト特性係数を求める手順、該プロジェクト特性係数を前記複数のモデルプロジェクトに適用することにより前記基本生産性モデルを標準化する標準化生産性モデル作成手順、の各手順よりなる生産性ナレッジ構築方法。
【請求項２】
請求項１に記載された生産性ナレッジ構築方法において、前記実績情報が開発規模に対する開発工数の関係を示す情報であることを特徴とする生産性ナレッジ構築方法。
【請求項３】
請求項１又は２に記載された生産性ナレッジ構築方法において、分析される前記プロジェクト特性を複数のモデルプロジェクトにばらつきを生む要因とその重みとし、前記プロジェクト特性係数として、前記ばらつき範囲に標準化生産性モデルを収め、かつプロジェクト特性の違いに応じたバリエーションを用意するようにしたことを特徴とする生産性ナレッジ構築方法。
【請求項４】
請求項１乃至３のいずれかに記載された生産性ナレッジ構築方法の各手順をコンピュータに実行させるためのプログラム。
【請求項５】
請求項４に記載されたプログラムを搭載したコンピュータを備え、生産性ナレッジを構築する手段として該コンピュータを機能させるようにしたことを特徴とする生産性ナレッジ構築システム。
【請求項６】
開発工数目標を決定する開発対象プロジェクトの規模を見積る手順、該開発対象プロジェクトのプロジェクト特性を請求項１乃至３のいずれかに記載された生産性ナレッジ構築方法における前記プロジェクト特性係数によって評価する手順、見積られたプロジェクトの規模と評価結果として得られる前記プロジェクト特性係数を請求項１乃至３のいずれかに記載された生産性ナレッジ構築方法によって作成された前記標準化生産性モデルに設定することにより対象プロジェクトのソフトウェア開発工数目標を決定する手順、の各手順よりなるソフトウェア開発工数目標決定方法。
【請求項７】
請求項６に記載されたソフトウェア開発工数目標決定方法の各手順をコンピュータに実行させるためのプログラム。
【請求項８】
請求項７に記載されたプログラムを搭載したコンピュータを備え、ソフトウェア開発工数目標を決定する手段として該コンピュータを機能させるようにしたことを特徴とするソフトウェア開発工数目標決定システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ソフトウェア開発プロジェクトの管理に用いることが可能な生産性ナレッジの構築方法、及びソフトウェア開発工数目標の決定方法に関し、特定すると、開発組織全体の生産性向上と開発コストの改善を狙いとし、組織資産として継続的管理を行うことを前提にした、生産性パラメータとプロジェクト特性よりなる前記生産性ナレッジの構築方法、及び構築された生産性ナレッジを開発組織の新規プロジェクトに適用し、開発工数目標を決定する方法、前記方法を実行するためのコンピュータプログラム及びシステムに関する。
【０００２】
【従来の技術】
従来からソフトウェアの開発プロジェクトを起こす際に、その開発計画の要件として所要工数の見積もりを行っている。開発工数の見積りは、プロジェクトの内容（特性）や要員の習熟度（メンバーの能力）などによってばらつきが大きく、正確な見積もりは難しい。
こうした開発工数の見積もりに、モデル・手法・専門ツールなどを用いる方法が従来から存在するが、どんな開発プロジェクトにおいても、そのまま適用できる解決方法ではない。例えばＣＯＣＯＭＯ（Ｃｏｎｓｔｒｕｃｔｉｖｅ  Ｃｏｓｔ  Ｍｏｄｅｌ）、ＦＰ（Ｆｕｎｃｔｉｏｎ  Ｐｏｉｎｔ）法などが、このような手法として知られている。ＣＯＣＯＭＯ法は、生産性に影響を及ぼす要因とその影響度合を推定し、推定した開発要因と開発工数から，開発人月、開発期間を見積るというやり方で、一般的な開発モデルを尺度として対象プロジェクトの違いを推定するという手法であるから、おおよその見積もりを可能とすることを意図した方法と考えられ、計画通りに開発を行っていくための目安を示す意味を持つものである。
【０００３】
【発明が解決しようとする課題】
しかしながら、ＣＯＣＯＭＯ法等は、一般的な手法として提示されたものであり、実際の開発プロジェクトに適用するためには、開発組織の成熟度や組織の背景にある文化などに応じたカスタマイズを必要とするが、現状では具体性、客観性に乏しいものとなり勝ちで、カスタマイズがうまく行かないために、見積もり精度が低く、有効な結果を導くことができない場合も少なくない。
また、開発工数などを見積もるこの従来手法における視点は、予測した工数と実際にかかった工数に大きな狂いはなく、計画通りに開発を行うようにするという点におかれており、開発組織全体の開発コストの改善や生産性の向上、という点を明確に意識するものではない。
従って、ＰＤＣＡサイクル（後記、図１に関する説明、参照）に基づいた組織のプロセス改善活動を実施する際に適用すると、活動の障害となる。つまり、ＰＤＣＡサイクルにおける生産性目標（工数目標）の決定には、開発部門における合意の形成が重要な要素となるが、具体性、客観性に乏しいものとなり勝ちである上記した従来手法を用いて見積もられた開発計画によると、合意の形成に困難を伴う。
本発明は、ソフトウェアの開発工数を見積もるための上記従来手法における問題点に鑑みてなされたものであり、その目的は、開発プロジェクトのソフトウェア開発工数の見積り精度を向上させるとともに、生産性目標（工数目標）を決定するにあたって開発部門における合意の形成を容易にして、開発組織のプロセス改善活動（開発組織全体の生産性の向上や開発プロジェクトのコスト管理）を推進し得るようにする、ことにある。
【０００４】
【課題を解決するための手段】
請求項１の発明は、過去に実行されたソフトウェア開発プロジェクトから選ばれた複数のモデルプロジェクトの実績情報に基づいて一定の生産性傾向を示す基本生産性モデルを作成する手順、前記複数のモデルプロジェクトのプロジェクト特性を分析する手順、該分析手順により得られたプロジェクト特性と前記複数のモデルプロジェクトの前記基本生産性モデルに対するばらつきに基づいて生産性モデルに適用するプロジェクト特性係数を求める手順、該プロジェクト特性係数を前記複数のモデルプロジェクトに適用することにより前記基本生産性モデルを標準化する標準化生産性モデル作成手順、の各手順よりなる生産性ナレッジ構築方法である。
【０００５】
請求項２の発明は、請求項１に記載された生産性ナレッジ構築方法において、前記実績情報が開発規模に対する開発工数の関係を示す情報であることを特徴とする方法である。
請求項３の発明は、請求項１又は２に記載された生産性ナレッジ構築方法において、分析される前記プロジェクト特性を複数のモデルプロジェクトにばらつきを生む要因とその重みとし、前記プロジェクト特性係数として、前記ばらつき範囲に標準化生産性モデルを収め、かつプロジェクト特性の違いに応じたバリエーションを用意するようにしたことを特徴とする方法である。
【０００６】
請求項４の発明は、請求項１乃至３のいずれかに記載された生産性ナレッジ構築方法の各手順をコンピュータに実行させるためのプログラムである。
請求項５の発明は、請求項４に記載されたプログラムを搭載したコンピュータを備え、生産性ナレッジを構築する手段として該コンピュータを機能させるようにしたことを特徴とする生産性ナレッジ構築システムである。
【０００７】
請求項６の発明は、開発工数目標を決定する開発対象プロジェクトの規模を見積る手順、該開発対象プロジェクトのプロジェクト特性を請求項１乃至３のいずれかに記載された生産性ナレッジ構築方法における前記プロジェクト特性係数によって評価する手順、見積られたプロジェクトの規模と評価結果として得られる前記プロジェクト特性係数を請求項１乃至３のいずれかに記載された生産性ナレッジ構築方法によって作成された前記標準化生産性モデルに設定することにより対象プロジェクトのソフトウェア開発工数目標を決定する手順、の各手順よりなるソフトウェア開発工数目標決定方法である。
【０００８】
請求項７の発明は、請求項６に記載されたソフトウェア開発工数目標決定方法の各手順をコンピュータに実行させるためのプログラムである。
請求項８の発明は、請求項７に記載されたプログラムを搭載したコンピュータを備え、ソフトウェア開発工数目標を決定する手段として該コンピュータを機能させるようにしたことを特徴とするソフトウェア開発工数目標決定システムである。
【０００９】
【発明の実施の形態】
本発明は、ソフトウェア開発プロジェクトにおける「生産性ナレッジ」を構築する方法及び構築された「生産性ナレッジ」をもとにソフトウェア開発工数目標を決定する方法に係わる。
「生産性ナレッジ」は、ソフトウェア開発プロジェクトの開発工数を見積るために構築される開発プロジェクトのモデルというべきものである。ここで構築される生産性ナレッジ  モデルは、高い精度で開発工数を見積もることを可能にするとともに、生産性目標（工数目標）を決定するにあたって開発部門における合意の形成を容易にして、開発組織のプロセス改善活動（即ち、開発組織全体の生産性の向上や開発プロジェクトのコスト管理）を推進し得るようにする、といった意図に沿った性格が与えられる。
ここで、上記のような性格が与えられる「生産性ナレッジ」の概念を把握するために、本発明に係わる実施形態により構築される生産性ナレッジの構成、生産性ナレッジの構築方法及び生産性ナレッジを用いた開発工数目標決定方法の概要を説明する。
【００１０】
この実施形態により構築される「生産性ナレッジ」の構成上の特徴は、下記式（１）により表現される。
〔生産性ナレッジ  Ｙ  〕＝  〔生産性パラメータ  ｆ１（ｘ）〕  ×  〔プロジェクト特性  ｃ〕‥‥式（１）
ここに、式（１）に示した生産性パラメータ  ｆ１（ｘ）は、開発プロジェクトの生産性能力を、例えば、開発規模当たりの工数（人月）のような定量的尺度で表現する。また、プロジェクト特性（係数）  ｃは、生産性に影響するプロジェクト単位の定性的な要因をベースに、開発部門の経験に基づいて工数への影響度を個々の特性として定量的に表現する。つまり、「生産性パラメータ」は、組織の生産性能力を表現しているのに対し、「プロジェクト特性」は、開発コスト要因を表現し、それぞれを変量としてとらえることにより、目的に応じた活用を可能にする。
【００１１】
また、上記式（１）に示した「生産性ナレッジ」の構築方法は、次に示す（１）〜（４）を基本的な手順とする。
（１）  サンプリング（モデルプロジェクトの抽出）
（２）  実績生産性の把握
（３）  プロジェクト特性の決定
（４）  生産性ナレッジの決定
上記（１）のサンプリングにおいては、開発組織全体における過去の開発プロジェクトから得られた経験値を蓄積したデータベースからの実績データ（定量化された生産性データ）に基いて、通常の開発体制をとるプロジェクトの中から品質、生産性の高いもの、という条件を満たす複数のモデルプロジェクトを抽出する。
上記（２）の実績生産性の把握においては、上記（１）で抽出された複数のモデルプロジェクトの生産性データをもとに基本生産性モデル（抽出された複数プロジェクトから求めた平均化モデル）を求め、さらに基本生産性モデルに対する抽出プロジェクトのばらつき（生産性ギャップの大きさ）を求める。
上記（３）のプロジェクト特性の決定においては、開発組織の熟練メンバーによる生産性ギャップ（上記（２）参照）の定性的な分析、即ち生産性に影響する要因の定性的評価（定性的事実）からプロジェクト特性（要因とその重み）を決定する。
上記（４）の生産性ナレッジ（上記式（１））の決定においては、プロジェクト特性係数ｃと生産性パラメータｆ１（ｘ）を決定する。
プロジェクト特性係数  ｃは、前段で決定されたプロジェクト特性（生産性に影響する要因とその重み）と、実績生産性として上記（２）で得られる生産性ギャップの大きさをとを基に決定される。
また、生産性パラメータｆ１（ｘ）は、標準化生産性モデル（後記する「真の生産性」に相当する）、即ちプロジェクト特性が中位（プロジェクト係数が１）であるときの生産性を表すもので、プロジェクト特性係数を複数のモデルプロジェクトの実績情報に適用することにより得られる標準化された情報に基いて作成される。
【００１２】
また、上記の手順により決定された生産性ナレッジは実用モデルとして開発プロジェクトの開発工数を見積るために適用される。
生産性ナレッジを適用して開発工数を見積る開発工数目標決定方法は、次に示す（ｉ）〜（ｉｉｉ）を基本的な手順とする。
（ｉ）  開発対象プロジェクトの規模の見積り
（ｉｉ）  開発対象プロジェクトのプロジェクト特性の評価
（ｉｉｉ）  開発工数目標の決定
上記（ｉ）における開発対象プロジェクトの規模の見積りにおいては、組織内で実行した開発プロジェクトのメンバーとして豊富な経験を持つ者によって、新規ＫＬＯＣといったような数値による見積もりを行う。
上記（ｉｉ）におけるプロジェクト特性の評価は、組織内で実行した開発プロジェクトのメンバーとして豊富な経験を持つ熟練者により対象プロジェクトを評価し、プロジェクト特性係数（上記（３），（４）参照）で結果を表現する。
上記（ｉｉｉ）の開発工数目標の決定においては、標準化生産性モデル（上記（４）参照）において、上記（ｉ）で見積られたプロジェクトの規模と上記（ｉｉ）で評価結果として得られるプロジェクト特性係数を設定することにより求められる開発工数を開発工数目標として決定する。
【００１３】
次に、上記で概要を示した、ソフトウェア開発プロジェクトにおける生産性ナレッジを構築する方法及び構築された生産性ナレッジをもとにソフトウェア開発工数目標を決定する方法の手順を、図面とともに示す以下の実施形態に基づきより詳細に説明する。
生産性ナレッジ構築方法、ソフトウェア開発工数目標決定方法の説明に先だって、これらの方法を適用してソフトウェア開発プロジェクトを管理するシステムにおける、プロセス改善活動について説明する。
図１は、本実施形態の方法を適用してプロセス改善活動を実施するＰＤＣＡサイクルに基づいた開発プロセスを示す図である。
図１に示すＰＤＣＡサイクルは、「目標値決定（Ｐｌａｎ）」→「実行（Ｄｏ）」→「評価（Ｃｈｅｃｋ）」→「改善措置（Ａｃｔｉｏｎ）」→「目標値決定（Ｐｌａｎ）」というサイクルの動作を行う点で、基本的には既存の生産性改善プロセスにおけると変りがない。このＰＤＣＡサイクルに従う開発プロセスでは、新たな開発プロジェクトを立案する際に、過去に実行（Ｄｏ）された開発プロジェクトを参照し、そのプロジェクトの実績の評価（Ｃｈｅｃｋ）結果を受けて、プロジェクトに必要な改善措置（Ａｃｔｉｏｎ）を施すようにする。このようにして新たに立案した計画により定められる目標値（Ｐｌａｎ）に従って開発を実行（Ｄｏ）し、さらにその実行結果に対する評価を重ねることにより、開発プロジェクトの改善を推進するものである。
【００１４】
こうしたＰＤＣＡサイクルに基づいた開発プロセスに、本実施形態の生産性ナレッジ構築方法及びソフトウェア開発工数目標決定方法を導入することにより、開発組織全体の生産性の向上や開発プロジェクトのコスト管理によって目的とするプロセス改善活動を推進することが可能になる。
生産性ナレッジ構築方法及びソフトウェア開発工数目標決定方法をＰＤＣＡサイクルに基づいた開発プロセスに導入するためには、図１において「生産性データ・定性的事実  データベース１０」「生産性ナレッジ構築  手順３０」「生産性ナレッジ  データベース５０」とデータの流れにより示されているような要素を必要とする。これらは、上記した生産性ナレッジを構築・利用する（［００１０］〜［００１２］、参照）ための、生産性ナレッジの構築に用いるデータ、生産性ナレッジを構築する手順、構築された生産性ナレッジをもとに開発工数目標を決定する手順、等に必要な要素である。
生産性ナレッジの構築に用いるデータは、開発組織全体における過去の開発プロジェクトの実行結果として得られた実績データ（生産性データ）を蓄積したもの、さらに過去の開発プロジェクトに対するプロジェクト特性（定性的事実）などの評価データを参照したものが含まれる（図１の「生産性データ・定性的事実データベース１０」への「実行（Ｄｏ）」「評価（Ｃｈｅｃｋ）」からのデータの流れに示される）。
生産性ナレッジ構築手順３０は、「生産性データ・定性的事実  データベース」により提供されるデータに基き、「改善措置（Ａｃｔｉｏｎ）」より指示される方針を反映した形で生産性ナレッジを構築する。
開発工数目標を決定手順は、生産性ナレッジ構築手順３０により構築された生産性ナレッジを開発プロジェクトの「目標値決定（Ｐｌａｎ）」における決定手順に用いるモデルに適用する。
なお、生産性ナレッジ構築手順３０及び開発工数目標を決定する手順については、下記の実施形態で詳述する。
【００１５】
「生産性ナレッジ」の構築方法に係わる実施形態を次に示す。
図２は、生産性ナレッジを構築する手順を示すフロー図である。図２に示すフロー図を参照しながら、同図に示すＳ１０１〜Ｓ１０４の各手順を追って、その詳細を以下に説明する。
「サンプリング（モデルプロジェクトの抽出）」‥‥（Ｓ１０１）
まず、生産性ナレッジを構築するために用いるプロジェクトを開発組織において過去に開発されたプロジェクトの中からサンプルプロジェクトとして抽出する。
所定の開発組織においては、開発プロジェクトの規模と工数の相関に一定の傾向が現れる。図３のグラフはこの相関を例示するもので、ｘ軸の開発規模（新規ＫＬＯＣ）に対するｙ軸の開発工数（人月）により、開発生産性のメトリクスを表している。図３の例では、グラフ中に点で示す各プロジェクトは、図示のようにばらつきがあるが、全体として図中に直線で示すような一定の傾向が現れる。
図３に示すようなデータを参照して、開発プロジェクトの中から品質、生産性の高いもの、というサンプリング条件を満たす複数のモデルプロジェクトを抽出する。抽出する際に、例えば、通常の開発体制とは異なる特殊な体制により開発が行われたプロジェクト等は、ノイズになるという理由で抽出の対象から除外する。品質、生産性の高いもの、というサンプリング条件は、開発組織のプロセス改善活動（即ち、開発組織全体の生産性の向上や開発プロジェクトのコスト管理）を推進し得るようにするという観点から重要な要素となる。従って、モデルプロジェクトの抽出は、開発されたプロジェクト全体の状況を把握でき、品質、生産性の判断が可能なメンバーによって行われることが必要で、開発組織側との協議といった方法を採り入れることにより、現場の判断を反映させるようにすることが望ましい。
【００１６】
「実績生産性の把握（生産性パラメータの把握）」‥‥（Ｓ１０２）
次に、前段で抽出されたモデルプロジェクトの「実績生産性」を把握する。
ここでは、モデルプロジェクトの過去の実績データをもとに定量モデル（生産性パラメータ）を作成し、また、モデルプロジェクト間の生産性ギャップの大きさを把握する。
定量モデル（生産性パラメータ）は、具体的には、サンプルプロジェクトにおける開発規模に対する所要工数の相関傾向を求めることによる。
図４は、４つのモデルプロジェクトＡ，Ｂ，Ｃ，Ｄ，が抽出された場合の各プロジェクトの実績データと生産性モデル（ｙ＝ｆ０（ｘ））の関係を示す。図４において開発規模（ｘ軸）−所要工数（ｙ軸）上に点で示される各プロジェクトの相関傾向は、最も相関係数の高い近似線により最も端的に表され、この近似線はサンプルプロジェクトの平均的な生産性を示す。このような相関傾向、即ち抽出された複数プロジェクトの平均的な生産性を示す生産性モデルを、ｙ＝ｆ０（ｘ）で表現し、「生産性ナレッジ」を構築する場合の基本となる生産性モデルであるということから、「基本生産性モデル」と呼ぶ。
【００１７】
さらに、前段で抽出されたモデルプロジェクトの生産性の違いにより生じる生産性ギャップの大きさを把握する。この生産性ギャップの把握は、後述する「プロジェクト係数」の決定に必要な手順である。
生産性ギャップの大きさは、具体的には、上記で抽出モデルプロジェクトの「実績生産性」として求めた基本生産性モデル（ｙ＝ｆ０（ｘ））に対する各抽出モデルプロジェクトの生産性の違いを定量的に評価する。
生産性ギャップの大きさの定量化は、以下のような手順により行う。
図４に示した基本生産性モデル（ｙ＝ｆ０（ｘ））に対する各抽出モデルプロジェクトＡ，Ｂ，Ｃ，Ｄ，を例にすると、「ｙ＝ｆ０（ｘ）」に対し、各プロジェクトはそれぞれ生産性の高低があり、ばらつきが生じる。そこで、まず「ｙ＝ｆ０（ｘ）」から各プロジェクトの実績開発規模ｘの「予測工数ｙ´」を求め、実績工数ｙと対比する。
つまり、下記式（２）により予測工数ｙ´を求める。
ｙ´＝ｆ０（実績開発規模）  ‥‥式（２）
図５は、抽出モデルプロジェクトＡ，Ｂ，Ｃ，Ｄの予測工数と実績のギャップを示すグラフである。図５において予測工数（ｘ軸）−実績工数（ｙ軸）上に示される点で基本生産性モデルに対する生産性の違いを表す。つまり、予測工数と実績工数が一致する「ｙ＝ｘ」線上に近いほど、「実績生産性」として求めた基本生産性モデル（ｙ＝ｆ０（ｘ））で示される傾向にプロジェクトの特性が合っていると言える。
上記のようにして求めた予測工数に対する実績工数の精度をｓとすると、下記式（３）により表すことができる。
ｓ＝  実績工数ｙ  ／  予測工数ｙ´  ‥‥式（３）
精度ｓは、基本生産性モデル（ｙ＝ｆ０（ｘ））に対する各抽出モデルプロジェクトの生産性の違いを定量化する。
図５において、プロジェクトＢのように生産性が高かったプロジェクトとプロジェクトＣのように低かったプロジェクトに示すように、プロジェクトがばらつく状況において、生産性ギャップの大きさの定量化は、生産性が変動する最大幅とし、例えば下記式（４）に従って、「生産性ギャップの大きさｌ」として求める。
ｌ  ＝  ｓ（ｍａｘ）  ／  ｓ（ｍｉｎ）  ‥‥式（４）
式（４）の生産性ギャップの大きさｌは、基本生産性モデル（ｙ＝ｆ０（ｘ））に対して最も生産性の高かったプロジェクトＢの精度ｓ（最小値ｓ（ｍｉｎ）で表す）に対する、最も生産性の低かったプロジェクトＣの精度ｓ（最大値ｓ（ｍａｘ）で表す）の比として表す。なお、この例では、生産性ギャップの大きさは、ｌ＝１．６５であったとする。
【００１８】
「プロジェクトの分析（プロジェクト特性の決定）」‥‥（Ｓ１０３）
次に、抽出モデルプロジェクトの生産性ギャップの定性的な分析を行い、その結果をもとにプロジェクト特性を決定する。
ここでは、全抽出モデルプロジェクトを対象に開発組織の熟練メンバーにより分析を行い、即ち生産性に影響する要因の定性的評価（定性的事実）として分析結果を得、その結果からプロジェクト特性（要因とその重み）を決定する。
全抽出モデルプロジェクトを対象にする定性分析は、生産性に影響してプロジェクトにばらつきを生む定性的要因として、各プロジェクトに共通の要因を抽出する。
この定性分析を実行するために用いる手法としては、開発現場の経験に基く認識・判断を採り入れることができる手法を導入することが望ましい。このような手法の導入は、高い精度で開発工数を見積もることを可能にするとともに、生産性目標の決定にあたって開発部門における合意の形成を容易にし、開発組織のプロセス改善活動を推進し得るようにする、といった目的を持つ生産性ナレッジの構築にとって重要なポイントになる。
従って、例えば、該当するプロジェクトのメンバーへインタビューし実体験を“定性的事実”で表現するといった手法を用いる場合にも、経験者の実体験をストレートに示すことが大事であり、詳細であればよいという訳でもない。このためには「良い結果を得ようとしない」「難しく考えない」「精度を求めない」ことが鍵となる。
ここでは、開発部門の経験に基く認識・判断を採り入れ、全抽出モデルプロジェクトを対象に生産性ギャップの定性的分析を行った結果、各プロジェクトに共通する生産性に影響する定性的要因として導き出されたものを下記［表１］に例示する。［表１］では、５項目の要因が示されている。
【００１９】
【表１】
2004334321.tif 000003
【００２０】
次いで、上記で分析結果として得られた生産性に影響する定性的要因を対象にプロジェクト特性を決定する。
プロジェクト特性の決定は、分析結果として得られた生産性に影響する要因を再検討・吟味して、要因それぞれの影響の度合いを相対化する。この検討の過程では、影響が大きい要因に対し問題にならないほど影響の小さい要因を無視するといった整理を行う。
［表１］に示した５項目の定性的要因を例にすると、影響が相対的に大きいと判断した３つの要因を「プロジェクト特性」として決定している。下記［表２］は、この結果を例示するもので、影響が相対的に大きいと判断した３つの要因をそれぞれｆ１、ｆ２、ｆ３で表す。
【００２１】
【表２】
2004334321.tif 000004
【００２２】
［表２］において、「重み（ｗ）」とは各プロジェクト特性の影響度合いの大きさを意味し、要因ｆ１、ｆ２、ｆ３に対応してそれぞれｗ１、ｗ２、ｗ３で表す。重みは、最も小さいをものを「１」とした相対的な評価を定性的な判断から決定する。
【００２３】
「モデルの決定（生産性ナレッジの決定）」‥‥（Ｓ１０４）
次に、「生産性ナレッジ」が、Ｓ１０３で分析結果として得た「プロジェクト特性」とＳ１０２でモデルプロジェクトの実績生産性から導かれた「生産性ギャップ」とに基づいて決定される。
生産性ナレッジは、プロジェクト特性係数ｃと生産性パラメータｆ１（ｘ）よりなり（上記式（１）参照）、プロジェクト特性係数は、プロジェクト特性（生産性に影響する要因とその重み）と生産性ギャップの大きさとに基づき得られる。また、生産性パラメータｆ１（ｘ）は、標準化生産性モデル（後記する「真の生産性」に相当する）を作成することにより得られる。
プロジェクト特性係数は、プロジェクト特性（［表２］）の定量化の一手法であり、生産性に影響する要因として分析された要因ごとに、さらにその大きさにバリエーションを付けることにより、実際に計画の対象になる各プロジェクトのプロジェクト特性の違いに対応することができる様にする。この場合に、用意するバリエーションは、プロジェクト特性に応じて各要因におけるバリエーションを変えても、生産性への影響が上記したモデルプロジェクトのばらつき（生産性ギャップの大きさ）の範囲内に収まるようにして、精度の確保を図るようにする。
【００２４】
上記の「プロジェクト特性係数」の決定方法は、以下の手順に従って行うことができる。なお、本例では、プロジェクト特性の要因（［表２］）を３段階（大・中・小）で評価することにより、各要因におけるバリエーションを用意する。
図６は、プロジェクト特性係数テーブルと特性係数の決定手順を説明するための図を示す。同図におけるプロジェクト特性係数を要因ごとに大・中・小のバリエーションで決定する
プロジェクト特性ｆＮの重みをｗＮと表し、３段階評価（大・中・小）に応じたプロジェクト特性係数を下記のように表現する。
2004334321.tif 000005
プロジェクト特性の評価が「中」の場合は１に固定する。この時、ｃＮ（ｍａｘ）とｃＮ（ｍｉｎ）の差異が、プロジェクト特性ｆＮの重みｗＮに依存するよう条件を決める。それは、影響が最も大きい場合（ｃＮ（ｍａｘ））と最も小さい場合（ｃＮ（ｍｉｎ））の比（ｃＮ（ｍａｘ）・ｃＮ（ｍｉｎ））  をｗＮの累乗に比例させることであり、下記［数１］の［条件式▲１▼］ように表わす。
【００２５】
【数１】
2004334321.tif 000006
【００２６】
また、プロジェクト特性の評価が「中」の場合のプロジェクト係数（この場合１）が中間値になるよう、下記［条件式▲２▼］を加える。
［条件式▲２▼］
ｃＮ（ｍａｘ）−１  ＝  １−ｃＮ（ｍｉｎ）
プロジェクト全体のプロジェクト係数ｃ  は  ｃ１×ｃ２×ｃ３  で表す。プロジェクト係数の最大値ｃ（ｍａｘ）は各プロジェクト特性（この場合３項）の評価が全て「大」の場合であり、最小値ｃ（ｍｉｎ）は全て「小」の場合を示し、それぞれを下記［条件式▲３▼］で表す。
［条件式▲３▼］
ｃ（ｍａｘ）  ＝  ｃ１（ｍａｘ）×ｃ２（ｍａｘ）×ｃ３（ｍａｘ）
ｃ（ｍｉｎ）  ＝  ｃ１（ｍｉｎ）×ｃ２（ｍｉｎ）×ｃ３（ｍｉｎ）
この両者の差異は、最も生産性の高いプロジェクトと生産性の低いプロジェクトの生産性の違いを表す。それは上記「実績生産性の把握（生産性パラメータの把握）」（Ｓ１０２）で導き出した「実績生産性」傾向に対する「生産性ギャップの大きさｌ」に相当する（本例では１．６５倍）と考え、ｃ（ｍａｘ）とｃ（ｍｉｎ）の差異と一致させ、下記［条件式▲４▼］で表す。
［条件式▲４▼］
ｌ  ＝ｃ（ｍａｘ）  ／  ｃ（ｍｉｎ）  ＝  １．６５
以上の［条件式▲１▼］〜［条件式▲４▼］により、全ての「プロジェクト特性係数」を求めると、上記図６のテーブルに示す結果が得られる。
また、特性係数の決定手順を上記［表２］に例示したプロジェクト特性に適用した結果、得られる係数値を載せたテーブルを下記［表３］に示す。
【００２７】
【表３】
2004334321.tif 000007
【００２８】
次いで、生産性パラメータｆ１（ｘ）を求める。
プロジェクト特性が中位（プロジェクト係数ｃが１）であるときの工数傾向は、現状における標準的な生産性を表す標準生産性モデルと考えられる。これを「真の生産性」と呼び、このときの生産性能力を生産性パラメータｆ１（ｘ）として表す。
生産性パラメータｆ１（ｘ）は、上記で抽出モデルプロジェクトに基づいて求めた基本生産性モデル（図４に示したｙ＝ｆ０（ｘ））とは下記式（６）に示す関係にある、と考えられる。
ｙ＝ｆ０（ｘ）  ＝ｆ１（ｘ）×ｃ……式（６）
よって、生産性パラメータｆ１（ｘ）は、下記式（７）として求めることができる。
ｆ１（ｘ）＝ｆ０（ｘ）／ｃ  ＝  ｙ  ／ｃ……式（７）
このようにして求められた生産性パラメータｆ１（ｘ）は、プロジェクト特性を排除した生産性モデルであり、標準生産性モデルと呼ぶ所以である。
【００２９】
生産性パラメータｆ１（ｘ）を求めるためには、先ず、基本生産性モデル（ｙ＝ｆ０（ｘ））のもとにしたサンプルプロジェクトそれぞれのプロジェクト特性を求めるためにプロジェクト係数ｃを求める必要がある。
上記したモデルプロジェクト（図４）の例によると、４つのモデルプロジェクトＡ，Ｂ，Ｃ，Ｄを対象に「プロジェクト特性」の評価を行う。
図７は、４つのモデルプロジェクトＡ，Ｂ，Ｃ，Ｄの特性を評価し、その結果に基づいて特性を定量化したプロジェクト係数の算出結果を示している。同図に示すように、３段階（大・中・小）の特性評価結果に対して［表３］の係数を適用し、プロジェクト全体のプロジェクト係数ｃを、ｃ＝  ｃ１×ｃ２×ｃ３により求めた結果である。
求めたプロジェクト係数ｃと基本生産性モデル（ｙ＝ｆ０（ｘ））から真の生産性の傾向ｆ１（ｘ）を標準生産性モデルとして求める。
図８は、基本生産性モデル  ｙ＝ｆ０（ｘ）と、標準生産性モデルとして作成された生産性パラメータ  ｆ１（ｘ）の関係を示すグラフである。同図において、基本生産性モデル  ｙ＝ｆ０（ｘ）にモデルプロジェクトＡ，Ｂ，Ｃ，Ｄのプロジェクト係数を適用することにより、それぞれの生産性がＡ’，Ｂ’，Ｃ’，Ｄ’と標準化される。従って、これに基づいて作成される生産性モデルもｆ１（ｘ）に示すように標準化される。
【００３０】
「開発工数目標の決定方法」に係わる実施形態を次に示す。この方法は、上記した「生産性ナレッジ」を利用することを前提とする方法である。
図９は、「生産性ナレッジ」を用いて開発工数目標を決定する手順を示すフロー図である。図９に示すフロー図を参照しながら、同図に示すＳ２０１〜Ｓ２０５の各手順を追って、その詳細を以下に説明する。
「開発対象プロジェクトの規模の見積り」‥‥（Ｓ２０１）
対象プロジェクトの開発規模を新規ＫＬＯＣといったような数値により見積もる。この見積もりは、見積り精度を上げるためにも、組織内で実行した開発プロジェクトのメンバーとして豊富な経験を持ち、経験に基く認識・判断ができる者によって行うことが望ましい。また、見積もられた開発規模（新規ＫＬＯＣ）は、基準工数（人・月）を予測するために用いられる。
【００３１】
「プロジェクト特性の評価」‥‥（Ｓ２０２）
見積もりを行うプロジェクトを対象にプロジェクト特性を評価する手順であり、上記した生産性ナレッジの構築方法において行ったプロジェクトの特性の評価と同様に、見積もりを行うプロジェクトを対象に開発工数に影響するプロジェクト特性を評価する。ここでも、組織内で実行した開発プロジェクトのメンバーとして豊富な経験を持ち、経験に基く認識・判断ができる者により、例えば、開発工数（コスト）に影響する要因として分析されている項目の影響の度合いを３段階（大・中・小）で評価する。この定性的特性評価の結果は、後段で行われる開発工数目標を見積もるために用いられる。
なお、ここで行われるプロジェクト特性の評価は、開発工数に影響する要因に対するものであるから、コスト要因を判断したに他ならない。つまり、プロジェクト管理の中で「プロジェクト特性」をコントロールすることにより、コスト改善を意図した目標が設定可能で、例えば、３段階（大・中・小）評価の場合、小さくする方向（大→小）へマネージメントすることによりこれを実現することが可能となる。例えば、Ｎ個のコストのバラツキ要因（＝プロジェクト特性）を持てたとしたら、コスト改善の要因および方法もＮ個可能になる。さらに生産性ナレッジの構築における要因分析を強化してプロジェクト特性を充実させることで、プロジェクトのコスト改善さらにはコストのリスク管理活動への活用が可能になる。
【００３２】
「基準工数予測」‥‥（Ｓ２０３）
ここでは、上記で「生産性ナレッジ」として構築された標準生産性モデル（真の生産性を表す生産性パラメータ  ｆ１（ｘ））を用いて、基準工数を予測する。プロジェクト特性を排除した生産性モデルとして作成されたこの標準生産性モデル（生産性パラメータｆ１（ｘ））における開発規模（新規ＫＬＯＣ）に上記したステップＳ２０１で見積もった開発規模を設定することにより、予測基準工数を求めることができる。求めた予測基準工数は、後段の開発工数目標を見積もるための基準の数値として扱われる。
「改善目標の反映」‥‥（Ｓ２０４）
この手順は、後段で最終的に見積もられる開発工数目標に生産性の改善を図るための数値目標を反映させる手順である。
標準生産性モデル（生産性パラメータ  ｆ１（ｘ））という、プロジェクト特性を考慮しない標準的な生産性を表すモデルによって基準工数を予測する段階で、改善措置生産性の改善
ここでは、例えば「生産性２０％向上」という目標をたてる場合、標準生産性モデル（生産性パラメータｆ１（ｘ））の予測結果に対し、０．８倍（２０％減）を設定することによって、プロジェクト特性に影響されない開発組織の生産性能力の改善を図るための目標を設定することができる。
【００３３】
「目標工数の見積もり」‥‥（Ｓ２０５）
この手順は、見積もりを行うプロジェクトを対象にプロジェクト特性の定量化を行い、その結果を前段までの手順によって予測された基準工数又は改善基準工数に反映させることにより最終的に開発工数目標を求める手順である。
プロジェクト特性の定量化は、ステップＳ２０２で評価されたプロジェクト特性の定性評価をもとに、この定性評価をプロジェクト特性係数ｃという数値で表現するプロセスであり、上記した生産性ナレッジ構築方法の「モデルの決定（生産性ナレッジの決定）」（Ｓ１０４）において行ったプロジェクトの特性評価からプロジェクト特性係数を決定するプロセスにおけると同様の方法により行う。
例えば、対象プロジェクトに対し、プロジェクト特性ｆ１，ｆ２，ｆ３（［表２］参照）として、それぞれに以下のような３段階（大・中・小）の評価、即ち、
ｆ１  ＝  大
ｆ２  ＝  小
ｆ３  ＝  中
が与えられた場合には、プロジェクト係数ｃは、
2004334321.tif 000008
となり（図６、［表３］参照）、数値化される。
【００３４】
上記のようにして、プロジェクト係数ｃを求めた後、これをステップＳ２０３で標準生産性モデル（生産性パラメータｆ１（ｘ））により予測された基準工数、又はステップＳ２０４で生産性の改善措置が施された改善基準工数に適用することにより、生産性ナレッジの概念に従って構築された生産性モデルに基づく開発工数目標が最終的に求まる。
生産性ナレッジは、上記式（１）に示すように、Ｙ  ＝ｆ１（ｘ）×ｃで表されるから、例えば、開発規模見積り＝１００（ＫＬＯＣ）であり、上記のプロジェクト係数ｃ＝ｃ１（ｍａｘ）×ｃ２（ｍｉｎ）×１＝１．１５×０．９７×１＝１．１２の例を引くと、
見積もられる開発工数目標（人・月）
＝ｆ１（ｘ）×ｃ
＝ｆ１（１００ＫＬＯＣ）×１．１２
として工数が求まる。
【００３５】
次に、上記した、生産性ナレッジを構築する方法及び構築された生産性ナレッジをもとに開発工数目標を決定する方法の手順を実行するシステムに係わる実施形態について説明する。
この実施システムは、上記において図２を参照して示した生産性ナレッジ構築方法及び図９を参照して示した開発工数目標決定方法を実行するシステムの構成要素として、それぞれの方法における処理手順に必要なデータとデータを操作して目的とする処理結果を導くプロセッサを備える必要がある。
プロセッサとしては、コンピュータを用い、又処理手順に必要なデータとしては、プロセッサとして用いる該コンピュータに搭載するプログラム或いはデータベース、さらに外部からの操作により入力されるデータを含む。
生産性ナレッジ構築方法においては、この方法の処理ステップ（Ｓ１０１〜Ｓ１０４）を実行するプログラムとともに、処理に必要なデータとして、例えば次の形態でデータを用意する。一つは、上記プロジェクトの過去の実績データ（所要工数・開発規模など）で、これは、開発組織の全プロジェクトの実績を蓄積しデータベース化しておく。また、プロジェクトの分析に用いる経験者の評価に必要なデータは、経験者の分析結果から得られた評価項目（要因）をデータベースとして用意し、経験者による重み付けの入力による方法、或いは要因とその重み付けを新たに入力するといった方法を採用することにより実施することが可能である。サンプリング条件についても、判断基準をデータとして用意するか、経験者の入力によるかして、モデルプロジェクトの抽出を実施する方法をとることが可能である。このようにして、対象プロジェクトの開発工数目標を決定する方法を実行するシステムを構成することが可能である。
また、開発工数目標決定方法においては、この方法の処理ステップ（Ｓ２０１〜Ｓ２０５）を実行するプログラムとともに、処理に必要なデータとして、例えば次の形態でデータを用意する。一つは、上記生産性ナレッジ構築方法の実施により得られた生産性ナレッジデータ（生産性パラメータ・プロジェクト特性など）で、これをデータベース化しておく。また、工数を見積もるプロジェクトの開発規模の見積もりやプロジェクト特性の評価に必要なデータは、評価項目（要因）をデータベースとして用意し、経験者による評価結果としての重み付けの入力による方法を採用することにより実施することが可能である。さらに、改善目標の設定についても、設定データの入力手段を用意する。このようにして、生産性ナレッジを構築する方法を実行するシステムを構成することが可能である。
【００３６】
【発明の効果】
（１）  請求項１〜３，６の発明に対応する効果
抽出されたモデルプロジェクトの実績情報に基づいて作成された基本生産性モデルに対するプロジェクト間のばらつき（ギャップの大きさ）に基づいて生産性モデルに適用するプロジェクト特性係数を求め、また、抽出モデルプロジェクトのプロジェクト特性係数を基本生産性モデルに適用して標準化生産性モデルを作成することにより、「生産性ナレッジ（＝標準生産性モデル×プロジェクト特性係数）」を構築し、生産性ナレッジを利用して対象プロジェクトの工数見積もりを行うようにしたので、開発プロジェクトのソフトウェア開発工数の見積り精度を向上させるとともに、開発組織のプロセス改善活動として下記（１）〜（３）を推進することを可能にする。
（１）      生産性改善活動
「生産性ナレッジ」では、組織の生産性能力を標準生産性モデルで表現し、このモデルに生産性の目標を設定することで、プロジェクト特性に影響されない組織の生産性能力目標を提示することが可能になる。また、「生産性ナレッジ」は、「過去の客観的データ」と「経験者による主観的評価」を結び付ける理論に従う手順によって異なる組織毎に構築されるので、開発部門からの信頼が高く、定量的で改善度合いが見え、再利用・再集計が容易で、レベルに応じた工数目標の設定や改善が可能である、などの性格を有し、ＳＥＰＧ（Ｓｏｆｔｗａｒｅ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｐｒｏｃｅｓｓ  Ｇｒｏｕｐ）と開発部門が達成目標を合意する方法として、また継続的な工数目標管理のしくみとして有効である。さらに、開発委託を行う場合の発注側と受注側の基準工数の設定方法としても有効な手段となり得る。
（２）      コスト改善活動
「生産性ナレッジ」では、「プロジェクト特性」を評価した結果により目標工数を変えることができる仕組みであるから、開発工数（コスト）を見積もる場合、プロジェクト管理の中で「プロジェクト特性」をコントロールするマネージメントによってコスト改善を推進することが可能である。例えば、Ｎ個のコストのばらつき要因（＝プロジェクト特性）を持てたとしたら、コスト改善の要因および方法もＮ個可能になる。「プロジェクト特性」を充実させることで、プロジェクトのコスト改善さらにはコストのリスク管理活動への活用が可能になる。
（３）      第三者による見積もり支援
標準生産性モデルの決定とプロジェクト特性の定量パラメータ（特性係数）の算出は、第三者で集計が可能である。つまりＳＥＰＧとして開発部門を支援し易くなり、
▲１▼    開発当事者の経験に頼りがちなソフトウェア見積もりに共通のベースを持てるようになり、工数を見積もる事に対し支援や助言が可能になる。
▲２▼    プロジェクトのＱＣＤに追われて改善活動の時間が確保しにくい開発設計者に対し、見積もり作業の一部を代行できる。
といったメリットがある。
【００３７】
（２）  請求項４，５，７，８の発明に対応する効果
請求項１〜３のいずれかに記載された生産性ナレッジ構築方法或いは請求項６に記載されたソフトウェア開発工数目標決定方法の各ステップを実行するためのプログラムをコンピュータに搭載することにより、上記（１）の効果を容易に具現化することが可能になる。
【図面の簡単な説明】
【図１】本発明を適用してプロセス改善活動を実施するＰＤＣＡサイクルに基づいた開発プロセスを示す。
【図２】本発明に係わる生産性ナレッジを構築する手順を示すフロー図である。
【図３】開発プロジェクトの規模と工数の相関を例示するグラフを示す。
【図４】抽出モデルプロジェクトＡ，Ｂ，Ｃ，Ｄの実績データと基本生産性モデル（ｙ＝ｆ０（ｘ））の関係を示す。
【図５】モデルプロジェクトＡ，Ｂ，Ｃ，Ｄの予測工数と実績のギャップを示すグラフである。
【図６】プロジェクト特性係数テーブルと特性係数の決定手順を説明するための図を示す。
【図７】モデルプロジェクトＡ，Ｂ，Ｃ，Ｄの特性の評価に基づいて算出したプロジェクト特性係数を示す。
【図８】基本生産性モデルｆ０（ｘ）と、標準生産性モデルとしての生産性パラメータ  ｆ１（ｘ）の関係を示すグラフである。
【図９】「生産性ナレッジ」を用いて開発工数目標を決定する手順を示すフロー図である。
【符号の説明】
１０…生産性データ・定性的事実  データベース、
３０…生産性ナレッジ構築  手順、
５０…生産性ナレッジ  データベース。
【図１】
2004334321.tif 000009
【図２】
2004334321.tif 000010
【図３】
2004334321.tif 000011
【図４】
2004334321.tif 000012
【図５】
2004334321.tif 000013
【図６】
2004334321.tif 000014
【図７】
2004334321.tif 000015
【図８】
2004334321.tif 000016
【図９】
2004334321.tif 000017