(57)【特許請求の範囲】
【請求項１】
複数の作業からなる一連の作業全体の工数の見積もりをコンピュータに実行させる工数見積プログラムにおいて、
前記各作業の見積もり工数の入力を受け付けさせる入力工程と、
前記各作業の作業者の属性に基づいて、前記入力工程によって入力された各作業の見積もり工数に含まれる見積もり誤差を抽出するためのモデル関数と、前記各作業の作業者の属性に基づいて、前記見積もり誤差に関する前記作業間の相互の相関関係を表わす相関係数とを取得させる取得工程と、
前記取得工程によって取得されたモデル関数を用いて、前記作業ごとに、前記属性に依存する前記見積もり誤差を表わす確率密度分布と前記見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布とを算出させる第１の算出工程と、
前記取得工程によって取得された相関係数に基づいて、前記第１の算出工程によって算出された各作業の見積もり誤差を表わす確率密度分布とモデル誤差を表わす確率密度分布とを統計的手法を用いて累積することにより、前記一連の作業全体の工数を算出させる第２の算出工程と、
前記第２の算出工程によって算出された算出結果を出力させる出力工程と、
を前記コンピュータに実行させることを特徴とする工数見積プログラム。
【請求項２】
前記取得工程は、
前記一連の作業の作業順序を参照することにより、前記各作業の直前または／および直後の作業との相互の相関関係を表わす相関係数を取得させることを特徴とする請求項１に記載の工数見積プログラム。
【請求項３】
前記取得工程は、
前記一連の作業の作業順序を参照することにより、並列する作業間の相互の相関関係を表わす相関係数を取得させることを特徴とする請求項１または２に記載の工数見積プログラム。
【請求項４】
前記作業の見積もり工数と前記作業に要した実績工数とに基づいて、前記作業の作業者の属性と関連付けて保持されているモデル関数に含まれているパラメータの値を更新させる更新工程を前記コンピュータに実行させ、
前記取得工程は、
前記更新工程によって前記パラメータの値が更新された場合、前記属性と関連付けて保持されている更新後のモデル関数を取得させることを特徴とする請求項１〜３のいずれか一つに記載の工数見積プログラム。
【請求項５】
請求項１〜４のいずれか一つに記載の工数見積プログラムを記録したコンピュータに読み取り可能な記録媒体。
【請求項６】
複数の作業からなる一連の作業全体の工数を見積もる工数見積装置において、
前記各作業の見積もり工数の入力を受け付ける入力手段と、
前記各作業の作業者の属性に基づいて、前記入力手段によって入力された各作業の見積もり工数に含まれる見積もり誤差を抽出するためのモデル関数と、前記各作業の作業者の属性に基づいて、前記見積もり誤差に関する前記作業間の相互の相関関係を表わす相関係数とを取得する取得手段と、
前記取得手段によって取得されたモデル関数を用いて、前記作業ごとに、前記属性に依存する前記見積もり誤差を表わす確率密度分布と前記見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布とを算出する第１の算出手段と、
前記取得手段によって取得された相関係数に基づいて、前記第１の算出手段によって算出された各作業の見積もり誤差を表わす確率密度分布とモデル誤差を表わす確率密度分布とを統計的手法を用いて累積することにより、前記一連の作業全体の工数を算出する第２の算出手段と、
前記第２の算出手段によって算出された算出結果を出力する出力手段と、
を備えることを特徴とする工数見積装置。
【請求項７】
コンピュータを用いて複数の作業からなる一連の作業全体の工数を見積もる工数見積方法において、
入力手段が、前記各作業の見積もり工数の入力を受け付ける入力工程と、
取得手段が、前記各作業の作業者の属性に基づいて、前記入力工程によって入力された各作業の見積もり工数に含まれる見積もり誤差を抽出するためのモデル関数と、前記各作業の作業者の属性に基づいて、前記見積もり誤差に関する前記作業間の相互の相関関係を表わす相関係数とを取得する取得工程と、
第１の算出手段が、前記取得工程によって取得されたモデル関数を用いて、前記作業ごとに、前記属性に依存する前記見積もり誤差を表わす確率密度分布と前記見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布とを算出する第１の算出工程と、
第２の算出手段が、前記取得工程によって取得された相関係数に基づいて、前記第１の算出工程によって算出された各作業の見積もり誤差を表わす確率密度分布とモデル誤差を表わす確率密度分布とを統計的手法を用いて累積することにより、前記一連の作業全体の工数を算出する第２の算出工程と、
出力手段が、前記第２の算出工程によって算出された算出結果を出力する出力工程と、
を含んだことを特徴とする工数見積方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数の作業からなる一連の作業全体の工数を見積もる工数見積プログラム、該プログラムを記録した記録媒体、工数見積装置、および工数見積方法に関する。
【背景技術】
【０００２】
従来、複数の作業からなる開発作業を作業単位にブレークダウンし、各作業の予測工数と作業の前後関係を表わす作業フローとから、開発作業全体の工数を見積もる手法が用いられている。また、ＰＥＲＴ（Ｐｒｏｇｒａｍ  Ｅｖａｌｕａｔｉｏｎ  ａｎｄ  Ｒｅｖｉｅｗ  Ｔｅｃｈｎｉｑｕｅ）手法に代表される、各作業の予測工数のばらつきを考慮して、開発作業全体の工数を統計的に見積もる手法が用いられている。
【０００３】
近年では、これらの手法による開発作業全体の工数見積もりを自動化したツールが提供されている。たとえば、ソフトウェア開発において、開発分野ごとに管理されている機能情報をもとにソフトウェア開発の機能量を求め、この機能量から開発作業全体の工数を見積もるツールが提供されている（たとえば、下記特許文献１参照。）。
【０００４】
また、過去に実行された類似プロジェクトの実際の作業工数を参照して、開発作業全体の工数を見積もるツールが提供されている（たとえば、下記特許文献２参照。）。これらによれば、同じ開発分野（類似プロジェクト）の実績値を用いて、ソフトウェア開発における作業量、費用などの見積もりをおこなうため、工数見積もりの精度を向上させることができる。
【０００５】
【特許文献１】特開２００２−２２２０８０号公報
【特許文献２】特開平１１−２０３３５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した特許文献１および２に記載の従来技術によれば、個々の作業者の経験やスキルに依存するばらつき、および各作業の工数を見積もる見積もり手法に依存するばらつきに関しては十分に考慮されていなかった。これにより、これらばらつきに起因する見積もり誤差が大きくなってしまい、結果的に開発作業全体の工数見積もりの精度が低下しているという問題があった。
【０００７】
特に、ソフトウェア開発においては、ハードウェア設計、建築設計の分野に比べて、各作業の工数が作業者の経験やスキルに大きく依存してばらつく傾向がある。このため、ばらつきに起因する見積もり誤差が増大しており、工数見積もりの精度の向上が重要な課題となっている。
【０００８】
ここで、従来技術の問題点を具体的に説明する。図２１は、従来技術の問題点を示す説明図である。図２１において、確率密度分布Ｘは、所定の見積もり手法を用いて見積もられた、ある作業の見積もり工数のばらつきを表わしている。確率密度分布Ｙ1は、熟練者Ａさんのある作業の実績値のばらつきを表わしている。確率密度分布Ｙ2は、新人Ｂさんのある作業の実績値のばらつきを表わしている。なお、実績値とは、作業に要した実際の工数（実績工数）である。
【０００９】
確率密度分布Ｙ1によれば、熟練者Ａさんは、見積もり工数（確率密度分布Ｘの平均値）に対して、全体的に工数が少なく、ばらつきが小さい。一方、確率密度分布Ｙ2によれば、新人Ｂさんは、見積もり工数に対して、全体的に工数が多く、ばらつきが大きい。
【００１０】
このように、ある作業に要する工数は、作業者の経験やスキルに大きく依存してばらついてしまう。このため、経験やスキルに依存するばらつきを十分に考慮しなかった場合には、各作業の見積もり工数の見積もり誤差が増大してしまい、一連の作業全体の工数の見積もり精度が低下してしまうという問題があった。
【００１１】
この発明は、上述した従来技術による問題点を解消するため、各作業の見積もり工数に含まれる作業者の属性に依存する見積もり誤差を考慮して、一連の作業全体の工数を統計的に見積もることにより、該一連の作業全体の工数の見積もり精度を向上させることができる工数見積プログラム、該プログラムを記録した記録媒体、工数見積装置、および工数見積方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するため、この発明にかかる工数見積プログラム、該プログラムを記録した記録媒体、工数見積装置、および工数見積方法は、複数の作業からなる一連の作業全体の工数を見積もる工数見積プログラム、該プログラムを記録した記録媒体、工数見積装置、および工数見積方法において、前記各作業の見積もり工数の入力を受け付け、前記各作業の作業者の属性に基づいて、入力された各作業の見積もり工数に含まれる見積もり誤差を抽出するためのモデル関数を取得し、そのモデル関数を用いて、前記作業ごとに、前記属性に依存する前記見積もり誤差を表わす確率密度分布と前記見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布とを算出し、それら各作業の見積もり誤差を表わす確率密度分布とモデル誤差を表わす確率密度分布とを統計的手法を用いて累積することにより、前記一連の作業全体の工数を算出し、その算出結果を出力することを特徴とする。
【００１３】
この発明によれば、作業者の経験やスキルに依存する見積もり誤差を考慮して、一連の作業全体の工数を見積もることができる。
【００１４】
また、上記発明において、さらに、前記各作業の作業者の属性に基づいて、前記見積もり誤差に関する前記作業間の相互の相関関係を表わす相関係数を取得し、その相関係数に基づいて、前記見積もり誤差を表わす確率密度分布と前記モデル誤差を表わす確率密度分布とを統計的手法を用いて累積することにより、前記一連の作業全体の工数を算出することとしてもよい。
【００１５】
また、上記発明において、前記一連の作業の作業順序を参照することにより、前記各作業の直前または／および直後の作業との相互の相関関係を表わす相関係数を取得することとしてもよい。
【００１６】
また、上記発明において、前記一連の作業の作業順序を参照することにより、並列する作業間の相互の相関関係を表わす相関係数を取得することとしてもよい。
【００１７】
これらの発明によれば、各作業者の経験やスキルに依存する作業間の相互の相関関係を考慮して、一連の作業全体の工数を見積もることができる。
【００１８】
また、上記発明において、前記作業の見積もり工数と前記作業に要した実績工数とに基づいて、前記作業の作業者の属性と関連付けて保持されているモデル関数に含まれているパラメータの値を更新し、前記パラメータの値が更新された場合、前記属性と関連付けて保持されている更新後のモデル関数を取得することとしてもよい。
【００１９】
この発明によれば、作業者の属性と関連付けられているモデル関数を、当該作業者による作業に要した実績工数に応じて更新することができる。
【００２０】
また、上記発明において、前記一連の作業全体の工数を表わす確率密度分布とともに、前記一連の作業全体の工数に含まれる見積もり誤差を表わす確率密度分布を表示画面に表示することとしてもよい。
【００２１】
この発明によれば、一連の作業全体の見積もり工数とともに、各作業の作業者の経験やスキルに依存する見積もり誤差をグラフィカルに表示することができる。
【００２２】
また、上記発明において、前記属性は、前記各作業の作業者の個人情報であることとしてもよく、また、前記各作業の作業者の熟練度であることとしてもよい。
【００２３】
この発明によれば、作業者の個人情報や熟練度に依存する見積もり誤差を考慮して、一連の作業全体の工数を見積もることができる。
【００２４】
また、上記発明において、複数の開発工程からなるソフトウェア開発の開発期間を見積もることとしてもよい。
【００２５】
この発明によれば、ソフトウェア開発者の経験やスキルに依存する見積もり誤差を考慮して、ソフトウェア開発の開発期間を見積もることができる。
【発明の効果】
【００２６】
本発明にかかる工数見積プログラム、該プログラムを記録した記録媒体、工数見積装置、および工数見積方法によれば、作業者の属性に依存する各作業の見積もり誤差を考慮することにより、一連の作業全体の工数の見積もり精度を向上させることができるという効果を奏する。
【発明を実施するための最良の形態】
【００２７】
以下に添付図面を参照して、この発明にかかる工数見積プログラム、該プログラムを記録した記録媒体、工数見積装置、および工数見積方法の好適な実施の形態を詳細に説明する。
【００２８】
（発明の概要）
まず、この発明の概要について説明する。図１は、この発明の概要を示す説明図である。ここでは、複数の作業Ａ，ＢおよびＣからなる一連の作業（作業Ａ→作業Ｂ→作業Ｃ）を例に挙げてこの発明の概要を説明する。
【００２９】
図１において、確率密度分布Ｘは、所定の見積もり手法を用いて見積もられた作業Ａの見積もり工数のばらつきを表わしている。確率密度分布ｘは、上記見積もり手法に依存する見積もり工数のモデル誤差のばらつきを表わしている。確率密度分布ｅは、作業Ａの作業者の属性に依存する見積もり工数の見積もり誤差のばらつきを表わしている。
【００３０】
一般に、各作業Ａ〜Ｃの工数は、作業者の経験やスキルなどの属性に依存して大きくばらついてしまう。このため、本発明では、各作業Ａ〜Ｃの作業者の属性に依存する見積もり誤差を考慮して、一連の作業の工数の見積もりをおこなう。具体的には、確率密度分布Ｘを確率密度分布ｘと確率密度分布ｅとに分離して、これら確率密度分布ｘおよび確率密度分布ｅを作業Ａの見積もり工数『Ｘ＝ｘ＋ｅ』として扱う。
【００３１】
また、作業Ｂおよび作業Ｃについても、作業Ａと同様に、各作業Ｂ，Ｃの見積もり工数を、見積もり手法に依存するモデル誤差と、作業者の属性に依存する見積もり誤差とに分離して、作業Ｂ，Ｃの見積もり工数として扱う。このように、各作業Ａ〜Ｃの各見積もり工数に含まれる作業者の属性に依存する見積もり誤差を考慮して、一連の作業全体の工数を見積もることにより見積もり精度の向上を図る。
【００３２】
（工数見積装置のハードウェア構成）
つぎに、この発明の実施の形態にかかる工数見積装置のハードウェア構成について説明する。図２は、この発明の実施の形態にかかる工数見積装置のハードウェア構成を示す説明図である。
【００３３】
図２において、工数見積装置２００は、コンピュータ本体２１０と、入力装置２２０と、出力装置２３０と、から構成されており、不図示のルータやモデムを介してＬＡＮ，ＷＡＮやインターネットなどのネットワーク２４０に接続可能である。
【００３４】
コンピュータ本体２１０は、ＣＰＵ，メモリ，インターフェースを有する。ＣＰＵは、工数見積装置２００の全体の制御を司る。メモリは、ＲＯＭ，ＲＡＭ，ＨＤ，光ディスク２１１，フラッシュメモリから構成される。メモリはＣＰＵのワークエリアとして使用される。
【００３５】
また、メモリには各種プログラムが格納されており、ＣＰＵからの命令に応じてロードされる。ＨＤおよび光ディスク２１１はディスクドライブによりデータのリード／ライトが制御される。また、光ディスク２１１およびフラッシュメモリはコンピュータ本体２１０に対し着脱自在である。インターフェースは、入力装置２２０からの入力、出力装置２３０への出力、ネットワーク２４０に対する送受信の制御をおこなう。
【００３６】
また、入力装置２２０としては、キーボード２２１、マウス２２２、スキャナ２２３などがある。キーボード２２１は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式であってもよい。マウス２２２は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。スキャナ２２３は、画像を光学的に読み取る。読み取られた画像は画像データとして取り込まれ、コンピュータ本体２１０内のメモリに格納される。なお、スキャナ２２３にＯＣＲ機能を持たせてもよい。
【００３７】
また、出力装置２３０としては、ディスプレイ２３１、スピーカ２３２、プリンタ２３３などがある。ディスプレイ２３１は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。また、スピーカ２３２は、効果音や読み上げ音などの音声を出力する。また、プリンタ２３３は、画像データや文書データを印刷する。
【００３８】
（属性情報ＤＢの記憶内容）
つぎに、属性情報ＤＢについて説明する。図３は、属性情報ＤＢの記憶内容を示す説明図である。図３において、属性情報ＤＢ３００は、属性ごとに、属性情報３００−１〜３００−ｎを保持している。属性とは、各作業をおこなう作業者の特徴を表わすものである。ここでは、作業者名（作業者１〜ｎ）を用いて各作業者の属性を表わしている。
【００３９】
属性情報３００−１〜３００−ｎは、作業者１〜ｎごとに、各作業の見積もり工数から見積もり誤差を抽出するためのモデル関数を有している。具体的には、各作業者１〜ｎに依存する見積もり誤差を表わす確率変数ｅ1〜ｅnと、各作業の見積もり工数を見積もる際に用いた見積もり手法に依存するモデル誤差を表わす確率変数ｘ1〜ｘnと、を有している。
【００４０】
なお、確率変数ｅ1〜ｅnは、属性（作業者１〜ｎ）ごとに予め用意されている。また、確率変数ｘ1〜ｘnは、各作業の工数を見積もる見積もり手法ごとに予め用意されている。ここでは、ある見積もり手法に依存するモデル誤差を表わす確率変数ｘ1〜ｘnが表記されている。なお、確率変数ｅ1〜ｅnおよび確率変数ｘ1〜ｘnの具体例は後述する。
【００４１】
（相関テーブルのデータ構造）
つぎに、相関テーブルについて説明する。図４は、相関テーブルの具体例を示す説明図（その１）である。なお、本実施の形態では、相関テーブル４００は、図３に示した属性情報ＤＢ３００に保持されていることとする。
【００４２】
図４において、相関テーブル４００は、各作業の作業者１〜３の属性間の相互の相関関係を表わす相関係数を保持している。ここでは、作業者名（作業者１〜３）が属性となっている。相関係数は、「０．０」から「１．０」の整数値によって表現され、「０．０」の場合が属性間の相関が最も弱く、「１．０」の場合が属性間の相関が最も強いことを表わしている。
【００４３】
具体的には、同一の作業者名となっている属性間の相関係数が「１．０」、それ以外の属性間の相関係数が「０．０」となっている。なお、属性間の相関係数の値は任意に設定可能である。具体的には、経験年数やスキルの違いによって相関係数を設定することができる。たとえば、作業者間の経験年数が近い場合に相関係数を高く設定し、経験年数が離れている場合に相関係数を低く設定する。
【００４４】
（工数見積装置の機能的構成）
つぎに、この発明の実施の形態にかかる工数見積装置２００の機能的構成について説明する。図５は、この発明の実施の形態にかかる工数見積装置２００の機能的構成を示すブロック図である。図５において、工数見積装置２００は、属性情報ＤＢ３００と、入力部５０１と、取得部５０２と、第１の算出部５０３と、第２の算出部５０４と、出力部５０５と、更新部５０６と、から構成されている。
【００４５】
これら各機能５０１〜５０６は、記憶領域に格納された当該機能に関するプログラムをＣＰＵに実行させることにより、当該機能を実現することができる。また、各機能５０１〜５０６からの出力データは記憶領域に保持される。また、図５中矢印で示した接続先の機能的構成は、接続元の機能からの出力データを記憶領域から読み込んで、当該機能に関するプログラムをＣＰＵに実行させる。
【００４６】
工数見積装置２００は、複数の作業からなる一連の作業全体の工数を見積もる機能を有している。作業とは、何らかのプロジェクトを複数の工程に分割した場合に、各工程でおこなわれる実務を意味している。たとえば、ソフトウェア開発において、ソフトウェアの各機能を複数のモジュールに分割して実現する場合、各作業はモジュールごとのプログラムの開発作業を意味する。
【００４７】
また、一連の作業とは、複数の作業からなる作業集合であり、各作業間は直列または並列に接続されている。ここで、一連の作業の具体例について説明する。図６は、一連の作業の具体例を示す説明図である。図６において、ダイアグラム６１０，６２０は、複数の作業Ａ，ＢおよびＣからなる一連の作業を表現する図表である。
【００４８】
ダイアグラム６１０では、各作業間は直列に接続されている。つまり、作業Ａが終了したあと作業Ｂを開始し、このあと、作業Ｂが終了したあと作業Ｃを開始する。ダイアグラム６２０では、作業Ａおよび作業Ｂが並列に接続されている。つまり、作業Ａおよび作業Ｂを並列におこない、作業Ａおよび作業Ｂがともに終了したあと作業Ｃを開始する。
【００４９】
まず、入力部５０１は、各作業の見積もり工数の入力を受け付ける機能を有する。この見積もり工数は、所定の見積もり手法を用いて見積もられた各作業の予測工数（たとえば、図２１に示した確率密度分布Ｘの平均値）である。具体的には、たとえば、図２に示したキーボード２２１やマウス２２２などの入力装置２２０をユーザが操作することで、各作業の見積もり工数の入力を受け付ける。
【００５０】
取得部５０２は、各作業の作業者の属性に基づいて、入力部５０１によって入力された各作業の見積もり工数に含まれる見積もり誤差を抽出するためのモデル関数を取得する機能を有する。属性とは、各作業の作業者の特徴を表わすものである。具体的には、作業者を特定するための個人情報（作業者名、年齢、所属部署など）であってもよく、また、各作業の経験年数やスキルなどを示す熟練度であってもよい。
【００５１】
なお、各作業の作業者の属性を表わす情報（個人情報、熟練度など）は、たとえば、各作業の見積もり工数と関連付けて工数見積装置２００に直接入力することとしてもよく、また、ＲＯＭやＲＡＭなどの記憶領域に予め記憶されていてもよい。
【００５２】
モデル関数は、作業者の属性に依存する見積もり誤差を表わす確率変数、および見積もり工数の見積もり手法に依存するモデル誤差を表わす確率変数である。取得部５０２は、たとえば、記憶領域から各作業の作業者の属性を表わす情報を読み出し、その情報に基づいて、各作業の作業者の属性と関連付けて保持されている確率変数ｅおよび確率変数ｘを図３に示した属性情報ＤＢ３００の中から取得する。
【００５３】
ここで、確率変数ｅおよび確率変数ｘの具体例について説明する。以下、作業者１〜３の属性に依存する見積もり誤差を表わす確率変数ｅ1〜ｅ3および見積もり工数の見積もり手法に依存するモデル誤差を表わす確率変数ｘ1〜ｘ3を下記式（１）〜（６）に示す。ただし、Ｔは各作業の見積もり工数であり、ｒ１は（平均値，標準偏差）＝（０，１）の正規分布である。
【００５４】
ｅ1＝０．０７×Ｔ×ｒ１＋０．０３×Ｔ        …（１）
【００５５】
ｘ1＝１．０×Ｔ＋１                          …（２）
【００５６】
ｅ2＝０．１×Ｔ×ｒ１                        …（３）
【００５７】
ｘ2＝０．７５×Ｔ＋１                        …（４）
【００５８】
ｅ3＝０．０７×Ｔ×ｒ１                      …（５）
【００５９】
ｘ3＝１．２×Ｔ＋１                          …（６）
【００６０】
第１の算出部５０３は、取得部５０２によって取得されたモデル関数を用いて、作業ごとに、属性に依存する見積もり誤差を表わす確率密度分布と見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布とを算出する機能を有する。具体的には、作業ｉごとに、取得部５０２によって取得された確率変数ｅiおよび確率変数ｘiに各作業の見積もり工数を代入することにより、確率密度分布ｅiおよび確率密度分布ｘiを算出する。
【００６１】
たとえば、ある作業の作業者が作業者１であって、該作業の見積もり工数が「１０」であるとする。この場合、上記式（１）および（２）に含まれるパラメータＴに、見積もり工数「１０」を代入することにより、作業者１に依存する見積もり誤差を表わす確率密度分布ｅ1、および見積もり工数「１０」の見積もり手法に依存する確率密度分布ｘ1を算出する。
【００６２】
第２の算出部５０４は、第１の算出部５０３によって算出された各作業の見積もり誤差を表わす確率密度分布とモデル誤差を表わす確率密度分布とを統計的手法を用いて累積することにより、一連の作業全体の工数を算出する機能を有する。具体的には、第１の算出部５０３によって算出された作業ごとの確率密度分布ｅおよび確率密度分布ｘの平均値および標準偏差を既存の統計的手法を用いて累積することにより、一連の作業全体の工数を算出する。
【００６３】
より具体的には、各作業に関する確率密度分布ｅおよび確率密度分布ｘの平均値を統計的手法を用いて累積することにより、一連の作業全体の工数の平均値を算出する。また、各作業に関する確率密度分布ｅおよび確率密度分布ｘの標準偏差を統計的な手法を用いて累積することにより、一連の作業全体の見積もり工数の標準偏差を算出する。
【００６４】
その結果、算出された一連の作業全体の見積もり工数の平均値および標準偏差に基づいて、一連の作業全体の工数を見積もる。なお、見積もり誤差を表わす確率密度分布とモデル誤差を表わす確率密度分布とを統計的に累積する具体的な手法は、後述する実施例１〜３において説明する。
【００６５】
また、取得部５０２は、各作業の作業者の属性に基づいて、見積もり誤差に関する作業間の相互の相関関係を表わす相関係数を取得する機能を有する。具体的には、たとえば、図４に示した相関テーブル４００を参照することにより、各作業の作業者の属性に基づいて、見積もり誤差に関する作業間の相互の相関関係を表わす相関係数を取得する。
【００６６】
このとき、予め設定された規則に従って、作業間の相互の相関関係を表わす相関係数を取得することとしてもよい。たとえば、一連の作業のうちある作業に注目した場合、該作業の前後の作業との間の相互の相関関係を考慮して、前後の作業との相関係数を取得することとしてもよい。また、並列に接続された作業との間の相互の相関関係を考慮して、並列する作業間の相関係数を取得することとしてもよい。
【００６７】
より具体的には、取得部５０２は、一連の作業の作業順序を参照することにより、各作業の直前または／および直後の作業との相互の相関関係を表わす相関係数を取得することとしてよい。また、一連の作業の作業順序を参照することにより、並列する作業間の相互の相関関係を表わす相関係数を取得することとしてよい。
【００６８】
なお、各作業の作業順序を特定する情報（たとえば、図６に示したダイアグラム６１０，６２０）は、工数見積装置２００に直接入力することとしてもよく、また、ＲＯＭやＲＡＭなどの記憶領域に予め記憶されていてもよい。具体的には、たとえば、取得部５０２は、ダイアグラム６１０，６２０を参照することにより、予め設定された規則に従って、作業間の相関係数を取得する。
【００６９】
第２の算出部５０４は、取得部５０２によって取得された相関係数に基づいて、一連の作業全体の工数を算出する機能を有する。具体的には、作業間の相関を考慮して、各作業の見積もり誤差を表わす確率密度分布とモデル誤差を表わす確率密度分布とを統計的手法を用いて累積する。
【００７０】
なお、作業間の相関関係を考慮して、見積もり誤差を表わす確率密度分布とモデル誤差を表わす確率密度分布とを統計的に累積する具体的な手法は、後述する実施例２および３において説明する。また、属性間の相関関係が相関テーブル４００などに定義されていない場合には、予め設定された相関係数（たとえば、「０．５」）を用いて、一連の作業全体の工数を算出することとしてもよい。
【００７１】
出力部５０５は、第２の算出部５０４によって算出された算出結果を出力する機能を有する。出力部５０５による出力形式は、ディスプレイ２３１での画面表示、プリンタ２３３での印刷出力、メモリへのデータ出力（保存）、外部のコンピュータ装置への送信のいずれであってもよい。
【００７２】
具体的には、出力部５０５は、一連の作業全体の工数を表わす確率密度分布および一連の作業全体の工数に含まれる見積もり誤差を表わす確率密度分布をディスプレイ２３１に表示することとしてもよい。なお、出力部５０５による出力形式の具体例は後述する実施例４（図２０）において説明する。
【００７３】
更新部５０６は、作業の見積もり工数と該作業に要した実績工数とに基づいて、該作業の作業者の属性と関連付けて保持されているモデル関数に含まれているパラメータの値を更新する機能を有する。具体的には、たとえば、過去に見積もられた作業の見積もり工数と、実際に該作業に要した実績工数とをもとに既存のフィッティング手法を用いてパラメータの値を更新する。
【００７４】
また、更新部５０６によってパラメータの値が更新された場合、取得部５０２は、属性と関連付けて保持されている更新後のモデル関数を取得することとしてもよい。ここで、更新部５０６による更新処理の具体例について説明する。ここでは、作業者１によって作業Ａをおこなった場合の更新処理を例に挙げて説明する。
【００７５】
図７は、更新処理の概要を示す説明図である。まず、作業Ａの見積もり工数および作業Ａに要した作業者１の実績工数を表す入力情報７１０を入力する。具体的には、たとえば、図２に示したキーボード２２１やマウス２２２などの入力装置２２０をユーザが操作することで入力情報７１０を入力する。
【００７６】
このあと、この入力情報７１０に基づいて、作業者１に関する作業Ａの過去の見積もり工数および実績工数を記録した履歴情報７２０の内容を履歴情報７３０に更新する。履歴情報７２０，７３０には、古い順（Ｎｏ．１→Ｎｏ．２→…）に、作業Ａの過去の見積もり工数およびそのときの作業者１の実績工数が記録されている。これら履歴情報７２０，７３０は、図３に示した属性情報ＤＢ３００に保持されている。
【００７７】
つぎに、更新後の履歴情報７３０に基づいて、作業者１と関連付けられたモデル関数（たとえば、上記式（１）および（２））に含まれるパラメータの値を更新する。具体的には、モデル関数を下記式（７）および（８）として、パラメータＰ1，Ｐ2，Ｐ3，Ｐ4の値を再計算する。
【００７８】
ｘ＝Ｐ1×Ｔ＋Ｐ2                                            …（７）
【００７９】
ｅ＝Ｐ3×Ｔ×ｒ１＋Ｐ4                                      …（８）
【００８０】
パラメータＰ1，Ｐ2，Ｐ3，Ｐ4の値の再計算が終了すると、上記式（１）および（２）に含まれるパラメータの値を再計算された値に更新する。
【００８１】
ここで、パラメータＰ1，Ｐ2，Ｐ3，Ｐ4の値の再計算手法の一例を示す。以下、履歴情報７３０に記録されている見積もり工数および実績工数を古い順に（見積もり工数，実績工数）＝（ｔｉ，ｔ’ｉ）と表記する（ｉ＝１，…，ｎ）。まず、下記式（９）を用いて、見積もり工数と実績工数との差分を算出する。
【００８２】
Δｉ＝（ｔｉ−ｔ’ｉ）／ｔｉ                                  …（９）
【００８３】
このあと、Δｉを近似するための正規分布を算出し、その正規分布の平均値μおよび標準偏差σを求める。ここで求めた平均値μおよび標準偏差σが上述したパラメータＰ3，Ｐ4の値となる（Ｐ3＝σ、Ｐ4＝μ）。つぎに、Δｉが正規分布のどの位置にあるのかを算出し、下記式（１０）を用いてｔ’ｉから見積もり工数の見積もり誤差分を除算する。
【００８４】
ｘｉ＝ｔｉ−Ｔ×（Ｐ3×Δｉ＋Ｐ4）                            …（１０）
【００８５】
そして、（ｔｉ，ｘｉ）が下記式（１１）によって表せるようなパラメータＰ1およびＰ2の値を最小二乗法を用いて算出する。
【００８６】
ｘｉ＝Ｐ1×ｔｉ＋Ｐ2                                          …（１１）
【００８７】
最後に、再計算されたパラメータＰ1，Ｐ2，Ｐ3，Ｐ4の値を、上記式（７）および（８）に代入する。この結果、再計算されたパラメータＰ1，Ｐ2，Ｐ3，Ｐ4の値が上記式（７）および（８）に代入されたモデル関数を、作業者１と関連付けられた更新後のモデル関数とする。
【００８８】
このように、作業者の属性と関連付けられているモデル関数（たとえば、上記式（１）〜（６））を、作業の見積もり工数と当該作業者による作業に要した実績工数とに応じて変動させることができる。これにより、作業者の熟練度などの変化に応じてモデル関数を更新することができ、見積もり工数を算出する際に、そのときの作業者の属性に合った適切なモデル関数を用いることができる。
【００８９】
（工数見積装置の工数見積処理手順）
つぎに、この発明の実施の形態にかかる工数見積装置２００の工数見積処理手順について説明する。図８は、この発明の実施の形態にかかる工数見積装置２００の工数見積処理手順を示すフローチャートである。図８のフローチャートにおいて、まず、入力部５０１により、一連の作業を構成する各作業の見積もり工数の入力を受け付けたか否かを判断する（ステップＳ８０１）。
【００９０】
ここで、各作業の見積もり工数が入力されるのを待って（ステップＳ８０１：Ｎｏ）、入力された場合（ステップＳ８０１：Ｙｅｓ）、取得部５０２により、各作業の作業者の属性に基づいて、入力部５０１によって入力された各作業の見積もり工数に含まれる見積もり誤差を抽出するためのモデル関数を取得する（ステップＳ８０２）。
【００９１】
さらに、取得部５０２により、各作業の作業者の属性に基づいて、見積もり誤差に関する作業間の相互の相関関係を表わす相関係数を取得する（ステップＳ８０３）。このあと、第１の算出部５０３により、取得部５０２によって取得されたモデル関数を用いて、作業ごとに、属性に依存する見積もり誤差を表わす確率密度分布と見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布とを算出する（ステップＳ８０４）。
【００９２】
そして、第２の算出部５０４により、ステップＳ８０３において取得された相関係数に基づいて、ステップＳ８０４において算出された各作業の見積もり誤差を表わす確率密度分布とモデル誤差を表わす確率密度分布とを統計的に累積することにより、一連の作業全体の工数を算出する（ステップＳ８０５）。
【００９３】
出力部５０５により、第２の算出部５０４によって算出された算出結果を出力して（ステップＳ８０６）、本フローチャートによる一連の処理を終了する。なお、ステップＳ８０２およびステップＳ８０３は、実行順序が逆であってもよく、また、並列に実行することとしてもよい。
【００９４】
このように、この発明の実施の形態によれば、作業者の経験やスキルに依存する見積もり誤差を考慮して、一連の作業全体の工数を見積もることができる。このとき、各作業者の経験やスキルに依存する作業間の相互の相関関係を考慮して、一連の作業全体の工数を見積もることができる。
【００９５】
また、作業者の属性と関連付けて属性情報ＤＢ３００に保持されているモデル関数を、該作業者による作業に要した実績工数に応じて更新することができる。この結果、作業者の熟練度の変化に応じてモデル関数が更新され、作業者の熟練度に合った適切なモデル関数を用いた工数見積もりを実現することができる。
【実施例１】
【００９６】
つぎに、上述した実施の形態の実施例１について説明する。実施例１では、図６に示したダイアグラム６１０によって表現される一連の作業を例に挙げて、該一連の作業全体の工数を見積もる。図９は、各作業の見積もり工数の一例を示す説明図（その１）である。図９において、入力情報９００は、作業Ａ〜Ｃごとに、各作業Ａ〜Ｃの作業者１〜３および各作業Ａ〜Ｃの見積もり工数を示す情報である。
【００９７】
具体的には、作業者１によって作業Ａがおこなわれた場合の見積もり工数「１０（日）」と、作業者２によって作業Ｂがおこなわれた場合の見積もり工数「２０（日）」と、作業者３によって作業Ｃがおこなわれた場合の見積もり工数「２０（日）」と、が示されている。これら見積もり工数は、所定の見積もり手法を用いて見積もられた工数である。
【００９８】
この入力情報９００は、ユーザによって工数見積装置２００に直接入力される。この結果、入力部５０１（図５参照）により、入力情報９００の入力を受け付ける。このあと、取得部５０２により、各作業Ａ〜Ｃの作業者の属性（作業者１〜３）に基づいて、属性情報ＤＢ３００の中からモデル関数を取得する。具体的には、上記式（１）〜（６）を取得することとなる。
【００９９】
さらに、取得部５０２により、各作業Ａ〜Ｃの作業者の属性（作業者１〜３）に基づいて、図４に示した相関テーブル４００を参照することにより、見積もり誤差に関する作業間の相互の相関関係を表わす相関係数を取得する。ここでは、ダイアグラム６１０を参照することにより、各作業の直前または／および直後の作業との相互の相関関係を表わす相関係数を取得する。
【０１００】
図１０は、相関係数の一例を示す説明図（その１）である。図１０において、相関情報１０００は、各作業Ａ〜Ｃの作業者１〜３の属性に基づいて取得された、各作業Ａ〜Ｃの直前または／および直後の作業との相互の相関関係を表わす相関係数を示す情報である。具体的には、同一作業間の相関係数が「１．０」となっており、それ以外の相関係数は「０．０」となっている。
【０１０１】
つぎに、第１の算出部５０３により、入力情報９００に基づいて、各作業Ａ〜Ｃの見積もり工数を上記式（１）〜（６）に代入し、各作業者１〜３に依存する見積もり誤差を表わす確率密度分布ｅ1〜ｅ3と、各作業Ａ〜Ｃの見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布ｘ1〜ｘ3とを算出する。
【０１０２】
図１１は、第１の算出部５０３の算出結果を示す説明図（その１）である。図１１において、算出結果１１００は、作業Ａ〜Ｃごとに、各作業者１〜３に依存する見積もり誤差を表わす確率密度分布ｅ1〜ｅ3と、各作業Ａ〜Ｃの見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布ｘ1〜ｘ3との平均値および標準偏差を有している。
【０１０３】
ここで、作業Ａを例に挙げると、作業者１に依存する見積もり誤差を表わす確率密度分布ｅ1の（平均値，標準偏差）＝（０．３，０．７）と、作業Ａの見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布ｘ1の（平均値，標準偏差）＝（１１．０，０．０）とを有している。
【０１０４】
つぎに、第２の算出部５０４により、図１０に示した相関情報１０００に基づいて、図１１に示した算出結果１１００（確率密度分布ｅ1〜ｅ3，ｘ1〜ｘ3の平均値および標準偏差）を統計的な手法を用いて累積することにより、一連の作業全体の工数を算出する。ここで、確率密度分布ｅ1〜ｅ3，ｘ1〜ｘ3の平均値および標準偏差を累積する統計的手法の具体例について説明する。
【０１０５】
以下、確率密度分布ｅ1〜ｅ3の平均値をそれぞれｍｅａｎ（ｅ1）〜ｍｅａｎ（ｅ3）、標準偏差をそれぞれσ（ｅ1）〜σ（ｅ3）と表記する。また、確率密度分布ｘ1〜ｘ3の平均値をそれぞれｍｅａｎ（ｘ1）〜ｍｅａｎ（ｘ3）、標準偏差をそれぞれσ（ｘ1）〜σ（ｘ3）と表記する。また、作業ｉと作業ｊとの相互の相関関係を表わす相関係数をρijと表記する。
【０１０６】
これら確率密度分布ｅ1〜ｅ3の平均値および標準偏差と、確率密度分布ｘ1〜ｘ3の平均値および標準偏差と、作業間の相関係数とに基づいて、一連の作業全体のモデル誤差平均値：ｍｅａｎ（ｘ）、モデル誤差標準偏差：σ（ｘ）、見積もり誤差平均値：ｍｅａｎ（ｅ）および見積もり誤差標準偏差：σ（ｅ）を下記式（１２）〜（１５）のように算出することができる。
【０１０７】
ｍｅａｎ（ｘ）＝ｍｅａｎ（ｘ1）＋ｍｅａｎ（ｘ2）＋ｍｅａｎ（ｘ3）
＝５２                                          …（１２）
【０１０８】
σ（ｘ）＝σ（ｘ1）＋σ（ｘ2）＋σ（ｘ3）
＝０                                                  …（１３）
【０１０９】
ｍｅａｎ（ｅ）＝ｍｅａｎ（ｅ1）＋ｍｅａｎ（ｅ2）＋ｍｅａｎ（ｅ3）
＝０．３                                        …（１４）
【０１１０】
σ（ｅ）＝ｓｑｒｔ（σ（ｅ1）2＋σ（ｅ2）2＋σ（ｅ3）2＋２×ρAB×σ（ｅ1）
×σ（ｅ2）＋２×ρBC×σ（ｅ2）×σ（ｅ3））
≒２．５４                                            …（１５）
【０１１１】
このあと、上記式（１２）〜（１５）を用いて算出された各値を、『Ｘ＝ｘ＋ｅ』の等式に従って、下記式（１６）および（１７）に代入することにより、一連の作業全体の平均値：ｍｅａｎ（Ｘ）および標準偏差：σ（Ｘ）を求めることができる。
【０１１２】
ｍｅａｎ（Ｘ）＝ｍｅａｎ（ｘ）＋ｍｅａｎ（ｅ）＝５２．３      …（１６）
σ（Ｘ）＝ｓｑｒｔ（σ（ｘ）2＋σ（ｅ）2）＝２．５４          …（１７）
【０１１３】
最後に、上記式（１６）および（１７）を用いて算出された平均値：ｍｅａｎ（Ｘ）および標準偏差：σ（Ｘ）を用いて、一連の作業全体の工数を見積もる。このとき、任意の確率で一連の作業が終了する工数を見積もることができる。
【０１１４】
具体的には、たとえば、一連の作業全体の平均値：ｍｅａｎ（Ｘ）よりも標準偏差：σ（Ｘ）の３倍分大きな値『ｍｅａｎ（Ｘ）＋３×σ（Ｘ）≒６０（日）』を算出することにより、９９．８（％）の確率で一連の作業が終了する工数を見積もることができる。
【０１１５】
以上説明した実施例１によれば、各作業者１〜３の経験やスキルに依存する見積もり誤差を考慮して、一連の作業全体の工数を見積もることができる。これにより、熟練度など属性の違いによって生じるばらつきを抑えることができ、一連の作業の工数を見積もる際の見積もり精度を向上させることができる。
【実施例２】
【０１１６】
つぎに、上述した実施の形態の実施例２について説明する。実施例２では、図６に示したダイアグラム６１０によって表現される一連の作業を例に挙げて、作業間の相互の相関関係に基づいて、該一連の作業全体の工数を見積もる。まず、入力情報について説明する。図１２は、各作業の見積もり工数の一例を示す説明図（その２）である。
【０１１７】
図１２において、入力情報１２００は、作業Ａ〜Ｃごとに、該各作業Ａ〜Ｃの作業者１，２および見積もり工数を示す情報である。具体的には、作業者１によって作業Ａがおこなわれた場合の見積もり工数「１０（日）」と、作業者２によって作業Ｂがおこなわれた場合の見積もり工数「２０（日）」と、作業者１によって作業Ｃがおこなわれた場合の見積もり工数「２０（日）」と、が示されている。
【０１１８】
つぎに、実施例２における相関テーブルについて説明する。図１３は、相関テーブルの一例を示す説明図（その２）である。図１３において、相関テーブル１３００は、作業者１および２の属性間の相互の相関関係を表わす相関係数を保持している。具体的には、同一の作業者間の相関係数が「１」、作業者１と作業者２との間の相関係数が「０．５」となっている。
【０１１９】
一連の作業全体の工数を見積もる場合、まず、入力部５０１により、入力情報１２００の入力を受け付ける。このあと、取得部５０２により、各作業Ａ〜Ｃの作業者の属性（作業者１および２）に基づいて、属性情報ＤＢ３００の中からモデル関数を取得する。具体的には、上記式（１）〜（４）を取得する。
【０１２０】
さらに、取得部５０２により、各作業Ａ〜Ｃの作業者の属性（作業者１および２）に基づいて、相関テーブル１３００を参照することにより、見積もり誤差に関する作業間の相互の相関関係を表わす相関係数を取得する。ここでは、ダイアグラム６１０を参照することにより、各作業の直前または／および直後の作業との相互の相関関係を表わす相関係数を取得する。
【０１２１】
図１４は、相関係数の一例を示す説明図（その２）である。図１４において、相関情報１４００は、各作業Ａ〜Ｃの作業者１および２の属性に基づいて取得された作業間の相関係数を示す情報である。具体的には、同一作業間の相関係数が「１」となっており、それ以外の相関係数は「０．５」となっている。
【０１２２】
このあと、第１の算出部５０３により、入力情報１２００に基づいて、各作業Ａ〜Ｃの見積もり工数を上記式（１）〜（４）に代入することにより、各作業者１および２に依存する見積もり誤差を表わす確率密度分布ｅ1，ｅ2と、各作業Ａ〜Ｃの見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布ｘ1，ｘ2とを算出する。
【０１２３】
なお、実施例２では、作業Ａおよび作業Ｃの作業者が同一の作業者１のため、作業者１に依存する見積もり誤差を表わす確率密度分布ｅ1と、作業Ａおよび作業Ｃの見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布ｘ1に、作業Ａおよび作業Ｃの見積もり工数をそれぞれ代入することとなる。
【０１２４】
図１５は、第１の算出部５０３の算出結果を示す説明図（その２）である。図１５において、算出結果１５００には、作業Ａ〜Ｃごとに、各作業者１および２に依存する見積もり誤差を表わす確率密度分布ｅ1，ｅ2、および各作業Ａ〜Ｃの見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布ｘ1，ｘ2の平均値と標準偏差とを有している。
【０１２５】
ここで、作業Ｃを例に挙げると、作業者１に依存する見積もり誤差を表わす確率密度分布ｅ1の（平均値，標準偏差）＝（０．６，１．４）と、作業Ａの見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布ｘ1の（平均値，標準偏差）＝（２１．０，０．０）とを有している。
【０１２６】
つぎに、第２の算出部５０４により、図１４に示した相関情報１４００に基づいて、図１５に示した算出結果１５００（確率密度分布ｅ1，ｅ2および確率密度分布ｘ1，ｘ2）を統計的な手法を用いて累積することにより、一連の作業全体の工数を算出する。
【０１２７】
ここでは、一連の作業全体のモデル誤差平均値：ｍｅａｎ（ｘ）、モデル誤差標準偏差：σ（ｘ）、見積もり誤差平均値：ｍｅａｎ（ｅ）および見積もり誤差標準偏差：σ（ｅ）を下記式（１８）〜（２１）のように算出することができる。
【０１２８】
ｍｅａｎ（ｘ）＝ｍｅａｎ（ｘ1）＋ｍｅａｎ（ｘ2）＋ｍｅａｎ（ｘ3）
＝４８                                          …（１８）
【０１２９】
σ（ｘ）＝σ（ｘ1）＋σ（ｘ2）＋σ（ｘ3）
＝０                                                  …（１９）
【０１３０】
ｍｅａｎ（ｅ）＝ｍｅａｎ（ｅ1）＋ｍｅａｎ（ｅ2）＋ｍｅａｎ（ｅ3）
＝０．９                                        …（２０）
【０１３１】
σ（ｅ）＝ｓｑｒｔ（σ（ｅ1）2＋σ（ｅ2）2＋σ（ｅ3）2＋２×ρAB×σ（ｅ1）
×σ（ｅ2）＋２×ρBC×σ（ｅ2）×σ（ｅ3））
≒３．２６                                            …（２１）
【０１３２】
このあと、上記式（１８）〜（２１）を用いて算出された各値を、『Ｘ＝ｘ＋ｅ』の等式に従って、下記式（２２）および（２３）に代入することにより、一連の作業全体の平均値：ｍｅａｎ（Ｘ）および標準偏差：σ（Ｘ）を求めることができる。
【０１３３】
ｍｅａｎ（Ｘ）＝ｍｅａｎ（ｘ）＋ｍｅａｎ（ｅ）＝４８．９      …（２２）
【０１３４】
σ（Ｘ）＝ｓｑｒｔ（σ（ｘ）2＋σ（ｅ）2）＝３．２６          …（２３）
【０１３５】
最後に、上記式（２２）および（２３）を用いて算出されたｍｅａｎ（Ｘ）およびσ（Ｘ）を用いて、一連の作業全体の工数を見積もる。このとき、任意の確率で一連の作業が終了する工数を見積もることができる。
【０１３６】
具体的には、たとえば、一連の作業全体の平均値：ｍｅａｎ（Ｘ）よりも標準偏差：σ（Ｘ）の３倍分大きな値『ｍｅａｎ（Ｘ）＋３×σ（Ｘ）≒５９（日）』を算出することにより、９９．８（％）の確率で一連の作業が終了する工数を見積もることができる。ここでは、作業間に相関関係が存在しない場合に比べて見積もり工数が少なくなっている。
【０１３７】
以上説明した実施例２によれば、各作業者１および２の経験やスキルに依存する直列する作業間の相互の相関関係を考慮して、一連の作業全体の工数を見積もることができる。これにより、直列する作業間の相関によって生じるばらつきを抑えることができ、一連の作業の工数を見積もる際の見積もり精度を向上させることができる。
【実施例３】
【０１３８】
つぎに、上述した実施の形態の実施例３について説明する。実施例３では、図６に示したダイアグラム６２０によって表現される一連の作業を例に挙げて、該一連の作業全体の工数を見積もる。まず、入力情報について説明する。図１６は、各作業の見積もり工数の一例を示す説明図（その３）である。
【０１３９】
図１６において、入力情報１６００は、作業Ａ〜Ｃごとに、該各作業Ａ〜Ｃの作業者１〜３および見積もり工数を示す情報である。具体的には、作業者１によって作業Ａがおこなわれた場合の見積もり工数「５（日）」と、作業者２によって作業Ｂがおこなわれた場合の見積もり工数「４（日）」と、作業者３によって作業Ｃがおこなわれた場合の見積もり工数「５（日）」と、が示されている。
【０１４０】
つぎに、実施例３における相関テーブルについて説明する。図１７は、相関テーブルの一例を示す説明図（その３）である。図１７において、相関テーブル１７００は、作業者１〜３の属性間の相互の相関関係を表わす相関係数を保持している。具体的には、同一の作業者間の相関係数が「１」、作業者１と作業者２との間の相関係数が「０．５」、作業者１と作業者３との間の相関係数が「０．０」、作業者２と作業者３との間の相関係数が「０．０」となっている。
【０１４１】
一連の作業全体の工数を見積もる場合、まず、入力部５０１により、入力情報１６００の入力を受け付ける。このあと、取得部５０２により、各作業Ａ〜Ｃの作業者の属性（作業者１〜３）に基づいて、属性情報ＤＢ３００の中からモデル関数を取得する。具体的には、上記式（１）〜（６）を取得する。
【０１４２】
さらに、取得部５０２により、各作業Ａ〜Ｃの作業者の属性（作業者１〜３）に基づいて、相関テーブル１７００を参照することにより、見積もり誤差に関する作業間の相互の相関関係を表わす相関係数を取得する。ここでは、ダイアグラム６２０を参照することにより、各作業の直前または／および直後の作業との相互の相関関係を表わす相関係数を取得する。
【０１４３】
図１８は、相関係数の一例を示す説明図（その３）である。図１８において、相関情報１８００は、各作業Ａ〜Ｃの作業者１〜３の属性に基づいて取得された作業間の相関係数を示す情報である。具体的には、同一作業間の相関係数が「１．０」、作業１と作業２との間の相関係数が「０．５」、それ以外の相関係数は「０．０」となっている。
【０１４４】
このあと、第１の算出部５０３により、上記式（１）〜（６）に、入力情報１６００に基づく各作業Ａ〜Ｃの見積もり工数を代入することにより、各作業者１〜３に依存する見積もり誤差を表わす確率密度分布ｅ1〜ｅ3と、各作業Ａ〜Ｃの見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布ｘ1〜ｘ3とを算出する。
【０１４５】
図１９は、第１の算出部５０３の算出結果を示す説明図（その３）である。図１９において、算出結果１９００には、作業Ａ〜Ｃごとに、各作業者１〜３に依存する見積もり誤差を表わす確率密度分布ｅ1〜ｅ3、および各作業Ａ〜Ｃの見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布ｘ1〜ｘ3の平均値と標準偏差とが表記されている。
【０１４６】
ここで、作業Ｃを例に挙げると、作業者３に依存する見積もり誤差を表わす確率密度分布ｅ3の（平均値，標準偏差）＝（０．０，０．３５）と、作業Ｃの見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布ｘ3の（平均値，標準偏差）＝（７．０，０．０）とが表記されている。
【０１４７】
このあと、第２の算出部５０４により、図１８に示した相関情報１８００に基づいて、図１９に示した算出結果１９００（確率密度分布ｅ1〜ｅ3および確率密度分布ｘ1〜ｘ3）を統計的な手法を用いて累積することにより、一連の作業全体の工数を算出する。
【０１４８】
ここでは、一連の作業全体のモデル誤差平均値ｍｅａｎ（ｘ）、モデル誤差標準偏差σ（ｘ）、見積もり誤差平均値ｍｅａｎ（ｅ）および見積もり誤差標準偏差σ（ｅ）を下記式（２４）〜（２７）のように算出することができる。
【０１４９】
ｍｅａｎ（ｘ）＝ｍａｘ（ｍｅａｎ（ｘ1），ｍｅａｎ（ｘ2））＋ｍｅａｎ（ｘ3）
＝１３                                          …（２４）
【０１５０】
σ（ｘ）＝ｍａｘ（σ（ｘ1），σ（ｘ2））＋σ（ｘ3）
＝０                                                  …（２５）
【０１５１】
ｍｅａｎ（ｅ）＝ｍａｘ（ｍｅａｎ（ｅ1），ｍｅａｎ（ｅ2））＋ｍｅａｎ（ｅ3）
＝０．３                                        …（２６）
【０１５２】
σ（ｅ）＝ｓｑｒｔ（ｍａｘ（σ（ｅ1），σ（ｅ2））2＋σ（ｅ3）2）
＝０．２８２５                                        …（２７）
【０１５３】
このあと、上記式（２４）〜（２７）を用いて算出された値を下記式（２８）および（２９）に代入することにより、一連の作業全体の平均値ｍｅａｎ（Ｘ）および標準偏差σ（Ｘ）を求めることができる。
【０１５４】
ｍｅａｎ（Ｘ）＝ｍｅａｎ（ｘ）＋ｍｅａｎ（ｅ）＝１３．３      …（２８）
【０１５５】
σ（Ｘ）＝ｓｑｒｔ（σ（ｘ）2＋σ（ｅ）2）＝０．２８２５      …（２９）
【０１５６】
最後に、図１を用いて説明した『Ｘi＝ｘi＋ｅi』の等式に従って一連の作業全体の工数を見積もる。このとき、任意の確率で一連の作業が終了する工数を見積もることができる。たとえば、９９．８（％）の確率で一連の作業が終了する工数として、一連の作業全体の平均値ｍｅａｎ（Ｘ）よりも標準偏差σ（Ｘ）の３倍分大きな値である『ｍｅａｎ（Ｘ）＋３×σ（Ｘ）≒１４（日）』を見積もることができる。
【０１５７】
なお、作業１と作業３との間の相互の相関関係、および作業２と作業３との間の相互の相関関係は存在しない場合について説明したが、これに限らない。たとえば、作業１と作業３と、作業２と作業３との間の相互の相関関係が存在する場合には、上記式（２７）で示した見積もり誤差標準偏差σ（ｅ）を下記式（３０）のような近似式を用いて算出することができる。
【０１５８】
σ（ｅ）≒ｓｑｒｔ（ｍａｘ（σ（ｅ1），σ（ｅ2））2＋σ（ｅ3）2）＋２×  
ｍａｘ（ρ13×σ（ｅ1）×σ（ｅ3），ρ23×σ（ｅ2）×σ（ｅ3））
…（３０）
【０１５９】
以上説明した実施例３によれば、各作業者１〜３の経験やスキルに依存する並列する作業間の相互の相関関係を考慮して、一連の作業全体の工数を見積もることができる。これにより、並列する作業間の相関によって生じるばらつきを抑えることができ、一連の作業の工数を見積もる際の見積もり精度を向上させることができる。また、上記式（３０）のような近似式を用いて、直列および並列の作業間の相関関係を考慮した一連の作業全体の工数見積もりをおこなうことにより、より精度の高い工数見積もりを実現することができる。
【実施例４】
【０１６０】
つぎに、上述した実施の形態の実施例４について説明する。実施例４では、出力部５０５による出力形式の具体例について説明する。図２０は、ディスプレイに表示される出力形式の具体例を示す説明図である。図２０において、ディスプレイ２３１には、複数の作業Ａ〜Ｅからなる一連の作業全体の工数の見積もり結果２０００が表示されている。
【０１６１】
具体的には、ダイアグラム２０１０に表現されている各作業Ａ〜Ｅに対応して、該各作業Ａ〜Ｅの見積もり工数がグラフ化されている（図２０中、「Ｇ１」〜「Ｇ５」）。また、各作業Ａ〜Ｅの見積もり工数を統計的に累積した一連の作業全体の見積もり工数がグラフ化されている（図２０中、「Ｇ６」）。
【０１６２】
グラフＧ１〜Ｇ６は、各作業Ａ〜Ｅの見積もり工数の見積もり手法に依存するモデル誤差を表現する領域Ｐ，Ｑと、各作業者の属性に依存する見積もり誤差を表現する領域Ｒとに分かれている。ここでは、９９％の確率で各作業Ａ〜Ｅおよび一連の作業が終了する見積もり工数とともに、５０％の確率で各作業Ａ〜Ｅおよび一連の作業が終了する見積もり工数が表現されている。
【０１６３】
以上説明した実施例４によれば、一連の作業全体の見積もり工数とともに、各作業Ａ〜Ｅの作業者の経験やスキルに依存する見積もり誤差をグラフィカルに表示することができる。このように、モデル誤差と見積もり誤差とに分離して各作業Ａ〜Ｅの見積もり工数および一連の作業全体の見積もり工数を視覚的に表現することにより、見積もり結果に対するユーザの認識性を高めることができる。
【０１６４】
以上説明したように、工数見積プログラム、該プログラムを記録した記録媒体、工数見積装置、および工数見積方法によれば、各作業の見積もり工数に含まれる作業者の属性に依存する見積もり誤差を考慮して、一連の作業全体の工数を統計的に見積もることにより、該一連の作業全体の工数の見積もり精度を向上させることができる。
【０１６５】
なお、本実施の形態で説明した工数見積方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
【０１６６】
（付記１）複数の作業からなる一連の作業全体の工数の見積もりをコンピュータに実行させる工数見積プログラムにおいて、
前記各作業の見積もり工数の入力を受け付けさせる入力工程と、
前記各作業の作業者の属性に基づいて、前記入力工程によって入力された各作業の見積もり工数に含まれる見積もり誤差を抽出するためのモデル関数を取得させる取得工程と、
前記取得工程によって取得されたモデル関数を用いて、前記作業ごとに、前記属性に依存する前記見積もり誤差を表わす確率密度分布と前記見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布とを算出させる第１の算出工程と、
前記第１の算出工程によって算出された各作業の見積もり誤差を表わす確率密度分布とモデル誤差を表わす確率密度分布とを統計的手法を用いて累積することにより、前記一連の作業全体の工数を算出させる第２の算出工程と、
前記第２の算出工程によって算出された算出結果を出力させる出力工程と、
を前記コンピュータに実行させることを特徴とする工数見積プログラム。
【０１６７】
（付記２）前記取得工程は、
さらに、前記各作業の作業者の属性に基づいて、前記見積もり誤差に関する前記作業間の相互の相関関係を表わす相関係数を取得させ、
前記第２の算出工程は、
前記取得工程によって取得された相関係数に基づいて、前記見積もり誤差を表わす確率密度分布と前記モデル誤差を表わす確率密度分布とを統計的手法を用いて累積することにより、前記一連の作業全体の工数を算出させることを特徴とする付記１に記載の工数見積プログラム。
【０１６８】
（付記３）前記取得工程は、
前記一連の作業の作業順序を参照することにより、前記各作業の直前または／および直後の作業との相互の相関関係を表わす相関係数を取得させることを特徴とする付記２に記載の工数見積プログラム。
【０１６９】
（付記４）前記取得工程は、
前記一連の作業の作業順序を参照することにより、並列する作業間の相互の相関関係を表わす相関係数を取得させることを特徴とする付記２または３に記載の工数見積プログラム。
【０１７０】
（付記５）前記作業の見積もり工数と前記作業に要した実績工数とに基づいて、前記作業の作業者の属性と関連付けて保持されているモデル関数に含まれているパラメータの値を更新させる更新工程を前記コンピュータに実行させ、
前記取得工程は、
前記更新工程によって前記パラメータの値が更新された場合、前記属性と関連付けて保持されている更新後のモデル関数を取得させることを特徴とする付記１〜４のいずれか一つに記載の工数見積プログラム。
【０１７１】
（付記６）前記出力工程は、
前記一連の作業全体の工数を表わす確率密度分布とともに、前記一連の作業全体の工数に含まれる見積もり誤差を表わす確率密度分布を表示画面に表示させることを特徴とする付記１〜５のいずれか一つに記載の工数見積プログラム。
【０１７２】
（付記７）前記属性は、
前記各作業の作業者の個人情報であることを特徴とする付記１〜６のいずれか一つに記載の工数見積プログラム。
【０１７３】
（付記８）前記属性は、
前記各作業の作業者の熟練度であることを特徴とする付記１〜６のいずれか一つに記載の工数見積プログラム。
【０１７４】
（付記９）付記１〜８のいずれか一つに記載の工数見積プログラムは、複数の開発工程からなるソフトウェア開発の開発期間の見積もりをコンピュータに実行させることを特徴とする工数見積プログラム。
【０１７５】
（付記１０）付記１〜９のいずれか一つに記載の工数見積プログラムを記録したコンピュータに読み取り可能な記録媒体。
【０１７６】
（付記１１）複数の作業からなる一連の作業全体の工数を見積もる工数見積装置において、
前記各作業の見積もり工数の入力を受け付ける入力手段と、
前記各作業の作業者の属性に基づいて、前記入力手段によって入力された各作業の見積もり工数に含まれる見積もり誤差を抽出するためのモデル関数を取得する取得手段と、
前記取得手段によって取得されたモデル関数を用いて、前記作業ごとに、前記属性に依存する前記見積もり誤差を表わす確率密度分布と前記見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布とを算出する第１の算出手段と、
前記第１の算出手段によって算出された各作業の見積もり誤差を表わす確率密度分布とモデル誤差を表わす確率密度分布とを統計的手法を用いて累積することにより、前記一連の作業全体の工数を算出する第２の算出手段と、
前記第２の算出手段によって算出された算出結果を出力する出力手段と、
を備えることを特徴とする工数見積装置。
【０１７７】
（付記１２）前記取得手段は、
さらに、前記各作業の作業者の属性に基づいて、前記見積もり誤差に関する前記作業間の相互の相関関係を表わす相関係数を取得し、
前記第２の算出手段は、
前記取得手段によって取得された相関係数に基づいて、前記見積もり誤差を表わす確率密度分布と前記モデル誤差を表わす確率密度分布とを統計的手法を用いて累積することにより、前記一連の作業全体の工数を算出することを特徴とする付記１１に記載の工数見積装置。
【０１７８】
（付記１３）前記取得手段は、
前記一連の作業の作業順序を参照することにより、前記各作業の直前または／および直後の作業との相互の相関関係を表わす相関係数を取得することを特徴とする付記１２に記載の工数見積装置。
【０１７９】
（付記１４）前記取得手段は、
前記一連の作業の作業順序を参照することにより、並列する作業間の相互の相関関係を表わす相関係数を取得することを特徴とする付記１２または１３に記載の工数見積装置。
【０１８０】
（付記１５）前記作業の見積もり工数と前記作業に要した実績工数とに基づいて、前記作業の作業者の属性と関連付けて保持されているモデル関数に含まれているパラメータの値を更新する更新手段を備え、
前記取得手段は、
前記更新手段によって前記パラメータの値が更新された場合、前記属性と関連付けて保持されている更新後のモデル関数を取得することを特徴とする付記１１〜１４のいずれか一つに記載の工数見積装置。
【０１８１】
（付記１６）前記出力手段は、
前記一連の作業全体の工数を表わす確率密度分布とともに、前記一連の作業全体の工数に含まれる見積もり誤差を表わす確率密度分布を表示画面に表示することを特徴とする付記１１〜１５のいずれか一つに記載の工数見積装置。
【０１８２】
（付記１７）複数の作業からなる一連の作業全体の工数を見積もる工数見積方法において、
前記各作業の見積もり工数の入力を受け付ける入力工程と、
前記各作業の作業者の属性に基づいて、前記入力工程によって入力された各作業の見積もり工数に含まれる見積もり誤差を抽出するためのモデル関数を取得する取得工程と、
前記取得工程によって取得されたモデル関数を用いて、前記作業ごとに、前記属性に依存する前記見積もり誤差を表わす確率密度分布と前記見積もり工数の見積もり手法に依存するモデル誤差を表わす確率密度分布とを算出する第１の算出工程と、
前記第１の算出工程によって算出された各作業の見積もり誤差を表わす確率密度分布とモデル誤差を表わす確率密度分布とを統計的手法を用いて累積することにより、前記一連の作業全体の工数を算出する第２の算出工程と、
前記第２の算出工程によって算出された算出結果を出力する出力工程と、
を含んだことを特徴とする工数見積方法。
【０１８３】
（付記１８）前記取得工程は、
さらに、前記各作業の作業者の属性に基づいて、前記見積もり誤差に関する前記作業間の相互の相関関係を表わす相関係数を取得し、
前記第２の算出工程は、
前記取得工程によって取得された相関係数に基づいて、前記見積もり誤差を表わす確率密度分布と前記モデル誤差を表わす確率密度分布とを統計的手法を用いて累積することにより、前記一連の作業全体の工数を算出することを特徴とする付記１７に記載の工数見積方法。
【０１８４】
（付記１９）前記取得工程は、
前記一連の作業の作業順序を参照することにより、前記各作業の直前または／および直後の作業との相互の相関関係を表わす相関係数を取得することを特徴とする付記１８に記載の工数見積方法。
【０１８５】
（付記２０）前記取得工程は、
前記一連の作業の作業順序を参照することにより、並列する作業間の相互の相関関係を表わす相関係数を取得することを特徴とする付記１８または１９に記載の工数見積方法。
【０１８６】
（付記２１）前記作業の見積もり工数と前記作業に要した実績工数とに基づいて、前記作業の作業者の属性と関連付けて保持されているモデル関数に含まれているパラメータの値を更新する更新工程を含み、
前記取得工程は、
前記更新工程によって前記パラメータの値が更新された場合、前記属性と関連付けて保持されている更新後のモデル関数を取得することを特徴とする付記１７〜２０のいずれか一つに記載の工数見積方法。
【０１８７】
（付記２２）前記出力工程は、
前記一連の作業全体の工数を表わす確率密度分布とともに、前記一連の作業全体の工数に含まれる見積もり誤差を表わす確率密度分布を表示画面に表示することを特徴とする付記１７〜２１のいずれか一つに記載の工数見積方法。
【産業上の利用可能性】
【０１８８】
以上のように、本発明にかかる工数見積プログラム、該プログラムを記録した記録媒体、工数見積装置、および工数見積方法は、複数の開発工程からなるソフトウェア開発の開発期間を見積もる場合に有用である。
【図面の簡単な説明】
【０１８９】
【図１】この発明の概要を示す説明図である。
【図２】この発明の実施の形態にかかる工数見積装置のハードウェア構成を示す説明図である。
【図３】属性情報ＤＢの記憶内容を示す説明図である。
【図４】相関テーブルの具体例を示す説明図（その１）である。
【図５】この発明の実施の形態にかかる工数見積装置の機能的構成を示すブロック図である。
【図６】一連の作業の具体例を示す説明図である。
【図７】更新処理の概要を示す説明図である。
【図８】この発明の実施の形態にかかる工数見積装置の工数見積処理手順を示すフローチャートである。
【図９】各作業の見積もり工数の一例を示す説明図（その１）である。
【図１０】相関係数の一例を示す説明図（その１）である。
【図１１】第１の算出部の算出結果を示す説明図（その１）である。
【図１２】各作業の見積もり工数の一例を示す説明図（その２）である。
【図１３】相関テーブルの一例を示す説明図（その２）である。
【図１４】相関係数の一例を示す説明図（その２）である。
【図１５】第１の算出部の算出結果を示す説明図（その２）である。
【図１６】各作業の見積もり工数の一例を示す説明図（その３）である。
【図１７】相関テーブルの一例を示す説明図（その３）である。
【図１８】相関係数の一例を示す説明図（その３）である。
【図１９】第１の算出部の算出結果を示す説明図（その３）である。
【図２０】ディスプレイに表示される出力形式の具体例を示す説明図である。
【図２１】従来技術の問題点を示す説明図である。
【符号の説明】
【０１９０】
２００  工数見積装置
３００  属性情報ＤＢ
４００，１３００，１７００  相関テーブル
５０１  入力部
５０２  取得部
５０３  第１の算出部
５０４  第２の算出部
５０５  出力部
５０６  更新部
６１０，６２０  ダイアグラム
７１０，９００，１２００，１６００  入力情報
７２０，７３０  履歴情報
１０００，１４００，１８００  相関情報
１１００，１５００，１９００  算出結果
２０００  見積もり結果
【図１】
0005125307.tif 000002
【図２】
0005125307.tif 000003
【図３】
0005125307.tif 000004
【図４】
0005125307.tif 000005
【図５】
0005125307.tif 000006
【図６】
0005125307.tif 000007
【図７】
0005125307.tif 000008
【図８】
0005125307.tif 000009
【図９】
0005125307.tif 000010
【図１０】
0005125307.tif 000011
【図１１】
0005125307.tif 000012
【図１２】
0005125307.tif 000013
【図１３】
0005125307.tif 000014
【図１４】
0005125307.tif 000015
【図１５】
0005125307.tif 000016
【図１６】
0005125307.tif 000017
【図１７】
0005125307.tif 000018
【図１８】
0005125307.tif 000019
【図１９】
0005125307.tif 000020
【図２０】
0005125307.tif 000021
【図２１】
0005125307.tif 000022