(57)【要約】【課題】  ソフトウェア製品系列の可変性を分析する。【解決手段】  変更履歴データ１と、変更履歴処理手段２と、因子分析手段３と、可変性分析手段４と、出力データである構成情報データ５とで構成される。変更履歴処理手段２が変更履歴データ１を数値化する。製品間の変更情報を観測データとして因子分析手段３が因子分析を行う。求められた因子および因子得点に基づいて可変性分析手段４が製品系列における可変性および対応するソフトウェア部品を求め、構成情報データ５を出力する。【選択図】図１
2009086791.tif 000002
【特許請求の範囲】
【請求項１】
複数のソフトウェア部品で構成されているソフトウェア製品で構成されているソフトウェア製品系列を分析してソフトウェア製品系列の構成情報を出力するソフトウェア製品系列分析装置であって、
前記ソフトウェア製品系列の変更履歴に基づいて数値化処理を行う変更履歴処理手段と、
前記変更履歴処理手段によって数値化された変更履歴を用いて因子分析を行って少なくとも因子，因子の固有値，因子の累積値，因子係数，因子得点のいずれか一つを求める因子分析手段と、
前記因子分析手段の分析結果を用いてソフトウェア製品系列の可変点および対応するソフトウェア部品とを求める可変性分析手段と、
を有することを特徴とするソフトウェア製品系列分析装置。
【請求項２】
前記ソフトウェア製品系列の変更履歴は、各製品で用いたソフトウェア部品のバージョン情報であることを特徴とする請求項１に記載のソフトウェア製品系列分析装置。
【請求項３】
前記変更履歴処理手段は、前記ソフトウェア製品系列の変更履歴を、製品間でソフト部品のバージョンが変更されたか否かの二値データに変換することを特徴とする請求項２の何れかにに記載のソフトウェア製品系列分析装置。
【請求項４】
前記変更履歴処理手段は、前記ソフトウェア製品系列の変更履歴を、製品間でのソフト部品の変更された行数に変換することを特徴とする請求項１から３の何れかに記載のソフトウェア製品系列分析装置。
【請求項５】
前記変更履歴処理手段は、ソフトウェアバージョン管理システムとの通信手段を有することを特徴とする請求項１から４の何れかに記載のソフトウェア製品系列分析装置。
【請求項６】
前記因子分析手段は、前記変更履歴処理手段によって数値化された変更履歴に対して因子分析を行うにあたり、製品間の変更を観測変数とし、数値化された各ソフトウェア部品のバージョン番号の変更をケースとすることを特徴とする、請求項１から５の何れかに記載のソフトウェア製品系列分析装置。
【請求項７】
前記因子分析手段は、因子分析によって得られた固有値に基づいて分析する因子数を求めることを特徴とする、請求項６に記載のソフトウェア製品系列分析装置。
【請求項８】
前記可変性分析手段は、前記変更特徴分析手段により求められた因子および因子得点を用いて、因子得点の絶対値が一定の値を超えるソフトウェア部品が少なくとも一つある場合に、該因子はソフトウェア製品系列の可変点であると判断することを特徴とする、請求項６または７に記載のソフトウェア製品系列分析装置。
【請求項９】
前記可変性分析手段は、あるソフトウェア部品が複数の可変点に対応していることを分析して出力することを特徴とする、請求項８に記載のソフトウェア製品系列分析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、開発済みのソフトウェアを分析するソフトウェア分析装置に関し、より詳細には、複数のソフトウェア部品で構成されているソフトウェア製品を複数有するソフトウェア製品系列における可変性を分析するソフトウェア分析装置に関する。
【背景技術】
【０００２】
ソフトウェア分析装置として、開発済みのソフトウェア資産に対してキーワードを用いて解析を行い、使用している言語や、キーワードとの関連性，部品同士の親子関係の情報を出力する技術が開示されている（例えば、特許文献１参照）。
【０００３】
また、ソフトウェア部品の再利用に関して、従来利用していたソフトウェア部品との互換性の有無を確認できるソフトウェア部品管理システムに関する技術が開示されている（例えば、特許文献２参照）。
【０００４】
また、ソフトウェアの開発手法として、複数の派生ソフトウェアシステムを有する製品系列全体に対し、製品系列内での共通部分および可変部分に着目してソフトウェアの部品化を行い、再利用性を向上させる技術として、ソフトウェア・プロダクトライン型開発技術が提案されている（例えば、非特許文献１）。
【０００５】
【特許文献１】特許第２７４０４６８号公報
【特許文献２】特開２００７−１２８４５０号公報
【非特許文献１】吉村健太郎、製品間を横断したソフトウェア再利用技術、情報処理学会  会誌、Vol.48、No.2、2007
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ソフトウェア技術の適用対象として、自動車，携帯電話等の機器に組み込んで対象を制御する、いわゆる組み込みソフトウェアがある。このような組込みソフトウェアによる制御は、従来の機械的機構や電気回路による方式に比べて柔軟かつ高度な制御が実現できること、ソフトウェアの変更によって多くの派生製品を開発できること、が利点として挙げられる。
【０００７】
従来は対象製品ごとにソフトウェアを開発したり、類似の製品に基づいて差分を開発したりしていた。しかし、組込みソフトウェアの適用範囲拡大に伴い、派生製品数およびソフトウェアの規模が増大したため、開発効率の大幅な向上が要求されている。
【０００８】
上記課題を解決するため、特許文献１に示すように、開発済みのソフトウェア部品のデータベースを設け、製品系列の特徴を示すキーワードに基づいて参照できるようにした技術が開示されている。しかしながら、ある特定のキーワードでまとめることが可能なソフトウェア部品のグループをどのように抽出するか、と言う点については考慮されていない。
【０００９】
また、特許文献２では製品を横断したソフトウェア部品の再利用に当たって、ソフトウェア部品間での互換性の有無を確認できる技術が開示されている。しかしながら、本技術はソフトウェア部品間での比較にとどまっており、製品間でのソフトウェア資産の比較については考慮されていない。
【００１０】
また、非特許文献１ではソフトウェアの開発手法として、ソフトウェア・プロダクトライン型開発技術が提案されている。本技術によれば、複数の派生ソフトウェアシステムを有する製品系列全体に対して、製品系列の機能要件の共通部分および可変部分に着目してソフトウェアの部品化を行って、ソフトウェア部品の再利用性および製品の開発効率を向上できるとされている。しかしながら多くの派生製品を持つような製品系列では、既に機能要件の数が膨大なものになっている。機能要件は自然言語で記述されているため、共通性・可変性の分析は人手で行う必要があるが、膨大な機能要件を人手で解析することは容易ではないという課題がある。
【００１１】
本発明は、上記課題を解決し、製品間でのソフトウェアの可変性を反映したソフトウェア部品のグループを自動で分析することが可能なソフトウェア製品系列分析装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
複数のソフトウェア部品で構成されているソフトウェア製品を複数有するソフトウェア製品系列を分析してソフトウェアの構成情報を出力するソフトウェア製品系列分析装置であって、前記ソフトウェア製品系列の変更履歴に基づいて数値化処理を行う変更履歴処理手段と、前記変更履歴処理手段によって数値化された変更履歴を用いて因子分析を行って少なくとも因子、因子の固有値，因子の累積値，因子係数，因子得点のいずれか一つを求める因子分析手段と、前記因子分析手段の分析結果を用いてソフトウェア製品系列の可変点および対応するソフトウェア部品とを求める可変性分析手段とを有するように構成する。
【発明の効果】
【００１３】
本発明によれば、ソフトウェア製品系列を構成するソフトウェア部品の変更履歴を数値化して因子分析を行うことによって、製品開発時に変更されたソフトウェア部品のグループを抽出することができ、製品間でのソフトウェアの可変性を反映したソフトウェア部品のグループを自動で分析することが可能になる。
【発明を実施するための最良の形態】
【００１４】
以下に本発明の一実施の形態によるソフトウェア製品系列分析装置について図面を参照しつつ説明を行う。図１は、本発明の一実施の形態によるソフトウェア製品系列分析装置のシステム構成例の概要を示す図である。図１に示すように、本実施の形態によるソフトウェア製品系列分析装置は、変更履歴データ１と、変更履歴処理手段２と、因子分析手段３と、可変性分析手段４と、構成情報データ５とで構成される。
【００１５】
変更履歴データ１は、本装置の入力データである。複数のソフトウェア部品で構成されているソフトウェア製品に関して、各製品を構成しているソフトウェア部品の情報、そしてソフトウェア部品のバージョン番号の情報を含んでいる。なお、ここでいう複数のソフトウェア部品で構成されるソフトウェア製品とは、例えばオブジェクト指向やコンポーネント指向，アーキテクチャパターンが適用されたソフトウェア製品を指している。また、ＰＣ上で動作するソフトウェアだけではなく、自動車用エンジン制御ソフトウェア，デジタル家電用ソフトウェアなどの特定の機器と組み合わされて動作する、いわゆる組込みソフトウェアも対象とする。
【００１６】
変更履歴処理手段２は、変更履歴１を用いて変更履歴の数値化を行う。
【００１７】
因子分析手段３は、変更履歴処理手段２によって数値化された変更履歴１のデータを用いて、多変量解析手法の一つである因子分析を行う。因子分析において、少なくとも各因子に対応する固有値，寄与率，因子負荷量，因子得点，因子係数のいずれか一つを求める。なお、因子分析の計算法として本実施例では因子負荷量の計算に主因子法，回転方法として直交回転（バリマックス法）を用いるが、因子負荷量の計算法として最小二乗法，最尤法、そして回転方法として他の直交回転や斜交回転（例えばプロマックス法）を用いても良い。
【００１８】
可変性分析手段４は、因子分析手段３により計算された因子分析の結果を元に、ソフトウェア製品系列に生じる製品間の可変性に対応する因子と、各因子に対応するソフトウェア部品とを求める。
【００１９】
以上の構成をとることによって、過去のソフトウェア製品の変更実績に基づいて、製品系列全体における可変性および可変性の対応するソフトウェア部品とを計算機の支援に基づいて求めることが出来る。例えば、それぞれ１,０００個のソフトウェア部品で構成されている１,０００種のソフトウェア製品を持つ製品系列の場合、その変更パターンを人手で解析するには非常に時間がかかるうえ、異なったソフトウェア部品同士の変更パターンの相関関係を人手で求めることは不可能である。本実施の形態によるソフトウェア製品系列分析装置では、ソフトウェア製品の変更履歴を数値化することによって因子分析を行ったうえで、製品系列内の可変性分析を行っており、過去の変更履歴に基づいた可変性の分析に適している。
【００２０】
図２は、本実施の形態による変更履歴１の具体的な例を示す図である。変更履歴データ１０は、開発済みおよび開発中のソフトウェア製品（製品Ａから製品Ｇ）と、それらを構成しているソフトウェア部品（以下ＳＷＣ：Soft Ware Component）のバージョンとの対応関係を含んでいる。なお、製品ＡにおけるＳＷＣ３のように、図中で「−」と表記されている部分は、その製品が対応するＳＷＣを含んでいないことを示している。
【００２１】
図３は本実施例による変更履歴処理手段の処理の流れを示すフローチャートである。ステップＳ２０１から処理が開始される。ステップＳ２０２において製品の並べ替え処理を行い、開発開始日時，開発終了日時，製品出荷日時のいずれかに基づいて、製品の構成情報の並べ替えを行い、その順序に基づいて製品番号を与える。ステップＳ２０３において、処理対象の製品番号の初期化処理を行って初期値を入力する。ステップＳ２０４において、処理対象のＳＷＣ番号の初期化処理を行って初期値を入力する。ステップＳ２０５において、変更履歴の数値化処理を行う。ステップＳ２０６において、全ＳＷＣに対して数値化処理が完了したかどうかのチェックを行う。完了していない場合には（Ｎｏ）ステップＳ２０７に進み、完了した場合には（Ｙｅｓ）ステップＳ２０８に進む。ステップＳ２０７ではＳＷＣ番号を加算し、処理を継続する。ステップＳ２０８では全製品に対して数値化処理が完了したかどうかのチェックを行う。完了していない場合には（Ｎｏ）ステップＳ２０９に進み、完了した場合には（Ｙｅｓ）ステップＳ２１０に進んで処理を終了する。ステップＳ２０９では製品番号を加算して、処理を継続する。
【００２２】
図４は、ステップＳ２０５における変更履歴数値化処理として、二値データに変換する場合のフローチャート図である。ステップＳ２０５１０から処理が開始される。ステップＳ２０５１１において、一つ前の製品（ステップＳ２０２の処理結果に基づく）と比較して、ソフトウェア部品のバージョンが変更されているか、またはソフトウェア部品が追加・削除されているかをチェックする。ソフトウェア部品のバージョンの変更または追加・削除されている場合には（Ｙｅｓ）ステップＳ２０５１２に進み、されていない場合には（Ｎｏ）ステップＳ２０５１３に進む。ステップＳ２０５１２では、変更履歴として１を代入する。ステップＳ２０５１３では、変更履歴として０を代入する。そして、ステップＳ２０５１４で処理を終了する。
【００２３】
図５は、二値化による数値化変更履歴２０を示している。数値化前の変更履歴１０との大きな違いとして、列方向の項が製品間の差分、例えば「製品Ａ→製品Ｂ」となっている。数値化変更履歴２０の見方として、たとえば「Ａ→Ｂ」に対する「ＳＷＣ１」は「０」となっている。これは、数値化される前の変更履歴１０において、製品Ａ，製品ＢともにＳＷＣ１のバージョンが「１.０」であり変更が無かったことに対応している。また、「Ｂ→Ｃ」に対する「ＳＷＣ１１」は「１」となっている。これは、数値化される前の変更履歴１０において、ＳＷＣ１１のバージョンが製品Ａでは「２.０」、製品Ｂでは「３.０」であり、製品Ｂから製品Ｃへの変更においてＳＷＣ１１が変更されたことに対応している。
【００２４】
以上の数値化処理を行うことによって、各製品を構成するソフトウェア部品のバージョン情報であった変更履歴を、製品間の差を数値として表現する数値化変更履歴に変換し、因子分析による多変量解析を行うことが可能になる。
【００２５】
図６は、ステップＳ２０５における変更履歴数値化処理として、製品間でのソフト部品変更行数による数値化処理のフローチャート図である。ステップＳ２０５２０から処理が開始される。ステップＳ２０５２１において、一つ前の製品（ステップＳ２０２の処理結果に基づく）と比較して、ソフトウェア部品のバージョンが変更されているか、またはソフトウェア部品が追加・削除されているかをチェックする。ソフトウェア部品のバージョンの変更または追加・削除されている場合には（Ｙｅｓ）ステップＳ２０５２２に進み、されていない場合には（Ｎｏ）ステップＳ２０５２４に進む。ステップＳ２０５２２では、ソフトウェア部品変更行数をカウントする。ステップＳ２０５２３では、変更履歴としてカウントした変更行数を代入する。ステップＳ２０５２４では、変更履歴として０を代入する。そして、ステップＳ２０５２５で処理を終了する。
【００２６】
以上の変更行数による数値化処理を行うことによって、製品間でのソフト部品変更の大きさに基づいて数値として表現することが可能になる。
【００２７】
図７は、本発明によるソフトウェア製品系列分析装置を、ソフトウェアバージョン管理システムと接続したシステムの構成を示している。ソフトウェアバージョン管理システム９３は、ソフトウェア製品の開発時にソフト部品の構成およびバージョンを管理している。具体例として、Subversion，ＣＶＳが知られている。ソフトウェアバージョン管理システム９３は、複数のエンジニアによるプロジェクト型開発で用いられるため、ネットワーク９２に接続されている。通信手段９１は、ネットワーク９２に接続してソフトウェアバージョン管理システム９３と通信することによって、製品を構成しているソフトウェア部品の情報およびソフトウェア部品のバージョン情報を取得する。ソフトウェア製品系列分析装置９０は、通信手段９１から製品を構成しているソフトウェア部品の情報およびソフトウェア部品のバージョン情報を取得して、ソフトウェア製品系列分析を行う。
【００２８】
以上の構成をとることによって、ソフトウェア製品系列分析を行うのに必要な変更履歴を、製品開発時に運用していたソフトウェアバージョン管理システムから取得することが出来、実際の製品と一貫性のあるデータを自動的に取得することが可能になる。
【００２９】
図８は、因子分析手段３により実行される因子分析における分析データの構成を示す図である。本発明における因子分析では、製品間における変更履歴（３１１，３１２，３１３，３１４，３１５，３１６）を観測変数３１として扱うことによって、製品変更に影響を及ぼしている因子３０（３０１，３０２）を明らかにする。さらに、因子分析による計算を行う際には、各ソフトウェア部品の数値化された変更履歴（３２１，３２２）を、観測変数３１のケースとして扱う。
【００３０】
以上のように分析データを定めることによって、製品間で生じた変更を多変量解析によって分析することが可能となり、複数の製品で構成される製品系列の変更に影響を与えている因子を求めることが出来る。
【００３１】
図９は、本実施例における因子の固有値および累積率の計算結果（Ｉ）３３を示している。
【００３２】
図１０は、各因子のＳＷＣへの因子得点の計算結果（II）３４を示している。ここでは、因子ｉおよび因子iiのみを取り上げ、因子iii，iv，ｖ，viは省略した。
【００３３】
図１１は、可変性分析手段４で行う処理の詳細を示すフローチャート図である。ステップＳ４１から処理が開始される。ステップＳ４２は採用する因子数を判断する因子数判断手段である。ステップＳ４３は、因子とＳＷＣとの対応を分析する対応関係分析手段である。ステップＳ４４は、一つのＳＷＣに対して複数の因子が対応していないかどうかをチェックし警告する複数対応警告処理である。
【００３４】
図１２は、因子数判断手段Ｓ４２の詳細を示すフローチャート図である。ステップＳ４２０から処理が開始される。ステップＳ４２１において因子番号が初期化される。なお、本処理では計算結果（Ｉ）３３に示すように、固有値の大きい順に因子が並べられているとする。ステップＳ４２２において、因子の固有値が特定の値（本例では１.０）よりも大きいか否かがチェックされる。大きい場合（Ｙｅｓ）にはステップＳ４２３に進み、小さい場合（Ｎｏ）にはステップＳ４２５に進む。ステップＳ４２３では累積率が特定の値（本例では０.５）よりも小さいか否かがチェックされる。小さい場合（Ｙｅｓ）にはステップＳ４２４に進み、大きい場合（Ｎｏ）にはステップＳ４２５に進む。ステップＳ４２４では因子番号を加算し、処理を継続する。ステップＳ４２５は採用因子数決定処理であり、現在の因子番号を因子数として採用する。そして、ステップＳ４２６において処理を終了する。
【００３５】
このように、因子分析の結果に基づいて因子数を決定することによって、変更履歴から求められる可変性の数を定量的に決定することが可能となり、属人性を排した客観的な分析を行える。
【００３６】
図１３は、対応関係分析手段Ｓ４３の詳細な処理を示すフローチャート図である。ステップＳ４３０から処理が開始される。ステップＳ４３１では因子番号の初期化を行う。ステップＳ４３２ではＳＷＣ番号の初期化を行う。ステップＳ４３３では、現在の因子番号およびＳＷＣ番号に対応する因子得点（図１０に示す）が判定閾値よりも大きいか否かをチェックする。大きい場合（Ｙｅｓ）にはステップＳ４３４に進み、小さい場合（Ｎｏ）にはステップＳ４３５に進む。ステップＳ４３４では、現在の因子番号およびＳＷＣ番号を対応データとして記録する。ステップＳ４３５では、現在のＳＷＣ番号が最終番号か否かをチェックし、最終番号の場合（Ｙｅｓ）はステップＳ４３７に進み、そうでない場合（Ｎｏ）にはステップＳ４３６に進む。ステップＳ４３６ではＳＷＣ番号を加算し、処理を継続する。ステップＳ４３７では現在の因子番号が最終番号か否かをチェックし、最終番号の場合（Ｙｅｓ）はステップＳ４３９に進んで処理を終了し、そうでない場合（Ｎｏ）にはステップＳ４３８に進む。ステップＳ４３８では因子番号を加算し、処理を継続する。
【００３７】
このように、因子得点に基づいて因子、すなわち可変性とソフトウェア部品との対応付けを行うことにより、各可変性に大きく影響を受けてきたソフトウェア部品のみを抽出してグループ化を行うことが可能になる。
【００３８】
図１４は、構成情報データ５として出力されるソフトウェア製品系列の可変点データの詳細である。本実施例の分析結果５０では、可変点として２つの因子が抽出されている。因子１を例に取ると、その固有値は１.６、過去の変更履歴に対する寄与率は０.２８であり、この可変点に対応するソフトウェア部品はＳＷＣ８、ＳＷＣ１０，ＳＷＣ１７，ＳＷＣ２６である。
【００３９】
以上に説明したように、実施の形態によるソフトウェア製品系列分析装置によれば、ソフトウェア製品系列を構成するソフトウェア部品の変更履歴を数値化して因子分析を行うことによって、個別製品開発時に変更されたソフトウェア部品のグループを抽出することができ、製品間でのソフトウェアの可変性を反映したソフトウェア部品のグループを自動で分析できるという利点がある。
【産業上の利用可能性】
【００４０】
本発明は、複数のソフトウェア部品で構成されたソフトウェア製品に適用できる。
【図面の簡単な説明】
【００４１】
【図１】本発明の一実施の形態によるソフトウェア製品系列分析装置の構成例を示す図である。
【図２】ソフトウェア製品系列の変更履歴を示す図である。
【図３】変更履歴処理手段の処理の流れを示すフローチャートである。
【図４】二値化による変更履歴数値化処理の流れを示すフローチャートである。
【図５】変更行数による変更履歴数値化処理の流れを示すフローチャートである。
【図６】数値化された製品系列変更履歴を示す図である。
【図７】ソフトウェアバージョン管理システムとの通信手段を備えたソフトウェア製品系列分析装置の構成例を示す図である。
【図８】本発明の実施の形態による因子分析における分析データの構成を示す図である。
【図９】因子分析の結果として、因子の固有値と累積率を示す図である。
【図１０】因子分析の結果として、各因子に対するＳＷＣの因子得点を示す図である。
【図１１】可変性分析手段の処理の流れを示すフローチャートである。
【図１２】因子数判断手段の処理の流れを示すフローチャートである。
【図１３】因子とソフトウェア部品との対応関係分析手段の処理の流れを示すフローチャート図である。
【図１４】本発明によって分析されたソフトウェア製品系列の可変性情報を示す図である。
【符号の説明】
【００４２】
１  変更履歴データ
２  変更履歴処理手段
３  因子分析手段
４  可変性分析手段
５  構成情報データ
１０  変更履歴データ
２０  数値化変更履歴
３０  因子
３１  観測変数
３３  計算結果（Ｉ）
３４  計算結果（II）
５０  分析結果
９０  ソフトウェア製品系列分析装置
９１  通信手段
９２  ネットワーク
９３  ソフトウェアバージョン管理システム
【図１】
2009086791.tif 000003
【図２】
2009086791.tif 000004
【図３】
2009086791.tif 000005
【図４】
2009086791.tif 000006
【図５】
2009086791.tif 000007
【図６】
2009086791.tif 000008
【図７】
2009086791.tif 000009
【図８】
2009086791.tif 000010
【図９】
2009086791.tif 000011
【図１０】
2009086791.tif 000012
【図１１】
2009086791.tif 000013
【図１２】
2009086791.tif 000014
【図１３】
2009086791.tif 000015
【図１４】
2009086791.tif 000016