(57)【要約】【課題】ソフトウェア開発のリスクに繋がる要因の特定を可能とすること。【解決手段】プロジェクト分析装置は、第１のソフトウェア開発プロジェクトに関する管理データから、各説明変数の値及び目的変数の値を取得する第１の取得部と、前記第１の取得部が取得した前記各説明変数の値及び前記目的変数の値に基づいて、前記各説明変数を根ノード又は内部ノードとし、前記目的変数の値を葉ノードとする木構造を有する予測モデルを生成する生成部と、第２のソフトウェア開発プロジェクトに関する管理データから、前記各説明変数の値を取得する第２の取得部と、前記第２の取得部によって取得された各説明変数を前記予測モデルに当てはめて、前記目的変数の値を予測する予測部と、前記目的変数の値に応じ、前記予測部による予測において前記予測モデルの葉ノードに到達するまでの過程に含まれる説明変数を出力する出力部と、を有する。【選択図】図２
2019148874.tif 000002
【特許請求の範囲】
【請求項１】
第１のソフトウェア開発プロジェクトに関する管理データから、各説明変数の値及び目的変数の値を取得する第１の取得部と、
前記第１の取得部が取得した前記各説明変数の値及び前記目的変数の値に基づいて、前記各説明変数を根ノード又は内部ノードとし、前記目的変数の値を葉ノードとする木構造を有する予測モデルを生成する生成部と、
第２のソフトウェア開発プロジェクトに関する管理データから、前記各説明変数の値を取得する第２の取得部と、
前記第２の取得部によって取得された各説明変数を前記予測モデルに当てはめて、前記目的変数の値を予測する予測部と、
前記目的変数の値に応じ、前記予測部による予測において前記予測モデルの葉ノードに到達するまでの過程に含まれる説明変数を出力する出力部と、
を有することを特徴とするプロジェクト分析装置。
【請求項２】
前記出力部は、前記目的変数が開発速度の低下の予兆が有ることを示す場合に、前記過程に含まれる説明変数を出力する、
ことを特徴とする請求項１記載のプロジェクト分析装置。
【請求項３】
第１のソフトウェア開発プロジェクトに関する管理データから、各説明変数の値及び目的変数の値を取得する第１の取得手順と、
前記第１の取得手順が取得した前記各説明変数の値及び前記目的変数の値に基づいて、前記各説明変数を根ノード又は内部ノードとし、前記目的変数の値を葉ノードとする木構造を有する予測モデルを生成する生成手順と、
第２のソフトウェア開発プロジェクトに関する管理データから、前記各説明変数の値を取得する第２の取得手順と、
前記第２の取得手順において取得された各説明変数を前記予測モデルに当てはめて、前記目的変数の値を予測する予測手順と、
前記目的変数の値に応じ、前記予測手順による予測において前記予測モデルの葉ノードに到達するまでの過程に含まれる説明変数を出力する出力手順と、
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロジェクト分析装置及びプログラムに関する。
【背景技術】
【０００２】
ソフトウェア開発プロジェクトに関するプロジェクト管理システムから得られるデータをもとに定量的なメトリクスを取得し、開発チーム内の状況（開発の進み具合）を把握するといった技術がある（例えば、非特許文献１）。非特許文献１では、メトリクスに基づいて開発チーム内でのリスクを見つけ、その改善を促し開発速度の低下を防いでいる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】S. Downey and J. Sutherland, "Scrum metrics for hyperproductive teams: How they fly like fighter aircraft," 2013 46th Hawaii International Conference on System Sciences, pp.4870-4878, Jan. 2013.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術では、リスク発生に繋がる要因（リスクの主要因）を特定することはできず、リスクへの適切な対策を打つのは難しいという問題が有った。
【０００５】
本発明は、上記の点に鑑みてなされたものであって、ソフトウェア開発のリスクに繋がる要因の特定を可能とすることを目的とする。
【課題を解決するための手段】
【０００６】
そこで上記課題を解決するため、プロジェクト分析装置は、第１のソフトウェア開発プロジェクトに関する管理データから、各説明変数の値及び目的変数の値を取得する第１の取得部と、前記第１の取得部が取得した前記各説明変数の値及び前記目的変数の値に基づいて、前記各説明変数を根ノード又は内部ノードとし、前記目的変数の値を葉ノードとする木構造を有する予測モデルを生成する生成部と、第２のソフトウェア開発プロジェクトに関する管理データから、前記各説明変数の値を取得する第２の取得部と、前記第２の取得部によって取得された各説明変数を前記予測モデルに当てはめて、前記目的変数の値を予測する予測部と、前記目的変数の値に応じ、前記予測部による予測において前記予測モデルの葉ノードに到達するまでの過程に含まれる説明変数を出力する出力部と、を有する。
【発明の効果】
【０００７】
ソフトウェア開発のリスクに繋がる要因の特定を可能とすることができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施の形態におけるプロジェクト分析装置１０のハードウェア構成例を示す図である。
【図２】本発明の実施の形態におけるプロジェクト分析装置１０の機能構成例を示す図である。
【図３】予測モデルを説明するための図である。
【図４】予測の概要を説明するための図である。
【図５】予測モデルの構築に関する処理手順の一例を説明するためのフローチャートである。
【図６】予測に関する処理手順の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【０００９】
以下、図面に基づいて本発明の実施の形態を説明する。本実施の形態では、開発速度の低下の予兆をソフトウェア開発のリスクの一例とし、斯かるリスクに繋がる要因を特定又は推定する例について説明する。これを達成する上での技術的な要件は、１）速度低下の予測ができること、２）低下と関係のある事象（低下の主要因）を推定することができること、の２つである。これら２つの要件を満たすため、本実施の形態では決定木を利用する。
【００１０】
図１は、本発明の実施の形態におけるプロジェクト分析装置１０のハードウェア構成例を示す図である。図１のプロジェクト分析装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、インタフェース装置１０５、表示装置１０６、及び入力装置１０７等を有する。
【００１１】
プロジェクト分析装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記憶した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１２】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従ってプロジェクト分析装置１０に係る機能を実現する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１０６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１０７はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
【００１３】
図２は、本発明の実施の形態におけるプロジェクト分析装置１０の機能構成例を示す図である。図２に示されるように、プロジェクト分析装置１０は、市販のプロジェクト管理システムと連携することを想定している。プロジェクト分析装置１０は、例えば、１日ごとに現在進行しているソフトウェアの開発プロジェクト（以下、「対象プロジェクト」という。）の管理データであるプロジェクトデータを取得・分析し開発速度が低下する予兆を検知する。その予兆をもとにユーザ（プロジェクト管理者）はプロジェクトの改善を図る。
【００１４】
図２において、プロジェクト分析装置１０は、プロジェクトデータ抽出部１１、メトリクス測定部１２、予測モデル構築部１３、予測実行部１４及び予測結果出力部１５等を有する。これら各部は、プロジェクト分析装置１０にインストールされた１以上のプログラムが、ＣＰＵ１０４に実行させる処理により実現される。
【００１５】
［プロジェクトデータ抽出部１１］
プロジェクトデータ抽出部１１は、市販のプロジェクト管理システム（チケット管理システム、バージョン管理システムなど）と連携し、それらのプロジェクトデータを取得する。
【００１６】
プロジェクト管理システムの一例であるチケット管理システムとは、作業内容をチケットとして管理するシステムである。チケットは、実行する作業の概要、作業の見積もり時間、優先度、状態などの情報を保持するデータである。また、作業内容についての議論はチケットへのコメントという形で記録することができる。
【００１７】
プロジェクト管理システムの一例であるバージョン管理システムは、ソースコードの変更履歴を管理するシステムである。バージョン管理システムは、コミットログという形式でソースコードへの変更や変更内容の説明（コミットメッセージ）等を保持する。
【００１８】
なお、その他のプロジェクト管理システム（例えば、継続的インテグレーションツール等）が用いられてもよい。
【００１９】
［メトリクス測定部１２］
メトリクス測定部１２は、予測モデルの構築（生成）に利用する訓練データ（各説明変数の値と目的変数の値）と、予測モデルを用いた予測に利用する予測用データ（各説明変数の値）とをプロジェクトデータに基づいて測定する。但し、訓練データは、過去のソフトウェア開発プロジェクト（以下、「過去プロジェクト」という。）に係るプロジェクト管理システムから取得される。一方、予測用データは、対象プロジェクトに係るプロジェクト管理システムから取得される。過去のソフトウェア開発プロジェクトとは、目的変数が既知であるソフトウェア開発プロジェクトをいう。
【００２０】
また、測定とは、プロジェクトデータに含まれているメトリクスに基づいて何らかの計算を行うことや、当該メトリクスの値をそのまま説明変数の値として用いること等をいう。また、訓練データに利用されるプロジェクトデータには、開発速度の低下の予兆の有無を示す情報が含まれているとする。
【００２１】
説明変数は、予測に利用するメトリクス、目的変数は予測結果のメトリクスである。本実施の形態において、目的変数は、開発速度の低下の予兆の有無を表す２値の変数（ＯＫ／ＮＧ）である。開発速度が閾値を下回る場合に開発速度が低下していると判定される。閾値には、０％〜１００％までの任意の値を設定することができ、プロジェクトの特性に応じて適切な値が設定されればよい。
【００２２】
［予測モデル構築部１３］
上記したように、本実施の形態では決定木を利用する。決定木による分析を行うには予め訓練データから予測モデルを構築する必要がある。そこで、予測モデル構築部１３は、決定木分析に利用する予測モデルを構築する。予測モデル構築部１３は、訓練データにＣＡＲＴ（Classification and Regression Tree）アルゴリズムを適用して予測モデルを構築する。ＣＡＲＴアルゴリズムは、「O.R.S.C. Breiman L, Friedman JH, "Classification and regression trees," CRC Press, 1984.」に詳しい。
【００２３】
予測モデルは、図３に示されるような、Ｉｆ−Ｔｈｅｎ−Ｅｌｓｅ形式の判別ルールの木構造で表現される。当該木構造は、各説明変数を根ノード又は内部ノードとし、目的変数の値（ＯＫ又はＮＧ）を葉ノードとする。
【００２４】
［予測実行部１４］
予測実行部１４は、対象プロジェクトに関して、開発速度低下の予兆の有無について予測を行う。図４は、予測の概要を説明するための図である。図４に示されるように、予測実行部１４は、対象プロジェクトのプロジェクトデータに基づいて測定した説明変数の集合である予測用データを予測モデルに適用し、目的変数の導出（開発速度が低下する予兆が有るか否かの予測）を行う。図３のような予測モデルに対して、木の根ノードから順に当該ノードに対応する説明変数の値を当てはめていくと木の末端（葉ノード）に到達する。到達した葉ノードのラベルが予測結果（開発速度が低下する予兆が有るか否か）である。なお、葉ノードのラベルのうち「ＯＫ」は、開発速度の低下の予兆が無いことを示し、「ＮＧ」は、開発速度の低下の予兆が有ることを示す。
【００２５】
［予測結果出力部１５］
予測結果出力部１５は、ユーザ（プロジェクト管理者）に対して分析結果（開発速度が低下する予兆及び当該予兆の主要因を示す情報）を提示する。予測実行部１４が到達した葉ノードのラベルがＮＧ（開発速度の低下の予兆が有る）の場合、予測結果出力部１５は、当該葉ノードに到達するまでの過程（当てはめた説明変数）を取得し、取得した過程をユーザに提示する。すなわち、当該過程に含まれる説明変数群が、開発速度の低下の予兆の主要因を示す情報である。ユーザは、当該過程に基づいて改善策を検討する。ユーザへの提示は、表示装置１０６への表示によって行われてもよいし、他の出力方式によって行われてもよい。
【００２６】
以下、プロジェクト分析装置１０が実行する処理手順について説明する。図５は、予測モデルの構築に関する処理手順の一例を説明するためのフローチャートである。
【００２７】
ステップＳ１０１において、プロジェクトデータ抽出部１１は、過去プロジェクトに関するプロジェクトデータを、当該過去プロジェクトにおいて利用されていた複数のプロジェクト開発ツールシステムから抽出する。当該プロジェクトデータは、過去（例えば、既に終了している）開発プロジェクトに関するプロジェクトデータであるため、開発速度の低下の有無は、既知である。したがって、当該プロジェクトデータには、開発速度の低下の予兆の有無を示す情報が含まれる。又は、開発速度の低下の予兆の有無を示す情報は、外部から与えられてもよい。
【００２８】
続いて、メトリクス測定部１２は、抽出されたプロジェクトデータに基づいて、モデル構築に利用する説明変数の値及び目的変数の値を測定する（Ｓ１０２、Ｓ１０３）。すなわち、当該説明変数の値及び当該目的変数の値が取得される。説明変数には、例えば、次の（１）〜（７）のようなメトリクスが利用される。
（１）バックログ等へのアクセス頻度
（２）チケットへのコメント数
（３）チケットのコメント量
（４）チケットの状態変化（ｄｏ→ｔｏｄｏ）の有無
（５）ソースコードの追加行数
（６）コミット数
（７）テストにおいて失敗（ＮＧ）の割合
また、プロジェクトデータの抽出（Ｓ１０１）及びメトリクスの測定（Ｓ１０２）は、例えば、１日分ごとに実行される。したがって、上記の（１）〜（７）のメトリクスは、１日分の値である。例えば、（１）であれば、１日分のアクセス頻度である。（２）であれば、１日分のコメントの総数である。（３）であれば、１日分のコメントの総量である。（４）であれば、当該１日においてチケットの状態の変化が有ったか否かである。（５）であれば、１日分の追加行数である。（６）であれば、１日分のコミット数である。（７）であれば、当該１日における割合である。
【００２９】
その結果、例えば、Ｎ（Ｎ＞１）日分の説明変数及び目的変数の組（すなわち、Ｎ個の訓練データ）が生成される。なお、Ｎ個の訓練データにおいては、目的変数の値が異なる訓練データが混在しているのが望ましい。
【００３０】
続くステップＳ１０３は、ステップＳ１０１及びＳ１０２と非同期に実行されてもよい。すなわち、予測が行われるまでの任意のタイミングで実行されてもよい。
【００３１】
ステップＳ１０４において、予測モデル構築部１３は、メトリクス測定部１２が測定したＮ個の訓練データ（説明変数と目的変数）に対してＣＡＲＴアルゴリズムを適用して、予測モデルを構築する。
【００３２】
続いて、予測モデル構築部１３は、構築した予測モデルを予測に利用可能とするために、例えば、補助記憶装置１０２に記憶する（Ｓ１０５）。
【００３３】
図６は、予測に関する処理手順の一例を説明するためのフローチャートである。
【００３４】
ステップＳ２０１において、プロジェクトデータ抽出部１１は、対象プロジェクトにおいて利用されている複数のプロジェクト管理システムからプロジェクトデータ（以下、「対象プロジェクトデータ」という。）を抽出する。対象プロジェクトデータは、モデル構築時の１つの訓練データに利用されるプロジェクトデータと同じ期間長に対応するプロジェクトデータである。例えば、１つの訓練データが１日分のプロジェクトデータに対応するのであれば、ステップＳ２０１では直近の過去１日分のプロジェクトデータが抽出される。
【００３５】
なお、対象プロジェクトデータの構成は、モデル構築時におけるプロジェクトデータの構成と同様である。但し、対象プロジェクトデータには、開発速度の低下の予兆の有無を示す情報は含まれない。対象プロジェクトデータは、現在進行中のプロジェクトに関するデータであり、開発速度の低下の予兆の有無は未知だからである。
【００３６】
続いて、メトリクス測定部１２は、対象プロジェクトデータに基づいて、各説明変数の値（すなわち予測用データ）を測定する（Ｓ２０２）。すなわち、当該各説明変数の値が取得される。測定対象となる説明変数の種類は、予測モデルの構築時に測定されたもの（例えば、上記の（１）〜（７）と同じある。
【００３７】
続いて、予測実行部１４は、補助記憶装置１０２から予測モデルを読み込む（Ｓ２０３）。続いて、予測実行部１４は、ステップＳ２０２において測定された説明変数を当該予測モデルに適用して予測を実行する（Ｓ２０４）。
【００３８】
続いて、予測結果出力部１５は、予測結果（開発速度の低下の予兆が有るか否か）を出力する（Ｓ２０５）。この際、開発速度の低下の予兆が有る場合には、低下の主要因を示す情報として、ステップＳ２０４において、葉ノードに到達するまでの過程に含まれる説明変数を示す情報が出力される。
【００３９】
なお、予測時において利用される予測モデルは、対象プロジェクトとプロジェクトの特性が類似した過去プロジェクトに基づいて構築された予測モデルであるのが望ましい。そのために、例えば、予測モデルの構築時には、当該予測モデルの元となる過去プロジェクトの特定を示す情報が、例えば、図５のステップＳ１０４のタイミングでユーザによって入力され、構築された予測モデルが、当該情報に関連付けられて保存（記憶）されるようにしてもよい。予測時には、対象プロジェクトの特性を示す情報が、例えば、図６のステップＳ２０１の直前等においてユーザによって入力されてもよいし、予め所定の記憶領域に設定されていてもよい。ステップＳ２０３において、予測実行部１４は、当該特性を示す情報に最も類似する情報に関連付けられている予測モデルを読み込むようにしてもよい。なお、開発プロジェクトの特性を示す情報は、例えば、開発期間、開発対象の種別又はカテゴリ、プロジェクトの人数、プロジェクトメンバの能力等の項目によって構成されてもよい。
【００４０】
上述したように、本実施の形態によれば、開発速度が低下する予兆を検知することができ、当該予兆が検知される場合に、当該予兆の主要因を示す情報を特定することができる。したがって、プロジェクト管理者等は、斯かる情報に基づいて、開発プロジェクトの改善策を検討することができる。
【００４１】
なお、上記では、ソフトウェアの開発のリスクとして、開発速度の低下の予兆の有無を目的変数とする例を示したが、他のリスクが目的変数とされてもよい。
【００４２】
なお、本実施の形態において、プロジェクトデータは、管理データの一例である。プロジェクトデータ抽出部１１及びメトリクス測定部１２は、第１の取得部及び第２の取得部の一例である。予測モデル構築部１３は、生成部の一例である。予測実行部１４は、予測部の一例である。予測結果出力部１５は、出力部の一例である。過去プロジェクトは、第１のソフトウェア開発プロジェクトの一例である。対象プロジェクトは、第２のソフトウェア開発プロジェクトの一例である。プロジェクト分析装置１０は、コンピュータの一例である。
【００４３】
以上、本発明の実施の形態について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００４４】
１０          プロジェクト分析装置
１１          プロジェクトデータ抽出部
１２          メトリクス測定部
１３          予測モデル構築部
１４          予測実行部
１５          予測結果出力部
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１０６        表示装置
１０７        入力装置
Ｂ            バス
【図１】
2019148874.tif 000003
【図２】
2019148874.tif 000004
【図３】
2019148874.tif 000005
【図４】
2019148874.tif 000006
【図５】
2019148874.tif 000007
【図６】
2019148874.tif 000008