[go: up one dir, main page]

JP2008123254A - Java言語プログラムを用いた大規模業務系の影響分析ツール - Google Patents

Java言語プログラムを用いた大規模業務系の影響分析ツール Download PDF

Info

Publication number
JP2008123254A
JP2008123254A JP2006306422A JP2006306422A JP2008123254A JP 2008123254 A JP2008123254 A JP 2008123254A JP 2006306422 A JP2006306422 A JP 2006306422A JP 2006306422 A JP2006306422 A JP 2006306422A JP 2008123254 A JP2008123254 A JP 2008123254A
Authority
JP
Japan
Prior art keywords
class
information
concrete
destination
java
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006306422A
Other languages
English (en)
Other versions
JP4948126B2 (ja
Inventor
Yoichi Kitagawa
陽一 北川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NIPPON SHOKEN TECHNOLOGY KK
Original Assignee
NIPPON SHOKEN TECHNOLOGY KK
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NIPPON SHOKEN TECHNOLOGY KK filed Critical NIPPON SHOKEN TECHNOLOGY KK
Priority to JP2006306422A priority Critical patent/JP4948126B2/ja
Publication of JP2008123254A publication Critical patent/JP2008123254A/ja
Application granted granted Critical
Publication of JP4948126B2 publication Critical patent/JP4948126B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】本発明の課題は、Java言語プログラムを用いた大規模業務系の保守作業の負担を著しく軽減できるツールを提供することである。
【解決手段】Java言語プログラムのクラスファイルからクラス情報、メソッド情報及び参照先メソッド情報を抽出し、抽出した情報に基づいて、具象クラスID及び具象メソッドIDよりなる関連元具象クラス・メソッドIDと、該関連元具象クラス・メソッドIDの関連先である関連先具象クラス・メソッドIDの組み合わせのペア情報を生成し、所望のクラス・メソッドを指定し、該クラス・メソッドに関連する一連の具象クラス・メソッドを抽出して画面に表示するようにしたJava言語プログラムの分析ツール。
【選択図】図3−5

Description

本発明は、Java(登録商標)言語プログラムの分析ツールに関し、特にJava言語プログラムを用いた大規模業務系の影響分析ツールに関する。なお、Javaは米Sun Microsystems,Incの登録商標である。
例えば証券業務などのような大規模業務系においては、従来、COBOL言語プログラムが一般に用いられている。そして保守効率を上げるために、プログラムは処理目的毎に分類され、階層化された構造を有するのが一般的である。また、プログラムが階層化された構造であることを前提とした構造解析ツール類も充実しており、これらのツールを使うことによって、効率的にシステムの保守を行うことができる。
ところで最近は、大規模業務系の再構築に当たり、使用言語をCOBOLからJavaに置き換える例が増えている。
COBOL言語に比べて、Java言語は生産性、拡張性及び適用性に優れているため、オープンシステムの開発用に広く用いられているが、保守作業効率において後述のような様々な問題があるため、非常に限られた条件の中でしか使用されていないのが実状である。
以下、まずJava言語の概要について述べ、次に大規模業務システムの開発にJava言語プログラムを用いた場合の課題について述べる。
Java言語のプログラムは、複数のクラスの組み合わせにより成り立っている。クラスとは、データと処理とをまとめたものと言える。つまりJava言語では、関連するデータや処理をまとめたクラスという部品を作っておき、それらを自由に組み合わせたり、再利用して複雑なプログラムを作成する。クラスを構成するデータをフィールド、処理をメソッドと言い、フィールドやメソッドをクラスのメンバと称する。
クラスはプログラムコードであり、これを実際にコンピュータで実行するためには、オブジェクトを生成しなければならない。オブジェクトとは、プログラムコードであるクラスが、コンピュータメモリ上に実行可能な状態に存在している場合のクラスに対する呼称である。クラスからオブジェクトを生成することをインスタンス化又はオブジェクト化という。
フィールドとは、クラス内の変数(データ)であり、メソッドとは、データの操作方法(処理)を定義したものである。処理の対象となる値を引数(パラメータ)といい、処理の結果の値のことを戻り値(返り値)という。
Java言語プログラムの拡張性及び適用性が優れている一つの理由は、クラスの継承という仕組みがあるからである。クラスの継承とは、クラスがほかのクラスのメンバを受け継ぐ機能である。例えば、クラスAのメンバをクラスBが受け継ぐことができる。継承する元となるクラスをスーパークラス(親クラス)、継承して作ったクラスをサブクラス(子クラス)という。
またJava言語では、クラスに対するアクセス方法を定義した、インターフェースと称されるものが使用される。インターフェースはクラスと似たものであるが、定数と、後述の抽象メソッドしかメンバになれないところがクラスとは異なる。
クラスは、抽象クラスと具象クラス及びインターフェースに分類される。抽象クラスは、通常のクラスにインターフェースの機能を付加したものであり、具象クラスは、実際のプログラムコードを記述し、インスタンス化可能としたものである。インターフェースと抽象クラスは、そのままではインスタンス化することはできない。つまり、抽象クラス、具象クラス、インターフェースのうちで、オブジェクトコードを生成できるのは具象クラスのみである。
一方メソッドも、抽象メソッドと具象メソッドに分類される。抽象メソッドとは、メソッドの名前、戻り型、引数だけを定義し、ロジック(処理の内容)は定義していないものをいう。この抽象メソッドはインターフェースと、抽象クラスにおいて定義される。具象メソッドは、メソッドの名前、戻り型、引数及びロジックを定義したもので、抽象クラス又は具象クラスで定義される。参照先の具象メソッドを実装メソッドと称し、実装メソッドを有するクラスを実装クラスと称することもある。
次に、Java言語を用いて記述されたプログラムを図1−1を用いて説明する。
図の100,300,400は具象クラス、200はインターフェースの一例を示す。具象クラス100は、Userclassという名前を有する。そのクラスは、usrmdtというメソッドを有する。そのメソッドは、参照先がIStrategyというインターフェースであることを示している。
一方、インターフェース200は、IStrategyという名称を有し、tcという抽象メソッドを含んでいる。
また具象クラス300は、classAという名称を有し、tcという具象メソッドを有する。具象クラス300はオブジェクトを生成しているので実装クラスと称される。具象クラス100は、インターフェース200を介して別の具象クラス300と関連付けられるので、本明細書では、100を関連元クラス、300を関連先クラスという。
図1−2は、図1−1のように記述されたプログラムのクラス間の関係を表すクラス図である。クラス100はインターフェース200を参照し、クラス300はクラス400を参照している。また、クラス300はインターフェース200を継承しているので、500で示す記号を用いて表示される。
図1−3は、オブジェクト同士の関係を示すシーケンス図である。前述のように、具象クラス、抽象クラス及びインターフェースのうちでオブジェクトを生成できるのは具象クラスだけである。この図は、クラス100,300,400のオブジェクト100´,300´,400´の関係を示している。クラス100,300,400のオブジェクトは一般に、別のクラスにより生成される。各オブジェクト100´,300´,400´を生成しているクラスを生成クラスと称し、クラス100,300,400を被生成クラスと称する。
次に、一つのクラスに含まれる情報について説明する。
図1−4は、一つのクラスに含まれる情報とその関連を示す図である。1つのクラスには、クラス情報10、メソッド情報20、データ情報60及びメソッド間の関連を示す情報30が含まれる。
クラス情報10には、クラスID11、クラス名12、スーパークラス名(親クラス名)13、インターフェース名14が含まれる。また、メソッド情報20には、メソッドID21、メソッド名22、メソッドの型(具象タイプ、抽象タイプ)23、引数24及び引数の型25の情報が含まれる。
メソッド間関連情報30としては、メソッド21が参照するメソッド31、参照するメソッドのメソッド名32、参照メソッドの引数のタイプ33が含まれる。参照先メソッド31は、static修飾子のついたメソッド34、インターフェースのメソッド35、コンストラクタという特殊なメソッド36及びその他のメソッド37の4種類に分類される。コンストラクタはオブジェクトの生成のときに自動的に呼び出されるメソッドであり、staticメソッドは、どのオブジェクトでも動作を同じにする特殊なメソッドである。
インターフェース35には、インターフェース名41とメソッド型42の情報が含まれ、その他のクラス37にも同様に、参照先のクラス38とメソッドの型39の情報が含まれる。またstaticメソッド34には、参照先クラス40の情報が含まれる。
当該クラス10でオブジェクトを生成する場合は、そのオブジェクトを生成する対象となったクラス50の情報であるクラス名51が含まれる。
一方、クラス10のフィールドに関する情報60として変数名61、変数を参照する場合の参照先クラス62、変数の型63等の情報が含まれる。
次に、Java言語プログラムを大規模業務系に用いた場合の問題点について述べる。
Java言語は多数のクラスの組み合わせにより成り立っているため、生産性に優れ、また、システムを拡張するのに適した言語でもある。しかしながらシステムを保守する場合には、以下説明するような数々の問題がある。
証券業務システム等の大規模事務系のプログラムにJava言語を用いると、クラス数は、例えば数万個から数10万個、メソッド数は数10万個から数100万個に達する膨大なものとなる。
このようなシステムにおいて、何らかの不具合が発生した場合は、その不具合の原因となったクラスやメソッドを特定しなければならない。また、特定されたクラスやメソッドを修正したときに、影響を受ける一連のクラスやメソッドを把握する必要もある。
また、システムに新たな機能を追加するためにクラスを追加したり、修正する場合も同様に、追加や修正したクラスやメソッドにより影響を受ける一連のクラスやメソッドを把握する必要がある。
このような保守業務の効率化を図るために、COBOL言語を用いた場合と同様に、Java言語を用いたプログラムも、数万〜数10万のクラスは業務の処理目的毎に分類され、階層化された構造とされるのが一般的である。そしてJavaプログラムの保守においては、図1−2に例示したクラス図や、図1−3に例示したシーケンス図を用い、これらにソースコード分析を加えることによってクラスやメソッドを特定したり、特定のクラスやメソッドと関連のある一連のクラスやメソッドを把握している。
しかしながらJava言語プログラムは、不具合の発生したクラス、メソッドを特定したり、特定したクラス、メソッドに関連性のある一連のクラス、メソッドを把握することが困難な構造を有するため、保守業務においてプログラム開発者への負担が非常に大きい。
一つの理由は、従来のツールではメソッド単位の詳細な流れを把握することはできないことによる。
また、図1−3に例示したように、オブジェクト100´,300´,400´の流れを示すシーケンス図も用いられるが、Java言語プログラムでは、具象クラス100,300,400とオブジェクト100´,300´,400´とは同期がとれていない。すなわち、オブジェクト100´は具象クラス300で生成され、オブジェクト300´は具象クラス400で生成されるというように、具象クラスとそのクラスのオブジェクトを生成するクラスとは一般に別々であるため、シーケンス図を用いてもプログラム開発者の負担はそれ程小さくならない。
更に、従来の分析ツールはクラス図、シーケンス図を表示できるとは言え、一画面に表示できるクラス数、オブジェクト数は10数個程度が限界であり、膨大な数のクラス・メソッド関連を把握することはできないため、これもプログラムの保守を困難にする一つの理由となっている。
本発明の目的は、上記のような従来の問題点を解決し、Java言語プログラムを用いた大規模業務システムにおける保守作業の負担を著しく軽減することができるツールを提供することにある。
具体的には、本発明は、クラスの継承によりソースコードプログラム上では隠されたクラスに属する具象メソッドも含めて、具象クラス・メソッド間の関連を表示できるツールを提供することにある。
本発明の他の目的は、インターフェースまたは抽象クラスにより隠蔽された具象クラス・メソッドと、その関連を表示することが可能なツールを提供することにある。
本発明の他の目的は、クラスが機能的に分類され、階層化された構造のプログラムにおいて、ある分類に属する全ての具象クラス・メソッドと、その関連を表示することが可能なツールを提供することにある。
本発明の他の目的は、クラスが機能的に分類され、階層化された構造のプログラムにおいて、所望の具象クラス・メソッドを特定したときに、その特定された具象クラス・メソッドに関連する一連の具象クラス・メソッドを表示できるツールを提供することにある。
本発明の他の目的は、実装済みの資源を基に、リバースエンジニアリングによって設計書を生成し、設計書を保守するコストを大幅に削減すると同時に、設計書と実装の乖離を起こさないようにするツールを提供することにある。
上記の目的を達成するために本発明に係る分析ツールは、Java言語プログラムのクラスファイルからクラス情報、メソッド情報及び参照先メソッド情報を抽出する第1の手段と、抽出したクラス情報、メソッド情報及び参照先メソッド情報に基づいて、具象クラスID及び具象メソッドIDよりなる関連元具象クラス・メソッドIDと、該関連元具象クラス・メソッドIDの関連先である関連先具象クラス・メソッドIDの組み合わせからなるペア情報を生成する第2の手段と、所望のクラス・メソッドを指定し、該クラス・メソッドに関連する一連の具象クラス・メソッドを抽出して画面に表示する第3の手段より構成したことに一つの特徴を有する。
本発明の他の特徴は、前記第1の手段のクラス情報が、クラスのID情報と、該クラスが具象クラス、インターフェース及び抽象クラスの何れかに属するかを示すクラス種類の情報と、該クラスの親子の関係にあるクラス情報を含んでいることにある。
本発明の他の特徴は、前記第1の手段のメソッド情報が、メソッドのID情報と、メソッドが具象メソッド、抽象メソッド及びその他のメソッドの何れに属するかを示すメソッド種類の情報を含んでいることにある。
本発明の他の特徴は、前記第1の手段の参照先メソッド情報が、参照元クラス・メソッドのID情報と、該参照元クラス・メソッドの参照先となるクラス・メソッドの名称情報と、参照先クラスが具象クラス、インターフェース及び抽象クラスの何れに属するかを示す参照先クラス種類の情報を含んでいることにある。
本発明によれば、次のような効果が得られる。
(1)Java言語プログラムを、クラス間の関連よりも更に詳細なクラス・メソッド間の関連として画面上で把握することが可能となる。クラス・メソッド間の関連は、オブジェクトを生成しないインターフェースや抽象クラスを除いた具象クラス・メソッド間の関連として把握することができる。
(2)具象クラス・メソッドIDを単位としてその関連を把握できるので、あるクラスのあるデータ項目にアクセスするクラス・メソッドを特定したり、当該データ項目が利用されている一連のクラス・メソッドを特定することが可能となる。
(3)具象クラス・メソッドを対象としたクラス・メソッドを単位として、その関連を把握できるので、階層構造のJava言語プログラムにおいて、あるクラス・メソッドが他のクラス・メソッドに及ぼす範囲を特定したり、一つのトランザクションに用いられる全てのクラス・メソッドを特定し、画面上に表示することが可能となる。
(4)オブジェクトの関連を示す従来のシーケンス図を作成するツールでは、隠蔽メソッドへの関連より先の具象メソッドへの関連を分析することもできないが、本発明ツールにおいては、隠蔽メソッドの先の具象メソッドへの関連も分析し、画面上に表示することが可能となる。
上記の(1)〜(4)により、大規模業務系のJava言語プログラムの保守作業の負担を著しく軽減することが可能になる。
(5)設計書をリバースエンジニアリングで生成することにより、人手で設計書を保守する工数を大幅に低減することができる。
(6)人手で設計書を保守すると、設計書と実装との乖離を起こし易いが、リバースエンジニアリングで生成することによって、実装との乖離を起こさない。
本発明はJava言語プログラムをクラス・メソッドの単位として捉え、特にシステムを構成するJava言語プログラム内で実質的な処理に関与している具象クラス・メソッドIDの関連を表すようにしたものである。
図1−5は、Java言語プログラムを、クラス・メソッドを単位として捉えた場合の処理の流れを例示したものである。
この図は、最上位階層のクラスC11のメソッドM2が次の階層のクラスC21のメソッドM4を参照し、クラスC21のメソッドM4が次の階層のクラスC31のメソッドM5を参照し、以下点線で示す参照関係がある例を示している。また同様に、クラスC11のメソッドM4がクラスC22のメソッドM1を参照し、クラスC22のメソッドM1がクラスC31のメソッドM5を参照している例を示している。
前述のクラス図(図1−2)は単に、クラスC11,C21,C22・・・の関連を示すだけであるため、保守業務に当たり、メソッド単位の詳細な処理の流れを調べるためには、プログラム開発者がソースコードを分析して把握せざるを得なくなる。
ここで、各クラスのIDは、C11,C21,C22・・・で表し、システムの中でユニークに(一意的に)特定できるコードが割り当てられ、各メソッドはM1,M2,M3・・・のように、各クラス内においてユニークに特定できるコードが割り当てられる。従って、クラスID+メソッドID(以下これをクラス・メソッドIDという)により、システム内の全てのメソッドをユニークに特定することができる。
それ故、システムを構成するJava言語プログラム内で実質的な処理に関与している(すなわちオブジェクトを生成している)全てのクラス・メソッドIDの関連を表すことができれば、所望のメソッドを特定したり、そのメソッドに関連する一連のクラス・メソッドを把握することができる。
以下、本発明に係る分析ツールを生成する手順について説明する。
(1)クラスファイル生成
まず、Javaプログラムからクラスファイルを生成する。
クラスファイルとは、Javaソースコードプログラムを構成する各クラスをコンパイルすることにより生成されたファイルである。例えばJavaソースコードプログラムの各クラスは、図2−1に例示されるように記述されており、これをコンパイルすると、図2−2に例示されるような数字で記述されたものになる。大規模業務システムではクラスの数が数10万個に達するから、その数のクラスファイルが作成されることになる。
このクラスファイルの中には具象ファイル、抽象クラス及びインターフェースのファイルが含まれる。
(2)ファイル分析
次に、このクラスファイルを分析して4種類の情報を抽出する。図3−1に示すクラス情報、図3−2に示すメソッド情報、図3−3に示すスーパークラス情報、及び図3−4に示すメソッド関連情報である。
従来、ソースコードプログラムからクラス情報やメソッド情報を抽出する試みはあるが、本発明においては更にメソッド関連情報を抽出したことに一つの特徴がある。
クラス情報には、具象クラス、抽象クラス及びインターフェースのクラスID、クラス名、パッケージ名、スーパークラス名、スーパークラスパッケージ名及びクラスの種類の情報が含まれる。
パッケージとは、複数のクラスやインターフェースをひとまとめにしたものである。またスーパークラスとは、継承する元となったクラス、つまり親クラスであり、継承して作ったクラスをサブクラス(子クラス)という。クラスの種類は、そのクラスが具象クラス、抽象クラス及びインターフェースの3種類に分類する情報である。
メソッド情報には、図3−2に示すように、クラスID、メソッドID、メソッド名、引数及び戻り値の情報、コンストラクタ、メソッドの種類などの情報が含まれる。メソッドIDは、各クラスIDの中で一義的に定められるIDである。コンストラクタとは、オブジェクトの生成をするときに自動的に呼び出される特殊なメソッドである。
スーパークラス情報には、図3−3に示すように、子クラスIDと親クラス名との関係、及びクラスIDとインターフェース名との関係を表す情報が含まれる。
メソッド関連情報には、図3−4に示すように、クラスID、メソッドIDの他に、一意キーID(図3−4のレコードを一意的(ユニーク)に特定するID)、参照先のクラス名、参照先のメソッド名が含まれる。また参照先クラスが具象クラス、インターフェース、抽象クラスのいずれに属するかを示す参照先クラス情報も含まれる。
図3−5は、クラスファイルから上記のクラス情報、メソッド情報、スーパークラス情報及びメソッド関連情報を抽出するフローを示す。
ステップS401において、図2−1に例示したクラスファイルを1件読み込む。続いて、クラス項目の記述からクラス名称の情報を取り出し(S402)、更にクラス種類の情報を取り出す(S403)。
ステップS404では、extendsの項目値を全部取り出す。extendsは継承を定義する記号であり、例えば
class A extends B
という記述は、サブクラス(子クラス)Aがスーパークラス(親クラス)Bを継承したことを表す。また、インターフェースに対してextendsの記号を用いる場合は、拡張インターフェース(子インターフェース)がそのインターフェース(親インターフェース)を継承したことを表す。
ステップS405では、implements項目値を全部取り出す。implementsは実装を定義する記号であり、例えば
class C implements D
と記述すると、例えばインターフェースDをクラスCが実装することを表す。
ステップS406では、読み込んだクラスファイルのクラス種類がインターフェースかクラスかを判定する。クラスの場合はextendsの項目に記述されたクラス(上記のD)をスーパークラス名称とし(S407)、また、implementsの項目値(上記のD)をインターフェース名称とする(S408)。
一方、ステップS406でインターフェースと判定された場合、extends項目値を拡張インターフェース名称とする(S409)。
次に、ステップS410〜S419において、メソッドに関する情報を抽出する。まず、クラスファイルからメソッド名称を取り出し(S412)、更に戻り値(処理の結果の値)の型名(例えば整数型)及び引数(処理の対象となる変数、パラメータ)の型名称を順次取り出す(S413,S414)。
ステップS415でメソッド名称がクラス名称に等しいか否か判断し、等しい場合、上記メソッドはオブジェクトの生成のときに呼び出されるコンストラクタというメソッドであると判断する(S416)。
ステップS415の判定がNOのときは、メソッド中に処理ロジックが存在するか否か判定する(S417)。処理ロジックが存在すれば具象メソッドと判断し(S418)、処理を記述せずに、単に呼び出した方だけを定義したメソッドは抽象メソッドと判断する(S419)。このようにして、図3−2に示したメソッド情報が抽出される。
次に、ステップS420〜S427によりメソッド関連情報を抽出する。ステップS420において、メソッド本体の処理ロジック中に記述された参照先のメソッド情報を検索する。ステップS421で未処理のメソッドがあるか否か判定し、ある場合はステップS422に進み、参照先メソッドのメソッド名称を取り出す。また、ステップS423において、参照先メソッドが属するクラスのクラス名称をそれぞれ取り出す。
次に、処理ロジックの引数がレジスタ変数か否かを判定し(S424)、レジスタ変数の場合は、ロジックを遡って、レジスタ変数に値を代入している箇所から引数の型名称(例えば整数型)を取り出す(S425)。またステップS424の判定がNOの場合は、参照先メソッドの引数の型名称を順次取り出す(S426)。また、参照先メソッドを呼び出すオペランドから参照先がインターフェースか、或いはクラスかを判断する(S427)。
このように本発明は、クラス情報及びメソッド情報だけでなく、参照先のクラス及びメソッドの情報をも抽出する。そして得られた情報は、図3−6に例示するXMLファイルとして整理される。
(3)抽出情報のDB投入
上記のようにして抽出された情報は、DBに投入される。図4−5は、DB投入のフローを示すもので、ステップS501において、前述のXMLファイルにより各クラス毎のレコードが読み込まれ、ステップS502でクラスに関する情報が、図4−1に例示するクラス情報テーブルT100に登録される。またステップS503では、メソッドに関する情報が、図4−2に例示するメソッド情報テーブルT200に登録される。ステップS504では、クラスのスーパークラス及びインターフェースの情報が、図4−3に例示するスーパークラス情報テーブルT300に登録される。更にステップS505では、メソッド関連情報が、図4−4に例示するメソッド関連情報テーブルT400に登録される。このようにして、数万〜数10万個の全クラスの情報が、すべてDBに投入される(S506)。
(4)メソッド間関連情報の生成
次にDBに投入された各種の情報に基づいて、メソッド間関連情報を作成する。メソッド間関連情報とは、図1−5を例にとると、具象クラス・メソッドIDのC11m2と、その参照先の具象クラス・メソッドIDのC21m4とのペア情報を称し、C11m2を参照元のクラス・メソッドID、C21m4を参照先のクラス・メソッドIDという。なお、具象クラス・メソッドが抽象クラスやインターフェースを介して他の具象クラスを参照する場合もあるので、関連先クラス・メソッドID、関連元クラス・メソッドIDということもある。
このメソッド間の関連を表すペア情報は、メソッド間関連情報テーブルを作成することにより生成される。
図5−1は、メソッド間関連情報テーブルT900を示す。901は処理フラグで、このテーブルT900を作成する過程で用いられる。分析が済んだときは0、オブジェクトIDを特定できないときは1、オブジェクトIDと参照先のクラス・メソッドを特定できないときには2がセットされる。903は参照元(関連元)の具象クラス(実装クラス)のクラスID、904は参照元(関連元)の具象メソッド(実装メソッド)のメソッドIDであり、903と904により参照元(関連元)の具象クラス・メソッドIDが形成される。903の情報はメソッド関連情報テーブルT400(図3−4)のクラスIDと同じであり、904は該テーブルT400のメソッドIDと同じである。906は参照先(関連先)の具象クラス(実装クラス)のクラスID、907は参照先(関連先)具象メソッドのメソッドIDである。
次に、図5−2を参照して、メソッド間関連情報を作成するフローについて説明する。
ステップS1001において、メソッド情報テーブルT200(図3−2)から具象メソッドを1件ずつ取り出す。ステップS1002で具象メソッドが存在するか否かを判定し、存在する場合は、メソッド関連情報テーブルT400(図3−4)を参照して、参照先クラス名、参照先メソッド名及び参照先パッケージ名の情報を取り出す(S1003)。
なお、以下の説明では、参照先及び関連先を代表して関連先とし、参照元及び関連元を代表して関連元という用語を用いる。
ステップS1004で関連先情報が存在するか否か判定し、YESの場合はステップS1005に進む。
ステップS1005において、クラス情報テーブルT100を参照し、抽出したクラス名及びパッケージ名をキー情報として、関連先クラスのクラスID及びクラス種類の情報を取り出す。更にステップS1006において、メソッド情報テーブルT200を参照し、先に取り出したメソッド名と、上記ステップS1005で取り出したクラスIDをキー情報として、メソッドIDとメソッド種類の情報を取り出す。
ステップS1005で取り出したクラス種類が具象クラスの場合、そのクラスIDをテーブルT900の関連先ID906として登録し、ステップS1006で取り出したメソッド種類が具象メソッドの場合、そのメソッドIDを関連先メソッドID907として登録する(S1007)。
またステップS1001で取り出した具象メソッドのIDをテーブルT900の関連元メソッドID904として登録し、その関連元具象メソッドが属する具象クラスのクラスIDをテーブルT900の関連元クラスID903として登録する(S1007)。
以上の処理により関連元の具象クラス・メソッドIDと関連先の具象クラス・メソッドIDのペア情報が生成される。
(5)具象クラス・メソッド間関連情報の表示
次に、上述のようにして生成された具象クラス・メソッド間関連情報を表示するためのフローを、図6−1を参照して説明する。
Java言語プログラムのあるクラス・メソッドを指定し、例えばそのクラス・メソッドを修正した場合に、どの範囲のクラスに影響を及ぼすか解析を行うときには、まずステップS1301において、当該クラス・メソッドIDを指定する。次に、メソッド間関連情報テーブルT900から当該クラス・メソッドの関連先クラス・メソッド、該関連先クラス・メソッドの更に関連先のクラス・メソッドというように、次々に関連先クラス・メソッド情報を抽出する。
抽出されたクラス・メソッドの関連が、例えば図6−2のように表される場合を例にとると、ステップS1303では図6−3に示すようなクラス名、メソッド名及び引数の文字列からなるテキストデータを生成する。
更にステップS1304では、生成したテキストデータをウェブ上で表示する既存のソフトウェアに受け渡し、ユーザのPCのウェブブラウザソフトウェア上に、例えば図6−4のような形式で表示する(S1305)。
このように、テキストデータを図6−4のようにウェブ上で表示するソフトウェア自体は既に公知である。
図6−5は、本発明ツールが適用される大規模業務系の説明図であり、70は端末機器、71はサーバ、72はDB、73は保守用のパソコンである。
証券業務を例にとると、各支店に設置された数百台〜数千台のパソコンからなる端末70がネットワーク74を通して本店のサーバ71に接続されている。各端末70からは証券や債券の取引等のデータが入力され、本店のサーバ71により処理されてデータベース72に蓄積される。
一方、この証券業務システムに用いられるJava言語プログラムの保守を行うために、前述のテーブルT100〜T900で示されたデータがDB72に格納され、各フローチャートで示されたプログラムが保守用のパソコン73に格納されている。保守用のパソコン73から特定のクラス・メソッドを指定する情報を入力すると、図6−4に例示した関係図が画面に表示される。
以上説明した本発明ツールによれば、クラス・メソッドの数が数10万個から数100万個に達する大規模業務系のJava言語プログラムの中で、特定の業務処理(トランザクション)に用いられるすべての具象クラス・メソッドを抽出し、これを画面上に表示することができる。
更に、所定の具象クラス・メソッドを指定して、それに関連する具象クラス・メソッドを抽出・表示することにより、所定の具象クラス・メソッドが影響を及ぼす範囲を特定することもできる。
従って、あるデータ項目にアクセスするクラス・メソッドを指定して、そのデータ項目が利用されているトランザクション、データベース並びに業務ロジックなどを特定することが可能となるため、大規模業務系のJava言語プログラムの保守作業の負担を従来に比べて著しく軽減することが可能となる。
Java言語プログラムの説明図。 Java言語プログラムのクラス図の一例を示す説明図。 Java言語プログラムのシーケンス図の一例を示す説明図。 Java言語プログラムにおけるクラスに含まれる情報とその関連を示す説明図。 Java言語プログラムをクラス・メソッドを単位として捉えた場合の処理の流れを示す説明図。 Javaソースコードプログラムの一例を示す説明図。 Javaソースコードプログラムのコンパイルを説明するための図。 クラスファイルのクラス情報の内容を示す説明図。 クラスファイルのメソッド情報の内容を示す説明図。 クラスファイルのスーパークラス情報の内容を示す説明図。 クラスファイルメソッド関連情報の内容を示す説明図。 クラスファイルから各情報を抽出するフローを示すフローチャート。 クラスファイルを分析した結果得られるXMLファイルを示す説明図。 クラス情報テーブルの説明図。 メソッド情報テーブルの説明図。 スーパークラス情報テーブルの説明図。 メソッド関連情報テーブルの説明図。 クラスファイルより抽出した情報をDBに投入するフローを示すフローチャート。 メソッド間関連情報テーブルの説明図。 メソッド間関連情報テーブルを作成するフローを示すフローチャート。 クラス・メソッド間の関係を表示するフローを示すフローチャート。 クラス・メソッド間の関係を表示する説明図。 クラス・メソッド間の関係を表示するために生成するテキストデータの説明図。 クラス・メソッド間の関係を表示する画面の説明図。 本発明ツールから適用されるシステムの一例を示すブロック図。
符号の説明
100,300,400:具象クラス
200:インターフェース
100´,300´,400´:オブジェクト
10:クラス情報
20:メソッド情報
30:メソッド間関連情報
C11,C21,C22,C31,C41,C42,C43:具象クラス
M1,M2,M3,M4,M5:具象メソッド
T100:クラス情報テーブル
T200:メソッド情報テーブル
T300:スーパークラス情報テーブル
T400:メソッド関連情報テーブル
T900:メソッド間関連情報テーブル
70:端末
71:サーバ
72:データベース(DB)
73:PC
74:ネットワーク

Claims (4)

  1. Java言語プログラムのクラスファイルからクラス情報、メソッド情報及び参照先メソッド情報を抽出する第1の手段と、
    前記クラスファイルから抽出したクラス情報、メソッド情報及び参照先メソッド情報に基づいて、具象クラスID及び具象メソッドIDよりなる関連元具象クラス・メソッドIDと、該関連元具象クラス・メソッドIDの関連先である関連先具象クラス・メソッドIDの組み合わせからなるペア情報を生成する第2の手段と、
    所望のクラス・メソッドを指定し、該クラス・メソッドに関連する一連の具象クラス・メソッドを抽出して画面に表示する第3の手段よりなることを特徴とするJava言語プログラムの分析ツール。
  2. 請求項1において、前記第1の手段のクラス情報は、クラスのID情報と、該クラスが具象クラス、インターフェース及び抽象クラスの何れかに属するかを示すクラス種類の情報と、該クラスの親子の関係にあるクラス情報を含んでいることを特徴とする分析ツール。
  3. 請求項1において、前記第1の手段のメソッド情報は、メソッドのID情報と、メソッドが具象メソッド、抽象メソッド及びその他のメソッドの何れに属するかを示すメソッド種類の情報を含むことを特徴とする分析ツール。
  4. 請求項1において、前記第1の手段の参照先メソッド情報は、参照元クラス・メソッドのID情報と、該参照元クラス・メソッドの参照先となるクラス・メソッドの名称情報と、参照先クラスが具象クラス、インターフェース及び抽象クラスの何れに属するかを示す参照先クラス種類の情報を含むことを特徴とする分析ツール。
JP2006306422A 2006-11-13 2006-11-13 Java(登録商標)言語プログラムを用いた大規模業務システムを分析するプログラム及びその処理方法 Expired - Fee Related JP4948126B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006306422A JP4948126B2 (ja) 2006-11-13 2006-11-13 Java(登録商標)言語プログラムを用いた大規模業務システムを分析するプログラム及びその処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006306422A JP4948126B2 (ja) 2006-11-13 2006-11-13 Java(登録商標)言語プログラムを用いた大規模業務システムを分析するプログラム及びその処理方法

Publications (2)

Publication Number Publication Date
JP2008123254A true JP2008123254A (ja) 2008-05-29
JP4948126B2 JP4948126B2 (ja) 2012-06-06

Family

ID=39507944

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006306422A Expired - Fee Related JP4948126B2 (ja) 2006-11-13 2006-11-13 Java(登録商標)言語プログラムを用いた大規模業務システムを分析するプログラム及びその処理方法

Country Status (1)

Country Link
JP (1) JP4948126B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008123259A (ja) * 2006-11-13 2008-05-29 Nippon Shoken Technology Kk Java言語プログラムを用いた大規模業務系の影響分析ツール
JP2008134699A (ja) * 2006-11-27 2008-06-12 Nippon Shoken Technology Kk Java言語プログラムを用いた大規模業務系の影響分析ツール
JP2010016797A (ja) * 2008-06-06 2010-01-21 Ricoh Co Ltd 画像処理装置
JP2012173771A (ja) * 2011-02-17 2012-09-10 Hitachi Solutions Ltd プログラミング言語間でのライブラリ変換方法及びプログラム
JP2018045463A (ja) * 2016-09-14 2018-03-22 富士通株式会社 プログラム分析プログラム、プログラム分析方法及びプログラム分析装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319676A (ja) * 1994-05-20 1995-12-08 Hitachi Ltd メッセージフロー図生成方式
JPH1195990A (ja) * 1997-09-22 1999-04-09 Nippon Telegr & Teleph Corp <Ntt> プログラム構造表示方法および装置
WO2002046921A1 (en) * 2000-12-08 2002-06-13 Fujitsu Limited Sequence analysis method and sequence analysis apparatus
JP2002222082A (ja) * 2000-11-24 2002-08-09 Fujitsu Ltd 記録媒体およびプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319676A (ja) * 1994-05-20 1995-12-08 Hitachi Ltd メッセージフロー図生成方式
JPH1195990A (ja) * 1997-09-22 1999-04-09 Nippon Telegr & Teleph Corp <Ntt> プログラム構造表示方法および装置
JP2002222082A (ja) * 2000-11-24 2002-08-09 Fujitsu Ltd 記録媒体およびプログラム
WO2002046921A1 (en) * 2000-12-08 2002-06-13 Fujitsu Limited Sequence analysis method and sequence analysis apparatus

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008123259A (ja) * 2006-11-13 2008-05-29 Nippon Shoken Technology Kk Java言語プログラムを用いた大規模業務系の影響分析ツール
JP2008134699A (ja) * 2006-11-27 2008-06-12 Nippon Shoken Technology Kk Java言語プログラムを用いた大規模業務系の影響分析ツール
JP2010016797A (ja) * 2008-06-06 2010-01-21 Ricoh Co Ltd 画像処理装置
JP2012173771A (ja) * 2011-02-17 2012-09-10 Hitachi Solutions Ltd プログラミング言語間でのライブラリ変換方法及びプログラム
JP2018045463A (ja) * 2016-09-14 2018-03-22 富士通株式会社 プログラム分析プログラム、プログラム分析方法及びプログラム分析装置

Also Published As

Publication number Publication date
JP4948126B2 (ja) 2012-06-06

Similar Documents

Publication Publication Date Title
US12443395B2 (en) Computing expression medium, development environment, and device communication and control architecture
Wimmer et al. A survey on UML-based aspect-oriented design modeling
Androutsopoulos et al. State-based model slicing: A survey
JPH08512152A (ja) インクリメンタル生成システム
TW200844855A (en) Using collaborative development information in a team environment
US8918756B2 (en) Generating constraints in a class model
Bhattacharya et al. Combining concern input with program analysis for bloat detection
Cho et al. Design patterns for metamodels
Mitchell et al. Modeling runtime behavior in framework-based applications
de Boer et al. Enterprise architecture analysis with xml
JP4948126B2 (ja) Java(登録商標)言語プログラムを用いた大規模業務システムを分析するプログラム及びその処理方法
Lee et al. A reengineering process for migrating from an object-oriented legacy system to a component-based system
Oliveira et al. Using reo on etl conceptual modelling: a first approach
Molina et al. Specifying conceptual interface patterns in an object-oriented method with automatic code generation
US10657476B2 (en) Just in time compilation (JIT) for business process execution
Kang et al. Toward configurable modeling for artifact‐centric business processes
JP5057539B2 (ja) Java(登録商標)言語プログラムを用いた大規模業務系の影響分析を行うプログラム
Wang et al. An aspect-oriented UML tool for software development with early aspects
Horozal et al. Tool support for architectural pattern selection and application in cloud-centric service-oriented ides
Sprogis Configuration language for domain specific modeling tools and its implementation
Salah An environment for comprehending the behavior of software systems
Jafarlou et al. From two-way to three-way: domain-specific model differencing and conflict detection.
Terry et al. Terminology for Software Engineering Environment (SEE) and Computer-Aided Software Engineering (CASE)
Garg et al. Insight to model clone’s differentiation, classification, and visualization
Keren et al. MDA approach for maintenance of business applications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111101

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111226

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120118

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120305

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120306

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150316

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4948126

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees