明 細 書 シーケンス解析方法およびシーケンス解析装置 技術分野
本発明はシーケンス解析方法およびシーケンス解析装置に関し、 特に、 ォブジ ェクト言語で記述されたプログラムのシーケンスを解析するシーケンス解析方法 およびシーケンス解析装置に関する。 背景技術
オブジェクト指向言語によりシステム開発を行う場合には、 O M G (Object Management Group ) によって標準化された U M L ( Unified Modeling Language) の中のシーケンス図が実装のためのドキュメントとして重視されて いる。
このシーケンス図は、 所定の機能に関するクラス群のメソッド (手続き型言語 の関数に対応するもの) の呼び出し関係を示すものであり、 機能単位に作成され ることが通例である。
ところで、 システム全体に対するシーケンス図は、 数百枚または数千枚のォ一 ダ一になることが多いため、 例えば、 メソッドのシーケンス図間での一貫性につ いてチェックすることが困難であるという問題があつた。
そこで、 これらのシーケンス図を 1枚の図面に集約し、 チェックの簡易化を図 ることも考えられるが、 オブジェクト指向言語ではクラスがァトミック
(Atomic) な操作単位であるため、 単に集約して 1枚の図面にし、 クラスのメ ンバに対する編集を許可すると、 クラス単位での編集がかえって困難になるとい う問題点もあった。 発明の開示 . 本発明はこのような点に鑑みてなされたものであり、 オブジェクト指向言語を 用いたシステム全体の一覧性を高めることが可能なシーケンス解析方法およびシ
一ケンス解析装置を提供することを目的とする。
本発明では上記課題を解決するために、 図 1に示す、 オブジェクト言語で記述 されたプログラムのシーケンスを解析するシーケンス解析方法において、 プログ ラムを構成するクラスのクラス名を取得するクラス名取得ステップ (クラス名取 得手段 2 a ) と、 各クラスから派生するインスタンスのインスタンス名を取得す るインスタンス名取得ステップ (インスタンス名取得手段 2 b ) と、 各インスタ ンスに含まれているメソッドのメソッド名を取得するメソッド名取得ステップ (メソッド名取得手段 2 c ) と、 各メソッドの呼び出し関係を取得する呼び出し 関係取得ステップ (呼び出し関係取得手段 2 d ) と、 クラス名取得ステップ (ク ラス名取得手段 2 a ) 、 インスタンス名取得ステップ (インスタンス名取得手段 2 b ) 、 および、 メソッド名取得ステップ (メソッド名取得手段 2 c ) において 取得された情報を表形式で一覧表示し、 呼び出し関係取得ステップ (呼び出し関 係取得手段 2 d ) によって取得した情報に基づいて、 各メソッドの呼び出し関係 を表示したシーケンス一覧表 3を表示するシーケンス一覧表表示ステップ (シ一 ケンス一覧表表示手段 2 e ) と、 を有することを特徴とするシーケンス解析方法 が提供される。
ここで、 クラス名取得ステップ (クラス名取得手段 2 a ) は、 プログラムを構 成するクラスのクラス名を取得する。 インス夕ンス名取得ステップ (インスタン ス名取得手段 2 b ) は、 各クラスから派生するインスタンスのインスタンス名を 取得する。 メソッド名取得ステップ (メソッド名取得手段 2 c ) は、 各インス夕 ンスに含まれているメソッドのメソッド名を取得する。 呼び出し関係取得ステツ プ (呼び出し関係取得手段 2 d ) は、 各メソッドの呼び出し関係を取得する。 シ 一ケンス一覧表表示ステップ (シーケンス一覧表表示手段 2 e ) は、 クラス名取 得ステップ (クラス名取得手段 2 a ) 、 インスタンス名取得ステップ (インス夕 ンス名取得手段 2 b ) 、 および、 メソッド名取得ステップ (メソッド名取得手段 2 c ) において取得された情報を表形式で一覧表示し、 呼び出し関係取得ステツ プ (呼び出し関係取得手段 2 d ) によって取得した情報に基づいて、 各メソッド の呼び出し関係を表示したシーケンス一覧表 3を表示する。
本発明の上記および他の目的、 特徴および利点は本発明の例として好ましい実
施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。 図面の簡単な説明
図 1は、 本発明の動作原理を説明する原理図である。
図 2は、 本発明の実施の形態の構成例を示すブロック図である。
図 3は、 図 2に示すシーケンス解析装置の HD Dに格納されているアプリケ一 ションプログラムが起動された場合に、 実装される機能ブロックについて説明す る図である。
図 4は、 処理対象となるシーケンス図の一例である。
図 5は、 処理対象となるクラス図の一例である。
図 6は、 本発明に係る解析用のアプリケーションプログラムが起動された場合 に表示される画面の一例である。
図 7は、 図 6に示すポタンを操作した場合に表示されるプルダウンメニューの 一例を示す図である。
図 8は、 ポタン 6 3が操作され、 変換 6 3 aが選択された場合に実行される、 シーケンス図をシーケンス一覧表に変換する処理の一例を説明するフローチヤ一 トである。
図 9は、 変換処理によって生成されたシーケンス一覧表の表示例である。 図 1 0は、 コントローラクラスに関するシーケンス一覧表の一例である。 図 1 1は、 商品クラスに関するシーケンス一覧表の一例である。
図 1 2は、 在庫クラスに関するシーケンス一覧表の一例である。
図 1 3は、 ポタン 6 6が操作されて文字列が入力され、 検索が実行された結果 を示す画面である。
図 1 4は、 メソッド集約処理の結果を示す表示例である。
図 1 5は、 メソッド省略処理の結果を示す表示例である。
図 1 6は、 クラス移動処理の結果を示す表示例である。
図 1 7は、 矢線非表示処理の結果を示す表示例である。
図 1 8は、 シーケンス一覧表をシーケンス図に逆変換する処理の一例を説明す るフローチャートである。
図 1 9は、 クラス図とシーケンス一覧表との比較処理の一例を説明するフロー チヤ一トである。
図 2 0は、 シーケンス番号チェック処理の一例を説明するフローチャートであ る。
図 2 1は、 入り口メソッドチェック処理の一例を説明するフローチャートであ る。
図 2 2は、 パラメタチェック処理の一例を説明するフローチャートである。 発明を実施するための最良の形態
以下、 本発明の実施の形態を図面を参照して説明する。
図 1は、 本発明の動作原理を説明する原理図である。 この図において、 本発明 に係るシーケンス解析方法を実現するシーケンス解析装置 2は、 複数のシ一ゲン ス図 1 a〜l dを読み込んで解析し、 シーケンス一覧表 3を出力する。
シーケンス解析装置 2は、 クラス名取得手段 2 a、 インスタンス名取得手段 2 b、 メソッド名取得手段 2 c、 呼び出し関係取得手段 2 d、 シーケンス一覧表表 示手段 2 eによって構成されている。
ここで、 クラス名取得手段 2 aは、 プログラムを構成するクラスのクラス名を 取得する。
インスタンス名取得手段 2 bは、 各クラスから派生するインスタンスのインス タンス名を取得する。
メソッド名取得手段 2 cは、 各インスタンスに含まれているメソッドのメソッ ド名を取得する。
呼び出し関係取得手段 2 dは、 各メソッドの呼び出し関係を取得する。
シーケンス一覧表表示手段 2 eは、 クラス名取得手段 2 a、 インスタンス名取 得手段 2 b、 メソッド名取得手段 2 cによって取得された情報を表形式で一覧表 示し、 呼び出し関係取得手段 2 dによって取得した情報に基づいて、 各メソッド の呼び出し関係を表示したシーケンス一覧表を表示する。
次に、 以上の原理図の動作について説明する。
処理対象のシーケンス図として、 クラス A、 クラス B、 および、 クラスじから
構成され、 クラス Aがクラス Bのメソッド Aを呼び出し、 クラス Bがクラス Cの メソッド Bおよぴメソッド Cを呼び出す構造を有するシーケンス図 1 aおよびそ の他のシーケンス図 1 b〜l dが選択されたとする。
クラス名取得手段 2 aは、 これらのシーケンス図 1 a〜l dに含まれているク ラス名 (例えば、 クラス A〜クラス C) を取得する。
インスタンス名取得手段 2 bは、 シーケンス図 1 a〜l dに含まれているイン スタンス名 (例えば、 インスタンス A〜インスタンス B (図示せず) ) を取得す る。
メソッド名取得手段 2 cは、 シーケンス図 1 a〜l dに含まれているメソッド 名 (例えば、 メソッド A〜メソッド C) を取得する。
呼び出し関係取得手段 2 dは、 シーケンス図 1 a〜l dに含まれているメソッ ドの呼び出し関係 ( 「クラス Aがクラス Bのメソッド Aを呼び出す」 等) を取得 する。
シーケンス一覧表表示手段 2 eは、 クラス名取得手段 2 a、 インスタンス名取 得手段 2 b、 および、 メソッド名取得手段 2 cによって取得されたクラス名、 ィ ンスタンス名、 および、 メソッド名と、 呼び出し関係取得手段 2 dによって取得 された呼び出し関係に基づいてシーケンス一覧表 3を生成し、 表示出力する。 ここで、 シーケンス一覧表 3は、 シーケンス図 1 a〜l dに含まれている全て のクラスが列挙されており、 各クラスのインスタンスとメソッドとが属性として 示されている。 また、 メソッド同士の呼び出し関係は矢線によって示されている。 例えば、 クラス Bは、 メソッド A (mA) を有しており、 このメソッド Aはク ラス Aから呼び出されている。 また、 クラス Cはメソッド B (mB ) とメソッド C (m C ) とを有しており、 これらのメソッドは、 クラス Bのィンスタンス A ( i A) から呼び出されている。 なお、 この図では、 シーケンス図 l aに対応す る部分のみを示しているが、 実際にはシーケンス図 1 b〜 1 dに対応するクラス に関する内容も表示されている。
ところで、 以上のようにして表示されたシーケンス一覧表 3の表示内容は、 ク ラスを単位としての編集 (例えば、 クラスの移動、 複写、 削除) のみが許可され るので、 例えば、 クラス Bを異なる位置に移動させることは可能であるが、 クラ
ス Bのメソッド Aのみを移動させることは禁止される。 従って、 目的に応じて、 表示の態様を変化させることが可能になるとともに、 クラスを単位とする変更の みを許可することにより、 操作の煩雑性 (インスタンスとメソッドを個別に移動 させる等) を解消することが可能になる。
以上に説明したように、 本発明によれば、 複数のシーケンス図から 1枚のシー ケンス一覧表を生成するようにしたので、 システム全体の一覧性を向上させるこ とが可能になる。
また、 表示内容の変更については、 クラス単位での変更のみを許可するように したので、 既述したように操作の煩雑性を解消させることが可能となる。
次に、 本発明の実施の形態の構成例について説明する。
図 2は、 本発明に係るシーケンス解析方法を実現するシーケンス解析装置の構 成例を示すブロック図である。
この図に示すように、 シーケンス解析装置 1 0は、 C PU ( Central Processing Unit) 1 0 a, ROM (Read Only Memory) 1 0 b、 RAM (Random Access Memory) 10 c、 HDD (Hard Disk Drive) 10 d、 GB (Graphics Board) 10 e、 I/F (Interface) 10 f、 および、 ノ ス 10 g によって構成されており、 その外部には表示装置 1 1と入力装置 12とが接続さ れている。
ここで、 CPU 10 aは、 HDD 10 dに格納されているプログラムに従って 装置の各部を制御するとともに、 種々の演算処理を実行する。
ROMl O bは、 CPUl O aが実行する基本的なプログラムやデータを格納 している。
RAMI 0 cは、 CPU10 aが実行の対象とするプログラムや、 演算途中の データを一時的に格納する。
HDD 10 dは、 CPU 10 aが実行する各種プログラムや、 解析対象となる シーケンス図や、 解析結果であるシーケンス一覧表のデータを格納する。
GB l O eは、 CPU10 aから供給された描画命令に従って描画された画像 データを映像信号に変換して出力する。
IZF 10 f は、 入力装置 12から供給されたデータの表現形式を、 シーゲン
ス解析装置 1 0の内部形式に適合するように変換する。
表示装置 1 1は、 例えば、 C R T (Cathode Ray Tube) モニタによって構成 されており、 G B 1 0 eから出力された映像信号を表示する。
入力装置 1 2は、 例えば、 マウスやキーボード等の入力デバイスによって構成 されている。
図 3は、 図 2に示すシーケンス解析装置 1 0の HD D 1 0 dに格納されている アプリケーションプログラムが起動された場合に、 実現される機能プロックにつ いて説明する図である。
この図において、 データベース 2 0は、 HD D 1 0 dによって構成され、 処理 の対象となるシ一ケンス図やクラス図 (詳細は後述する) が格納されている。 変換部 2 1は、 C P U 1 0 aその他によって実現され、 データベース 2 0に格 納されているシーケンス図から必要な項目を取得し、 シーケンス一覧表に変換す る処理を実行する。
データベース 2 2は、 HD D 1 0 dによって構成され、 変換部 2 1によって生 成されたシーケンス一覧表を格納する。
表示処理部 2 3は、 C P U 1 0 aその他の機能によって実現され、 デ一夕べ一 ス 2 2に格納されているシーケンス一覧表に対して所定の処理を施した後、 表示 部 2 6に供給する。
逆変換部 2 4は、 データベース 2 2に格納されているシーケンス一覧表の指定 された部分を、 シーケンス図に逆変換し、 表示処理部 2 3に供給する。
チェック部 2 5は、 データベース 2 2に格納されているシーケンス一覧表の内 容に瑕疵がないか否かをチェックし、 チェック結果を表示処理部 2 3に供給する。 表示部 2 6は、 G B 1 0 eおよび表示装置 1 1によって構成されており、 表示 処理部 2 3から出力された情報を表示出力する。
入力部 2 7は、 I Z F 1 0 fおよび入力装置 1 2によって構成されており、 ュ 一ザの操作に応じた情報を表示処理部 2 3に供給する。
次に、 以上の実施の形態の動作について説明する。
いま、 図 4に示すシーケンス図 4 0〜4 3と、 図 5に示すクラス図 5 0〜5 3 がデータベース 2 0に格納されているとする。 ここで、 シーケンス図は、 クラス
から派生したインスタンスに含まれているメソッドの呼び出し関係を示した図で あり、 機能毎に生成される図である。 図 4に示すシーケンス図 4 0の例では、 コ ントロ一ラクラス 4 0 a、 商品クラスの鉛筆インスタンス 4 0 b、 および、 在庫 クラスの A倉庫インスタンス 4 0 cが表示されている。 矢線によって示すように、 コントローラクラス 4 0 aは、 鉛筆インスタンス 4 0 bの受注メソッドを呼び出 している。 また、 鉛筆インスタンス 4 0 bは、 A倉庫インスタンス 4 0 cの g e t数量メソッドと、 g e t在庫メソッドとを呼び出している。 また、 鉛筆インス タンス 4 0 bは、 鉛筆ィンスタンス 4 0 b自身が有する c a 1 c数量メソッドを 呼び出している。 なお、 各メソッドの左側に表示されている数値は、 メソッドの 呼び出し関係の階層を示すものであるが、 その詳細については後述する。
図 5は、 クラスと、 クラスに含まれているメソッドとの関係を示すクラス図で ある。 この例は、 クラス図 5 0〜5 3を含んでおり、 処理の対象となるクラス図 5 0の内容が例示されている。 この例では、 コントローラクラス 5 0 a、 商品ク ラス 5 0 b、 および、 在庫クラス 5 0 cが表示されており、 商品クラス 5 O bは、 受注メソッドと c a 1 c数量メソッドとを有している。 また、 在庫クラス 5 0 c は、 g e t数量メソッドと、 g e t在庫メソッドとを有している。 本例では、 ク ラス図を複数に分けた例を説明しているが、 一枚にまとめて表示させてもよい。 このような対象データに対して解析処理を施すために、 入力装置 1 2を操作し て解析用のアプリケーションプログラムを起動すると、 C P U 1 0 aは HD D 1 0 dから該当するプログラムを読み込んで実行する。 その結果、 表示装置 1 1に は、 図 6に示すような解析用プログラムの画面 6 0が表示される。
この表示例では、 タイトル 「シーケンス解析」 の下に、 ポタン 6 1〜6 6が表 示され、 また、 その下には解析対象のデータや解析結果のデータが配置される表 示領域 6 7が表示されている。
図 7は、 図 6に示すポタン 6 1〜6 6が操作された場合に表示されるプルダウ ンメニューの一例を示す図である。 なお、 ポタン 6 6については、 プルダウンメ ニューは表示されずにコマンドが直接実行されるので、 図 7には表示していない。 図 7に示すように、 ポタン 6 1が操作されると、 解析対象となるファイルを読 み込む際に選択される読み込み 6 1 aと、 表示領域 6 7に表示されている内容を
プリントァゥトする際に選択される印刷 6 1 bとがメニュー項目として表示され る。
ポタン 6 2が操作されると、 表示領域 6 7に表示されたシーケンス一覧表の所 定のクラスを移動する際に選択される移動 6 2 a、 指定されたクラスを削除する 際に選択される削除 6 2 b、 指定されたクラスを表示又は非表示とする際に選択 される表示 Z非表示 6 2 cとがメニュー項目として表示される。
ポタン 6 3が操作されると、 読み込まれたシーケンス図をシーケンス一覧表に 変換する際に選択される変換 6 3 aおよびシーケンス一覧表の一部をシーケンス 図に逆変換する際に選択される逆変換 6 3 bがメニュー項目として表示される。 ポタン 6 4が操作されると、 表示領域 6 7に表示されているシーケンス一覧表 にメソッドの呼び出し関係を示す矢線を追加表示する際に選択される矢線 6 a、 類似または同一のメソッドを集約して表示する際に選択されるメソッド集約 6 4 b、 および、 クラスの表示項目を省略または追加する際に選択される詳細 Z省略 6 4 cがメニュー項目として表示される。
ボタン 6 5が操作されると、 シーケンス一覧表とクラス図の相互の内容のチェ ックを行う際に選択される相互チェック 6 5 a、 シーケンス一覧表の各メソッド に付与されたシーケンス番号の適否をチェックする際に選択されるシーケンス番 号 6 5 b、 入り口のメソッドをチェックする際に選択される入り口 6 5 c、 およ び、 メソッドのパラメタをチェックする際に選択されるパラメタ 6 5 dがメニュ 一項目として表示される。
次に、 図 6に示す画面 6 0において、 ポタン 6 1が操作され、 メニューの項目 である読み込み 6 1 aが選択された後、 図 4に示すシーケンス図 4 0〜4 3が解 析対象として選択されたとすると、 変換部 2 1はデータベース 2 0からシーケン ス図 4 0〜4 3を読み込む。 その結果、 画面 6 0の表示領域 6 7には、 図 6に示 すようにシーケンス図 4 0〜4 3が表示される。
次に、 ポタン 6 3が操作され、 変換 6 3 aが選択されると、 変換部 2 1はシー ケンス図をシーケンス一覧表に変換する処理を実行する。 なお、 この処理の一例 を図 8を参照して説明する。 図 8に示すフローチャートが開始されると、 以下の ステップが実行される。
ステップ S 1 0 :
変換部 2 1は、 読み込み 6 1 aが選択されて指定されたシーケンス図をデータ ベース 2 0から読み込む。
ステップ S 1 1 :
変換部 2 1は、 ポタン 6 3が操作されて変換 6 3 aが選択された場合にはステ ップ S 1 2に進み、 それ以外の場合には同様の処理を繰り返す。
ステップ S 1 2 :
変換部 2 1は、 シーケンス図から 1本の矢線データを取得する。 即ち、 矢線の 接続元と接続先のクラスのデータをデータべ一ス 2 0から取得する。
ステップ S 1 3 :
変換部 2 1は、 矢線データの取得に成功した場合、 即ち、 未処理の矢線データ が存在した場合にはステップ S 1 4に進み、 それ以外の場合には処理対象となる 矢線を全て処理し終えたとして処理を終了する。
ステップ S 1 4 :
変換部 2 1は、 矢線の接続元の情報を解析する。 即ち、 変換部 2 1は、 矢線の 接続元の情報を解析し、 接続元クラス、 接続元インスタンス、 シーケンス図 I D、 インスタンス名、 生成インスタンス、 シーケンス N o . 、 メソッド名、 パラメタ、 返り値、 接続先クラス、 接続先インスタンスを取得する。
ここで、 接続元クラスおよび接続元インスタンスは、 矢線の接続元のクラスと インスタンスとを示す。 シーケンス図 I Dは、 矢線の接続元と接続先のクラスが 含まれているシーケンス図の I D (Identification) を示す。 インスタンス名は、 接続元インスタンスの名前を示し、 生成インスタンスは変換部 2 1が自動的に割 り当てた識別コードである。 シーケンス N o . は、 クラスの階層構造を反映して 各メソッドに付与されたシリアル番号である。 メソッド名はメソッドの名前を示 し、 パラメタおよび返り値は、 メソッドのパラメ夕 (引数) と返り値を示す。 接 続先クラスおよび接続先ィンスタンスは、 接続先のクラスとそのィンスタンスと を示す。
ステップ S 1 5 :
変換部 2 1は、 矢線の接続先の情報を解析する。 即ち、 変換部 2 1は、 矢線の
接続先の情報を解析し、 接続元クラス、 接続元インスタンス、 シーケンス図 I D、 インスタンス名、 生成インスタンス、 シーケンス N o . 、 メソッド名、 パラメ夕、 返り値、 接続先クラス、 接続先インスタンスを取得する。 なお、 各情報は、 前述 した場合と同様である。
ステップ S 1 6 :
シーケンス一覧表に対して、 取得した矢線の接続元および接続先の情報を書き 込む。 そして、 ステップ S 1 2に戻って同様の処理を繰り返す。
以上に示す処理の結果として生成されたシーケンス一覧表は、 図 9に示すよう に、 画面 6 0の表示領域 6 7に表示される。 この表示例では、 シーケンス一覧表 のうち、 コントローラクラス 5 0 aに関する部分のみが表示されている。 なお、 スライダ 7 0またはポタン 6 8 , 6 9を操作すると、 商品クラス 5 O bおよび在 庫クラス 5 0 cを表示領域 6 7に表示させることができる。
なお、 紙面の関係から、 全てのクラスに関するシーケンス一覧表を同時に表示 することができないので、 シーケンス一覧表の各クラスに関する部分の詳細につ いて個別に説明する。
図 1 0は、 コントローラクラス 5 0 aに関するシーケンス一覧表の一例である。 この例では、 列の項目として、 接続元クラス、 接続元インスタンス、 シーケンス 図 I D、 インスタンス名、 生成インスタンス、 シーケンス N o . 、 メソッド名、 パラメ夕、 返り値、 接続先クラス、 および、 接続先インスタンスが表示されてい る。 また、 各行には、 図 4に示すシーケンス図の各矢線に該当するデータが 1つ ずつ格納される。 例えば、 図 1 0の例では、 図 4に示すシーケンス図の受注メソ ッドに該当するデータが格納されている。 具体的には、 受注メソッドのシ一ケン ス図 I Dは、 「P a t t e n」 であり、 生成ィンスタンスは 「P a t t e n 0 1」 であり、 シーケンス番号は 「1」 であり、 メソッド名は 「受注」 であり、 接 続先クラスは 「商品」 であることが示されている。
図 1 1は、 商品クラス 5 0 bに関するシーケンス一覧表の一例である。 この例 において、 第 1行目の項目は、 図 1 0の第 1行目に示す受注メソッドに対応する 情報であり、 接続元クラスとして 「コントローラ」 が、 また、 シーケンス図 I D、 インスタンス名、 生成インスタンス、 シーケンス N o . 、 および、 メソッド名と
して、 「P a t t en」 、 「鉛筆」 、 「P a t t e n 02」 、 「1」 、 および、 「受注」 がそれぞれ格納されている。
従って、 図 10および図 11の第 1行目の項目を参照することにより、 元のシ 一ケンス図の矢線の接続元と接続先に関する情報を取得することができる。
図 12は、 在庫クラス 50 cに関するシーケンス一覧表の一例である。 この例 では、 図 11に示すメソッド g e t数量と g e t在庫の接続先に関する情報が格 納されている。 具体的には、 メソッド g e t在庫に対応する情報として、 接続元 クラス、 接続元インスタンス、 シーケンス図 I D、 インスタンス名、 生成インス タンス、 シーケンス No. 、 および、 メソッド名のそれぞれについて、 「商品」 、 「鉛筆」 、 「Pa t t e n」 、 「A倉庫」 、 「P a t t e n 03」 、 「1. 1」 、 および、 「g e t数量」 が格納されている。
以上に説明したように、 本実施の形態によれば、 複数のシーケンス図から 1枚 のシーケンス一覧表を生成して表示するようにしたので、 システム全体の構造を 一瞥の下に参照することが可能になる。
また、 シーケンス図をシーケンス一覧表に変換することにより、 関係データべ ースへ格納することが可能になるので、 以下に説明するように、 関係データべ一 スの機能を活用し、 項目の検索や編集を簡易に行うことが可能になる。
図 13は、 シーケンス一覧表に含まれている所定の文字列を検索する際の手続 きについて説明する図である。 文字列を検索する場合には、 先ず、 ポタン 66を 操作し、 その結果として表示される文字列入力画面 (図示せず) から、 検索しよ うとする文字列を入力し、 検索を開始する操作を行うと、 表示処理部 23は、 入 力部 27から入力された文字列を取得し、 シーケンス一覧表に含まれている該当 する文字列を検索する。 そして、 該当する文字列が検出された場合には、 シーケ ンス一覧表の該当部分を反転表示する。 図 13は、 検索する文字列として 「受 注」 が入力された場合における検索結果を示している。 この例では、 メソッド名
「受注」 が反転表示されており、 入力された文字列に該当する項目を即座に見出 すことが可能になる。
次に、 図 14を参照し、 ポタン 64が操作された後、 メソッド集約 64 bが選 択された場合に実行される処理について説明する。
メソッド集約 6 4 bが選択されると、 表示処理部 2 3は、 シーケンス一覧表に 表示されているメソッドのうち、 同一または類似の名前を有するものが近接する ように並べ替えを行った後、 表示部 2 6に供給して表示を更新する。
その結果、 商品クラス 5 0 bに関するシーケンス一覧表は、 図 1 4に示すよう にメソッド g e t数量およびメソッド g e t在庫が連続するように並べ替えがな されることになる。 このように同一または類似するメソッドを近接して配置する ことで、 従来においては、 複数のシーケンス図に散在していた同一メソッドの呼 び出し方、 および、 使い方等の一貫性および整合性を容易にチェックすることが 可能となる。 また、 同一または類似するメソッドを近接して配置する他にも、 例 えば、 アルファベット順やあいうえお順に並べ替えることにより、 類似するメソ ッドが近接して表示されるので、 メソッド名の誤記等を簡単に見つけることが可 能になる。
次に、 図 1 5を参照し、 ポタン 6 4の詳細/省略 6 4 cが選択された場合の処 理について説明する。
詳細 Z省略 6 4 cが選択されると、 表示処理部 2 3は、 表示項目を選択するた めの画面 (図示せず) を表示部 2 6に表示させ、 表示項目の選択を受ける。 具体 的には、 接続元クラス、 接続元インスタンス、 シーケンス図 I D、 インスタンス 名、 生成インスタンス、 シーケンス N o . 、 メソッド名、 パラメ夕、 返り値、 接 続先クラス、 および、 接続先インスタンスのそれぞれについて表示の有無を入力 する画面の表示させて、 必要な項目の入力を受ける。
続いて、 表示処理部 2 3は、 シーケンス一覧表のうち、 先に指定された必要な 項目のみを選択して、 表示部 2 6に表示させる。 例えば、 必要な表示項目として、 インスタンス名とメソッド名のみが選択された場合には、 図 1 5の表示領域 6 7 に示す情報が表示される。
この例では、 各クラスのインスタンス名とメソッド名のみが表示されている。 例えば、 鉛筆インスタンスは、 在庫クラスのインスタンス A倉庫の g e t数量メ ソッドを呼び出していることが分かる。 又、 c a 1 c数量メソッドは、 商品クラ スの鉛筆インスタンスが有する c a 1 c数量自身を呼び出している。
このように、 必要項目以外を画面上から排除することにより、 シーケンス一覧
表の全体の一覧性を高めることが可能になるとともに、 検索速度を向上させるこ とが可能になる。
次に、 図 1 5に示す画面 6 0において、 ボタン 6 4が操作され、 矢線 6 4 aが 選択された場合の動作について説明する。
ポタン 6 4が操作され、 矢線 6 4 aが選択されると、 表示処理部 2 3は、 シー ケンス一覧表上に現在矢線が表示されていない場合には、 各メソッドの呼び出し 関係に応じた矢線を表示する。 また、 矢線が表示状態である場合には、 画面上か ら消去して非表示状態にする。 いまの例では、 図 1 5に示すように、 矢線は非表 示状態であるので、 表示処理部 2 3は、 矢線を表示状態にする。 その結果、 図 1 6に示すように、 矢線が表示されることになる。
このように、 矢線を必要に応じて表示または非表示の状態にすることにより、 他の情報の視認性を高めたり、 あるいは、 矢線によるメソッドの呼び出し関係の 視認性を高めたりすることを任意に選択することが可能になる。
次に、 図 1 6において、 ポタン 6 2が操作された後、 移動 6 2 aが選択された 場合に動作について説明する。
移動 6 2 aが選択されると、 任意のクラスを任意の位置に移動させることが可 能になる。 なお、 移動はクラス単位でのみ許可するものとする。 例えば、 図 1 6 において、 コントローラクラスが移動の対象として選択 (例えば、 マウスでクリ ック) された後、 このコントローラクラスを在庫クラスの右側に移動させる操作 がなされたとすると、 表示処理部 2 3は、 シーケンス一覧表上のコントローラク ラスが在庫クラスの右側に配置されるように並べ替え処理を行い、 並べ替えが終 了したデータを表示部 2 6に供給して表示させる。
その結果、 図 1 7の表示領域 6 7に示すように、 コントローラクラスが在庫ク ラスの後に表示されるとともに、 矢線の方向が適宜修正されて表示されることに なる。
このように、 クラスの位置を自由に変更することを可能としたので、 目的に応 じてクラスを再配置することにより、 メソッドの参照関係をより簡易に知ること が可能になる。
なお、 以上の例では、 クラスを移動させる場合について説明したが、 クラスを
削除したり、 表示または非表示の状態にしたり、 あるいは複写する処理を行うこ とも可能である。 例えば、 クラスを削除する場合には、 呼び出し関係を有する他 方のクラスとの関係が消滅するので、 その点を考慮して削除する。 また、 非表示 の状態にする場合も同様である。 このように、 表示されている内容に対してクラ ス単位で編集を許可することにより、 目的に応じて表示の態様を変更し、 作業性 を向上させることが可能になる。
次に、 任意のクラスが選択された後、 ポタン 6 3が操作されて逆変換 6 3 が 選択された場合に実行される処理について図 1 8を参照して説明する。 このフロ 一チヤ一トが開始されると、 以下のステツプが実行される。
ステップ S 3 0 :
逆変換部 2 4は、 表示処理部 2 3を介して入力部 2 7から取得した情報に応じ て、 指定されたクラスを特定する。 例えば、 入力部 2 7から、 複数のクラスを指 定する情報が入力された場合には、 逆変換部 2 4は指定された複数のクラスを特 定する。
ステップ S 3 1 :
逆変換部 2 4は、 指定されたクラスに含まれている、 シーケンス図における 1 本の矢線に対応するデータを取得する。 具体的には、 矢線の接続元と接続先のク ラス、 インスタンス、 および、 メソッド名等を取得する。
ステップ S 3 2 :
逆変換部 2 4は、 矢線に対応するデータの取得に成功したか否かを判定し、 取 得に成功した場合にはステップ S 3 3に進み、 それ以外の場合には処理を終了す る。
ステップ S 3 3 :
逆変換部 2 4は、 ステップ S 3 1において取得した矢線 1本に対応するデータ (接続元および接続先のデータ) から、 シーケンス図の矢線データ (ステップ S 3 1において取得したデータをクラス毎に分けて配置したデータ) を生成する。 ステップ S 3 4 :
逆変換部 2 4は、 シーケンス図の該当する部分に対して、 ステップ S 3 3で生 成した矢線データを書き込み、 ステップ S 3 1に戻って前述の場合と同様の処理
を繰り返す。
以上の処理によれば、 シーケンス一覧表上において所望のクラス群を指定し、 指定されたクラス群に対応するシーケンス図を作成することが可能になるので、 必要なクラスのみに着目したシーケンス図を簡易に作成することが可能になる。 次に、 ポタン 6 5が操作され、 相互チェック 6 5 aが選択された場合に実行さ れる処理について説明する。
ポタン 6 5が操作され、 相互チェック 6 5 aが選択されると、 チェック部 2 5 は、 図 1 9に示すフローチャートを実行する。
ステップ S 5 0 :
チェック部 2 5は、 デ一夕ベース 2 0から図 5に示すクラス図を読み込む。 ステップ S 5 1 :
チェック部 2 5は、 シーケンス一覧表の該当するクラス (ステップ S 5 0で読 み込んだクラス図に対応するクラス) に含まれているメソッドの一覧表であるメ ソッド一覧表を作成する。
ステップ S 5 2 :
チェック部 2 5は、 取得したクラスがシーケンス一覧表の最後の行であるか否 かを判定し、 最後の行である場合には処理を終了し、 それ以外の場合にはステツ プ S 5 3に進む。
ステップ S 5 3 :
チェック部 2 5は、 クラス図に含まれているメソッドと、 メソッド一覧表に含 まれているメソッドとを比較する。
ステップ S 5 4 :
チェック部 2 5は、 ステップ S 5 3の比較により、 両者が一致するか否かを判 定し、 両者が一致する場合には正常であるとしてステップ S 5 0に戻って同様の 処理を繰り返し、 それ以外の場合にはステップ S 5 5に進む。
ステップ S 5 5 :
チェック部 2 5は、 シーケンス一覧表上の該当する行全体を反転表示する。 ステップ S 5 6 :
チェック部 2 5は、 クラス図と不一致のメソッドが存在する旨を示すエラーメ
ッセージを表示する。
ところで、 シーケンス図上にあるメソッドはクラス図上のクラスのメソッドと して定義されている必要があるが、 以上の処理によれば、 シーケンス図上にある メソッドがクラス図上のメソッドとして定義されているか否かを自動的に判定す ることが可能となる。
本例では、 クラス図に含まれるクラスから呼び出されるメソッドと、 シ一ケン ス図上のメソッドが一致しているかをチェックしているが、 本発明はクラス図と シーケンス図の不一致をチェックすることを目的とするものであるため、 図示し ないが、 クラス図上のクラスとシーケンス図上のクラスとの不一致をチェックす るものも本発明に含まれる。
次に、 ポタン 6 5が操作され、 シーケンス番号 6 5 bが選択された場合に実行 される処理について図 2 0を参照して説明する。 このフローチャートが開始され ると、 以下のステップが実行される。
ステップ S 7 0 :
チェック部 2 5は、 シーケンス一覧表の所定の 1行を読み込む。
ステップ S 7 1 :
チェック部 2 5は、 読み込みに成功したか否か、 即ち、 未処理の行が残ってい た場合にはステップ S 7 2に進み、 それ以外の場合には処理対象が存在しないと して処理を終了する。
ステップ S 7 2 :
チェック部 2 5は、 読み込んだ行のシーケンス番号が 1 . であるか否か、 即ち、 階層が最も上の (入り口の) メソッドであるか否かを判定する。 1 . である場合 にはステップ S 7 3に進み、 それ以外の場合にはステップ S 7 6に進む。
ステップ S 7 3 :
チェック部 2 5は、 矢線の接続元の 「接続元クラス」 と、 「接続元インスタン ス」 のカラムに格納されている情報を取得する。
ステップ S 7 4 :
チェック部 2 5は、 これら双方のカラムが空であるか否かを判定し、 空である 場合には正常であるとしてステップ S 7 0に戻って同様の処理を繰り返し、 それ
以外の場合にはステップ S 7 5に進む。
ステップ S 7 5 :
チェック部 2 5は、 シーケンス番号が 1 . であるクラスは、 通常は入り口クラ スであり、 クラスの接続元クラスと接続元ィンスタンスは空であるのに、 何らか の情報が格納されている場合にはエラ一であるとして当該行を反転するとともに、 ェラーが発生した旨を示すメッセージを表示する。
ステップ S 7 6 :
チェック部 2 5は、 1行上のシーケンス番号との関係を取得する。
ステップ S 7 7 :
チェック部 2 5は、 1行上のシーケンス番号が 1階層上のクラスのものである か否かを判定し、 1階層上のクラスのものである場合にはステップ S 7 9に進み、 それ以外の場合にはステップ S 7 8に進む。 ここで、 1階層上であるか否かは、 シーケンス番号に含まれているドット 「. 」 の数を参照して決定する。 即ち、 ド ットの数が多い程、 階層が深いシーケンスだからである。
ステップ S 7 8 :
チェック部 2 5は、 1行上の接続元クラスおよび接続元ィンスタンスと、 当該 行の接続元クラスおよび接続元ィンスタンスとが一致するか否かを判定し、 一致 する場合には同一階層のシーケンスとして正常であることから、 ステップ S 7 0 に戻って同様の処理を繰り返し、 それ以外の場合にはステップ S 8 1に進む。 ステップ S 7 9 :
チェック部 2 5は、 1行上の接続先クラスおよび接続先ィンスタンスと、 当該 行の接続元クラスおよび接続元ィンスタンスとが一致するか否かを判定する。 ステップ S 8 0 :
チェック部 2 5は、 ステップ S 7 9の双方が一致するか否かを判定し、 この双 方が一致する場合には、 1行上が 1階層上のシーケンスであり、 また、 当該行が 1階層下のシーケンスである場合に該当するとともに、 正常な状態であるとして、 ステップ S 7 0に戻って同様の処理を繰り返し、 それ以外の場合にはステップ S 8 1に進む。
ステップ S 8 1 :
チェック部 2 5は、 1行上と当該行のシーケンスとが正常でないとして、 当該 行を反転するとともに、 正常でない旨を示すメッセージを表示し、 ステップ S 7 0に戻って同様の処理を繰り返す。
以上の処理によれば、 シーケンス番号の付与のしかたが正常であるか否かを自 動的にチェックすることが可能になる。
次に、 ポタン 6 5が操作され、 入り口 6 5 cが選択された場合に実行される処 理について図 2 1を参照して説明する。 このフローチャートが開始されると、 以 下の処理が実行される。
ステップ S 1 0 0 :
チェック部 2 5は、 シーケンス一覧表の所定の 1行を読み込む。
ステップ S 1 0 1 :
チェック部 2 5は、 読み込みに成功したか否か、 即ち、 未処理の行が残ってい た場合にはステップ S 1 0 2に進み、 それ以外の場合には処理対象が存在しない として処理を終了する。
ステップ S 1 0 2 :
チェック部 2 5は、 読み込んだ行のシーケンス番号が 1 . であるか否かを判定 し、 1 . である場合にはステップ S 1 0 3に進み、 それ以外の場合にはステップ S 1 0 0に戻って同様の処理を繰り返す。
ステップ S 1 0 3 :
チェック部 2 5は、 矢線の接続元の 「接続元クラス」 と、 「接続元インスタン ス」 のカラムに格納されている情報を取得する。
ステップ S 1 0 4 :
チェック部 2 5は、 これら双方のカラムが空であるか否かを判定し、 空である 場合にはステップ S 1 0 5に進み、 それ以外の場合には処理を終了する。
ステップ S 1 0 5 : - チェック部 2 5は、 シーケンス番号が 1 . であるクラスは、 通常は入り口クラ スであり、 クラスの接続元クラスと接続元インスタンスは空であるのに、 何らか の情報が格納されている場合にはエラーであるとして当該行を反転するとともに、 エラーが発生した旨を示すメッセージを表示した後、 処理を終了する。
以上の処理によれば、 入り口メソッドが正常であるか否かのチェックを行うこ とが可能になる。
次に、 ポタン 6 5が操作され、 パラメタ 6 5 dが選択された場合に実行される 処理について図 2 2を参照して説明する。 この処理は、 シーケンス一覧表に記載 されたメソッドのパラメタおよび返り値が正常であるか否かを判定する処理であ る。 このフローチャートが開始されると、 以下のステップが実行される。
ステップ S 1 2 0 :
チェック部 2 5は、 シーケンス一覧表の所定の 1行を読み込む。
ステップ S 1 2 1 :
チェック部 2 5は、 読み込みに成功したか否かを判定する。 即ち、 シーケンス 一覧表に未処理の行が存在しない場合には処理を終了し、 それ以外の場合にはス テツプ S 1 2 2に進む。
ステップ S 1 2 2 :
チェック部 2 5は、 ステップ S 1 2 0で読み込んだ所定の行の接続元のパラメ 夕と返り値とを取得する。
ステップ S 1 2 3 :
チェック部 2 5は、 ステップ S 1 2 0で読み込んだ所定の行の接続先のパラメ 夕と返り値とを取得する。
ステップ S 1 2 4 :
チェック部 2 5は、 接続元と接続先のパラメタおよび返り値の型および個数を 比較する。
ステップ S 1 2 5 :
チェック部 2 5は、 ステップ S 1 2 4の比較の結果、 両者が一致したか否かを 判定し、 一致した場合には正常であるとしてステップ S 1 2 0に戻って同様の処 理を繰り返し、 それ以外の場合にはステップ S 1 2 6に進む。
ステップ S 1 2 6 :
チェック部 2 5は、 現在の行を反転するとともに、 パラメ夕と返り値が正常で ない旨を示すメッセージを表示し、 ステップ S 1 2 0に戻って同様の処理を繰り 返す。
以上の処理によれば、 シーケンス一覧表に含まれている接続元と接続先のパラ メタが一致しない、 エラ一を有する行を自動的に検出することが可能になる。 なお、 以上の実施の形態においては、 シーケンス図からシーケンス一覧表を生 成するようにしたが、 例えば、 ソースファイルからシーケンス一覧表を生成する ことも可能である。 その場合には、 ソースファイルを各クラス毎に分解し、 各ク ラスから派生するインスタンスと、 各インスタンスに含まれているメソッドを特 定し、 メソッドの呼び出し関係を、 テキスト解析によって解析することにより得 ることができる。 そして、 そのようにして得られた情報に基づいて、 上述の場合 と同様の処理を施すことにより、 メソッド一覧表を生成することができる。
また、 以上に示したシーケンス一覧表の表示は一例であり、 このような場合の みに本発明が限定されるものではない。
最後に、 上記の処理機能は、 コンピュータによって実現することができる。 そ の場合、 シーケンス解析装置が有すべき機能の処理内容は、 コンピュータで読み 取り可能な記録媒体に記録されたプログラムに記述されており、 このプログラム をコンピュータで実行することにより、 上記処理がコンピュータで実現される。 コンピュータで読み取り可能な記録媒体としては、 磁気記録装置や半導体メモリ 等がある。 市場へ流通させる場合には、 C D— R OM(Compact Disk Read Only Memory)やフロッピ一ディスク等の可搬型記録媒体にプログラムを格納して流 通させたり、 ネットワークを介して接続されたコンピュータの記憶装置に格納し ておき、 ネットワークを通じて他のコンピュータに転送することもできる。 コン ピュー夕で実行する際には、 コンピュータ内のハードディスク装置等にプログラ ムを格納しておき、 メインメモリにロードして実行する。
以上説明したように本発明では、 オブジェクト言語で記述されたプログラムの シーケンスを解析するシーケンス解析方法において、 プログラムを構成するクラ スのクラス名を取得するクラス名取得ステップと、 各クラスから派生するインス タンスのインスタンス名を取得するインスタンス名取得ステップと、 各インスタ ンスに含まれているメソッドのメソッド名を取得するメソッド名取得ステップと、 各メソッドの呼び出し関係を取得する呼び出し関係取得ステップと、 前記クラ ス名取得ステップ、 前記インスタンス名取得ステップ、 および、 前記メソッド名
取得ステップにおいて取得された情報を表形式で一覧表示し、 前記呼び出し関係 取得ステップによって取得した情報に基づいて、 各メソッドの呼び出し関係を表 示したシーケンス一覧表を表示するシーケンス一覧表表示ステップと、 を設ける ようにしたので、 オブジェクト指向で記述されたシステムが有するシーケンスの 一覧性を向上させることが可能になる。
上記については単に本発明の原理を示すものである。 さらに、 多数の変形、 変 更が当業者にとって可能であり、 本発明は上記に示し、 説明した正確な構成およ び応用例に限定されるものではなく、 対応するすべての変形例および均等物は、 添付の請求項およびその均等物による本発明の範囲とみなされる。