(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-26
(45)【発行日】2023-10-04
(54)【発明の名称】情報提示プログラム、情報提示装置、及び情報提示方法
(51)【国際特許分類】
G06F 8/75 20180101AFI20230927BHJP
【FI】
G06F8/75
(21)【出願番号】P 2019191821
(22)【出願日】2019-10-21
【審査請求日】2022-07-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100087480
【氏名又は名称】片山 修平
(72)【発明者】
【氏名】石津 卓也
(72)【発明者】
【氏名】上村 学
(72)【発明者】
【氏名】松尾 昭彦
【審査官】北川 純次
(56)【参考文献】
【文献】特開2018-028776(JP,A)
【文献】特開2011-060062(JP,A)
【文献】特開2019-133541(JP,A)
【文献】特開2018-045508(JP,A)
【文献】米国特許第8806450(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/70-8/75
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
複数のプログラム群と複数のデータの少なくとも一部を含む第1の範囲の指定を受け付ける処理と、
前記複数のプログラム群と、当該複数のプログラム群がそれぞれアクセスする前記複数のデータとを対応付けた情報に基づいてグラフを生成する処理と、
前記グラフ上で未使用データを反映させる処理と、
前記第1の範囲と、前記第1の範囲に含まれるデータに前記第1の範囲の外からアクセスするプログラム群と、複数の前記プログラム群のうち前記第1の範囲に含まれるプログラム群のみがアクセスするデータであって前記第1の範囲の外にあるデータとを含む第2の範囲を、複数の前記プログラム群と複数の前記データから切り出す範囲として
、前記グラフ上に重ねて提示する処理と、
を実行させるための情報提示プログラム。
【請求項2】
前記提示する処理において、
複数の前記プログラム群のうち、前記第1の範囲に含まれるデータに前記第1の範囲の外からアクセスするプログラム群のみがアクセスするデータであって、前記第1の範囲の外のデータを前記第2の範囲に含めることを特徴とする請求項1に記載の情報提示プログラム。
【請求項3】
前記提示する処理において、
前記第2の範囲に含まれるプログラム群からアクセスされないデータと、当該データにアクセスするプログラム群のうち、前記第2の範囲に含まれるデータにアクセスしないプログラム群とを含む第3の範囲を、複数の前記プログラム群と複数の前記データから切り出さない範囲として提示することを特徴とする請求項1に記載の情報提示プログラム。
【請求項4】
複数のプログラム群と複数のデータの少なくとも一部を含む第1の範囲の指定を受け付ける受付部と、
前記複数のプログラム群と、当該複数のプログラム群がそれぞれアクセスする前記複数のデータとを対応付けた情報に基づいてグラフを生成するとともに、前記グラフ上で未使用データを反映させるグラフ生成部と、
前記第1の範囲と、前記第1の範囲に含まれるデータに前記第1の範囲の外からアクセスするプログラム群と、複数の前記プログラム群のうち前記第1の範囲に含まれるプログラム群のみがアクセスするデータであって前記第1の範囲の外にあるデータとを含む第2の範囲を、複数の前記プログラム群と複数の前記データから切り出す範囲として
、前記グラフ上に重ねて提示する提示部と、
を有することを特徴とする情報提示装置。
【請求項5】
複数のプログラム群と複数のデータの少なくとも一部を含む第1の範囲の指定を受け付ける処理と、
前記複数のプログラム群と、当該複数のプログラム群がそれぞれアクセスする前記複数のデータとを対応付けた情報に基づいてグラフを生成する処理と、
前記グラフ上で未使用データを反映させる処理と、
前記第1の範囲と、前記第1の範囲に含まれるデータに前記第1の範囲の外からアクセスするプログラム群と、複数の前記プログラム群のうち前記第1の範囲に含まれるプログラム群のみがアクセスするデータであって前記第1の範囲の外にあるデータとを含む第2の範囲を、複数の前記プログラム群と複数の前記データから切り出す範囲として
、前記グラフ上に重ねて提示する処理と、
をコンピュータが実行することを特徴とする情報提示方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報提示プログラム、情報提示装置、及び情報提示方法に関する。
【背景技術】
【0002】
情報処理技術の発達により、利用者に対して様々なサービスを提供するためのコンピュータシステムが活用されている。そのようなコンピュータシステムでは、例えばサービスを提供する業務内容が見直されたときに、システムで使用される一部のプログラムやデータを変更することがある。
【0003】
しかし、大規模なコンピュータシステムでは、プログラム同士の依存関係が複雑であり、一部のプログラムを変更したときにその影響が及ぶ範囲を調べるのが容易ではない。そのため、複数のプログラムと複数のデータのうちのどの部分を切り出して変更を行えばいいのかが容易には分らず、コンピュータシステムの変更を行うのが難しい。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
一側面によれば、複数のプログラムと複数のデータから切り出す範囲を提示することを目的とする。
【課題を解決するための手段】
【0006】
一側面によれば、コンピュータに、複数のプログラム群と複数のデータの少なくとも一部を含む第1の範囲の指定を受け付ける処理と、前記複数のプログラム群と、当該複数のプログラム群がそれぞれアクセスする前記複数のデータとを対応付けた情報に基づいてグラフを生成する処理と、前記グラフ上で未使用データを反映させる処理と、前記第1の範囲と、前記第1の範囲に含まれるデータに前記第1の範囲の外からアクセスするプログラム群と、複数の前記プログラム群のうち前記第1の範囲に含まれるプログラム群のみがアクセスするデータであって前記第1の範囲の外にあるデータとを含む第2の範囲を、複数の前記プログラム群と複数の前記データから切り出す範囲として、前記グラフ上に重ねて提示する処理とを実行させるための情報提示プログラムが提供される。
【発明の効果】
【0007】
一側面によれば、複数のプログラムと複数のデータから切り出す範囲を提示することができる。
【図面の簡単な説明】
【0008】
【
図1】
図1は、分割の対象となるプログラム資産について示す模式図である。
【
図2】
図2は、プログラム資産の分割方法を示す模式図である。
【
図3】
図3は、各データの取り扱いについて示す模式図である。
【
図4】
図4は、問題について模式的に示す図である。
【
図5】
図5は、本実施形態に係る情報提示装置について説明するための模式図である。
【
図6】
図6は、本実施形態に係る情報提示装置の機能構成図である。
【
図7】
図7(a)は、記憶部に格納されたプログラムアクセス情報について模式的に示す図であり、
図7(b)は、指定範囲について模式的に示す図である。
【
図8】
図8(a)は、ログ情報について模式的に示す図であり、
図8(b)は、命令アクセス情報について模式的に示す図である。
【
図9】
図9は、
図7(a)のプログラムアクセス情報に基づいてグラフ生成部が生成したグラフを示す模式図である。
【
図10】
図10(a)、(b)は、本実施形態においてルール1が適用されるグラフの一例を示す図である。
【
図11】
図11(a)、(b)は、本実施形態においてルール2が適用されるグラフの一例を示す図である。
【
図12】
図12(a)、(b)は、本実施形態においてルール3が適用されるグラフの一例を示す図である。
【
図13】
図13は、本実施形態においてルール4が適用されるグラフの一例を示す図である。
【
図14】
図14は、本実施形態においてルール5が適用されるグラフの一例を示す図である。
【
図15】
図15は、本実施形態においてルール5が適用されるグラフの別の例について示す図である。
【
図16】
図16は、本実施形態においてルール5が適用されるグラフの更に別の例について示す図である。
【
図17】
図17は、本実施形態においてルール5が適用されるグラフの他の例について示す図である。
【
図18】
図18は、本実施形態において指定範囲、切り出し範囲、切り出さない範囲、及び共用範囲が設定されたグラフを例示する図である。
【
図19】
図19は、
図2~
図3の例で説明した方法で切り出し範囲が設定されたグラフを例示する図である。
【
図20】
図20は、本実施形態において、未使用のデータと未使用のプログラム群とを特定する処理について模式的に示す図である。
【
図21】
図21は、本実施形態において、未使用のデータを特定した結果を模式的に示す図である。
【
図22】
図22(a)、(b)は、本実施形態において、
図21のプログラム群とデータから生成されるグラフに対し、未使用のデータを特定した結果を反映させる方法について模式的に示す図である。
【
図23】
図23は、本実施形態に係る情報提示方法の全体的な処理の流れを示すフローチャートである。
【
図24】
図24は、本実施形態における切り出し範囲の設定処理の流れを示すフローチャートである。
【
図25】
図25は、本実施形態における切り出さない範囲の設定処理の流れを示すフローチャートである。
【
図26】
図26は、本実施形態における共用範囲の設定処理の流れを示すフローチャートである。
【
図27】
図27は、本実施形態における未使用範囲の設定処理の流れを示すフローチャートである。
【
図28】
図28は、本実施形態に係る情報提示装置のハードウェア構成図である。
【発明を実施するための形態】
【0009】
本実施形態の説明に先立ち、本願発明者が検討した事項について説明する。
【0010】
大規模なコンピュータシステムにおいては、複数のプログラムと複数のデータを備えたプログラム資産の一部を変更しようとした場合、その変更によって影響を受ける範囲が容易には分からない。そのような問題を解決するため、例えば、以下のようにプログラム同士の依存関係を利用してプログラム資産を分割し、分割された範囲内でプログラムの変更を行う方法が考えられる。
【0011】
図1は、分割の対象となるプログラム資産について示す模式図である。
【0012】
このプログラム資産1は、コンピュータシステムにおいて実行される複数のプログラムと複数のデータとを有する。このうち、データは、各プログラムが実行時に参照するファイルやデータベースである。
図1においては、プログラムによるデータの書き込みを実線矢印で示し、プログラムによるデータの読み出しを一点鎖線の矢印で示す。
【0013】
また、各プログラムは、実行時にデータに対して読み書きを行ったり、他のプログラムを呼び出したりすることによりサービスを実現する。このように一方のプログラムが実行時に他方のプログラムを呼び出す場合、これらのプログラムには依存関係があるという。
図1においては、呼び出し元のプログラムから呼び出し先のプログラムに向かう点線矢印で依存関係を示している。
【0014】
図2は、プログラム資産1の分割方法を示す模式図である。
図2に示すように、この例では、どこからも呼ばれないプログラムPG1、PG10、PG20を起点のプログラムとする。
【0015】
そして、起点のプログラムから呼び出されるプログラムを、起点のプログラムと共に一つのプログラム群に含める。例えば、プログラム群p1は、起点となるプログラムPG1の他に、そのプログラムPG1から呼ばれるプログラムPG2、PG3を有する。
【0016】
次に、複数のデータの各々を、複数のプログラム群のどれと共にプログラム資産1から切り出すかについて考える。
図3は、各データの取り扱いについて示す模式図である。
【0017】
あるデータに対してプログラム群が書き込みを行う場合、そのプログラム群とデータとを切り離してしまうと、プログラム群の書き込み先がなくなるため、プログラム群が自立して動作することができない。
【0018】
そこで、この例では、データに書き込みを行うプログラム群を、そのデータと共に切り出し範囲7に含める。例えば、プログラム群p1は、データd1に対して書き込みを行っているため、そのデータd1と共に切り出し範囲7に含める。
【0019】
また、データd2は、プログラム群p2、p3によって書き込みが行われているため、これらのプログラム群p2、p3と同じ切り出し範囲7に含める。
【0020】
切り出し範囲7は、その内側にあるプログラム群が自立して動作することが期待される範囲であって、プログラム資産1からの切り出しが推奨される範囲である。
【0021】
一方、プログラム群が、あるデータに対して書き込みを行わず、読み出しのみを行っている場合を考える。この場合は、書き込みの場合と比較してデータとプログラム群との関連性は弱いと考え、データとプログラム群とを切り離す。
図3の例では、データd
2とプログラム群p
1とが切り離されることになる。
【0022】
このような方法によれば、複数の切り出し範囲7の各々に、自立して動作することが期待されるプログラム群とデータとを含めることができる。そのため、プログラム資産1から切り出し範囲7を切り出し、その切り出し範囲7に含まれるプログラム群やデータをユーザが変更することで、その変更の影響が及ぶ範囲を切り出し範囲7に収めることが可能となる。
【0023】
しかしながら、本願発明者が検討したところ、この方法には次のような問題があることが明らかとなった。
【0024】
図4は、その問題について模式的に示す図である。
コンピュータシステムが対象とする業務要件等が変更された場合は、プログラム資産1において新たな業務要件等に対応する部分を指定し、その部分をプログラム資産1から切り出してユーザが変更作業を行うことになる。このように業務要件等を考慮してプログラム資産1から切り出すのが指定された範囲を指定範囲8と呼ぶ。
【0025】
指定範囲8は、業務要件等を考慮してユーザにより設定される範囲であるため、プログラム群やデータの依存関係を考慮して設定した切り出し範囲7とは必ずしも一致しない。そのため、
図4のように一つの切り出し範囲7の中に指定範囲8に属するプログラム群p
2と属さないプログラム群p
3とが生じることがある。その結果、指定範囲8に属さないプログラム群p
3を切り出すべきかどうかをユーザが明確に判断することができず、プログラム資産1の保守や変更をするのが難しいという問題が生じてしまう。
【0026】
(本実施形態)
本実施形態では、以下のようにしてプログラム資産から切り出すプログラムとデータを提示する。
【0027】
[情報提示装置]
図5は、本実施形態に係る情報提示装置について説明するための模式図である。
情報提示装置10は、プログラム資産11の一部を含む指定範囲12の指定を受け付けて、その指定範囲12を含むような切り出し範囲13を提示するPC(Personal Computer)等のコンピュータである。
【0028】
プログラム資産11は、業務システム等のコンピュータシステムで実行される複数のプログラムと複数のデータとを有する。このうち、各プログラムは、予めプログラム群に分類されているものとする。この例では、
図1及び
図2の例と同様に、どこからも呼ばれていない起点のプログラムと、そのプログラムから呼ばれるプログラムとを一つのプログラム群に含める。例えば、プログラム群p
1には、起点のプログラムPG1と、これから呼び出されるプログラムPG2、PG3とが含められる。また、プログラム群p
2には、起点のプログラムPG4と、これから呼び出されるプログラムPG2、PG3とが含められる。そして、プログラム群p
3には一つのプログラムPG5のみが含められる。なお、
図5においては、呼び出し元から呼び出し先に向かう点線矢印でプログラム同士の依存関係を示している。
【0029】
また、データは、各プログラムが実行時に読み書きを行うファイルやデータベースである。本実施形態では、プログラムによるデータの読み出しと書き込みのいずれもアクセスと呼ぶ。
図5においてプログラムからデータに向かう実線矢印は、このようにプログラムがデータにアクセスすることを示す。例えば、プログラムPG1、PG4はデータd
2にアクセスしており、プログラムPG5はデータd
3にアクセスしている。
【0030】
ここで、前述のように、プログラムの依存関係のみを利用してプログラム資産11を複数の切り出し範囲に分割しても、その切り出し範囲は業務要件の見直し等によって変更が指定される指定範囲と一致しない場合がある。
【0031】
このような場合に、情報提示装置10は、ユーザが切り出しを希望するプログラム群とデータの指定を受け付ける。例えば、業務要件の見直しによって変更を加えた方がいいとユーザが判断したプログラム群p2とデータd2とが指定範囲12に含められた場合を考える。指定範囲12は、第1の範囲の一例であって、ユーザが指定しないプログラム群とデータはその指定範囲12には含まれない。なお、プログラム群とデータのいずれか一方の指定のみを情報提示装置10が受け付けてもよい。
【0032】
この場合、情報提示装置10は、プログラム資産11からの切り出しを推奨する切り出し範囲13を提示する。切り出し範囲13は、第2の範囲の一例であって、指定範囲12のプログラムやデータを変更したときにそれに伴ってプログラムやデータを変更する必要が生じる可能性のある範囲である。
【0033】
本実施形態では、後述のように切り出し範囲13に指定範囲12が含まれるようになる。そのため、プログラム資産11から切り出し範囲13を切り出すことにより、ユーザが指定した指定範囲12も切り出すことができ、その指定範囲12に含まれるプログラム群やデータを変更することができる。更に、その変更の影響は、切り出し範囲13の外側のプログラム資産11に及ぶ可能性が低く、変更の影響を切り出し範囲13の内側に局所化することができる。
【0034】
[機能構成]
次に、情報提示装置10の機能構成について説明する。
【0035】
図6は、情報提示装置10の機能構成図である。
図6に示すように、情報提示装置10は、通信部21、制御部22、及び記憶部23を有する。
【0036】
このうち、通信部21は、他の装置との間の通信を制御する処理部であり、例えば通信インターフェース等である。
【0037】
また、制御部22は、情報提示装置10の全体を制御する処理部であり、受付部24、グラフ生成部25、提示部26、及び特定部27を有する。
【0038】
受付部24は、通信部21を介して、プログラムアクセス情報31、指定範囲12、ログ情報33、及び命令アクセス情報34の入力を受け付け、これらの情報を記憶部23に格納する。
【0039】
記憶部23は、HDD(Hard Disk Drive)等の記憶装置やDRAM(Dynamic Random Access Memory)等のメモリによって実現することができ、各種情報を記憶する。
【0040】
図7(a)は、その記憶部23に格納されたプログラムアクセス情報31について模式的に示す図である。
【0041】
プログラムアクセス情報31は、プログラム群と、そのプログラム群がアクセスするデータとを対応付けた情報である。なお、プログラム群に含まれる複数のプログラムのいずれか一つがデータにアクセスする場合、当該プログラム群はそのデータにアクセスするという。
【0042】
図7(a)の例では、プログラム群とデータとの対応関係を順序対で表しており、その順序対の第1成分がプログラム群を表し、第2成分がデータを表す。よって、順序対(p
1, d
1)は、プログラム群p
1がデータd
1にアクセスすることを示すことになる。なお、各順序対の並びは特に限定されず、この例のように辞書的に各順序対を並べてもよいし、これらをランダムに並べてもよい。
【0043】
更に、プログラムアクセス情報31の生成方法も特に限定されない。例えば、各プログラム群のソースコードに対して静的解析を行い、これによりプログラムとそれがアクセスするデータを特定することでプログラムアクセス情報31を生成することができる。更に、ユーザが手作業でプログラムアクセス情報31を作成してもよい。
【0044】
例えば、データがデータベースである場合には、そのデータベースを操作するためのSQL文のキーワードがプログラム群のソースコードに存在するかを文字列検索でユーザが検索すればよい。そして、これによりキーワードが発見されときに、そのデータベースとプログラム群とをプログラムアクセス情報31において対応付ければよい。
【0045】
図7(b)は、指定範囲12について模式的に示す図である。
指定範囲12は、ユーザが指定したプログラム資産の一部を示す範囲である。この例では、ユーザが指定したプログラム群とデータの一覧を指定範囲とする。例えば、
図5のように指定範囲12にプログラム群p
2とデータd
2とが含まれている場合、これらの一覧が指定範囲12となる。
【0046】
図8(a)は、ログ情報33について模式的に示す図である。
ログ情報33は、コンピュータシステムにおいて事前にプログラム資産11を実行したときの各プログラム同士の呼び出し関係を示す情報である。例えば、呼び出し元のプログラムと、呼び出し先のプログラムにおいて呼び出された命令の位置とが対応付けられてログ情報33に格納される。その命令の位置として、本実施形態ではプログラムにおいてその命令が記述されている行番号を採用する。
【0047】
例えば、
図8(a)の一行目では、呼び出し元のプログラムPG1がプログラムPG4を呼び出し、更にそのプログラムPG4が自身の100行目の命令を呼び出した場合を示している。同様に、二行目においては、呼び出し元のプログラムPG2がプログラムPG4を呼び出し、そのプログラムPG4が自身の105行目の命令を呼び出した場合が示されている。
【0048】
ログ情報33の生成方法は特に限定されないが、コンピュータシステムにおいて事前にプログラム資産11を実行したときのスタックトレースをログ情報33として採用し得る。
【0049】
図8(b)は、命令アクセス情報34について模式的に示す図である。
【0050】
命令アクセス情報34は、各プログラムにおける命令の位置と、その命令がアクセスするデータとを対応付けた情報である。命令の位置は、前述のようにプログラム中の行番号である。
【0051】
図8(b)の一行目の例は、プログラムPG4の100行目にある命令がデータd
1にアクセスしていることを示す。また、二行目の例は、プログラムPG4の105行目にある命令がデータd
2にアクセスしていることを示す。
【0052】
再び
図6を参照する。
グラフ生成部25は、受付部24によって入力が受け付けられたプログラムアクセス情報31に基づいて、プログラム群がどのデータにアクセスしているのかを示すグラフを生成する。
【0053】
図9は、
図7(a)のプログラムアクセス情報31に基づいてグラフ生成部25が生成したグラフを示す模式図である。
【0054】
このグラフ35は、プログラム群とデータとをノードとする有向グラフであって、プログラム群とそれがアクセスするデータとの間にエッジを有する。そのエッジの方向は、プログラム群からデータに向かう方向とする。
【0055】
グラフ35の生成方法は特に限定されない。
例えば、グラフ生成部25は、プログラムアクセス情報31にある全てのプログラム群と全てのデータに対応した全てのノードを生成する。そして、一つのプログラム群と一つのデータとがプログラムアクセス情報31で対応付けられている場合には、グラフ生成部25は、これらのプログラム群とデータとの間にエッジを張る。このような操作をグラフ生成部25がプログラムアクセス情報31にある全ての順序対に対して行うことによりグラフ35を生成することができる。
【0056】
再び
図6を参照する。
提示部26は、記憶部23に格納された指定範囲12と、グラフ生成部25が生成したグラフ35に基づいて、プログラム資産11から切り出すことが推奨される切り出し範囲13(
図13参照)を提示する処理部である。切り出し範囲13の提示方法は特に限定されない。例えば、提示部26は、CUI(Character User Interface)やGUI(Graphical User Interface)で切り出し範囲13を表示するための表示情報を生成してもよい。その場合、通信部21がその表示情報を外部装置に送信することにより、外部装置のディスプレイに切り出し範囲13が提示される。なお、情報提示装置10にディスプレイを設け、そのディスプレイに切り出し範囲13を提示してもよい。
【0057】
切り出し範囲13の設定は、以下のルール1~3に従って提示部26が行う。
【0058】
・ルール1
図10(a)、(b)は、ルール1が適用されるグラフ35の一例を示す図である。
【0059】
ルール1は、指定範囲12にデータが含まれている場合に切り出し範囲13を設定する方法を定めた規則である。
【0060】
図10(a)は、指定範囲12に一つのデータd
2のみが含まれている場合のグラフ35を例示する図である。
【0061】
そのデータd2はプログラム群p2からアクセスされているため、変更対象をデータd2のみに限定すると、変更後のデータd2にプログラム群p2がアクセスしたときにプログラム群p2が正常に実行されないおそれがある。また、プログラム実行の際にはプログラム群p2がデータd2にアクセスするため、プログラム群p2とデータd2とで一つのサービスが実現されると考えることもできる。プログラムやデータの変更はサービス単位で行われることがあり、サービス単位でプログラム資産11から切り出すのが好ましい。
【0062】
そこで、本実施形態では、提示部26が、指定範囲12と、その指定範囲12に含まれるデータにアクセスするプログラム群とを切り出し範囲13に含める。なお、そのようなプログラム群が指定範囲12の内側にある場合には、そもそもユーザがプログラム群とデータとを一緒にして切り出すことを意図しているため、そのプログラム群を切り出し範囲13に含める実益がない。よって、提示部26は、指定範囲12に含まれるデータに指定範囲12の外からアクセスするプログラム群を切り出し範囲13に含める。
【0063】
図10(a)の例では、プログラム群p
2がデータd
2と共に切り出し範囲13に含められることになる。切り出し範囲13の提示方法は特に限定されないが、ここでは{p
2, d
2}のようにプログラム群とデータとを列挙することにより提示部26が提示する。
【0064】
なお、プログラム群p2はデータd3にもアクセスしているため、データd3も切り出し範囲13に含めることも考えられる。しかし、データd3は、プログラム群p3からもアクセスされているため、プログラム群p2とデータd2とで実現されるサービスのみが利用するデータではない。よって、サービス単位で切り出すという考えに基づき、本実施形態ではデータd3を切り出し範囲13に含めない。
【0065】
図10(b)は、指定範囲12に二つのデータd
1、d
2が含まれている場合のグラフ35を例示する図である。
【0066】
この場合も、
図10(a)と同様の理由により、提示部26は、データd
1にアクセスするプログラム群p
1と、データd
2にアクセスするプログラム群p
2と、指定範囲12とを切り出し範囲13に含める。その切り出し範囲13は{p
1, p
2, d
1, d
2}と表すことができる。
【0067】
・ルール2
図11(a)、(b)は、ルール2が適用されるグラフ35の一例を示す図である。
【0068】
ルール2は、指定範囲12にプログラム群が含まれている場合に切り出し範囲13を設定する方法を定めた規則である。
【0069】
図11(a)は、指定範囲12に一つのプログラム群p
2のみが含まれている場合のグラフ35を例示する図である。
【0070】
プログラム群p2のアクセス先にはデータd1、d2、d3があり、プログラム群p2の変更に合わせてこれらのデータも変更するのが好ましいとも考えられる。しかし、例えばデータd3はプログラム群p3からもアクセスされているため、データd3の変更に合わせてプログラム群p3も変更する必要が生じ、変更を加えるべきデータやプログラムが連鎖してしまう。
【0071】
これを防ぐため、本実施形態では、提示部26が、複数のプログラム群のうちで指定範囲12に含まれるプログラム群のみがアクセスするデータを、指定範囲12と共に切り出し範囲13に含める。なお、そのデータが指定範囲12に含まれている場合には、そもそもユーザがそのデータを切り出すことを意図しているため、そのデータを切り出し範囲13に含める実益がない。そこで、この例では、提示部26は、指定範囲12に含まれるプログラム群のみがアクセスするデータのうち、指定範囲12の外にあるデータを切り出し範囲13に含める。
【0072】
図11(a)の例では、プログラム群p
2のみがアクセスするデータd
2が、プログラム群p
2と共に切り出し範囲13に含められる。その切り出し範囲13は{p
2, d
2}と表すことができる。
【0073】
このように切り出し範囲13に含めるデータを指定範囲12に含まれるプログラム群のみがアクセスするデータに限定することにより、変更を加えるべきデータやプログラムが連鎖するのを防止できる。
【0074】
図11(b)は、指定範囲12に二つのプログラム群p
1、p
2が含まれている場合のグラフ35を例示する図である。
【0075】
この場合も、
図11(a)と同様の理由により、提示部26は、プログラム群p
1、p
2のみがアクセスするデータd
1、d
2を、指定範囲12と共に切り出し範囲13に含める。その切り出し範囲13は{p
1, p
2, d
1, d
2}と表すことができる。
【0076】
・ルール3
図12(a)、(b)は、ルール3が適用されるグラフ35の一例を示す図である。
【0077】
ルール3は、指定範囲12にプログラム群とデータの両方が含まれている場合に切り出し範囲13を設定する方法を定めた規則である。
【0078】
図12(a)は、指定範囲12にプログラム群p
2とデータd
2とが含まれている場合のグラフ35を例示する図である。
【0079】
この場合は、前述のルール1に従って、提示部26が、指定範囲12に含まれるデータd2にアクセスするプログラム群p1を、指定範囲12と共に切り出し範囲13に含める。
【0080】
そのプログラム群p1は更にデータd1にアクセスしており、ユーザがプログラム群p1を変更するとその影響をデータd1が受ける可能性がある。更に、データd1は、プログラム群p1のみからアクセスされているため、切り出し範囲13にデータd1を含めても、変更を加えるべきデータやプログラムの連鎖は生じない。
【0081】
そこで、提示部26はデータd1も切り出し範囲13に含める。ルール3において切り出し範囲13に含められるデータは、指定範囲12の外にあるデータであり、かつ複数のプログラム群のうちで指定範囲12のデータにアクセスするプログラム群のみがアクセスするデータである。
【0082】
なお、切り出し範囲13に含めるデータを指定範囲12の外のデータとしたのは、指定範囲12の内側のデータは切り出し範囲13に包含されているため、改めて切り出し範囲13に含める必要がないからである。
【0083】
図12(b)は、指定範囲12にプログラム群p
2とデータd
2とが含まれている場合のグラフ35の別の例を示す図である。
【0084】
この例では、データd1は、指定範囲12のデータd2にアクセスするプログラム群p1だけでなく、プログラム群p0からもアクセスされている。この場合には、変更を加えるべきデータやプログラムの連鎖を防止するために、提示部26は切り出し範囲13にデータd1を含めない。これにより、切り出し範囲13が際限なく広がるのを防止して、変更対象となるプログラム群やデータが増加するのを抑制することができる。
【0085】
以上のように、提示部26は、ルール1~3に従って切り出し範囲13を設定する。
【0086】
その切り出し範囲13の他に、プログラム資産11から切り出さないことを推奨する範囲を提示するとユーザの利便性が向上する。そこで、提示部26は、以下のルール4に従い、グラフ35に基づいて切り出さない範囲を提示する。
【0087】
・ルール4
図13は、ルール4が適用されるグラフ35の一例を示す図である。
提示部26は、このグラフ35に基づいて切り出さない範囲14を提示する。切り出さない範囲14は、第3の範囲の一例であって、プログラム資産11から切り出さないことを推奨する範囲である。例えば、切り出し範囲13に含まれるプログラム群やデータを変更しても、その影響を受け難いプログラム群やデータが切り出さない範囲14に含められる。
【0088】
ここでは、提示部26は、切り出し範囲13に含まれるプログラム群からアクセスされないデータを切り出さない範囲14に含める。
図13の例では、データd
4、d
6がそのようなデータとなる。これらのデータd
4、d
6は、切り出し範囲13に含まれるプログラム群p
1、p
2からアクセスされておらず、プログラム群p
1、p
2に合わせた変更をする必要がないため、切り出さない範囲14に含められる。
【0089】
また、この例では、上記のように切り出し範囲13に含まれるプログラム群からアクセスされないデータd4が、切り出し範囲13にないプログラム群p4からアクセスされている。そのプログラム群p4は、切り出し範囲13に含まれるデータd1、d2にアクセスしていないため、データd1、d2の変更に合わせた変更を行う必要性が少なく、切り出さない範囲14に含めることができる。
【0090】
よって、提示部26は、切り出し範囲13に含まれるプログラム群からアクセスされないデータにアクセスするプログラム群のうち、切り出し範囲13に含まれるデータにアクセスしないプログラム群を切り出さない範囲14に含める。
【0091】
このようなルールにより、プログラム群p4、p5、p6が切り出さない範囲14に含められることになる。そして、提示部26が切り出さない範囲14を提示することにより、切り出さない範囲14に含まれるデータやプログラム群をプログラム資産11に残してもよいとユーザが判断することができ、ユーザの利便性を向上させることができる。
【0092】
ところで、プログラム資産11の中には、切り出し範囲13と切り出さない範囲14の各々が共用するデータやプログラム群が存在する場合がある。そのようなデータやプログラム群を含む範囲を以下では共用範囲と呼ぶ。その共用範囲は、以下のルール5に従って提示部26がグラフ35に基づいて設定する。
【0093】
・ルール5
図14は、ルール5が適用されるグラフ35の一例を示す図である。
共用範囲15は、第4の範囲の一例であって、以下のように設定される。
【0094】
まず、提示部26は、切り出し範囲13に含まれるプログラム群と切り出さない範囲14に含まれるプログラム群の各々からアクセスされるデータを共用範囲15に含める。
【0095】
図14の例では、データd
3が、切り出し範囲13のプログラム群p
2及び切り出さない範囲14のプログラム群p
4からアクセスされており、切り出し範囲13と切り出さない範囲14が共用しているデータと捉えることができる。よって、提示部26は、共用範囲15にデータd
3を含める。同様の理由により、データd
5も共用範囲15に含められる。
【0096】
また、このように切り出し範囲13と切り出さない範囲14の各々のプログラム群からアクセスされるデータが存在するとき、そのデータにアクセスするプログラム群が存在することがある。
図14の例では、データd
3にアクセスするプログラム群p
3がそのようなプログラム群となる。プログラム群p
3は、アクセス先のデータd
3と協働して一つのサービスを提供すると考えることができる。また、ユーザにとっては、同一のサービスを提供するプログラム群とデータとを同一の範囲に含めて提示された方が便利である。
【0097】
そこで、提示部26は、このように切り出し範囲13と切り出さない範囲14の各々のプログラム群からアクセスされるデータが存在するとき、そのデータにアクセスするプログラム群も共用範囲15に含める。これにより、前述のプログラム群p3も共用範囲15に含められることになる。
【0098】
なお、プログラム群p3が切り出し範囲13と切り出さない範囲14のいずれか一方に既に分類されている場合には、切り出し範囲13と切り出さない範囲14の各々でプログラム群p3が共用されているとは言い難い。よって、提示部26は、切り出し範囲13と切り出さない範囲14の各々の外にあるプログラム群を切り出さない範囲14に含める候補とする。
【0099】
図15は、共用範囲15を決めるルール5が適用されるグラフ35の別の例について示す図である。
【0100】
図15の例では、提示部26が、ルール5に従うことにより、切り出し範囲13のプログラム群p
2と切り出さない範囲14のプログラム群p
4の各々からアクセスされるデータd
3を共用範囲15に含める。同様に、提示部26は、データd
5も共用範囲15に含める。
【0101】
また、ルール5に従い、提示部26は、データd3にアクセスするプログラム群p3と、データd5にアクセスするプログラム群p5も切り出さない範囲14に含める。なお、プログラム群p5はデータd3とデータd5の二つにアクセスしているが、アクセス先の個数はルール5の解釈に影響を与えないため、このようにプログラム群p5も切り出さない範囲14に含めて構わない。
【0102】
図16は、共用範囲15を決めるルール5が適用されるグラフ35の更に別の例について示す図である。
【0103】
図16の例では、ルール5に従うことにより、切り出し範囲13のプログラム群p
2と切り出さない範囲14のプログラム群p
0の各々からアクセスされるデータd
1が共用範囲15に含められる。また、ルール5に従い、データd
1にアクセスするプログラム群p
1も切り出さない範囲14に含められる。
【0104】
図17は、共用範囲15を決めるルール5が適用されるグラフ35の他の例について示す図である。
【0105】
図17の例では、切り出し範囲13に含まれるデータと切り出さない範囲14に含まれるデータのいずれにもアクセスしないプログラム群p
0が存在する。そのプログラム群p
0は、切り出し範囲13と切り出さない範囲14のどちらとも関連性がない独立したプログラム群である。そのように独立したプログラム群が存在することを提示すると、ユーザがプログラム資産11の現状を把握することができる。
【0106】
そこで、提示部26は、このように切り出し範囲13に含まれるデータと切り出さない範囲14に含まれるデータのいずれにもアクセスしないプログラム群も共用範囲15に含めて提示する。
【0107】
以上説明したように、本実施形態によれば、提示部26が、切り出し範囲13、切り出さない範囲14、及び共用範囲15を提示する。
【0108】
図18は、これらの各範囲と指定範囲12とが設定されたグラフ35を例示する図である。
【0109】
図18に示すように、本実施形態に従って切り出し範囲13を設定すると、指定範囲12の全ての部分が切り出し範囲13に含まれるようになる。そのため、切り出し範囲13をプログラム資産11から切り出すことで、ユーザがプログラム群やデータの変更を希望する指定範囲12もプログラム資産11から切り出すことができる。これにより、指定範囲12と共に切り出すべき範囲が明確になると共に、その指定範囲12のプログラム群やデータを変更したときに影響を受ける範囲を切り出し範囲13に留めることが可能となる。
【0110】
図19は、
図2~
図3の例で説明した方法で切り出し範囲13が設定されたグラフ35を例示する図である。
【0111】
その切り出し範囲13は、指定範囲12を考慮せずに、前述のようにプログラムの依存関係のみを利用して設定される。そのため、一つの切り出し範囲13の中に、指定範囲12に属するプログラム群p2と、指定範囲12に属さないプログラム群p3及びデータd2、d3が生じてしまう。その結果、プログラム群p3とデータd2、d3とを切り出すべきかどうかをユーザが明確に判断することができず、プログラム資産11の変更や保守が困難となる。
【0112】
ところで、プログラム資産11の中には、実行時に指定範囲12に含まれるプログラム群が使用しないデータや、指定範囲12に含まれるデータを使用しないプログラム群がある。このように実行時に使用されないプログラム群やデータは、指定範囲12に含まれるプログラム群やデータに対する変更の影響を受けないため、プログラム資産11から切り出さずに残すことができる。
【0113】
特定部27(
図6参照)は、このような未使用のデータとプログラム群とを特定するための処理部である。
【0114】
その処理について
図20を参照して説明する。
図20は、未使用のデータと未使用のプログラム群とを特定する処理について模式的に示す図である。
【0115】
ここでは、プログラム群p1の起点がプログラムPG1であり、プログラム群p2の起点がプログラムPG2であるとする。そして、各プログラム群p1、p2に共通に含まれるプログラムPG4が、ソースコード上でデータd1とデータd2の両方にアクセスしているものとする。
【0116】
このような依存関係によれば、ソースコード上ではプログラムPG1がプログラムPG4を介してデータd1とデータd2の両方にアクセスしているように見える。しかし、実際にプログラムを実行すると、以下のように未使用のデータが発生する。
【0117】
ログ情報33を参照すると、プログラムPG1は、プログラムPG4の100行目の命令を呼び出している。その命令は、命令アクセス情報34を参照すると、データd1にアクセスする命令であって、データd2にアクセスする命令ではない。これにより、データd2は、プログラムPG1がアクセスしない未使用のデータであることが分かる。同様に、データd1が、プログラムPG2がアクセスしない未使用のデータであることも分かる。
【0118】
これを利用して、特定部27は、以下のように未使用のデータやプログラム群を特定する。
【0119】
まず、特定部27は、ログ情報33を記憶した記憶部23を参照することにより、呼び出し元のプログラムを実行したときに、呼び出し先のプログラムが実際に呼び出す命令の位置を特定する。
【0120】
図20のログ情報33の一行目では、呼び出し先のプログラムPG4における100行目の命令が呼び出されている。よって、特定部27は、呼び出し先のプログラムPG4における100行目の命令が、呼び出し元のプログラムPG1を実行したときに呼び出されることを特定する。同様に、特定部27は、呼び出し先のプログラムPG4における105行目の命令が、呼び出し元のプログラムPG2を実行したときに呼び出されることを特定する。
【0121】
次に、特定部27は、命令アクセス情報34を記憶した記憶部23を参照することにより、先に特定した命令の位置に対応しないデータを、呼び出し元のプログラムが使用していないことを特定する。
【0122】
例えば、命令アクセス情報34に含まれるデータd1を考える。命令アクセス情報34においてデータd1に対応する命令の位置は、プログラムPG4の100行目である。この位置は、ログ情報33におけるプログラムPG2に対応した位置(プログラムPG4の105行目)とは異なる。よって、実際にはプログラムPG2がデータd1を使用しないことが特定部27によって特定される。同様に、プログラムPG1が実際にはデータd2を使用しないことが特定部27によって特定される。
【0123】
この処理によって生成された結果を
図21に示す
図21は、未使用のデータを特定した結果を模式的に示す図である。
図21に示すように、実行時にプログラムPG1が使用するのはデータd
1であり、データd
2をプログラムPG1は使用しない。また、実行時にプログラムPG2が使用するのはデータd
2であり、データd
1をプログラムPG2は使用しない。
【0124】
グラフ生成部25は、特定部27のこの処理の結果を以下のようにグラフ35に反映させる。
【0125】
図22(a)、(b)は、
図21のプログラム群p
1、p
2とデータd
1、d
2から生成されるグラフ35に対し、未使用のデータを特定した結果をグラフ生成部25が反映させる方法について模式的に示す図である。
【0126】
このうち、
図22(a)は、結果を反映させる前のグラフ35を模式的に示す図である。結果を反映させる前は、グラフ生成部25によって、プログラム群p
1がデータd
2にアクセスすることを示すエッジがプログラム群p
1とデータd
2との間に張られる。同様に、グラフ生成部25によって、プログラム群p
2とデータd
1との間にもエッジが張られる。
【0127】
一方、
図22(b)は、未使用のデータを特定した結果を反映させた後のグラフ35を模式的に示す図である。グラフ生成部25は、結果を反映させるために、プログラム群p
1とデータd
2との間のエッジを、データが未使用であることを示す点線に変える。同様に、グラフ生成部25は、プログラム群p
2とデータd
1との間のエッジを点線にする。
【0128】
ここで、ユーザがプログラム群p1とデータd1とを含む指定範囲12を指定した場合を考える。
【0129】
この場合、提示部26は、指定範囲12に含まれるプログラム群p1が実行時に使用しないデータd2を未使用範囲16に含める。例えば、提示部26は、プログラム群p1とデータd2との間のエッジが点線である場合に、そのデータd2を未使用範囲16に含める。
【0130】
更に、提示部26は、指定範囲12に含まれるデータd1を実行時に使用しないプログラム群p2も未使用範囲16に含める。この場合も、提示部26は、プログラム群p2とデータd1との間のエッジが点線である場合に、そのプログラム群p2を未使用範囲16に含める。
【0131】
未使用範囲16は、第5の範囲の一例であって、指定範囲12に含まれるプログラム群p1とデータd1をユーザが変更してもその影響を受けない範囲である。よって、提示部26が未使用範囲16を提示することにより、ユーザが未使用範囲16をプログラム資産11から切り出す必要はないと判断することが可能となる。
【0132】
[全体処理の流れ]
図23は、本実施形態に係る情報提示方法の全体的な処理の流れを示すフローチャートである。
【0133】
図23に示すように、情報提示装置10は各種情報を受け付ける(ステップS1)。例えば、情報提示装置10は、指定範囲12、プログラムアクセス情報31、ログ情報33、及び命令アクセス情報34の各々を受け付ける。
【0134】
次いで、情報提示装置10は、プログラムアクセス情報31に基づいてグラフ35を生成し(ステップS2)、そのグラフ35上で未使用データを反映させる(ステップS3)。未使用データを反映させる方法としては、
図22に示したように、未使用のデータとプログラム群との間のエッジを点線にする等の方法がある。
【0135】
そして、情報提示装置10は、切り出し範囲13の設定処理を行い(ステップS4)、その後に切り出さない範囲14の設定処理を行う(ステップS5)。続いて、情報提示装置10は、共用範囲15の設定処理を行い(ステップS6)、未使用範囲16の設定処理を行う(ステップS7)。
【0136】
その後、情報提示装置10は、指定範囲12、切り出し範囲13、切り出さない範囲14、共用範囲15、及び未使用範囲16の各範囲をCUIやGUIで提示する(ステップS8)。
【0137】
GUIの場合には、提示部26は、
図18や
図22(b)のようにグラフ35に各範囲を重ねて表示するための表示情報を生成する。
【0138】
また、CUIの場合には、提示部26は、各範囲に含まれるグラフ35のノードを列挙するような表示情報を生成する。
図18のグラフ35の場合には、提示部26は、例えば以下のようにノードを列挙するための括弧「{}」を用意し、その括弧の中に各ノードを列挙して提示すればよい。
【0139】
指定範囲12:{p1, p2}
切り出し範囲13:{p1, p2, d1, d2}
切り出さない範囲14: {p4, d4}, {p5, p6, d6}
共用範囲15:{p3, d3}, {d5}, {p0}
【0140】
また、
図22のグラフ35の場合には、提示部26は、以下のように未使用範囲16を提示し得る。
未使用範囲16:{p
2, d
2}
【0141】
[切り出し範囲の設定処理の流れ]
次に、
図23のステップS4で実行される切り出し範囲の設定処理について説明する。
【0142】
図24は、切り出し範囲の設定処理の流れを示すフローチャートである。
【0143】
図24に示すように、提示部26は、切り出し範囲13を空に初期化する(ステップS11)。例えば、提示部26は、切り出し範囲13を提示するための括弧「{}」の中身を空に初期化する。
【0144】
続いて、提示部26は、指定範囲12を切り出し範囲13に追加する(ステップS12)。例えば、
図12(a)のように指定範囲12にプログラム群p
2とデータd
2が含まれている場合には、提示部26はプログラム群p
2とデータd
2とを切り出し範囲13に追加する。
【0145】
次いで、提示部26は、指定範囲12に含まれるデータに指定範囲12の外からアクセスするプログラム群を切り出し範囲13に追加する(ステップS13)。
図12(a)の例では、データd
2にアクセスするプログラム群p
1が切り出し範囲13に追加されることになる。
【0146】
そして、提示部26は、指定範囲12に含まれるプログラム群のみがアクセスするデータのうち、指定範囲12の外にあるデータを切り出し範囲13に追加する(ステップS14)。
図11(a)の例では、データd
2は、指定範囲12の外にあるデータであり、更に指定範囲12に含まれるプログラム群p
2のみがアクセスするデータであるから、切り出し範囲13に追加されることになる。
【0147】
次に、提示部26は、指定範囲12の外にあるデータのうち、指定範囲12に含まれるデータに指定範囲12の外からアクセスするプログラム群のみがアクセスするデータを切り出し範囲に追加する(ステップS15)。
図12(a)の例では、指定範囲12の外にあるデータd
1がプログラム群p
1のみからアクセスされている。そのプログラム群p
1は、指定範囲12にあるデータd
2に指定範囲12の外からアクセスするプログラム群である。よって、データd
1が切り出し範囲13に追加されることになる。
【0148】
[切り出さない範囲の設定処理の流れ]
次に、
図25のステップS5で実行される切り出さない範囲の設定処理について説明する。
【0149】
図25は、切り出さない範囲の設定処理の流れを示すフローチャートである。
【0150】
図25に示すように、提示部26は、切り出さない範囲14を空に初期化する(ステップS21)。例えば、提示部26は、切り出さない範囲14を提示するための括弧「{}」の中身を空に初期化する。
【0151】
続いて、提示部26は、指定範囲12に含まれるプログラム群からアクセスされないデータを切り出さない範囲14に追加する(ステップS22)。
図13の例では、データd
4、d
6は、切り出し範囲13に含まれるプログラム群p
1、p
2からアクセスされていないため、切り出さない範囲14に追加される。
【0152】
次に、提示部26は、ステップS22のデータにアクセスするプログラム群のうち、切り出し範囲13のデータにアクセスしないプログラム群を切り出さない範囲14に追加する(ステップS23)。
図13の例ではプログラム群p
4、p
5、p
6が切り出さない範囲14に追加される。
【0153】
[共用範囲の設定処理の流れ]
次に、
図23のステップS6で実行される共用範囲の設定処理について説明する。
【0154】
図26は、共用範囲の設定処理の流れを示すフローチャートである。
図26に示すように、提示部26は、共用範囲15を空に初期化する(ステップS31)。例えば、提示部26は、共用範囲15を提示するための括弧「{}」の中身を空に初期化する。
【0155】
次に、提示部26は、切り出し範囲13と切り出さない範囲14の各々のプログラム群からアクセスされるデータを共用範囲15に追加する(ステップS32)。
図14の例では、データd
3、d
5が共用範囲15に追加される。
【0156】
続いて、提示部26は、ステップS32のデータにアクセスするプログラム群のうち、切り出し範囲13と切り出さない範囲14の各々の外にあるプログラム群を共用範囲15に追加する(ステップS33)。
図14の例では、プログラム群p
3が共用範囲15に追加される。
【0157】
次いで、提示部26は、切り出し範囲13と切り出さない範囲14のいずれのデータにもアクセスしないプログラム群を共用範囲15に追加する(ステップS34)。
図17の例ではプログラム群p
0が共用範囲15に追加される。
【0158】
[未使用範囲の設定処理の流れ]
次に、
図23のステップS7で実行される未使用範囲の設定処理について説明する。
【0159】
図27は、未使用範囲の設定処理の流れを示すフローチャートである。
【0160】
図27に示すように、提示部26は、未使用範囲16を空に初期化する(ステップS41)。例えば、提示部26は、未使用範囲16を提示するための括弧「{}」の中身を空に初期化する。
【0161】
次いで、特定部27は、ログ情報33と命令アクセス情報34が記憶された記憶部23を参照することにより、プログラム実行の際に未使用となるデータを特定する(ステップS42)。例えば、特定部27は、ログ情報33と命令アクセス情報34において、呼び出し元のプログラムとデータとが対応付けられない場合に、その呼び出し元のプログラムが実行時にそのデータを使用しないと特定する。
図22(b)の例では、プログラム群p
1が実行時にデータd
2を使用せず、プログラム群p
2が実行時にデータd
1を使用しないことが特定される。
【0162】
続いて、提示部26は、特定部27の処理の結果を利用して、指定範囲12のプログラムが使用しないデータと、指定範囲12のデータを使用しないプログラム群とを未使用範囲16に追加する(ステップS43)。
【0163】
[ハードウェア構成]
図28は、本実施形態に係る情報提示装置10のハードウェア構成図である。
【0164】
図28に示すように、情報提示装置10は、記憶装置10a、メモリ10b、プロセッサ10c、及び通信インターフェース10dを有する。これらの各部は、バス10eにより相互に接続される。
【0165】
このうち、記憶装置10aは、HDDやSSD(Solid State Drive)等の不揮発性のストレージデバイスであり、本実施形態に係る情報提示プログラム40を記憶する。
【0166】
なお、情報提示プログラム40をコンピュータが読み取り可能な記録媒体10fに記録させておき、プロセッサ10cに記録媒体10fの情報提示プログラム40を読み取らせるようにしてもよい。
【0167】
そのような記録媒体10fとしては、例えばCD-ROM(Compact Disc - Read Only Memory)、DVD(Digital Versatile Disc)、及びUSB(Universal Serial Bus)メモリ等の物理的な可搬型記録媒体がある。また、フラッシュメモリ等の半導体メモリやハードディスクドライブを記録媒体10fとして使用してもよい。これらの記録媒体10fは、物理的な形態を持たない搬送波のような一時的な媒体ではない。
【0168】
更に、公衆回線、インターネット、及びLAN(Local Area Network)等に接続された装置に情報提示プログラム40を記憶させておき、プロセッサ10cがその情報提示プログラム40を読み出して実行するようにしてもよい。
【0169】
一方、メモリ10bは、DRAM等のようにデータを一時的に記憶するハードウェアであって、その上に前述の情報提示プログラム40が展開される。
【0170】
プロセッサ10cは、情報提示装置10の各部を制御したり、メモリ10bと協働して情報提示プログラム40を実行したりするCPU(Central Processing Unit)やGPU(Graphical Processing Unit)等のハードウェアである。
【0171】
このようにメモリ10bとプロセッサ10cとが協働して情報提示プログラム40を実行することにより、
図6に示したように、受付部24、グラフ生成部25、提示部26、及び特定部27を備えた制御部22が実現される。また、記憶部23は、記憶装置10aとメモリ10bによって実現される。
【0172】
更に、通信インターフェース10dは、情報提示装置10をLAN等のネットワークに接続するためのインターフェースである。その通信インターフェース10dにより通信部21(
図6参照)が実現される。
【0173】
以上説明した各実施形態に関し、更に以下の付記を開示する。
(付記1) コンピュータに、
複数のプログラム群と複数のデータの少なくとも一部を含む第1の範囲の指定を受け付ける処理と、
前記第1の範囲と、前記第1の範囲に含まれるデータに前記第1の範囲の外からアクセスするプログラム群と、複数の前記プログラム群のうち前記第1の範囲に含まれるプログラム群のみがアクセスするデータであって前記第1の範囲の外にあるデータとを含む第2の範囲を、複数の前記プログラム群と複数の前記データから切り出す範囲として提示する処理と、
を実行させるための情報提示プログラム。
(付記2) 前記提示する処理において、
複数の前記プログラム群のうち、前記第1の範囲に含まれるデータに前記第1の範囲の外からアクセスするプログラム群のみがアクセスするデータであって、前記第1の範囲の外のデータを前記第2の範囲に含めることを特徴とする付記1に記載の情報提示プログラム。
(付記3) 前記提示する処理において、
前記第2の範囲に含まれるプログラム群からアクセスされないデータと、当該データにアクセスするプログラム群のうち、前記第2の範囲に含まれるデータにアクセスしないプログラム群とを含む第3の範囲を、複数の前記プログラム群と複数の前記データから切り出さない範囲として提示することを特徴とする付記1に記載の情報提示プログラム。
(付記4) 前記提示する処理において、
前記第2の範囲に含まれるプログラム群及び前記第3の範囲に含まれるプログラム群の各々からアクセスされるデータと、当該データにアクセスするプログラム群であって、前記第2の範囲及び前記第3の範囲の各々の外にあるプログラム群と、前記第2の範囲に含まれるデータと前記第3の範囲に含まれるデータのいずれにもアクセスしないプログラム群とを含む第4の範囲を、前記第2の範囲と前記第3の範囲の各々のプログラム群とデータとが共用する共用範囲として提示することを特徴とする付記3に記載の情報提示プログラム。
(付記5) 前記提示する処理において、
前記第1の範囲のプログラム群に含まれるプログラムが実行時に使用しないデータと、前記第1の範囲に含まれるデータを実行時に使用しないプログラム群とを含む第5の範囲を、前記第1の範囲のプログラム群とデータが実行時に使用しない未使用範囲として提示することを特徴とする付記1に記載の情報提示プログラム。
(付記6) 前記プログラムと、当該プログラムが呼び出した呼び出し先のプログラムが実行時に呼び出した命令の位置とを対応させたログ情報と、前記命令の位置と前記命令がアクセスするデータとを対応させたアクセス情報とを記憶した記憶部を参照し、前記プログラムと前記データとが対応付けられない場合に、前記プログラムが実行時に前記データを使用しないことを特定する処理を更に有することを特徴とする付記5に記載の情報提示プログラム。
(付記7) 複数のプログラム群と複数のデータの少なくとも一部を含む第1の範囲の指定を受け付ける受付部と、
前記第1の範囲と、前記第1の範囲に含まれるデータに前記第1の範囲の外からアクセスするプログラム群と、複数の前記プログラム群のうち前記第1の範囲に含まれるプログラム群のみがアクセスするデータであって前記第1の範囲の外にあるデータとを含む第2の範囲を、複数の前記プログラム群と複数の前記データから切り出す範囲として提示する提示部と、
を有することを特徴とする情報提示装置。
(付記8) 複数のプログラム群と複数のデータの少なくとも一部を含む第1の範囲の指定を受け付ける処理と、
前記第1の範囲と、前記第1の範囲に含まれるデータに前記第1の範囲の外からアクセスするプログラム群と、複数の前記プログラム群のうち前記第1の範囲に含まれるプログラム群のみがアクセスするデータであって前記第1の範囲の外にあるデータとを含む第2の範囲を、複数の前記プログラム群と複数の前記データから切り出す範囲として提示する処理と、
をコンピュータが実行することを特徴とする情報提示方法。
【符号の説明】
【0174】
1、11…プログラム資産、7…切り出し範囲、8…指定範囲、10…情報提示装置、10a…記憶装置、10b…メモリ、10c…プロセッサ、10d…通信インターフェース、10e…バス、10f…記録媒体、12…指定範囲、13…切り出し範囲、14…切り出さない範囲、15…共用範囲、16…未使用範囲、21…通信部、22…制御部、23…記憶部、24…受付部、25…グラフ生成部、26…提示部、27…特定部、31…プログラムアクセス情報、33…ログ情報、34…命令アクセス情報、35…グラフ、40…情報提示プログラム。