(57)【要約】【課題】ソフトウェア資産の関連範囲を推測可能なソフトウェア資産活用装置、ソフトウェア資産活用方法及びプログラムを提供する。【解決手段】ソフトウェア資産活用装置１００は、情報ノード、各情報ノード間の関係性を示す関係リンク、１以上のバージョン情報、情報ノード及び関係リンクそれぞれが各バージョン情報において有効又は無効のいずれであるかを示す情報、を保持するリポジトリ４、問題が発生した第１の情報ノードを入力して、第１のバージョン情報において有効な、第１の情報ノードに紐づけられた第１の関係リンク、第１の関係リンクにより第１の情報ノードに紐づけられた第２の情報ノード、第２のバージョン情報において有効な、第１の関係リンク及び第２の情報ノード、を比較し、第２のバージョンにおいて有効であって第１の情報ノードと同等と評価しうる第３の情報ノードを発見する情報分析部７を有する。【選択図】図１−１
2015156114.tif 000002
【特許請求の範囲】
【請求項１】
抽象度及び詳細度によって区分分けされたブロックに対し、ソフトウェア資産を構成する個々の情報単位である情報ノードを配置し、各情報ノード間の関係性を関係リンクによって設定した資産管理マトリクスと、
１以上のバージョン情報と、
前記情報ノード及び前記関係リンクそれぞれが、前記各バージョン情報において有効又は無効のいずれであるかを示す情報と、を保持するリポジトリと、
第１のバージョン情報において有効であり、かつ問題が発生した第１の情報ノードを入力し、
前記第１のバージョン情報において有効であり、前記第１の情報ノードに紐づけられている１以上の第１の関係リンク、及び、前記第１の関係リンクにより前記第１の情報ノードに紐づけられている１以上の第２の情報ノードと、
前記第１のバージョン情報以外の第２のバージョン情報において有効である、前記第１の関係リンク及び前記第２の情報ノードと、を比較し、
前記第２のバージョンにおいて有効であり、かつ前記第１の情報ノードと同等と評価しうる第３の情報ノードが発見された場合、前記第３の情報ノードを、前記第２のバージョンにおいて前記問題が潜在している可能性がある前記情報ノードと推測する、情報分析部とを有する
ソフトウェア資産活用装置。
【請求項２】
前記情報分析部は、
前記第１のバージョン情報においても有効な、前記第１の情報ノード、前記第１の関係リンク、及び前記第２の情報ノードが、すべて前記第２のバージョン情報においても有効である場合、前記第１の情報ノードを、前記第３の情報ノードと推測する
請求項１記載のソフトウェア資産活用装置。
【請求項３】
前記情報分析部は、
前記第２のバージョン情報において、前記第１の情報ノードが無効である場合、
前記第２のバージョン情報において有効であり、かつ前記第２の情報ノードとの間に構築される前記関係リンクの構造が、前記第１の関係リンクと同等であると評価しうる前記情報ノードを、前記第３の情報ノードと推測する
請求項１記載のソフトウェア資産活用装置。
【請求項４】
前記情報分析部は、
前記第２のバージョン情報において、前記第１の情報ノードが無効である場合、
前記第２のバージョン情報において有効な前記第２の情報ノードであり、かつ他の前記第２の情報ノードとの間に構築される前記関係リンクの構造が、前記第１の関係リンクと同等であると評価しうる前記第２の情報ノードを、前記第３の情報ノードと推測する
請求項１記載のソフトウェア資産活用装置。
【請求項５】
前記情報分析部は、
前記第２のバージョン情報において、前記第１の情報ノードが有効であり、かつ前記第２の情報ノードが無効である場合、
前記第２のバージョン情報において有効であり、かつ他の前記第２の情報ノードと同等であると評価しうる前記情報ノードを、前記第２の情報ノードとみなす
請求項１乃至４いずれか１項記載のソフトウェア資産活用装置。
【請求項６】
前記情報分析部は、
前記第３の情報ノードが発見された場合、異なる前記第２のバージョン情報について、さらに前記第３の情報ノードの推測を実行する
請求項１乃至５いずれか１項記載のソフトウェア資産活用装置。
【請求項７】
前記情報分析部は、
前記第３の情報ノードが発見されなかった場合、さらなる前記第３の情報ノードの推測を中止する
請求項６項記載のソフトウェア資産活用装置。
【請求項８】
発見された前記第３の情報ノードをユーザに提示する出力装置をさらに有する
請求項１乃至７いずれか１項記載のソフトウェア資産活用装置。
【請求項９】
抽象度及び詳細度によって区分分けされたブロックに対し、ソフトウェア資産を構成する個々の情報単位である情報ノードを配置し、各情報ノード間の関係性を関係リンクによって設定した資産管理マトリクスと、
１以上のバージョン情報と、
前記情報ノード及び前記関係リンクそれぞれが、前記各バージョン情報において有効又は無効のいずれであるかを示す情報と、を保持するステップと、
第１のバージョン情報において有効であり、かつ問題が発生した第１の情報ノードを入力するステップと、
前記第１のバージョン情報において有効であり、前記第１の情報ノードに紐づけられている１以上の第１の関係リンク、及び、前記第１の関係リンクにより前記第１の情報ノードに紐づけられている１以上の第２の情報ノードと、
前記第１のバージョン情報以外の第２のバージョン情報において有効である、前記第１の関係リンク及び前記第２の情報ノードと、を比較するステップと、
前記第２のバージョンにおいて有効であり、かつ前記第１の情報ノードと同等と評価しうる第３の情報ノードが発見された場合、前記第３の情報ノードを、前記第２のバージョンにおいて前記問題が潜在している可能性がある前記情報ノードと推測するステップと、を有する
ソフトウェア資産活用方法。
【請求項１０】
請求項９記載のソフトウェア資産活用方法を、コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はソフトウェア資産活用装置、ソフトウェア資産活用方法及びプログラムに関し、特にソフトウェア資産の関連範囲の推測手法に関する。
【背景技術】
【０００２】
企業等が情報システムの設計、構築、運用を行うためには、様々な情報、例えば、情報システム（以下、単にシステムと呼ぶ）が利用される業務の内容（業務プロセス）を定義づける情報（業務定義情報）、システム設計情報、ソースコード、テスト仕様情報、運用仕様情報等が必要である。これらの情報を、総じてソフトウェア資産と呼ぶ。
【０００３】
従来より、このようなソフトウェア資産を管理、活用するための種々のツールが提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２７６９１１号公報
【特許文献２】特開２００８−１２３４３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
企業等は、長期にわたりシステムを利用してゆく中で、企業等の活動の目的等に鑑み、システムの拡張や改造を積み重ねることが多い。その結果、システムは、新旧様々なソフトウェア、ハードウェア及び開発技術が混在して複雑に絡み合った状態となり、ソフトウェア資産全体の把握が困難な状況となる。このことは、システムの拡張や改造等（リニューアル）を難しくしており、企業等は、活動の目的や要求の変化に合わせた最適かつ最善なシステムの変更を迅速に行えず、ビジネス機会を逃す等の問題に直面している。
【０００６】
従来のソフトウェア資産管理ツールは、かかる問題に十分対応できていない。その要因は、例えば以下のとおりである。
【０００７】
業務プロセスと、システムの実装（例えば設計、ソースコード、運用仕様等）との関係は、必ずしも全て文書として明文化されているとは限らず、暗黙知として形成されている場合が多い。これらの暗黙知は、従来のソフトウェア管理ツールでは管理することができない。そのため、システムリニューアルにあたり、例えば改造による業務等への影響範囲を特定するための調査に多大な時間がかかる。さらに、事前に影響範囲を洗い出すことができない場合には、システムリニューアル終盤の評価フェーズで問題が検出されることになり、無駄な時間やコストが発生する。
【０００８】
また、システムの設計仕様と、システムの実装（例えばソースコード、運用仕様等）とが一致していない、あるいは設計書自体が存在しない場合がある。このような場合、システムリニューアルにあたり、ソースコードを直接解読して改造すべき箇所や改造による影響範囲を特定する作業が必要となり、多大な時間や費用を要する。
【０００９】
仮にシステムリニューアルに成功したとしても、従来のソフトウェア管理ツールは、その過程で得られた情報を、再利用可能あるいはメンテナンス可能な形式で保管しておくための有効な手段を用意していない。そのため、後に再びシステムリニューアルが必要になった場合に再度同様の問題が発生する可能性が高い。したがって、長期的に見て、リニューアルコストを十分抑制できていない。
【００１０】
例えば、従来のソフトウェア資産ツールは、ソースコードのみを管理対象としていたり、特定の利用者に関係する情報のみを管理対象としているなど、システム全体のソフトウェア資産を統合的に扱えておらず、その結果、ソフトウェア資産の効果的な活用も実現できていなかった。
【００１１】
例えば、あるアプリケーションにおいて何らかの問題が発生した場合、そのアプリケーションを構成するソースコードや、そのアプリケーションに関連する仕様書等の書類に関する情報が整理されておらず、それらに関する情報を人手で収集する必要があった。
【００１２】
具体的には、あるバージョンのソフトウェア・モジュールにおいて問題が発生した場合、開発者は、そのモジュールの他のバージョンにおいても、同様の問題が潜在していないかを確認する。この際、従来の開発者は、各バージョンを構成するソースコードや書類を対象に、１つ１つ目視で上述の確認作業を行っており、このために多くの工数を費やしていた。
【００１３】
また、従来の開発者は、あるバージョンのモジュールにおいて問題が発見された関数名やクラス名等を用いて、ｇｒｅｐコマンドを利用するなどして検索を行い、他のバージョンのモジュールにも問題が潜在していないか確認することがある。しかし、この方法では、バージョン間で関数名やクラス名が変更されていた場合、潜在しているはずの問題を見落とす可能性があった。また、ｇｒｅｐコマンドは、ＯＳ標準のテキストファイルしか検索対象としない。そのため、ＯＳ標準のテキストエディタで確認できないドキュメント等は、目視で確認作業を行うよりなく、作業効率や正確性の向上に限界があった。
【００１４】
本発明は、このような問題点を解決するためになされたものであり、ソフトウェア資産の関連範囲を推測可能なソフトウェア資産活用装置、ソフトウェア資産活用方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明に係るソフトウェア資産活用装置は、抽象度及び詳細度によって区分分けされたブロックに対し、ソフトウェア資産を構成する個々の情報単位である情報ノードを配置し、各情報ノード間の関係性を関係リンクによって設定した資産管理マトリクスと、１以上のバージョン情報と、前記情報ノード及び前記関係リンクそれぞれが、前記各バージョン情報において有効又は無効のいずれであるかを示す情報と、を保持するリポジトリと、第１のバージョン情報において有効であり、かつ問題が発生した第１の情報ノードを入力し、前記第１のバージョン情報において有効であり、前記第１の情報ノードに紐づけられている１以上の第１の関係リンク、及び、前記第１の関係リンクにより前記第１の情報ノードに紐づけられている１以上の第２の情報ノードと、前記第１のバージョン情報以外の第２のバージョン情報において有効である、前記第１の関係リンク及び前記第２の情報ノードと、を比較し、前記第２のバージョンにおいて有効であり、かつ前記第１の情報ノードと同等と評価しうる第３の情報ノードが発見された場合、前記第３の情報ノードを、前記第２のバージョンにおいて前記問題が潜在している可能性がある前記情報ノードと推測する、情報分析部とを有するものである。
【００１６】
本発明に係るソフトウェア資産活用方法は、抽象度及び詳細度によって区分分けされたブロックに対し、ソフトウェア資産を構成する個々の情報単位である情報ノードを配置し、各情報ノード間の関係性を関係リンクによって設定した資産管理マトリクスと、１以上のバージョン情報と、前記情報ノード及び前記関係リンクそれぞれが、前記各バージョン情報において有効又は無効のいずれであるかを示す情報と、を保持するステップと、第１のバージョン情報において有効であり、かつ問題が発生した第１の情報ノードを入力するステップと、前記第１のバージョン情報において有効であり、前記第１の情報ノードに紐づけられている１以上の第１の関係リンク、及び、前記第１の関係リンクにより前記第１の情報ノードに紐づけられている１以上の第２の情報ノードと、前記第１のバージョン情報以外の第２のバージョン情報において有効である、前記第１の関係リンク及び前記第２の情報ノードと、を比較するステップと、前記第２のバージョンにおいて有効であり、かつ前記第１の情報ノードと同等と評価しうる第３の情報ノードが発見された場合、前記第３の情報ノードを、前記第２のバージョンにおいて前記問題が潜在している可能性がある前記情報ノードと推測するステップと、を有するものである。
【００１７】
本発明に係るプログラムは、上記ソフトウェア資産活用方法を、コンピュータに実行させるためのプログラムである。
【発明の効果】
【００１８】
本発明により、ソフトウェア資産の関連範囲を推測可能なソフトウェア資産活用装置、ソフトウェア資産活用方法及びプログラムを提供できる。
【図面の簡単な説明】
【００１９】
【図１−１】実施の形態にかかるソフトウェア資産活用装置１００の構成を示す図である。
【図１−２】実施の形態にかかるソフトウェア資産活用装置１００の構成を示す図である。
【図２−１】実施の形態にかかるソフトウェア資産活用装置１００におけるソフトウェア資産の管理方法を示す図である。
【図２−２】実施の形態にかかるソフトウェア資産活用装置１００におけるソフトウェア資産の管理方法を示す図である。
【図２−３】実施の形態にかかるソフトウェア資産活用装置１００におけるソフトウェア資産の管理方法を示す図である。
【図２−４】実施の形態にかかるソフトウェア資産活用装置１００におけるソフトウェア資産の管理方法を示す図である。
【図２−５】実施の形態にかかるソフトウェア資産活用装置１００におけるソフトウェア資産の管理方法を示す図である。
【図２−６】実施の形態にかかるソフトウェア資産活用装置１００におけるソフトウェア資産の管理方法を示す図である。
【図２−７−１】実施の形態にかかるソフトウェア資産活用装置１００におけるソフトウェア資産の管理方法を示す図である。
【図２−７−２】実施の形態にかかるソフトウェア資産活用装置１００におけるソフトウェア資産の管理方法を示す図である。
【図２−７−３】実施の形態にかかるソフトウェア資産活用装置１００におけるソフトウェア資産の管理方法を示す図である。
【図２−８】実施の形態にかかるソフトウェア資産活用装置１００におけるソフトウェア資産の管理方法を示す図である。
【図２−９−１】実施の形態にかかるソフトウェア資産活用装置１００におけるソフトウェア資産の管理方法を示す図である。
【図２−９−２】実施の形態にかかるソフトウェア資産活用装置１００におけるソフトウェア資産の管理方法を示す図である。
【図２−９−３】実施の形態にかかるソフトウェア資産活用装置１００におけるソフトウェア資産の管理方法を示す図である。
【図２−９−４】実施の形態にかかるソフトウェア資産活用装置１００におけるソフトウェア資産の管理方法を示す図である。
【図２−９−５】実施の形態にかかるソフトウェア資産活用装置１００におけるソフトウェア資産の管理方法を示す図である。
【図２−９−６】実施の形態にかかるソフトウェア資産活用装置１００におけるソフトウェア資産の管理方法を示す図である。
【図２−９−７】実施の形態にかかるソフトウェア資産活用装置１００におけるソフトウェア資産の管理方法を示す図である。
【図３】実施の形態にかかるソフトウェア資産活用装置１００における情報保持部８およびリンクテーブル１０の例を示す図である。
【図４】実施の形態にかかるソフトウェア資産活用装置１００における影響範囲推測処理を示す図である。
【図５】実施の形態にかかるソフトウェア資産活用装置１００における影響範囲推測処理を示す図である。
【図６−１】実施の形態にかかるソフトウェア資産活用装置１００における影響範囲推測処理を示す図である。
【図６−２】実施の形態にかかるソフトウェア資産活用装置１００における影響範囲推測処理を示す図である。
【図７】実施の形態にかかるソフトウェア資産活用装置１００における影響範囲推測処理を示す図である。
【図８−１】実施の形態にかかるソフトウェア資産活用装置１００における影響範囲推測処理を示す図である。
【図８−２】実施の形態にかかるソフトウェア資産活用装置１００における影響範囲推測処理を示す図である。
【図８−３】実施の形態にかかるソフトウェア資産活用装置１００における影響範囲推測処理を示す図である。
【発明を実施するための形態】
【００２０】
以下、図面を参照して本発明の実施の形態について説明する。
図１−１に、本実施の形態にかかるソフトウェア資産活用装置１００の基本構成を示す。また、図１−２に、ソフトウェア資産活用装置１００のより好ましい構成を示す。ソフトウェア資産活用装置１００は、ソフトウェア資産を構成する情報を保持するためのリポジトリ４、リポジトリ４に対する情報の入力、抽出、分析等を行う処理装置３を有する。また、利用者が処理部に対する入力操作を行うための入力装置１、処理装置３の処理結果等を利用者に提示する出力装置２を備えていることが好ましい。
【００２１】
ソフトウェア資産活用装置１００は、典型的にはコンピュータであり、制御プログラムに基づいて各種処理を実行する中央制御装置、制御プログラム及びリポジトリ４等を格納する揮発性または不揮発性の記憶装置等により構成される。但し、コンピュータは物理的に単一である必要はなく、複数のコンピュータが各種処理を分散的に処理する構成としてもよい。
【００２２】
入力装置１は、利用者から処理装置３への入力インターフェースであり、例えばリポジトリ４に格納する情報を入力するための手段として機能する。例えば、キーボード、マウス、通信インターフェース等であってよい。
【００２３】
出力装置２は、処理装置３から利用者への出力インターフェースであり、各種処理結果の出力に用いられる。例えば、リポジトリ４に格納された情報を外部へ取り出すための手段として機能する。例えば、ディスプレイ、プリンタ、通信インターフェース等であってよい。
【００２４】
処理装置３は、リポジトリ４に対して情報を格納する情報入力部５、リポジトリ４内の情報を、様々な条件、形式に従って抽出する情報抽出部６、抽出した情報を所定の手法で分析する情報分析部７を有する。
【００２５】
リポジトリ４は、例えば、ソフトウェア資産を構成する情報を格納する情報保持部８、各情報に対して付与されるキーワードを保持するキーワード保持部９、ソフトウェア資産を構成する情報間の関係性に関する情報を格納するリンクテーブル１０を有する。リポジトリ４は、ソフトウェア資産活用装置１００が有する図示しない記憶装置内に設けられた、論理的な記憶手段である。
【００２６】
（リポジトリ）
ここで、図２−１乃至図２−９を用いて、リポジトリ４が、どのような概念に基づいてソフトウェア資産を管理するかについて説明する。
【００２７】
上述のように、ソフトウェア資産は様々な情報の集合であるが、これらソフトウェア資産を構成する個々の情報単位を情報ノードと呼ぶ。例えば、業務定義情報、システム設計情報、ソースコード、テスト仕様情報、運用仕様情報等を構成する、意味を持つ情報のまとまり（情報単位）が、情報ノードである。
一方、リポジトリ４において情報ノードとして表されている情報の実体を、モジュールと呼ぶ。例えば、記憶装置上に「ソースファイルＡ」というファイルの実体が存在しており、リポジトリ４において上記「ソースファイルＡ」についてのメタ情報を「ソースＡ」として管理していた場合、「ソースファイルＡ」をモジュールと呼び、「ソースＡ」を情報ノードと呼ぶ。また、文書化されたソフトウェア資産が存在する場合は、記憶装置上に存在するその文書データの全部または一部がモジュールであり、リポジトリ４条で管理されているその文書のメタ情報が、情報ノードである。なお、リポジトリ４は、実体を有しない情報ノードを有することもできる。例えば、Ａ機能について記載した文書が存在しなくても、情報システムにＡ機能が必要である場合は、利用者はＡ機能の名称を冠した、いわば空の情報ノードを作成し、リポジトリ４に格納できる。
【００２８】
（マトリクスとブロック）
リポジトリ４は、これらの情報ノードそれぞれを、「抽象度」と「詳細度」の２つの評価基準により分類したうえで格納する。「抽象度」「詳細度」には、それぞれ複数の段階（レベル）が設けられる。情報ノードは、それら複数のレベルのいずれかに割り当てられる。すなわち、リポジトリ４は、情報ノードを、「抽象度」「詳細度」の２軸によって定義されるマトリクス上のいずれかの位置に割り当てて格納する。
【００２９】
図２−１に、本実施の形態が想定するマトリクスを例示する。この例では、マトリクスの縦軸が「抽象度」、横軸が「詳細度」を示す。「抽象度」「詳細度」は、原点から遠ざかるほど大きくなる。すなわち、より原点から離れた位置には、より抽象的又は詳細な内容を含む情報ノードが格納される。本実施の形態では、「抽象度」「詳細度」のレベルを、レベル番号によって識別することとする。すなわち、「抽象度」「詳細度」の最も小さいレベルを、レベル番号「１」と呼ぶ。以降、「抽象度」「詳細度」が大きくなるに従って、昇順のレベル番号「２」「３」・・で呼称する。
【００３０】
なお、マトリクスの縦横のサイズ（レベル数）は固定的ではなく、管理対象のソフトウェア資産の規模や複雑さ等に応じて、利用者が自由に設定する事が可能である。
【００３１】
情報ノードが割り当てられるマトリクス上の位置を、ブロックと呼ぶ。本実施の形態では、個々のブロックを「抽象度レベル番号−詳細度レベル番号」の形式で、２つの数字の組によって特定する。例えば、図２−１において、情報ノードＸが割り当てられたブロックは「１−２」である。
【００３２】
（抽象度と詳細度）
ここで、「抽象度」「詳細度」の意義について説明する。「抽象度」とは、情報ノードを、情報の内容と、システムの実装と、の依存度の強さによって分類する尺度である。例えば、業務定義情報、システム設計情報、ソースコード、テスト仕様情報、運用仕様情報の５種類の情報ノードを、５段階の抽象度レベル１乃至５に分類する場合、実装への依存度が最も低い業務定義情報を、最も高い抽象度レベル（抽象度レベル＝５）に割り当てる。以降、実装への依存度が高まる順に、システム設計情報には抽象度レベル＝４を、ソースコードには抽象度レベル＝３、テスト仕様情報には抽象度レベル＝２、運用仕様情報には抽象度レベル＝１を割り当てる。
【００３３】
「詳細度」とは、情報ノードを、設計の詳細度によって分類する尺度である。例えば、図２−３に示すように、システム設計情報として、ＡＡ機能の概要を自然言語で記述した機能記述と、ＡＡ機能におけるデータ遷移を例えばＤＦＤ（Ｄａｔａ  Ｆｌｏｗ  Ｄｉａｇｒａｍ）等で記述したデータ関連図と、の２種類の情報ノードを、２段階の詳細度レベル１乃至２に割り当てる場合、設計の詳細度が最も高いデータ関連図を、最も高い詳細度レベル（詳細度レベル＝２）に割り当てる。一方、設計の詳細度が比較的低い機能記述には詳細度レベル＝１を割り当てる。
【００３４】
なお、リポジトリ４においては、詳細度が異なるが、同等の抽象度を有する情報ノードには同じ抽象度レベルを、抽象度が異なるが、同等の詳細度を有する情報ノードには同じ詳細度レベルを割り当てることが好ましい。
【００３５】
図２−２に、リポジトリ４を具体的に実現するためのテーブル構造の一例を示す。ソフトウェア資産活用装置１００は、例えば図示しない記憶装置上の記憶領域に、上記テーブル構造を有する情報保持部８を備えることができる。情報保持部８は、リポジトリ４に格納された情報ノードを識別するための情報名、情報ノードの位置を示すブロック、及び情報ノードの実体（情報実体。例えば文書データ等）の実際の保存場所を示す情報実体の場所、を少なくとも要素とする複数のレコードを保持できる。本実施の形態では、情報ノードの実体を、情報保持部８の外部の任意の保存場所に保存することとしている。なお、情報ノードの実体を、情報保持部８のレコード内に保持することとしても構わない。
【００３６】
（キーワード）
リポジトリ４においては、各情報ノードにキーワードを付与することができる。図２−３及び図２−４を用いて、情報ノードとキーワードとの関係について説明する。
【００３７】
図２−３は、情報保持部８の２つのブロック（１−１及び１−２）に、それぞれＡＡ、ＢＢ、ＣＣ、ＤＤという情報ノードが登録されている様子を示している。ブロック１−１に含まれる情報ノードの情報実体（例えば機能記述）と、ブロック１−２に含まれる情報ノードの情報実体（例えばデータ関連図）とでは、同様の論理構成や用語等が用いられていることが少なくないため、このような事象が生じ得る。ここで、ブロック１−１における情報ノードＡＡと、ブロック１−２における情報ノードＡＡとは、何らかの意味的な関連を有していることが多い。そこで、リポジトリ４においては、このような意味的な関連を識別するためのいわばタグとして、これらの情報ノードに対し、同一のキーワードを付与することができる。
【００３８】
図２−４に、情報ノードとキーワードとの関連づけを具体的に実現するためのテーブル構造の一例を示す。図２−４の情報保持部８は、図２−２の情報保持部８に比べ、各情報ノード（レコード）にユニークな番号が与えられ、たとえ同一情報名の情報ノードが複数存在しても、それらを識別可能に構成されている点で相違する。この例では、情報名ＡＡが２か所、ＢＢが２か所、ＣＣが２か所、ＤＤが２か所に存在している。
【００３９】
キーワード保持部９は、少なくともキーワード名と、情報番号リストとを対応付ける１以上のレコードからなるテーブルである。情報番号リストは、キーワードによって関連付けられる複数の情報ノードを、情報保持部８における番号によって特定する。
【００４０】
（関係リンク）
リポジトリ４は、個々の情報ノードの関係性に関する情報を保持することができる。この関係性を、関係リンクと称する。
【００４１】
関係リンクは、ある情報ノードと、当該情報ノードと同一ブロック、抽象度レベルのみが異なるブロック、及び詳細度レベルのみが異なるブロックに存在する他の情報ノードと、の間で設定することができる。
【００４２】
本実施の形態では、少なくとも以下の４種類の関係リンクを設定できる。同格関係は、同一の対象又は事象等を、別の目的や観点等に基づいて表現した情報ノード同士を関係づける関係リンクである。下位関係は、ある上位概念たる情報ノードと、当該情報ノードの下位概念や構成部品である情報ノードを関係づける関係リンクである。詳細化関係は、ある情報ノードと、当該情報ノードをより詳細化した情報ノードとを関係づける関係リンクである。具体化関係は、抽象的な概念を示す情報ノードと、当該情報ノードをより具体化した情報ノードとを関係づける関係リンクである。以上の他、情報ノード間でのデータの関連性や処理順序等を表現するため、任意の関係リンクを設定することもできる。
【００４３】
なお、詳細化関係は、詳細度レベルが異なる情報ノード同士で設定されても良く、同一の詳細度レベルの情報ノード同士で設定されても良い。また、具体化関係は、抽象度レベルが異なる情報ノード同士で設定されても良く、同一の抽象度レベルの情報ノード同士で設定されても良い。なお、リポジトリ４は、詳細化関係又は具体化関係が、詳細度レベル又は抽象度レベルを跨ぐものであるか否かを示すフラグを、それぞれ保持していることが好ましい。
【００４４】
図２−５は、ある仮想の企業の組織構造及び業務構造を、下位関係、及び「関連」の２つの関係リンクを用いて示したものである。ここで、「関連」とは、ある業務に関連する入出力情報を示す関係リンクであるものとする。この図は、以下の事実を示す。この企業は、「業務フロー」に関するソフトウェア資産（例えば文書化されたマニュアル等）を有する。この「業務フロー」の中には、「販売部門」にかかる業務フローが含まれる。「販売部門」の業務フローは、「受注」「在庫確認」「出荷指示」の３つの業務からなる。それぞれの業務における入出力情報は、「注文書」「製造指示」「出荷指示」である。
【００４５】
図２−６は、図２−５の関係リンクを具体的に実現するためのテーブル構造の一例である。図２−６の情報保持部８は、図２−４の情報保持部８と比較して、「出リンク」「入リンク」要素を有している点で相違する。ここで「出リンク」は、その情報ノードを始点とする関係リンクを、リンクテーブル１０（後述）で定義された番号によって特定している。また、「入リンク」は、その情報ノードを終点とする関係リンクを、リンクテーブル１０（後述）で定義された番号によって特定している。
【００４６】
なお、出リンク及び入リンク要素は、情報保持部８の構成上、必須の要素ではない。当該要素は、後述のリンクテーブル１０が有する要素と重複しており、リンクテーブル１０を情報ノードの番号で検索すれば取得することが可能である。しかしながら、実際の運用においては、リポジトリ４に登録される情報量が増加するほど、リンクテーブル１０の検索時間が増大し、ソフトウェア資産活用装置１００全体の性能に大きな影響を及ぼすことが予想される。よって、高速化の手段として、情報保持テーブルに出リンク及び入リンク要素を直接持つことは有効である。
【００４７】
リンクテーブル１０は、複数の情報ノード間に張られた関係リンクを定義、保存するためのテーブルである。リンクテーブル１０は、少なくとも番号、属性、始点情報、終点情報を要素とする、１以上のレコードを有する。番号は、関係リンクを一意に特定するための識別子である。属性は、関係リンクの種類を示す。始点情報は、関係リンクの始点となる情報ノードを、情報保持部８で定義された番号によって特定している。終点情報は、関係リンクの終点となる情報ノードを、情報保持部８で定義された番号によって特定している。
【００４８】
図２−７は、ある仮想の企業の組織構造及び業務構造を、同格関係、及び詳細化関係の２つの関係リンクを用いて示したものである。両端が矢印の線は、同格関係を示す。同格関係は、同じブロックの中で、本質的に同じ意味内容を有する情報ノード間に設定されている。片方が矢印の線は、詳細化関係を示す。この例において、詳細化関係は、詳細化レベルの異なるブロックに位置する情報ノード間に設定されている。
【００４９】
図２−８は、ある仮想の企業の組織構造及び業務構造を、具体化関係の関係リンクを用いて示したものである。片方が矢印の線は、具体化関係を示す。この例において、具体化関係は、抽象化レベルの異なるブロックに位置する情報ノード間に設定されている。
【００５０】
図２−９は、ある仮想の企業の組織構造及び業務構造に関するソフトウェア資産全体を、リポジトリ４に登録した例を示している。上述の図２−５、図２−７、図２−８は、この図の一部分を抜き出したものである。
【００５１】
利用者は、所定のユーザインタフェースを介し、入力装置１を利用して、処理装置３に、情報ノード、キーワード、関係リンクにかかるデータを入力する。処理装置３の情報入力部５は、これらの入力を受け付けると、リポジトリ４の情報保持部８、キーワード保持部９、リンクテーブル１０等に、それぞれデータを格納する処理を行う。
【００５２】
本実施の形態では、このリポジトリ４に構築された情報ノード、関係リンク構造を利用して、ソフトウェアのあるバージョンにおいて発見された問題の影響範囲を推測する手法を開示する。ここで、あるバージョンにおいて問題が発生した情報ノードを「問題発生ノード」と呼ぶ。また、他の情報ノードから、この問題発生ノードに対して設定された関係リンク、すなわち問題発生ノードを終点とする関係リンクを「入力リンク」と呼ぶ。また、この問題発生ノードから、他の情報ノードへに対して設定されたリンク、すなわち問題発生ノードを始点とする関係リンクを「出力リンク」と呼ぶ。さらに、入力リンクの始点となっている情報ノードを「入力ノード」と呼び、出力リンクの終点となっている情報ノードを「出力ノード」と呼ぶ。
【００５３】
情報分析部７は、本実施の形態において、ソフトウェアのあるバージョンにおいて発見された問題の影響範囲を推測するための検査を実施する処理部である。以降、情報分析部７が実現するこの検査機能を、影響範囲推測機能と称する。
【００５４】
影響範囲推測機能が利用される典型的な場面は次のようなものである。すなわち、ソフトウェア資産活用装置１００にソフトウェア資産が格納されているある業務システムの運用中、業務システムに問題が発生し、開発者がその問題の原因を追究したところ、業務システムを構成するあるアプリケーションに問題があること、換言すれば問題が潜在していることが確認された場面である。
【００５５】
ここで、問題が発生したアプリケーションのバージョンをＸ（表記をＶｅｒ．Ｘ）とする。また、当該アプリケーションの、Ｖｅｒ．Ｘより１世代前のバージョンをＶｅｒ．（Ｘ−１）、Ｖｅｒ．Ｘより１世代後のバージョンをＶｅｒ．（Ｘ＋１）と称する。
【００５６】
図３は、上述のバージョン情報を管理するための具体的なテーブル構造の一例である。図３の情報保持部８（情報保持テーブル）は、図２−４又は図２−６の情報保持部８（情報保持テーブル）と比較して、「有効期間」情報を有している点に特徴を有する。ここで「有効期間」は、「開始」「終了」情報を要素として含む。「開始」は、この情報ノードが生成された際の、モジュールのバージョンを示す。「終了」は、この情報ノードが有効であった最後のモジュールのバージョン、換言すれば、この情報ノードが最後に使用されたモジュールのバージョンを示す。なお、この情報ノードが、モジュールの最新バージョンにおいても有効である場合、「終了」バージョンは「−」と表記される。
【００５７】
図３のリンクテーブル１０（リンクテーブル）は、図２−６のリンクテーブル１０（リンクテーブル）と比較して、「有効期間」情報を有している点に特徴を有する。ここで「有効期間」は、「開始」「終了」情報を要素として含む。「開始」は、この関係リンクが生成された際の、モジュールのバージョンを示す。「終了」は、この関係リンクが有効であった最後のモジュールのバージョンを示す。なお、この関係リンクが、モジュールの最新バージョンにおいても有効である場合、「終了」バージョンは「−」と表記される。
【００５８】
以上の構成を前提として、情報分析部７が影響範囲推測機能を実行する際の動作について、図７のフローチャートを用いて説明する。
【００５９】
はじめに、影響範囲推測機能の全体的な動作について説明する。情報分析部７は、Ｖｅｒ．Ｘに「問題発生ノード」が存在する場合、まず１世代前のＶｅｒ．Ｘ−１について、「問題が潜在している可能性があるノード」が存在するかどうかを推測する。Ｖｅｒ．Ｘ−１に「問題が潜在している可能性があるノード」の存在が推測される場合、さらに１世代前のＶｅｒ．Ｘ−２について、「問題が潜在している可能性があるノード」が存在するかどうかを推測する。以降、「問題が潜在している可能性があるノード」の存在が推測されるまで、世代を遡って同様の処理を行う。いずれかの段階で「問題が潜在している可能性があるノード」の存在が推測されれば、情報分析部７はその段階で処理を終了する。同様に、情報分析部７は、Ｖｅｒ．Ｘより後の世代、すなわちＶｅｒ．Ｘ＋１、Ｖｅｒ．Ｘ＋２・・についても検査を行い、「問題が潜在している可能性があるノード」の確認を行う。
【００６０】
図７−１のフローチャートは、このうち、Ｖｅｒ．Ｘを基準として、Ｖｅｒ．Ｘ−１、Ｖｅｒ．Ｘ−２・・とバージョンを遡りつつ「問題が潜在している可能性があるノード」を発見していく処理に関するものである。なお、Ｖｅｒ．Ｘを基準として、Ｖｅｒ．Ｘ＋１、Ｖｅｒ．Ｘ＋２・・とバージョンを下りつつ「問題が潜在している可能性があるノード」を発見していく処理についても、後述のカレントバージョンをＶｅｒ．（Ｘ＋ｎ）とすることにより、同様に実行することができるため、本明細書では説明を省略する。
【００６１】
以下、図７−１のフローチャートを利用して、Ｖｅｒ．Ｘからバージョンを遡りつつ、過去のバージョンに存在する「問題が潜在している可能性があるノード」を発見していく処理について説明する。
【００６２】
Ｓ１０１：はじめに、情報分析部７は、ユーザ入力等の手段により、「問題発生ノード」及びそのバージョンＶｅｒ．Ｘを取得する。情報分析部７は、問題潜在ノード群に、「問題発生ノード」を格納する。ここで、問題潜在ノード群とは、「問題発生ノード」及び「問題が潜在している可能性があるノード」を格納するための記憶領域である。
【００６３】
Ｓ１０２：情報分析部７は、図３に示したような情報保持部８及びリンクテーブル１０から、「問題発生ノード」に関係する情報であって、かつＶｅｒ．Ｘにおいて有効な情報を抽出する。ここで、「問題発生ノード」に関係する情報とは、「問題発生ノード」に設定された「入力リンク」及び「出力リンク」、並びに、これらの関係リンクを介して「問題発生ノード」と接続された「入力ノード」及び「出力ノード」である。なお、情報分析部７は、「入力ノード」及び「出力ノード」に設定された上記以外の関係リンク、並びに、これらの関係リンクを介して「入力ノード」及び「出力ノード」と接続された他のノードについても、抽出することとしても良い。
【００６４】
例えば、図８−１に示すように、Ｖｅｒ．Ｘに存在する「問題発生ノード」がノードＥである場合、情報分析部７は、ノードＥにかかる「入力リンク」ＢＥ、ＤＥ、ＧＥ、「出力リンク」ＥＨ、「入力ノード」Ｂ、Ｄ、Ｇ、「出力ノード」Ｈ、を抽出する。なお、これらの「入力ノード」「出力ノード」の先にある関係リンクＡＢ、ＡＤ、ＩＨ、及びこれらの関係リンクにより「入力ノード」「出力ノード」に接続される情報ノードＡ、Ｉもあわせて抽出することとしても良い。なお、例えば関連リンクＡＢとは、情報ノードＡを始点とし情報ノードＢを終点とする関連リンクをいう。
【００６５】
ここで抽出される情報は、いずれもＶｅｒ．Ｘにおいて有効な情報である。図８−１では、Ｖｅｒ．Ｘにおいて有効な情報を実線で、無効な情報を破線で示している。Ｖｅｒ．Ｘにおいて有効でない情報、例えば「入力リンク」ＣＥや「入力ノード」Ｃは、ここでは抽出されない。
【００６６】
Ｓ１０３：情報分析部７は、初期設定として、カウンタｎを０で初期化する。また、ｎをインクリメントしてｎ＋１とする。初回の計算時のカウンタは１となる。そして、カレントバージョンをＶｅｒ．（Ｘ−ｎ）とする。初回の計算時のカレントバージョンはＶｅｒ．Ｘ−１となる。
【００６７】
Ｓ１０４：情報分析部７は、情報保持部８及びリンクテーブル１０を参照して、Ｓ１０１及びＳ１０２において取得した「問題発生ノード」、「入力リンク」「出力リンク」等の関係リンク、及び「入力ノード」「出力ノード」等の情報ノードが、カレントバージョンＶｅｒ．Ｘ−ｎにおいても有効であるか否か判定する。
【００６８】
例えば、図８−２に示すように、カレントバージョンがＶｅｒ．Ｘ−１である場合、Ｖｅｒ．Ｘにおいて有効であった「問題発生ノード」Ｅ、関係リンクＢＥ、ＤＥ、ＧＥ、ＥＨ、ＡＢ、ＡＤ、ＩＨ、及び情報ノードＢ、Ｄ、Ｇ、Ｈ、Ａ、Ｉのうち、Ｖｅｒ．Ｘ−１においても有効である情報は、関係リンクＡＢ、ＡＤ、ＩＨ、及び情報ノードＢ、Ｄ、Ｇ、Ｈ、Ａ、Ｉである。換言すれば、「問題発生ノード」Ｅ、「入力リンク」ＢＥ、ＤＥ、ＧＥ、及び「出力リンク」ＥＨは、Ｖｅｒ．Ｘ−１では無効となっている。
【００６９】
Ｓ１０５：情報分析部７は、Ｓ１０４における判定結果に基づいて、カレントバージョンＶｅｒ．Ｘ−ｎにおいて、「問題発生ノード」又は「問題が潜在している可能性があるノード」が存在するか否かを判定する。ここで、「問題が潜在している可能性があるノード」とは、「問題発生ノード」とは異なる情報ノードであるが、他の情報ノードとの間の関係リンク構造等において「問題発生ノード」と同等であると評価される情報ノードである。そのような情報ノードは、その役割や機能において「問題発生ノード」と同等であるから、「問題発生ノード」と同様の問題が潜在している可能性がある。
【００７０】
図４に、Ｖｅｒ．Ｘ−ｎにおける「問題発生ノード」「入力ノード」「出力ノード」「入力リンク」「出力リンク」の状態（有効又は無効）の組み合わせを示す。ここで、○はその情報が有効であり、×は無効であることを示す。また、図５は、図４の表から存在し得る１３パターンの組合せを抽出し、それらの組合せそれぞれにおける「問題発生ノード」「入力ノード」「出力ノード」「入力リンク」「出力リンク」の関係を模式化したものである。
【００７１】
情報分析部７は、Ｓ１０４における判定結果が、図５に示す１３パターンのいずれかに当てはまる場合、以下のようにして「問題が潜在している可能性があるノード」を探索する。
【００７２】
パターン１：カレントバージョンＶｅｒ．Ｘ−ｎにおいて、「問題発生ノード」が有効であり、かつ「入力ノード」「出力ノード」「入力リンク」「出力リンク」が有効である場合、情報分析部７は、Ｖｅｒ．Ｘ−ｎにおける「問題発生ノード」は、Ｖｅｒ．Ｘにおける「問題発生ノード」と同等であるとみなし、問題発生ノード群にＶｅｒ．Ｘ−ｎの「問題発生ノード」を格納する。
【００７３】
パターン２乃至９：カレントバージョンＶｅｒ．Ｘ−ｎにおいて、「問題発生ノード」が有効であり、「入力リンク」「出力リンク」のうちいずれか一方又は両方が無効である場合、情報分析部７は、Ｖｅｒ．Ｘにおける「入力ノード」「出力ノード」の代替となりうる情報ノード、換言すれば同等の情報ノードが存在するかどうかを検査する（図６−２）。Ｖｅｒ．Ｘにおける「入力ノード」「出力ノード」と同等の情報ノードが存在するかどうかの検査は、上述の問題発生ノードの検査方法と同様の方法で行うことができる。
【００７４】
例えば、Ｖｅｒ．Ｘにおける「入力リンク」が無効である場合、情報分析部７は次のように動作する。まず、情報分析部７は、Ｖｅｒ．（Ｘ−１）における入力ノードを問題発生ノードと仮定する。次に、情報分析部７は、仮定された問題発生ノードについて、Ｖｅｒ．（Ｘ−１）における入力リンク、入力ノード、出力リンク、出力ノードを確認する。そして、情報分析部７は、仮定された問題発生ノードと同等のノードが、Ｖｅｒ．Ｘにおいて存在するどうかを、入力リンク、入力ノード、出力リンク、出力ノードの各情報を基に検査する。すなわち、仮定された問題発生ノードと同じ入力リンク、入力ノード、出力リンク、出力ノードを有する情報ノードが、Ｖｅｒ．Ｘにおいて存在する場合、情報分析部７は、両者を同等の情報ノードであると判断する。
【００７５】
存在する場合、情報分析部７は、Ｖｅｒ．Ｘにおける「入力ノード」「出力ノード」の代替となりうるその情報ノードを、代替的な「入力ノード」「出力ノード」とみなして、「問題が潜在している可能性があるノード」が存在するか否かを改めて検査する。すなわち、Ｓ１０５にかかる処理を再帰的に実行する。
【００７６】
一方、存在しない場合、情報分析部７は、カレントバージョンＶｅｒ．Ｘ−ｎにおいては「問題が潜在している可能性があるノード」は存在しないと判断する。
【００７７】
パターン１０乃至１３：カレントバージョンＶｅｒ．Ｘ−ｎにおいて、「問題発生ノード」が無効である場合、情報分析部７は、図６−１に示すパターンＡ、Ｂ、Ｃのいずれかにしたがって「問題が潜在している可能性があるノード」を探索する。典型的には、まずパターンＡを試行し、つぎにパターンＢを試行し、最後にパターンＣを試行する。
【００７８】
パターンＡ：情報分析部７は、カレントバージョンＶｅｒ．Ｘ−ｎにおいて有効である「入力ノード」を始点とし、かつ「入力リンク」と種別が同じである関連リンクを抽出する。
【００７９】
抽出した関連リンクの終点である情報ノードの中に、当該情報ノードを始点、「出力ノード」を終点とし、かつ「出力リンク」と種別が同じである関連リンクを有するものが存在する場合、情報分析部７は、この情報ノードを「問題が潜在している可能性があるノード」と推測し、問題発生ノード群に当該情報ノードを格納する。
【００８０】
パターンＢ：情報分析部７は、カレントバージョンＶｅｒ．Ｘ−ｎにおいて有効である「入力ノード」を始点とし、かつ「入力リンク」と種別が同じである関連リンクを抽出する。
【００８１】
抽出した関連リンクのなかに「出力ノード」を終点とするものが存在する場合、情報分析部７は、この「入力ノード」を「問題が潜在している可能性があるノード」と推測し、問題発生ノード群にＶｅｒ．Ｘ−ｎにおける「入力ノード」を格納する。
【００８２】
一方、抽出した関連リンクのなかに「出力ノード」を終点とするものが存在しない場合、情報分析部７は、抽出された関連リンクの終点であるすべての情報ノードについて、当該情報ノードを始点し、かつ「入力リンク」と種別が同じである関連リンクを抽出する。ここで抽出した関連リンクのなかに「出力ノード」を終点とするものが存在する場合、情報分析部７は、その情報ノードを「問題が潜在している可能性があるノード」と推測し、問題発生ノード群にその情報ノードを格納する。
【００８３】
パターンＣ：情報分析部７は、カレントバージョンＶｅｒ．Ｘ−ｎにおいて有効である「出力ノード」を終点とし、かつ「出力リンク」と種別が同じである関連リンクを抽出する。
【００８４】
抽出した関連リンクのなかに「入力ノード」を始点とするものが存在する場合、情報分析部７は、この「出力ノード」を「問題が潜在している可能性があるノード」と推測し、問題発生ノード群にＶｅｒ．Ｘ−ｎにおける「出力ノード」を格納する。
【００８５】
Ｓ１０６：情報分析部７は、Ｓ１０４乃至Ｓ１０５の処理により、カレントバージョンＶｅｒ．Ｘ−ｎにおいて「問題が潜在している可能性があるノード」を発見した場合、さらに１世代前のバージョンであるＶｅｒ．Ｘ−（ｎ＋１）においても「問題が潜在している可能性があるノード」が存在しないか探索を行う。すなわち、カウンタｎをインクリメントし、カレントバージョンをＶｅｒ．Ｘ−（ｎ＋１）として、Ｓ１０４乃至Ｓ１０６の処理を繰り返し実行する。この繰り返しは、カレントバージョンにおいて「問題が潜在している可能性があるノード」が発見されなくなるまで継続される。
【００８６】
一方、カレントバージョンＶｅｒ．Ｘ−ｎにおいて「問題が潜在している可能性があるノード」を発見しなかった場合、情報分析部７は、問題発生ノード群に格納されている情報ノードを出力装置２に出力してユーザに提示し、影響範囲推測機能にかかる処理を終了する。
【００８７】
つづいて、図８に示す具体例を用いて、情報分析部７が影響範囲推測機能を実行する手順についてより具体的に説明する。
【００８８】
図８−１は、Ｖｅｒ．Ｘにおける情報ノードおよび関連リンクの状態を示している。情報ノードＡ、Ｂ、Ｄ、Ｅ、Ｇ、Ｈ、Ｉが有効であり、このうち情報ノードＥが「問題発生ノード」である。また、関連リンクＡＢ（同格）、ＡＤ（その他）、ＢＥ（詳細化）、ＤＥ（その他）、ＥＨ（その他）、ＧＥ（具体化）、ＩＨ（具体化）が有効である。括弧内は関連リンクの種別を示す。情報分析部７は、Ｖｅｒ．Ｘにおける「問題発生ノード」に関連するこれらの情報ノードおよび関連リンクを記憶しておく。
【００８９】
図８−２は、Ｖｅｒ．Ｘ−１における情報ノードおよび関連リンクの状態の一例を示している。この例をパターンａと呼ぶ。パターンａでは、ノードＡ、Ｂ、Ｄ、Ｆ、Ｇ、Ｈ、Ｉが有効である。また、関連リンクＡＢ（同格）、ＡＤ（その他）、ＢＦ（詳細化）、ＤＦ（その他）、ＦＨ（その他）、ＧＦ（具体化）、ＩＨ（具体化）が有効である。
【００９０】
情報分析部７は、まずＶｅｒ．Ｘに存在していた「問題発生ノードＥ」が、Ｖｅｒ．Ｘ−１においても有効であるかを確認する。パターンａでは、Ｖｅｒ．Ｘ−１においては情報ノードＥが存在しない。そのため、情報分析部７は、Ｖｅｒ．Ｘ−１において、情報ノードＥと同等な「問題が潜在している可能性があるノード」が存在しないか探索する。
情報分析部７は、Ｖｅｒ．Ｘにおける「入力ノード」Ｂ、Ｄ、Ｇと、「出力ノード」Ｈが、Ｖｅｒ．Ｘ−１においても有効であるかを確認する。パターンａでは、Ｖｅｒ．Ｘ−１において、「入力ノード」Ｂ、Ｄ、Ｇ、「出力ノード」Ｈはいずれも有効である。
【００９１】
情報分析部７は、まず、Ｖｅｒ．Ｘにおいて有効であった、「入力ノード」Ｂ、Ｄ、Ｇを始点とする「入力リンク」ＢＥ（詳細化）、ＤＥ（その他）、ＧＥ（具体化）と同種別の関係リンクが、Ｖｅｒ．Ｘ−１において「入力ノード」Ｂ、Ｄ、Ｇから出ていないかを確認する。すると、関連リンクＢＦ（詳細化）、ＤＦ（その他）、ＧＦ（具体化）が抽出される。情報分析部７は、これらの抽出された関連リンクの終点である情報ノードＦを抽出する。
【００９２】
情報分析部７は、抽出された情報ノードＦを始点とする関連リンクＦＨ（その他）の種別および終点が、Ｖｅｒ．Ｘにおける「出力リンク」ＥＨ（その他）の種別および終点と同じであるか否かを確認する（Ｓ１０５、パターンＡの処理）。この例では両者は同じであるので、情報分析部７は、抽出された情報ノードＦを、「問題発生ノード」と同等な「問題が潜在している可能性があるノード」と推測する。
【００９３】
また、Ｖｅｒ．Ｘ−１での入力ノード及び出力ノードに問題が潜在している可能性がないか確認する。確認方法は、Ｖｅｒ．Ｘでの入力ノード−出力ノード間のリンク情報が存在するか、存在するのであれば種別は何かを確認することで入力ノード及び出力ノードに問題が潜在している可能性がないかを確認する。パターンａでは、入力ノードＢ、Ｄ、Ｇ−出力ノードＨ間にリンク情報が存在しないため、入力ノード及び出力ノードに問題が潜在する可能性はないと判断する。
【００９４】
このように判断できる理由は次のとおりである。Ｖｅｒ．（Ｘ−１）からＶｅｒ．Ｘへの改修により、入力ノードに問題が潜在してしまった場合、換言すれば問題発生ノードから入力ノードへ問題が移動した場合、問題発生ノードから出力ノードへの出力リンクと同種別の関連リンクが、入力ノードから出力ノードに設定される。出力ノードに問題が潜在してしまった場合、換言すれば問題発生ノードから出力ノードへ問題が移動した場合、入力ノードから問題発生ノードへの入力リンクと同種別の関連リンクが、入力ノードから出力ノードへ設定される。
【００９５】
図８−２は、Ｖｅｒ．Ｘ−１における情報ノードおよび関連リンクの状態の他の例を示している。この例をパターンｂと呼ぶ。パターンｂでは、ノードＡ、Ｂ、Ｃ、Ｅ、Ｇ、Ｈ、Ｉが有効である。また、関連リンクＡＢ（同格）、ＡＣ（その他）、ＢＥ（その他）、ＢＨ（詳細化）、ＣＥ（その他）、ＣＨ（その他）、ＧＨ（具体化）、ＩＨ（具体化）が有効である。
【００９６】
情報分析部７は、Ｖｅｒ．Ｘにおける「入力ノード」「出力ノード」「問題発生ノード」がＶｅｒ．Ｘ−１においてもすべて有効であるかを確認する。パターンｂでは、Ｖｅｒ．Ｘにおける「問題発生ノード」Ｅ、「入力ノード」Ｂ、Ｇ、「出力ノード」Ｈが、ＶｅｒＸ−１においても有効であるが、「入力ノード」Ｄが、Ｖｅｒ．Ｘ−１においては無効である。また、Ｖｅｒ．Ｘにおける「入力ノード」ではないＣが、Ｖｅｒ．Ｘ−１においては情報ノードＥに有効な関係リンクを入力している。そのため、Ｖｅｒ．Ｘ−１における情報ノードＥは、Ｖｅｒ．Ｘにおける「問題発生ノード」Ｅと同等であるとは、直ちに推測できない。
【００９７】
そこで、情報分析部７は、Ｖｅｒ．Ｘ−１における情報ノードＥは、Ｖｅｒ．Ｘにおける「問題発生ノード」Ｅと同等であるといえるかどうかの検証を行う。情報分析部７は、Ｖｅｒ．Ｘにおける「入力ノード」Ｂ、Ｄ、Ｇが、Ｖｅｒ．Ｘ−１において情報ノードＥに関係リンクを入力している情報ノードＢ、Ｃ、Ｇと同等といえるかどうかを検証する。
【００９８】
具体的には、Ｖｅｒ．Ｘにおける「入力ノード」Ｂ、Ｄ、Ｇと、Ｖｅｒ．Ｘ−１における情報ノードＢ、Ｃ、Ｇと、に設定されている関連リンクの始点、終点、種別をそれぞれ対比し、いずれのＶｅｒ．Ｘの「入力ノード」とＶｅｒ．Ｘ−１情報ノードとが同等であるのかを確認する。
【００９９】
まず、Ｖｅｒ．Ｘ−１の情報ノードＣと、Ｖｅｒ．Ｘの「入力ノード」Ｄとは、情報ノードＡを始点とし種別がその他である関係リンクＡＣ又はＡＤを有すること、および、情報ノードＥを終点とし種別がその他である関係リンクＣＥ又はＤＥを有すること、において共通するから、これらは同等であるものと判定される。すなわち、Ｖｅｒ．Ｘの情報ノードＤは、Ｖｅｒ．Ｘ−１の情報ノードＣが、分割又は統合したもの、あるいは情報ノードＣの代替として生成されたものと推測できる。
【０１００】
一方、情報ノードＢ、Ｇについては、Ｖｅｒ．ＸおよびＶｅｒ．Ｘ−１におけるそれを互いに比較するに、有する関連リンクの始点、終点、種別が異なる。すなわち、Ｖｅｒ．Ｘにおける情報ノードＢは、関係リンクＢＥ（詳細化）を有するのに対し、Ｖｅｒ．Ｘ−１における情報ノードＢは、関係リンクＢＥ（その他）、ＢＨ（詳細化）を有する。また、Ｖｅｒ．Ｘにおける情報ノードＧは、関係リンクＧＥ（具体化）を有するのに対し、Ｖｅｒ．Ｘ−１における情報ノードＢは、関係リンクＧＨ（具体化）を有する。そのため、情報分析部７は、Ｖｅｒ．Ｘにおける情報ノードＢ、Ｇと、Ｖｅｒ．Ｘ−１における情報ノードＢ、Ｇと、は同等のものでないと判断する。また、Ｖｅｒ．Ｘ−１においては、情報ノードＢ、Ｇ以外にも、Ｖｅｒ．Ｘにおける情報ノードＢ、Ｇと同等な情報ノードは存在しない。
【０１０１】
したがって、情報分析部７は、Ｖｅｒ．Ｘにおける「入力ノード」と、Ｖｅｒ．Ｘ−１において情報ノードＥに関係リンクを入力している情報ノードとは、同等といえないと判定する。よって、Ｖｅｒ．Ｘ−１における情報ノードＥは、Ｖｅｒ．Ｘにおける「問題発生ノード」Ｅと同等でない、すなわち「問題が潜在している可能性があるノード」ではないものと推測する。
【０１０２】
次に、情報分析部７は、「入力ノード」あるいは「出力ノード」に問題が潜在している可能性があるか確認する。パターンｂでは、Ｖｅｒ．Ｘにおいては無効であった「入力ノード」−「出力ノード」間の関連リンクが存在する。ここで、関連リンク情報を確認した時、Ｖｅｒ．Ｘ時の入力リンクと出力リンクと同じである場合、入力ノードあるいは出力ノードに問題が発生する可能性がある。パターンｂでは、Ｖｅｒ．Ｘ時の入力ノードと同等なノードであるノードＢ、Ｄ、ＧからＶｅｒ．Ｘ時の出力ノードＨへの関連リンクを確認する。この時、ノードＢ、Ｄ、ＧからのリンクがＶｅｒ．Ｘの問題発生ノード−出力ノード間の関連リンクと同じ種別のリンクであることから、問題発生ノードの一部がＶｅｒ．（Ｘ−１）では出力ノードに含まれていたと推測できる。そのため、ノードＨに問題が潜在している可能性があると推測する。例えば、ノードＢ、Ｄ、ＧからノードＨへのリンクがＶｅｒ．Ｘの入力ノード−問題発生ノードと同じリンク種別であった場合、入力ノードＢ、Ｄ、Ｇのそれぞれに問題が潜在している可能性がある。その場合、Ｖｅｒ．（Ｘ−２）を確認する場合はノードＢ、Ｄ、Ｇのそれぞれを問題発生ノードとして分析・推測処理を行う。
【０１０３】
情報分析部７は、影響範囲推測機能にかかるこれらの一連の処理を行い、「問題が潜在している可能性があるノード」が存在している場合、ＸをＸ−１またはＸ＋１にインクリメントまたはデクリメントとして、すなわち１世代ずつ前または後のバージョンについて、上述の一連の処理を繰り返し行う。あるバージョンにおいて「問題が潜在している可能性があるノード」が発見されない場合、それ以前またはそれ以降のバージョンについては、影響範囲推測機能にかかる処理は実行せず、それまでに特定した「問題が潜在している可能性があるノード」をユーザに提示して処理を終了する。
【０１０４】
本実施の形態によれば、情報分析部７は、問題が発生した資産、その資産に関連する関係リンク、その関係リンクに紐づいている資産に関する情報のみに基づいて、各バージョンにおいて問題が潜在している可能性がある資産を機械的に推測する。より具体的には、問題が発生したバージョンにおける、問題が潜在していた資産と、その資産にかかる関係リンク及びその関係リンクに紐づいている資産の情報を記憶しておき、他のバージョンについて、ある資産及びその資産にかかる関係リンク等が、記憶している問題が発生した資産及びその資産にかかる関係リンク等と一致あるいは同等の関係になっていた場合、当該他のバージョンにおいても問題が潜在している可能性があると推測する。
【０１０５】
これにより、あるバージョンにおいて問題が発生した時、同様の問題が発生する蓋然性が高いバージョンの範囲、すなわち影響範囲を高精度に特定することができる。また、これらの作業にかかる時間や手間を抑制することができる。
【０１０６】
なお、本発明は上述の実施の形態に限定されるものではなく、本発明の趣旨の範囲内において種々に変更可能であることは勿論である。例えば、上述の実施の形態において、ハードウェアによるものとして説明した任意の構成を、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）にコンピュータプログラムを実行させることにより実現することも可能である。この場合、コンピュータプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【０１０７】
１００  ソフトウェア資産活用装置
１  入力装置
２  出力装置
３  処理装置
４  リポジトリ
５  情報入力部
６  情報抽出部
７  情報分析部
８  情報保持部
９  キーワード保持部
１０  リンクテーブル
【図１−１】
2015156114.tif 000003
【図１−２】
2015156114.tif 000004
【図２−１】
2015156114.tif 000005
【図２−２】
2015156114.tif 000006
【図２−３】
2015156114.tif 000007
【図２−４】
2015156114.tif 000008
【図２−５】
2015156114.tif 000009
【図２−６】
2015156114.tif 000010
【図２−７−１】
2015156114.tif 000011
【図２−７−２】
2015156114.tif 000012
【図２−７−３】
2015156114.tif 000013
【図２−８】
2015156114.tif 000014
【図２−９−１】
2015156114.tif 000015
【図２−９−２】
2015156114.tif 000016
【図２−９−３】
2015156114.tif 000017
【図２−９−４】
2015156114.tif 000018
【図２−９−５】
2015156114.tif 000019
【図２−９−６】
2015156114.tif 000020
【図２−９−７】
2015156114.tif 000021
【図３】
2015156114.tif 000022
【図４】
2015156114.tif 000023
【図５】
2015156114.tif 000024
【図６−１】
2015156114.tif 000025
【図６−２】
2015156114.tif 000026
【図７】
2015156114.tif 000027
【図８−１】
2015156114.tif 000028
【図８−２】
2015156114.tif 000029
【図８−３】
2015156114.tif 000030