(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-05
(45)【発行日】2024-09-13
(54)【発明の名称】レガシーシステム分析システムおよびレガシーシステム分析方法
(51)【国際特許分類】
G06F 8/70 20180101AFI20240906BHJP
【FI】
G06F8/70
(21)【出願番号】P 2020169760
(22)【出願日】2020-10-07
【審査請求日】2023-07-27
(73)【特許権者】
【識別番号】000155469
【氏名又は名称】株式会社野村総合研究所
(74)【代理人】
【識別番号】100216677
【氏名又は名称】坂次 哲也
(72)【発明者】
【氏名】楢舘 歩
(72)【発明者】
【氏名】山本 英貴
(72)【発明者】
【氏名】渡邉 浩司
(72)【発明者】
【氏名】志比 悠熙
【審査官】円子 英紀
(56)【参考文献】
【文献】岡村 正司,開発生産性を高めるようにサブシステム分割を進める,日経コンピュータ,日経BP社,2004年10月04日,第610号,pp.240-245
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/70-8/77
(57)【特許請求の範囲】
【請求項1】
情報処理システムをサブシステムに分離する箇所の候補である分離ポイントに係る情報を提示するレガシーシステム分析システムであって、
前記情報処理システムの成果物であるドキュメントの入力を受け付けて分析を行い、情報処理システムでのデータの取り扱いに係る基本機能である生成、読み取り、更新、及び削除に係る情報であるCRUD情報を抽出して、入力情報として入力情報記録部に記録する入力情報生成部と、
前記入力情報記録部に記録された前記CRUD情報に基づいてネットワーク分析を行い、得られたグラフデータからコミュニティを抽出して、前記コミュニティの情報と、前記CRUD情報とから、前記情報処理システムにおける機能とデータの結合を抽出して、分析結果記録部に記録するネットワーク分析処理部と、
前記ネットワーク分析処理部により抽出された前記コミュニティの情報と、機能とデータの結合の情報とに基づいて、前記コミュニティを跨いだアクセスが生じる機能とデータの結合である密結合ポイントを検出して提示する分析結果評価部と、を有
し、
前記分析結果評価部は、さらに、前記コミュニティの情報および機能とデータの結合の情報と、前記情報処理システムのサブシステム構成とを比較して乖離部分を検出して提示し、
さらに、前記分析結果評価部により検出された前記密結合ポイントおよび前記乖離部分に係る情報と、前記情報処理システムの開発および/または運用に係る所定の定量情報とに基づいて、前記分離ポイントを検出して提示する分離ポイント提案部を有する、
レガシーシステム分析システム。
【請求項2】
情報処理システムをサブシステムに分離する箇所の候補である分離ポイントに係る情報を提示するレガシーシステム分析システムであって、
前記情報処理システムの成果物であるドキュメントの入力を受け付けて分析を行い、情報処理システムでのデータの取り扱いに係る基本機能である生成、読み取り、更新、及び削除に係る情報であるCRUD情報を抽出して、入力情報として入力情報記録部に記録する入力情報生成部と、
前記入力情報記録部に記録された前記CRUD情報に基づいてネットワーク分析を行い、得られたグラフデータからコミュニティを抽出して、前記コミュニティの情報と、前記CRUD情報とから、前記情報処理システムにおける機能とデータの結合を抽出して、分析結果記録部に記録するネットワーク分析処理部と、
前記ネットワーク分析処理部により抽出された前記コミュニティの情報と、機能とデータの結合の情報とに基づいて、前記コミュニティを跨いだアクセスが生じる機能とデータの結合である密結合ポイントを検出して提示する分析結果評価部と、を有し、
さらに、前記入力情報記録部から、指定された条件に従って第1のCRUD情報を選択して取り出す入力情報選択部を有し、
前記入力情報選択部が前記第1のCRUD情報を選択して取り出す際に指定される条件は、データをデータ単位とするかデータ項目単位とするか、およびCRUD情報について読み取りを含むか含まないか、の組み合わせからなる、レガシーシステム分析システム。
【請求項3】
請求項
1に記載のレガシーシステム分析システムにおいて、
前記分析結果評価部は、検出した前記乖離部分について、所定のパターンに該当する非正規化構造データおよび上記非正規化構造データを更新する機能に対応する箇所に絞り込む、レガシーシステム分析システム。
【請求項4】
請求項
1に記載のレガシーシステム分析システムにおいて、
前記分離ポイント提案部が前記分離ポイントを検出する際に用いる前記定量情報は、前記情報処理システムでの前記分離ポイントに対応する箇所におけるサブシステム内および/またはサブシステム間の結合テストの件数、障害発生頻度、改修頻度、および作業工数のうち1つ以上を含む、レガシーシステム分析システム。
【請求項5】
コンピュータシステムにより、情報処理システムをサブシステムに分離する箇所の候補である分離ポイントを提示するレガシーシステム分析方法であって、
前記コンピュータシステムが、
前記情報処理システムの成果物であるドキュメントの入力を受け付けて分析を行う第1のステップと、
情報処理システムでのデータの取り扱いに係る基本機能である生成、読み取り、更新、及び削除に係る情報であるCRUD情報を抽出して、入力情報として入力情報記録部に記録する第2のステップと、
前記入力情報記録部に記録された前記CRUD情報に基づいてネットワーク分析を行い、得られたグラフデータからコミュニティを抽出する第3のステップと、
前記第3のステップで抽出された前記コミュニティの情報と、前記CRUD情報とから、前記情報処理システムにおける機能とデータの結合を抽出して、分析結果記録部に記録する第4のステップと、
前記第3のステップで抽出された前記コミュニティの情報と、前記第4のステップで抽出された機能とデータの結合の情報に基づいて、前記コミュニティを跨いだアクセスが生じる機能とデータの結合である密結合ポイントを検出して提示する第5のステップと、
前記第3のステップで抽出された前記コミュニティの情報および前記第4のステップで抽出された機能とデータの結合の情報と、前記情報処理システムのサブシステム構成とを比較して乖離部分を検出して提示する第6のステップと、
前記第6のステップで検出された前記密結合ポイントおよび前記乖離部分に係る情報と、前記情報処理システムの開発および/または運用に係る所定の定量情報とに基づいて、前記分離ポイントを検出して提示する第7のステップと、
を有するレガシーシステム分析方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システムを分析する技術に関し、特に、ネットワーク分析手法を用いて分析するレガシーシステム分析システムおよびレガシーシステム分析方法に適用して有効な技術に関するものである。
【背景技術】
【0002】
経済産業省の「DXレポート」(非特許文献1)において“2025年の崖”としてブラックボックス化した既存の基幹システム(いわゆる「レガシーシステム」)への対応の遅れに対して警鐘が鳴らされており、レガシーシステムに対する危機感を持つユーザーが増えている。レガシーシステムに関する課題は以前から存在していたが、従来のレガシーシステムに対する対応は、ハードウェアの保守サポート切れに伴う更改にあわせて利用言語を変更するなどのマイグレーションによる対応、もしくは機能追加を繰り返すことによるシステムの維持などが主で、いずれも根本的な対策にはなっていなかった。
【0003】
レガシーシステムを適切に再構築するためには、レガシーシステムを的確に分析する手法を確立する必要がある。しかし、従来のシステム分析の手法では、一般的に、レガシーシステムを駆使して現場業務を熟知している業務ユーザの「業務観点」による分析アプローチと、長年システムを維持・保守してきた有識者による「システム機能観点」からの分析アプローチになっていることが多かった。このような分析アプローチでは、現行システム寄りの分析となりがちで、再構築後も現行システムのデータモデルを踏襲した形となってしまい、現行システムでの問題が内在したままの状態となりやすい。また、データの配置を適切に分離・分類することが困難なため、分析の結果としてレガシーシステムの再構築は不可能という結論になってしまい、マイグレーション等の対応で済ませて根本的な対策に至らないという結果になりやすい。
【0004】
これに対し、レガシーシステム分析の手法として、いわゆるネットワーク分析の手法を用いて、例えば、システム上の機能と、機能が更新するデータの関係をネットワーク構造として表して、グループ化するという手法も検討されている。システム開発の領域においてネットワーク分析を適用する例として、例えば、特許第5762857号公報(特許文献1)には、ソフトウェア開発における複数の工程の成果物同士の間の依存関係の状態についてネットワーク分析を用いて分析し、単に影響の有無だけではなく、依存関係の複雑さ、例えば絡みあいの多寡等について評価することが記載されている。
【先行技術文献】
【特許文献】
【0005】
【非特許文献】
【0006】
【文献】“DXレポート ~ITシステム「2025年の崖」克服とDXの本格的な展開~”、[online]、平成30年9月7日、経済産業省、[令和2年8月27日検索]、インターネット<URL:https://www.meti.go.jp/shingikai/mono_info_service/digital_transformation/20180907_report.html>
【発明の概要】
【発明が解決しようとする課題】
【0007】
従来技術によれば、システム開発における上流・下流工程の成果物間の依存関係を分析することで、開発保守や改造作業において、変更の影響範囲を把握したり、依存関係が少ない箇所で分離して作業を分担したりすることが可能となり得る。
【0008】
しかし、従来技術では、上流・下流の各工程の成果物が整備されていなければ分析は困難であり、レガシーシステムのようにドキュメントの整備が十分ではなくブラックボックス化したシステムでは適用が限定されてしまう場合があり得る。また、上流工程の成果物では自然言語の解析が必要となったり、下流工程の成果物との間の対応付を別途人手で行う必要があったりなど、分析の際の入力情報を整備することが困難となるケースが多くなることも想定される。
【0009】
そこで本発明の目的は、レガシーシステムの分析において、汎用的なデータを入力としてネットワーク分析を行い、再構築の際に分離すべき箇所の候補に係る情報を提示することを可能とするレガシーシステム分析システムおよびレガシーシステム分析方法を提供することにある。
【0010】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記載および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0011】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。
【0012】
本発明の代表的な実施の形態であるレガシーシステム分析システムは、情報処理システムをサブシステムに分離する箇所の候補である分離ポイントに係る情報を提示するレガシーシステム分析システムであって、前記情報処理システムの成果物であるドキュメントの入力を受け付けて分析を行い、情報処理システムでのデータの取り扱いに係る基本機能である生成、読み取り、更新、及び削除に係る情報であるCRUD情報を抽出して、入力情報として入力情報記録部に記録する入力情報生成部と、前記入力情報記録部に記録された前記CRUD情報に基づいてネットワーク分析を行い、得られたグラフデータからコミュニティを抽出して、前記コミュニティの情報と、前記CRUD情報とから、前記情報処理システムにおける機能とデータの結合を抽出して、分析結果記録部に記録するネットワーク分析処理部と、前記ネットワーク分析処理部により抽出された前記コミュニティの情報と、機能とデータの結合の情報とに基づいて、前記コミュニティを跨いだアクセスが生じる機能とデータの結合である密結合ポイントを検出して提示する分析結果評価部と、を有する。
【0013】
また、本発明は、上記のような情報処理システムにおいて実行される方法にも適用することができる。
【発明の効果】
【0014】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下のとおりである。
【0015】
すなわち、本発明の代表的な実施の形態によれば、多様なレガシーシステムにおいて、ネットワーク分析により、分離すべき箇所の候補に係る情報を提示することが可能となる。
【図面の簡単な説明】
【0016】
【
図1】本発明の一実施の形態であるレガシーシステム分析システムの構成例について概要を示した図である。
【
図2】本発明の一実施の形態におけるレガシーシステムの分析にネットワーク分析を適用する場合の概念の例について概要を示した図である。
【
図3】本発明の一実施の形態におけるCRUD情報をグラフデータに整形した例について概要を示した図である。
【
図4】本発明の一実施の形態における グラフデータを可視化し、コミュニティ抽出を行った場合の具体的な例について概要を示した図である。
【
図5】(a)~(c)は、本発明の一実施の形態における「アンチモデル」の例について概要を示した図である。
【
図6】(a)、(b)は、本発明の一実施の形態における非正規化構造データを疎結合化する例について概要を示した図である。
【
図7】本発明の一実施の形態における、レガシーシステム分析処理の全体の流れの例について概要を示したフローチャートである。
【発明を実施するための形態】
【0017】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。一方で、ある図において符号を付して説明した部位について、他の図の説明の際に再度の図示はしないが同一の符号を付して言及する場合がある。
【0018】
<概要>
本発明の一実施の形態であるレガシーシステム分析システムは、レガシーシステムを再構築するためにこれを適切かつ迅速に分析する手法として、ネットワーク分析の手法を用いるものである。ネットワーク分析とは、対象の複数のデータ間の接続関係を構造化したもの(ネットワーク)を可視化・指標化することで、構造上の特徴を抽出する分析手法として知られたものである。
【0019】
ネットワーク分析には、例えば、ネットワーク構造における中心的なデータを見つける中心性解析や、ネットワーク構造における目的に応じた経路を見つける経路探索、ネットワーク構造を一定の単位で分割し、まとまりのあるグループ(コミュニティ)を抽出するグループ分割・抽出などの解析手法があるが、本実施の形態で対象とするレガシーシステムの分析ではグループ分割・抽出の手法を適用する。
【0020】
すなわち、レガシーシステムの分析では、システム上の「機能」と、「機能」が更新する「データ」との関係を類似するグループでカテゴライズした上で、ある「機能」から異なるカテゴリーに属する「データ」の更新を行っている箇所を「密結合ポイント」と定義する。この定義からすると、グループ内の「機能」群の類似性が高く、グループ間の関係がより疎になるようにカテゴライズできる手法が適切であり、ネットワーク分析におけるグループ分割・抽出(コミュニティ抽出)の手法との親和性が高いといえる。
【0021】
図2は、本発明の一実施の形態におけるレガシーシステムの分析にネットワーク分析を適用する場合の概念の例について概要を示した図である。上段の図は、分析対象のレガシーシステム上の「機能」と、「機能」が更新する「データ」との関係を分析して得られるネットワーク構造(グラフ)の例を示している。ここでは、抽出された「機能」と「データ」がそれぞれノード(頂点)として示され、各「機能」と、当該「機能」が更新する「データ」との間が辺(エッジ)として示されている。そして下段の図は、得られたネットワーク構造に対してグループ分割・抽出(コミュニティ抽出)の手法を適用して、類似するグループでカテゴライズした結果の例を示している。ここでは、類似性が高いものとしてカテゴライズされた「機能」や「データ」の集合がコミュニティとして抽出されている。
【0022】
そして、コミュニティ間を横断しているエッジ、すなわち、ある「機能」から異なるカテゴリーに属する「データ」の更新を行っている箇所が「密結合ポイント」として抽出されている。「密結合ポイント」は、異なる「機能」群の間で「データ」の更新が発生することから、システム改修時における難易度やコストが増加する可能性が高い箇所ということができる。本実施の形態では、このような分析結果などに基づいて、レガシーシステムを再構築する際にどのようにサブシステムに分離・分割するかという分離ポイントの候補を提示することを可能とするものである。
【0023】
<システム構成>
図1は、本発明の一実施の形態であるレガシーシステム分析システムの構成例について概要を示した図である。
図1に示したレガシーシステム分析システム1は、例えば、サーバー機器やクラウドコンピューティングサービス上に構築された仮想サーバ等によりサーバシステムとして構成され、図示しないネットワークを介してパーソナルコンピュータ(PC)等からなるユーザ端末2が接続する構成を有する。レガシーシステム分析システム1自体がユーザ端末2の機能も有するスタンドアロンの構成であってもよい。そして、レガシーシステム分析システム1は、例えば、図示しないCPU(Central Processing Unit)により、HDD(Hard Disk Drive)等の記録装置からメモリ上に展開したOS(Operating System)、Webサーバ等のミドルウェアや、その上で稼働するソフトウェアを実行することで、レガシーシステムの分析に係る後述する各種機能を実現する。
【0024】
レガシーシステム分析システム1は、例えば、ソフトウェアによって実装された入力情報生成部11、入力情報選択部12、ネットワーク分析処理部13、分析結果評価部14、分離ポイント提案部15、およびユーザインタフェース部16などの各部や、データベースやファイル等により構成された入力情報リポジトリ17、分析結果リポジトリ18、および現行システム情報19などの各データストアを有する。
【0025】
入力情報生成部11は、例えば、分析対象のレガシーシステムに係るドキュメント(成果物)3のファイルやデータを入力として受け付けて分析を行い、いわゆるCRUD情報を抽出して、これを「機能」と「機能」が更新する「データ」の組み合わせからなるグラフデータに整形する等により、ネットワーク分析の入力情報を生成し、これを入力情報リポジトリ17に記録する機能を有する。入力するドキュメント3については、例えば、後述するユーザインタフェース部16を介して、ユーザがユーザ端末2を使用して指定する構成とすることができる。
【0026】
CRUD情報とは、永続的なデータを取り扱うコンピュータシステムやソフトウェアに要求される4つの基本機能(Create(生成)、Read(読取り)、Update(更新)、Delete(削除))に係る情報である。本実施の形態では、例えば、ドキュメント3としてソースコードを入力として解析を行い、CRUD情報として、実装されている「機能」と、当該「機能」においてアクセスされる「データ」との関連を抽出する。この解析には、例えば、抽出した結果をグラフデータとして整形して出力するような既存の静的解析ツールなどを用いてもよい。ソースコードというプログラミング言語によって規定される汎用的なドキュメントを用いることで、各種のレガシーシステムについて分析を行うことが可能となる。
【0027】
図3は、本発明の一実施の形態におけるCRUD情報をグラフデータに整形した例について概要を示した図である。ここでは、既存の静的解析ツールによりソースコードを入力として解析を行い、「機能」を抽出するとともに、その「機能」が呼び出すサブ機能や関数、メソッドの関係、およびこれらが最終的にアクセスする「データ」との関係(すなわち「機能」と当該機能がアクセスする「データ」との組み合わせ)をグラフ化して出力した例を示している。「データ」については、データベースのテーブルおよびこれに含まれるカラムのレベルで解析した状況を示している。得られたCRUD情報は、入力情報として、例えば、入力情報リポジトリ17に保管しておく。
【0028】
図1に戻り、入力情報選択部12は、例えば、入力情報リポジトリ17に保持されているCRUD情報からユーザにより指定された条件に従って入力情報を選択して取り出す機能を有する。条件の指定は、例えば、後述するユーザインタフェース部16を介してユーザ端末2から指定するよう構成することができる。
【0029】
ここで、ネットワーク分析への入力情報は、「データ」の単位、及びCRUD情報の単位の組み合わせにより以下に述べるような4つのパターンに分類される。ユーザは、分析対象のレガシーシステムの特性に合わせてパターンを設定し、これに従って入力情報を選択して取り出す。
【0030】
「データ」の単位としては、データ(データベースのテーブル)単位とするか、データ項目(カラム)単位とするかを指定することができる。データ項目単位とした場合は、情報量が多くなることから精緻な情報を得ることができたり、1つのテーブルに対して複数の機能がアクセスするような「非正規化構造データ」を把握・導出することができたりという長所がある一方で、情報量が多くなることから、結果の分析の時間や手間を多く要するという短所がある。一方、データ単位とした場合は、データ単位でのCRUD情報がドキュメント3として整備されている場合は静的解析ツール等を用いなくても容易に分析することができたり、情報量が少なくなることから結果の分析が容易になったりという長所がある一方で、「非正規化構造データ」を把握・導出することができないという短所がある。
【0031】
CRUD情報の単位としては、「Create」「Read」「Update」「Delete」を全て含む「CRUD」とするか、「Read」を含まない「CUD」とするかを指定することができる。「CRUD」とした場合は、参照系を含めたコミュニティを抽出することができる可能性があるという長所がある一方で、マスタデータなど多くの「機能」から参照される「データ」がある場合にコミュニティがこれに引きずられてノイズとなる可能性があるという短所がある。一方、「CUD」とした場合は、システムの改修がより困難な更新系に着目したコミュニティを抽出することができるという長所がある一方で、参照のみを行う「機能」については別途コミュニティを抽出する方法を検討する必要があるという短所がある。
【0032】
上記の「データ」の単位(データ単位/データ項目単位)とCRUD情報の単位(「CRUD」/「CUD」)の組み合わせとして、(1)データ単位・「CRUD」、(2)データ単位・「CUD」、(3)データ項目単位・「CRUD」、(4)データ項目単位・「CUD」の4つのパターンが考えられる。入力情報の選択に際してこれら4パターンのいずれを用いるかについては、例えば、分析対象のレガシーシステムの特性に応じてユーザが都度指定できるようにしてもよいし、特定のパターン(例えば(1)のパターン)をデフォルトとしておき、必要に応じてユーザが異なるパターンに変更できるようにしてもよい。
【0033】
ネットワーク分析処理部13は、例えば、入力情報選択部12により入力情報リポジトリ17から選択して抽出された入力情報に基づいてネットワーク分析を行い、グラフデータについてコミュニティを抽出するとともに、ネットワーク分析の結果とCRUD情報から、「機能」と「データ」のまとまり(結合)を抽出する機能を有する。分析・抽出の結果は、分析結果リポジトリ18に記録する。
【0034】
図4は、本発明の一実施の形態における、グラフデータを可視化し、コミュニティ抽出を行った場合の具体的な例について概要を示した図である。上段の図は、
図2の例の上段の図と同様に、入力情報に基づいてネットワーク分析を行い、グラフデータを可視化した場合の具体例を示している。また下段の図は、上段の図のグラフデータに対してコミュニティ抽出を行った結果の具体例を示している。
【0035】
ネットワーク分析やコミュニティ抽出の実行については、例えば、一般に公開されて利用可能なライブラリやアルゴリズムなどを適宜利用することができる。コミュニティ抽出の代表的な分析手法には、例えば、モジュラリティや連結成分分割、ラベル伝搬法などがあり、それぞれの手法に代表的なアルゴリズムがPython用やSpark用などのライブラリとして実装されている。
【0036】
本実施の形態では、モジュラリティの手法を用いるものとするが、これに限られるものではない。モジュラリティの手法は、コミュニティ抽出における代表的な手法であり、コミュニティ内のデータの繋がりができるだけ密になるように、かつコミュニティ間の繋がりができるだけ疎になるようにネットワークからコミュニティを抽出するという特徴を有する。コミュニティの密度はモジュラリティ(Q値)により数学的に測ることができ、モジュラリティ(Q値)が最大となるようコミュニティを決定する。
【0037】
図1に戻り、分析結果評価部14は、例えば、分析結果リポジトリ18に記録されたコミュニティ抽出の結果に基づいて、
図2の下段の図に示すような密結合ポイント、すなわちコミュニティ間を跨いだアクセスが生じる「機能」と「データ」のまとまりを検出して、後述するユーザインタフェース部16を介してユーザ端末2に提示する機能を有する。複数の「機能」によりアクセスされる「非正規化構造データ」を抽出して提示する機能を有していてもよい。また、現行システム情報19に予め登録されている現行のレガシーシステムの構成に係る情報に基づいて、ネットワーク分析、コミュニティ抽出の結果と、レガシーシステムのサブシステム構成とを比較して乖離部分を検出して、後述するユーザインタフェース部16を介してユーザに提示する機能を有する。
【0038】
分離ポイント提案部15は、例えば、分析結果評価部14により抽出された密結合ポイントおよび現行のレガシーシステムとの乖離部分に係る情報と、現行システム情報19に予め登録されているレガシーシステムの開発・運用におけるシステム対応や保守運用時の定量情報(例えば、サブシステム内/サブシステム間の結合テストの件数や、障害発生頻度、改修頻度、それぞれの作業に要した工数など)に基づいて、レガシーシステムを分離すべき箇所および/または分離すべきでない箇所を導出して、後述するユーザインタフェース部16を介してユーザに提示する機能を有する。
【0039】
ユーザインタフェース部16は、例えば、図示しないWebサーバプログラムなどを備え、ユーザ端末2に対して入力や指示などの受け付けや分析結果の提示などのユーザインタフェースを提供する機能を有する。レガシーシステム分析システム1自体が備える図示しないディスプレイやキーボード等の入出力デバイスを介してこれらの機能を実現する構成であってもよい。
【0040】
<分離すべき/すべきでない箇所の導出>
上記の分離ポイント提案部15では、ネットワーク分析により抽出された密結合ポイントと現行レガシーシステムとの乖離部分に係る情報等に基づいて、レガシーシステムを分離(疎結合化)すべき/すべきでない箇所を導出する。
【0041】
ここで、ネットワーク分析により得られた結果は、以下の特徴を有するものと考えられる。
(1)同一のコミュニテイ内の各「機能」は類似性が高く、別のコミュニティに分類
された「機能」群とは、機能的に独立性が高い
(2)コミュニティ間を跨ぐ関連(エッジ)は、別の「機能」群と密接に関連する部分
すなわち密結合ポイントである
(3)同一の「データ」(テーブル)内において、更新する「機能」が属するコミュニ
ティが異なるデータ項目(カラム)は、本来業務目的が異なるデータ項目であり、
密結合ポイントとなる可能性がある
上記(1)の特徴からは、基本的にコミュニティの単位でシステムを分離するのが望ましく、コミュニティ内の「機能」の単位でコストをかけて分離する必要はないものと考えられる。ここで、コミュニティの範囲は、ある「機能」を修正した場合の影響範囲であると考えることができるため、実際にはレガシーシステムにおけるサブシステム内結合テストのテスト範囲と概ね一致するものと考えられる。これらが乖離している場合は、レガシーシステムのサブシステムの分割方法に問題があり、再構成が必要である可能性があるといえる。
【0042】
また、上記(2)の特徴からは、該当箇所(密結合ポイント)は、他の「機能」と比較して相対的に障害が発生しやすい箇所であると考えられるため、分離するのが望ましいということができる。一方で、他の「機能」と比較して相対的に修正に係る難易度やコストが高い箇所でもあると考えられるため、例えば、該当箇所の障害発生件数が一定以下の場合や、該当箇所に関連するサブシステム間結合テストの項目数や、開発工数、テスト工数等が一定以上の場合には、あえて分離しない方が望ましい(分離すべきでない)ということがいえる。
【0043】
上記(3)の特徴についても、上記(2)の特徴と同様に、該当箇所は、他の「機能」と比較して相対的に障害が発生しやすい箇所である一方で、修正に係る難易度やコストが高い箇所であると考えられるため、上記(2)と同様の考え方をとることができる。上記(3)の特徴においてはさらに、対象の「データ」(テーブル)は、業務目的が異なるデータ項目(カラム)、例えば、「出荷用」と「入荷用」のような別業務で利用するデータ項目が同一のテーブルに混在してまとめられている非正規化構造データであると考えられるため、データを再配置することで疎結合化することができる可能性がある箇所であるといえる。
【0044】
本実施の形態では、対象となる非正規化構造データを抽出するため、例えば、予め「こうあるべきではない」という構造を示した「アンチモデル」を定義しておき、このモデルに該当するテーブルを非正規化構造データとして抽出する。
【0045】
ここで、システムにおいて一般的に「こうあるべき」という構造は、「品質の安定性」と「生産性の向上(開発のスピードアップ、コストの抑制)」を実現することができる構造であり、そのためには、各「機能」が実装されたモジュールの独立性が高い(疎結合である)構造や設計であることが必要である。モジュールの独立性は、モジュール“内”の「機能」どうしの関連度合いが高い(「高凝集」である)ほど、また、モジュール“間”の結びつき度合いが低い(「疎結合」である)ほど高くなり、そのような独立性の高いモジュールの集合体として「疎なシステム」が実現される。したがって、「アンチモデル」とは、上記の「疎なシステム」の特徴とは逆に、「低凝集」、「密結合」な構造を示すものであるといえる。
【0046】
図5は、本実施の形態における「アンチモデル」の例について概要を示した図である。
図5(a)のモデルは、構造(桁数や型)やカラム(データ項目)が持つ意味合いが同一もしくは類似するテーブルが複数存在し(図中の例では「テーブルA」、「テーブルB」、「テーブルC」)、それぞれが異なる「機能」(図中の例では「機能A」、「機能B」、「機能C」)から作成、更新されるタイプを示している。このタイプのモデルに該当するテーブルを取り扱う各「機能」は、それぞれ類似するクローンコードもしくはクローンメソッドである(すなわち「低凝集」である)可能性がある。
【0047】
図5(b)のモデルは、ある「機能」(図中の例では「機能A」)からその「機能」の本来の意味合い(図中の例では「機能群A」)とは異なる意味合い(図中の例では「機能群C」)のテーブルに対して更新がされるタイプ(密結合型)を示している。例えば、「出荷業務」の「機能」から「入荷業務」のテーブルを更新するような場合である。このタイプでは、カテゴリが異なる「機能」群を跨いたテーブルの更新が行われる密結合状態となっている可能性がある。
【0048】
図5(c)のモデルは、密結合型の別のタイプとして、あるテーブル(図中の例では「テーブルA」)に多くの機能(図中の例では「機能A」、「機能B」、「機能C」)から更新が集中しており、かつ更新する「機能」毎に更新対象の項目が異なる(図中の例では「項目1」~「項目3」、「項目4」~「項目6」、「項目7」~「項目9」)タイプを示している。このタイプについても、対象のテーブルが本来異なるカテゴリ(例えば「出荷機能」と「入荷機能」など)に属するデータを同一のテーブルに保持していることから、カテゴリが異なる「機能」群を跨いたテーブルの更新が行われる密結合状態となっている可能性がある。
【0049】
非正規化構造データを抽出する際に用いるアンチモデルとしては、
図5(a)~(c)のいずれのモデルを用いてもよいが、本実施の形態では主に
図5(c)の密結合型のアンチモデルを使用し、これに該当するテーブルを抽出するものとする。抽出は、例えば、
図3の例に示したようなCRUD情報をシステム的に解析することで抽出することができる。抽出された非正規化構造データについては、そのデータ構造を目的(ドメイン)に応じて再配置することで、追加/変更に強い疎結合なシステム構造とすることが可能である。
【0050】
図6は、本実施の形態における非正規化構造データを疎結合化する例について概要を示した図である。
図6(a)は、非正規化構造データが、
図5(c)の例のように、テーブル内のカラムの用途が更新する「機能」毎に明確であり、これらの「機能」毎にテーブルの分割が可能な場合の例を示している。左側の図が密結合の状態を示しており、右側の図が「機能」毎にテーブルを分割して(図中の例では「テーブルA」、「テーブルB」、「テーブルC」)、「機能」群を跨いだテーブルの更新を解消して疎結合化した状態を示している。このパターンでは、目的に応じてデータモデルを分割し、目的別のデータモデルをリソース単位とした「機能」(サービス)の設計とすることで、システムの疎結合化を図ることができる。
【0051】
図6(b)は、対象のテーブルが、例えば、「機能」を順次実行するワークフロー(図中の例では「機能A」→「機能B」→「機能C」の順に実行)においてステータス管理を行う場合等、複数の「機能」群から更新されるカラムを多く有するテーブルである場合の例を示している。
【0052】
左側の図が、複数の「機能」が特定のテーブルの特定のカラム(図中の例では「テーブルB」の「項目3」)を更新している密結合の状態を示しており、右側の図が、「機能」毎にテーブルを分割して、ステータス管理を行わずに、他の「機能」に係る必要な情報については、対応するテーブルを読み取りする形とすることで疎結合化した状態を示している。このパターンでは、1つの「機能」(サービス)に対応する1つのリソースの単位でテーブルを分割し、「機能」間はAPI(Application Programming Interface)やメッセージングの手段を用いて非同期で相互を意識しない形でのデータ連携の手法をとることで、システムの疎結合化を図ることができる。
【0053】
上述したように、本実施の形態では、密結合ポイントの中でもシステムを分離すべきである箇所や、非正規化構造データの中でもデータを分離して再配置すべきものについて、現行レガシーシステムの定量情報等に基づいて絞り込んで提案する。例えば、上述したように、密結合ポイントでは他の「機能」と比較して相対的に本番システムでの障害が発生しやすいと考えられることから、本番システムでの障害発生に係る情報、すなわち、障害となった「機能」やこれに関連するCRUD情報、当該障害を流出させた工程(設計や、単体テスト、サブシステム間結合テストなどの工程)に係る情報などに基づいて、対象の障害がサブシステム間テストにおいて流出しており、対象の「機能」および「データ」に合致する密結合ポイントを、分離すべき密結合ポイントとして提案する。
【0054】
また、密結合ポイントでは他の「機能」と比較して相対的に修正コストが高い、すなわち、サブシステム間結合テストの項目数が多いと考えられることから、例えば、プロジェクト完了報告時などで収集する情報(例えば、サブシステム間結合テストのテストケースに該当する機能やCRUD情報、テスト密度に係る情報(ケース/KLOC(Kilo Lines of Code)、MM(人月)等)に基づいて、サブシステム間結合テストのテスト密度を求め、これが一定以上高い(もしくは一定の順位以上の)「機能」に合致する密結合ポイントを、分離すべき密結合ポイントとして提案する。
【0055】
また、密結合ポイントとなる「機能」および「データ」は、システム規模が大きく、相対的に修正コストが高いと考えられ、同一の「データ」の項目に対して更新するコミュニティが分かれる「機能」および「データ」、すなわち、上述した非正規化構造データについては、これに該当しやすいと考えられる。したがって、非正規化構造データの中で、レガシーシステムの基礎数値情報やプロジェクト完了報告時などで収集する情報(例えば、「機能」別のプログラム規模(FP(Function Point)、KLOC等)や、初期開発コスト(KLOC/MM)、修正コスト(KLOC/MM)、CRUD情報等)に基づいて求めた修正コストが一定以上高い(もしくは一定の順位以上の)「機能」に合致するものを、データモデルを分離すべき箇所として提案する。
【0056】
以上のように、ネットワーク分析により抽出された密結合ポイントと現行レガシーシステムとの乖離部分に係る情報に対して、さらに現行レガシーシステムに係る定量情報を考慮することで、レガシーシステムの疎結合化に係る提案をより適切かつ効率的に行うことができる。
【0057】
<処理の流れ>
図7は、本実施の形態におけるレガシーシステム分析処理の全体の流れの例について概要を示したフローチャートである。レガシーシステム分析システム1において分析処理を開始すると、まず、入力情報生成部11により、分析対象のレガシーシステムに係るドキュメント3の入力を受け付ける(S01)。その後、入力情報生成部11では、入力されたドキュメント3について分析を行ってCRUD情報を抽出する(S02)。ここでは、上述したように、入力情報生成部11として静的解析ツールを用いて分析を行って抽出する構成であってもよい。その後、入力情報生成部11では、抽出されたCRUD情報を加工・整形して
図3の例に示すようなグラフデータ(「機能」と「データ」の組み合わせ)を生成するなどし、ネットワーク分析の入力情報として入力情報リポジトリ17に記録する(S03)。
【0058】
次に、入力情報選択部12が、ユーザから指定された条件(データ単位かデータ項目単位か、「CRUD」か「CUD」か)に基づいて、入力情報リポジトリ17に保持されているCRUD情報から入力情報を選択して取り出す(S04)。条件については、ユーザにより予め指定された条件や、デフォルトの条件を使用するものとして、上記のステップS03の処理の後、ステップS04の処理を継続して行ってもよいし、この時点でユーザからの条件の指定を受け付けるようにしてもよい。
【0059】
その後、ネットワーク分析処理部13により、上記のステップS04で選択された入力情報に基づいてネットワーク分析を行って、グラフデータについて
図4の例に示すようなコミュニティ抽出を行い(S05)、さらにネットワーク分析によるコミュニティ抽出の結果とCRUD情報から、「機能」と「データ」のまとまりを抽出して、分析結果リポジトリ18に記録する(S06)。
【0060】
その後、分析結果評価部14により、分析結果リポジトリ18に記録されたコミュニティ抽出の結果に基づいて、分析対象のレガシーシステムにおける密結合ポイント、すなわち、コミュニティ間を跨いだアクセスが生じる「機能」と「データ」や、非正規化構造データを検出して、ユーザインタフェース部16を介してユーザに提示する(S07)。また、分析結果リポジトリ18に記録されたコミュニティ抽出の結果と、現行システム情報19に記録された現行レガシーシステムのサブシステム構成との乖離部分を抽出して、ユーザインタフェース部16を介してユーザに提示する(S08)。ここでは、ネットワーク分析の結果として得られたコミュニティと、現行レガシーシステムのサブシステム分割の内容を対比して表示するが、上述したように、例えば、乖離部分の絞り込みの条件として、
図5の例に示したような「アンチモデル」に該当する非正規化構造データ、およびこれを更新する「機能」に対応する箇所を抽出するものとしてもよい。
【0061】
そして、分離ポイント提案部15により、上記のステップS07で抽出された密結合ポイントおよびステップS08で抽出された現行レガシーシステムとの乖離部分に係る情報と、現行システム情報19に予め登録されているレガシーシステムにおけるシステム対応や保守運用時の定量情報に基づいて、レガシーシステムを分離すべき箇所(分離ポイント)および/または分離すべきでない箇所を導出して、ユーザインタフェース部16を介してユーザに提示して(S09)、レガシーシステムの分析処理を終了する。
【0062】
分離ポイントの提示に際しては、上述したように、例えば、現行レガシーシステムの設計情報(サブシステム定義)と、ネットワーク分析の結果として得られたコミュニティとの乖離部分の情報に対して、現行レガシーシステムの該当箇所における保守運用上のファクト(システム規模やサブシステム内/間結合テストの件数、障害発生箇所や頻度等の定量情報)を照らし合わせ、分離ポイントおよび/または分離すべきでないポイントを提示する。
【0063】
これにより、例えば、レガシーシステムの設計情報とネットワーク分析の結果が乖離していたとしても、例えば、テスト件数が所定の数もしくは割合より少ない上にこれまでに障害も発生していない、というような箇所である場合には、あえてコストやリソースを投入してまで疎結合化する必要性はない(分離すべきでない)、という判断をすることができる。その結果、分離ポイントの候補としてより適切な箇所を提示することが可能となる。
【0064】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、上記の実施の形態では、基幹システムなどのいわゆるレガシーシステムを分析対象としているが、これに限られるものではなく、情報処理システム一般に適用することも可能である。
【0065】
また、上記の実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、上記の実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。例えば、ネットワーク分析は、一般的にはデータ量の増加に対して指数関数的に処理時間が増加するとされていることから、実用可能な処理時間で実行できるようにするため、例えば、ネットワーク分析処理部13の機能を、Amazon(登録商標) EMR(Elastic MapReduce)などのクラウドサービス上で提供されている分散処理プラットフォームを適宜利用して構成し、分散処理を行うようにしてもよい。
【0066】
また、例えば、上記の実施の形態により提示された分離ポイント(および分離すべきではない箇所)について、実際にこれに従ってレガシーシステムを分離・疎結合化した(しなかった)ときの結果に係る定量情報を蓄積し、蓄積されたデータに基づいて公知の機械学習の技術を用いて分離ポイントを検出する際のモデルを学習することで、分離ポイントを提示する際の精度を向上させるようにしてもよい。
【0067】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、SSD(Solid State Drive)等の記録装置、またはICカード、SDカード、DVD等の記録媒体に置くことができる。
【0068】
また、上記の各図において、制御線や情報線は説明上必要と考えられるものを示しており、必ずしも実装上の全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
【産業上の利用可能性】
【0069】
本発明は、ネットワーク分析手法を用いて分析するレガシーシステム分析システムおよびレガシーシステム分析方法に利用可能である。
【符号の説明】
【0070】
1…レガシーシステム分析システム、2…ユーザ端末、3…ドキュメント、
11…入力情報生成部、12…入力情報選択部、13…ネットワーク分析処理部、14…分析結果評価部、15…分離ポイント提案部、16…ユーザインタフェース部、17…入力情報リポジトリ、18…分析結果リポジトリ、19…現行システム情報