(57)【要約】【課題】過去のソフトウェア製品の開発実績および変更実績に基づいて、派生製品開発時に同時に再利用または変更すべきソフト部品を効率的に選択できるよう支援するソフトウェア分析装置を提供する。【解決手段】ソフトウェア既存製品に含まれる複数のソフト部品および前記複数のソフト部品間の関連性を分析するソフトウェア分析装置であって、前記ソフトウェア既存製品ごとに前記複数のソフト部品に関する情報および前記複数のソフト部品間に関する情報を有する既存製品構成情報から前記ソフトウェア既存製品に含まれる複数のソフト部品の組み合わせを数値的に表す製品系列構成情報を作成する製品系列分析手段と、前記製品系列構成情報に基づいてソフト部品間の関連性を数値的に定量化したソフト部品間距離を演算する部品間距離分析手段と、前記ソフト部品間距離に基づいて前記ソフト部品をグループ化する部品クラスタ分析手段と、前記製品系列分析手段と前記部品間距離分析手段と部品クラスタ分析手段による結果を出力する出力部と、を備える。【選択図】図５
2010113449.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア既存製品に含まれる複数のソフト部品および前記複数のソフト部品間の関連性を分析するソフトウェア分析装置であって、
前記ソフトウェア既存製品ごとに前記複数のソフト部品に関する情報および前記複数のソフト部品間に関する情報を有する既存製品構成情報から前記ソフトウェア既存製品に含まれる複数のソフト部品の組み合わせを数値的に表す製品系列構成情報を作成する製品系列分析手段と、
前記製品系列構成情報に基づいてソフト部品間の関連性を数値的に定量化したソフト部品間距離を演算する部品間距離分析手段と、
前記ソフト部品間距離に基づいて前記ソフト部品をグループ化する部品クラスタ分析手段と、
前記製品系列分析手段と前記部品間距離分析手段と部品クラスタ分析手段による結果を出力する出力部と、
を備えたことを特徴とするソフトウェア分析装置。
【請求項２】
前記既存製品構成情報は、前記複数のソフト部品のうち前記ソフトウェア既存製品が利用するものを抽出したソフト部品利用情報、該ソフト部品利用情報に含まれるソフト部品のバージョン情報、前記ソフトウェア既存製品の開発ベースとなった原製品情報および該原製品情報に含まれるソフト部品情報、のうち少なくともいずれか１つを有することを特徴とする請求項１に記載のソフトウェア分析装置。
【請求項３】
前記製品系列分析手段は、前記既存製品構成情報に基づき、前記ソフト部品利用情報を数値化することで前記製品系列構成情報を作成し、該製品系列構成情報を製品系列格納部へ出力することを特徴とする請求項２に記載のソフトウェア分析装置。
【請求項４】
前記製品系列分析手段は、前記既存製品構成情報に基づき、前記原製品情報および該原製品情報に含まれるソフト部品情報から変更されたソフト部品情報を数値化することで前記製品系列構成情報を作成し、該製品系列構成情報を製品系列格納部に出力することを特徴とする請求項２に記載のソフトウェア分析装置。
【請求項５】
前記部品間距離分析手段は、前記製品系列構成情報に基づき、ユークリッド距離、マンハッタン距離、角度、のうち少なくともいずれか１つを求めることで前記ソフト部品間距離を作成し、該ソフト部品間距離を部品間距離格納部に出力することを特徴とする請求項１に記載のソフトウェア分析装置。
【請求項６】
前記部品クラスタ分析手段は、前記ソフト部品間距離に基づき、該ソフト部品間距離が所定の値以下のソフト部品同士を前記ソフト部品グループとして作成し、部品クラスタ格納部に出力することを特徴とする請求項１に記載のソフトウェア分析装置。
【請求項７】
前記部品クラスタ分析手段は、前記ソフト部品間距離を樹形図へと変換し、
前記出力部は、前記樹形図を表示することを特徴とする請求項１に記載のソフトウェア分析装置。
【請求項８】
さらに、
前記複数のソフト部品から該ソフト部品に関する情報および前記ソフト部品のバージョン情報を取得してソフト部品候補とするソフト部品選択手段と、
前記出力部によって表示される前記ソフト部品候補のうちユーザが選択したソフト部品を格納する利用ソフト部品格納部と、
前記ソフト部品間距離に基づき、前記ユーザが選択した前記ソフト部品に付随して利用される蓋然性が高いソフト部品を推薦ソフト部品として検索するソフト部品検索手段と、
前記推薦ソフト部品を格納する推薦ソフト部品格納部と、
を有し、
前記出力部はさらに前記ソフト部品選択手段と前記利用ソフト部品格納部と前記推薦ソフト部品格納部の結果を出力することを特徴とする請求項１に記載のソフトウェア分析装置。
【請求項９】
前記出力部は、前記推薦ソフト部品を前記ソフト部品候補に加えて表示することを特徴とする請求項８に記載のソフトウェア分析装置。
【請求項１０】
車両制御用ソフトウェア分析装置であって、
前記ソフト部品は、
マイクロプロセッサまたはＬＳＩを制御するための複数の基本ソフト部品と、
センサ制御と制御対象状態推定と制御対象目標状態決定とアクチュエータ制御のうちの少なくとも１つを処理する複数の制御ソフト部品と、
を有し、
前記部品クラスタ分析手段は、前記基本ソフト部品のみで構成される基本ソフト部品グループ、前記制御ソフト部品のみで構成される制御ソフト部品グループ、前記基本ソフト部品および前記制御ソフト部品が混在する横断ソフト部品グループ、のうちの少なくとも１つを有することを特徴とする請求項１に記載のソフトウェア分析装置。
【請求項１１】
コンピュータを請求項１に記載のソフトウェア分析装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、開発済みのソフトウェアを分析するソフトウェア分析装置に関する。
【背景技術】
【０００２】
新しいソフトウェアを開発する場合や、既存のソフトウェアのバージョンを更新する場合等の開発実体では、開発済みのソフトウェアからソフト部品を集めて再利用するソフト ウェア分析技術が知られている。
【０００３】
本ソフトウェア分析技術の適用対象として、自動車、携帯電話等の機器に組み込んで対象を制御する、いわゆる組み込みソフトウェアがある。このような組込みソフトウェアによる制御は、従来の機械的機構や電気回路による方式に比べて柔軟かつ高度な制御が実現できること、ソフトウェアの部分的な変更によって多くの派生製品を開発できることが利点として挙げられる。
【０００４】
従来は対象製品ごとにソフトウェアを開発したり、類似の製品に基づいて差分を開発したりしていた。しかし、組込みソフトウェアの適用範囲拡大に伴い、派生製品数およびソフトウェアの規模が増大したため、開発効率の大幅な向上が要求されている。特に、派生製品開発における再利用型開発および差分変更型開発の効率化が求められている。
【０００５】
これを実現するための技術として、たとえば特許文献１では、複数のパーツからなる設計情報を構築するための部品の構成を階層構造とし、各部品に内容の説明情報等の関係情報を付帯させ、部品単位でシミュレートする技術が開示されている。
【０００６】
また、特許文献２では、ソフトウェア分析装置として、ソースコードからソフト部品のインタフェースを分析して、ソフト部品間の依存関係を分析する技術が開示されている。
特許文献２参照）。
【０００７】
【特許文献１】特開平８−２８６９０１号公報
【特許文献２】特開平９−１３４２８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１は、各ソフト部品単位での再利用では、ソフト部品数が数千を超えるような大規模ソフトウェアには十分ではない。 
【０００９】
一般的に、ソフトウェアの部品化は、開発工程の並行化や再利用性の向上と言う効果がある一方で、ソフト部品の組み合わせ数が指数関数的に増加すると言う問題がある。例えば、２０個のソフト部品で構成されるソフトウェア製品の場合、それぞれのソフト部品を利用するか否かと言う選択だけでも、組み合わせ数は１００万通りを超える。車両制御ソフトウェアのように大規模化が進んでいるソフトウェアの場合、ソフト部品数が１０００個を超えることもあり、その組み合わせ数は膨大なものとなる。そのため、派生製品開発時にソフト部品の全ての組み合わせを求めることは不可能である。
【００１０】
また、特許文献２では、インタフェース依存関係は無いが、同時に利用または変更しなければならないというソフト部品の関連性は分析出来ない。
【００１１】
例えば自動車制御ソフトウェアは制御アプリケーション、ミドルウェア、基本ソフトウェアと言うように何段階にも階層化されている。そのため、ＣＡＮ（Control Area Network）通信システムを用いる制御アプリケーションソフト部品は一旦ミドルウェアソフト部品を経由してＣＡＮ通信ソフト部品と接続される。この場合、制御アプリケーションソフト部品とＣＡＮ通信ソフト部品との間に直接のインタフェース依存関係は無いが、制御アプリケーションソフト部品を再利用する場合にはＣＡＮ通信ソフト部品もあわせて再利用する必要がある。
【００１２】
本発明は、このような状況に鑑みてなされたものであり、過去のソフトウェア製品の開発実績および変更実績に基づいて、派生製品開発時に同時に再利用または変更すべきソフト部品を効率的に選択できるよう支援するソフトウェア分析装置を提供するものである。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、本発明は、既存製品の構成情報に基づいて、ソフト部品の同時利用関係および同時変更関係を分析し、複数のソフト部品間の関連性を定量的に評価すると共に、派生製品開発時に同時に利用または変更される可能性が高いソフト部品を自動でグループ化する。
【００１４】
すなわち、本発明のソフトウェア分析装置は、ソフトウェア既存製品に含まれる複数のソフト部品および前記複数のソフト部品間の関連性を分析するソフトウェア分析装置であって、前記ソフトウェア既存製品ごとに前記複数のソフト部品に関する情報および前記複数のソフト部品間に関する情報を有する既存製品構成情報から前記ソフトウェア既存製品に含まれる複数のソフト部品の組み合わせを数値的に表す製品系列構成情報を作成する製品系列分析手段と、前記製品系列構成情報に基づいてソフト部品間の関連性を数値的に定量化したソフト部品間距離を演算する部品間距離分析手段と、前記ソフト部品間距離に基づいて前記ソフト部品をグループ化する部品クラスタ分析手段と、前記製品系列分析手段と前記部品間距離分析手段と部品クラスタ分析手段による結果を出力する出力部と、を備える。
【００１５】
この場合において、さらに、前記複数のソフト部品から該ソフト部品に関する情報および前記ソフト部品のバージョン情報を取得してソフト部品候補とするソフト部品選択手段と、前記出力部によって表示される前記ソフト部品候補のうちユーザが選択したソフト部品を格納する利用ソフト部品格納部と、前記ソフト部品間距離に基づき、前記ユーザが選択した前記ソフト部品に付随して利用される蓋然性が高いソフト部品を推薦ソフト部品として検索するソフト部品検索手段と、前記推薦ソフト部品を格納する推薦ソフト部品格納部と、を有し、前記出力部はさらに前記ソフト部品選択手段と前記利用ソフト部品格納部と前記推薦ソフト部品格納部の結果を出力してもよい。
【発明の効果】
【００１６】
本発明によれば、過去のソフトウェア製品の開発実績および変更実績に基づいて、派生製品開発時に同時に再利用または変更すべきソフト部品を効率的に選択することが出来る。
また、ソフト部品の組み合わせ数を削減することができる。
【発明を実施するための最良の形態】
【００１７】
本発明は、既存製品の構成情報に基づいて、ソフト部品の同時利用関係および同時変更関係を分析し、複数のソフト部品間の関連性を定量的に評価すると共に、派生製品開発時に同時に利用または変更される可能性が高いソフト部品を自動でグループ化するソフトウェア分析装置に関するものである。
【００１８】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は、本発明を実現するための一例にすぎず、本発明の技術的範囲を限定するものではないことに留意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
【００１９】
＜ソフトウェア分析装置の構成及び動作概略＞
本発明の実施形態に係るソフトウェア分析装置の概略構成を図１に示す。本実施の形態によるソフトウェア分析装置は、ソフトウェア分析部１、表示装置４、および入力装置５を備える。このうち、ソフトウェア分析部１は、ソフト部品分析手段２、および再利用支援手段３を備える。また、ソフト部品分析手段２は、製品履歴格納部２１、ソフト部品格納部２２、ソフト部品関連度分析手段２３、そして部品クラスタ格納部２４を備える。再利用支援手段３は、ソフト部品選択手段３１、利用ソフト部品格納部３２、ソフト部品検索手段３３、および推薦ソフト部品格納部３４を備える。
【００２０】
次に、図１に示すソフトウェア分析装置を構成する各手段の動作について、説明する。
ソフト部品分析手段２は、既存ソフト部品間の関連性を分析する。再利用支援手段３は、ユーザ７に対して同時に再利用および同時に変更する蓋然性が高いソフト部品を推薦する。
【００２１】
製品履歴格納部２１は、既にリリース済みの既存ソフトウェア製品の構成情報を格納する。ソフト部品格納部２２は、開発済みの既存ソフト部品を格納する。ソフト部品関連度分析手段２３は、製品履歴格納部２１に格納された既存ソフトウェア製品の構成情報、およびソフト部品格納部２２に格納された既存ソフト部品に基づいて、既存ソフトウェア製品の開発履歴におけるソフト部品間の関連度に変換する。部品クラスタ格納部２４は、ソフト部品関連度分析手段２３が変換したソフト部品間の関連度を格納する。
【００２２】
ソフト部品選択手段３１は、ソフト部品格納部２２を用いて、新規派生製品開発時に、再利用および変更するソフト部品を選択する手段を、表示装置４と入力装置５を通じてユーザ７に提供する。利用ソフト部品格納部３２は、ソフト部品選択手段３１でユーザ７が選択した再利用ソフト部品および変更ソフト部品を格納する。ソフト部品検索手段３３は、利用ソフト部品格納部３２に格納された再利用ソフト部品および変更ソフト部品を用い、部品クラスタ格納部２４に格納されたソフト部品間関連度に基づいて、同時に再利用および変更されたことの多いソフト部品を検索し、推薦ソフト部品として抽出する。推薦ソフト部品格納部３４は、ソフト部品検索手段３３が抽出した推薦ソフト部品を格納する。
【００２３】
＜ソフト部品分析手段＞
本発明のソフトウェア分析部１の構成要素である、ソフト部品分析手段２について説明する。
本ソフト部品分析手段が必要となる背景については、既存製品であるソフトウェアを再利用する際に、その構成ソフト部品相互間には依存関係を有することがあり、必ずしも個々独立して利用されるとは限らないという経験則があることに基づく。そのような依存関係について、図２を用いて説明する。
【００２４】
本発明の実施形態に係るソフトウェア分析部１が適用される具体例として、自動車用エンジン制御ソフト６を図２に示す。エンジン制御ソフト６は、制御アプリケーションソフト６１、基本ソフト６２、およびアプリケーションプログラムインタフェース（ＡＰＩ）６３を備える。制御アプリケーションソフト６１は、燃料制御ソフト部品６１１、点火制御ソフト部品６１２、故障診断ソフト部品６１３、および変速機制御ソフト部品６１４を備える。基本ソフト６２は、マイコン用ソフト部品６２１、通信用ソフト部品６２２、入出力用ソフト部品６２３、およびクランクセンサ用ソフト部品６２４を備える。
【００２５】
ここで、エンジン制御ソフト６に基づいて派生製品を開発する場合を考える。例えば、４気筒用エンジン制御ソフトから３気筒用に変更する場合には、気筒数によって処理が変わる点火制御ソフト部品６１２、および入出力用ソフト部品６２３の両方を同時に変更しなければならない。また、自動変速機を備える車両向けには変速機制御ソフト部品６１４が必要だが、手動変速機を備える車両向けには変速機制御ソフト部品６１４が不要である。
【００２６】
このように、既存ソフトウェアを再利用する時、複数のソフト部品を同時に変更したり、ソフト部品の利用の有無を決定したりしなければならないことがある。
【００２７】
また、図２では、１つの既存製品から派生する１の製品の例を説明したが、実際の開発実体においては、開発ベースとなるソフトウェアの原製品から複数の派生製品が生まれたり、当該派生製品がさらに更新されたりというような、複雑化した再利用の分岐が生じている。そのような開発製品の関係の一例を表したものが図３である。図３は、本発明の実施形態に係るソフトウェア分析部１が適用されるソフトウェアの開発ツリー２１１を示す図である。Ａ、Ｂ、Ｃ、Ｄは製品リリースを示しており、製品リリース間をつなぐ矢印は開発の流れを示している。例えば、製品Ｂは製品Ａをベースとして開発されていることを示している。また、エンジン制御システムのような組込み制御ソフトウェアにおいては、異なるハードウェア構成を持つ機器向けの開発が並行することがある。そのため、製品Ｃおよび製品Ｄは両方とも製品Ｂをベース製品として開発されている。
【００２８】
以上から、既存製品の再利用を繰り返すことで新たな製品を開発する開発実体においては、既存製品ごとに利用するソフト部品の有無、および変更情報を記録し、ソフト部品相互間での関連性や重複ソフト部品を把握しておくことが、次製品開発時の効率化へつながると予想される。
【００２９】
そこで、上記開発状況を踏まえ、新製品開発または既存製品の発展を行う際に効率化を図るため、既存製品における部品構成およびバージョン情報をまとめた既存製品構成情報が必要となる。本発明の実施形態に係る既存製品構成情報２１２を図４に示す。列方向は既存製品Ａ、Ｂ、Ｃ、Ｄを示し、行方向は各製品を構成するソフト部品を示している。この例では、ソフト部品は、ａ、ｂ、ｃ、ｄ、ｅ、ｆの６種類である。また、製品名とソフト部品名が交差している箇所はソフト部品名のバージョン番号を示している。例えば、製品Ｂにおけるソフト部品ｃはバージョン２.０である。なお、製品Ｃにおけるソフト部品ｂのように、ソフト部品が用いられていない場合には「―」で示す。この既存製品構成情報は、製品履歴格納部２１に格納される。図４からも明らかなように、複数のソフト部品を有する既存製品から派生製品を製造する場合、各既存製品のソフト部品利用状況、ソフト部品バージョン情報、ソフト部品変更状況、を分析し、同時利用可能性の高いソフト部品や同時変更の可能性の高いソフト部品等を認識しておくことが、効率化への手がかりとなる。
【００３０】
以上の様に既存製品構成情報を作成することによって、多品種同時開発が行われたソフトウェア製品の構成情報を管理することが可能になる。
【００３１】
以下、上記既存製品構成情報に記された過去の既存製品の開発実績および変更実績から、新製品開発時において同時に再利用または変更すべきソフト部品を、自動的に検出し、グループ化するまでの、ソフト部品分析手段２が行う処理の詳細について説明する。
【００３２】
＜ソフト部品分析手段の構成及び具体的処理内容＞
本発明の実施形態に係るソフト部品分析手段２の詳細な構成を図５に示す。
ソフト部品分析手段２は製品系列格納部２１、ソフト部品格納部２２、ソフト部品関連度分析手段２３、および部品クラスタ格納部２４を備える。
【００３３】
ソフト部品関連度分析手段２３は、製品系列の構成情報を数値化する製品系列分析手段２３１、前記製品系列分析手段が数値化した構成情報を格納する製品系列格納部２３２、前記数値化した製品系列構成情報に基づいてソフト部品間距離を分析する部品間距離分析手段２３３、前記ソフト部品間距離を格納する部品間距離格納部２３４、および前記ソフト部品間距離に基づいてソフト部品をグループ化する部品クラスタ分析手段２３５を備える。
【００３４】
（製品系列分析手段の処理）
上述したソフト部品分析手段２を構成する要素のうち、製品系列分析手段２３１が行う処理について説明する。本発明の実施形態に係る製品系列分析手段２３１が行う製品系列分析処理を示すフローチャートを図６に示す。ここでは、上記製品履歴格納部２１に格納された既存製品構成情報と、ソフト部品格納部２２に格納された既存製品のソフト部品に関する情報に基づき、既存製品を構成するソフト部品の“利用の有無”および“変更の有無”について、既存製品構成情報に含まれるデータの数値化を行い、製品系列構成情報を作成する。ここで作成された製品系列構成情報は、次処理となる数値計算による関連性分析を行う際に用いられる。
【００３５】
ステップＳ２３１０１から処理が開始される。ステップＳ２３１０２では、分析対象となる既存製品の製品番号の初期化処理を行って初期値を入力する。ステップＳ２３１０３では、分析対象となるソフト部品（ＳＷＣ）の番号の初期化処理を行って初期値を入力する。ステップＳ２３１０４では、既存製品履歴を数値化するのであるが、ソフト部品の利用状況を用いるか、変更状況を用いるか、によって処理が異なる。詳しくは後述する。ステップＳ２３１０５では、全てのソフト部品の判定が完了したかどうかを確認し、完了していなければステップＳ２３１０６に進み、完了していればステップＳ２３１０７に進む。ステップＳ２３１０６では、ソフト部品の番号を加算し、ステップＳ２３１０４の処理に進む。ステップＳ２３０１０７では、全ての製品の判定が完了したかどうかを確認し、完了していなければステップＳ２３１０８に進み、完了していればステップＳ２３１０９へ進む。ステップＳ２３１０８では、製品番号を加算し、ステップＳ２３１０３に進む。ステップＳ２３１０９では、処理を完了する。こうして作成された製品系列構成情報は、製品系列格納部２３２へ格納される。なお、作成された製品系列構成情報は、次処理となる数値計算による関連性分析を行う際に用いられる。
【００３６】
ここで、ソフト部品格納部２２に格納されたソフト部品のうち、各派生製品に利用されているソフト部品の利用の有無を数値化する場合について説明する。上述したステップＳ２３１０４の製品履歴数値化処理において、ソフト部品の利用状況を用いて数値化する場合の処理を示すフローチャートを図７に示す。ステップＳ２３１０４１から処理が開始される。ステップＳ２３１０４２では、分析対象となる既存製品が各ソフト部品を利用しているか否かを確認し、利用していればステップＳ２３１０４３に進み、利用していなければステップＳ２３１０４４に進む。ステップＳ２３１０４３では、既存製品構成情報を“１”に数値化する。ステップＳ２３１０４４では、既存製品構成情報を“０”に数値化する。ステップＳ２３１０４５で処理を完了する。
【００３７】
以上、製品系列分析処理およびソフト部品の利用状況を用いた製品履歴数値化処理によって作成された製品系列構成情報２３２１を図８に示す。例えば、製品Ｂにおけるソフト部品Ｃの欄は、ソフト部品を利用しているので“１”となる。
【００３８】
また、ソフト部品格納部２２に格納されたソフト部品のうち、各派生製品に利用されているソフト部品の変更の有無を数値化する場合について説明する。上述したステップＳ２３１０４の製品履歴数値化処理において、ソフト部品の変更状況を用いて数値化する場合の処理を示すフローチャートを図９に示す。ステップＳ２３１０４５から処理が開始される。ステップＳ２３１０４６では、既存製品から派生製品が開発される際に各ソフト部品が変更されているか否かを確認し、変更していればステップＳ２３１０４７に進み、変更していなければステップＳ２３１０４８に進む。ステップＳ２３１０４７では、既存製品構成情報を“１”に数値化する。ステップＳ２３１０４８では、既存製品構成情報を“０”に数値化する。ステップＳ２３１０４９では、処理を完了する。
【００３９】
以上、製品系列分析処理およびソフト部品の変更状況を用いた製品履歴数値化処理によって作成された製品系列構成情報２３２２を図１０に示す。原製品から派生製品を開発するにあたり、使用していた（していなかった）ソフト部品を使用しなくなった（することになった）もの、および使用していたソフト部品をバージョン更新して引き続き使用するものは、変更とされる。例えば、製品Ａをベースとして開発された製品Ｂ（図中ＡＢ欄）におけるソフト部品ｃの欄は、ソフト部品を変更しているので“１”となる。
【００４０】
以上のように、各既存製品を構成する各ソフト部品の利用状況および変更状況に基づき、製品系列構成情報を作成することで、異なるソフト部品の組み合わせで構成されている既存製品を一元的かつ数値的に扱うことができる。
【００４１】
（部品間距離分析手段の処理）
次に、上述したソフト部品分析手段２を構成する要素のうち、部品間距離分析手段２３３が行う処理について説明する。本発明の実施形態に係る部品間距離分析手段２３３の処理を示すフローチャートを図１１に示す。ここでは、上記製品系列格納部２３２に格納された製品系列構成情報に基づき、既存製品を構成するソフト部品相互間の部品間距離を演算する。ここで作成された部品間距離は、次処理となるソフト部品のグループ化を行う際に用いられる。
【００４２】
ステップＳ２３３０１から処理が開始される。なお、本処理では２つのソフト部品間の距離を順次分析していくので、それぞれソフト部品（１）、ソフト部品（２）として処理中で扱う。ステップＳ２３３０２では、ソフト部品（１）の番号を初期化する。ステップＳ２３３０３では、ソフト部品（２）の番号を初期化する。ステップＳ２３３０４では、ソフト部品（１）とソフト部品（２）の距離を演算するのであるが、ユークリッド距離を用いるか、角度を用いるか、によって処理が異なる。詳しくは後述する。ステップＳ２３３０５では、ソフト部品（２）として全てのソフト部品を分析したか否かを判定する。分析していなければステップＳ２３３０６に進み、分析が完了していればステップＳ２３３０７に進む。ステップＳ２３３０６では、ソフト部品（１）の番号を加算し、ステップＳ２３３０４に進む。ステップＳ２３３０７では、ソフト部品（１）として全てのソフト部品を分析したか否かを判定する。分析していなければステップＳ２３３０８に進み、分析が完了していればステップＳ２３３０９に進む。ステップＳ２３３０８ではソフト部品（１）の番号を加算し、ステップＳ２３３０３に進む。ステップＳ２３３０９では、処理を完了する。こうして演算された部品間距離は、部品間距離格納部２３４へ格納される。なお、作成された部品間距離は、次処理となるソフト部品のグループ化を行う際に用いられる。
【００４３】
ここで、ソフト部品格納部２２に格納されたソフト部品のうち、各派生製品に利用されているソフト部品相互間の距離を“ユークリッド距離”によって演算する場合について説明する。上述したステップＳ２３３０４においてユークリッド距離によって部品間距離を演算する場合のフローチャートを図１２に示す。ステップＳ２３３０４１から処理が開始される。ステップＳ２３１０４２では、部品間距離としてユークリッド距離によって関連度を求める。その場合の計算式を（式１）に示す。ステップＳ２３３０４３では、処理を終了する。なお、ユークリッドの距離の代わりにマンハッタン距離を用いるようにしても良い。その場合の計算式を（式２）に示す。なお、式中の、SWC1およびSWC2はソフト部品１およびソフト部品２を、Dist(SWC1, SWC2)はソフト部品１とソフト部品２との距離を、swc1iおよびswc2iはソフト部品１およびソフト部品２における製品ｉでの数値化された既存製品構成情報（０または１）を表す。
【００４４】
2010113449.tif 000003
【００４５】
2010113449.tif 000004
【００４６】
また、ソフト部品格納部２２に格納されたソフト部品のうち、各派生製品に利用されているソフト部品相互間の距離を“角度”によって演算する場合について説明する。上述したステップＳ２３３０４において角度によって部品間距離を演算する場合のフローチャートを図１３に示す。ステップＳ２３３０４４から処理が開始される。ステップＳ２３１０４５では部品間距離として角度によって関連度を求める。その場合の計算式を（式３）に示す。なお、式中の「・」はベクトルの内積を表す。ステップＳ２３３０４６では、処理を終了する。
【００４７】
2010113449.tif 000005
【００４８】
上述したステップＳ２３３０４において、各既存製品を構成する各ソフト部品の利用状況を用いた製品系列構成情報２３２１を基に、ソフト部品相互間の距離をユークリッド距離によって演算した結果を図１４に示す。図１４に示すように、製品系列構成情報２３２１を用いてソフト部品間距離分析手段２３３が距離を演算し、ソフト部品間距離２３４１を決定する。式２３３１は、ソフト部品ｅとソフト部品ｆの間の距離演算式である。図１４のソフト部品間距離２３４１に示すように、全く同じ選択パターンを持つソフト部品との距離は０であり、一製品のみ異なる場合は距離１となる。また、１００製品分異なる場合には距離１０となる。
【００４９】
同様に、各既存製品を構成する各ソフト部品の変更状況を用いた製品系列構成情報２３２２を基に、ソフト部品相互間の距離を演算することも可能である。また、ユークリッド距離ではなく、マンハッタン距離あるいは角度によってソフト部品相互間の距離を演算することも可能である。
【００５０】
以上のように、ソフト部品間の関連性を数値化し、距離の概念を用いることによって、ソフト部品間の関連性を数値的に定量化することが可能になる。
【００５１】
（部品クラスタ分析手段の処理）
次に、上述したソフト部品分析手段２を構成する要素のうち、部品クラスタ分析手段２３５が行う処理について説明する。本発明の実施形態に係る部品クラスタ分析手段２３５の処理を図１５に示す。ここでは、上記部品間距離格納部２３４へ格納されたソフト部品間距離２３４１に基づき、ソフト部品グループ２４１を決定する。こうして決定されたソフト部品グループ２４１は、部品クラスタ格納部２４へ格納される。ここで作成されたソフト部品グループ２４１は、次処理としてソフト部品を再利用する際の支援のため、ユーザへ提示される。
【００５２】
具体的には、異なるソフト部品間での距離が近いソフト部品同士をクラスタ化することによってグループ化を行う。クラスタ化の手法は、例えば、最短距離法、最長距離法、メディアン法、重心法、群平均法、可変法、ウォード法などを用いる。図１５のソフト部品グループ２４１では、ソフト部品ａとソフト部品ｃの距離が０のため、距離０のグループを形成する。また、ソフト部品ａおよびｃ、ソフト部品ｂ、ソフト部品ｅの距離は１であり、距離１のグループを形成する。また、ソフト部品ｄ、ソフト部品ｆの距離は１であり、距離１のグループを形成する。加えて、上記で得られたソフト部品グループ２４１を樹形図で表現したものを図１６に示す。
【００５３】
以上のように、ソフト部品利用状況を用いた既存製品構成情報２３２１から得られたソフト部品間距離２３４１に基づき、複数のソフト部品をグループ化することで、各既存製品の同時利用状況を反映したソフト部品のグループ２４１を形成することが可能になる。
【００５４】
同様に、ソフト部品変更状況を用いた既存製品構成情報２３２２から得られたソフト部品間距離に基づき、複数のソフト部品をグループ化する場合には、各既存製品の同時変更状況を反映したソフト部品のグループ（図示しない）を形成することも可能になる。
【００５５】
＜再利用支援手段＞
本発明のソフトウェア分析部１の構成要素である、再利用支援手段３について説明する。
（ソフト部品選択手段）
まず、上記再利用支援手段３を構成する要素のうち、ソフト部品選択手段３１が行う処理について説明する。本発明の実施形態に係るソフト部品選択手段３１の処理を図１７に示す。ソフト部品選択手段３１は、ソフト部品格納部２２から既存ソフト部品とそのバージョン情報を取得し、表示装置４に、ソフト部品選択手段３１の操作画面となるソフト部品選択画面３１１を表示する。ユーザ７は、新規製品開発時において、表示されたソフト部品選択画面３１１から新規製品で利用するソフト部品とそのバージョンを選択する。図１７の例では、ユーザ７は、ソフト部品ａ、ｂはバージョン３.０を選択し、ソフト部品ｃは選択せず、ソフト部品ｄ、ｅ、ｆはバージョン１.０を選択している。ユーザにより選択された利用ソフト部品３２１は、利用ソフト部品格納部３２に格納される。
【００５６】
（ソフト部品検索手段）
次に、上述した再利用支援手段３を構成する要素のうち、ソフト部品検索手段３３が行う処理について説明する。本発明の実施形態に係るソフト部品検索手段３３の処理を図１８に示す。ソフト部品検索手段３３は、利用ソフト部品格納部３２に格納された利用ソフト部品３２１に登録された利用ソフト部品について、部品クラスタ格納部２４に格納された「各既存製品の同時利用状況を反映したソフト部品のグループ２４１」を分析し、部品間距離が所定の値以下のものを抽出する。本実施形態では、部品間距離０を閾値とする。利用ソフト部品３２１ではソフト部品ａが登録され、ソフト部品グループ２４１ではソフト部品ａとソフト部品ｃとが距離０のグループとして登録されているため、ソフト部品ｃが同時利用ソフト部品候補３４１として抽出される。
【００５７】
同様に、利用ソフト部品格納部３２に格納された利用ソフト部品３２１に登録された利用ソフト部品について、部品クラスタ格納部２４に格納された「各既存製品の同時変更状況を反映したソフト部品のグループ（図示しない）」を分析し、同時利用ソフト部品候補が抽出される。
【００５８】
以上のように、新規製品開発時に、既存製品において同時利用および同時変更され得るソフト部品間距離を参照することで、ユーザが選択した利用ソフト部品３２１について、同時利用する蓋然性が高いソフト部品をユーザに提示することが出来、ソフト部品選択作業を効率化することが出来る。
【００５９】
＜まとめ＞
本発明は、複数のソフトウェア部品で構成されたソフトウェア製品に適用することができる。本発明をソフトウェア製品に適用することで、既存製品の構成情報に基づいたソフト部品の同時利用関係および同時変更関係が分析され、複数のソフト部品間の関連性が定量的に評価される。加えて、派生製品開発時に同時に利用または変更される可能性が高いソフト部品が自動でグループ化されることで、過去のソフトウェア製品の開発実績および変更実績に基づいて派生製品開発時に同時に再利用または変更すべきソフト部品を、ユーザが効率的に選択することが出来る。
【００６０】
また、ソフト部品の組み合わせ数が指数関数的に増加すると言う問題に関しても、本発明の実施形態に係るソフトウェア分析装置では、まず既存製品の開発履歴に基づいてソフト部品間の関連性を評価したうえで、個々バラバラであったソフト部品を同時利用または同時変更される可能性の高いソフト部品のグループとする。したがって、当該グループ同士を組み合わせることで、当初よりも組み合わせ数を削減することができる。
【００６１】
さらに、本発明は、車両制御用ソフトウェアに含まれるソフト部品についても応用可能である。車両制御ソフトウェアとは具体的には、エンジンやモータを制御するパワートレイン制御ソフトウェア、ステアリングやブレーキを制御するシャシ制御ソフトウェア、ドアロック、パワーウィンドウや照明などを制御するボディ制御ソフトウェアを指す。
【００６２】
例えばパワートレイン制御ソフトウェアは、マイクロプロセッサやＬＳＩで構成される電子制御装置に搭載されており、エンジン等に設置されたセンサ（例：回転数センサ）を入力とし、エンジンの運転状態を推定するとともに、運転者の操作に基づいてエンジンの目標状態を決定して、目標状態を実現する為に必要なアクチュエータ（例：スロットル）操作を行う。エンジン制御システムは、同一のエンジン型式でも搭載される車種によって目標状態が異なったり、生産時期によって使用するセンサやアクチュエータが変更されたりすることがある。このような車両制御ソフトウェアに対して本発明のソフトウェア分析装置を適用することにより、派生製品開発時に同時に再利用または変更されるソフト部品をグループ化して組み合わせ数を削減するとともに、ユーザがソフト部品を効率的に選択することが出来る。
【００６３】
なお、本発明は、実施形態の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フロッピィ（登録商標）ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【００６４】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
【００６５】
また、実施の形態の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することにより、それをシステム又は装置のハードディスクやメモリ等の記憶手段又はＣＤ-ＲＷ、ＣＤ-Ｒ等の記憶媒体に格納し、使用時にそのシステム又は装置のコンピュータ(又はＣＰＵやＭＰＵ)が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしても良い。
【図面の簡単な説明】
【００６６】
【図１】本発明の一実施形態によるソフトウェア分析装置の構成例を示す図である。
【図２】エンジン制御用ソフトウェアの構成を示す図である。
【図３】ソフトウェア製品の開発ツリーを示す図である。
【図４】製品履歴格納部に格納される既存製品構成情報を示す図である。
【図５】ソフト部品分析手段の構成を示す図である。
【図６】製品系列分析手段の処理を示すフローチャートである。
【図７】ソフト部品利用状況を用いた製品履歴数値化処理を示すフローチャートである。
【図８】ソフト部品利用状況を用いた製品系列構成情報を示す図である。
【図９】ソフト部品変更状況を用いた製品履歴数値化処理を示すフローチャートである。
【図１０】ソフト部品変更状況を用いた製品系列構成情報を示す図である。
【図１１】部品間距離分析手段の処理を示すフローチャートである。
【図１２】ユークリッド距離を用いた部品間距離分析手段の処理を示すフローチャート図である。
【図１３】角度を用いた部品間距離分析手段の処理を示すフローチャート図である。
【図１４】製品系列構成情報を用いた部品間距離演算処理を示す図である。
【図１５】部品クラスタ分析手段の処理を示す図である。
【図１６】部品クラスタ分析結果の樹形図による表示図である。
【図１７】ソフト部品分析手段を示す図である。
【図１８】ソフト部品検索手段を示す図である。
【符号の説明】
【００６７】
１…ソフトウェア分析部、２…ソフト部品分析手段、３…再利用支援手段、４…表示装置、５…入力装置、６…エンジン制御ソフトウェア、７…ユーザ、２１…製品履歴格納部、２２…ソフト部品格納部、２３…ソフト部品関連度分析手段、２４…部品クラスタ格納部、３１…ソフト部品選択手段、３２…利用ソフト部品格納部、３３…ソフト部品検索手段、３４…推薦ソフト部品格納部、２３１…製品系列分析手段、２３２…製品系列格納部、２３３…部品間距離分析手段、２３４…部品間距離格納部、２３５…部品クラスタ分析手段。
【図１】
2010113449.tif 000006
【図２】
2010113449.tif 000007
【図３】
2010113449.tif 000008
【図４】
2010113449.tif 000009
【図５】
2010113449.tif 000010
【図６】
2010113449.tif 000011
【図７】
2010113449.tif 000012
【図８】
2010113449.tif 000013
【図９】
2010113449.tif 000014
【図１０】
2010113449.tif 000015
【図１１】
2010113449.tif 000016
【図１２】
2010113449.tif 000017
【図１３】
2010113449.tif 000018
【図１４】
2010113449.tif 000019
【図１５】
2010113449.tif 000020
【図１６】
2010113449.tif 000021
【図１７】
2010113449.tif 000022
【図１８】
2010113449.tif 000023