JPH07319676A - メッセージフロー図生成方式 - Google Patents

メッセージフロー図生成方式

Info

Publication number
JPH07319676A
JPH07319676A JP10646394A JP10646394A JPH07319676A JP H07319676 A JPH07319676 A JP H07319676A JP 10646394 A JP10646394 A JP 10646394A JP 10646394 A JP10646394 A JP 10646394A JP H07319676 A JPH07319676 A JP H07319676A
Authority
JP
Japan
Prior art keywords
class
information
classes
inter
group
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.)
Pending
Application number
JP10646394A
Other languages
English (en)
Inventor
Gunji Tsukuda
軍治 佃
Tomohiro Watanabe
知宏 渡辺
Ichiro Naito
一郎 内藤
Hirobumi Danno
博文 団野
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.)
Hitachi Ltd
Hitachi Information Systems Ltd
Original Assignee
Hitachi Ltd
Hitachi Information Network Ltd
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 Hitachi Ltd, Hitachi Information Network Ltd filed Critical Hitachi Ltd
Priority to JP10646394A priority Critical patent/JPH07319676A/ja
Publication of JPH07319676A publication Critical patent/JPH07319676A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【目的】 ソフトウエア内に散在しているクラス間の関
係を集約し、図式表現することにより、クラス間の関係
の把握を容易にし、ソフトウエアの理解作業を効率化す
る。 【構成】 オブジェクト指向言語で記述されたソースプ
ログラムからクラス間のメッセージ送信関係をクラス間
関連情報として抽出し(101)、該クラス間関連情報
から表示すべき図面上のクラスの配置情報を作成し(1
02)、該クラス間関連情報と該配置情報から表示すべ
き図面上のクラス間の配線情報を作成し(103)、該
配置情報と該配線情報を出力する(104)。 【効果】 出力結果は、クラス間のメッセージ送信関係
を図式表示しているので、ソフトウエア内に散在してい
るクラス間の関係を容易に把握できる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ソフトウエアの生産性
向上に係わり、オブジェクト指向言語で開発されたソフ
トウエアからソフトウエアの重要な構成要素であるクラ
ス同士の関係を抽出し、図式表現するものであり、既開
発のソフトウエアの理解作業の効率向上に関係してお
り、さらには、既開発のソフトウエアの保守作業、機能
拡張作業の効率向上に関係している。
【0002】
【従来の技術】ソフトウエアの理解作業を効率化するこ
とは、ソフトウエア保守作業の効率向上に大きく貢献す
るだけでなく、ソフトウエア作業全体の効率向上にも大
きく貢献する。これは、例えば「ソフトウエアの保守・
再開発と再利用」(竹下亭著、共立出版)に、情報処理
要員の80%は保守に投入されており、新規開発は20
%である、また保守作業の割合は、アプリケーションの
理解50%、修正・拡張の実現50%であり、ソフトウ
エア作業全体におけるプログラム理解の割合は40%に
もなる、と記載されていることからも明らかである。
【0003】ソフトウエア理解の方法の1つとして、依
存関係をたどることによりプログラマの作成意図を判別
する方法がある。そのために、ソースプログラムに散在
している依存関係を集約したビューを提供する支援ツー
ルがさまざまに提供されている。オブジェクト指向言語
で記述されたソースプログラムにおける依存関係には、
クラス間の継承関係やメソッド間のメッセージ送信関係
に加えて、クラス間のメッセージ送信関係が存在する。
【0004】オブジェクト指向言語における依存関係の
表示に関して、クラス間の継承関係やメソッド間のメッ
セージ送信関係を図式表現する従来技術が存在する。こ
れは、例えば「Microsoft Visual C++ Development Sys
tem fow Windows Version1.0ユーザーズガイド」(199
3.10.25 初版第1刷発行)に記載されている。
【0005】
【発明が解決しようとする課題】前記の従来技術は、ソ
フトウエア内に散在しているクラス間の継承関係を集約
した図(以下、クラス継承図と呼ぶ)やメソッド間のメ
ッセージ送信関係を集約した図(以下、メソッド関連図
と呼ぶ)を表示するものあり、これらの図により、クラ
ス間の継承関係やメソッド間のメッセージ送信関係を容
易に把握することが可能となる。また、クラス間のメッ
セージ送信関係をメソッド関連図を用いて把握すること
も可能である。よって、従来技術はソフトウエア理解作
業の効率化に貢献している。
【0006】しかし、メソッド関連図を用いてクラス間
のメッセージ送信関係を把握するためには、メソッド関
連図に散在している情報を読み取らなければならないた
め、かなり困難である。例えば、あるクラスからのメッ
セージ送信先のクラスを特定するためには、そのクラス
で定義しているすべてのメソッドをメソッド関連図から
検出し、それらのメソッドからのメッセージ送信先のメ
ソッドを検出しなければならない。
【0007】また、クラス継承図とメソッド関連図は別
々の図であり、クラス全体の依存関係を把握するために
は、2種類の図を参照しなければならない。また、機能
単位などに基づいてクラスをグループ化し、グループ間
の依存関係を把握したい、というソフトウエア保守担当
者の要求に従来技術では答えることができない。
【0008】本発明の第1の目的は、ソフトウエア内に
散在しているクラス間の関係を集約し、図式表現するこ
とにより、クラス間の関係の把握を容易にし、ソフトウ
エアの理解作業を効率化することである。
【0009】本発明の第2の目的は、利用者のクラスに
対するグループ指定に応じて、グループ間の関係を読み
とれるようなクラス間の関係図を作成することにより、
グループ間の依存関係の把握を容易にし、ソフトウエア
の理解作業を効率化することである。
【0010】本発明の第3の目的は、利用者によるクラ
スまたはグループの表示位置指定に応じて、クラス間の
関係図を作成することにより、さらにクラス間、グルー
プ間の依存関係の把握を容易にし、ソフトウエアの理解
作業を効率化することである。
【0011】
【課題を解決するための手段】第1の目的を達成するた
めに、本発明のメッセージフロー図生成方式は、オブジ
ェクト指向言語で記述されたソースプログラムからクラ
ス間のメッセージ送信関係をクラス間関連情報として抽
出し、該クラス間関連情報から表示すべき図面上のクラ
スの配置情報を作成し、該クラス間関連情報と該配置情
報から表示すべき図面上のクラス間の配線情報を作成
し、該配置情報と該配線情報を出力する。さらに、前記
方法に加えて、クラス間の継承関係もクラス間関連情報
として抽出し、メッセージ送信関係か継承関係かを示す
種別情報と関連付けてクラス間の配線情報を作成し、メ
ッセージ送信関係に関する該配線情報と継承関係に関す
る該配線情報を該種別情報により別々の線の種類または
図形で出力する。
【0012】第2の目的を達成するために、前記方法に
加えて、該プログラム中の少なくとも一部のクラスを要
素とする少なくとも1つのグループの指定に基づき、ク
ラス配置情報作成前に、グループ内の各クラスに関する
クラス間関連情報をグループに関するクラス間関連情報
に変換する。
【0013】第3の目的を達成するために、前記方法に
加えて、クラスの配置情報を作成する際に、該プログラ
ム中の少なくとも一部のクラスまたはグループに対する
表示位置の指定に基づき、表示位置を指定されたクラス
またはグループからクラス配置情報を作成する。
【0014】第2、第3の目的を達成するために、前記
方法に加えて、該プログラム中の少なくとも一部のクラ
スを要素とする少なくとも1つのグループの指定と、該
プログラム中の少なくとも一部のクラスまたはグループ
に対する表示位置の指定に基づき、まず位置指定された
クラスの配置情報を作成し、次に位置指定されたグルー
プに属すクラスの配置情報を作成し、最後に残りのクラ
スの配置情報を作成するとともに、該グループ指定情報
と該配置情報を用いてグループの境界を示す線を出力す
る。
【0015】さらに、前記の第2、第3の目的を達成す
る方法におけるオブジェクト指向言語で記述されたソー
スプログラムからクラス間関連情報を抽出するステップ
の代わりに、予め用意したクラス関連情報を利用する。
【0016】
【作用】第1の目的を達成するために、本発明のメッセ
ージフロー図生成方式は、ソフトウエア内に散在してい
るクラス間のメッセージ送信関係を図式表示する。従っ
て、メッセージ送信関係に関しては、図を用いて関係を
把握することができるので、クラス間の関係の把握を容
易にし、ソフトウエアの理解作業を効率化することがで
きる。
【0017】また、第1の目的を達成するために、本発
明のメッセージフロー図生成方式は、ソフトウエア内に
散在しているクラス間の継承関係とメッセージ送信関係
を集約し、2つの関係を同時に1枚に図として表示す
る。従って、1枚の図からソフトウエア内に散在してい
るすべてのクラス間を把握することが可能となり、ソフ
トウエアの理解作業を効率化することができる。
【0018】第2の目的を達成するために、本発明のメ
ッセージフロー図生成方式は、該プログラム中の少なく
とも一部のクラスを要素とする少なくとも1つのグルー
プの指定に基づき、クラス配置情報作成前に、グループ
内の各クラスに関するクラス間関連情報をグループに関
するクラス間関連情報に変換する。従って、表示された
クラス間の関連図上では、グループが1つのクラスとし
て表示されるため、グループ間の依存関係を把握するこ
とが可能になり、ソフトウエアの理解作業を効率化する
ことができる。
【0019】第3の目的を達成するために、本発明のメ
ッセージフロー図生成方式は、指定された位置にクラ
ス、またはグループの表示を行なう。従って、特定のク
ラスまたはグループの表示位置を利用者が指定すること
により、利用者が自分にとって理解しやすいクラス間関
連図を作成することが可能となるので、クラス間、グル
ープ間の依存関係の把握が容易になり、ソフトウエアの
理解作業を効率化することができる。
【0020】第2、第3の目的を達成するために、本発
明のメッセージフロー図生成方式は、指定された位置に
クラス、またはグループの表示を行ない、グループの境
界を示す線も表示する。従って、特定のクラスまたはグ
ループの表示位置を利用者が指定することにより、利用
者が自分にとって理解しやすいクラス間関連図を作成す
ることが可能となり、また表示されたクラス間の関連図
上でグループの境界が明確となるので、クラス間、グル
ープ間の依存関係の把握が容易になり、ソフトウエアの
理解作業を効率化することができる。
【0021】さらに、第2、第3の目的を達成する方法
において、本発明のメッセージフロー図生成方式は、オ
ブジェクト指向言語で記述されたソースプログラムから
クラス間関連情報を抽出する代わりに、予め用意したク
ラス関連情報を利用する。したがって、以前作成したク
ラス間関連情報を利用することにより、既存ソースプロ
グラムからクラス間の関連情報を抽出するステップを省
略し、クラス間の関係を表示するまでの実行時間を短縮
することになり、ひいては、ソフトウエアの理解作業を
効率化することができる。
【0022】
【実施例】以下、本発明の実施例を図面により説明す
る。図3は、本実施例のハードウエア環境を示す図であ
る。図1は、本発明の第1の実施例における処理手順を
示し、図2は、機能構成を示している。第1の実施例の
メッセージフロー図生成方式を図1に従って説明する。
【0023】ステップ101は、利用者が指定したすべ
てのソースプログラム201を解析して、プログラム中
に存在するクラス間のメッセージ送信関係とクラス間の
継承関係を抽出し、クラス間関連情報203として登録
するステップである。図5は、ソースプログラム201
の例であり、オブジェクト指向言語の1つである C++
言語での記述例である。
【0024】図6は、インスタンス情報202の例であ
る。インスタンス情報は、クラス名と、そのクラスのイ
ンスタンスとして宣言された変数の名称から構成されて
いる。
【0025】図7は、クラス間関連情報202の例であ
る。クラス間関連情報は、関連元のクラス名称、関連先
のクラス名称、メッセージ名から構成されている。図4
は、1つのソースプログラムを対象とした時のステップ
101の詳細な処理手順を示している。以下、ステップ
101を詳細に説明する。
【0026】ステップ401は、ソースプログラムから
1文づつ文情報として取り出すステップである。例え
ば、図5中の501から506で示される部分を文情報
として取得する。また、ファイルの終了の場合には、フ
ァイル終了を示す情報を文情報として取得する。
【0027】ステップ402は、取得した文情報がファ
イル終了かどうか判定するステップである。ファイル終
了の場合は、ソース解析処理を終了する。ステップ40
3は、取得した文情報がクラス宣言文かどうかを判定す
るステップである。例えば、文情報501は、キーワー
ド class を先頭に含んでいるので、クラス宣言文と判
定する。ステップ403でクラス宣言文であると判定さ
れた場合、ステップ404を実行する。
【0028】ステップ404は、クラス宣言文からクラ
ス名を取得し、取得したクラス名がインスタンス情報2
02に未登録の場合、そのクラス名をインスタンス情報
に登録するステップである。例えば、文情報501から
取得したクラス名「B」は、インスタンス情報に未登録
であれば、そのクラス名をクラス名情報601として登
録する。
【0029】ステップ405は、宣言を行なうクラスが
他のクラスから性質を継承している場合に、宣言を行な
うクラスの名称を関連先クラス名とし、そのクラスの性
質の継承元であるクラスの名称を関連元クラス名とし
て、クラス間関連情報に登録するステップである。例え
ば、文情報501では、クラス「B」は、クラス「A」か
ら性質を継承しているため、クラス間関連情報701と
して登録する。
【0030】ステップ406は、取得した文情報の先頭
の名称がインスタンス宣言文であるかどうかを判定する
ステップである。例えば、文情報502の先頭の文字列
「D」はインスタンス情報にクラス名602として登録
されており、文情報502がクラス名から始まっている
ので、インスタンス宣言文であると判定する。ステップ
406でインスタンス宣言文であると判定された場合、
ステップ407を実行する。
【0031】ステップ407は、インスタンス宣言文か
らクラス名とインスタンス名を取得し、インスタンス情
報202中の該クラス名に対応する場所に該インスタン
ス名を設定する。例えば、文情報502の場合、クラス
名「D」に対応する場所603にインスタンス名「d」を
登録する。
【0032】ステップ408は、取得した文情報がクラ
スメソッド宣言開始文であるかどうかを判定するステッ
プである。例えば、文情報503には、クラス名
と「::」が連続して記述されているので、クラスメソッ
ド宣言文と判定する。ステップ409は、クラスメソッ
ド宣言文の中からクラス名を取得し、関連元クラス名と
してメモリに記憶するステップである。例えば、文情報
503の場合、クラス名「B」を関連元クラス名として
メモリに記憶する。
【0033】ステップ410は、取得した文情報がメッ
セージ送信文であるかどうか判定するステップである。
例えば、文情報505の場合、先頭の文字列「d」は図
6のインスタンス情報より、クラス「D」のインスタン
ス名であるので、メッセージ送信文であると判定でき
る。
【0034】ステップ411は、メッセージ送信文から
インスタンス名とメッセージ名を取得し、取得したイン
スタンス名に対応するクラス名をインスタンス情報から
検出し、該クラス名を関連先クラス名とし、該メッセー
ジ名とステップ409で記憶した関連元クラス名と関連
付けて、クラス間関連情報として登録するステップであ
る。ただし、関連元クラス名と関連先クラス名の組合せ
が既にクラス関連情報として登録されている場合には、
該当するクラス間関連情報のメッセージ名欄に該メッセ
ージを追加する。例えば、文情報504の場合、インス
タンス名「d」(603)より、関連元クラス名が「D」
(602)であることがわかり、メッセージ名は「pu
t」であり、ステップ409によりメモリに記憶した関
連元クラス名は「B」であるので、クラス間関連情報7
02として登録する。また、文情報506の場合、文情
報505に対するステップ411の実行により関連元ク
ラス名「B」と関連先クラス名「C」の組合せは既に登録
されている(703)ので、メッセージ名のみを登録す
る。ステップ412は、取得した文情報がクラスメソッ
ド宣言の終了を示しているかどうか判定するステップで
ある。これは、クラスメソッド宣言時からの括弧の対応
関係で判定する。
【0035】ステップ102は、ステップ101で作成
したクラス間関連情報203を用いて、クラス間のメッ
セージ送信関係と継承関係をクラス間の結合度として用
いて、クラス配置情報204を作成するステップであ
る。結合度を用いて、クラスの配置を行なう方法は、
「CAD / CAM MARUZEN Advanced Technology <電子・
情報・通信編>,1990, 藤代一成編、丸善刊」などに記
述されている。簡単に説明すると、まず種となるクラス
を適当に選択し、適当な場所に配置し、次に配置されて
いるクラスの集合と未配置のクラスの集合の間で結合度
が最大のペアを選択し、選択された既配置クラスの近傍
に選択された未配置クラスを置き、未配置クラスがなく
なるまで、ペアの選択と未配置クラスの配置を繰り返
す。
【0036】図8は、クラス配置情報の例を示してお
り、クラス配置を格子上に行なうことを示している。こ
こで、クラス間に両方向のメッセージ送信関係が存在す
るときのクラス間の結合度を2、片方向のメッセージ送
信関係のみ存在するときのクラス間の結合度を1、クラ
ス間に継承関係が存在する時の結合度を1に設定した場
合を考える。例えば、図7で示すクラス間関連情報よ
り、クラス「A」とクラス「B」は継承関係であるため結
合度は1、クラス「B」とクラス「D」は片方向のメッセ
ージ送信関係であるため結合度は1、クラス「B」とク
ラス「C」は両方向のメッセージ送信関係であるため結
合度は2となる。次にこれらの結合度を用いたクラス配
置の具体例を示す。まず種となるクラスに図7のクラス
関連情報の先頭にある関連元クラスである「A」に設定
し、配置情報の左上801に配置する。次に、クラス
「A」と結合度が最大であるクラス「B」をクラス「A」
の近傍である位置802に配置する。次に、既配置クラ
ス「A」, 「B」と、未配置クラス「C」, 「D」の間で結
合度が最大となるペアは、クラス「B」とクラス「C」で
あるので、クラス「C」をクラス「B」の近傍である位置
803に配置する。
【0037】ステップ103は、ステップ101で作成
したクラス間関連情報202とステップ102で作成し
たクラス配置情報204を用いて、クラス間配線情報2
05を作成するステップである。クラス間関連情報とク
ラス配置情報を用いて、クラス間の関連を示す線を配置
する方法は、「CAD / CAM MARUZEN Advanced Technolo
gy <電子・情報・通信編>, 1990, 藤代一成編、丸善
刊」などに記述されている。簡単に説明すると、関連元
クラスを示す箱の線上に開始点を定め、関連先クラスを
示す箱の線上に終了点を定め、開始点側と終了点側で交
互に水平、垂直方向の線分を発生し、開始点を起点とし
て発生した線分と終了点を起点として発生した線分が交
差した所で、発生したすべての線分を配線情報として登
録する。このとき、配線したクラス間の関係がメッセー
ジ送信関係であれば、送信しているメッセージ名をいず
れかの線分に結び付けて格納し、終了点を含む線分にメ
ッセージの方向を示す情報を結び付けて格納する。ま
た、配線したクラス間の関係が継承関係であれば、開始
点を含む線分に継承関係を示す情報を結び付けて格納す
る。ステップ103では、クラス間関連情報202内の
すべての行に対して上述の処理を行なう。
【0038】図9は、クラス間配線情報の例を示してお
り、線分の始点、線分の終点、線の種類、線分に付随す
るメッセージ名から構成されている。線種において、
「0」は普通の線分であることを、「1」は矢印である
ことを、「2」は継承関係の線分であることを示してい
る。
【0039】例えば、図7中のクラス関連情報702を
配線するときを考える。まず、関連元クラス「B」が位
置802に配置されているので、クラス「B」は画面上
の位置1001に表示されることになる。そこで、位置
1001上に配線の開始点1002を定める。また、同
様にして配線の終了点1003を定める。次に、開始点
1002から垂直方向に線分1004を引き、終了点1
003から垂直方向に線分1005を引く。そして、線
分1004上の点、例えば点1006から水平方向に線
分1007を引く。このとき、開始点を起点として発生
した線分1007と終了点を起点として発生した線分1
005が点1008で交差するので、クラス「B」から
クラス「D」への配線が完了したことになる。すなわ
ち、点1002から点1006への線分、点1006か
ら点1008への線分、点1008から点1003への
線分がクラス「B」からクラス「D」への配線である。よ
って、これらの線分をクラス関連情報901、902、
903として登録する。このとき、真中の線分の情報9
02にメッセージ名「put」を記憶し、終了点を含む線
分の情報903の線種に「1」を記憶している。
【0040】ステップ104は、クラス配置情報204
とクラス間配線情報205をメッセージフロー図として
プリンタまたは画面に表示するステップである。本ステ
ップでは、まずクラス配置情報から各クラスのクラス名
と配置位置を取得し、配置位置に基づいてクラスを示す
箱を表示し、その箱の中央にクラス名を表示する。次に
クラス配置情報から線分情報を取得し、始点と終点をも
とに線分の表示を行なう。取得した線分情報の種別が矢
印の場合には矢印を表示し、継承関係を示す場合には線
分に継承関係を意味する図形を付加して表示する。
【0041】図11は、クラス間の関連を示すメッセー
ジフロー図の例であり、図8のクラス配置情報と図9の
クラス間配線情報を画面に表示した例である。本実施例
におけるクラス間関連情報としてメッセージ送信関係の
みを扱った場合、オブジェクト指向言語で記述されたソ
ースプログラムからクラス間のメッセージ送信関係をク
ラス間関連情報として抽出し、該クラス間関連情報から
表示すべき図面上のクラスの配置情報を作成し、該クラ
ス間関連情報と該配置情報から表示すべき図面上のクラ
ス間の配線情報を作成し、該配置情報と該配線情報を出
力するので、クラス間のメッセージ送信関係が図式表示
される。したがって、ソフトウエア内に散在しているク
ラス間のメッセージ送信関係の把握が容易になり、ソフ
トウエアの理解作業を効率化することができる。
【0042】例えば、プログラムが100個のクラスか
ら構成され、1つのクラスが5個のメソッドから構成さ
れ、各メソッドから他のメソッドに4つのメッセージを
送信し、各クラスからのメッセージ送信先となるクラス
には5つのメソッド間メッセージを送信している時に、
あるクラスからのメッセージ送信先となるクラスを特定
する場合を考える。この時、従来技術によるメソッド間
関連図は、メソッドを示す500(100*5)個のボ
ックスとメソッド間メッセージを示す2000(500
*4)個の矢印から構成され、本実施例によるメッセー
ジフロー図は、クラスを示す100個のボックスとクラ
ス間メッセージを示す400(2000/5)個の矢印
から構成される。メソッド間関連図を用いると、500
個のボックスから5個のメソッドを検索し、検索した各
メソッドからのメッセージ送信先であるメソッド計20
(5*4)個を検索し、クラスの重複を排除することに
より、4(20/5)個の送信先のクラスを特定しなけ
ればならない。一方、メッセージフロー図を用いると、
100個のボックスから1つのクラスを検索し、検索し
たクラスからメッセージ送信先であるクラス4個を特定
すればよい。
【0043】また、本実施例によれば、オブジェクト指
向言語で記述されたソースプログラムからクラス間のメ
ッセージ送信関係と継承関係をクラス間関連情報として
抽出し、該クラス間関連情報から表示すべき図面上のク
ラスの配置情報を作成し、該クラス間関連情報と該配置
情報から表示すべき図面上のクラス間の配線情報をメッ
セージ送信関係か継承関係かを示す種別情報と関連付け
て作成し作成し、該配置情報出力後、メッセージ送信関
係に関する該配線情報と継承関係に関する該配線情報を
該種別情報により別々の線の種類または図形で出力する
ので、クラス間のメッセージ送信関係と継承関係が区別
可能な状態で図式表示される。したがって、ソフトウエ
ア内に散在しているクラス間のメッセージ送信関係と継
承関係の把握が容易になり、ソフトウエアの理解作業を
効率化することができる。
【0044】本発明の第二の実施例の処理手順を図12
に、機能構成を図13に示す。図12中のステップ10
1、103、104は、第一の実施例と同一の処理を行
なっている。第二の実施例のメッセージフロー図生成方
式を図12に従って説明する。
【0045】図14は、クラス間関連情報の例であり、
第二の実施例におけるステップ101の実行結果であ
る。ステップ1201、ステップ1202は、ユーザ指
定情報1301に基づいてクラス配置情報204を作成
するステップである。
【0046】ユーザ指定情報1301は、グループを構
成するクラス一覧、グループの配置位置、クラスの配置
位置を指定している情報である。図15は、ユーザ指定
情報の例であり、識別子情報、名称情報、位置指定情報
から構成されている。識別子情報が「GRP」の場合、名
称情報はグループ名であり、位置指定情報はクラス配置
情報204上でのグループの配置領域の左上の座標と右
下の座標である。識別子情報が「CLS」の場合、名称情
報はクラス名であり、位置指定情報はクラス配置情報2
04上でのクラスの配置位置の座標である。また、識別
子情報「GRP」から次の識別子情報「GRP」の間にあるク
ラス名が1つのグループを構成することを示し、該グル
ープのグループ名は、先の識別子情報「GRP」と同一行
にある名称情報に記述されている名称である。例えば、
情報1401よりグループ「X」は、クラス「A」、
「B」から構成されており、クラス「A」の配置座標が
(1、1)、クラス「B」の配置座標が(1、2)であ
ることがわかり、情報1402よりグループ「Y」は、
クラス「C」、「D」から構成されており、グループ
「Y」の配置領域は(2、1)を左上の座標、(2、
2)を右下の座標とした時の長方形の領域であることが
わかる。グループの位置指定情報として「0」が指定さ
れた場合には、該グループに含まれるすべてのクラスを
画面またはプリンタに出力しないことを意味する。クラ
スの位置指定情報として「0」が指定された場合には、
該グループを画面またはプリンタに出力しないことを意
味する。例えば、情報1403より、クラス「F」は出
力を行なわないことを意味している。
【0047】ステップ1201は、ユーザ指定情報13
01によって位置指定されているクラスをクラス配置情
報204上の指定された位置に配置するステップであ
る。このとき、配置したクラスは未配置クラスの集合か
ら取り除き、既配置クラスの集合に追加する。ただし、
位置指定に「0」を指定されたクラスの場合には、未配
置クラスの集合から該クラスを取り除くことのみ行な
う。例えば、クラス「F」は、未配置クラスの集合から
取り除くが、クラス配置情報204には登録しない。
【0048】図16は、クラス配置情報の例であり、図
15のユーザ指定情報に基づいて、クラス「A」「B」を
配置した結果を示している。
【0049】ステップ1202は、ユーザ指定情報13
01によって位置指定されているグループに含まれるク
ラスをクラス配置情報204上の指定された領域に配置
するステップである。これは、ステップ102をグルー
プに対応するように変更したステップであり、指定され
た領域に隣接する位置に配置されているクラスの集合を
グループに関する初期の既配置クラスの集合とし、グル
ープに含まれるクラスの集合をグループに関する初期の
未配置クラスの集合とし、グループ既配置クラス集合と
グループ未配置クラス集合の間で結合度が最大のペアを
選択し、選択された既配置クラスの近傍かつ位置指定さ
れた領域内に選択された未配置クラスを置き、未配置ク
ラスがなくなるまで、ペアの選択と未配置クラスの配置
を繰り返す。だだし、位置指定に「0」を指定されたグ
ループの場合には、全体の未配置クラスの集合から該グ
ループに含まれるすべてのクラスを取り除くことのみ行
なう。
【0050】例えば、情報1502で示されるグループ
を配置する場合、指定された領域1601に隣接するク
ラスは「A」「B」であるので、これらを既配置クラスの
集合とし、「C」「D」は該グループに含まれているの
で、これらを未配置クラスの集合とする。「A」と「C」
は結合度が最大であるペアの1つであるので、「A」の
近傍かつ領域1601内である位置1602にクラス
「C」を配置する。
【0051】ステップ1203は、ステップ1201、
ステップ1202によるクラス配置後の未配置クラスの
配置を行なうステップである。本ステップは、種となる
クラスを選択することを行なわないこと以外は、ステッ
プ102と同じ処理を行なう。 ステップ1204は、
ステップ101で作成したクラス間関連情報202とス
テップ102で作成したクラス配置情報204を用い
て、クラス間配線情報205を作成するステップであ
る。ステップ1204は、クラス配置情報204に登録
されていないクラスに関する配線処理を行なわないこと
以外は、ステップ103と同じである。例えば、クラス
間関連情報1401の関連先クラス名「F」は、ステッ
プ1201によりクラス関連情報に未登録となるため、
情報1401に関する配線処理は行なわない。
【0052】図17は、クラス間やグループ間の関連を
示すメッセージフロー図の例である。
【0053】ステップ1205は、ユーザ指定情報13
01とクラス配置情報204を用いて、グループの境界
を示す線とグループ名を画面またはプリンタに出力する
ステップである。例えば、グループ「X」は、情報15
01よりクラス「A」、クラス「B」より構成されている
ことがわかる。よって、クラス「A」の出力箇所170
1とクラス「B」の出力箇所1702を囲む境界線17
03を出力し、境界線1703の近傍にグループ名
「X」(1704)を表示している。
【0054】本実施例によれば、クラスを要素とするグ
ループの指定とクラスとグループの表示位置の指定に基
づき、クラスの配置を行なう際に、まず位置指定された
クラスの配置を行ない、次に位置指定されたグループに
属すクラスの配置を行ない、最後に残りのクラスの配置
を行なうので、利用者の意図するクラス間関連図を作成
することが可能となる。また、画面またはプリンタにク
ラス間関連情報を図式表示する際に、グループの境界を
示す線も表示するので、グループの境界が明確になる。
したがって、利用者が理解のレベルに応じて、理解しや
すいクラス間関連図に修正することが可能となり、グル
ープの境界が明確となるので、概クラス間関連図を用い
たクラス間、グループ間の依存関係の把握が容易にな
り、ソフトウエアの理解作業を効率化することができ
る。
【0055】また、本実施例におけるオブジェクト指向
言語で記述されたソースプログラムからクラス間関連情
報を抽出するステップの代わりに、予め用意したクラス
間関連情報を利用することを考える。このとき、以前作
成したクラス間関連情報を利用すれば、利用者によるグ
ループ指定や表示位置指定の変更後にクラス間の関連を
図式表示するときに、既存ソースプログラムからクラス
間の関連情報を抽出するステップを省略することが可能
になる。したがって、利用者によるグループや表示位置
の指定からクラス間の関連の図式表示までの実行時間を
短縮することになるので、ソフトウエアの理解作業を効
率化することができる。
【0056】本発明の第三の実施例の処理手順を図18
に、機能構成を図19に示す。図18中のステップ10
1、103、104は、第一の実施例と同一の処理を行
なっている。また、ステップ1203は、第二の実施例
と同一の処理を行なっている。第三の実施例のメッセー
ジフロー図生成方式を図18に従って説明する。ステッ
プ1801は、ユーザ指定情報1901を用いて、クラ
ス間関連情報203を変更するステップである。
【0057】図20は、ユーザ指定情報1901の例で
あり、グループ名、グループの位置指定、グループに含
まれるクラス名から構成されている。グループ内のすべ
てのクラスを表示する代わりに、グループを1つの仮想
的なクラスとして扱って表示を行なうことを意味してい
る。例えば、ユーザ指定情報2001は、クラス
「A」、クラス「B」を表示する代わりに、クラス「X」
を表示することを意味している。また、位置指定欄が
「0」の場合、そのグループの表示を抑制することを意
味し、グループ名欄が空白の場合、クラス名欄の最初に
記載されているクラス名をグループ名とする。例えば、
ユーザ指定情報2002は、クラス名が「F」であり、
当該グループの表示を抑制することを意味している。
【0058】図21は、クラス間関連情報の例であり、
図14のクラス間関連情報を図20のユーザ指定情報を
用いて変更した後のものである。ステップ1801で
は、まず、ユーザ指定情報の位置指定に「0」を指定さ
れたグループ内のすべてのクラスに関する行情報をクラ
ス間関連情報から削除する。次にグループ内のすべての
クラスについて、該クラス名が関連元クラス名、または
関連先クラス名として格納されていれば、該クラス名を
グループ名に置換する。この置換作業をすべてのグルー
プについて行なう。次に、クラス名称置換後のクラス間
関連情報中で、関連元クラス名と関連先クラス名が同一
である行を削除し、関連元クラス名と関連先クラス名の
組合せが同一である行が複数あれば、1つの行に統合
し、メッセージ名欄に関係するメッセージをすべて連記
する。例えば、ユーザ指定情報2002より、行情報1
401は削除される。また、ユーザ指定情報2001よ
り、行情報1402の関連元クラス名と関連先クラス名
の両方とも「X」に置換されるので、行情報1402も
削除される。また、ユーザ指定情報2001、2003
より、行情報1403と行情報1404の関連元クラス
名は「X」、関連先クラス名は「Y」になるので、行情報
1403と行情報1404のメッセージ名を統合し、行
情報2101とする。
【0059】ステップ1802は、ユーザ指定情報19
01から位置指定されているグループ名と位置指定情報
を抽出し、クラス配置情報204の指定箇所に該グルー
プを配置するステップである。例えば、情報2002よ
り、グループ「X」は、クラス配置情報204中の
(1、1)の位置に配置される。
【0060】図22は、クラス間やグループ間の関連を
示すメッセージフロー図の例であり、第二の実施例と同
一のソースプログラムを対象としたときのステップ10
4の実行結果である。本実施例によれば、クラスを要素
とするグループの指定に基づき、クラス配置前に、グル
ープ内の各クラスに関するクラス間関連情報をグループ
に関するクラス関連情報に変換するので、表示されたク
ラス間の関連図上では、グループが1つのクラスとして
表示される。したがって、グループ間の依存関係を把握
することが可能になり、ソフトウエアの理解作業を効率
化することができる。
【0061】また、本実施例によれば、クラスまたはグ
ループの表示位置の指定に基づき、クラスの配置を行な
う際に、表示位置を指定されたクラスまたはグループか
ら配置を行なうので、利用者の意図するクラス間関連図
を作成することが可能となる。したがって、利用者が理
解のレベルに応じて、理解しやすいクラス間関連図に修
正することが可能となるので、概クラス間関連図を用い
たクラス間、グループ間の依存関係の把握が容易にな
り、ソフトウエアの理解作業を効率化することができ
る。
【0062】また、本実施例におけるオブジェクト指向
言語で記述されたソースプログラムからクラス間関連情
報を抽出するステップの代わりに、予め用意したクラス
間関連情報を利用することを考える。このとき、以前作
成したクラス間関連情報を利用すれば、利用者によるグ
ループ指定や表示位置指定の変更後にクラス間の関連を
図式表示するときに、既存ソースプログラムからクラス
間の関連情報を抽出するステップを省略することが可能
になる。したがって、利用者によるグループや表示位置
の指定からクラス間の関連の図式表示までの実行時間を
短縮することになるので、ソフトウエアの理解作業を効
率化することができる。
【0063】
【発明の効果】本発明は、以上に説明した処理手順を有
するので、以下に記載するような効果を持つ。オブジェ
クト指向言語で記述されたソースプログラムからクラス
間のメッセージ送信関係をクラス間関連情報として抽出
し、該クラス間関連情報から表示すべき図面上のクラス
の配置情報を作成し、該クラス間関連情報と該配置情報
から表示すべき図面上のクラス間の配線情報を作成し、
該配置情報と該配線情報を出力するので、クラス間のメ
ッセージ送信関係が図式表示される。したがって、ソフ
トウエア内に散在しているクラス間のメッセージ送信関
係の把握が容易になり、ソフトウエアの理解作業を効率
化することができる。
【0064】また、前記方法において、クラス間の継承
関係もクラス間関連情報として抽出し、メッセージ送信
関係か継承関係かを示す種別情報と関連付けてクラス間
の配線情報を作成し、メッセージ送信関係に関する該配
線情報と継承関係に関する該配線情報を該種別情報によ
り別々の線の種類または図形で出力するので、クラス間
のメッセージ送信関係と継承関係が区別して図式表示さ
れる。したがって、ソフトウエア内に散在しているクラ
ス間のメッセージ送信関係と継承関係の把握が容易にな
り、ソフトウエアの理解作業を効率化することができ
る。
【0065】また、前記方法において、クラスを要素と
するグループの指定に基づき、クラス配置前に、グルー
プ内の各クラスに関するクラス間関連情報をグループに
関するクラス関連情報に変換するので、表示されたクラ
ス間の関連図上では、グループが1つのクラスとして表
示される。したがって、グループ間の依存関係を把握す
ることが可能になり、ソフトウエアの理解作業を効率化
することができる。
【0066】また、前記方法において、クラスまたはグ
ループの表示位置に基づき、クラスの配置を行なう際
に、表示位置を指定されたクラスまたはグループから配
置を行なうので、利用者の意図するクラス間関連図を作
成することが可能となる。したがって、利用者が理解の
レベルに応じて、理解しやすいクラス間関連図に修正す
ることが可能となるので、概クラス間関連図を用いたク
ラス間、グループ間の依存関係の把握が容易になり、ソ
フトウエアの理解作業を効率化できる。
【0067】また、前記方法において、クラスを要素と
するグループの指定とクラスとグループの表示位置の指
定に基づき、クラスの配置を行なう際に、まず位置指定
されたクラスの配置を行ない、次に位置指定されたグル
ープに属すクラスの配置を行ない、最後に残りのクラス
の配置を行なうので、利用者の意図するクラス間関連図
を作成することが可能となる。また、画面またはプリン
タにクラス間関連情報を図式表示する際に、グループの
境界を示す線も表示するので、グループの境界が明確に
なる。したがって、利用者が理解のレベルに応じて、理
解しやすいクラス間関連図に修正することが可能とな
り、グループの境界が明確となるので、概クラス間関連
図を用いたクラス間、グループ間の依存関係の把握が容
易になり、ソフトウエアの理解作業を効率化することが
できる。
【0068】また、前記方法において、オブジェクト指
向言語で記述されたソースプログラムからクラス間関連
情報を抽出する代わりに、予め用意したクラス関連情報
を利用する。したがって、以前作成したクラス間関連情
報を利用することにより、既存ソースプログラムからク
ラス間の関連情報を抽出するステップを省略し、クラス
間の関係を表示するまでの実行時間を短縮することにな
り、ひいては、ソフトウエアの理解作業を効率化するこ
とができる。
【図面の簡単な説明】
【図1】第一の実施例の処理手順を示す図である。
【図2】第一の実施例の機能構成を示す図である。
【図3】ハードウエア環境を示す図である。
【図4】ソース解析処理(ステップ101)の詳細な処
理手順を示す図である。
【図5】ソースプログラムの例である。
【図6】インスタンス情報の例である。
【図7】第一の実施例におけるクラス間関連情報の例で
ある。
【図8】第一の実施例におけるクラス配置情報の例であ
る。
【図9】クラス間配線情報の例である。
【図10】配線処理の手順を説明するための図である。
【図11】第一の実施例におけるメッセージフロー図の
例である。
【図12】第二の実施例の処理手順を示す図である。
【図13】第二の実施例の機能構成を示す図である。
【図14】第二の実施例におけるクラス間関連情報の例
である。
【図15】第二の実施例におけるユーザ指定情報の例で
ある。
【図16】第二の実施例におけるクラス配置情報の例で
ある。
【図17】第二の実施例におけるメッセージフロー図の
例である。
【図18】第三の実施例の処理手順を示す図である。
【図19】第三の実施例の機能構成を示す図である。
【図20】第三の実施例におけるユーザ指定情報の例で
ある。
【図21】第三の実施例におけるクラス間関連情報の例
である。
【図22】第三の実施例におけるメッセージフロー図の
例である。
【符号の説明】
101…プログラムソースを解析するステップ、102
…クラスを配置するステップ、103…クラス間を配線
するステップ、104…メッセージフロー図を表示する
ステップ、1201…位置指定されたクラスを配置する
ステップ、1202…グループ指定されたクラスを配置
するステップ、1203…未配置クラスを配置するステ
ップ、1204…第二の実施例においてクラス間を配線
するステップ、1205…グループに関する情報を表示
するステップ、1801…クラス間関連情報を変更する
ステップ、1802…第三の実施例において位置指定さ
れたクラスを配置するステップ。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 内藤 一郎 神奈川県川崎市麻生区王禅寺1099番地 株 式会社日立製作所システム開発研究所内 (72)発明者 団野 博文 神奈川県川崎市麻生区王禅寺1099番地 株 式会社日立製作所システム開発研究所内

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】オブジェクト指向言語で記述されたソース
    プログラムからクラス間のメッセージ送信関係をクラス
    間関連情報として抽出し、該クラス間関連情報から表示
    すべき図面上のクラスの配置情報を作成し、該クラス間
    関連情報と該配置情報から表示すべき図面上のクラス間
    の配線情報を作成し、該配置情報と該配線情報を出力す
    ることにより、クラス間のメッセージ送信関係を図式表
    示することを特徴とする、メッセージフロー図生成方
    式。
  2. 【請求項2】請求項1記載のメッセージフロー図生成方
    式において、クラス間の継承関係もクラス間関連情報と
    して抽出し、メッセージ送信関係か継承関係かを示す種
    別情報と関連付けてクラス間の配線情報を作成し、メッ
    セージ送信関係に関する該配線情報と継承関係に関する
    該配線情報を該種別情報により別々の線の種類または図
    形で出力することにより、クラス間のメッセージ送信関
    係と継承関係を図式表示することを特徴とする、メッセ
    ージフロー図生成方式。
  3. 【請求項3】請求項1、2記載のメッセージフロー図生
    成方式において、該プログラム中の少なくとも一部のク
    ラスを要素とする少なくとも1つのグループの指定に基
    づき、クラス配置情報作成前に、グループ内の各クラス
    に関するクラス間関連情報をグループに関するクラス間
    関連情報に変換することを特徴とする、メッセージフロ
    ー図生成方式。
  4. 【請求項4】請求項1、2、3記載のメッセージフロー
    図生成方式において、クラスの配置情報を作成する際
    に、該プログラム中の少なくとも一部のクラスまたはグ
    ループに対する表示位置の指定に基づき、表示位置を指
    定されたクラスまたはグループからクラス配置情報を作
    成することを特徴とする、メッセージフロー図生成方
    式。
  5. 【請求項5】請求項1、2記載のメッセージフロー図生
    成方式において、該プログラム中の少なくとも一部のク
    ラスを要素とする少なくとも1つのグループの指定と、
    該プログラム中の少なくとも一部のクラスまたはグルー
    プに対する表示位置の指定に基づき、まず位置指定され
    たクラスの配置情報を作成し、次に位置指定されたグル
    ープに属すクラスの配置情報を作成し、最後に残りのク
    ラスの配置情報を作成することと、該グループ指定情報
    と該配置情報を用いてグループの境界を示す線を出力す
    ることを特徴とする、メッセージフロー図生成方式。
  6. 【請求項6】請求項1、2、3、4、5記載のメッセー
    ジフロー図生成方式において、オブジェクト指向言語で
    記述されたソースプログラムからクラス間関連情報を抽
    出する代わりに、予め用意したクラス間関連情報を利用
    することを特徴とする、メッセージフロー図生成方式。
