以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態における影響分析支援システムの構成例を示す図である。同図に示される影響分析支援システム1において、影響分析支援装置10と一台以上のユーザ端末20とは、LAN(Local Area Network)又はインターネット等のネットワーク30(有線又は無線の別は問わない。)を介して通信可能に接続されている。
影響分析支援装置10は、本実施の形態において、分析支援装置の一例である。影響分析支援装置10は、例えば、影響分析支援システム1を導入している企業における非図示の情報システムの構成情報(以下、「システム情報」という。)を一元的に管理するコンピュータである。影響分析支援装置10は、また、システム情報に基づいて、情報システムの一部の変更等による影響範囲の分析等を行う。
ユーザ端末20は、影響分析支援システム1のユーザインタフェースとして位置付けられる、PC(Personal Computer)等のコンピュータである。すなわち、ユーザ端末20は、ユーザからの指示入力を受け付け、当該指示入力に応じた処理要求を影響分析支援装置10に送信する。ユーザ端末20は、処理要求に応じて返信される処理結果等を表示させる。なお、携帯電話、スマートフォン、又はPDA(Personal Digital Assistance)等の携帯型の情報処理装置がユーザ端末20として用いられてもよい。
図2は、本発明の実施の形態における影響分析支援装置のハードウェア構成例を示す図である。同図の影響分析支援装置10は、それぞれバスBで相互に接続されているドライブ装置100と、補助記憶装置102と、メモリ装置103と、CPU104と、インタフェース装置105とを有する。
影響分析支援装置10での処理を実現するプログラムは、記録媒体101によって提供される。プログラムを記録した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従って影響分析支援装置10に係る機能を実行する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。
なお、記録媒体101の一例としては、CD−ROM、DVDディスク、又はUSBメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置102の一例としては、HDD(Hard Disk Drive)又はフラッシュメモリ等が挙げられる。記録媒体101及び補助記憶装置102のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
ユーザ端末20についても、図2に示されるハードウェアを有していればよい。但し、ユーザ端末20は、ユーザからの入力を受け付ける入力装置や、情報を表示させる表示装置等を有している。また、影響分析支援装置10は、ユーザ端末20を介さずに、ユーザによる操作を可能としてもよい。この場合、影響分析支援装置10は、入力装置及び表示装置を有していればよい。
図3は、本発明の実施の形態における影響分析支援装置の機能構成例を示す図である。同図において、影響分析支援装置10は、システム情報記憶部11、分析要求受付部12、影響分析部13、分析結果集約部14、種別階層付与部15、オブジェクト階層付与部16、関連追加部17、及び表示制御部18等を有する。これら各部は、影響分析支援装置10にインストールされたプログラムがCPU104に実行させる処理によって実現される。
システム情報記憶部11は、例えば、補助記憶装置102を用いてシステム情報を記憶する。本実施の形態のシステム情報は、情報システムの構成要素に関するデータ(以下、「オブジェクト」という。)、及び構成要素間(オブジェクト間)の関連に関するデータ等を含む。情報システムの構成要素の種別の一例として、情報システムを構成するシステム、システムによって提供されるサービス、サービスを提供するための処理を実行するアプリケーション、サービスが有するインタフェース等が挙げられる。構成要素の種別は、そのままオブジェクトの種別(以下、「オブジェクト種別」という。)となる。
オブジェクト間の関連に関しても複数の種別(以下、「関連種別」という。)が定義される。例えば、関連種別の一例として、Contains、EquivalentTo、HasChild、HasParents、Uses、Replaces、及びSupersedes等が挙げられる。Containsは、包含を示す。Containsの関連によって関連付けられた関連元の構成要素は、関連先の構成要素を包含することを示す。EquivalentToは、同等を示す。EquivalentToの関連によって関連付けられた関連元の構成要素は、関連先の構成要素を同等又は等価であることを示す。HasChildは、子を有することを示す。HasChildの関連によって関連付けられた関連元の構成要素は、関連先の構成要素の親であることを示す。HasParentsは、親を有することを示す。HasParentsの関連によって関連付けられた関連元の構成要素は、関連先の構成要素の子であることを示す。Usesは、利用を示す。Usesの関連によって関連付けられた関連元の構成要素は、関連先の構成要素を利用することを示す。Replacesは、代替を示す。Replacesの関連によって関連付けられた関連元の構成要素は、関連先の構成要素によって代替されることを示す。Supersedesは、取り替えを示す。Supersedesの関連によって関連付けられた関連元の構成要素は、関連先の構成要素によって取り替えられることを示す。なお、具体的な情報システムにおける構成要素間の関連を、上記したいずれの関連種別に当てはめるかについては、適宜定められればよい。
分析要求受付部12は、影響分析の実行要求をユーザより受け付ける。具体的には、分析要求受付部12は、システム情報記憶部11に記憶されているオブジェクトの中から、影響分析の対象とするオブジェクトの選択を受け付ける。
影響分析部13は、影響分析の対象として選択されたオブジェクトに係る構成要素に変更が生じた場合の影響範囲を、システム情報記憶部11を用いて分析する。具体的には、影響分析部13は、ユーザによって指定されたオブジェクト(構成要素)を起点(以下、「起点オブジェクト」という。)として、オブジェクト間の関連を辿り、辿られた関連及びオブジェクトをシステム情報記憶部11より抽出する。本実施の形態において、影響分析部13は、抽出部の一例である。なお、関連を辿るとは、当該関連の関連元のオブジェクトを起点として、当該関連の関連先のオブジェクトを探索又は特定することをいう。
分析結果集約部14は、影響分析部13によって抽出されたオブジェクト間の関連を、関連元の構成要素の種別及び関連先の構成要素の種別の一致に基づいて、オブジェクト種別間の関連(種別間関連)に集約(又は統合)する。なお、本実施の形態において、分析結果集約部14は、集約部の一例である。
種別階層付与部15は、起点オブジェクトが属するオブジェクト種別(以下、「起点オブジェクト種別」という。)からの関連を辿り、オブジェクト種別ごとに、起点オブジェクト種別からの関連の階層(相対的な階層)を求める。種別階層付与部15は、オブジェクト種別ごとに求められた階層を、各オブジェクト種別に付与する。なお、階層とは、オブジェクト種別の関連によって形成される階層構造(親子関係)における階層をいう。第一のオブジェクト種別(又はオブジェクト)起点とし場合の第二のオブジェクト種別(又はオブジェクト)の階層は、第一のオブジェクト種別と第二のオブジェクト種別との間の関連の距離(関連の数)によって計られる。なお、本実施の形態において、種別階層付与部15は、第一の階層付与部の一例である。
オブジェクト階層付与部16は、種別階層付与部15によって各オブジェクト種別に付与された階層に基づいて、影響分析部13によって抽出された各オブジェクトに対して、階層を付与する。すなわち、各オブジェクトの階層に付与される階層は、当該オブジェクトが属するオブジェクト種別に対して付与された階層となる。なお、本実施の形態において、オブジェクト階層付与部16は、第二の階層付与部の一例である。
関連追加部17は、上記階層構造(親子関係)における下位の階層のオブジェクト間の関連に基づいて、上位の階層のオブジェクト間の関連を生成する。例えば、子同士の関連は、それぞれの子の親同士の関連とされる。生成された関連は、表示用に用いられる情報である。したがって、当該関連は、システム情報記憶部11には登録されない。
表示制御部18は、影響分析部13、種別階層付与部15、オブジェクト階層付与部16、及び関連追加部17等による処理結果に基づいて、起点オブジェクトに係る構成要素の変更に関する影響分析の結果(影響範囲を示す情報)をユーザ端末20に表示させるための処理を実行する。例えば、表示制御部18は、オブジェクトに付与された階層に基づいて、表示対象とするオブジェクトを限定する。
以下、影響分析支援装置10の処理手順について説明する。図4は、影響分析支援装置が実行する処理手順の一例を説明するためのフローチャートである。
ステップS100において、分析要求受付部12は、影響分析の実行要求をユーザより受け付ける。例えば、分析要求受付部12は、図5に示されるような影響分析対象選択画面をユーザ端末20に表示させ、影響分析の対象(起点)とするオブジェクトの選択を受け付ける。
図5は、影響分析対象選択画面の表示例を示す図である。同図において、影響分析対象選択画面510は、オブジェクト種別選択領域511及びオブジェクト選択領域512等を有する。
オブジェクト種別選択領域511には、オブジェクト種別の一覧が表示される領域である。オブジェクト種別の一覧は、予め定義ファイル等に登録されていればよい。または、分析要求受付部12が、システム情報記憶部11に登録されているオブジェクトを走査して、オブジェクト種別の一覧を抽出してもよい。
オブジェクト選択領域512は、オブジェクト種別選択領域511において選択されたオブジェクト種別に属するオブジェクトの一覧の中から、影響分析の対象とするオブジェクトを選択させるための領域である。すなわち、分析要求受付部12は、オブジェクト種別選択領域511におけるオブジェクト種別の選択を検知すると、選択されたオブジェクト種別に属するオブジェクトをシステム情報記憶部11より検索する。分析要求受付部12は、検索されたオブジェクトの一覧をオブジェクト選択領域512に表示させる。例えば、オブジェクト選択領域512に表示されたいずれかのオブジェクトが右クリックされると、分析要求受付部12は、コンテキストメニュー513を表示させる。コンテキストメニュー513において「影響分析の実行」が選択されると、分析要求受付部12は、右クリックされていたオブジェクトを起点オブジェクトとする影響分析の実行を影響分析部13に要求する。
分析要求受付部12からの要求に応じ、影響分析部13は、起点オブジェクトに関して影響分析処理を実行する(S200)。すなわち、影響分析部13は、起点オブジェクトからのオブジェクト間の関連を再帰的に辿り、辿られた関連及びオブジェクトをシステム情報記憶部11より抽出する。
図6は、システム情報記憶部に登録されているシステム情報の一例を示す図である。同図に示されるように、本実施の形態のシステム情報は、オブジェクトごとのXML(eXtensible Markup Language)ファイルの集合である。すなわち、一つのXMLファイルは、一つのオブジェクトを格納する。
各XMLファイルのルート要素の要素名(タグ名)は、オブジェクト種別を示す。例えば、XMLファイルf1のルート要素の要素名は「System」である。したがって、XMLファイルf1に格納されているオブジェクトのオブジェクト種別は、「System(システム)」であることが分かる。一方、XMLファイルf2及びf3のルート要素の要素名は、「Service」である。したがって、XMLファイルf2又はf3に格納されているオブジェクトのオブジェクト種別は「Service(サービス)」であることが分かる。
各XMLファイルは、ルート要素の子要素として、Name要素、ID要素、及びオブジェクトが有する関連を示す要素(以下、「関連要素」という。)等を含む。
Name要素の値は、オブジェクトの名前である。オブジェクトの名前は、例えば、当該オブジェクトが対応する構成要素の名前である。ID要素の値は、オブジェクトの識別子(以下、「オブジェクトID」という。)である。関連要素は、オブジェクトが関連元として有する関連を示す。関連要素の要素名は、関連種別を示す。関連要素は、当該関連種別に属する関連ごとにID要素を含む。ID要素の値は、関連先のオブジェクトのオブジェクトIDを示す。
例えば、XMLファイルf1には、関連要素eR1が含まれている。関連要素eR1の要素名は、「Contains」である。したがって、関連要素eR1が示す関連の関連種別は、「Contains」であることが分かる。関連要素eR1には、子要素として、ID要素eR11及びeR12等が含まれている。ID要素eR11の値は、図中の矢印a1によって示されるように、XMLファイルf2に格納されているオブジェクトのオブジェクトIDである。また、ID要素eR12の値は、図中の矢印a2によって示されるように、XMLファイルf3に格納されているオブジェクトのオブジェクトIDである。
したがって、XMLファイルf1に格納されているオブジェクトと、XMLファイルf2又はf3に格納されているオブジェクトとの間には、関連種別が「Contains」である関連が有ることが分かる。また、当該関連の関連元は、XMLファイルf1に格納されているオブジェクトであり、関連先は、XMLファイルf2又はf3に格納されているオブジェクトであることが分かる。
このように、システム情報には、各オブジェクトの属性情報(オブジェクト種別、名前、ID等)や、オブジェクト間の関連の属性情報(関連種別、関連元、関連先等)等が含まれている。ステップS200において、影響分析部13は、起点オブジェクトを起点として、オブジェクト間の関連を再帰的にシステム情報記憶部11より検索する。影響分析部13は、検索されたオブジェクト及び関連を、影響範囲を示す情報(以下、「分析結果情報」という。)としてメモリ装置103又は補助記憶装置102に記録する。
図7は、分析結果情報の一例を示す図である。同図において、分析結果情報t1は、テーブル形式によって表現されている。分析結果情報t1は、抽出(検索)された関連ごとに、関連元オブジェクト種別、関連元オブジェクト名、関連種別、関連先オブジェクト種別、及び関連先オブジェクト名等を含む。
関連元オブジェクト種別は、関連元のオブジェクトのオブジェクト種別である。関連元オブジェクト名は、関連元のオブジェクトのオブジェクト名である。関連先オブジェクト種別は、関連先のオブジェクトのオブジェクト種別である。関連先オブジェクト名は、関連先のオブジェクトのオブジェクト名である
なお、同図の分析結果情報t1は、オブジェクト種別が「システム」であり、オブジェクト名が「ThisSystem1」が起点オブジェクトである場合の例である。
同図の分析結果情報t1が示す内容は、図8に示される情報と等価である。
図8は、分析結果情報の一例を概念的に示す図である。同図は、図7の内容を関連図にしたものである。したがって、図8においても、オブジェクト種別が「システム」であり、オブジェクト名が「ThisSystem1」であるオブジェクトob1が起点オブジェクトである。なお、同図では、起点オブジェクトを関連先とするオブジェクトは示されていないが、これは、便宜的なものである。すなわち、起点オブジェクトの関連元の方向についても、再帰的に検索が行われ、該当するオブジェクト及び関連が有る場合には、当該オブジェクト及び関連も抽出される。
続いて、分析結果集約部14は、影響分析部13による分析結果の集約処理を実行する(S300)。具体的には、分析結果情報t1に含まれるオブジェクト間の関連を、オブジェクト種別間の関連に集約する。その結果、図9に示されるような分析結果集約情報がメモリ装置103又は補助記憶装置102に記録される。
図9は、分析結果集約情報の一例を示す図である。同図に示されるように、分析結果集約情報t2は、分析結果情報t1において、関連元のオブジェクト種別と関連先のオブジェクト種別とを同じくする関連を一つの関連に集約し、集約された関連の数(集約数)が記録されたものである。
すなわち、分析結果集約情報t2は、集約された関連ごとに、関連元オブジェクト種別、関連種別、親子、関連先オブジェクト種別、及び集約数を有する。ここで、親子とは、関連が親子関係(階層構造)を形成するか否かを示す項目である。本実施の形態では、Contains、HasChild、又はHasParentsの関連種別に属する関連は、親子関係を形成するものであるとされる。それ以外の関連種別に属する関連は、親子関係を形成しないものとされる。
続いて、種別階層付与部15は、分析結果集約部14によって抽出された分析結果集約情報t2(図9参照)に基づいて、起点オブジェクトが属するオブジェクト種別の階層を基準とした場合の、他のオブジェクト種別の相対的な階層を判定する(S400)。その結果、図10に示されるような、オブジェクト種別階層情報が、メモリ装置103又は補助記憶装置102に記録される。
図10は、オブジェクト種別階層情報の一例を示す図である。同図に示されるように、オブジェクト種別階層情報t3は、オブジェクト種別ごとに当該オブジェクト種別に付与された階層を示す。図7又は図8に示されるように、本実施の形態において、起点オブジェクトのオブジェクト種別(以下、「起点オブジェクト種別」という。)は、「システム」である。したがって、図10のオブジェクト種別階層情報t3では、「システム」を基準(0層)とした場合の、「システム」からの他のオブジェクト種別の相対的な階層(の層番号)が示されている。なお、本実施の形態では、階層の値が大きいほど、下位の層であることを示す。同図の例では、オブジェクト種別「サービス」の階層は「1」である。オブジェクト種別「アプリケーション」の階層は「1」である。オブジェクト種別「インタフェース」の階層は「2」である。
このように、本実施の形態では、各オブジェクト種別が属する階層は、予め設定されるのではなく、影響分析の結果に基づいて自動的に付与される。
続いて、オブジェクト階層付与部16は、分析結果情報t1(図7参照)に含まれる各オブジェクトに対して、階層を付与する(割り当てる)(S500)。各オブジェクトに付与される階層は、当該オブジェクトが属するオブジェクト種別に対して、オブジェクト種別階層情報t3(図10)において記録されている階層である。その結果、図11に示されるような、分析結果表示用情報がメモリ装置103又は補助記憶装置102に記録される。
図11は、分析結果表示用情報の一例を示す図である。同図に示されるように、分析結果表示用情報t4は、基本的に、分析結果情報t1(図7参照)に対して、関連元階層及び関連先階層の列が追加されたものである。関連元階層には、関連元オブジェクトに付与された階層が記録される。関連先階層には、関連先オブジェクトに付与された階層が記録される。
続いて、関連追加部17は、下位の階層のオブジェクト間(子孫間)の関連を、上位の階層のオブジェクト間(親同士間)の関連とし、当該親同士間の関連に関する情報を分析結果表示用情報t4に追加する(S600)。ここで、図11のAの部分に含まれる行が、ステップS600において追加される行である。すなわち、Aに含まれる行は、図7には含まれていない。なお、親同士間の関連とされる関連は、親子関係以外の関係を形成する関連である。親子関係にあるオブジェクト間の関連であれば、その親子関係のルートとなる一つのオブジェクトに集約されてしまうからである。
続いて、表示制御部は、分析結果表示用情報等を用いて、影響分析の結果をユーザ端末20に表示させる(S700)。
続いて、ステップS200の詳細について説明する。図12は、影響分析処理の処理手順の一例を説明するためのフローチャートである。
ステップS201において、影響分析部13は、対象オブジェクトは探索済みであるか否かを判定する。最初にステップS201が実行されるときの対象オブジェクトは、起点オブジェクトである。探索済みであるか否かは、後述される探索済みリストに対象オブジェクトが含まれているか否かに基づいて判定される。探索済みリストは、図12の処理において、オブジェクト間の関連を再帰的に辿る過程において探索された(辿られた)オブジェクトを記憶しておくための記憶領域である。探索済みリストは、例えば、メモリ装置103に生成される。最初は、探索済みリストの内容は、空である。したがって、ステップS202に進む。
ステップS202において、影響分析部13は、対象オブジェクトをシステム情報記憶部11より検索する(S202)。本実施の形態では、対象オブジェクトのXMLファイルが取得される。続いて、影響分析部13は、対象オブジェクトを探索済みリストに追加する(S203)。続いて、影響分析部13は、対象オブジェクトの全ての関連先オブジェクトをシステム情報記憶部11より検索する(S204)。具体的には、対象オブジェクトのXMLファイルにおいて、関連要素の子要素のID要素の値として含まれているオブジェクトIDに係るオブジェクトのXMLファイルが検索される(図6参照)。
関連先オブジェクトが検索されない場合(S205でNO)、図12の処理は終了する。なお、後述されるように、図12の処理は、再帰的に呼び出される。したがって、図12の処理の終了とは、再帰処理の場合は、呼び出し元に処理制御が戻ることを意味する。
関連先オブジェクトが検索された場合(S205でYES)、影響分析部13は、対象オブジェクトと各関連先オブジェクトとの情報を分析結果情報t1(図7参照)に追加する(S206)。したがって、関連先オブジェクトの数分の行が分析結果情報t1に追加される。追加される各行の関連元オブジェクト種別、関連元オブジェクト名には、対象オブジェクトのオブジェクト種別、オブジェクト名が登録される。関連種別には、対象オブジェクトと、当該行が割り当てられた関連先オブジェクトとの関連の関連種別が記録される。関連先オブジェクト種別、関連先オブジェクト名には、当該行が割り当てられた関連先オブジェクトのオブジェクト種別、オブジェクト名が登録される。
続いて、影響分析部13は、各関連先オブジェクトについて図12の処理を再帰的に実行する(S207)。再帰処理においては、各関連先オブジェクトが対象オブジェクトとされる。
続いて、影響分析部13は、対象オブジェクトの全ての関連元オブジェクトをシステム情報記憶部11より検索する(S208)。具体的には、XMLファイルの中で、関連要素の子要素のID要素の値として対象オブジェクトのオブジェクトIDが記録されているXMLファイルが検索される(図6参照)。
関連元オブジェクトが検索されない場合(S209でNO)、図12の処理は終了する。関連元オブジェクトが検索された場合(S209でYES)、影響分析部13は、対象オブジェクトと各関連元オブジェクトとの情報を分析結果情報t1(図7参照)に追加する(S206)。したがって、関連元オブジェクトの数分の行が分析結果情報t1に追加される。追加される各行の関連元オブジェクト種別、関連元オブジェクト名には、当該行が割り当てられた関連元オブジェクトのオブジェクト種別、オブジェクト名が登録される。関連種別には、当該行が割り当てられた関連元オブジェクトと対象オブジェクトとの関連の関連種別が記録される。関連先オブジェクト種別、関連先オブジェクト名には、対象オブジェクトのオブジェクト種別、オブジェクト名が登録される。
続いて、影響分析部13は、各関連元オブジェクトについて図12の処理を再帰的に実行する(S211)。再帰処理においては、各関連元オブジェクトが対象オブジェクトとされる。
以上の処理によって、図7の分析結果情報t1が生成される。
続いて、図4のステップS300の詳細について説明する。図13は、影響分析結果の集約処理の処理手順の一例を説明するためのフローチャートである。
ステップS301において、分析結果集約部14は、分析結果情報t1(図7)の最初の行を処理対象(以下、「対象行」という。)として取得する。続いて、分析結果集約部14は、対象行の関連元オブジェクト種別、関連種別、及び関連先オブジェクト種別と一致する行が、分析結果集約情報t2(図9)に既に登録されているか否かを判定する(S302)。該当する行が未登録の場合(S302でNO)、分析結果集約部14は、対象行の関連種別は、親子関係を形成するものであるか否かを判定する(S303)。本実施の形態では、当該関連種別が、Contains、HasChild、又はHasParentsであれば、親子関係であると判定される。なお、いずれの関連種別を親子関係とするかは、適宜定めればよい。
続いて、分析結果集約部14は、対象行の関連元オブジェクト種別、関連種別、及び関連先オブジェクト種別を含む新たな一行を分析結果集約情報t2に追加する(S304)。追加される行の「親子」の値は、ステップ303に基づいて決定される。親子関係を形成する場合は、「Y」が、形成しない場合は「N」が登録される。また、当該行の「集約数」には1が登録される。
一方、対象行の関連元オブジェクト種別、関連種別、及び関連先オブジェクト種別と一致する行が、分析結果集約情報t2(図9)に既に登録されている場合(S302でYES)、分析結果集約部14は、該当する行の「集約数」の値に1を加算する(S305)。
ステップS304又はS305に続いて、分析結果集約部14は、分析結果情報t1に未処理の行が残っているか否かを判定する(S306)。未処理の行が残っている場合(S306でYES)、分析結果集約部14は、対象行の次の行を処理対象として取得し(S307)、ステップS302以降を繰り返す。
分析結果情報t1の全ての行について処理が終了すると(S307でNO)、分析結果集約部14は、図13の処理を終了させる。
以上の処理によって、図9の分析結果集約情報t2(図9)が生成される。なお、図9の分析結果集約情報t2によって示される、オブジェクト種別間の親子関係は、図14に示される通りである。
図14は、本実施の形態の分析結果集約情報が示すオブジェクト種別間の親子関係を説明するための図である。同図における矢印は親子関係を示す。親子関係であるから、分析結果集約情報t2において、「親子」が「N」である関連は示されていない。
同図に示されるように、「システム」は、「サービス」、「アプリケーション」、及び「インタフェース」の親である。また「サービス」は、「インタフェース」の親である。更に、「アプリケーション」は、「インタフェース」の親である。以上より、「インタフェース」に属するオブジェクトの階層は、「システム」の1階層下である場合と、2階層下である場合とがあることが分かる。
続いて、図4のステップS400の詳細について説明する。図15は、オブジェクト種別への階層の付与処理の処理手順の一例を説明するためのフローチャートである。
ステップS410において、種別階層付与部15は、分析結果集約情報t2(図9)に基づいて、分類作業テーブルを、例えば、メモリ装置103に生成する。分類作業テーブルとは、各オブジェクト種別の階層を判定するために利用される作業用のテーブルである。
図16は、分類作業テーブルの一例を示す図である。同図に示される分類作業テーブルt5には、オブジェクト種別ごとに、当該オブジェクト種別が探索された階層に対して、当該階層に関して最後に辿られたオブジェクト種別間の関連の集約数が記録される。オブジェクト種別が探索された階層とは、分析結果集約情報t2に示される(すなわち、図14に示される)オブジェクト種別間の親子関係を辿ることにより各オブジェクト種別が探索された階層である。同図より明らかなように、本実施の形態では、起点オブジェクトが属するオブジェクト種別「システム」の階層は0とされる。なお、「インタフェース」については、階層1と階層2のそれぞれに対して、集約数が記録されている。図14より明らかなように、「システム」から「インタフェース」までの間の親子関係の階層は、1の場合と2の場合とがあるからである。
なお、ステップS410で生成されるのは、分類作業テーブルの構造である。具体的には、ステップS410では、分類作業テーブルt5の行数及び列数が決定される。したがって、ステップS410の終了時において、分類作業テーブルt5には値は登録されていない。分類作業テーブルt5への値の登録は、ステップS420以降において行われる。
続いて、種別階層付与部15は、起点オブジェクト種別を分類作業テーブルに登録する(S420)。図16の例では、1行目のオブジェクト種別に「システム」が登録される。なお、図16では、「システム」に関して階層0に対して「×」が記録されている。これは、「システム」が0階層であることを示すものである。したがって、「システム」が0階層であることが識別可能であれば、他の記号が階層0に記録されてもよい。
続いて、種別階層付与部15は、分析結果集約情報t2に登録されている、起点オブジェクト種別からの親子関係を関連先の方向(子の方向)に辿り、各オブジェクト種別を探索する。種別階層付与部15は、各オブジェクト種別が探索された階層に関して最後に辿られた関連に関して分析結果集約情報t2に記録されている集約数を分類作業テーブルt5に登録する(S430)。集約数が登録される列は、各オブジェクト種別が探索された階層に対応する列である。
続いて、種別階層付与部15は、分析結果集約情報t2に登録されている、起点オブジェクト種別からの親子関係を関連元の方向(親の方向)に辿り、各オブジェクト種別を探索する。種別階層付与部15は、各オブジェクト種別が探索された階層に関して最後に辿られた関連に関して分析結果集約情報t2に記録されている集約数を分類作業テーブルt5に登録する(S450)。集約数が登録される列は、各オブジェクト種別が探索された階層に対応する列である。
続いて、種別階層付与部15は、分類作業テーブルt5に基づいて、各オブジェクト種別の階層を決定し、決定された階層を各オブジェクト種別に付与する(S470)。その結果、生成されるのが、オブジェクト種別階層情報t3(図10)である。
続いて、ステップS410の詳細について説明する。図17は、分類作業テーブルの生成処理の生成処理の処理手順の一例を説明するためのフローチャートである。
ステップS411において、種別階層付与部15は、分析結果集約情報t2(図9)に基づいて、オブジェクト種別の数を計数する。本実施の形態では、図14に示されるようにオブジェクト種別の数は、4である。
続いて、種別階層付与部15は、オブジェクト種別数分の行を分類作業テーブルt5に生成する(S412)。続いて、種別階層付与部15は、予想される最大数の列を分類作業テーブルt5に生成する(S413)。予想される最大数の列は、以下の式(1)で算出される。
(オブジェクト種別数−1)×2+1 ・・・ (1)
式(1)は、起点オブジェクト種別以外の全てのオブジェクト種別が、異なる階層に属し、かつ、関連先又は関連元の一方向に存在する場合であっても、各オブジェクト種別の集約数を階層ごとに登録可能な列数を算出するための式である。
続いて、種別階層付与部15は、算出された列数分の列を分類作業テーブルt5に生成する。この際、中央の列には0が割り当てられる。中央から右側の各列には中央の列からの相対的な列番号が正の値で割り当てられる。中央から左側の各列には中央の列からの相対的な列番号が負の値で割り当てられる。各列に割り当てられた値が、各列が対応する階層(の層番号)である。なお、正の階層には、起点オブジェクト種別の関連先のオブジェクト種別が属する。負の階層には、起点オブジェクト種別の関連元のオブジェクト種別が属する。
続いて、図15のステップS430の詳細について説明する。図18は、起点オブジェクト種別の関連先のオブジェクト種別の各階層の集約数の登録処理の処理手順の一例を説明するためのフローチャートである。
ステップS431において、種別階層付与部15は、起点オブジェクト種別を注目対象とするオブジェクト種別(以下、「対象種別」という。)とする。続いて、種別階層付与部15は、変数Layerに0を代入する(S432)。変数Layerは、オブジェクト種別が探索された階層を判別するための変数である。
続いて、種別階層付与部15は、分析結果集約情報t2において、関連元オブジェクト種別が対象種別と一致し、「親子」の値が「Y」である行を検索する(S433)。すなわち、対象種別が有する親子関係に係る行が検索される。例えば、対象種別が「システム」である場合、図9の分析結果集約情報t2からは、1から3行目が検索される。
続いて、種別階層付与部15は、検索された行から、登録済みリストに含まれている行を除去する(S434)。登録済みリストとは、分析結果集約情報t2に含まれる行の中で、分類作業テーブルt5に対して集約数の登録が行われた行を記憶しておくための記憶領域である。したがって、ステップS434は、分析結果集約情報t2内の同一行に基づく二重登録を回避するための処理である。登録済みリストは、例えば、メモリ装置103に生成される。最初は、登録済みリストの内容は、空である。ステップS434における除去の結果、残った行を、以下「有効行」という。なお、最初は、図9の分析結果集約情報t2の1から3行目が有効行となる。
有効行が有る場合(S435でYES)、種別階層付与部15は、変数Layerに1を加算する(S436)。続いて、種別階層付与部15は、各有効行に登録されている集約数を分類作業テーブルt5に登録する(S437)。集約数の登録先となるセルは、有効行の関連先オブジェクト種別に一致する行と、変数Layerが示す値に層番号が一致する列とによって特定される。
例えば、図9の分析結果集約情報t2の1行目に基づいて、分類作業テーブルt5の「サービス」の行の階層1の列に集約数「4」が登録される。また、分析結果集約情報t2の2行目に基づいて、分類作業テーブルt5の「アプリケーション」の行の階層1の列に集約数「2」が登録される。更に、分析結果集約情報t2の3行目に基づいて、分類作業テーブルt5の「インタフェース」の行の階層1の列に集約数「1」が登録される。なお、登録先のセルに既に値が登録されている場合、登録される集約数は、既存の値に加算される。
続いて、種別階層付与部15は、各有効行を登録済みリストに追加する(S438)。続いて、種別階層付与部15は、各有効行の関連先オブジェクト種別を対象種別とし(S439)、ステップS433以降を繰り返す。すなわち、有効行ごとの対象種別ごとに、ステップS433以降が繰り返される。その結果、いわゆる再帰的に、オブジェクト種別間の関連が辿られて、関連先のオブジェクト種別が探索される。
一方、ステップS435において有効行が無い場合(S435でNO)、種別階層付与部15は、変数Layerより1を減算する(S440)。ステップS440以降は、基本的には、起点オブジェクト種別と異なるオブジェクト種別をルートとする階層が構成されている場合のための処理である。具体的には、図14において、「サービス」が「システム」とは異なる親を更に有する場合に、当該親に関する関連の集約数を登録するための処理である。この場合、関連元に遡るため、変数Layerの値が減算されるのである。
続いて、種別階層付与部15は、分析結果集約情報t2において、関連先オブジェクト種別が対象種別と一致し、「親子」の値が「Y」である行を検索する(S441)。続いて、種別階層付与部15は、検索された行から、登録済みリストに含まれている行を除去する(S442)。ステップS442における除去の結果、残った行を、「有効行」という。
有効行が有る場合(S443でYES)、種別階層付与部15は、各有効行について、ステップS436以降を実行する。有効行が無い場合(S443でNO)、種別階層付与部15は、図18の処理を終了させる。
なお、図15のステップS450の詳細な処理手順は、図18の処理手順より自明である(図18と正反対の処理である)ため、図19にフローチャートを示し、その説明は省略する。
続いて、図15のステップS470の詳細について説明する。図20は、オブジェクト種別の階層の決定処理の処理手順の一例を説明するためのフローチャートである。
ステップS471において、種別階層付与部15は、分類作業テーブルt5(図16)の1行目を処理対象として取得する。取得された行を、以下「対象行」という。また、対象行に係るオブジェクト種別を、以下「対象種別」という。
続いて、種別階層付与部15は、対象行において、複数の列に集約数が登録されているか否かを判定する(S472)。すなわち、対象行に係るオブジェクト種別に対して複数の階層が付与されているか否かが判定される。例えば、図16において、「システム」、「サービス」、及び「アプリケーション」には、複数の列に集約数は登録されていない。複数の列に集約数が登録されていない場合(S472でNO)、種別階層付与部15は、集約数が登録されている列に係る階層を対象種別に付与する(S473)。すなわち、対象種別と付与された階層の層番号とを含む行がオブジェクト種別階層情報t3(図10)に登録される。
一方、対象行の複数の列に集約数が登録されている場合(S472でYES)、種別階層付与部15は、各列(各階層)に登録されている集約数の比較に基づいて、対象種別に付与する階層を決定する。まず、種別階層付与部15は、当該集約数の中に最大の集約数が複数存在するか否かを判定する(S474)。すなわち、最大の集約数に係る列(階層)が一意に定まらないか否かが判定される。
最大の集約数は一つである場合(S474でNO)、種別階層付与部15は、最大の集約数が登録されている列に係る階層を対象種別に付与する(S473)。すなわち、対象種別と付与された階層の層番号とを含む行がオブジェクト種別階層情報t3(図10)に登録される。
一方、最大の集約数が複数存在する場合(S474でYES)、種別階層付与部15は、最大の集約数が登録されている列のうち、階層0の列に近い方の列に係る階層を対象種別に付与する(S476)。すなわち、対象種別と付与された階層の層番号とを含む行がオブジェクト種別階層情報t3(図10)に登録される。階層0に近い階層が付与されるのは、表示時において、階層によってフィルタリング(表示対象の限定)が行われる際、起点(階層0)に近い階層に属する方が、ステップS476に該当するオブジェクトに関して非表示とされる可能性が低いからである。その結果、ステップS476に該当するオブジェクト種別に属するオブジェクトについて不適切な表示漏れが発生する可能性が低減されるからである。
続いて、種別階層付与部15は、分類作業テーブルt5内に、対象行の次の行が存在するか否かを判定する(S477)。次の行が有る場合(S477でYES)、種別階層付与部15は、は、次の行を対象行として(S478)、ステップS472以降を繰り返す。次の行が無い場合(S477でNO)、種別階層付与部15は、図20の処理を終了させる。
続いて、図4のステップS500の詳細について説明する。図21は、オブジェクトへの階層の付与処理の処理手順の一例を説明するためのフローチャートである。
ステップS501において、オブジェクト階層付与部16は、分析結果情報t1(図7)の最初の行を処理対象(以下、「対象行」という。)として取得する。続いて、オブジェクト階層付与部16は、対象行の関連元オブジェクトの階層をオブジェクト種別階層情報t3(図10)に基づいて判定する(S502)。具体的には、オブジェクト種別階層情報t3において、対象行の関連元オブジェクト種別が示すオブジェクト種別に対して登録されている階層が当該関連元オブジェクトの階層として判定される。
続いて、オブジェクト階層付与部16は、対象行の関連先オブジェクトの階層をオブジェクト種別階層情報t3に基づいて判定する(S503)。具体的には、オブジェクト種別階層情報t3において、対象行の関連先オブジェクト種別が示すオブジェクト種別に対して登録されている階層が当該関連先オブジェクトの階層として判定される。
続いて、オブジェクト階層付与部16は、対象行の関連種別が親子関係に係るものであるか否かを判定する(S504)。この判定は、図13のステップS303における処理と同様でよい。続いて、オブジェクト階層付与部16は、ステップS502〜S504における判定結果に基づいて、分析結果表示用情報t4(図11)に一行を追加する(S505)。追加される行の関連元オブジェクト種別、関連元オブジェクト名、関連種別、関連先オブジェクト種別、及び関連先オブジェクト名は、対象行に含まれている値がそのまま転記される。追加される行の関連元階層には、ステップS502の判定結果が記録される。追加される行の関連先階層には、ステップS503の判定結果が記録される。追加される行の親子には、ステップS504の判定結果が記録される。
続いて、オブジェクト階層付与部16は、分析結果情報t1内に、対象行の次の行が存在するか否かを判定する(S506)。次の行が有る場合(S506でYES)、オブジェクト階層付与部16は、は、次の行を対象行として(S507)、ステップS502以降を繰り返す。次の行が無い場合(S5067でNO)、オブジェクト階層付与部16は、図21の処理を終了させる。
以上の処理で、分析結果表示用情報t4が生成される。
続いて、図4のステップS600の詳細について説明する。図22は、親の関連の追加処理の処理手順の一例を説明するためのフローチャートである。
ステップS610において、関連追加部17は、分析結果表示用情報t4(図11)の最初の行を取得し、処理対象(以下、「対象行」という。)とする。続いて、関連追加部17は、対象行の親(関連元オブジェクト)の子以下(関連先オブジェクト以下)が有する関連を当該親の関連として分析結果表示用情報t4に追加する処理を実行する(S620)。
続いて、関連追加部17は、分析結果表示用情報t4内に、対象行の次の行が存在するか否かを判定する(S640)。次の行が有る場合(S640でYES)、関連追加部17は、次の行を対象行として(S650)、ステップS620以降を繰り返す。次の行が無い場合(S640でNO)、関連追加部17は、図21の処理を終了させる。なお、ステップS620において追加された行は、ステップS640の判定対象から除外される。
続いて、ステップS620の詳細について説明する。図23は、子以下の関連を親の関連として追加する処理の処理手順の一例を説明するためのフローチャートである。
ステップS621において、関連追加部17は、対象行の関連は、親子関係であるか否かを判定する(S621)。当該判定は、対象行の「親子」の値を参照すればよい。なお、最初にステップS621が実行されるときの対象行は、図22における対象行に一致する。
続いて、関連追加部17は、対象行の関連先オブジェクトが関連元として登録されている行を分析結果表示用情報t4(図11)より検索する(S622)。検索された行が無い場合(S623でNO)、関連追加部17は、図23の処理の呼び出し元に処理制御を戻す。
検索された行が有る場合(S623でYES)、関連追加部17は、検索されたそれぞれの行を対象行として、図23の処理を再帰的に呼び出す(S624)。再帰的に図23が実行されることで、各階層において、当該階層の子以下の関連が親の関連として生成される。
続いて、関連追加部17は、ステップS632で検索された各行について、関連元の情報を対象行の関連元の情報によって置換した結果を分析結果表示用情報t4に追加する(S625)。関連元の情報とは、関連元オブジェクト種別、関連先オブジェクト種別、及び関連元階層をいう。すなわち、子が関連元である行に基づいて、親が関連元とされた行が追加される。
続いて、関連追加部17は、追加された各行について関連元階層と関連先階層とは異なるか否かを判定する(S626)。関連元階層と関連先階層とが同じである行については(S626でNO)、ステップS627及びS628は実行されない。すなわち、親同士の関連は、階層を同じくする親の間に生成される。
関連元階層と関連先階層とが同じである行については(S626でYES)、ステップS627及びS628が実行される。したがって、ステップS627及びS628の説明において、「追加された行」とは、ステップS625において追加された行のうち、関連元階層と関連先階層とが異なる行をいう。
ステップS627において、関連追加部17は、追加された行の関連先階層が、関連元階層に一致するまで、当該行の関連先オブジェクトの関連を関連元の方向に遡る(S627)。続いて、関連追加部17は、遡りの終了地点(すなわち、関連元階層と同じ階層)のオブジェクトの情報によって、該当する行の関連先オブジェクト種別、関連先オブジェクト名、及び関連先階層の値を置換する(S628)。すなわち、追加された行について、関連先と関連元との階層が一致される。
ステップS628又はステップS626でNOの場合に続いて、関連追加部17は、追加された各行について、関連元オブジェクトと関連先オブジェクトとは同一オブジェクトであるか否かを判定する(S629)。具体的には、追加された各行について、関連元オブジェクト種別及び関連元オブジェクト名と、関連先オブジェクト種別及び関連先オブジェクト名とが同じであるか否かが判定される。
関連追加部17は、関連元オブジェクトと関連先オブジェクトとが同一オブジェクトである行については(S629でYES)、削除を実行する(S630)。
これは、或るオブジェクトを起点として子孫方向に関連を辿った後、親方向を遡った結果、元の起点のオブジェクトに戻ってしまい、同一オブジェクト間の関連を示す行が追加される場合があるからである。例えば、図8において、オブジェクトob121を関連元とし、オブジェクトob131を関連先とする行について、オブジェクトob121がオブジェクトob1に置換された結果が追加された場合である。この場合、オブジェクトob131から親方向に遡ると、オブジェクトob1に辿りついてしまう。
なお、オブジェクトob221を関連元とし、オブジェクトob133を関連先とする行について、関連元がオブジェクトob2に置換された結果が追加された場合は、有効な関連が追加される。すなわち、この場合、オブジェクト133から親方向に辿られ、オブジェクト133はオブジェクトob1に置換される。その結果、オブジェクトob2を関連元とし、オブジェクトob1を関連先とする関連が追加されるからである。
図22及び図23の処理により、図11のAの部分の行が新たに追加される。
続いて、図4のステップS700の詳細について説明する。図24は、分析結果の表示制御処理の処理手順の一例を説明するためのフローチャートである。
ステップS701において、表示制御部18は、表示階層を初期値に設定する。表示階層とは、影響分析の結果において、表示対象とする階層をいう。すなわち、本実施の形態では、階層によって、表示対象とするオブジェクトが限定される。初期値は、例えば、設定ファイル等に記憶されていてもよいし、表示制御部18のロジック内において決められていてもよい。または、図4のステップS100において、起点オブジェクトの選択の際に、表示階層が指定されてもよい。本実施の形態において、表示階層の初期値は「0」であるとする。
続いて、表示制御部18は、分析結果表示用情報t4(図11)より、関連元階層及び関連先階層の双方が、表示階層以下である行を検索する(S702)。表示階層と関連元階層及び関連先階層との大小関係は、絶対値ではなく、正負も考慮されて判定される。例えば、階層−1は、階層0より小さいと判定される。
続いて、表示制御部18は、検索された行の中から、親同士の関連として追加された行であって、関連元階層及び関連先階層が表示階層と異なる行を除去する(S703)。親同士の関連として追加された行とは、図22及び図23の処理を実行することにより追加された行をいう。ステップS703を実現するために、斯かる行を識別可能な情報を分析結果表示用情報t4に付加しておけばよい。
続いて、表示制御部18は、ステップS702及びS703の実行により抽出された行(以下、「抽出行」という。)に含まれる関連を辿ることにより、オブジェクトの関連図を生成する(S704)。この際、例えば、親子関係に係る関連は、親のオブジェクト内に子のオブジェクトが包含されるよう(すなわち、入れ子になるように)に描画される。また、親子関係以外の関連は、例えば、関連元から関連先への矢印によって描画される。
続いて、表示制御部18は、ユーザ端末20に関連図の表示指示を送信する(S705)。当該表示指示に応じて、ユーザ端末20は、関連図を表示させる。
図25は、本実施の形態の影響分析結果に基づく関連図の表示例を示す図である。同図において、関連図g1は、表示階層が0の場合に表示される関連図である。関連図g1では、階層0に属するオブジェクトが表示され、当該オブジェクト間の関連が矢印によって示されている。なお、関連図g1で表示されている関連は、子孫(下位層のオブジェクト)の関連に基づいて親同士の関連として追加されたものである。したがって、当該関連が追加されていない場合、表示階層0の関連図は、三つのオブジェクトを示す矩形が独立して表示されたものとなる。一方、関連図g1によれば、三つのオブジェクト、すなわち、構成要素間に何らかの関連(同図では利用関係)が有ることが分かる。子孫間に関連があるということは、構成要素の少なくとも一部の間に関連が有るということである。したがって、斯かる関連が表示させることで、関連図g1の利便性等を向上させることができる。
続いて、例えば、ユーザによる入力に応じて、ユーザ端末20より表示階層の変更要求が受信されると(S706でYes)、表示制御部18は、変更要求に指定されている階層を新たな表示階層として、ステップS702以降を実行する。例えば、階層1へ表示階層の変更が要求された場合、図25の関連図g2が生成され、ユーザ端末20において表示される。
関連図g2では、階層0及び階層1のオブジェクトが表示されている。階層1のオブジェクトについて、階層0のオブジェクトと親子関係を有するオブジェクトを示す矩形は、当該階層0のオブジェクトを示す矩形内に包含されている。矩形の包含関係によって、親子関係が視認し易くなっている。また、関連図g1において階層0のオブジェクト間の関連として表示されていた関連は、階層1のオブジェクト間又は階層0と階層1とのオブジェクト間の関連として表示されている。換言すれば、関連図g1において表示されていた関連は表示されていない。これは、子孫の関連に基づいて親同士の関連として追加された関連は、表示階層と一致する階層間のものしか表示対象とされないためである。すなわち、関連追加部17によって生成された関連が表示されるのは、下位の階層が表示対象とされず、上位の階層(当該関連と同じ階層)が表示対象とされるときである。斯かる表示規則により、同一の関連に基づく矢印が重複して表示されて関連図の内容が煩雑になるのを回避することができる。
なお、図25に示される表示形態は、一例である。したがって、他の表示形態によって関連図が表示されてもよい。
上述したように、本実施の形態によれば、情報システムの各構成要素(オブジェクト)に対して自動的に階層が付与される。自動的に付与された階層に基づいて、影響分析の結果等において表示対象とする構成要素が適切に限定される。したがって、ユーザは、予めシステム情報記憶部11(例えば、サービスリポジトリ)の内容を理解又は把握している必要はない。その結果、構成要素の表示対象を限定するための作業負担を軽減することができる。
また、起点の構成要素から或る構成要素までの関連の経路が複数存在する場合、当該構成要素には階層の不整合が生じる。本実施の形態では、構成要素間の関連が、関連元のオブジェクト種別及び関連先のオブジェクト種別の一致に基づいて、オブジェクト種別間の関連(種別間関連)として集約される。種別間関連を辿ることで、オブジェクト種別ごとに階層が付与される。複数の階層が付与されるオブジェクト種別については、各階層において最後に辿られた種別間関連の集約数の比較に基づいて、一つの階層が付与される。その結果、構成要素について階層の不整合が生じない状態で、表示対象の限定を行うことができる。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。