(57)【要約】【課題】機械学習で構築した統計モデルを利用して、プロジェクト指標値の推論を行うプロジェクト管理支援システムを得る。【解決手段】過去のソフトウェア開発工数見積りのための情報を蓄積したプロジェクト管理統計データ３から素性選択部５により、関連性の低い入力変数を除外したのち、機械学習機を用いる工数見積り学習機６により、ソフトウェア開発工数を見積るための統計モデル７を作成し、モデル評価部８により評価を行って最適化された統計モデルを工数見積り機９として工数見積り装置２へ出力し、工数見積り装置２では、工数見積り機９への入力値が未確定で、別の目的関数が存在する場合には多目的最適化部１０により多目的最適化を行ったのち、工数見積り機９を用いてソフトウェア開発工数を見積もるようにした。【選択図】図１
2014203228.tif 000002
【特許請求の範囲】
【請求項１】
プロジェクト指標値の推論を行うための情報を蓄積した統計データベース、
この統計データベースの情報を基にして上記プロジェクト指標値を推論するための統計モデルを生成し、評価した統計モデルを見積り機として出力する見積り機生成装置、
及び上記見積り機を用いて、ユーザにより入力されたデータに基づき、上記プロジェクト指標値を推論する見積り装置を備え、
上記見積り機生成装置は、
回帰モデルの機械学習機を利用して、上記統計データベースの情報を基にして上記統計モデルを作成するモデル作成部と、
このモデル作成部により生成された統計モデルを評価するモデル評価部とを有することを特徴とするプロジェクト管理支援システム。
【請求項２】
上記統計データベースの情報は複数の指標ごとに蓄積され、
上記見積り機生成装置は、
上記統計データベースの複数の指標のうち、上記推論されるプロジェクト指標値に対する関連性が低い指標を除外する指標選択部を有することを特徴とする請求項１記載のプロジェクト管理支援システム。
【請求項３】
上記見積り装置は、
ユーザがプロジェクト指標値の推論のためのデータ入力を指標別に行うための対話的インターフェースと、
複数の目的関数の最適化が可能な多目的最適化部とを有し、
ユーザによる入力値が未確定な指標を目的関数とし、この目的関数とは別の目的関数が存在する場合に、これら２つの目的関数について上記多目的最適化部により最適化を行い、上記未確定の入力値を推論することを特徴とする請求項２記載のプロジェクト管理支援システム。
【請求項４】
上記多目的最適化部は、上記対話的インターフェースにより対話的に操作されることを特徴とする請求項３記載のプロジェクト管理支援システム。
【請求項５】
上記推論されるプロジェクト指標値は、ソフトウェア開発工数であることを特徴とする請求項１〜請求項４のいずれか一項記載のプロジェクト管理支援システム。
【請求項６】
上記モデル作成部による上記統計モデル作成の基にする上記統計データベースの情報は、プロジェクトの途中段階で得られる予想値であることを特徴とする請求項１〜請求項５のいずれか一項記載のプロジェクト管理支援システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、機械学習による統計モデルを使用して、ソフトウェア開発工数見積りなどのプロジェクト指標値を推論するプロジェクト管理支援システムに関するものである。
【背景技術】
【０００２】
ソフトウェア開発において、多くの場合、ソフトウェア開発にかかる工数を見積り、その見積を基準に開発を進めていくため、開発工数の見積り手法が必要となっている。
ソフトウェアの規模を測定する手法として、ソースコード行数を評価するＳＬＯＣ（Ｓｏｕｒｃｅ  Ｌｉｎｅ  Ｏｆ  Ｃｏｄｅ）やソフトウェアの機能数や複雑さを評価したＦＰ（ Ｆｕｎｃｔｉｏｎ  Ｐｏｉｎｔ）法が広く知られている。また、工数見積手法として、ＣＯＣＯＭＯ（Ｃｏｎｓｔｒｕｃｔｉｖｅ  Ｃｏｓｔ  Ｍｏｄｅｌ）やＣｏＢＲＡ（Ｃｏｓｔ  ｅｓｔｉｍａｔｉｏｎ，  Ｂｅｎｃｈｍａｒｋｉｎｇ  ａｎｄ  Ｒｉｓｋ  Ａｓｓｅｓｓｍｅｎｔ）法が著名である。
従来のソフトウェア工数見積り支援システムでは、ＳＬＯＣやＦＰ法を活用して、それを補正するなどして見積りを行なっている。（たとえば、特許文献１参照）
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−０１１６９７号公報（第６−９頁、第１図）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のソフトウェア工数見積り支援システムは、機械学習による統計モデルを活用できておらず、現実のモデルと乖離した見積り手法となる可能性が高いという問題点があった。
一方、統計モデルを活用した手法であっても、入力値が未確定の場合には工数を見積もることが困難であった。
【０００５】
この発明は、上述のような課題を解決するためになされたものであり、機械学習で構築した統計モデルを利用して、プロジェクト指標値の推論を行うプロジェクト管理支援システムを得ることを目的とする。
【課題を解決するための手段】
【０００６】
この発明に係わるプロジェクト管理支援システムにおいては、プロジェクト指標値の推論を行うための情報を蓄積した統計データベース、この統計データベースの情報を基にしてプロジェクト指標値を推論するための統計モデルを生成し、評価した統計モデルを見積り機として出力する見積り機生成装置、及び見積り機を用いて、ユーザにより入力されたデータに基づき、プロジェクト指標値を推論する見積り装置を備え、見積り機生成装置は、回帰モデルの機械学習機を利用して、統計データベースの情報を基にして統計モデルを作成するモデル作成部と、このモデル作成部により生成された統計モデルを評価するモデル評価部とを有するものである。
【発明の効果】
【０００７】
この発明によれば、プロジェクト指標値の推論を行うための情報を蓄積した統計データベース、この統計データベースの情報を基にしてプロジェクト指標値を推論するための統計モデルを生成し、評価した統計モデルを見積り機として出力する見積り機生成装置、及
び見積り機を用いて、ユーザにより入力されたデータに基づき、プロジェクト指標値を推論する見積り装置を備え、見積り機生成装置は、回帰モデルの機械学習機を利用して、統計データベースの情報を基にして統計モデルを作成するモデル作成部と、このモデル作成部により生成された統計モデルを評価するモデル評価部とを有するので、機械学習機による統計モデルでプロジェクト指標値の推論を行うことにより、より状況に適した、高精度なプロジェクト指標値の算出ができる。
【図面の簡単な説明】
【０００８】
【図１】この発明の実施の形態１によるソフトウェア工数見積り支援システムを示す構成図である。
【図２】この発明の実施の形態１によるソフトウェア工数見積り支援システムのプロジェクト管理統計データの例を示す図である。
【図３】この発明の実施の形態１によるソフトウェア工数見積り支援システムの標本データの具体例を示す図である。
【図４】この発明の実施の形態１によるソフトウェア工数見積り支援システムの工数見積り機生成装置の処理を示すフローチャートである。
【図５】この発明の実施の形態１によるソフトウェア工数見積り支援システムの工数見積り装置の処理を示すフローチャートである。
【図６】この発明の実施の形態２によるソフトウェア工数見積り支援システムのプロジェクト途中段階に追加で得られる指標値を示す図である。
【図７】この発明の実施の形態３によるプロジェクト管理支援システムの結合試験での目標試験密度を見積る場合の標本データを示す図である。
【図８】この発明の実施の形態３によるプロジェクト管理支援システムを示す構成図である。
【図９】この発明の実施の形態３によるプロジェクト管理支援システムの見積り機生成装置の処理を示すフローチャートである。
【図１０】この発明の実施の形態３によるプロジェクト管理支援システムの見積り装置の処理を示すフローチャートである。
【発明を実施するための形態】
【０００９】
実施の形態１．
以下、この発明の実施の形態１を図に基づいて説明する。
図１は、この発明の実施の形態１によるソフトウェア工数見積り支援システムを示す構成図である。
図１において、工数見積り機生成装置１は、与えられたプロジェクト管理統計データ３を入力とし、工数見積り機９を生成するための装置である。工数見積り装置２は、新規プロジェクトの見積りを行うためのデータを入力とし、工数見積り機９を用いて、工数やそれ以外の見積りに必要な情報を推論する装置である。
なお、工数見積り機生成装置１と工数見積り装置２は、それぞれ計算機によって構成される。
【００１０】
工数見積り機生成装置１は、素性選択部５（指標選択部）、工数見積り学習機６（モデル作成部）、モデル評価部８を有している。
素性選択部５は、相関係数等を用いて実現し、プロジェクト管理統計データ３のうちの出力値（工数）と関連度の高い入力変数のみを残すように入力変数を選択する。
工数見積り学習機６は、回帰モデルの機械学習機を利用して実現され、プロジェクト管理統計データ３の統計情報から工数見積りを推論する統計モデル７を生成する。この機械学習機として、精度の高い手法として広く知られているＳＶＭ（Ｓｕｐｐｏｒｔ  Ｖｅｃｔｏｒ  Ｍａｃｈｉｎｅ）を用いたＳＶＭ回帰やニューラルネットワークを用いたＲＢＦ（Ｒａｄｉａｌ  Ｂａｓｉｓ  Ｆｕｎｃｔｉｏｎ）ネットワークを用いる。
モデル評価部８は、機械学習機によって生成された統計モデル７を評価し、その精度を検証する部分で、一般的に交差検定手法が用いられ、交差検定の評価値が最大になるように機械学習機の固有パラメータをチューニングする。
【００１１】
工数見積り装置２は、工数見積り機９、多目的最適化部１０、対話的インターフェース１１を有する。
工数見積り機９は、工数見積り機生成装置１によってチューニングされた統計モデル７を元にソフトウェア開発工数見積りを行う部分である。
多目的最適化部１０は、ユーザ端末４から対話的インターフェース１１が受け取った入力値に欠損値があり、かつ欠損値に関する目的関数がある場合に動作する部分で、多目的最適化手法を用いて実現する。多目的最適化手法は、遺伝的アルゴリズムを用いたＭＯＧＡ（Ｍｕｌｔｉ−Ｏｂｊｅｃｔｉｖｅ  Ｇｅｎｅｔｉｃ  Ａｌｇｏｒｉｔｈｍ）やメタヒューリスティク手法であるＰＳＯ（Ｐａｒｔｉｃｌｅ  Ｓｗａｒｍ  Ｏｐｔｉｍｉｚａｔｉｏｎ）で実現でき、パレート最適解群を出力する。
【００１２】
対話的インターフェース１１は、ユーザインターフェース１２とトレードオフ分析部１３で構成される。ユーザインターフェース１２は、ユーザ端末４から入力値を受け取り、その出力値を返すことや、ユーザの求める最適解を導くために、入力値の変更を受け取るインターフェースである。トレードオフ分析部１３は、多目的最適化部１０で求められたパレード最適解群に対し、よりユーザの状況にあった最適解を求めるトレード分析を行う。トレード分析は、１つの目的関数の値を改善させた場合、他の目的関数値がどの程度値が低下するかを求めることができる満足化トレードオフ法で実現できる。
【００１３】
図２は、この発明の実施の形態１によるソフトウェア工数見積り支援システムのプロジェクト管理統計データの例を示す図である。
図２において、プロジェクト管理統計データ３として、ソフトウェア工数見積りのための指標を示し、各指標について数値範囲、単位、備考を示している。
【００１４】
図３は、この発明の実施の形態１によるソフトウェア工数見積り支援システムの標本データの具体例を示す図である。
図３において、図２の指標に対し、過去に蓄積されたプロジェクト管理統計データ３の具体例を示している。各指標に対し、それぞれ統計データを示す標本１〜標本４の標本データを有する。
図３では、参考までに、工数（人月）の出力値を格納している。
【００１５】
実施の形態１のプロジェクト管理統計データ３として、図２のような工数見積りのための指標があり、その指標に対し、図３のようなプロジェクト管理統計データが蓄積されていることとする。
なお、この指標のことを入力変数と呼び、過去に蓄積されているプロジェクト管理統計データを標本データと呼ぶこととする。
【００１６】
次に、動作について説明する。
まず、図４に従い、実施の形態１の工数見積り機生成装置１の動作について説明する。
処理４１０で、過去に蓄積された標本データを素性選択部５に入力する。次に、処理４１１で、出力値に関係性の低い入力変数があるかどうかを判定し、該当する入力変数があれば、処理４１２で、その入力変数を標本データから除外し、処理４１３で、入力変数を確定させる。この操作を行うことで、工数見積り学習機６で学習を行う時に、精度低下の原因となる関連性の低い変数を除くことができ、見積り精度が向上する。
【００１７】
次に、素性選択部５に相関係数を利用した場合を例とし、具体的な動作を以下で説明する。
素性選択部５では、出力値である工数と各入力変数の相関係数が計算され、各入力変数には−１から１の間の相関係数値が付けられる。この値の絶対値が１に近いほど２つの変数の関係性は強い。よって、相関係数の絶対値が一定しきい値以下の変数は、関係性が低いとみなすことができ、処理４１２で除外することができる。図３の各入力変数の相関係数を求め、しきい値を０．１００とすると、「結合試験での目標レビュー指摘率」は０．０７０、「プロジェクト参加者の従事年数平均」は０．０２２となり、除外の対象となる。
【００１８】
次に、処理４１４から処理４１７のフローで工数見積り機９を生成する。
処理４１４では、工数見積り学習機６に初期パラメータを与えている。初期パラメータの例として、工数見積り学習機６にガウスカーネルのＳＶＭ回帰を利用する場合は、正規化パラメータＣやカーネルパラメータのσ等に適当な値を与えることとなる。
初期パラメータを設定後、処理４１５で、標本データを工数見積り学習機６に入力し、統計モデル７を生成し、処理４１６で、統計モデル７の評価を行う。処理４１６の評価で十分な見積り精度が出ると判定された場合、生成された統計モデル７を工数見積り機９として出力し、処理を終了する。
【００１９】
モデル評価部８の例として、２分割交差検定を評価モデルとした場合、標本を２分割にし、分割した標本をそれぞれＡ、Ｂとする。まず、Ａを工数見積り学習機６の入力値とし、Ｂを用いて見積り精度を求める。次に、Ｂを工数見積り学習機６の入力値とし、Ａを用いて見積り精度を求める。２回の見積り精度の平均値を、このモデルの精度とし、その精度がしきい値を超えた場合に十分な見積り精度が出ていると評価する。
逆に、しきい値より低い値が出た場合、再度パラメータを設定し直す。この時、直感でパラメータを設定するのではなく、最適化手法を活用してパラメータを逐次的に最適化することで、パラメータ設定も機械的に行うことができ、精度の高い統計モデルを自動で生成することができる。
【００２０】
従来の機械学習を利用しないモデルにおいて、同様のモデル評価を行い、パラメータの最適化を行うと、多くの場合は過適合問題が起き、実際の見積り時には精度が低くなる。一方で、ＳＶＭ等の過適合に強い機械学習を用いることで、精度の向上が可能となる。
【００２１】
次に、図５に従い、実施の形態１の工数見積り装置２の動作について説明する。
処理５１０では、新たなソフトウェア開発が始まり、新プロジェクトの指標値を人手で作成する。次に、処理５１１で、指標の入力値が未確定であり、これとは別の目的関数があるかどうかで処理が分岐する。指標の入力値が全て分かっている場合、処理５１２で、工数見積り機９にその値を入力することで、処理５１３で、従来の手法と同様に工数見積り値を取得することができる。
【００２２】
一方で、指標の入力値が未確定であり、これとは別の目的関数がある場合は、処理５１４に進む。これには、次の様なケースが当てはまる。ＳＬＯＣやプロダクトの複雑度は、ソフトウェアの要件から概ね推測できるが、プロジェクトのメンバはまだ選ぶ余地がある。経験の浅いメンバを多数組み入れることもできるが、少数の経験豊富なメンバを組み入れることも可能である。
この時、「利用されるプログラミング言語の経験年数のメンバ平均値」や「プロジェクト参加者の従事年数平均」の指標は未確定の状態となる。また、経験の浅いメンバと経験豊かなメンバでは１人月あたりのコストが異なるため、新たな目的関数として、コスト＝ｆ（プロジェクト参加従事年数平均）が導入され、この目的関数をできる限り最小化したいという要求が発生する。ｆ（プロジェクト参加従事年数平均）の具体例としては、（３０，０００＊プロジェクト参加従事年数平均＋２００，０００）×人数のようなものが考
えられる。
【００２３】
このようなケースは、プロジェクト見積時に頻繁に発生するが、従来の手法では扱うことのできない問題であり、本発明ではこのケースを解決できる装置を構成した。
処理５１４では、工数見積り機出力と別の目的関数を同時に最小化する多目的最適化問題を満たすパレート最適解群を算出する（処理５１５）。パレート最適解とは、複数の目的関数を同時に改善することが不可能な実行可能解のことを指し、目的関数値のいずれかを改善しようとした場合、他の目的関数値が改悪されてしまうような状態にある解を意味する。そのため、どのような多目的最適化手法を利用しても、複数のパレート最適解が出力されるため、処理５１６にあるように、ユーザが自らの要求を満たす最適解があるかを判断する必要がある。
【００２４】
処理５１６において、多目的最適化部１０から出力されたパレード最適解の中に、ユーザ要求を満たす最適解があれば、未確定の入力値と工数が得られるので、処理は終了となる。
ユーザ要求を満たす最適解が存在しない場合、もしくはより良い解の探索をユーザが求めている場合は、処理５１７に進む。
【００２５】
処理５１７では、対話的インターフェース１１を用いて、ユーザ自らが最適解を探索していく。対話的インターフェース１１では、次のようなステップで最適解を見つける。
初めに、ユーザが改善したい目的関数を選択する。次に、ユーザが改善したい量だけ指摘した目的関数の値を改善させる。続いて、満足化トレードオフ法を用いて、ユーザが改善した目的関数以外の目的関数の値を近似的に求め、ユーザに提示する。その値を見て、ユーザが納得した場合は、処理５１８にあるように近似的に求めた目的関数の値を実際の目的関数に当てはめて計算し直し、再度ユーザに値を提示する。処理５１９で、その結果が、ユーザ要求を満たせば、処理は終了となる。
【００２６】
次に、上記のｆ（プロジェクト参加従事年数平均）を目的関数として導入したケースを例にして、最適解の求め方を詳細に説明する。
この例の目的関数は、ｆ（プロジェクト参加従事年数平均）と工数見積り機出力の２つである。ここで、この２関数を多目的最適化し、パレート最適解を得たところ、ｆ（プロジェクト参加従事年数平均）＝２５０，０００、工数見積り機出力＝２００という結果が得られた。
【００２７】
この時、ユーザは、工数見積り機出力である工数をもう少し下げたいと考え、対話的インターフェース１１に１９０という値を入力した。対話的インターフェース１１からは、工数を１９０にした場合、ｆ（プロジェクト参加従事年数平均）＝３５０，０００まで悪化してしまうという結果が提示された。その結果を見て、ユーザは考えなおし、工数を１９５まで改善するよう入力したところ、ｆ（プロジェクト参加従事年数平均）＝２８０，０００となると結果が提示された。
ユーザはその結果に納得したため、次のステップに進むよう入力し、最終結果として、工数＝１９５、ｆ（プロジェクト参加従事年数平均）＝２８０，５００が得られ、ユーザは処理を完了させた。
【００２８】
実施の形態１によれば、機械学習による統計モデルを用いてソフトウェア工数見積りを行うように構成したので、より状況に適した、高精度な見積り値の算出ができる。
また、統計モデルに与える指数の入力値が未確定であり、かつ別の目的関数がある場合に、多目的最適化を用いることで、工数の見積り値とともに、未確定の入力値の最適値も同時に推論することができる。
さらに、対話的インターフェースによって、よりユーザの状況に適した組み合わせでの見積り値を得ることができる。
【００２９】
実施の形態２．
図６は、この発明の実施の形態２によるソフトウェア工数見積り支援システムのプロジェクト途中段階に追加で得られる指標値を示す図である。
図６において、指標ごとにプロジェクトの開始段階の指標値と、プロジェクトの途中段階の指標値の予想が示されている。
【００３０】
実施の形態１では、プロジェクトの開始時に、工数見積り装置２により工数や未確定の入力値の最適解を求める手法について述べたが、実施の形態２では、図６に示すように、プロジェクトの途中段階でより正確な指標値の予想値が分かり、新たなプロジェクト指標値を得た場合に、その情報を活用し、より精度の高い工数見積り機９を生成することが可能となる。
【００３１】
実施の形態２の動作は、プロジェクトの途中段階で新たに得た情報を新たな指標値として、素性選択部５に入力し直す操作が、実施の形態１と異なるが、それ以降の操作は実施の形態１と同じである。
【００３２】
実施の形態２によれば、プロジェクトの途中段階での指標値を活用することで、より精度の高い工数見積り装置を生成することができる。
【００３３】
実施の形態３．
図７は、この発明の実施の形態３によるプロジェクト管理支援システムの結合試験での目標試験密度を見積る場合の標本データを示す図である。
図７において、各指標は図３におけるものと同様のものながら、工数（人月）を入力変数とし、「結合試験での目標試験密度」を出力値としている。なお、図７では、省略されているが、図３と同様に、標本データが格納されている。
【００３４】
図８は、この発明の実施の形態３によるプロジェクト管理支援システムを示す構成図である。
図８において、８０１〜８１３はそれぞれ図１の１〜１３に対応し、同様な動作を行う。ただし、図８では、工数見積りに限らず、プロジェクト指標値の推論（見積り）を行うところが図１と異なる構成である。
【００３５】
見積り機生成装置８０１が、素性選択部８０５（指標選択部）により、プロジェクト管理統計データ８０３のうち、見積り装置８０２の出力に関連性の低い指標を除外した上、見積り学習機８０６（モデル作成部）により統計モデル８０７を作成し、モデル評価部８０８により統計モデル８０７を評価して、見積り装置８０２へ見積り機８０９を出力する。
見積り装置８０２は、見積り機８０９を用いて、ユーザ端末８０４から入力されるデータに基づき、プロジェクト指標値を推論し、出力する。多目的最適化部８１０、対話的インターフェース８１１、ユーザインターフェース８１２、トレードオフ分析部８１３は、図１の多目的最適化部１０、対話的インターフェース１１、ユーザインターフェース１２、トレードオフ分析部１３と、それぞれ同じである。
【００３６】
実施の形態１、２では、工数見積り機生成装置と工数見積り装置を用いて、ソフトウェア開発工数を見積る場合について述べたが、実施の形態３は、図７に示すように、工数見積り機生成装置に与える標本データの構造を変更して、工数に限らず、プロジェクト指標値の推論を行うようにした。図７では、プロジェクト指標値として「結合試験での目標試験密度」を挙げている。
【００３７】
実施の形態３の動作は、出力値がソフトウェア開発工数に限らないことを除くと、実施の形態１、２と同じフローに従う。よって、図８で示す装置と図９、図１０のフローチャートに従い、工数見積り時と同等の手順でプロジェクト指標値の推論を行う。
因みに、図９の処理９１０〜処理９１７は、図４の処理４１０〜処理４１７にそれぞれ対応する処理である。
また、図１０の処理１０１０〜処理１０１９は、図５の処理５１０〜処理５１９にそれぞれ対応する処理である。
【００３８】
実施の形態３によれば、標本データを変更することで、工数見積りと同様の手法により他のプロジェクト指標値についても推論を行うことができる。
【００３９】
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。
【符号の説明】
【００４０】
１  工数見積り機生成装置、２  工数見積り装置、３  プロジェクト管理統計データ、４  ユーザ端末、５  素性選択部、６  工数見積り学習機、７  統計モデル、８  モデル評価部、９  工数見積り機、１０  多目的最適化部、
１１  対話的インターフェース、１２  ユーザインターフェース、
１３  トレードオフ分析部、８０１  見積り機生成装置、８０２  見積り装置、８０３  プロジェクト管理統計データ、８０４  ユーザ端末、８０５  素性選択部、８０６  見積り学習機、８０７  統計モデル、８０８  モデル評価部、８０９  見積り機、８１０  多目的最適化部、８１１  対話的インターフェース、８１２  ユーザインターフェース、８１３  トレードオフ分析部。
【図１】
2014203228.tif 000003
【図２】
2014203228.tif 000004
【図３】
2014203228.tif 000005
【図４】
2014203228.tif 000006
【図５】
2014203228.tif 000007
【図６】
2014203228.tif 000008
【図７】
2014203228.tif 000009
【図８】
2014203228.tif 000010
【図９】
2014203228.tif 000011
【図１０】
2014203228.tif 000012