(57)【要約】【課題】ソフトウェア資産の蓄積方法を改善することを目的とする。【解決手段】管理支援装置１００は、ソースコード１４１の一部または全部をソフトウェア資産として管理する。コスト算出部１２０は、解析結果１４２と資産情報１４３とに基づいて、切替方式により生成されるソフトウェア資産の管理の困難さを数値化した資産維持コストを算出する。解析結果１４２は、ソースコード１４１において複数のバリエーションに変更可能な可変部分の情報を含む。資産情報１４３は、可変部分を切り替える切替方式に対応する可変部分の特性を表す。結果出力部１３０は、資産維持コストを含む管理支援情報１３１をユーザに通知する。【選択図】図１
2019164723.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードの一部または全部をソフトウェア資産として管理する管理支援装置において、
前記ソースコードの解析結果であって、前記ソースコードにおいて複数のバリエーションに変更可能な可変部分の情報を含む解析結果と、前記可変部分を切り替える切替方式に対応する前記可変部分の特性を表す資産情報とに基づいて、前記切替方式により生成されるソフトウェア資産の管理の困難さを数値化した資産維持コストを算出するコスト算出部と、
前記資産維持コストを含む管理支援情報をユーザに通知する結果出力部と
を備えた管理支援装置。
【請求項２】
前記コスト算出部は、
前記可変部分において共通なクローンコードの行数と数を抽出し、前記クローンコードの行数と数に基づいて、前記可変部分の管理の困難さを数値化したクローンコストを算出し、前記クローンコストを用いて前記資産維持コストを算出する請求項１に記載の管理支援装置。
【請求項３】
前記コスト算出部は、
前記可変部分における前記複数のバリエーションの分岐点である可変ポイントの数を抽出し、前記可変ポイントの数に基づいて、前記可変部分の管理の困難さを数値化した可変ポイントコストを算出し、前記可変ポイントコストを用いて前記資産維持コストを算出する請求項１または２に記載の管理支援装置。
【請求項４】
前記コスト算出部は、
前記ソースコードにおいて論理的に通らないデッドコードの数を抽出し、前記デッドコードの数に基づいて、前記可変部分の管理の困難さを数値化したデッドコードコストを算出し、前記デッドコードコストを用いて前記資産維持コストを算出する請求項１から３のいずれか１項に記載の管理支援装置。
【請求項５】
前記管理支援装置は、
前記ソースコードの過去の変更実績を集計する変更実績集計部を備え、
前記コスト算出部は、
前記変更実績に基づいて、前記資産維持コストを算出する請求項１から４のいずれか１項に記載の管理支援装置。
【請求項６】
前記管理支援装置は、
前記ソースコードの将来の変更予測を取得する変更予測取得部を備え、
前記コスト算出部は、
前記変更予測に基づいて、前記資産維持コストを算出する請求項１から５のいずれか１項に記載の管理支援装置。
【請求項７】
前記管理支援装置は、
前記資産情報における前記可変部分の特性の改善案を取得し、前記資産情報を改善する改善案取得部を備え、
前記コスト算出部は、
改善された前記資産情報に基づいて、前記資産維持コストを算出する請求項１から６のいずれか１項に記載の管理支援装置。
【請求項８】
前記管理支援装置は、
前記資産情報に基づいて、前記資産情報における前記可変部分の特性に変更を加えた際の前記資産維持コストを再計算し、現在の前記資産維持コストよりも前記資産維持コストが低くなる前記資産情報における前記可変部分の特性の改善案を提案する改善案生成部を備えた請求項１から７のいずれか１項に記載の管理支援装置。
【請求項９】
ソースコードの一部または全部をソフトウェア資産として管理する管理支援装置の管理支援方法において、
コスト算出部が、前記ソースコードの解析結果であって前記ソースコードにおいて変更可能な可変部分の情報を含む解析結果と、前記可変部分を切り替える切替方式に対応する前記可変部分の特性を表す資産情報とに基づいて、前記切替方式により生成されるソフトウェア資産の管理の困難さを数値化した資産維持コストを算出し、
結果出力部が、前記資産維持コストを含む管理支援情報をユーザに通知する管理支援方法。
【請求項１０】
ソースコードの一部または全部をソフトウェア資産として管理する管理支援装置の管理支援プログラムにおいて、
前記ソースコードの解析結果であって前記ソースコードにおいて変更可能な可変部分の情報を含む解析結果と、前記可変部分を切り替える切替方式に対応する前記可変部分の特性を表す資産情報とに基づいて、前記切替方式により生成されるソフトウェア資産の管理の困難さを数値化した資産維持コストを算出するコスト算出処理と、
前記資産維持コストを含む管理支援情報をユーザに通知する結果出力処理と
をコンピュータである前記管理支援装置に実行させる管理支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、管理支援装置、管理支援方法および管理支援プログラムに関する。特に、ソフトウェア資産の管理を支援する管理支援装置、管理支援方法および管理支援プログラムに関する。
【背景技術】
【０００２】
近年、プロセッサおよびメモリといったハードウェアの進歩と、ユーザ要求の多様化に伴い、ソフトウェアの規模は急速に増大している。限られたリソースで大規模なソフトウェアを開発するために、既存製品からソースコードを流用しソフトウェアの開発量を抑制する取り組みが必要である。
ソースコードの流用率を高める取り組みとして、類似製品間あるいは類似機種間でソフトウェア構造を統一し、共通部分を極力多くするという取り組みがある。この取り組みでは、共通部分は製品間あるいは機種間に跨る共通資産である。そして、互いに異なる部分のみを個別に差し替えてソフトウェアを生成する。この取り組みの結果、ソフトウェア開発量を抑制しつつ、多様な製品あるいは機種を展開するという目的を達成することができる。ソースコードを共通部分と異なる部分とに切り分け、それらの組み合わせ、いわゆるインテグレショーンによって新たなソフトウェアを生成する技術は、ソフトウェアの再利用と呼ばれる。ソフトウェアの再利用の本質は、製品のフィーチャーとソースコード上の特定の資産とを紐付けることで、新たなソフトウェアを生成する際の効率を向上させることである。
【０００３】
特許文献１では、製品フィーチャーモデルと、現状のソフトウェアアーキテクチャモデルとをベースに、今後開発するソフトウェアのアーキテクチャモデルを作成する技術が開示されている。この技術では、ソフトウェアの再利用性の向上が図られる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２７６９１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１では、ソフトウェアを流用開発する際に、ソースコードのどの部分が再利用可能かを判断することができる。一方、ソフトウェア開発が完了した際に、ソースコードをどのように将来利用可能な資産として蓄積されるべきかに関しては言及されていない。このため、流用開発時にその都度アーキテクチャモデルを精査する必要があった。よって、多数の製品シリーズを１つのソフトウェア体系で管理する場合、再利用方法の検討のためのコストが高くつき、再利用による開発効率化という本来のメリットが薄れてしまうという課題があった。
【０００６】
本発明は、ソフトウェアの体系的な再利用のために重要となる、ソフトウェア資産の蓄積方法を改善することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る管理支援装置は、
ソースコードの一部または全部をソフトウェア資産として管理する管理支援装置において、
前記ソースコードの解析結果であって、前記ソースコードにおいて複数のバリエーションに変更可能な可変部分の情報を含む解析結果と、前記可変部分を切り替える切替方式に対応する前記可変部分の特性を表す資産情報とに基づいて、前記切替方式により生成されるソフトウェア資産の管理の困難さを数値化した資産維持コストを算出するコスト算出部と、
前記資産維持コストを含む管理支援情報をユーザに通知する結果出力部とを備えた。
【発明の効果】
【０００８】
本発明に係る管理支援装置では、切替方式により生成されるソフトウェア資産の管理の困難さを数値化した資産維持コストを含む管理支援情報をユーザに通知することができる。よって、本発明に係る管理支援装置によれば、ソフトウェア資産の蓄積方法を改善することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る管理支援装置の構成図。
【図２】実施の形態１に係る資産情報の例を示す図。
【図３】コンパイルスイッチによる切替方式の例を示す図。
【図４】ファイル差し替えによる切替方式の例を示す図。
【図５】設定値変更による切替方式の例を示す図。
【図６】実施の形態１に係る管理支援装置の動作を示すフロー図。
【図７】実施の形態１に係る管理支援情報の例を示す図。
【図８】実施の形態１の変形例に係る管理支援装置の構成図。
【図９】実施の形態２に係る管理支援装置の構成図。
【図１０】実施の形態２に係る管理支援装置の動作を示すフロー図。
【図１１】実施の形態３に係る管理支援装置の構成図。
【図１２】実施の形態３に係る管理支援装置の動作を示すフロー図。
【図１３】改善案が施された資産情報の例を示す図。
【図１４】実施の形態４に係る管理支援装置の構成図。
【図１５】実施の形態４に係る管理支援装置の動作を示すフロー図。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。
【００１１】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１を用いて、本実施の形態に係る管理支援装置１００の構成を説明する。
管理支援装置１００は、ソースコードの一部または全部をソフトウェア資産として管理する。管理支援装置１００は、コンピュータである。管理支援装置１００は、プロセッサ９１０を備えるとともに、メモリ９２１、補助記憶装置９２２、入力インタフェース９３０、出力インタフェース９４０、および通信装置９５０といった他のハードウェアを備える。プロセッサ９１０は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１２】
管理支援装置１００は、機能要素として、解析部１１０とコスト算出部１２０と結果出力部１３０と記憶部１４０とを備える。記憶部１４０には、ソースコード１４１と解析結果１４２と資産情報１４３とが記憶されている。
【００１３】
解析部１１０とコスト算出部１２０と結果出力部１３０の機能は、ソフトウェアにより実現される。記憶部１４０は、メモリ９２１に備えられる。
【００１４】
プロセッサ９１０は、管理支援プログラムを実行する装置である。管理支援プログラムは、解析部１１０とコスト算出部１２０と結果出力部１３０の機能を実現するプログラムである。
プロセッサ９１０は、演算処理を行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ９１０の具体例は、ＣＰＵ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００１５】
メモリ９２１は、データを一時的に記憶する記憶装置である。メモリ９２１の具体例は、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、あるいはＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
補助記憶装置９２２は、データを保管する記憶装置である。補助記憶装置９２２の具体例は、ＨＤＤである。また、補助記憶装置９２２は、ＳＤ（登録商標）メモリカード、ＣＦ、ＮＡＮＤフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤといった可搬記憶媒体であってもよい。なお、ＨＤＤは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略語である。ＳＤ（登録商標）は、Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌの略語である。ＣＦは、ＣｏｍｐａｃｔＦｌａｓｈ（登録商標）の略語である。ＤＶＤは、Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋの略語である。
【００１６】
入力インタフェース９３０は、マウス、キーボード、あるいはタッチパネルといった入力装置と接続されるポートである。入力インタフェース９３０は、具体的には、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。なお、入力インタフェース９３０は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）と接続されるポートであってもよい。管理支援装置１００は、入力インタフェース９３０を介して、ソースコード１４１、あるいは、解析結果１４２を開発者といったユーザから取得してもよい。
出力インタフェース９４０は、ディスプレイといった出力機器のケーブルが接続されるポートである。出力インタフェース９４０は、具体的には、ＵＳＢ端子またはＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。ディスプレイは、具体的には、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。管理支援装置１００は、出力インタフェース９４０を介して、管理支援情報１３１をディスプレイに表示する。
【００１７】
通信装置９５０は、レシーバとトランスミッタを有する。通信装置９５０は、無線で、ＬＡＮ、インターネット、あるいは電話回線といった通信網に接続している。通信装置９５０は、具体的には、通信チップまたはＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。管理支援装置１００は、通信装置９５０を介して、ソースコード１４１、あるいは、解析結果１４２を取得してもよい。あるいは、管理支援装置１００は、通信装置９５０を介して、管理支援情報１３１を外部の表示装置に表示してもよい。
【００１８】
管理支援プログラムは、プロセッサ９１０に読み込まれ、プロセッサ９１０によって実行される。メモリ９２１には、管理支援プログラムだけでなく、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。プロセッサ９１０は、ＯＳを実行しながら、管理支援プログラムを実行する。管理支援プログラムおよびＯＳは、補助記憶装置に記憶されていてもよい。補助記憶装置に記憶されている管理支援プログラムおよびＯＳは、メモリ９２１にロードされ、プロセッサ９１０によって実行される。なお、管理支援プログラムの一部または全部がＯＳに組み込まれていてもよい。
【００１９】
管理支援装置１００は、プロセッサ９１０を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、管理支援プログラムの実行を分担する。それぞれのプロセッサは、プロセッサ９１０と同じように、管理支援プログラムを実行する装置である。
【００２０】
管理支援プログラムにより利用、処理または出力されるデータ、情報、信号値および変数値は、メモリ９２１、補助記憶装置９２２、または、プロセッサ９１０内のレジスタあるいはキャッシュメモリに記憶される。
【００２１】
解析部１１０とコスト算出部１２０と結果出力部１３０の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えてもよい。また解析処理とコスト算出処理と結果出力処理の「処理」を「プログラム」、「プログラムプロダクト」または「プログラムを記録したコンピュータ読取可能な記憶媒体」に読み替えてもよい。
管理支援プログラムは、上記の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えた各処理、各手順あるいは各工程を、コンピュータに実行させる。また、管理支援方法は、管理支援装置１００が管理支援プログラムを実行することにより行われる方法である。
管理支援プログラムは、コンピュータ読取可能な記録媒体に格納されて提供されてもよい。また、管理支援プログラムは、プログラムプロダクトとして提供されてもよい。
【００２２】
＊＊＊機能の概要説明＊＊＊
解析部１１０は、ソースコード１４１を解析し、解析結果１４２を記憶部１４０に記憶する。
コスト算出部１２０は、解析結果１４２と資産情報１４３を参照し、ソフトウェア資産の管理の困難さを数値化した資産維持コストを算出する。コスト算出部１２０は、資産維持コスト算出部ともいう。
【００２３】
図２は、本実施の形態に係る資産情報１４３の例である。資産情報１４３は、資産情報一覧ともいう。
資産情報１４３は、可変部分４１１を切り替える切替方式に対応する、可変部分４１１の特性を表わしている。可変部分４１１とは、ソースコードにおいて複数のバリエーションに変更可能な部分である。
図２に示すように、資産情報１４３には、フィーチャー名４３１毎に、少なくとも、切替方式４３２と複数のバリエーション４３３と出荷後の変更４３４と制約事項４３５が設定されている。
フィーチャー名４３１は、ソフトウェアの可変部分４１１として資産化されているフィーチャーの名称である。
切替方式４３２は、可変部分４１１の切り替えを実現している方式である。切替方式４３２は、可変部分４１１の切り替えの実現手段である。
複数のバリエーション４３３は、可変部分４１１のバリエーション一覧である。
出荷後の変更４３４は、出荷後における可変部分４１１の変更の可否である。
制約事項４３５には、同時に選択できないバリエーションといった制約が設定される。また、階層関係といった可変部分４１１同士の依存関係の情報があれば、制約事項４３５に設定される。
【００２４】
以下に、切替方式の具体例を記載する。後述するコスト算出部１２０において、切替方式毎にコスト算出が可能であれば、切替方式は任意の方法を採ってよい。必ずしも以下に記載されたものに限定されるわけではない。
（１）コンパイルスイッチ
図３は、コンパイルスイッチによる切替方式の例を示した図である。
図３のコンパイルスイッチは、単一のソースコード中に複数のバリエーションの処理を実装し、コンパイル時に外部ファイルもしくはコンパイルオプションで指定された設定を参照し、実行する処理を決定する。コンパイルスイッチは、このように、可変性を実現する方式である。コンパイルスイッチでは、ソースコードの行単位で処理の切り替えが行える利点がある。一方、コンパイルスイッチを多用するとソースコードの可読性を損なうという欠点がある。
（２）ファイル差し替え
図４は、ファイル差し替えによる切替方式の例を示した図である。
図４のファイル差し替えによる方式は、単一ないし複数のファイルを一つのファイル群とし、ファイル群全体を差し替え、オブジェクト生成時のリンク内容を変えることで可変性を実現する。ファイル差し替えによる方式では、リンク時にエラーが発生しないように、公開関数あるいは変数といった外部ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を統一することが重要である。
（３）設定値変更
図５は、設定値変更によるによる切替方式の例を示した図である。
図５の設定値変更による方式は、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｏｎｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）といった外部記憶領域に設定値を格納する。そして、ソフトウェアの実行時に随時判定を行うことで可変性を実現する方式である。設定値変更による方式の最大の利点は、ソフトウェアのオブジェクトコードを変えることなく、動作を変更できる点である。特に閾値および制御指令値といった単純な数値変更に適している。しかし、ロジックの変更に多用するとソフトウェアの構造が複雑になりやすい。
【００２５】
結果出力部１３０は、資産維持コストを含む管理支援情報１３１をユーザに通理する。
【００２６】
＊＊＊動作の説明＊＊＊
図６を用いて、本実施の形態に係る管理支援装置１００の動作について説明する。
ステップＳ１００において、解析部１１０は、ソースコード１４１の解析を実行し、解析結果１４２を記憶部１４０に記憶する。ソースコード１４１は、入力インタフェース９３０を介してユーザから入力され、記憶部１４０に記憶されている。ソースコード１４１の解析結果１４２は、ソースコード１４１において複数のバリエーションに変更可能な可変部分４１１の情報を含む。
具体的には、解析部１１０における解析内容には、関数の呼び出し関係あるいは変数の参照および更新結果といった静的解析と、実行パスあるいは関数の呼び出し頻度といった動的解析とがある。その他任意の解析内容を含んでも良い。特に、関数あるいはソースコード全体の複雑性、および、ソースコード断片間の類似度の情報が含まれていることが好ましい。
【００２７】
次に、コスト算出部１２０は、解析結果１４２と資産情報１４３とに基づいて、切替方式により生成されるソフトウェアの資産維持コストＥを算出する。資産維持コストＥは、ソフトウェア資産の管理の困難さを数値化したものである。
ステップＳ２００において、コスト算出部１２０は、指標を用いてソースコード１４１を集計する。そして、ステップＳ３００において、集計結果から資産維持コストＥを算出する。
【００２８】
ステップＳ２００に用いる指標には、３つの指標がある。３つの指標の各々を用いた集計には、ステップＳ２１０、ステップＳ２２０、およびステップＳ２３０の処理がある。なお、３つの指標のうち任意の指標を用いた集計を選択して良い。
【００２９】
ステップＳ２１０では、コスト算出部１２０は、バリエーション間のクローンコードを集計する。コスト算出部１２０は、可変部分４１１において共通なクローンコードの行数と数を抽出する。
具体的には、コスト算出部１２０は、ソースコードの可変部分に対するクローンコードの断片の個数と行数を集計する。この集計は、資産化を行う際に、本来共通部分として管理すべきソースコードが可変部分に含まれていないかの評価を意図したものである。
クローンコードの断片の検出方法は、単純なテキスト比較、あるいは、体裁といった差異を考慮した比較でもよい。その他の種類の比較方法でもよい。また、資産化しづらい非常に細かい単位でのクローンコードの断片の検出を避けるために、クローンコードの断片の行数に閾値を設けることが好ましい。個々のクローンコードの断片の行数をＣ１，Ｃ２，・・・，Ｃｎとする。ここで、ｎは抽出されたクローンコードの断片の総数となる。
【００３０】
ステップＳ２２０では、コスト算出部１２０は、ソースコード内の可変ポイントの個数を集計する。コスト算出部１２０は、可変部分４１１における複数のバリエーションの分岐点である可変ポイントの数を抽出する。
具体的には、コスト算出部１２０は、同一ソースファイル内で、複数のバリエーションを実現している場合、バリエーションの分岐点の総数をカウントする。この集計は、バリエーションの分岐の増加に伴う可読性の低下を評価することを意図したものである。各ファイルの可変ポイントの個数をＶ１，Ｖ２，・・・，Ｖｍとする。ここで、ｍはファイルの総数となる。
【００３１】
ステップＳ２３０では、コスト算出部１２０は、デッドコードとなるコード行数を集計する。コスト算出部１２０は、ソースコード１４１において論理的に通らないデッドコードの数を抽出する。
具体的には、コスト算出部１２０は、ソースコード上実装されているが、論理的に絶対に通らない行をデッドコードとして集計する。ただし、ファイル差し替えでフィーチャー毎にソースコードが明白に分離されているものは集計対象外とする。この集計は、設定値変更による可変性を過剰に持たせたことによるＲＯＭおよびＲＡＭのサイズの拡大を簡便に評価することを意図したものである。フィーチャー毎のデッドコードの行数をＤ１，Ｄ２，・・・，Ｄｋとする。ここで、ｋはフィーチャーの個数となる。
【００３２】
続いて、ステップＳ３００において、コスト算出部１２０は、ステップＳ２００における集計結果を基に、切替方式に応じた資産維持コストＥの算出を行う。切替方式によってソフトウェア資産には長所および短所が生じる。このため、資産維持コストＥの算出式は、切替方式の特性に応じて異なる式を用いることが好ましい。資産維持コストＥの算出式の具体例を以下に示す。
【００３３】
第１に、クローンコードの行数と数に基づいて、可変部分４１１の管理の困難さを数値化したクローンコストＥｔを算出する例について説明する。
より大きな塊のクローンコードほど重複修正の可能性が高まるため、クローンコードのサイズに比例してコストを算出する。Ｋｃ（ｖ）は切替方式に依存する定数である。ファイル差し替えよりもコンパイルスイッチの方がクローンコードは避けやすいため、クローンコードが存在する場合のコストを大きくするといった調整を行う。
Ｅｔ＝Σ（Ｋｃ（ｖ）・Ｃｉ）
【００３４】
第２に、可変ポイントの数に基づいて、可変部分４１１の管理の困難さを数値化した可変ポイントコストＥｖを算出する例について説明する。
可変ポイントが増えれば増えるほど、ソースコードの可読性は急激に低下する。また、可変ポイントの絶対数ではなく、単位行数あたりの可変ポイントの密度で計測した方が実際の可読性に近い数字となる。Ｋｖは定数である。
Ｅｖ＝Σ（Ｋｖ・Ｖｉ２）
【００３５】
第３に、デッドコードの数に基づいて、可変部分４１１の管理の困難さを数値化したデッドコードコストＥｄを算出する例について説明する。
実コード行数とＲＯＭおよびＲＡＭのサイズは概ね比例する。ただし、出荷後に変更する必要性がある可変部分分に関しては、設定値変更で実現する以外の方法は無いので、コストを０とする。Ｋｄは定数である。Ｋｍは出荷後変更を行えることが必須のあるフィーチャーに関しては０、その他の場合は１である。
Ｅｄ＝Σ（Ｋｄ・Ｋｍ・Ｄｉ）
【００３６】
コスト算出部１２０は、クローンコストＥｔを用いて資産維持コストＥを算出する。また、コスト算出部１２０は、可変ポイントコストＥｖを用いて資産維持コストＥを算出してもよい。また、コスト算出部１２０は、デッドコードコストＥｄを用いて資産維持コストＥを算出してもよい。具体的には、コスト算出部１２０は、クローンコストＥｔと可変ポイントコストＥｖとデッドコードコストＥｄを合計したものを資産維持コストＥとして算出する。あるいは、コスト算出部１２０は、クローンコストＥｔと可変ポイントコストＥｖとデッドコードコストＥｄとのうち少なくともいずれかを資産維持コストＥとして算出してもよい。
【００３７】
ステップＳ４００において、結果出力部１３０は、コスト算出部１２０で算出された資産維持コストを含む管理支援情報１３１を出力する。管理支援情報１３１の出力方法の具体例は、画面表示、ファイル保存、あるいはプリンタ出力といった方法である。ユーザを含むシステムの外部に管理支援情報１３１を通知できる方法であれば、任意の方法を選定して良い。
【００３８】
図７は、本実施の形態に係る管理支援情報１３１の一例である。
管理支援情報１３１は、切替方式３１１、可読性３１２、クローンコード３１３、出荷後の変更３１４、資産維持コストＥ、およびその他３１５の各欄を有する。
切替方式３１１の欄には、可変部分を切り替える方式が設定される。
可読性３１２の欄には、可読性を表す可変ポイントコストＥｖの値から求められる評価値を表す記号が設定される。
クローンコード３１３の欄には、クローンコストＥｔの値から求められる評価値を表す記号が設定される。
出荷後の変更３１４の欄には、デッドコードコストＥｄの値から求められる評価値を表す記号が設定される。
資産維持コストＥの欄には、資産維持コストＥの値から求められる評価値を表す記号が設定される。
その他３１５の欄には、可読性３１２、クローンコード３１３、出荷後の変更３１４、および資産維持コストＥの各欄に設定された評価値あるいは記号に基づいて、ソフトウェア資産の管理に関する注意点といった情報が設定される。具体的には、結果出力部１３０は、予め、各欄に設定された評価値あるいは記号に対応する情報を保持し、各欄に設定された評価値あるいは記号に基づいてその他３１５の欄に表示するとしてもよい。
【００３９】
＊＊＊他の構成＊＊＊
＜変形例１＞
本実施の形態では、管理支援装置１００は、解析部１１０および解析結果１４２を備えている。しかし、管理支援装置１００が解析部１１０を備えていなくてもよい。つまり、管理支援装置１００は外部の解析結果を参照する構成でもよい。あるいは、管理支援装置１００は、解析部１１０を備えており、かつ、外部の解析結果も参照できる構成でもよい。
【００４０】
＜変形例２＞
本実施の形態では、解析部１１０とコスト算出部１２０と結果出力部１３０の機能がソフトウェアで実現される。変形例として、解析部１１０とコスト算出部１２０と結果出力部１３０の機能がハードウェアで実現されてもよい。
【００４１】
図８は、本実施の形態の変形例に係る管理支援装置１００の構成を示す図である。
管理支援装置１００は、電子回路９０９、メモリ９２１、補助記憶装置９２２、入力インタフェース９３０、および出力インタフェース９４０を備える。
【００４２】
電子回路９０９は、解析部１１０とコスト算出部１２０と結果出力部１３０の機能を実現する専用の電子回路である。
電子回路９０９は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＡＳＩＣ、または、ＦＰＧＡである。ＧＡは、Ｇａｔｅ  Ａｒｒａｙの略語である。ＡＳＩＣは、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略語である。ＦＰＧＡは、Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略語である。
解析部１１０とコスト算出部１２０と結果出力部１３０の機能は、１つの電子回路で実現されてもよいし、複数の電子回路に分散して実現されてもよい。
別の変形例として、解析部１１０とコスト算出部１２０と結果出力部１３０の一部の機能が電子回路で実現され、残りの機能がソフトウェアで実現されてもよい。
【００４３】
プロセッサと電子回路の各々は、プロセッシングサーキットリとも呼ばれる。つまり、管理支援装置１００において、解析部１１０とコスト算出部１２０と結果出力部１３０の機能は、プロセッシングサーキットリにより実現される。
【００４４】
＊＊＊本実施の形態の効果の説明＊＊＊
本実施の形態に係る管理支援装置１００では、ソースコードの一部または全部をソフトウェア資産として管理し、将来の開発において再利用することを目的としている。コスト算出部は、ソースコードの解析結果とソフトウェア資産に関する情報を基に、ソフトウェア資産の管理の困難さを数値化する。また、結果出力部は、算出した結果をユーザに通知する。よって、本実施の形態に係る管理支援装置１００によれば、ソースコードの解析結果を基に、ソフトウェア資産の維持コストを算出することで、ソフトウェアを資産化した場合に、その管理の困難さ、すなわちコストを定量的に算出できる。よって、よって、多数の製品シリーズを１つのソフトウェア体系で管理する場合、再利用方法の検討のためのコストを低くすることができ、再利用による開発効率化が図られる。
【００４５】
実施の形態２．
本実施の形態では、主に、実施の形態１と異なる点について説明する。なお、実施の形態１と同様の構成には同一の符号を付し、その説明を省略する場合がある。
【００４６】
＊＊＊構成の説明＊＊＊
図９を用いて、本実施の形態に係る管理支援装置１００ａの構成について説明する。本実施の形態に係る管理支援装置１００ａは、実施の形態１の管理支援装置１００構成に加え、変更実績集計部１５０と変更予測取得部１６０を備える。
【００４７】
変更実績集計部１５０は、ソースコード１４１の過去の変更実績を集計する。具体的には、変更実績集計部１５０は、ソースコードの変更履歴を参照し集計する。コスト算出部１２０は、変更実績に基づいて、資産維持コストＥを算出する。
また、変更予測取得部１６０は、ソースコード１４１の将来の変更予測を取得する。具体的には、変更予測取得部１６０は、製品ロードマップ、あるいは、未来の開発におけるソフトウェア要件一覧といった変更予測情報２０１を取得する。コスト算出部１２０は、変更予測に基づいて、資産維持コストＥを算出する。
【００４８】
＊＊＊動作の説明＊＊＊
図１０を用いて、本実施の形態に係る管理支援装置１００ａの動作について説明する。
ステップＳ１００とステップＳ２００については実施の形態１の説明と同様である。
ステップＳ２４０において、変更実績集計部１５０は、バージョン管理ツールから得られるソースコード１４１の過去の変更履歴を参照し、変更の時期、頻度および量を集計する。また、変更実績集計部１５０は、必要に応じて、解析結果１４２あるいは資産情報１４３の情報を参照し、ソフトウェアの部位あるいはフィーチャーといった情報も同時に蓄積することが好ましい。変更実績集計部１５０は、ソフトウェア変更実績集計部ともいう。
【００４９】
ステップＳ２５０において、変更予測取得部１６０は、製品ロードマップ、あるいは、未来の開発におけるソフトウェア要件一覧といった変更予測情報２０１を取得し、該当ソフトウェアに対し将来予測されるソフトウェアの変更を集計する。変更実績集計部１５０と同様に、解析結果１４２あるいは資産情報１４３を参照して得られた情報も同時に蓄積することが好ましい。変更予測取得部１６０は、ソフトウェア変更予測取得部ともいう。
【００５０】
ステップＳ３００ａにおいて、コスト算出部１２０では、実施の形態１のステップＳ３００で活用する情報に加え、変更実績集計部１５０または変更予測取得部１６０もしくはその両方の情報を参照して資源維持コストを算出する。
具体的には、実施の形態１におけるＫｃ，Ｋｖ，Ｋｄの係数を過去の変更あるいは将来予測される変更の頻度によって変化させることにより、重み付けを行う。また、現在を起点に、より近い過去あるいは未来に関する情報は、直近の製品開発のトレンドであり精度も高いことから、重み付けを大きくすることで変更頻度の精度を上げることができる。
【００５１】
なお、本実施の形態では、変更実績集計部と変更予測取得部との両方を備えているが、いずれか一方を備えていてもよい。
【００５２】
＊＊＊本実施の形態の効果の説明＊＊＊
本実施の形態に係る管理支援装置１００ａでは、変更実績集計部が、過去のソフトウェアの変更内容を集計する。変更予測取得部が、将来のソフトウェアに対する変更要求の予測を取得する。コスト算出部は、更実績集計部または変更予測取得部、もしくはその両方の情報に基づいて、ソフトウェア資産の管理の困難さを数値化する。よって、本実施の形態に係る管理支援装置１００ａによれば、実施の形態１の効果に加え、過去あるいは将来のソフトウェアの変更実績あるいは変更予測を加味することで、より数値の精度が向上する。
【００５３】
実施の形態３．
本実施の形態では、主に、実施の形態１および２と異なる点について説明する。なお、実施の形態１および２と同様の構成には同一の符号を付し、その説明を省略する場合がある。
【００５４】
＊＊＊構成の説明＊＊＊
図１１を用いて、本実施の形態に係る管理支援装置１００ｂの構成について説明する。本実施の形態に係る管理支援装置１００ｂは、実施の形態１の管理支援装置１００構成に加え、改善案取得部１７０を備える。記憶部１４０は、改善案記憶部１４４を備える。
改善案取得部１７０は、資産情報１４３における可変部分の特性の改善案２１０を取得し、資産情報１４３を改善する。コスト算出部１２０は、改善された資産情報１４３に基づいて、資産維持コストＥを算出する。具体的には、改善案取得部１７０は、通知された管理支援情報１３１を確認したユーザから、ソフトウェア資産の管理改善方法、および、重み付けあるいは計算式といった資産維持コストの算出方法の改善案を取得する。
改善案記憶部１４４は、ユーザから取得した改善案を記憶する。
【００５５】
＊＊＊動作の説明＊＊＊
図１２を用いて、本実施の形態に係る管理支援装置１００ｂの動作について説明する。
ステップＳ１００からステップＳ４００については実施の形態１および２の説明と同様である。
【００５６】
ステップＳ５００において、改善案取得部１７０は、出力された結果を見たユーザにより、入力インタフェース９３０を介して入力された資産管理方法の改善案を取得する。出力された結果を見たユーザが、改善案の必要が無い、すなわちユーザが満足する結果が得られれば処理は終了する。改善案の具体例は、資産情報１４３のコピーを編集し、切替方式を変更する、あるいは、複数のフィーチャーを一つのフィーチャーにまとめて代わりにバリエーションを増やす、といった変更を行うことである。
【００５７】
図１３は、改善案が施された資産情報１４３の例を示す図である。
図１３では、複数のフィーチャーである動力と排気量を一つのフィーチャーにまとめている。そして、ガソリンエンジンとハイブリッドを排気量毎に分け、バリエーションを増やしている。
【００５８】
その後ステップＳ２００に戻り、コスト算出部１２０は、改善案の更新結果を受け付け、資産維持コストを再計算する。改善後の数値の算出には、仮想的なソースコードもしくはソースコードスケルトンを出力しコストを再算出する方法を採っても良い。また、ソースコードは出力せずに解析結果から数値変化を推定する方法を採っても良い。
このような改善案の入力と改善結果の出力のプロセスをユーザが満足する改善結果が得られるまで繰り返す。
【００５９】
＊＊＊本実施の形態に係る効果の説明＊＊＊
本実施の形態に係る管理支援装置１００ｂでは、改善案取得部が、現状のソフトウェア資産の構成に対して修正を加えた結果を取得する。コスト算出部が、改善案取得部が受け付けた資産構成に対してソフトウェア資産の管理の困難さを数値化する。よって、本実施の形態に係る管理支援装置１００ｂによれば、ユーザからソフトウェア資産の管理改善案を任意に取得し、その改善案による管理の困難さの数値の変化を出力することで、改善案による効果を定量的に把握することができる。
【００６０】
実施の形態４．
本実施の形態では、主に、実施の形態１から３と異なる点について説明する。なお、実施の形態１から３と同様の構成には同一の符号を付し、その説明を省略する場合がある。
【００６１】
＊＊＊構成の説明＊＊＊
図１４を用いて、本実施の形態に係る管理支援装置１００ｃの構成について説明する。本実施の形態に係る管理支援装置１００ｃは、実施の形態１の管理支援装置１００構成に加え、変更実績集計部１５０と改善案生成部１８０を備える。変更実績集計部１５０は、実施の形態２で説明した変更実績集計部１５０と同様である。また、記憶部１４０は、実施の形態３で説明した改善案記憶部１４４を備える。
改善案生成部１８０は、資産情報１４３に基づいて、資産情報１４３における可変部分の特性に変更を加えた際の資産維持コストＥを再計算する。そして、現在の資産維持コストＥよりも再計算後の資産維持コストＥが低くなる資産情報１４３における可変部分の特性の改善案を提案する。具体的には、改善案生成部１８０は、資産情報１４３、ソースコードの変更履歴、ソフトウェア資産の資産選択実績２０３、および解析結果１４２といった情報を基に、ソフトウェア資産の改善案を生成する。資産選択実績２０３は、資産情報１４３から資産選択機構を用いて選択された実績を表す。資産選択機構は、使用するソフトウェア資産の情報をユーザあるいはツールから受け取り、受け取った情報を基に資産情報一覧から必要な資産を抽出し、ソフトウェアを構成できるようにする。具体的には、資産選択機構は、ソフトウェア統合開発環境といった外部ツールに付属している機能である。
改善案記憶部１４４は、改善案生成部１８０により生成された改善案を記憶する。
【００６２】
＊＊＊動作の説明＊＊＊
図１５を用いて、本実施の形態に係る管理支援装置１００ｃの動作について説明する。
ステップＳ１００からステップＳ４００については実施の形態１から３の説明と同様である。
【００６３】
ステップＳ４０１において、改善案生成部１８０は、繰り返し改善案を生成し、資産維持コストＥを算出するため、生成した改善案とその時の算出結果を改善案記憶部１４４に記憶する。これにより、今後の改善案の生成および資産維持コストＥの算出を効果的に行うことができる。
ステップＳ５０１では、改善案生成部１８０は、ソフトウェアの解析結果１４２と、変更実績集計部１５０による変更実績と、資産選択実績２０３といった情報を基に、管理方法の改善案を生成する。実施の形態３と同様に、改善案の生成後と資産維持コストの再計算を繰り返し、改善案を探索する。
上記手順を繰り返し、ユーザが承認するもしくは一定以上の改善数値が出るといった予め決められた終了条件を満たしたら改善案の生成を終了する。
ステップＳ６００では、結果出力部１３０は改善案記憶部１４４を参照し最終的な改善案を出力する。
【００６４】
改善案の生成アルゴリズムは任意であるため、ランダムに変更を加え改善が得られればその案をベースに更なる改善を加えるという方法を採っても良い。しかし、以下の手順のように改善効果を得られる可能性の高い改善案を生成することが好ましい。
（ａ）ソフトウェア資産の選択実績、および、バリエーション間の依存関係を鑑み、同時に変更される可能性の高い複数のフィーチャーを一つにまとめる。
（ｂ）可変ポイントが多く登場しているファイルあるいはフィーチャーに関して、コンパイルオプションによる可変性実現ではなく、ファイル差し替えの方法に変更する。
（ｃ）出荷後に変更できる必要のないにも関わらず、設定値変更によって実現している可変性を、他の実現方法で代替する。
【００６５】
＊＊＊本実施の形態の効果の説明＊＊＊
本実施の形態に係る管理支援装置１００ｃでは、改善案生成部が、現状のソフトウェア資産に関する情報を基に、ソフトウェア資産の構成に変更を加えた際のソフトウェア資産の管理の困難さを再計算し、現状よりも管理が容易となるような資産構成案を提案する。よって、本実施の形態に係る管理支援装置１００ｃによれば、資産管理の改善案をユーザに提案することで、ソフトウェア資産管理方法の改善案検討が効率化される。また、実施の形態３と組み合わせることで、インタラクティブに改善案を出力することが可能となり、装置単体もしくはユーザ単独で改善案を検討するよりも良い改善案を生成できる可能性を高めることができる。
【００６６】
以上の実施の形態１から４では、管理支援装置の各部を独立した機能ブロックとして説明した。しかし、管理支援装置の構成は、上述した実施の形態のような構成でなくてもよい。管理支援装置の機能ブロックは、上述した実施の形態で説明した機能を実現することができれば、どのような構成でもよい。また、管理支援装置は、１つの装置でなく、複数の装置から構成されたシステムでもよい。
また、実施の形態１から４のうち、複数の部分を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、１つの部分を実施しても構わない。その他、これら実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
すなわち、実施の形態１から４では、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
【００６７】
なお、上述した実施の形態は、本質的に好ましい例示であって、本発明の範囲、本発明の適用物の範囲、および本発明の用途の範囲を制限することを意図するものではない。上述した実施の形態は、必要に応じて種々の変更が可能である。
【符号の説明】
【００６８】
１００，１００ａ，１００ｂ，１００ｃ  管理支援装置、１１０  解析部、１２０  コスト算出部、１３０  結果出力部、１３１  管理支援情報、１４０  記憶部、１４１  ソースコード、１４２  解析結果、１４３  資産情報、１４４  改善案記憶部、１５０  変更実績集計部、１６０  変更予測取得部、１７０  改善案取得部、１８０  改善案生成部、２０１  変更予測情報、２０３  資産選択実績、２１０  改善案、３１２  可読性、３１３  クローンコード、３１５  その他、４１１  可変部分、４３１  フィーチャー名、３１１，４３２  切替方式、４３３  複数のバリエーション、３１４，４３４  出荷後の変更、４３５  制約事項、９０９  電子回路、９１０  プロセッサ、９２１  メモリ、９２２  補助記憶装置、９３０  入力インタフェース、９４０  出力インタフェース、９５０  通信装置、Ｅ  資産維持コスト、Ｅｔ  クローンコスト、Ｅｖ  可変ポイントコスト、Ｅｄ  デッドコードコスト。
【図１】
2019164723.tif 000003
【図２】
2019164723.tif 000004
【図３】
2019164723.tif 000005
【図４】
2019164723.tif 000006
【図５】
2019164723.tif 000007
【図６】
2019164723.tif 000008
【図７】
2019164723.tif 000009
【図８】
2019164723.tif 000010
【図９】
2019164723.tif 000011
【図１０】
2019164723.tif 000012
【図１１】
2019164723.tif 000013
【図１２】
2019164723.tif 000014
【図１３】
2019164723.tif 000015
【図１４】
2019164723.tif 000016
【図１５】
2019164723.tif 000017