JPH06124200A - ソフトウェア構造解析支援システム - Google Patents

ソフトウェア構造解析支援システム

Info

Publication number
JPH06124200A
JPH06124200A JP4276106A JP27610692A JPH06124200A JP H06124200 A JPH06124200 A JP H06124200A JP 4276106 A JP4276106 A JP 4276106A JP 27610692 A JP27610692 A JP 27610692A JP H06124200 A JPH06124200 A JP H06124200A
Authority
JP
Japan
Prior art keywords
class
objects
classes
display
registered
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
JP4276106A
Other languages
English (en)
Inventor
Akihiro Yamashiro
明宏 山城
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP4276106A priority Critical patent/JPH06124200A/ja
Publication of JPH06124200A publication Critical patent/JPH06124200A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】オブジェクト指向プログラミングによってプロ
グラムされたソフトウェアについて、たとえクラスの定
義や構造が変更される場合であっても、それらクラスと
オブジェクトとの関係構造を明確に表示してその構造解
析を支援する。 【構成】クラスのみならず、アプリケ−ションプログラ
ムにおいて随時宣言、生成される全てのオブジェクトに
対しても、その存在と親となるクラスの情報をデ−タベ
−スに登録して同時管理する。その上で、これら登録さ
れた全てのオブジェクトを対象に、適宜ユーザ指定され
るクラスに関連する1乃至複数のオブジェクトを当該ク
ラスの従属(親子)関係及びそれらオブジェクトの具象
化態様に基づき検索してこれを表示手段に識別表示す
る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、ソフトウェアの開発
や保守に際してそのソフトウェア構造の解析作業を支援
するソフトウェア構造解析支援システムに関し、特に、
オブジェクト指向プログラミングによってプログラムさ
れたソフトウェアについて、そのクラスからみたオブジ
ェクトとクラスの関係構造解析を支援するに好適なシス
テムの具現に関する。
【0002】
【従来の技術】オブジェクト指向プログラミングとは周
知のように、計算機記憶装置上に割り当てられた時点で
値をもつことができる属性群(データ群)とその属性群
の値を操作する操作関数群(メソッド群)とをまとめた
概念上の単位であるクラスを予め定義するとともに、該
クラスを型として、その1つのクラス、若しくは上記操
作関数群が階層的に継承された複数のクラスによる修飾
(宣言)によって、その実体であるオブジェクトを生成
し、これら生成したオブジェクト同士の計算機記憶装置
上での情報(メッセージ)のやり取りを記述することに
よってソフトウェア(プログラム)開発を行うプログラ
ミング手法である。
【0003】また、このようなオブジェクト指向による
プログラミングが、 ・プログラムの再利用を容易とする。
【0004】・これにより、ソフトウェアの開発効率も
著しく向上される。
【0005】等の理由によって、近年大いに注目されて
いるプログラミング手法であることもよく知られてい
る。
【0006】ところで、いわゆる手続き型のプログラミ
ング言語を用いる伝統的なプログラム開発環境では、ク
ロスリファレンスという考え方があり、例えば特定のデ
−タをアクセスする処理の一覧や特定の処理がアクセス
するデ−タの一覧を表示する機能が、ソフトウェア開発
/保守支援環境の一部として提供されている。
【0007】一方、オブジェクト指向型のプログラミン
グ言語を用いる近年のプログラム開発環境にあっても、
こうしたクロスリファレンスという考え方とは異なるも
のの、ブラウザ型の部品検索ツ−ルとして、再利用可能
な部品一覧の中から特定の部品を選択することによりそ
の部品の内容/利用法を表示する機能が、ソフトウェア
開発支援環境の一部として提供されつつある。
【0008】例えば、こうしたオブジェクト指向型プロ
グラミング言語の1つであるSmalltalk(スモ
ールトーク)ではクラス階層ブラウザという機能を提供
しており、クラスの一覧表示と、該一覧項目から、個々
のクラスで定義される属性、操作の詳細を確認/変更す
ることが可能となっている。ただし、このクラス階層ブ
ラウザが保持する情報とはクラスの情報のみであって、
実際にアプリケ−ションプログラムの文脈中で定義され
るオブジェクトと既存のクラスとの関係等は、このクラ
ス階層ブラウザには保持されない。このため、クラスに
変更があった場合に、クラス間での変更の波及範囲は特
定できても、そのオブジェクトへの波及範囲までは特定
できないのが普通である。
【0009】
【発明が解決しようとする課題】オブジェクト指向プロ
グラミングでは上述のように、オブジェクト同士の情報
(メッセージ)のやりとりを記述することによってプロ
グラムを開発する。
【0010】ここで、オブジェクトは抽象デ−タ型を実
現するものであるから、デ−タの変更があっても、その
波及範囲は個々のオブジェクト内部に特定されると一般
にはいわれている。しかしながら、クラスの定義や構造
に不具合があった場合には、その変更は多数のオブジェ
クトに影響を与えることとなる。このような事態は、プ
ログラム開発や保守の工程では当然起こり得ることに加
え、近年提案されているオブジェクト指向ソフトウェア
分析(OOA)工程においても、クラスの定義や構造が
最初から特定できずに分析の過程でこれらが変更される
ことは多い。
【0011】したがって、こうしたオブジェクト指向プ
ログラミングを前提としたソフトウェアの開発におい
て、クラス階層の変更とそれに伴う関連するオブジェク
トへの該変更の波及は、ソフトウェア開発のどの工程に
おいても頻繁に発生する可能性を秘めている。
【0012】ここに従来は、上述のようなクラス階層ブ
ラウザを通じて、クラスの一覧表示並びにその一覧項目
からの個々のクラスで定義される属性及び操作の詳細の
確認/変更が可能であったとはいえ、こうしてクラスの
定義や構造が変更された場合には、その関連するオブジ
ェクトへの波及範囲まではこれを特定し、その内容を確
認することができなかったことから、アプリケーション
プログラム全体としてのソフトウェア構造を適切に解析
し、その振舞いを正確に把握することは至難の作業とな
っていた。
【0013】この発明は、こうした実情に鑑みてなされ
たものであり、オブジェクト指向プログラミングによっ
てプログラムされたソフトウェアについて、たとえクラ
スの定義や構造が変更される場合であっても、それらク
ラスとオブジェクトとの関係構造を常に適正に維持し、
且つこれを明確に表示して、アプリケーションプログラ
ム全体としての構造解析を好適に支援するソフトウェア
構造解析支援システムを提供することを目的とする。
【0014】
【課題を解決するための手段】こうした目的を達成する
ため、この発明では、上記オブジェクト指向プログラミ
ングによってプログラムされたソフトウェアを前提に、
( a)それぞれ構造解析の対象となるソフトウェアについ
てその定義されたクラス、及びこれらクラス同士の従属
関係を示すクラス構造が登録される第1のデータベー
ス、( b)同ソフトウェアについてその生成されたオブジ
ェクトのオブジェクト名、及びこれら各オブジェクトの
上記クラス修飾による具象化態様が登録される第2のデ
ータベース、( c)これら第1及び第2のデータベースに
登録された各種情報を可視表示するための表示手段、(
d)第1及び第2のデータベースに登録された全てのクラ
ス、及び全てのオブジェクトについてその一覧を表示手
段に表示する第1の表示制御手段、( e)第2のデータベ
ースに登録された全てのオブジェクトを対象に、適宜ユ
ーザ指定されるクラスに関連する1乃至複数のオブジェ
クトを第1のデータベースに登録されたクラス構造及び
第2のデータベースに登録されたこれらオブジェクトの
具象化態様に基づき検索してこれを表示手段に識別表示
する第2の表示制御手段、をそれぞれ具えて当該システ
ムを構成するようにする。
【0015】
【作用】このシステムでは上記のように、解析対象ソフ
トウェアで定義されたクラス、及びこれらクラス同士の
従属関係を示すクラス構造を( a)の第1のデータベース
を通じて管理することに加え、そのアプリケーションプ
ログラムとしての文脈中でその都度宣言、生成されたオ
ブジェクトについても、そのオブジェクト名、及びこれ
ら各オブジェクトの上記クラス修飾による具象化態様を
( b)の第2のデータベースを通じて管理するようにして
いる。ここで、上記クラス同士の従属関係を示すクラス
構造とは、各クラスの親子関係を示すべくこれらクラス
間に張られた双方向リンク構造に他ならず、また、上記
各オブジェクトのクラス修飾による具象化態様とは、各
オブジェクトのそれぞれ関係するクラスとの間に張られ
た双方向リンク構造に他ならない。
【0016】上記( d)の第1の表示制御手段とは、上記
対象となるソフトウェアの構造を解析するための初期画
面として、上記登録された全てのクラス及びオブジェク
トについてその一覧を( c)の表示手段に表示するもので
あり、また、上記( e)の第2の表示制御手段とは、上記
第1のデータベースに登録されている各クラスの親子関
係を保持する双方向リンクを下向き(親から子の向き)
に辿り、且つ上記第2のデータベースに登録されている
オブジェクトとクラスの関係を保持する双方向リンクを
下向き(クラスからオブジェクトの向き)に辿ることに
よって、ユーザ指定された特定のクラスからオブジェク
ト群を見た場合に、どのオブジェクトが該特定のクラス
から利用(継承)されているのかを、同表示手段に識別
表示するものである。
【0017】したがって、たとえ上記クラスの定義や構
造が変更されても、その変更されたプログラムを該解析
対象のソフトウェアとして上記第1及び第2のデータベ
ースに登録し、あとは解析を所望する任意のクラスを適
宜指定するのみで、該クラスからみたオブジェクトとク
ラスとの関係構造が適正に識別表示されることとなり、
ひいてはクラスの変更に伴うその波及範囲の限定等も容
易となる。
【0018】なお、上記構成に加えて更に、( f)上記識
別表示される個々のオブジェクトを対象に、当該クラス
から継承される操作関数群、及び他のクラスから継承さ
れる操作関数群を第1のデータベースに登録されたクラ
ス及びクラス構造に基づき検索してこれを表示手段に識
別表示する第3の表示制御手段。
【0019】を併せ具えるようにすれば、こうしたクラ
スの変更に伴うその波及範囲の限定等をより一層的確な
ものとすることができるようにもなる。
【0020】因みにこの場合、該第3の表示制御手段で
は、上記識別表示される個々のオブジェクトに関して、
上記第2のデータベースに登録されたクラスとオブジェ
クトの関係を辿るとともに、上記第1のデータベースに
登録されたクラスの親子関係を辿ることにより、オブジ
ェクトの直接の親となるクラスで定義される操作関数に
加え、更にその親の操作関数、また更にその親の操作関
数というように、一番最初の親まで繰り返し操作関数の
検索を行って、新たな操作関数が見つかる都度操作関数
の一覧の登録内容を追加していくことで、最終的な操作
関数の一覧を同表示手段に表示し、その中で、ユーザ指
定されたクラスから直接継承される操作関数と同指定さ
れたクラス以外のクラスから継承される操作関数とを適
宜に区別して表示するようになる。ユーザ指定されたク
ラスがどこに存在するかは、上記クラス階層を辿る過程
で知ることができる。
【0021】また、上記第1及び第2のデータベースに
登録される情報及びそのリンク構造によれば、従来のよ
うな各クラス毎に定義されている操作関数の一覧表示は
もとより、例えば上記第1のデータベースに登録された
親子間に張られたリンクを上から下に辿ることによっ
て、それら操作関数のうち、子クラスで再定義されてい
ない操作関数のみを区別してこれを識別表示したりする
こともできる。
【0022】また、各オブジェクトに対してそこで利用
できる属性や操作関数群を確認したいといった場合で
も、それら情報の一覧表示や、どの情報がどのクラスか
ら継承されているか等についての識別表示を行うことも
でき、容易にその確認をすることができるようになる。
【0023】因みに従来は、個々のクラスの仕様、実装
を前記ブラウザのような環境で確認するのに、個々のク
ラス毎に定義される属性とその操作関数群さえ1度に見
ることができれば十分であり、親クラスから継承すべき
情報が子クラスで再定義され、実際には子クラスに継承
されなかったとしても、親クラスの情報は親クラス、子
クラスの情報は子クラスでそれぞれ別途に確認すること
ができればよい、という方針のもとに情報の表示制御が
行われており、こうした子クラスで再定義されていない
操作関数の識別表示や、どの情報がどのクラスから継承
されているか等についての識別表示すら行うことができ
なかった。
【0024】
【実施例】図1に、この発明にかかるソフトウェア構造
解析支援システムについて、その一実施例を示す。
【0025】すなわちこのシステムは、前述したオブジ
ェクト指向型のプログラミング言語によって記述された
ソフトウェアの構造解析を支援するものであって、この
うち同図1に示されるクラス/オブジェクト登録装置1
は、このオブジェクト指向型のプログラミング言語とし
て例えば、Smalltalk(スモールトーク)、C
++(シー・プラスプラス)、Objective−C
(オブジェクティブ・シー)等のうちの任意の言語に対
応してその文法や構文を解釈するアルゴリズムを具え、
その対応する言語で記述されたソースコードが入力され
ることにより、該ソースコードを字句解析しつつ、( A)
そこで定義されているクラス名、及びこれら各クラス毎
に定義されている属性(データ)群、並びにこれら属性
群を操作するための操作関数(メソッド)群等からなる
クラス情報、( B)これらクラス同士の親子関係を示すク
ラス構造情報、( C)生成されたオブジェクト名、及びそ
れらオブジェクトが定義されているソースファイル名、
それらオブジェクトの該ソースファイル上での定義/利
用箇所(行数番号)情報等からなるオブジェクト情報、
( D)これらオブジェクトがどのクラスを親として具象化
されているか、その具象化態様を示すクラス−オブジェ
クト関連情報、をそれぞれ抽出し、これら抽出した情報
のうち、( A)のクラス情報、及び( B)のクラス構造情報
についてはこれをクラス構造情報データベース2に登録
し、( C)のオブジェクト情報、及び( D)のクラス−オブ
ジェクト関連情報についてはこれをクラス−オブジェク
ト関連情報データベース3に登録する装置である。な
お、クラス構造情報データベース2に登録される上記ク
ラス情報やクラス構造情報に関しては、ライブラリ、す
なわちクラス・ライブラリでの定義も含まれるものとす
る。このクラス・ライブラリでの定義内容に関しては、
上記ソースコード入力以前の予登録が可能である。また
ここで、上記クラス構造情報とは、各クラスの親子関係
を示すべくこれらクラス間に張られた双方向リンク構造
を示すものであって、クラス構造情報データベース2に
は、そのリンク構造が例えば参照テーブルとして記述登
録され、また上記クラス−オブジェクト関連情報も、各
オブジェクトのそれぞれ関係するクラスとの間に張られ
た双方向リンク構造を示すものであって、クラス−オブ
ジェクト関連情報データベース3には、そのリンク構造
がこれも例えば参照テーブルとして記述登録される。
【0026】また、同図1に示されるクラス/オブジェ
クト情報処理装置4は、上記クラス構造情報データベー
ス2に登録されたクラスの一覧、及びクラス−オブジェ
クト関連情報データベース3に登録されたオブジェクト
の一覧を表示情報メモリ5に書き出し、それらをウィン
ドウ管理装置6を通じて表示/入力制御装置7に可視表
示させるとともに、ウィンドウ管理装置6から与えられ
るイベント情報、すなわちマウスやキーボード等の入力
装置を通じてユーザ入力された指令(ここではクラスや
オブジェクト等の指定)内容に応じて上記クラス構造情
報データベース2及びクラス−オブジェクト関連情報デ
ータベース3を検索し、その検索結果として、 ・特定の1乃至複数のクラス ・特定の1乃至複数のオブジェクト ・特定の1乃至複数のクラス若しくはオブジェクトに関
連する操作関数群 ・それら操作関数の実装 ・特定の1乃至複数のクラス若しくはオブジェクトに関
連する属性群 等々についての情報を獲得する装置である。これら獲得
された情報についても、それらを適宜識別せしめる情報
が表示情報メモリ5に書き込まれ、それらが上記と同
様、ウィンドウ管理装置6を通じて表示/入力制御装置
7に可視表示されるようになる。
【0027】ここで、上記表示情報メモリ5とは、その
都度の可視表示情報が一時的に格納される例えばVRA
M(ビデオ・ランダムアクセスメモリ)等からなる記憶
装置であり、また上記ウィンドウ管理装置6とは、ワー
クステーションやパーソナルコンピュータ等の1つの表
示装置画面中に、各種作業(データの表示や処理)を行
うための1乃至複数の窓、すなわちウィンドウを定義
し、これら定義したウィンドウを通して複数の各別のデ
ータを同時に表示したり、或いは同一のデータを各種異
なる形態で表示したりして、これら表示されるデータ間
(場合によってはインアクティブなウィンドウ上にあっ
て直接には表示されないデータもある)での統一された
処理環境を提供する装置であり、そして上記表示/入力
制御装置7とは、このウィンドウ管理装置6による管理
のもとに、CRTディスプレイ装置等に上記ウィンドウ
やそれらウィンドウで扱われるデータ、メッセージ等を
可視表示するとともに、上記マウスやキーボード等の入
力装置を通じたユーザ指令の内容(イベント)を解釈し
てこれをウィンドウ管理装置6に伝達する、いわばユー
ザ・インターフェースを司る装置である。これらの装置
は何れも周知であり、これら装置についてのここでの改
めての説明は割愛する。
【0028】次に、この実施例システムの動作について
説明する。
【0029】このシステムは基本的に、以下の3つのフ
ェーズで利用される。 ( 1)クラス、オブジェクトの登録 ( 2)クラス、オブジェクトの情報の初期表示 ( 3)ユーザの指示に対する、クラス、オブジェクトの情
報の表示 以下、これらフェーズに従って、その利用態様、及びそ
れに伴う該実施例システムの動作を説明する。
【0030】( 1)クラス、オブジェクトの登録 ここでは、クラスの構造とクラス/オブジェクトの関係
が書かれている上記のソースコードをクラス/オブジェ
クト登録装置1に対して与える。
【0031】これによりクラス/オブジェクト登録装置
1では上述したように、このソースコードを解析して、
個々のクラスのクラス情報、及びそれらクラスのクラス
構造情報をクラス構造情報データベース2に書き出し、
また、個々のオブジェクトのオブジェクト情報、及びそ
れらオブジェクトと上記クラスとの間のクラス−オブジ
ェクト関連情報についてはこれをクラス−オブジェクト
関連情報データベース3に書き出す。
【0032】図2、及び図3に、これら書き出されたと
するクラス情報、クラス構造情報、オブジェクト情報、
及びクラス−オブジェクト関連情報について、それらの
一例を模式的に示す。
【0033】因みに図2は、クラスとして「class-0
」、「class-1 」、「class-11」、「class-2 」、「c
lass-3 」、「class-31」、「class-32」、「class-4
」、及び「class-5 」とともに、それらの親子関係
(クラス構造)が ・「class-0 」←「class-1 」←「class-11」 ・「class-0 」←「class-2 」 ・「class-0 」←「class-3 」←「class-31」 ・「class-0 」←「class-3 」←「class-32」 ・「class-0 」←「class-4 」 ・「class-0 」←「class-5 」 として、クラス構造情報データベース2に登録され、ま
たオブジェクト「object-01 」、「object-02 」、「ob
ject-03 」、…「object-09 」、「object-10 」ととも
に、それらのクラスとの係わり(クラス−オブジェクト
関連情報)が ・「object-01 」→「class-3 」 ・「object-02 」→「class-11」 ・「object-03 」→「class-31」 … ・「object-09 」→「class-32」 ・「object-10 」→「class-3 」 として、クラス−オブジェクト関連情報データベース3
に登録されていることを示している。
【0034】また図3は、上記各クラスのクラス情報の
一部として、 ・「class-0 」には操作関数として「method-01 」、
「method-02 」、及び「method-03 」が定義されてい
る。
【0035】・「class-3 」には操作関数として「meth
od-02 」、「method-04 」、及び「method-05 」が定義
されている。
【0036】・「class-31」には操作関数として「meth
od-04 」、「method-05 」、「method-06 」、及び「me
thod-07 」が定義されている。
【0037】・「class-32」には操作関数として「meth
od-11 」、及び「method-12 」が定義されている。
【0038】・「class-4 」には操作関数として「meth
od-08 」、「method-09 」、及び「method-10 」が定義
されている。
【0039】ことをそれぞれ示している。
【0040】以下では、これら図2及び図3での例示を
前提に、それらに関する表示制御の態様を説明するもの
とする。
【0041】( 2)クラス、オブジェクトの情報の初期表
示 ここでは、上記( 1)の「クラス、オブジェクトの登録」
フェーズを通じてクラス構造情報データベース2及びク
ラス−オブジェクト関連情報データベース3にそれぞれ
登録されたクラス構造情報とクラス−オブジェクト関連
情報を用いて、クラス/オブジェクト情報処理装置4
が、初期状態において表示/入力制御装置7の画面上に
表示すべき情報を表示情報メモリ5に書き出す。
【0042】これによってウィンドウ管理装置6が、こ
の表示情報メモリ5に書き込まれた情報をもとに、表示
/入力制御装置7の画面上に、その初期画面としてクラ
ス群とオブジェクト群の一覧を表示するようになること
は前述した通りである。
【0043】( 3)ユーザの指示に対する、クラス、オブ
ジェクトの情報の表示 ここではまず、ユーザが、表示/入力制御装置7の画面
上で、マウス、或いはキーボードなどの入力装置を使っ
て、解析所望とする要求を指示をする。
【0044】こうしたユーザの指示は、上述したよう
に、表示/入力制御装置7により解釈され、イベントに
置き換えられてウィンドウ管理装置6に入力される。
【0045】イベントを受け取ったウィンドウ管理装置
6では、該イベント内容を解釈して更にそれを適当なイ
ベント情報に翻訳し、その翻訳したイベント情報をクラ
ス/オブジェクト情報処理装置4に引き渡す。
【0046】これにより、クラス/オブジェクト情報処
理装置4では上述したように、この渡された情報に応じ
てクラス構造情報データベース2及びクラス−オブジェ
クト関連情報データベース3を検索し、その検索結果と
して得た情報を先の表示情報メモリ5に書き込むことと
なる。そしてこれら書き込まれた情報が、ウィンドウ管
理装置6を通じて表示/入力制御装置7にモニタバック
される。
【0047】こうしてユーザは、その解析所望とした要
求に対する当該システムの反応を、上記表示/入力制御
装置7の画面上で確認することができるようになる。
【0048】なおここで、上記ユーザの要求とは、 ・あるクラスで利用できる(属性の)情報の一覧を表示
せよ ・あるクラスで利用できる操作関数の一覧を表示せよ ・あるクラスを利用しているオブジェクト(群)を特定
せよ ・あるクラスの特定の操作関数の実装を表示せよ ・あるオブジェクトの(属性の)情報の一覧を表示せよ ・あるオブジェクトの操作関数の一覧を表示せよ のいずれかであるとする。
【0049】図4は、この( 3)の「ユーザの指示に対す
る、クラス、オブジェクトの情報の表示」のフェーズに
関して、ユーザの都度の要求に対する該実施例システム
としての表示制御態様の推移を示したものであり、また
図5〜図11は、それら表示制御に伴う上記表示/入力
制御装置7での画面表示例を示したものであり、以下、
これら図4、及び図5〜図11を併せ参照して、この
「ユーザの指示に対する、クラス、オブジェクトの情報
の表示」フェーズにおける該実施例システムの動作を更
に詳述する。
【0050】図5は、上記( 2)の「クラス、オブジェク
トの情報の初期表示」のフェーズで形成された表示/入
力制御装置7の画面の初期画面を示している(図4ステ
ップS1)。
【0051】ここで、該画面のクラス表示領域である
「classes 」ペインには、前記ソースコードで定義され
るクラスの一覧が構造的に表示される。構造的、という
のは、例えば「class-0 」の下位クラスが「class-1
」、「class-2 」、「class-3 」、「class-4 」、「c
lass-5 」であり、更に「class-1 」の下位クラスが「c
lass-11」である、といったことをインデントによって
図示していることを意味する。ここでの例の場合、この
インデントによって示されるクラスの構造が、先の図2
に示したクラス構造の上半分と同じになることはいうま
でもない。
【0052】他方、同画面のオブジェクト表示領域であ
る「objects 」ペインには、同ソースコードで定義され
るクラスによって生成されるオブジェクトの一覧が表示
される。ここには構造はない。そして、ここでの例の場
合これは、先の図2に示したクラス構造の下半分と同じ
である。
【0053】こうした初期画面において、ユーザが任意
のクラスをマウスポインタで指示すると、表示/入力制
御装置7の画面は、図6に示される態様で遷移する。こ
の図6は、ユーザが任意のクラス(この例では「class-
3 」)をマウスポインタで指示した結果の画面を示して
いる。
【0054】こうしたユーザの指示により、指定された
「class-3 」が反転表示されるとともに、その「object
s 」ペインにおいて、当該指定クラス「class-3 」の情
報を継承する可能性のあるオブジェクトがマーキングさ
れる(図4ステップS2)。ここではマーク「s 」が付
加されており、これによって当該指定「class-3 」は、
「object-01 」、「object-03 」、「object-09 」、
「object-10 」の祖先(親とは限らず、親の親かも知れ
ない)であることが分かる。またこの状態において、画
面の下のペインには、当該指定クラス「class-3 」がそ
の親クラスである「class-0 」から継承する属性と、該
クラス「class-3 」自身に定義される属性の両方が表示
される(図4ステップS2)。
【0055】この図6に表示される表示制御状態におい
ては、「objects 」ペインから任意のオブジェクトを選
択することもできるし、当該クラス「class-3 」で利用
できる操作関数の一覧を表示させることもできる。
【0056】図7は、この指定クラス「class-3 」を指
示したまま、例えばマウスをドラッグ(マウスボタンを
押した状態でずらす操作)したとする状態での画面例を
示している。
【0057】この場合には、同図7に示されるように、
「classes 」ペインの横に、指定したクラス「class-3
」に対して利用可能な操作関数の一覧がポップアップ
画面として併せ表示される(図4ステップS3)。
【0058】なおここで、これら表示される個々のクラ
スで利用できる操作関数は、先の図3に例示したクラス
構造及びそこで定義される操作関数に基づき、前記クラ
ス/オブジェクト情報処理装置4によって次のように検
索される。
【0059】すなわち、当該クラス「class-3 」は、親
クラス「class-0 」の情報を継承していることがまず判
断され、該判断を踏まえた上で次に、親クラス「class-
0 」で定義される「method-01 」と「method-03 」、そ
して当該クラス「class-3 」で定義される「method-02
」、「method-04 」、及び「method-05 」の5つの操
作関数が利用できる旨が判断される。こうして上記ポッ
プアップ画面には、これら5つの操作関数が一覧表示さ
れることとなる。
【0060】この図7に示される表示制御状態において
は、上記開かれたポップアップ画面をキャンセルするこ
ともできるし、該ポップアップ画面内に表示された操作
関数一覧の中から特定の操作関数を選択することもでき
る。
【0061】図8は、上記ポップアップ画面に一覧表示
された操作関数の任意のもの(この例では「method-05
」)を、例えばマウスクリック(マウスボタンを押す
操作)したとする結果の画面例を示している。
【0062】この場合には、同図8に示されるように、
該ユーザ指定された操作関数「method-05 」が反転表示
されるとともに、その下のペインには該操作関数「meth
od-05 」の実装が表示されることとなる(図4ステップ
S4)。なお、先の図3に例示したクラス構造及びそこ
で定義される操作関数によると、この操作関数「method
-05 」は「class-3 」と「class-31」の両方のクラスで
定義されているが、今着目しているのはクラス「class-
3 」の方であるため、ここで上記下のペインに表示され
る実装とは、該クラス「class-3 」で定義されている操
作関数「method-05 」の実装となる。
【0063】この図8に示される表示制御状態において
は、この開かれているポップアップ画面をキャンセルす
ることができる。
【0064】図9は、クラス表示領域である「classes
」ペインから任意のクラスを選択したあと、オブジェ
クト表示領域である「objects 」ペインから任意のオブ
ジェクト(この例では「object-03 」)をマウスポイン
タで指示したとする結果の画面例を示している。
【0065】この場合には、同図9に示されるように、
ユーザ指定されたオブジェクト「object-03 」が反転表
示されるとともに、その下のペインには、該オブジェク
ト「object-03 」の継承する全ての情報(属性)が表示
されるようになる(図4ステップS5)。ここでは、上
位から継承する属性も表示される。
【0066】この図9に示される表示制御状態において
は、「classes 」ペインから任意のクラスを選択するこ
ともできるし、当該指定オブジェクト「object-03 」で
利用できる全ての操作関数の一覧を表示させることもで
きる。
【0067】図10は、上記オブジェクト「object-03
」を指示したまま、マウスをドラッグしたとする状態
での画面例を示している。
【0068】この場合には、同図10に示されるよう
に、「objects 」ペインの横に、この指定した「object
-03 」において利用可能な操作関数の一覧が、ポップア
ップ画面として併せ表示されるようになる(図4ステッ
プS6)。
【0069】ここで、このオブジェクト「object-03 」
で利用できる操作関数は、先の図3に例示したクラス構
造及びそこで定義される操作関数に示される通りであ
る。すなわち、このオブジェクト「object-03 」は、ク
ラス「class-0 」、「class-3」、及び「class-31」を
祖先として持っているため、上記ポップアップ画面に
は、これら3つのクラスから継承される7つの操作関数
が一覧表示されることとなる。
【0070】またここでは、先に指定されているクラス
(この場合は「class-3 」)から継承される操作関数が
どれかを区別するためのマーキング(「s 」印)も併せ
表示される。
【0071】因みに同図10の例においては、マーキン
グされた操作関数「method-02 」、「method-04 」、及
び「method-05 」がクラス「class-3 」から継承されて
おり、マーキングされない操作関数「method-01 」、
「method-03 」、「method-06」、及び「method-07 」
は、クラス「class-3 」以外のクラスから継承されてい
ることを示している。
【0072】この図10に示される表示制御状態におい
ては、上記開かれたポップアップ画面をキャンセルする
こともできるし、同ポップアップ画面の中に表示された
操作関数群から特定の操作関数を選択することもでき
る。
【0073】図11は、上記ポップアップ画面に一覧表
示された操作関数の任意のもの(この例では「method-0
5 」)を、例えばマウスクリックしたとする結果の画面
例を示している。
【0074】この場合には、同図11に示されるよう
に、ユーザ指定された操作関数「method-05 」が反転表
示されるとともに、その下のペインに該操作関数「meth
od-05」の実装が表示される(図4ステップS7)。な
お、先の図3に例示したクラス構造及びそこで定義され
る操作関数によると、この操作関数「method-05 」は
「class-3 」と「class-31」の両方のクラスで定義され
ているが、ここではクラス「class-3 」で定義される操
作関数を対象としているので、この場合に上記下のペイ
ンに表示される実装は、このクラス「class-3 」で定義
されている操作関数「metrod-05 」の実装となる。
【0075】この図11に示される表示制御状態におい
ては、該開かれているポップアップ画面をキャンセルす
ることができる。
【0076】このように、該実施例によるソフトウェア
構造解析支援システムによれば、予めクラス構造情報デ
ーベース2及びクラス−オブジェクト関連情報データベ
ース3に登録された情報をもとに、 ・当該登録(解析対象)プログラムにおいて定義され且
つ生成されたクラス及びオブジェクトの一覧表示(初期
画面)。 ・クラス一覧の中からユーザ指定されたクラスに関連す
る全オブジェクトの識別表示(マーキング表示)。 ・当該指定クラスの全属性情報の参照表示。 ・当該指定クラスに定義されている全操作関数(メソッ
ド)の参照表示。 ・その中からユーザ指定された操作関数の実装の参照表
示。 ・オブジェクト一覧の中からユーザ指定されたオブジェ
クトの全属性情報の参照表示。 ・当該指定オブジェクトから利用できる全操作関数(メ
ソッド)の参照表示。 ・その中からユーザ指定された操作関数の実装の参照表
示。 等々、といった表示制御が実現されるため、特にクラス
からみて、それら任意のクラスとそれに関連するオブジ
ェクトとの関係、更には、クラスからオブジェクトに継
承される情報の詳細等が、視覚的に容易に把握できるよ
うになり、たとえ第三者であっても、当プログラムにお
けるそれらの関係構造を正確に解析、判断できるように
なる。
【0077】なお、上記実施例システムにおいて図5〜
図11に例示したクラスやオブジェクトについての表示
態様、更にはその属性群や操作関数群並びに実装等につ
いての表示態様は一例にすぎず、それらの情報が所定に
関連付けされて視覚的に明示されさえすれば、他の如何
なる表示態様としてもよいことは勿論である。
【0078】また、これら表示態様(表示制御)を切り
換えるための上述した操作(マウスクリックやドラッグ
等々)も一例にすぎない。要は、前記イベントとしてウ
ィンドウ管理装置6が認識できる操作内容との兼ね合い
のもとに定義され、且つユーザの意図が的確に反映され
るものであれば、キーボードによる操作をも含め、該表
示態様(表示制御)を切り換えるための操作として、他
の如何なる操作が定義されてもよい。
【0079】また、先の図2や図3においては、簡単の
ため、そこで例示する継承の構造が「単純継承(1つの
祖先(スーパークラス)しか持たない形での継承)」で
ある場合についてのみ述べたが、該継承の構造がいわゆ
る「多重継承(複数の祖先(スーパークラス)を持つ形
での継承)」となる場合であっても、該システムは同様
に適用することができる。すなわち同システムによれ
ば、こうした「多重継承」にあっても、前記クラス/オ
ブジェクト登録装置1を通じて前述同様に、そのリンク
構造が上記データベース2及び3に登録されるようにな
ることから、それらの表示制御に際してのみ、例えば図
式化したり、マーキングを変えるなど、その構造が識別
できる態様とすればよい。
【0080】ところで、同実施例のシステムによれば、
図4にも示されるように、指定したクラスやオブジェク
トに関する属性群や操作関数群、更にはその実装等、ユ
ーザの操作に応じて、かなり詳細な情報が、上記データ
ベース2及び3に登録された情報に基づいて表示制御さ
れることとなるが、中でも、指定したクラスに関連する
オブジェクトの一覧を識別表示することができさえすれ
ば、 ・任意のクラスとオブジェクトとの関係の把握、或いは ・特定のクラス、オブジェクトの変更に伴うその影響の
波及範囲の特定 を行う上で、最低限必要な情報は得られることとなり、
該発明のシステムとして必ずしも上述した表示制御機能
の全てを具備している必要はない。
【0081】
【発明の効果】以上説明したように、この発明によれ
ば、クラスのみならず、アプリケ−ションプログラムに
おいて随時宣言、生成される全てのオブジェクトに対し
ても、その存在と親となるクラスの情報をデ−タベ−ス
に登録してこれを同時に管理するようにし、その上で、
これら登録された全てのオブジェクトを対象に、適宜ユ
ーザ指定されるクラスに関連する1乃至複数のオブジェ
クトを当該クラスの従属関係及びそれらオブジェクトの
具象化態様に基づき検索してこれを表示手段に識別表示
するようにしたことから、クラスからみたオブジェクト
とクラスの関係構造が瞭然となり、たとえクラスの定義
や構造が変更されることがあっても、その変更に伴う関
連オブジェクトへの波及範囲の限定等が容易となる。
【0082】そしてこのため、オブジェクト指向プログ
ラミングを前提としたソフトウェアの開発/保守にかか
る作業量も著しく軽減されるようになる。
【図面の簡単な説明】
【図1】この発明にかかるソフトウェア構造解析支援シ
ステムの一実施例構成を示すブロック図である。
【図2】図1に示されるクラス構造情報データベース、
及びクラス−オブジェクト関連情報データベースに登録
されるとするクラス構造情報及びクラス−オブジェクト
関連情報の一例について、それらのリンク構造を模式的
に示すブロック図である。
【図3】図2に示されるクラスの一部においてそれらに
定義されているとする操作関数の一例を模式的に示すブ
ロック図である。
【図4】この実施例システムの動作例として、各種イベ
ントに応じた表示制御の推移を示すフローチャートであ
る。
【図5】図1に示される表示/入力制御装置での表示画
面例として、同実施例システムの初期画面例を示す略図
である。
【図6】図1に示される表示/入力制御装置での表示画
面例として、クラスがユーザ指定された様子を示す略図
である。
【図7】図1に示される表示/入力制御装置での表示画
面例として、指定クラスに定義された操作関数の一覧表
示例を示す略図である。
【図8】図1に示される表示/入力制御装置での表示画
面例として、指定操作関数の実装表示例を示す略図であ
る。
【図9】図1に示される表示/入力制御装置での表示画
面例として、更にオブジェクトがユーザ指定された様子
を示す略図である。
【図10】図1に示される表示/入力制御装置での表示
画面例として、指定オブジェクトが利用することのでき
る操作関数の一覧表示例を示す略図である。
【図11】図1に示される表示/入力制御装置での表示
画面例として、指定操作関数の実装表示例を示す略図で
ある。
【符号の説明】
1 クラス/オブジェクト登録装置 2 クラス構造情報データベース 3 クラス−オブジェクト関連情報データベース 4 クラス/オブジェクト情報処理装置 5 表示情報メモリ 6 ウィンドウ管理装置 7 表示/入力制御装置

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】計算機記憶装置上に割り当てられた時点で
    値をもつことができる属性群とその属性群の値を操作す
    る操作関数群とをまとめた概念上の単位であるクラスを
    複数定義する工程と、これらクラス同士を継承という関
    係で階層的に関連付けする工程と、計算機記憶装置上に
    割り当てられる実体としてのオブジェクトをこれら定義
    された1乃至複数のクラスで修飾することによりそれら
    クラスに定義されている属性群及び操作関数群をその該
    当するオブジェクトに割り付ける工程と、を具え且つ、
    前記オブジェクト同士の前記計算機記憶装置上での情報
    のやり取りの記述としてプログラムされるソフトウェア
    について、その構造の解析を支援するシステムであっ
    て、 構造解析の対象となるソフトウェアについてその前記定
    義されたクラス、及びこれらクラス同士の従属関係を示
    すクラス構造が登録される第1のデータベースと、 同ソフトウェアについてその前記生成されたオブジェク
    トのオブジェクト名、及びこれら各オブジェクトの前記
    クラス修飾による具象化態様が登録される第2のデータ
    ベースと、 これら第1及び第2のデータベースに登録された各種情
    報を可視表示するための表示手段と、 前記第1及び第2のデータベースに登録された全てのク
    ラス、及び全てのオブジェクトについてその一覧を前記
    表示手段に表示する第1の表示制御手段と、 前記第2のデータベースに登録された全てのオブジェク
    トを対象に、適宜ユーザ指定されるクラスに関連する1
    乃至複数のオブジェクトを前記第1のデータベースに登
    録されたクラス構造及び前記第2のデータベースに登録
    されたこれらオブジェクトの具象化態様に基づき検索し
    てこれを前記表示手段に識別表示する第2の表示制御手
    段と、 を具えることを特徴とするソフトウェア構造解析支援シ
    ステム。
  2. 【請求項2】請求項1に記載のシステムにおいて更に、 前記識別表示される個々のオブジェクトを対象に、前記
    ユーザ指定されるクラスから継承される操作関数群、及
    び他のクラスから継承される操作関数群を前記第1のデ
    ータベースに登録されたクラス及びクラス構造に基づき
    検索してこれを前記表示手段に識別表示する第3の表示
    制御手段と、 を具えることを特徴とするソフトウェア構造解析支援シ
    ステム。
