(57)【要約】【課題】  ソフトウェアの改造/修正に伴って影響範囲を特定する際に、適切な範囲に絞りこむ。【解決手段】  業務システムを構成するモジュールに関連付けて、モジュールがアクセスをするデータの識別子と、アクセスが作成、消去、更新、または、参照の何れであるかを示すアクセス種別と、を記憶する情報保持手段に接続され、指定されたモジュールがアクセスするデータのうち、作成、消去、または、更新するものを選択し、選択したデータにアクセスするモジュールの識別子を情報保持手段から抽出して出力する影響範囲分析手段、を備えるソフトウェア資産管理装置。【選択図】      図１
2018028776.tif 000002
【特許請求の範囲】
【請求項１】
業務システムを構成するモジュールに関連付けて、前記モジュールがアクセスをするデータの識別子と、前記アクセスが作成、消去、更新、または、参照の何れであるかを示すアクセス種別と、を記憶する情報保持手段に接続され、
指定された前記モジュールがアクセスする前記データのうち、作成、消去、または、更新するものを選択し、選択した前記データにアクセスする前記モジュールの識別子を前記情報保持手段から抽出して出力する影響範囲分析手段、を備えるソフトウェア資産管理装置。
【請求項２】
前記影響範囲分析手段は、指定された前記モジュールの修正により、当該モジュールによる、指定された前記データに対する作成、消去または更新の前記アクセスの追加または削除の通知を受けた場合に、指定された前記データに前記アクセスをする前記モジュールを前記情報保持手段から抽出して出力する一方、指定された前記データに対する参照の前記アクセスの追加または削除のみの修正である通知を受けた場合は、前記情報保持手段からの抽出を行わない、請求項１のソフトウェア資産管理装置。
【請求項３】
前記情報保持手段は、さらに、前記業務システムから前記モジュールに至る構成要素の階層構造を示す階層関係情報を記憶し、
前記階層関係情報から、前記響範囲分析手段が抽出した前記モジュールの前記階層構造における上位の前記構成要素を抽出して出力する上位下位関係分析手段を、さらに備える請求項１乃至請求項２の何れか１項のソフトウェア資産管理装置。
【請求項４】
前記業務システムを構成する前記モジュールのソースソースプログラムから、当該モジュールが前記アクセスをする前記データの前記識別子と、前記アクセス種別を抽出して、前記情報保持手段に格納する、アクセス種別入力手段を、さらに備える請求項１乃至請求項３の何れか１項のソフトウェア資産管理装置。
【請求項５】
前記情報保持手段と、
請求項１乃至請求項４の何れか１項のソフトウェア資産管理装置と、を包含するソフトウェア資産管理システム
【請求項６】
業務システムを構成するモジュールに関連付けて、前記モジュールがアクセスをするデータの識別子と、前記アクセスが作成、消去、更新、または、参照の何れであるかを示すアクセス種別と、を記憶する情報保持手段を参照して、
指定された前記モジュールがアクセスする前記データのうち、作成、消去、または、更新するものを選択し、選択した前記データにアクセスする前記モジュールの識別子を前記情報保持手段から抽出して出力するソフトウェア資産管理方法。
【請求項７】
指定された前記モジュールの修正により、当該モジュールによる、指定された前記データに対する作成、消去または更新の前記アクセスの追加または削除の通知を受けた場合に、指定された前記データに前記アクセスをする前記モジュールを前記情報保持手段から抽出して出力する一方、指定された前記データに対する参照の前記アクセスの追加または削除のみの修正である通知を受けた場合は、前記情報保持手段からの抽出を行わない、請求項６のソフトウェア資産管理方法。
【請求項８】
前記情報保持手段は、さらに、前記業務システムから前記モジュールに至る構成要素の階層構造を示す階層関係情報を記憶し、
前記階層関係情報から、前記響範囲分析手段が抽出した前記モジュールの前記階層構造における上位の前記構成要素を抽出して出力する請求項６乃至請求項７の何れか１項のソフトウェア資産管理方法。
【請求項９】
前記業務システムを構成する前記モジュールのソースソースプログラムから、当該モジュールが前記アクセスをする前記データの前記識別子と、前記アクセス種別を抽出して、前記情報保持手段に格納する、請求項６乃至請求項８の何れか１項のソフトウェア資産管理方法。
【請求項１０】
業務システムを構成するモジュールに関連付けて、前記モジュールがアクセスをするデータの識別子と、前記アクセスが作成、消去、更新、または、参照の何れであるかを示すアクセス種別と、を記憶する情報保持手段に接続されたコンピュータに、
指定された前記モジュールがアクセスする前記データのうち、作成、消去、または、更新するものを選択し、選択した前記データにアクセスする前記モジュールの識別子を前記情報保持手段から抽出して出力する影響範囲分析処理を実行させる、ソフトウェア資産管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア資産管理装置、ソフトウェア資産管理方法、および、ソフトウェア資産管理プログラム、特に、ソフトウェアの一部の修正に伴う影響範囲を探索するソフトウェア資産管理装置、ソフトウェア資産管理方法、および、ソフトウェア資産管理プログラムに関する。
【背景技術】
【０００２】
ソフトウェアの改造/修正時に影響範囲を特定するには、ノウハウを持つ要員が、修正要件に関係するキーワードを元に、仕様書やソースコードの全検索を行うなど、経験に頼った影響範囲の調査が行われるケースが多い。
【０００３】
(A)  しかし、長期間にわたる保守および改修により仕様書が欠損するなど、システム間、機能間で関係がわからなくなっている場合がある。この場合、仕様書からの調査だけでは影響範囲の特定ができないという課題がある。
【０００４】
また、この調査は経験に頼った調査となるため、下記のような問題が発生する。
【０００５】
(B)  修正要件を元に改造/修正するプログラムを特定したとしても、影響範囲として調査されるのは、そのプログラムを構成するソースプログラムに限定される。しかし、修正対象のプログラムと直接的な呼び出し関係が無い他のプログラムでも、共通のデータにアクセスしているプログラムが修正対象となる場合があり、影響の見落としが発生する可能性がある。このため、デグレードや予期しないバグ埋め込みが発生する。
【０００６】
このような問題に対し、特許文献１は、各プログラムとこれをアクセスする業務モジュール内プログラムの関係を記憶し、変更されるデータの名称と内容が入力されると、変更されるデータをアクセスするプログラム名称を取得する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−９９５７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ソフトウェアの改造/修正に伴って影響範囲を特定する場合、共通のデータにアクセスしているプログラム間でも、データへのアクセス方法によっては影響がない場合がある。特許文献１のシステムは、データにアクセスしているかどうかの判断だけで影響範囲を判断しているため、過度に広い範囲を影響範囲として取得してしまう可能性が有る。
【０００９】
本発明は、上記課題を解決し、影響範囲を適切に絞り込むことが可能なソフトウェア資産管理装置、ソフトウェア資産管理方法、および、ソフトウェア資産管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の１実施の形態のソフトウェア資産管理装置は、業務システムを構成するモジュールに関連付けて、前記モジュールがアクセスをするデータの識別子と、前記アクセスが作成、消去、更新、または、参照の何れであるかを示すアクセス種別と、を記憶する情報保持手段に接続され、指定された前記モジュールがアクセスする前記データのうち、作成、消去、または、更新するものを選択し、選択した前記データにアクセスする前記モジュールの識別子を前記情報保持手段から抽出して出力する影響範囲分析手段、を備える。
【００１１】
本発明の１実施の形態のソフトウェア資産管理方法は、業務システムを構成するモジュールに関連付けて、前記モジュールがアクセスをするデータの識別子と、前記アクセスが作成、消去、更新、または、参照の何れであるかを示すアクセス種別と、を記憶する情報保持手段を参照して、指定された前記モジュールがアクセスする前記データのうち、作成、消去、または、更新するものを選択し、選択した前記データにアクセスする前記モジュールの識別子を前記情報保持手段から抽出して出力する。
【００１２】
本発明の１実施の形態のソフトウェア資産管理プログラムは、業務システムを構成するモジュールに関連付けて、前記モジュールがアクセスをするデータの識別子と、前記アクセスが作成、消去、更新、または、参照の何れであるかを示すアクセス種別と、を記憶する情報保持手段に接続されたコンピュータに、指定された前記モジュールがアクセスする前記データのうち、作成、消去、または、更新するものを選択し、選択した前記データにアクセスする前記モジュールの識別子を前記情報保持手段から抽出して出力する影響範囲分析処理を実行させる。
【発明の効果】
【００１３】
本発明にかかるソフトウェア資産管理装置は、ソフトウェアの改造/修正に伴って影響範囲を特定する際に、適切な範囲に絞りこむことが可能である。
【図面の簡単な説明】
【００１４】
【図１】図１は、第１の実施の形態に係るソフトウェア資産管理システム１０の構成を示す図である。
【図２】図２は、情報保持部８が格納するＡ）情報保持テーブルとＢ）リンクテーブルの構造を示す図である。
【図３】図３は、図２が示す情報保持テーブルとリンクテーブルが格納している情報項目の集合を示す図である。
【図４】図４は、ソフトウェア資産管理装置３の動作説明において、例として取り上げる販売システムの構造を示す図である。
【図５】図５は、情報保持テーブル、リンクテーブル、および、アクセス種別テーブルの構造を示す図（その１）である。
【図６】図６は、情報保持テーブル、リンクテーブル、および、アクセス種別テーブルの構造を示す図（その２）である。
【図７】図７は、情報保持テーブル、リンクテーブル、および、アクセス種別テーブルの構造を示す図（その３）である。
【図８】図８は、情報保持テーブル、リンクテーブル、および、アクセス種別テーブルに基づいて、プログラム-データ関係表を作成する過程を示す図（その１）である。
【図９】図９は、情報保持テーブル、リンクテーブル、および、アクセス種別テーブルに基づいて、プログラム-データ関係表を作成する過程を示す図（その２）である。
【図１０】図１０は、情報保持テーブル、リンクテーブル、および、アクセス種別テーブルに基づいて、プログラム-データ関係表を作成する過程を示す図（その３）である。
【図１１】図１１は、情報保持テーブル、リンクテーブル、および、アクセス種別テーブルに基づいて、プログラム-データ関係表を作成する過程を示す図（その４）である。
【図１２】図１２は、情報保持テーブル、リンクテーブル、および、アクセス種別テーブルに基づいて、プログラム-データ関係表を作成する過程を示す図（その５）である。
【図１３】図１３は、プログラム-データ関係表の構造を示す図である。
【図１４】図１４は、プログラム-データ関係表に基づいて、影響一覧表を作成する過程を示す（その１）である。
【図１５】図１５は、プログラム-データ関係表に基づいて、影響一覧表を作成する過程を示す（その２）である。
【図１６】図１６は、プログラム-データ関係表に基づいて、影響一覧表を作成する過程を示す（その３）である。
【図１７】図１７は、プログラム-データ関係表に基づいて、影響一覧表を作成する過程を示す（その４）である。
【図１８】図１８は、プログラム-データ関係表に基づいて、影響一覧表を作成する過程を示す（その５）である。
【図１９】図１９は、プログラム-データ関係表に基づいて、影響一覧表を作成する過程を示す（その６）である。
【図２０】図２０は、影響範囲分析部７１が、アクセス種別の変更が、他のモジュールに影響を与える可能性が有るかどうかを判断する為の判断マトリクスを示す図である。
【図２１】図２１は、コンピュータ装置６００の構成図である。
【図２２】図２２は、第２の実施の形態に係るソフトウェア資産管理装置３の構造を示す図である。
【発明を実施するための形態】
【００１５】
＜第１の実施の形態＞
＜構成＞
図１は、第１の実施の形態に係るソフトウェア資産管理システム１０の構成を示す図である。ソフトウェア資産管理システム１０は、ソフトウェア資産管理装置３と、ソフトウェア資産管理装置３に接続された入力装置１、出力装置２、および、情報保持部８とを包含する。
【００１６】
情報保持部８は、ソフトウェア資産を管理する為の情報を記憶するリポジトリ、あるいは、その一部である。ソフトウェア資産管理装置３は、情報保持部８に対する情報の入力、抽出、分析を行う処理装置である。ソフトウェア資産管理装置３は、利用者が操作する入力装置１から情報を取得して、演算した結果を出力装置２に表示する。
【００１７】
ソフトウェア資産管理装置３は、情報入力部５および情報分析部７を備える。
【００１８】
情報入力部５は、情報保持部８に対して情報を入力する時に様々な検査や加工を行う。情報入力部５は、入力されたプログラムのソースコードから、当該プログラムがアクセスするデータやアクセス種別を抽出して情報保持部８に格納するアクセス種別入力部５１を包含する。
【００１９】
情報分析部７は、ソフトウェアを改造/修正する場合に、影響を受ける可能性が有る範囲を分析する。情報分析部７は、データの共有関係に基づいて影響範囲を分析する影響範囲分析部７１、および、ソフトウェアの階層構造に基づいて影響範囲を分析する上位下位関係分析部７２を包含する。
【００２０】
図２は、情報保持部８が格納するＡ）情報保持テーブルとＢ）リンクテーブルの構造を示す図である。
【００２１】
情報保持テーブルは、情報保持部８が格納する情報項目ごとに、番号、情報名称、区分位置、情報実体、出リンク、および、入リンクを格納するテーブルである。情報項目は、例えば、プログラムモジュール、データテーブル、入出力メッセージ、それらのグループや上位概念である。グループや上位概念は階層的である。
【００２２】
番号は、テーブル内での情報項目識別子である。区分位置は、本発明には関係しないので説明を割愛する。情報実体は、例えば、モジュールのソースコード、オブジェクトコード、および、それらの管理情報である。出リンクと入リンクの項目は、その情報項目から出る、または入ってくる関係リンクの番号を示している。
【００２３】
リンクテーブルには、関係リンク一本一本が登録されている。リンクテーブルは、関係リンクごとに、番号（テーブル内の識別子）、後述する属性、および、始点情報／終点情報（当該関係リンクがどの情報項目から出て、どの情報項目に繋がるかの情報）を保持している。関係リンクには、下位構造を示すリンクと関連付けを示すリンクが有り、どちらのリンクであるかは属性から判断できる。
【００２４】
図２が示す情報保持テーブルとリンクテーブルは、具体的には、図３に示す情報項目の集合を格納している場合の例である。
【００２５】
図３は、「業務フロー（システム）」の下位に「販売部門（サブシステム）」があり、「販売部門」の下位に「受注処理（モジュール）」、「在庫処理」、「出庫指示処理」がある情報項目の集合を示している。そして、この集合において、「受注処理」、「在庫処理」、「出庫指示処理」の各々に「注文書」、「製造指示書」、「出庫指示書」が各々関連付けられている。
【００２６】
図２において、例えば、情報保持テーブルの番号１の「業務フロー」の下位に情報保持テーブルの番号２の「販売部門」が有ることは、リンクテーブルの番号１の関係リンクで表現されている。リンクテーブルは、番号１の関係リンクは、情報保持テーブルの番号１の「業務フロー」を始点として、情報保持テーブルの番号２の「販売部門」を終点とする下位構造を示す関係リンクであることを示している。
【００２７】
同様に、「受注処理」に「注文書」が関連付けられていることは、リンクテーブルの番号５の関係リンクで表現されている。リンクテーブルは、番号５の関係リンクは、情報保持テーブルの番号６の「注文書」を始点として、情報保持テーブルの番号３の「受注処理」を終点とする関連付けを示す関係リンクであることを示している。
【００２８】
なお、関連付けを示す関係リンクは、リンクの方向に意味を持っていても、持っていなくても良い。例えば、モジュールからデータに向かう関連付を示す関係リンクは更新を表し、データからモジュールに向かう関連リンクは参照を表しても良い。一方、モジュールとデータ間の関連付を示す関係リンクは、モジュールがデータにアクセスすることを表すだけでも良い。
【００２９】
ここで、情報保持テーブルの出リンクと入リンクの項目は、リンクテーブルを情報保持テーブル番号で検索して得ることが出来る情報であり、構造上は必須な項目ではない。しかし、実際の運用面において、情報保持部８に登録される情報量が膨大に増えて来ると、このリンクテーブルの検索時間が全体性能に大きな影響を及ぼすことが予想される。高速化の手段として、情報保持テーブルに出リンクと入リンクの情報を持つ事が有効となる。
【００３０】
ここで、ソフトウェア資産管理装置３の、情報入力部５と、情報分析部７は、論理回路で構成される。情報保持部８は、磁気記憶装置、または、半導体記憶装置で構成される。
【００３１】
ソフトウェア資産管理装置３は、コンピュータ装置６００により実現されても良い。図２１は、コンピュータ装置６００の構成図である。コンピュータ装置６００は、バス６４０で相互に接続された、プロセッサ６１０、主記憶部６３０、および、外部記憶装置６２０を備える。プロセッサ６１０は、バス６４０を経由して、主記憶部６３０、および、外部記憶装置６２０に対してデータの読み書きを行う。また、プロセッサ６１０は、主記憶部６３０に格納されているプログラム６５０を実行する。なお、プログラム６５０は、当初外部記憶装置６２０に格納されており、コンピュータ装置６００の初期設定時に、プロセッサ６１０が外部記憶装置６２０から主記憶部６３０にロードしても良い。
【００３２】
ここで、主記憶部６３０は半導体メモリ装置である。外部記憶装置６２０はディスク装置、または、半導体記憶装置等の記憶装置である。
【００３３】
プロセッサ６１０は、プログラム６５０を実行することにより、例えば、情報入力部５、および、情報分析部７として機能する。すなわち、プロセッサ６１０は、プログラム６５０を実行することにより、例えば、情報入力部５、および、情報分析部７が行う処理を実行する。主記憶部６３０または、外部記憶装置６２０は、情報保持部８として機能する。
【００３４】
＜動作＞
図４は、以降のソフトウェア資産管理装置３の動作説明において、しばしば、例として取り上げる販売システムの構造を示す図である。
【００３５】
販売システムは、受注処理、在庫管理処理、および、出庫処理の３つのサブシステムに分割され、各々、受注処理プログラム、在庫確認プログラム、および、出庫指示プログラムで実現されている。
【００３６】
受注処理プログラムはモジュール１乃至３により構成されている。在庫確認プログラムはモジュール４乃至６により構成されている。出庫指示プログラムはモジュール７乃至９により構成されている。
【００３７】
モジュールはプログラムの、プログラムはサブシステムの、サブシステムは販売システムの下位構造である。この例のようなシステム、プログラム、モジュールは情報項目として、予め、情報保持テーブルに登録され、階層関係はリンクテーブルの下位構造を示す関係リンクとして登録されている。図５のＡ）の番号１乃至４、Ｂ）の番号１乃至３は、受注処理プログラムについての予め登録されている情報の例である。図６のＡ）の番号１乃至４、Ｂ）の番号１乃至３は、在庫確認プログラムについての予め登録されている情報の例である。図７のＡ）の番号１乃至４、Ｂ）の番号１乃至３は、出庫指示プログラムについての予め登録されている情報の例である。
【００３８】
これらは、例えば、情報入力部５が、各モジュールのソースプログラムや販売システムの構造定義情報を読み込んで登録する。ソフトウェア資産管理装置３、あるいは、リポジトリの管理者が、人手でこの情報を登録しても良い。
【００３９】
さらに、図４の販売システムにおいて、モジュール１は顧客マスタを、モジュール３は商品マスタと受注テーブルをデータとしてアクセスしている。モジュール４は受注テーブルを、モジュール５は在庫テーブルをアクセスしている。モジュール７は商品マスタと受注テーブルを、モジュール９は在庫テーブルをアクセスしている。
【００４０】
これらのデータやアクセス関係は、アクセス種別入力部５１が、以降に説明する処理により登録する。なお、商品マスタなどのデータは、予め、例えば、情報入力部５が、各データの定義情報を読み込んで、情報項目として、情報保持テーブルに登録していても良い。
【００４１】
＜処理フロー１＞
アクセス種別入力部５１は、例えば、リポジトリに格納されているモジュールのソースプログラムを解析し、アクセスするデータとアクセス種別を情報保持部８に登録する。アクセス種別入力部５１は、次の判断条件に従ってアクセスする種別を登録する。
・アクセス種別入力部５１は、ファイルのCREATEやレコードのWRITEなど、新規にデータ(ファイル、または、レコード)を作成する処理のソースコードを検出すると、アクセス種別「作成（略称はＣ）」の関連付けを示す関係リンクを登録する。
・アクセス種別入力部５１は、レコードのREADなど、データの読み込みを行う処理のソースコードを検出すると、アクセス種別「参照（略称はＲ）」の関連付けを示す関係リンクを登録する。
・アクセス種別入力部５１は、レコードのUPDATEやREWRITEなど、データを更新する処理のソースコードを検出すると、アクセス種別「更新（略称はＵ）」の関連付けを示す関係リンクを登録する。REWRITEの場合は、READも行うため、「参照」の関連付けを示す関係リンクも登録される。
・アクセス種別入力部５１は、ファイルのELASEやレコードのDELETEなど、データ(ファイル、または、レコード)を削除する処理のソースコードを検出すると、アクセス種別「削除（略称はＤ）」の関連付けを示す関係リンクを登録する。
・アクセス種別入力部５１は、ファイルやレコードの定義のみ行っており、データへのアクセスは行っていない処理のソースコードを検出すると、アクセス種別「定義のみ（略称はＸ）」の関連付けを示す関係リンクを登録する。
【００４２】
アクセス種別入力部５１は、具体的には、ソースプログラムからデータアクセスを検出すると、アクセスごとに、対象データと関連付けを示す関係リンクを情報保持テーブルとリンクテーブルに登録し、アクセス種別を当該関係リンクに関連付けてアクセス種別テーブルに登録する。
【００４３】
例えば、アクセス種別入力部５１は、モジュール１のソースコードから顧客マスタへの参照を検出すると、まず、図５の情報保持テーブルに情報項目番号５の顧客マスタを登録する。次いで、アクセス種別入力部５１は、図５のリンクテーブルに番号４の関連付けを示す関係リンクを登録する。さらに、アクセス種別入力部５１は、図５のリンクテーブルと情報保持テーブルに当該関係リンクが、情報項目番号２のモジュール１と情報項目番号５の顧客マスタ間の関係リンクであることを登録する。最後に、アクセス種別入力部５１は、アクセス種別テーブルに、番号４の関係リンクに関連付けてアクセス種別が参照であることを登録する。
【００４４】
さらに、例えば、アクセス種別入力部５１は、モジュール５のソースコードから在庫テーブルへの参照を検出すると、まず、図６の情報保持テーブルに情報項目番号６の在庫テーブルを登録する。次いで、アクセス種別入力部５１は、図６のリンクテーブルに番号５の関連付けを示す関係リンクを登録する。さらに、アクセス種別入力部５１は、図６のリンクテーブルと情報保持テーブルに当該関係リンクが、情報項目番号３のモジュール５と情報項目番号６の在庫テーブル間の関係リンクであることを登録する。最後に、アクセス種別入力部５１は、アクセス種別テーブルに、番号５の関係リンクに関連付けてアクセス種別が参照であることを登録する。
【００４５】
このように、アクセス種別入力部５１は、図４の販売システムの全てのモジュールからデータアクセスを検出して、データ、関連付けを示す関係リンク、および、アクセス種別を情報保持テーブル、リンクテーブル、および、アクセス種別テーブルに登録する。図５のＡ）、Ｂ）、Ｃ）は、受注処理プログラムについてのアクセス種別入力部５１の登録後のデータ例である。図６のＡ）、Ｂ）、Ｃ）は、在庫確認プログラムについてのアクセス種別入力部５１の登録後のデータ例である。図７のＡ）、Ｂ）、Ｃ）は、出庫指示プログラムについてのアクセス種別入力部５１による登録処理後のデータ例である。なお、図５、図６，および、図７は、いずれも、販売システム全体についてのテーブルの一部を抜き出して示している。
【００４６】
＜処理フロー２＞
情報分析部７における影響範囲分析部７１は、まず、アクセス種別入力部５１による登録処理後の情報保持テーブル、リンクテーブル、アクセス種別テーブルを検索し、プログラムとデータとの間の関係情報を解析し、プログラム-データ関係表を作成する。
【００４７】
図１３は、プログラム-データ関係表の構造を示す。プログラム-データ関係表は、データ対応に、各モジュールが当該データにアクセスするのか否か、アクセスする場合のアクセス種別は何かを示すマトリックスである。すなわち、影響範囲分析部７１は、例えば、図４に示した3つのプログラムについて、図５乃至７のデータから図１３のデータを作成する。以下、その手順を説明する。
【００４８】
ステップ１：影響範囲分析部７１は、各プログラムの情報保持テーブルより、利用しているモジュールの一覧を横軸に、利用しているデータの一覧を縦軸に抽出してマトリクスを作成する。図８は、図５のＡ）、図６のＡ）、図７のＡ）から抽出したマトリクスの例を示す。
【００４９】
ステップ２：影響範囲分析部７１は、マトリクスの一番上に登録されているデータを選択する。図８の例では、影響範囲分析部７１は、顧客マスタを選択する。
【００５０】
ステップ３：影響範囲分析部７１は、選択したデータに関係する関係リンクと、当該関連リンクが有るモジュールと、を各プログラムの情報保持テーブルとリンクテーブルから抽出する。図９は、図８における「顧客マスタ」に関係する番号４の関係リンクと、当該関係リンクが有る受注処理プログラムのモジュール１を、図５の情報保持テーブルとリンクテーブルから抽出する様子を示している。
【００５１】
ステップ４：影響範囲分析部７１は、抽出した関係リンクのアクセス種別をアクセス種別テーブルから取得する。図１０は、図９で抽出した番号４の関係リンクのアクセス種別「参照」を図５のアクセス種別テーブルから取得する様子を示している。
【００５２】
ステップ５：影響範囲分析部７１は、取り出したアクセス種別を、マトリクスにおける選択したデータと抽出したモジュールとの交点のセルに登録する。図１１は、取り出したアクセス種別「参照（Ｒ）」を、マトリクスにおける選択したデータ「顧客マスタ」と抽出したモジュール「モジュール１」との交点のセルに登録した後の様子を示している。
この時、複数のアクセス種別を取得した場合は、影響範囲分析部７１は、取得したアクセス種別を全て登録する。例えば、「作成」と「参照」を取得した場合は、影響範囲分析部７１は、”CR”を登録する。
【００５３】
ステップ６：影響範囲分析部７１は、マトリクスに登録されているデータを順次選択し、ステップ３乃至ステップ５を順次繰り返す。図１２は、アクセス種別「Ｒ」を、マトリクスにおける、選択したデータ「商品マスタ」と抽出したモジュール「モジュール３」との交点、および、選択したデータ「商品マスタ」と抽出したモジュール「モジュール７」との交点の両セルに登録した後の様子を示している。図１３は、残りの受注テーブルと在庫テーブルについても、アクセス種別の登録が完了した様子を示している。
【００５４】
上記の手順により、影響範囲分析部７１は、プログラム-データ関係表を作成する。
【００５５】
影響範囲分析部７１は、プログラム-データ関係表の行を検索することで、特定のデータに関係リンクのあるモジュールを、別のプログラム間でも把握することが可能となる。
【００５６】
なお、ソフトウェア資産管理装置３、あるいは、リポジトリの管理者が、人手で、プログラム-データ関係表を登録しても良い。
【００５７】
＜処理フロー３＞
影響範囲分析部７１は、次に、アクセス種別の変更を伴わない修正による影響範囲を分析したいモジュールに対して、下記の手順で影響一覧表を作成する。
【００５８】
まず、利用者が、影響範囲を分析したいモジュールを指定する。例えば、利用者は、モジュール３をアクセス種別の変更が無い範囲で修正することを指定する。
【００５９】
影響範囲分析部７１は、指定されたモジュール（例えば、モジュール３）と関係リンクがあるデータの一覧を、図１３のマトリクスの当該モジュールの列を検索することで特定し、関係リンクのないデータの行を削除する。例えば、図１３のモジュール３の列から、影響範囲分析部７１は、関係リンクが有る商品マスタと受注テーブルを特定し、関係リンクのない顧客マスタと在庫テーブルの行を削除する。
【００６０】
また、「モジュール３」と関係リンクが有る各データとの関係情報を確認し、アクセス種別が参照（Ｒ）、または、定義のみ（Ｘ）である場合は、当該データ（商品マスタ）の行も削除する。指定されたモジュールが、当該データを参照または定義だけをしているのであれば、アクセス種別を変えない限り当該モジュールの修正の影響が他のモジュールに及ぶことが無いためである。
【００６１】
図１４は、この様子を示す。図１４において、削除された行は、網掛けされている。
【００６２】
次に影響範囲分析部７１は、指定されたモジュール（モジュール３）と関係リンクのあるデータ（受注テーブル）と関係があるモジュール（モジュール４、７）を、当該データの行を検索することで特定する。次いで、影響範囲分析部７１は、関係リンクのないモジュールの列を削除する。この時、影響範囲分析部７１は、関係情報が「定義のみ（Ｘ）」の場合は、「定義のみ（Ｘ）」の情報しか存在しないモジュールの列も削除する。このようなモジュールは、データを利用しているモジュールではないためである。図１５は、この様子を示す。図１５において、削除された列は、網掛けされている。
【００６３】
削除の結果残ったマトリクス（図１６）から、「モジュール３」の修正に影響があるモジュール（モジュール４と７）の影響一覧表を作成できる。図１７は、影響一覧表を示す。
【００６４】
＜処理フロー４＞
影響範囲分析部７１は、アクセス種別の変更を伴う修正を行う予定のモジュールに対して、下記の手順で影響が発生する可能性のあるモジュールをシミュレーションし、影響一覧表を作成する。
【００６５】
販売システムの受注処理において、受注テーブルのアクセス種別を変更する修正が発生した場合に、影響範囲分析部７１が影響のある処理（機能）、および、モジュールを特定する例を説明する。
【００６６】
本処理は、修正を行うモジュールに対して、処理フロー２で作成したプログラム-データ関係表を基に、図２０に示す判断を行って、影響一覧表を作成して出力する。
【００６７】
ステップ１：利用者が、修正予定のモジュール、および、修正によりアクセス種別が変更となるデータを指定する。利用者は、例えば、モジュール１を修正し、在庫テーブルへのアクセス種別が変更になる旨の指定を行う。
【００６８】
ステップ２：影響範囲分析部７１は、図１３のプログラム-データ関係表から指定されたデータ（在庫テーブル）の行を抽出する。図１８は、この様子を示す。図１８において、抽出されなかった行は、網掛けされている。
【００６９】
次に影響範囲分析部７１は、指定されたデータ（在庫テーブル）と関係があるモジュールをマトリクスの指定されたデータの行を探索ことで特定し、関係が無いモジュールの列を削除する。この時、関係情報が「定義のみ（Ｘ）」の場合は、当該列のモジュールも削除する。当該モジュールは、データを利用しているモジュールではないためである。さらに、影響範囲分析部７１は、修正対象モジュールの列も削除する。図１９は、この様子を示す。図１９において、削除された列は、網掛けされている。
【００７０】
ステップ３：影響範囲分析部７１は、アクセス種別の変更が、他のモジュールに影響を与える可能性が有るかどうかを、図２０の判断マトリクスにしたがって判断する。判断マトリクスは、修正前のアクセス種別を行、修正後のアクセス種別を列とするマトリクスで、マトリクスの各セルは、アクセス種別の変更により他のモジュールに影響を与える可能性の有無が記憶されている。
【００７１】
影響範囲分析部７１は、判断マトリクスに従って、作成、消去、更新の何れかの追加、または、削除が有れば他のモジュールに影響を与える可能性が有る一方、参照、定義のみの追加、または、削除だけでは、他のモジュールに影響を与える可能性が無いと判断する。指定されたモジュールにデータの参照、定義のみが追加、または、削除されても、他のモジュールは影響されないからである。
【００７２】
指定されたモジュール（モジュール１）の修正が、判断マトリクスの「無」に該当するものであれば、影響範囲分析部７１は影響一覧として何も出力しない。一方、指定されたモジュール（モジュール１）の修正が、判断マトリクスの「有」に該当するものであれば、影響範囲分析部７１は、図１９のテーブルから残っているモジュール（モジュール５と９）を、指定されたモジュール（モジュール１）の修正における影響一覧表として出力する。
【００７３】
＜処理フロー５＞
情報分析部７における上位下位関係分析部７２は、処理フロー３または処理フロー４で出力した影響一覧表に含まれるモジュールの関連リンクの検索を行い、影響のある上位構造を取得する。
【００７４】
上位下位関係分析部７２は、影響一覧表に含まれるモジュールから出発して、リンクテーブルの下位構造を示す関係リンクを逆方向に辿ることで、順次、上位構造を取得すれば良い。ここで、下位構造を示す関係リンクを逆方向に辿るとは、リンクテーブルから、下位構造を終点とする下位構造を示す関係リンクを特定し、当該関係リンクの始点となる上位構造に至るという処理を順番に繰り返すことを意味する。なお、業務システムの階層構造は木構造とは限らない。或る下位構造を終点とする関係リンクは複数存在する場合が有り、この場合、上位下位関係分析部７２は、その複数の関係リンク系列を探索する。
【００７５】
上位下位関係分析部７２は、以下のように本処理を実行しても良い。以下は、具体例として処理フロー３で求めた受注テーブルに関係のあるモジュール７の上位構造を取得する処理を示す。
【００７６】
ステップ１：この処理では、モジュールとデータ間の関係については探査する必要はない。そのため、上位下位関係分析部７２は、関連付けを示す関係リンクを検索対象外とする。
【００７７】
ステップ２：モジュール８は、出庫指示プログラムには関係があるが、モジュール７には関係がない。そのため、上位下位関係分析部７２は、関係の向きが下位方向の下位構造を示す関係リンクも検索対象外とする。
【００７８】
ステップ３：上記２つを検索対象外として残りすべての関係リンクを辿って、上位下位関係分析部７２は、モジュール７に影響のある上位構造（出庫指示プログラム、出庫処理、販売システム）を取得する。
【００７９】
ステップ４：同様に、上位下位関係分析部７２は、モジュール３に影響のある上位構造（受注処理プログラム、受注処理、販売システム）、並びに、モジュール４に影響のある上位構造（在庫管理プログラム、在庫管理処理、販売システム）を取得する。
【００８０】
なお、仕様書や階層構造情報の欠損により、販売システムと在庫管理処理、販売システムと出庫処理との関係が辿れない場合であっても、モジュール間のデータ共用関係を基にした本処理フローに基づいて、販売システムと、在庫管理処理と出庫処理との関係を把握することが可能となる。
【００８１】
ここで、上位下位関係分析部７２は、ダイクストラ法など一般的に知られる経路探索手法を用いて、上記ステップ３における「残りすべての関係リンクを辿る」処理を実行しても良い。
【００８２】
また、上記例では、上位下位関係分析部７２は、機能間までの関係を探索しているが、リポジトリに存在するすべての関係リンクを辿っても良い。これにより、上位下位関係分析部７２は、システム間の影響範囲を特定することも可能となる。
【００８３】
＜効果＞
本実施の形態のソフトウェア資産管理装置３は、ソフトウェアの改造/修正に伴う影響範囲を特定する際に、適切な範囲に絞りこむことが可能である。その理由は、各モジュールのデータアクセスの対象データおよびアクセス種別に基づいて、影響範囲分析部７１が或るモジュールの改造／修正の影響を受ける可能性のある他のモジュールを絞り込んで、過剰に広い影響範囲情報を出力しないからである。すなわち、本実施の形態のソフトウェア資産管理装置３は、プログラム間同士に関係を持たない場合でも、データに着目することでプログラム間の影響の有無を判定し、影響範囲を特定する。
【００８４】
さらに、本実施の形態のソフトウェア資産管理装置３は、仕様書が欠損している場合でも、データを介したプログラム間の影響を特定することにより、プログラムとデータとの関係情報からシステム間、機能間の影響の抽出が可能である。その理由は、影響範囲分析部７１がデータを介したプログラム間の影響を特定し、その結果を基に、上位下位関係分析部７２が、プログラムの上位構成要素を特定するからである。すなわち、本実施の形態のソフトウェア資産管理装置３は、プログラムに対して、上位情報を探索することができ、システム間、機能間の影響の有無の確認が可能である。
【００８５】
さらに、本実施の形態のソフトウェア資産管理装置３は、アクセス種別の変更を伴う修正前後での影響範囲を特定することが可能である。その理由は、影響範囲分析部７１がプログラムの修正ケースをシミュレーションするからである。
【００８６】
＜変形例＞
影響範囲分析部７１は、プログラム間の影響の有無をデータへのアクセス種別から解析を行う部分において、アクセス種別に影響度の重みづけを行うことで、影響に強弱をつけても良い。さらに、影響範囲分析部７１は、影響の強弱によりデータおよびソースプログラム間の親密度を評価したり、影響度の出力範囲を指定することで影響範囲の絞り込みを行ったりしても良い。
【００８７】
さらに、影響範囲分析部７１は、データに対するプログラムとの関係リンクの数を抽出し、データの修正によるリスクを評価しても良い。
【００８８】
＜第２の実施形態＞
図２２は、第２の実施の形態に係るソフトウェア資産管理装置３の構造を示す図である。
【００８９】
本実施の形態に係るソフトウェア資産管理装置３は、情報保持部８に接続されている。情報保持部８は、業務システムを構成するモジュールに関連付けて、モジュールがアクセスをするデータの識別子と、アクセスが作成、消去、更新、または、参照の何れであるかを示すアクセス種別と、を記憶する。
【００９０】
そして、本実施の形態に係るソフトウェア資産管理装置３は、影響範囲分析部７１を備える。影響範囲分析部７１は、指定されたモジュールがアクセスするデータのうち、作成、消去、または、更新するものを選択し、選択したデータにアクセスするモジュールの識別子を情報保持手段から抽出して出力する。
【００９１】
本実施の形態のソフトウェア資産管理装置３は、ソフトウェアの改造/修正に伴う影響範囲を特定する際に、適切な範囲に絞りこむことが可能である。その理由は、各モジュールのデータアクセスの対象データおよびアクセス種別に基づいて、影響範囲分析部７１が或るモジュールの改造／修正の影響を受ける可能性のある他のモジュールを絞り込んで、過剰に広い影響範囲情報を出力しないからである。
【００９２】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【００９３】
本発明は、フトウェア企画・開発フェーズにおける設計、製造、並びに、ソフトウェア運用・保守フェーズにおける改造支援、障害分析支援に利用できる。さらに、本発明は、上記フェーズを通した、影響分析支援、作業工数の見積支援にも利用できる。
【符号の説明】
【００９４】
１    入力装置
２    出力装置
３    ソフトウェア資産管理装置
５    情報入力部
７    情報分析部
８    情報保持部
１０    ソフトウェア資産管理システム
５１    アクセス種別入力部
７１    影響範囲分析部
７２    上位下位関係分析部
６００    コンピュータ装置
６１０    プロセッサ
６２０    外部記憶装置
６３０    主記憶部
６４０    バス
６５０    プログラム
【図１】
2018028776.tif 000003
【図２】
2018028776.tif 000004
【図３】
2018028776.tif 000005
【図４】
2018028776.tif 000006
【図５】
2018028776.tif 000007
【図６】
2018028776.tif 000008
【図７】
2018028776.tif 000009
【図８】
2018028776.tif 000010
【図９】
2018028776.tif 000011
【図１０】
2018028776.tif 000012
【図１１】
2018028776.tif 000013
【図１２】
2018028776.tif 000014
【図１３】
2018028776.tif 000015
【図１４】
2018028776.tif 000016
【図１５】
2018028776.tif 000017
【図１６】
2018028776.tif 000018
【図１７】
2018028776.tif 000019
【図１８】
2018028776.tif 000020
【図１９】
2018028776.tif 000021
【図２０】
2018028776.tif 000022
【図２１】
2018028776.tif 000023
【図２２】
2018028776.tif 000024