JPH10214191A - オブジェクト指向プログラミングに適用される開発支援装置および開発支援方法 - Google Patents

オブジェクト指向プログラミングに適用される開発支援装置および開発支援方法

Info

Publication number
JPH10214191A
JPH10214191A JP23293197A JP23293197A JPH10214191A JP H10214191 A JPH10214191 A JP H10214191A JP 23293197 A JP23293197 A JP 23293197A JP 23293197 A JP23293197 A JP 23293197A JP H10214191 A JPH10214191 A JP H10214191A
Authority
JP
Japan
Prior art keywords
class
classes
information
local
computer
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
JP23293197A
Other languages
English (en)
Inventor
Toshiaki Takewaki
敏晃 武脇
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 JP23293197A priority Critical patent/JPH10214191A/ja
Publication of JPH10214191A publication Critical patent/JPH10214191A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】分散環境下で必要となるオブジェクト情報のみ
を公開するとともに、実行効率のよいオブジェクト配置
を実現する開発支援装置を提供する。 【解決手段】コード生成ユーティリティプログラム10
のクラス分類モジュールは、オブジェクト関連情報ファ
イル21に格納されたオブジェクト関連情報を読み取
り、この読み取ったオブジェクト関連情報に基づいて、
複数のオブジェクトの集まりによって構成されるクラス
それぞれを、内部クラスとすべきか外部クラスとすべき
かを判定し、その判定結果をクラス情報としてクラス情
報ファイル23に格納する。そして、コード生成モジュ
ール12は、このクラス情報を参照して、内部クラスに
ついてはローカルな関数として宣言するためのへッダフ
ァイルを生成し、一方、外部クラスについては外部から
アクセスできるようにインタフェースを定義するための
コードを生成する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、オブジェクト指
向プログラミングに適用して好適な開発支援装置および
開発支援方法に関する。
【0002】
【従来の技術】近年のコンピュータの普及は目覚ましい
ものがあり、この普及に伴なって多種多様なシステムが
開発されるようになってきている。このような実情か
ら、最近では、より複雑なプログラムを効率良く作成す
るために、オブジェクト指向の考え方を採り入れたシス
テム開発が行なわれてきている。このオブジェクト指向
技術を使用したプログラムの基本は、データとそれにア
クセスするためのメソッドとからなるオブジェクトであ
り、オブジェクトの集まりとしてプログラムが構成され
る。また、近年のネットワーク技術の発達により、異な
る計算機上のオブジェクトを利用する分散オブジェクト
技術の注目されてきている。
【0003】ここで重要なことは、オブジェクトへのア
クセスには、オブジェクトが公開するメソッドに関する
インタフェース情報だけが使用されることである。した
がって、公開されないメソッドは、他のオブジェクトか
ら使用されることはない。また、内部データへのアクセ
スもメソッドを使って行なわれるために、データを不正
なアクセスから守る働きもする。
【0004】このようなオブジェクト指向プログラムの
開発においては、オブジェクト指向分析・設計方法論が
使用されることが多く、その記述方法をサポートする開
発支援装置も種々使用されている。一方、これらの分析
・設計ツールは、オブジェクトとしての情報隠蔽を有効
に管理するけれども、オブジェクトに対してローカルで
利用するか否かの情報がないために、すべてが一元的に
扱われる。すなわち、ユーザは、すべてのオブジェクト
をローカルなオブジェクトとして扱うか、またはすべて
のオブジェクトを外部からアクセスされるリモートなオ
ブジェクトとして扱うかといった選択を迫られていた。
【0005】一般に、論理的なオブジェクト分析・設計
では、オブジェクトモデルやオブジェク卜関連図などが
あればよい。しかしながら、実行効率やセキュリティを
考慮したプログラミングにおいては、ローカルにしか使
用されないオブジェクト情報を公開する必要はない。ま
た、分散配置されるオブジェクト同士においても、通信
が頻繁に発生する可能性が高いものは、できるだけ近傍
に配置することが望ましい。
【0006】
【発明が解決しようとする課題】このように、オブジェ
クト指向プログラムの開発においては、オブジェクト指
向分析・設計方法論が使用されることが多く、その記述
方法をサポートする開発支援装置も種々使用されてい
る。そして、分散システム開発における分析設計のモデ
ル図作成においては、クラスを内部クラスと外部クラス
との2種類に分類して、内部クラスはローカルの計算機
上のオブジェクトからのみアクセスされ、外部クラスは
リモートにアクセスされる可能性があるものとし、ま
た、外部クラスには、同一のクラスからのみ利用される
ローカルメソッドと他のクラスからアクセスされるリモ
ートメソッドとが存在するものとして作業を進行させ
る。
【0007】一方、これらの分析・設計ツールは、オブ
ジェクトとしての情報隠蔽を有効に管理するけれども、
オブジェクトに対してローカルで利用するか否かの情報
がないために、すべてが一元的に扱われる。このため、
ローカルにしか使用されないオブジェクト情報も公開せ
ざるを得ない状況が発生してしまい、実行効率やセキュ
リティに問題を生じていた。また、分散配置されるオブ
ジェクト同士の配置を考慮していないため、実行効率の
良いオブジェクトの配置が行なわれないといった問題も
生じていた。
【0008】この発明はこのような実情に鑑みてなされ
たものであり、分散環境下で必要となるオブジェクト情
報のみを公開するとともに、通信が頻繁に発生する可能
性が高いオブジェクト同士を近傍に配置することによっ
て実行効率のよいオブジェクト配置を行なうオブジェク
ト指向分析・設計方法およびコード生成方法を実現する
開発支援装置および開発支援方法を提供することを目的
とする。
【0009】
【課題を解決するための手段】この発明の開発支援装置
は、複数のオブジェクトの集まりによって構成されるク
ラス相互間でメッセージを送受信させるオブジェクト指
向プログラミングに適用される開発支援装置において、
前記クラスそれぞれが同一計算機上に配置されたクラス
からのみ用いられる内部クラスなのか他の計算機上に配
置されたクラスからも用いられる外部クラスなのかを示
すクラス情報を管理するクラス情報管理手段と、プログ
ラミング対象とするクラスが内部クラスおよび外部クラ
スのいずれであるのかを前記クラス情報管理手段が管理
するクラス情報により知得して、内部クラスであったと
きにはローカルな関数として宣言するためのヘッダファ
イルを生成し、外部クラスであったときにはインタフェ
ースを定義するためのインタフェース定義コードを生成
するコード生成手段とを具備してなることを特徴とす
る。
【0010】この発明の開発支援装置においては、クラ
スそれぞれが同一計算機上に配置されたクラスからのみ
用いられる内部クラスなのか他の計算機上に配置された
クラスからも用いられる外部クラスなのかを管理してお
き、プログラミング対象のクラスが内部クラスおよび外
部クラスのいずれであるのかを認識する。そして、内部
クラスである場合には、ローカルな関数として宣言する
ためのヘッダファイルを生成し、一方、外部クラスであ
る場合には、インタフェースを定義するためのインタフ
ェース定義コードを生成する。
【0011】すなわち、この発明の開発支援装置によれ
ば、クラスの種別(内部クラスまたは外部クラス)に適
した実装コードが自動生成されることになり、適切なオ
ブジェクト間通信が実現されるとともに、不要なオブジ
ェクト情報の公開を防止することによってセキュリティ
を向上させることができる。
【0012】また、この発明の開発支援装置は、前記ク
ラス情報が、クラスに属するオブジェクトのメソッドが
同一クラス内からのみアクセスされるローカルメソッド
なのか外部からアクセスされるリモートメソッドなのか
を示すメソッド情報を含んでなり、前記コード生成手段
は、外部クラスに属するオブジェクトをプログラミング
対象とする際、さらにそのオブジェクトのメソッドがロ
ーカルメソッドおよびリモートメソッドのいずれである
のかを前記メソッド情報により知得して、ローカルメソ
ッドであったときにはローカルな関数として宣言するた
めのヘッダファイルを生成し、リモートメソッドであっ
たときにはインタフェースを定義するためのインタフェ
ース定義コードを生成する手段を具備してなることを特
徴とする。
【0013】一般に、外部クラスに属するオブジェクト
のメソッドには、同一クラス内からのみアクセスされる
ローカルメソッドと、外部からアクセスされるリモート
メソッドが混在する。そして、このローカルメソッドに
ついては、外部クラスに属していても、そのメソッドを
公開する必要がまったくない。そこで、この発明の開発
支援装置では、クラスに属するオブジェクトのメソッド
が同一クラス内からのみアクセスされるローカルメソッ
ドなのか外部からアクセスされるリモートメソッドなの
かをさらに管理し、プログラミング対象のオブジェクト
が外部クラスに属する場合には、さらにそのオブジェク
トのメソッドがローカルメソッドおよびリモートメソッ
ドのいずれのメソッドなのかを認識する。そして、ロー
カルメソッドの場合には、ローカルな関数として宣言す
るためのヘッダファイルを生成し、一方、リモートメソ
ッドの場合にのみ、インタフェースを定義するためのイ
ンタフェース定義コードを生成する。
【0014】すなわち、この発明の開発支援装置によれ
ば、より適切なオブジェクト間通信が実現されるととも
に、不要なオブジェクト情報の公開を防止することによ
ってさらにセキュリティを向上させることができる。
【0015】また、この発明の開発支援装置は、クラス
相互間の関連を示すクラス関連情報を管理するクラス関
連情報管理手段と、前記クラス関連情報管理手段が管理
するクラス関連情報に基づき、前記クラスそれぞれにつ
いて外部クラスおよび内部クラスのいずれとすべきか判
定するクラス判定手段とをさらに具備し、前記クラス情
報管理手段は、前記クラス判定手段の判定結果をクラス
情報として管理することを特徴とする。
【0016】この発明の開発支援装置においては、たと
えばオブジェクトモデルやオブジェク卜関連図などか
ら、クラスごとにメッセージが複数のクラスから発行さ
れるか単一のクラスからのみ発行されるかを検知し、こ
の検知結果にしたがってクラスを内部クラスとすべきか
外部クラスとすべきかを自動的に判定する(単一のクラ
スからのみメッセージが発行される場合に内部クラスと
し、複数のクラスからメッセージが発行される場合に外
部クラスとする)。すなわち、この発明の開発支援装置
によれば、オブジェクト指向プログラミングの設計作業
に費やされるユーザの労力を削減しつつ、より効果的な
オブジェクト指向プログラミングを実現することが可能
となる。
【0017】また、この発明の開発支援装置は、前記ク
ラス関連情報管理手段が管理するクラス関連情報からク
ラス相互間のメッセージの結合度を算出し、この算出し
た結合度の高いクラス同士が近傍に配置されるようにク
ラス配置を決定するクラス配置決定手段をさらに具備し
てなることを特徴とする。
【0018】この発明の開発支援装置においては、静的
なメッセージ通信が多いクラス同士を近傍に配置するよ
うに、すなわち、このようなクラス同士の通信をネット
ワークを介したメッセージ通信ではなく、プロセス間ま
たはプロセス内通信になるようにクラス配置を決定す
る。これにより、通信時間を可能な限り減少させるオブ
ジェクト指向プログラミングが実現されることになる。
なお、この配置結果を表示する表示手段を具備すれば、
ユーザが必要に応じて判定する機会をもつことになるた
め、実行効率を考慮したきめ細かい分析・設計が可能と
なる。
【0019】また、この発明の開発支援装置は、前記コ
ード生成手段が、同一クラスに属するオブジェクトのメ
ソッドがもつ機能すべてを示すメソッド機能一覧を保持
するメソッド機能テーブルと、他のクラスに対してメソ
ッド機能一覧の引き渡しを要求するメッセージを送信す
る手段および他のクラスからメソッド機能一覧の引き渡
しを要求するメッセージが送信されたときに前記メソッ
ド機能テーブルに保持されたメソッド機能一覧を返送す
る手段を備えた検索メソッドとを有してなるオブジェク
トをクラスごとに生成する手段を具備してなることを特
徴とする。
【0020】この発明の開発支援装置においては、クラ
ス内のメソッドの機能を一覧する検索メソッドをクラス
それぞれに付加(自動生成)することにより、すでに動
作しているクラスがどのようなものであるかを外部から
動的に知ることができ、提供している機能が未知である
クラスの情報を得ることが可能となる。この結果、既存
のクラスを再利用してオブジェクト分析・設計を行なう
ときに、既存クラスがもつ静的な情報を見ることが可能
となり、必要とするクラスを容易に見つけることができ
るようになるため、再利用性を高めることができる。
【0021】
【発明の実施の形態】以下、図面を参照してこの発明の
実施の形態を説明する。
【0022】(第1の実施形態)図1にこの発明の第1
の実施形態に係る開発支援装置の機器構成を示す。図1
に示すように、同実施形態の開発支援装置は、機器全体
の制御を司るCPU1、CPU1によって実行制御され
るプログラムや各種データを格納する主メモリ2、主メ
モリ2の補助記憶として動作する外部記憶装置3、ユー
ザに各種情報を表示する表示装置4およびユーザからの
指示や各種データを入力する入力装置5を具備してな
る。なお、以下に説明する開発支援方法は、ソフトウェ
アとしての実施が可能であり、フロッピィディスクやハ
ードディスクなどの磁気ディスク、CD−ROMやDV
Dなどの光ディスクおよび半導体メモリなどの記録媒体
に格納した形態で提供することが可能である。
【0023】図2に同実施形態の機能ブロックを示す。
図2に示されるコード生成ユーティリティプログラム1
0は、予め設定されたオブジェクト相互間の関連情報に
基づいて、プログラムコードの一部を自動生成するため
のプログラムであり、クラス分類モジュール11とコー
ド生成モジュール12とを含んでなる。クラス分類モジ
ュール11は、オブジェクト関連情報ファイル21から
オブジェクト相互間の関連を示すオブジェクト関連情報
を読み取り、この読み取ったオブジェクト関連情報に基
づいて、複数のオブジェクトの集まりによって構成され
るクラスそれぞれを、内部クラスとすべきか外部クラス
とすべきかを判定するとともに、そのクラスに属するオ
ブジェクトのメソッド(外部メソッドおよび内部メソッ
ド)を検出し、これらの情報をクラス情報としてクラス
情報ファイル23に出力する。なお、この内部クラスと
すべきか外部クラスとすべきかの判定は、単一のクラス
からのみメッセージが発行されるクラスを内部クラスと
し、複数のクラスからメッセージが発行されるクラスを
外部クラスとする。図3にはオブジェクト関連情報ファ
イル21に格納されたオブジェクト関連情報を概念的に
示すオブジェクト図および図4にはクラス情報ファイル
23に格納されるクラス情報を示す概念図がそれぞれ示
されている。
【0024】一方、コード生成モジュール12は、クラ
ス情報ファイル23に格納されたクラス情報を読み取
り、プログラミング対象とするクラスが内部クラスおよ
び外部クラスのいずれのクラスなのかを認識する。そし
て、コード生成モジュール12は、そのクラスが内部ク
ラスであったとき、そのクラスのメソッドおよびアトリ
ビュートを定義しているインタフェース情報をクラス情
報から知得し、ローカルな関数として宣言するためのへ
ッダファイルを生成した後、手続きファイル22に格納
された各オブジェクトの手続きに付加して生成コードフ
ァイル24に出力する。また、コード生成モジュール1
2は、そのクラスが外部クラスであったときには、外部
からアクセスできるように、IDL(Interfac
e Definition Language)などの
ようなインタフェース定義言語によって、インタフェー
スを定義するためのコードを生成した後、手続きファイ
ル22に格納された各オブジェクトの手続きに付加して
生成コードファイル24に出力する。たとえば、図4に
示したクラス情報によれば、クラスBは外部クラスであ
るために、図5の(1)に示したようなインタフェース
定義コードが生成されることになる。なお、シンタック
スは、オブジェクト指向技術の標準化団体であるObj
ect Management Groupが制定した
CORBA仕様にしたがっている。
【0025】また、コード生成モジュール12は、この
中に含まれるメソッドまたはアトリビュートが外部から
アクセスできる場合に、それを外部から利用できるよう
にインタフェース定義を出力する。そして、クラス内で
のみ利用されるメソッドまたはアトリビュートについて
は、ローカルな関数として宣言するためのへッダファイ
ルを出力する。なお、前述したクラスBに含まれるメソ
ッドMb1は外部から利用されるために(図4参照)、
図5の(2)に示したようなインタフェース定義が出力
されることになる。一方、メソッドMb2は内部からの
み利用されるものであるため、図6に示したようなロー
カルな関数として宣言するためのヘッダファイルが出力
される。
【0026】ここで、図7乃至図9を参照して同実施形
態の動作を説明する。
【0027】図7はクラス分類モジュール11の動作を
説明するためのフローチャートである。
【0028】クラス分類モジュール11は、オブジェク
ト関連情報ファイル21に格納されたオブジェクト関連
情報から一つのクラスを選択し(ステップA1〜ステッ
プA2)、このクラスを内部クラスとするのか外部クラ
スとするのかがユーザによって決定されていない場合に
(ステップA3のN)、その選択したクラスに対して他
のいくつのクラスがメッセージを発行しているか、その
数を抽出する(ステップA4)。そして、クラス分類モ
ジュール11は、この数が1であった場合に(ステップ
A5のY)、その選択したクラスを内部クラスと判定し
(ステップA6)、1でなかった場合には(ステップA
5のN)、その選択したクラスを外部クラスと判定する
(ステップA7)。
【0029】このように、一部または全部のクラスにつ
いてのクラス種別の判定を自動的に行なわせることによ
り、オブジェクト指向プログラミングの設計作業に費や
されるユーザの労力を軽減することが可能となる。
【0030】図8はコード生成モジュール12の動作を
説明するためのフローチャートである。
【0031】コード生成モジュール12は、オブジェク
ト情報ファイル21に格納されたオブジェクト情報から
一つのクラスを選択し(ステップB1〜ステップB
2)、そのクラスのクラス種別をクラス情報ファイル2
3に格納されたクラス情報から読み取る(ステップB
3)。なお、この選択は、順次すべてのクラスを対象に
しても、ユーザが指定した任意のクラスだけを対象にし
ても良い。そして、コード生成モジュール12は、その
クラスが内部クラスであった場合(ステップB4の
N)、ローカルな関数として宣言するためのへッダファ
イルを生成する(ステップB5)。
【0032】一方、外部クラスであった場合には(ステ
ップB4のY)、コード生成モジュール12は、外部か
らアクセスできるように、インタフェースを定義するた
めのコードを生成する(ステップB6)。また、コード
生成モジュール12は、そのクラスに属するメソッドと
属性をそれぞれ選択していき(ステップB7〜ステップ
B8)、それらが外部アクセスされるか否かをクラス情
報から判定する(ステップB9)。そして、コード生成
モジュール12は、外部アクセスされる場合には(ステ
ップB9のY)、外部からのアクセスを可能とするため
に、インタフェースを定義するためのコードを生成し
(ステップB10)、外部アクセスされない場合には
(ステップB9のN)、ローカルな関数として宣言する
ためのへッダファイルを出力する(ステップB11)。
【0033】これにより、クラスの種別およびメソッド
の種別に適したコードが自動生成されることになり、プ
ログラミングの労力を軽減するとともに、適切なオブジ
ェクト間通信が実現されることになる。
【0034】なお、図9に、このように作成されたオブ
ジェクトが実行される際の手順を説明するフローチャー
トを示しておく。
【0035】アクセスしようとするクラスが内部クラス
である場合(ステップC1のY)、このクラスはローカ
ル関数としてアクセスされる(ステップC2)。一方、
外部クラスである場合(ステップC1のN)、外部アク
セス制限がチェックされ(ステップC3)、アクセス可
能な場合には(ステップC4のY)、インタフェース定
義コードを用いてアクセスが行なわれる(ステップC
5)、そして、アクセス不可な場合には(ステップC4
のN)、アクセス例外が発行されることになる(ステッ
プC6)。
【0036】(第2の実施形態)次に、この発明の第2
の実施形態を説明する。同実施形態に係る開発支援装置
の機器構成は、第1の実施形態と同様である。図10に
同実施形態の機能ブロックを示す。
【0037】図10に示されるクラス配置決定ユーティ
リティプログラム30は、オブジェクト関連情報に含ま
れるクラスを再配置し、オブジェクト図を編集して表示
装置4に表示するためのプログラムである。このクラス
配置決定ユーティリティプログラム30は、オブジェク
ト関連情報ファイル21に格納されたオブジェクト関連
情報に含まれるクラスを抽出してクラステーブル31を
作成する。このクラステーブル31は、オブジェクト関
連情報に含まれるクラスをもれなく調べるために作成さ
れるものである。そして、クラス配置決定ユーティリテ
ィプログラム30は、このクラステーブル31を用いて
抽出したクラスとそれ以外のクラスとの間にあるメッセ
ージ数をクラスごとに計数する。すべてのクラスに対す
るメッセージ数の計数が終了すると、クラス配置決定ユ
ーティリティプログラム30は、メッセージ数によりソ
ートを行ない、メッセージ数が多いクラス対を順に選択
できるようにする。そして、クラス配置決定ユーティリ
ティプログラム30は、メッセージ通信の多い順にそれ
ぞれのクラスが近傍になるように配置する。
【0038】ここでは、近傍であるか否かを簡単に知る
ために次のような距離の計算を行なう。すなわち、オブ
ジェクト図の座標軸に整数を割り振り、そのマス目にク
ラスを配置するようにする。距離はX軸の差とY軸の差
を加算した値で計算するものとする。たとえば、図11
に示したオブジェクト図のクラスAとクラスBとでは、
X軸の差が2でY軸の差が1であるので距離は3とな
る。
【0039】配置の規則の一例としては、たとえば両者
のクラスが既に配置されているときには配置を変更せ
ず、一方のクラスが配置されているときには他方をその
クラスのもっとも近傍に配置し、また、両クラスが未配
置の場合は両クラスが隣り合わせに配置可能な任意の場
所に配置するといったものが挙げられる。
【0040】これにより、たとえば近傍にあるクラスを
同一の計算機上で実行することによって、このようなク
ラス同士の通信をネットワークを介したメッセージ通信
とせずにプロセス間またはプロセス内通信とするといっ
たようなプログラミングが容易かつ適切に実現されるこ
とになる。
【0041】図12はクラス配置決定ユーティリティプ
ログラム30の動作手順を説明するためのフローチャー
トである。
【0042】クラス配置決定ユーティリティプログラム
30は、オブジェクト関連情報からクラスを抽出してク
ラステーブル31を作成する(ステップD1)。このク
ラステーブル31が作成されると、クラス配置決定ユー
ティリティプログラム30は、順次クラスを選択してい
き(ステップD2〜ステップD3)、これらのクラスに
対してメッセージを発行するクラスの数を計数する(ス
テップD4)。次に、クラス配置決定ユーティリティプ
ログラム30は、この計数したクラス数のソートを実行
した後(ステップD5)、メッセージ数の多いクラス対
を選択し(ステップD6〜ステップD7)、これらが新
規のオブジェクト図に配置ずみかどうか判定する(ステ
ップD8)。このとき、両方配置ずみの場合には何もし
ない。また、両方未配置の場合には、両方のクラスが隣
りあう任意の位置に配置する(ステップD10)。さら
に、片方のみ配置ずみの場合には、他方のクラス(未配
置のクラス)を配置ずみのクラスから最短となる空きス
ペースに配置する(ステップD19)。
【0043】すなわち、通信時間を可能な限り減少させ
るオブジェクト指向プログラミングが実現されることに
なる。
【0044】(第3の実施形態)次に、この発明の第3
の実施形態を説明する。同実施形態では、第1実施形態
で示したコード生成ユーティリティプログラム10によ
る検索メソッドのコード生成を取り上げる。コード生成
ユーティリティプログラム10は、オブジェクト関連情
報よりクラスを選択し、この選択したクラス対してクラ
ス内に含まれるメソッド情報を管理するテーブルを作成
する。このテーブルには、クラスの説明やクラスに含ま
れるメソッドとその引数情報などが含まれる。
【0045】ここではクラスBというクラスが選択さ
れ、その情報として図13に示すようなテーブルが作成
されたとする。そして、このテーブルとテーブルに含ま
れる情報をアクセスするメソッドを追加する。その一例
を図14に示す。
【0046】この例では、C++言語に類似した構文を
用いている。テーブルは、ClassInfoという構
造体として定義されている。この中に含まれるstri
ngは文字列、Listはリストを示している。
【0047】$$$infoはテーブルの内容を取り出
すための追加メソッドであり、戻り値としてテーブルの
内容を返すようになっている。
【0048】この検索メソッドを使用することにより、
すでに動作しているクラスがどのようなものであるかを
動的に知ることができ、また、既存のクラスを再利用し
てオブジェクト分析・設計を行なうときに、既存クラス
がもつ静的な情報を見ることが可能となり、必要とする
クラスを容易に見つけることができるようになる。
【0049】
【発明の効果】以上詳述したように、この発明によれ
ば、オブジェクト指向に基づいて設計されたクラス群を
システム内の複数のクラスからアクセスされる可能性の
ある外部クラスと単一のクラスからのみアクセスされる
内部クラスとによって、それぞれに適した実装コードが
自動的に生成される。これによって効率的なオブジェク
ト間通信を実現するとともに、不要なオブジェクト情報
を公開することがなくなるのでセキュリティを向上させ
る効果がある。
【0050】また、オブジェクト指向プログラムの設計
において、メッセージが複数のクラスから発行される
か、単一のクラスからのみ発行されるかによって内部ク
ラスと外部クラスを自動的に判別するため、クラスを分
散環境に適用する際に、内部クラスをそれと関連が深い
クラスの側に配置するなどによって効率的なクラス配置
が可能となる。
【0051】また、静的なメッセージ通信が多いオブジ
ェクト同士を近傍に配置することによって、たとえばこ
のようなオブジェクト同士の通信をネットワークを介し
たメッセージ通信ではなくプロセス間またはプロセス内
通信になるように、通信時間を減少させる効率的なクラ
ス配置が可能となる。
【0052】また、クラス内の検索メソッドを使用する
ことにより、すでに動作しているクラスがどのようなも
のであるかを動的に知ることが可能になり、提供してい
る機能が未知であるクラスの情報を得ることができる。
そして、既存のクラスを再利用してオブジェクト分析・
設計を行なうときに、既存クラスがもつ静的な情報を見
ることが可能となり、必要とするクラスを容易に見つけ
ることができるようになるため、再利用性を高めること
が可能となる。
【図面の簡単な説明】
【図1】この発明の第1の実施形態に係る開発支援装置
の機器構成を示す図。
【図2】同実施形態の開発支援装置の機能ブロックを示
す図。
【図3】同実施形態のオブジェクト関連情報ファイルに
格納されたオブジェクト関連情報を概念的に示すオブジ
ェクト関連図。
【図4】同実施形態のクラス情報ファイルに格納される
クラス情報を示す概念図。
【図5】同実施形態のインタフェース定義コードを例示
する図。
【図6】同実施形態のローカルな関数として宣言するた
めのヘッダファイルを例示する図。
【図7】同実施形態のクラス分類モジュールの動作を説
明するためのフローチャート。
【図8】同実施形態のコード生成モジュールの動作を説
明するためのフローチャート。
【図9】同実施形態のオブジェクトが実行制御されると
きの手順を説明するためのフローチャート。
【図10】第2の実施形態の機能ブロックを示す図。
【図11】同実施形態のクラス相互間の距離の算出を説
明するための図。
【図12】同実施形態のクラス配置決定ユーティリティ
プログラムの動作手順を説明するためのフローチャー
ト。
【図13】同実施形態の検索メソッドに保持されるクラ
ステーブルを示す図。
【図14】同実施形態の検索メソッドに含まれるコード
を例示する図。
【符号の説明】
1…CPU、2…主メモリ、3…外部記憶装置、4…表
示装置、5…入力装置、10…コード生成ユーティリテ
ィプログラム、11…クラス分類モジュール、12…コ
ード生成モジュール、21…オブジェクト関連情報ファ
イル、22…手続き記述ファイル、23…クラス情報フ
ァイル、24…生成コードファイル、30…クラス配置
決定ユーティリティプログラム、31…クラステーブ
ル。

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】 複数のオブジェクトの集まりによって構
    成されるクラス相互間でメッセージを送受信させるオブ
    ジェクト指向プログラミングに適用される開発支援装置
    において、 前記クラスそれぞれが同一計算機上に配置されたクラス
    からのみ用いられる内部クラスなのか他の計算機上に配
    置されたクラスからも用いられる外部クラスなのかを示
    すクラス情報を管理するクラス情報管理手段と、 プログラミング対象のクラスが内部クラスおよび外部ク
    ラスのいずれであるのかを前記クラス情報管理手段が管
    理するクラス情報により知得して、内部クラスであった
    ときにはローカルな関数として宣言するためのヘッダフ
    ァイルを生成し、外部クラスであったときにはインタフ
    ェースを定義するためのインタフェース定義コードを生
    成するコード生成手段とを具備してなることを特徴とす
    る開発支援装置。
  2. 【請求項2】 前記クラス情報は、クラスに属するオブ
    ジェクトのメソッドが同一クラス内からのみアクセスさ
    れるローカルメソッドなのか外部からアクセスされるリ
    モートメソッドなのかを示すメソッド情報を含んでお
    り、 前記コード生成手段は、外部クラスに属するオブジェク
    トをプログラミング対象とする際、さらにそのオブジェ
    クトのメソッドがローカルメソッドおよびリモートメソ
    ッドのいずれであるのかを前記メソッド情報により知得
    して、ローカルメソッドであったときにはローカルな関
    数として宣言するためのヘッダファイルを生成し、リモ
    ートメソッドであったときにはインタフェースを定義す
    るためのインタフェース定義コードを生成する手段を具
    備してなることを特徴とする請求項1記載の開発支援装
    置。
  3. 【請求項3】 クラス相互間の関連を示すクラス関連情
    報を管理するクラス関連情報管理手段と、 前記クラス関連情報管理手段が管理するクラス関連情報
    に基づき、前記クラスそれぞれについて外部クラスおよ
    び内部クラスのいずれとすべきか判定するクラス判定手
    段とをさらに具備し、 前記クラス情報管理手段は、前記クラス判定手段の判定
    結果をクラス情報として管理することを特徴とする請求
    項1または2記載の開発支援装置。
  4. 【請求項4】 前記クラス判定手段は、単一のクラスか
    らのみメッセージが発行されるクラスを内部クラスと判
    定し、複数のクラスからメッセージが発行されるクラス
    を外部クラスと判定する手段を具備してなることを特徴
    とする請求項3記載の開発支援装置。
  5. 【請求項5】 前記クラス関連情報管理手段が管理する
    クラス関連情報からクラス相互間のメッセージの結合度
    を算出し、この算出した結合度の高いクラス同士が近傍
    に配置されるようにクラス配置を決定するクラス配置決
    定手段をさらに具備してなることを特徴とする請求項3
    または4記載の開発支援装置。
  6. 【請求項6】 前記クラス配置決定手段による配置結果
    を表示する表示手段をさらに具備してなることを特徴と
    する請求項5記載の開発支援装置。
  7. 【請求項7】 前記コード生成手段は、同一クラスに属
    するオブジェクトのメソッドがもつ機能すべてを示すメ
    ソッド機能一覧を保持するメソッド機能テーブルと、他
    のクラスに対してメソッド機能一覧の引き渡しを要求す
    るメッセージを送信する手段および他のクラスからメソ
    ッド機能一覧の引き渡しを要求するメッセージが送信さ
    れたときに前記メソッド機能テーブルに保持されたメソ
    ッド機能一覧を返送する手段を備えた検索メソッドとを
    有してなるオブジェクトをクラスごとに生成する手段を
    具備してなることを特徴とする請求項1、2、3、4、
    5または6記載の開発支援装置。
  8. 【請求項8】 複数のオブジェクトの集まりによって構
    成されるクラス相互間でメッセージを送受信させるオブ
    ジェクト指向プログラミングに適用される開発支援方法
    において、 前記クラスそれぞれが同一計算機上に配置されたクラス
    からのみ用いられる内部クラスなのか他の計算機上に配
    置されたクラスからも用いられる外部クラスなのかを示
    すクラス情報を管理し、 プログラミング対象のクラスが内部クラスおよび外部ク
    ラスのいずれであるのかを前記管理するクラス情報によ
    り知得して、内部クラスであったときにはローカルな関
    数として宣言するためのヘッダファイルを生成し、外部
    クラスであったときにはインタフェースを定義するため
    のインタフェース定義コードを生成することを特徴とす
    る開発支援方法。
  9. 【請求項9】 複数のオブジェクトの集まりによって構
    成されるクラス相互間でメッセージを送受信させるオブ
    ジェクト指向プログラミングに適用される開発支援方法
    において、 前記クラスそれぞれが同一計算機上に配置されたクラス
    からのみ用いられる内部クラスなのか他の計算機上に配
    置されたクラスからも用いられる外部クラスなのかを示
    すクラス情報と、クラスに属するオブジェクトのメソッ
    ドが同一クラス内からのみアクセスされるローカルメソ
    ッドなのか外部からアクセスされるリモートクラスなの
    かを示すメソッド情報とを管理し、 プログラミング対象のクラスが内部クラスおよび外部ク
    ラスのいずれであるのかを前記管理するクラス情報によ
    り知得して、内部クラスであったときにはローカルな関
    数として宣言するためのヘッダファイルを生成し、外部
    クラスであったときには、さらにそのクラスに属するプ
    ログラミング対象のオブジェクトのメソッドがローカル
    メソッドおよびリモートメソッドのいずれであるのかを
    前記メソッド情報により知得して、ローカルメソッドで
    あったときにはローカルな関数として宣言するためのヘ
    ッダファイルを生成し、リモートメソッドであったとき
    にはインタフェースを定義するためのインタフェース定
    義コードを生成することを特徴とする開発支援方法。
  10. 【請求項10】 複数のオブジェクトの集まりによって
    構成されるクラス相互間でメッセージを送受信させるオ
    ブジェクト指向プログラミングに適用される開発支援方
    法において、 前記クラス相互間の関連を示すクラス関連情報を管理
    し、 プログラミング対象のクラスが同一計算機上に配置され
    たクラスからのみ用いられる内部クラスおよび他の計算
    機上に配置されたクラスからも用いられる外部クラスの
    いずれであるのかを前記クラス関連情報から判定するス
    テップと、 内部クラスであったときにはローカルな関数として宣言
    するためるためのヘッダファイルを生成し、外部クラス
    であったときにはインタフェースを定義するためのイン
    タフェース定義コードを生成することを特徴とする開発
    支援方法。
  11. 【請求項11】 複数のオブジェクトの集まりによって
    構成されるクラス相互間でメッセージを送受信させるオ
    ブジェクト指向プログラミングに適用される開発支援方
    法において、 前記クラス相互間の関連を示すクラス関連情報と、クラ
    スに属するオブジェクトのメソッドが同一クラス内から
    のみアクセスされるローカルメソッドなのか外部からア
    クセスされるリモートクラスなのかを示すメソッド情報
    とを管理し、 プログラミング対象のクラスが同一計算機上に配置され
    たクラスからのみ用いられる内部クラスおよび他の計算
    機上に配置されたクラスからも用いられる外部クラスの
    いずれであるのかを前記クラス関連情報から判定するス
    テップと、 内部クラスであったときにはローカルな関数として宣言
    するためのヘッダファイルを生成し、外部クラスであっ
    たときには、さらにそのクラスに属するプログラミング
    対象のオブジェクトのメソッドがローカルメソッドおよ
    びリモートメソッドのいずれであるのかを前記メソッド
    情報により知得して、ローカルメソッドであったときに
    はローカルな関数として宣言するためのヘッダファイル
    を生成し、リモートメソッドであったときにはインタフ
    ェースを定義するためのインタフェース定義コードを生
    成することを特徴とする開発支援方法。
  12. 【請求項12】 複数のオブジェクトの集まりによって
    構成されるクラス相互間でメッセージを送受信させるオ
    ブジェクト指向プログラミングに適用される開発支援を
    行なうためのプログラムであって、 前記クラスそれぞれが同一計算機上に配置されたクラス
    からのみ用いられる内部クラスなのか他の計算機上に配
    置されたクラスからも用いられる外部クラスなのかを示
    すクラス情報を管理し、 プログラミング対象のクラスが内部クラスおよび外部ク
    ラスのいずれであるのかを前記管理するクラス情報によ
    り知得して、内部クラスであったときにはローカルな関
    数として宣言するためのヘッダファイルを生成し、外部
    クラスであったときにはインタフェースを定義するため
    のインタフェース定義コードを生成するようにコンピュ
    ータを動作させるためのプログラムを格納したコンピュ
    ータ読取可能な記録媒体。
  13. 【請求項13】 複数のオブジェクトの集まりによって
    構成されるクラス相互間でメッセージを送受信させるオ
    ブジェクト指向プログラミングに適用される開発支援を
    行なうためのプログラムであって、 前記クラスそれぞれが同一計算機上に配置されたクラス
    からのみ用いられる内部クラスなのか他の計算機上に配
    置されたクラスからも用いられる外部クラスなのかを示
    すクラス情報と、クラスに属するオブジェクトのメソッ
    ドが同一クラス内からのみアクセスされるローカルメソ
    ッドなのか外部からアクセスされるリモートクラスなの
    かを示すメソッド情報とを管理し、 プログラミング対象のクラスが内部クラスおよび外部ク
    ラスのいずれであるのかを前記管理するクラス情報によ
    り知得して、内部クラスであったときにはローカルな関
    数として宣言するためのヘッダファイルを生成し、外部
    クラスであったときには、さらにそのクラスに属するプ
    ログラミング対象のオブジェクトのメソッドがローカル
    メソッドおよびリモートメソッドのいずれであるのかを
    前記メソッド情報により知得して、ローカルメソッドで
    あったときにはローカルな関数として宣言するためのヘ
    ッダファイルを生成し、リモートメソッドであったとき
    にはインタフェースを定義するためのインタフェース定
    義コードを生成するようにコンピュータを動作させるた
    めのプログラムを格納したコンピュータ読取可能な記録
    媒体。
  14. 【請求項14】 複数のオブジェクトの集まりによって
    構成されるクラス相互間でメッセージを送受信させるオ
    ブジェクト指向プログラミングに適用される開発支援を
    行なうためのプログラムであって、 前記クラス相互間の関連を示すクラス関連情報を管理
    し、 プログラミング対象のクラスが同一計算機上に配置され
    たクラスからのみ用いられる内部クラスおよび他の計算
    機上に配置されたクラスからも用いられる外部クラスの
    いずれであるのかを前記クラス関連情報から判定し、 内部クラスであったときにはローカルな関数として宣言
    するためるためのヘッダファイルを生成し、外部クラス
    であったときにはインタフェースを定義するためのイン
    タフェース定義コードを生成するようにコンピュータを
    動作させるためのプログラムを格納したコンピュータ読
    取可能な記録媒体。
  15. 【請求項15】 複数のオブジェクトの集まりによって
    構成されるクラス相互間でメッセージを送受信させるオ
    ブジェクト指向プログラミングに適用される開発支援を
    行なうためのプログラムであって、 前記クラス相互間の関連を示すクラス関連情報と、クラ
    スに属するオブジェクトのメソッドが同一クラス内から
    のみアクセスされるローカルメソッドなのか外部からア
    クセスされるリモートクラスなのかを示すメソッド情報
    とを管理し、 プログラミング対象のクラスが同一計算機上に配置され
    たクラスからのみ用いられる内部クラスおよび他の計算
    機上に配置されたクラスからも用いられる外部クラスの
    いずれであるのかを前記クラス関連情報から判定し、 内部クラスであったときにはローカルな関数として宣言
    するためのヘッダファイルを生成し、外部クラスであっ
    たときには、さらにそのクラスに属するプログラミング
    対象のオブジェクトのメソッドがローカルメソッドおよ
    びリモートメソッドのいずれであるのかを前記メソッド
    情報により知得して、ローカルメソッドであったときに
    はローカルな関数として宣言するためのヘッダファイル
    を生成し、リモートメソッドであったときにはインタフ
    ェースを定義するためのインタフェース定義コードを生
    成するようにコンピュータを動作させるためのプログラ
    ムを格納したコンピュータ読取可能な記録媒体。
