(57)【要約】      （修正有）【課題】ソフトウェア改修時の影響範囲分析において利用するために、データとそれを処理するプログラムに関する依存関係を抽出する。【解決手段】情報処理装置３は、データとデータを処理するプログラムとを含む対象情報におけるデータの生成関係に関する情報である「由来」を抽出する由来抽出手段５１と、データとプログラムとの関係である「リンク」の順序を抽出する順序抽出手段５２と、由来と順序とを基に第１のプログラムの影響範囲を特定する影響範囲探査手段７１とを含む。【選択図】図１
2018045508.tif 000002
【特許請求の範囲】
【請求項１】
データと前記データを処理するプログラムとを含む対象情報におけるデータの生成関係に関する情報である由来を抽出する由来抽出手段と、
前記データと前記プログラムとの関係であるリンクの順序を抽出する順序抽出手段と、
前記由来と前記順序とを基に第１のプログラムの影響範囲を特定する影響範囲探査手段と
を含む情報処理装置。
【請求項２】
前記影響範囲探査手段は、
第１のプログラムと前記第１のプログラムが作成又は更新する第１のデータとの第１のリンクの第１の順序と、前記第１のデータを由来とする前記データとを基に前記影響範囲を特定する
請求項１に記載の情報処理装置。
【請求項３】
前記影響範囲探査手段が、
前記第１のデータを入力とするプログラムの中で、前記第１のデータとの第２のリンクの第２の順序が前記第１の順序より後ろである第２のプログラムを前記影響範囲と特定する
請求項２に記載の情報処理装置。
【請求項４】
前記影響範囲探査手段が、
前記第１のデータを入力とし、前記第１のデータを由来とする第２のデータを出力し、前記第１のデータとの第３のリンクの第３の順序が前記第１の順序の後である第３のプログラムと、前記第２のデータとを、前記影響範囲と特定する
請求項３に記載の情報処理装置。
【請求項５】
前記影響範囲探査手段が、
前記第３のプログラムと前記第２のデータとの第４のリンクの第４の順序より、前記第２のデータを入力とし、前記第２のデータを由来とする第３のデータを出力し、前記第２のデータとの第５のリンクの第５の順序が前記第４の順序の後である第４のプログラムと、前記第３のデータとを、前記影響範囲と特定する
請求項４に記載の情報処理装置。
【請求項６】
前記影響範囲が、複数のレベルを含む
請求項１ないし５のいずれか１項に記載の情報処理装置。
【請求項７】
前記影響範囲探査手段が、
複数の前記レベルに対応した重みを用いる
請求項６に記載の情報処理装置。
【請求項８】
データと前記データを処理するプログラムとを含む対象情報におけるデータの生成関係に関する情報である由来を抽出し、
前記データと前記プログラムとの関係であるリンクの順序を抽出し、
前記由来と前記順序とを基に第１のプログラムの影響範囲を特定する
情報処理方法。
【請求項９】
データと前記データを処理するプログラムとを含む対象情報におけるデータの生成関係に関する情報である由来を抽出する処理と、
前記データと前記プログラムとの関係であるリンクの順序を抽出する処理と、
前記由来と前記順序とを基に第１のプログラムの影響範囲を特定する処理と
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報の処理に関し、特に、システムに関する情報を処理する情報処理装置、情報処理方法、及び、プログラムに関する。
【背景技術】
【０００２】
情報技術（ＩＴ（Information Technology））システムにおいて、ハードウェアの老朽化、ＩＴ技術及びＩＴインフラの進化、並びに、利用しているソフトウェアライセンスに対するベンダサポートの終了などが発生する。これらの要因に基づいて、ＩＴシステムは、導入からある程度の期間が経過すると、改修又は再構築（以下、まとめて「システムリニューアル」と呼ぶ）が、必要となる。
【０００３】
システムリニューアルに当たり、既存のＩＴシステムを廃止して、新規のＩＴシステムを構築し直すケースがある。しかし、ＩＴシステムの新規構築は、期間及び費用が大きくなる。そのため、ＩＴシステムの新規構築に伴うビジネス的な新たな付加価値又は効果が高くない場合、ＩＴシステムの新規構築は、期間及び開発コストなどを圧縮し、企業経営へのインパクトを小さくするため、既存のＩＴシステムを流用及び再利用する必要がある。
具体的には、プログラムの業務処理ロジック及びアルゴリズムを維持したまま、ＩＴシステムにおけるハードウェア、プログラミング言語、ＩＴ技術、又はＩＴインフラなどを、新しいものに移行すること、及び／又は、改造することが行われている。
【０００４】
このように、企業が長期に渡りＩＴシステムを運用及び維持する中で、ＩＴシステムは、企業活動の目的に合わせて拡張及び改造を積み重ねている。その結果、ＩＴシステムには、新旧の様々なソフトウェア、ハードウェア、及び、ＩＴ技術が混在し、それらが複雑に絡み合った状態となっている。そのため、ＩＴシステムにおいて、ソフトウェア資産全体の把握が、困難となっている場合がある。つまり、ＩＴシステムにおいて、システムの拡張及び改造が非常に難しいという問題が、発生していた。
【０００５】
一般的に市販されている開発支援ツールとしては、ソースとソースとの間の呼出し関係及びデータベースのテーブル間の関係を分析する開発支援ツールがある。しかし、一般的に市販されている開発支援ツールは、種類の異なる情報（例えば、モデル）にまたがった関係を抽出しない。
【０００６】
特に、大規模なソフトウェアでは、ソフトウェア、ハードウェア、及び、ＩＴ技術のレベル及び種類の異なる膨大な資産が存在している。そのため、これらを正確に関連づけて管理することは、非常に困難であった。
【０００７】
そこで、上記の問題点を解決する方法が提案されている（例えば、特許文献１ないし４を参照）。
【０００８】
特許文献１ないし４に記載の発明は、種類間、レベル間、又は、モデル間にまたがった情報を関連付けることができる。
【０００９】
特許文献１に記載の発明は、ソフトウェアの改造において、実体間の依存関係を検出し、検出した依存関係を表示する。
【００１０】
特許文献２に記載の発明は、リポジトリを用いてソフトウェア資産を管理する場合に、キーワードを用いて管理する。
【００１１】
特許文献３に記載の発明は、ソフトウェア資産の管理として、情報ノード間の関係リンクの正当性を検査する。
【００１２】
特許文献４に記載の発明は、ソフトウェア資産の管理として、リンクの重みを用いてノード候補を出力する。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開平０４−１３１９３０号公報
【特許文献２】特開２０１５−１０９０１６号公報
【特許文献３】特開２０１４−１４９６８３号公報
【特許文献４】特開２０１４−１４６２４１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかし、例えば、サブシステム間にまたがるバッチ処理において、データを一元管理せずに、あるサブシステムがあるデータを用い、別のサブシステムがそのデータを複製したデータを利用ことがある。つまり、ＩＴシステムは、依存関係のあるデータを処理する場合がある。
【００１５】
ＩＴシステムのソフトウェア改修時の影響範囲分析では、このように依存関係のあるデータの伝播に基づく影響を考慮する必要がある。
【００１６】
しかし、特許文献１ないし４に記載の発明では、関係（リンク）が張られた情報を全てたどるように動作する。そのため、実際には影響しない関係が、影響を受ける候補として抽出される可能性がある。
【００１７】
この問題点をさらに詳細に説明する。
【００１８】
以下の説明として、「データａ」が「プログラムＢ」に入力され、「プログラムＢ」が「データｂ」を出力し、「データｂ」が「プログラムＣ」に入力されるという関係において、「データａ」に改修が入った場合を想定する。この場合、伝播に関して次の二つの場合が想定される。
（１）データｂがデータａに依存するデータの場合、データａの改修の影響は、プログラムＣに伝播する。
（２）一方、データｂがデータａに依存しないデータの場合、データａの改修の影響は、プログラムＣに伝搬しない。
【００１９】
特許文献１ないし４に記載の発明は、データの依存関係を用いていない。そのため、特許文献１ないし４に記載の発明は、（１）だけではなく（２）の場合においても、プログラムＣを影響先として抽出する。
【００２０】
このように、特許文献１ないし４に記載の発明は、依存関係のない情報を抽出するとの問題点があった。
【００２１】
さらに、伝播する情報の入出力には、順序関係がある。しかし、情報間の静的な関連を用いて影響範囲を抽出する場合、影響を受けない情報、つまり依存関係がない情報が抽出されるという問題があった。特許文献１ないし４の記載の発明は、このような問題点を解決できない。
【００２２】
本発明の目的は、上記問題点を解決し、依存関係のある情報を抽出する情報処理装置、情報処理方法、及び、プログラムを提供することにある。
【課題を解決するための手段】
【００２３】
本発明の一形態における情報処理装置は、データとデータを処理するプログラムとを含む対象情報におけるデータの生成関係に関する情報である由来を抽出する由来抽出手段と、データとプログラムとの関係であるリンクの順序を抽出する順序抽出手段と、由来と順序とを基に第１のプログラムの影響範囲を特定する影響範囲探査手段とを含む。
【００２４】
本発明の一形態における情報処理方法は、データとデータを処理するプログラムとを含む対象情報におけるデータの生成関係に関する情報である由来を抽出し、データとプログラムとの関係であるリンクの順序を抽出し、由来と順序とを基に第１のプログラムの影響範囲を特定するする。
【００２５】
本発明の一形態におけるプログラムは、データとデータを処理するプログラムとを含む対象情報におけるデータの生成関係に関する情報である由来を抽出する処理と、データとプログラムとの関係であるリンクの順序を抽出する処理と、由来と順序とを基に第１のプログラムの影響範囲を特定する処理とをコンピュータに実行させる。
【発明の効果】
【００２６】
本発明に基づけば、依存関係のある情報を抽出するとの効果を奏することができる。
【図面の簡単な説明】
【００２７】
【図１】図１は、第１の実施形態に係る情報処理装置の構成の一例を示すブロック図である。
【図２】図２は、第１の実施形態に係る情報処理装置を含む情報処理システムの構成の一例を示すブロック図である。
【図３】図３は、対象情報の一例を示す図である。
【図４】図４は、図３の対象情報におけるジョブのフローの一例を示す図である。
【図５】図５は、図３の対象情報に関する構成情報の一例を示す図である。
【図６】図６は、図５の構成情報におけるリンク情報の一例を示す図である。
【図７】図７は、由来情報の一例を示す図である。
【図８】図８は、順序情報の一例を示す図である。
【図９】図９は、第１の実施形態に係る情報処理装置の動作の一例を示すフローチャートである。
【図１０】図１０は、由来抽出部における動作の一例を示すフローチャートである。
【図１１】図１１は、順序抽出部における動作の一例を示すフローチャートである。
【図１２】図１２は、影響範囲探査部における動作の概要の一例を示すフローチャートである。
【図１３】図１３は、影響範囲探査部における直接影響探査の動作の一例を示すフローチャートである。
【図１４】図１４は、ステップＳ２１１の動作の一例を示す図である。
【図１５】図１５は、ステップＳ２１２の動作の一例を示す図である。
【図１６】図１６は、ステップＳ２１３の動作の一例を示す図である。
【図１７】図１７は、ステップＳ２１４の動作の一例を示す図である。
【図１８】図１８は、影響範囲探査部における影響伝播範囲探査の動作の一例を示すフローチャートである。
【図１９】図１９は、ステップＳ２２２の動作の一例を示す図である。
【図２０】図２０は、ステップＳ２２３の動作の一例を示す図である。
【図２１】図２１は、ステップＳ２２４の動作の一例を示す図である。
【図２２】図２２は、第４の順序を特定する動作の一例を示す図である。
【図２３】図２３は、プログラムを特定する動作の一例を示す図である。
【図２４】図２４は、第５の順序を特定する動作の一例を示す図である。
【図２５】図２５は、第１の実施形態に係る情報処理装置の特定結果の一例を示す図である。
【図２６】図２６は、順序及び由来を考慮しない場合の影響範囲を示す図である。
【図２７】図２７は、順序を考慮しない場合の影響範囲を示す図である。
【図２８】図２８は、変形例に係る情報処理装置の構成の一例を示すブロック図である。
【図２９】図２９は、複数のレベルを含む情報の一例を示す図である。
【図３０】図３０は、重みの一例を示す図である。
【図３１】図３１は、図２９の情報を基に作成した有効グラフの一例を示す図である。
【図３２】図３２は、図２９において、プログラムＦの影響範囲を示す図である。
【発明を実施するための形態】
【００２８】
次に、本発明の実施形態について図面を参照して説明する。
【００２９】
なお、各図面は、本発明の実施形態を説明するためのものである。ただし、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明を、省略する場合がある。また、以下の説明に用いる図面において、本発明の説明に関係しない部分の構成については、記載を省略し、図示しない場合もある。また、図面中の矢印の方向は、一例を示すものであり、ブロック間の信号の向きを限定するものではない。
【００３０】
＜第１の実施形態＞
以下、図面を参照して、第１の実施形態について説明する。
【００３１】
まず、図面を参照して、情報処理装置３を含む情報処理システム１０について説明する。
【００３２】
図２は、第１の実施形態に係る情報処理装置３を含む情報処理システム１０の構成の一例を示すブロック図である。図２に示されている情報処理システム１０は、第１の実施形態に係る情報処理装置３と、入力装置１と、出力装置２と、記憶装置４とを含む。
【００３３】
入力装置１は、情報処理装置３において処理される情報を情報処理装置３に送信する装置である。入力装置１は、例えば、情報処理装置３の利用者が情報処理装置３に送信する情報を入力する装置である。
【００３４】
なお、情報処理装置３において処理の対象となる情報（以下、「対象情報」とも呼ぶ）は、特に制限されない。例えば、対象情報は、ＩＴシステムにおけるデータと、データを処理するプログラムとの構成の情報でもよい。この場合、情報処理装置３は、例えば、具体的な対象情報として、そのソフトウェアのソースファイルを受け取ってもよい。そこで、以下の説明では、対象情報の一例として、プログラムとデータとを含むソフトウェアを用いて説明する。ただし、情報処理装置３が処理する情報は、上記に限定されない。例えば、対象情報は、より上位である、ＩＴシステムの業務と帳票データとに関する情報でもよい。
【００３５】
出力装置２は、情報処理装置３が特定した結果を出力する場合の出力先となる装置である。後ほど説明するように、情報処理装置３は、対象情報における所定の要素の影響範囲を特定する。例えば、情報処理装置３は、対象情報であるＩＴシステムにおけるプログラムの改修における影響範囲を特定する。この場合、出力装置２は、情報処理装置３が特定した影響範囲を表示する。
【００３６】
記憶装置４は、情報処理装置３が後ほど説明する動作において用いる情報を保持する。そのため、記憶装置４は、「リポジトリ」と呼ばれてもよい。
【００３７】
情報処理装置３は、対象情報における所定の要素の影響範囲を特定する。
【００３８】
そのため、情報処理装置３は、入力装置１から対象情報を受信する。ただし、情報処理装置３は、予め保持している対象情報を用いて動作してもよい。このように、情報処理装置３は、対象情報の提供元を限定されない。
【００３９】
そして、情報処理装置３は、特定した影響範囲を出力装置２に送信する。ただし、情報処理装置３が、特定した影響範囲を保持してもよい。あるいは、情報処理装置３が、影響範囲を表示してもよい。このように、情報処理装置３は、影響範囲の出力先を限定されない。
【００４０】
さらに、情報処理装置３は、処理において、適宜、記憶装置４に情報を保存し、記憶装置４から情報を読み出す。ただし、情報処理装置３は、記憶装置４を含んでもよい。なお、情報処理装置３が記憶装置４に情報を保存する動作及び情報を読み出す動作は、一般的なコンピュータと記憶装置とを含むシステムにおける情報の記録及び読み出し動作と同様である。そのため、以下の説明において、情報処理装置３が記憶装置４に情報を保存する動作、及び、記憶装置４から情報を読み出す動作の説明を省略する。
【００４１】
次に、図面を参照して、情報処理装置３について説明する。
【００４２】
［説明の用いる情報］
まず、以下の説明に用いる情報を説明する。
【００４３】
以下の説明では、影響範囲を特定する要素としてプログラムを用いて説明する。ただし、これは、情報処理装置３における影響範囲を特定する対象をプログラムに限定するものではない。例えば、情報処理装置３は、データの影響範囲を特定してもよい。さらに、例えば、情報処理装置３は、プログラム及びデータの両方に関する影響範囲を特定してもよい。さらに、例えば、情報処理装置３は、一つに限らず複数のプログラム及び／又はデータの影響範囲を特定してもよい。さらに、情報処理装置３は、プログラム及びデータとは異なる要素に対する影響範囲を特定してもよい。
【００４４】
図３は、以下の説明に用いる対象情報の一例を示す図である。図３に示されている対象情報は、プログラムとデータとの関係を示すブロック図である。詳細には、次のとおりである。
【００４５】
プログラムＡは、データａ１を作成又は更新する。この関係は、リンクＬ１である。なお、以下、「作成又は更新する」をまとめて、「作成する」と呼ぶ場合もある。
【００４６】
プログラムＢは、データａ１を更新する。この関係は、リンクＬ２である。
【００４７】
プログラムＣは、データａ１を入力とする。この関係は、リンクＬ３である。
【００４８】
プログラムＤは、データａ１を入力とする。この関係は、リンクＬ４である。
【００４９】
プログラムＣは、データａ１を用いて、データｃ１を作成する。この関係は、リンクＬ５である。
【００５０】
プログラムＤは、データａ１を用いて、データｄ１を作成する。この関係は、リンクＬ６である。
【００５１】
さらに、プログラムＤは、データａ１とは関連しないデータｄ２を作成する。この関係は、リンクＬ７である。
【００５２】
プログラムＥは、データｃ１を入力とする。この関係は、リンクＬ８である。
【００５３】
プログラムＦは、データｄ１を入力とする。この関係は、リンクＬ９である。
【００５４】
プログラムＧは、データｄ２を入力とする。この関係は、リンクＬ１０である。
【００５５】
プログラムＥは、データｃ１を用いて、データｅ１を作成する。この関係は、リンクＬ１１である。
【００５６】
プログラムＦは、データｄ１とは関連しないデータｆ１を作成する。この関係は、リンクＬ１２である。
【００５７】
さらに、プログラムＦは、データｄ１を用いて、データｆ２を作成する。この関係は、リンクＬ１３である。
【００５８】
プログラムＧは、データｄ２を用いて動作するが、データを作成及び更新しない。
【００５９】
図３において、リンクに付した「Ｗｒｉｔｅ」及び「Ｒｅａｄ」が、リンクの属性である。「Ｗｒｉｔｅ」属性は、データの作成又は更新に関する属性である。つまり、「Ｗｒｉｔｅ」属性は、データを変更する属性である。「Ｒｅａｄ」属性は、データを用いるための読み出しに関する属性である。つまり、「Ｒｅａｄ」属性は、データを変更しない属性である。
【００６０】
図４は、図３の対象情報におけるジョブのフローの一例を示す図である。なお、プログラムＧは、図４に示されているフローとは異なるフローに含まるプログラムとする。そのため、図４は、プログラムＧを含まない。
【００６１】
ジョブ１は、業務Ａの処理１である。具体的には、ジョブ１は、プログラムＡがデータａ１を作成又は更新する処理である。
【００６２】
ジョブ２は、データａ１の複製の処理である。具体的には、ジョブ２は、プログラムＣがデータａ１の複製としてデータｃ１を作成する処理である。
【００６３】
ジョブ３は、業務Ｅの処理である。具体的には、ジョブ３は、プログラムＥがデータｃ１を用いて、データｅ１を作成する処理である。
【００６４】
ジョブ４は、業務Ａの処理２である。具体的には、ジョブ２は、プログラムＢがデータａ１を更新する処理である。処理１と処理２の区別を容易にするため、図４は、プログラムＢが更新した「データａ１」を「データａ１’」として示している。
【００６５】
ジョブ５は、データａ１（図４ではデータａ１’）の複製の処理と業務Ｄの処理である。具体的には、ジョブ５は、プログラムＤが、プログラムＢが更新したデータａ１（データａ１’）の複製としてデータｄ１を作成する処理と、プログラムＤがデータａ１とは関連しないデータｄ２を作成する処理である。
【００６６】
ジョブ６は、業務Ｆの処理である。具体的には、ジョブ６は、プログラムＦが、データｄ１を用いてデータｆ２を作成し、さらに、データｄ１とは関連しないデータｆ１を作成する処理である。
【００６７】
情報処理装置３は、対象情報として、例えば、図３及び／又は図４に示されている情報を受信する。ただし、図３及び図４は、対象情報の一例を説明するための図である。情報処理装置３が実際に受信する対象情報は、情報処理装置３が処理可能な形式の情報である。
【００６８】
図５は、図３に示されている対象情報におけるプログラムとデータとの関係を表す情報（以下、「構成情報」と呼ぶ）の一例を示す図である。図５は、テーブル形式を用いて構成情報を示している。ただし、情報処理装置３は、図５とは異なる形式を用いてもよい。図５に示されている構成情報は、一例として、構成の番号（Ｎｏ．）と、構成の名称と、その構成からの「出リンク」と、その構成への「入リンク」と含む。
【００６９】
図５の各行が、図３に示されている各構成（プログラム及びデータ）を示している。例えば、１行目は、構成情報の番号である「Ｉ１」がプログラムＡであること、及び、プログラムＡが出力としてリンクＬ１に接続されていることを示す。３行目は、構成情報の番号「Ｉ３」がデータａ１であること、及び、データａ１が入力としてリンクＬ１及びＬ２に、出力としてリンクＬ３及びＬ４に接続されていることを示す。
【００７０】
図６は、図５に示されている構成情報におけるリンクに関する情報をまとめたリンク情報の一例を示す図である。図６は、一例として、テーブル形式を用いてリンク情報を示した図である。ただし、リンク情報の形式は、テーブル形式に限定されない。図６に示されているリンク情報は、一例として、リンクの番号（Ｎｏ．）と、リンクの属性と、リンクの始点となる構成の番号と、リンクの終点となる構成の番号とを含む。
【００７１】
例えば、図６の１行目のリンクＬ１は、始点が「Ｉ１（プログラムＡ）」であり、終点が「Ｉ３（データａ１）」であり、属性が「Ｗｒｉｔｅ」である。つまり、リンクＬ１は、プログラムＡがデータａ１を書き込むリンクである。なお、「書き込み」は、「作成又は更新」である。
【００７２】
また、３行目のリンクＬ３は、始点が「Ｉ３（データａ１）」であり、終点が「Ｉ４（プログラムＣ）」であり、属性が「Ｒｅａｄ」である。つまり、リンクＬ３は、データａ1がプログラムＣに入力されるリンクである。
【００７３】
なお、情報処理装置３は、受信する対象情報の内容を制限されない。例えば、情報処理装置３は、対象情報として、図５及び図６に示されている情報を含む対象情報を受信してもよい。あるいは、情報処理装置３は、図３に示されているような対象情報の構成に関する情報と図４に示されているような動作に関する情報とを受信し、受信した情報を基に、構成情報などを作成してもよい。
【００７４】
［構成の説明］
次に、図面を参照して、第１の実施形態に係る情報処理装置３の構成について説明する。
【００７５】
図１は、第１の実施形態に係る情報処理装置３の構成の一例を示すブロック図である。情報処理装置３は、由来抽出部５１と、順序抽出部５２と、影響範囲探査部７１とを含む。
【００７６】
由来抽出部５１は、対象情報を基に、データ間の由来に関係する情報（以下、「由来情報」、又は、単に「由来」と呼ぶ）を抽出する。ここで、由来とは、あるデータと、そのデータを生成するためのデータとの関係である。つまり、由来とは、データの生成関係に関する情報である。つまり、由来抽出部５１は、対象情報におけるデータの生成関係に関する情報である由来を抽出する。
【００７７】
なお、由来の階層は、特に制限はない。由来は、１階層でもよく、２階層以上でもよい。ただし、以下の説明では、由来として、１階層を用いて説明する。
【００７８】
図７は、由来情報の一例を示す図である。図７は、一例として、テーブル形式を用いて由来情報を示した図である。ただし、由来情報の形式は、テーブル形式に限定されない。図７に示されている由来情報は、一例として、構成（データ）の番号と、その構成の元となった構成（データ）、つまり「由来」の番号とを含む。
【００７９】
例えば、図７の２行目の「Ｉ５（データｃ１）」は、「Ｉ３（データａ１）」から生成されるデータである。また、１行目の「Ｉ３（データａ１）」は、由来がない。つまり、１行目の「Ｉ３（データａ１）」は、他のデータを参照しないで生成又は更新されるデータである。
【００８０】
なお、図７に示されている名称は、説明の便宜のために付した情報である。つまり、由来情報は、名称を含まなくてもよい。
【００８１】
図１を参照した説明に戻る。
【００８２】
順序抽出部５２は、対象情報を基に、データ間の処理の順序に関連する情報（以下、「順序情報」、又は、単に「順序」と呼ぶ）を抽出する。順序とは、データの処理の順序に関する情報である。つまり、順序抽出部５２は、データの処理の順序を抽出する。具体的には、順序抽出部５２は、例えば、処理におけるリンクの順序を抽出する。
【００８３】
図８は、順序情報の一例を示す図である。図８は、一例として、テーブル形式を用いて順序情報を示した図である。ただし、順序情報の形式は、テーブル形式に限定されない。図８に示されている順序は、一例として、リンクの番号と、グループと、順序とを含む。ここで、グループとは、各フローを識別するための情報である。同じフローに含まれるリンクは、同じグループとなる。
【００８４】
例えば、１行目のリンクＬ１は、グループＧ１に含まれ、１番目に実行される。あるいは、４行目のリンクＬ４は、グループＧ１に含まれ、７番目に実行される。なお、グループとは、上記のとおり、リンクが含まれるフローを識別するための情報である。後ほど説明する影響範囲探査部７１は、グループごとに、影響の範囲を特定する。ただし、影響範囲探査部７１は、複数のグループ又は全てのグループにおいて影響範囲を特定してもよい。
【００８５】
なお、リンクがいずれのグループにも含まれない場合、そのリンクの順序及びグループは、「無」とする。図８において、順序「０」は、「順序無」を示し、「Ｇ０」は、「グループ無」を示す。例えば、１０行目のリンクＬ１０は、いずれのフローにも含まれないリンクである。
【００８６】
情報処理装置３は、図５、図６、図７、及び、図８の各情報を、記憶装置４に保持する。ただし、上記のとおり、情報処理装置３が、各情報を保持してもよい。
【００８７】
影響範囲探査部７１は、対象情報におけるプログラムの影響範囲を特定する。詳細には、影響範囲探査部７１は、由来と順序と基に、プログラムの影響範囲を特定する。
【００８８】
［動作の説明］
次に図面を参照して、第１の実施形態に係る情報処理装置３の動作について説明する。
【００８９】
図９は、第１の実施形態に係る情報処理装置３の動作の一例を示すフローチャートである。なお、以下の説明において、対象情報は、図３及び図４とする。さらに、構成情報及びリンク情報は、図５及び図６とする。
【００９０】
由来抽出部５１は、対象情報を取得する。例えば、由来抽出部５１は、入力装置１から対象情報を取得してもよい。あるいは、由来抽出部５１は、予め記憶装置４に記憶されている対象情報を用いてもよい。そして、由来抽出部５１は、対象情報を基に、由来を抽出する（ステップＳ１０１）。
【００９１】
由来抽出部５１は、抽出した由来を、影響範囲探査部７１に送信する。なお、由来抽出部５１は、抽出した由来を、記憶装置４に保存してもよい。この場合、影響範囲探査部７１は、記憶装置４から、由来を取得する。
【００９２】
図１０は、由来抽出部５１における動作の一例を示すフローチャートである。
【００９３】
由来抽出部５１は、対象情報から、プログラムを一つ選択する（ステップＳ１１１）。
【００９４】
そして、由来抽出部５１は、選択したプログラムに関連するデータにおいて由来となるデータがあるか否かを判定する（ステップＳ１１２）。詳細には、由来抽出部５１は、選択したプログラムの入力となっているデータを基に作成される又は更新されるデータがあるか否かを判定する。作成又は更新されるデータは、選択されたプログラムの入力となっているデータを由来とするデータである。なお、入力となっているデータは、由来となるデータである。
【００９５】
例えば、プログラムＣの場合について説明する。由来抽出部５１は、構成情報とリンク情報とを基に、プログラムＣがデータａ１を入力とすること、及び、出力であるデータｃ１が作成又は更新されることが分かる。
【００９６】
由来とするデータがある場合（ステップＳ１１２でＹｅｓ）、由来抽出部５１は、由来として、上記の「由来とするデータ」と、「由来となるデータ」とを抽出する。このデータの組合せが由来となる。つまり、由来抽出部５１は、由来を抽出する（ステップＳ１１３）。そして、由来抽出部５１は、抽出した由来を用いて、由来情報を更新又は作成する。
【００９７】
例えば、上記の場合、データａ１が、データｃ１の由来となるデータである。また、データｃ１が、データａ１を由来とするデータです。由来抽出部５１は、抽出した結果を基に、図７に示されているような由来情報を作成又は更新する。
【００９８】
由来とするデータがない場合（ステップＳ１１２でＮｏ）、由来抽出部５１は、次の動作に進む。
【００９９】
由来抽出部５１は、上記の作業を、全てのプログラムについて繰り返す。
【０１００】
図９を参照した説明に戻る。
【０１０１】
順序抽出部５２は、対象情報を取得する。例えば、順序抽出部５２は、入力装置１から対象情報を取得してもよい。あるいは、順序抽出部５２は、予め記憶装置４に記憶されている対象情報を用いてもよい。そして、順序抽出部５２は、対象情報を基に、順序を抽出する（Ｓ１０２）。順序抽出部５２は、抽出した順序を、影響範囲探査部７１に送信する。なお、順序抽出部５２は、抽出した順序を、記憶装置４に保存してもよい。この場合、影響範囲探査部７１は、記憶装置４から、順序を取得する。
【０１０２】
図１１は、順序抽出部５２における動作の一例を示すフローチャートである。
【０１０３】
順序抽出部５２は、対象情報からフローを選択する。そして、順序抽出部５２は、選択したフローにおけるリンクの順序を抽出する（ステップＳ１２１）。例えば、順序抽出部５２は、図４に示されているフローを用いて順序を抽出する。
【０１０４】
順序抽出部５２は、順序を抽出したフローに関連するグループがあるか否かを判定する（ステップＳ１２２）。例えば、順序抽出部５２は、対象情報に含まれる情報として、各フローに関連するグループに関する情報を取得する。あるいは、順序抽出部５２は、予め、グループに関連する情報を保持してもよい。
【０１０５】
グループがある場合（ステップＳ１２２でＹｅｓ）、順序抽出部５２は、抽出した順序とグループとを関連付ける（ステップＳ１２３）。そして、順序抽出部５２は、グループに関連付けたリンクの順序を用いて、順序情報を作成又は更新する。
【０１０６】
具体的には、順序抽出部５２は、例えば、図８に示されているように、リンクの順序とグループ（例えば、Ｇ１）とを関連付けた順序情報を作成又は更新する。
【０１０７】
グループがない場合（ステップＳ１２２でＮｏ）、順序抽出部５２は、抽出したリンクの順序及びグループを「無」とする（ステップＳ１２４）。例えば、順序抽出部５２は、図８の１０行目に示されているリンクＬ１０のように、順序「０」とグループ「Ｇ０」とを設定する。
【０１０８】
順序抽出部５２は、全てのフローに関して上記動作を繰り返す。
【０１０９】
図９を参照した説明に戻る。
【０１１０】
なお、情報処理装置３において、由来抽出部５１及び順序抽出部５２の動作の順番は、制限されない。由来抽出部５１及び順序抽出部５２は、どちらが先に動作してもよい。あるいは、由来抽出部５１及び順序抽出部５２は、一部又は全ての動作を並列に実行してもよい。
【０１１１】
そして、影響範囲探査部７１は、対象情報と、由来と、順序とを基に、プログラムの影響範囲を特定する。
【０１１２】
次に、図面を参照して、影響範囲探査部７１の動作を詳細に説明する。なお、以下の説明において、動作の理解の助けとして、適宜、図３、図４、図５、図６、図７、及び、図８に示されている情報を参照して説明する。
【０１１３】
図１２は、影響範囲探査部７１における動作の概要の一例を示すフローチャートである。
【０１１４】
まず、影響範囲探査部７１は、直接的な影響範囲を探査する（ステップＳ２０１）。
【０１１５】
次に、影響範囲探査部７１は、影響が伝播する範囲を探査する（ステップＳ２０２）。
【０１１６】
図面を参照して、それぞれの動作を詳細に説明する。
【０１１７】
まず、図面を参照して、直接的な影響範囲を探査して特定する動作である直接影響探査の動作について説明する。
【０１１８】
図１３は、影響範囲探査部７１における直接影響探査の動作の一例を示すフローチャートである。
【０１１９】
影響範囲探査部７１は、所定のプログラム（以下、「第１のプログラム」とする）の影響範囲を特定する。そのため、影響範囲探査部７１は、まず、第１のプログラムが作成又は更新するデータ（以下、「第１のデータ」と呼ぶ）を特定する（ステップＳ２１１）。なお、以下、一例として、第１のプログラムを、図３の「プログラムＢ」として説明する。
【０１２０】
ここで特定されたデータ（第１のデータ）は、第１のプログラムから直接的に影響を受けるデータである。そのため、影響範囲探査部７１は、第１のデータを、影響範囲と特定する。
【０１２１】
図１４は、ステップＳ２１１の動作の一例を示す図である。図１４に示すように、影響範囲探査部７１は、構成情報を用いて、プログラムＢ（第１のプログラム）の出リンクがリンクＬ２であることを特定する。以下、第１のプログラムの出リンク、つまり、第１のデータの入リンクを「第１のリンク」と呼ぶ。そして、影響範囲探査部７１は、構成情報とリンク情報とを用いて、リンクＬ２（第１のリンク）の終点であるＩ３（データａ１）を、第１のデータと特定する。すなわち、影響範囲探査部７１は、第１のプログラムであるプログラムＢが作成又は更新する第１のデータとして、データａ１を特定する。
【０１２２】
そして、影響範囲探査部７１は、特定した全ての第１のデータに対して、以下で説明する動作を繰り返す。
【０１２３】
まず、影響範囲探査部７１は、第１のデータから一つを選択し、選択した第１のデータと第１のプログラムとのリンク（第１のリンク）の順序を特定する（ステップＳ２１２）。以下、第１のプログラムと第１のデータとのリンク（第１のリンク）の順序を、「第１の順序」と呼ぶ。
【０１２４】
図１５は、ステップＳ２１２の動作の一例を示す図である。図１５に示されているように、影響範囲探査部７１は、構成情報とリンク情報と順序情報とを用いて、プログラムＢ（第１のプログラム）とデータａ１（第１のデータ）とのリンクＬ２（第１のリンク）の順序（第１の順序）として、「６」を特定する。
【０１２５】
次に、影響範囲探査部７１は、選択した第１のデータを入力とするプログラムを特定する（ステップＳ２１３）。より詳細には、影響範囲探査部７１は、第１のデータを出リンクとするリンク（以下、「第２のリンク」と呼ぶ）を特定し、特定した第２のリンクを入リンクとするプログラムを特定する。
【０１２６】
図１６は、ステップＳ２１３の動作の一例を示す図である。図１６の示されているように、影響範囲探査部７１は、構成情報とリンク情報とを用いて、データａ１（第１のデータ）を入リンクとするリンクとして、リンクＬ３及びＬ４（第２のリンク）を特定する。そして、影響範囲探査部７１は、リンクＬ３及びＬ４（第２のリンク）と入リンクとする、つまり、データａ１（第１のデータ）を入力とするプログラムとして、プログラムＣ及びプログラムＤを特定する。
【０１２７】
そして、影響範囲探査部７１は、第１のデータを入力とする全てのプログラムに対して、以下で説明する「プログラム判定」の動作を繰り返す。
【０１２８】
影響範囲探査部７１は、第１のデータを入力とするプログラムから、一つのプログラムを選択する。そして、影響範囲探査部７１は、選択したプログラムと第１のデータとのリンク（第２のリンク）の順序（以下、「第２の順序」と呼ぶ）を特定する。そして、影響範囲探査部７１は、第２の順序が第１の順序の後ろであるか否かを判定する（ステップＳ２１４）。
【０１２９】
図１７は、ステップＳ２１４の動作の一例を示す図である。図１７に示されているように、影響範囲探査部７１は、構成情報と、リンク情報と、順序情報とを用いて、「リンクＬ３の順序が「２」であること」及び「リンクＬ４の順序が「７」であること」を特定する。
【０１３０】
なお、上記のとおり、リンクＬ２（第１のリンク）の順序（第１の順序）は、「６」である。そのため、リンクＬ３の順序（第２の順序）は、第１の順序より前である。一方、リンクＬ４の順序（第２の順序）は、第１の順序より後ろである。
【０１３１】
第２の順序が第１の順序より後ろとなるリンクを入リンクとするプログラムは、第１のプログラムから影響を受けるプログラムである。
【０１３２】
そこで、第２の順序が第１の順序の後ろの場合（ステップＳ２１４でＹｅｓ）、影響範囲探査部７１は、そのプログラム（以下、「第２のプログラム」とする）を、影響範囲として、特定する（ステップＳ２１５）。
【０１３３】
第２の順序が前の場合（ステップＳ２１４でＹｅｓ）、影響範囲探査部７１は、そのプログラムを特定しないで、次の動作に進む。
【０１３４】
例えば、図１７の場合、プログラムＣは、第２の順序が第１の順序の前のため、特定されない。一方、プログラムＤは、第２の順序が第１の順序の後のため、影響範囲として特定される。つまり、プログラムＤは、第２のプログラムの一例である。
【０１３５】
このように、影響範囲探査部７１は、ステップＳ２１３において特定した全てのプログラムに対して上記のプログラム判定の動作を繰り返し、影響を受けるプログラム（第２のプログラム）を特定する。
【０１３６】
さらに、影響範囲探査部７１は、ステップＳ２１１において特定した全てのデータ（第１のデータ）に対して、上記の動作を繰り返す。
【０１３７】
その結果として、影響範囲探査部７１は、第１のプログラムから直接的に影響を受ける、第１のデータと、第２のプログラムとを特定する。
【０１３８】
このように、影響範囲探査部７１は、影響範囲として、第１のデータと第２のプログラムとを特定する。
【０１３９】
次に、図面を参照して、影響が伝播する範囲を探査して特定する動作である影響伝播範囲探査の動作について説明する。
【０１４０】
図１８は、影響範囲探査部７１における影響伝播範囲探査の動作の一例を示すフローチャートである。
【０１４１】
影響範囲探査部７１は、第１のプログラムが作成又は更新する第１のデータを特定する（ステップＳ２２１）。ステップＳ２２１の動作は、図１３のステップＳ２１１と同じため、詳細な説明を省略する。なお、影響範囲探査部７１は、ステップＳ２１１の動作において第１のデータを保持してもよい。この場合、影響範囲探査部７１は、ステップＳ２２１を省略してもよい。
【０１４２】
そして、影響範囲探査部７１は、特定された全ての第１のデータに対して、影響伝播範囲探査の動作を繰り返す。
【０１４３】
影響範囲探査部７１は、第１のデータから一つを選択し、選択した第１のデータを由来とするデータを特定する（ステップＳ２２２）。
【０１４４】
図１９は、ステップＳ２２２の動作の一例を示す図である。図１９に示されているように、影響範囲探査部７１は、構成情報と由来情報とを用いて、データａ１（第１のデータ）を由来とするデータとして、データｃ１及びデータｄ１を特定する。
【０１４５】
さらに、影響範囲探査部７１は、第１のプログラムと第１のデータとの第１のリンクの第１の順序を特定する。この動作は、図１３のステップＳ２１２の同じため、詳細な説明を省略する。上記のとおり、プログラムＢ（第１のプログラム）とデータａ１（第１のデータ）とのリンクＬ２（第１のリンク）の順序（第１の順序）は、「６」である。なお、影響範囲探査部７１は、ステップＳ２１２の動作において第１の順序を保持してもよい。この場合、影響範囲探査部７１は、ステップＳ２２２を省略してもよい。
【０１４６】
影響範囲探査部７１は、ステップＳ２２２において特定したデータから対象情報におけるプログラムとデータとのリンクを第１のデータの方向にたどり、第１のデータを入力とするプログラムを特定する（ステップＳ２２３）。
【０１４７】
図２０は、ステップＳ２２３の動作の一例を示す図である。図２０に示されているように、影響範囲探査部７１は、構成情報とリンク情報とを基に、データｃ１及びデータｄ１からデータとプログラムとをたどり、第１のデータを入力とするプログラムとして、プログラムＣ及びプログラムＤを特定する。
【０１４８】
なお、ステップＳ２２３において特定されるプログラムは、ステップＳ２１３において特定されたプログラムの中で、第１のデータに由来するデータを出力とするプログラムである。そのため、影響範囲探査部７１は、ステップＳ２１３において特定したプログラムを保持し、保持したプログラムの中から、第１のデータに由来するデータを出力とするプログラムを選択してもよい。
【０１４９】
そして、影響範囲探査部７１は、ステップＳ２２３において特定した全てのプログラムに対して、「プログラム判定」の動作を繰り返す。
【０１５０】
影響範囲探査部７１は、ステップＳ２２３において特定したプログラムから一つのプログラムを選択する。そして、影響範囲探査部７１は、選択したプログラムと第１のデータとのリンク（以下、「第３のリンク」と呼ぶ）の順序（以下、「第３の順序」と呼ぶ）が、第１の順序より後か否かを判定する（ステップＳ２２４）。なお、この場合のリンクは、選択したプログラムの入リンクである。
【０１５１】
図２１は、ステップＳ２２４の動作の一例を示す図である。なお、ステップＳ２２３において特定されたプログラムは、プログラムＣ及びプログラムＤである。
【０１５２】
プログラムＣの入リンクＬ３（第３のリンク）の順序（第３の順序）は、「２」である。この順序は、第１の順序「６」より前である。
【０１５３】
一方、プログラムＤの入リンクＬ４（第３のリンク）の順序（第３の順序）は、「７」である。この順序は、第１の順序「６」より後である。
【０１５４】
第３の順序が第１の順序より前の場合（ステップＳ２２４でＮｏ）、そのプログラムは、第１のプログラムの影響を受けない。そのため、影響範囲探査部７１は、以下で説明する動作を実行せずに、次のプログラムの動作に進む。例えば、影響範囲探査部７１は、第３の順序「２」が第１の順序「６」より前であるプログラムＣを、影響を受けないプログラムと特定する。
【０１５５】
第３の順序が第１の順序の後ろの場合（ステップＳ２２４でＹｅｓ）、そのプログラムは、第１のプログラムの影響を受ける。そのため、影響範囲探査部７１は、以下で説明するように、さらにプログラムの影響範囲を特定する。例えば、影響範囲探査部７１は、第３の順序「７」が第１の順序「６」より後であるプログラムＤを、影響を受けると特定する。そして、影響範囲探査部７１は、プログラムＤの影響範囲を特定する。
【０１５６】
以下、影響を受けると特定されたプログラムを、「第３のプログラム」と呼ぶ。図２１の場合、プログラムＤが、第３のプログラムの例である。
【０１５７】
すなわち、第３のプログラムは、第１のデータを入力とする。さらに、第３のプログラムは、対象情報（例えば、図３のようにプログラムとデータとの構造の情報）において第１のデータを由来とするデータまでたどることができる。つまり、第３のプログラムは、第１のデータを由来とするデータを出力とする。そして、第３のプログラムは、第１のデータの関係（リンク）の順序（第３の順序）が第１の順序の後である。
【０１５８】
以下、ステップＳ２２３において、第３のプログラムをたどるために用いられたデータで、第３のプログラムの出力となるデータを「第２のデータ」と呼ぶ。
【０１５９】
つまり、第２のデータは、第３のプログラムの出力であり、第１のデータを由来とするデータである。
【０１６０】
図５において、第３のプログラムの一例が、プログラムＤであり、第２のデータの一例が、データｄ１である。
【０１６１】
なお、ステップＳ２２３で特定されたプログラムは、ステップ２１５において特定されたプログラムの中で、第１のデータを由来とするデータを出力とするプログラムである。そのため、影響範囲探査部７１は、ステップＳ２１５の結果となる第２のプログラムを保持し、保持した第２のプログラムの中から第１のデータを由来とするデータを出力とするプログラムを選択してもよい。
【０１６２】
つまり、第３のプログラムは、第１のデータを入力として、第１のデータを由来とする第２のデータを出力とし、第１のデータとの第３のリンクの第３の順序が第１の順序より後であるプログラムである。
【０１６３】
影響範囲探査部７１は、第３のプログラムと、第２のデータとを、影響範囲と特定する。
【０１６４】
例えば、上記の場合、影響範囲探査部７１は、プログラムＤ（第３のプログラム）とデータｄ１（第２のデータ）とを、影響範囲と特定する。
【０１６５】
このように、影響範囲探査部７１は、由来と順序とを基に、第１のプログラムの影響を受ける第３のプログラムと第２のデータとを特定する。
【０１６６】
なお、上記のとおり、第３のプログラムは、第２のプログラムの中で、第１のデータを由来とする第２のデータを出力とするプログラムである。そのため、影響範囲探査部７１は、第２のプログラムが出力するデータの中で、第１のデータを由来とするデータを、第２のデータと特定してもよい。
【０１６７】
さらに、影響範囲探査部７１は、第３のプログラムの影響範囲を特定する（ステップＳ２２５）。この動作は、影響範囲探査部７１が、ここまで説明した第１のプログラムの影響を受ける第３のプログラムを特定する動作と同様である。つまり、影響範囲探査部７１は、上記の動作において、第１のプログラムを第３のプログラムに置き換えて、影響を受けるプログラムとデータとを特定すればよい。
【０１６８】
以下の説明のため、第３のプログラムと第２のデータとのリンクを「第４のリンク」、第４のリンクの順序を「第４の順序」と呼ぶ。そして、影響範囲探査部７１は、第２のデータを入力とし、第２のデータを由来とするデータ（以下、「第３のデータ」と呼ぶ）を出力とするプログラムを特定する。さらに、影響範囲探査部７１は、ここで特定したプログラムと第２のデータとのリンク（以下、「第４のリンク」と呼ぶ）の順序（以下、「第４の順序」と呼ぶ）が第３の順序の後であるプログラム（以下、「第４のプログラム」と呼ぶ）と特定する。そして、影響範囲探査部７１は、第４のプログラムと第３のデータとを影響範囲と特定する。
【０１６９】
さらに、影響範囲探査部７１は、第３のプログラムに基づく影響範囲の探査を終了すると、さらなら伝播範囲について影響範囲を特定する。つまり、影響範囲探査部７１は、第３のプログラムを用いて特定した影響を受ける範囲に含まれるプログラムを、第１のプログラムと置き換えた動作を実行して、そのプログラムの影響範囲と特定する。影響範囲探査部７１は、影響を受けるプログラムがなくなるまで、同様の動作を繰り返す。この動作を基に、影響範囲探査部７１は、対象情報の構造及び深さにかかわらずに、影響を受ける範囲を特定することができる。
【０１７０】
以下では、具体的なデータを用いて第４のプログラムを特定する動作を説明する。
【０１７１】
影響範囲探査部７１は、第３のプログラムとして、プログラムＤを選択したとする。
【０１７２】
この場合、影響範囲探査部７１は、選択した第３のプログラム（プログラムＤ）と第２のデータ（データｄ１）との第４のリンク（Ｌ６）の第４の順序を特定する。
【０１７３】
図２２は、第４の順序を特定する動作の一例を示す図である。図２２に示されているように、影響範囲探査部７１は、構成情報と順序情報とを用いて、プログラムＤ（第３のプログラム）とデータｄ１（第２のデータ）との関係であるリンクＬ６（第４のリンク）の順序（第４の順序）として、「８」を特定する。
【０１７４】
次に、影響範囲探査部７１は、データｄ１（第２のデータ）を由来とする第３のデータを特定する。
【０１７５】
例えば、影響範囲探査部７１は、図７の由来情報を用いてデータｄ１（第２のデータ）を由来とする第３のデータとして、データｆ２を特定する。
【０１７６】
そして、影響範囲探査部７１は、データｆ２（第３のデータ）からデータとプログラムとをたどり、データｄ１（第２のデータ）を入力とするプログラムを特定する。
【０１７７】
図２３は、上記のプログラムを特定する動作の一例を示す図である。図２３に示されているように、影響範囲探査部７１は、構成情報と、リンク情報とを用いて、データｆ２（第３のデータ）からデータとプログラムとをたどり、プログラムＦ（第４のプログラム）を特定する。
【０１７８】
そして、影響範囲探査部７１は、特定したプログラムと第２のデータとのリンク（以下、「第５のリンク」と呼ぶ）の順序（以下、「第５の順序」と呼ぶ）を特定する。
【０１７９】
図２４は、第５の順序を特定する動作の一例を示す図である。図２４に示されているように、影響範囲探査部７１は、プログラムＦとデータｄ１（第２のデータ）とのリンクＬ９（第５のリンク）の順序（第５の順序）として、「１０」を特定する。
【０１８０】
影響範囲探査部７１は、第５の順序が第４の順序の後ろか否かを判定する。
【０１８１】
第５の順序が第４の順序の前の場合、そのプログラムとデータの関係は、第３のプログラムの影響を受けない。
【０１８２】
しかし、今の場合、第５の順序「１０」は、第４の順序「８」の後である。そのため、プログラムＦは、第３のプログラム（プログラムＤ）の影響、つまり第１のプログラム（プログラムＢ）の影響を受ける。つまり、プログラムＦは、第４のプログラムである。
【０１８３】
そこで、影響範囲探査部７１は、プログラムＦ（第４のプログラム）とデータｆ２（第３のデータ）とを、影響範囲と特定する。
【０１８４】
影響範囲探査部７１は、上記と同様の動作を繰り返して、対象情報における影響範囲を特定する。
【０１８５】
次に、図面を参照して、第１の実施形態の結果について説明する。以下、図３に示されている対象情報における影響範囲を用いて説明する。
【０１８６】
図２５は、第１の実施形態に係る情報処理装置３の特定結果の一例を示す図である。図２５において、斜線を付した範囲が、情報処理装置３が影響範囲として特定した構成である。図２５に示されているように、プログラムＢを更新した場合、データａ１と、プログラムＤと、データｄ１と、プログラムＦと、データｆ２とが、影響範囲として特定される。情報処理装置３は、プログラムＢの動作より前に動作するプログラムＣの出力であるデータｃ１、及び、データｄ１に影響されないデータｄ２などを、影響範囲として、特定しない。
【０１８７】
次に、第１に実施形態の情報処理装置３の特定の結果（図２５）との比較として、一般的な装置を用いた場合の影響範囲の例を示す。
【０１８８】
図２６は、順序及び由来を考慮しない場合の影響範囲を示す図である。図２６に示されている影響範囲は、プログラムＢより前に実行されるプログラムＣの出力であるデータｃ１及びデータａ１の影響を受けないデータｄ２などを含む。
【０１８９】
図２７は、順序を考慮しない場合の影響範囲を示す図である。図２７に示されている影響範囲は、順序としてデータｄ１より前に処理されるデータｃ１などを含んでいる。
【０１９０】
［効果の説明］
次に、第１の実施形態に係る情報処理装置３の効果について説明する。
【０１９１】
情報処理装置３は、依存関係のある情報を抽出するとの効果を奏する。
【０１９２】
その理由は、次のとおりである。
【０１９３】
由来抽出部５１が、データの生成関係に関する情報である由来を抽出する。さらに、順序抽出部５２が、データの処理の順序を抽出する。そして、影響範囲探査部７１が、由来と、順序とを基に、対象情報における第１のプログラムの影響範囲を特定する。そのため、例えば、影響範囲探査部７１は、第１のプログラムの影響を受け、かつ、第１のプログラムの動作後に動作する範囲を影響範囲として特定できる。
【０１９４】
例えば、情報処理装置３は、アプリケーション改修時に改修されるアプリケーションが更新するデータの伝播を考慮して、ソフトウェア資産全体における影響範囲を特定できる。つまり、情報処理装置３は、依存関係のあるデータを考慮して、ソフトウェア資産全体の影響範囲の絞り込むことができる。
【０１９５】
さらに、影響範囲探査部７１は、直接的に影響を受ける範囲に加え、影響が伝播する範囲と特定する。そのため、情報処理装置３は、対象情報の構造にかかわらず、影響範囲を特定できる。
【０１９６】
［ハードウェア構成］
以上の説明した情報処理装置３は、次のように構成される。
【０１９７】
例えば、情報処理装置３の各構成部は、ハードウェア回路で構成されてもよい。
【０１９８】
また、情報処理装置３において、各構成部は、ネットワークを介して接続した複数の装置を用いて、構成されてもよい。
【０１９９】
また、情報処理装置３において、複数の構成部は、１つのハードウェアで構成されてもよい。
【０２００】
また、情報処理装置３は、ＣＰＵ（Central Processing Unit）と、ＲＯＭ（Read Only Memory）と、ＲＡＭ（Random Access Memory）とを含むコンピュータ装置として実現されてもよい。情報処理装置３は、上記構成に加え、さらに、入出力接続回路（ＩＯＣ：Input / Output Circuit）と、ネットワークインターフェース回路（ＮＩＣ：Network Interface Circuit）とを含むコンピュータ装置として実現されてもよい。
【０２０１】
図２８は、本変形例に係る情報処理装置６００の構成の一例を示すブロック図である。
【０２０２】
情報処理装置６００は、ＣＰＵ６１０と、ＲＯＭ６２０と、ＲＡＭ６３０と、内部記憶装置６４０と、ＩＯＣ６５０と、ＮＩＣ６８０とを含み、コンピュータ装置を構成している。
【０２０３】
ＣＰＵ６１０は、ＲＯＭ６２０からプログラムを読み込む。そして、ＣＰＵ６１０は、読み込んだプログラムに基づいて、ＲＡＭ６３０と、内部記憶装置６４０と、ＩＯＣ６５０と、ＮＩＣ６８０とを制御する。そして、ＣＰＵ６１０を含むコンピュータは、これらの構成を制御し、図１に示されている、由来抽出部５１と、順序抽出部５２と、影響範囲探査部７１としての各機能を実現する。
【０２０４】
ＣＰＵ６１０は、各機能を実現する際に、ＲＡＭ６３０又は内部記憶装置６４０を、プログラムの一時記憶媒体として使用してもよい。
【０２０５】
また、ＣＰＵ６１０は、コンピュータで読み取り可能にプログラムを記憶した記憶媒体７００が含むプログラムを、図示しない記憶媒体読み取り装置を用いて読み込んでもよい。あるいは、ＣＰＵ６１０は、ＮＩＣ６８０を介して、図示しない外部の装置からプログラムを受け取り、ＲＡＭ６３０に保存して、保存したプログラムを基に動作してもよい。
【０２０６】
ＲＯＭ６２０は、ＣＰＵ６１０が実行するプログラム及び固定的なデータを記憶する。ＲＯＭ６２０は、例えば、Ｐ−ＲＯＭ（Programmable-ROM）又はフラッシュＲＯＭである。
【０２０７】
ＲＡＭ６３０は、ＣＰＵ６１０が実行するプログラム及びデータを一時的に記憶する。ＲＡＭ６３０は、例えば、Ｄ−ＲＡＭ（Dynamic-RAM）である。
【０２０８】
内部記憶装置６４０は、情報処理装置６００が長期的に保存するデータ及びプログラムを記憶する。内部記憶装置６４０は、図２に示されている記憶装置４として動作してもよい。つまり、内部記憶装置６４０は、図５ないし図７に示されている情報の一部又は全てを記憶してもよい。また、内部記憶装置６４０は、ＣＰＵ６１０の一時記憶装置として動作してもよい。内部記憶装置６４０は、例えば、ハードディスク装置、光磁気ディスク装置、ＳＳＤ（Solid State Drive）又はディスクアレイ装置である。
【０２０９】
ここで、ＲＯＭ６２０と内部記憶装置６４０は、不揮発性（non-transitory）の記憶媒体である。一方、ＲＡＭ６３０は、揮発性（transitory）の記憶媒体である。そして、ＣＰＵ６１０は、ＲＯＭ６２０、内部記憶装置６４０、又は、ＲＡＭ６３０に記憶されているプログラムを基に動作可能である。つまり、ＣＰＵ６１０は、不揮発性記憶媒体又は揮発性記憶媒体を用いて動作可能である。
【０２１０】
ＩＯＣ６５０は、ＣＰＵ６１０と、入力機器６６０及び表示機器６７０とのデータを仲介する。ＩＯＣ６５０は、例えば、ＩＯインターフェースカード又はＵＳＢ（Universal Serial Bus）カードである。さらに、ＩＯＣ６５０は、ＵＳＢのような有線に限らず、無線を用いてもよい。
【０２１１】
入力機器６６０は、情報処理装置６００の操作者からの入力指示を受け取る機器である。入力機器６６０は、図２に示されている入力装置１として動作してもよい。入力機器６６０は、例えば、キーボード、マウス又はタッチパネルである。
【０２１２】
表示機器６７０は、情報処理装置６００の操作者に情報を表示する機器である。表示機器６７０は、図２に示されている出力装置２として動作してもよい。表示機器６７０は、例えば、液晶ディスプレイである。
【０２１３】
ＮＩＣ６８０は、ネットワークを介した図示しない外部の装置とのデータのやり取りを中継する。ＮＩＣ６８０は、図２に示されている入力装置１、出力装置２、及び／又は、記憶装置４との情報を中継してもよい。ＮＩＣ６８０は、例えば、ＬＡＮ（Local Area Network）カードである。さらに、ＮＩＣ６８０は、有線に限らず、無線を用いてもよい。
【０２１４】
このように構成された情報処理装置６００は、情報処理装置３と同様の効果を得ることができる。
【０２１５】
その理由は、情報処理装置６００のＣＰＵ６１０が、プログラムに基づいて情報処理装置３と同様の機能を実現できるためである。
【０２１６】
＜＜変形例＞＞
次に、第１の実施形態の変形例でもある各実施形態を説明する。なお、各実施形態に係る情報処理装置３の構成は、第１の実施形態と同様のため、構成の説明を省略する。また、第１の実施形態の同様の動作の説明を省略する。
【０２１７】
＜第２の実施形態＞
情報処理装置３は、複数の階層（レベル）を含む情報を処理してもよい。つまり、対象情報は、複数のレベルを含む情報でもよい。
【０２１８】
例えば、情報処理装置３は、複数のプログラムのレベル、詳細化のレベル、及び／又は具体化のレベルを含む対象情報における影響範囲を特定してもよい。
【０２１９】
ここで、プログラムのレベルとは、プログラムの構造における上位と下位とを示す。例えば、ある処理を実行するメインプログラムが、二つのサブルーチンを利用する場合、サブルーチンは、メインプログラムに対して下位のレベルのプログラムである。
【０２２０】
具体化のレベルとは、ＩＴシステムにおける具体化の程度（具体度）を示す。例えば、データの仕様は、プログラムにおけるデータより具体化のレベルが低い。なお、具体度の反対が、抽象度である。
【０２２１】
詳細化のレベルとは、ＩＴシステムにおける詳細化の程度（詳細度）を示す。例えば、上記の二つのサブルーチンを含むメインプログラムの場合、サブルーチンは、メインプログラムより詳細化のレベルが高い。
【０２２２】
図２９は、複数のレベルを含む対象情報の一例を示す図である。図２９は、図３におけるプログラムＦの周りの一部を取り出して示した図である。図２９において４つに区分された各領域が、レベルに相当する。
【０２２３】
図２９の右上の領域が、図３に対応する。図２９において、左側が、詳細化の程度が低い。例えば、図２９に左上の領域の「マスタｄ１エンティティ」は、右上の領域の「データｄ１」より詳細化の程度が低い。また、図２９において、下側が、具体化の程度が低い。例えば、右下の領域の「データ１レイアウト仕様」は、右上の領域の「データｄ１」より具体化の程度が低い。
【０２２４】
［効果の説明］
情報処理装置３の影響範囲探査部７１は、第１の実施形態と同様の動作を用いてあるレベルの影響範囲を特定し、特定したレベルの影響範囲を用いて、対応する各レベルの影響範囲を特定すればよい。例えば、情報処理装置３は、第１の実施形態の同様の動作を用いて、右上のレベルでの影響範囲を特定する。そして、情報処理装置３は、特定した影響範囲を用いて、その他のレベルにおける影響範囲を特定すればよい。
【０２２５】
第２の実施形態は、第１の実施形態の効果に加え、複数のレベルにおける影響範囲を特定するとの効果を奏する。
【０２２６】
その理由は、第２の実施形態に係る情報処理装置３が、第１の実施形態と同様の動作に基づいて特定した影響範囲を用いて、関連する他のレベルにおける影響範囲を特定するためである。
【０２２７】
このように、第２の実施形態に係る情報処理装置３は、一つのレベルに限らず、複数のレベルを含むソフトウェア資産全体の影響範囲の絞り込むことができる。
【０２２８】
＜第３の実施形態＞
また、情報処理装置３は、影響範囲の特定においてグラフを利用してもよい。さらに、情報処理装置３は、リンクなどに重みを用いてもよい。例えば、情報処理装置３は、レベルの移行に関するリンクに、重みを用いてもよい。
【０２２９】
図３０は、重みの一例を示す図である。図３０は、一例として、テーブル形式を用いて重みを示した図である。ただし、重みの形式は、テーブル形式に限定されない。
【０２３０】
図３０に示されている重みは、リンクの属性（同格、下位、関連、詳細化、及び具体化）に対して、順方向及び非順方向の重みである。例えば、属性「下位」の順方向は、より下位となる方向のリンクに対する重みである。なお、このような重みは、「距離」と呼ばれる場合もある。
【０２３１】
図３０に示されている重みは、既に最も詳細度及び具体度が高いレベルの影響範囲が特定されている場合の重みの一例である。つまり、図３０の重みは、影響範囲が特定されたレベルから、より詳細化する方向（詳細化の順方向）及びより具体化する方向（具体化の順方向）には移動できない場合の重みである。また、図３０は、プログラムのレベルにおける下位には、移動できない場合の重みである。そのため、図３０において、下位、詳細化、及び具体化の順方向の重み（距離）は、無限「∞」（距離が無限大）となっている。つまり、図３０において無限は、移動できないリンクである。
【０２３２】
さらに、図３０の重みにおいて、プログラムとデータとの関係を示す「関連」は、移動しないリンクとする。そのため、「関連」の順方向及び非順方向とも、重みが無限となっている。
【０２３３】
また、同格は、重みが「０」、つまり、移動距離が「０」である。つまり、同格における移動は、リンクの数にかかわらず、同様に移動できる。
【０２３４】
次に、情報処理装置３の動作を説明する。
【０２３５】
影響範囲探査部７１は、リンクの重みを用いて、処理対象の情報におけるレベルにまたがった関係をグラフ化、つまり、処理対象のグラフを作成する。
【０２３６】
図３１は、図２９の情報を基に作成した有効グラフの一例を示す図である。図３１において、重みが無限大となるリンクは、省略している。
【０２３７】
影響範囲探査部７１は、作成したグラフを用いて、影響範囲を特定する。例えば、プログラムＦの影響範囲は、図３１において太線及び斜線を付した範囲となる。
【０２３８】
なお、影響範囲探査部７１は、図３１のように有効グラフを用いることで、影響範囲の特定を、最短経路問題に置き換えることができる。そのため、影響範囲探査部７１は、影響範囲の特定として、ベルマンフォード法又はワーシャルフロイド法といった一般的な最短経路を求める方式を用いて影響範囲を特定できる。
【０２３９】
このように、影響範囲探査部７１は、第１の実施形態の同様の動作を用いてあるレベルの影響範囲を特定し、さらに、上記の最短経路を求める方法を用いて、複数のレベルをまたいだ影響範囲を特定できる。
【０２４０】
図３２は、図２９において、プログラムＦの影響範囲を示す図である。例えば、プログラムＦの影響範囲は、図３２において太線及び斜線を付した範囲となる。
【０２４１】
［効果の説明］
このように、第３の実施形態に係る情報処理装置３は、第１の実施形態及び第２の実施形態の効果に加え、容易に影響範囲の特定できるとの効果を奏する。
【０２４２】
その理由は、第３の実施形態に係る情報処理装置３が、重みを基に、レベルをまたいだグラフを作成し、作成したグラフを用いて、影響範囲を特定するためである。
【０２４３】
＜その他の実施形態＞
由来抽出部５１は、対象となる情報におけるデータレイアウト（例えば、属性及びデータ長）を用いて、関連するデータを推定し、推定を基にデータの由来を抽出してもよい。
【０２４４】
あるいは、由来抽出部５１は、所定の辞書又は自然言語解析を用いて、関連するデータを推定し、推定を基にデータの由来を抽出してもよい。
【０２４５】
情報処理装置３は、上記の動作を基に、対象となるデータに欠損が含まれている場合でも、影響範囲を絞り込むことができる。
【０２４６】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成及び詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【０２４７】
本発明は、ソフトウェア企画又は開発フェーズにおける設計、製造、及びテスト支援、ソフトウェア運用及び保守フェーズにおける改造支援及び障害分析支援、並びに、上記フェーズを通した影響分析支援及び作業工数の見積り支援に利用可能である。
【符号の説明】
【０２４８】
１    入力装置
２    出力装置
３    情報処理装置
４    記憶装置
１０    情報処理システム
５１    由来抽出部
５２    順序抽出部
７１    影響範囲探査部
６００    情報処理装置
６１０    ＣＰＵ
６２０    ＲＯＭ
６３０    ＲＡＭ
６４０    内部記憶装置
６５０    ＩＯＣ
６６０    入力機器
６７０    表示機器
６８０    ＮＩＣ
７００    記憶媒体
【図１】
2018045508.tif 000003
【図２】
2018045508.tif 000004
【図３】
2018045508.tif 000005
【図４】
2018045508.tif 000006
【図５】
2018045508.tif 000007
【図６】
2018045508.tif 000008
【図７】
2018045508.tif 000009
【図８】
2018045508.tif 000010
【図９】
2018045508.tif 000011
【図１０】
2018045508.tif 000012
【図１１】
2018045508.tif 000013
【図１２】
2018045508.tif 000014
【図１３】
2018045508.tif 000015
【図１４】
2018045508.tif 000016
【図１５】
2018045508.tif 000017
【図１６】
2018045508.tif 000018
【図１７】
2018045508.tif 000019
【図１８】
2018045508.tif 000020
【図１９】
2018045508.tif 000021
【図２０】
2018045508.tif 000022
【図２１】
2018045508.tif 000023
【図２２】
2018045508.tif 000024
【図２３】
2018045508.tif 000025
【図２４】
2018045508.tif 000026
【図２５】
2018045508.tif 000027
【図２６】
2018045508.tif 000028
【図２７】
2018045508.tif 000029
【図２８】
2018045508.tif 000030
【図２９】
2018045508.tif 000031
【図３０】
2018045508.tif 000032
【図３１】
2018045508.tif 000033
【図３２】
2018045508.tif 000034