(57)【要約】【課題】開発プロジェクトにおいてコンポーネント単位で工数を見積もる。【解決手段】工数見積装置１００の仮全体工数取得部１２０は、開発プロジェクトの総規模と、工数見積対象のコンポーネントの品質及び開発期間と、に基づいて開発プロジェクトの仮の全工数を求める。工数比率取得部１３０は、開発プロジェクトにおける作業を細分化した複数のコンポーネントそれぞれの規模と、工数見積対象のコンポーネントの品質及び開発期間と、に基づいて、複数のコンポーネントそれぞれの仮の工数を求める。工数比率取得部１３０は、求めた複数のコンポーネントそれぞれの仮の工数の和と、工数見積対象のコンポーネントの仮の工数と、に基づいて工数見積対象のコンポーネントの工数比率を求める。工数取得部１４０は、開発プロジェクトの仮の全工数と、工数見積対象のコンポーネントの工数比率と、を乗算して工数見積対象のコンポーネントの工数を求める。【選択図】図２
2015041156.tif 000002
【特許請求の範囲】
【請求項１】
開発プロジェクトにおける仮の全工数を求める仮全工数取得手段と、
前記開発プロジェクトにおける作業を細分化した複数のコンポーネントのうち、工数を見積もる対象のコンポーネントの工数比率を求める工数比率取得手段と、
前記開発プロジェクトの仮の全工数と前記工数を見積もる対象のコンポーネントの工数比率とに基づいて、該工数を見積もる対象のコンポーネントの工数を求める工数取得手段と、
を備えたことを特徴とする工数見積装置。
【請求項２】
過去の開発プロジェクトの全工数と、該過去の開発プロジェクトの総規模と、該過去の開発プロジェクトにおける工数に関連する工数関連情報と、を含む実績データに基づいて求めた工数推定式を複数記憶する記憶手段を備え、
前記仮全工数取得手段は、前記開発プロジェクトの総規模と、前記工数を見積もる対象のコンポーネントにおける工数に関連する工数関連情報と、に基づいて前記記憶手段から工数推定式を選択し、該選択した工数推定式により前記開発プロジェクトの仮の全工数を求める、
ことを特徴とする請求項１に記載の工数見積装置。
【請求項３】
前記工数比率取得手段は、前記工数を見積もる対象のコンポーネントを含む前記複数のコンポーネントそれぞれの仮の工数を、該複数のコンポーネントそれぞれの規模と、前記工数を見積もる対象のコンポーネントの前記工数関連情報と、に基づいて選択した複数の工数推定式より求め、
該求めた複数のコンポーネントそれぞれの仮の工数の和と、前記工数を見積もる対象のコンポーネントの仮の工数と、に基づいて該工数を見積もる対象のコンポーネントの工数比率を求める、
ことを特徴とする請求項２に記載の工数見積装置。
【請求項４】
前記工数取得手段は、前記仮全工数取得手段が求めた前記開発プロジェクトの仮の全工数と、前記工数比率取得手段が求めた前記工数を見積もる対象のコンポーネントの工数比率と、を乗算して、該工数を見積もる対象のコンポーネントの工数を求める、
ことを特徴とする請求項１乃至３の何れか一項に記載の工数見積装置。
【請求項５】
前記工数取得手段は、前記工数を見積もる対象のコンポーネントを含む全てのコンポーネントの工数を求め、
該求めた全てのコンポーネントそれぞれの工数を足して前記開発プロジェクトの全工数を求める、
ことを特徴とする請求項１乃至４の何れか一項に記載の工数見積装置。
【請求項６】
開発プロジェクトにおける仮の全工数を求める仮全工数取得ステップと、
前記開発プロジェクトにおける作業を細分化した複数のコンポーネントのうち、工数を見積もる対象のコンポーネントの工数比率を求める工数比率取得ステップと、
前記開発プロジェクトの仮の全工数と前記工数を見積もる対象のコンポーネントの工数比率とに基づいて、該工数を見積もる対象のコンポーネントの工数を求める工数取得ステップと、
を備えたことを特徴とする工数見積方法。
【請求項７】
コンピュータを、
開発プロジェクトにおける仮の全工数を求める仮全工数取得手段、
前記開発プロジェクトにおける作業を細分化した複数のコンポーネントのうち、工数を見積もる対象のコンポーネントの工数比率を求める工数比率取得手段、
前記開発プロジェクトの仮の全工数と前記工数を見積もる対象のコンポーネントの工数比率とに基づいて、該工数を見積もる対象のコンポーネントの工数を求める工数取得手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、工数見積装置、工数見積方法及びプログラムに関する。
【背景技術】
【０００２】
ソフトウェアやシステムなどの開発を行うプロジェクト（以下、「開発プロジェクト」という）では、通常、工数の見積もりを行う。
この工数の見積もりをプロジェクトマネージャ（ＰＭ）などのユーザが独力で行う場合、過去の類似開発プロジェクトでかかった工数や暗黙知などから見積もることが多い。
また、ユーザは、開発プロジェクト全体の工数に限らず、より細かい粒度のコンポーネント（例えば、ソフトウェア部品やサブシステムなど）に分割して、コンポーネント単位で工数を見積もることも多い。
【０００３】
一方で、開発プロジェクト全体の工数を見積もるための従来技術としては、例えば、工数と相関が高いパラメータを含む過去の実績データを予め複数蓄積した上で積算する技術（特許文献１）、あるいは回帰分析などの統計手法による技術（特許文献２）、などが知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平４−３２６１５７号公報
【特許文献２】特開２０１２−１８１７３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では、開発プロジェクト全体の工数しか見積もることができない。このため、ユーザがコンポーネント単位で工数を見積もったとしても開発プロジェクト全体の工数とは粒度が異なることからコンポーネント単位で比較を行うことができない。このことから、ユーザが見積もったコンポーネント単位の工数の妥当性の検討や比較に基づく修正などを行うことができなかった。
従って、開発プロジェクトにおいてコンポーネント単位で工数を見積もる技術が求められている。
【０００６】
そこで、この発明は、上述した事情に鑑みてなされたものであり、開発プロジェクトにおいてコンポーネント単位で工数を見積もることができる工数見積装置等を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、この発明の第１の観点に係る工数見積装置は、
開発プロジェクトにおける仮の全工数を求める仮全工数取得手段と、
前記開発プロジェクトにおける作業を細分化した複数のコンポーネントのうち、工数を見積もる対象のコンポーネントの工数比率を求める工数比率取得手段と、
前記開発プロジェクトの仮の全工数と前記工数を見積もる対象のコンポーネントの工数比率とに基づいて、該工数を見積もる対象のコンポーネントの工数を求める工数取得手段と、
を備えたことを特徴とする。
【０００８】
また、過去の開発プロジェクトの全工数と、該過去の開発プロジェクトの総規模と、該過去の開発プロジェクトにおける工数に関連する工数関連情報と、を含む実績データに基づいて求めた工数推定式を複数記憶する記憶手段を備え、
前記仮全工数取得手段は、前記開発プロジェクトの総規模と、前記工数を見積もる対象のコンポーネントにおける工数に関連する工数関連情報と、に基づいて前記記憶手段から工数推定式を選択し、該選択した工数推定式により前記開発プロジェクトの仮の全工数を求めるとよい。
【０００９】
また、前記工数比率取得手段は、前記工数を見積もる対象のコンポーネントを含む前記複数のコンポーネントそれぞれの仮の工数を、該複数のコンポーネントそれぞれの規模と、前記工数を見積もる対象のコンポーネントの前記工数関連情報と、に基づいて選択した複数の工数推定式より求め、
該求めた複数のコンポーネントそれぞれの仮の工数の和と、前記工数を見積もる対象のコンポーネントの仮の工数と、に基づいて該工数を見積もる対象のコンポーネントの工数比率を求めるとよい。
【００１０】
また、前記工数取得手段は、前記仮全工数取得手段が求めた前記開発プロジェクトの仮の全工数と、前記工数比率取得手段が求めた前記工数を見積もる対象のコンポーネントの工数比率と、を乗算して、該工数を見積もる対象のコンポーネントの工数を求めるとよい。
また、前記工数取得手段は、前記工数を見積もる対象のコンポーネントを含む全てのコンポーネントの工数を求め、
該求めた全てのコンポーネントそれぞれの工数を足して前記開発プロジェクトの全工数を求めるとよい。
【００１１】
上記目的を達成するため、この発明の第２の観点に係る工数見積方法は、
開発プロジェクトにおける仮の全工数を求める仮全工数取得ステップと、
前記開発プロジェクトにおける作業を細分化した複数のコンポーネントのうち、工数を見積もる対象のコンポーネントの工数比率を求める工数比率取得ステップと、
前記開発プロジェクトの仮の全工数と前記工数を見積もる対象のコンポーネントの工数比率とに基づいて、該工数を見積もる対象のコンポーネントの工数を求める工数取得ステップと、
を備えたことを特徴とする。
【００１２】
上記目的を達成するため、この発明の第３の観点に係るプログラムは、
コンピュータを、
開発プロジェクトにおける仮の全工数を求める仮全工数取得手段、
前記開発プロジェクトにおける作業を細分化した複数のコンポーネントのうち、工数を見積もる対象のコンポーネントの工数比率を求める工数比率取得手段、
前記開発プロジェクトの仮の全工数と前記工数を見積もる対象のコンポーネントの工数比率とに基づいて、該工数を見積もる対象のコンポーネントの工数を求める工数取得手段、
として機能させることを特徴とする。
【発明の効果】
【００１３】
この発明によれば、開発プロジェクトにおいてコンポーネント単位で工数を見積もることができる。
【図面の簡単な説明】
【００１４】
【図１】工数見積装置のハードウェア構成を示すブロック図である。
【図２】工数見積装置の機能ブロック図である。
【図３】入力画面の入力前の一例を示す図である。
【図４】入力画面の入力後の一例を示す図である。
【図５】工数推定式テーブルの一例を示す図である。
【図６】工数推定結果の一例を示す図である。
【図７】工数見積処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、この発明の実施形態の工数見積装置について、図１を参照しながら説明する。
図１に示すように、工数見積装置１００は、ＣＰＵ１０１とＲＯＭ１０２とＲＡＭ１０３とＨＤＤ１０４とＩ／Ｏポート１０５とを備える。
このうち、ＣＰＵ１０１は、工数見積装置１００全体を制御する中央演算装置である。
ＲＯＭ１０２は、ＣＰＵ１０１が実行するプログラムを格納している不揮発性メモリである。
【００１６】
ＲＡＭ１０３は、ＣＰＵ１０１が実行するプログラムを一時的に展開し、ＣＰＵ１０１が各種処理を行う際の作業領域として使用する揮発性メモリである。
ＨＤＤ１０４は、工数の見積もりに必要なデータを記憶する記憶手段である。例えば、ＨＤＤ１０４は、後述する工数推定式テーブルのデータなどを記憶する。
Ｉ／Ｏポート１０５は、キーボードやマウスなどの入力手段やディスプレイなどの表示手段と接続するためのインタフェースである。
【００１７】
ここで、ＣＰＵ１０１は、ＲＯＭ１０２内の各種プログラムを読み出し、ＲＡＭ１０３に展開した後、その各種プログラムに従って工数見積装置１００を制御することで、図２に示すような各部の機能を実現することができる。機能としては、図２に示すように、表示制御部１１０、仮全体工数取得部１２０、工数比率取得部１３０、工数取得部１４０及び工数出力部１５０を備える。
【００１８】
まず、表示制御部１１０は、Ｉ／Ｏポート１０５を通して、図３に示す工数見積に必要なパラメータの入力をするための入力画面をディスプレイに表示する。この入力画面は、項番、コンポーネントＩＤ、規模、品質レベル及び開発期間から構成される。
なお、この実施形態においては、ソフトウェアの開発を行う開発プロジェクトを例にとって説明する。
【００１９】
項番は、コンポーネント毎に割り当てられる昇順の番号である。
コンポーネントＩＤは、複数のコンポーネントそれぞれを識別するための識別情報である。ここで、コンポーネントとは、開発プロジェクトを構成する１つの構成要素である。言い換えれば、開発プロジェクトは、構成要素であるコンポーネントの複数の集合から構成される。
この実施形態では、構成要素であるコンポーネントは、ソフトウェアの開発プロジェクト全体の作業を細分化したうちの１つの作業（例えば、ソフトウェア部品を作成するための作業など）に対応するものとする。図３の例において、ソフトウェアの開発プロジェクトは、３つのコンポーネント１乃至３から構成される。なお、コンポーネントの分割粒度は、３つに限られず必要に応じてユーザが増減することができる。
【００２０】
次に、規模、品質レベル及び開発期間は、工数と関連のある項目である。ここで、関連するとは、例えば、工数と正や負の相関関係があることをいう。ユーザは、これら各項目にパラメータをキーボードなどの入力手段を用いて入力する。なお、この実施形態において、パラメータとは数値に限らず度合い（例えば、低中高など）も含むものとする。また、各項目のパラメータは、工数に関連する項目の情報でもあるので、工数関連情報ともいう。
【００２１】
これら各項目のうち、規模は、各コンポーネントの作業規模の大きさである。この実施形態における規模は、例として、ソフトウェア開発における作業規模の大きさと比例するプログラムのソースコードの行数（以下、単に「ステップ数」という）である。ユーザは、このステップ数をコンポーネント毎に入力する。なお、単位はＫｓｔｅｐ（キロステップ）である。
【００２２】
次に、品質レベルは、各コンポーネントに求められる品質の度合いである。ユーザは、求められる品質の度合いに応じて高、中又は低を入力する。例えば、あるコンポーネントの作業で開発されるソフトウェア部品に求められる品質が高ければ高に、求められる品質が低ければ低に、それぞれする。あるいは、ソフトウェアの品質はテスト（単体テスト、結合テスト等）によって担保されるので、ユーザは、ソフトウェア部品に想定されるテスト量に応じて、テスト量が多ければ高に、テスト量が少なければ低に、それぞれしてもよい。
【００２３】
次に、開発期間は、各コンポーネントから構成される開発プロジェクトの開始から終了までの期間である。ユーザは、コンポーネント１乃至３から構成される開発プロジェクトにおける開発期間を入力する。なお、単位は月である。
【００２４】
図４は、図３の入力画面へユーザがパラメータを入力した後の例を示す図である。図４から、ユーザは、コンポーネント１の規模と品質をそれぞれ５０と低に、コンポーネント２の規模と品質をそれぞれ１００と中に、コンポーネント３の規模と品質をそれぞれ２００と高に、したことがわかる。また、図４から、ユーザは、開発プロジェクトの開発期間を１２月にしたことがわかる。表示制御部１１０は、これらパラメータの入力を受け付ける。なお、総規模は、以下で説明する仮全体工数取得部１２０により、ユーザの入力に依らずに自動で算出される。
【００２５】
図２に戻って、仮全体工数取得部１２０は、開発プロジェクトの仮の全工数を求める仮全工数取得手段である。具体的には、仮全体工数取得部１２０は、開発プロジェクトの総規模と品質と開発期間の各パラメータに応じて、図５に示す工数推定式テーブルの中から工数推定式を選択し、仮の全工数を求める。
【００２６】
この図５の工数推定式テーブルは、式項番と工数推定式と規模条件と品質レベル条件と開発期間条件とを備える。
このうち、式項番は、工数推定式毎に割り当てられる昇順の式の番号である。
工数推定式は、過去の開発プロジェクト全体の実績データ（工数、総規模、工数と関連する項目のパラメータである例えば品質レベルや開発期間など）に基づいて、事前に重回帰分析などの統計分析により算出された式である。過去の開発プロジェクト全体の実績データは、過去の開発プロジェクトの計画段階において社内稟議用の資料に記載されることが多いので、その資料に記載される実績データを利用するようにする。この実施形態では、過去の開発プロジェクト全体の実績データを利用して、現在の開発プロジェクトのコンポーネント単位の工数を求める。
【００２７】
ここで、図５の工数推定式は、規模条件、品質レベル条件及び開発期間条件の各条件に応じた過去の実績データに基づいて、予め６つ算出されている。このモデルとなる工数推定式は、以下の式（１）である。
【００２８】
【数１】
2015041156.tif 000003
【００２９】
式（１）において、α、β及びγは、係数であり、過去の実績データの重回帰分析により算出される。図５の式項番１乃至３の工数推定式（以下、まとめて「期間入力がない場合の工数推定式」という）において、α及びβは、それぞれ２．０及び１．１である。なお、期間入力がない場合の工数推定式では、指数的乗数パラメータがないのでそれに伴うγの値はない。一方、式項番４乃至６の工数推定式（以下、まとめて「期間入力がある場合の工数推定式」という）において、α、β及びγは、それぞれ３．０、１．２及び−０．１である。γがマイナスの指数となるのは、開発期間が延びる程、工数を減らすように（すなわち、開発期間が短い程、工数が増えるように）見積もるためである。
【００３０】
規模パラメータは、工数見積のために代入される規模の値を示すパラメータである。図５の式項番１乃至６の工数推定式の規模パラメータは、「規模」で表される。
乗数パラメータは、工数見積のために乗算されるパラメータである。この乗数パラメータは、品質レベルに対応する。この乗数パラメータは、期間入力がない場合の工数推定式において品質レベルが低の場合１．０に、品質レベルが中の場合１．５に、品質レベルが高の場合２．０に、それぞれなる。一方で、期間入力がある場合の工数推定式においては品質レベルが低の場合１．０に、品質レベルが中の場合１．７に、品質レベルが高の場合２．３に、それぞれなる。このように、品質レベルが上がる程乗数パラメータの値を大きくするのは、求められる品質が高い程工数が増えるように見積もるためである。
【００３１】
指数的乗数パラメータは、工数見積のために乗算されるパラメータであって、かつ指数を伴うパラメータである。この指数的乗数パラメータは、開発期間に対応し、期間入力がある場合の工数推定式で用いられる。
【００３２】
ここで、仮全体工数取得部１２０は、開発プロジェクトの仮の全工数を、自動算出した総規模と各コンポーネントの品質レベルと開発期間とに基づいて選択した工数推定式を用いて求める。
【００３３】
具体的には、仮全体工数取得部１２０は、総規模３５０（Ｋｓｔｅｐ）、各コンポーネントの品質レベル低中高及び開発期間（１２月）に基づいて式項番４乃至６の工数推定式を工数推定式テーブルから選択する。そして、仮全体工数取得部１２０は、選択した式項番４乃至６の工数推定式を用い、各コンポーネント１乃至３それぞれの品質における開発プロジェクト全体の仮の全工数（以下、「仮全工数Ｅｋ」という）を求める。仮全工数Ｅｋは、上記式（１）の規模パラメータに総規模の値を代入した以下の式（２）より求める。なお、ｋは、品質レベルの度合いを示す。
【００３４】
【数２】
2015041156.tif 000004
【００３５】
ここで、品質レベル低の仮全工数をＥ低、品質レベル中の仮全工数をＥ中、品質レベル高の仮全工数をＥ高、とそれぞれして、選択した式項番４乃至６の工数推定式を用いてＥ低乃至Ｅ高をそれぞれ求めると以下のようになる。なお、Ｅ低乃至Ｅ高は、それぞれ小数第３位を四捨五入したものである。
【００３６】
仮全工数Ｅ低＝3.0×総規模1.2×1.0×開発期間-0.1＝3.0×3501.2×1.0×12-0.1=2642.92
仮全工数Ｅ中＝3.0×総規模1.2×1.7×開発期間-0.1＝3.0×3501.2×1.7×12-0.1=4492.97
仮全工数Ｅ高＝3.0×総規模1.2×2.3×開発期間-0.1＝3.0×3501.2×2.3×12-0.1=6078.73
【００３７】
このようにして、仮全体工数取得部１２０は、各コンポーネントの品質で仮に開発プロジェクト全体を実行した場合にかかる仮全工数を算出する。なお、この実施形態では、各コンポーネントの品質が高中低で異なる、すなわち品質にバリエーションがある場合を例にとって説明しているが、品質以外の項目のパラメータも異なる場合は、各コンポーネントの品質及びその他の項目（この実施形態の例では開発期間）で仮に開発プロジェクト全体を実行した場合にかかる仮全工数を算出する。この実施形態では、理解を容易にするために、一例として、項目のうち品質にバリエーションがある場合を説明している。
【００３８】
図２に戻って、工数比率取得部１３０は、開発プロジェクトにおける複数のコンポーネントのうち、工数見積対象のコンポーネントの工数比率を求める工数比率取得手段である。なお、この実施形態では、コンポーネント１乃至３全てを工数見積対象のコンポーネントとする。
【００３９】
ここで、工数比率取得部１３０は、複数のコンポーネントそれぞれの規模、工数と関連する項目である品質及び開発プロジェクトの開発期間に応じて、図５に示す工数推定式テーブルの中から工数推定式を選択し、複数のコンポーネントそれぞれの仮の工数ｅ′ｊを求める。仮の工数ｅ′ｊは、上記式（１）の規模パラメータにコンポーネントの規模を代入した以下の式（３）より求める。なお、′（ダッシュ）は仮の工数、ｊはコンポーネントと対応する１以上の自然数、であることをそれぞれ示す。
【００４０】
【数３】
2015041156.tif 000005
【００４１】
次に、工数比率取得部１３０は、求めた複数のコンポーネントそれぞれの仮の工数の和と、工数見積対象のコンポーネントの仮の工数と、に基づいて工数比率ｒｊを求める。工数比率ｒｊは、以下の式（４）より求める。
【００４２】
【数４】
2015041156.tif 000006
【００４３】
式（４）において、ｎは、コンポーネントの総数である。
工数比率取得部１３０は、上記式（３）により、仮に各コンポーネント１乃至３それぞれが独立したソフトウェアとして開発された場合の仮の工数を求めて、求めた各コンポーネント１乃至３の仮の工数から工数見積対象のコンポーネントの工数比率を求める。
具体的には、まず、工数見積対象のコンポーネントの工数比率を求める場合、そのコンポーネントの品質及び開発期間を特定する。次に、工数推定式テーブルに記憶された工数推定式のうち、特定した品質及び開発期間に合う工数推定式を用いてそのコンポーネントの仮の工数を求める。次に、工数見積対象のコンポーネント以外の複数のコンポーネントを同じ品質と開発期間で開発した場合（すなわち、複数のコンポーネントに、工数見積対象のコンポーネントの項目データを適用して）、複数のコンポーネントそれぞれの仮の工数を求める。次に、複数のコンポーネントの仮の工数と工数見積対象のコンポーネントの仮の工数との和において、工数見積対象のコンポーネントの仮の工数が占める割合を、工数比率とする。
この実施形態では、各コンポーネントそれぞれの品質レベルが異なるので、品質レベルを合わせて（すなわち、工数見積対象のコンポーネントの品質を他のコンポーネントにも適用して）求めた、品質レベルが合った各コンポーネントそれぞれの仮の工数から工数比率を求めるようにする。
【００４４】
具体的には、工数比率取得部１３０は、コンポーネント１の工数比率ｒ１を求める場合、コンポーネント１の品質レベル低に合わせて（すなわち、コンポーネント２及び３の品質レベルが低であると仮定して）、各コンポーネント１乃至３それぞれの仮の工数を求める。
品質レベルが低の場合の各コンポーネント１乃至３の仮の工数をそれぞれ、ｅ′１，低、ｅ′２，低、ｅ′３，低とすると、これらは式項番４の工数推定式を用いて以下のように求められる。なお、ｅ′１，低乃至ｅ′３，低は、それぞれ小数第３位を四捨五入したものである。
【００４５】
仮の工数ｅ′１，低＝3.0×コンポーネント１の規模1.2×1.0×開発期間-0.1
＝3.0×501.2×1.0×12-0.1=255.84
仮の工数ｅ′２，低＝3.0×コンポーネント２の規模1.2×1.0×開発期間-0.1
＝3.0×1001.2×1.0×12-0.1=587.76
仮の工数ｅ′３，低＝3.0×コンポーネント３の規模1.2×1.0×開発期間-0.1
＝3.0×2001.2×1.0×12-0.1=1350.33
【００４６】
これら求めた仮の工数ｅ′１，低、ｅ′２，低、ｅ′３，低から、工数比率ｒ１は、上記式（４）を用いて以下のように求まる。なお、ｒ１は、小数第３位を四捨五入したものである。
工数比率ｒ１＝255.84/(255.84+587.76+1350.33)＝0.12
【００４７】
同様に、工数比率取得部１３０は、コンポーネント２の工数比率ｒ２を求める場合、コンポーネント２の品質レベル中に合わせて（すなわち、コンポーネント１及び３の品質レベルが中であると仮定して）、各コンポーネント１乃至３それぞれの仮の工数を求める。
品質レベルが中の場合の各コンポーネント１乃至３の仮の工数をそれぞれ、ｅ′１，中、ｅ′２，中、ｅ′３，中とすると、これらは式項番５の工数推定式を用いて以下のように求められる。なお、ｅ′１，中乃至ｅ′３，中は、それぞれ小数第３位を四捨五入したものである。
【００４８】
仮の工数ｅ′１，中＝3.0×コンポーネント１の規模1.2×1.7×開発期間-0.1
＝3.0×501.2×1.7×12-0.1=434.93
仮の工数ｅ′２，中＝3.0×コンポーネント２の規模1.2×1.7×開発期間-0.1
＝3.0×1001.2×1.7×12-0.1=999.20
仮の工数ｅ′３，中＝3.0×コンポーネント３の規模1.2×1.7×開発期間-0.1
＝3.0×2001.2×1.7×12-0.1=2295.56
【００４９】
これら求めた仮の工数ｅ′１，中、ｅ′２，中、ｅ′３，中から、工数比率ｒ２は、上記式（４）を用いて以下のように求まる。なお、ｒ２は、小数第３位を四捨五入したものである。
工数比率ｒ２＝999.20/(434.93+999.20+2295.56)＝0.27
【００５０】
同様に、工数比率取得部１３０は、コンポーネント３の工数比率ｒ３を求める場合、コンポーネント３の品質レベル高に合わせて（すなわち、コンポーネント１及び２の品質レベルが高であると仮定して）、各コンポーネント１乃至３それぞれの仮の工数を求める。
品質レベルが高の場合の各コンポーネント１乃至３の仮の工数をそれぞれ、ｅ′１，高、ｅ′２，高、ｅ′３，高とすると、これらは式項番６の工数推定式を用いて以下のように求められる。なお、ｅ′１，高乃至ｅ′３，高は、それぞれ小数第３位を四捨五入したものである。
【００５１】
仮の工数ｅ′１，高＝3.0×コンポーネント１の規模1.2×2.3×開発期間-0.1
＝3.0×501.2×2.3×12-0.1=588.43
仮の工数ｅ′２，高＝3.0×コンポーネント２の規模1.2×2.3×開発期間-0.1
＝3.0×1001.2×2.3×12-0.1=1351.86
仮の工数ｅ′３，高＝3.0×コンポーネント３の規模1.2×2.3×開発期間-0.1
＝3.0×2001.2×2.3×12-0.1=3105.75
【００５２】
これら求めた仮の工数ｅ′１，高、ｅ′２，高、ｅ′３，高から、工数比率ｒ３は、上記式（４）を用いて以下のように求まる。なお、ｒ３は、小数第３位を四捨五入したものである。
工数比率ｒ３＝3105.75/(588.43+1351.86+3105.75)＝0.62
【００５３】
このようにして、工数比率取得部１３０は、各コンポーネントが同じ品質で独立したソフトウェアとして開発された場合の仮の工数をそれぞれ求めた上で、それら仮の工数の和と、工数見積対象のコンポーネントの仮の工数と、に基づき工数見積対象の工数比率を求める。
【００５４】
図２に戻って、工数取得部１４０は、仮全体工数取得部１２０が求めた仮全工数Ｅｋと工数比率取得部１３０が求めた工数比率ｒｊとに基づいて、工数見積対象のコンポーネントの工数を取得する工数取得手段である。
具体的には、工数取得部１４０は、以下式（５）に示すように、仮全工数Ｅｋと工数比率ｒｊとを乗算して工数見積対象のコンポーネントの工数ｅｊを求める。
より具体的には、工数取得部１４０は、工数見積対象のコンポーネントの品質及び開発期間と同じ条件で算出した仮全工数と、工数見積対象のコンポーネントの工数比率と、に基づいて、工数見積対象のコンポーネントの工数を求める。
【００５５】
【数５】
2015041156.tif 000007
【００５６】
工数取得部１４０は、各コンポーネント１乃至３の工数ｅ１、工数ｅ２、工数ｅ３を上記式（５）に基づいてそれぞれ以下のように求める。なお、仮全工数Ｅkは、コンポーネントｊの品質レベルに合わせた仮全体工数を示すものとする。具体的には、コンポーネント１の場合にはＥ低、コンポーネント２の場合にはＥ中、コンポーネント３の場合にはＥ高となる。
【００５７】
コンポーネント１の工数ｅ１＝仮全工数Ｅ低×工数比率ｒ１＝2642.92×0.12＝317.15
コンポーネント２の工数ｅ２＝仮全工数Ｅ中×工数比率ｒ２＝4492.97×0.27＝1213.10
コンポーネント３の工数ｅ３＝仮全工数Ｅ高×工数比率ｒ３＝6078.73×0.62＝3768.81
【００５８】
さらに、工数取得部１４０は、各コンポーネント１乃至３それぞれの工数ｅ１乃至ｅ３を足して開発プロジェクトの全工数を求める。
開発プロジェクトの全工数＝ｅ１＋ｅ２＋ｅ３＝317.15＋1213.10＋3768.81＝5299.06（人月）
【００５９】
図２に戻って、工数出力部１５０は、工数推定結果をディスプレイに出力する出力手段である。具体的には、工数出力部１５０は、工数取得部１４０が開発プロジェクトの全工数と各コンポーネントの工数とを求めると、それら工数を工数推定結果として、図６に示すようにディスプレイに表示する。この工数推定結果から、ユーザは、開発プロジェクトの全工数とともに各コンポーネント単位で工数を知ることができる。
【００６０】
以上、図１乃至図６を参照しながら説明した工数見積装置１００において、例えば、一つの特徴的な点は、過去の開発プロジェクト全体の実績データから導出した工数推定式を利用して、現在の開発プロジェクトの仮の全工数と、現在の開発プロジェクトを構成するコンポーネントの工数比率と、を求めて、現在の開発プロジェクトのコンポーネント単位の工数を求める点である。
【００６１】
そこで、以下この点に関連する工数見積処理の流れについて、図７のフローチャートを参照しながら説明する。なお、図７の工数見積処理では、工数見積対象のコンポーネントがコンポーネント１である場合を例にとって説明する。工数見積装置１００は、ユーザから工数の見積もりに必要なパラメータの入力を受け付けると、以下の処理を順に行う。
【００６２】
まず、仮全体工数取得部１２０は、開発プロジェクトの仮の全工数を算出する（ステップＳ１１）。具体的には、仮全工数取得部１２０は、自動で算出した総規模３５０（Ｋｓｔｅｐ）、コンポーネント１の品質レベル低及び開発期間１２月から、式項番４の工数推定式を選択する。そして、仮全工数取得部１２０は、選択した式項番４の工数推定式に総規模と開発期間のパラメータを代入して、品質低における仮全工数Ｅ低の値２６４２．９２（人月）を求める。
【００６３】
次に、工数比率取得部１３０は、工数見積対象のコンポーネントの工数比率を算出する（ステップＳ１２）。具体的には、工数比率取得部１３０は、工数見積対象であるコンポーネント１の品質レベル低に合わせて各コンポーネント１乃至３それぞれの仮の工数ｅ′１，低、ｅ′２，低、ｅ′３，低を求める。そして、工数比率取得部１３０は、求めた仮の工数（ｅ′１，低、ｅ′２，低及びｅ′３，低）の和で仮の工数ｅ′１，低を除算することで、品質レベルが低で統一された場合における工数見積対象のコンポーネント１の工数比率ｒ１の値０．１２を求める。
【００６４】
次に、工数取得部１４０は、工数見積対象のコンポーネントの工数を算出して（ステップＳ１３）、処理を終了する。具体的には、工数取得部１４０は、Ｓ１１で求めた仮全工数Ｅ低の値２６４２．９２（人月）と、Ｓ１２で求めた工数比率ｒ１の値０．１２と、を乗算して工数見積対象のコンポーネント１の工数ｅ１の値３１７．１５（人月）を求めて、処理を終了する。
なお、図７の工数見積処理を繰り返して、他のコンポーネント２及び３の工数ｅ２及びｅ３を求めた後、工数出力部１５０は、工数推定結果をディスプレイに出力するようにする。あるいは、図７の工数見積処理の各ステップにおいて、コンポーネント１乃至３全ての仮の全工数Ｅ低乃至Ｅ高と工数比率ｒ１乃至ｒ３とを算出して、全コンポーネントの工数ｅ１乃至ｅ３を一度に算出してもよい。
【００６５】
以上図７の工数見積処理において、工数見積装置１００が、仮全体工数取得部１２０、工数比率取得部１３０及び工数取得部１４０の各機能を備えることにより、開発プロジェクトの仮の全工数に、工数見積対象のコンポーネントの工数比率を乗算することができる。このことにより、工数見積対象のコンポーネントの工数を見積もることができるので、ソフトウェアの開発プロジェクトにおいてコンポーネント単位の工数推定式を利用せずにコンポーネント単位で工数を見積もることができる。従って、コンポーネント単位の工数推定式を導出するために一般に用いるコンポーネント単位の過去実績データも不要である。  
【００６６】
また、仮の全工数と工数比率とを算出する際に、工数見積対象のコンポーネントの品質に合わせて両者を算出するようにしている（例えば、品質レベルが低の場合、仮の全工数算出時、及び工数比率を算出するための各コンポーネントの仮の工数算出時、いずれも品質レベルを低に合わせて算出する）。このため、各コンポーネントの品質がずれることによって生じる工数見積もりの誤差を抑えることができるので、精度よくコンポーネント単位で工数を見積もることができる。
【００６７】
また、ユーザが独力で開発プロジェクトをコンポーネント単位で工数見積りした場合でも、工数見積装置１００は開発プロジェクトをコンポーネント単位で工数見積りできるので、粒度が異なることがない。このため、ユーザは容易にコンポーネント単位で比較できるので、自身が見積もった工数の妥当性の検討や比較に基づく修正あるいは比較によって乖離があった場合の乖離分析を行うことができる。
【００６８】
また、工数見積装置１００は、過去の開発プロジェクト全体の実績データから導出した工数推定式を利用して、現在の開発プロジェクトのコンポーネント単位の工数を求めることができる。ここで、過去の開発プロジェクト全体の実績データは、社内稟議用の資料に統一された基準で記載されることが多く、この資料を活用することで評価基準が揃った多数のデータを入手できる。このため、この資料に記載された実績データさえ蓄積して工数見積式を導出しておけば、現在の開発プロジェクトのコンポーネント単位で工数見積ができる。このため、プロジェクトマネージャ等が開発プロジェクトが終了する度、コンポーネント単位でのデータ入力を予め行っておく必要がない。従って、コンポーネント単位でのデータ収集を省くことができ、かつ、プロジェクトマネージャ等によるコンポーネントの粒度のずれの影響を受けることがないので、手間と時間をかけずにコンポーネント単位で評価者の違いによらず安定して工数を見積もることができる。
【００６９】
（変形例）
以上で実施形態の説明を終了するが、工数見積装置１００の具体的な構成や処理の内容等が上述の実施形態で説明したものに限られないことはもちろんである。
【００７０】
例えば、上述した実施形態においては、ソフトウェアの開発プロジェクトにおける規模としてソースコードの行数であるステップ数（Ｋｓｔｅｐ）を用いたがこれに限られない。例えば、規模は、ソフトウェアの機能数を示すファンクションポイント（ＦＰ）でもよい。ＦＰは公知の算出法があるので、ユーザは経験や勘に依らずに規模を精度よく入力することができる。
【００７１】
また、上述した実施形態においては、工数と関連のある項目として規模、品質レベル及び開発期間を用いたがこれに限られない。他の項目として、例えば、ソフトウェアの開発言語（Ｃ＋＋、Ｊａｖａ（登録商標）等）や開発者のスキルなどが考えられる。これら他の項目の実績データに基づいて予め工数推定式を導出しておけば、他の項目も加味した工数見積を行うことができる。
【００７２】
また、上述した実施形態においては、ユーザが開発期間として１２月を入力する場合を例にとって説明したが、開発期間は入力しなくてもよい。ユーザが入力画面に少なくとも規模と品質レベルを入力すれば、工数見積装置１００は、期間入力がない場合の工数推定式によりコンポーネント単位の工数及び開発プロジェクト全体の工数いずれも見積もることができる。
【００７３】
また、上述した実施形態においては、モデルとなる工数推定式として式（１）を用いたがこれに限られない。入力画面に入力する項目のパラメータが増えた場合（例えば、上述した他の項目のパラメータも入力するような場合）は、以下の式（６）の工数推定式を用いるようにする。
【００７４】
【数６】
2015041156.tif 000008
【００７５】
式（１）と異なる点は、乗数パラメータと指数的乗数パラメータにΠが付く点及び指数的乗数パラメータの指数γにｉが付く点である。Πは、複数のパラメータの総積を示す。例えば、式（１）の乗数パラメータは品質レベルに対応したが、式（６）の乗数パラメータは品質レベルを含む複数の項目のパラメータ（品質レベルのような度合いのパラメータ複数）に対応する。同様に、式（１）の指数的乗数パラメータは開発期間に対応したが、式（６）の指数的乗数パラメータは開発期間を含む複数の項目のパラメータ（開発期間のような数値のパラメータ複数）に対応する。ｉは、１以上の自然数であって、複数あるパラメータの数に対応する。
このように、工数と相関のある項目が増えると、それらを加味した上記式（６）の工数推定式を用いて、工数見積を行うことができる。
【００７６】
また、上記式（６）に代えて、以下の式（７）を用いることもできる。式（７）は、対数化を行わない重回帰分析により導出される。
【００７７】
【数７】
2015041156.tif 000009
【００７８】
式（６）と異なる点は、乗数パラメータと指数的乗数パラメータとが加算パラメータになってΣが付く点及び（６）で指数であったβとγｉとが係数になる点である。式（６）の乗数パラメータと対応する加算パラメータは、品質レベルを含む複数の項目のパラメータの総和を示す。式（６）の指数的乗数パラメータと対応する加算パラメータは、開発期間を含む複数の項目のパラメータの総和を示す。対数化を行わない重回帰分析により導出された式（７）は、式（６）と異なるバリエーションなので、式（７）の形式の工数推定式テーブルを予め記憶しておくとよい。
【００７９】
このように、統計分析の異なる手法によって様々なバリエーションの工数推定式が考えられるので、図５の工数推定式テーブルをバリエーション毎に記憶してもよい。この場合、工数見積装置１００は、工数見積にあたって最も精度のよいバリエーションの工数推定式を用いるとよい。
【００８０】
また、上述した実施形態においては、ソフトウェアの開発プロジェクトの工数を見積もったがこれに限られない。例えば、ハードウェアの開発プロジェクトの工数を見積もってもよい。具体的には、ハードウェアであるサーバやネットワーク機器などで構築するシステム基盤（ソフトウェアを除く）の開発プロジェクトの工数を見積もってもよい。この場合、ユーザは、規模として例えばシステム基盤の規模を示す値（サーバ台数等）を入力するようにする。
また、ユーザは、品質レベルとして例えばシステム基盤に求められるサービスの稼働率の度合い（例えば、稼働率が高だと計画停止を除いて稼働率１００％等）を入力するようにする。工数見積装置１００は、過去のシステム基盤の開発プロジェクト全体の実績データに基づいて導出した工数推定式を用いて、図７に示した工数見積処理により現在のシステム基盤の開発プロジェクトのコンポーネント単位の工数を見積もるとよい。
【００８１】
また、上述した実施形態においては、ユーザから工数の見積もりに必要なパラメータの入力を受け付けることを契機に図７の工数見積処理を開始するようにしたが、これに限られない。例えば、パラメータの入力を受付後、ユーザから工数見積開始ボタンのクリックを受け付けると図７の工数見積処置を開始するようにしてもよい。
また、上述した実施形態と変形例とを発明の要旨を逸脱しない範囲で任意に組み合わせてもよいことはもちろんである。
【００８２】
また、この発明の工数見積装置１００は、通常のＰＣ等のコンピュータによっても実現することができる。
具体的には、上述した実施形態においては、工数見積装置１００のプログラムが、ＲＯＭ１０２に予め記憶されているものとして説明した。しかし、ＲＯＭ１０２のプログラムをコンピュータにインストールして、上述の各部機能を実行することができるコンピュータを構成してもよい。なお、プログラムは、ＲＯＭ１０２に限らず、その他のコンピュータ読み取り可能な記録媒体（例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ及びＭＯ等）に格納してコンピュータに配布してもよいことはもちろんである。
また、プログラムをインターネット等の通信ネットワーク上のサーバ装置が有するディスク装置等に格納しておき、例えば、コンピュータにダウンロード等するようにしてもよい。
【符号の説明】
【００８３】
１００  工数見積装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  ＨＤＤ
１０５  Ｉ／Ｏポート
１１０  表示制御部
１２０  仮全体工数取得部
１３０  工数比率取得部
１４０  工数取得部
１５０  工数出力部
【図１】
2015041156.tif 000010
【図２】
2015041156.tif 000011
【図３】
2015041156.tif 000012
【図４】
2015041156.tif 000013
【図５】
2015041156.tif 000014
【図６】
2015041156.tif 000015
【図７】
2015041156.tif 000016