JP23293197A 1996-11-27 1997-08-28 オブジェクト指向プログラミングに適用される開発支援装置および開発支援方法 Pending JPH10214191A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP23293197A JPH10214191A (ja) 1996-11-27 1997-08-28 オブジェクト指向プログラミングに適用される開発支援装置および開発支援方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP8-316309 1996-11-27
JP31630996 1996-11-27
JP23293197A JPH10214191A (ja) 1996-11-27 1997-08-28 オブジェクト指向プログラミングに適用される開発支援装置および開発支援方法

Publications (1)

Publication Number Publication Date
JPH10214191A true JPH10214191A (ja) 1998-08-11

Family

ID=26530742

Family Applications (1)

Application Number Title Priority Date Filing Date
JP23293197A Pending JPH10214191A (ja) 1996-11-27 1997-08-28 オブジェクト指向プログラミングに適用される開発支援装置および開発支援方法

Country Status (1)

Country Link
JP (1) JPH10214191A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080313613A1 (en) * 2007-03-21 2008-12-18 Bierhoff Kevin M Method for statically checking an object-oriented computer program module
JP2016201009A (ja) * 2015-04-13 2016-12-01 三菱電機株式会社 ソースコード生成システム、ソースコード生成装置、ソースコード生成方法及びプログラム
US20170031702A1 (en) * 2015-07-29 2017-02-02 Robert Bosch Gmbh Method and device for securing the application programming interface of a hypervisor

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080313613A1 (en) * 2007-03-21 2008-12-18 Bierhoff Kevin M Method for statically checking an object-oriented computer program module
US8327327B2 (en) * 2007-03-21 2012-12-04 Carnegie Mellon University Method for statically checking an object-oriented computer program module
JP2016201009A (ja) * 2015-04-13 2016-12-01 三菱電機株式会社 ソースコード生成システム、ソースコード生成装置、ソースコード生成方法及びプログラム
US20170031702A1 (en) * 2015-07-29 2017-02-02 Robert Bosch Gmbh Method and device for securing the application programming interface of a hypervisor
US10445125B2 (en) * 2015-07-29 2019-10-15 Robert Bosch Gmbh Method and device for securing the application programming interface of a hypervisor

