リバースエンジニアリング支援装置、リバースエンジニアリング支援方法及びそのプログラム
【課題】情報処理システムに使用されるソースプログラムから、従来に比較して、細かく、かつ一定の粒度により、業務モデル及び物理モデルを対応させて抽出するリバースエンジニアリング支援装置を提供する。
【解決手段】本発明のリバースエンジニアリング支援装置は、ソースプログラムの業務仕様の抽出を行う装置であり、ソースプログラムのソースコードから、コード種類、コード組合せ及びコード配置と、処理機能を示す単位プログラムとの対応関係が予め設定された第1ルールに従い、ソースコードから、処理機能に対応する単位プログラムを抽出する処理機能抽出部と、単位プログラムの処理機能の種類、組合せ及び配置順番と、単位プログラムの配置順番の変更、統廃合処理との対応関係を予め設定した第2ルールに従い、単位プログラムの配置順の変更、統合及び廃棄の統廃合処理を行い、物理モデルとして出力する処理機能統廃合部とを有する。
【解決手段】本発明のリバースエンジニアリング支援装置は、ソースプログラムの業務仕様の抽出を行う装置であり、ソースプログラムのソースコードから、コード種類、コード組合せ及びコード配置と、処理機能を示す単位プログラムとの対応関係が予め設定された第1ルールに従い、ソースコードから、処理機能に対応する単位プログラムを抽出する処理機能抽出部と、単位プログラムの処理機能の種類、組合せ及び配置順番と、単位プログラムの配置順番の変更、統廃合処理との対応関係を予め設定した第2ルールに従い、単位プログラムの配置順の変更、統合及び廃棄の統廃合処理を行い、物理モデルとして出力する処理機能統廃合部とを有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、リバースエンジニアリング支援装置、リバースエンジニアリング支援方法及びそのプログラムに関する。
【背景技術】
【0002】
情報処理システムを構成するソースプログラムを解析して、制御構造、データ構造、及びデータ間の依存関係等の仕様情報を自動的に抽出し、抽出した仕様情報を図式チャート等によってユーザに提示するリバースエンジニアリングが広く用いられている。
リバースエンジニアリングにより、解析対象のソースプログラムの行う業務の理解を支援するシステムとして、例えば、特許文献1の業務仕様抽出支援システムがある。
特許文献1においては、ソースプログラムから抽出した物理モデルと、この物理モデルと対応して業務の内容を示す業務モデルとを対応付ける対応テーブルが予め設定されている。ここで、業務モデルとは、業務機能と論理データを頂点とし、これらの間のデータの入出力を表す有向の辺を持つグラフであるモデルである。物理モデルは、プログラム機能と物理データを頂点とし、これらの間のデータの入出力を表す有向の辺を持つグラフであるである。
【0003】
業務仕様抽出支援システムは、抽出した物理モデルを対応テーブルから検索し、この物理モデルと一致する物理モデルに対応する業務モデルを抽出して表示する。
また、業務仕様抽出支援システムは、抽出した物理モデルと一致する物理モデルが対応テーブルにおいて検出されない場合、対応付けのない物理モデルを表示し、ユーザに対して検出されない物理モデルに対応する業務モデルの作成を促す。
【0004】
また、業務仕様抽出支援システムは、ソースプログラムのプログラム機能内の条件式によって、業務を分割して業務モデルのバリエーションとして、業務モデルを生成している。
例えば、図11に示すプログラムにおいて、受注登録という業務機能の業務モデルに、PGM_X、PGM_A、PGM_B、PGM_C及びPGM_Yというプログラム機能の物理モデルが含まれている場合における業務の分割を行う場合を考える。図11はソースプログラムの物理モデルのグラフを示している。
ここで、「受注場所」が1(国内を示すフラグ)の場合、PGM_Xの分岐処理によりPGM_X、PGM_A及びPGM_Yが実行され、「受注場所」が2(国外を示すフラグ)の場合、PGM_Xの分岐処理によりPGM_X、PGM_A、PGM_B、PGM_C及びPGM_Yが実行されることになる。
【0005】
したがって、業務仕様抽出支援システムは、PGM_Xの分岐処理により、「受注登録」という業務を、図12の物理モデルのグラフに示すように、「受注登録A(受注場所=1)」と「受注登録B(受注場所=2)」とに分割する。そして、業務仕様抽出支援システムは、「受注登録A」をPGM_Aだけの物理モデルに、「受注登録B」をPGM_A、PGM_B及びPGM_Cからなる物理モデルに対応付けている。図12はソースプログラムの物理モデルのグラフと、業務モデルとの対応を示す図である。
【0006】
上述した処理により、受注場所が1の場合に国内、受注場所が2の場合に国外と対応付けると、国内における「受注登録」には必要がないが、国外における「受注登録」にPGM_B→PGM_Cのフローが必要な業務であり、業務モデルの2つのバリエーションとして、「受注登録」を分割することができる。
また、業務仕様抽出支援システムは、業務モデル及び物理モデルの各々の名称を、ユーザから外部情報として与えられる構成となっている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2008−52312号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
リバースエンジニアリングにおいては、業務と情報処理システムとの関係を理解するためには、処理される業務内容を示す業務モデルと、ソースコードから抽出した処理を示す物理モデルとに対し、以下の3つの条件が必要になる。
a.業務モデルと物理モデルとの対応関係がある
b.業務モデルと物理モデルとが一定かつ適切な粒度のプロセスに分割されている
c.業務モデルと物理モデルとに対し、適切な名称が付与されている(業務モデルはユーザが理解できる名称であり、物理モデルはプログラム作成者が理解できる名称である必要がある)
【0009】
ところが、特許文献1の業務仕様抽出支援システムは、業務モデルと物理モデルとの対応関係は示されているが、業務モデルと物理モデルとが適切な粒度に分割されているとは言えない。
すなわち、リエンジニアリングやリビルドなどで業務の改革及び改善のため、業務の取捨選択や共通化を検討する際、業務モデルを荒い粒度で行うと、業務で行われている処理の解析が十分にできない。
例えば、特許文献1の業務仕様抽出支援システムは、図12において、ソースプログラムの処理が国内と国外とにおける「登録業務」に分離される。
しかしながら、国外における「登録業務(受注場所=2)」にPGM_B及びPGM_Cが必要な物理モデルであることは判るが、この物理モデルがどのような処理を行っているかが判らない。
【0010】
このため、改革及び改善を行う際に、取捨選択を行う情報が不十分であり、業務の内容を検討することができない。
例えば、図11に示す「登録業務」を受注場所による2つのバリエーションに分割するのではなく、2つのバリエーションの違いが分かる程度の粒度に分割する必要がある。
図13は、物理モデルのグラフであり、一例として、ソースプログラムにおけるPGM_X、PGM_A、PGM_B及びPGM_Cを物理モデルの単位とし、この物理モデルに対して業務モデルを設定している。
【0011】
これにより、国内の「登録業務(受注場所=1)」と、国外の「登録業務(受注場所=2)」との違いが明確となる。
国外の「登録業務」と国内の登録業務との共通な業務及び異なる業務を判定することにより、国内の「登録業務」にも、リスク情報に関する処理を入れるなどの、業務の改善を容易に行うことができる。
したがって、特許文献1の業務仕様抽出支援システムにおける物理モデルと業務モデルとの粒度は、業務の解析を行うためには不十分な大きさである。
【0012】
このため、従来においては、業務の解析に対応できるように、業務モデルに関しては、ソースプログラムのドキュメント調査、あるいはユーザからのヒアリングをもとに、リバースエンジニアリングの担当者が適切と思う粒度の業務単位に作成していた。同様に、物理モデルに関してはプログラム機能を分割の単位としていた。
このため、リエンジニアリングの担当者毎に業務モデルの粒度が異なって、汎用性のないものとなっている。同様に、物理モデルの粒度をプログラム機能を分割の単位としているため、粒度が一定か否かはプログラムの設計によって異なり、結果として一定の粒度にはならない。
【0013】
したがって、業務モデルを荒い粒度で設定する場合、担当者毎に粒度の設定が異なってしまい、実際には同じ業務であっても、異なる粒度で設定されてることになり、同じソースプログラムから抽出されたにもかかわらず、結果的に同一の業務とは認識できず、改善における共通化などができなくなる。
【0014】
また、特許文献1の業務仕様抽出支援システムは、業務モデルと物理モデルとに適切な名称を付与する処理を行っていない。
このため、担当者は、業務仕様抽出支援システムの提示する物理モデル(プログラム機能名、物理データ名、プログラム機能を分割する条件式)に対応させ、業務モデル(業務機能名、論理データ名)から内容を類推し、物理モデル及び業務モデルに対して適切な名称を付与する必要があり、名称付与の作業に手間がかかってしまう。
したがって、担当者の知識によるため、ユーザが理解できる業務モデルの名称や、プログラム作成者が理解できる物理モデルの名称とはならず、改革及び改善の差異に効率的な処理が行えない。
【0015】
本発明は、このような事情に鑑みてなされたもので、その目的は、情報処理システムに使用されるソースプログラムから、従来に比較して、細かく、かつ一定の粒度により、業務モデル及び物理モデルを対応させて抽出し、かつ業務仕様の改革及び改善を行う際、ユーザまたはプログラム作成者が容易に理解できる名称を業務モデル及び物理モデルの双方に与えることが可能なリバースエンジニアリング支援装置、リバースエンジニアリング支援方法及びそのプログラムを提供することを目的としている。
【課題を解決するための手段】
【0016】
本発明のリバースエンジニアリング支援装置は、情報処理システムに使用されるソースプログラムに記述された業務仕様の抽出を行い、前記ソースプログラムの解析を支援するリバースエンジニアリング支援装置において、前記ソースプログラムのソースコードを構成するコードから、前記コードの種類、コードの組み合わせ及びコードの配置順序と、予め設定した処理機能を示す単位プログラムとの対応関係が予め設定された第1ルールに従い、前記ソースプログラムのソースコードから、前記処理機能に対応する単位プログラムを抽出する処理機能抽出部と、前記単位プログラムの処理機能の種類、組み合わせ及び配置の順番と、前記単位プログラムの配置の順番の変更、統合及び廃棄を示す統廃合処理との対応関係を予め設定した第2ルールに従い、前記ソースプログラムにおける前記単位プログラムの配置順の変更、統合及び廃棄の統廃合処理を行い、統廃合処理の結果として得られた単位プログラムを物理モデルとして出力する処理機能統廃合部とを有することを特徴とする。
【0017】
本発明のリバースエンジニアリング支援装置は、前記物理モデルの処理機能の種類及び配置順序と、前記物理モデルから構成される一般業務モデルとの対応関係を示す予め設定された第3ルールが記述された第3ルールテーブルから、前記処理機能統廃合部から出力される前記物理モデルの処理機能及び順序と一致する前記一般業務モデルを検索し、一致した一般業務モデルを前記物理モデルに対応付ける業務モデル特定部をさらに有することを特徴とする。
【0018】
本発明のリバースエンジニアリング支援装置は、前記業務モデル特定部が、前記一般業務モデルの名称、当該一般業務の処理対象及び処理における制約条件の組み合わせと、特定の業務ドメインを示す業務モデルの名称であるドメイン特化業務名との対応関係を示す予め設定された第4ルールが記述された第4ルールテーブルから、前記一般業務モデルと一致する前記組み合わせを検索し、検索された前記ドメイン特化業務名を前記一般業務モデルに付与することを特徴とする。
【0019】
本発明のリバースエンジニアリング支援方法は、情報処理システムに使用されるソースプログラムに記述された業務仕様の抽出を行い、前記ソースプログラムの解析を支援するリバースエンジニアリング支援装置を動作させる方法であり、処理機能抽出部が、前記ソースプログラムのソースコードを構成するコードから、前記コードの種類、コードの組み合わせ及びコードの配置順序と、予め設定した処理機能を示す単位プログラムとの対応関係が予め設定された第1ルールに従い、前記ソースプログラムのソースコードから、前記処理機能に対応する単位プログラムを抽出する過程と、処理機能統廃合部が、前記単位プログラムの処理機能の種類、組み合わせ及び配置の順番と、前記単位プログラムの配置の順番の変更、統合及び廃棄を示す統廃合処理との対応関係を予め設定した第2ルールに従い、前記ソースプログラムにおける前記単位プログラムの配置順の変更、統合及び廃棄の統廃合処理を行い、統廃合処理の結果として得られた単位プログラムを物理モデルとして出力する過程とを有することを特徴とする。
【0020】
本発明のプログラムは、情報処理システムに使用されるソースプログラムに記述された業務仕様の抽出を行い、前記ソースプログラムの解析を支援するリバースエンジニアリング支援装置をコンピュータに実行させるプログラムであり、処理機能抽出部が、前記ソースプログラムのソースコードを構成するコードから、前記コードの種類、コードの組み合わせ及びコードの配置順序と、予め設定した処理機能を示す単位プログラムとの対応関係が予め設定された第1ルールに従い、前記ソースプログラムのソースコードから、前記処理機能に対応する単位プログラムを抽出する処理と、処理機能統廃合部が、前記単位プログラムの処理機能の種類、組み合わせ及び配置の順番と、前記単位プログラムの配置の順番の変更、統合及び廃棄を示す統廃合処理との対応関係を予め設定した第2ルールに従い、前記ソースプログラムにおける前記単位プログラムの配置順の変更、統合及び廃棄の統廃合処理を行い、統廃合処理の結果として得られた単位プログラムを物理モデルとして出力する処理とをコンピュータに実行させるためのプログラムである。
【発明の効果】
【0021】
この発明によれば、情報処理システムに使用されるソースプログラムから、第1ルールにより処理機能に対応したコードを単位プログラムとして抽出するため、予め設定した一定の大きさの粒度に分割することができ、かつプログラムを構成する各コードの処理機能毎に単位プログラムを抽出するため、プログラムを従来に比較してより粒度の細かな物理単位に分割することができ、物理モデルから業務モデルを抽出する際に、より詳細なドメインに特化した分類で業務モデルの抽出を行うことが可能となる。
また、この発明によれば、第1のルールにより抽出した単位プログラムを、第2ルールにより処理機能に対応させた統廃合処理を行うことにより、異なる位置に配置されている統合可能な単位プログラムの統廃合による整理を行うことができ、異なる配置にあり同一の処理を行う無駄に配置された単位プログラムを無くし、機能処理として整理された状態で物理モデルの抽出を行うことができ、業務仕様の改革及び改善を効率的に行うことが可能となる。
【図面の簡単な説明】
【0022】
【図1】この発明の一実施形態によるリバースエンジニアリング支援装置の構成例を示す図である。
【図2】ソースコードから単位プログラムを抽出する際に用いられる第1ルールが記述された第1ルールテーブルの概要を説明する図である。
【図3】単位プログラムを統廃合して物理モデルを生成する際に用いられる第2ルールが記述された第2ルールテーブルの概要を説明する図である。
【図4】物理モデルから一般業務モデルを抽出した際に出力される第3出力テーブルの構成を示す図である。
【図5】一般業務モデルに対してドメイン特化業務名を付加する際に用いる第4ルールが記述された第4ルールテーブルの概要を説明する図である。
【図6】物理モデル及び業務モデルの抽出対象のソースプログラムの一例を示す図である。
【図7】処理機能抽出部11がソースプログラムのソースコードのプログラムを、抽出した単位プログラムに置き換えた単位プログラムのグラフである単位プログラムグラフの構成の一例を示す図である。
【図8】図7における単位プログラムグラフにおける単位プログラムを統廃合して生成した物理モデルによる物理モデルグラフを示す図である。
【図9】物理モデルグラフにおける物理モデルIDと、業務モデルIDと、各業務モデルの業務モデル名との対応を示す図である。
【図10】物理モデルグラフにおける物理モデルIDと、業務モデルIDと、業務モデルに付与されたドメイン特化業務名との対応を示す図である。
【図11】従来例の業務仕様抽出支援システムの抽出処理を説明するために用いるソースプログラムの構成を示す図である。
【図12】従来例の業務仕様抽出支援システムにより抽出された業務モデルの構成を示す図である。
【図13】従来の物理モデル及び業務モデルの抽出における問題点を説明する図であり、物理モデルのグラフを示している。
【発明を実施するための形態】
【0023】
以下、図面を参照して、本発明の実施の形態について説明する。図1は、この発明の一実施形態によるリバースエンジニアリング支援装置の構成を示す概略ブロック図である。
図1において、本実施形態によるリバースエンジニアリング支援装置は、ソースコード入力部10、処理機能抽出部11、処理機能統廃合部12、業務モデル特定部13、結果出力部14、処理記憶部15、第1ルール記憶部16、第2ルール記憶部17、第3ルール記憶部18及び第4ルール記憶部19を備えている。
ソースコード入力部10は、外部装置から物理モデル及び業務モデルを抽出する解析対象のソースプログラムを入力し、処理記憶部15に書き込んで記憶させる。
【0024】
第1ルール記憶部16には、適切な大きさの粒度にて物理モデルを抽出するために用いる第1ルールを定義する第1ルールテーブルが記憶されている。この第1ルールテーブルには、コードの種類と、そのコードの組み合わせと、そのコードの配置とに対応し、各コードの組み合わせによる処理機能を示す単位プログラムとの対応関係が示されている。第1ルールに記述されたルールと一致するコードの組み合わせが単位プログラムとして定義される。単位プログラムとしては、ソースコードの構造であるプログラム中のループ、条件式、外部入出力、代入式などの配置場所とそれぞれのコード関連(組み合わせ)とから、処理機能に対応付けられている。
ここで、本実施形態において、処理機能としては、例えばデータベース等で用いられる集合を操作する関係代数などにより実行される「選択」、「集約」、「和」、「射影」、…など、また他に「検索」、「選択」、「登録」などの機能を示す語彙を予め設定して用いることにより、これらの機能を処理するプログラム単位を単位プログラムと定義している。
【0025】
図2は、ソースコードから単位プログラムを抽出する際に用いられる第1ルールが記述された第1ルールテーブルの概要を説明する図である。図2(a)は、第1ルールの例として、「選択」の処理機能の物理モデルと、「集約」の処理機能の物理モデルとの各々に対応させるための、プログラム(ソースコード)中のループ、条件式、外部入出力、代入式などの配置場所(配置の順番)及びそれぞれのコードの関連が記載された、すなわちコードの種類、コードの組み合わせ及びコードの配置と、このコードの組み合わせによる処理機能を示す単位プログラムとの対応関係が第1ルールとして第1ルールテーブルとして記述されている。図2(b)には、第1ルールの説明のために用いるソースコードのテキストファイルを示すものである。図2(c)は、抽出された結果として出力される単位プログラムの例を示す第1出力テーブルである。
【0026】
この第1出力テーブルは、ソースプログラムから抽出された単位プログラム毎に付与されたプログラムIDと、このプログラムIDに対応した単位プログラムの処理機能の種類、制約条件、単位プログラムに対する入力、単位プログラムからの出力とから構成されている。ここで、制約条件は、単位プログラム毎の抽出条件に対応して設定されており、例えば図2(c)の場合、処理機能「選択」の抽出条件に対して「B.状態(B[i].joutai)==入荷済み(NYUUKA−ZUMI)」が設定され、処理機能「集約」の抽出条件に対して「B1.在庫場所(B1[i].zaikoBasho)、B1.商品コード(B1[i].shohinCode)」が設定されている。すなわち、制約条件は、比較する条件節内に記載された条件式、あるいは条件式内で比較される変数のいずれかである(後述されるドメイン特化業務名を付加する際には双方が物理モデルから抽出される)。
【0027】
図2(a)において、処理機能「選択」は、ソースコードからの単位プログラムとしてのコードの組み合わせの抽出条件として「変数と定数とを比較する条件節内に代入式があり、代入処理が行われている」こと、…などの複数の抽出条件が設定されている。また、処理機能「選択」は、抽出結果として、入力(条件節外で出力オブジェクトに代入しているオブジェクト)、出力(条件節内で出力しているオブジェクト)及び制約条件として条件式を出力するように設定されている。
【0028】
また、図2(a)において、処理機能「集約」は、ソースコードからの単位プログラムとしてのコードの抽出条件として「ループ内で以下の条件を満たす場合:”変数!=変数”を条件式とする条件節内に代入式があり、代入処理が行われ、かつ条件節の外部に代入式があり、代入処理が行われている」…などの複数の抽出条件が設定されている。また、図2(c)の第1出力テーブルに示されているように、処理機能「集約」は、抽出結果として、入力(ループ内で入力されているオブジェクト)、出力(条件節内で出力されているオブジェクト)及び制約条件として条件式内で比較される変数を出力するように設定されている。
処理機能抽出部11は、処理記憶部15から解析対象のソースコードを読み込み、第1ルールに従って、処理機能の機能毎の物理モデルを抽出する。
【0029】
第2ルール記憶部17には、プログラムの処理機能の並び順により、単位プログラムの処理機能に対応して、1つまたは複数の単位プログラムからなる物理モデルに統廃合し、ソースコードからの物理モデルの抽出処理を行うために用いる第2ルールを定義する第2ルールテーブルが記憶されている。この第2ルールテーブルには、プログラムの配列順とプログラムの組み合わせに対応して、物理モデルとの対応関係が示されている。
【0030】
図3は、単位プログラムを統廃合して物理モデルを生成する際に用いられる第2ルールが記述された第2ルールテーブルの概要を説明する図である。図3(a)は、第2ルールの例として、プログラムの配列及び処理機能(選択、集約及び和)により、単位プログラムを統廃合処理して、物理モデルを生成するためのルールの一例が記載されている。
図3(b)には、第1ルールにより処理機能抽出部11が抽出した出力結果のテーブルの一例を示す図である。
図3(c)は、第2ルールにより統廃合処理の結果出力される物理モデルの構成を示すテーブルの図である。物理モデルは、物理モデルIDに対応し、統廃合されたプログラムIDと、初期機能と、制約条件と、入力及び出力のオブジェクトとから構成されている。ここで、物理モデルの制約条件は、統廃合したプログラムにおける制約条件が反映される。また、物理モデルの入力及び出力に関しては、それぞれ統廃合のプログラムの並び順に基づき、各プログラムの入力及び出力のオブジェクトに対応して再設定される。
【0031】
図3(a)において、第2ルールとして、「処理機能”選択”のプログラムは、一つ前のプログラムの処理機能が「集約」以外の場合、配列の順番を入れ替える」、「連続する”選択”は一つの”選択”にまとめて、制約条件をアンド(論理積演算)で繋げる」、「連続する”和”は一つの”和”にまとめる」、…などのルールが記載されている。
処理機能統廃合部12は、第2ルールに従い、各処理機能のプログラムを、プログラムの配列順及び組み合わせに対応して統廃合し、物理モデルの生成を行う。
【0032】
第3ルール記憶部18には、物理モデルの処理機能の並び順と組み合わせとにより、1つまたは2つの物理モデルからなる一般業務モデルに対応させる処理を行うために用いる第3ルールを定義する第3ルールテーブルが記憶されている。この第3ルールテーブルには、物理モデルの配列順と物理モデルの組み合わせに対応して、一般業務モデルの業務名との対応関係が示されている。
【0033】
図4は、物理モデルに対して一般業務モデルの業務名(一般業務モデル名)を付加する際に用いる、上述した第3ルールが記述された第3ルールテーブルの概要を説明する図である。
図4(a)は、第3ルールテーブルの構成を示すものであり、物理モデルの処理機能及び配置(並び順)の順み合わせと、この組み合わせに対応する一般業務モデル名との対応の一例が示されている。
図4(b)は、物理モデルから一般業務モデルを抽出した際に出力される第3出力テーブルの構成を示す図である。この図4(b)は、業務モデルを識別する業務モデルIDに対応して、業務モデルIDの示す業務モデルに対応する物理モデルを示す物理モデルIDと、物理モデルIDの示す物理モデルを構成する単位プログラムを示すプログラムIDと、物理モデルIDが示す物理モデルの処理機能と、物理モデルIDが示す物理モデルの制約条件と、物理モデルに入力されるオブジェクトと、物理モデルから出力されるオブジェクトと、この業務モデルの一般業務名との対応を示している。
業務モデル特定部13は、第3ルールに従い、各物理モデルを、物理モデルの配列順及び組み合わせに対応して統合し、一般業務モデルの生成を行う。
【0034】
第4ルール記憶部18には、一般業務モデルの業務名、処理対象、制約条件と、ドメイン特化業務名と対応関係を示し、一般業務モデルの処理内容に応じてドメイン特化業務名を付与するための第4ルールを定義する第4ルールテーブルが記憶されている。
【0035】
図5は、一般業務モデルに対してドメイン特化業務名を付加する際に用いる第4ルールが記述された第4ルールテーブルの概要を説明する図である。
図5(a)は、第4ルールテーブルの構成を示すものであり、一般業務名、処理対象、制約条件の組み合わせと、この組み合わせに対応するドメイン特化業務名との対応の一例が示されている。
図5(b)は、第4ルールによる処理結果として出力される結果テーブルを示す図である。一般業務モデルの業務デルID毎に、各業務モデルを構成する物理モデルの物理モデルIDと、物理モデルに統廃合されたプログラムのプログラムIDと、物理モデルの制約条件、物理モデルが入力及び出力するオブジェクトと、業務モデルIDのドメイン特化業務名との対応が記載されたテーブルの図である。
処理機能統廃合部12は、第2ルールに従い、一般業務モデルの処理対象のドメインに対応して、ドメイン特化業務名を各一般業務モデルに対して付与する処理を行う。
【0036】
<処理機能抽出処理>
次に、図1、図2、図6及び図7を用いて、処理機能抽出部11が行う処理機能抽出処理について説明する。
処理機能抽出部11は、ソースコード入力部10が処理記憶部15に書き込んで記憶させたソースプログラムを読み出す。
図6は、物理モデル及び業務モデルの抽出対象のソースプログラムとオブジェクト及びソースプログラム間の入力関係の一例を示す図である。このソースプログラムは、プログラムPGM−1、PGM−2、PGM−3、PGM−4、PGM−5、PGM−6、PGM−7及びPGM−8から構成され、初期入力オブジェクトとしてファイルFILE−A、FILE−D及びFILE−Gを読み込み、最終出力オブジェクトとしてFILE−Kを出力する。
【0037】
そして、処理機能抽出部11は、ソースプログラムにおける各PGMのソースコードから、ループ、条件式、外部入出力、代入式などのコードの種類、コードの配置を示す第1ルールパラメータを抽出する。この第1パラメータ抽出の際、処理機能抽出部11は、ソースプログラムに入力されるオブジェクトを処理する順番に、第1ルールパラメータの抽出処理を行う。すなわち、初期入力オブジェクトが入力されるプログラムから順次処理を開始し、そのプログラムから出力される出力オブジェクトが、入力オブジェクトとして入力されるプログラムの順に、第1ルールパラメータの抽出を行う。
例えば、処理機能抽出部11は、FILE−Aを入力するプログラムPGM−1から抽出処理を開始し、他のプログラムからの出力と統合処理を行うプログラムPGM−6において一旦停止し、ソースプログラムに入力される他のFILE−Dを処理するプログラムPGM−3から抽出処理を再開する。
【0038】
同様に、処理機能抽出部11は、他のプログラムからの出力と統合処理を行うプログラムPGM−5において一旦停止し、ソースプログラムに入力される他のFILE−Gを処理するプログラムPGM−5から抽出処理を再開し、このとき、プログラムPGM−5がプログラムPGM−4から出力されるオブジェクト(FILE−F)を入力していることを検出し、プログラムPGM−5への入力をFILE−FとFILGとして、プログラムPGM−5からの単位プログラムの抽出を行う。
【0039】
次に、処理機能抽出部11は、PGM−6に入力されるオブジェクトであるFILE−C及びFILE−Hを出力するプログラムPGM−2及びPGM−5の抽出処理が終了したことを検出すると、FILE−C及びFILE−Hを入力とするプログラムPGM−6に対し、単位プログラムを抽出する処理を行う。
そして、処理機能抽出部11は、プログラムPGM−6からプログラムPGM−8までの各プログラムから、入力及び出力されるオブジェクトを含め、単位プログラムの抽出処理を行う。
【0040】
次に、処理機能抽出部11は、第1ルール記憶部16の第1ルールテーブルにおいて、抽出した第1ルールパラメータに対応するパラーメータを検索し(パターンマッチング処理)、第1ルールパラメータと一致するパラーメータに対応して記憶されている処理機能を抽出し、第1ルールパラメータに対応した処理機能を読み出す。
例えば、プログラムPGM−2が、図2(b)に示すソースコードの場合、ソースコードPは「変数(B[i],joutai)と、定数(NYUUKA−ZUMI)を比較する条件節内(if文節)で代入の処理として代入(B1[j]=B[i])する」構造をしており、ソースコードQは「ループ(while文)内で、変数(oldData.zaikoBasho)!=変数(newData.zaikoBasho)を条件式とする条件節(if文節)内において、代入(C.data1=oldData.data1)しており、同一ループ内の同じ条件式の外部にて代入(oldData=newData)する」構造をしている。
【0041】
したがって、処理機能抽出部11は、ソースコードPから抽出した第1ルールパラメータを抽出条件として、パターンマッチングにより第1ルールテーブルを検索し、一致する抽出条件に対応する処理機能である「選択」を読み出し、処理機能「選択」の単位プログラムとしてプログラムID2を付与する。
同様に、処理機能抽出部11は、ソースコードQから抽出した第1ルールパラメータを抽出条件として、パターンマッチングにより第1ルールテーブルを検索し、一致する抽出条件に対応する処理機能である「集約」を読み出し、処理機能「集約」の単位プログラムとしてプログラムID2を付与する。
【0042】
すなわち、処理機能抽出部11は、プログラムPGM−2のソースコードと、第1ルールとのパターンマッチングにより、プログラムPGM−2が、処理機能「選択」及び集約から構成されており、それぞれ「”状態==入荷済み”という条件によりデータを”選択”する」という処理機能「選択」の単位プログラムと、「その”選択”された結果を”在庫場所”と”商品コード”とにより”集約”する」という処理機能「集約」の単位プログラムとから構成されていることを検出し、処理機能単位にソースコードを構成するプログラムを分割している。このプログラムを処理機能単位に分割することにより、ソースプログラムから、従来に比較してより細かく、かつ一定の粒度により、後述する物理モデルを抽出することが可能となる。
【0043】
そして、処理機能抽出部11は、処理結果として、図3(b)に示す、ソースプログラムから抽出し単位プログラム毎に付与されたプログラムIDと、このプログラムIDに対応した単位プログラムの処理機能の種類、制約条件、単位プログラムに対する入力、単位プログラムからの出力とからなる第1出力テーブルを、処理記憶部15に書き込んで記憶させる。
【0044】
次に、図7は、処理機能抽出部11がソースプログラムのソースコードのプログラムを、抽出した単位プログラムに置き換えた単位プログラムのグラフである単位プログラムグラフの構成の一例を示す図である。
すなわち、処理機能抽出部11は、図6に示すソースプログラムのグラフを、単位プログラムの抽出結果に対応させた図7に示す単位プログラムグラフの関係として図3(b)を生成し、処理記憶部15に書き込んで記憶させる。
【0045】
<処理機能統廃合処理>
次に、図1、図3、図7及び図8を用いて、処理機能抽出部11が行う処理機能抽出処理について説明する。図8は、図7における単位プログラムグラフにおける単位プログラムを統廃合して生成した物理モデルによる物理モデルグラフを示す図である。
処理機能統廃合部12は、処理機能抽出部11が処理記憶部15に書き込んで記憶させた図3(b)に示す第1出力テーブルを読み出す。また、処理機能統廃合部12は、第2ルール記憶部17に記憶されている第2ルールテーブルを読み出す。
【0046】
次に、処理機能統廃合部12は、図8の単位プログラムグラフにおける単位プログラムの配列と、第1出力テーブルにおける各単位プログラムの処理機能の記述とから、ソースプログラムに入力されるオブジェクトから順番に、単位プログラムの配列順(並び順)と、単位プログラムの機能の組み合わせと等からなる第2ルールパラメータを抽出する。
ここで、処理機能統廃合部12は、初期入力オブジェクトが入力される単位プログラムから順次処理を開始し、その単位プログラムから出力される出力オブジェクトが、入力オブジェクトとして入力される単位プログラムの順に、第2ルールパラメータの抽出を行う。
そして、処理機能統廃合部12は、第1出力テーブルから抽出された第2ルールパラメータと、第2ルールテーブルに記述された第2ルールにおける各ルールに記述されたパラーメータとマッチングすることにより(一致する第2ルールパラメータに一致するパラメータが記載されたルールを検索し)、第2ルールパラメータと一致したルールに基づいた統廃合の処理を行う。このとき、処理機能統廃合部12は、第2ルールに記述された順番に、ルールに基づいた統廃合処理を行う。
【0047】
例えば、処理機能統廃合部12は、図7に示す単位プログラムの処理順番において、処理機能「選択」のプログラムID7の前に配置された処理機能「選択」のプログラムID3及びID4の間に、処理機能「集約」の単位プログラムが配置されておらず、第2ルールにおける「”選択”は、一つ前の処理機能が”集約”以外の場合、順番を入れ替える」とするルールに対応することを検出する。
そして、処理機能統廃合部12は、プログラムID4及びID5の各々の配列位置の次の配列位置にプログラムID7「選択」を配置し、プログラムID6及びプログラムID8の間にあるプログラムID7「選択」を削除(廃棄)する。
【0048】
次に、処理機能統廃合部12は、プログラムID1及びID2の単位プログラムが双方ともに処理機能「選択」であり、第2ルールにおける「連続する”選択”は一つの”選択”にまとめ、制約条件をアンドで繋げる」とするルールに対応することを検出する。
そして、処理機能統廃合部12は、処理機能「選択」のプログラムID1及びID2の単位プログラムを、処理機能「選択」の物理モデルとして統合し、識別情報として物理モデルID1を付与する。
【0049】
同様に、処理機能統廃合部12は、処理機能「選択」のプログラムID3、ID4及びID7の単位プログラムも、第2ルールにおける「連続する”選択”は一つの”選択”にまとめ、制約条件をアンドで繋げる」とするルールに対応することを検出する。
そして、処理機能統廃合部12は、プログラムID3、ID4及びID7の単位プログラムの統廃合処理を行い、処理機能「選択」の物理モデルとして統合し、識別情報として物理モデルID3を付与する。
【0050】
また、処理機能統廃合部12は、処理機能「選択」のプログラムID5及びID7の単位プログラムも、第2ルールにおける「連続する”選択”は一つの”選択”にまとめ、制約条件をアンドで繋げる」とするルールに対応することを検出する。
そして、処理機能統廃合部12は、プログラムID5(処理機能”選択”)及びID7の単位プログラムの統廃合処理を行い、処理機能「選択」の物理モデルとして統合し、識別情報として物理モデルID3を付与する。
【0051】
次に、処理機能統廃合部12は、処理機能「和」のプログラムID5(処理機能”和”)及びID6が連続していることより、第2ルールにおける「連続する”和”は一つの”和”にまとめる」とするルールに対応することを検出する。
そして、処理機能統廃合部12は、プログラムID5(処理機能”和”)及びID6の単位プログラムの統廃合処理を行い、処理機能「和」の物理モデルとして統合し、識別情報として物理モデルID5を付与する。
【0052】
また、処理機能統廃合部12は、処理機能「集約」のプログラムID2及びID8の各々を、それぞれ処理機能「集約」の物理モデルとし、識別情報として物理モデルID2、ID6を付与する。
上述したように、処理機能統廃合部12は、処理機能抽出部11の抽出した単位プログラムを、図7に示す単位プログラムグラフと図3(c)に示す第1出力テーブルとを参照することにより、第2ルールに従って機能処理の種類とその配列順とにより統廃合して生成した物理モデルを、図8に示す物理モデルの配列を示す物理モデルグラフに対応する第2出力テーブル(図3(c))を生成し、処理記憶部15に書き込んで記憶させる。
【0053】
すなわち、処理機能統廃合部12は、物理モデル毎に、物理モデルを識別する物理モデルIDと対応し、物理モデルIDの示す物理モデルとして構成された単位プログラムのプログラムID、物理モデルの処理機能、制約条件、物理モデルに入力されるオブジェクト、物理モデルから出力されるオブジェクトとが対応付けた、図3(c)に示す第2出力テーブルを、処理記憶部15に書き込んで記憶させる。
また、処理機能統廃合部12は、統廃合した結果として得られる物理モデルの入力及び出力されるオブジェクトを、統廃合する単位プログラムの入力及び出力されるオブジェクトに対応して、統廃合された物理モデル自身及び前段及び後段の物理モデルの入力及び出力されるオブジェクトを変更する。
【0054】
<業務モデル特定処理>
次に、図1、図3、図4、図5及び図9を用いて、業務モデル特定部14が行う業務モデル特定処理について説明する。
業務モデル特定部13は、処理機能統廃合部12が処理記憶部15に書き込んで記憶させた図8の物理モデルグラフの構成に対応する図3(c)に示す第2出力テーブルを読み出す。また、処理機能統廃合部12は、第3ルール記憶部18に記憶されている図4(a)に示す第3ルールテーブルを読み出す。
【0055】
次に、業務モデル特定部13は、図3(c)に示す第2出力テーブルから、各物理モデルの処理機能の種類と物理モデルの並び順を、第3ルールテーブルに記述された第3ルールとマッチングすることにより、物理モデルの処理機能の種類とその並び順(配置順)と(第3ルールパラメータ)が一致するルールを検索し、この一致するルールに対応して記憶されている一般業務モデル名を第3ルールから抽出する。
ここで、業務モデル特定部13は、初期入力オブジェクトが入力される物理モデルから順次処理を開始し、その物理プログラムから出力される出力オブジェクトが、入力オブジェクトとして入力される物理モデルの順に、順次第3ルールパラメータの抽出を行う。
そして、業務モデル特定部13は、連続する各物理モデルの単位プログラムグラフにおける単位プログラムの配列(並び順)と、第1出力テーブルにおける各単位プログラムの処理機能の記述とから、図8の物理モデルグラフが示すソースプログラムに入力されるオブジェクトから順番に、一般業務モデルの名称である一般業務モデル名の付与を、図9に示す物理モデルグラフに示すように行う。
図9は、物理モデルグラフにおける物理モデルIDと、業務モデルIDと、各業務モデルの業務モデル名との対応を示す図である。
【0056】
例えば、図4(a)に示す第3ルールテーブルにおいて、物理モデルID1の物理モデルの処理機能が「選択」であり、物理モデルID2の物理モデルの処理機能が「集約」であり、物理モデルID1及びID2の物理モデルが、処理機能「和」の物理モデルの前段において連続して配置されているため、物理モデルID1及びID2の物理モデルは、一般業務モデルの「明細集計」に該当する(第3ルールの一例)。
このため、業務モデル特定部13は、第3ルールに従い、物理モデルID1及びID2の物理モデルを統合し、一つの一般業務モデルとして、「明細集計」を名称として付与するとともに、識別情報として業務モデルID1を付与する。
【0057】
また、物理モデルID3及びID4の物理モデルは、それぞれ単独で和の前段に配置され、処理内容が「選択」であるため、一般モデルの「情報抽出」に該当する(第3ルールの一例)。
このため、業務モデル特定部13は、第3ルールに従い、物理モデルID3及びID4の物理モデルの各々に対し、一般業務モデルとして、「情報抽出」を名称として付与するとともに、物理モデルID3及びID4の物理モデルの各々に対して識別情報として業務モデルID2、ID3を付与する。
【0058】
また、物理モデルID5及びID6の物理モデルの各々は、物理モデルの配置が連続しており、かつ処理機能「和」と処理機能「集約」との順番であるため、一般業務モデルの「全集計」に該当する(第3ルールの一例)。
このため、業務モデル特定部13は、第3ルールに従い、物理モデルID5及びID6の物理モデルを統合し、一つの一般業務モデルとして、「全集計」を名称として付与するとともに、物理モデルID3及びID4の物理モデルを統合した一般業務モデルに対して識別情報として業務モデルID4を付与する。
【0059】
上述したように、業務モデル特定部13は、各物理モデルの統合等の処理を行い、各物理モデルに対して一般業務モデル名及び業務モデルIDを付与し、図3(c)に示す第2出力テーブルの記述に基づいて、図4(b)に示す第3出力テーブルを生成し、生成した第3出力テーブルを処理記憶部15に書き込み記憶させる。
ここで、第3出力テーブルは、各一般業務モデルの業務モデルIDと、この業務モデルIDの示す一般業務モデルに対応する物理モデルの物理モデルID、物理モデルを構成する単位プログラムのプログラムID、物理モデルの処理機能、物理モデルの制約条件、物理モデルに入力されるオブジェクト、物理モデルが出力するオブジェクトとからなるテーブルである。
【0060】
次に、業務モデル特定部13は、自身が処理記憶部15に書き込んで記憶させた図4に示す第3出力テーブルと、第4ルール記憶部19に記憶されている図5(a)に示す第4ルールテーブルを読み出す。
そして、業務モデル特定部13は、図5(a)に示す第4ルールテーブルに記述された第4ルールに従い、すなわち第4ルールと第3出力テーブルの記述とのマッチングを行い、一般業務モデル名、処理対象及び制約条件との組み合わせとにより、一般業務モデル毎に、ドメイン特化業務名を付与する処理を行う。
【0061】
図10は、物理モデルグラフにおける物理モデルIDと、業務モデルIDと、業務モデルに付与されたドメイン特化業務名との対応を示す図である。
上述したように、業務モデル特定部13は、この図9に示すように、物理モデルを一般業務モデルである業務モデルに変換し、この一般業務モデルに対して一般業務モデル名を付与する。
また、業務モデル特定部13は、統合した結果として得られる一般業務モデルの入力及び出力されるオブジェクトを、統廃合する物理モデルの入力及び出力されるオブジェクトに対応して、統合された一般業務モデル自身及び前段及び後段の一般業務モデルの入力及び出力されるオブジェクトを変更する。
【0062】
次に、業務モデル特定部13は、付与した一般業務モデル名と、この一般業務モデルの処理対象と、この一般業務モデルの制約条件とにより、第4ルールに従い、各一般業務モデルに対してドメイン特化業務名を付与する処理を行う。
すなわち、業務モデル特定部13は、第4ルールテーブルから、一般業務モデルの一般業務モデル名と、この一般業務モデルの処理対象と、この一般業務モデルの制約条件と一致するルールを検索し、検索されたルールに対応して記憶されているドメイン特化業務名を、検索対象とした一般業務モデルに付与する。
【0063】
例えば、業務モデル特定部13は、第3出力テーブルから、業務モデルID1の一般業務モデルが一般業務モデル名として「明細集計」であり、処理対象が入荷情報であり、かつ制約条件が「入荷日==本日」であることを検出する。
そして、業務モデル特定部13は、業務モデルID1の一般業務モデル名、処理対象及び制約条件の組み合わせと、図5(a)に示す第4ルールとのマッチングを行う。
マッチングにおいて、業務モデル特定部13は、一般業務モデル名が「明細集計」であり、処理対象が入荷情報であり、かつ制約条件に「入荷日==本日」である組み合わせを第4ルールにおいて検出する。
この結果、業務モデル特定部13は、業務モデルID1の一般業務モデル名、処理対象及び制約条件の組み合わせと、第4ルールにて一致した組み合わせに対応するドメイン特化業務名である「当日入荷集計」を読み出し、業務モデルID1に付与する。ここで、処理対象の抽出は、制約条件に用いられているデータの名称から推定、例えば上述の場合、入荷日を示すデータの名称から入荷についての処理であることを推定する。
【0064】
また、業務モデル特定部13は、第3出力テーブルから、業務モデルID2の一般業務モデルが、一般業務モデル名が「情報抽出」であり、処理対象が在庫抽出情報であり、制約条件にα倉庫が含まれていることを検出する。
そして、業務モデル特定部13は、業務モデルID2の一般業務モデル名、処理対象及び制約条件の組み合わせと、第4ルールとをマッチングする。
この結果、業務モデル特定部13は、業務モデルID2の一般業務モデル名、処理対象及び制約条件の組み合わせと、第4ルールにて一致した組み合わせに対応するドメイン特化業務名である「α倉庫在庫抽出」を読み出し、業務モデルID2に付与する。
【0065】
また、業務モデル特定部13は、第3出力テーブルから、業務モデルID3の一般業務モデルが、一般業務モデル名が「情報抽出」であり、処理対象が在庫抽出情報であり、制約条件に「入荷日>本日−10営業日」が含まれていることを検出する。
そして、業務モデル特定部13は、業務モデルID3の一般業務モデル名、処理対象及び制約条件の組み合わせと、第4ルールとをマッチングする。
この結果、業務モデル特定部13は、業務モデルID3の一般業務モデル名、処理対象及び制約条件の組み合わせと、第4ルールにて一致した組み合わせに対応するドメイン特化業務名である「最新在庫抽出」を読み出し、業務モデルID3に付与する。
【0066】
また、業務モデル特定部13は、第3出力テーブルから、業務モデルID4の一般業務モデルが一般業務モデル名として「全集計」であり、処理対象が在庫情報であり、かつ制約条件が「在庫場所、商品コード」であることを検出する。
そして、業務モデル特定部13は、業務モデルID4の一般業務モデル名、処理対象及び制約条件の組み合わせと、図5(a)に示す第4ルールとのマッチングを行う。
マッチングにおいて、業務モデル特定部13は、一般業務モデル名が「全集計」であり、処理対象が在庫情報であり、かつ制約条件に「在庫場所、商品コード」である組み合わせを第4ルールにおいて検出する。
この結果、業務モデル特定部13は、業務モデルID4の一般業務モデル名、処理対象及び制約条件の組み合わせと、第4ルールにて一致した組み合わせに対応するドメイン特化業務名である「全在庫集計」を読み出し、業務モデルID4に付与する。
【0067】
そして、業務モデル特定部13は、図4における全ての一般業務モデルに対するドメイン特化業務名の付与が終了すると、図4に示す第3出力テーブルに対し、各業務モデルに対して付与したドメイン特化業務名を付加した図5(b)に示す第4出力テーブルを生成し、処理記憶部15に書き込んで記憶させる。
また、業務モデル特定部13は、図9の物理モデルグラフに対して、各物理モデル及び業務モデルの対応関係と、業務モデル及び業務モデルに付与されたドメイン特化業務名の対応関係を示す記述を付加した図10の物理モデルグラフを生成し、処理記憶部15に書き込んで記憶させる。
【0068】
<結果出力処理>
そして、結果出力部14は、ソースプログラムからの物理モデル及び業務モデルの抽出処理が終了すると、図5(b)の第4出力テーーブルと、図10のドメイン特化業務名が付与された物理モデルグラフとを読み出し、図示しない表示装置に対して表示する。
【0069】
上述したように、本実施形態においては、ソースコードにおけるコードの種類とその組み合わせと配置順等の組み合わせと、その組み合わせにより実現される処理機能との対応を示す第1ルールにより、ソースコードを従来に比較してより細かく一定の粒度の単位プログラムに分割するため、単位プログラムの統廃合処理、すなわちソースコードにおける処理を機能的に整理し、リバースエンジニアリングが行いやすい物理モデルを抽出することができる。
【0070】
また、本実施形態においては、第2ルールにより、ソースコードを処理機能毎に分割した単位プログラムの配置を、ソースプログラムの動作を変更させない条件下により変更し、かつ連続する同一の処理機能を有する単位プログラムの統合を行う統廃合処理を行い、処理機能に対応した物理モデルの抽出を行うため、ソースコードにおいて異なる位置に無駄に設けられた同一の処理機能の単位プログラムを統合し、全体のソースコードを表現する物理モデルを、ソースコードの機能を整理した状態において抽出することができ、かつ業務的な意味をわかりやすくし、業務モデルを抽出する際に、ドメインモデルである第3ルールとのマッチングが容易に行える。
【0071】
また、本実施形態においては、第3ルールの物理モデルの種類及び配置順の組み合わせにより、一つあるいは複数の物理モデルを一般業務モデルに変換するため、一般業務モデルが常に一定の条件で抽出することができ、従来のように、物理モデルと業務モデルとの対応が異なることなく、予め設定した第3ルールに従った均一な対応関係にある物理モデルと業務モデルとを、抽出対象のソースコードから抽出させることができる。
【0072】
また、本実施形態においては、物理モデルに処理機能の名称(選択、集約、和、射影など)を付与し、かつ一般業務モデルの一般業務モデル名と処理対象と制約条件と、第4ルールにおいて一致する一般業務モデル名と処理対象と制約条件とに対応付けられたドメイン特化業務名を読み出し、この一般業務モデル名と処理対象と制約条件一致した一般業務モデルに対して、読み出したドメイン特化業務名を付与するため、従来のように、名称付与の属人性や外部知識の必要性を排除することができ、名称を付与する工程を省くことができ、かつ処理を高速化することができる。
また、本実施形態においては、プログラムを作成する担当者に理解できる物理モデルの名称が付与され、また抽出した業務モデルに対して、システムの改革及び改善を行う作業者に容易に理解できるドメイン特化業務名が付与されるため、業務的な意味を分かり易くし、リバースエンジニアリングの効率を向上させることができる。
【0073】
また、図1におけるソースコード入力部10、処理機能抽出部11、処理機能統廃合部12、業務モデル特定部13、結果出力部14各部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより物理モデル及び業務モデルの抽出処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
【0074】
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【0075】
以上、この発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0076】
10…ソースコード入力部
11…処理機能抽出部
12…処理機能統廃合部
13…業務モデル特定部
14…結果出力部
15…処理機億部
16…第1ルール記憶部
17…第2ルール記憶部
18…第3ルール記憶部
19…第4ルール記憶部
【技術分野】
【0001】
本発明は、リバースエンジニアリング支援装置、リバースエンジニアリング支援方法及びそのプログラムに関する。
【背景技術】
【0002】
情報処理システムを構成するソースプログラムを解析して、制御構造、データ構造、及びデータ間の依存関係等の仕様情報を自動的に抽出し、抽出した仕様情報を図式チャート等によってユーザに提示するリバースエンジニアリングが広く用いられている。
リバースエンジニアリングにより、解析対象のソースプログラムの行う業務の理解を支援するシステムとして、例えば、特許文献1の業務仕様抽出支援システムがある。
特許文献1においては、ソースプログラムから抽出した物理モデルと、この物理モデルと対応して業務の内容を示す業務モデルとを対応付ける対応テーブルが予め設定されている。ここで、業務モデルとは、業務機能と論理データを頂点とし、これらの間のデータの入出力を表す有向の辺を持つグラフであるモデルである。物理モデルは、プログラム機能と物理データを頂点とし、これらの間のデータの入出力を表す有向の辺を持つグラフであるである。
【0003】
業務仕様抽出支援システムは、抽出した物理モデルを対応テーブルから検索し、この物理モデルと一致する物理モデルに対応する業務モデルを抽出して表示する。
また、業務仕様抽出支援システムは、抽出した物理モデルと一致する物理モデルが対応テーブルにおいて検出されない場合、対応付けのない物理モデルを表示し、ユーザに対して検出されない物理モデルに対応する業務モデルの作成を促す。
【0004】
また、業務仕様抽出支援システムは、ソースプログラムのプログラム機能内の条件式によって、業務を分割して業務モデルのバリエーションとして、業務モデルを生成している。
例えば、図11に示すプログラムにおいて、受注登録という業務機能の業務モデルに、PGM_X、PGM_A、PGM_B、PGM_C及びPGM_Yというプログラム機能の物理モデルが含まれている場合における業務の分割を行う場合を考える。図11はソースプログラムの物理モデルのグラフを示している。
ここで、「受注場所」が1(国内を示すフラグ)の場合、PGM_Xの分岐処理によりPGM_X、PGM_A及びPGM_Yが実行され、「受注場所」が2(国外を示すフラグ)の場合、PGM_Xの分岐処理によりPGM_X、PGM_A、PGM_B、PGM_C及びPGM_Yが実行されることになる。
【0005】
したがって、業務仕様抽出支援システムは、PGM_Xの分岐処理により、「受注登録」という業務を、図12の物理モデルのグラフに示すように、「受注登録A(受注場所=1)」と「受注登録B(受注場所=2)」とに分割する。そして、業務仕様抽出支援システムは、「受注登録A」をPGM_Aだけの物理モデルに、「受注登録B」をPGM_A、PGM_B及びPGM_Cからなる物理モデルに対応付けている。図12はソースプログラムの物理モデルのグラフと、業務モデルとの対応を示す図である。
【0006】
上述した処理により、受注場所が1の場合に国内、受注場所が2の場合に国外と対応付けると、国内における「受注登録」には必要がないが、国外における「受注登録」にPGM_B→PGM_Cのフローが必要な業務であり、業務モデルの2つのバリエーションとして、「受注登録」を分割することができる。
また、業務仕様抽出支援システムは、業務モデル及び物理モデルの各々の名称を、ユーザから外部情報として与えられる構成となっている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2008−52312号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
リバースエンジニアリングにおいては、業務と情報処理システムとの関係を理解するためには、処理される業務内容を示す業務モデルと、ソースコードから抽出した処理を示す物理モデルとに対し、以下の3つの条件が必要になる。
a.業務モデルと物理モデルとの対応関係がある
b.業務モデルと物理モデルとが一定かつ適切な粒度のプロセスに分割されている
c.業務モデルと物理モデルとに対し、適切な名称が付与されている(業務モデルはユーザが理解できる名称であり、物理モデルはプログラム作成者が理解できる名称である必要がある)
【0009】
ところが、特許文献1の業務仕様抽出支援システムは、業務モデルと物理モデルとの対応関係は示されているが、業務モデルと物理モデルとが適切な粒度に分割されているとは言えない。
すなわち、リエンジニアリングやリビルドなどで業務の改革及び改善のため、業務の取捨選択や共通化を検討する際、業務モデルを荒い粒度で行うと、業務で行われている処理の解析が十分にできない。
例えば、特許文献1の業務仕様抽出支援システムは、図12において、ソースプログラムの処理が国内と国外とにおける「登録業務」に分離される。
しかしながら、国外における「登録業務(受注場所=2)」にPGM_B及びPGM_Cが必要な物理モデルであることは判るが、この物理モデルがどのような処理を行っているかが判らない。
【0010】
このため、改革及び改善を行う際に、取捨選択を行う情報が不十分であり、業務の内容を検討することができない。
例えば、図11に示す「登録業務」を受注場所による2つのバリエーションに分割するのではなく、2つのバリエーションの違いが分かる程度の粒度に分割する必要がある。
図13は、物理モデルのグラフであり、一例として、ソースプログラムにおけるPGM_X、PGM_A、PGM_B及びPGM_Cを物理モデルの単位とし、この物理モデルに対して業務モデルを設定している。
【0011】
これにより、国内の「登録業務(受注場所=1)」と、国外の「登録業務(受注場所=2)」との違いが明確となる。
国外の「登録業務」と国内の登録業務との共通な業務及び異なる業務を判定することにより、国内の「登録業務」にも、リスク情報に関する処理を入れるなどの、業務の改善を容易に行うことができる。
したがって、特許文献1の業務仕様抽出支援システムにおける物理モデルと業務モデルとの粒度は、業務の解析を行うためには不十分な大きさである。
【0012】
このため、従来においては、業務の解析に対応できるように、業務モデルに関しては、ソースプログラムのドキュメント調査、あるいはユーザからのヒアリングをもとに、リバースエンジニアリングの担当者が適切と思う粒度の業務単位に作成していた。同様に、物理モデルに関してはプログラム機能を分割の単位としていた。
このため、リエンジニアリングの担当者毎に業務モデルの粒度が異なって、汎用性のないものとなっている。同様に、物理モデルの粒度をプログラム機能を分割の単位としているため、粒度が一定か否かはプログラムの設計によって異なり、結果として一定の粒度にはならない。
【0013】
したがって、業務モデルを荒い粒度で設定する場合、担当者毎に粒度の設定が異なってしまい、実際には同じ業務であっても、異なる粒度で設定されてることになり、同じソースプログラムから抽出されたにもかかわらず、結果的に同一の業務とは認識できず、改善における共通化などができなくなる。
【0014】
また、特許文献1の業務仕様抽出支援システムは、業務モデルと物理モデルとに適切な名称を付与する処理を行っていない。
このため、担当者は、業務仕様抽出支援システムの提示する物理モデル(プログラム機能名、物理データ名、プログラム機能を分割する条件式)に対応させ、業務モデル(業務機能名、論理データ名)から内容を類推し、物理モデル及び業務モデルに対して適切な名称を付与する必要があり、名称付与の作業に手間がかかってしまう。
したがって、担当者の知識によるため、ユーザが理解できる業務モデルの名称や、プログラム作成者が理解できる物理モデルの名称とはならず、改革及び改善の差異に効率的な処理が行えない。
【0015】
本発明は、このような事情に鑑みてなされたもので、その目的は、情報処理システムに使用されるソースプログラムから、従来に比較して、細かく、かつ一定の粒度により、業務モデル及び物理モデルを対応させて抽出し、かつ業務仕様の改革及び改善を行う際、ユーザまたはプログラム作成者が容易に理解できる名称を業務モデル及び物理モデルの双方に与えることが可能なリバースエンジニアリング支援装置、リバースエンジニアリング支援方法及びそのプログラムを提供することを目的としている。
【課題を解決するための手段】
【0016】
本発明のリバースエンジニアリング支援装置は、情報処理システムに使用されるソースプログラムに記述された業務仕様の抽出を行い、前記ソースプログラムの解析を支援するリバースエンジニアリング支援装置において、前記ソースプログラムのソースコードを構成するコードから、前記コードの種類、コードの組み合わせ及びコードの配置順序と、予め設定した処理機能を示す単位プログラムとの対応関係が予め設定された第1ルールに従い、前記ソースプログラムのソースコードから、前記処理機能に対応する単位プログラムを抽出する処理機能抽出部と、前記単位プログラムの処理機能の種類、組み合わせ及び配置の順番と、前記単位プログラムの配置の順番の変更、統合及び廃棄を示す統廃合処理との対応関係を予め設定した第2ルールに従い、前記ソースプログラムにおける前記単位プログラムの配置順の変更、統合及び廃棄の統廃合処理を行い、統廃合処理の結果として得られた単位プログラムを物理モデルとして出力する処理機能統廃合部とを有することを特徴とする。
【0017】
本発明のリバースエンジニアリング支援装置は、前記物理モデルの処理機能の種類及び配置順序と、前記物理モデルから構成される一般業務モデルとの対応関係を示す予め設定された第3ルールが記述された第3ルールテーブルから、前記処理機能統廃合部から出力される前記物理モデルの処理機能及び順序と一致する前記一般業務モデルを検索し、一致した一般業務モデルを前記物理モデルに対応付ける業務モデル特定部をさらに有することを特徴とする。
【0018】
本発明のリバースエンジニアリング支援装置は、前記業務モデル特定部が、前記一般業務モデルの名称、当該一般業務の処理対象及び処理における制約条件の組み合わせと、特定の業務ドメインを示す業務モデルの名称であるドメイン特化業務名との対応関係を示す予め設定された第4ルールが記述された第4ルールテーブルから、前記一般業務モデルと一致する前記組み合わせを検索し、検索された前記ドメイン特化業務名を前記一般業務モデルに付与することを特徴とする。
【0019】
本発明のリバースエンジニアリング支援方法は、情報処理システムに使用されるソースプログラムに記述された業務仕様の抽出を行い、前記ソースプログラムの解析を支援するリバースエンジニアリング支援装置を動作させる方法であり、処理機能抽出部が、前記ソースプログラムのソースコードを構成するコードから、前記コードの種類、コードの組み合わせ及びコードの配置順序と、予め設定した処理機能を示す単位プログラムとの対応関係が予め設定された第1ルールに従い、前記ソースプログラムのソースコードから、前記処理機能に対応する単位プログラムを抽出する過程と、処理機能統廃合部が、前記単位プログラムの処理機能の種類、組み合わせ及び配置の順番と、前記単位プログラムの配置の順番の変更、統合及び廃棄を示す統廃合処理との対応関係を予め設定した第2ルールに従い、前記ソースプログラムにおける前記単位プログラムの配置順の変更、統合及び廃棄の統廃合処理を行い、統廃合処理の結果として得られた単位プログラムを物理モデルとして出力する過程とを有することを特徴とする。
【0020】
本発明のプログラムは、情報処理システムに使用されるソースプログラムに記述された業務仕様の抽出を行い、前記ソースプログラムの解析を支援するリバースエンジニアリング支援装置をコンピュータに実行させるプログラムであり、処理機能抽出部が、前記ソースプログラムのソースコードを構成するコードから、前記コードの種類、コードの組み合わせ及びコードの配置順序と、予め設定した処理機能を示す単位プログラムとの対応関係が予め設定された第1ルールに従い、前記ソースプログラムのソースコードから、前記処理機能に対応する単位プログラムを抽出する処理と、処理機能統廃合部が、前記単位プログラムの処理機能の種類、組み合わせ及び配置の順番と、前記単位プログラムの配置の順番の変更、統合及び廃棄を示す統廃合処理との対応関係を予め設定した第2ルールに従い、前記ソースプログラムにおける前記単位プログラムの配置順の変更、統合及び廃棄の統廃合処理を行い、統廃合処理の結果として得られた単位プログラムを物理モデルとして出力する処理とをコンピュータに実行させるためのプログラムである。
【発明の効果】
【0021】
この発明によれば、情報処理システムに使用されるソースプログラムから、第1ルールにより処理機能に対応したコードを単位プログラムとして抽出するため、予め設定した一定の大きさの粒度に分割することができ、かつプログラムを構成する各コードの処理機能毎に単位プログラムを抽出するため、プログラムを従来に比較してより粒度の細かな物理単位に分割することができ、物理モデルから業務モデルを抽出する際に、より詳細なドメインに特化した分類で業務モデルの抽出を行うことが可能となる。
また、この発明によれば、第1のルールにより抽出した単位プログラムを、第2ルールにより処理機能に対応させた統廃合処理を行うことにより、異なる位置に配置されている統合可能な単位プログラムの統廃合による整理を行うことができ、異なる配置にあり同一の処理を行う無駄に配置された単位プログラムを無くし、機能処理として整理された状態で物理モデルの抽出を行うことができ、業務仕様の改革及び改善を効率的に行うことが可能となる。
【図面の簡単な説明】
【0022】
【図1】この発明の一実施形態によるリバースエンジニアリング支援装置の構成例を示す図である。
【図2】ソースコードから単位プログラムを抽出する際に用いられる第1ルールが記述された第1ルールテーブルの概要を説明する図である。
【図3】単位プログラムを統廃合して物理モデルを生成する際に用いられる第2ルールが記述された第2ルールテーブルの概要を説明する図である。
【図4】物理モデルから一般業務モデルを抽出した際に出力される第3出力テーブルの構成を示す図である。
【図5】一般業務モデルに対してドメイン特化業務名を付加する際に用いる第4ルールが記述された第4ルールテーブルの概要を説明する図である。
【図6】物理モデル及び業務モデルの抽出対象のソースプログラムの一例を示す図である。
【図7】処理機能抽出部11がソースプログラムのソースコードのプログラムを、抽出した単位プログラムに置き換えた単位プログラムのグラフである単位プログラムグラフの構成の一例を示す図である。
【図8】図7における単位プログラムグラフにおける単位プログラムを統廃合して生成した物理モデルによる物理モデルグラフを示す図である。
【図9】物理モデルグラフにおける物理モデルIDと、業務モデルIDと、各業務モデルの業務モデル名との対応を示す図である。
【図10】物理モデルグラフにおける物理モデルIDと、業務モデルIDと、業務モデルに付与されたドメイン特化業務名との対応を示す図である。
【図11】従来例の業務仕様抽出支援システムの抽出処理を説明するために用いるソースプログラムの構成を示す図である。
【図12】従来例の業務仕様抽出支援システムにより抽出された業務モデルの構成を示す図である。
【図13】従来の物理モデル及び業務モデルの抽出における問題点を説明する図であり、物理モデルのグラフを示している。
【発明を実施するための形態】
【0023】
以下、図面を参照して、本発明の実施の形態について説明する。図1は、この発明の一実施形態によるリバースエンジニアリング支援装置の構成を示す概略ブロック図である。
図1において、本実施形態によるリバースエンジニアリング支援装置は、ソースコード入力部10、処理機能抽出部11、処理機能統廃合部12、業務モデル特定部13、結果出力部14、処理記憶部15、第1ルール記憶部16、第2ルール記憶部17、第3ルール記憶部18及び第4ルール記憶部19を備えている。
ソースコード入力部10は、外部装置から物理モデル及び業務モデルを抽出する解析対象のソースプログラムを入力し、処理記憶部15に書き込んで記憶させる。
【0024】
第1ルール記憶部16には、適切な大きさの粒度にて物理モデルを抽出するために用いる第1ルールを定義する第1ルールテーブルが記憶されている。この第1ルールテーブルには、コードの種類と、そのコードの組み合わせと、そのコードの配置とに対応し、各コードの組み合わせによる処理機能を示す単位プログラムとの対応関係が示されている。第1ルールに記述されたルールと一致するコードの組み合わせが単位プログラムとして定義される。単位プログラムとしては、ソースコードの構造であるプログラム中のループ、条件式、外部入出力、代入式などの配置場所とそれぞれのコード関連(組み合わせ)とから、処理機能に対応付けられている。
ここで、本実施形態において、処理機能としては、例えばデータベース等で用いられる集合を操作する関係代数などにより実行される「選択」、「集約」、「和」、「射影」、…など、また他に「検索」、「選択」、「登録」などの機能を示す語彙を予め設定して用いることにより、これらの機能を処理するプログラム単位を単位プログラムと定義している。
【0025】
図2は、ソースコードから単位プログラムを抽出する際に用いられる第1ルールが記述された第1ルールテーブルの概要を説明する図である。図2(a)は、第1ルールの例として、「選択」の処理機能の物理モデルと、「集約」の処理機能の物理モデルとの各々に対応させるための、プログラム(ソースコード)中のループ、条件式、外部入出力、代入式などの配置場所(配置の順番)及びそれぞれのコードの関連が記載された、すなわちコードの種類、コードの組み合わせ及びコードの配置と、このコードの組み合わせによる処理機能を示す単位プログラムとの対応関係が第1ルールとして第1ルールテーブルとして記述されている。図2(b)には、第1ルールの説明のために用いるソースコードのテキストファイルを示すものである。図2(c)は、抽出された結果として出力される単位プログラムの例を示す第1出力テーブルである。
【0026】
この第1出力テーブルは、ソースプログラムから抽出された単位プログラム毎に付与されたプログラムIDと、このプログラムIDに対応した単位プログラムの処理機能の種類、制約条件、単位プログラムに対する入力、単位プログラムからの出力とから構成されている。ここで、制約条件は、単位プログラム毎の抽出条件に対応して設定されており、例えば図2(c)の場合、処理機能「選択」の抽出条件に対して「B.状態(B[i].joutai)==入荷済み(NYUUKA−ZUMI)」が設定され、処理機能「集約」の抽出条件に対して「B1.在庫場所(B1[i].zaikoBasho)、B1.商品コード(B1[i].shohinCode)」が設定されている。すなわち、制約条件は、比較する条件節内に記載された条件式、あるいは条件式内で比較される変数のいずれかである(後述されるドメイン特化業務名を付加する際には双方が物理モデルから抽出される)。
【0027】
図2(a)において、処理機能「選択」は、ソースコードからの単位プログラムとしてのコードの組み合わせの抽出条件として「変数と定数とを比較する条件節内に代入式があり、代入処理が行われている」こと、…などの複数の抽出条件が設定されている。また、処理機能「選択」は、抽出結果として、入力(条件節外で出力オブジェクトに代入しているオブジェクト)、出力(条件節内で出力しているオブジェクト)及び制約条件として条件式を出力するように設定されている。
【0028】
また、図2(a)において、処理機能「集約」は、ソースコードからの単位プログラムとしてのコードの抽出条件として「ループ内で以下の条件を満たす場合:”変数!=変数”を条件式とする条件節内に代入式があり、代入処理が行われ、かつ条件節の外部に代入式があり、代入処理が行われている」…などの複数の抽出条件が設定されている。また、図2(c)の第1出力テーブルに示されているように、処理機能「集約」は、抽出結果として、入力(ループ内で入力されているオブジェクト)、出力(条件節内で出力されているオブジェクト)及び制約条件として条件式内で比較される変数を出力するように設定されている。
処理機能抽出部11は、処理記憶部15から解析対象のソースコードを読み込み、第1ルールに従って、処理機能の機能毎の物理モデルを抽出する。
【0029】
第2ルール記憶部17には、プログラムの処理機能の並び順により、単位プログラムの処理機能に対応して、1つまたは複数の単位プログラムからなる物理モデルに統廃合し、ソースコードからの物理モデルの抽出処理を行うために用いる第2ルールを定義する第2ルールテーブルが記憶されている。この第2ルールテーブルには、プログラムの配列順とプログラムの組み合わせに対応して、物理モデルとの対応関係が示されている。
【0030】
図3は、単位プログラムを統廃合して物理モデルを生成する際に用いられる第2ルールが記述された第2ルールテーブルの概要を説明する図である。図3(a)は、第2ルールの例として、プログラムの配列及び処理機能(選択、集約及び和)により、単位プログラムを統廃合処理して、物理モデルを生成するためのルールの一例が記載されている。
図3(b)には、第1ルールにより処理機能抽出部11が抽出した出力結果のテーブルの一例を示す図である。
図3(c)は、第2ルールにより統廃合処理の結果出力される物理モデルの構成を示すテーブルの図である。物理モデルは、物理モデルIDに対応し、統廃合されたプログラムIDと、初期機能と、制約条件と、入力及び出力のオブジェクトとから構成されている。ここで、物理モデルの制約条件は、統廃合したプログラムにおける制約条件が反映される。また、物理モデルの入力及び出力に関しては、それぞれ統廃合のプログラムの並び順に基づき、各プログラムの入力及び出力のオブジェクトに対応して再設定される。
【0031】
図3(a)において、第2ルールとして、「処理機能”選択”のプログラムは、一つ前のプログラムの処理機能が「集約」以外の場合、配列の順番を入れ替える」、「連続する”選択”は一つの”選択”にまとめて、制約条件をアンド(論理積演算)で繋げる」、「連続する”和”は一つの”和”にまとめる」、…などのルールが記載されている。
処理機能統廃合部12は、第2ルールに従い、各処理機能のプログラムを、プログラムの配列順及び組み合わせに対応して統廃合し、物理モデルの生成を行う。
【0032】
第3ルール記憶部18には、物理モデルの処理機能の並び順と組み合わせとにより、1つまたは2つの物理モデルからなる一般業務モデルに対応させる処理を行うために用いる第3ルールを定義する第3ルールテーブルが記憶されている。この第3ルールテーブルには、物理モデルの配列順と物理モデルの組み合わせに対応して、一般業務モデルの業務名との対応関係が示されている。
【0033】
図4は、物理モデルに対して一般業務モデルの業務名(一般業務モデル名)を付加する際に用いる、上述した第3ルールが記述された第3ルールテーブルの概要を説明する図である。
図4(a)は、第3ルールテーブルの構成を示すものであり、物理モデルの処理機能及び配置(並び順)の順み合わせと、この組み合わせに対応する一般業務モデル名との対応の一例が示されている。
図4(b)は、物理モデルから一般業務モデルを抽出した際に出力される第3出力テーブルの構成を示す図である。この図4(b)は、業務モデルを識別する業務モデルIDに対応して、業務モデルIDの示す業務モデルに対応する物理モデルを示す物理モデルIDと、物理モデルIDの示す物理モデルを構成する単位プログラムを示すプログラムIDと、物理モデルIDが示す物理モデルの処理機能と、物理モデルIDが示す物理モデルの制約条件と、物理モデルに入力されるオブジェクトと、物理モデルから出力されるオブジェクトと、この業務モデルの一般業務名との対応を示している。
業務モデル特定部13は、第3ルールに従い、各物理モデルを、物理モデルの配列順及び組み合わせに対応して統合し、一般業務モデルの生成を行う。
【0034】
第4ルール記憶部18には、一般業務モデルの業務名、処理対象、制約条件と、ドメイン特化業務名と対応関係を示し、一般業務モデルの処理内容に応じてドメイン特化業務名を付与するための第4ルールを定義する第4ルールテーブルが記憶されている。
【0035】
図5は、一般業務モデルに対してドメイン特化業務名を付加する際に用いる第4ルールが記述された第4ルールテーブルの概要を説明する図である。
図5(a)は、第4ルールテーブルの構成を示すものであり、一般業務名、処理対象、制約条件の組み合わせと、この組み合わせに対応するドメイン特化業務名との対応の一例が示されている。
図5(b)は、第4ルールによる処理結果として出力される結果テーブルを示す図である。一般業務モデルの業務デルID毎に、各業務モデルを構成する物理モデルの物理モデルIDと、物理モデルに統廃合されたプログラムのプログラムIDと、物理モデルの制約条件、物理モデルが入力及び出力するオブジェクトと、業務モデルIDのドメイン特化業務名との対応が記載されたテーブルの図である。
処理機能統廃合部12は、第2ルールに従い、一般業務モデルの処理対象のドメインに対応して、ドメイン特化業務名を各一般業務モデルに対して付与する処理を行う。
【0036】
<処理機能抽出処理>
次に、図1、図2、図6及び図7を用いて、処理機能抽出部11が行う処理機能抽出処理について説明する。
処理機能抽出部11は、ソースコード入力部10が処理記憶部15に書き込んで記憶させたソースプログラムを読み出す。
図6は、物理モデル及び業務モデルの抽出対象のソースプログラムとオブジェクト及びソースプログラム間の入力関係の一例を示す図である。このソースプログラムは、プログラムPGM−1、PGM−2、PGM−3、PGM−4、PGM−5、PGM−6、PGM−7及びPGM−8から構成され、初期入力オブジェクトとしてファイルFILE−A、FILE−D及びFILE−Gを読み込み、最終出力オブジェクトとしてFILE−Kを出力する。
【0037】
そして、処理機能抽出部11は、ソースプログラムにおける各PGMのソースコードから、ループ、条件式、外部入出力、代入式などのコードの種類、コードの配置を示す第1ルールパラメータを抽出する。この第1パラメータ抽出の際、処理機能抽出部11は、ソースプログラムに入力されるオブジェクトを処理する順番に、第1ルールパラメータの抽出処理を行う。すなわち、初期入力オブジェクトが入力されるプログラムから順次処理を開始し、そのプログラムから出力される出力オブジェクトが、入力オブジェクトとして入力されるプログラムの順に、第1ルールパラメータの抽出を行う。
例えば、処理機能抽出部11は、FILE−Aを入力するプログラムPGM−1から抽出処理を開始し、他のプログラムからの出力と統合処理を行うプログラムPGM−6において一旦停止し、ソースプログラムに入力される他のFILE−Dを処理するプログラムPGM−3から抽出処理を再開する。
【0038】
同様に、処理機能抽出部11は、他のプログラムからの出力と統合処理を行うプログラムPGM−5において一旦停止し、ソースプログラムに入力される他のFILE−Gを処理するプログラムPGM−5から抽出処理を再開し、このとき、プログラムPGM−5がプログラムPGM−4から出力されるオブジェクト(FILE−F)を入力していることを検出し、プログラムPGM−5への入力をFILE−FとFILGとして、プログラムPGM−5からの単位プログラムの抽出を行う。
【0039】
次に、処理機能抽出部11は、PGM−6に入力されるオブジェクトであるFILE−C及びFILE−Hを出力するプログラムPGM−2及びPGM−5の抽出処理が終了したことを検出すると、FILE−C及びFILE−Hを入力とするプログラムPGM−6に対し、単位プログラムを抽出する処理を行う。
そして、処理機能抽出部11は、プログラムPGM−6からプログラムPGM−8までの各プログラムから、入力及び出力されるオブジェクトを含め、単位プログラムの抽出処理を行う。
【0040】
次に、処理機能抽出部11は、第1ルール記憶部16の第1ルールテーブルにおいて、抽出した第1ルールパラメータに対応するパラーメータを検索し(パターンマッチング処理)、第1ルールパラメータと一致するパラーメータに対応して記憶されている処理機能を抽出し、第1ルールパラメータに対応した処理機能を読み出す。
例えば、プログラムPGM−2が、図2(b)に示すソースコードの場合、ソースコードPは「変数(B[i],joutai)と、定数(NYUUKA−ZUMI)を比較する条件節内(if文節)で代入の処理として代入(B1[j]=B[i])する」構造をしており、ソースコードQは「ループ(while文)内で、変数(oldData.zaikoBasho)!=変数(newData.zaikoBasho)を条件式とする条件節(if文節)内において、代入(C.data1=oldData.data1)しており、同一ループ内の同じ条件式の外部にて代入(oldData=newData)する」構造をしている。
【0041】
したがって、処理機能抽出部11は、ソースコードPから抽出した第1ルールパラメータを抽出条件として、パターンマッチングにより第1ルールテーブルを検索し、一致する抽出条件に対応する処理機能である「選択」を読み出し、処理機能「選択」の単位プログラムとしてプログラムID2を付与する。
同様に、処理機能抽出部11は、ソースコードQから抽出した第1ルールパラメータを抽出条件として、パターンマッチングにより第1ルールテーブルを検索し、一致する抽出条件に対応する処理機能である「集約」を読み出し、処理機能「集約」の単位プログラムとしてプログラムID2を付与する。
【0042】
すなわち、処理機能抽出部11は、プログラムPGM−2のソースコードと、第1ルールとのパターンマッチングにより、プログラムPGM−2が、処理機能「選択」及び集約から構成されており、それぞれ「”状態==入荷済み”という条件によりデータを”選択”する」という処理機能「選択」の単位プログラムと、「その”選択”された結果を”在庫場所”と”商品コード”とにより”集約”する」という処理機能「集約」の単位プログラムとから構成されていることを検出し、処理機能単位にソースコードを構成するプログラムを分割している。このプログラムを処理機能単位に分割することにより、ソースプログラムから、従来に比較してより細かく、かつ一定の粒度により、後述する物理モデルを抽出することが可能となる。
【0043】
そして、処理機能抽出部11は、処理結果として、図3(b)に示す、ソースプログラムから抽出し単位プログラム毎に付与されたプログラムIDと、このプログラムIDに対応した単位プログラムの処理機能の種類、制約条件、単位プログラムに対する入力、単位プログラムからの出力とからなる第1出力テーブルを、処理記憶部15に書き込んで記憶させる。
【0044】
次に、図7は、処理機能抽出部11がソースプログラムのソースコードのプログラムを、抽出した単位プログラムに置き換えた単位プログラムのグラフである単位プログラムグラフの構成の一例を示す図である。
すなわち、処理機能抽出部11は、図6に示すソースプログラムのグラフを、単位プログラムの抽出結果に対応させた図7に示す単位プログラムグラフの関係として図3(b)を生成し、処理記憶部15に書き込んで記憶させる。
【0045】
<処理機能統廃合処理>
次に、図1、図3、図7及び図8を用いて、処理機能抽出部11が行う処理機能抽出処理について説明する。図8は、図7における単位プログラムグラフにおける単位プログラムを統廃合して生成した物理モデルによる物理モデルグラフを示す図である。
処理機能統廃合部12は、処理機能抽出部11が処理記憶部15に書き込んで記憶させた図3(b)に示す第1出力テーブルを読み出す。また、処理機能統廃合部12は、第2ルール記憶部17に記憶されている第2ルールテーブルを読み出す。
【0046】
次に、処理機能統廃合部12は、図8の単位プログラムグラフにおける単位プログラムの配列と、第1出力テーブルにおける各単位プログラムの処理機能の記述とから、ソースプログラムに入力されるオブジェクトから順番に、単位プログラムの配列順(並び順)と、単位プログラムの機能の組み合わせと等からなる第2ルールパラメータを抽出する。
ここで、処理機能統廃合部12は、初期入力オブジェクトが入力される単位プログラムから順次処理を開始し、その単位プログラムから出力される出力オブジェクトが、入力オブジェクトとして入力される単位プログラムの順に、第2ルールパラメータの抽出を行う。
そして、処理機能統廃合部12は、第1出力テーブルから抽出された第2ルールパラメータと、第2ルールテーブルに記述された第2ルールにおける各ルールに記述されたパラーメータとマッチングすることにより(一致する第2ルールパラメータに一致するパラメータが記載されたルールを検索し)、第2ルールパラメータと一致したルールに基づいた統廃合の処理を行う。このとき、処理機能統廃合部12は、第2ルールに記述された順番に、ルールに基づいた統廃合処理を行う。
【0047】
例えば、処理機能統廃合部12は、図7に示す単位プログラムの処理順番において、処理機能「選択」のプログラムID7の前に配置された処理機能「選択」のプログラムID3及びID4の間に、処理機能「集約」の単位プログラムが配置されておらず、第2ルールにおける「”選択”は、一つ前の処理機能が”集約”以外の場合、順番を入れ替える」とするルールに対応することを検出する。
そして、処理機能統廃合部12は、プログラムID4及びID5の各々の配列位置の次の配列位置にプログラムID7「選択」を配置し、プログラムID6及びプログラムID8の間にあるプログラムID7「選択」を削除(廃棄)する。
【0048】
次に、処理機能統廃合部12は、プログラムID1及びID2の単位プログラムが双方ともに処理機能「選択」であり、第2ルールにおける「連続する”選択”は一つの”選択”にまとめ、制約条件をアンドで繋げる」とするルールに対応することを検出する。
そして、処理機能統廃合部12は、処理機能「選択」のプログラムID1及びID2の単位プログラムを、処理機能「選択」の物理モデルとして統合し、識別情報として物理モデルID1を付与する。
【0049】
同様に、処理機能統廃合部12は、処理機能「選択」のプログラムID3、ID4及びID7の単位プログラムも、第2ルールにおける「連続する”選択”は一つの”選択”にまとめ、制約条件をアンドで繋げる」とするルールに対応することを検出する。
そして、処理機能統廃合部12は、プログラムID3、ID4及びID7の単位プログラムの統廃合処理を行い、処理機能「選択」の物理モデルとして統合し、識別情報として物理モデルID3を付与する。
【0050】
また、処理機能統廃合部12は、処理機能「選択」のプログラムID5及びID7の単位プログラムも、第2ルールにおける「連続する”選択”は一つの”選択”にまとめ、制約条件をアンドで繋げる」とするルールに対応することを検出する。
そして、処理機能統廃合部12は、プログラムID5(処理機能”選択”)及びID7の単位プログラムの統廃合処理を行い、処理機能「選択」の物理モデルとして統合し、識別情報として物理モデルID3を付与する。
【0051】
次に、処理機能統廃合部12は、処理機能「和」のプログラムID5(処理機能”和”)及びID6が連続していることより、第2ルールにおける「連続する”和”は一つの”和”にまとめる」とするルールに対応することを検出する。
そして、処理機能統廃合部12は、プログラムID5(処理機能”和”)及びID6の単位プログラムの統廃合処理を行い、処理機能「和」の物理モデルとして統合し、識別情報として物理モデルID5を付与する。
【0052】
また、処理機能統廃合部12は、処理機能「集約」のプログラムID2及びID8の各々を、それぞれ処理機能「集約」の物理モデルとし、識別情報として物理モデルID2、ID6を付与する。
上述したように、処理機能統廃合部12は、処理機能抽出部11の抽出した単位プログラムを、図7に示す単位プログラムグラフと図3(c)に示す第1出力テーブルとを参照することにより、第2ルールに従って機能処理の種類とその配列順とにより統廃合して生成した物理モデルを、図8に示す物理モデルの配列を示す物理モデルグラフに対応する第2出力テーブル(図3(c))を生成し、処理記憶部15に書き込んで記憶させる。
【0053】
すなわち、処理機能統廃合部12は、物理モデル毎に、物理モデルを識別する物理モデルIDと対応し、物理モデルIDの示す物理モデルとして構成された単位プログラムのプログラムID、物理モデルの処理機能、制約条件、物理モデルに入力されるオブジェクト、物理モデルから出力されるオブジェクトとが対応付けた、図3(c)に示す第2出力テーブルを、処理記憶部15に書き込んで記憶させる。
また、処理機能統廃合部12は、統廃合した結果として得られる物理モデルの入力及び出力されるオブジェクトを、統廃合する単位プログラムの入力及び出力されるオブジェクトに対応して、統廃合された物理モデル自身及び前段及び後段の物理モデルの入力及び出力されるオブジェクトを変更する。
【0054】
<業務モデル特定処理>
次に、図1、図3、図4、図5及び図9を用いて、業務モデル特定部14が行う業務モデル特定処理について説明する。
業務モデル特定部13は、処理機能統廃合部12が処理記憶部15に書き込んで記憶させた図8の物理モデルグラフの構成に対応する図3(c)に示す第2出力テーブルを読み出す。また、処理機能統廃合部12は、第3ルール記憶部18に記憶されている図4(a)に示す第3ルールテーブルを読み出す。
【0055】
次に、業務モデル特定部13は、図3(c)に示す第2出力テーブルから、各物理モデルの処理機能の種類と物理モデルの並び順を、第3ルールテーブルに記述された第3ルールとマッチングすることにより、物理モデルの処理機能の種類とその並び順(配置順)と(第3ルールパラメータ)が一致するルールを検索し、この一致するルールに対応して記憶されている一般業務モデル名を第3ルールから抽出する。
ここで、業務モデル特定部13は、初期入力オブジェクトが入力される物理モデルから順次処理を開始し、その物理プログラムから出力される出力オブジェクトが、入力オブジェクトとして入力される物理モデルの順に、順次第3ルールパラメータの抽出を行う。
そして、業務モデル特定部13は、連続する各物理モデルの単位プログラムグラフにおける単位プログラムの配列(並び順)と、第1出力テーブルにおける各単位プログラムの処理機能の記述とから、図8の物理モデルグラフが示すソースプログラムに入力されるオブジェクトから順番に、一般業務モデルの名称である一般業務モデル名の付与を、図9に示す物理モデルグラフに示すように行う。
図9は、物理モデルグラフにおける物理モデルIDと、業務モデルIDと、各業務モデルの業務モデル名との対応を示す図である。
【0056】
例えば、図4(a)に示す第3ルールテーブルにおいて、物理モデルID1の物理モデルの処理機能が「選択」であり、物理モデルID2の物理モデルの処理機能が「集約」であり、物理モデルID1及びID2の物理モデルが、処理機能「和」の物理モデルの前段において連続して配置されているため、物理モデルID1及びID2の物理モデルは、一般業務モデルの「明細集計」に該当する(第3ルールの一例)。
このため、業務モデル特定部13は、第3ルールに従い、物理モデルID1及びID2の物理モデルを統合し、一つの一般業務モデルとして、「明細集計」を名称として付与するとともに、識別情報として業務モデルID1を付与する。
【0057】
また、物理モデルID3及びID4の物理モデルは、それぞれ単独で和の前段に配置され、処理内容が「選択」であるため、一般モデルの「情報抽出」に該当する(第3ルールの一例)。
このため、業務モデル特定部13は、第3ルールに従い、物理モデルID3及びID4の物理モデルの各々に対し、一般業務モデルとして、「情報抽出」を名称として付与するとともに、物理モデルID3及びID4の物理モデルの各々に対して識別情報として業務モデルID2、ID3を付与する。
【0058】
また、物理モデルID5及びID6の物理モデルの各々は、物理モデルの配置が連続しており、かつ処理機能「和」と処理機能「集約」との順番であるため、一般業務モデルの「全集計」に該当する(第3ルールの一例)。
このため、業務モデル特定部13は、第3ルールに従い、物理モデルID5及びID6の物理モデルを統合し、一つの一般業務モデルとして、「全集計」を名称として付与するとともに、物理モデルID3及びID4の物理モデルを統合した一般業務モデルに対して識別情報として業務モデルID4を付与する。
【0059】
上述したように、業務モデル特定部13は、各物理モデルの統合等の処理を行い、各物理モデルに対して一般業務モデル名及び業務モデルIDを付与し、図3(c)に示す第2出力テーブルの記述に基づいて、図4(b)に示す第3出力テーブルを生成し、生成した第3出力テーブルを処理記憶部15に書き込み記憶させる。
ここで、第3出力テーブルは、各一般業務モデルの業務モデルIDと、この業務モデルIDの示す一般業務モデルに対応する物理モデルの物理モデルID、物理モデルを構成する単位プログラムのプログラムID、物理モデルの処理機能、物理モデルの制約条件、物理モデルに入力されるオブジェクト、物理モデルが出力するオブジェクトとからなるテーブルである。
【0060】
次に、業務モデル特定部13は、自身が処理記憶部15に書き込んで記憶させた図4に示す第3出力テーブルと、第4ルール記憶部19に記憶されている図5(a)に示す第4ルールテーブルを読み出す。
そして、業務モデル特定部13は、図5(a)に示す第4ルールテーブルに記述された第4ルールに従い、すなわち第4ルールと第3出力テーブルの記述とのマッチングを行い、一般業務モデル名、処理対象及び制約条件との組み合わせとにより、一般業務モデル毎に、ドメイン特化業務名を付与する処理を行う。
【0061】
図10は、物理モデルグラフにおける物理モデルIDと、業務モデルIDと、業務モデルに付与されたドメイン特化業務名との対応を示す図である。
上述したように、業務モデル特定部13は、この図9に示すように、物理モデルを一般業務モデルである業務モデルに変換し、この一般業務モデルに対して一般業務モデル名を付与する。
また、業務モデル特定部13は、統合した結果として得られる一般業務モデルの入力及び出力されるオブジェクトを、統廃合する物理モデルの入力及び出力されるオブジェクトに対応して、統合された一般業務モデル自身及び前段及び後段の一般業務モデルの入力及び出力されるオブジェクトを変更する。
【0062】
次に、業務モデル特定部13は、付与した一般業務モデル名と、この一般業務モデルの処理対象と、この一般業務モデルの制約条件とにより、第4ルールに従い、各一般業務モデルに対してドメイン特化業務名を付与する処理を行う。
すなわち、業務モデル特定部13は、第4ルールテーブルから、一般業務モデルの一般業務モデル名と、この一般業務モデルの処理対象と、この一般業務モデルの制約条件と一致するルールを検索し、検索されたルールに対応して記憶されているドメイン特化業務名を、検索対象とした一般業務モデルに付与する。
【0063】
例えば、業務モデル特定部13は、第3出力テーブルから、業務モデルID1の一般業務モデルが一般業務モデル名として「明細集計」であり、処理対象が入荷情報であり、かつ制約条件が「入荷日==本日」であることを検出する。
そして、業務モデル特定部13は、業務モデルID1の一般業務モデル名、処理対象及び制約条件の組み合わせと、図5(a)に示す第4ルールとのマッチングを行う。
マッチングにおいて、業務モデル特定部13は、一般業務モデル名が「明細集計」であり、処理対象が入荷情報であり、かつ制約条件に「入荷日==本日」である組み合わせを第4ルールにおいて検出する。
この結果、業務モデル特定部13は、業務モデルID1の一般業務モデル名、処理対象及び制約条件の組み合わせと、第4ルールにて一致した組み合わせに対応するドメイン特化業務名である「当日入荷集計」を読み出し、業務モデルID1に付与する。ここで、処理対象の抽出は、制約条件に用いられているデータの名称から推定、例えば上述の場合、入荷日を示すデータの名称から入荷についての処理であることを推定する。
【0064】
また、業務モデル特定部13は、第3出力テーブルから、業務モデルID2の一般業務モデルが、一般業務モデル名が「情報抽出」であり、処理対象が在庫抽出情報であり、制約条件にα倉庫が含まれていることを検出する。
そして、業務モデル特定部13は、業務モデルID2の一般業務モデル名、処理対象及び制約条件の組み合わせと、第4ルールとをマッチングする。
この結果、業務モデル特定部13は、業務モデルID2の一般業務モデル名、処理対象及び制約条件の組み合わせと、第4ルールにて一致した組み合わせに対応するドメイン特化業務名である「α倉庫在庫抽出」を読み出し、業務モデルID2に付与する。
【0065】
また、業務モデル特定部13は、第3出力テーブルから、業務モデルID3の一般業務モデルが、一般業務モデル名が「情報抽出」であり、処理対象が在庫抽出情報であり、制約条件に「入荷日>本日−10営業日」が含まれていることを検出する。
そして、業務モデル特定部13は、業務モデルID3の一般業務モデル名、処理対象及び制約条件の組み合わせと、第4ルールとをマッチングする。
この結果、業務モデル特定部13は、業務モデルID3の一般業務モデル名、処理対象及び制約条件の組み合わせと、第4ルールにて一致した組み合わせに対応するドメイン特化業務名である「最新在庫抽出」を読み出し、業務モデルID3に付与する。
【0066】
また、業務モデル特定部13は、第3出力テーブルから、業務モデルID4の一般業務モデルが一般業務モデル名として「全集計」であり、処理対象が在庫情報であり、かつ制約条件が「在庫場所、商品コード」であることを検出する。
そして、業務モデル特定部13は、業務モデルID4の一般業務モデル名、処理対象及び制約条件の組み合わせと、図5(a)に示す第4ルールとのマッチングを行う。
マッチングにおいて、業務モデル特定部13は、一般業務モデル名が「全集計」であり、処理対象が在庫情報であり、かつ制約条件に「在庫場所、商品コード」である組み合わせを第4ルールにおいて検出する。
この結果、業務モデル特定部13は、業務モデルID4の一般業務モデル名、処理対象及び制約条件の組み合わせと、第4ルールにて一致した組み合わせに対応するドメイン特化業務名である「全在庫集計」を読み出し、業務モデルID4に付与する。
【0067】
そして、業務モデル特定部13は、図4における全ての一般業務モデルに対するドメイン特化業務名の付与が終了すると、図4に示す第3出力テーブルに対し、各業務モデルに対して付与したドメイン特化業務名を付加した図5(b)に示す第4出力テーブルを生成し、処理記憶部15に書き込んで記憶させる。
また、業務モデル特定部13は、図9の物理モデルグラフに対して、各物理モデル及び業務モデルの対応関係と、業務モデル及び業務モデルに付与されたドメイン特化業務名の対応関係を示す記述を付加した図10の物理モデルグラフを生成し、処理記憶部15に書き込んで記憶させる。
【0068】
<結果出力処理>
そして、結果出力部14は、ソースプログラムからの物理モデル及び業務モデルの抽出処理が終了すると、図5(b)の第4出力テーーブルと、図10のドメイン特化業務名が付与された物理モデルグラフとを読み出し、図示しない表示装置に対して表示する。
【0069】
上述したように、本実施形態においては、ソースコードにおけるコードの種類とその組み合わせと配置順等の組み合わせと、その組み合わせにより実現される処理機能との対応を示す第1ルールにより、ソースコードを従来に比較してより細かく一定の粒度の単位プログラムに分割するため、単位プログラムの統廃合処理、すなわちソースコードにおける処理を機能的に整理し、リバースエンジニアリングが行いやすい物理モデルを抽出することができる。
【0070】
また、本実施形態においては、第2ルールにより、ソースコードを処理機能毎に分割した単位プログラムの配置を、ソースプログラムの動作を変更させない条件下により変更し、かつ連続する同一の処理機能を有する単位プログラムの統合を行う統廃合処理を行い、処理機能に対応した物理モデルの抽出を行うため、ソースコードにおいて異なる位置に無駄に設けられた同一の処理機能の単位プログラムを統合し、全体のソースコードを表現する物理モデルを、ソースコードの機能を整理した状態において抽出することができ、かつ業務的な意味をわかりやすくし、業務モデルを抽出する際に、ドメインモデルである第3ルールとのマッチングが容易に行える。
【0071】
また、本実施形態においては、第3ルールの物理モデルの種類及び配置順の組み合わせにより、一つあるいは複数の物理モデルを一般業務モデルに変換するため、一般業務モデルが常に一定の条件で抽出することができ、従来のように、物理モデルと業務モデルとの対応が異なることなく、予め設定した第3ルールに従った均一な対応関係にある物理モデルと業務モデルとを、抽出対象のソースコードから抽出させることができる。
【0072】
また、本実施形態においては、物理モデルに処理機能の名称(選択、集約、和、射影など)を付与し、かつ一般業務モデルの一般業務モデル名と処理対象と制約条件と、第4ルールにおいて一致する一般業務モデル名と処理対象と制約条件とに対応付けられたドメイン特化業務名を読み出し、この一般業務モデル名と処理対象と制約条件一致した一般業務モデルに対して、読み出したドメイン特化業務名を付与するため、従来のように、名称付与の属人性や外部知識の必要性を排除することができ、名称を付与する工程を省くことができ、かつ処理を高速化することができる。
また、本実施形態においては、プログラムを作成する担当者に理解できる物理モデルの名称が付与され、また抽出した業務モデルに対して、システムの改革及び改善を行う作業者に容易に理解できるドメイン特化業務名が付与されるため、業務的な意味を分かり易くし、リバースエンジニアリングの効率を向上させることができる。
【0073】
また、図1におけるソースコード入力部10、処理機能抽出部11、処理機能統廃合部12、業務モデル特定部13、結果出力部14各部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより物理モデル及び業務モデルの抽出処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
【0074】
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【0075】
以上、この発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0076】
10…ソースコード入力部
11…処理機能抽出部
12…処理機能統廃合部
13…業務モデル特定部
14…結果出力部
15…処理機億部
16…第1ルール記憶部
17…第2ルール記憶部
18…第3ルール記憶部
19…第4ルール記憶部
【特許請求の範囲】
【請求項1】
情報処理システムに使用されるソースプログラムに記述された業務仕様の抽出を行い、前記ソースプログラムの解析を支援するリバースエンジニアリング支援装置において、
前記ソースプログラムのソースコードを構成するコードから、前記コードの種類、コードの組み合わせ及びコードの配置順序と、予め設定した処理機能を示す単位プログラムとの対応関係が予め設定された第1ルールに従い、前記ソースプログラムのソースコードから、前記処理機能に対応する単位プログラムを抽出する処理機能抽出部と、
前記単位プログラムの処理機能の種類、組み合わせ及び配置の順番と、前記単位プログラムの配置の順番の変更、統合及び廃棄を示す統廃合処理との対応関係を予め設定した第2ルールに従い、前記ソースプログラムにおける前記単位プログラムの配置順の変更、統合及び廃棄の統廃合処理を行い、統廃合処理の結果として得られた単位プログラムを物理モデルとして出力する処理機能統廃合部と
を有することを特徴とするリバースエンジニアリング支援装置。
【請求項2】
前記物理モデルの処理機能の種類及び配置順序と、前記物理モデルから構成される一般業務モデルとの対応関係を示す予め設定された第3ルールが記述された第3ルールテーブルから、前記処理機能統廃合部から出力される前記物理モデルの処理機能及び順序と一致する前記一般業務モデルを検索し、一致した一般業務モデルを前記物理モデルに対応付ける業務モデル特定部を
さらに有することを特徴とする請求項1に記載のリバースエンジニアリング支援装置。
【請求項3】
前記業務モデル特定部が、前記一般業務モデルの名称、当該一般業務の処理対象及び処理における制約条件の組み合わせと、特定の業務ドメインを示す業務モデルの名称であるドメイン特化業務名との対応関係を示す予め設定された第4ルールが記述された第4ルールテーブルから、前記一般業務モデルと一致する前記組み合わせを検索し、検索された前記ドメイン特化業務名を前記一般業務モデルに付与する
ことを特徴とする請求項2に記載のリバースエンジニアリング支援装置。
【請求項4】
情報処理システムに使用されるソースプログラムに記述された業務仕様の抽出を行い、前記ソースプログラムの解析を支援するリバースエンジニアリング支援装置を動作させるリバースエンジニアリング支援方法において、
処理機能抽出部が、前記ソースプログラムのソースコードを構成するコードから、前記コードの種類、コードの組み合わせ及びコードの配置順序と、予め設定した処理機能を示す単位プログラムとの対応関係が予め設定された第1ルールに従い、前記ソースプログラムのソースコードから、前記処理機能に対応する単位プログラムを抽出する過程と、
処理機能統廃合部が、前記単位プログラムの処理機能の種類、組み合わせ及び配置の順番と、前記単位プログラムの配置の順番の変更、統合及び廃棄を示す統廃合処理との対応関係を予め設定した第2ルールに従い、前記ソースプログラムにおける前記単位プログラムの配置順の変更、統合及び廃棄の統廃合処理を行い、統廃合処理の結果として得られた単位プログラムを物理モデルとして出力する過程と
を有することを特徴とするリバースエンジニアリング支援方法。
【請求項5】
情報処理システムに使用されるソースプログラムにおける業務仕様の抽出を行い、前記ソースプログラムの解析を支援するリバースエンジニアリング支援装置をコンピュータに実行させるプログラムであり、
処理機能抽出部が、前記ソースプログラムのソースコードを構成するコードから、前記コードの種類、コードの組み合わせ及びコードの配置順序と、予め設定した処理機能を示す単位プログラムとの対応関係が予め設定された第1ルールに従い、前記ソースプログラムのソースコードから、前記処理機能に対応する単位プログラムを抽出する処理と、
処理機能統廃合部が、前記単位プログラムの処理機能の種類、組み合わせ及び配置の順番と、前記単位プログラムの配置の順番の変更、統合及び廃棄を示す統廃合処理との対応関係を予め設定した第2ルールに従い、前記ソースプログラムにおける前記単位プログラムの配置順の変更、統合及び廃棄の統廃合処理を行い、統廃合処理の結果として得られた単位プログラムを物理モデルとして出力する処理と
をコンピュータに実行させるためのプログラム。
【請求項1】
情報処理システムに使用されるソースプログラムに記述された業務仕様の抽出を行い、前記ソースプログラムの解析を支援するリバースエンジニアリング支援装置において、
前記ソースプログラムのソースコードを構成するコードから、前記コードの種類、コードの組み合わせ及びコードの配置順序と、予め設定した処理機能を示す単位プログラムとの対応関係が予め設定された第1ルールに従い、前記ソースプログラムのソースコードから、前記処理機能に対応する単位プログラムを抽出する処理機能抽出部と、
前記単位プログラムの処理機能の種類、組み合わせ及び配置の順番と、前記単位プログラムの配置の順番の変更、統合及び廃棄を示す統廃合処理との対応関係を予め設定した第2ルールに従い、前記ソースプログラムにおける前記単位プログラムの配置順の変更、統合及び廃棄の統廃合処理を行い、統廃合処理の結果として得られた単位プログラムを物理モデルとして出力する処理機能統廃合部と
を有することを特徴とするリバースエンジニアリング支援装置。
【請求項2】
前記物理モデルの処理機能の種類及び配置順序と、前記物理モデルから構成される一般業務モデルとの対応関係を示す予め設定された第3ルールが記述された第3ルールテーブルから、前記処理機能統廃合部から出力される前記物理モデルの処理機能及び順序と一致する前記一般業務モデルを検索し、一致した一般業務モデルを前記物理モデルに対応付ける業務モデル特定部を
さらに有することを特徴とする請求項1に記載のリバースエンジニアリング支援装置。
【請求項3】
前記業務モデル特定部が、前記一般業務モデルの名称、当該一般業務の処理対象及び処理における制約条件の組み合わせと、特定の業務ドメインを示す業務モデルの名称であるドメイン特化業務名との対応関係を示す予め設定された第4ルールが記述された第4ルールテーブルから、前記一般業務モデルと一致する前記組み合わせを検索し、検索された前記ドメイン特化業務名を前記一般業務モデルに付与する
ことを特徴とする請求項2に記載のリバースエンジニアリング支援装置。
【請求項4】
情報処理システムに使用されるソースプログラムに記述された業務仕様の抽出を行い、前記ソースプログラムの解析を支援するリバースエンジニアリング支援装置を動作させるリバースエンジニアリング支援方法において、
処理機能抽出部が、前記ソースプログラムのソースコードを構成するコードから、前記コードの種類、コードの組み合わせ及びコードの配置順序と、予め設定した処理機能を示す単位プログラムとの対応関係が予め設定された第1ルールに従い、前記ソースプログラムのソースコードから、前記処理機能に対応する単位プログラムを抽出する過程と、
処理機能統廃合部が、前記単位プログラムの処理機能の種類、組み合わせ及び配置の順番と、前記単位プログラムの配置の順番の変更、統合及び廃棄を示す統廃合処理との対応関係を予め設定した第2ルールに従い、前記ソースプログラムにおける前記単位プログラムの配置順の変更、統合及び廃棄の統廃合処理を行い、統廃合処理の結果として得られた単位プログラムを物理モデルとして出力する過程と
を有することを特徴とするリバースエンジニアリング支援方法。
【請求項5】
情報処理システムに使用されるソースプログラムにおける業務仕様の抽出を行い、前記ソースプログラムの解析を支援するリバースエンジニアリング支援装置をコンピュータに実行させるプログラムであり、
処理機能抽出部が、前記ソースプログラムのソースコードを構成するコードから、前記コードの種類、コードの組み合わせ及びコードの配置順序と、予め設定した処理機能を示す単位プログラムとの対応関係が予め設定された第1ルールに従い、前記ソースプログラムのソースコードから、前記処理機能に対応する単位プログラムを抽出する処理と、
処理機能統廃合部が、前記単位プログラムの処理機能の種類、組み合わせ及び配置の順番と、前記単位プログラムの配置の順番の変更、統合及び廃棄を示す統廃合処理との対応関係を予め設定した第2ルールに従い、前記ソースプログラムにおける前記単位プログラムの配置順の変更、統合及び廃棄の統廃合処理を行い、統廃合処理の結果として得られた単位プログラムを物理モデルとして出力する処理と
をコンピュータに実行させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2012−164148(P2012−164148A)
【公開日】平成24年8月30日(2012.8.30)
【国際特許分類】
【出願番号】特願2011−24258(P2011−24258)
【出願日】平成23年2月7日(2011.2.7)
【特許番号】特許第4820924号(P4820924)
【特許公報発行日】平成23年11月24日(2011.11.24)
【出願人】(000102728)株式会社エヌ・ティ・ティ・データ (438)
【Fターム(参考)】
【公開日】平成24年8月30日(2012.8.30)
【国際特許分類】
【出願日】平成23年2月7日(2011.2.7)
【特許番号】特許第4820924号(P4820924)
【特許公報発行日】平成23年11月24日(2011.11.24)
【出願人】(000102728)株式会社エヌ・ティ・ティ・データ (438)
【Fターム(参考)】
[ Back to top ]