いくつかの実施例について、図面を参照して説明する。なお、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、また実施例の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサである。1以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
以下、実施例1について説明する。
まず、実施例1の概要について説明する。
図1は、実施例1の概要を示す図である。
実施例1に係る計算機システム1は、各プロジェクト(グループ)の開発環境(以下、単にプロジェクトという)310が動作する実行システム(PaaS)300と、実行システム300の各プロジェクト310から情報を取得し、ベストプラクティスを抽出するベストプラクティス抽出システム500と、ベストプラクティス抽出システム500により抽出されたベストプラクティスを利用者に提示するためのベストプラクティス表示画面G300(GUI)を表示する端末10とを備える。
ベストプラクティス抽出システム500は、各プロジェクト310に関する情報を蓄積した情報蓄積DB(データベース)520と、実行システム300から情報を取得して情報蓄積DB520に格納する情報取得処理部510と、情報蓄積DB520の情報を用いて、評価指標の要件に適切な開発環境の構成(例えば、ツール(ソフトウェア))を抽出する抽出処理部530とを備える。
情報蓄積DB520には、各プロジェクト310のインスタンスから取得したKPI履歴情報T500、各プロジェクトの構成変更履歴情報T600、及び各インスタンスへのアクセス履歴情報T700が格納されている。KPI履歴情報T500、構成変更履歴情報T600、及びアクセス履歴情報T700は、いずれも時系列データである。
ここで、KPI履歴情報T500に格納するKPI(基礎情報)の例としては、コミット数(ソースコードを管理するインスタンスへの利用者のソースコードのアップロード数)やチャットに対する投稿数、またはツール上に登録された課題の登録数やクローズ数等である。また、構成変更履歴情報T600に格納する情報の例としては、ツールのインスタンスの追加や削除、変更等である。また、アクセス履歴情報T700に格納する対象のアクセスの例としては、ツールのインスタンスへのHTTPやHTTPSのリクエスト等である。
端末10においてベストプラクティス表示画面G300の評価指標選択領域G310に対して利用者が評価指標を指定すると、抽出処理部530は、情報蓄積DB520に格納されたデータを用い、評価指標に対する最適な構成を既存プロジェクトから検索して抽出し、最も良い評価指標を記録した際に、このプロジェクトで実際に使用されていたと推測される1以上のツールを抽出する。そして、抽出処理部530は、抽出結果をベストプラクティス表示画面G300の構成表示選択領域G400に表示させる。
抽出処理部530は、例えば、指定された評価指標に関するKPIの時系列データG531と、このプロジェクトで使われている(使われていた)1以上のツール(ツールA、ツールB)へのアクセス履歴の時系列データG532,G533を比較する。そして、抽出処理部530は、例えば、最も良いKPIが記録されていた際に使用されていた(図1では、アクセスされていた)ツール(ツールA)を使用と判定し、アクセスされていなかったツール(ツールB)を不使用と判定する処理を行い、使用と判定されたツールの一覧を含む構成表示選択領域G400を有するベストプラクティス表示画面G300を、利用者の端末10に表示させる。
なお、各プロジェクトに環境を提供する実行システム300は、事前に事業者が利用者に対して同意を得ておくことにより、事業者が各プロジェクト310の環境の情報(例えばアクセス履歴情報やリソースの使用に関する情報)を横断的に取得することが比較的容易であることから、PaaSを前提とした構成としている。なお、実行システム300は、各プロジェクトの情報が取得できるのであれば、それ以外の形態(IaaSやSaaS等)で実現される形態であってもよい。
次に、実施例1を詳細に説明する。
図2は、実施例1に係る計算機システムの全体構成図である。
計算機システム1は、クラウドサービスを提供するクラウドシステム100と、プロジェクト310を利用する利用者の端末10とを備える。クラウドシステム(以下、クラウドという)100と、端末10とは、ネットワーク20を介して接続されている。ネットワーク20は、LANであっても、WANであってもよい。
クラウド100は、利用者が実際に利用するインスタンスを動作させる環境であるプロジェクト310を提供する実行システム300と、利用者や管理者に対してプロジェクト310を管理するためのシステムを提供する管理システム200(クラウド管理システムの一例)とを備える。
管理システム200は、物理的なハードウェアである複数のサーバ400により構成されている。複数のサーバ400は、管理システム200内の図示しないネットワークを介して接続されている。サーバ400は、プロセッサの一例としてのCPU401と、記憶デバイスの一例としてのメモリ402と、記憶デバイスの一例としての補助記憶装置403と、通信I/F404とを備える。通信I/F404は、例えば、有線LANカードや無線LANカードなどのインターフェースであり、管理システム200内の図示しない通信路、又はネットワーク20を介して他の装置(例えば、端末10又は他のサーバ400)と通信する。CPU401は、メモリ402及び/又は補助記憶装置403に格納されているプログラムに従って各種処理を実行する。メモリ402は、例えば、RAM(RANDOM ACCESS MEMORY)であり、CPU401で実行されるプログラムや、必要な情報を記憶する。補助記憶装置403は、例えば、ハードディスクやフラッシュメモリなどであり、CPU401で実行されるプログラムや、CPU401に利用されるデータを記憶する。
管理システム200は、I/Fシステム210と、ベストプラクティス抽出システム500と、構成管理システム220とを備える。I/Fシステム210と、ベストプラクティス抽出システム500と、構成管理システム220とは、複数のサーバ400の計算機資源を用いて実現されている。すなわち、複数のサーバ400のCPU401がメモリ402等のプログラムを実行することにより、I/Fシステム210と、ベストプラクティス抽出システム500と、構成管理システム220とを実現している。なお、I/Fシステム210と、ベストプラクティス抽出システム500と、構成管理システム220とのそれぞれは、複数のサーバ400によって実現されてもよく、1つのサーバ400によって実現されてもよく、サーバ仮想化技術により仮想化された仮想サーバによって実現されてもよい。
I/Fシステム210は、利用者の端末10に対して、クラウド100の利用に関する情報を提示したり、利用者からの要求を受け付けたりするためのGUIやAPI、または図示しない事業者の端末に対して、クラウド100を管理するためのGUIやAPIを提供する。
構成管理システム220は、I/Fシステム210から利用者の要求を受け、実行システム300のプロジェクト310の構成を変更する処理や、実行システム300の各種情報を取得してI/Fシステム210へ送る処理や、実行システム300の各種情報を取得して記憶する処理等を行う。
ベストプラクティス抽出システム500は、情報取得処理部510と、情報蓄積DB520と、抽出処理部530とを備える。情報取得処理部510は、構成管理システム220から各種情報を取得する。情報蓄積DB520は、例えば、メモリ402及び/又は補助記憶装置403により構成され、情報取得処理部510が取得した情報を蓄積する。具体的には、情報蓄積DB520は、KPI履歴情報T500と、使用状況情報及び設定状態情報の一例である構成変更履歴情報T600と、使用状況情報及び稼動状態情報の一例としてのアクセス履歴情報T700とを格納する。情報蓄積DB520が格納する情報の詳細については後述する。
抽出処理部530は、情報蓄積DB520に蓄積された情報に基づいて、所定の評価指標の評価に寄与している1以上のツール(ソフトウェア)を抽出する処理を行う。例えば、抽出処理部530は、プロジェクト310の中から所定の評価指標に対して評価が最も良い時に使用されていた1以上のツールを抽出する。情報取得処理部510と、抽出処理部530との具体的な構成及び処理については後述する。
なお、図2においては、ベストプラクティス抽出システム500を、クラウド100の管理システム200内部に備えた例を示しているが、ベストプラクティス抽出システム500を、管理部システム200の外部のネットワーク20に接続された図示しないサーバに構築するようにし、ネットワーク20を介して、I/Fシステム210と通信することにより、必要な情報の授受を行うようにしてもよい。
実行システム300は、利用者に対して提供される環境である1以上のプロジェクト310を備える。実行システム300は、管理システム200と同様に、物理的なハードウェアである複数のサーバ400により構成されている。なお、サーバ400の構成は、管理システム200のサーバ400と同様な構成である。実行システム300においては、プロジェクト310間は論理的に分割されており、プロジェクト310に所属していない利用者によるこのプロジェクト310へのアクセスを遮断するようなアクセス制御が行われている。
次に、本実施例に関わる各種情報について説明する。
図3は、実施例1に係るツール管理情報の構成例を示す図である。
ツール管理情報T100は、各プロジェクト310で利用可能なツールの一覧を管理する情報である。ツール管理情報T100は、I/Fシステム210、または構成管理システム220が保持する情報である。
ツール管理情報T100は、各ツールごとに、ツール名T110と、イメージID T120と、機能フラグT130とのフィールドを含むレコードを格納する。
ツール名T110には、ツールの名称(ツール名)が格納される。ツール名としては、例えば、ソースコードを管理するソフトウェア(ツール)であるGithub、Gitlab、チャット機能を提供するRocket.chat、Mattermost(登録商標)、プロジェクトの進捗などを管理するRedmine等がある。なお、本実施例の説明においては、実在するツール名称ではなく、便宜的に、ツールA、ツールB等のように表記する。
イメージID T120には、レコードに対応するツールのインスタンスを構築するための元となるイメージを識別するID(イメージID)が格納される。なお、イメージID T120に、イメージIDの代わりに、イメージが格納されたパス等の情報を格納してもよい。また、イメージID T120に、イメージIDのほかに、インスタンスを作成するために必要となる設定の情報を合わせて格納するようにしてもよい。ここで、イメージとしては、例えば、ディスクやファイルの集合や、仮想サーバのテンプレートがある。なお、このイメージは、イメージIDによって識別可能に管理されている。
機能フラグT130は、ツールの有している機能を管理するフィールドであり、例えば、複数の機能ごとの個別機能フラグT131,T132,T133・・・のフィールドを含む。個別機能フラグT131等は、それぞれが機能に対応付けられており、レコードに対応するツールがその機能を有している場合には、「1」が設定され、その機能を有していない場合には、「0」が設定される。例えば、個別機能フラグT131は、コード管理機能に対応付けられ、個別機能フラグT132は、課題管理機能に対応付けられ、個別機能フラグT133は、チャット機能に対応付けられている。
例えば、図3の2番目のレコードによると、ツールBは、イメージIDがtoolB.imgであり、コード管理機能と、課題管理機能とを有していることがわかる。
なお、図3においては、ツール管理情報T100は、ツール毎に対応するレコードを管理する例を示しているが、例えば、ツールのバージョン毎に対応するレコードを管理するようにしてもよい。
図4は、実施例1に係るKPI取得方法管理情報の構成例を示す図である。
KPI取得方法管理情報T200は、KPIの種類と、各KPIの取得方法とを管理する情報である。KPI取得方法管理情報T200は、情報取得処理部510が保持する情報である。
KPI取得方法管理情報T200は、KPI名T210と、対象ツール名T220と、取得方法T230とのフィールドを含むレコードを格納する。KPI名T210には、レコードに対応するKPIの名称(KPI名)が格納される。対象ツール名T220には、レコードに対応するKPIの取得先となるツールの名称(ツール名)が格納される。対象ツール名T220に格納されるツール名は、ツール管理情報T100のいずれかのレコードのツール名T110に記載されたツール名に対応する。取得方法T230には、レコードに対応するKPIを取得するための方法(取得方法)が格納される。取得方法T230には、例えば、KPIを取得するために呼び出すべきプログラムの名称(プログラム名)が格納される。
例えば、図4の一番上のレコードは、KPIの一例としてのコミット数は、ツールAから取得可能であり、func_toolA.shというプログラムを呼び出すことにより取得できることを示している。
なお、KPI取得方法管理情報T200を、情報蓄積DB520に格納して管理するようにしてもよく、構成管理システム220が保持するようにしてもよい。KPI取得方法管理情報T200を、構成管理システム220が保持するようにした場合には、構成管理システム220が取得方法T230に格納されている取得方法を用いてKPIの情報を取得し、取得した情報を情報取得処理部510が取得するようにすればよい。また、各ツールに、このツールにおけるKPIの情報を取得して情報取得処理部510に送信するエージェントプログラムを組み込んでおくようにしてもよい。
図5は、実施例1に係るプロジェクト管理情報の構成例を示す図である。
プロジェクト管理情報T400は、実行システム300内に存在するプロジェクト310の情報を管理する。プロジェクト管理情報T400は、抽出処理部530が保持する情報である。プロジェクト管理情報T400は、プロジェクトごとに、プロジェクト名T410と、用途T420と、開始T430と、終了T440と、共有T450とのフィールドを含むレコードを格納する。
プロジェクト名T410には、プロジェクトの名称(識別子)が格納される。用途T420には、プロジェクトの用途が格納される。プロジェクトの用途としては、事業者が事前に定義した選択肢から利用者によりプロジェクトの利用開始時に選択された用途である。具体的な用途としては、例えばWebサービスを開発する「Webサービス開発」や、分析アプリケーションを開発する「分析」等がある。また、用途T420に、Java(登録商標)、Python等の開発言語の名称やこれらを用いたフレームワークのリストを格納してもよく、開発のスタイル、例えば従来型のウォーターフォールモデルに基づく開発なのか、アジャイルに基づく開発なのかを示す情報や、開発期間や開発者のスキルレベル等を格納してもよく、利用者が自由に指定した情報を格納するようにしてもよい。
開始T430には、レコードに対応するプロジェクトの開始時刻が格納される。終了T440には、レコードに対応するプロジェクトの終了時刻が格納される。なお、使用中であるプロジェクトのレコードにおいては、終了T440には、空値(Null)が格納されている。
共有T450には、プロジェクトの情報(本実施例では、ツールの設定値等)をこのプロジェクトに属さない利用者と共有しても良いかを示すフラグが格納される。例えば、共有T450には、プロジェクトに属していない利用者と情報の共有が可である場合には、「Yes」が格納され、情報の共有が不可である場合には、「No」が格納される。
例えば、図5の1番目のレコードによると、プロジェクト名T410がProject−Aであるプロジェクトは、Webサービスを開発する用途のプロジェクト(用途T420の値)であり、利用の開始が2016年11月30日9時(開始T430の値)であり、終了が2016年12月31日17時(終了T440の値)であり、プロジェクトの内容をプロジェクトに属さない他の利用者に開示してよい(共有T450の値)ことがわかる。
なお、プロジェクト管理情報T400を、情報蓄積DB520に格納して管理するようにしてもよい。
図6は、実施例1に係る構成変更履歴情報の構成例を示す図である。
構成変更履歴情報T600は、プロジェクト毎のツールの構成の変更履歴を管理する情報である。構成変更履歴情報T600は、情報蓄積DB520が保持する情報である。構成変更履歴情報T600は、プロジェクト毎に1以上のレコードを管理する。構成変更履歴情報T600のレコードは、プロジェクト名T610と、インスタンスID T620と、ツール名T630と、種類T640と、時刻T650と、設定値T660とのフィールドを含む。
プロジェクト名T610には、プロジェクト名が格納される。インスタンスID T620には、レコードに対応するプロジェクトで使用しているツールのインスタンスを実行システム300内で一意に識別するための識別子(インスタンスID)が格納される。ツール名T630には、レコードに対応するプロジェクトで使用しているツールの名称が格納される。種類T640には、レコードに対応するプロジェクトにおけるツールのインスタンスに関する変更の種類が格納される。ここで、インスタンスに関する変更の種類としては、例えば、ツールのインスタンスの利用を開始したことを示す利用開始(Start)、ツールのインスタンスを変更したことを示す変更(Change)、及びツールのインスタンスの利用を終了したことを示す終了(Stop)がある。
時刻T650には、変更が発生した時刻が格納される。設定値T660には、変更時に使用された設定値に関する情報が格納される。設定値T660には、例えば、設定値を所定の書式(例えばymlと呼ばれる書式)で記述した設定ファイルのパスが格納される。設定ファイルは、例えば、変数名(キー値)とその値との一覧が格納されたものである。なお、設定値T660に格納する設定に関する情報としては、ファイル以外の形式、例えば設定値の各フィールドに直接変数名と値との一覧が格納されている形式であってもよい。
構成変更履歴情報T600によると、例えば、プロジェクト名T610がProject−Aであるプロジェクトでは、ツールA(インスタンスIDがツールA−A)と、ツールC(インスタンスIDがツールC−A)とを2016年12月1日9時に利用開始し、ツールC(インスタンスIDがツールC−A)を2016年12月15日17時に利用終了していることがわかる。また、それぞれのツールで使われた設定は、設定値T660に格納された、toolA−a1.yml、toolC−a1.ymlを参照することにより把握することができる。また、構成変更履歴情報T600によると、Project−Aであるプロジェクトでは、2016年12月15日9時に、ツールD(インスタンスIDがツールD−A)を利用開始し、2016年12月15日12時に、設定の変更を行ったことがわかる。
図7は、実施例1に係るKPI履歴情報の構成例を示す図である。
KPI履歴情報T500は、各プロジェクトにおける1以上のKPIの値を時系列で管理する情報である。KPI履歴情報T500は、情報蓄積DB520が保持する情報である。KPI履歴情報T500のレコードは、プロジェクト名T510と、KPI名T520と、インスタンスID T530と、時刻T540と、値T550とのフィールドを含む。
プロジェクト名T510には、プロジェクト名が格納される。KPI名T520には、KPI名が格納される。インスタンスID T530には、レコードに対応するプロジェクトで使用しているツールのインスタンスIDが格納される。時刻T540には、KPIの値が取得された時刻が格納される。値T550には、取得されたKPIの値が格納される。
KPI履歴情報T500によると、例えば、プロジェクト名T510がProject−Aであるプロジェクトにおける、インスタンスIDがツールA−Aのツールから取得されたKPI(コミット数)や、インスタンスIDがツールC−Aのツールから取得されたKPI(チャット投稿数)についての、時系列のデータ(時刻T540の時刻と値T550の値)がわかる。例えば、プロジェクト名T510がProject−Aであるプロジェクトにおける、インスタンスIDがツールA−Aのツールにおけるコミット数が、2016年12月1日9時からの1時間(時刻T540の値)で10回(値T550の値)あったことがわかる。なお、図7のKPI履歴情報T500の例では、KPIを取得する間隔(サンプリング間隔)を1時間としているが、サンプリング間隔は1時間でなくてもよい。なお、構成変更履歴情報T600を参照することにより、KPI履歴情報T500のインスタンスID T530のインスタンスIDに対応するツールのツール名を把握することができる。
図8は、実施例1に係るアクセス履歴情報の構成例を示す図である。
アクセス履歴情報T700は、プロジェクト毎に、各ツールのインスタンスへのアクセスの履歴に関する情報を管理する情報であり、情報蓄積DB520が保持する情報である。アクセス履歴情報T700においては、プロジェクトの一つのインスタンスに対するアクセスごとに一つのレコードが追加される。ここで、アクセスとは、或るツールのインスタンスに対して、利用者または別のツールから情報の取得または設定要求が、予め定められた通信プロトコル(HTTPやHTTPS)により行われることを示す。したがって、アクセスがあった場合には、その時点においてツールのインスタンスが使用されていたことがわかる。アクセス履歴情報T700に格納される情報は、実行システム300に備えられた図示しないルータから取得するようにしてもよく、また、各ツールのインスタンスにエージェントを埋め込んでおき、そのエージェントから取得するようにしてもよい。
アクセス履歴情報T700のレコードは、プロジェクト名T710と、アクセス先インスタンスID T720と、時刻T730と、アクセス元T740とのフィールドを含む。プロジェクト名T710には、プロジェクト名が格納される。アクセス先インスタンスID T720には、アクセス先のツールのインスタンスのインスタンスIDが格納される。アクセス先インスタンスID T720に格納されるインスタンスIDは、構成変更履歴情報T600のインスタンスID T620に格納されているインスタンスIDのいずれかである。時刻T730には、アクセスされた時刻が格納される。アクセス元T740には、アクセスを行ったアクセス元を識別する情報(例えば、利用者のID、インスタンスID等)が格納される。本実施形態では、アクセス元T740には、例えば、利用者からのアクセスの場合には、「USER:」タグに対して、利用者IDを付加した情報が格納され、ツールのインスタンスからのアクセスの場合には「TOOL:」タグに対して、インスタンスIDを付加した情報が格納される。
例えば、1行目のレコードによると、プロジェクト名T710がProject−Aであるプロジェクトにおいて、アクセス先インスタンスID T720がツールA−Aであるインスタンスに対して、2016年12月1日9時5分に、ユーザA1からアクセスがあることがわかる。また、3行目のレコードによると、プロジェクト名T710がProject−Aであるプロジェクトにおいて、アクセス先インスタンスID T720がツールA−Aであるインスタンスに対して、2016年12月1日10時に別のインスタンス(インスタンスIDがツールC−A)からアクセスがあったことがわかる。なお、アクセス履歴情報T700において、各アクセスにおける、通信プロトコルや通信の内容に関する情報をさらに保持するようにしてもよい。
図9は、実施例1に係るKPI変換方法管理情報の構成例を示す図である。
KPI変換方法管理情報T300は、評価指標に対応するKPIと、評価指標を算出するための処理と、使用していたツールのインスタンスを抽出する処理とを管理する情報である。KPI変化方法管理情報T300は、抽出処理部530を構成するプログラム中に保持されている情報である。なお、KPI変化方法管理情報T300を情報蓄積DB520が保持するようにしてもよい。
KPI変換方法管理情報T300は、評価指標の種類ごとに、レコードを格納する。 KPI変換方法管理情報T300のレコードは、評価指標T310と、参照KPI T320と、算出処理T330と、関係抽出処理T340とのフィールドを含む。
評価指標T310には、システムを評価する要件とする評価指標が格納される。参照KPI T320には、レコードに対応する評価指標を算出するために参照するKPIの識別子が格納される。算出処理T330には、レコードに対応する評価指標の評価値を算出するための処理を示す情報(例えば、評価値を算出する処理のプログラム名)が格納される。算出処理T330に格納されたプログラム名のプログラムは、抽出処理部530が実行する一部の処理を実現するプログラムである。関係抽出処理T340には、評価値に対応する時点において実際に使用していたツールを抽出する処理を示す情報(例えば、抽出する処理のプログラム名)が格納される。関係抽出処理T340に格納されたプログラム名のプログラムは、抽出処理部530が実行する一部の処理を実現するプログラムである。
評価指標T310に格納される評価指標の1つの種類としては、或る期間におけるKPIの合計値がある。このような評価指標としては、或るプロジェクトの1日のコミット数の合計値である日次コミット数や、或るプロジェクトの1日のチャットの投稿数の合計である日次チャット投稿数がある。
KPI変換方法管理情報T300の1行目のレコードの算出処理T330に格納されているday_commit.shは、プロジェクト名と、コミット数との入力を受けて、KPI履歴情報T500のプロジェクト名及びコミット数に対応するレコードを参照して、このプロジェクトの開始から終了までの日次コミット数を計算し、最も良い値(ここでは日次コミット数が最大の値)を評価値として出力するプログラムの名前である。
また、関係抽出処理T340に格納されているeval_day_commit.shは、算出処理T330に格納されたプログラムにより算出されたプロジェクトの評価に寄与した(すなわち使用されていたと推定される)ツールを抽出するプログラムの名前である。このeval_day_commit.shで示されるプログラムは、プロジェクト名と、KPI履歴情報T500と、構成変更履歴情報T600と、アクセス履歴情報T700とを入力として、ツールの使用・不使用を判定し、使用と判定したツールの一覧を出力する処理を実現する。この処理により、プロジェクトにおいて、実際に使用されていたツールを適切に抽出することができる。これにより、使用可能となっているが、使用されていなかったツールが抽出されてしまうことを防止することができる。
eval_day_commit.shで示されるプログラムにより実行する処理の一例としては、評価値(ここでは、最大の日次コミット数)を記録したタイミングにおいて、各ツールにアクセスがあったか否か(すなわち、アクセス履歴情報T700にツールのアクセスを示すレコードが格納されているか否か)に基づいて、ツールを使用しているか否かを判定する処理がある。
また、eval_day_commit.shで示されるプログラムにより実行する処理の別の例としては、以下の式(1)で表される評価関数f(x,t)が所定の閾値以上であるツールや、評価関数が上位にあるツールを使用していると判定する処理がある。
ここで、t0は、評価値を記録したタイミングであり、A(x)(t)は、インスタンスIDがxであるインスタンスの時刻tにおけるアクセス数である。
また、評価指標T310の別の種類としては、プロジェクト開始から終了までの期間の合計値や平均値がある。この種の評価指標としては、合計コミット数、合計チャット投稿数、平均コミット数、平均チャット投稿数等がある。合計コミット数とは、プロジェクトの開始から終了までのコミット数の合計値であり、平均コミット数とは、プロジェクトの合計コミット数をプロジェクトの開始から終了までの期間で割ったものである。
KPI変換方法管理情報T300の2行目のレコードは、評価指標を平均コミット数とする場合のレコードである。このレコードの算出処理T330に格納されているave_commit.shで示されるプログラムは、プロジェクト名とKPI履歴情報T500とを入力とし、このプロジェクトの開始から終了までのコミット数の平均値を評価値として出力する処理を実現する。
このレコードの関係抽出処理T340のeval_ave_commit.shで示されるプログラムは、評価に寄与したツールを抽出する処理を実現するプログラムであり、プロジェクト名と、KPI履歴情報T500と、構成変更履歴情報T600と、アクセス履歴情報T700とを入力として、KPIの変化と、ツール(インスタンス)のアクセス履歴との間に正の相関があるツールを使用しているものと判定し、使用していると判定したインスタンスのツールの一覧を出力する処理を行う。
また、eval_ave_commit.shで示されるプログラムにより実行される別の処理としては、アクセス数の平均が一定値以上であるインスタンスや、アクセス数の合計値が一定以上であるインスタンス、または定期的にアクセスがあるインスタンスのツールを使用しているツールと判定して、使用していると判定したツールの一覧を出力する処理がある。
なお、このような種類の評価指標の場合には、終了していないプロジェクトを対象から除外してもよいし、処理を実施する時刻までの値を用いて処理を行うようにしてもよい。。
次に、計算機システム1における処理動作について説明する。
まず、情報取得処理部510による情報取得処理について説明する。
図10は、実施例1に係る情報取得処理のフローチャートである。
情報取得処理は、例えば、一定間隔で実行される。なお、情報取得処理を、構成管理システム220からの変更やイベント発生の通知を契機として実行するようにしてもよい。
情報取得処理部510は、構成管理システム220から必要となる各種情報(プロジェクト管理情報T400の各フィールドに格納する情報、KPI履歴情報T500の各フィールドに格納する情報、構成変更履歴情報T600の各フィールドに格納する情報、アクセス履歴情報T700の各フィールドに格納する情報等)を取得する(S100)。ここで、KPIに関する情報を取得する場合には、KPI取得方法管理情報T200の取得方法T230に格納されたプログラムを呼び出して実行することで、情報を取得することができる。なお、構成管理システム220から情報を取得せずに、例えば、情報取得処理部510がプロジェクト310のインスタンスに直接アクセスすることで必要な情報を取得するようにしてもよく、情報取得処理部510が、インスタンスに事前に組み込まれたエージェントプログラムから必要な情報を取得するようにしてもよい。
次いで、情報取得処理部510は、取得した情報に基づいて、情報蓄積DB520にKPI履歴情報T500、構成変更履歴情報T600、アクセス履歴情報T700を格納する(S110)。なお、ステップS100において、過去に取得した情報との差分の情報のみを取得するようにしている場合には、情報取得処理部510は、取得した差分の情報に基づいて、情報蓄積DB520のKPI履歴情報T500、構成変更履歴情報T600、アクセス履歴情報T700に、それぞれ差分の情報に対応するレコードを追加する。
次に、抽出処理部530による抽出処理について説明する。
図11は、実施例1に係る抽出処理のフローチャートである。
抽出処理は、例えば、一定間隔で実行される。
まず、抽出処理部530は、プロジェクト管理情報T400を参照し、用途T420の用途ごとにプロジェクトを分類する(S200)。なお、プロジェクトを用途ごとに分類する必要がない場合には、ステップS200を省略してもよい。
次いで、抽出処理部530は、ステップS200で分類した各用途のそれぞれの用途を処理対象としてループAの処理(ループB、S210〜S230)を行う。以下、抽出処理の説明において、処理対象の用途を対象用途という。
ループAの処理においては、抽出処理部530は、対象用途のプロジェクト群に対して、KPI変換方法管理情報T300の評価指標T310に格納された各評価指標のそれぞれの評価指標を処理対象としてループBの処理(S210〜S230)を行う。以下、抽出処理の説明において、処理対象の評価指標を対象評価指標という。
ループBの処理においては、抽出処理部530は、KPI履歴情報T500の各レコードを入力として、KPI変換方法管理情報T300の対象評価指標に対応するレコードの算出処理T330に格納されているプログラム名のプログラムの処理を行うことで、各プロジェクトの評価値(例えば、日次コミット数の最大値、平均コミット数等)を算出する(S210)。
次いで、抽出処理部530は、複数のプロジェクトの中から、評価指標の評価が最も高いプロジェクト(例えば、値が高いほど評価が高い評価値であれば、最も高い評価値のプロジェクト:高効率グループ)を選択する(S220)。
次いで、抽出処理部530は、選択したプロジェクトと、KPI履歴情報T500と、構成変更履歴情報T600と、アクセス履歴情報T700とを入力とし、対象評価指標に対応するレコードの関係抽出処理T340に格納されているプログラム名のプログラム処理を実行することにより、このプロジェクトにおいて評価に寄与したツール(値が高いほど評価が高いことを示す評価値であれば、評価値の向上に影響が強いツール)の一覧を抽出し、抽出結果をメモリ402、補助記憶装置403等に記憶する(S230)。ここで、抽出結果には、抽出したツールとともに、用途、評価指標、評価指標における評価値、そのツールの設定値のパス名等を含めてもよい。
そして、抽出処理部530は、ループBの処理を全ての評価指標を処理対象として実行し、全ての評価指標を処理対象として処理を終了した後に、ループBを抜ける。次いで、抽出処理部530は、未処理の用途のプロジェクトを処理対象として、ループAの処理を実行し、全ての用途のプロジェクトを処理対象として処理を終了した後に、ループAを抜けて抽出処理を終了する。
なお、上記した抽出処理を、利用者からの処理要求を受けた場合、すなわち、端末10からの処理要求を受け付けた場合に実行するようにしてもよい。この場合において、処理要求に要求者からの評価指標の指定がある場合には、ループBにおいて、指定された評価指標のみを処理の対象とするようにしてもよい。また、利用者からの処理要求を受け付けて処理を行った場合には、ループAの処理を終えた後に、後述する図13に示すベストプラクティス表示画面G300の構成表示選択領域G400に、抽出したツールの一覧を表示させる処理を行うようにしてもよい。
また、上記した抽出処理を、或るタイミングで1回実行し、それ以降は、処理結果に影響を与える可能性がある状況が発生した場合(例えば、プロジェクトの構成変更が発生した場合や、算出処理T330のプログラムによって算出される評価値が最も良いプロジェクトが変更される可能性がある場合等)において、影響を受ける部分だけの処理を実行するようにしてもよい。
また、上記した例では、ステップS220では、評価が最も良い一つのプロジェクトを対象として、使用しているツールの一覧を取得するようにしていたが、これに限られず、例えば、評価が上位の複数のプロジェクトのそれぞれを対象として、使用しているツールの一覧を取得するようにしてもよい。また、ツール(インスタンス)の評価を、例えば、評価関数f(x,t)に示すように数値で算出できる場合には、ツール毎に算出された数値を正規化した値を対応付けた一覧を取得するようにしてもよい。
次に、計算機システム1において使用する画面について説明する。
図12は、実施例1に係る環境構築画面の一例を示す図である。
環境構築画面G100は、実行システム300にプロジェクトの開発環境を構築する際に利用者が用いるGUIである。環境構築画面G100は、例えば、I/Fシステム210により、利用者の端末10に対して提供される画面である。
環境構築画面G100は、使用可能なツールの一覧を表示するとともに、使用するツールの選択を受け付けるためのテーブルを表示するテーブル選択領域G200と、プロジェクトの用途を選択するための用途選択領域G110と、構築したプロジェクトの開発環境の情報を他の利用者と共有することに同意するか否かを入力するための同意用チェックボックスG120と、現在の入力に対応する開発環境の構築の申し込みを指示するためのApplyボタンG130と、現在の入力に対応する開発環境の構築の申し込みをキャンセルするためのキャンセルボタンG140と、を有する。
テーブル選択領域G200には、選択可能なツール名の一覧が表示されるツール名領域G220と、ツール名のツールを使用するか否かを指定するためのチェックボックスG210と、各ツールの分類が表示される分類表示領域G230とが表示される。なお、ツール名領域G220には、ツール管理情報T100のツール名T110に格納されているツール名が表示される。
この環境構築画面G100において、用途選択領域G110において選択された用途が、プロジェクト管理情報T400の用途T420に格納される用途に反映され、同意チェックボックスG120に対するチェック結果が、共有T450の値に反映されることとなる。
なお、環境構築画面G100において、用途入力領域G110や、同意用チェックボックスG120を表示しないようにしてもよい。このようにした場合には、用途はデフォルト値とし、共有選択はデフォルト値(一律で共有に同意、又は共有に不同意)としてもよい。
図13は、実施例1に係るベストプラクティス表示画面の一例を示す図である。
ベストプラクティス表示画面G300は、利用者からの要求を受け付け、プロジェクトの開発環境に最も適した構成(ベストプラクティス)を提供するためのGUIである。ベストプラクティス表示画面G300は、例えば、I/Fシステム210を介して利用者の端末10に対して提供される画面である。
ベストプラクティス表示画面G300は、評価指標の選択を受け付ける評価指標選択領域G310と、評価指標選択領域G310で選択された評価指標において最良の構成をテーブル形式で表示するとともに、構築する構成を選択するための構成表示選択領域G400と、プロジェクト310のシステムの構築の指示を受け付ける構築ボタンG320と、ベストプラクティス表示画面G300を閉じる指示を受け付けるCloseボタンG330と、を有する。
評価指標選択領域G310は、KPI変換方法管理情報T300の評価指標T310に格納された各評価指標がコンボボックスのような形態で選択可能に表示される。評価指標選択領域G310において評価指標が選択されると、選択された評価指標の情報が、I/Fシステム210を介してベストプラクティス抽出システム500の抽出処理部530に送信される。
構成表示選択領域G400には、評価指標選択領域G310で選択された評価指標の評価が最も高くなる開発環境の構成の候補が用途ごとに表示される。なお、評価指標選択領域G310で評価指標が選択されていない場合には、何も表示されていない状態となっている。
構成表示選択領域G400には、用途表示領域G420と、評価値表示領域G430と、ツール表示領域G440と、設定値表示領域G450と、ラジオボタンG410とが表示される。
用途表示領域G420には、用途が表示される。ツール表示領域G440には、評価の高いツール名が表示される。評価値表示領域G430には、ツール表示領域G440に表示されたツールについての評価値が表示される。設定値表示領域G450には、他の利用者によるツールに対する設定値が格納された設定ファイルのパス名が表示される。なお、他の利用者がツールに対する設定値の共有に同意していない場合には、設定値表示領域G450には、パス名が表示されない。設定値表示領域G450のパス名が、利用者により選択された場合に設定内容を表示させるようにしてもよい。
ラジオボタンG410は、構成表示選択領域G400の中から構築する構成を選択するためのボタンである。
ラジオボタンG410により構築する構成が選択されている場合において、構築ボタンG320が押下されると、選択された構成内容(用途や、選択したツール名等)が、I/Fシステム210を介して実行システム300に送信される。実行システム300では、送信された構成内容に基づいて、新しいプロジェクト310の環境を構築する。この際に、構成内容に含まれるツールに対応する他の利用者の設定ファイルについて、他の利用者が共有を同意している場合には、実行システム300は、他の利用者の設定ファイルを複製して、プロジェクト310のツールを設定する。
ここで、評価指標選択領域G310において評価指標が選択され、選択された評価指標の情報が、I/Fシステム210を介してベストプラクティス抽出システム500の抽出処理部530に送信されてから、構成表示選択領域G400に、評価指標選択領域G310で選択された評価指標の評価が最も高くなる開発環境の構成の候補が用途ごとに表示されるまでの処理について説明する。
抽出処理部530は、選択された評価指標の情報を受信すると、メモリ402や補助記憶装置403に格納された抽出処理の処理結果の中から、受信した評価指標に対応するツールの情報を選択し、選択したツールに対応する、用途、評価値及び設定値を特定して、特定した用途を用途表示領域G420に表示させ、ツール名をツール表示領域G440に表示させ、設定値を設定値表示領域G450に表示させ、評価値を評価値表示領域G430に表示させるように、I/Fシステム210に指示を送信する。この結果、I/Fシステム210は、端末10に表示させるベストプラクティス表示画面G300における構成表示選択領域G400の用途表示領域G420、ツール表示領域G440、設定値表示領域G450、及び評価値表示領域G430に指示に従った内容を表示させる。
なお、図13に示すベストプラクティス表示画面G300では、用途ごとに1つのプロジェクトの構成を表示するようにしているが、これに限られず、1つの用途に対して、評価が上位の複数の構成を表示するようにしてもよい。また、ベストプラクティス表示画面G300では、使用していると判定されたツールのみを表示するようにしているが、関係抽出処理部530が、評価を数値で算出するようにしている場合には、このプロジェクトで使用していた全てのツールについて、評価値を正規化した値と対応付けて表示するようにしてもよい。