JP10646394A 1994-05-20 1994-05-20 メッセージフロー図生成方式 Pending JPH07319676A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10646394A JPH07319676A (ja) 1994-05-20 1994-05-20 メッセージフロー図生成方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10646394A JPH07319676A (ja) 1994-05-20 1994-05-20 メッセージフロー図生成方式

Publications (1)

Publication Number Publication Date
JPH07319676A true JPH07319676A (ja) 1995-12-08

Family

ID=14434268

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10646394A Pending JPH07319676A (ja) 1994-05-20 1994-05-20 メッセージフロー図生成方式

Country Status (1)

Country Link
JP (1) JPH07319676A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030018722A (ko) * 2001-08-31 2003-03-06 (주) 소프트4소프트 소프트웨어 유지보수를 위한 자료 흐름 그래프 자동 생성방법
US7062751B2 (en) 2000-12-08 2006-06-13 Fujitsu Limited Sequence analysis method and apparatus
JP2007219649A (ja) * 2006-02-14 2007-08-30 Mitsubishi Electric Corp ダイヤグラム編集装置
JP2008123254A (ja) * 2006-11-13 2008-05-29 Nippon Shoken Technology Kk Java言語プログラムを用いた大規模業務系の影響分析ツール
JP2015535370A (ja) * 2012-09-28 2015-12-10 アビニシオ テクノロジー エルエルシー プログラミング属性のグラフィカル表現
US11132385B2 (en) 2017-07-21 2021-09-28 Fujitsu Limited Information processing device and information processing method

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7062751B2 (en) 2000-12-08 2006-06-13 Fujitsu Limited Sequence analysis method and apparatus
KR20030018722A (ko) * 2001-08-31 2003-03-06 (주) 소프트4소프트 소프트웨어 유지보수를 위한 자료 흐름 그래프 자동 생성방법
JP2007219649A (ja) * 2006-02-14 2007-08-30 Mitsubishi Electric Corp ダイヤグラム編集装置
JP2008123254A (ja) * 2006-11-13 2008-05-29 Nippon Shoken Technology Kk Java言語プログラムを用いた大規模業務系の影響分析ツール
JP2015535370A (ja) * 2012-09-28 2015-12-10 アビニシオ テクノロジー エルエルシー プログラミング属性のグラフィカル表現
US11132385B2 (en) 2017-07-21 2021-09-28 Fujitsu Limited Information processing device and information processing method

