(57)【要約】【課題】ライブラリの組合せの相性の判断の精度を上げる。【解決手段】評価装置１は、複数のライブラリを用いたソフトウェアのテストの品質を取得する。評価装置１は、取得したテストの品質のレベルに基づいて、ソフトウェアの実行モジュールを生成する際に行われるビルドが失敗したときに、当該ビルドで用いられたライブラリの組合せの相性が悪いと判断する指標を決定する。評価装置１は、指標を用いて、前記ライブラリの組合せの相性を評価する。【選択図】図１
2020077264.tif 000002
【特許請求の範囲】
【請求項１】
複数のライブラリを用いたソフトウェアのテストの品質を取得し、
該取得したテストの品質のレベルに基づいて、前記ソフトウェアの実行モジュールを生成する際に行われるビルドが失敗したときに、当該ビルドで用いられたライブラリの組合せの相性が悪いと判断する指標を決定し、
前記指標を用いて、前記ライブラリの組合せの相性を評価する
処理をコンピュータに実行させることを特徴とする評価プログラム。
【請求項２】
該決定する処理は、前記テストの品質のレベルが高い程、前記指標が小さくなるように前記指標を決定する
ことを特徴とする請求項１に記載の評価プログラム。
【請求項３】
前記取得する処理は、前記ソフトウェアおよび前記ソフトウェアに用いられる複数のライブラリのそれぞれのテストの品質を取得し、
前記決定する処理は、取得したそれぞれのテストの品質からそれぞれの指標を決定するとともに、決定したそれぞれの指標を用いて前記ソフトウェアの指標を決定する
ことを特徴とする請求項１または請求項２に記載の評価プログラム。
【請求項４】
前記評価する処理は、同一の複数のライブラリを用いた複数のソフトウェアの前記指標を用いて、前記ライブラリの組合せの相性を評価する
ことを特徴とする請求項１から請求項３のいずれか１つに記載の評価プログラム。
【請求項５】
複数のライブラリを用いたソフトウェアのテストの品質を取得し、
該取得したテストの品質のレベルに基づいて、前記ソフトウェアの実行モジュールを生成する際に行われるビルドが失敗したときに、当該ビルドで用いられたライブラリの組合せの相性が悪いと判断する指標を決定し、
前記指標を用いて、前記ライブラリの組合せの相性を評価する
処理をコンピュータが実行することを特徴とする評価方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、評価プログラムおよび評価方法に関する。
【背景技術】
【０００２】
部品組立型のソフトウェアが開発されている。かかるソフトウェアに用いられる部品には、部品の開発コストの削減や、ソフトウェアの開発の高速化のため、既存のライブラリが採用されることが多い。
【０００３】
近年では、オープンソースソフトウェア（ＯＳＳ）を積極的に利用したソフトウェアが開発されている。多くのライブラリは、ＯＳＳから入手可能である。ところが、ＯＳＳの品質は、プロジェクトによって様々であるので、ＯＳＳのライブラリを利用するソフトウェアの品質は、様々である。ソフトウェアの品質を上げるための高品質のＯＳＳの採用に向けて、ＯＳＳの品質を事前に評価するサービスがある。例えば、ＧｉｔＨｕｂ（登録商標）が挙げられる。ＧｉｔＨｕｂでは、継続的にビルドを実行するＣＩ（Continuous  Integragion）のビルド結果の提示をサポートする。すなわち、ＧｉｔＨｕｂでは、ソフトウェアに用いられる部品として利用したいＯＳＳが、どれだけ安定してビルドされているかについての提示をサポートする。
【０００４】
ところが、実際のソフトウェアの開発では、複数のライブラリを利用する場合がほとんどである。品質の評価が高いＯＳＳであっても、複数のＯＳＳを組合せて利用する場合に初めて問題が発生する場合もある。
【０００５】
ＯＳＳを含むコンポーネントの組合せの相性を評価する技術が開示されている（例えば、特許文献１参照）。コンポーネントは、ライブラリの一例である。かかる技術では、情報処理装置は、要求元から受信した推薦要求で指定された１以上のコンポーネントの条件に合う組合せの全てを記憶装置から取得し、プログラム実行管理情報を基に、各組合せに属するコンポーネントのバージョンの組合せごとに実行結果がＯＫの割合を動作可能率として算出する。そして、情報処理装置は、条件に合う組合せに属するコンポーネントのバージョンの組合せおよび動作可能率を含む推薦データを要求元に送信する。なお、動作可能率は、ビルドの成功率に対応する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１８−０１０５８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、ライブラリの組合せの相性を評価する技術では、ライブラリの組合せの相性の判断の精度を上げることができないという問題がある。例えば、コンポーネント（ライブラリ）の組合せの相性を評価する技術では、情報処理装置は、単にライブラリの組合せと、その組合せを利用した場合のビルドの成否（成功／失敗）とから、ライブラリの組合せの相性を判断する。ところが、ビルドが失敗する理由は、ライブラリの組合せの相性に起因するだけではなく、ライブラリを利用するソフトウェアに起因する場合もある。したがって、コンポーネント（ライブラリ）の組合せの相性を評価する技術では、ライブラリの組合せの相性の判断の精度を上げることが難しい。
【０００８】
本発明は、１つの側面では、ライブラリの組合せの相性の判断の精度を上げることを目的とする。
【課題を解決するための手段】
【０００９】
本願の開示する評価プログラムは、複数のライブラリを用いたソフトウェアのテストの品質を取得し、該取得したテストの品質のレベルに基づいて、実行モジュールを生成する際に行われるビルドが失敗したときに、当該ビルドで用いられたライブラリの組合せの相性が悪いと判断する指標を決定し、前記指標を用いて、前記ライブラリの組合せの相性を評価する、処理をコンピュータに実行させる。
【発明の効果】
【００１０】
１実施態様によれば、ライブラリの組合せの相性の判断の精度を上げることができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例に係る評価装置の構成を示す機能ブロック図である。
【図２Ａ】図２Ａは、実施例に係る評価の概要を説明する図（１）である。
【図２Ｂ】図２Ｂは、実施例に係る評価の概要を説明する図（２）である。
【図３】図３は、ＣＩ−ＵＲＬ辞書の一例を示す図である。
【図４】図４は、ＣＩ記録記憶部の一例を示す図である。
【図５】図５は、ＶＣＳ−ＵＲＬ辞書の一例を示す図である。
【図６】図６は、ＶＣＳ記録記憶部の一例を示す図である。
【図７】図７は、ビルド記録記憶部の一例を示す図である。
【図８】図８は、プロジェクトファイル群の一例を示す図である。
【図９】図９は、テスト品質関連値記憶部の一例を示す図である。
【図１０】図１０は、重み付きビルド記憶部の一例を示す図である。
【図１１】図１１は、実施例に係る相性値算出の一例を示す図である。
【図１２】図１２は、実施例に係る評価処理のフローチャートの一例を示す図である。
【図１３】図１３は、評価プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示する評価プログラムおよび評価方法の実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
【実施例】
【００１３】
［評価装置の構成］
図１は、実施例に係る評価装置の構成を示す機能ブロック図である。図１に示すように、評価装置１は、複数のライブラリを用いたソフトウェアのテストの品質のレベルに基づいて、ソフトウェアのビルドが失敗したときに、当該ビルドで用いられた複数のライブラリの組合せの相性が悪いと判断する指標（重み）を決定する。そして、評価装置１は、決定された指標（重み）を用いて、ライブラリの組合せの相性を評価する。ここでいうビルドとは、ソフトウェアを開発する際に行われ、コンパイル、リンク、テストを含むプロセスのことをいう。テストには、例えば、カバレッジ（網羅率）の分析が挙げられる。なお、ビルドとは、テストを含むと説明したが、テストを含まない場合であっても良い。
【００１４】
ここで、実施例に係る評価装置１が実施するライブラリの組合せの相性評価の概要を、図２Ａおよび図２Ｂを参照して説明する。図２Ａおよび図２Ｂは、実施例に係る評価の概要を説明する図である。
【００１５】
実施例では、ビルドを継続的に実行する継続的インテグレーション（ＣＩ：Continuous  Integragion）を実施する場合を説明する。ＣＩとは、ソフトウェアの開発の際に、開発者がソフトウェアやソフトウェアで用いられるライブラリのソースコードをリポジトリに対してコミットし、共有しているリポジトリにマージされることで、ビルドを自動的に実行する手法のことをいう。コミットを起点に、自動的にビルドが実行される。
【００１６】
このようなＣＩを適用して、図２Ａ左では、ライブラリα，βの組合せの相性は、ビルドの成功率から評価されている。ライブラリα，βを用いたソフトウェアそれぞれのビルドの成否（成功／失敗）が表わされている。
【００１７】
ここでは、ライブラリα，βを用いたソフトウェアのビルドの成功率は、成功が３つ、失敗が１つであるので、０．７５（＝３／４）と算出される。すなわち、図２Ａ左では、単にライブラリの組合せと、この組合せを利用した場合のビルドの成否から、ライブラリの組合せの相性を評価する。ところが、ビルドが失敗する理由は、ライブラリの組合せの相性に起因するだけではなく（図２Ｂのａ１部分）、ライブラリを利用するソフトウェアに起因する場合（図２Ｂのａ２部分）もある。したがって、ビルドの成功率からライブラリの組合せの相性を評価する技術では、ライブラリの組合せの相性（図２Ｂのａ１部分）の判断の精度を上げることが難しい。
【００１８】
図２Ａ右では、ライブラリα，βを用いたソフトウェアのビルドの成否に対応付けて重みが設定されている。かかる重みは、ライブラリの組合せの相性を評価する際に用いられ、ソフトウェアそのものの品質に応じて設定される。ソフトウェアそのものの品質が悪いとわかっていれば、そのソフトウェアの重みは、所定の値より下げた値に設定される。例えば、ソフトウェアの品質をテストの品質で表わした場合に、テストの品質が厳しいとき、ソフトウェアのビルドが失敗した場合には、ソフトウェアの品質が悪いと推定される。したがって、かかる場合には、ライブラリの組合せに問題があるわけではなく、ソフトウェアに問題があると考えられるから、重みを下げた値が重みとして設定されるようにする。言い換えれば、ソフトウェアそのものの品質が良いとわかっていれば、そのソフトウェアの重みは、所定の値より上げた値に設定される。例えば、カバレッジ（網羅率）が緩いとき、ソフトウェアのビルドが失敗した場合には、ソフトウェアの品質ではなく、ライブラリの組合せが悪いと推定される。したがって、かかる場合には、ソフトウェアに問題があるわけではなく、ライブラリの組合せに問題があると考えられるから、重みを上げた値が重みとして設定されるようにする。ここでいうテストの一例として、カバレッジ（網羅率）の分析が挙げられる。
【００１９】
そして、評価装置１は、ビルドされたソフトウェアごとに、ビルドの成否と、設定された重みと用いて、ライブラリの組合せの相性を評価する。ここでは、ソフトウェアＡがテストの品質が高いので、重みを０．２とする。ソフトウェアＢがテストの品質が低いので、重みを０．８とする。評価値である組合せの相性値は、重み付き平均で計算される。この結果、組合せの相性値は、０．９と算出される。これにより、評価装置１は、ライブラリα，βの組合せの相性（図２Ｂのａ１部分）の判断の精度を上げることが可能となる。
【００２０】
図１に戻って、評価装置１は、ＣＩ記録収集部１１と、ＶＣＳ（Version  Control  System）記録収集部１２と、ビルド記録構築部１３と、テスト品質関連値算出部１４と、重み算出部１５と、相性値算出部１６とを有する。加えて、評価装置１は、ＣＩ−ＵＲＬ（Uniform  Resource  Locator）辞書２１と、ＣＩ記録記憶部２２と、ＶＣＳ−ＵＲＬ辞書２３と、ＶＣＳ記録記憶部２４と、ビルド記録記憶部２５と、プロジェクトファイル群２６と、テスト品質関連値記憶部２７と、重み付きビルド記憶部２８とを有する。
【００２１】
ＣＩ−ＵＲＬ辞書２１は、ＣＩのＵＲＬを記憶する辞書である。
【００２２】
ＣＩ記録記憶部２２は、ＣＩ記録を記憶する。
【００２３】
ＶＣＳ−ＵＲＬ辞書２３は、ライブラリ等のバージョンを管理するＶＣＳのＵＲＬを記憶する辞書である。ＶＣＳは、リポジトリを管理する。
【００２４】
ＶＣＳ記録記憶部２４は、ＶＣＳ記録を記憶する。
【００２５】
ビルド記録記憶部２５は、ビルド記録を記憶する。すなわち、ビルド記録記憶部２５は、ビルド単位で、ＣＩ記録およびＶＣＳ記録を対応付けた情報を記憶する。
【００２６】
プロジェクトファイル群２６は、ビルド単位で、ビルドされたファイル群である。
【００２７】
テスト品質関連値記憶部２７は、ビルド単位で、テストの品質に関連する値（以降、「テスト品質関連値」という）を記憶する。テスト品質関連値は、ソフトウェアに対してテストを実行した際のテストの品質値に関連する値である。一例として、テストがカバレッジ（網羅率）の分析である場合には、テスト品質関連値Ｔｘは、以下の式（１）で表わされる。なお、Ｃｏｖ（Ｘ）は、命令網羅率を示す。網羅率は、テストの品質について、高い程「１」に近づき、低い程「０」に近づく。テストは、命令網羅率に限定されず、他の技術で代用しても構わない。他の技術の一例として、ＪａＣｏＣｏが挙げられる。
Ｔｘ＝１−Ｃｏｖ（Ｘ）・・・式（１）
テスト品質関連値記憶部２７に記憶されるテスト品質関連値は、ソフトウェアだけでなく、ライブラリについてのテスト品質関連値も含む。
【００２８】
重み付きビルド記憶部２８は、ビルド単位で、重みを記憶する。ここでいう「重み」とは、ソフトウェアのビルドが失敗したときに、当該ビルドで用いられた複数のライブラリの組合せの相性が悪いと判断される指標のことをいう。重みは、ソフトウェアおよびライブラリのテスト品質関連値を用いて計算される。なお、重みの計算方法は、後述する。
【００２９】
ＣＩ記録収集部１１は、ＷＷＷ（World  Wide  Web）（以降、Ｗｅｂという）上に存在するＣＩのビルド成否の記録を収集する。例えば、ＣＩ記録収集部１１は、ＣＩのＵＲＬ辞書（ＣＩ−ＵＲＬ辞書２１）に記憶されたＵＲＬを読み出して、Ｗｅｂ上のＵＲＬに存在するＣＩ記録を取得する。ＣＩ記録収集部１１は、ＣＩ記録をＣＩ記録記憶部２２に保存する。
【００３０】
ここで、ＣＩ−ＵＲＬ辞書２１およびＣＩ記録記憶部２２の一例を、図３および図４を参照して説明する。図３は、ＣＩ−ＵＲＬ辞書２１の一例を示す図である。図３に示すように、ＣＩ−ＵＲＬ辞書２１は、プロジェクト名２１ａおよびＵＲＬ２１ｂを対応付けて記憶する。プロジェクト名２１ａは、プロジェクトの名称である。ここでいうプロジェクトとは、前述したソフトウェアのことをいい、複数のファイル群からなる。ＵＲＬ２１ｂは、プロジェクトに対するＣＩのＵＲＬを示す。
【００３１】
図４は、ＣＩ記録記憶部の一例を示す図である。図４に示すように、ＣＩ記録記憶部２２は、プロジェクト名２２ａ、コミットＩＤ２２ｂおよびビルド成否２２ｃを対応付けて記憶する。プロジェクト名２１ａは、プロジェクトの名称である。コミットＩＤ（IDentifier）２２ｂは、コミットを識別する識別子を示す。ビルド成否２２ｃは、コミットＩＤで示されるコミットを起点に実行されるビルドの成否（成功／失敗）を示す。例えば、ビルド成否２２ｃについて、成功である場合には、「成功」が設定され、失敗である場合には、「失敗」が設定される。
【００３２】
図１に戻って、ＶＣＳ記録収集部１２は、Ｗｅｂ上に存在するＶＣＳが管理するライブラリのバージョンの記録を収集する。例えば、ＶＣＳ記録収集部１２は、ＶＣＳのＵＲＬ辞書（ＶＣＳ−ＵＲＬ辞書２３）に記憶されたＵＲＬを読み出して、Ｗｅｂ上のＵＲＬに存在するＶＣＳ記録およびプロジェクトのファイル群を取得する。ＶＣＳ記録収集部１２は、ＶＣＳ記録をＶＣＳ記録記憶部２４に保存する。また、ＶＣＳ記録収集部１２は、プロジェクトのファイル群をプロジェクトファイル群２６に保存する。
【００３３】
ここで、ＶＣＳ−ＵＲＬ辞書２３およびＶＣＳ記録記憶部２４の一例を、図５および図６を参照して説明する。図５は、ＶＣＳ−ＵＲＬ辞書２３の一例を示す図である。図５に示すように、ＶＣＳ−ＵＲＬ辞書２３は、プロジェクト名２３ａおよびＵＲＬ２３ｂを対応付けて記憶する。プロジェクト名２３ａは、プロジェクトの名称である。ＵＲＬ２３ｂは、プロジェクトに対するＶＣＳのＵＲＬを示す。
【００３４】
図６は、ＶＣＳ記録記憶部の一例を示す図である。図６に示すように、ＶＣＳ記録記憶部２４は、プロジェクト名２４ａ、コミットＩＤ２４ｂおよびライブラリ２４ｃを対応付けて記憶する。プロジェクト名２４ａは、プロジェクトの名称である。プロジェクト名２４ａは、ソフトウェアの名称であっても良い。コミットＩＤ２４ｂは、コミットを識別する識別子を示す。ライブラリ２４ｃは、プロジェクトで用いられるライブラリである。ライブラリ２４ｃには、ライブラリの名称およびバージョンが含まれる。
【００３５】
一例として、プロジェクト名２４ａが「Ａ」である場合に、コミットＩＤ２４ｂとして「de9f2c7f…」を記憶している。加えて、ライブラリ２４ｃには、１つ目のライブラリ名称として「α」、バージョンとして「１．０」、２つ目のライブラリ名称として「β」、バージョンとして「２．０」を記憶している。
【００３６】
図１に戻って、ビルド記録構築部１３は、ビルド記録を構築する。例えば、ビルド記録構築部１３は、ＣＩ記録記憶部２２およびＶＣＳ記録記憶部２４を参照して、プロジェクト名およびコミットＩＤが合致するライブラリおよびビルド成否を結合したビルド記録をビルド記録記憶部２５に保存する。
【００３７】
ここで、ビルド記録記憶部２５の一例を、図７を参照して説明する。図７は、ビルド記録記憶部の一例を示す図である。図７に示すように、ビルド記録記憶部２５は、プロジェクト名２５ａ、コミットＩＤ２５ｂ、ライブラリ２５ｃおよびビルド成否２５ｄを対応付けて記憶する。プロジェクト名２５ａは、プロジェクトの名称である。プロジェクト名２５ａは、ＣＩ記録記憶部２２のプロジェクト名２２ａおよびＶＣＳ記録記憶部２４のプロジェクト名２４ａに対応する。コミットＩＤ２５ｂは、コミットを識別する識別子を示す。コミットＩＤ２５ｂは、ＣＩ記録記憶部２２のコミットＩＤ２２ｂおよびＶＣＳ記録記憶部２４のコミットＩＤ２４ｂに対応する。ライブラリ２５ｃは、プロェクトで用いられるライブラリである。ライブラリ２５ｃは、ＶＣＳ記録記憶部２４のライブラリ２４ｃに対応する。ビルド成否２５ｄは、コミットＩＤで示されるコミットを起点に実行されるビルドの成否（成功／失敗）を示す。ビルド成否２５ｄは、ＣＩ記録記憶部２２のビルド成否２２ｃに対応する。
【００３８】
一例として、プロジェクト名２５ａが「Ａ」である場合に、コミットＩＤ２５ｂとして「de9f2c7f…」を記憶している。加えて、ライブラリ２５ｃには、１つ目のライブラリ名称として「α」、バージョンとして「１．０」、２つ目のライブラリ名称として「β」、バージョンとして「２．０」を記憶している。加えて、ビルド成否２５ｄには、「成功」を記憶している。
【００３９】
ここで、プロジェクトファイル群２６の一例を、図８を参照して説明する。図８は、プロジェクトファイル群の一例を示す図である。プロジェクトファイル群２６は、プロジェクト名２６ａ、コミットＩＤ２６ｂ、ファイル群２６ｃおよびテストコード２６ｄを対応付けて記憶する。プロジェクト名２６ａは、プロジェクトの名称である。プロジェクト名２６ａは、ＶＣＳ記録記憶部２４のプロジェクト名２４ａに対応する。コミットＩＤ２６ｂは、コミットを識別する識別子を示す。コミットＩＤ２６ｂは、ＶＣＳ記録記憶部２４のコミットＩＤ２４ｂに対応する。ファイル群２６ｃは、プロジェクトに含まれるファイル群であってプロジェクト名２６ａおよびコミットＩＤ２６ｂごとにビルドされたファイル群であり、ファイル群それぞれのファイルの名称を示す。テストコード２６ｄは、テストを識別するコードを示す。一例として、テストがカバレッジ（網羅率）の分析である場合には、テストコード２６ｄには、カバレッジ（網羅率）の分析の名称や識別子が設定される。
【００４０】
図１に戻って、テスト品質関連値算出部１４は、ビルド単位で、プロジェクトに対応するテスト品質関連値を算出する。
【００４１】
例えば、テスト品質関連値算出部１４は、ビルド記録記憶部２５およびプロジェクトファイル群２６を参照して、プロジェクト名およびコミットＩＤごと（ビルドごと）のテスト品質関連値を算出する。すなわち、テスト品質関連値算出部１４は、プロジェクト名およびコミットＩＤに対応するファイル群２６ｃのテスト品質関連値を算出する。つまり、テスト品質関連値算出部１４は、プロジェクト名およびコミットＩＤに対応するソフトウェアのテスト品質関連値を算出する。一例として、テスト品質関連値算出部１４は、プロジェクト名およびコミットＩＤに対応するテストコード２６ｄをプロジェクトファイル群２６から取得し、テストコードに対応するテストを実行し、テストの品質を取得する。テストがカバレッジ（網羅率）の分析である場合には、テストの品質はカバレッジ（網羅率）を示す。そして、テスト品質関連値算出部１４は、カバレッジ（網羅率）を式（１）に当てはめて、プロジェクト名およびコミットＩＤに対応するテスト品質関連値Ｔｘを算出する。そして、テスト品質関連値算出部１４は、プロジェクト名およびコミットＩＤごと（ビルドごと）のテスト品質関連値をソフトウェア用のテスト品質関連値記憶部２７に保存する。なお、式（１）で表わされるテスト品質関連値は、カバレッジ（網羅率）が高い程（１に近づく程）、小さい値（０に近づく値）となる。
【００４２】
また、テスト品質関連値算出部１４は、ビルド記録記憶部２５を参照して、ライブラリごと（ビルドごと）のテスト品質関連値を算出する。一例として、テスト品質関連値算出部１４は、ライブラリおよびバージョンに対応するテストコードを予め定められた領域から取得し、テストコードに対応するテストを実行し、テストの品質を取得する。テストがカバレッジ（網羅率）の分析である場合には、テストの品質はカバレッジ（網羅率）を示す。そして、テスト品質関連値算出部１４は、カバレッジ（網羅率）を式（１）に当てはめて、ライブラリおよびバージョンに対応するテスト品質関連値Ｔｘを算出する。テスト品質関連値算出部１４は、ライブラリごと（ビルドごと）のテスト品質関連値をライブラリ用のテスト品質関連値記憶部２７に保存する。
【００４３】
ここで、テスト品質関連値記憶部２７の一例を、図９を参照して説明する。図９は、テスト品質関連値記憶部の一例を示す図である。
【００４４】
ソフトウェアの場合のテスト品質関連値記憶部２７は、プロジェクト名２７ａ、コミットＩＤ２７ｂ、ライブラリ２７ｃ、ビルド成否２７ｄおよびテスト品質関連値２７ｅを対応付けて記憶する。プロジェクト名２７ａは、ビルド記録記憶部２５のプロジェクト名２５ａに対応する。コミットＩＤ２７ｂは、コミットを識別する識別子を示す。コミットＩＤ２７ｂは、ビルド記録記憶部２５のコミットＩＤ２５ｂに対応する。ライブラリ２７ｃは、プロェクトで用いられるライブラリである。ライブラリ２７ｃは、ビルド記録記憶部２５のライブラリ２５ｃに対応する。ビルド成否２７ｄは、コミットＩＤで示されるコミットを起点に実行されるビルドの成否（成功／失敗）を示す。ビルド成否２７ｄは、ビルド記録記憶部２５のビルド成否２５ｄに対応する。テスト品質関連値２７ｅは、一例として、式（１）で求められるテスト品質関連値Ｔｘを示す。
【００４５】
一例として、プロジェクト名２７ａが「Ａ」である場合に、コミットＩＤ２７ｂとして「de9f2c7f…」、ライブラリ２７ｃとして「α−１．０，β−２．０，…」、ビルド成否２７ｄとして「成功」、テスト品質関連値２７ｅとして「０．９」を記憶している。
【００４６】
ライブラリの場合のテスト品質関連値記憶部２７は、ライブラリ名２７ｆ、バージョン２７ｇおよびテスト品質関連値２７ｈを対応付けて記憶する。ライブラリ名２７ｆは、ライブラリの名称である。バージョン２７ｇは、バージョンを示す。テスト品質関連値２７ｈは、一例として、式（１）で求められるテスト品質関連値Ｔｘを示す。
【００４７】
一例として、ライブラリ名２７ｆが「α」である場合に、バージョン２７ｇとして「１．０」、テスト品質関連値２７ｈとして「０．６」を記憶している。
【００４８】
図１に戻って、重み算出部１５は、ビルド単位で、プロジェクトに対応する重みを算出する。ここでいう重みは、ビルドが失敗したときに、当該ビルドで用いられたライブラリの組合せの相性が悪いと判断される指標のことをいう。重みは、テストの品質のレベルが高い程、小さくなるように決定される。
【００４９】
例えば、重み算出部１５は、テスト品質関連値記憶部２７を参照して、プロジェクト名およびコミットＩＤに対応するライブラリ２７ｃおよびテスト品質関連値２７ｅを取得する。重み算出部１５は、テスト品質関連値記憶部２７を参照して、取得したライブラリ２７ｃに対応するテスト品質関連値２７ｈを取得する。そして、重み算出部１５は、式（２）を用いて、プロジェクト名およびコミットＩＤに対応する重みＷを算出する。すなわち、重み算出部１５は、ソフトウェアおよびソフトウェアに用いられる複数のライブラリのそれぞれのテスト品質関連値を用いて重み算出する。プロジェクト名およびコミットＩＤがソフトウェアに対応する。なお、式（２）のＴｘは、テスト品質関連値を示す。Ｓは、ソフトウェアを示す。ｌ１Ｓ，・・・，ｌｎＳは、ソフトウェアＳが用いるｎ個のライブラリ群を示す。
【００５０】
【数１】
2020077264.tif 000003
【００５１】
すなわち、重みは、テストの品質（カバレッジ）が高い程、小さくなるように決定される。つまり、カバレッジＣｏｖ（Ｘ）が高い程、テスト品質関連値は小さくなり、テスト品質関連値の逆数は大きくなり、テスト品質関連値の逆数の算術平均の逆数を示す調和平均によって、重みは小さくなる。言い換えれば、テストの品質が厳しいとき、ソフトウェアのビルドが失敗した場合には、ソフトウェアの品質が悪いと推定される。かかる場合には、ライブラリの組合せに問題があるわけではなく、ソフトウェアに問題があると考えられるから、重みを下げる。これに対して、テストの品質が緩いとき、ソフトウェアのビルドが失敗した場合には、ソフトウェアの品質ではなく、ライブラリの組合せが悪いと推定される。かかる場合には、ソフトウェアに問題があるわけではなく、ライブラリの組合せに問題があると考えられるから、重みを上げる。重みの計算方法を示す式（２）は、この原理に基づいて生成されたものである。
【００５２】
そして、重み算出部１５は、算出した、プロジェクト名およびコミットＩＤに対応する重みＷを重み付きビルド記憶部２８に保存する。
【００５３】
ここで、重み付きビルド記憶部２８の一例を、図１０を参照して説明する。図１０は、重み付きビルド記憶部の一例を示す図である。図１０に示すように、重み付きビルド記憶部２８は、プロジェクト名２８ａ、コミットＩＤ２８ｂ、ライブラリ２８ｃ、ビルド成否２８ｄおよび重み２８ｅを対応付けて記憶する。プロジェクト名２８ａは、ビルド記録記憶部２５のプロジェクト名２５ａに対応する。コミットＩＤ２８ｂは、コミットを識別する識別子を示す。コミットＩＤ２８ｂは、ビルド記録記憶部２５のコミットＩＤ２５ｂに対応する。ライブラリ２８ｃは、プロェクトで用いられるライブラリである。ライブラリ２８ｃは、ビルド記録記憶部２５のライブラリ２５ｃに対応する。ビルド成否２８ｄは、コミットＩＤで示されるコミットを起点に実行されるビルドの成否（成功／失敗）を示す。ビルド成否２８ｄは、ビルド記録記憶部２５のビルド成否２５ｄに対応する。重み２８ｅは、一例として、式（２）で求められる重みＷを示す。
【００５４】
一例として、プロジェクト名２８ａが「Ａ」である場合に、コミットＩＤ２８ｂとして「de9f2c7f…」、ライブラリ２８ｃとして「α−１．０，β−２．０，…」、ビルド成否２８ｄとして「成功」、重み２８ｅとして「０．７」を記憶している。
【００５５】
図１に戻って、相性値算出部１６は、重みを用いて、ライブラリの組合せの相性を算出する。なお、ライブラリは、ＯＳＳであっても良い。
【００５６】
例えば、相性値算出部１６は、例えばモニタから所望するライブラリの組合せを受け取ると、重み付きビルド記憶部２８を参照して、ライブラリの組合せを用いたプロジェクト名およびコミットＩＤに対するビルド成否２８ｄおよび重み２８ｅを取得する。相性値算出部１６は、式（３）を用いて、ライブラリの組合せの相性値Ｖを算出する。なお、式（３）のｗｉは、受け取ったライブラリの組合せを持つソフトウェアの重み２８ｅを示す。式（３）のｂｉは、受け取ったライブラリの組合せを持つソフトウェアのビルド成否２８ｄについて、「成功」の場合には「１」、「失敗」の場合には「０」を示す。
【００５７】
【数２】
2020077264.tif 000004
【００５８】
すなわち、ライブラリの組合せの相性値は、重み付き平均で計算される。
【００５９】
そして、相性値算出部１６は、算出した相性値を、例えばモニタに出力する。
【００６０】
ここで、実施例に係る相性値算出の一例を、図１１を参照して説明する。図１１は、実施例に係る相性値算出の一例を示す図である。なお、重み付きビルド記憶部２８は、重み算出部１５によって生成されたとする。
【００６１】
図１１に示すように、相性値算出部１６は、ライブラリ名α，βを入力する。すると、相性値算出部１６は、重み付きビルド記憶部２８を参照して、入力したライブラリ名α，βを用いたプロジェクト名およびコミットＩＤに対するビルド成否２８ｄおよび重み２８ｅを取得する。ここでは、ライブラリ名α，βを用いたプロジェクト名「Ａ」およびコミットＩＤ「de9f2c7f」について、ビルド成否２８ｄが「成功」、重み２８ｅが「０．７」が取得される。ライブラリ名α，βを用いたプロジェクト名「Ｃ」およびコミットＩＤ「d25e1b3a」について、ビルド成否２８ｄが「失敗」、重み２８ｅが「０．８」が取得される。さらに、ライブラリ名α，βを用いたプロジェクト名およびコミットＩＤについて、ビルド成否２８ｄ、重み２８ｅが取得される。
【００６２】
そして、相性値算出部１６は、取得されたビルド成否および重みを式（３）に代入して、ライブラリα，βの組合せの相性値を算出する。ここでは、ライブラリα，βの組合せの相性値として０．７５が算出される。これにより、相性値算出部１６は、テストの品質のレベルが高い程小さくなるように決定される重みを用いてライブラリの組合せの相性値を算出することで、ライブラリの組合せの相性の判断の精度を上げることが可能となる。
【００６３】
［評価処理のフローチャート］
図１２は、実施例に係る評価処理のフローチャートの一例を示す図である。
【００６４】
ＣＩ記録収集部１１は、ＣＩ−ＵＲＬ辞書２１をロードする（ステップＳ１１）。ＣＩ記録収集部１１は、ＵＲＬごとに、ＷｅｂからＣＩ記録を収集して、ＣＩ記録記憶部２２に保存する（ステップＳ１２）。
【００６５】
そして、ＶＣＳ記録収集部１２は、ＶＣＳ−ＵＲＬ辞書２３をロードする（ステップＳ１３）。ＶＣＳ記録収集部１２は、ＵＲＬごとに、ＷｅｂからＶＣＳ記録を収集して、ＶＣＳ記録記憶部２４に保存する（ステップＳ１４）。ＶＣＳ記録収集部１２は、ＵＲＬごとに、Ｗｅｂからプロジェクトファイルを収集して、プロジェクトファイル群２６に保存する（ステップＳ１５）。
【００６６】
ビルド記録構築部１３は、ＣＩ記録記憶部２２に記憶されたＣＩ記録とＶＣＳ記録記憶部２４に記憶されたＶＣＳ記録からビル御記録を生成し、ビルド記録記憶部２５に保存する（ステップＳ１６）。ビルド記録記憶部２５には、プロジェクト名およびコミットＩＤに対応付けて、ライブラリおよびビルド成否が記憶されている。
【００６７】
テスト品質関連値算出部１４は、プロジェクトファイル群２６を参照して、プロジェクトにテストコードが対応付けられているか否かを判定する（ステップＳ１７）。プロジェクトにテストコードが対応付けられていない場合には（ステップＳ１７；Ｎｏ）、テスト品質関連値算出部１４は、ステップＳ２０に移行する。
【００６８】
一方、プロジェクトにテストコードが対応付けられている場合には（ステップＳ１７；Ｙｅｓ）、テスト品質関連値算出部１４は、プロジェクトファイル群２６に記憶された各プロジェクトに対し、テストコードに対するテストを実行する（ステップＳ１８）。テスト品質関連値算出部１４は、テスト品質値（例えば、カバレッジ）を収集し、テスト品質値からテスト品質関連値を算出する（ステップＳ１９）。一例として、テスト品質値は、カバレッジ値である。テスト品質関連値は、テスト品質値を式（１）に代入して算出される。そして、テスト品質関連値算出部１４は、ステップＳ２０に移行する。
【００６９】
ステップＳ２０において、テスト品質関連値算出部１４は、ビルド記録にテスト品質関連値を付加すべく、テスト品質関連値記憶部２７に保存する（ステップＳ２０）。なお、プロジェクトにテストコードが対応付けられていない場合には、テスト品質関連値算出部１４は、ビルド記録にテスト品質関連値として「１」を付加すべく、テスト品質関連値記憶部２７に保存する。
【００７０】
そして、重み算出部１５は、テスト品質関連値記憶部２７に記憶されたテスト品質関連値を用いて、重み付きビルド記録を算出し、重み付きビルド記憶部２８に保存する（ステップＳ２１）。プロジェクトに対応する重みは、プロジェクト（ソフトウェア）のテスト品質関連値およびソフトウェアに用いるライブラリのテスト品質関連値を式（２）に代入して算出される。
【００７１】
続いて、相性値算出部１６は、ライブラリの組合せを受け付ける（ステップＳ２２）。相性値算出部１６は、ライブラリの組合せに対応する相性値を算出する（ステップＳ２３）。例えば、相性値算出部１６は、重み付きビルド記憶部２８を参照して、ライブラリの組合せを用いたプロジェクト名およびコミットＩＤに対するビルド成否２８ｄおよび重み２８ｅを取得する。相性値算出部１６は、式（３）を用いて、ライブラリの組合せの相性値を算出する。
【００７２】
そして、相性値算出部１６は、受け付けた組合せの相性値があるか否かを判定する（ステップＳ２４）。組合せの相性値があると判定した場合には（ステップＳ２４；Ｙｅｓ）、相性値算出部１６は、相性値を出力する（ステップＳ２５）。一方、組合せの相性値がないと判定した場合には（ステップＳ２４；Ｎｏ）、相性値算出部１６は、エラーを出力する（ステップＳ２６）。そして、評価処理は、終了する。
【００７３】
［実施例の効果］
このようにして、実施例では、評価装置１は、複数のライブラリを用いたソフトウェアのテストの品質を取得する。評価装置１は、取得したテストの品質のレベルに基づいて、ソフトウェアの実行モジュールを生成する際に行われるビルドが失敗したときに、当該ビルドで用いられたライブラリの組合せの相性が悪いと判断する指標を決定する。そして、評価装置１は、決定した指標を用いて、ライブラリの組合せの相性を評価する。かかる構成によれば、評価装置１は、ソフトウェアのビルドが失敗したときに、当該ビルドで用いられたライブラリの組合せの相性が悪いと判断する指標を用いることで、ソフトウェアが用いるライブラリの相性の判断の精度を上げることができる。
【００７４】
また、実施例では、評価装置１は、テストの品質のレベルが高い程、指標が小さくなるように当該指標を決定する。かかる構成によれば、評価装置１は、テストの品質のレベルが高ければ、ビルドが失敗したときに、ビルドが失敗した原因はライブラリの組合せに起因せず、ソフトウェアの品質に起因すると推定することができる。この結果、評価装置１は、ライブラリの組合せの相性が悪いと判断する指標を小さくすることで、ライブラリの相性の判断の精度を上げることができる。
【００７５】
また、実施例では、評価装置１は、ソフトウェアおよびソフトウェアに用いられる複数のライブラリのそれぞれのテストの品質を取得する。評価装置１は、取得したそれぞれのテストの品質からそれぞれの指標を決定するとともに、決定したそれぞれの指標を用いて前記ソフトウェアの指標を決定する。かかる構成によれば、評価装置１は、ソフトウェアだけでなくライブラリのテストの品質から決定される指標を用いることで、ライブラリの相性の判断の精度を上げることができる。
【００７６】
また、実施例では、評価装置１は、同一の複数のライブラリを用いた複数のソフトウェアの指標を用いて、ライブラリの組合せの相性を評価する。かかる構成によれば、評価装置１は、同一の複数のライブラリを用いた複数のソフトウェアの指標を用いることで、同一の複数のライブラリの組合せの相性の精度を上げることができる。
【００７７】
なお、評価装置１は、既知のパーソナルコンピュータ、ワークステーション等の情報処理装置に、上記した種々の機能部および種々の記憶部等の各機能を搭載することによって実現することができる。
【００７８】
また、上記実施例では、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、ＣＩ記録収集部１１と、ＶＣＳ記録収集部１２とを統合しても良い。テスト品質関連値算出部１４を、ソフトウェアのテスト品質関連値を算出する算出部と、ライブラリのテスト品質関連値を算出する算出部とに分散しても良い。また、種々の辞書や種々の記憶部を評価装置１の外部装置としてネットワーク経由で接続するようにしても良い。
【００７９】
また、上記実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーション等のコンピュータで実行することによって実現することができる。そこで、以下では、図１に示した評価装置１と同様の機能を実現する磁界シミュレータプログラムを実行するコンピュータの一例を説明する。図１３は、評価プログラムを実行するコンピュータの一例を示す図である。
【００８０】
図１３に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０３と、ユーザからのデータの入力を受け付ける入力装置２１５と、表示装置２０９を制御する表示制御部２０７とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読取るドライブ装置２１３と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部２１７とを有する。また、コンピュータ２００は、各種情報を一時記憶するメモリ２０１と、ＨＤＤ（Hard  Disk  Drive）２０５を有する。そして、メモリ２０１、ＣＰＵ２０３、ＨＤＤ２０５、表示制御部２０７、ドライブ装置２１３、入力装置２１５、通信制御部２１７は、バス２１９で接続されている。
【００８１】
ドライブ装置２１３は、例えばリムーバブルディスク２１１用の装置である。ＨＤＤ２０５は、評価プログラム２０５ａおよび評価処理関連情報２０５ｂを記憶する。
【００８２】
ＣＰＵ２０３は、評価プログラム２０５ａを読み出して、メモリ２０１に展開し、プロセスとして実行する。評価処理関連情報２０５ｂは、ＣＩ−ＵＲＬ辞書２１、ＶＣＳ−ＵＲＬ辞書２３、ＣＩ記録記憶部２２、ＶＣＳ記録記憶部２４、ビルド記録記憶部２５、プロジェクトファイル群２６、テスト品質関連値記憶部２７および重み付きビルド記憶部２８等の各情報を記憶する。
【００８３】
なお、評価プログラム２０５ａについては、必ずしも最初からＨＤＤ２０５に記憶させておかなくても良い。例えば、コンピュータ２００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、ＤＶＤ（Digital  Versatile  Disk）、光磁気ディスク、ＩＣ（Integrated  Circuit）カード等の「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ２００がこれらから評価プログラム２０５ａを読み出して実行するようにしても良い。
【符号の説明】
【００８４】
１    評価装置
１１    ＣＩ記録収集部
１２    ＶＣＳ記録収集部
１３    ビルド記録構築部
１４    テスト品質関連値算出部
１５    重み算出部
１６    相性値算出部
２１    ＣＩ−ＵＲＬ辞書
２２    ＣＩ記録記憶部
２３    ＶＣＳ−ＵＲＬ辞書
２４    ＶＣＳ記録記憶部
２５    ビルド記録記憶部
２６    プロジェクトファイル群
２７    テスト品質関連値記憶部
２８    重み付きビルド記憶部
【図１】
2020077264.tif 000005
【図２Ａ】
2020077264.tif 000006
【図２Ｂ】
2020077264.tif 000007
【図３】
2020077264.tif 000008
【図４】
2020077264.tif 000009
【図５】
2020077264.tif 000010
【図６】
2020077264.tif 000011
【図７】
2020077264.tif 000012
【図８】
2020077264.tif 000013
【図９】
2020077264.tif 000014
【図１０】
2020077264.tif 000015
【図１１】
2020077264.tif 000016
【図１２】
2020077264.tif 000017
【図１３】
2020077264.tif 000018