工数見積装置、工数見積方法、工数見積プログラム
【課題】要件があいまいな初期の段階で、ある程度妥当な工数見積を行う。
【解決手段】過去に実施されたシステム開発における、工数の実績値と、工数の実績値である目的変数に対する説明変数となり得る複数の項目の実績値とを記憶し、実績値を、回帰モデルに対する外れ値とする水準を示す水準値が記憶し、実績値に基づいて回帰分析を行い、複数の説明変数のうち水準値を満たす説明変数を選択して回帰モデルを算出し、実績値のうち、回帰モデルに対する水準値に基づく外れ値である実績値を抽出し、外れ値に基づいて、回帰モデル算出処理を行い、任意の説明変数の想定値の入力を受付け、入力された説明変数に対応する回帰モデルを、回帰モデル記憶部から読み出し、回帰モデルに基づいて、入力部に入力された説明変数の想定値に対応する目的変数である工数を算出する。
【解決手段】過去に実施されたシステム開発における、工数の実績値と、工数の実績値である目的変数に対する説明変数となり得る複数の項目の実績値とを記憶し、実績値を、回帰モデルに対する外れ値とする水準を示す水準値が記憶し、実績値に基づいて回帰分析を行い、複数の説明変数のうち水準値を満たす説明変数を選択して回帰モデルを算出し、実績値のうち、回帰モデルに対する水準値に基づく外れ値である実績値を抽出し、外れ値に基づいて、回帰モデル算出処理を行い、任意の説明変数の想定値の入力を受付け、入力された説明変数に対応する回帰モデルを、回帰モデル記憶部から読み出し、回帰モデルに基づいて、入力部に入力された説明変数の想定値に対応する目的変数である工数を算出する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、システム開発における工数の見積を行う技術に関する。
【背景技術】
【0002】
ソフトウェア等のシステム開発における開発工数の見積を行う方法として、いくつかの方法が提案されている。例えば、特許文献1には、いわゆるFP(ファンクションポイント)法に基づいて、ユースケースの記述中に使用されたキーワードおよびエンティティ名を利用して、所定単位のトランザクションをそれぞれ内外入出力、論理ファイル等に分類してFPを算出することが記載されている。特許文献2には、システムの規模を予測するためのパラメータおよび確率分布を入力し、FP法に基づいてシステム規模の予測値の確率分布を算出して工数を予測することが記載されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2001−117763号公報
【特許文献2】特開2004−199119号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上述のようにFP法に基づく場合には、要件等がある程度固まってきてからでないと見積ができず、要件があいまいな段階で見積を行うことができない。例えば、特許文献1は、ユースケース図を描ける程度にシステムの要件が明確になってからでないと適用できない。特許文献2は、個々の入力パラメータの要件が明確になってからでないと適用できない。すなわち、このような要件があいまいな初期の段階では工数の見積を行うことができず、妥当な見積工数を提示できなかった。そこで、要件があいまいな初期の段階で、ある程度妥当な工数見積を行うことが望ましい。
【0005】
本発明は、このような状況に鑑みてなされたもので、要件があいまいな初期の段階で、ある程度妥当な工数見積を行う工数見積装置、工数見積方法、工数見積プログラムを提供する。
【課題を解決するための手段】
【0006】
上述した課題を解決するために、本発明は、システム開発にかかる工数の推定値を算出する工数見積装置であって、過去に実施されたシステム開発における、工数の実績値と、工数の実績値である目的変数に対する説明変数となり得る複数の項目の実績値とが記憶されている実績値記憶部と、実績値に基づいて算出される回帰モデルが記憶される回帰モデル記憶部と、実績値を、回帰モデルに対する外れ値とする水準を示す水準値が記憶されている水準値記憶部と、実績値記憶部に記憶されている実績値を読み出し、読み出した実績値に基づいて回帰分析を行い、実績値記憶部に記憶されている複数の説明変数のうち、水準値記憶部に記憶されている水準値を満たす説明変数を選択して回帰モデルを算出し、回帰モデル記憶部に記憶させる回帰モデル算出処理を行う回帰モデル算出部と、実績値記憶部に記憶されている実績値のうち、回帰モデルに対する水準値に基づく外れ値である実績値を抽出し、外れ値に基づいて、回帰モデル算出部に回帰モデル算出処理を行わせる外れ値抽出部と、複数の説明変数のうち、任意の説明変数の想定値の入力を受付ける入力部と、入力部に入力された説明変数に対応する回帰モデルを、回帰モデル記憶部から読み出し、回帰モデルに基づいて、入力部に入力された説明変数の想定値に対応する目的変数である工数を算出する見積工数算出部と、を備えることを特徴とする。
【0007】
また、本発明は、実績値記憶部に記憶されている説明変数となり得る複数の項目には、開発対象であるシステムの非機能に関する要求レベルの高低を示す情報と、非機能要求を実現する設計結果を示す情報とが含まれ、入力部に入力される想定値は、開発対象であるシステムの非機能に関する要求レベルの高低を示す情報と、非機能要求を実現する設計結果を示す情報とのいずれかまたは双方であることを特徴とする。
【0008】
また、本発明は、実績値記憶部には、システム開発における複数の工程毎に対応する実績値が記憶され、回帰モデル算出部は、工程毎の実績値に基づいて、工程毎の回帰モデルを算出して回帰モデル記憶部に記憶させることを特徴とする。
【0009】
また、本発明は、過去に実施されたシステム開発における、工数の実績値と、工数の実績値である目的変数に対する説明変数となり得る複数の項目の実績値とが記憶されている実績値記憶部と、実績値に基づいて算出される回帰モデルが記憶される回帰モデル記憶部と、実績値を、回帰モデルに対する外れ値とする水準を示す水準値が記憶されている水準値記憶部と、を備えた工数見積装置の工数見積方法であって、実績値記憶部に記憶されている実績値を読み出し、読み出した実績値に基づいて回帰分析を行い、実績値記憶部に記憶されている複数の説明変数のうち、水準値記憶部に記憶されている水準値を満たす説明変数を選択して回帰モデルを算出し、回帰モデル記憶部に記憶させる回帰モデル算出処理を行うステップと、
実績値記憶部に記憶されている実績値のうち、回帰モデルに対する水準値に基づく外れ値である実績値を抽出し、外れ値に基づいて、回帰モデル算出処理を繰り返すステップと、複数の説明変数のうち、任意の説明変数の想定値の入力を受付けるステップと、入力部に入力された説明変数に対応する回帰モデルを、回帰モデル記憶部から読み出し、回帰モデルに基づいて、入力部に入力された説明変数の想定値に対応する目的変数である工数を算出するステップと、を備えることを特徴とする。
【0010】
また、本発明は、過去に実施されたシステム開発における、工数の実績値と、工数の実績値である目的変数に対する説明変数となり得る複数の項目の実績値とが記憶されている実績値記憶部と、実績値に基づいて算出される回帰モデルが記憶される回帰モデル記憶部と、実績値を、回帰モデルに対する外れ値とする水準を示す水準値が記憶されている水準値記憶部と、を備えた工数見積装置のコンピュータに、実績値記憶部に記憶されている実績値を読み出し、読み出した実績値に基づいて回帰分析を行い、実績値記憶部に記憶されている複数の説明変数のうち、水準値記憶部に記憶されている水準値を満たす説明変数を選択して回帰モデルを算出し、回帰モデル記憶部に記憶させる回帰モデル算出処理を行うステップと、実績値記憶部に記憶されている実績値のうち、回帰モデルに対する水準値に基づく外れ値である実績値を抽出し、外れ値に基づいて、回帰モデル算出処理を繰り返すステップと、複数の説明変数のうち、任意の説明変数の想定値の入力を受付けるステップと、入力部に入力された説明変数に対応する回帰モデルを、回帰モデル記憶部から読み出し、回帰モデルに基づいて、入力部に入力された説明変数の想定値に対応する目的変数である工数を算出するステップと、を実行させる工数見積プログラムである。
【発明の効果】
【0011】
以上説明したように、本発明によれば、過去に実施されたシステム開発における、工数の実績値と、工数の実績値である目的変数に対する説明変数となり得る複数の項目の実績値とを記憶し、実績値を、回帰モデルに対する外れ値とする水準を示す水準値が記憶し、実績値に基づいて回帰分析を行い、複数の説明変数のうち水準値を満たす説明変数を選択して回帰モデルを算出し、実績値のうち、回帰モデルに対する水準値に基づく外れ値である実績値を抽出し、外れ値に基づいて、回帰モデル算出処理を行い、任意の説明変数の想定値の入力を受付け、入力された説明変数に対応する回帰モデルを、回帰モデル記憶部から読み出し、回帰モデルに基づいて、入力部に入力された説明変数の想定値に対応する目的変数である工数を算出するようにしたので、要件があいまいな初期の段階で、ある程度妥当な工数見積を行うことが可能となる。
【図面の簡単な説明】
【0012】
【図1】本発明の一実施形態による工数推定装置の構成例を示すブロック図である。
【図2】本発明の一実施形態によるクレンジングルールのデータ例を示す図である。
【図3】本発明の一実施形態による実績値のデータ例を示す図である。
【図4】本発明の一実施形態による水準値のデータ例を示す図である。
【図5】本発明の一実施形態による抽出条件のデータ例を示す図である。
【図6】本発明の一実施形態による回帰モデルのデータ例を示す図である。
【図7】本発明の一実施形態によるモデル診断結果のデータ例を示す図である。
【図8】本発明の一実施形態による見積結果のデータ例を示す図である。
【図9】本発明の一実施形態により出力するグラフの例を示す図である。
【図10】本発明の一実施形態による工数推定装置の動作例を示すフローチャートである。
【図11】本発明の一実施形態による工数推定装置の動作例を示すフローチャートである。
【図12】本発明の一実施形態による工数推定装置の処理遷移を示す図である。
【図13】本発明の一実施形態により出力するグラフの例を示す図である。
【発明を実施するための形態】
【0013】
以下、本発明の一実施形態について、図面を参照して説明する。
図1は、本実施形態による工数推定装置100の構成を示すブロック図である。工数推定装置100は、システム開発にかかる工数の推定値を算出するコンピュータ装置であり、入力部101と、実績値修正部102と、実績値記憶部103と、水準値記憶部104と、回帰モデル算出部105と、回帰モデル記憶部106と、外れ値抽出部107と、見積工数算出部108と、出力部109とを備えている。
【0014】
入力部101は、キーボードやマウス等のデバイスを備えており、情報の入力を受付ける。例えば、入力部101には、過去に実施されたシステム開発における、工数の実績値と、工数の実績値である目的変数(従属変数)に対する説明変数(独立変数)となり得る複数の項目の実績値とが入力される。例えば、ディスプレイである出力部109が、実績値の入力画面を表示させると、入力部101は、表示された入力画面に応じてユーザから入力される実績値の入力を受付ける。入力される実績値とは、例えば、システム開発のプロジェクトを識別するプロジェクト名と、このプロジェクトに対応する、(1)非機能に関する要求レベルの高低を示す情報、(2)非機能要求を実現する設計や構築の結果を示す情報、(3)要件定義、設計、構築、テスト等のシステム開発に要した工数を示す情報、などである。
【0015】
ここで、説明変数である実績値の項目としてどのような情報を収集するかは、見積を実施しうる各段階での使用可否や、工数への影響度合い、収集コストの妥当性等を考慮して予め決定しておく。例えば、(1)の例として、稼働率やサービス中断時間、処理速度等の情報、(2)の例として、論理サーバ台数やパッケージプログラム種類、プログラミング言語、SLOC(source lines of code)、FP等の情報が挙げられる。
【0016】
また、入力部101には、実績値に基づいて算出される回帰モデルに対して実績値を外れ値とする水準を示す水準値が入力される。入力部101は、入力された水準値を水準値記憶部104に記憶させる。
また、入力部101には、回帰モデル記憶部106に記憶されている回帰モデルに含まれる複数の説明変数のうち、工数の推定値の算定根拠である任意の説明変数の想定値が入力される。入力される想定値は、(1)非機能に関する要求レベルの高低を示す情報、(2)非機能要求を実現する設計や構築の結果を示す情報、のいずれかまたは双方である。
【0017】
実績値修正部102は、入力部101に入力された実績値に、表記揺れや単位不統一などが存在する場合、これらを一定のルールに従って修正して統一するクレンジング処理を行う。実績値修正部102は、自身の記憶領域にこのようなクレンジングルールを予め記憶しておく。図2は、実績値修正部102に記憶されているクレンジングルールのデータ例を示す図である。ルール適用対象項目は、クレンジングルールによるクレンジング処理を行う対象である項目を示す情報である。適用条件は、入力された実績値がその適用条件に一致する場合に、修正を行うことを示す。クレンジング式は、適用条件に一致する実績値の修正後の値を示す。例えば、項目が「プログラミング言語」である実績値が「VB2008」である場合、実績値を「Visual Basic 2008」(Visual Basicは登録商標)に修正することを示す。
【0018】
実績値記憶部103には、入力部101に入力され、実績値修正部102によって修正された実績値が記憶される。図3は、実績値記憶部103に記憶される実績値のデータ例を示す図である。実績値には、プロジェクト名、信頼性要件(稼働率)、性能要件(処理速度)、サーバ台数、規模、規模単位、開発期間等の項目と、工数を示す情報が対応付けられる。ここでは、このような項目を実績値の例として示すが、項目は予め任意に決定して良い。
【0019】
水準値記憶部104には、入力部101に入力された水準値が記憶される。図4は、水準値記憶部104に記憶される水準値のデータ例を示す図である。ここで、本実施形態による回帰モデル算出処理に用いる評価指標、水準値について説明する。評価指標、水準値は、見積モデルの用途等に応じて、予め定められる。評価指標は、例えば、(1)実績値の特徴に応じた見積精度を示すMMRE(相対誤差絶対値の平均値)、MdMRE(相対誤差絶対値の中央値)、(2)実績値の数と項目の数のバランスを示す検定力1−β、有意水準α、効果量θ、(3)回帰モデルのロバストネス(頑健性)を示す自由度調整済み決定係数R2、赤池情報量基準AICなどが適用できる。
【0020】
例えば、(1)については、実績値の工数分布を正規分布で近似できる場合はMMRE、そうでない場合はMdMREを適用する。水準値は、構築する回帰モデルの利用時期、見積結果の用途などに応じて、任意の値を予め入力部101に入力し、設定する。(2)については、目標とする見積精度に基づいて、効果量θの水準値を予め入力部101に入力し、設定する。第1種の過誤(不適切な回帰モデルを選ぶ過誤)を避けたい場合は有意水準αを適用する。第2種の過誤(適切な回帰モデルを選ばない過誤)を避けたい場合は、検定力1−βを適用する。(3)については、回帰モデルとして線形モデルのみを仮定し、かつ実績値が母集団の十分な割合を含む場合、自由度調整済み決定係数R2を選択できる。非線形モデルまたは実績値が母集団に比べ小さい場合、赤池情報量基準AICを選択する。これらは、回帰モデル候補を相対的に比較するための指標であるため、水準値の設定は不要である。
【0021】
回帰モデル算出部105は、実績値記憶部103に記憶されている実績値を読み出し、読み出した実績値に基づいて回帰分析を行い、実績値記憶部103に記憶されている複数の説明変数のうち、水準値記憶部104に記憶されている水準値を満たす説明変数を選択して回帰モデルを算出し、回帰モデル記憶部106に記憶させる回帰モデル算出処理を行う。すなわち、回帰モデル算出部105は、工数を目的変数とし、他の複数の項目を説明変数とした重回帰分析を行う。回帰モデル算出部105は、実績値記憶部103に記憶されている実績値に、数値で表されない質的データが含まれている場合、実績値に含まれる質的データを回帰分析による分析可能なデータとすべく、自身の記憶領域に予め記憶している変換テーブルを参照して適当な数量に変換する。量的データについては、実績値が正規分布となるように変換(Box−Cox変換)する。これにより、実績値を一括して分析等の処理を行う。
【0022】
また、回帰モデル算出部105は、(1)総当り法、(2)ステップワイズ変数選択法のいずれかの方法により、回帰モデルの説明変数を選択する。ここで、選択する説明変数の個数は、全ての組み合わせを試しても良い。回帰モデル算出部105は、工数の実績値を目的変数として、選択した説明変数による回帰分析を行い、回帰係数を決定する。回帰モデル算出部105は、決定した回帰係数に基づく回帰モデルに基づく評価指標を算出し、水準値を満たしているか否かを判定する。満たしていると判定すれば、回帰モデルを決定して回帰モデル記憶部106に記憶させる。満たしていないと判定すれば、他の説明変数を選択して、回帰モデルを算出し、水準値を満たしているか否かを判定する処理を繰り返す。
【0023】
ここで、回帰モデル算出部105は、後述する外れ値抽出部107によって抽出された回帰モデルの外れ値に基づいて、同様に回帰モデル算出処理を行い、新たな回帰モデルを算出して回帰モデル記憶部106に記憶させる。このとき、回帰モデル算出部105は、外れ値を抽出する抽出条件を自身の記憶領域に記憶し、この抽出条件に基づいて実績値記憶部103から実績値を抽出する。図5は、このような抽出条件のデータ例を示す図である。初回の回帰モデル算出処理については、全ての実績値を対象として回帰モデルを算出するため抽出条件はない(NULLである)が、外れ値に基づく層別の回帰モデルを抽出する際には、自身の記憶領域に記憶された層別の抽出条件に基づいて実績値を抽出し、回帰モデル算出処理を行う。
【0024】
回帰モデル記憶部106には、実績値記憶部103に記憶されている実績値に基づいて回帰モデル算出部105によって算出された回帰モデルが記憶される。図6は、回帰モデル記憶部106に記憶される回帰モデルの例を示す図である。回帰モデルは、以下式により表される。
目的変数(工数)=説明変数1×偏回帰係数1+説明変数2×偏回帰係数2+説明変数3×偏回帰係数3+・・・説明変数N×偏回帰係数N+定数項
【0025】
外れ値抽出部107は、回帰モデル算出部105によって算出された回帰モデルを、水準値記憶部104に記憶されている水準値に基づいて診断するモデル診断を行い、モデル診断結果を回帰モデル記憶部106に記憶させる。図7は、モデル診断結果のデータ例を示す図である。また、外れ値抽出部107は、実績値記憶部103に記憶されている実績値のうち、回帰モデル算出部105によって算出された回帰モデルに対する水準値に基づく外れ値である実績値を抽出し、抽出した外れ値に基づいて、回帰モデル算出部105に回帰モデル算出処理を行わせる。すなわち、外れ値抽出部107は、回帰モデル算出部105による回帰分析により、評価指標を大きく悪化させている実績値を特定する。回帰モデル算出部105は、特定した実績値を外れ値として抽出する判別分析を行う。
【0026】
ここで、外れ値抽出部107は、回帰モデルを水準値から外す原因となっている実績値である外れ値を判定し、実績値記憶部103に記憶されている実績値から、外れ値を抽出する抽出条件を生成し、回帰モデル算出部105の記憶領域に記憶させる。そして、回帰モデル算出部105に、外れ値である実績値に基づく新たな回帰モデルを算出させる。これにより、回帰モデル算出部105は、層別の複数の回帰モデルを算出する。例えば、システム開発において所定のバージョンのOS(Operating System)を使用している場合や、所定の製品の組み合わせを使用している場合などにこのような外れ値になると考えられる。
【0027】
見積工数算出部108は、入力部101に入力された説明変数に対応する回帰モデルを、回帰モデル記憶部106から読み出し、回帰モデルに基づいて、入力部101に入力された説明変数の想定値に対応する目的変数である工数を算出する。ここで、見積工数算出部108は、入力された想定値と、回帰モデル算出部105に記憶されているデータ抽出条件とを比較し、分類可能な実績値を実績値記憶部103から読み出し、その実績値に対応する複数の回帰モデルを回帰モデル記憶部106から読み出す。また、見積工数算出部108は、読み出した複数の回帰モデルに対応するモデル診断結果を回帰モデル記憶部106から読み出し、読み出した複数の回帰モデルのうち最も精度の良い回帰モデルの説明変数の入力画面を出力部109に表示させる。この際、既に想定値が入力されている説明変数については、既に入力されている値を表示させる。説明変数に想定値が入力されない場合、入力がないと算出する工数の精度が悪くなる(ばらつきが大きくなる)ことを示す警告文を出力部109に表示させ、入力を促す。ただし、想定値の入力は必須ではなく、入力されない場合は、デフォルト値(例えば、平均値や中央値など)を自動的に入力して適用する。見積工数算出部108は、入力された想定値を回帰モデルにあてはめ、目的変数である工数を算出する。算出した工数は、想定値に対する工数の推定値であり、見積結果である。見積工数算出部108は、このような見積結果を、自身の記憶領域に記憶させる。図8は、見積結果のデータ例を示す図である。
【0028】
出力部109は、情報を出力するディスプレイであり、見積工数算出部108によって算出された見積結果を表示する。例えば、出力部109は、入力された想定値に対して算出された工数を表示させるともに、回帰モデルに基づく最尤推定値、信頼区間の確率分布、経験分布(実績値データの分布)などを示すグラフを表示させるようにしても良い。図9は、このようなグラフの例を示す図である。横軸は工数(人月)を示し、線グラフは回帰モデルに基づく確率分布を示し、腺グラフは実績値のデータ件数の分布を示す。さらに、算出された確率分布に基づき、所定の確率の範囲にある点を、上限値、中間値、下限値として提示することができる。
【0029】
これにより、要件があいまいな状態でも、最も工数がかかる場合、通常の場合等を示すことができる。これにより、例えば要件定義を進めていく段階で、工数の幅がどこに収束していくかといった観点で、要件を取捨選択する等、システムの開発側と顧客側との見積りに対する意識合わせが容易になる。さらに、想定値が不明であった説明変数が存在する場合、その説明変数の想定値を入力することにより、確率分布がどのように変化するかを示すことができる。
【0030】
次に、本実施形態による工数推定装置100の動作例を説明する。図10は、工数推定装置100による回帰モデル算出処理の動作例を示すフローチャートである。まず、入力部101は、工数等の実績値の入力を受付ける(ステップS1)。実績値修正部102は、予め定められたクレンジングルールに基づいて、入力部101に入力された実績値のクレンジング処理を行い、実績値記憶部103に記憶させる(ステップS2)。回帰モデル算出部105は、水準値記憶部104に記憶されている水準値と、実績値記憶部103に記憶されている実績値とに基づいて回帰モデルを算出し、算出した回帰モデルを回帰モデル記憶部106に記憶させる(ステップS3)。外れ値抽出部107は、算出された回帰モデルのモデル診断を行い、回帰モデルの再算出を行なうと判定すると(ステップS4:YES)、外れ値を抽出する抽出条件を生成する。外れ値抽出部107は、生成した抽出条件を回帰モデル算出部105に記憶させ(ステップS5)、ステップS3に戻る。回帰モデル算出部105は、生成された抽出条件に基づいて、回帰モデル抽出処理を行う。外れ値抽出部107が、回帰モデルの再算出を行なわないと判定すると(ステップS4:NO)、処理を終了する。
【0031】
図11は、工数推定装置100による工数見積処理の動作例を示すフローチャートである。入力部101は、ユーザからの説明変数の想定値の入力を受付ける(ステップS10)。見積工数算出部108は、入力された想定値に対応する回帰モデルを回帰モデル算出部105から抽出する(ステップS11)。見積工数算出部108は、入力された想定値を、抽出した回帰モデルに当てはめ、工数の推定値(見積工数)を算出する(ステップS12)。出力部109は、見積工数を出力してユーザに提示し(ステップS13)、処理を終了する。
【0032】
図12は、工数推定装置100による各処理の遷移を示す図である。まず、PM(プロジェクトマネージャ)等が、過去のシステム開発における実績値(生データ)を工数推定装置100に入力し(ステップS21)、モデル構築者がクレンジングルールを工数推定装置100に入力する(ステップS22)。工数推定装置100の実績値修正部102は、入力された生データとクレンジングルールとを読み出し(ステップS23、ステップS24)、クレンジング処理を行う。クレンジング処理により修正された実績値は、実績値記憶部103に記憶される(ステップS25)。回帰モデル算出部105は、データ抽出条件を読み出し(ステップS26)、読み出したデータ抽出条件に応じた実績値を、実績値記憶部103から読み出す(ステップS27)。
【0033】
回帰モデル算出部105は、読み出した実績値に基づいて回帰分析を行い(ステップS28、29)、回帰モデルを算出して回帰モデル記憶部106に記憶させる(ステップS30)。ここで、入力部101は、モデル構築者からの水準値の入力を受付け、入力された水準値を水準値記憶部10に記憶させる(ステップS31)。外れ値抽出部107は、回帰モデル記憶部106に記憶された回帰モデルを読み出し(ステップS32)、水準値記憶部104に記憶された水準値を読み出して(ステップS33)、モデル診断を行い、モデル診断結果を回帰モデル記憶部106に記憶させる(ステップS34)、
【0034】
外れ値抽出部107は、モデル診断結果を読み出し(ステップS35)、実績値記憶部103に記憶されている実績値を読み出して外れ値の抽出条件を生成し、回帰モデル算出部105に記憶させる(ステップS37)。以降、層別の回帰モデルを算出し、回帰モデル記憶部106に記憶させる。このようにして回帰モデルが算出され記憶されると、入力部101は、見積り実施者からの見積条件(想定値)の入力を受付ける(ステップS38)。見積工数算出部108は、回帰モデル算出部105に記憶されている抽出条件と、回帰モデル算出部105に記憶されている回帰モデルと、回帰モデル記憶部106に記憶されているモデル診断結果とを読み出し(ステップS39、40、41)、回帰モデルに想定値を当てはめて、工数の推定値を算出する(ステップS42)。見積工数算出部108は、見積結果を自身の記憶領域に記憶させ(ステップS43)、出力部109に表示させて見積り実施者に提示する(ステップS44)。
【0035】
なお、上述の実施形態では、システム開発全体における工数の実績値を入力し、実績値に基づく工数の推定値を算出する処理を行う例を示したが、システム開発における複数の工程毎に、これらの処理を行うようにしても良い。この場合、実績値記憶部103には、システム開発における複数の工程毎に対応する実績値が記憶される。回帰モデル算出部105は、工程毎の実績値に基づいて、工程毎の回帰モデルを算出して回帰モデル記憶部106に記憶させる。入力部101は、工程毎の任意の説明変数の想定値の入力を受付ける。見積工数算出部108は、工程毎の想定値に対応する回帰モデルを読み出して、工数の推定値を算出する。図13は、例えば要件定義(y1)、設計(y2)、製造(y3)の3工程毎に回帰モデルが算出される場合のグラフの例を示す図である。ここで、回帰モデルがfn(x1、x2、x3、・・・、xm)(n:工程数、m:項目数)であるとすると、Σfiのブートストラップまたは畳み込みにより、図9に示したような全体の確率分布が算出できる。
【0036】
以上説明したように、本実施形態によれば、要件があいまいな段階でも、入力された想定値に基づいた工数の推定値を算出して提示することができる。また、工数の上限、下限を提示することもでき、見積に対する開発側と顧客側との意識合わせを行なうことができ、明らかにしなければならない要件について明確にすることもできる。さらに、プロジェクトの進行に合わせて工数を再度見積もることもでき、問題や変更が発生したときに、現段階での工数に対する影響を提示することができる。
【0037】
なお、本発明における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより工数の算出を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境(あるいは表示環境)を備えたWWWシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
【0038】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【符号の説明】
【0039】
100 工数推定装置
101 入力部
102 実績値修正部
103 実績値記憶部
104 水準値記憶部
105 回帰モデル算出部
106 回帰モデル記憶部
107 外れ値抽出部
108 見積工数算出部
109 出力部
【技術分野】
【0001】
本発明は、システム開発における工数の見積を行う技術に関する。
【背景技術】
【0002】
ソフトウェア等のシステム開発における開発工数の見積を行う方法として、いくつかの方法が提案されている。例えば、特許文献1には、いわゆるFP(ファンクションポイント)法に基づいて、ユースケースの記述中に使用されたキーワードおよびエンティティ名を利用して、所定単位のトランザクションをそれぞれ内外入出力、論理ファイル等に分類してFPを算出することが記載されている。特許文献2には、システムの規模を予測するためのパラメータおよび確率分布を入力し、FP法に基づいてシステム規模の予測値の確率分布を算出して工数を予測することが記載されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2001−117763号公報
【特許文献2】特開2004−199119号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上述のようにFP法に基づく場合には、要件等がある程度固まってきてからでないと見積ができず、要件があいまいな段階で見積を行うことができない。例えば、特許文献1は、ユースケース図を描ける程度にシステムの要件が明確になってからでないと適用できない。特許文献2は、個々の入力パラメータの要件が明確になってからでないと適用できない。すなわち、このような要件があいまいな初期の段階では工数の見積を行うことができず、妥当な見積工数を提示できなかった。そこで、要件があいまいな初期の段階で、ある程度妥当な工数見積を行うことが望ましい。
【0005】
本発明は、このような状況に鑑みてなされたもので、要件があいまいな初期の段階で、ある程度妥当な工数見積を行う工数見積装置、工数見積方法、工数見積プログラムを提供する。
【課題を解決するための手段】
【0006】
上述した課題を解決するために、本発明は、システム開発にかかる工数の推定値を算出する工数見積装置であって、過去に実施されたシステム開発における、工数の実績値と、工数の実績値である目的変数に対する説明変数となり得る複数の項目の実績値とが記憶されている実績値記憶部と、実績値に基づいて算出される回帰モデルが記憶される回帰モデル記憶部と、実績値を、回帰モデルに対する外れ値とする水準を示す水準値が記憶されている水準値記憶部と、実績値記憶部に記憶されている実績値を読み出し、読み出した実績値に基づいて回帰分析を行い、実績値記憶部に記憶されている複数の説明変数のうち、水準値記憶部に記憶されている水準値を満たす説明変数を選択して回帰モデルを算出し、回帰モデル記憶部に記憶させる回帰モデル算出処理を行う回帰モデル算出部と、実績値記憶部に記憶されている実績値のうち、回帰モデルに対する水準値に基づく外れ値である実績値を抽出し、外れ値に基づいて、回帰モデル算出部に回帰モデル算出処理を行わせる外れ値抽出部と、複数の説明変数のうち、任意の説明変数の想定値の入力を受付ける入力部と、入力部に入力された説明変数に対応する回帰モデルを、回帰モデル記憶部から読み出し、回帰モデルに基づいて、入力部に入力された説明変数の想定値に対応する目的変数である工数を算出する見積工数算出部と、を備えることを特徴とする。
【0007】
また、本発明は、実績値記憶部に記憶されている説明変数となり得る複数の項目には、開発対象であるシステムの非機能に関する要求レベルの高低を示す情報と、非機能要求を実現する設計結果を示す情報とが含まれ、入力部に入力される想定値は、開発対象であるシステムの非機能に関する要求レベルの高低を示す情報と、非機能要求を実現する設計結果を示す情報とのいずれかまたは双方であることを特徴とする。
【0008】
また、本発明は、実績値記憶部には、システム開発における複数の工程毎に対応する実績値が記憶され、回帰モデル算出部は、工程毎の実績値に基づいて、工程毎の回帰モデルを算出して回帰モデル記憶部に記憶させることを特徴とする。
【0009】
また、本発明は、過去に実施されたシステム開発における、工数の実績値と、工数の実績値である目的変数に対する説明変数となり得る複数の項目の実績値とが記憶されている実績値記憶部と、実績値に基づいて算出される回帰モデルが記憶される回帰モデル記憶部と、実績値を、回帰モデルに対する外れ値とする水準を示す水準値が記憶されている水準値記憶部と、を備えた工数見積装置の工数見積方法であって、実績値記憶部に記憶されている実績値を読み出し、読み出した実績値に基づいて回帰分析を行い、実績値記憶部に記憶されている複数の説明変数のうち、水準値記憶部に記憶されている水準値を満たす説明変数を選択して回帰モデルを算出し、回帰モデル記憶部に記憶させる回帰モデル算出処理を行うステップと、
実績値記憶部に記憶されている実績値のうち、回帰モデルに対する水準値に基づく外れ値である実績値を抽出し、外れ値に基づいて、回帰モデル算出処理を繰り返すステップと、複数の説明変数のうち、任意の説明変数の想定値の入力を受付けるステップと、入力部に入力された説明変数に対応する回帰モデルを、回帰モデル記憶部から読み出し、回帰モデルに基づいて、入力部に入力された説明変数の想定値に対応する目的変数である工数を算出するステップと、を備えることを特徴とする。
【0010】
また、本発明は、過去に実施されたシステム開発における、工数の実績値と、工数の実績値である目的変数に対する説明変数となり得る複数の項目の実績値とが記憶されている実績値記憶部と、実績値に基づいて算出される回帰モデルが記憶される回帰モデル記憶部と、実績値を、回帰モデルに対する外れ値とする水準を示す水準値が記憶されている水準値記憶部と、を備えた工数見積装置のコンピュータに、実績値記憶部に記憶されている実績値を読み出し、読み出した実績値に基づいて回帰分析を行い、実績値記憶部に記憶されている複数の説明変数のうち、水準値記憶部に記憶されている水準値を満たす説明変数を選択して回帰モデルを算出し、回帰モデル記憶部に記憶させる回帰モデル算出処理を行うステップと、実績値記憶部に記憶されている実績値のうち、回帰モデルに対する水準値に基づく外れ値である実績値を抽出し、外れ値に基づいて、回帰モデル算出処理を繰り返すステップと、複数の説明変数のうち、任意の説明変数の想定値の入力を受付けるステップと、入力部に入力された説明変数に対応する回帰モデルを、回帰モデル記憶部から読み出し、回帰モデルに基づいて、入力部に入力された説明変数の想定値に対応する目的変数である工数を算出するステップと、を実行させる工数見積プログラムである。
【発明の効果】
【0011】
以上説明したように、本発明によれば、過去に実施されたシステム開発における、工数の実績値と、工数の実績値である目的変数に対する説明変数となり得る複数の項目の実績値とを記憶し、実績値を、回帰モデルに対する外れ値とする水準を示す水準値が記憶し、実績値に基づいて回帰分析を行い、複数の説明変数のうち水準値を満たす説明変数を選択して回帰モデルを算出し、実績値のうち、回帰モデルに対する水準値に基づく外れ値である実績値を抽出し、外れ値に基づいて、回帰モデル算出処理を行い、任意の説明変数の想定値の入力を受付け、入力された説明変数に対応する回帰モデルを、回帰モデル記憶部から読み出し、回帰モデルに基づいて、入力部に入力された説明変数の想定値に対応する目的変数である工数を算出するようにしたので、要件があいまいな初期の段階で、ある程度妥当な工数見積を行うことが可能となる。
【図面の簡単な説明】
【0012】
【図1】本発明の一実施形態による工数推定装置の構成例を示すブロック図である。
【図2】本発明の一実施形態によるクレンジングルールのデータ例を示す図である。
【図3】本発明の一実施形態による実績値のデータ例を示す図である。
【図4】本発明の一実施形態による水準値のデータ例を示す図である。
【図5】本発明の一実施形態による抽出条件のデータ例を示す図である。
【図6】本発明の一実施形態による回帰モデルのデータ例を示す図である。
【図7】本発明の一実施形態によるモデル診断結果のデータ例を示す図である。
【図8】本発明の一実施形態による見積結果のデータ例を示す図である。
【図9】本発明の一実施形態により出力するグラフの例を示す図である。
【図10】本発明の一実施形態による工数推定装置の動作例を示すフローチャートである。
【図11】本発明の一実施形態による工数推定装置の動作例を示すフローチャートである。
【図12】本発明の一実施形態による工数推定装置の処理遷移を示す図である。
【図13】本発明の一実施形態により出力するグラフの例を示す図である。
【発明を実施するための形態】
【0013】
以下、本発明の一実施形態について、図面を参照して説明する。
図1は、本実施形態による工数推定装置100の構成を示すブロック図である。工数推定装置100は、システム開発にかかる工数の推定値を算出するコンピュータ装置であり、入力部101と、実績値修正部102と、実績値記憶部103と、水準値記憶部104と、回帰モデル算出部105と、回帰モデル記憶部106と、外れ値抽出部107と、見積工数算出部108と、出力部109とを備えている。
【0014】
入力部101は、キーボードやマウス等のデバイスを備えており、情報の入力を受付ける。例えば、入力部101には、過去に実施されたシステム開発における、工数の実績値と、工数の実績値である目的変数(従属変数)に対する説明変数(独立変数)となり得る複数の項目の実績値とが入力される。例えば、ディスプレイである出力部109が、実績値の入力画面を表示させると、入力部101は、表示された入力画面に応じてユーザから入力される実績値の入力を受付ける。入力される実績値とは、例えば、システム開発のプロジェクトを識別するプロジェクト名と、このプロジェクトに対応する、(1)非機能に関する要求レベルの高低を示す情報、(2)非機能要求を実現する設計や構築の結果を示す情報、(3)要件定義、設計、構築、テスト等のシステム開発に要した工数を示す情報、などである。
【0015】
ここで、説明変数である実績値の項目としてどのような情報を収集するかは、見積を実施しうる各段階での使用可否や、工数への影響度合い、収集コストの妥当性等を考慮して予め決定しておく。例えば、(1)の例として、稼働率やサービス中断時間、処理速度等の情報、(2)の例として、論理サーバ台数やパッケージプログラム種類、プログラミング言語、SLOC(source lines of code)、FP等の情報が挙げられる。
【0016】
また、入力部101には、実績値に基づいて算出される回帰モデルに対して実績値を外れ値とする水準を示す水準値が入力される。入力部101は、入力された水準値を水準値記憶部104に記憶させる。
また、入力部101には、回帰モデル記憶部106に記憶されている回帰モデルに含まれる複数の説明変数のうち、工数の推定値の算定根拠である任意の説明変数の想定値が入力される。入力される想定値は、(1)非機能に関する要求レベルの高低を示す情報、(2)非機能要求を実現する設計や構築の結果を示す情報、のいずれかまたは双方である。
【0017】
実績値修正部102は、入力部101に入力された実績値に、表記揺れや単位不統一などが存在する場合、これらを一定のルールに従って修正して統一するクレンジング処理を行う。実績値修正部102は、自身の記憶領域にこのようなクレンジングルールを予め記憶しておく。図2は、実績値修正部102に記憶されているクレンジングルールのデータ例を示す図である。ルール適用対象項目は、クレンジングルールによるクレンジング処理を行う対象である項目を示す情報である。適用条件は、入力された実績値がその適用条件に一致する場合に、修正を行うことを示す。クレンジング式は、適用条件に一致する実績値の修正後の値を示す。例えば、項目が「プログラミング言語」である実績値が「VB2008」である場合、実績値を「Visual Basic 2008」(Visual Basicは登録商標)に修正することを示す。
【0018】
実績値記憶部103には、入力部101に入力され、実績値修正部102によって修正された実績値が記憶される。図3は、実績値記憶部103に記憶される実績値のデータ例を示す図である。実績値には、プロジェクト名、信頼性要件(稼働率)、性能要件(処理速度)、サーバ台数、規模、規模単位、開発期間等の項目と、工数を示す情報が対応付けられる。ここでは、このような項目を実績値の例として示すが、項目は予め任意に決定して良い。
【0019】
水準値記憶部104には、入力部101に入力された水準値が記憶される。図4は、水準値記憶部104に記憶される水準値のデータ例を示す図である。ここで、本実施形態による回帰モデル算出処理に用いる評価指標、水準値について説明する。評価指標、水準値は、見積モデルの用途等に応じて、予め定められる。評価指標は、例えば、(1)実績値の特徴に応じた見積精度を示すMMRE(相対誤差絶対値の平均値)、MdMRE(相対誤差絶対値の中央値)、(2)実績値の数と項目の数のバランスを示す検定力1−β、有意水準α、効果量θ、(3)回帰モデルのロバストネス(頑健性)を示す自由度調整済み決定係数R2、赤池情報量基準AICなどが適用できる。
【0020】
例えば、(1)については、実績値の工数分布を正規分布で近似できる場合はMMRE、そうでない場合はMdMREを適用する。水準値は、構築する回帰モデルの利用時期、見積結果の用途などに応じて、任意の値を予め入力部101に入力し、設定する。(2)については、目標とする見積精度に基づいて、効果量θの水準値を予め入力部101に入力し、設定する。第1種の過誤(不適切な回帰モデルを選ぶ過誤)を避けたい場合は有意水準αを適用する。第2種の過誤(適切な回帰モデルを選ばない過誤)を避けたい場合は、検定力1−βを適用する。(3)については、回帰モデルとして線形モデルのみを仮定し、かつ実績値が母集団の十分な割合を含む場合、自由度調整済み決定係数R2を選択できる。非線形モデルまたは実績値が母集団に比べ小さい場合、赤池情報量基準AICを選択する。これらは、回帰モデル候補を相対的に比較するための指標であるため、水準値の設定は不要である。
【0021】
回帰モデル算出部105は、実績値記憶部103に記憶されている実績値を読み出し、読み出した実績値に基づいて回帰分析を行い、実績値記憶部103に記憶されている複数の説明変数のうち、水準値記憶部104に記憶されている水準値を満たす説明変数を選択して回帰モデルを算出し、回帰モデル記憶部106に記憶させる回帰モデル算出処理を行う。すなわち、回帰モデル算出部105は、工数を目的変数とし、他の複数の項目を説明変数とした重回帰分析を行う。回帰モデル算出部105は、実績値記憶部103に記憶されている実績値に、数値で表されない質的データが含まれている場合、実績値に含まれる質的データを回帰分析による分析可能なデータとすべく、自身の記憶領域に予め記憶している変換テーブルを参照して適当な数量に変換する。量的データについては、実績値が正規分布となるように変換(Box−Cox変換)する。これにより、実績値を一括して分析等の処理を行う。
【0022】
また、回帰モデル算出部105は、(1)総当り法、(2)ステップワイズ変数選択法のいずれかの方法により、回帰モデルの説明変数を選択する。ここで、選択する説明変数の個数は、全ての組み合わせを試しても良い。回帰モデル算出部105は、工数の実績値を目的変数として、選択した説明変数による回帰分析を行い、回帰係数を決定する。回帰モデル算出部105は、決定した回帰係数に基づく回帰モデルに基づく評価指標を算出し、水準値を満たしているか否かを判定する。満たしていると判定すれば、回帰モデルを決定して回帰モデル記憶部106に記憶させる。満たしていないと判定すれば、他の説明変数を選択して、回帰モデルを算出し、水準値を満たしているか否かを判定する処理を繰り返す。
【0023】
ここで、回帰モデル算出部105は、後述する外れ値抽出部107によって抽出された回帰モデルの外れ値に基づいて、同様に回帰モデル算出処理を行い、新たな回帰モデルを算出して回帰モデル記憶部106に記憶させる。このとき、回帰モデル算出部105は、外れ値を抽出する抽出条件を自身の記憶領域に記憶し、この抽出条件に基づいて実績値記憶部103から実績値を抽出する。図5は、このような抽出条件のデータ例を示す図である。初回の回帰モデル算出処理については、全ての実績値を対象として回帰モデルを算出するため抽出条件はない(NULLである)が、外れ値に基づく層別の回帰モデルを抽出する際には、自身の記憶領域に記憶された層別の抽出条件に基づいて実績値を抽出し、回帰モデル算出処理を行う。
【0024】
回帰モデル記憶部106には、実績値記憶部103に記憶されている実績値に基づいて回帰モデル算出部105によって算出された回帰モデルが記憶される。図6は、回帰モデル記憶部106に記憶される回帰モデルの例を示す図である。回帰モデルは、以下式により表される。
目的変数(工数)=説明変数1×偏回帰係数1+説明変数2×偏回帰係数2+説明変数3×偏回帰係数3+・・・説明変数N×偏回帰係数N+定数項
【0025】
外れ値抽出部107は、回帰モデル算出部105によって算出された回帰モデルを、水準値記憶部104に記憶されている水準値に基づいて診断するモデル診断を行い、モデル診断結果を回帰モデル記憶部106に記憶させる。図7は、モデル診断結果のデータ例を示す図である。また、外れ値抽出部107は、実績値記憶部103に記憶されている実績値のうち、回帰モデル算出部105によって算出された回帰モデルに対する水準値に基づく外れ値である実績値を抽出し、抽出した外れ値に基づいて、回帰モデル算出部105に回帰モデル算出処理を行わせる。すなわち、外れ値抽出部107は、回帰モデル算出部105による回帰分析により、評価指標を大きく悪化させている実績値を特定する。回帰モデル算出部105は、特定した実績値を外れ値として抽出する判別分析を行う。
【0026】
ここで、外れ値抽出部107は、回帰モデルを水準値から外す原因となっている実績値である外れ値を判定し、実績値記憶部103に記憶されている実績値から、外れ値を抽出する抽出条件を生成し、回帰モデル算出部105の記憶領域に記憶させる。そして、回帰モデル算出部105に、外れ値である実績値に基づく新たな回帰モデルを算出させる。これにより、回帰モデル算出部105は、層別の複数の回帰モデルを算出する。例えば、システム開発において所定のバージョンのOS(Operating System)を使用している場合や、所定の製品の組み合わせを使用している場合などにこのような外れ値になると考えられる。
【0027】
見積工数算出部108は、入力部101に入力された説明変数に対応する回帰モデルを、回帰モデル記憶部106から読み出し、回帰モデルに基づいて、入力部101に入力された説明変数の想定値に対応する目的変数である工数を算出する。ここで、見積工数算出部108は、入力された想定値と、回帰モデル算出部105に記憶されているデータ抽出条件とを比較し、分類可能な実績値を実績値記憶部103から読み出し、その実績値に対応する複数の回帰モデルを回帰モデル記憶部106から読み出す。また、見積工数算出部108は、読み出した複数の回帰モデルに対応するモデル診断結果を回帰モデル記憶部106から読み出し、読み出した複数の回帰モデルのうち最も精度の良い回帰モデルの説明変数の入力画面を出力部109に表示させる。この際、既に想定値が入力されている説明変数については、既に入力されている値を表示させる。説明変数に想定値が入力されない場合、入力がないと算出する工数の精度が悪くなる(ばらつきが大きくなる)ことを示す警告文を出力部109に表示させ、入力を促す。ただし、想定値の入力は必須ではなく、入力されない場合は、デフォルト値(例えば、平均値や中央値など)を自動的に入力して適用する。見積工数算出部108は、入力された想定値を回帰モデルにあてはめ、目的変数である工数を算出する。算出した工数は、想定値に対する工数の推定値であり、見積結果である。見積工数算出部108は、このような見積結果を、自身の記憶領域に記憶させる。図8は、見積結果のデータ例を示す図である。
【0028】
出力部109は、情報を出力するディスプレイであり、見積工数算出部108によって算出された見積結果を表示する。例えば、出力部109は、入力された想定値に対して算出された工数を表示させるともに、回帰モデルに基づく最尤推定値、信頼区間の確率分布、経験分布(実績値データの分布)などを示すグラフを表示させるようにしても良い。図9は、このようなグラフの例を示す図である。横軸は工数(人月)を示し、線グラフは回帰モデルに基づく確率分布を示し、腺グラフは実績値のデータ件数の分布を示す。さらに、算出された確率分布に基づき、所定の確率の範囲にある点を、上限値、中間値、下限値として提示することができる。
【0029】
これにより、要件があいまいな状態でも、最も工数がかかる場合、通常の場合等を示すことができる。これにより、例えば要件定義を進めていく段階で、工数の幅がどこに収束していくかといった観点で、要件を取捨選択する等、システムの開発側と顧客側との見積りに対する意識合わせが容易になる。さらに、想定値が不明であった説明変数が存在する場合、その説明変数の想定値を入力することにより、確率分布がどのように変化するかを示すことができる。
【0030】
次に、本実施形態による工数推定装置100の動作例を説明する。図10は、工数推定装置100による回帰モデル算出処理の動作例を示すフローチャートである。まず、入力部101は、工数等の実績値の入力を受付ける(ステップS1)。実績値修正部102は、予め定められたクレンジングルールに基づいて、入力部101に入力された実績値のクレンジング処理を行い、実績値記憶部103に記憶させる(ステップS2)。回帰モデル算出部105は、水準値記憶部104に記憶されている水準値と、実績値記憶部103に記憶されている実績値とに基づいて回帰モデルを算出し、算出した回帰モデルを回帰モデル記憶部106に記憶させる(ステップS3)。外れ値抽出部107は、算出された回帰モデルのモデル診断を行い、回帰モデルの再算出を行なうと判定すると(ステップS4:YES)、外れ値を抽出する抽出条件を生成する。外れ値抽出部107は、生成した抽出条件を回帰モデル算出部105に記憶させ(ステップS5)、ステップS3に戻る。回帰モデル算出部105は、生成された抽出条件に基づいて、回帰モデル抽出処理を行う。外れ値抽出部107が、回帰モデルの再算出を行なわないと判定すると(ステップS4:NO)、処理を終了する。
【0031】
図11は、工数推定装置100による工数見積処理の動作例を示すフローチャートである。入力部101は、ユーザからの説明変数の想定値の入力を受付ける(ステップS10)。見積工数算出部108は、入力された想定値に対応する回帰モデルを回帰モデル算出部105から抽出する(ステップS11)。見積工数算出部108は、入力された想定値を、抽出した回帰モデルに当てはめ、工数の推定値(見積工数)を算出する(ステップS12)。出力部109は、見積工数を出力してユーザに提示し(ステップS13)、処理を終了する。
【0032】
図12は、工数推定装置100による各処理の遷移を示す図である。まず、PM(プロジェクトマネージャ)等が、過去のシステム開発における実績値(生データ)を工数推定装置100に入力し(ステップS21)、モデル構築者がクレンジングルールを工数推定装置100に入力する(ステップS22)。工数推定装置100の実績値修正部102は、入力された生データとクレンジングルールとを読み出し(ステップS23、ステップS24)、クレンジング処理を行う。クレンジング処理により修正された実績値は、実績値記憶部103に記憶される(ステップS25)。回帰モデル算出部105は、データ抽出条件を読み出し(ステップS26)、読み出したデータ抽出条件に応じた実績値を、実績値記憶部103から読み出す(ステップS27)。
【0033】
回帰モデル算出部105は、読み出した実績値に基づいて回帰分析を行い(ステップS28、29)、回帰モデルを算出して回帰モデル記憶部106に記憶させる(ステップS30)。ここで、入力部101は、モデル構築者からの水準値の入力を受付け、入力された水準値を水準値記憶部10に記憶させる(ステップS31)。外れ値抽出部107は、回帰モデル記憶部106に記憶された回帰モデルを読み出し(ステップS32)、水準値記憶部104に記憶された水準値を読み出して(ステップS33)、モデル診断を行い、モデル診断結果を回帰モデル記憶部106に記憶させる(ステップS34)、
【0034】
外れ値抽出部107は、モデル診断結果を読み出し(ステップS35)、実績値記憶部103に記憶されている実績値を読み出して外れ値の抽出条件を生成し、回帰モデル算出部105に記憶させる(ステップS37)。以降、層別の回帰モデルを算出し、回帰モデル記憶部106に記憶させる。このようにして回帰モデルが算出され記憶されると、入力部101は、見積り実施者からの見積条件(想定値)の入力を受付ける(ステップS38)。見積工数算出部108は、回帰モデル算出部105に記憶されている抽出条件と、回帰モデル算出部105に記憶されている回帰モデルと、回帰モデル記憶部106に記憶されているモデル診断結果とを読み出し(ステップS39、40、41)、回帰モデルに想定値を当てはめて、工数の推定値を算出する(ステップS42)。見積工数算出部108は、見積結果を自身の記憶領域に記憶させ(ステップS43)、出力部109に表示させて見積り実施者に提示する(ステップS44)。
【0035】
なお、上述の実施形態では、システム開発全体における工数の実績値を入力し、実績値に基づく工数の推定値を算出する処理を行う例を示したが、システム開発における複数の工程毎に、これらの処理を行うようにしても良い。この場合、実績値記憶部103には、システム開発における複数の工程毎に対応する実績値が記憶される。回帰モデル算出部105は、工程毎の実績値に基づいて、工程毎の回帰モデルを算出して回帰モデル記憶部106に記憶させる。入力部101は、工程毎の任意の説明変数の想定値の入力を受付ける。見積工数算出部108は、工程毎の想定値に対応する回帰モデルを読み出して、工数の推定値を算出する。図13は、例えば要件定義(y1)、設計(y2)、製造(y3)の3工程毎に回帰モデルが算出される場合のグラフの例を示す図である。ここで、回帰モデルがfn(x1、x2、x3、・・・、xm)(n:工程数、m:項目数)であるとすると、Σfiのブートストラップまたは畳み込みにより、図9に示したような全体の確率分布が算出できる。
【0036】
以上説明したように、本実施形態によれば、要件があいまいな段階でも、入力された想定値に基づいた工数の推定値を算出して提示することができる。また、工数の上限、下限を提示することもでき、見積に対する開発側と顧客側との意識合わせを行なうことができ、明らかにしなければならない要件について明確にすることもできる。さらに、プロジェクトの進行に合わせて工数を再度見積もることもでき、問題や変更が発生したときに、現段階での工数に対する影響を提示することができる。
【0037】
なお、本発明における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより工数の算出を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境(あるいは表示環境)を備えたWWWシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
【0038】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【符号の説明】
【0039】
100 工数推定装置
101 入力部
102 実績値修正部
103 実績値記憶部
104 水準値記憶部
105 回帰モデル算出部
106 回帰モデル記憶部
107 外れ値抽出部
108 見積工数算出部
109 出力部
【特許請求の範囲】
【請求項1】
システム開発にかかる工数の推定値を算出する工数見積装置であって、
過去に実施されたシステム開発における、工数の実績値と、当該工数の実績値である目的変数に対する説明変数となり得る複数の項目の実績値とが記憶されている実績値記憶部と、
前記実績値に基づいて算出される回帰モデルが記憶される回帰モデル記憶部と、
前記実績値を、前記回帰モデルに対する外れ値とする水準を示す水準値が記憶されている水準値記憶部と、
前記実績値記憶部に記憶されている前記実績値を読み出し、読み出した当該実績値に基づいて回帰分析を行い、前記実績値記憶部に記憶されている複数の前記説明変数のうち、前記水準値記憶部に記憶されている前記水準値を満たす説明変数を選択して回帰モデルを算出し、前記回帰モデル記憶部に記憶させる回帰モデル算出処理を行う回帰モデル算出部と、
前記実績値記憶部に記憶されている前記実績値のうち、前記回帰モデルに対する前記水準値に基づく外れ値である実績値を抽出し、当該外れ値に基づいて、前記回帰モデル算出部に前記回帰モデル算出処理を行わせる外れ値抽出部と、
複数の前記説明変数のうち、任意の説明変数の想定値の入力を受付ける入力部と、
前記入力部に入力された前記説明変数に対応する前記回帰モデルを、前記回帰モデル記憶部から読み出し、当該回帰モデルに基づいて、前記入力部に入力された前記説明変数の想定値に対応する目的変数である工数を算出する見積工数算出部と、
を備えることを特徴とする工数見積装置。
【請求項2】
前記実績値記憶部に記憶されている前記説明変数となり得る複数の項目には、開発対象であるシステムの非機能に関する要求レベルの高低を示す情報と、非機能要求を実現する設計結果を示す情報とが含まれ、
前記入力部に入力される前記想定値は、開発対象であるシステムの非機能に関する要求レベルの高低を示す情報と、非機能要求を実現する設計結果を示す情報とのいずれかまたは双方である
ことを特徴とする請求項1に記載の工数見積装置。
【請求項3】
前記実績値記憶部には、前記システム開発における複数の工程毎に対応する実績値が記憶され、
前記回帰モデル算出部は、前記工程毎の実績値に基づいて、工程毎の回帰モデルを算出して前記回帰モデル記憶部に記憶させる
ことを特徴とする請求項1または請求項2のいずれかに記載の工数見積装置。
【請求項4】
過去に実施されたシステム開発における、工数の実績値と、当該工数の実績値である目的変数に対する説明変数となり得る複数の項目の実績値とが記憶されている実績値記憶部と、前記実績値に基づいて算出される回帰モデルが記憶される回帰モデル記憶部と、前記実績値を、前記回帰モデルに対する外れ値とする水準を示す水準値が記憶されている水準値記憶部と、を備えた工数見積装置の工数見積方法であって、
前記実績値記憶部に記憶されている前記実績値を読み出し、読み出した当該実績値に基づいて回帰分析を行い、前記実績値記憶部に記憶されている複数の前記説明変数のうち、前記水準値記憶部に記憶されている前記水準値を満たす説明変数を選択して回帰モデルを算出し、前記回帰モデル記憶部に記憶させる回帰モデル算出処理を行うステップと、
前記実績値記憶部に記憶されている前記実績値のうち、前記回帰モデルに対する前記水準値に基づく外れ値である実績値を抽出し、当該外れ値に基づいて、前記回帰モデル算出処理を繰り返すステップと、
複数の前記説明変数のうち、任意の説明変数の想定値の入力を受付けるステップと、
前記入力部に入力された前記説明変数に対応する前記回帰モデルを、前記回帰モデル記憶部から読み出し、当該回帰モデルに基づいて、前記入力部に入力された前記説明変数の想定値に対応する目的変数である工数を算出するステップと、
を備えることを特徴とする工数見積方法。
【請求項5】
過去に実施されたシステム開発における、工数の実績値と、当該工数の実績値である目的変数に対する説明変数となり得る複数の項目の実績値とが記憶されている実績値記憶部と、前記実績値に基づいて算出される回帰モデルが記憶される回帰モデル記憶部と、前記実績値を、前記回帰モデルに対する外れ値とする水準を示す水準値が記憶されている水準値記憶部と、を備えた工数見積装置のコンピュータに、
前記実績値記憶部に記憶されている前記実績値を読み出し、読み出した当該実績値に基づいて回帰分析を行い、前記実績値記憶部に記憶されている複数の前記説明変数のうち、前記水準値記憶部に記憶されている前記水準値を満たす説明変数を選択して回帰モデルを算出し、前記回帰モデル記憶部に記憶させる回帰モデル算出処理を行うステップと、
前記実績値記憶部に記憶されている前記実績値のうち、前記回帰モデルに対する前記水準値に基づく外れ値である実績値を抽出し、当該外れ値に基づいて、前記回帰モデル算出処理を繰り返すステップと、
複数の前記説明変数のうち、任意の説明変数の想定値の入力を受付けるステップと、
前記入力部に入力された前記説明変数に対応する前記回帰モデルを、前記回帰モデル記憶部から読み出し、当該回帰モデルに基づいて、前記入力部に入力された前記説明変数の想定値に対応する目的変数である工数を算出するステップと、
を実行させる工数見積プログラム。
【請求項1】
システム開発にかかる工数の推定値を算出する工数見積装置であって、
過去に実施されたシステム開発における、工数の実績値と、当該工数の実績値である目的変数に対する説明変数となり得る複数の項目の実績値とが記憶されている実績値記憶部と、
前記実績値に基づいて算出される回帰モデルが記憶される回帰モデル記憶部と、
前記実績値を、前記回帰モデルに対する外れ値とする水準を示す水準値が記憶されている水準値記憶部と、
前記実績値記憶部に記憶されている前記実績値を読み出し、読み出した当該実績値に基づいて回帰分析を行い、前記実績値記憶部に記憶されている複数の前記説明変数のうち、前記水準値記憶部に記憶されている前記水準値を満たす説明変数を選択して回帰モデルを算出し、前記回帰モデル記憶部に記憶させる回帰モデル算出処理を行う回帰モデル算出部と、
前記実績値記憶部に記憶されている前記実績値のうち、前記回帰モデルに対する前記水準値に基づく外れ値である実績値を抽出し、当該外れ値に基づいて、前記回帰モデル算出部に前記回帰モデル算出処理を行わせる外れ値抽出部と、
複数の前記説明変数のうち、任意の説明変数の想定値の入力を受付ける入力部と、
前記入力部に入力された前記説明変数に対応する前記回帰モデルを、前記回帰モデル記憶部から読み出し、当該回帰モデルに基づいて、前記入力部に入力された前記説明変数の想定値に対応する目的変数である工数を算出する見積工数算出部と、
を備えることを特徴とする工数見積装置。
【請求項2】
前記実績値記憶部に記憶されている前記説明変数となり得る複数の項目には、開発対象であるシステムの非機能に関する要求レベルの高低を示す情報と、非機能要求を実現する設計結果を示す情報とが含まれ、
前記入力部に入力される前記想定値は、開発対象であるシステムの非機能に関する要求レベルの高低を示す情報と、非機能要求を実現する設計結果を示す情報とのいずれかまたは双方である
ことを特徴とする請求項1に記載の工数見積装置。
【請求項3】
前記実績値記憶部には、前記システム開発における複数の工程毎に対応する実績値が記憶され、
前記回帰モデル算出部は、前記工程毎の実績値に基づいて、工程毎の回帰モデルを算出して前記回帰モデル記憶部に記憶させる
ことを特徴とする請求項1または請求項2のいずれかに記載の工数見積装置。
【請求項4】
過去に実施されたシステム開発における、工数の実績値と、当該工数の実績値である目的変数に対する説明変数となり得る複数の項目の実績値とが記憶されている実績値記憶部と、前記実績値に基づいて算出される回帰モデルが記憶される回帰モデル記憶部と、前記実績値を、前記回帰モデルに対する外れ値とする水準を示す水準値が記憶されている水準値記憶部と、を備えた工数見積装置の工数見積方法であって、
前記実績値記憶部に記憶されている前記実績値を読み出し、読み出した当該実績値に基づいて回帰分析を行い、前記実績値記憶部に記憶されている複数の前記説明変数のうち、前記水準値記憶部に記憶されている前記水準値を満たす説明変数を選択して回帰モデルを算出し、前記回帰モデル記憶部に記憶させる回帰モデル算出処理を行うステップと、
前記実績値記憶部に記憶されている前記実績値のうち、前記回帰モデルに対する前記水準値に基づく外れ値である実績値を抽出し、当該外れ値に基づいて、前記回帰モデル算出処理を繰り返すステップと、
複数の前記説明変数のうち、任意の説明変数の想定値の入力を受付けるステップと、
前記入力部に入力された前記説明変数に対応する前記回帰モデルを、前記回帰モデル記憶部から読み出し、当該回帰モデルに基づいて、前記入力部に入力された前記説明変数の想定値に対応する目的変数である工数を算出するステップと、
を備えることを特徴とする工数見積方法。
【請求項5】
過去に実施されたシステム開発における、工数の実績値と、当該工数の実績値である目的変数に対する説明変数となり得る複数の項目の実績値とが記憶されている実績値記憶部と、前記実績値に基づいて算出される回帰モデルが記憶される回帰モデル記憶部と、前記実績値を、前記回帰モデルに対する外れ値とする水準を示す水準値が記憶されている水準値記憶部と、を備えた工数見積装置のコンピュータに、
前記実績値記憶部に記憶されている前記実績値を読み出し、読み出した当該実績値に基づいて回帰分析を行い、前記実績値記憶部に記憶されている複数の前記説明変数のうち、前記水準値記憶部に記憶されている前記水準値を満たす説明変数を選択して回帰モデルを算出し、前記回帰モデル記憶部に記憶させる回帰モデル算出処理を行うステップと、
前記実績値記憶部に記憶されている前記実績値のうち、前記回帰モデルに対する前記水準値に基づく外れ値である実績値を抽出し、当該外れ値に基づいて、前記回帰モデル算出処理を繰り返すステップと、
複数の前記説明変数のうち、任意の説明変数の想定値の入力を受付けるステップと、
前記入力部に入力された前記説明変数に対応する前記回帰モデルを、前記回帰モデル記憶部から読み出し、当該回帰モデルに基づいて、前記入力部に入力された前記説明変数の想定値に対応する目的変数である工数を算出するステップと、
を実行させる工数見積プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2012−181739(P2012−181739A)
【公開日】平成24年9月20日(2012.9.20)
【国際特許分類】
【出願番号】特願2011−45044(P2011−45044)
【出願日】平成23年3月2日(2011.3.2)
【出願人】(000102728)株式会社エヌ・ティ・ティ・データ (438)
【Fターム(参考)】
【公開日】平成24年9月20日(2012.9.20)
【国際特許分類】
【出願日】平成23年3月2日(2011.3.2)
【出願人】(000102728)株式会社エヌ・ティ・ティ・データ (438)
【Fターム(参考)】
[ Back to top ]