Similar Documents

Publication Publication Date Title
US7650604B2 (en) Access management apparatus, access management method and program
US9772890B2 (en) Sophisticated run-time system for graph processing
Hailpern et al. Extending objects to support multiple interfaces and access control
JP3110040B2 (ja) 手順間レジスタ割付けを伴うコンピュータプログラムのコンパイル方法及び装置
America Inheritance and subtyping in a parallel object-oriented language
US6134559A (en) Uniform object model having methods and additional features for integrating objects defined by different foreign object type systems into a single type system
US9400700B2 (en) Optimized system for analytics (graphs and sparse matrices) operations
US6704803B2 (en) Method and system for distributing data events over an information bus
JP3437849B2 (ja) オブジェクト指向プログラミングを支援するデータベース管理システム及び方法
US6505344B1 (en) Object oriented apparatus and method for allocating objects on an invocation stack
US5519868A (en) Compilation of information contained in GDMO name bindings
US6829760B1 (en) Runtime symbol table for computer programs
US7849470B2 (en) System and method for extending a programming language to include multiple dissimilar object systems
Wolczko Semantics of object-oriented languages
JP3844801B2 (ja) インターフェース継承を伴うオブジェクト上での呼出しのための方法および機構
Hailpern et al. A model for object-based inheritance
Almes et al. Edmas: an object-oriented, locally distributed mail system
JPH10214191A (ja) オブジェクト指向プログラミングに適用される開発支援装置および開発支援方法
CN106991116A (zh) 数据库执行计划的优化方法和装置
KR101030368B1 (ko) 데이터 저장소 내의 비순서화 및 순서화 컬렉션의 구현을 위한 시스템 및 방법
US20050289501A1 (en) Method and system for enforcing ontological context rules for object-oriented programs
JPH08297573A (ja) オブジェクトデータ処理装置
US7996401B2 (en) Inserting new transactions into a transaction stream
US7613718B2 (en) Mechanism for efficiently implementing object model attributes
US6202098B1 (en) Method and system for object oriented notification