(57)【特許請求の範囲】
【請求項１】
１又は複数のプログラムを含むシステムを解析する装置であって、
前記プログラム内におけるデータ項目アクセス状況を調査するアクセス状況調査手段と、
プログラム、プログラムの集合又はプログラムの部分のうちの少なくとも一つであるプロセスとデータ項目の結合関係を、前記データ項目アクセス状況に基づき解析する解析器と、
を有し、
前記解析器が、
前記データ項目アクセス状況に含まれる、前記データ項目に対するアクセスの態様及びアクセス回数を、アクセス態様毎に予め定義されている結合度係数を用いて数量化し、数量化されたデータ項目アクセス状況データを生成するアクセス状況データ生成手段と、
前記数量化されたデータ項目アクセス状況データにおいて当該数量的な条件を満たすデータ項目にアクセスするプロセスを収集するプロセス収集手段と、
前記数量化されたデータ項目アクセス状況データ及び収集されたプロセスの情報を使用して、前記データ項目の振り分け態様及び前記プロセスの分割態様のうち少なくとも一つを提示する態様提示手段とを含む
システム解析装置。
【請求項２】
前記解析器が、
システム設計要件を含む外部要件により、前記数量化されたデータ項目アクセス状況データを補正する手段をさらに含む、
請求項１記載のシステム解析装置。
【請求項３】
提示された前記プロセスの分割態様における、プロセス・グループとデータ項目の関係を提示する手段をさらに有する請求項２記載のシステム解析装置。
【請求項４】
１又は複数のプログラムを含むシステムを解析し、コンピュータにより実行される方法であって、
前記プログラム内におけるデータ項目アクセス状況を調査するアクセス状況調査ステップと、
プログラム、プログラムの集合又はプログラムの部分のうちの少なくとも一つであるプロセスとデータ項目の結合関係を、前記データ項目アクセス状況に基づき解析する解析ステップと、
を含み、
前記解析ステップが、
前記データ項目アクセス状況に含まれる、前記データ項目に対するアクセスの態様及びアクセス回数を、アクセス態様毎に予め定義されている結合度係数を用いて数量化し、数量化されたデータ項目アクセス状況データを生成するアクセス状況データ生成ステップと、
前記数値化されたデータ項目アクセス状況データにおいて当該数量的な条件を満たすデータ項目にアクセスするプロセスを収集するプロセス収集ステップと、
前記数値化されたデータ項目アクセス状況データ及び収集されたプロセスの情報を使用して、前記データ項目の振り分け態様及び前記プロセスの分割態様のうち少なくとも一つを提示する態様提示ステップとを含む
システム解析方法。
【請求項５】
１又は複数のプログラムを含むシステムを解析するための解析プログラムを格納した、コンピュータ読み取り可能な記憶媒体であって、
前記解析プログラムは、コンピュータに、
前記プログラム内におけるデータ項目アクセス状況を調査するアクセス状況調査ステップと、
プログラム、プログラムの集合又はプログラムの部分のうちの少なくとも一つであるプロセスとデータ項目の結合関係を、前記データ項目アクセス状況に基づき解析する解析ステップと、
を実行させ、
前記解析ステップが、
前記データ項目アクセス状況に含まれる、前記データ項目に対するアクセスの態様及びアクセス回数を、アクセス態様毎に予め定義されている結合度係数を用いて数量化し、数量化されたデータ項目アクセス状況データを生成するアクセス状況データ生成ステップと、
前記数値化されたデータ項目アクセス状況データにおいて当該数量的な条件を満たすデータ項目にアクセスするプロセスを収集するプロセス収集ステップと、
前記数値化されたデータ項目アクセス状況データ及び収集されたプロセスの情報を使用して、前記データ項目の振り分け態様及び前記プロセスの分割態様のうち少なくとも一つを提示する態様提示ステップとを含む
記憶媒体。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明は、システム解析技術に関し、より詳しくは、既存システム内のサブシステムを他の資産から分離等するために使用されるシステム解析技術に関する。
【０００２】
【従来の技術】
現行システムを再構築する場合には、新システムでも中心となる機能は現行システムとあまり変わらないということもあって、現行システムのサブシステムを再利用することが開発費用の削減と開発期間の短縮の両面から必要とされている。再利用するためには、膨大な既存システムの資産から再利用に必要なサブシステムを分離・分割することが必要となる。現在このシステムの分離・分割は、開発時の設計ドキュメントや開発者の知識を使用して行われているが、設計時のノウハウに負うところが大きい。しかし、このような人間の経験などに依存する手法では、再利用するシステム資産を明確にすることができず、余分な開発費用と期間を必要とする場合も生ずる。加えて、再利用部分と新規開発部分のインターフェースの設計ミスにより開発途中のコスト増加につながる危険性が高くなる。
【０００３】
また、設計ドキュメントに不備があったり、設計ドキュメントと現行システムに不一致があったり、現行システムの開発者が不在であったりすると、現行システムのサブシステムをまとめたり、サブシステム単位に再利用、新規開発、パッケージ適用等といった検討すら簡単にはできないので、システム自体の解析が必要となる。
【０００４】
さらに、ほとんどすべての業務がシステム化されている今日においては、業務自体がブラックボックス化されてしまっていたり、業務同士の関係が複雑化しているため、すべてを新規に開発することは非常に難しく、この点においても現行システムの再構築には現行システム自体の解析作業が必須となる。
【０００５】
【発明が解決しようとする課題】
よって本発明の目的は、現行システムを解析するためのシステム解析装置及び方法並びに解析プログラムを提供することである。
【０００６】
また、現行システムを解析することにより、現行システムの分割等に使用するための情報を得ることも目的である。
【０００７】
【課題を解決するための手段】
本発明の第１の態様に係る、１又は複数のプログラムを含むシステムを解析する装置は、プログラム内におけるデータ項目アクセス状況を調査する手段と、プログラム、プログラムの集合又はプログラムの部分のうちの少なくとも一つであるプロセスとデータ項目の結合関係を、データ項目アクセス状況に基づき解析する解析器とを有する。データ項目は、例えば、データ・ファイル内のデータ項目、電文メッセージ内のデータ項目、サブプログラム・インターフェース内のデータ項目である。このようにシステム解析としてデータ項目及びプロセスの結合関係を解析することにより、システムの分割などに役立つ情報を得ることができる。より具体的には、様々な単位のプロセス（プログラムの部分、プログラム自体、ＪＯＢ、サブシステム）のまとまり、データ項目のまとまり、データ項目とプロセスの結合関係を明確化することができる。
【０００８】
上で述べた解析器を、データ項目アクセス状況に含まれる、データ項目に対するアクセスの態様（例えば参照・更新など）及びアクセス回数を数量化し、数量化されたデータ項目アクセス状況データを生成する手段を含むような構成とすることも可能である。数値化することによりデータ項目及びプロセスの結合度が示されることになる。
【０００９】
また、上で述べた解析器を、システム設計要件を含む外部要件により、数量化されたデータ項目アクセス状況データを補正する手段をさらに含むような構成とすることも可能である。システム設計要件などの外部要件により結合させるべき部分を指定するためである。
【００１０】
また、上で述べた解析器を、数値化されたデータ項目アクセス状況データにおいて所定の条件を満たすデータ項目にアクセスするプロセスを収集する手段をさらに含むような構成とすることも可能である。
【００１１】
さらに、上で述べた解析器を、数値化されたデータ項目アクセス状況データ及び収集されたプロセスの情報を使用して、データ項目の振り分け態様及びプロセスの分割態様のうち少なくとも一つを提示する手段をさらに含むような構成とすることも可能である。
【００１２】
本発明の第１の態様に係るシステム解析装置を、提示されたプロセスの分割態様における、プロセスのインターフェースを提示する手段をさらに有するような構成とすることも可能である。これにより、システム分割時のインターフェースの設計に役立つ。
【００１３】
本発明の第２の態様に係るシステム解析方法は、プログラム内におけるデータ項目アクセス状況を調査するステップと、プログラム、プログラムの集合又はプログラムの部分のうちの少なくとも一つであるプロセスとデータ項目の結合関係を、データ項目アクセス状況に基づき解析するステップとを含む。
【００１４】
このような方法をコンピュータに実行させるプログラムを作成することも可能であって、当該プログラムは、例えばフロッピー・ディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。
【００１５】
【発明の実施の形態】
図１に本発明の機能ブロック図を示す。入力は現行システムにおいて使用されているプログラム１０１、ＪＣＬ（Job Control Language）１０３、サブシステム情報１０５である。これらの入力をデータ項目アクセス状況集計部１０７が用いる。データ項目アクセス状況集計部１０７の出力はデータ項目結合度計算部１０９に入力される。データ項目結合度計算部１０９は別途用意されている結合度係数を用いて計算を行い、結果をデータ項目結合度補正部１１３に出力する。データ項目結合度補正部１１３は補正処理を実施した後その結果をプロセス集積部１１５に出力する。プロセス集積部１１５は集積処理の結果を、プロセス・データ分割部１１７に出力する。プロセス・データ分割部１１７の処理結果はインターフェース表示部１１９に出力される。インターフェース表示部１１９の処理結果はインターフェース情報１２１として表示され且つ記憶装置に格納される。各機能の処理結果も記憶装置に格納される。
【００１６】
データ項目アクセス状況集計部１０７は、あるデータ項目に、どの段階でどのような種類のアクセスが何回行われるかを、ソース・プログラムであるプログラム１０１、実行するプログラム名や制御パラメータ、プログラムに割り当てられるデータ・セット等を定義したＪＣＬ１０３、サブシステム名と従属するＪＯＢの情報を含むサブシステム情報１０５を使用して集計する。データ項目結合度計算部１０９は、アクセスの態様（例えば、参照、更新など）及びアクセス回数によりデータ項目アクセス状況を数値化する。アクセス態様毎に結合度の強弱があるので、アクセス態様毎に定義された結合度を予め格納した結合度係数格納部１１１を参照して、アクセス態様に対応する結合度とアクセス回数の積で数値化する。
【００１７】
データ項目結合度補正部１１３は、システム設計要件等の外部要件の入力により、強く結合させるべき部分等に関連する結合度を補正する。例えば、あるデータ項目のデータ量が他と比べて多い場合には、そのデータ項目の結合度を増加させる等の処理を行う。プロセス集積部１１５は、所定の条件を満たすデータ項目をアクセスするプロセスを収集し、データ項目アクセス状況のデータの中で当該プロセスを寄せ集める。プロセスを寄せ集めたことにより、データ項目及びプロセスはそのまとまりが分かりやすくなったので、プロセス・データ分割部１１７はプロセスの分割及びデータ項目の振り分けを行う。そして、このプロセスの分割によりプロセス間のインターフェースが明らかになるので、インターフェース表示部１１９は、そのインターフェースを表示する。
【００１８】
では、本発明の全体処理のフローを図２に示し、各ステップについて詳細に説明する。まず、データ項目アクセス状況集計部１０７が、プログラム１０１、ＪＣＬ１０３及びサブシステム情報１０５を分析し、データ項目アクセス命令を集計する（ステップ１３）。この処理は例えば図３のような処理フローにて行われる。
【００１９】
まず、ＣＯＢＯＬ等のプログラミング言語にて記述されたソース・プログラムに対し語分解を実施する（図３：ステップ３３）。すなわち、ソース・プログラムを各命令に分解する。そして、アクセス命令テーブルを参照しつつ、データ項目毎にアクセス状況を記録する（ステップ３５）。アクセス命令テーブルとは、データを参照する命令（例えばREAD，GET）、データを生成する命令（例えばWRITE，STORE）、データを更新する命令（例えばREWRITE，MODIFY）、データを削除する命令（例えばDELETE）及びデータを再定義する命令（例えばREDEFINE）等のアクセス命令として取り扱われる命令群をリストアップしたものである。すなわち、アクセス命令テーブルに列挙された命令を見出す毎に、例えば図４のような記録を行う。すなわち、プログラムの名称と、そのプログラムにおけるセクション名、そのセクションにおけるステップ名、アクセスされたデータ項目、そしてアクセス種類を記憶装置に記録する。図４の例では、現在プログラム名Ｐｇｍ１１のセクションＳｅｃ１１１を分析中であり、ステップ１にはデータ項目Ｄ１１及びＤ１２への参照アクセスがあり、ステップ４にはデータ項目Ｄ１１、Ｄ１２及びＤ２２への更新アクセスが存在する。図４は分析途中であって、解析対象システムに含まれる全てのプログラムについて記録する。
【００２０】
ステップ３５にてアクセス毎にアクセス状況が記録されると、さらにＪＣＬ１０３及びサブシステム情報１０５を参照し、各ステップ毎に同じ種類のアクセスをカウントして、データ項目アクセス状況テーブルを作成する（ステップ３７）。データ項目アクセス状況テーブルは例えば図５のようなテーブルであって、記憶装置に格納される。図５はシステムＳｙｓｔｅｍＡのデータ項目アクセス状況テーブルである。ＳｙｓｔｅｍＡには、ジョブＪｏｂ１、Ｊｏｂ２、Ｊｏｂ３が含まれている。そしてＪｏｂ１にはプログラムＰｇｍ１１及びＰｇｍ１２、Ｊｏｂ２にはプログラムＰｇｍ２１及びＰｇｍ２２、Ｊｏｂ３にはプログラムＰｇｍ３１が含まれている。これらの情報は、ＪＣＬ１０３及びサブシステム情報１０５を参照することにより得られる。Ｐｇｍ１１にはセクションＳｅｃ１１１及びＳｅｃ１１２、Ｐｇｍ１２にはセクションＳｅｃ１２１、Ｐｇｍ２１にセクションＳｅｃ２１１、Ｐｇｍ２２にはセクションＳｅｃ２２１、Ｐｇｍ３１にはセクションＳｅｃ３１１が含まれる。そして、Ｓｅｃ１１１にはステップ１乃至７、Ｓｅｃ１１２にはステップ８乃至１０、Ｓｅｃ１２１にはステップ１１乃至１３、Ｓｅｃ２１１にはステップ１４乃至１６、Ｓｅｃ２２１にはステップ１７乃至１９、Ｓｅｃ３１１にはステップ２０乃至２５が含まれる。ステップはセクション内の処理の括りごとの連番を示す。これらの情報はステップ３５の処理にて図４に示すように記録される。
【００２１】
一方、ファイルＦ１はレコードＲ１及びＲ２、ファイルＦ２はレコードＲ３を含んでいる。このレコードＲ１はデータ項目Ｄ１１乃至Ｄ１４、レコードＲ２はデータ項目Ｄ２１及びＤ２２、レコードＲ３はＤ３１及びＤ３２を含んでいる。これらの情報はファイルの構造から得られる。図５のテーブル内には、参照（READ）アクセスが存在する場合にはＲが、更新アクセス（UPDATE）が存在する場合にはＵが、生成アクセスが存在する場合にはＣが、記録されている。図５では使用されていないが、削除アクセスが存在する場合にはＤを、再定義アクセスが存在する場合にはＡを記録する。それらの英文字の後にはアクセス回数を記録している。Ｒ５は参照アクセスが５回あったことを示す。また上で説明した英文字の後にａが記録されている場合には、全レコード処理であることを示す。
【００２２】
図５のようなデータ項目アクセス状況テーブルが生成された後に、データ項目結合度計算部１０９が結合度係数格納部１１１を参照してデータ項目結合度を計算する（図２：ステップ１５）。結合度はアクセスの態様によって強弱があり、その強弱を表したのが結合度係数である。一般的に結合度は、データを参照しているよりも、更新する方が強く、更新よりも生成・削除の方がより強い。また、ファイルへのアクセスより、サブプログラムを呼び出すＣＡＬＬパラメータで使用される方が強く、さらにＣＯＰＹ句やローカル変数を共用する方がより強い。よって、一般的には、以下のような大小関係がある。
結合関係については、
参照  ＜  更新  ＜  生成＝削除  ＜  再定義
結合媒体については、
ファイル  ＜  ＣＡＬＬパラメータ  ＜  ＣＯＰＹ句  ＜  ローカル変数
これらの大小関係に基づき、例えば図６に示したような具体的な結合度係数を用意する。但し、図６は一例であって異なる数値を使用することが可能である。さらに、上で述べた大小関係を、状況に応じて変更することも可能である。
【００２３】
ステップ１５では、データ項目アクセス状況テーブル（図５）にまとめられたアクセスの態様とアクセス回数を、アクセス態様に対応する結合度係数×アクセス回数で数値化する。なお、図５の例ではファイルアクセスしか存在していないので、この例ではその他の結合媒体の部分は使用されない。数値化の結果を図７に示す。数値化されたデータ項目アクセス状況テーブルは記憶装置に格納される。例えば図５でＵ２とあった場合には、更新であるから結合度係数は５で回数２であるから結合度１０となる。また、本例では全レコード処理の場合にはアクセス回数１０回として計算している。すなわち、Ｒａは結合度係数が１で回数１０であるから結合度１０となる。
【００２４】
次に、データ項目結合度補正部１１３が、データ項目アクセス状況テーブル内の結合度を補正する（図２：ステップ１７）。プロセスとデータの結合度合いは、データをアクセスする命令の種類や回数の他に、データの量やクリアすべきレスポンス時間などによっても強弱がある。このようなシステム設計要件を考慮することにより、ステップ１５にて得られたデータ項目アクセス状況テーブル内の結合度を補正する必要がある。例えば、データ量が多いデータ項目については、結合度をそれに応じて増加させる。図７の例ではファイルＦ２のデータ量が多いので、このＦ２に含まれるデータ項目の結合度を２倍にする。結合度を２倍にする補正を実施した後のデータ項目アクセス状況テーブルを図８に示す。
【００２５】
なお、システム設計要件で例えばあるプロセス又はデータを結合させなければならないという要件があった場合に、そのような拘束を付けてプロセス又はデータの分割処理を行うことも可能である。しかし、本例のように個々のデータ項目の結合度を増加（又は減少）させるということにより本実施例における後の処理を実施すれば、明示的に結合させた場合に隠れてしまうような、データ項目及びプロセス（データ項目間、プロセス間及びデータ項目とプロセス間）の結合関係を見出すことができるようになる。但し、補正（ステップ１７）を行わないで、プロセスの集積（ステップ２１）を行うことも可能である。
【００２６】
そして、補正が適正であるか確認する（ステップ１９）。補正が適正でなければステップ１７に戻って補正をやり直す。なお補正が適正であるか否かは、例えば次の処理であるプロセスの集積処理が可能か否かで判断する。
【００２７】
次に、プロセス集積部１１５が結合度の高いプロセスを集積する（ステップ２１）。例えば、図９のような処理を実施する。まず、結合度が最高のデータ項目を求める（ステップ４３）。図８の例ではデータ項目Ｄ３２である。次に、当該データ項目を含むレコードを使用しているプログラムをプログラム単位で集める（ステップ４５）。図８の場合にはデータ項目Ｄ３２を含むレコードはレコードＲ３であり、レコードＲ３を使用するのはプログラムＰｇｍ１１、Ｐｇｍ２２及びＰｇｍ３１である。次に、集められたプログラムを結合度の点数順にプログラム単位で並べる（ステップ４７）。プログラムＰｇｍ１１は結合度１４０、Ｐｇｍ２２は結合度２０、Ｐｇｍ３１は結合度４０であるから、Ｐｇｍ１１、Ｐｇｍ３１、Ｐｇｍ２２の順番に並べられる。
【００２８】
そして、並び替え対象となったプログラム（データ項目アクセス状況テーブルの縦方向）及びレコード（横方向）をテーブルから除いた場合に残りの要素があるかを判断する（ステップ４９）。図８の例では、プログラムＰｇｍ１１とＰｇｍ３１とＰｇｍ２２が縦方向で除去されるので、Ｐｇｍ１２、Ｐｇｍ２１のみが残る。また、レコードＲ３が横方向で除去されるので、レコードＲ１及びＲ２が残る。この残った部分で結合度が所定のしきい値より大きい要素があればステップ４３に戻る。図８の例では残った部分の最大の結合度が１０であるが、しきい値より小さいとして処理を終了する。
【００２９】
ステップ２１の結果を図１０に示す。ステップ２１ではデータ項目アクセス状況テーブルにおける並べ替え対象プログラムの列を全て移動させる。よって、図１０に示すように、Ｐｇｍ１１の次にＰｇｍ３１、その次にＰｇｍ２２が並べられることになる。一方、並び替え対象以外のプログラムは図８の例ではそれ以上の並べ替えを行わなかったので、Ｐｇｍ１２、Ｐｇｍ２１の順番でＰｇｍ２２の後に並べられている。ＪＯＢ名は並べ替え対象のプログラムに従って記述し直されている。当然プログラム内のセクション及びステップも、プログラムの並べ替え及び移動に伴って移動している。このように並べ替えると、プログラム毎に使用しているデータ項目に偏りがあることが明らかになる。なお、図１０のデータ項目アクセス状況テーブルは、記憶装置内に格納される。
【００３０】
なお、図９の例では結合度が最高のデータ項目を含むレコードを基準にプログラムを集めたが、レコードを基準に行うのは一例であって他の単位、例えばデータ項目を基準にプログラムを集めるようにしても良い。また、プログラム単位でプログラムを集めていたが、これもセクション単位やＪＯＢ単位で集めるようにしても良い。
【００３１】
では図２に戻って、プロセス・データ分割部１１７がプロセス及びデータ項目の分割を実施する（ステップ２２）。この処理の一例について図１１を用いて詳しく説明する。
【００３２】
まず結合度が５点以上のデータ項目をセクション単位で括る（ステップ６３）。ステップ６３を実施すると、図１２のようになる。すなわち、データ項目Ｄ１１はセクションＳｅｃ１１１とＳｅｃ１１２とＳｅｃ３１１にて結合度が５以上になる。データ項目Ｄ１２は、セクションＳｅｃ１１１とＳｅｃ３１１にて結合度が５以上になる。データ項目Ｄ１３は、セクションＳｅｃ２１１にて結合度が５以上になる。データ項目Ｄ１４は、セクションＳｅｃ２１１にて結合度が５以上になる。データ項目Ｄ２１は、セクションＳｅｃ３１１にて結合度が５以上になる。データ項目Ｄ２２は、セクションＳｅｃ１１１及びＳｅｃ３１１にて結合度が５以上になる。データ項目Ｄ３１は、セクションＳｅｃ１１２及びＳｅｃ３１１にて結合度が５以上になる。データ項目Ｄ３２は、セクションＳｅｃ１１２、Ｓｅｃ３１１及びＳｅｃ２２１にて結合度が５以上になる。
【００３３】
そして、同一ファイル内で並んだデータ項目で且つ下記のいずれかの条件を満たした場合、一つに括る（ステップ６５）。条件とは、（１）括ったセクションの範囲が同じである、（２）共通するセクションがある、である。例えば図１２の上の行から順番に処理する。第１行と第２行は同じファイルＦ１のデータ項目で並んでおり、共通するセクションがあるから一つに括る（範囲ａ）。第３行目は同じファイルＦ１のデータ項目であるが、括ったセクションの範囲が同じではなく且つ共通するセクションが無いので、第１行目から第３行目まで一つに括ることはできない。第３行目と第４行目を比較すると、同じファイルＦ１のデータ項目であって、括ったセクションの範囲が同じであるから一つに括る（範囲ｄ）。第３行目乃至第５行目は同じファイルＦ１のデータ項目であるが、括った範囲が同じでもなく且つ共通のセクションでもないので、一つに括ることはできない。
【００３４】
第５行目と第６行目を比較すると、同じファイルＦ１のデータ項目で並んでおり、括った範囲に共通のセクションが存在するので一つに括る（範囲ｂ）。第６行目と第７行目の間にファイルの切れ目があるので、第７行目と第８行目を比較する。これを見ると、同じファイルＦ２のデータ項目で並んでおり、セクションＳｅｃ１１２及びＳｅｃ３１１が共通しているので一つに括る（範囲ｃ）。以上の括りを図示すると図１３のようになる。図１２及び図１３の情報は、記憶装置に格納される。
【００３５】
さらに、この範囲ａ乃至ｄをデータ項目アクセス状況テーブルに示すと図１４のようになる。図１１の処理ではデータ項目毎にセクションをまとめたので、データ項目の結合関係が明らかになる。また、データ項目とプロセスとの結合関係も示される。図１４の例では、データ項目Ｄ１１及びＤ１２は結合度合いが強く、このデータ項目Ｄ１１及びＤ１２と結合度合いが強いプロセスは、セクションＳｅｃ１１１、Ｓｅｃ１１２及びＳｅｃ３１１又はプログラムＰｇｍ１１及びＰｇｍ３１である（範囲ａ）。また、データ項目Ｄ１３とＤ１４は結合度合いが強く、このデータ項目Ｄ１３及びＤ１４と結合度合いが強いプロセスは、セクションＳｅｃ２１１又はプログラムＰｇｍ２１である（範囲ｄ）。データ項目Ｄ２１とＤ２２は結合度合いが強く、このデータ項目Ｄ２１及びＤ２２と結合度合いが強いプロセスは、セクションＳｅｃ１１１及びＳｅｃ３１１又はプログラムＰｇｍ１１及びＰｇｍ３１である（範囲ｂ）。データ項目Ｄ３１及びＤ３２は結合度合いが強く、このデータ項目Ｄ３１及びＤ３２と結合度合いが強いプロセスは、セクションＳｅｃ１１２、Ｓｅｃ３１１及びＳｅｃ２２１又はプログラムＰｇｍ１１、Ｐｇｍ３１及びＰｇｍ２２である（範囲ｃ）。この図１４をユーザに提示するような構成も可能である。
【００３６】
このように括れば、レコードＲ１中のデータ項目Ｄ１１及びＤ１２とＤ１３及びＤ１４を分離し、別レコードにすることができることが分かる。
【００３７】
なお、図１１では結合度５点以上のデータ項目を探すようになっているが、これは一例であって、解析対象システムにおける状況に応じて変更することができる。また、セクション単位で括るとしているが、プログラム単位などで括るようにすることも可能である。
【００３８】
上で述べた範囲ａ乃至ｄに括ることによりプロセスの分割もできる。図１４を見ても分かるように、範囲ａ乃至ｃについてはプログラムＰｇｍ３１又はセクションＳｅｃ３１１を含んでいるのに対し、範囲ｄは含んでいない。よって、範囲ａ乃至ｃから導き出されるプログラムＰｇｍ１１、Ｐｇｍ３１及びＰｇｍ２２（又はセクションＳｅｃ１１１、Ｓｅｃ１１２、Ｓｅｃ３１１及びＳｅｃ２２１）と、範囲ｄから導き出されるＰｇｍ２１（又はＳｅｃ２１１）とでプロセスの分割ができることも分かる。どちらの範囲にも属さないプログラムＰｇｍ１２（又はＳｅｃ１２１）は、Ｐｇｍ１２（又はＳｅｃ１２１）が使用するデータ項目はＤ１３であり、データ項目Ｄ１３及びＤ１４と強く結合しているのはＰｇｍ２１であるから、Ｐｇｍ２１といっしょに括る。図１４には分割単位として、Ｐｇｍ１１、Ｐｇｍ３１及びＰｇｍ２２と、Ｐｇｍ１２及びＰｇｍ２１とが示されている。
【００３９】
前段落で述べた処理をより詳しく述べると以下のようになる。（１）データ項目Ｄ１１及びＤ１２をベースに結合度合いの強いセクションを集める。Ｓｅｃ１１１、Ｓｅｃ１１２及びＳｅｃ３１１である。（２）Ｄ２１及びＤ２２をベースに結合度合いの強いセクションを集める。Ｓｅｃ１１１及びＳｅｃ３１１である。（３）Ｄ３１及びＤ３２をベースに結合度合いの強いセクションを集める。Ｓｅｃ１１２、Ｓｅｃ３１１及びＳｅｃ２２１である。（４）これら３つのセクション群に共通するセクションＳｅｃ３１１が存在しているので、Ｄ１１及びＤ１２、Ｄ２１及びＤ２２、並びにＤ３１及びＤ３２と結合度合いの強いセクションを集める。Ｓｅｃ１１１、Ｓｅｃ１１２、Ｓｅｃ３１１及びＳｅｃ２２１となる。プログラム単位ではＰｇｍ１１、Ｐｇｍ３１及びＰｇｍ２２となる。（５）Ｄ１３及びＤ１４をベースに結合度合いの強いセクションを集める。Ｓｅｃ２１１である。結合度１の部分は結合度合いが弱いので集めない（Ｓｅｃ３１１及びＳｅｃ１２１）。Ｓｅｃ２１１は他のデータ項目との結合度が弱いことが分かる。（６）結合度合いの強いデータ項目がないＳｅｃ１２１についてはＤ１３への参照が含まれているので、Ｄ１３及びＤ１４との結合度合いの強いＳｅｃ２１１と同じグループにする。プログラム単位ではプログラムＰｇｍ２１とＰｇｍ１２が同じグループとなる。よって、Ｓｅｃ１１１、Ｓｅｃ１１２、Ｓｅｃ３１１及びＳｅｃ２２１のグループと、Ｓｅｃ２１１及びＳｅｃ１２１のグループの２つの分割単位に分割する。
【００４０】
では図２に戻って、ステップ２２を実施した後に、分割は適正か否かを判断する（ステップ２３）。適正でなければステップ１７まで戻る。適正でないかどうかは、例えばシステム設計要件を満たしているか否かで判断する。また、ステップ２２で分割できなかった場合も適正でないと判断される。
【００４１】
もしステップ２３で分割が適正であると判断された場合には、インターフェース表示部１１９がインターフェースを表示する（ステップ２５）。ここではステップ２２で分割したプロセスと、プロセスで使用するデータを表示する。図１５にインターフェースの例を示す。分割されたプロセスは、プログラム単位でＰｇｍ１１、Ｐｇｍ３１及びＰｇｍ２２と、Ｐｇｍ１２及びＰｇｍ２１である。分割されたプロセスをオブジェクトとし、最初のグループをオブジェクトＯｂｊ−１、二番目のグループをオブジェクトＯｂｊ−２としている。データ項目は、分割したプロセスの他のプロセスとのインターフェースで使用する外部データをパブリック・データ（public data）とし、分割したプロセス内部だけで使用する内部データをプライベート・データ（private data）とする。
【００４２】
図１４の分割単位を見ると、データ項目Ｄ１１及びＤ１２はオブジェクトＯｂｊ−１にとってはプライベート・データであるが、オブジェクトＯｂｊ−２にとってデータ項目Ｄ１１はパブリック・データである。一方、データ項目Ｄ１３及びＤ１４はオブジェクトＯｂｊ−２にとってはプライベート・データであるが、オブジェクトＯｂｊ−１にとってデータ項目Ｄ１４はパブリック・データである。また、Ｄ２１及びＤ２２並びにＤ３１及びＤ３２はオブジェクトＯｂｊ−１にとってプライベート・データである。インターフェース表示においても、データ項目の振り分け、プロセスの分離が示されている。
【００４３】
また、インターフェースでは、図１４における結合度の数値を参照や更新といったアクセスの態様に戻して表示する。このようにすれば、プライベート・データ及びパブリック・データに対しどのようなアクセスがなされるかが明確になる。図１５ではパブリック・データは参照のみで、外部のプロセスとの結合度が低いということも分かる。オブジェクトに分けることにより、オブジェクト指向技術等を適用することができるようになる。
【００４４】
以上のようにすれば、分割後のプロセスのインターフェースが明確になり、新システムの設計に役立てることができる。このように明確なインターフェースが提示されれば、部品であるオブジェクトの仕様を決めることが容易になり、設計ミスが少なくなることが期待できる。
【００４５】
以上説明した図２の各ステップをプログラミングすれば本発明をプログラムにて実装することができる。このプログラムは、例えばフロッピー・ディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。そして、通常のコンピュータにて実行される。本発明のシステム解析プログラムを実行するコンピュータはシステム解析装置として動作する。
【００４６】
また、例えば図１に示す各機能ブロックを、専用の電子回路、又は電子回路とプログラムの組み合せにて実装し、本発明のシステム解析装置を実現することも可能である。なお、図１に示した機能ブロックは一例であって、複数の機能ブロックを一つにすることも、また一つの機能ブロックを複数に分けることも可能である。
【００４７】
以上述べた本発明を使用することにより、プロセス間の結合強度を解析することができ、プロセス単位で再構築の方式を検討することができ、開発費用と期間を大幅に削減することができるようになる。また、結合強度の強いプロセスの塊を集めることにより、サブシステムのまとまり、サブシステム内のＪＯＢのまとまり、ＪＯＢ内のプログラムのまとまり、プログラム内のセクションのまとまり、セクション内の命令群のまとまりを明確にすることができ、プログラムやプログラムの一部の再利用を可能にすることができる。さらに、プロセスの分割だけでなく、データ・ファイルの分割も可能にし、データの正規化の支援やデータの最適再配置を行うことができるようになる。
【００４８】
【発明の効果】
現行システムを解析するためのシステム解析装置及び方法並びに解析プログラムを提供することができた。
【００４９】
また、現行システムを解析することにより、現行システムの分割等に使用するための情報を得ることもできた。
【図面の簡単な説明】
【図１】本発明における機能ブロック図である。
【図２】本発明の全体処理のフローチャートである。
【図３】本発明の命令集計処理のフローチャートである。
【図４】命令集計処理中に記録されるデータの一例を示す図である。
【図５】第１段階のデータ項目アクセス状況テーブルを示す図である。
【図６】本発明の結合度係数表の一例を示す図である。
【図７】第２段階のデータ項目アクセス状況テーブルを示す図である。
【図８】第３段階のデータ項目アクセス状況テーブルを示す図である。
【図９】本発明のプロセス集積処理のフローチャートである。
【図１０】第４段階のデータ項目アクセス状況テーブルを示す図である。
【図１１】本発明のプロセス・データ項目分割処理のフローチャートである。
【図１２】プロセス・データ項目分割処理中に記録されるデータの一例を示す。
【図１３】プロセス・データ項目分割処理中に記録されるデータの一例を示す。
【図１４】第５段階のデータ項目アクセス状況テーブルを示す図である。
【図１５】本発明におけるプロセスのインターフェース表示の一例である。
【符号の説明】
１０１  プログラム    １０３  ＪＣＬ    １０５  サブシステム情報
１０７  データ項目アクセス状況集計部
１０９  データ項目結合度計算部    １１１  結合度係数格納部
１１３  データ項目結合度補正部    １１５  プロセス集積部
１１７  プロセス・データ分割部    １１９  インターフェース表示部
１２１  インターフェース情報
【図１】
0003838825.tif 000002
【図２】
0003838825.tif 000003
【図３】
0003838825.tif 000004
【図４】
0003838825.tif 000005
【図５】
0003838825.tif 000006
【図６】
0003838825.tif 000007
【図７】
0003838825.tif 000008
【図８】
0003838825.tif 000009
【図９】
0003838825.tif 000010
【図１０】
0003838825.tif 000011
【図１１】
0003838825.tif 000012
【図１２】
0003838825.tif 000013
【図１３】
0003838825.tif 000014
【図１４】
0003838825.tif 000015
【図１５】
0003838825.tif 000016