(57)【要約】【課題】プログラムの稼働判定の精度を向上すること。【解決手段】本発明にかかるプログラム稼働判定装置は、複数のプログラムのうちコードが閾値以上の割合で一致する類似プログラムの集合を示す類似情報と、各プログラムの最終更新日を示す更新情報と、各プログラムの稼働日の履歴を示す稼働情報と、を記憶する記憶部と、類似情報及び稼働情報に基づいて、集合内の各類似プログラムの中から稼働日が最新である最新稼働プログラムを特定する特定部と、最新稼働プログラムの更新情報及び稼働情報に基づいて、各類似プログラムにおける稼働情報に所定の分類を付与する分類部と、稼働情報に付与された分類に基づいて、各類似プログラムに対して、現在稼働対象であるか否かを判定する稼働判定部と、を備える。【選択図】図１
2019057124.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラムのうちコードが閾値以上の割合で一致する類似プログラムの集合を示す類似情報と、各プログラムの最終更新日を示す更新情報と、各プログラムの稼働日の履歴を示す稼働情報と、を記憶する記憶部と、
前記類似情報及び前記稼働情報に基づいて、前記集合内の各類似プログラムの中から前記稼働日が最新である最新稼働プログラムを特定する特定部と、
前記最新稼働プログラムの前記更新情報及び前記稼働情報に基づいて、前記各類似プログラムにおける前記稼働情報に所定の分類を付与する分類部と、
前記稼働情報に付与された分類に基づいて、前記各類似プログラムに対して、現在稼働対象であるか否かを判定する稼働判定部と、
を備えるプログラム稼働判定装置。
【請求項２】
前記分類部は、
前記最新稼働プログラムの最終更新日、当該最終更新日の直後の稼働日である初回稼働日、及び、前記最新稼働プログラム以外の類似プログラムの最終更新日の少なくともいずれかと、各類似プログラムの前記稼働日とを比較して、前記各類似プログラムにおける前記稼働情報に前記所定の分類を付与する
請求項１に記載のプログラム稼働判定装置。
【請求項３】
前記分類部は、
前記各類似プログラムの前記稼働日が、前記最新稼働プログラムの最終更新日より古いか否か、前記最新稼働プログラム以外の類似プログラムの最終更新日より古いか否か、前記最新稼働プログラムの最終更新日以降、かつ、前記初回稼働日より古いか否か、及び、前記初回稼働日以降か否かの少なくともいずれかに基づいて、前記稼働情報に前記所定の分類を付与する
請求項２に記載のプログラム稼働判定装置。
【請求項４】
前記分類部は、前記稼働日が前記初回稼働日以降である前記稼働情報に有効の分類を付与し、
前記稼働判定部は、前記有効の分類が付与された前記稼働情報に対応する類似プログラムに対して前記現在稼働対象であると判定する
請求項２又は３に記載のプログラム稼働判定装置。
【請求項５】
前記分類部は、前記各類似プログラムについて現在稼働対象である可能性を示す指標値である複数の稼働確度のいずれかを前記分類として前記稼働情報に付与し、
前記稼働判定部は、前記稼働情報に付与された前記稼働確度に基づいて、前記複数の類似プログラムのそれぞれに対して、前記現在稼働対象であるか否かを判定する
請求項１乃至３のいずれか１項に記載のプログラム稼働判定装置。
【請求項６】
前記稼働判定部は、前記稼働情報に付与された前記稼働確度を前記類似プログラムごとに合計した値を、前記判定の結果に対応付けて出力する
請求項５に記載のプログラム稼働判定装置。
【請求項７】
前記記憶部は、外部から入力された前記所定の分類の条件をさらに記憶し、
前記分類部は、前記記憶部に記憶された分類の条件に基づいて、前記稼働情報に前記所定の分類を付与する
請求項１乃至６のいずれか１項に記載のプログラム稼働判定装置。
【請求項８】
前記記憶部は、
前記複数のプログラムの一部のプログラムと、前記現在稼働対象であるか否かを示す稼働確定情報とを対応付けてさらに記憶し、
前記稼働判定部は、前記各類似プログラムのうち前記稼働確定情報と対応付けられたプログラムについて、当該対応付けられた稼働確定情報を前記判定の結果とする
請求項１乃至７のいずれか１項に記載のプログラム稼働判定装置。
【請求項９】
複数のプログラムのうちコードが閾値以上の割合で一致する類似プログラムの集合を示す類似情報、及び、各プログラムの稼働日の履歴を示す稼働情報に基づいて、前記集合内の各類似プログラムの中から前記稼働日が最新である最新稼働プログラムを特定し、
前記最新稼働プログラムの最終更新日及び前記稼働情報に基づいて、前記各類似プログラムにおける前記稼働情報に所定の分類を付与し、
前記稼働情報に付与された分類に基づいて、前記各類似プログラムに対して、現在稼働対象であるか否かを判定する、
プログラム稼働判定方法。
【請求項１０】
複数のプログラムのうちコードが閾値以上の割合で一致する類似プログラムの集合を示す類似情報、及び、各プログラムの稼働日の履歴を示す稼働情報に基づいて、前記集合内の各類似プログラムの中から前記稼働日が最新である最新稼働プログラムを特定する処理と、
前記最新稼働プログラムの最終更新日及び前記稼働情報に基づいて、前記各類似プログラムにおける前記稼働情報に所定の分類を付与する処理と、
前記稼働情報に付与された分類に基づいて、前記各類似プログラムに対して、現在稼働対象であるか否かを判定する処理と、
をコンピュータに実行させるプログラム稼働判定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム稼働判定装置、方法及びプログラムに関し、特に、プログラムの稼働判定を行うプログラム稼働判定装置、方法及びプログラムに関する。
【背景技術】
【０００２】
近年、ＩＴ（Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ）システムにおいては、ハードウェアの老朽化、ＩＴ技術及びＩＴインフラの進化、又は、利用しているソフトウェアライセンスに対するベンダサポートの終了などにより、導入から一定の期間を経て、改修や再構築（以下、「システムリニューアル」という。）が必要となるケースが増えている。
【０００３】
システムリニューアルにあたって、既存システムを廃止して新規に構築し直すケースもあるが、新規構築は期間も費用もかかるという問題もある。そのため、新規構築に伴うビジネス的な新たな付加価値や効果が高くない場合には、既存システムをできるだけ流用、つまり再利用することにより、期間やコストを圧縮して企業経営へのインパクトを最小化する必要がある。つまり、既存システムに対して、最新のハードウェア、最新のプログラミング言語、最新ＩＴ技術及びＩＴインフラなどに対応するために、プログラムの業務処理ロジックやアルゴリズムを維持したまま、新技術に移行したり、改造したりすることが行われている。
【０００４】
ここで、企業等の組織が長期に渡りＩＴシステムを運用する場合、企業活動の目的に合わせてシステムの拡張や改造を行うことが一般的である。その結果、新旧の様々なソフトウェア、ハードウェア又は開発技術が混在して複雑に絡み合った状況が生じる。このような状況により、ソフトウェア資産全体の把握が困難となり、システムの拡張や改造が非常に難しいことが課題となっている。
【０００５】
例えば、長期間保守している業務アプリケーションに対する度重なる機能追加や改造により、従来から維持していたプログラムが不要となる場合がある。そして、それらを後日、目視で選別するには工数がかかる問題がある。
【０００６】
これを解決する手法として、システムの稼働ログを分析してプログラム資産の稼働判定を行い、非稼働とされるプログラムを不要として選別する方法が特許文献１に開示されている。特許文献１では、プログラムにおける稼働ログにおける最新使用年月日が過去一年以内である場合に、稼働対象と判定する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１５−１７００７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１には、稼働判定の精度が不十分であるという問題点がある。その理由は、特許文献１では、プログラムによらず判定基準の閾値が固定であるため、プログラムによっては適さない場合があるためである。例えば、非稼働と判定するための最新稼働日の閾値が一年である場合、あるプログラムＡ１は最新稼働日が一年以内であるが、Ａ１を改修したプログラムＡ２の登録後は、Ａ１の代わりにＡ２が使用されるようになったとする。この場合、Ａ１はすでに不使用となり非稼働といえる。また、この場合、最新稼働日の閾値はＡ２の登録日ともいえる。つまり、プログラムによって、稼働判定の閾値の基準が異なり、一律の基準で判定することができない。そのため、特許文献１では、本来非稼働であるプログラムを稼働対象と判定してしまうおそれがあり、稼働判定に改善の余地がある。
【０００９】
本発明は、このような問題点を解決するためになされたものであり、プログラムの稼働判定の精度を向上するためのプログラム稼働判定装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の第１の態様にかかるプログラム稼働判定装置は、
複数のプログラムのうちコードが閾値以上の割合で一致する類似プログラムの集合を示す類似情報と、各プログラムの最終更新日を示す更新情報と、各プログラムの稼働日の履歴を示す稼働情報と、を記憶する記憶部と、
前記類似情報及び前記稼働情報に基づいて、前記集合内の各類似プログラムの中から前記稼働日が最新である最新稼働プログラムを特定する特定部と、
前記最新稼働プログラムの前記更新情報及び前記稼働情報に基づいて、前記各類似プログラムにおける前記稼働情報に所定の分類を付与する分類部と、
前記稼働情報に付与された分類に基づいて、前記各類似プログラムに対して、現在稼働対象であるか否かを判定する稼働判定部と、
を備える。
【００１１】
本発明の第２の態様にかかるプログラム稼働判定方法は、
複数のプログラムのうちコードが閾値以上の割合で一致する類似プログラムの集合を示す類似情報、及び、各プログラムの稼働日の履歴を示す稼働情報に基づいて、前記集合内の各類似プログラムの中から前記稼働日が最新である最新稼働プログラムを特定し、
前記最新稼働プログラムの最終更新日及び前記稼働情報に基づいて、前記各類似プログラムにおける前記稼働情報に所定の分類を付与し、
前記稼働情報に付与された分類に基づいて、前記各類似プログラムに対して、現在稼働対象であるか否かを判定する。
【００１２】
本発明の第３の態様にかかるプログラム稼働判定プログラムは、
複数のプログラムのうちコードが閾値以上の割合で一致する類似プログラムの集合を示す類似情報、及び、各プログラムの稼働日の履歴を示す稼働情報に基づいて、前記集合内の各類似プログラムの中から前記稼働日が最新である最新稼働プログラムを特定する処理と、
前記最新稼働プログラムの最終更新日及び前記稼働情報に基づいて、前記各類似プログラムにおける前記稼働情報に所定の分類を付与する処理と、
前記稼働情報に付与された分類に基づいて、前記各類似プログラムに対して、現在稼働対象であるか否かを判定する処理と、
をコンピュータに実行させる。
【発明の効果】
【００１３】
本発明により、プログラムの稼働判定の精度を向上するためのプログラム稼働判定装置、方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態１にかかるプログラム稼働判定装置の構成を示すブロック図である。
【図２】本発明の実施の形態１にかかるプログラム稼働判定処理の流れを示すフローチャートである。
【図３】本発明の実施の形態２にかかるプログラム稼働判定装置の構成を示すブロック図である。
【図４】本発明の実施の形態２にかかる類似情報テーブルの例を示す図である。
【図５】本発明の実施の形態２にかかる稼働情報テーブルの例を示す図である。
【図６】本発明の実施の形態２にかかる資産基本情報テーブルの例を示す図である。
【図７】本発明の実施の形態２にかかる類似プログラム間の稼働情報と更新情報の関係を説明するための図である。
【図８】本発明の実施の形態２にかかる稼働情報分類テーブルの例を示す図である。
【図９】本発明の実施の形態２にかかるプログラム稼働判定処理の流れを示すフローチャートである。
【図１０】本発明の実施の形態２にかかる稼働情報抽出処理の流れを示すフローチャートである。
【図１１】本発明の実施の形態２にかかる稼働情報抽出結果テーブルの例を示す図である。
【図１２】本発明の実施の形態２にかかる稼働情報分類処理の流れを示すフローチャートである。
【図１３】本発明の実施の形態２にかかる稼働情報分類結果テーブルの例を示す図である。
【図１４】本発明の実施の形態２にかかる稼働判定処理の流れを示すフローチャートである。
【図１５】本発明の実施の形態２にかかる稼働判定結果テーブルの例を示す図である。
【図１６】本発明の実施の形態３にかかるプログラム稼働判定装置の構成を示すブロック図である。
【図１７】本発明の実施の形態３にかかる稼働情報分類テーブルの例を示す図である。
【図１８】本発明の実施の形態３にかかる稼働情報分類結果テーブルの例を示す図である。
【図１９】本発明の実施の形態３にかかる稼働判定処理の流れを示すフローチャートである。
【図２０】本発明の実施の形態３にかかる稼働判定結果テーブルの例を示す図である。
【図２１】本発明の他の実施の形態にかかる稼働確定資産テーブルの例を示す図である。
【発明を実施するための形態】
【００１５】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００１６】
＜実施の形態１＞
図１は、本発明の実施の形態１にかかるプログラム稼働判定装置１００の構成を示すブロック図である。プログラム稼働判定装置１００は、複数のプログラムについて現在稼働対象であるか否かを判定するための情報処理装置である。プログラム稼働判定装置１００は、記憶部１１０と、特定部１２０と、分類部１３０と、稼働判定部１４０とを備える。記憶部１１０は、類似情報１１１と、更新情報１１２と、稼働情報１１３とを記憶する。
【００１７】
類似情報１１１は、複数のプログラムのうちコードが閾値以上の割合で一致する類似プログラムの集合を示す情報である。類似情報１１１には、複数の集合が定義されていても良い。また、ある集合には、少なくとも複数のプログラムのうち２以上の類似プログラムが属するものとする。更新情報１１２は、各プログラムの最終更新日を示す情報である。稼働情報１１３は、各プログラムの稼働日の履歴を示す情報である。稼働情報１１３は、一プログラムあたり１以上の稼働日の履歴を含むものとする。
【００１８】
特定部１２０は、類似情報１１１及び稼働情報１１３に基づいて、集合内の各類似プログラムの中から稼働日が最新である最新稼働プログラムを特定する。分類部１３０は、最新稼働プログラムの更新情報１１２及び稼働情報１１３に基づいて、各類似プログラムにおける稼働情報１１３に所定の分類を付与する。稼働判定部１４０は、稼働情報１１３に付与された分類に基づいて、各類似プログラムに対して、現在稼働対象であるか否かを判定する。
【００１９】
尚、プログラム稼働判定装置１００は、記憶部１１０にプログラム稼働判定プログラムをさらに記憶しており、制御部（不図示）が記憶部１１０からプログラム稼働判定プログラムをメモリ（不図示）に読み込み、実行する。これにより、制御部は、特定部１２０、分類部１３０及び稼働判定部１４０として動作する。
【００２０】
図２は、本発明の実施の形態１にかかるプログラム稼働判定処理の流れを示すフローチャートである。まず、特定部１２０は、類似情報１１１及び稼働情報１１３に基づいて、集合内の各類似プログラムの中から稼働日が最新である最新稼働プログラムを特定する（Ｓ１）。次に、分類部１３０は、最新稼働プログラムの更新情報１１２及び稼働情報１１３に基づいて、各類似プログラムにおける稼働情報１１３に所定の分類を付与する（Ｓ２）。その後、稼働判定部１４０は、稼働情報１１３に付与された分類に基づいて、各類似プログラムに対して、現在稼働対象であるか否かを判定する（Ｓ３）。
【００２１】
このように、本実施の形態は、ある集合に属する類似プログラムのうち最新稼働プログラムの更新情報及び稼働情報を基準として、最新稼働プログラム以外の類似プログラムにおける複数の稼働情報に分類を付与し、付与された分類に基づき各類似プログラムの稼働判定を行うものである。つまり、プログラム単独の情報のみで稼働判定を行うのではなく、プログラムコードの記述内容が閾値以上の割合で一致する類似プログラムの集合内で、稼働判定の基準を設定するものである。これにより、類似プログラムの集合ごとに異なる基準、適した基準で稼働判定を行うことができる。そのため、プログラムの稼働判定の精度を向上することができる。
【００２２】
＜実施の形態２＞
本実施の形態２は、上述した実施の形態１の改良例である。
上述した特許文献１では、全ての稼働情報を一律に分析して稼働判定を行うため、古い資産を稼働資産であると誤判定してしまうおそれがあるという問題点がある。例えば、稼働ログが長期にわたって記録され続けている場合、途中でプログラムの更新やシステム改造が発生しているため、古いシステムの稼働情報と新しいシステムの稼働情報が混在している。これにより、あるタイミングで不要となった資産についても、過去に稼働していた際の情報をもとに、稼働資産と誤判定されることがある。
【００２３】
そこで、本実施の形態２では、更新情報を使用して古いシステムの稼働情報の切り捨てを行うことで、新しいシステムの稼働情報のみを選択する。選択された稼働情報から資産の稼働判定を行う。これにより、新しいシステムの稼働情報のみに基づき、現在の資産の状態を正しく反映した稼働判定が可能となる。
【００２４】
また、本実施の形態２は次の特徴を備える。すなわち、前記分類部は、前記最新稼働プログラムの最終更新日、当該最終更新日の直後の稼働日である初回稼働日、及び、前記最新稼働プログラム以外の類似プログラムの最終更新日の少なくともいずれかと、各類似プログラムの前記稼働日とを比較して、前記各類似プログラムにおける前記稼働情報に前記所定の分類を付与する。これにより、稼働判定の精度をさらに向上できる。
【００２５】
さらに、前記分類部は、前記各類似プログラムの前記稼働日が、前記最新稼働プログラムの最終更新日より古いか否か、前記最新稼働プログラム以外の類似プログラムの最終更新日より古いか否か、前記最新稼働プログラムの最終更新日以降、かつ、前記初回稼働日より古いか否か、及び、前記初回稼働日以降か否かの少なくともいずれかに基づいて、前記稼働情報に前記所定の分類を付与することが望ましい。
【００２６】
また、前記分類部は、前記稼働日が前記初回稼働日以降である前記稼働情報に有効の分類を付与し、前記稼働判定部は、前記有効の分類が付与された前記稼働情報に対応する類似プログラムに対して前記現在稼働対象であると判定するものである。
【００２７】
図３は、本発明の実施の形態２にかかるプログラム稼働判定装置２００の構成を示すブロック図である。プログラム稼働判定装置２００は、上述したプログラム稼働判定装置１００の一実施例である。ここで、利用者は、例えば、大規模な情報システムを構成する多数のプログラム（不図示）の中から、現在は稼動していない不要なプログラムを選別するために、プログラム稼働判定装置２００を用いるものとする。プログラム稼働判定装置２００は、入力装置１と、出力装置２と、処理装置３と、リポジトリ４とを備える。
【００２８】
入力装置１は、利用者が処理装置３を操作するための入力を受け付ける。出力装置２は、処理装置３が演算した結果を利用者に対して表示する。リポジトリ４は、記憶部１１０の一例であり、本実施の形態２にかかる各種処理の入力データ又は出力データを保持する記憶領域である。処理装置３は、入力装置１からの指示に応じて、リポジトリ４内の情報に対する各種処理を行う、制御部の一例である。
【００２９】
リポジトリ４は、類似情報テーブル４１と、稼働情報テーブル４２と、資産基本情報テーブル４３と、稼働情報分類テーブル４４と、稼働情報抽出結果テーブル４５と、稼働情報分類結果テーブル４６と、稼働判定結果テーブル４７とを記憶する。尚、類似情報テーブル４１、稼働情報テーブル４２及び資産基本情報テーブル４３は、上述した多数のプログラム及び情報システムのシステムログ等から一般的な解析処理により生成及び保存されてもよい。
【００３０】
類似情報テーブル４１は、類似情報１１１の一例であり、上述した多数のプログラムについて、コードの記述内容が閾値以上の割合で一致する集合（類似グループ）に分類した情報を保持する。例えば、処理装置３はプログラム類似判定部（不図示）を有しているものとする。そして、プログラム類似判定部は、上記多数のプログラムを読み込んで解析し、プログラム間でコードを比較し、コードの一致率を算出する。プログラム類似判定部は、コードの一致率が所定値以上となるプログラム同士を同一の類似グループに分類して、リポジトリ４内の類似情報テーブル４１に格納する。尚、プログラム類似判定部は、処理装置３に含まれている必要はなく、外部装置にて類似情報テーブル４１が生成され、入力装置１から入力されたものをリポジトリ４に格納してもよい。また、類似情報テーブル４１は、利用者が各プログラムの類似度合いを判定した結果を格納したものであってもよい。
【００３１】
図４は、本発明の実施の形態２にかかる類似情報テーブル４１の例を示す図である。類似情報テーブル４１は、番号、類似グループ名及びプログラム名を含む。ここで、類似グループ名は、類似グループの識別情報である。プログラム名は、プログラムの識別情報である。図４では、例えば、類似グループ名「Ａ」には、プログラムＡ１、Ａ２及びＡ３が属することを示す。
【００３２】
ここで、本実施の形態におけるプログラム資産の例について説明する。プログラムＡ１は、以前使用されており、現在は稼働対象ではないプログラムとする。プログラムＡ２は、プログラムＡ１を基に作成され、現在稼働対象であるものとする。プログラムＡ３は、プログラムＡ２を基に作成され、現在作成中又はテスト中であるため、稼働対象ではないものとする。
【００３３】
図５は、本発明の実施の形態２にかかる稼働情報テーブル４２の例を示す図である。稼働情報テーブル４２は、番号、プログラム名及び稼働日を含む。稼働情報テーブル４２は、稼働情報１１３の一例であり、どのプログラムがいつ稼働したかを示す稼働日を保持している。尚、稼働日は、稼働日時、つまり、年月日時分秒等で表現されても構わない。また、稼働情報テーブル４２の各レコードを稼働情報と呼ぶものとする。稼働情報は、情報システムから取得したログファイルなどを分析し、必要な値を抽出することで取得される。図５に示すように、稼働情報は、一プログラムあたり１以上のレコード、つまり、稼働日が記録されていることとなる。
【００３４】
図６は、本発明の実施の形態２にかかる資産基本情報テーブル４３の例を示す図である。資産基本情報テーブル４３は、番号、プログラム名及び最終更新日等を含む。資産基本情報テーブル４３は、更新情報１１２の一例であり、各プログラム資産の最終更新日など資産に関する基本的な情報である資産基本情報を保持している。資産基本情報は、情報システムから取得したファイル一覧を分析し、必要な値を抽出することで取得される。尚、最終更新日は、当該プログラムが最後に更新された日付である。また、最終更新日は、更新日時、つまり、年月日時分秒等で表現されても構わない。
【００３５】
図７は、本発明の実施の形態２にかかる類似プログラム間の稼働情報と更新情報の関係を説明するための図である。図７では、類似グループＡについて示し、各プログラムの最終更新日をひし形、稼働日を稲妻形として時系列に並べたイメージを示す。
【００３６】
図８は、本発明の実施の形態２にかかる稼働情報分類テーブル４４の例を示す図である。稼働情報分類テーブル４４は、所定の分類の条件を定義した情報である。稼働情報分類テーブル４４は、番号、分類、条件及び説明を含む。「分類」は、稼働情報がプログラムの稼働判定を行うにあたり有効か無効かを示す。「条件」は、分類対象の稼働情報における稼働日が満たす条件を示す。尚、「条件」における「最新資産」とは、処理対象の類似グループに属するプログラムのうち稼働日が最も新しいプログラムである最新稼働プログラムを示す。また、「類似資産」とは、処理対象の類似グループに属するプログラムのうち最新資産以外のプログラムを示す。また、「初回稼働日」とは、最新資産における最終更新日の直後の稼働日を示す。
【００３７】
そして、例えば、番号１における条件１は、分類対象の稼働情報の稼働日が、類似資産の最終更新日より古い場合に該当する。番号２における条件２は、（条件１に該当せず、）分類対象の稼働情報の稼働日が、最新資産の最終更新日より古い場合に該当する。番号３における条件３は、（条件２に該当せず、）分類対象の稼働情報の稼働日が、最新資産の最終更新日以降であり、かつ、最新資産の初回稼働日より古い場合に該当する。番号４における条件４は、（条件３に該当せず、）分類対象の稼働情報の稼働日が、最新資産の初回稼働日である場合に該当する。尚、上述した「条件」は、一例に過ぎず、これら以外の定義を用いても構わない。また、「説明」は必ずしも情報として稼働情報分類テーブル４４に含める必要はない。
【００３８】
図３に戻り、説明を続ける。稼働情報抽出結果テーブル４５は、後述する稼働情報抽出部３１１により抽出された稼働情報の抽出結果である。稼働情報分類結果テーブル４６は、後述する稼働情報分類部３１２により分類された稼働情報の分類結果である。稼働判定結果テーブル４７は、後述する稼働判定部３１３により判定された各プログラムの稼働判定結果である。
【００３９】
処理装置３は、稼働判定制御部３１と、稼働情報抽出部３１１と、稼働情報分類部３１２と、稼働判定部３１３とを備える。尚、処理装置３は、記憶装置（不図示）に記憶された本実施の形態２にかかるプログラム稼働判定プログラムをメモリ（不図示）に読み込み、実行することにより、稼働判定制御部３１、稼働情報抽出部３１１、稼働情報分類部３１２及び稼働判定部３１３を実現する。
【００４０】
稼働判定制御部３１は、稼働情報抽出部３１１、稼働情報分類部３１２及び稼働判定部３１３の処理を、全ての類似グループに対して実行するように制御して、プログラム稼働判定処理の全体を行う。稼働情報抽出部３１１は、類似情報テーブル４１に基づいて、稼働判定制御部３１により通知された類似グループに属する複数の類似プログラムを特定し、特定した各類似プログラムに対応する稼働情報を稼働情報テーブル４２から抽出し、稼働情報抽出結果テーブル４５に格納する。稼働情報分類部３１２は、資産基本情報テーブル４３から取得した各資産の最終更新日と、稼働情報分類テーブル４４から取得した分類及び条件に基づいて、稼働情報抽出結果テーブル４５の各稼働情報について分類を付与して、稼働情報ごとに稼働情報分類結果テーブル４６に格納する。稼働判定部３１３は、稼働情報分類結果テーブル４６に格納された分類付きの稼働情報に基づいて、類似グループに属する各類似プログラムごとに稼働判定を行い、判定結果を稼働判定結果テーブル４７に格納する。
【００４１】
図９は、本発明の実施の形態２にかかるプログラム稼働判定処理の流れを示すフローチャートである。まず、稼働判定制御部３１は、類似情報テーブル４１に含まれる類似グループの中から一つを選択する（Ｓ１０）。例えば、稼働判定制御部３１は、類似情報テーブル４１の中から類似グループＡを選択する。そして、稼働判定制御部３１は、選択した類似グループについてステップＳ２０、Ｓ３０、Ｓ４０及びＳ５０を行う。具体的には、稼働判定制御部３１は、稼働情報抽出部３１１に対して選択した類似グループを通知し、当該類似グループにおける稼働情報抽出処理を実行させる（Ｓ２０）。続いて、稼働判定制御部３１は、稼働情報分類部３１２に対して、当該類似グループにおける稼動情報分類処理を実行させる（Ｓ３０）。そして、稼働判定制御部３１は、稼働判定部３１３に対して、当該類似グループにおける稼動判定処理を実行させる（Ｓ４０）。その後、稼働判定制御部３１は、一時的なテーブルである稼働情報分類テーブル４４、稼働情報抽出結果テーブル４５及び稼働情報分類結果テーブル４６の内容を全て削除する（Ｓ５０）。その後、稼働判定制御部３１は、未選択の類似グループの中から次の類似グループを選択し、全ての類似グループについてステップＳ２０からＳ５０を繰り返す。
【００４２】
図１０は、本発明の実施の形態２にかかる稼働情報抽出処理の流れを示すフローチャートである。まず、稼働情報抽出部３１１は、類似情報テーブル４１を参照し、稼働判定制御部３１により通知された類似グループに属するプログラム名を特定する（Ｓ２１）。例えば、稼働判定制御部３１から類似グループＡが通知された場合、稼働情報抽出部３１１は、類似情報テーブル４１を参照して、類似グループＡに属するプログラム名として、プログラムＡ１、Ａ２及びＡ３を特定する。
【００４３】
次に、稼働情報抽出部３１１は、稼働情報テーブル４２から稼働情報を一レコードずつ読み出す（Ｓ２２）。そして、稼働情報抽出部３１１は、読み出した稼働情報のプログラム名が、稼働判定制御部３１により通知された類似グループに属するか否かを判定する（Ｓ２３）。類似グループに属すると判定された場合、稼働情報抽出部３１１は、読み出した稼働情報を稼働情報抽出結果テーブル４５に追加する（Ｓ２４）。ステップＳ２３において類似グループに属さないと判定された場合、又は、ステップＳ２４の後、稼働情報抽出部３１１は、稼働情報テーブル４２から全ての稼働情報を読み出したか否かを判定し、未読み出しの稼働情報が残っている場合、次の稼働情報を読み出し、全ての稼働情報を読み出し終えるまでステップＳ２３及びＳ２４を繰り返す。
【００４４】
図１１は、本発明の実施の形態２にかかる稼働情報抽出結果テーブル４５の例を示す図である。ここでは、稼働判定制御部３１により類似グループＡが選択された場合を示し、図５の稼働情報テーブル４２の各レコードのうちプログラムＡ１、Ａ２又はＡ３に対応するレコードのみが抽出されていることを示す。
【００４５】
図１２は、本発明の実施の形態２にかかる稼働情報分類処理の流れを示すフローチャートである。まず、稼働情報分類部３１２は、稼働情報抽出結果テーブル４５を参照し、稼働日が最も新しい稼働情報におけるプログラムを最新資産（最新稼働プログラム）として特定する（Ｓ３１）。例えば、図１１の場合、番号６の稼働日“2000/8/1”が最新であるため、プログラムＡ２が最新資産とされる。この時、例えば、稼働情報分類部３１２は、最新資産を示す内部変数にプログラムＡ２を設定し、保持する。また、併せて、稼働情報分類部３１２は、対象の類似グループに属する類似プログラムのうち、最新資産以外を、類似資産として特定する。例えば、図１１の場合、類似グループＡに属するプログラムＡ１及びＡ３が類似資産とされる。この時、例えば、稼働情報分類部３１２は、類似資産を示す内部変数にプログラムＡ１及びＡ３を設定し、保持する。
【００４６】
次に、稼働情報分類部３１２は、資産基本情報テーブル４３から最新資産及び類似資産の最終更新日を取得する（Ｓ３２）。例えば、図６の場合、稼働情報分類部３１２は、最新資産（プログラムＡ２）の最終更新日を“2000/6/1”、類似資産（プログラムＡ１）の最終更新日を“2000/1/1”、及び、類似資産（プログラムＡ３）の最終更新日を“2000/5/1”として、内部変数に設定し、保持する。
【００４７】
続いて、稼働情報分類部３１２は、稼働情報抽出結果テーブル４５から最新資産における最終更新日の直後の稼働日である初回稼働日を取得する（Ｓ３３）。例えば、図１１の場合、稼働情報分類部３１２は、最新資産（プログラムＡ２）の最終更新日を“2000/6/1”の直後の稼働日“2000/8/1”を、最新資産の初回稼働日として、内部変数に設定し、保持する。
【００４８】
その後、稼働情報分類部３１２は、稼働情報抽出結果テーブル４５から稼働情報を一レコードずつ読み出す（Ｓ３４）。そして、稼働情報分類部３１２は、読み出した稼働情報の稼働日について稼働情報分類テーブル４４内の条件と照合し、いずれの条件に該当するかを判定し、該当する条件に対応する分類を当該稼働情報に付与する（Ｓ３５）。そして、稼働情報分類部３１２は、付与した分類と稼働情報とを対応付けて稼働情報分類結果テーブル４６に追加する（Ｓ３６）。その後、稼働情報分類部３１２は、稼働情報抽出結果テーブル４５から全ての稼働情報を読み出したか否かを判定し、未読み出しの稼働情報が残っている場合、次の稼働情報を読み出し、全ての稼働情報を読み出し終えるまでステップＳ３５及びＳ３６を繰り返す。
【００４９】
図１３は、本発明の実施の形態２にかかる稼働情報分類結果テーブル４６の例を示す図である。ここでは、番号１が条件１に該当し、番号２及び３が条件２に該当し、番号５が条件１又は２に該当し、番号４、７及び８が条件３に該当し、それぞれに分類「無効」が付与され、番号６が条件４に該当し、分類「有効」が付与されたことを示す。尚、図１３の番号は、図１１の番号と対応する。つまり、稼働情報分類結果テーブル４６は、稼働情報ごとの分類結果を示す。
【００５０】
図１４は、本発明の実施の形態２にかかる稼働判定処理の流れを示すフローチャートである。まず、稼働判定部３１３は、稼働判定結果テーブル４７内で対象の類似グループに属する全資産の判定結果に「非稼働」と記録する（Ｓ４１）。例えば、稼働判定部３１３は、類似グループＡに属するプログラムＡ１、Ａ２及びＡ３の判定結果に、初期設定として「非稼働」を設定する。
【００５１】
次に、稼働判定部３１３は、稼働情報分類結果テーブル４６から分類結果を一レコードずつ（つまり、稼働情報単位で）読み出す（Ｓ４２）。そして、稼働判定部３１３は、読み出したレコードの分類が「有効」か否かを判定する（Ｓ４３）。分類が「有効」と判定された場合、稼働判定部３１３は、当該レコードのプログラム名に対応する判定結果を「稼働」と記録する（Ｓ４４）。つまり、稼働判定部３１３は、分類が「有効」と判定された稼働情報におけるプログラム名に対応する判定結果を「稼働」として、稼働判定結果テーブル４７に追加する。一方、ステップＳ４３で分類が「有効」でない、つまり「無効」と判定された場合、又は、ステップＳ４４の後、稼働判定部３１３は、稼働情報分類結果テーブル４６から全ての分類結果を読み出したか否かを判定し、未読み出しの分類結果が残っている場合、次の分類結果を読み出し、全ての分類結果を読み出し終えるまでステップＳ４３及びＳ４４を繰り返す。つまり、稼働情報分類結果テーブル４６には、１プログラムあたり複数の分類結果が登録されているが、そのうち一つの分類が「有効」であれば、当該プログラムにおける判定結果を「稼働」とする。一方、１プログラムあたり全ての分類結果の分類が「無効」である場合に、当該プログラムにおける判定結果を「非稼働」とする。
【００５２】
図１５は、本発明の実施の形態２にかかる稼働判定結果テーブル４７の例を示す図である。ここでは、類似グループＡのうちプログラムＡ２の判定結果が「稼働」であり、他のプログラムＡ１及びＡ３の判定結果が「非稼働」であることを示す。
【００５３】
以上のことから、本発明の実施の形態２により、古いシステム（例えば、プログラムＡ１）の稼働情報と新しいシステム（例えば、プログラムＡ２）の稼働情報が混在していても、最新稼働プログラムＡ２の稼働情報のみに基づき、現在の資産の状態を正しく反映した稼働判定が可能となる。また、プログラムＡ２から改良されたが、リリース前であるプログラムＡ３についても、現時点では稼働対象ではないため、正しく非稼働と判定することができる。
【００５４】
＜実施の形態３＞
本実施の形態３は、上述した実施の形態２の変形例である。
上述した特許文献１により正しく非稼働と判定された資産についても、誤判定だった場合の影響が大きいことから、削除して問題ない資産か目視で確認する運用が多い。しかし、実際の資産には過去に複製して編集を加えたものなど、似て非なる資産が混在するため、確認の優先順位が付けられず確認作業が非効率となる場合がある。
【００５５】
また、上述した実施形態２によって、以前使用され現在は使用されていない古い資産だと判明した資産は、少なくとも１つの稼働情報が存在すること、類似情報の精度的限界により稼働状態の誤判定が発生し得ることから、非稼働資産を目視確認する際は優先的に確認されることが望ましい。
【００５６】
そこで、本実施の形態３では、更新情報を使用して稼働情報の絞込みを行う際、稼働情報を切り捨てる代わりに一定のルールに基づき稼働情報に分類を与える。この際、分類ごとに重みづけをしたうえで、資産ごとの稼働情報の件数が閾値に達しているか否かにより稼働判定を行う。これにより、稼働情報の件数が閾値に達せず非稼働と判定された場合でも、稼働情報の件数によって優先順位を付けることができるため、効率的な目視確認が可能となる。
【００５７】
また、本実施の形態３は次の特徴を備える。すなわち、前記分類部は、前記各類似プログラムについて現在稼働対象である可能性を示す指標値である複数の稼働確度のいずれかを前記分類として前記稼働情報に付与し、前記稼働判定部は、前記稼働情報に付与された前記稼働確度に基づいて、前記複数の類似プログラムのそれぞれに対して、前記現在稼働対象であるか否かを判定するものである。これにより、稼働頻度が考慮され、稼働判定の精度が高まる。
【００５８】
さらに、前記稼働判定部は、前記稼働情報に付与された前記稼働確度を前記類似プログラムごとに合計した値を、前記判定の結果に対応付けて出力することが望ましい。これにより、目視確認の優先度の参考となり、目視確認を効率化できる。
【００５９】
図１６は、本発明の実施の形態３にかかるプログラム稼働判定装置２００ａの構成を示すブロック図である。プログラム稼働判定装置２００ａは、上述したプログラム稼働判定装置２００との違いとして、処理装置３内に稼働情報分類部３１２ａ及び稼働判定部３１３ａを備え、リポジトリ４内に稼働情報分類テーブル４４ａ、稼働情報分類結果テーブル４６ａ及び稼働判定結果テーブル４７ａを備える。プログラム稼働判定装置２００ａのその他の構成は、プログラム稼働判定装置２００と同等であるため、図示及び詳細な説明を省略する。そこで、以下では、本実施の形態２との差異について説明する。
【００６０】
図１７は、本発明の実施の形態３にかかる稼働情報分類テーブル４４ａの例を示す図である。稼働情報分類テーブル４４ａは、番号、稼働確度、条件及び説明を含む。尚、稼働確度は、分類の一例である。稼働確度とは、対象の各類似プログラムについて現在稼働対象である可能性を示す指標値である。例えば、番号１及び２は稼働確度「０．０」とし、番号３は稼働確度「０．４」とし、番号４は稼働確度「１．０」としている。但し、稼働確度はこれらに限定されない。
【００６１】
そして、本実施の形態３にかかる稼働情報分類処理は、上述した実施の形態２の図１２と同等である。但し、稼働情報分類テーブル４４ａが異なるため、図１２のステップＳ３５において付与される分類が異なる。つまり、稼働情報分類部３１２ａは、読み出した稼働情報の稼働日について稼働情報分類テーブル４４ａ内の条件と照合し、いずれの条件に該当するかを判定し、該当する条件に対応する分類を当該稼働情報に付与する。
【００６２】
図１８は、本発明の実施の形態３にかかる稼働情報分類結果テーブル４６ａの例を示す図である。ここでは、番号１〜３及び５が条件１又は２に該当し、稼働確度が０．０とされ、番号４、７及び８が条件３に該当し、稼働確度が０．４とされ、番号６が条件４に該当し、稼働確度が１．０とされたことを示す。
【００６３】
図１９は、本発明の実施の形態３にかかる稼働判定処理の流れを示すフローチャートである。まず、稼働判定部３１３ａは、稼働判定結果テーブル４７ａ内で対象の類似グループに属する全資産の判定結果に「非稼働」と記録する（Ｓ４１）。例えば、稼働判定部３１３ａは、類似グループＡに属するプログラムＡ１、Ａ２及びＡ３の判定結果に、初期設定として「非稼働」を設定する。
【００６４】
次に、稼働判定部３１３ａは、稼働情報分類結果テーブル４６ａを参照し、資産ごとに稼働確度を合計する（Ｓ４５）。例えば、稼働判定部３１３ａは、プログラムＡ１について稼働確度の合計を０．４、プログラムＡ２について稼働確度の合計を１．０、プログラムＡ３について稼働確度の合計を０．８と算出し、内部変数に保持する。
【００６５】
続いて、稼働判定部３１３ａは、対象の類似グループ内の資産のうち一プログラムを選択する（Ｓ４６）。そして、稼働判定部３１３ａは、選択したプログラムにおける稼働確度の合計が閾値以上であるか否かを判定する（Ｓ４７）。稼働確度の合計が閾値以上であると判定された場合、稼働判定部３１３ａは、当該プログラム名に対応する判定結果を「稼働」と記録して、稼働判定結果テーブル４７ａに追加する（Ｓ４８）。一方、ステップＳ４７において、稼働確度の合計が閾値未満であると判定された場合、稼働判定部３１３ａは、当該プログラム名に対応する判定結果を「非稼働」と記録し、併せて、稼働確度の合計を記録して、稼働判定結果テーブル４７ａに追加する（Ｓ４９）。
【００６６】
ステップＳ４８又はＳ４９の後、稼働判定部３１３ａは、対象の類似グループ内の資産のうち全てのプログラムを選択したかを判定し、未選択のプログラムが残っている場合、次のプログラムを選択し、全てのプログラムを選択し終えるまでステップＳ４７からＳ４９を繰り返す。
【００６７】
図２０は、本発明の実施の形態３にかかる稼働判定結果テーブル４７ａの例を示す図である。ここでは、類似グループＡのうちプログラムＡ２の判定結果が「稼働」であり、プログラムＡ１の判定結果が「非稼働」かつ稼働確度の合計が０．４、プログラムＡ３の判定結果が「非稼働」かつ稼働確度の合計が０．８であることを示す。
【００６８】
このため、稼働確度の合計値は、非稼働と判定された資産を目視で確認する際の優先度として使用することができる。図２０では、非稼働の資産に対して目視確認を行う場合、稼働確度の合計値が最大であるプログラムＡ３から確認を始めるべきだと判断することができる。
【００６９】
このように、本実施の形態３により、稼働情報の分類として稼働確度を付与することによって、現在の資産の状態を正しく反映した稼働判定と、稼働判定の確度に基づく確認対象の資産への優先順位付けが可能となる。そして、稼働確度に基づいて確認対象の資産に優先順位を付けることができるようになるため、効率的な目視確認が可能となる。
【００７０】
＜その他の実施の形態＞
尚、上述した実施の形態２又は３は、稼働情報分類テーブル４４の分類、又は、稼働情報分類テーブル４４ａの稼働確度の設定値を、対象の情報システムの運用に基づいて適宜調整することで、稼働判定の精度を高めることができる。すなわち、前記記憶部は、外部から入力された前記所定の分類の条件をさらに記憶し、前記分類部は、前記記憶部に記憶された分類の条件に基づいて、前記稼働情報に前記所定の分類を付与するとよい。
【００７１】
また、稼働情報分類テーブル４４又は４４ａに、非類似資産を無効や稼働確度０とする分類の条件の定義を追加してもよい。例えば、実施の形態２の場合、プログラム稼働判定装置２００のうち、稼働情報抽出部３１１と稼働情報抽出結果テーブル４５を不要とし、稼働情報分類部３１２に類似情報テーブル４１と稼働情報テーブル４２を直接入力することで実現できる。そして、稼働情報分類部３１２は、図１２の稼働情報分類処理を類似グループごとに実行し、ステップＳ３４からＳ３６を「抽出した稼働情報」の代わりに、「全ての稼働情報」に対して繰り返し実行することとなる。尚、実施形態３についても同様に実現可能である。
【００７２】
また、稼働情報に関わらず稼働又は非稼働が確定している資産を稼働確定資産テーブル４８として予めリポジトリ４に登録しておいてもよい。図２１は、本発明の他の実施の形態にかかる稼働確定資産テーブル４８の例を示す図である。稼働確定資産テーブル４８は、番号、プログラム名及び稼動状態を含む。ここで、稼動状態は、多数のプログラムのうち一部のプログラムにおいて予め確定している稼働又は非稼働を示す情報である。例えば、利用者が把握しているものを設定することができる。
【００７３】
そして、稼働判定処理時に稼働確定資産テーブル４８を参照し、判定対象の資産が存在する場合は、予め設定された判定結果を採用することで、稼働判定の結果を制御することができる。すなわち、前記記憶部は、前記複数のプログラムの一部のプログラムと、前記現在稼働対象であるか否かを示す稼働確定情報とを対応付けてさらに記憶し、前記稼働判定部は、前記各類似プログラムのうち前記稼働確定情報と対応付けられたプログラムについて、当該対応付けられた稼働確定情報を前記判定の結果とするとよい。
【００７４】
尚、上述した各実施の形態は、ソフトウェア企画及び開発フェーズにおける設計、製造又はテスト支援に適用できる。また、上述した各実施の形態は、ソフトウェア運用及び保守フェーズにおける改造支援又は障害分析支援にも適用できる。さらに、上述した各実施の形態は、上記フェーズを通した影響分析支援又は作業工数の見積支援等にも適用できる。
【００７５】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【００７６】
また、上述の実施の形態では、本発明をハードウェアの構成として説明したが、本発明は、これに限定されるものではない。本発明は、任意の処理を、ＣＰＵ（Central Processing Unit）にコンピュータプログラムを実行させることにより実現することも可能である。
【００７７】
上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、ＤＶＤ（Digital Versatile Disc）、ＢＤ（Blu-ray（登録商標） Disc）、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【００７８】
１００  プログラム稼働判定装置
１１０  記憶部
１１１  類似情報
１１２  更新情報
１１３  稼働情報
１２０  特定部
１３０  分類部
１４０  稼働判定部
２００  プログラム稼働判定装置
１  入力装置
２  出力装置
３  処理装置
３１  稼働判定制御部
３１１  稼働情報抽出部
３１２  稼働情報分類部
３１３  稼働判定部
４  リポジトリ
４１  類似情報テーブル
４２  稼働情報テーブル
４３  資産基本情報テーブル
４４  稼働情報分類テーブル
４５  稼働情報抽出結果テーブル
４６  稼働情報分類結果テーブル
４７  稼働判定結果テーブル
２００ａ  プログラム稼働判定装置
３１２ａ  稼働情報分類部
３１３ａ  稼働判定部
４４ａ  稼働情報分類テーブル
４６ａ  稼働情報分類結果テーブル
４７ａ  稼働判定結果テーブル
４８  稼働確定資産テーブル
【図１】
2019057124.tif 000003
【図２】
2019057124.tif 000004
【図３】
2019057124.tif 000005
【図４】
2019057124.tif 000006
【図５】
2019057124.tif 000007
【図６】
2019057124.tif 000008
【図７】
2019057124.tif 000009
【図８】
2019057124.tif 000010
【図９】
2019057124.tif 000011
【図１０】
2019057124.tif 000012
【図１１】
2019057124.tif 000013
【図１２】
2019057124.tif 000014
【図１３】
2019057124.tif 000015
【図１４】
2019057124.tif 000016
【図１５】
2019057124.tif 000017
【図１６】
2019057124.tif 000018
【図１７】
2019057124.tif 000019
【図１８】
2019057124.tif 000020
【図１９】
2019057124.tif 000021
【図２０】
2019057124.tif 000022
【図２１】
2019057124.tif 000023