Similar Documents

Publication Publication Date Title
JP2765969B2 (ja) 図式データ駆動型プログラム開発支援装置
US5278946A (en) Method of presenting multimedia data in a desired form by comparing and replacing a user template model with analogous portions of a system
US5187789A (en) Graphical display of compiler-generated intermediate database representation
Paulisch et al. EDGE: An extendible graph editor
Carling et al. Program visualization: Graphical support for software development
CN101410798A (zh) 用于生成应用数据编辑器的方法和系统
JP2008140410A (ja) コンピュータプログラムを発生する方法及びシステム
JPH0683598A (ja) ジョブフロー仕様書自動作成方法
CN108108194A (zh) 用户界面编辑方法以及用户界面编辑器
JPH07319676A (ja) メッセージフロー図生成方式
US20140026056A1 (en) Apparatus and method for interactive user software interface design
JP2006202308A (ja) グラフィカルユーザインターフェース方法、グラフィカルユーザインターフェース装置、及び記録媒体
Trickey Drag: A graph drawing system
CN108762750A (zh) 一种基于fmp模型的可视化界面生成方法和系统
JP6251860B2 (ja) 情報管理装置並びにファイル管理方法
JP3166699B2 (ja) オブジェクト指向プログラム設計支援装置、方法および記録媒体
JP3988900B2 (ja) 文書処理装置およびそのプログラム記憶媒体
JP4663526B2 (ja) 帳票作成支援装置、帳票作成支援方法、および帳票作成支援プログラム
JP3883644B2 (ja) 引出線自動作成方法ならびにそのための引出線自動作成装置およびプログラム記憶媒体
Brun et al. The token-oriented approach to program editing
Yuen et al. Assembly language software development system
JPS61235950A (ja) コ−ドジエネレ−タを構成する方法
Gutwenger et al. GoVisual for CASE Tools Borland Together ControlCenter and Gentleware Poseidon–System Demonstration
Saigal IVCon: A GUI-based tool for visualizing and modularizing crosscutting concerns
JPH02277127A (ja) 画面編集方法とそれを用いるビジュアルプログラミング方法