次に、本発明の実施形態について図面を参照して説明する。
なお、各図面は、本発明の実施形態を説明するためのものである。ただし、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明を、省略する場合がある。また、以下の説明に用いる図面において、本発明の説明に関係しない部分の構成については、記載を省略し、図示しない場合もある。また、図面中の矢印の方向は、一例を示すものであり、ブロック間の信号の向きを限定するものではない。
<第1の実施形態>
以下、図面を参照して、第1の実施形態について説明する。
まず、図面を参照して、情報処理装置3を含む情報処理システム10について説明する。
図2は、第1の実施形態に係る情報処理装置3を含む情報処理システム10の構成の一例を示すブロック図である。図2に示されている情報処理システム10は、第1の実施形態に係る情報処理装置3と、入力装置1と、出力装置2と、記憶装置4とを含む。
入力装置1は、情報処理装置3において処理される情報を情報処理装置3に送信する装置である。入力装置1は、例えば、情報処理装置3の利用者が情報処理装置3に送信する情報を入力する装置である。
なお、情報処理装置3において処理の対象となる情報(以下、「対象情報」とも呼ぶ)は、特に制限されない。例えば、対象情報は、ITシステムにおけるデータと、データを処理するプログラムとの構成の情報でもよい。この場合、情報処理装置3は、例えば、具体的な対象情報として、そのソフトウェアのソースファイルを受け取ってもよい。そこで、以下の説明では、対象情報の一例として、プログラムとデータとを含むソフトウェアを用いて説明する。ただし、情報処理装置3が処理する情報は、上記に限定されない。例えば、対象情報は、より上位である、ITシステムの業務と帳票データとに関する情報でもよい。
出力装置2は、情報処理装置3が特定した結果を出力する場合の出力先となる装置である。後ほど説明するように、情報処理装置3は、対象情報における所定の要素の影響範囲を特定する。例えば、情報処理装置3は、対象情報であるITシステムにおけるプログラムの改修における影響範囲を特定する。この場合、出力装置2は、情報処理装置3が特定した影響範囲を表示する。
記憶装置4は、情報処理装置3が後ほど説明する動作において用いる情報を保持する。そのため、記憶装置4は、「リポジトリ」と呼ばれてもよい。
情報処理装置3は、対象情報における所定の要素の影響範囲を特定する。
そのため、情報処理装置3は、入力装置1から対象情報を受信する。ただし、情報処理装置3は、予め保持している対象情報を用いて動作してもよい。このように、情報処理装置3は、対象情報の提供元を限定されない。
そして、情報処理装置3は、特定した影響範囲を出力装置2に送信する。ただし、情報処理装置3が、特定した影響範囲を保持してもよい。あるいは、情報処理装置3が、影響範囲を表示してもよい。このように、情報処理装置3は、影響範囲の出力先を限定されない。
さらに、情報処理装置3は、処理において、適宜、記憶装置4に情報を保存し、記憶装置4から情報を読み出す。ただし、情報処理装置3は、記憶装置4を含んでもよい。なお、情報処理装置3が記憶装置4に情報を保存する動作及び情報を読み出す動作は、一般的なコンピュータと記憶装置とを含むシステムにおける情報の記録及び読み出し動作と同様である。そのため、以下の説明において、情報処理装置3が記憶装置4に情報を保存する動作、及び、記憶装置4から情報を読み出す動作の説明を省略する。
次に、図面を参照して、情報処理装置3について説明する。
[説明の用いる情報]
まず、以下の説明に用いる情報を説明する。
以下の説明では、影響範囲を特定する要素としてプログラムを用いて説明する。ただし、これは、情報処理装置3における影響範囲を特定する対象をプログラムに限定するものではない。例えば、情報処理装置3は、データの影響範囲を特定してもよい。さらに、例えば、情報処理装置3は、プログラム及びデータの両方に関する影響範囲を特定してもよい。さらに、例えば、情報処理装置3は、一つに限らず複数のプログラム及び/又はデータの影響範囲を特定してもよい。さらに、情報処理装置3は、プログラム及びデータとは異なる要素に対する影響範囲を特定してもよい。
図3は、以下の説明に用いる対象情報の一例を示す図である。図3に示されている対象情報は、プログラムとデータとの関係を示すブロック図である。詳細には、次のとおりである。
プログラムAは、データa1を作成又は更新する。この関係は、リンクL1である。なお、以下、「作成又は更新する」をまとめて、「作成する」と呼ぶ場合もある。
プログラムBは、データa1を更新する。この関係は、リンクL2である。
プログラムCは、データa1を入力とする。この関係は、リンクL3である。
プログラムDは、データa1を入力とする。この関係は、リンクL4である。
プログラムCは、データa1を用いて、データc1を作成する。この関係は、リンクL5である。
プログラムDは、データa1を用いて、データd1を作成する。この関係は、リンクL6である。
さらに、プログラムDは、データa1とは関連しないデータd2を作成する。この関係は、リンクL7である。
プログラムEは、データc1を入力とする。この関係は、リンクL8である。
プログラムFは、データd1を入力とする。この関係は、リンクL9である。
プログラムGは、データd2を入力とする。この関係は、リンクL10である。
プログラムEは、データc1を用いて、データe1を作成する。この関係は、リンクL11である。
プログラムFは、データd1とは関連しないデータf1を作成する。この関係は、リンクL12である。
さらに、プログラムFは、データd1を用いて、データf2を作成する。この関係は、リンクL13である。
プログラムGは、データd2を用いて動作するが、データを作成及び更新しない。
図3において、リンクに付した「Write」及び「Read」が、リンクの属性である。「Write」属性は、データの作成又は更新に関する属性である。つまり、「Write」属性は、データを変更する属性である。「Read」属性は、データを用いるための読み出しに関する属性である。つまり、「Read」属性は、データを変更しない属性である。
図4は、図3の対象情報におけるジョブのフローの一例を示す図である。なお、プログラムGは、図4に示されているフローとは異なるフローに含まるプログラムとする。そのため、図4は、プログラムGを含まない。
ジョブ1は、業務Aの処理1である。具体的には、ジョブ1は、プログラムAがデータa1を作成又は更新する処理である。
ジョブ2は、データa1の複製の処理である。具体的には、ジョブ2は、プログラムCがデータa1の複製としてデータc1を作成する処理である。
ジョブ3は、業務Eの処理である。具体的には、ジョブ3は、プログラムEがデータc1を用いて、データe1を作成する処理である。
ジョブ4は、業務Aの処理2である。具体的には、ジョブ2は、プログラムBがデータa1を更新する処理である。処理1と処理2の区別を容易にするため、図4は、プログラムBが更新した「データa1」を「データa1’」として示している。
ジョブ5は、データa1(図4ではデータa1’)の複製の処理と業務Dの処理である。具体的には、ジョブ5は、プログラムDが、プログラムBが更新したデータa1(データa1’)の複製としてデータd1を作成する処理と、プログラムDがデータa1とは関連しないデータd2を作成する処理である。
ジョブ6は、業務Fの処理である。具体的には、ジョブ6は、プログラムFが、データd1を用いてデータf2を作成し、さらに、データd1とは関連しないデータf1を作成する処理である。
情報処理装置3は、対象情報として、例えば、図3及び/又は図4に示されている情報を受信する。ただし、図3及び図4は、対象情報の一例を説明するための図である。情報処理装置3が実際に受信する対象情報は、情報処理装置3が処理可能な形式の情報である。
図5は、図3に示されている対象情報におけるプログラムとデータとの関係を表す情報(以下、「構成情報」と呼ぶ)の一例を示す図である。図5は、テーブル形式を用いて構成情報を示している。ただし、情報処理装置3は、図5とは異なる形式を用いてもよい。図5に示されている構成情報は、一例として、構成の番号(No.)と、構成の名称と、その構成からの「出リンク」と、その構成への「入リンク」と含む。
図5の各行が、図3に示されている各構成(プログラム及びデータ)を示している。例えば、1行目は、構成情報の番号である「I1」がプログラムAであること、及び、プログラムAが出力としてリンクL1に接続されていることを示す。3行目は、構成情報の番号「I3」がデータa1であること、及び、データa1が入力としてリンクL1及びL2に、出力としてリンクL3及びL4に接続されていることを示す。
図6は、図5に示されている構成情報におけるリンクに関する情報をまとめたリンク情報の一例を示す図である。図6は、一例として、テーブル形式を用いてリンク情報を示した図である。ただし、リンク情報の形式は、テーブル形式に限定されない。図6に示されているリンク情報は、一例として、リンクの番号(No.)と、リンクの属性と、リンクの始点となる構成の番号と、リンクの終点となる構成の番号とを含む。
例えば、図6の1行目のリンクL1は、始点が「I1(プログラムA)」であり、終点が「I3(データa1)」であり、属性が「Write」である。つまり、リンクL1は、プログラムAがデータa1を書き込むリンクである。なお、「書き込み」は、「作成又は更新」である。
また、3行目のリンクL3は、始点が「I3(データa1)」であり、終点が「I4(プログラムC)」であり、属性が「Read」である。つまり、リンクL3は、データa1がプログラムCに入力されるリンクである。
なお、情報処理装置3は、受信する対象情報の内容を制限されない。例えば、情報処理装置3は、対象情報として、図5及び図6に示されている情報を含む対象情報を受信してもよい。あるいは、情報処理装置3は、図3に示されているような対象情報の構成に関する情報と図4に示されているような動作に関する情報とを受信し、受信した情報を基に、構成情報などを作成してもよい。
[構成の説明]
次に、図面を参照して、第1の実施形態に係る情報処理装置3の構成について説明する。
図1は、第1の実施形態に係る情報処理装置3の構成の一例を示すブロック図である。情報処理装置3は、由来抽出部51と、順序抽出部52と、影響範囲探査部71とを含む。
由来抽出部51は、対象情報を基に、データ間の由来に関係する情報(以下、「由来情報」、又は、単に「由来」と呼ぶ)を抽出する。ここで、由来とは、あるデータと、そのデータを生成するためのデータとの関係である。つまり、由来とは、データの生成関係に関する情報である。つまり、由来抽出部51は、対象情報におけるデータの生成関係に関する情報である由来を抽出する。
なお、由来の階層は、特に制限はない。由来は、1階層でもよく、2階層以上でもよい。ただし、以下の説明では、由来として、1階層を用いて説明する。
図7は、由来情報の一例を示す図である。図7は、一例として、テーブル形式を用いて由来情報を示した図である。ただし、由来情報の形式は、テーブル形式に限定されない。図7に示されている由来情報は、一例として、構成(データ)の番号と、その構成の元となった構成(データ)、つまり「由来」の番号とを含む。
例えば、図7の2行目の「I5(データc1)」は、「I3(データa1)」から生成されるデータである。また、1行目の「I3(データa1)」は、由来がない。つまり、1行目の「I3(データa1)」は、他のデータを参照しないで生成又は更新されるデータである。
なお、図7に示されている名称は、説明の便宜のために付した情報である。つまり、由来情報は、名称を含まなくてもよい。
図1を参照した説明に戻る。
順序抽出部52は、対象情報を基に、データ間の処理の順序に関連する情報(以下、「順序情報」、又は、単に「順序」と呼ぶ)を抽出する。順序とは、データの処理の順序に関する情報である。つまり、順序抽出部52は、データの処理の順序を抽出する。具体的には、順序抽出部52は、例えば、処理におけるリンクの順序を抽出する。
図8は、順序情報の一例を示す図である。図8は、一例として、テーブル形式を用いて順序情報を示した図である。ただし、順序情報の形式は、テーブル形式に限定されない。図8に示されている順序は、一例として、リンクの番号と、グループと、順序とを含む。ここで、グループとは、各フローを識別するための情報である。同じフローに含まれるリンクは、同じグループとなる。
例えば、1行目のリンクL1は、グループG1に含まれ、1番目に実行される。あるいは、4行目のリンクL4は、グループG1に含まれ、7番目に実行される。なお、グループとは、上記のとおり、リンクが含まれるフローを識別するための情報である。後ほど説明する影響範囲探査部71は、グループごとに、影響の範囲を特定する。ただし、影響範囲探査部71は、複数のグループ又は全てのグループにおいて影響範囲を特定してもよい。
なお、リンクがいずれのグループにも含まれない場合、そのリンクの順序及びグループは、「無」とする。図8において、順序「0」は、「順序無」を示し、「G0」は、「グループ無」を示す。例えば、10行目のリンクL10は、いずれのフローにも含まれないリンクである。
情報処理装置3は、図5、図6、図7、及び、図8の各情報を、記憶装置4に保持する。ただし、上記のとおり、情報処理装置3が、各情報を保持してもよい。
影響範囲探査部71は、対象情報におけるプログラムの影響範囲を特定する。詳細には、影響範囲探査部71は、由来と順序と基に、プログラムの影響範囲を特定する。
[動作の説明]
次に図面を参照して、第1の実施形態に係る情報処理装置3の動作について説明する。
図9は、第1の実施形態に係る情報処理装置3の動作の一例を示すフローチャートである。なお、以下の説明において、対象情報は、図3及び図4とする。さらに、構成情報及びリンク情報は、図5及び図6とする。
由来抽出部51は、対象情報を取得する。例えば、由来抽出部51は、入力装置1から対象情報を取得してもよい。あるいは、由来抽出部51は、予め記憶装置4に記憶されている対象情報を用いてもよい。そして、由来抽出部51は、対象情報を基に、由来を抽出する(ステップS101)。
由来抽出部51は、抽出した由来を、影響範囲探査部71に送信する。なお、由来抽出部51は、抽出した由来を、記憶装置4に保存してもよい。この場合、影響範囲探査部71は、記憶装置4から、由来を取得する。
図10は、由来抽出部51における動作の一例を示すフローチャートである。
由来抽出部51は、対象情報から、プログラムを一つ選択する(ステップS111)。
そして、由来抽出部51は、選択したプログラムに関連するデータにおいて由来となるデータがあるか否かを判定する(ステップS112)。詳細には、由来抽出部51は、選択したプログラムの入力となっているデータを基に作成される又は更新されるデータがあるか否かを判定する。作成又は更新されるデータは、選択されたプログラムの入力となっているデータを由来とするデータである。なお、入力となっているデータは、由来となるデータである。
例えば、プログラムCの場合について説明する。由来抽出部51は、構成情報とリンク情報とを基に、プログラムCがデータa1を入力とすること、及び、出力であるデータc1が作成又は更新されることが分かる。
由来とするデータがある場合(ステップS112でYes)、由来抽出部51は、由来として、上記の「由来とするデータ」と、「由来となるデータ」とを抽出する。このデータの組合せが由来となる。つまり、由来抽出部51は、由来を抽出する(ステップS113)。そして、由来抽出部51は、抽出した由来を用いて、由来情報を更新又は作成する。
例えば、上記の場合、データa1が、データc1の由来となるデータである。また、データc1が、データa1を由来とするデータです。由来抽出部51は、抽出した結果を基に、図7に示されているような由来情報を作成又は更新する。
由来とするデータがない場合(ステップS112でNo)、由来抽出部51は、次の動作に進む。
由来抽出部51は、上記の作業を、全てのプログラムについて繰り返す。
図9を参照した説明に戻る。
順序抽出部52は、対象情報を取得する。例えば、順序抽出部52は、入力装置1から対象情報を取得してもよい。あるいは、順序抽出部52は、予め記憶装置4に記憶されている対象情報を用いてもよい。そして、順序抽出部52は、対象情報を基に、順序を抽出する(S102)。順序抽出部52は、抽出した順序を、影響範囲探査部71に送信する。なお、順序抽出部52は、抽出した順序を、記憶装置4に保存してもよい。この場合、影響範囲探査部71は、記憶装置4から、順序を取得する。
図11は、順序抽出部52における動作の一例を示すフローチャートである。
順序抽出部52は、対象情報からフローを選択する。そして、順序抽出部52は、選択したフローにおけるリンクの順序を抽出する(ステップS121)。例えば、順序抽出部52は、図4に示されているフローを用いて順序を抽出する。
順序抽出部52は、順序を抽出したフローに関連するグループがあるか否かを判定する(ステップS122)。例えば、順序抽出部52は、対象情報に含まれる情報として、各フローに関連するグループに関する情報を取得する。あるいは、順序抽出部52は、予め、グループに関連する情報を保持してもよい。
グループがある場合(ステップS122でYes)、順序抽出部52は、抽出した順序とグループとを関連付ける(ステップS123)。そして、順序抽出部52は、グループに関連付けたリンクの順序を用いて、順序情報を作成又は更新する。
具体的には、順序抽出部52は、例えば、図8に示されているように、リンクの順序とグループ(例えば、G1)とを関連付けた順序情報を作成又は更新する。
グループがない場合(ステップS122でNo)、順序抽出部52は、抽出したリンクの順序及びグループを「無」とする(ステップS124)。例えば、順序抽出部52は、図8の10行目に示されているリンクL10のように、順序「0」とグループ「G0」とを設定する。
順序抽出部52は、全てのフローに関して上記動作を繰り返す。
図9を参照した説明に戻る。
なお、情報処理装置3において、由来抽出部51及び順序抽出部52の動作の順番は、制限されない。由来抽出部51及び順序抽出部52は、どちらが先に動作してもよい。あるいは、由来抽出部51及び順序抽出部52は、一部又は全ての動作を並列に実行してもよい。
そして、影響範囲探査部71は、対象情報と、由来と、順序とを基に、プログラムの影響範囲を特定する。
次に、図面を参照して、影響範囲探査部71の動作を詳細に説明する。なお、以下の説明において、動作の理解の助けとして、適宜、図3、図4、図5、図6、図7、及び、図8に示されている情報を参照して説明する。
図12は、影響範囲探査部71における動作の概要の一例を示すフローチャートである。
まず、影響範囲探査部71は、直接的な影響範囲を探査する(ステップS201)。
次に、影響範囲探査部71は、影響が伝播する範囲を探査する(ステップS202)。
図面を参照して、それぞれの動作を詳細に説明する。
まず、図面を参照して、直接的な影響範囲を探査して特定する動作である直接影響探査の動作について説明する。
図13は、影響範囲探査部71における直接影響探査の動作の一例を示すフローチャートである。
影響範囲探査部71は、所定のプログラム(以下、「第1のプログラム」とする)の影響範囲を特定する。そのため、影響範囲探査部71は、まず、第1のプログラムが作成又は更新するデータ(以下、「第1のデータ」と呼ぶ)を特定する(ステップS211)。なお、以下、一例として、第1のプログラムを、図3の「プログラムB」として説明する。
ここで特定されたデータ(第1のデータ)は、第1のプログラムから直接的に影響を受けるデータである。そのため、影響範囲探査部71は、第1のデータを、影響範囲と特定する。
図14は、ステップS211の動作の一例を示す図である。図14に示すように、影響範囲探査部71は、構成情報を用いて、プログラムB(第1のプログラム)の出リンクがリンクL2であることを特定する。以下、第1のプログラムの出リンク、つまり、第1のデータの入リンクを「第1のリンク」と呼ぶ。そして、影響範囲探査部71は、構成情報とリンク情報とを用いて、リンクL2(第1のリンク)の終点であるI3(データa1)を、第1のデータと特定する。すなわち、影響範囲探査部71は、第1のプログラムであるプログラムBが作成又は更新する第1のデータとして、データa1を特定する。
そして、影響範囲探査部71は、特定した全ての第1のデータに対して、以下で説明する動作を繰り返す。
まず、影響範囲探査部71は、第1のデータから一つを選択し、選択した第1のデータと第1のプログラムとのリンク(第1のリンク)の順序を特定する(ステップS212)。以下、第1のプログラムと第1のデータとのリンク(第1のリンク)の順序を、「第1の順序」と呼ぶ。
図15は、ステップS212の動作の一例を示す図である。図15に示されているように、影響範囲探査部71は、構成情報とリンク情報と順序情報とを用いて、プログラムB(第1のプログラム)とデータa1(第1のデータ)とのリンクL2(第1のリンク)の順序(第1の順序)として、「6」を特定する。
次に、影響範囲探査部71は、選択した第1のデータを入力とするプログラムを特定する(ステップS213)。より詳細には、影響範囲探査部71は、第1のデータを出リンクとするリンク(以下、「第2のリンク」と呼ぶ)を特定し、特定した第2のリンクを入リンクとするプログラムを特定する。
図16は、ステップS213の動作の一例を示す図である。図16の示されているように、影響範囲探査部71は、構成情報とリンク情報とを用いて、データa1(第1のデータ)を入リンクとするリンクとして、リンクL3及びL4(第2のリンク)を特定する。そして、影響範囲探査部71は、リンクL3及びL4(第2のリンク)と入リンクとする、つまり、データa1(第1のデータ)を入力とするプログラムとして、プログラムC及びプログラムDを特定する。
そして、影響範囲探査部71は、第1のデータを入力とする全てのプログラムに対して、以下で説明する「プログラム判定」の動作を繰り返す。
影響範囲探査部71は、第1のデータを入力とするプログラムから、一つのプログラムを選択する。そして、影響範囲探査部71は、選択したプログラムと第1のデータとのリンク(第2のリンク)の順序(以下、「第2の順序」と呼ぶ)を特定する。そして、影響範囲探査部71は、第2の順序が第1の順序の後ろであるか否かを判定する(ステップS214)。
図17は、ステップS214の動作の一例を示す図である。図17に示されているように、影響範囲探査部71は、構成情報と、リンク情報と、順序情報とを用いて、「リンクL3の順序が「2」であること」及び「リンクL4の順序が「7」であること」を特定する。
なお、上記のとおり、リンクL2(第1のリンク)の順序(第1の順序)は、「6」である。そのため、リンクL3の順序(第2の順序)は、第1の順序より前である。一方、リンクL4の順序(第2の順序)は、第1の順序より後ろである。
第2の順序が第1の順序より後ろとなるリンクを入リンクとするプログラムは、第1のプログラムから影響を受けるプログラムである。
そこで、第2の順序が第1の順序の後ろの場合(ステップS214でYes)、影響範囲探査部71は、そのプログラム(以下、「第2のプログラム」とする)を、影響範囲として、特定する(ステップS215)。
第2の順序が前の場合(ステップS214でYes)、影響範囲探査部71は、そのプログラムを特定しないで、次の動作に進む。
例えば、図17の場合、プログラムCは、第2の順序が第1の順序の前のため、特定されない。一方、プログラムDは、第2の順序が第1の順序の後のため、影響範囲として特定される。つまり、プログラムDは、第2のプログラムの一例である。
このように、影響範囲探査部71は、ステップS213において特定した全てのプログラムに対して上記のプログラム判定の動作を繰り返し、影響を受けるプログラム(第2のプログラム)を特定する。
さらに、影響範囲探査部71は、ステップS211において特定した全てのデータ(第1のデータ)に対して、上記の動作を繰り返す。
その結果として、影響範囲探査部71は、第1のプログラムから直接的に影響を受ける、第1のデータと、第2のプログラムとを特定する。
このように、影響範囲探査部71は、影響範囲として、第1のデータと第2のプログラムとを特定する。
次に、図面を参照して、影響が伝播する範囲を探査して特定する動作である影響伝播範囲探査の動作について説明する。
図18は、影響範囲探査部71における影響伝播範囲探査の動作の一例を示すフローチャートである。
影響範囲探査部71は、第1のプログラムが作成又は更新する第1のデータを特定する(ステップS221)。ステップS221の動作は、図13のステップS211と同じため、詳細な説明を省略する。なお、影響範囲探査部71は、ステップS211の動作において第1のデータを保持してもよい。この場合、影響範囲探査部71は、ステップS221を省略してもよい。
そして、影響範囲探査部71は、特定された全ての第1のデータに対して、影響伝播範囲探査の動作を繰り返す。
影響範囲探査部71は、第1のデータから一つを選択し、選択した第1のデータを由来とするデータを特定する(ステップS222)。
図19は、ステップS222の動作の一例を示す図である。図19に示されているように、影響範囲探査部71は、構成情報と由来情報とを用いて、データa1(第1のデータ)を由来とするデータとして、データc1及びデータd1を特定する。
さらに、影響範囲探査部71は、第1のプログラムと第1のデータとの第1のリンクの第1の順序を特定する。この動作は、図13のステップS212の同じため、詳細な説明を省略する。上記のとおり、プログラムB(第1のプログラム)とデータa1(第1のデータ)とのリンクL2(第1のリンク)の順序(第1の順序)は、「6」である。なお、影響範囲探査部71は、ステップS212の動作において第1の順序を保持してもよい。この場合、影響範囲探査部71は、ステップS222を省略してもよい。
影響範囲探査部71は、ステップS222において特定したデータから対象情報におけるプログラムとデータとのリンクを第1のデータの方向にたどり、第1のデータを入力とするプログラムを特定する(ステップS223)。
図20は、ステップS223の動作の一例を示す図である。図20に示されているように、影響範囲探査部71は、構成情報とリンク情報とを基に、データc1及びデータd1からデータとプログラムとをたどり、第1のデータを入力とするプログラムとして、プログラムC及びプログラムDを特定する。
なお、ステップS223において特定されるプログラムは、ステップS213において特定されたプログラムの中で、第1のデータに由来するデータを出力とするプログラムである。そのため、影響範囲探査部71は、ステップS213において特定したプログラムを保持し、保持したプログラムの中から、第1のデータに由来するデータを出力とするプログラムを選択してもよい。
そして、影響範囲探査部71は、ステップS223において特定した全てのプログラムに対して、「プログラム判定」の動作を繰り返す。
影響範囲探査部71は、ステップS223において特定したプログラムから一つのプログラムを選択する。そして、影響範囲探査部71は、選択したプログラムと第1のデータとのリンク(以下、「第3のリンク」と呼ぶ)の順序(以下、「第3の順序」と呼ぶ)が、第1の順序より後か否かを判定する(ステップS224)。なお、この場合のリンクは、選択したプログラムの入リンクである。
図21は、ステップS224の動作の一例を示す図である。なお、ステップS223において特定されたプログラムは、プログラムC及びプログラムDである。
プログラムCの入リンクL3(第3のリンク)の順序(第3の順序)は、「2」である。この順序は、第1の順序「6」より前である。
一方、プログラムDの入リンクL4(第3のリンク)の順序(第3の順序)は、「7」である。この順序は、第1の順序「6」より後である。
第3の順序が第1の順序より前の場合(ステップS224でNo)、そのプログラムは、第1のプログラムの影響を受けない。そのため、影響範囲探査部71は、以下で説明する動作を実行せずに、次のプログラムの動作に進む。例えば、影響範囲探査部71は、第3の順序「2」が第1の順序「6」より前であるプログラムCを、影響を受けないプログラムと特定する。
第3の順序が第1の順序の後ろの場合(ステップS224でYes)、そのプログラムは、第1のプログラムの影響を受ける。そのため、影響範囲探査部71は、以下で説明するように、さらにプログラムの影響範囲を特定する。例えば、影響範囲探査部71は、第3の順序「7」が第1の順序「6」より後であるプログラムDを、影響を受けると特定する。そして、影響範囲探査部71は、プログラムDの影響範囲を特定する。
以下、影響を受けると特定されたプログラムを、「第3のプログラム」と呼ぶ。図21の場合、プログラムDが、第3のプログラムの例である。
すなわち、第3のプログラムは、第1のデータを入力とする。さらに、第3のプログラムは、対象情報(例えば、図3のようにプログラムとデータとの構造の情報)において第1のデータを由来とするデータまでたどることができる。つまり、第3のプログラムは、第1のデータを由来とするデータを出力とする。そして、第3のプログラムは、第1のデータの関係(リンク)の順序(第3の順序)が第1の順序の後である。
以下、ステップS223において、第3のプログラムをたどるために用いられたデータで、第3のプログラムの出力となるデータを「第2のデータ」と呼ぶ。
つまり、第2のデータは、第3のプログラムの出力であり、第1のデータを由来とするデータである。
図5において、第3のプログラムの一例が、プログラムDであり、第2のデータの一例が、データd1である。
なお、ステップS223で特定されたプログラムは、ステップ215において特定されたプログラムの中で、第1のデータを由来とするデータを出力とするプログラムである。そのため、影響範囲探査部71は、ステップS215の結果となる第2のプログラムを保持し、保持した第2のプログラムの中から第1のデータを由来とするデータを出力とするプログラムを選択してもよい。
つまり、第3のプログラムは、第1のデータを入力として、第1のデータを由来とする第2のデータを出力とし、第1のデータとの第3のリンクの第3の順序が第1の順序より後であるプログラムである。
影響範囲探査部71は、第3のプログラムと、第2のデータとを、影響範囲と特定する。
例えば、上記の場合、影響範囲探査部71は、プログラムD(第3のプログラム)とデータd1(第2のデータ)とを、影響範囲と特定する。
このように、影響範囲探査部71は、由来と順序とを基に、第1のプログラムの影響を受ける第3のプログラムと第2のデータとを特定する。
なお、上記のとおり、第3のプログラムは、第2のプログラムの中で、第1のデータを由来とする第2のデータを出力とするプログラムである。そのため、影響範囲探査部71は、第2のプログラムが出力するデータの中で、第1のデータを由来とするデータを、第2のデータと特定してもよい。
さらに、影響範囲探査部71は、第3のプログラムの影響範囲を特定する(ステップS225)。この動作は、影響範囲探査部71が、ここまで説明した第1のプログラムの影響を受ける第3のプログラムを特定する動作と同様である。つまり、影響範囲探査部71は、上記の動作において、第1のプログラムを第3のプログラムに置き換えて、影響を受けるプログラムとデータとを特定すればよい。
以下の説明のため、第3のプログラムと第2のデータとのリンクを「第4のリンク」、第4のリンクの順序を「第4の順序」と呼ぶ。そして、影響範囲探査部71は、第2のデータを入力とし、第2のデータを由来とするデータ(以下、「第3のデータ」と呼ぶ)を出力とするプログラムを特定する。さらに、影響範囲探査部71は、ここで特定したプログラムと第2のデータとのリンク(以下、「第4のリンク」と呼ぶ)の順序(以下、「第4の順序」と呼ぶ)が第3の順序の後であるプログラム(以下、「第4のプログラム」と呼ぶ)と特定する。そして、影響範囲探査部71は、第4のプログラムと第3のデータとを影響範囲と特定する。
さらに、影響範囲探査部71は、第3のプログラムに基づく影響範囲の探査を終了すると、さらなら伝播範囲について影響範囲を特定する。つまり、影響範囲探査部71は、第3のプログラムを用いて特定した影響を受ける範囲に含まれるプログラムを、第1のプログラムと置き換えた動作を実行して、そのプログラムの影響範囲と特定する。影響範囲探査部71は、影響を受けるプログラムがなくなるまで、同様の動作を繰り返す。この動作を基に、影響範囲探査部71は、対象情報の構造及び深さにかかわらずに、影響を受ける範囲を特定することができる。
以下では、具体的なデータを用いて第4のプログラムを特定する動作を説明する。
影響範囲探査部71は、第3のプログラムとして、プログラムDを選択したとする。
この場合、影響範囲探査部71は、選択した第3のプログラム(プログラムD)と第2のデータ(データd1)との第4のリンク(L6)の第4の順序を特定する。
図22は、第4の順序を特定する動作の一例を示す図である。図22に示されているように、影響範囲探査部71は、構成情報と順序情報とを用いて、プログラムD(第3のプログラム)とデータd1(第2のデータ)との関係であるリンクL6(第4のリンク)の順序(第4の順序)として、「8」を特定する。
次に、影響範囲探査部71は、データd1(第2のデータ)を由来とする第3のデータを特定する。
例えば、影響範囲探査部71は、図7の由来情報を用いてデータd1(第2のデータ)を由来とする第3のデータとして、データf2を特定する。
そして、影響範囲探査部71は、データf2(第3のデータ)からデータとプログラムとをたどり、データd1(第2のデータ)を入力とするプログラムを特定する。
図23は、上記のプログラムを特定する動作の一例を示す図である。図23に示されているように、影響範囲探査部71は、構成情報と、リンク情報とを用いて、データf2(第3のデータ)からデータとプログラムとをたどり、プログラムF(第4のプログラム)を特定する。
そして、影響範囲探査部71は、特定したプログラムと第2のデータとのリンク(以下、「第5のリンク」と呼ぶ)の順序(以下、「第5の順序」と呼ぶ)を特定する。
図24は、第5の順序を特定する動作の一例を示す図である。図24に示されているように、影響範囲探査部71は、プログラムFとデータd1(第2のデータ)とのリンクL9(第5のリンク)の順序(第5の順序)として、「10」を特定する。
影響範囲探査部71は、第5の順序が第4の順序の後ろか否かを判定する。
第5の順序が第4の順序の前の場合、そのプログラムとデータの関係は、第3のプログラムの影響を受けない。
しかし、今の場合、第5の順序「10」は、第4の順序「8」の後である。そのため、プログラムFは、第3のプログラム(プログラムD)の影響、つまり第1のプログラム(プログラムB)の影響を受ける。つまり、プログラムFは、第4のプログラムである。
そこで、影響範囲探査部71は、プログラムF(第4のプログラム)とデータf2(第3のデータ)とを、影響範囲と特定する。
影響範囲探査部71は、上記と同様の動作を繰り返して、対象情報における影響範囲を特定する。
次に、図面を参照して、第1の実施形態の結果について説明する。以下、図3に示されている対象情報における影響範囲を用いて説明する。
図25は、第1の実施形態に係る情報処理装置3の特定結果の一例を示す図である。図25において、斜線を付した範囲が、情報処理装置3が影響範囲として特定した構成である。図25に示されているように、プログラムBを更新した場合、データa1と、プログラムDと、データd1と、プログラムFと、データf2とが、影響範囲として特定される。情報処理装置3は、プログラムBの動作より前に動作するプログラムCの出力であるデータc1、及び、データd1に影響されないデータd2などを、影響範囲として、特定しない。
次に、第1に実施形態の情報処理装置3の特定の結果(図25)との比較として、一般的な装置を用いた場合の影響範囲の例を示す。
図26は、順序及び由来を考慮しない場合の影響範囲を示す図である。図26に示されている影響範囲は、プログラムBより前に実行されるプログラムCの出力であるデータc1及びデータa1の影響を受けないデータd2などを含む。
図27は、順序を考慮しない場合の影響範囲を示す図である。図27に示されている影響範囲は、順序としてデータd1より前に処理されるデータc1などを含んでいる。
[効果の説明]
次に、第1の実施形態に係る情報処理装置3の効果について説明する。
情報処理装置3は、依存関係のある情報を抽出するとの効果を奏する。
その理由は、次のとおりである。
由来抽出部51が、データの生成関係に関する情報である由来を抽出する。さらに、順序抽出部52が、データの処理の順序を抽出する。そして、影響範囲探査部71が、由来と、順序とを基に、対象情報における第1のプログラムの影響範囲を特定する。そのため、例えば、影響範囲探査部71は、第1のプログラムの影響を受け、かつ、第1のプログラムの動作後に動作する範囲を影響範囲として特定できる。
例えば、情報処理装置3は、アプリケーション改修時に改修されるアプリケーションが更新するデータの伝播を考慮して、ソフトウェア資産全体における影響範囲を特定できる。つまり、情報処理装置3は、依存関係のあるデータを考慮して、ソフトウェア資産全体の影響範囲の絞り込むことができる。
さらに、影響範囲探査部71は、直接的に影響を受ける範囲に加え、影響が伝播する範囲と特定する。そのため、情報処理装置3は、対象情報の構造にかかわらず、影響範囲を特定できる。
[ハードウェア構成]
以上の説明した情報処理装置3は、次のように構成される。
例えば、情報処理装置3の各構成部は、ハードウェア回路で構成されてもよい。
また、情報処理装置3において、各構成部は、ネットワークを介して接続した複数の装置を用いて、構成されてもよい。
また、情報処理装置3において、複数の構成部は、1つのハードウェアで構成されてもよい。
また、情報処理装置3は、CPU(Central Processing Unit)と、ROM(Read Only Memory)と、RAM(Random Access Memory)とを含むコンピュータ装置として実現されてもよい。情報処理装置3は、上記構成に加え、さらに、入出力接続回路(IOC:Input / Output Circuit)と、ネットワークインターフェース回路(NIC:Network Interface Circuit)とを含むコンピュータ装置として実現されてもよい。
図28は、本変形例に係る情報処理装置600の構成の一例を示すブロック図である。
情報処理装置600は、CPU610と、ROM620と、RAM630と、内部記憶装置640と、IOC650と、NIC680とを含み、コンピュータ装置を構成している。
CPU610は、ROM620からプログラムを読み込む。そして、CPU610は、読み込んだプログラムに基づいて、RAM630と、内部記憶装置640と、IOC650と、NIC680とを制御する。そして、CPU610を含むコンピュータは、これらの構成を制御し、図1に示されている、由来抽出部51と、順序抽出部52と、影響範囲探査部71としての各機能を実現する。
CPU610は、各機能を実現する際に、RAM630又は内部記憶装置640を、プログラムの一時記憶媒体として使用してもよい。
また、CPU610は、コンピュータで読み取り可能にプログラムを記憶した記憶媒体700が含むプログラムを、図示しない記憶媒体読み取り装置を用いて読み込んでもよい。あるいは、CPU610は、NIC680を介して、図示しない外部の装置からプログラムを受け取り、RAM630に保存して、保存したプログラムを基に動作してもよい。
ROM620は、CPU610が実行するプログラム及び固定的なデータを記憶する。ROM620は、例えば、P−ROM(Programmable-ROM)又はフラッシュROMである。
RAM630は、CPU610が実行するプログラム及びデータを一時的に記憶する。RAM630は、例えば、D−RAM(Dynamic-RAM)である。
内部記憶装置640は、情報処理装置600が長期的に保存するデータ及びプログラムを記憶する。内部記憶装置640は、図2に示されている記憶装置4として動作してもよい。つまり、内部記憶装置640は、図5ないし図7に示されている情報の一部又は全てを記憶してもよい。また、内部記憶装置640は、CPU610の一時記憶装置として動作してもよい。内部記憶装置640は、例えば、ハードディスク装置、光磁気ディスク装置、SSD(Solid State Drive)又はディスクアレイ装置である。
ここで、ROM620と内部記憶装置640は、不揮発性(non-transitory)の記憶媒体である。一方、RAM630は、揮発性(transitory)の記憶媒体である。そして、CPU610は、ROM620、内部記憶装置640、又は、RAM630に記憶されているプログラムを基に動作可能である。つまり、CPU610は、不揮発性記憶媒体又は揮発性記憶媒体を用いて動作可能である。
IOC650は、CPU610と、入力機器660及び表示機器670とのデータを仲介する。IOC650は、例えば、IOインターフェースカード又はUSB(Universal Serial Bus)カードである。さらに、IOC650は、USBのような有線に限らず、無線を用いてもよい。
入力機器660は、情報処理装置600の操作者からの入力指示を受け取る機器である。入力機器660は、図2に示されている入力装置1として動作してもよい。入力機器660は、例えば、キーボード、マウス又はタッチパネルである。
表示機器670は、情報処理装置600の操作者に情報を表示する機器である。表示機器670は、図2に示されている出力装置2として動作してもよい。表示機器670は、例えば、液晶ディスプレイである。
NIC680は、ネットワークを介した図示しない外部の装置とのデータのやり取りを中継する。NIC680は、図2に示されている入力装置1、出力装置2、及び/又は、記憶装置4との情報を中継してもよい。NIC680は、例えば、LAN(Local Area Network)カードである。さらに、NIC680は、有線に限らず、無線を用いてもよい。
このように構成された情報処理装置600は、情報処理装置3と同様の効果を得ることができる。
その理由は、情報処理装置600のCPU610が、プログラムに基づいて情報処理装置3と同様の機能を実現できるためである。
<<変形例>>
次に、第1の実施形態の変形例でもある各実施形態を説明する。なお、各実施形態に係る情報処理装置3の構成は、第1の実施形態と同様のため、構成の説明を省略する。また、第1の実施形態の同様の動作の説明を省略する。
<第2の実施形態>
情報処理装置3は、複数の階層(レベル)を含む情報を処理してもよい。つまり、対象情報は、複数のレベルを含む情報でもよい。
例えば、情報処理装置3は、複数のプログラムのレベル、詳細化のレベル、及び/又は具体化のレベルを含む対象情報における影響範囲を特定してもよい。
ここで、プログラムのレベルとは、プログラムの構造における上位と下位とを示す。例えば、ある処理を実行するメインプログラムが、二つのサブルーチンを利用する場合、サブルーチンは、メインプログラムに対して下位のレベルのプログラムである。
具体化のレベルとは、ITシステムにおける具体化の程度(具体度)を示す。例えば、データの仕様は、プログラムにおけるデータより具体化のレベルが低い。なお、具体度の反対が、抽象度である。
詳細化のレベルとは、ITシステムにおける詳細化の程度(詳細度)を示す。例えば、上記の二つのサブルーチンを含むメインプログラムの場合、サブルーチンは、メインプログラムより詳細化のレベルが高い。
図29は、複数のレベルを含む対象情報の一例を示す図である。図29は、図3におけるプログラムFの周りの一部を取り出して示した図である。図29において4つに区分された各領域が、レベルに相当する。
図29の右上の領域が、図3に対応する。図29において、左側が、詳細化の程度が低い。例えば、図29に左上の領域の「マスタd1エンティティ」は、右上の領域の「データd1」より詳細化の程度が低い。また、図29において、下側が、具体化の程度が低い。例えば、右下の領域の「データ1レイアウト仕様」は、右上の領域の「データd1」より具体化の程度が低い。
[効果の説明]
情報処理装置3の影響範囲探査部71は、第1の実施形態と同様の動作を用いてあるレベルの影響範囲を特定し、特定したレベルの影響範囲を用いて、対応する各レベルの影響範囲を特定すればよい。例えば、情報処理装置3は、第1の実施形態の同様の動作を用いて、右上のレベルでの影響範囲を特定する。そして、情報処理装置3は、特定した影響範囲を用いて、その他のレベルにおける影響範囲を特定すればよい。
第2の実施形態は、第1の実施形態の効果に加え、複数のレベルにおける影響範囲を特定するとの効果を奏する。
その理由は、第2の実施形態に係る情報処理装置3が、第1の実施形態と同様の動作に基づいて特定した影響範囲を用いて、関連する他のレベルにおける影響範囲を特定するためである。
このように、第2の実施形態に係る情報処理装置3は、一つのレベルに限らず、複数のレベルを含むソフトウェア資産全体の影響範囲の絞り込むことができる。
<第3の実施形態>
また、情報処理装置3は、影響範囲の特定においてグラフを利用してもよい。さらに、情報処理装置3は、リンクなどに重みを用いてもよい。例えば、情報処理装置3は、レベルの移行に関するリンクに、重みを用いてもよい。
図30は、重みの一例を示す図である。図30は、一例として、テーブル形式を用いて重みを示した図である。ただし、重みの形式は、テーブル形式に限定されない。
図30に示されている重みは、リンクの属性(同格、下位、関連、詳細化、及び具体化)に対して、順方向及び非順方向の重みである。例えば、属性「下位」の順方向は、より下位となる方向のリンクに対する重みである。なお、このような重みは、「距離」と呼ばれる場合もある。
図30に示されている重みは、既に最も詳細度及び具体度が高いレベルの影響範囲が特定されている場合の重みの一例である。つまり、図30の重みは、影響範囲が特定されたレベルから、より詳細化する方向(詳細化の順方向)及びより具体化する方向(具体化の順方向)には移動できない場合の重みである。また、図30は、プログラムのレベルにおける下位には、移動できない場合の重みである。そのため、図30において、下位、詳細化、及び具体化の順方向の重み(距離)は、無限「∞」(距離が無限大)となっている。つまり、図30において無限は、移動できないリンクである。
さらに、図30の重みにおいて、プログラムとデータとの関係を示す「関連」は、移動しないリンクとする。そのため、「関連」の順方向及び非順方向とも、重みが無限となっている。
また、同格は、重みが「0」、つまり、移動距離が「0」である。つまり、同格における移動は、リンクの数にかかわらず、同様に移動できる。
次に、情報処理装置3の動作を説明する。
影響範囲探査部71は、リンクの重みを用いて、処理対象の情報におけるレベルにまたがった関係をグラフ化、つまり、処理対象のグラフを作成する。
図31は、図29の情報を基に作成した有効グラフの一例を示す図である。図31において、重みが無限大となるリンクは、省略している。
影響範囲探査部71は、作成したグラフを用いて、影響範囲を特定する。例えば、プログラムFの影響範囲は、図31において太線及び斜線を付した範囲となる。
なお、影響範囲探査部71は、図31のように有効グラフを用いることで、影響範囲の特定を、最短経路問題に置き換えることができる。そのため、影響範囲探査部71は、影響範囲の特定として、ベルマンフォード法又はワーシャルフロイド法といった一般的な最短経路を求める方式を用いて影響範囲を特定できる。
このように、影響範囲探査部71は、第1の実施形態の同様の動作を用いてあるレベルの影響範囲を特定し、さらに、上記の最短経路を求める方法を用いて、複数のレベルをまたいだ影響範囲を特定できる。
図32は、図29において、プログラムFの影響範囲を示す図である。例えば、プログラムFの影響範囲は、図32において太線及び斜線を付した範囲となる。
[効果の説明]
このように、第3の実施形態に係る情報処理装置3は、第1の実施形態及び第2の実施形態の効果に加え、容易に影響範囲の特定できるとの効果を奏する。
その理由は、第3の実施形態に係る情報処理装置3が、重みを基に、レベルをまたいだグラフを作成し、作成したグラフを用いて、影響範囲を特定するためである。
<その他の実施形態>
由来抽出部51は、対象となる情報におけるデータレイアウト(例えば、属性及びデータ長)を用いて、関連するデータを推定し、推定を基にデータの由来を抽出してもよい。
あるいは、由来抽出部51は、所定の辞書又は自然言語解析を用いて、関連するデータを推定し、推定を基にデータの由来を抽出してもよい。
情報処理装置3は、上記の動作を基に、対象となるデータに欠損が含まれている場合でも、影響範囲を絞り込むことができる。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成及び詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。