JP4276106A 1992-10-14 1992-10-14 ソフトウェア構造解析支援システム Pending JPH06124200A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4276106A JPH06124200A (ja) 1992-10-14 1992-10-14 ソフトウェア構造解析支援システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4276106A JPH06124200A (ja) 1992-10-14 1992-10-14 ソフトウェア構造解析支援システム

Publications (1)

Publication Number Publication Date
JPH06124200A true JPH06124200A (ja) 1994-05-06

Family

ID=17564884

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4276106A Pending JPH06124200A (ja) 1992-10-14 1992-10-14 ソフトウェア構造解析支援システム

Country Status (1)

Country Link
JP (1) JPH06124200A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011204251A (ja) * 2004-05-25 2011-10-13 Fisher-Rosemount Systems Inc プロセスプラント構成システムにおけるオブジェクトのバージョン管理

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011204251A (ja) * 2004-05-25 2011-10-13 Fisher-Rosemount Systems Inc プロセスプラント構成システムにおけるオブジェクトのバージョン管理

Similar Documents

Publication Publication Date Title
US10452366B2 (en) Method and tool for engineering software architectures with its various software artifacts of complex cyber-physical systems of different technical domains
US7409679B2 (en) System and method for computer-aided graph-based dependency analysis
US6792595B1 (en) Source editing in a graphical hierarchical environment
JP4171757B2 (ja) オントロジー統合支援装置、オントロジー統合支援方法及びオントロジー統合支援プログラム
US6915301B2 (en) Dynamic object properties
US20030067481A1 (en) System and method for computer-aided graph-based dependency analysis with integrated documentation
US6246403B1 (en) Method and apparatus for generating a graphical user interface
US20070094608A1 (en) Runtime modification of data presented in a graphical element
US8386919B2 (en) System for displaying an annotated programming file
JPH0756628B2 (ja) グラフィカル・ユーザインターフェースの編集装置
KR20040054465A (ko) 단순화된 뷰를 가지는 사용자 인터페이스 요소 표현
JPH05150931A (ja) スコープ変更指令処理方法及び装置
JPH09510567A (ja) ドキュメント・プロキシィ・フレームワーク
US8918756B2 (en) Generating constraints in a class model
US9170783B1 (en) Class creation assistant for textual programming languages
CN110162731B (zh) 一种IFC模型构件空间信息在Web显示的方法
Grolaux et al. FlexClock, a Plastic Clock Written in Oz with the QTk toolkit.
US9262060B1 (en) Method and apparatus for performing viewmarking
US7065717B1 (en) Tree-based interface apparatus for display of call dependencies and method therefor
JPH06124200A (ja) ソフトウェア構造解析支援システム
Bellamy et al. Re-structuring the programmer's task
EP0692112B1 (en) Dynamic browser system
JPH06124197A (ja) ソフトウェア構造解析支援システム
JP7082284B2 (ja) 分析支援方法および分析支援プログラム
JP4813906B2 (ja) 画面パターン分類装置、画面パターン分類方法及び画面パターン分類プログラム