(57)【要約】【課題】複数の業務によりアクセスされるデータを対象のシステムから適切に分離可能にすること。【解決手段】処理部１ｂは、対象のシステム２の第１のプログラムにアクセスされる第１のデータと、システム２の第２のプログラムにアクセスされる第２のデータとを特定する。処理部１ｂは、第１のプログラムおよび第２のプログラムの両方にアクセスされるデータを、複数の業務から参照される、または、更新される共通データとして出力する。【選択図】図１
2019133541.tif 000002
【特許請求の範囲】
【請求項１】
対象のシステムから業務ごとの対応するデータを分離する分離方法であって、コンピュータが、
前記対象のシステムの第１のプログラムにアクセスされる第１のデータと、前記対象のシステムの第２のプログラムにアクセスされる第２のデータとを特定し、
前記第１のプログラムおよび前記第２のプログラムの両方にアクセスされるデータを、複数の業務から参照される、または、更新される共通データとして出力する、
分離方法。
【請求項２】
前記特定では、前記対象のシステムの複数のプログラムとデータとの関係に基づいて、前記第１のプログラムおよび前記第１のデータを含む第１のグループと、前記第２のプログラムおよび前記第２のデータのうち前記第１のデータと重複しない第３のデータを含む第２のグループとを前記対象のシステムから抽出する、請求項１記載の分離方法。
【請求項３】
前記第１のデータのうち前記第２のデータと重複する部分が前記第２のプログラムにより更新される場合、前記部分を前記共通データと判定し、前記第１のグループから除外する、請求項２記載の分離方法。
【請求項４】
前記第１のデータのうち前記共通データ以外の前記第１のプログラムにより更新される他の部分を前記第１のグループの固有データとして出力する、請求項３記載の分離方法。
【請求項５】
第３のプログラムと第４のプログラムと前記第３および前記第４のプログラムにより参照されるが前記第３および前記第４のプログラムにより更新されない他の共通データとを含む第３のグループを前記対象のシステムから抽出する、請求項４記載の分離方法。
【請求項６】
グループに属するプログラムを関連付けるデータの種類が前記固有データであるか、前記共通データであるかに応じて、表示装置による前記グループの表示方法を変える、請求項５記載の分離方法。
【請求項７】
前記対象のシステムのプログラムにアクセスされる前記第１および前記第２のデータのうちの前記共通データに含まれない固有データと、前記共通データとをそれぞれ分離し、分離した領域を業務の切り出しやすい範囲としてユーザに提示する、請求項１記載の分離方法。
【請求項８】
前記固有データに関連付けられるプログラム、および、前記共通データに関連付けられるプログラムを、前記対象のシステムとは異なるシステムへの移行対象の候補とする、請求項７記載の分離方法。
【請求項９】
対象のシステムから業務ごとの対応するデータを分離する分離装置であって、
前記対象のシステムにおけるプログラム資産を記憶する記憶部と、
前記記憶部を参照して、前記対象のシステムの第１のプログラムにアクセスされる第１のデータと、前記対象のシステムの第２のプログラムにアクセスされる第２のデータとを特定し、前記第１のプログラムおよび前記第２のプログラムの両方にアクセスされるデータを、複数の業務から参照される、または、更新される共通データとして出力する処理部と、
を有する分離装置。
【請求項１０】
対象のシステムから業務ごとの対応するデータを分離する分離プログラムであって、
前記対象のシステムの第１のプログラムにアクセスされる第１のデータと、前記対象のシステムの第２のプログラムにアクセスされる第２のデータとを特定し、
前記第１のプログラムおよび前記第２のプログラムの両方にアクセスされるデータを、複数の業務から参照される、または、更新される共通データとして出力する、
処理をコンピュータに実行させる分離プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は分離方法、分離装置および分離プログラムに関する。
【背景技術】
【０００２】
現在、様々な情報処理を行うコンピュータシステムが利用されている。コンピュータシステムは、プログラムを実行することで、プログラムに応じた所定の機能を実現する。コンピュータシステムでは、多数のプログラムやデータが利用され得る。幾つかのプログラム同士が連携して、１つの機能を実現することもある。
【０００３】
また、コンピュータシステムの運用では、既存のプログラムの修正や既存の機能の他のコンピュータシステムへの移行が行われることもある。この場合、修正や移行の対象となる機能に関連のあるプログラムやデータを抽出し、抽出したプログラム、当該プログラムに関連する他のプログラムやデータに対して修正や移行の作業を行うことになる。しかし、利用されているプログラムやデータの数が多くプログラム間の関連が複雑であるほど、互いに関連性のあるプログラムやデータを見出すことは容易ではない。
【０００４】
そこで、例えば、ソフトウェアをその構成要素となるエンティティの集合として扱い、ソフトウェアの理解が容易な程度の部分集合（例えば、機能、タスクおよび業務などに沿ったクラスタ）に分割する分割装置の提案がある。分割装置は、関係元／関係先のエンティティを対応付けた対応情報をソフトウェアのソースコードから抽出し、対応情報により特定される依存関係に関する重みに基づいて、重みの合計が期待値よりも高くなるようにエンティティ群を複数のクラスタに分割する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−１４８９８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記のように、エンティティ（例えば、プログラムやデータ）間の依存関係の重みの合計が期待値よりも高くなるようにエンティティ群を複数の単位（例えば、業務単位のクラスタ）に分割する方法が考えられる。この方法では、分割の結果、コンピュータシステムの処理に用いられるデータは、当該データとの関連性が比較的強いプログラムとともに、何れかの分割単位に含まれることになる。すると、例えば、当該データと、比較的関連性の強い単一の業務との関係が分かり易くなる一方、当該データと他の業務との関連性を把握し難くなるという問題がある。
【０００７】
１つの側面では、本発明は、複数の業務によりアクセスされるデータを対象のシステムから適切に分離可能にすることを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、対象のシステムから業務ごとの対応するデータを分離する分離方法が提供される。この分離方法では、コンピュータが、対象のシステムの第１のプログラムにアクセスされる第１のデータと、対象のシステムの第２のプログラムにアクセスされる第２のデータとを特定し、第１のプログラムおよび第２のプログラムの両方にアクセスされるデータを、複数の業務から参照される、または、更新される共通データとして出力する。
【発明の効果】
【０００９】
１つの側面では、複数の業務によりアクセスされるデータを対象のシステムから適切に分離可能になる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態の分離装置を示す図である。
【図２】第２の実施の形態の情報処理システムの例を示す図である。
【図３】分析サーバのハードウェア例を示す図である。
【図４】分析サーバの機能例を示す図である。
【図５】プログラム資産の例を示す図である。
【図６】プログラムの呼出構造の例を示す図である。
【図７】サービス部品候補の生成例を示す図である。
【図８】サービス部品候補の生成結果の例を示す図である。
【図９】サービス部品および共通データの分類結果の例を示す図である。
【図１０】準サービス部品の分類結果の例を示す図である。
【図１１】準サービス部品の分類結果の例（続き）を示す図である。
【図１２】分析サーバの処理例を示すフローチャートである。
【図１３】プログラム解析の処理例を示すフローチャートである。
【図１４】共通データ抽出の処理例を示すフローチャートである。
【図１５】サービス部品分類の処理例を示すフローチャートである。
【図１６】分類結果の表示例（その１）を示す図である。
【図１７】分類結果の表示例（その２）を示す図である。
【図１８】分類の比較例を示す図である。
【図１９】分析サーバによる分類の例を示す図である。
【図２０】既存システムの一部機能の移行例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の分離装置を示す図である。分離装置１は、システム２に接続されている。分離装置１は、ネットワークを介してシステム２に接続されてもよい。システム２は、ユーザの業務に関する処理を行う様々なプログラムを実行する。１以上のプログラムが、互いに連携し、また、業務に関する１以上のデータ要素にアクセスして、当該業務に関する処理を実現する。
【００１２】
システム２で用いられる複数のプログラムやデータ要素の集合をプログラム資産と称する。例えば、プログラム資産は、プログラムＸ，Ｙ，・・・およびデータ要素ｄ１，ｄ２，・・・を含む。例えば、プログラムＸには、業務Ａ１の処理が記述されている。また、プログラムＹには、業務Ａ２の処理が記述されている。プログラムＸ，Ｙ，・・・それぞれが、複数のプログラムの集合体（例えば、あるプログラムが他のプログラムを呼び出すという呼出関係で関連付けられるプログラム群）でもよい。また、「業務」という単位は、機能、サービス部品またはソフトウェア部品などと呼ばれてもよい。また、分離装置１は、表示装置３にも接続されている。表示装置３は、分離装置１から受信した情報の内容を表示する。
【００１３】
分離装置１は、分析の対象のシステム（例えば、システム２）から業務ごとの対応するデータを分離する機能（あるいは、業務ごとの対応するデータを分類する機能）を提供する。分離装置１は、記憶部１ａおよび処理部１ｂを有する。
【００１４】
記憶部１ａは、ＲＡＭ（Random Access Memory）などの揮発性の半導体メモリでもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性のストレージでもよい。処理部１ｂは、例えば、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などのプロセッサである。ただし、処理部１ｂは、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の電子回路を含んでもよい。プロセッサは、ＲＡＭなどのメモリ（記憶部１ａでもよい）に記憶されたプログラムを実行する。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うこともある。
【００１５】
記憶部１ａは、システム２に記憶されたプログラム資産の全部または一部の複製を記憶する。例えば、記憶部１ａは、処理部１ｂの処理に用いられる一部のプログラム資産を記憶してもよい。
【００１６】
処理部１ｂは、対象のシステムの第１のプログラムにアクセスされる第１のデータと、対象のシステムの第２のプログラムにアクセスされる第２のデータとを特定する。アクセスとは、該当のプログラムによるデータの参照または更新である。
【００１７】
例えば、データ集合Ｄ１は、プログラム資産におけるデータ要素の全体である。処理部１ｂは、システム２のプログラムＸ（第１のプログラム）のコードを解析し、当該コードからプログラムＸによりアクセスされるデータ要素ｄ１，ｄ２，ｄ３，ｄ４，ｄ５をデータ集合Ｄ１から特定する。第１のデータセットＤ１１は、データ要素ｄ１，ｄ２，ｄ３，ｄ４，ｄ５を要素とする集合である。第１のデータセットＤ１１は、プログラムＸ（第１のプログラム）にアクセスされるデータ（第１のデータ）である。
【００１８】
また、処理部１ｂは、システム２のプログラムＹ（第２のプログラム）のコードを解析し、当該コードからプログラムＹによりアクセスされるデータ要素ｄ４，ｄ５，ｄ６，ｄ７，ｄ８をデータ集合Ｄ１から特定する。第２のデータセットＤ１２は、データ要素ｄ４，ｄ５，ｄ６，ｄ７，ｄ８を要素とする集合である。第２のデータセットＤ１２は、プログラムＹ（第２のプログラム）にアクセスされるデータ（第２のデータ）である。
【００１９】
処理部１ｂは、第１のプログラムおよび第２のプログラムの両方にアクセスされるデータを、複数の業務から参照される、または、更新される共通データとして出力する。上記の例では、第１のデータセットＤ１１および第２のデータセットＤ１２の両方に属するデータ要素が、第１のプログラムおよび第２のプログラムの両方にアクセスされるデータである。このため、処理部１ｂは、第１のデータセットＤ１１および第２のデータセットＤ１２の両方に属するデータ要素を、複数の業務から参照される、または、更新される共通データとして出力してもよい。
【００２０】
例えば、処理部１ｂは、第１のデータセットＤ１１と第２のデータセットＤ１２とを比較することで、プログラムＸ，Ｙの両方によりアクセスされるデータ要素ｄ４，ｄ５を特定する。そして、処理部１ｂは、データ要素ｄ４，ｄ５をプログラムＸに対応する業務およびプログラムＹに対応する業務から参照される、または、更新される共通データと判定する。処理部１ｂは、データ要素ｄ４を示す情報およびデータ要素ｄ５を示す情報（例えば、データ要素ｄ４の識別情報およびデータ要素ｄ５の識別情報）を、共通データを示す情報として出力する。
【００２１】
また、処理部１ｂは、第１のデータセットＤ１１の中で、プログラムＸ，ＹのうちプログラムＸからのみ更新されるデータ要素ｄ１，ｄ２，ｄ３を、プログラムＸの固有データと判定してもよい。そして、処理部１ｂは、当該固有データを示す情報（例えば、データ要素ｄ１，ｄ２，ｄ３それぞれの識別情報）を出力してもよい。
【００２２】
また、処理部１ｂは、第２のデータセットＤ１２の中で、プログラムＸ，ＹのうちプログラムＹからのみ更新されるデータ要素ｄ６，ｄ７，ｄ８を、プログラムＹの固有データと判定してもよい。そして、処理部１ｂは、当該固有データを示す情報（例えば、データ要素ｄ６，ｄ７，ｄ８それぞれの識別情報）を出力してもよい。
【００２３】
出力画面４は、分離装置１により出力される画面の一例である。表示装置３は、分離装置１から出力画面４の情報を受信し、出力画面４を表示する。出力画面４は、画面部品４ａ，４ｂ，４ｃを有する。
【００２４】
画面部品４ａは、プログラムＸとデータ要素ｄ１，ｄ２，ｄ３（固有データ）とを示すアイコンを一単位にまとめて表示するための画像である。処理部１ｂは、プログラムＸおよびデータ要素ｄ１，ｄ２，ｄ３により実現される業務名（例えば、「業務Ａ１」）や該当の業務に関連する語句などをプログラムＸのソースコード（例えば、コメントの記述）などから抽出して画面部品４ａに含めてもよい。
【００２５】
画面部品４ｂは、プログラムＹとデータ要素ｄ６，ｄ７，ｄ８（固有データ）とを示すアイコンを一単位にまとめて表示するための画像である。処理部１ｂは、プログラムＹおよびデータ要素ｄ６，ｄ７，ｄ８により実現される業務名（例えば、「業務Ａ２」）や該当の業務に関連する語句などをプログラムＹのソースコード（例えば、コメントの記述）などから抽出して画面部品４ｂに含めてもよい。
【００２６】
画面部品４ｃは、プログラムＸ，Ｙの両方から参照、または、更新されるデータ要素ｄ４，ｄ５を示すアイコンを一単位にまとめて表示するための画像である。画面部品４ｃは、画面部品４ａ，４ｂの領域とは重複しない領域に表示される。
【００２７】
出力画面４では、プログラムがデータにアクセス（参照／更新）するという関係性を矢印によって表している。すなわち、ユーザは、出力画面４により下記の内容を把握可能である。プログラムＸは、固有データに分類されるデータ要素ｄ１，ｄ２，ｄ３にアクセスする。プログラムＸは、共通データに分類されるデータ要素ｄ４，ｄ５にアクセスする。プログラムＹは、固有データに分類されるデータ要素ｄ６，ｄ７，ｄ８にアクセスする。プログラムＹは、共通データに分類されるデータ要素ｄ４，ｄ５にアクセスする。
【００２８】
分離装置１によれば、対象のシステムの第１のプログラムにアクセスされるデータと、対象のシステムの第２のプログラムにアクセスされるデータとが特定される。そして、分離装置１により、第１のプログラムおよび第２のプログラムの両方にアクセスされるデータが、複数の業務から参照される、または、更新される共通データとして出力される。
【００２９】
これにより、複数の業務によりアクセスされるデータを対象のシステムから適切に分離可能になる。
ここで、例えば、エンティティ（例えば、プログラムやデータ）間の依存関係の重みの合計が期待値よりも高くなるようにエンティティ群を複数の単位（例えば、業務単位のクラスタ）に分割する方法が考えられる。この方法では、分割の結果、システムの処理に用いられるデータは、当該データとの関連性が比較的強いプログラムとともに、何れかの分割単位に含まれることになる。すると、例えば、当該データと、比較的関連性の強い単一の業務との関係が分かり易くなる一方、当該データと他の業務との関連性を把握し難くなる。
【００３０】
一方、分離装置１によれば、第１のプログラムおよび第２のプログラムの両方にアクセスされるデータを共通データと判定し、共通データを示す情報を出力するので、その出力内容により複数の業務にアクセスされる共通データを適切に把握可能になる。その結果、共通データを介して関連付けられる複数のプログラムを一単位とする業務（あるいは複数の業務をひとまとめにした機能）をシステム２から抽出することも可能になる。
【００３１】
すると、例えば、ユーザは、当該複数のプログラムに属するあるプログラムの修正を行う場合に、当該プログラムと共通データを介して関連付けられる他のプログラムを、影響が及ぶ可能性のあるプログラムとして特定することができる。すなわち、プログラムの修正に伴って影響が及ぶ可能性のある別のプログラムを適切に把握可能になる。
【００３２】
あるいは、分離装置１は、関連のある複数のプログラムおよび共通データに対応する一部の業務をシステム２から分離させ、別のシステムに移行させることも可能になる。すなわち、システム２内の一部の業務のプログラムについて、他の業務のプログラムへの影響を抑えて別のシステムに移行させることも可能になる。
【００３３】
このように、分離装置１によれば、複雑に関連し合う多くのプログラムが存在する場合でも、共通データおよび共通データを基に関連する複数のプログラムを適切に分離可能になる。
【００３４】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムの例を示す図である。第２の実施の形態の情報処理システムは、分析サーバ１００および業務サーバ２００を含む。分析サーバ１００および業務サーバ２００は、ネットワーク１０に接続されている。ネットワーク１０は、例えば、ＬＡＮ（Local Area Network）である。ネットワーク１０は、ネットワーク２０に接続されている。ネットワーク２０は、例えば、インターネットなどの広域データ通信ネットワークである。ネットワーク２０には、移行先サーバ３００が接続されている。
【００３５】
分析サーバ１００は、業務サーバ２００で実行されるソフトウェアの分析を行うサーバコンピュータである。ソフトウェアは、多数のプログラムやデータから構成される。一方、ソフトウェアにより実現される業務処理の機能は多岐に渡る。プログラムおよびデータは、業務単位にグループ化可能である。プログラム（またはプログラム群）およびデータを機能単位にグループ化したものをサービス部品と呼ぶこととする。
【００３６】
プログラムおよびデータのグループ化（サービス部品化）は、ソフトウェアの一部修正や一部業務機能の他サーバへの移転などを行う上で有用である。例えば、ある業務に関して関連性のあるプログラムやデータを対象に修正を行うことで、当該業務以外のプログラムやデータに対する影響を抑えられる。
【００３７】
しかし、業務サーバ２００により実行されるソフトウェアを構成する各プログラムは、複雑に関連し合っており、ユーザが、プログラム間の関連を事後的に把握することは容易ではない。そこで、分析サーバ１００は、当該ソフトウェアを構成するプログラムやデータを業務別に分類し、ユーザに提示する機能を提供する。分析サーバ１００は、第１の実施の形態の分離装置１の一例である。
【００３８】
業務サーバ２００は、ユーザの業務に関する処理を行うサーバコンピュータである。業務サーバ２００の処理は、業務サーバ２００で実行されるソフトウェアにより実現される。業務サーバ２００は、第１の実施の形態のシステム２の一例である。業務サーバ２００は、第１の実施の形態のシステム２に属する１つのサーバコンピュータでもよい。
【００３９】
移行先サーバ３００は、業務サーバ２００から分離された業務（あるいは、業務に対応するプログラムやデータ）の移行先のサーバコンピュータである。移行先サーバ３００は、例えば、クラウドシステムによって実現される仮想的なコンピュータ（仮想マシン）でもよいし、オンプレミスシステムにおける物理的なコンピュータ（物理マシン）でもよい。
【００４０】
図３は、分析サーバのハードウェア例を示す図である。分析サーバ１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６およびＮＩＣ（Network Interface Card）１０７を有する。各ハードウェアは分析サーバ１００のバスに接続されている。業務サーバ２００および移行先サーバ３００も分析サーバ１００と同様のハードウェアを用いて実現できる。
【００４１】
ＣＰＵ１０１は、プログラムの命令を実行するプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを含んでもよい。また、分析サーバ１００は複数のプロセッサを有してもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【００４２】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、分析サーバ１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００４３】
ＨＤＤ１０３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、分析サーバ１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００４４】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、分析サーバ１００に接続されたディスプレイ１１に画像を出力する。ディスプレイ１１として、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００４５】
入力信号処理部１０５は、分析サーバ１００に接続された入力デバイス１２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス１２としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、分析サーバ１００に、複数の種類の入力デバイスが接続されていてもよい。
【００４６】
媒体リーダ１０６は、記録媒体１３に記録されたプログラムやデータを読み取る装置である。記録媒体１３として、例えば、磁気ディスク、光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤが含まれる。光ディスクには、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）が含まれる。
【００４７】
媒体リーダ１０６は、例えば、記録媒体１３から読み取ったプログラムやデータを、ＲＡＭ１０２やＨＤＤ１０３などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、ＣＰＵ１０１によって実行される。なお、記録媒体１３は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体１３やＨＤＤ１０３を、コンピュータ読み取り可能な記録媒体と言うことがある。
【００４８】
ＮＩＣ１０７は、ネットワーク１０に接続され、ネットワーク１０を介して業務サーバ２００や移行先サーバ３００などと通信を行う通信インタフェースである。ＮＩＣ１０７は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。
【００４９】
図４は、分析サーバの機能例を示す図である。分析サーバ１００は、記憶部１１０および制御部１２０を有する。記憶部１１０は、例えば、ＲＡＭ１０２またはＨＤＤ１０３に確保した記憶領域を用いて実装される。制御部１２０は、例えば、プログラムを用いて実装される。
【００５０】
記憶部１１０は、制御部１２０の処理に用いられる各種の情報を記憶する。記憶部１１０は、プログラム記憶部１１１および分析結果記憶部１１２を有する。
プログラム記憶部１１１は、分析対象となるプログラム資産を記憶する。プログラム資産は、業務サーバ２００で実行されるソフトウェアのプログラム（例えば、ソースプログラムやオブジェクトプログラム）を含む。
【００５１】
分析結果記憶部１１２は、制御部１２０によるプログラム資産の分析結果を記憶する。例えば、分析結果記憶部１１２は、プログラムとデータとの関係を示す関連情報、サービス部品の候補であるサービス部品候補を示すサービス部品候補情報、特定したサービス部品を示すサービス部品情報を記憶する。また、分析結果記憶部１１２は、特定した共通データを示す共通部品情報や共通データによって関連付けられる準サービス部品を示す準サービス部品情報を記憶する。
【００５２】
制御部１２０は、分析サーバ１００によるプログラム資産の分析を制御する。制御部１２０は、分類部１２１、候補生成部１２２および分析部１２３を有する。
分類部１２１は、プログラムを解析し、プログラム間の呼出関係を取得する。分類部１２１は、プログラム間の呼出関係に基づいて、複数のプログラムをプログラム群に分類する。分類部１２１は、各プログラムの内、他のプログラムから呼び出されていない起点のプログラムを特定し、起点のプログラムおよび他のプログラムに含まれる呼出関係を追跡することで、プログラムの呼出構造を起点のプログラム毎に作成する。分類部１２１は、呼出構造に基づいて、呼出関係によって関連付けられたプログラムの集合（プログラム群）を特定する。分類部１２１は、プログラム群とデータとの関係を示す関連情報を生成し、分析結果記憶部１１２に格納する。
【００５３】
候補生成部１２２は、分類部１２１によって分類された各プログラム群とデータとの関係性から、サービス部品候補を抽出する。候補生成部１２２は、サービス部品候補を示すサービス部品候補情報を生成し、分析結果記憶部１１２に格納する。
【００５４】
ここで、サービス部品候補は、比較的関連の強いプログラム群とデータとのグループであり、サービス部品の候補である。例えば、候補生成部１２２は、特開２０１３−１４８９８７号公報に記載されたクラスタリングの技術を用いて、サービス部品候補を生成してもよい。この技術では、部分集合が意味する役割を表すための本筋となる重要なエンティティとエンティティ間の依存関係とが、その部分集合に含まれることとする。そして、ソフトウェアの本筋の理解の妨げとなる枝葉末節のエンティティやエンティティ間の依存関係が、その部分集合を形成する際に軽視されることとする。重要か枝葉末節かの判断は、依存関係の数で判断される。
【００５５】
このとき、候補生成部１２２は、あるデータに対して、プログラム群に記述されたＲｅａｄ／Ｗｒｉｔｅのアクセス用のコードが多いほど、当該プログラム群と当該データとの関連が強いと判断してもよい。また、候補生成部１２２は、Ｗｒｉｔｅのアクセスの重みを、Ｒｅａｄのアクセスの重みより大きくしてもよい。
【００５６】
分析部１２３は、候補生成部１２２により生成されたサービス部品候補に基づいて、サービス部品および準サービス部品を取得する。分析部１２３は、あるサービス部品候補に関連するデータのうち、他のサービス部品候補からアクセスされるデータを共通データとして抽出する。共通データには２種類ある。複数のサービス部品候補からアクセスされ、少なくとも１つのサービス部品候補により更新される共通データは、グローバルデータと呼ばれる。また、複数のサービス部品候補からアクセスされ、何れのサービス部品候補にも更新されない共通データは、マスターデータと呼ばれる。
【００５７】
分析部１２３は、共通データを、現在所属するサービス部品候補から除外する（共通データをグループ外部に出す）。共通データのサービス部品候補からの除外により、あるプログラム群と別のプログラム群との間の関連がなくなった場合、該当の各プログラム群のグループ化を解除する。分析部１２３は、ここでグループ化を解除されなかったサービス部品候補をサービス部品とする。
【００５８】
ただし、共通データのみによって関連付けられる複数のプログラム群が存在する場合、分析部１２３は、当該複数のプログラム群と、当該共通データとを再度グループ化する。分析部１２３は、再度グループ化されたプログラム群および共通データのグループを、準サービス部品とする。
【００５９】
分析部１２３は、サービス部品を示すサービス部品情報、準サービス部品を示す準サービス部品情報および共通データを示す共通データ情報を出力する。例えば、分析部１２３は、ディスプレイ１１に当該出力内容を表示させてもよい。また、分析部１２３は、ネットワーク１０に接続されたクライアントコンピュータに当該出力内容を送信し、クライアントコンピュータに当該出力内容を表示させてもよい。
【００６０】
ここで、分析部１２３は、サービス部品および準サービス部品を、移行先サーバ３００への移行対象の単位として出力してもよい。例えば、ユーザは、サービス部品および準サービス部品の分類結果を確認することで、業務サーバ２００から移行先サーバ３００へ移行させるひとまとまりのプログラム群やデータを容易に特定可能になる。
【００６１】
図５は、プログラム資産の例を示す図である。分類部１２１は、プログラム記憶部１１１に記憶されたプログラム資産に基づいて、プログラム間の呼出関係を取得する。図５中、コマンド“ＣＡＬＬ”は、他のプログラムの呼び出しを示す。コマンド“ＣＡＬＬ”の引数は、呼出先のプログラムの識別名である。また、コマンド“ＲＥＡＤ”は、データの参照（ＲＥＡＤ）を示す。コマンド“ＲＥＡＤ”の引数は、参照元のデータの識別名である。更に、コマンド“ＷＲＩＴＥ”は、データの更新（ＷＲＩＴＥ）を示す。コマンド“ＷＲＩＴＥ”の引数は、更新先のデータの識別名である。
【００６２】
例えば、プログラムＡは、プログラムＢおよびプログラムＤを呼び出す。プログラムＢは、プログラムＣを呼び出す。プログラムＣは、データａを参照する。プログラムＤは、プログラムＦを呼び出す。また、プログラムＤは、データｂを更新する。プログラムＥは、プログラムＤを呼び出す。プログラムＦは、他のプログラムを呼び出さないし、データの参照／更新も行わない。
【００６３】
なお、図５で示したプログラム資産は一例であり、プログラム資産は、他のプログラムを含み得る。
図６は、プログラムの呼出構造の例を示す図である。分類部１２１は、図５で例示したプログラム資産に対して、次のような呼出構造を作成する。プログラムＡ〜Ｆのうち、呼出元のプログラムがないプログラムは、プログラムＡ，Ｅである。したがって、分類部１２１は、プログラムＡ，Ｅそれぞれを起点として、プログラムの呼出構造を作成する。図６（Ａ）は、呼出構造の具体例を示す。まず、プログラムＡを起点とする場合を考える。
【００６４】
プログラムＡを起点として、コマンド“ＣＡＬＬ”の引数を辿ると、プログラムＡがプログラムＢを呼び出し、プログラムＢがプログラムＣを呼び出すという呼出構造を得られる。また、プログラムＡがプログラムＤを呼び出し、プログラムＤがプログラムＦを呼び出すという呼出構造を得られる。このため、分類部１２１は、プログラムＡおよびプログラムＡを起点にして辿れるプログラムＢ，Ｃ，Ｄ，Ｆをプログラム群Ａに分類する。
【００６５】
次に、プログラムＥを起点として、コマンド“ＣＡＬＬ”の引数を辿ると、プログラムＥがプログラムＤを呼び出し、プログラムＤがプログラムＦを呼び出すという呼出構造を得られる。このため、分類部１２１は、プログラムＥおよびプログラムＥを起点にして辿れるプログラムＤ，Ｆをプログラム群Ｅに分類する。
【００６６】
続いて、分類部１２１は、各プログラム群とデータとの対応関係を取得する。図６（Ｂ）は、プログラム群とデータとの対応関係の具体例を示す。プログラムＣは、データａを参照する。また、プログラムＤは、データｂを更新する。プログラムＣ，Ｄは、プログラム群Ａに属する。したがって、分類部１２１は、プログラム群Ａからデータａを参照し、プログラム群Ａからデータｂを更新するという対応関係を得る。また、プログラムＤは、プログラム群Ｅにも属する。したがって、分類部１２１は、プログラム群Ｅからデータｂを更新するという対応関係を得る。
【００６７】
分類部１２１は、取得したプログラム群とデータとの対応関係を示す関連情報を作成する。図６（Ｃ）は、図６（Ｂ）の関係に対して作成された関連情報１１２ａの例である。関連情報１１２ａは、分析結果記憶部１１２に格納される。ここで、参照を“＃ｒｅａｄ”で示し、更新を“＃ｗｒｉｔｅ”で示すものとする。例えば、関連情報１１２ａの１行目のレコードは、プログラム群Ａからデータａを参照する（“＃ｒｅａｄ”）という関係を示す。関連情報１１２ａの２行目のレコードは、プログラム群Ａからデータｂを更新する（“＃ｗｒｉｔｅ”）という関係を示す。関連情報１１２ａの３行目のレコードは、プログラムＥからデータｂを更新する（“＃ｗｒｉｔｅ”）という関係を示す。
【００６８】
図７は、サービス部品候補の生成例を示す図である。ここで、分類部１２１によるプログラム群とデータとの対応関係の取得結果が、図６で例示したプログラム群Ａ，Ｅおよびデータａ，ｂの対応関係の他に、プログラム群Ｘ，Ｙ，Ｚおよびデータｃ，ｄに関する対応関係を含むとする。具体的には、プログラム群Ｅは、更に、データｃを参照する。プログラム群Ｘは、データａを更新する。プログラム群Ｘは、データｃを参照する。プログラム群Ｘは、データｄを参照する。プログラム群Ｙは、データｄを更新する。プログラム群Ｚは、データｃを参照する。関連情報１１２ｂは、プログラム群Ａ，Ｅ，Ｘ，Ｙ，Ｚとデータａ，ｂ，ｃ，ｄとの対応関係を示す。関連情報１１２ｂは、分類部１２１により作成され、分析結果記憶部１１２に格納されている。
【００６９】
候補生成部１２２は、以下の式（１）を用いて、各プログラム群とデータとの関係性を生成する。
Ｅ（Ａ，Ｂ）＝１／（ｎ×ｄ＿ｉｎ（Ｂ））・・・（１）
ここで、Ｅ（Ａ，Ｂ）は、エンティティＡからエンティティＢへの依存関係の本質度（重み）を示す。ｄ＿ｉｎ（Ｂ）は、エンティティＢへの入次数である。ｎは、データの参照の場合に２であり、データの更新の場合に１とする。Ｅ（Ａ，Ｂ）が大きいほど、エンティティＡ，Ｂの関係は強く、Ｅ（Ａ，Ｂ）が小さいほど、エンティティＡ，Ｂの関係は弱い。
【００７０】
式（１）によれば、あるデータについて、参照元のプログラムの数が多いほど、当該データと参照元の各プログラムとの関係は弱いと判定される。また、データを更新するプログラムと当該データとの関係は、当該データを参照するプログラムと当該データとの関係よりも強いと判定される。そして、候補生成部１２２は、多くのプログラムからアクセスされるデータを、何れかのサービス部品候補に振り分けて出力する。
【００７１】
例えば、プログラム群Ａ，Ｅは、データｂを更新するので、他のデータに比べて、データｂとの関係が強い。プログラム群Ｘは、データａを更新するが、他のデータへのアクセスも多いことから、各データとの関係性がそれほど強くはない。プログラム群Ｙは、データｄを更新するので、他のデータに比べてデータｄとの関係が比較的強い。プログラム群Ｚは、データｃのみを参照しており、データｃとの関係をもつのみである。
【００７２】
図８は、サービス部品候補の生成結果の例を示す図である。候補生成部１２２は、クラスタリングの結果、サービス部品候補３１，３２，３３を生成する。
サービス部品候補３１は、プログラム群Ａ，Ｅおよびデータａ，ｂを含む。サービス部品候補３１のサービス部品候補ＩＤ（IDentifier）は“１”である。サービス部品候補３２は、プログラム群Ｘ，Ｚおよびデータｃを含む。サービス部品候補３２のサービス部品候補ＩＤは“２”である。サービス部品候補３３は、プログラム群Ｙおよびデータｄを含む。サービス部品候補３３のサービス部品候補ＩＤは“３”である。
【００７３】
サービス部品候補情報１１２ｃは、サービス部品候補３１，３２，３３を示す情報である。サービス部品候補情報１１２ｃは、候補生成部１２２により生成され、分析結果記憶部１１２に格納される。サービス部品候補情報１１２ｃは、サービス部品候補ＩＤと、プログラム群またはデータの識別子との対応関係を含む。
【００７４】
例えば、サービス部品候補情報１１２ｃは、サービス部品候補ＩＤ“１”と、“プログラム群Ａ”との対応関係を示すレコードを含む。このレコードは、プログラム群Ａがサービス部品候補３１に属することを示す。
【００７５】
また、サービス部品候補情報１１２ｃは、サービス部品候補ＩＤ“１”と、“データａ”との対応関係を示すレコードを含む。このレコードは、データａがサービス部品候補３１に属することを示す。
【００７６】
サービス部品候補情報１１２ｃには、サービス部品候補ＩＤとプログラム群またはデータの識別子との他の対応関係を示すレコードも登録されている。
分析部１２３は、あるサービス部品候補に属するデータのうち、他のサービス部品候補から更新されるデータを共通データ（グローバルデータ）とする。分析部１２３は、該当の共通データが属するサービス部品候補から、共通データを取り除く。例えば、サービス部品候補３１に属するデータａは、サービス部品候補３１以外のサービス部品候補に属するプログラム群Ｘから更新されるので、共通データ（グローバルデータ）である。このため、分析部１２３は、サービス部品候補３１からデータａを取り除く。
【００７７】
すなわち、分析部１２３は、サービス部品候補３１（第１のグループ）に属する第１のデータ（データａ，ｂ）のうちサービス部品候補３２（第２のグループ）のプログラム群Ｘのアクセス先である第２のデータ（データａ，ｃ）と重複する部分（データａ）が、プログラム群Ｘ（第２のプログラム）により更新される場合、当該部分を共通データと判定し、サービス部品候補３１から除外する。
【００７８】
また、分析部１２３は、サービス部品候補３１（第１のグループ）に属する第１のデータのうち共通データ以外のプログラム群Ａ（第１のプログラム）により更新される他の部分（データｂ）をサービス部品候補３１の固有データとして出力する。固有データは、固有データが属するサービス部品候補（またはサービス部品）の外部から更新されないデータである。
【００７９】
なお、サービス部品候補３１からデータａを取り除いても、プログラム群Ａ，Ｅは、両方ともデータｂを更新するという関係が残る。このため、サービス部品候補３１からデータａを取り除いた後は、サービス部品候補３１にはプログラムＡ，Ｅおよびデータｂが属する状態となる（分析部１２３は、サービス部品候補３１を分割しない）。
【００８０】
また、分析部１２３は、あるサービス部品候補に属するデータのうち、当該データが属するサービス部品候補内のプログラム群および他のサービス部品候補内のプログラム群から参照されるが更新されないデータを共通データ（マスターデータ）とする。分析部１２３は、該当の共通データが属するサービス部品候補から、共通データを取り除く。例えば、サービス部品候補３２に属するデータｃは、サービス部品候補３２とは異なるサービス部品候補３１に属するプログラム群Ｅから参照され、かつ、更新されないので、共通データ（マスターデータ）である。このため、分析部１２３は、サービス部品候補３２からデータｃを取り除く。サービス部品候補３２からデータｃを取り除くと、プログラム群Ｘ，Ｚのつながりはなくなる。このため、分析部１２３は、サービス部品候補３２を分割する。この場合、サービス部品候補３２は、２つのプログラム群Ｘ，Ｚに分割される。
【００８１】
なお、サービス部品候補３３は、グローバルデータおよびマスターデータに相当する共通データをもたない（データｄは、サービス部品候補３３における固有データである）。このため、分析部１２３は、サービス部品候補３３については、そのまま維持する。分析部１２３は、この時点で残ったサービス部品候補をサービス部品とする。
【００８２】
図９は、サービス部品および共通データの分類結果の例を示す図である。分析部１２３は、サービス部品４１，４２を示すサービス部品情報１１２ｄおよび共通データを示す共通データ情報１１２ｅを生成する。サービス部品情報１１２ｄおよび共通データ情報１１２ｅは、分析結果記憶部１１２に格納される。
【００８３】
サービス部品４１は、プログラム群Ａ，Ｅおよびデータｂを含む。サービス部品４１のサービス部品ＩＤは“１”である。データｂは、サービス部品４１内のプログラム群Ａ，Ｅによって更新され、サービス部品４１の外部のプログラム群によっては更新されない。このため、データｂは、サービス部品４１における固有データである。サービス部品４２は、プログラム群Ｙおよびデータｄを含む。サービス部品４２のサービス部品ＩＤは“２”である。データｄは、サービス部品４２内のプログラム群Ｙによって更新され、サービス部品４２の外部のプログラム群によっては更新されない。このため、データｄは、サービス部品４２における固有データである。
【００８４】
サービス部品情報１１２ｄは、サービス部品ＩＤとプログラム群またはデータの識別名との対応関係を示すレコードを含む。例えば、サービス部品情報１１２ｄは、サービス部品ＩＤ“１”と“プログラム群Ａ”との対応関係を示すレコードを含む。このレコードは、プログラム群Ａがサービス部品４１に属することを示す。
【００８５】
また、サービス部品情報１１２ｄは、サービス部品ＩＤ“１”と“データｂ”との対応関係を示すレコードを含む。このレコードは、データｂがサービス部品４１に属することを示す。
【００８６】
サービス部品情報１１２ｄには、サービス部品ＩＤとプログラム群またはデータの識別子との他の対応関係を示すレコードも登録されている。
また、データａ，ｃは共通データである。データａの共通データＩＤは“ｃ１”である。データｃの共通データＩＤは“ｃ２”である。共通データ情報１１２ｅは、共通データＩＤと、データの識別名との対応関係を示すレコードを含む。
【００８７】
例えば、共通データ情報１１２ｅは、共通データＩＤ“ｃ１”と、“データａ”との対応関係を示すレコードを含む。このレコードは、データａが共通データＩＤ“ｃ１”に対応する共通データであることを示す。
【００８８】
また、共通データ情報１１２ｅは、共通データＩＤ“ｃ２”と、“データｃ”との対応関係を示すレコードを含む。このレコードは、データｃが共通データＩＤ“ｃ２”に対応する共通データであることを示す。
【００８９】
ここで、分析部１２３は、プログラム群Ｘ，Ｚに分割したサービス部品候補３２について、準サービス部品として再グループ化できるか否かを判定する。具体的には、分析部１２３は、分割したサービス部品候補３２の内部のデータが全て共通データであった場合、サービス部品候補３２を準サービス部品として再グループ化する。一方、分析部１２３は、分割したサービス部品候補３２の内部のデータが全て共通データでなかった場合、サービス部品候補３２を準サービス部品として再グループ化しない。
【００９０】
図９の例では、サービス部品候補３２に属していたデータｃは、共通データである。また、サービス部品候補３２には、それ以外のデータはなかったので、サービス部品候補３２の内部のデータが全て共通データであったことになる。したがって、分析部１２３は、プログラム群Ｘ，Ｚおよびデータｃを準サービス部品として再グループ化する。
【００９１】
図１０は、準サービス部品の分類結果の例を示す図である。分析部１２３は、サービス部品４１，４２に加えて、準サービス部品４３を特定する。準サービス部品４３は、プログラム群Ｘ，Ｚおよびデータｃを含む。準サービス部品４３のサービス部品ＩＤは“３”である。
【００９２】
このように、分析部１２３は、プログラム群Ｘ，Ｚ（第３のプログラムおよび第４のプログラム）と、プログラム群Ｘ，Ｚにより参照されるがプログラム群Ｘ，Ｚにより更新されない共通データ（データｃ）とを含む準サービス部品４３（第３のグループ）を、分析対象の業務サーバ２００のプログラム資産から抽出する。
【００９３】
図１１は、準サービス部品の分類結果の例（続き）を示す図である。分析部１２３は、更に、特定したサービス部品４１，４２および準サービス部品４３それぞれの内部において、特に関係が強いプログラム群とデータとを集約する。例えば、準サービス部品４３の内部では、プログラム群Ｚはデータｃのみにアクセスする。あるサービス部品の内部において、あるプログラム群が、あるデータにのみアクセスする場合、当該プログラム群と当該データとの関係は特に強いと考えられる。したがって、分析部１２３は、プログラム群Ｚとデータｃとを集約し、サブサービス部品４４とする。サブサービス部品４４のサービス部品ＩＤは“４”である。
【００９４】
分析部１２３は、更に、サービス部品４１，４２を示すサービス部品情報１１２ｆと、準サービス部品４３およびサブサービス部品４４を示す準サービス部品情報１１２ｇとを生成し、分析結果記憶部１１２に格納する。
【００９５】
サービス部品情報１１２ｆは、該当のサービス部品を囲う枠の表示色を示す情報を各レコードの末尾に含む点が、サービス部品情報１１２ｄと異なる。例えば、サービス部品情報１１２ｆは、サービス部品ＩＤ“１”と“プログラム群Ａ”と“ＲＥＤ”とを対応付けたレコードを含む。このレコードは、プログラム群Ａがサービス部品４１に属しており、サービス部品４１を表示する場合に、赤色（“ＲＥＤ”）の枠線を用いることを示す。
【００９６】
また、サービス部品情報１１２ｆは、サービス部品ＩＤ“１”と“データｂ”と“ＲＥＤ”とを対応付けたレコードを含む。このレコードは、データｂがサービス部品４１に属しており、サービス部品４１を表示する場合に、赤色の枠線を用いることを示す。
【００９７】
サービス部品情報１１２ｆには、サービス部品候補ＩＤとプログラム群またはデータの識別子との他の対応関係を示すレコードも登録されている。
準サービス部品情報１１２ｇは、サービス部品ＩＤと、プログラム群またはデータの識別名と、準サービス部品を表示する場合に用いる枠線の色とを対応付けたレコードを含む。準サービス部品情報１１２ｇは、サービス部品ＩＤ“３”と“プログラム群Ｘ”と“ＧＲＥＥＮ”とを対応付けたレコードを含む。このレコードは、プログラム群Ｘが準サービス部品４３に属しており、準サービス部品４３を表示する場合に、緑色（“ＧＲＥＥＮ”）の枠線を用いることを示す。
【００９８】
ここで、準サービス部品情報１１２ｇの２行目のレコードは、サービス部品の入れ子関係を表す特殊なレコードである。当該レコードは、サービス部品ＩＤと、当該サービス部品ＩＤで示されるサービス部品の内部に入れ子に定義されたサブサービス部品のサービス部品ＩＤと、当該サブサービス部品のサブサービス部品ＩＤとの対応関係を示す。
【００９９】
例えば、準サービス部品情報１１２ｇの２行目のレコードは、サービス部品ＩＤ“３”に対応する準サービス部品４３の内部に、サービス部品ＩＤ“４”に対応するサブサービス部品４４があることを示す。また、サブサービス部品４４のサブサービス部品ＩＤが“ＳＵＢ１”であることを示す。
【０１００】
更に、準サービス部品情報１１２ｇは、サブサービス部品４４に属するプログラム群およびデータに関するレコードも含む。例えば、準サービス部品情報１１２ｇの３行目のレコードは、サービス部品ＩＤ“４”と“プログラム群Ｚ”と“ＳＵＢ”とを対応付けた情報である。このレコードは、プログラム群Ｚがサブサービス部品４４に属することを示す。また、“ＳＵＢ”の設定は、サブサービス部品４４が、何れかのサービス部品の内部に入れ子に定義されるものであることを示す。準サービス部品情報１１２ｇによれば、分析部１２３は、２行目のレコードに基づいて、サブサービス部品４４が準サービス部品４３の内部に入れ子に定義されるものであることを把握できる。
【０１０１】
準サービス部品情報１１２ｇには、データｃについても同様に、サブサービス部品４４に属することを示すレコードが登録されている。
分析部１２３は、サービス部品情報１１２ｆおよび準サービス部品情報１１２ｇに基づいて、サービス部品４１，４２、準サービス部品４３およびサブサービス部品４４の分類結果をディスプレイ１１などに表示することができる。
【０１０２】
次に、分析サーバ１００の処理手順を説明する。
図１２は、分析サーバの処理例を示すフローチャートである。
（Ｓ１０）分類部１２１は、ユーザにより分析対象とするソフトウェアの指定を受け付けると、当該ソフトウェアを構成する複数のプログラムを業務サーバ２００から取得し、プログラム記憶部１１１に格納する。分類部１２１は、取得した複数のプログラムを解析し、プログラム間の呼出関係に基づいて、各プログラムをプログラム群に分類する。プログラム解析の詳細は後述される。
【０１０３】
（Ｓ１１）分類部１２１は、プログラム群に属するプログラムのデータのアクセス先に基づいて、プログラム群とデータとの関連情報を生成し、分析結果記憶部１１２に格納する。
【０１０４】
（Ｓ１２）候補生成部１２２は、関連情報に基づいて分割処理を実行することで、プログラム群およびデータのクラスタリングを行い、サービス部品候補を抽出する。クラスタリングには、例えば、前述の特開２０１３−１４８９８７号公報の方法を用いることができる。候補生成部１２２は、クラスタリングの結果、サービス部品候補情報を生成し、分析結果記憶部１１２に格納する。
【０１０５】
（Ｓ１３）分析部１２３は、サービス部品候補情報に基づいて、共通データを抽出する。分析部１２３は、共通データを示す共通データ情報を生成し、分析結果記憶部１１２に格納する。共通データの抽出処理の詳細は後述される。
【０１０６】
（Ｓ１４）分析部１２３は、共通データの抽出結果に基づいて、サービス部品の分類を行う。分析部１２３は、サービス部品の分類結果を示すサービス部品情報および準サービス部品情報を生成し、分析結果記憶部１１２に格納する。また、分析部１２３は、サービス部品情報および準サービス部品情報に基づいて、サービス部品および準サービス部品を示す画面情報を生成し、出力する。例えば、分析部１２３は、生成した画面情報をディスプレイ１１に出力し、サービス部品および準サービス部品を示す画面をディスプレイ１１に表示させる。サービス部品の分類処理の詳細は後述される。そして、分析サーバ１００の処理が終了する。
【０１０７】
ステップＳ１３のサービス部品候補を抽出する処理は、分析対象のシステム（業務サーバ２００）の複数のプログラム群（あるいはプログラム）とデータとの関係に基づいて、プログラム群とデータとの複数のグループを抽出する処理であるといえる。例えば、図８で示したように、分析サーバ１００は、第１のプログラム群（プログラム群Ａ）および第１のプログラム群にアクセスされる第１のデータ（データａ，ｂ）を含む第１のグループ（サービス部品候補３１）を分析対象のシステムから抽出する。また、分析サーバ１００は、第２のプログラム群（プログラム群Ｘ）および第２のプログラム群にアクセスされる第２のデータ（データａ，ｃ）のうち第１のデータと重複しない第３のデータ（データｃ）を含む第２のグループ（サービス部品候補３２）を分析対象のシステムから抽出する。
【０１０８】
図１３は、プログラム解析の処理例を示すフローチャートである。このプログラム解析は、上記のステップＳ１０で実行される。
（Ｓ２０）分類部１２１は、分析対象の各プログラムを参照して、プログラム間の呼出関係を取得する。例えば、分類部１２１は、プログラムに含まれる他のプログラムを呼び出すコマンド（例えば、“ＣＡＬＬ”など）を辿ることで、あるプログラムが別のプログラムを呼び出すという呼出関係を取得する。
【０１０９】
（Ｓ２１）分類部１２１は、どのプログラムからも呼び出されていないプログラムを起点に設定する。
（Ｓ２２）分類部１２１は、起点のプログラムを１つ選択し、当該起点のプログラムからの呼出構造を取得し、当該呼出構造によりプログラム群を特定する。
【０１１０】
（Ｓ２３）分類部１２１は、全ての起点のプログラムに対して呼出構造を取得したか否かを判定する。全ての起点のプログラムに対して呼出構造を取得した場合、ステップＳ２４に処理が進む。全ての起点のプログラムに対して呼出構造を取得していない場合、ステップＳ２２に処理が進む。
【０１１１】
（Ｓ２４）分類部１２１は、あるプログラムのアクセス先のデータを取得する。例えば、分類部１２１は、プログラムに含まれるデータに対する参照や更新を行うコマンド（例えば、“ＲＥＡＤ”や“ＷＲＩＴＥ”など）を検出することで、プログラムのアクセス先となっているデータを取得する。
【０１１２】
（Ｓ２５）分類部１２１は、１つのプログラム群を選択し、該当のデータにアクセスするプログラムが該当のプログラム群にあるか否かを判定する。ある場合、ステップＳ２６に処理が進む。ない場合、ステップＳ２７に処理が進む。
【０１１３】
（Ｓ２６）分類部１２１は、該当のプログラム群とアクセス先のデータとの関係を示すレコード（アクセス内容がＲＥＡＤかＷＲＩＴＥかといった情報を含む）を関連情報に記録する。
【０１１４】
（Ｓ２７）分類部１２１は、全てのプログラム群に対してデータとの関係を確認したか否かを判定する。全てのプログラム群に対して該当のデータとの関係を確認した場合、ステップＳ２８に処理が進む。全てのプログラム群に対して該当のデータとの関係を確認していない場合、ステップＳ２５に処理が進む。
【０１１５】
（Ｓ２８）分類部１２１は、対象の全てのデータに対してプログラムとの関係を確認したか否かを判定する。対象の全てのデータに対してプログラムとの関係を確認した場合、ステップＳ２９に処理が進む。対象の全てのデータに対してプログラムとの関係を確認していない場合、ステップＳ２４に処理が進む。
【０１１６】
（Ｓ２９）分類部１２１は、プログラム群とデータとの関連情報を出力する。例えば、分類部１２１は、プログラム群とデータとの関連情報（あるいは、図７で例示した関連情報に基づくプログラム群の関係を表す画像）をディスプレイ１１に表示させてもよい。そして、プログラム解析が終了する。
【０１１７】
図１４は、共通データ抽出の処理例を示すフローチャートである。この共通データ抽出は、上記のステップＳ１３で実行される。
（Ｓ３０）分析部１２３は、分析結果記憶部１１２に記憶されたサービス部品候補情報を参照して、１つのサービス部品候補を取得する。
【０１１８】
（Ｓ３１）分析部１２３は、分析結果記憶部１１２に記憶された関連情報を参照して、該当のサービス部品候補内のデータに対する更新処理（ＷＲＩＴＥ）を特定する。
（Ｓ３２）分析部１２３は、特定した更新処理が、サービス部品候補内のデータを外部（サービス部品候補の外部）から更新するものであるか否かを判定する。外部から更新するものである場合、ステップＳ３３に処理が進む。外部から更新するものでない場合（すなわち、サービス部品候補の内部のプログラム群が更新するものである場合）、ステップＳ３４に処理が進む。
【０１１９】
（Ｓ３３）分析部１２３は、該当のサービス部品候補の外部から更新されるデータを、共通データとして、当該サービス部品候補の外部に定義する。分析部１２３は、分析結果記憶部１１２に記憶された共通データ情報に、今回取得した共通データのレコードを追加する。この場合の共通データは、グローバルデータである。そして、ステップＳ３７に処理が進む。
【０１２０】
（Ｓ３４）分析部１２３は、分析結果記憶部１１２に記憶された関連情報を参照して、ステップＳ３０で取得したサービス部品候補内のデータに対する参照処理（ＲＥＡＤ）を特定する。
【０１２１】
（Ｓ３５）分析部１２３は、該当のサービス部品候補内のデータのうち、当該サービス部品候補の内部および外部の両方から参照されるのみのデータがあるか否かを判定する。当該サービス部品候補の内部および外部の両方から参照されるのみのデータがある場合、ステップＳ３６に処理が進む。当該サービス部品候補の内部および外部の両方から参照されるのみのデータがない場合、ステップＳ３７に処理が進む。
【０１２２】
（Ｓ３６）分析部１２３は、該当のサービス部品候補の内部および外部の両方から参照されるのみのデータを、共通データとして、当該サービス部品候補の外部に定義する。分析部１２３は、分析結果記憶部１１２に記憶された共通データ情報に、今回取得した共通データのレコードを追加する。この場合の共通データは、マスターデータである。
【０１２３】
（Ｓ３７）分析部１２３は、ステップＳ３０で選択したサービス部品候補内の全てのデータの関係（参照や更新の関係）を取得したか否かを判定する。全てのデータの関係を取得した場合、ステップＳ３８に処理が進む。全てのデータの関係を取得していない場合、ステップＳ３１に処理が進む。
【０１２４】
（Ｓ３８）分析部１２３は、分析結果記憶部１１２に記憶されたサービス部品候補情報を参照して、サービス部品候補内で関係がないものが存在するか否かを判定する。サービス部品候補内で関係がないものが存在する場合、ステップＳ３９に処理が進む。サービス部品候補内で関係ないものが存在しない場合、ステップＳ４０に処理が進む。ここで、ステップＳ３８における「関係」とは、「複数のプログラム群の間の関係」である。「複数のプログラム群の間に関係がある」とは、「複数のプログラム群が、該当のサービス部品候補内の同じデータにアクセスすること」である。「複数のプログラム群の間に関係がない」とは、「複数のプログラム群が、該当のサービス部品候補内の同じデータにアクセスしないこと」である。
【０１２５】
（Ｓ３９）分析部１２３は、分析結果記憶部１１２に記憶された関連情報およびサービス部品候補情報に基づいて、関係がある範囲で部品を分割する。すなわち、分析部１２３は、該当のサービス部品候補に属する複数のプログラム群を、当該サービス部品候補内の同じデータにアクセスするという関係をもつ単位に分割し、新たな複数のサービス部品候補を作成する。ここで、該当のサービス部品候補内の同じデータにアクセスするという関係をもたないプログラム群については、サービス部品候補（グループ）から除外される。
【０１２６】
（Ｓ４０）分析部１２３は、全てのサービス部品候補について共通データ抽出の処理を行ったか否かを判定する。全てのサービス部品候補について共通データ抽出の処理を行った場合、ステップＳ４１に処理が進む。全てのサービス部品候補について共通データ抽出の処理を行っていない場合、ステップＳ３０に処理が進む。
【０１２７】
（Ｓ４１）分析部１２３は、各サービス部品候補からの共通データの抽出や、サービス部品候補の分割の結果に基づいて、サービス部品情報を生成する。例えば、分析部１２３は、この段階までに決定されたサービス部品を赤色の枠を用いて表示するため、サービス部品情報におけるサービス部品のレコードの末尾に“ＲＥＤ”の情報を追加する。分析部１２３は、生成したサービス部品情報およびステップＳ３５，Ｓ３６で取得された共通データ情報を出力する。例えば、分析部１２３は、サービス部品情報および共通データ情報（あるいは、図９で例示したサービス部品や分割されたプログラム群と共通データとの関係を表す画像）をディスプレイ１１に表示させてもよい。そして、共通データ抽出が終了する。
【０１２８】
なお、ステップＳ３１において、更新処理を特定できない場合、分析部１２３は、ステップＳ３２をスキップしてステップＳ３４を実行する。また、ステップＳ３４において、参照処理を特定できない場合、分析部１２３は、ステップＳ３５，Ｓ３６をスキップして、ステップＳ３７を実行する。
【０１２９】
図１５は、サービス部品分類の処理例を示すフローチャートである。このサービス部品分類は、上記のステップＳ１４で実行される。
（Ｓ５０）分析部１２３は、分析結果記憶部１１２に記憶されたサービス部品候補情報を参照して、サービス部品候補を取得する。
【０１３０】
（Ｓ５１）分析部１２３は、分析結果記憶部１１２に記憶された共通データ情報を参照して、サービス部品候補の全てのデータが共通データであるか否かを判定する。サービス部品候補の全てのデータが共通データである場合、ステップＳ５２に処理が進む。サービス部品候補の全てのデータが共通データでない場合、ステップＳ５３に処理が進む。
【０１３１】
（Ｓ５２）分析部１２３は、該当のサービス部品候補を準サービス部品として抽出する。分析部１２３は、該当のサービス部品候補に対応する準サービス部品のレコードを、分析結果記憶部１１２に記憶された準サービス部品情報に追加する。分析部１２３は、準サービス部品を緑色の枠を用いて表示するため、準サービス部品情報における準サービス部品のレコードの末尾に“ＧＲＥＥＮ”の情報を追加する。
【０１３２】
（Ｓ５３）分析部１２３は、サービス部品候補情報に登録された全てのサービス部品候補を取得したか否かを判定する。全てのサービス部品候補を取得した場合、ステップＳ５４に処理が進む。全てのサービス部品候補を取得していない場合、ステップＳ５０に処理が進む。
【０１３３】
（Ｓ５４）分析部１２３は、分析結果記憶部１１２に記憶された関連情報を参照して、１つのデータを抽出する。
（Ｓ５５）分析部１２３は、関連情報に基づいて、該当のデータにのみアクセスするプログラム群があるか否かを判定する。該当のデータにのみアクセスするプログラム群がある場合、ステップＳ５６に処理が進む。該当のデータにのみアクセスするプログラム群がない場合、ステップＳ５８に処理が進む。以下、これらのプログラム群とデータとを、「関係するプログラム群とデータ」と言う。
【０１３４】
（Ｓ５６）分析部１２３は、関係するプログラム群とデータとが抽出した領域を跨がないか否かを判定する。抽出した領域を跨がない場合、ステップＳ５７に処理が進む。抽出した領域を跨ぐ場合、ステップＳ５８に処理が進む。ここで、「抽出した領域」とは、サービス部品または準サービス部品（グループ）に所属するプログラム群およびデータに相当する。例えば、「抽出した領域を跨がない」とは、関係するプログラム群とデータとが同じサービス部品または準サービス部品に属することを示す。また、「抽出した領域を跨ぐ」とは、関係するプログラム群とデータとが異なるサービス部品または準サービス部品に属することを示す。
【０１３５】
（Ｓ５７）分析部１２３は、該当のプログラム群とデータとを集約した単位（サブサービス部品）を作成する。例えば、分析部１２３は、サブサービス部品のレコードを、サービス部品情報または準サービス部品情報のうち、該当のサブサービス部品が属するサービス部品または準サービス部品の配下に追加する。上記のように、分析部１２３は、準サービス部品のプログラム群またはデータに対応するレコードの末尾には、“ＳＵＢ”の情報を追加する。また、分析部１２３は、サブサービス部品に、サービス部品ＩＤおよびサブサービス部品ＩＤを付与する。そして、分析部１２３は、サブサービス部品と上位のサービス部品または準サービス部品との関連を示すレコードも、サービス部品情報または準サービス部品情報に登録する。
【０１３６】
（Ｓ５８）分析部１２３は、関連情報に含まれる全てのデータに対して関係を調査したか否か（ステップＳ５４〜Ｓ５７の処理を実行したか否か）を判定する。全てのデータに対して関係を調査した場合、ステップＳ５９に処理が進む。全てのデータに対して関係を調査していない場合、ステップＳ５４に処理が進む。
【０１３７】
（Ｓ５９）分析部１２３は、サービス部品情報に基づいて、サービス部品を出力する。すなわち、分析部１２３は、サービス部品に対応するプログラム（またはプログラム群）を示す情報およびデータを示す情報を出力する。例えば、分析部１２３は、プログラム群およびデータを所定サイズのアイコン（例えば、四角形などの図形）とし、更に、サービス部品に対応するアイコン群を赤色の枠で囲った画像をディスプレイ１１に表示させる。
【０１３８】
（Ｓ６０）分析部１２３は、準サービス部品情報に基づいて、準サービス部品を出力する。すなわち、分析部１２３は、準サービス部品に対応するプログラム（またはプログラム群）を示す情報およびデータを示す情報を出力する。例えば、分析部１２３は、ステップＳ５９で表示したプログラム群およびデータに対応するアイコンのうち、準サービス部品に対応するアイコン群を緑色の枠で囲った画像をディスプレイ１１に表示させる。そして、サービス部品分類が終了する。
【０１３９】
図１６は、分類結果の表示例（その１）を示す図である。画面５０は、例えば、分析部１２３により出力された画面情報に基づいて、ディスプレイ１１に表示される。画面５０は、業務サーバ２００により実行されるプログラムおよびデータをマップ化して表示したものである。四角形で示される１つのアイコンは、１つのプログラム群またはデータを示す。なお、分析部１２３は、プログラム群単位ではなく、プログラム単位にアイコンを表示させてもよい。例えば、分析部１２３は、ユーザによるアイコンの選択操作に応じて、該当のアイコンに対応するプログラム群またはプログラムを示す情報をディスプレイ１１に表示させてもよい。
【０１４０】
画面５０は、枠で囲われた複数の領域を含む。枠Ｒ１，Ｒ２，Ｒ３，Ｒ４，Ｒ５は、サービス部品を示す枠である。例えば、枠Ｒ１，Ｒ２，Ｒ３，Ｒ４，Ｒ５の線は前述のように赤色で表示される（ただし、他の色でもよい）。枠Ｒ１，Ｒ２，Ｒ３，Ｒ４，Ｒ５の内部のプログラム群は、固有データによって関連付けられている。
【０１４１】
また、枠Ｇ１，Ｇ２，Ｇ３は、準サービス部品を示す枠である。例えば、枠Ｇ１，Ｇ２，Ｇ３の線は、前述のように緑色で表示される（ただし、枠Ｒ１，Ｒ２，Ｒ３，Ｒ４，Ｒ５と異なっていれば他の色でもよい）。枠Ｇ１，Ｇ２，Ｇ３の内部のデータは共通データである。
【０１４２】
このように、分析部１２３は、サービス部品または準サービス部品に属するプログラムを関連付けるデータの種類が固有データであるか、共通データであるかに応じて、ディスプレイ１１（表示装置）によるサービス部品や準サービス部品の表示方法を変える。上記のように枠線の色を変える他にも、線の種類（例えば、実線か破線かなど）や枠内の領域の色を変えて区別可能にするなど、種々の方法が考えられる。
【０１４３】
なお、枠Ｒ１，Ｒ２，Ｒ３，Ｒ４，Ｒ５および枠Ｇ１，Ｇ２，Ｇ３それぞれには、例えば、所属するプログラムに含まれるコメント文などから抽出された文字列（例えば、“ログイン”や“ｌｉｓｔ，ｔｏ  ｄｏ”といった文字列など）も表示される。表示される文字列は、例えば、所属するプログラムにおいて出現回数の最多のものである。ユーザは、これらの文字列から該当の枠内のプログラム群やデータがどのような機能に対応するものであるかを把握可能である。
【０１４４】
特に、枠Ｇ１，Ｇ２，Ｇ３の内部のプログラム部分で１つの機能に対応しているため、実際にまとめて扱うべきプログラムを集約できる。
このように、分析サーバ１００は、分析対象のシステムのプログラムにアクセスされるデータのうち、共通データに含まれない固有データと、共通データとをそれぞれ分離し、分離した領域を業務の切り出しやすい範囲としてユーザに提示する。
【０１４５】
なお、サービス部品や準サービス部品の業務サーバ２００からの切り出しやすさは次の通りである。第１に、枠内のデータへの外部からの参照／更新が全くない場合、その枠内のプログラムおよびデータにより実現される機能は、最も切り出しやすい。第２に、枠内のデータへの外部からの更新がない場合、その枠内のプログラムおよびデータにより実現される機能は２番目に切り出しやすい。第３に、枠内のデータへの参照および更新の両方が外部からある場合、その枠内のプログラムおよびデータにより実現される機能は切り出しにくい。
【０１４６】
分析部１２３は、このように、サービス部品や準サービス部品の内部のデータに対する外部からの参照や更新の有無に応じて、切り出しやすい部分をディスプレイ１１に表示させ、ユーザに提示することもできる。例えば、分析部１２３は、枠Ｒ１，Ｒ２，Ｒ３，Ｒ４，Ｒ５に対応する各機能は、枠Ｇ１，Ｇ２，Ｇ３に対応する各機能よりも切り出しやすい旨の情報をディスプレイ１１に表示させ、ユーザに提示してもよい。準サービス部品は、外部から更新されるデータ（グローバルデータ）を含むことがあるためである。
【０１４７】
図１７は、分類結果の表示例（その２）を示す図である。分析部１２３は、例えば、サービス部品のみをディスプレイ１１に表示させ、準サービス部品をディスプレイ１１に表示させないことも考えられる。この場合、画面６０がディスプレイ１１に表示される。画面６０は、枠Ｒ１１，Ｒ１２，Ｒ１３，Ｒ１４，Ｒ１５を含む。枠Ｒ１１，Ｒ１２，Ｒ１３，Ｒ１４，Ｒ１５は、それぞれ枠Ｒ１，Ｒ２，Ｒ３，Ｒ４，Ｒ５に対応するサービス部品を示す。しかし、それ以外のプログラム群やデータについてはグループ化されておらず、独立した点（枠で囲われないアイコン）として表示されている。このため、画面６０の表示では、ユーザは、準サービス部品を適切に把握することはできない。したがって、分析部１２３は、画面６０よりも、図１６の画面５０をディスプレイ１１に表示させ、準サービス部品を適切に特定可能にすることが好ましい。
【０１４８】
次に、プログラムおよびデータの分類方法の比較例を説明する。
図１８は、分類の比較例を示す図である。ここで、図１８では、縦方向の点線により区切られたレーンによってプログラムとデータとのグループを表している。「機能」は、プログラム群に対応する。また、例えば、ＧＵＩ（Graphical User Interface）を提供する画面の機能と、業務処理を実行する機能とは、ＷｅｂＡＰＩ（Application Programming Interface）によって関連付けられている。
【０１４９】
例えば、図１８（Ａ）の分類方法のように、システム全体を複数の単位に分割するものの、「共通データ」の区別をせずに、データを何れかの分割単位に含める方法が考えられる。この分類方法では、データは何れかの分割単位に含まれることになり、「共通データ」を明確に区別することができない。分割単位に含まれるデータが、固有データか共通データかを区別できないので、切り出しやすいかどうかを判別することができない。
【０１５０】
また、例えば、図１８（Ｂ）の分類方法のように、「共通データ」を明確にしてシステム全体を複数の単位に分割するが、「共通データ」にしかアクセスしない機能を全てバラバラに提示することも考えられる。しかし、あまりに細かい単位に分離されてしまうと、個々のプログラム群の扱いが難しくなる。この分類方法では、「共通データ」を明確にできるものの、同じデータにアクセスするという共通項がある場合に、まとめて扱いたいという要望に応えられない。
【０１５１】
図１９は、分析サーバによる分類の例を示す図である。分析サーバ１００は、「共通データ」にのみアクセスするプログラムを、個々に扱うものとして抽出するのではなく、同じデータにアクセスするものとして集約した単位を作成する。図１９の例では、「共通データ」にのみアクセスする複数の機能を集約した４つの機能を含むグループＧ１０が作成される場合を示している。グループＧ１０は、準サービス部品に対応する。
【０１５２】
また、グループＧ２１，Ｇ２２，Ｇ２３は、「固有データ」を介して分離されたプログラム群およびデータの単位である。グループＧ２１，Ｇ２２，Ｇ２３は、サービス部品に対応する。
【０１５３】
このように分析サーバ１００によれば、「固有データ」を保持するサービス部品を抽出できる。その上で、同じ「共通データ」にアクセスする複数のプログラムを、まとまった単位として抽出できるようになる。同じ「共通データ」にアクセスする複数のプログラムは、共通の性質をもっている可能性が高く、これら複数のプログラムをまとめて扱える単位を適切に抽出することができる。特に、大規模なシステムを分離する上で、ユーザが扱うには細かくなり過ぎないように、グループを提示可能になる。
【０１５４】
また、分析サーバ１００は、当該グループについて、固有データを基に分離した単位（サービス部品）と、共通データを基に分離した単位（準サービス部品）とを区別して提示することができる。更に、共通データについては、準サービス部品の分離に利用した共通データＤ１０（分離する単位に利用した共通データ）と、分離した単位から独立の共通データＤ２０とを更に分類することもできる。
【０１５５】
次に、分析サーバ１００の機能を利用して、業務サーバ２００の一部機能を分離し、移行先サーバ３００に移行する例を説明する。
図２０は、既存システムの一部機能の移行例を示す図である。例えば、業務サーバ２００では、既存業務システムとして営業支援システムが稼動している。営業支援システムには、多くのプログラムやデータが用いられている。ここで、図２０では、“ＰＧ”の文字列と数値との結合によりプログラムを表している。
【０１５６】
例えば、営業支援システムは、プログラムＰＧ１，ＰＧ２，ＰＧ３，ＰＧ４，ＰＧ５，ＰＧ６，ＰＧ７を含む（ＳＴ１）。プログラムＰＧ１，ＰＧ２，ＰＧ３，ＰＧ４，ＰＧ５，ＰＧ６，ＰＧ７は様々なデータにアクセスする。既存の営業支援システムは、一体となった構造となっていることが多く、システム変更を行おうとすると、どこに影響が及ぶか分からない。そのため、プログラムの修正や保守作業が難しい。
【０１５７】
そこで、分析サーバ１００は、業務サーバ２００のプログラム資産を分析し、プログラムＰＧ１，ＰＧ２，ＰＧ３，ＰＧ４，ＰＧ５，ＰＧ６，ＰＧ７および各データを、サービス部品および準サービス部品の機能単位に分類する。
【０１５８】
その結果、例えば、分析サーバ１００は、営業支援システムを、営業拠点管理機能、取引先管理機能および会計処理機能の３つの機能に分類する（ＳＴ２）。営業拠点管理機能は、プログラムＰＧ２，ＰＧ７、および、これらの固有データを含む。取引先管理機能は、プログラムＰＧ１，ＰＧ５，ＰＧ６、および、これらの固有データを含む。会計処理機能は、プログラムＰＧ３，ＰＧ４、および、これらの固有データを含む。また、分析サーバ１００は、営業拠点管理機能、取引先管理機能および会計処理機能からアクセスされる共通データとして、業務サーバ２００のプログラム資産から、予算・実績データを抽出する。
【０１５９】
こうして、分析サーバ１００は、プログラム資産に含まれる複数のプログラムを、機能単位に分類し、機能毎に関係するプログラムやデータを明確にすることができる。
機能別の分類によって、各機能に対応するプログラムの修正や保守作業を行い易くなる。例えば、取引先管理機能の変更を行いたい場合、取引先管理機能に関連するプログラムＰＧ１，ＰＧ５，ＰＧ６およびそれらの固有データが影響範囲となる。このため、ユーザは、分析サーバ１００により表示された分類結果を参照することで、プログラムＰＧ１，ＰＧ５，ＰＧ６およびそれらの固有データを主な変更対象とすればよいと判断することができる。また、変更の影響範囲を絞り込むことで、プログラムの変更に伴うユーザの作業を効率化でき、プログラムの変更を迅速に行えるようになる。
【０１６０】
また、ユーザは、分析サーバ１００による分類結果から、システム変更を、更に迅速化することもできる。例えば、分析サーバ１００は、固有データに関連付けられるプログラム、および、共通データに関連付けられるプログラムを、分析対象のシステム（現状の業務サーバ２００）とは異なるシステム（移行先サーバ３００）への移行対象の候補としてもよい。すなわち、取引先管理機能の処理についての変更の頻度が多い場合、取引先管理機能を業務サーバ２００から分離し、移行先サーバ３００に移行させることもできる（ＳＴ３）。
【０１６１】
この場合、ユーザは、取引先管理機能に関連するプログラムを修正して、取引先管理機能に対応するプログラムＰＧ１，ＰＧ５，ＰＧ６およびそれらの固有データを、業務サーバ２００から移行先サーバ３００に移行させる。業務サーバ２００は、取引先管理機能の実行を停止し、移行先サーバ３００が取引先管理機能を実行する。ここで、取引先管理機能から業務サーバ２００に対する予算・実績データへのアクセスは、所定のインターフェース（例えば、ＷｅｂＡＰＩ）によって定義される。
【０１６２】
このように、取引先管理機能を、業務サーバ２００から移行先サーバ３００に切り出すことで、取引先管理機能を変更した際の他の機能への影響を一層小さくすることができる。このため、業務内容の変化に応じて、システム変更を迅速に行えるようになり、業務内容の変化に迅速に対応可能になる。
【０１６３】
ところで、近年では、営業支援システムなどの業務システムは、環境や外部変化（例えば、取引先変更、法改正および拠点追加など）に合わせて迅速に変更できることが好ましい。この点、変更影響を局所化し、業務システムに含まれる個々の機能のリリースサイクルを速めることを可能にする「マイクロサービス」というソフトウェア構造が考えられている。マイクロサービスとは、システム全体を一かたまりのアプリケーションとして開発するのではなく、システムに属する各機能を、独立した軽量なサービスの集まりとして構築する手法である。独立したサービスとするために、データは、サービス毎に管理される。マイクロサービスでは、個々のサービスだけが使うデータをサービス内部に保持し、サービス間で共有するデータを明確にして、各サービスから共有するデータへのアクセス方法を決める。
【０１６４】
分析サーバ１００によれば、既存業務システムについて、ユーザにとって扱いやすい適切な単位で各機能に用いられるプログラムやデータをグループ化し、マイクロサービス化を図ることができるという利点もある。既存業務システムのマイクロサービス化に伴うユーザの作業を省力化することもできる。
【０１６５】
なお、第１の実施の形態の情報処理は、処理部１ｂにプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、ＣＰＵ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体１３に記録できる。
【０１６６】
例えば、プログラムを記録した記録媒体１３を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体１３に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【０１６７】
１  分離装置
１ａ  記憶部
１ｂ  処理部
２  システム
３  表示装置
４  出力画面
４ａ，４ｂ，４ｃ  画面部品
Ｄ１  データ集合
Ｄ１１  第１のデータセット
Ｄ１２  第２のデータセット
【図１】
2019133541.tif 000003
【図２】
2019133541.tif 000004
【図３】
2019133541.tif 000005
【図４】
2019133541.tif 000006
【図５】
2019133541.tif 000007
【図６】
2019133541.tif 000008
【図７】
2019133541.tif 000009
【図８】
2019133541.tif 000010
【図９】
2019133541.tif 000011
【図１０】
2019133541.tif 000012
【図１１】
2019133541.tif 000013
【図１２】
2019133541.tif 000014
【図１３】
2019133541.tif 000015
【図１４】
2019133541.tif 000016
【図１５】
2019133541.tif 000017
【図１６】
2019133541.tif 000018
【図１７】
2019133541.tif 000019
【図１８】
2019133541.tif 000020
【図１９】
2019133541.tif 000021
【図２０】
2019133541.tif 000022