JPH0969120A - ソフトウェアモデリングシステムにおけるデータ依存関係を表示する方法 - Google Patents

ソフトウェアモデリングシステムにおけるデータ依存関係を表示する方法

Info

Publication number
JPH0969120A
JPH0969120A JP8100544A JP10054496A JPH0969120A JP H0969120 A JPH0969120 A JP H0969120A JP 8100544 A JP8100544 A JP 8100544A JP 10054496 A JP10054496 A JP 10054496A JP H0969120 A JPH0969120 A JP H0969120A
Authority
JP
Japan
Prior art keywords
design
operator
dependency
software
graph
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP8100544A
Other languages
English (en)
Other versions
JP3962109B2 (ja
Inventor
Theodore Bardasz
バルダッズ セオドレ
Stefano Malnati
マルナティ ステファノ
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.)
Computervision Corp
Original Assignee
Computervision 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 Computervision Corp filed Critical Computervision Corp
Publication of JPH0969120A publication Critical patent/JPH0969120A/ja
Application granted granted Critical
Publication of JP3962109B2 publication Critical patent/JP3962109B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】ユーザーに分かりやすい方法で、結果として生
じるデザインの構造上の依存関係を表示する。 【解決手段】デザインが、デザインセッション中のソフ
トウェアシステムのファンクションのグループの実行に
より生成され(ステップ201)、生成されたデザイン
の依存関係グラフ表示が生成される(ステップ20
3)。デザインの修正も、依存関係グラフを用いて、デ
ザインのどの部分が修正により影響を受けるかを判断
し、影響を受けた部分を変更するのに必要なコードのみ
を再実行することにより行われる。デザインセッション
中で実行完了後、コンピュータプログラムを標準言語で
生成する(ステップ205)。そしてソフトウェアシス
テム上でコンピュータプログラムを走らせてデザインを
生成する(ステップ209)。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ソフトウェアモデ
リングシステムにおけるデータ依存関係を表示する方法
に関する。
【0002】
【従来の技術】ソフトウェアシステムは、多くの異なる
分野に存在する。この分野において、ユーザーは、イン
タラクティブセッション(interactiv session)中に一連
のコマンド(command) を入力することで、システムと相
互に作用し、それに応じて、ソフトウェアシステムは、
ユーザーコマンドによって定義される動作を行う多数の
ファンクション(function)を実行する。インタラクティ
ブデザインセッション中にデザインのコンピュータモデ
ルを生成するコンピュータ支援設計(CAD)システム
は、このようなシステムの一例である。マサチューセッ
ツ州ベッドフォードにあるコンピュータビジョンコーポ
レーション(本願出願人)から入手できるCADDS
lineのようなCADシステムは、2次元及び/又は
3次元の機械装置のコンピュータモデルを生成するツー
ルを提供する。一般的に、製品デザインを生成する一連
のシステム定義済コマンドをユーザーインタフェースに
入力することで、ユーザーはモデルを相互作用として構
築する。例えば、ユーザーは、箱書き込みのようなある
コマンドを、その箱の所望の寸法(長さ、高さ及び幅)
と所望の位置とを共に入力して、特定の特徴のある箱
を、デザインに加えることができる。他のコマンドは、
前記箱と統合されて、製品デザインを完成することがで
きる円柱、球、穴等のような要素を加えることができ
る。従って、このようなシステム定義済コマンドを入力
することで、ユーザーは、機械装置のコンピュータモデ
ルを構築することができる。
【0003】CADシステムにおけるユーザーインタフ
ェースは、従来から、ユーザーから受け取ったコマンド
を処理するコマンドプロセッサを含んでいる。コマンド
プロセッサは一般的に、受信コマンドを記憶するコマン
ドファイルを生成して、ユーザーとCADシステム間の
インタラクティブセッションの記録を生成できる。コマ
ンドとコマンドプロセッサは一般的に、個々のCADシ
ステムに固有の(proprietary) ものであるので、コマン
ドファイルは本来固有言語である。コマンドを受け取る
とすぐに、ユーザーインタフェースは、アプリケーショ
ンプログラミングインタフェース(API)を呼び出
す。このAPIは、システムに、アクティビティ(activ
ity)を行わせるソフトウェアファンクションである。例
えば、CADシステムにおいて、APIは幾何学的なモ
デラー(modeler)に、固有のコマンドによって要求され
るデザインアクションを達成するための輪郭、面及び頂
点のようなエンティティ(entity)を生成させ、かつ、相
互に連結させて、データベースに前記エンティティをス
トアする。インタラクティブセッション中にユーザーか
ら受け取った一連のコマンドによって作成されるエンテ
ィティの組合せが、製品デザインを定義する。
【0004】ユーザーが、前もって作成されたエンティ
ティ(例えば、箱の高さ)の1つのパラメータ(paramet
er) を変えて製品デザインを変更しようとする場合、ユ
ーザーはヒストリーモジュールを変更してその変更を反
映し、その後、ヒストリーモジュール中の全てのコマン
ドを再実行するシステムに、コマンドのソースとしての
ヒストリーモジュールを供給することができる。コマン
ドが再実行されると、コマンドはコマンドプロセッサに
供給され、コマンドプロセッサは再び適切なAPIを呼
び出し、APIは一般的に古いデザインエンティティを
次々に捨て、新しいヒストリーモジュールはもちろん、
新しい製品デザインをもたらす新しいエンティティを作
成する。このタイプのシステムは、コマンドが基本的な
構築ブロックであるため、”コマンドベース”システム
と呼ばれている。
【0005】
【発明が解決しようとする課題】しかしながら、前述し
たコマンドベースシステムは、ユーザーがインタラクテ
ィブセッションを記録し、その記録を変更し、それらの
変更に基づいて再実行できるものであるが、いくつかの
不具合がある。これらのシステムによって作成されるヒ
ストリーモジュールは、インタラクティブデザインセッ
ション中に受け取られるコマンドの順序を反映し、結果
として生じるデザインの構造上の依存関係(dependency)
を表示しない。従って、例え少しであっても、デザイン
に何らかの変更がなされると、ヒストリーモジュール全
体が新しいデザインを生成するために再実行されなけれ
ばならず、この再実行がデザインプロセスを遅らせるこ
とになる。
【0006】パラメータ能力(parametric capabilitie
s) を含むいくつかのCADシステムが開発されて、変
更がデザインパラメータになされると、変更されたパラ
メータによって影響を受けるデザイン部分だけを更新す
ることにより、システムがデザインを変更するようにし
ている。しかしながら、これらのパラメータ能力は、従
来、システムによって使用される固有のコマンド中に組
み込まれている。従って、サードパーティーベンダーが
ソフトウェアシステム上に付加能力を供給しようとする
場合、システムのパラメータ能力が維持されるべきもの
であれば、新しい能力は、システムの固有のコマンドセ
ットに統合されなければならない。
【0007】前述したコマンドベースシステムによる他
の不具合は、システムがパラメータ能力を含んでいるか
どうかに関係なく、ヒストリーモジュールへの変更が固
有のコマンドを使用しなければならない点である。従っ
て、ユーザーは、ヒストリーモジュール中に反映された
デザインを変更するためには、新しい”プログラミング
言語”を学習しなければならない。さらに、このタイプ
のヒストリーモジュールは、ヒストリーモジュールがデ
ザインの構造上の依存関係を表示せず、むしろ、デザイ
ンプロセス中に受け取られたコマンドの順序にだけ関係
があるため、デザイナーにとっては、作業が困難であ
る。
【0008】本発明はこのような従来の課題に鑑みてな
されたもので、ユーザーに分かりやすい方法で、結果と
して生じるデザインの構造上の依存関係を表示すること
のできるソフトウェアモデリングシステムにおけるデー
タ依存関係を表示する方法を提供することを目的とす
る。
【0009】
【課題を解決するための手段】このため、請求項1の発
明にかかる方法は、デザインを作成する際に使用する複
数のファンクションを含むソフトウェアシステム上で、
デザインセッションから生じるデザインを表示する方法
であって、前記デザインは、対応するファンクションに
よって夫々作成される複数のデザインエンティティを含
み、前記デザインを形成する複数のデザインエンティテ
ィの依存関係を示すデザインの依存関係表示を作成する
依存関係作成ステップと、前記デザインを形成するデザ
インエンティティを作成する際に使用される対応するフ
ァンクションを呼び出して、デザインを表示するコンピ
ュータプログラムを前記依存関係表示から標準的なプロ
グラミング言語で生成するプログラム生成ステップと、
を含むようにした。
【0010】請求項2の発明にかかる方法では、前記プ
ログラム生成ステップが、前記ソフトウェアシステム上
で、デザインを形成する複数のデザインエンティティの
依存関係に対応する構造を有するコンピュータプログラ
ムを生成するステップであるようにした。請求項3の発
明にかかる方法では、前記ソフトウェアシステムは、前
記デザインの依存関係表示を評価するために実行される
ソフトウェアルーチンであることを特徴とし、また、前
記プログラム生成ステップは、前記コンピュータプログ
ラムを生成する際にソフトウェアルーチンの少なくとも
一部を実行するステップであるようにした。
【0011】請求項4の発明にかかる方法では、コンピ
ュータプログラムを編集し、修正されたデザインを表示
する修正コンピュータプログラムを作成するプログラム
修正ステップと、該修正コンピュータプログラムをソフ
トウェアシステム上で実行し、ソフトウェアシステム上
で修正デザインを生成するデザイン修正ステップと、を
さらに含むようにした。
【0012】請求項5の発明にかかる方法では、前記デ
ザイン修正ステップは、前記修正されたデザインの依存
関係表示を生成するステップである。請求項6の発明に
かかる方法では、前記依存関係作成ステップは、前記デ
ザインを形成する複数のデザインエンティティのサブセ
ットを表示する少なくとも1つの階層的なデザインエン
ティティを含む依存関係表示を作成するステップであ
り、前記プログラム生成ステップは、少なくとも1つの
階層的なデザインエンティティを表示するコンピュータ
プログラムを生成するステップである。
【0013】請求項7の発明にかかる方法では、前記プ
ログラム生成ステップは、さらに、前記階層的なデザイ
ンエンティティによって表示される複数のデザインエン
ティティのサブセットを作成する複数のファンクション
を呼び出して、少なくとも1つの階層的なデザインエン
ティティを表示するコンピュータプログラムを生成する
ステップである。
【0014】請求項8の発明にかかる方法では、前記コ
ンピュータプログラムを格納するプログラム格納ステッ
プと、前記ソフトウェアシステムから前記デザインを削
除して格納空間を保存するデザイン削除ステップと、を
さらに含んでいる。請求項9の発明にかかる方法では、
前記ソフトウェアシステム上でコンピュータプログラム
を実行してデザインを再生するデザイン再生ステップを
さらに含んでいる。
【0015】請求項10の発明にかかる方法では、前記
ソフトウェアシステムから依存関係表示を削除して格納
空間をさらに保存する依存関係表示削除ステップをさら
に含んでいる。請求項11の発明にかかる方法では、前
記ソフトウェアシステム上で依存関係表示を再生するコ
ンピュータプログラムを実行する依存関係再生ステップ
をさらに含んでいる。
【0016】請求項12の発明にかかる方法では、複数
のファンクションと1つのユーザーインタフェースを有
し、前記複数のファンクションの対応する1つを呼び出
すことによって複数のコマンドの各々の受領に応答する
ソフトウェアモデリングシステムに、パラメータ能力を
供給する方法であって、前記複数のファンクションは、
モデルを作成するモデリングセッション中に実行され、
ソフトウェアシステムにおいて前記複数のファンクショ
ンの各々の周囲にラッパーを供給して複数の結合ファン
クションを作成するステップであって、該複数の結合フ
ァンクションの各々は、対応するファンクションを呼び
出すことを特徴とし、さらに、その対応するファンクシ
ョンが前記モデリングセッション中に実行されたとき、
前記モデルの依存関係表示にグラフエンティティを作成
し、付加する能力を有するものである結合ファンクショ
ン作成ステップと、各々受け取ったコマンドに応じて、
該受け取ったコマンドに対応する前記ファンクションに
対応する結合ファンクションが呼び出されるように、前
記ユーザーインタフェースを修正するユーザーインタフ
ェース修正ステップと、を含んでいる。
【0017】請求項13の発明にかかる方法では、前記
複数のファンクションの少なくとも1つは、固有のパラ
メータ能力を有していないようにしている。請求項14
の発明にかかる方法では、前記複数のファンクション
は、第1のフォーマットでフォーマットされた引数の第
1のセットに作用する第1のファンクションを含むこと
を特徴とし、また、前記結合ファンクション作成ステッ
プは、第1のファンクションの周囲に第1のラッパーを
供給するステップであって、該第1のラッパーは、第1
のフォーマットとは異なる第2のフォーマットでフォー
マットされた引数の第2のセットを受け取ることが可能
であり、第1のファンクションが呼び出されるとき、引
数の第2のセットを引数の第1のセットに変換するもの
である。
【0018】請求項15の発明にかかる方法では、前記
結合ファンクション作成ステップは、前記ラッパーの各
々を、オブジェクト指向コンピュータプログラミング言
語に供給するステップである。請求項16の発明にかか
る方法では、修正が前記モデルになされたとき、前記依
存関係表示を使用するツールを供給して前記デザインの
修正によって影響を受けるグラフエンティティに対応す
る前記モデルを作成するのに使用されるファンクション
だけを再評価するファンクション再評価ステップをさら
に含んでいる。
【0019】請求項17の発明にかかる方法では、各々
の結合ファンクションのためのテーブルエントリを有す
るハッシュテーブルを作成するステップであって、各々
のテーブルエントリは、該結合ファンクションが実行さ
れたとき、依存関係表示に作成され、付加された前記グ
ラフエンティティのトポロジイを確認するものであるハ
ッシュテーブル作成ステップをさらに含んでいる。
【0020】請求項18の発明にかかる方法では、前記
結合ファクション作成ステップは、さらに、標準的なコ
ンピュータプログラミング言語により前記ラッパーの各
々を供給するステップである。請求項19の発明にかか
る方法では、前記グラフエンティティを依存関係表示に
作成し、付加する前記結合ファンクションの各々と協働
する単一のプロセッサファンクションを作成する単一プ
ロセッサファンクション作成ステップをさらに含んでい
る。
【0021】請求項20の発明にかかる方法では、各々
の結合ファンクションのためのテーブルエントリを有す
るハッシュテーブルを作成するステップであって、各々
のテーブルエントリは、結合ファンクションが実行され
たときに、前記依存関係表示に作成され、付加されるグ
ラフエンティティのトポロジィを確認するハッシュテー
ブル作成ステップをさらに含んで構成され、また、前記
単一プロセッサファンクション作成ステップは、単一の
プロセッサファンクションを作成し、ハッシュテーブル
においてエントリにアクセスすることにより前記依存関
係表示を作成するステップであって、該単一のプロセッ
サファンクションは一般的なものであり、結合ファンク
ションによって呼び出されたときに、それに渡される引
数に応じて動作するものである。
【0022】請求項21の発明にかかる方法では、デザ
インを作成する際に使用する複数のファンクションを含
むソフトウェアシステム上で、デザインセッションから
生じるデザインに作用する方法であって、前記デザイン
は対応するファンクションによって各々作成される複数
のデザインエンティティであり、前記複数のファンクシ
ョンは正算と非正算に係るものであることを特徴とし、
前記デザインを形成する複数のデザインエンティティの
間で、依存関係を示すデザインの依存関係表示を作成す
るステップであって、該依存関係表示は、正算と非正算
との両者によって作成されるデザインエンティティを表
示するものである依存関係作成ステップを含んでいる。
【0023】請求項22の発明にかかる方法では、前記
ソフトウェアシステムは、さらに、相互に接続された非
正算の制限セットを解明するエンジンを含むことを特徴
とし、また、前記依存関係作成ステップは、さらに、デ
ザインをチェックして、相互に接続された非正算の各々
の制限セットがエンジンが解明できる型のものであるか
否か判定するデザインチェックステップを含んでいる。
【0024】請求項23の発明にかかる方法では、デザ
インを作成する際に使用する複数のファンクションを含
むことを特徴とするソフトウェアシステム上で、デザイ
ンセッションから生じるデザインに作用する方法であっ
て、前記デザインは、前記複数のファンクションの対応
する1つによって各々作成される複数のデザインエンテ
ィティであることを特徴とし、前記デザインを形成する
前記複数のデザインエンティティの間で、依存関係を示
すデザインの依存関係表示を作成する依存関係作成ステ
ップと、前記デザインの依存関係表示を表示する依存関
係表示ステップと、を含んでいる。
【0025】請求項24の発明にかかる方法では、依存
関係表示を修正し、修正されたデザインを表示する修正
依存関係表示を作成する依存関係修正ステップと、該修
正依存関係表示から修正デザインを生成するデザイン修
正ステップと、をさらに含んでいる。請求項25の発明
にかかる方法では、デザインを作成する際に使用する複
数のファンクションを含むことを特徴とするソフトウェ
アシステム上で、デザインセッションから生じるデザイ
ンに作用する方法であって、前記デザインは、前記複数
のファンクションの対応する1つによって各々作成され
る複数のデザインエンティティであることを特徴とし、
前記デザインを形成する前記複数のデザインエンティテ
ィの依存関係を示すデザインの依存関係表示を作成する
ステップであって、該依存関係表示は、前記複数のデザ
インエンティティを表示する複数のグラフエンティティ
に特徴を有するものである依存関係作成ステップと、同
じ階層のグラフエンティティを有する複数のグラフエン
ティティの少なくとも2つを表示するグラフエンティテ
ィ表示ステップと、を含んでいる。
【0026】請求項26の発明にかかる方法では、前記
デザインに修正を加えるデザイン修正ステップと、前記
依存関係表示を使用して、デザインの修正によって影響
を受ける1組のデザインエンティティを確認するデザイ
ンエンティティ確認ステップと、前記修正によって影響
を受ける1組のデザインエンティティに対応するデザイ
ンを作成する際に使用されるファンクションだけを再評
価するファンクション再評価ステップと、をさらに含む
ことを特徴とする請求項1〜請求項25のいずれか1つ
に記載のソフトウェアモデリングシステムにおけるデー
タ依存関係を表示する方法。
【0027】
【発明の実施の形態】本発明の実施の形態によれば、モ
デリングを行う任意のソフトウェアシステムのための一
組のファンクションを、パラメータ能力を有する対応す
る一組のファンクションに変換するための方法が供給さ
れる。従って、パラメータ能力は、その一組のファンク
ションが固有のパラメータ能力を有していないソフトウ
ェアシステムに供給される。
【0028】他の実施の形態では、本発明によって作成
されるパラメータファンクションが、インタラクティブ
ユーザーセッション中に、或いは、デザイン又はモデル
を作成するプログラムによって呼び出されると、パラメ
ータファンクションは、結果としてのモデルだけではな
く、モデルの依存関係グラフ表示をも生成する。別の実
施の形態では、本発明によって作成される依存関係グラ
フが、正算(directed)ファンクションと非正算制限(non
-directed constraint) 関係とが単一の依存関係グラフ
に混合できるように作成されて評価される。
【0029】さらに、他の実施の形態では、変更がモデ
ルに対してなされると、本発明によって作成された依存
関係表示が使用されて、変更によって影響を受けるモデ
ルの部分だけが更新されたモデルを作成する際に再評価
される。本発明の他の実施の形態によれば、依存関係グ
ラフは、モデルの依存関係を表示するためにユーザーに
視覚的に提供される。
【0030】本発明の他の実施の形態によれば、ソフト
ウェアシステムで実行されるファンクションは、依存関
係グラフにおける階層的なグループに分類される。従っ
て、複数のファンクションを必要とするユーザーのデザ
イン目的を、依存関係グラフにおいて単一の階層的なエ
ントリーで表示できる。本発明の他の実施の形態によれ
ば、依存関係グラフは、視覚的なプログラミング環境を
介して作成され、或いは、編集される。依存関係グラフ
に対して変更がなされるとき、グラフを再評価して、対
応する変更をモデルに編入できる。
【0031】他の実施の形態では、本発明によって作成
された依存関係グラフは、モデルへの入力値かまたは、
モデルを作成するのに使用されるファンクションを表示
するグラフ要素を変更するために、ユーザーが変更でき
る。さらに他の実施の形態では、視覚的なプログラミン
グ環境が依存関係グラフを変更するのに使用されると
き、環境が本発明によって作成される一組のパラメータ
ファンクションを呼び出す。パラメータファンクション
は、ユーザーに依存関係グラフを図式的に生成し、編集
させる視覚的なプログラミング技術と互換性がある。
【0032】さらに他の実施の形態では、本発明に従っ
て作成された一組のパラメータファンクションが、ソフ
トウェアシステムのファンクションの周囲にラッパー(w
rapper) を作成することで生成される。ラッパーは、前
述した視覚的なプログラミング環境のような、固有でな
いツールと互換となるように、標準的なコンピュータプ
ログラミング言語で書かれている。
【0033】本発明のさらに他の実施の形態によれば、
ソフトウェアシステム上のモデルやデザインの表示か
ら、コンピュータプログラムを生成するための方法と装
置が供給される。この表示はモデルを形成する複数のモ
デルエンティティの間で依存関係に関してモデルを定義
する。コンピュータプログラムは、標準プログラミング
言語で書くことができる。プログラムがソフトウェアシ
ステムで実行されるとき、プログラムは依存関係表示は
もちろんモデルをも生成する。従って、コンピュータプ
ログラムは、モデリングセッションを効率的な記憶のた
めの標準言語プログラムに変換できる。コンピュータプ
ログラムは、本発明によって作成される依存関係グラフ
から生成できる。
【0034】他の実施の形態では、コンピュータプログ
ラムは編集した後、デザインの変更バージョンを生成す
るソフトウェアシステムで実行できる。本発明の他の特
徴及び利点は、詳細な説明及び図面から明らかとなる。 I.概略 本発明によれば、方法と装置は、モデルリングシステム
内のAPIを、モデルリング(modeling)セッション中に
ユーザインタフェースから又はより大きなプログラムの
一部として呼び出されたとき、モデリングセッション中
に呼び出されたAPIファンクションと、APIに対す
る引数と、APIファンクションの結果との間の依存関
係(dependency)を表示するグラフを生成する結合API
に変換するための方法と装置が提供される。依存関係グ
ラフから、本発明により、ユーザーは、(1)入力をグ
ラフに変換し、影響を受けたファンクションのみを再実
行させること、(2)グラフの構造的依存関係を表示
し、実行時に、グラフを作成するモデリングセッション
と同じ結果を生じる固有でない(non-proprietary) コン
ピュータプログラムを生成すること、(3)依存関係を
視覚化するためのグラフを見ること、(4)モデルの依
存関係構造を変更するためにグラフを編集すること、そ
して(5)モデルを生成するのに使用されるAPIファ
ンクションを変換するためにグラフを編集することがで
きる。
【0035】本発明の1つの様相によれば、デザインを
生成するソフトウェアシステムファンクションの実行に
基づいて、デザインの依存関係グラフ表示と、依存関係
グラフから生成され、そしてまたデザインの構造的依存
関係を表示する固有でないコンピュータプログラムと、
を生成する方法が提供される。この方法は、図1のフロ
ーチャートに図示されている。ステップ201におい
て、デザインは、デザインセッション中のソフトウェア
システムのファンクションのグループの実行により生成
され、そしてステップ203にて、生成されたデザイン
の依存関係グラフ表示が生成される。デザインがデザイ
ンセッション中で修正される場合、本発明は依存関係グ
ラフを用いて、デザインのどの部分が修正により影響を
受けるかを判断するとともに、デザインの影響を受けた
部分を変更するのに必要なコードのみを再実行する。ス
テップ205に示すように、デザインセッション中で実
行完了後、依存関係グラフは、また、実行されたとき
に、依存関係グラフと、それが表示するデザインと、を
生成するコンピュータプログラムを、標準言語で生成す
るように使用できる。ユーザーは、ステップ207で示
すように、コンピュータプログラムを編集して修正され
たデザインを表示し、そしてソフトウェアシステム上で
コンピュータプログラムを走らせて修正されたデザイン
を生成することができる(ステップ209)。コンピュ
ータプログラムは、固有でない言語で記述されているの
で、デザイナーは、それを修正するために固有の言語を
習得する必要がない。なおその上、コマンドがデザイン
セッション中にユーザーから受信されるシーケンスから
というよりもむしろ依存関係グラフからプログラムが開
発されるので、コンピュータプログラムはデザインの構
造的な依存関係を表示する。このように、ユーザーが十
分なコンピュータプログラミングの経験を有していなく
ても、プログラム構成はユーザーによって容易に理解さ
れ、プログラムを容易に修正できる。
【0036】以上、述べられたように、ソフトウェアプ
ログラムは、従来、アプリケーションプログラミングイ
ンタフェース(APIs)を含み、これは、システム定
義ユーザーコマンドと1対1の関係に一般的にマップ化
された高水準のファンクションである。本発明によれ
ば、本発明をソフトウェアシステムの中に統合する統合
プロセスの一部として、最初にソフトウェアシステムの
各APIを通ってAPIの新しいセットを生成するツー
ルが供給される。そして、ソフトウェアシステムのユー
ザーインタフェースは、ユーザーから受け取ったコマン
ドに応答してこれらの新しいAPIを呼び出すように修
正される。本発明のツールによって作成された新しいA
PIは、本質的に2つのことを行う。第1に、新しいA
PIは、ソフトウェアシステムによって供給されたAP
Iのセットによって実行されたファンクションの全て
を、本質的に実行する。第2に、新しいAPIは、ま
た、ユーザーによって作成されたデザインの依存関係グ
ラフ表示を作成するとともに維持する。この依存関係グ
ラフ表示は、グラフへの編集を通してデザインのグラフ
的な編集ができるように、上述されたパラメータ能力を
供給するのに使用でき、そして、また、デザインの構造
的依存関係を表示する標準言語のコンピュータプログラ
ムを生成するのに使用できる。このように、本発明のツ
ールは、高水準ファンクション、あるいはAPIで構成
された何らかのソフトウェアシステム上で、まず、走ら
せて、システムを本発明によって供給された上述の結合
能力を有するシステムに、ユーザーにわかりやすい方法
で変換する結合サブシステムを形成する。
【0037】前述の内容から理解され、また下記説明か
ら明確になるように、本発明は、そのコマンドセット中
にパラメータ能力を含んでいないとしても、APIで構
成されるどんなソフトウェアシステムにもパラメータ能
力を供給することができる。本発明のこの特徴は、サー
ドパーティに、付加的な能力をソフトウェアシステムに
供給させるには有利なものである。ソフトウェアシステ
ムに付加的な能力を供給するには、サードパーティは、
コマンドと、システムのAPIと互換性のある対応する
APIと、を供給するだけでよい。付加的なコマンドは
ソフトウェアシステムのコマンドセット内にパラメータ
能力を供給するために統合される必要はない。なぜなら
ば、本発明のツールが、サードパーティのコマンドとイ
ンストールされたAPIとを有するソフトウェアシステ
ム上で実行されたとき、本発明のツールにより、そして
これらの新しいAPIが使用されてデザインセッション
中に作成されたデザインの依存関係グラフ表示を生成、
維持、そして更新するようにパラメータ能力が供給され
るからである。
【0038】以下の説明では、本発明が実施されるソフ
トウェアシステムに供給される具体例は、インタラクテ
ィブデザインセッション中にデザイナーからコマンドを
受け取って製品デザインを作成するCADシステムであ
る。しかしながら、本発明がCADシステム、あるいは
インタラクティブセッション中に入力を受け取るシステ
ムへの使用に限定されるものではないことは明らかであ
る。本発明は、ファンクションによって構成され、そし
て様々な方法でユーザーからの入力を受け取るどんなソ
フトウェアシステムにも使用できる。例えば、本発明
は、多数のパラメータに基づいて経済モデルを作成する
ソフトウェアシステム、あるいは他の多くのタイプのソ
フトウェアシステムに使用できる。このように、モデル
やデザインといった言葉が依存関係グラフによってモデ
ル化されたソフトウェアシステム出力を参照するために
使用されるが、これらの言葉は、CADモデルに限定さ
れることを意図するものではなく、多数のファンクショ
ンの実行に基づいて何らかのソフトウェアシステムによ
って作成された出力を含むことを意図するものである。
【0039】図2は、CADシステム上で動作する本発
明によって生成される簡単な依存関係グラフ1の例であ
る。グラフ1は、デザイナーが箱をデザインの中に入
れ、箱の重量を計算するためにコマンドを入力するイン
タラクティブデザインセッション中に生成される。箱を
入れるためのコマンドに従って、デザイナーは、箱の中
心に座標を設定するとともに、箱の長さ、幅、高さを設
定する引数(argument)を供給する。これらの引数はデー
タオブジェクト3〜6としてグラフ1に夫々表示され
る。データオブジェクトは、グラフにおける数値を含む
構成要素である。データオブジェクト3〜6の夫々は関
連づけられたファンクションを示すオペレータ7、即
ち、挿入箱に接続されている。オペレータは少なくとも
1つのデータオブジェクトに作用し、ユーザーによって
与えられたデザインアクションを表示するファンクショ
ン又は評価式であるグラフにおける構成要素である。デ
ータオブジェクト3〜6は、リレーション9〜12を経
由してオペレータ7に夫々結合されている。リレーショ
ンは、結合されたオペレータに関して各データオブジェ
クトがどのような役割を果たすかを確認するためのグラ
フにおける構成要素である。図2に示す例において、リ
レーション9〜12は、夫々、箱の長さ、幅、高さ、そ
して中心を設定するものとして結合されたデータオブジ
ェクトを確認する。オペレータ7がデータオブジェクト
3〜6に作用した結果はリレーション15,データオブ
ジェクト17によりグラフに表示される。データオブジ
ェクト17はオペレータ7によって作成されたソフトウ
ェアエンティティを表示し、リレーション15は、オペ
レータの結果を箱として確認する。
【0040】箱の重量を計算するコマンドは、オペレー
タ19によってグラフ中に表示される。箱は立体として
より広く分類される多くの構成の1つである。立体の重
量を計算するために、オペレータ19は、第1のリレー
ション21を経由して受け取った立体の体積に、第2の
リレーション23を経由して受け取った立体の密度を乗
算する。この例では、立体は、計算重量コマンドが引数
として供給されるというよりもむしろ、デザイン中です
でに指定されている。この依存関係は、箱を表示するデ
ータオブジェクト17に接続されているリレーション2
1によってグラフに表示される。密度が、デザイン中で
前もって指定されていないので、箱の重量を計算するコ
マンドが引数としてユーザーによって供給される。依存
関係の不足は、密度の引数を表示するデータオブジェク
ト25に接続されているリレーション23によってグラ
フに表示され、グラフの中ではどのオペレータからも出
力されない。オペレータ19がデータオブジェクト17
と25に作用した結果は、リレーション27とデータオ
ブジェクト29によってグラフに表示される。データオ
ブジェクト29は、オペレータ19によって作成された
ソフトウェアエンティティを表示し、リレーション27
は、箱の重量としてオペレータの結果を確認する。
【0041】図2に示された簡単な例から理解されるよ
うに、本発明により作成された依存関係グラフは、イン
タラクティブセッション中に作成されたデザインの構造
的依存関係を明示している。グラフは、箱の寸法を表示
しているデータオブジェクト3〜5と同様に、箱の重量
29が密度データオブジェクト25に依存していること
を明示している。同様に、グラフは、箱を表示している
データオブジェクト17が密度データオブジェクト25
に依存していないことを明示している。従って、デザイ
ナーがインタラクティブセッション中に箱の密度の修正
を選択する場合、デザインを更新するために再実行され
る必要のあるグラフの唯一の部分はオペレータ19であ
り、オペレータ7は、再実行される必要がない。このよ
うに、デザインの修正がなされたとき、依存関係グラフ
は、本発明が、修正データオブジェクトに依存するオペ
レータのみを再実行することを可能とする。図示された
例は全く簡単なものであるが、本発明のこの特徴によっ
て提供される計算時間の節減は特に大きなデザインにつ
いて著しいことは、明らかである。
【0042】本発明の関連サブシステムがインストール
されたCADシステムのユーザー側からの背景のグラフ
的な表示が図3に示される。このCADシステム35
は、従来のCADコマンド39としてユーザーからの入
力を受け取るユーザーインタフェース37を含む。概し
て、ユーザーは、一連のCADコマンド39を入力する
ことによってCADシステムで、インタラクティブデザ
インセッションを行う。CADコマンドに応答して、ユ
ーザーインタフェース37は、CADシステムの対応固
有API43を順次呼び出す対応結合API42を呼び
出す。API43は、製品デザイン45を作成するため
に実行される。インタラクティブデザインセッション中
に、結合API43とグラフコントローラ47とは、共
に、図2に図示された依存関係グラフのような、製品デ
ザイン45の構造的依存関係を表示する依存関係グラフ
を生成する。デザインセッションの最後で、CADシス
テムは、また、依存関係グラフから、実行されたときに
製品デザイン45の構造的依存関係をも表示するC++
のような非固有の言語でコンピュータプログラム49を
生成することができる。その後、ユーザーは、CADシ
ステムのエディタ/コンパイラ/リンカ51を用いて、
修正された製品デザインを表示するためにコンピュータ
プログラム49を編集し、修正された製品デザイン45
を生成するために、CADシステムのためにプログラム
をコンパイルしリンクする。代わりに、ユーザーは、視
覚的なプログラミング環境を使って依存関係グラフをグ
ラフィカルに編集することができ、この依存関係グラフ
は修正された製品デザイン45と修正されたコンピュー
タプログラム49とを生成するために使用できる。視覚
的なプログラミング環境の出力は、デザインを修正する
ための望ましいデザイン動作を遂行する対応結合API
に視覚的なプログラミング環境から受信された表現を翻
訳するインタプリタ52に供給される。
【0043】II.結合サブシステムの統合 上述したように、本発明が種々のソフトウェアシステム
のいずれにもこれらのシステムのユーザーにとって分か
りやすいように、使用可能にするために、各ソフトウェ
アシステム上で1度だけ実行して、本発明の能力を供給
するソフトウェアツールが供給される。このソフトウェ
アツールはどんな標準コンピュータ言語でも記述できる
が、C++のようなオブジェクト指向プログラミング言
語で記述するのが好ましい。図4は、このツールの構成
を図示し、結合API構築用ツール61として参照され
る。ツール61は、本発明の特徴を組み入れるためにソ
フトウェアシステムにおいて各アプリケーションプログ
ラミングインタフェース(API)に関して一度だけ実
行され、各APIについて対応APIイタンフェースを
生成する。発明の1つの環境において、構築用ツール6
1は、ソフトウェアシステムの各APIに個別に作用す
る。
【0044】上述したように、APIは、一般にユーザ
ーから受け取られることができるコマンドに対応するシ
ステム内の高水準のソフトウェアファンクションであ
る。図2の例では、CADシステムは、箱を挿入し、そ
して、立体の重量を計算するファンクションを実行する
APIを有している。概念的には、各APIについて構
築用ツール61によって生成される結合APIは、2つ
の役割を実行する。第1に、製品デザインの生成に関し
て対応APIが、ソフトウェアシステムに対して実行す
るのと同じ役割を実行する。例えば、箱を挿入するため
の図2の例におけるAPIに対して生成される結合AP
Iは、製品デザイン内に箱を入れて、CADシステム上
でそれを表示するファンクションを実行する。第2に、
各結合APIは、対応するAPIによって行われる動作
を依存関係グラフに表示する役割を実行して、APIに
よって生成されるデザインの一部が、それらがどのよう
に製品デザインの他の様相に関連づけられるかを理解で
きるようにする。
【0045】各結合APIは2つの役割を実行するの
で、構築用ツール61は、ただ単に各APIに対する2
つのファンクション、言い換えれば各役割を実行する1
つのファンクションを生成できるだけである。しかしな
がら、本発明の好ましい実施の形態では、構築用ツール
61は、結合APIプロセッサとして参照され、各結合
APIのグラフ構成を生成するための一般的ファンクシ
ョンと、製品デザインのデザインアクションを遂行する
役割を実行する各結合API用の1つのソフトウェアフ
ァンクションに対する呼び出しを決定するマクロコール
を生成する。結合APIプロセッサに供給される引数
は、結合APIプロセッサを呼び出す結合APIの名称
であり、その結合APIに対する引数である。構築用ツ
ール61は、また、各結合API用のソフトウェアエン
ティティ(後述する)を作成し、ソフトウェアエンティ
ティは、前記結合API用に構築されるグラフエンティ
ティのトポロジィと、結合APIにより行われるデザイ
ンアクションを表示するためにグラフ内に生成されるオ
ペレータにより表示されるファンクションを記述する。
【0046】図4にグラフィカルに示すように、構築用
ツール61は、ソフトウェア内で固有のAPI62のフ
ァンクションテンプレートに作用するとともに、各AP
Iに対して結合API63を生成する対応結合API6
6のファンクションテンプレートに作用する。各API
と結合APIとのファンクションテンプレートは、ファ
ンクション名、その引数と結果のデータタイプ、そして
引数名と結果名とを定義する。構築用ツールによって生
成された各結合APIは、3つの構成要素、即ち、結合
APIマクロコール65、結合APIデータ構成要素6
7、そして結合APIのオペレータエバリュエータ69
を含む。以下に、さらに詳細に説明するように、構築用
ール61が、各々に関して結合APIを生成するために
新しいソフトウェアシステムのAPI上で実行されたと
き、システムのユーザーインタフェースは、また、各ユ
ーザーコマンドが対応APIを直接呼び出すというより
もむしろ、その対応結合APIを呼び出すように、修正
される。このように、ラッパーが、本発明の付加的な能
力がユーザーにわかりやすい方法で供給されるようにソ
フトウェアシステム内の各APIの周囲に供給される。
【0047】インタラクティブデザインセッション中に
ユーザーコマンドによって呼び出されたとき、各結合A
PIは、順次に結合APIプロセッサ71(図5)を呼
び出す。プロセッサ71は、最初に、コマンドによって
行われるデザインアクションを表示するオペレータを含
むために依存関係グラフを更新し、そして製品デザイン
にデザインアクションを実際に行うファンクションが確
実に呼び出されるようにする。結合API63の構成要
素の各々によって実行される役割は結合APIプロセッ
サ71の役割と密接に結びつくので、本発明のこれらの
様相を図5を参照しながら説明する。図5は、AAPI
構成要素63の結合APIプロセッサ71とCADユー
ザーインタフェース37との関係を図示している。
【0048】プロセッサ71を呼び出す各結合API
は、特定数のデータオブジェクトと、各々がデータオブ
ジェクトの1つのオペレータに対する関係を定義する対
応する数のリレーションと、を有するオペレータによっ
て依存関係グラフに表示されている。結合APIプロセ
ッサは、依存関係グラフの各オペレータ、リレーショ
ン、そしてデータオブジェクトを表示するためにソフト
ウェアエンティティを作成する。このような関係におい
て、ソフトウェアエンティティという言葉は、例えばC
++のようなオブジェクト指向プログラミング言語のオ
ブジェクト、あるいは、例えばCのようなプログラミン
グ言語の構造であるようなソフトウェアプログラムによ
って作成されるエンティティを示すことを意図する。
【0049】結合APIプロセッサ71は、AAPIに
よって実行される特別なデザインアクションにかかわり
なく、同じ方法で全ての結合APIからコールを扱う点
において一般的である。例えば、図2に示される依存関
係グラフを参照すると、結合APIプロセッサ71は、
同じ方法で箱の挿入とその重量の計算を夫々表示して、
データオブジェクトとリレーションにそれらを依存関係
グラフ内で単に結び付けるオペレータ7と19とを取り
扱う。
【0050】前述のソフトウェアシステムの各APIに
ついて構築ツール61を実行して各APIに関する結合
APIを生成するのに加え、本発明の統合処理は、ま
た、ユーザーから受け取った各コマンドに応答して、A
PIを直接呼び出すというよりもむしろ、インタフェー
ス37が対応結合APIを呼び出すように、システムの
ユーザーインタフェース37を修正する。特に、ユーザ
ーインタフェースによって呼び出されるのは、各結合A
PI63のマクロコール構成要素65である。ユーザー
インタフェースは、受け取られたコマンドに含まれるす
べてのデータ引数を結合APIに渡す。図2に示された
具体例に関し、ユーザーが箱を挿入するためのコマンド
を入力したとき、ユーザーインタフェースは、そのコマ
ンドに対応した結合APIを呼び出して、これらを箱の
長さ、幅、高さと中心点に関するコマンド内で受け取ら
れたデータ引数に渡す。ユーザーインタフェースによっ
て結合APIのマクロコール65が呼び出されると、そ
れは、順次結合APIプロセッサ71(図5)を呼び出
し、プロセッサに、ファンクション(例えば、挿入箱、
重量の計算)を確認するのに使われるマクロ名と同様
に、マクロ65を呼び出したコマンドと共に受け取られ
た引数の順序リストを含むデータストリングをプロセッ
サに渡す。
【0051】結合APIは一般的な依存関係グラフ構築
用であり、何らかの特別な結合APIを扱うために特に
デザインされているわけではないので、呼び出すマクロ
名と命令データのリストを含むストリングは、呼び出す
マクロに基づいて依存関係グラフが更新される方法を指
定するには不十分である。このように、プロセッサ71
は、呼び出すストリング内のマクロ名を使ってそのデー
タ構成要素67から呼び出すAAPI63についての付
加的な情報を受け取る。各結合APIのデータ構成要素
67は、対応するAPIに関する入力データオブジェク
ト数、これらのオペレータとの夫々のリレーション、そ
して結果としてのデータオブジェクトのリレーション数
を定義する原文情報を含む。ソフトウェアシステムを立
ち上げるときはいつでも、そしてデザインセッションの
開始前に結合APIプロセッサ71は、(データ構成要
素65によって供給された)各結合API63を記述す
るASCIIデータファイルを解読して、AAPI名に
よって刻まれた各AAPIに関するエントリーを含むハ
ッシュテーブル73を生成する。インタラクティブデザ
インセッション中にAAPIによって呼び出されると、
プロセッサ71は、ハッシュテーブル73内の対応エン
トリーを使って、呼び出すAAPIを依存関係グラフに
表示するオペレータ、リレーションとデータオブジェク
トを作成する。各結合APIのためのハッシュテーブル
エントリーはソフトウェアエンティティの形態で、AA
PIの入力データオブジェクトの数、AAPIのオペレ
ータに対する夫々のリレーション、そしてAAPIの出
力データオブジェクトのリレーションを確認する。
【0052】III.依存関係グラフの作成 結合APIプロセッサ71は、デザインセッション中に
マクロコール65によって呼び出されると、プロセッサ
71は、呼び出すマクロ名を使って、呼び出すAAPI
の構造特性に関係する情報を含むソフトウェアエンティ
ティを出力するハッシュテーブル73にインデックス化
する。例えば、図2に関連して記載されるような箱に挿
入するためのファンクションに関係するAAPIからの
呼び出しに関して、ハッシュテーブル73から出力され
た対応ソフトウェアエンティティは、マクロ名に沿って
プロセッサ71を通過したデータの命令リストにおける
第1の引数が箱の長さであり、第2の引数が幅であり、
第3の引数が高さであり、そして第4の引数が箱の中心
点であることを示す情報を含む。結合APIプロセッサ
71は、ハッシュテーブル73から出力されたソフトウ
ェアエンティティを照会してプロセッサを呼び出した特
別のAAPIマクロのために依存関係グラフが更新され
る方法を判定する。このファンクションはハッシュテー
ブルから出力されたソフトウェアエンティティに、呼び
出されたAAPIに関係づけられている入力の数を尋ね
る。次に、結合APIプロセッサ71は、そのエンティ
ティに、命令データのリストの第1の引数に関係する名
前は何であるかを尋ね、そして(例えば、長さ、幅、高
さのような)名前を使ってオペレータに対するデータオ
ブジェクトに対するリレーションを定義する。結合AP
Iプロセッサ71は、入力と出力のデータオブジェクト
のすべてのリレーションが定義されるまでこの方法を続
行する。プロセッサ71は、プロセッサ71に渡された
情報のストリングに含まれる呼び出すマクロ名からオペ
レータ名を引き出す。
【0053】前述したように、結合APIプロセッサは
依存関係グラフのオペレータ、リレーション、そしてデ
ータオブジェクトの夫々を表示するためのソフトウェア
グラフエンティティを作成する。各オペレータ(例え
ば、図2の例における挿入箱と重量の計算)のために作
成されたグラフエンティティは、リレーションを表示す
るグラフエンティティに対するポインタのリストを含ん
でいる。各ポインタは、リレーションの1つを表示する
グラフエンティティをストアするメモリ場所(location)
の アドレスを含む。各リレーションのために作成され
たグラフエンティティは、リレーション名、そして、グ
ラフ内のリレーションに接続されたデータオブジェクト
を表示するグラフエンティティをストアするメモリ場所
のアドレスを含むポインタを含む。最後に、依存関係グ
ラフにデータオブジェクトを表示する各グラフエンティ
ティは、データオブジェクトに対応する引数値がストア
されたメモリ場所に対するポインタを含む。以上から、
AAPIに対するオペレータ、リレーション、そしてデ
ータオブジェクトの構造的な関係を判定するために結合
APIプロセッサ71によって照会される各AAPIの
ためのソフトウェアエンティティのハッシュテーブルを
設けたことにより、システム内の各APIのために個別
のグラフ処理ファンクションが生成されることが要求さ
れるというよりはむしろ、ソフトウェアシステムに付け
加えられた単一の付加的なファンクション(例えば、プ
ロセッサ71)のみによって依存関係グラフの作成が達
成できることが理解される。
【0054】IV. 依存関係グラフの評価の概略 結合APIマクロコールに応答して依存関係グラフを更
新するのに加えて、結合APIプロセッサは、また、呼
び出す結合APIによって指定された製品デザインにデ
ザインアクションを行うために、新しく作成された各オ
ペレータ評価を開始する。依存関係グラフの各オペレー
タを表示するソフトウェアエンティティは、そのマクロ
コールがオペレータの作成という結果になるAAPIの
オペレータエバリュエータ69(図5)に関係する2つ
のポインタを含む。第1のポインタは、オペレータエバ
リュエータ69がストアされるライブラリを指し、そし
て第2のポインタはオペレータエバリュエータであるラ
イブラリ中のファンクション名を指す。このように、結
合APIプロセッサ71は、AAPIからの呼び出しに
応答して依存関係グラフを更新した後、プロセッサ71
は、それ自身の評価のために新しく作成されたオペレー
タを呼び出す。この処理は図5に図示されており、結合
APIプロセッサ71が、それ自身を評価するために図
2の重量計算オペレータ19を呼び出しているのが示さ
れる。
【0055】前述したように、構築用ツール61(図
4)によって作成された各AAPIは、ソフトウェアシ
ステム内の固有APIの周囲のラッパーである。各AA
PIのためのオペレータエバリュエータ69は、周囲を
囲まれた固有API名を呼び出すファンクションであ
る。呼び出されたとき、オペレータエバリュエータ69
は、依存関係グラフ内のエバリュエータオペレータに接
続された入力データオブジェクトから引数を収集し、こ
れらの引数を固有のAPIによって予想される形式にフ
ォーマットし、更に、望ましいデザインファンクション
を完成させるための正しい順序の引数を用いてAPIを
呼び出す。再び図2を参照すると、箱を挿入するための
CADシステム内の固有APIは、例えば、渡されるデ
ータ引数が長さ、幅、高さ、そして中心として定められ
ることを期待する“CV_INSERT_BOX(l,w,h,center)"と
命名される。ユーザーが、長さを2とし、幅を3とし、
高さを4とし、そして中心座標を(0,0)として指定
する引数により箱を挿入するコマンドを入力する場合、
ユーザーインタフェースはCV_INSERT_BOX APIの周
囲を囲まれたAAPIを呼び出して、依存関係グラフ内
にデータオブジェクト3〜5と17、リレーション9〜
12と15、そしてオペレータ7を作成する。AAPI
プロセッサ71がオペレータ7にそれ自身を評価するよ
うに命令すると、結合APIのオペレータエバリュエー
タ69(図5)は、データオブジェクト3〜5にストア
された引数を収集して命令し、そして“CV_INSERT_BO
X(2,3,4,0,0)" として固有のAPIを呼び出す。この呼
び出しは、本発明のソフトウェアツールが固有APIの
周囲のラッパーを作成するためにシステムにインストー
ルされていない場合には、ソフトウェアシステムのユー
ザーインタフェース37により直接に行われるものに一
致する。
【0056】プロセッサ71がそれ自身を評価するため
にグラフオペレータを呼び出すとき、対応するオペレー
タエバリュエータ69(図5)にとって、製品デザイン
に指定されたデザインアクションを行うために呼び出さ
れる固有APIにより要求される順序の引数を収集して
構成することは、直截的処理である。各AAPIのため
のオペレータエバリュエータ69は、呼び出される対応
固有APIの名前を含むだけでなく、APIに供給され
る引数の名前と順序をも含む。例えば、図2に示された
オペレータ7を評価するとき、対応AAPIエバリュエ
ータ69は、まず、オペレータ7に、箱の長さを表示す
る引数を供給するように要求する。オペレータ7を表示
するグラフエンティティはそれ自身を確認するためにそ
のリレーションの夫々を要求するファンクションを実行
する。一旦、長さのリレーションが確認されると、オペ
レータ7に表示するグラフエンティティは、長さのリレ
ーション9に表示するグラフエンティティに箱の長さを
定義する引数を供給するように要求する。そして、長さ
のリレーション9に表示するグラフエンティティは、デ
ータオブジェクト3に表示するグラフエンティティにそ
の引数を渡すことを要求し、一旦、引数が受け取られる
と、順次、引数を、オペレータエバリュエータ69に引
数を返す挿入箱オペレータ7を表示するグラフエンティ
ティに渡す。エバリュエータ69は、同じ方法で残りの
引数を要求して受け取る。一旦、すべての引数が収集さ
れると、オペレータエバリュエータは、引数の順序を指
定するそれ自身の呼び出しにより、製品デザインに適当
なアクションを行うために、固有API“CV_INSERT_
BOX"を呼び出す。
【0057】固有APIが呼び出されると、これは渡さ
れた引数によりデザインアクションを実行し、更に、順
次結果を、評価されたオペレータを表示するグラフエン
ティティに渡すオペレータエバリュエータに戻す。そし
て、評価されたオペレータを表示するグラフエンティテ
ィは、結果をオペレータの出力リレーションを表示する
グラフエンティティに渡し、このグラフエンティティに
より、順次結果を、そのデータオブジェクトを表示する
グラフエンティティに渡し、このグラフエンティティ
は、最終的にデータオブジェクトにより指示されたメモ
リ場所にその結果をストアする。このように、他のオペ
レータに対して引数としての役割を実行できる評価され
たオペレータの結果は、依存関係グラフに入力される。
【0058】1.拡張コマンドのフォーマット適応性 本発明の1つの実施の形態では、1つ又はそれ以上のオ
ペレータエバリュエータ69(図4と5)は、一定のデ
ザインアクションがユーザーのレベルで定義できる方法
に関するソフトウェアシステムの適応性を増大させる能
力を供給される。例えば、上記の例は箱の長さ、幅、高
さと中心の座標位置によって定義されるような箱を示し
ているが、箱の角の位置だけを定義するような、ユーザ
ーが箱を定義できる他の方法があることがわかる。これ
は、デザイナーによって行う方法が具体的な長さ、幅と
高さによるよりは、むしろ、この方法で箱を定義するこ
とがより利点があるような一定のデザイン環境には望ま
しい。従来、CADシステムが、箱がその角によって定
義される固有APIを含まない場合、ユーザーは、この
方法で箱を定義するコマンドを供給されない。しかしな
がら、本発明のオペレータエバリュエータファンクショ
ンは、ユーザーが利用できるコマンドのフォーマットに
増大した適応性を供給できる固有APIの周囲にラッパ
ーを供給する。例えば、本発明のツールが走るCADシ
ステムが、長さ、幅、高さ、そして中心点に関して定義
された箱の作成を供給するだけである場合、本発明のオ
ペレータエバリュエータファンクションはユーザーに、
箱の角によるような付加的な方法で箱を定義させること
ができる。
【0059】本発明の好ましい実施の形態では、依存関
係グラフとそこから生成されたコンピュータプログラム
が、デザインセッション中にユーザーによって行われる
デザインアクションと非常に密接に相関する方法で製品
デザインの構造的依存関係を表示する。それゆえに、付
加的なコマンドフォーマットを供給する本発明の特徴が
使われたとき、依存関係グラフは、ユーザーによって指
定された方法で作成され、ストアされる。例えば、ユー
ザーが箱の角によって箱を定義するために能力が供給さ
れ、そしてユーザーがこの能力を開発すれば、箱を挿入
するデザインアクションを表示する依存関係グラフオペ
レータは箱の角によって箱を定義するデータオブジェク
トとリレーションとを含むことになる。オペレータがそ
れ自身を評価するために呼び出され、順次、そのAAP
Iオペレータエバリュエータ69(図5)を呼び出すと
き、エバリュエータは依存関係グラフ内のオペレータの
表示をソフトウェアシステムの固有APIを呼び出すた
めに要求される形態に変換する。上記の箱を挿入する例
を使うと、挿入箱オペレータに関連するオペレータエバ
リュエータは前述の方法で箱の角を定義する引数を収集
し、それらの引数を処理して、この方法で調整され配列
される引数にのみ作用する固有挿入箱コマンドに渡され
る長さ、幅、高さ、そして中心座標の引数を生成する。
ユーザーに供給される増大した適応性は、新しい固有A
PIの作成を必要としない。なぜならば、適応性は、固
有API周囲の本発明によって供給されるラッパーによ
って遂行されるからである。
【0060】本発明の好ましい実施の形態において、ユ
ーザーに供給されるコマンドフォーマットの適応性が各
コマンドに対応するAAPIオペレータエバリュエータ
69で遂行されるにもかかわらず、本発明のこの特徴は
他の方法で遂行できることがわかる。例えば、ユーザー
から入力されるフォーマットと固有APIによって要求
されるフォーマットとの間の変換は、AAPIデータ構
成要素で実行して、依存関係グラフが固有APIによっ
て予想されるフォーマットで生成できるようにする。フ
ォーマット変換がこの方法で実行されたとき、AAPI
オペレータエバリュエータはどんなフォーマット変換の
実行をも必要としない。
【0061】V.依存関係グラフへの加入を反映するため
のソフトウェアアプリケーションエンティティの更新 ソフトウェアシステムの各固有のAPIの回りのAAP
Iラッパーを生成するのに加えて、本発明は、また、プ
ロダクトデザインを表示するソフトウェアシステムによ
って生成されたソフトウェアアプリケーションエンティ
ティを修正して、各アプリケーションエンティティが、
依存関係グラフに加入しているかどうか、また、その加
入している場所をわかるようにする。例えば、本発明が
インストールされたソフトウェアシステムがCADシス
テムであれば、これにより生成されたアプリケーション
エンティティは、製品デザインを表示する箱、円柱、及
び他の構造を含むことができる。例えば、図2の例にお
いて、箱を挿入するためのオペレータ7の評価の結果
は、箱を表示するアプリケーションエンティティであ
り、その記述は、本来的に箱を定義するために使われる
引数(長さ、幅、高さと中心点)を含んでいる。
【0062】前述のように、本発明は、オブジェクト指
向プログラミング言語で実施されるのが好ましい。他の
プログラミング言語が本発明を実施するのに使用される
ことはできるが、オブジェクト指向プログラミング言語
は、各アプリケーションエンティティが依存関係グラフ
に加入しているかどうか、また加入している場所を理解
できるように、デザインセッション中にソフトウェアシ
ステムによって作成されたアプリケションエンティティ
に簡単な修正ができる能力を有する点で有利である。オ
ブジェクト指向プログラミング言語により、アプリケー
ションエンティティは、共通のクラスで定義されるいく
つかの共通の特徴を有することができる。図2の依存関
係グラフを参照すると、重量計算オペレータ19は、立
体の体積に密度を乗算することにより立体の重量を計算
する。図2において操作される具体的な立体は、円柱、
球等を含むより広いクラスの立体の1つの箱である。オ
ブジェクト指向プログラミング言語で様々なタイプのア
プリケーションエンティティを定義する場合、階層的な
構造を使用できる。例えば、立体クラス(例えば、体積
に密度を乗算することにより立体の重量を提供するファ
ンクション)に属する特定のタイプのアプリケーション
エンティティのすべてに共通のファンクションと指標
は、立体のクラスの定義において一旦定義できる。その
クラス内のさらに多くの特定のアプリケーションエンテ
ィティ(たとえば箱、円柱、球等)の夫々の定義は、そ
の立体クラスの参照を含み、ここから受け継ぐ。このよ
うに、立体クラスの定義に提供されるファンクションと
指標は、クラスから受け継いだアプリケーションエンテ
ィティの夫々の定義の一部を形成し、アプリケーション
エンティティのより特定のクラスの各々の定義において
複製される必要がない。例えば、箱のクラスの各アプリ
ケーションエンティティは、箱の重量を決定する特定の
ファンクションなしに、この決定の能力を有する。なぜ
ならば、そのファンクションは、箱のクラスが受け継い
だものから、立体の定義において定義されるからであ
る。
【0063】オブジェクト指向プログラミング言語に役
に立つ受け継いだ能力を使い、各アプリケーションエン
ティティが依存関係グラフに加入しているのであれば、
加入している場所を決定するのに必要なファンクション
と指標は、結合変数クラスとして参照される単一のクラ
スに供給でき、このクラスから、製品デザインの部分を
表示するためにソフトウェアシステムによって作成され
た各アプリケーションエンティティに受け継がれる。ユ
ーザーによってデザインに入力された各引数は、また、
結合変数クラスから受け継ぐアプリケーションエンティ
ティとして定義される。結合変数クラスは、依存関係グ
ラフの特定のデータオブジェクト(例えば、図2のデー
タオブジェクト3〜6,17,25と29)に対するポ
インタを確認するためのフィールドを含む。このよう
に、製品デザインの部分を表示するため、あるいはユー
ザーから入力された引数を表示するためのソフトウェア
システムにより作成されたアプリケーションエンティテ
ィは、もしあれば、依存関係グラフ内でそれを表示する
特定のデータオブジェクトを指し示すこのポインタを使
用する。ポインタフィールドが特定のアプリケーション
エンティティにない場合、アプリケーションエンティテ
ィが依存関係グラフの対応するデータオブジェクトを割
り当てられてないため、グラフにまだ加入していないこ
とを示す。もし、ポインタフィールドが値を持っている
のであれば、アプリケーションエンティティは指し示さ
れたデータオブジェクトによりグラフ中に表示される。
【0064】結合変数クラスは、また、クラスから受け
継いだアプリケーションエンティティの各々に渡される
2つのファンクションを供給する。第1のファンクショ
ンは、アプリケーションエンティティが依存関係グラフ
に付け加えられたとき、上記ポインタフィールドを、対
応するデータオブジェクトの場所を確認する特定の値に
セットする。第2のファンクションは、アプリケーショ
ンエンティティが依存関係グラフの中のどこに存在して
いるかが問われたとき、ポインタの値を検索し、その値
を戻す。以上、述べたように、ソフトウェアプログラム
によって生成されたアプリケーションエンティティに加
えて、ユーザーによってシステムに入力された引数は、
また、結合変数クラスに依存するアプリケーションエン
ティティとして表示される。それゆえに、データオブジ
ェクトとして依存関係グラフに表示される各アプリケー
ションエンティティは、結合変数クラスに依存するの
で、各アプリケションエンティティは、データオブジェ
クトポインタフィールドとポインタの値をセットして検
索するファンクションを含む。
【0065】結合変数クラスによりアプリケーションエ
ンティティの夫々に供給される能力は、図2に示される
例を参照すると、以下の方法でグラフの作成とマネージ
メントとに使われる。まず、ユーザーは、箱を挿入する
ためのコマンドを入力する。このコマンドのエントリー
により、AAPI63(図5)が上述された方法で結合
APIプロセッサ71を呼び出すことになる。APIプ
ロセッサ71を呼び出す際に、AAPIマクロコール6
5は、プロセッサに、呼び出すマクロに関連する引数、
例えば、箱の長さ、幅、高さ、そして中心位置を渡す。
これらの引数の各々は、結合変数クラスに依存するアプ
リケーションエンティティの形態で渡される。このよう
にして、依存関係グラフ上のマクロコールの影響を決定
するために、結合APIプロセッサ71は、各引数がグ
ラフに表示されているか否か、そしてグラフのどこに表
示されているのかを決定するために、引数を表示するア
プリケーションエンティティの夫々に照会する。引数は
グラフに前もって表示されていないため、引数の1つを
表示するアプリケーションエンティティの夫々はそのデ
ータオブジェクトポインタに零の値を含む。これらの零
のポインタを読み出すと、APIプロセッサ71は、各
引数のためのデータオブジェクトを表示する新しいグラ
フエンティティを作成し、引数アプリケーションエンテ
ィティに対し、新しく作成されたグラフエンティティの
メモリ場所にそのデータオブジェクトポインタをセット
することを命令する。そして、APIプロセッサは、上
記方法で、箱を挿入するためのオペレータ7とリレーシ
ョン9〜12とを表示するグラフエンティティを作成す
る。加えて、APIプロセッサ71は、リレーション1
5と結果としてのデータオジェクト17とを表示するグ
ラフエンティティを作成する。そして、プロセッサ71
は、オペレータ7に、それ自身を評価することを命じ
て、そのAAPIオペレータエバリュエータ69の呼び
出しを行う。上述の方法でオペレータエバリュエータ
は、挿入箱の固有APIを呼び出し、エバリュエータ
に、作成した箱を表示するアプリケーションエンティテ
ィを戻す。そして、オペレータエバリュエータ69は、
箱を定義するアプリケーションエンティティのデータオ
ブジェクト17のためのメモリ場所を指し示すデータオ
ブジェクトポインタを更新することによって、依存関係
グラフへの加入に関する情報で箱を定義するアプリケー
ションエンティティを供給する。
【0066】図2に関する例に続いて、ユーザーから受
け取られた次のコマンドは箱の重量を計算することであ
る。このコマンドに応答して、対応AAPIマクロコー
ル65は、結合APIプロセッサ71に、例えば、箱を
定義するアプリケーションエンティティのような、重量
計算ファンクションが実行されるための引数を渡す。A
PIプロセッサ71は、このアプリケーションエンティ
ティに、依存関係グラフのそれに対応するデータオブジ
ェクトを確認するポインタの値を特定することを要求す
る。このようなデータオブジェクトは前もって作成され
るので、データオブジェクト17のアドレスはプロセッ
サ71に戻される。そして、プロセッサ71は、重量計
算オペレータ19とリレーション21を表示するグラフ
エンティティを生成することにより依存関係グラフを更
新する。リレーション21を表示するグラフエンティテ
ィでは、a′ポインタが、データオブジェクト17を表
示するグラフエンティティをストアするメモリ場所のア
ドレスを含むように更新される。このように、挿入箱オ
ペレータ7上の重量計算オペレータ19の依存関係は依
存関係グラフに反映される。結合APIプロセッサ71
は、また、上記方法で依存関係グラフを完成するため
に、その結合リレーションと同様に、新しいデータオブ
ジェクト25と29とを作成する。
【0067】VI.依存関係グラフの作成と評価のための
結合APIプロセッサルーチン 依存関係グラフに加入するか否か、そしてどこに加入す
るのかを理解するための各引数とアプリケーションエン
ティティの上記能力は、AAPIマクロによって呼び出
されたときに、プロセッサ71が実行するステップを示
す図6に示された方法により依存関係グラフを作成する
間、結合APIプロセッサ71によって利用される。ま
ず、ステップ401では、結合APIプロセッサ71
が、グラフエンティティを作成して、呼び出すマクロの
デザインアクションに対応する依存関係グラフにおける
オペレータを表示する。そして、ステップ403では、
本方法は、処理のためのマクロの引数の1番目を選択す
る。上述したように、各引数は、データオブジェクトに
より依存関係グラフに、引数が表示されているのか、そ
してどこに表示されているのかを示すポインタフィール
ドを含むアプリケーションエンティティとして結合AP
Iプロセッサ71に渡される。
【0068】ステップ405では、本方法は、選択され
た引数のデータオブジェクトポインタを読み込んで、デ
ータオブジェクトポインタがないのかどうかを判定し、
データオブジェクトポインタがないときは、本方法は、
ステップ407に進み、依存関係グラフの新しいデータ
オブジェクトを表示するためにグラフエンティティが作
成される。そして、引数を表示するアプリケーションエ
ンティティが更新されて、そのデータオブジェクトポイ
ンタが新しく作成されたデータオブジェクトを指し示
す。ステップ407でデータオブジェクトの作成が行わ
れたあと、あるいはステップ405でデータオブジェク
トがすでに引数用に存在していると判定される場合、本
方法は、ステップ409に進み、ステップ401で作り
出されたデータオブジェクトとオペレータとの間にリレ
ーションが作成される。ステップ411では、処理され
ている引数が、呼び出すマクロに関連する最後の引数で
あるかどうかついて判定がなされ、そしてそうではない
とき、本方法は、ステップ403に戻って処理するため
の他の引数を選択する。このように、本方法は、ステッ
プ401で作成されたオペレータに結合される入力リレ
ーションとデータオブジェクトを作成し、それらをオペ
レータに接続するためにステップ403〜411を実行
する。
【0069】ステップ411で、最後の引数が処理され
たと判定されたときは、本方法は、ステップ413と4
15に進み、結果としてのデータオブジェクトとリレー
ションとが、夫々、オペレータのために作成される。そ
して、本方法は、ステップ417に進み、結合APIプ
ロセッサ71が、オペレータにそれ自身を評価すること
を要求する。データの順序リストとともに、対応する固
有APIを呼び出すAAPIオペレータエバリュエータ
69によって実行される評価は、アプリケーションエン
ティティの形態で結合APIプロセッサ71に結果を戻
す。ステップ418では、結果は、ステップ413で作
成された結果としてのデータオブジェクトに関連づけら
れるが、結果を定義するアプリケーションエンティティ
でデータオブジェクトポインタを更新する。最後に、ス
テップ419では、プロセッサ71は、結果を定義する
アプリケーションエンティティを、その呼び出しが方法
を開始させたマクロに戻す。
【0070】VII .依存関係グラフの評価 図6の方法のステップ417においてオペレータの評価
をプロセッサ71が要求するのに応答して、すべてのオ
ペレータに一般的な、そして、評価されたオペレータの
オペレータエバリュエータ69を呼び出す前に、オペレ
ータによって要求される引数のすべてが更新されること
を保証する引数の収集とオペレータの評価のルーチンが
呼び出される。引数の収集ルーチンのステップは図7に
示されている。初めに、評価されたオペレータに関係づ
けられている第1の引数が処理のためにステップ501
で選択され、この引数が「同調しない」(out of sync
h)か否かについてステップ502にて判定がなされる。
「同調しない」の語句は、変更されてはいるものの、ま
だ再評価されていない少なくとも1つのグラフエンティ
ティに、引数を表示するデータオブジェクトが依存して
いることを示すために使われる。このように、引数が同
調しない場合、本方法は、ステップ503に進んで、引
数の更新が要求される。ステップ503で更新が要求さ
れた後、あるいは引数が同調していることがステップ5
02において判定された場合、本方法は、ステップ50
4に進み、評価されるオペレータのための引数のすべて
が収集されたかどうかに関する判定がなされる。収集さ
れていないと判定されたときは、本方法は、ステップ5
01に戻り、新しい引数が収集されるために選択され
る。このように、本方法は、オペレータのための引数の
すべてが収集されるまで、また、同調しなかった引数が
更新されるまで、ステップ501〜504を実行する。
そして、本方法は、ステップ505に進み、評価される
オペレータに対応するオペレータエバリュエータ69が
呼び出される。
【0071】オペレータエバリュエータルーチンのステ
ップは、図8に示される。初めに、評価されたオペレー
タに関連する第1の引数がステップ506にて選択さ
れ、そして、ステップ507にて、選択された引数に関
係する値が、依存関係グラフに引数を表示するデータオ
ブジェクトポインタから検索される。本方法は、それか
ら、ステップ507へと進み、引数の値が、オペレータ
エバリュエータによって呼び出される固有のAPIによ
って要求されるデータ型にキャストされる。依存関係グ
ラフの各データオブジェクトは一般的であり、それが指
し示す引数のフォーマットに関する情報を持ってはいな
い。例えば、引数は整数、箱を定義するアプリケーショ
ンエンティティ、円柱を定義するアプリケーションエン
ティティ、等とすることができる。このため、オペレー
タエバリュエータがAPIを呼び出す前に、APIによ
って要求されるデータ型に引数をキャストする。
【0072】ステップ509では、APIに渡される引
数のすべてが処理されたかいなかに関する判定がなさ
れ、処理されていないとき、本方法は、ステップ506
に戻り、他の引数が処理されるために選択される。この
ように、本方法は、オペレータに関係する引数のすべて
を処理するまで、ステップ506〜509を実行する。
すべての引数が処理されたとき、本方法は、ステップ5
10へと進み、引数が、呼び出される固有のAPIによ
って要求される方法でフォーマットされる。上述したよ
うに、本発明の1つの実施の形態において、AAPIの
ためのオペレータエバリュエータは、コマンドがフォー
マットされることのできる方法で付加的なオプションを
ユーザーに供給する。ユーザーコマンドとそれに対応す
る依存関係グラフのオペレータとがAPIとは異なって
フォーマットされる場合、本方法は、ステップ510に
おける引数をAPIによって要求される引数に再フォー
マットする。引数がフォーマットされた後、本方法は、
ステップ511に進み、オペレータに対応する固有のA
PIが呼び出され、要求する方法で整理された引数が渡
される。固有APIは、オペレータエバリュエータに、
APIによって行われたデザインアクションの結果を表
示するアプリケーションエンティティを戻す。ステップ
512では、オペレータエバリュエータは、図6のステ
ップ413のオペレータの結果のために作成されたグラ
フエンティティのデータオブジェクトポインタを更新す
る。
【0073】VIII.非正算(Non-directed Operations)
の表示 以下の説明は、正算(directed)オペレータにより本発明
の依存関係グラフに記述される正算に単に関係する。正
算オペレータは、1つ又はそれ以上の入力から1つの出
力へと、1つの方向への流れを有する。しかしながら、
本発明は、非正算を支援するソフトウェアシステムに使
用されることもできる。例えば、A=B*Cという関係
を表示するコマンドが実行されることもできる。これが
正算であった場合、ユーザーは、BとCとの値を編集で
きるだけであり、正算は、Aという適当な値を生み出
す。しかしながら、コマンドが、非正算であった場合、
ユーザーは、二者択一的にAの値を指定するか、システ
ムにBとCとの値を決定させてこれらの積がAの値に等
しくなるようにする。非正算は、そのパラメータのいく
つかからの変更を伝えることができ、入力と出力の完全
な概念はない。
【0074】本発明は、単一の依存関係グラフでの正算
と非正算の両方を表示する能力を提供し、正算は、正算
オペレータにより表示され、非正算は、非正算オペレー
タにより表示される。以下に述べられるいくつかの限定
を条件として、本発明は、正算オペレータの結果が入力
として非正算オペレータに供給されることができ、ま
た、その逆についても同様に供給されることができるよ
うに、正算オペレータと非正算オペレータとが、依存関
係グラフを通して同時に実行されることを可能にする。
【0075】相互に接続された非正算オペレータのグル
ープを解明するために、いくつかの解明エンジンが供給
されるべきことが理解される。非正算は、また、制限セ
ットを形成する相互に依存する非正算のグループととも
に、制限として共通に参照される。本発明は、正算オペ
レータを含むか、あるいは含まないかにかかわらず、依
存関係グラフに非正算オペレータを表示する方法に関
し、非正算オペレータのグループによって形成された制
限セットを解明するためのどんな特定のエンジンに関す
るものではない。本発明は、非正算オペレータの構造的
な依存性を表示し、以下に述べる方法で制限セットとと
もにこれらをグループ化し、そして、制限セットを、そ
れらを解明する制限解明エンジンに供給する。
【0076】非正算(即ち、制限)の例は、上述された
例のような代数的な制限、平行な2つの線、直角な2つ
の線等を設定するような2つのオブジェクト間の幾何学
的な制限、そしてオブジェクトがある種の空間的な関係
を維持することを要求する2つのオブジェクトに対する
空間的な制限を含む。例えば、本発明は、同時に起こる
方程式のグループの構造的な依存関係を表示でき、これ
らを一緒に制限セットとして解明エンジンに供給するこ
ともできる。しかしながら、本発明は同時に起こる方程
式を解明する特定のエンジンに関するものではない。
【0077】以上から理解されるように、非正算オペレ
ータを支援する本発明の実施の形態が使われると、本発
明の結合サブシステムがインストールされるソフトウェ
アシステムに制限解明エンジンが供給される。本発明は
表示されることのできるようなタイプの制限に限定され
ない。しかしながら、本発明の結合サブシステムがイン
ストールされた特定のソフトウェアシステムは、解くこ
とができるタイプの制限に限定された制限解明エンジン
を有してもよい。この場合、本発明は、ユーザーによっ
て生成されたデザインをチェックして、デザインに形成
された制限の各セットが有効であるか、即ち、制限解明
エンジンが形成することができるタイプであるかどうか
を判定する。支援されていない制限セットが形成される
と、本発明は、以下に述べる方法でエラー状態としてこ
れを検出する。
【0078】正算オペレータは、1つの方向で評価され
ることができるだけなので、正算オペレータと非正算オ
ペレータとが単一の依存関係グラフで接続することがで
きるできる方法に制限がある。それが正算オペレータの
結果であれば、非正算オペレータへの入力は固定された
値を有すると考えられる。非正算各オペレータの各々
は、少なくとも1つの固定されない入力を有さなければ
ならない。例えば、A=B*Cである上記非正算に関し
ては、入力BとCとの両方とも固定化できない。なぜな
らば、固定された場合、Aの値が変更されると、BとC
の両方とも固定されているので、要求される関係を維持
できなくなるからである。このように入力BとCとは、
両方とも正算オペレータから供給されることができな
い。なぜならば、両方とも固定され、過度に制限された
ケース又はエラー状態となるからである。しかしなが
ら、入力BとCとの一方が制限されない限り、例えば、
他方の非正算オペレータから供給される限り、エラー状
態は発生しない。なぜならば、Aの値が変更されると、
制限されない入力B又はCが対応する方法で変更できる
からである。
【0079】単一の依存関係グラフの正算オペレータと
非正算オペレータとの使用にかかる他の制限は、サイク
ルが正算オペレータを含めるようにグラフに形成できな
いということである。当業者に理解されるように、スタ
ートポイントからグラフを通る有効なフロー経路のトレ
ーシングが、スタートポイントに戻るように導くと、グ
ラフでサイクルが発生する。非正算オペレータだけを含
むサイクルが有効に存在できるにもかかわらず、正算オ
ペレータを含むいくつかのサイクルは、過度に制限され
たエラー状態になる。
【0080】非正算がデザイン中で実行されたとき、本
発明のチェッキングルーチンは、依存関係グラフを分析
して上述の制限の1つを妨害せずに対応する非正算オペ
レータが付加されることができるかどうかを判定する。
特に、ルーチンは、非正算オペレータが過剰に抑制され
ず、そして、値が固定されない入力の少なくとも1つを
有することを保証する。加えて、ルーチンは、非正算オ
ペレータの付加が、正算オペレータを含むグラフのサイ
クルの形成とはならないことを保証する。これは、付加
される非正算オペレータで開始し、依存関係グラフの有
効な各経路を通ることによって、これらのパスのいずれ
かが、非正算オペレータが付加された時点で戻るかどう
かを決定するルーチンによって達成される。2つの禁止
された条件のいずれかが発生すると、エラー信号が、非
正算オペレータがユーザーによって試みられる方法で依
存関係グラフに付加できないように生成される。エラー
が起こらなければ、非正算オペレータはグラフに付加さ
れる。
【0081】上述したように、本発明は、制限セットを
解明する特定のエンジンに関するもではない。むしろ、
本発明は、非正算制限セットを含むことのできるデザイ
ンの図表的な表示に関する。以下に述べる方法で、本発
明は、デザインの非正算制限の各セットの境界を決定し
て、これらの制限セットを同時解明用の解明エンジンに
供給する。非正算オペレータだけを含む各サイクルは、
グラフの正算オペレータの場所によって決定される制限
セットの境界、あるいはグラフ自身の境界とともに、制
限セットを形成する。
【0082】1.記号評価パス 図7及び図8に関連して上述したように、結合APIプ
ロセッサ71が、依存関係グラフのオペレータが評価さ
れることを要求すると、すべてのオペレータに一般的な
評価方法が呼び出される。評価方法は、グラフマネージ
ャー75(図5)によって呼び出され、このグラフマネ
ージャー75は、以下により詳細に説明されるソフトウ
ェアエンティティであり、本発明によって作成される依
存関係グラフのマネージングを含む仕事を実行する。評
価方法によって実行される基本のステップは、図7及び
図8に関連して上述されている。この方法のための特定
の実行は、非正算オペレータの使用を支援する本発明の
実施の形態により説明される。本発明のこの実施の形態
によれば、2つのパス方法は、依存関係グラフに対して
実行される。記号パスについてとして参照される第1の
パスの間、グラフは、リストが評価されるべき命令と同
様に、評価されるオペレータのリストを形成するために
質問される。リストに含まれているオペレータは、単一
の非正算オペレータであるか、制限解明エンジンによっ
て同時に評価されるべき非正算オペレータの制限セット
である。第2のステップは、記号パス間に形成されたリ
ストによって指定された順序の各オペレータの評価であ
り、評価パスとして参照される。
【0083】記号パスは、図9のフローチャートに示さ
れ、結合APIプロセッサ71が、依存関係グラフのオ
ペレータがそれ自体を評価することを要求するときは、
いつでも呼び出される。まず、ステップ800にて、オ
ペレータと制限セットとが評価される順序を定義するた
めの記号パス中に、作成されるオペレータ評価リストの
ために、スタックが開かれる。この目的のために作成さ
れるスタックは、オペレータと制限セットが、以下の方
法でプッシュされ、ポップされる先入れ先出し(first-i
n first-out)スタックである。スタックリストが開かれ
た後、本方法は、ステップ802に進み、評価されるオ
ペレータのための編集された(例えば、同調しない)デ
ータオブジェクトが処理のために選択される。概して、
結合APIプロセッサ71は、そのデータオブジェクト
の1つが、編集され、再評価を要求しない限り、オペレ
ータの評価を要求しない。しかしながら、後述する本発
明の視覚的編集能力が使用されると、オペレータ自体
は、そのデータオブジェクト入力の1つを変えることな
く、変更できる。この場合、本発明は同調しないデータ
オブジェクトの各々を設定して、各々が、記号パス間に
処理されるようにする。
【0084】ステップ804では、依存関係グラフが、
ステップ802における処理のために選択されたデータ
オブジェクトに直接依存するすべてのオペレータのリス
トを形成するために質問される。正算オペレータが、デ
ータオブジェクトがオペレータに入力として供給された
ときにデータオブジェクトに直接依存するのに対して、
非正算オペレータは、何らかの方法でデータオブジェク
トに直接接続されたときにデータオブジェクトに直接に
依存する。ステップ804では、依存関係グラフを通し
て伝達するための試みはなされず、また、データオブジ
ェクトの変更により影響されるかもしれない点におい
て、データオブジェクトに、間接的に依存する他のオペ
レータの場所を見つける試みはなされない。なぜなら
ば、これらのオペレータは、後述される方法で記号パス
の反復的な性質を通して確認されるからである。
【0085】ステップ806では、ステップ804で形
成されたリストで確認されたオペレータの1つが、処理
のために選択され、そしてステップ808では、このオ
ペレータが正算オペレータであるのかどうかについて判
定がなされる。選択されたオペレータが正算オペレータ
であるときは、本方法は、ステップ810に進み、正算
オペレータを処理するためのルーチン(図9)が呼び出
される。反対に、選択されたオペレータが正算オペレー
タではないとき、本方法は、ステップ812に進み、非
正算オペレータ(図11及び図12)を処理するルーチ
ンが呼び出される。オペレータ処理ルーチンは、評価の
ための適切な順序でオペレータ評価スタック上に、処理
されるオペレータをプッシュし、このルーチンは、以
下、詳細に説明される。
【0086】最も新たに、選択されたオペレータの処理
を扱うためにステップ810または812のいずれかで
呼び出された適当な処理のルーチンが、記号パスに戻る
と、本方法は、ステップ814に進み、ステップ804
で形成されたリストのオペレータのいくつかが処理のた
めに残っているかどうかについて判定がなされる。処理
が残っている場合、本方法は、ステップ806に戻り、
他のオペレータが処理するために選択される。このよう
に、本方法は、ステップ802で処理するために選択さ
れた第の編集データオブジェクトに直接依存しているス
テップ804で作成されたリストのオペレータのすべて
を処理するためにステップ806−814を実行する。
【0087】処理するオペレータが残っていないとステ
ップ814にて判定されると、本方法は、ステップ81
6に進み、その評価が方法を呼び出したオペレータのた
めの編集データオブジェクトが処理されるために残って
いるかどうかについての判定がなされる。そして、少な
くとも1つが処理のために残っているとき、本方法は、
ステップ802に戻り、他の編集データオブジェクトが
処理のために選択されるか。このように、本方法は、評
価されるオペレータのための編集データオブジェクトの
すべてが処理されるまで、ステップ802−816を実
行する。これらのデータオブジェクトのすべてが処理さ
れたとステップ816にて判定されたとき、本方法は終
了する。
【0088】図9のステップ810で呼び出される正算
オペレータを処理するルーチンは、図10のフローチャ
ートによって示される。まず、ステップ820では、ル
ーチンは、処理されるオペレータが、すでにオペレータ
エバリュエータスタック上にプッシュされているかどう
かを判定し、そうであるときは、ルーチンは、単に終了
する。オペレータがスタック上にはプッシュされていな
いと判定されたとき、本方法はステップ822に進み、
正算オペレータに入力されるデータオブジェクトの1つ
が、処理のために選択される。ステップ824では、選
択されたデータオブジェクトが同調しないかどうかにつ
いて判定がなされ、そうであるとき、本方法は、ステッ
プ826に進み、そのデータオブジェクトをソースとす
るオペレータが処理のために選択される。そして、本方
法は、ステップ828に進み、ステップ826で処理の
ために選択されたオペレータが正算オペレータなのか、
非正算オペレータなのかについて判定がなされる。
【0089】ソースオペレータが非正算オペレータであ
るとき、本方法は、ステップ830に進み、以下に記載
された方法でそのオペレータを処理するために非正算オ
ペレータを処理するルーチンが呼び出される。反対に、
ソースオペレータが正算オペレータであるとき、正算オ
ペレータを処理するルーチンは、ステップ832にてそ
のオペレータを処理するために再び呼び出される。この
ように、正算オペレータと非正算オペレータとを処理す
るルーチンは、依存関係グラフを通って進み、その評価
が記号評価のパス(図9)のための呼び出しを開始する
オペレータによって作用されるデータを生成するために
再評価を要求するオペレータのすべてを処理する反復方
法で実行される。依存関係グラフの評価または再評価
が、最初にグラフの左側のオペレータ又は制限を評価
し、グラフ中の左から右への方法で処理することにより
実行されるべきであることが理解される。このようにオ
ペレータを実行することにより、そのデータオブジェク
トに影響を与えるオペレータがすべて更新されるまで、
オペレータは評価されないことが保証される。
【0090】処理されるオペレータの選択されたデータ
オブジェクトが同調していないとステップ824にて判
定されたとき、あるいは、データオブジェクトが同調し
ていないときにステップ830又は832のいずれかで
データオブジェクトのためのソースオペレータを処理す
るために適切なルーチンが呼び出された後、本方法は、
ステップ834に進み、選択されたオペレータのための
データオブジェクトがいくつか処理されるために残って
いるかどうかについて判定がなされる。少なくとも1つ
のデータオブジェクトが処理されるために残っているこ
とがステップ834にて判定されたとき、ルーチンは、
ステップ822に戻り、他のデータオブジェクトが処理
のために選択される。このように、本方法は、その評価
が記号評価パス(図9)と、このために非正算オペレー
タを処理するルーチンを呼び出すオペレータのためのデ
ータオブジェクトをすべて処理するためにステップ82
2〜834を実行する。
【0091】最後に、その評価が処理ルーチンを呼び出
すオペレータのために処理されるデータオブジェクトが
残っていないとステップ834にて判定されたとき、オ
ペレータは、ステップ836にてオペレータエバリュエ
ータスタック上にプッシュされる。正算オペレータ処理
ルーチンと非正算オペレータ処理ルーチンとの反復する
性質は、依存関係グラフのオペレータが上記所望の結果
を達成するために正しい順序で評価されることを保証す
る。図10の上記説明から明らかなように、オペレータ
は、そのデータオブジェクトのすべてが処理されたこと
がステップ834で判定されるまで、ステップ836に
てエバリュエータスタック上にはプッシュされない。さ
らに、データオブジェクトの処理中、同調していない各
々については、正算オペレータ処理ルーチン又は非正算
オペレータ処理ルーチンとが、データオブジェクトをソ
ースとするオペレータを処理するために呼び出される。
図10の処理ルーチンがこれらのソースオペレータに作
用するために呼び出されたとき、そのデータオブジェク
トの夫々が更新されることを保証するために、同様に判
定がなされ、更新されないとき、ルーチンが、そのソー
スオペレータを処理するために再び呼び出される。ルー
チンのこの反復的な性質のため、他のオペレータに更新
されたデータオブジェクトを供給するために評価されな
ければならない各オペレータは、データオブジェクトに
応答するオペレータの前に、ルーチンの対応する実行の
間ステップ836にてスタック上にプッシュされ、それ
ゆえに、その結果に依存するオペレータの前に評価され
る。その評価が、記号パスのルーチン(図9)を最初に
呼び出したオペレータは、最初に処理されるので、ルー
チンの反復処理の最も高い水準にある。このため、この
オペレータは、それが依存している結果を生成するオペ
レータの各々が先の反復的な処理の繰り返しの間、スタ
ック上にプッシュされた後にのみ、オペレータエバリュ
エータスタック上にプッシュされる。
【0092】非正算オペレータを処理するルーチンは、
図11及び図12のフローチャートにより示されてい
る。図10の正算オペレータルーチンと同様に、図11
及び図12のルーチンは、結合APIプロセッサ71が
依存関係グラフのオペレータの評価を要求するとき、最
初に呼び出される。ステップ840では、オペレータ
が、先に定義された制限セットの一部としてオペレータ
エバリュエータスタック上にプッシュされているかどう
かの判定がなされ、そして、すでにプッシュされている
とき、ルーチンは終了する。オペレータがすでにスタッ
ク上にプッシュされていなければ、本方法は、ステップ
842に進み、制限セットが現在、オープンされている
かどうかの判定がなされる。オープンされていないと
き、本方法は、ステップ844に進み、制限セットがオ
ープンされる。
【0093】上述のように、本発明は、複数の非正算オ
ペレータを含むことのできる制限セットを評価するため
の制限エバリュエータエンジンを含むソフトウェアシス
テム上にインストールできる。このような制限セットを
正しく評価するために、エンジンは、硬く結合された非
正算オペレータのセットをグループとして受け取る。そ
れゆえに、正算オペレータと非正算オペレータとの両方
を含む依存関係グラフを評価するとき、図9の記号パス
によって構成されて、依存関係グラフが、制限セットが
グループとしてエンジンに供給されるようにできる。
【0094】上述したように、正算オペレータは、単
に、正算オペレータを処理するルーチンの反復する性質
のために評価のための適切な順序で、オペレータエバリ
ュエータスタック上にプッシュされるだけである。しか
しながら、制限セットは、すべてのセットが処理される
までオペレータエバリュエータスタック上にはプッシュ
されない。制限セットは、その非正算オペレータの各々
が処理された後にのみ、オペレータエバリュエータスタ
ック上にプッシュされる。各制限セットは、依存関係グ
ラフの他の制限セットと正算オペレータに関して適切な
評価順序でスタック上にプッシュされ、これは、セット
がオープンされた後に適切に生じる。
【0095】制限セットがステップ844にてオープさ
れた後、またはステップ842にて、セットがすでにオ
ープンされたと判定されたときは、本方法は、ステップ
846に進み、処理される非正算オペレータが、オープ
ンされた制限セットに付加される。その後、ステップ8
48では、非正算オペレータに結合するデータオブジェ
クトの1つが、処理のために選択される。そして、本方
法は、ステップ850に進み、ステップ848で選択さ
れたデータオブジェクトを直接ソースとするオペレータ
により、リストが形成される。データオブジェクトが直
接接続されている場合には、非正算オペレータがデータ
オブジェクトを直接ソースとするのに対して、結果のデ
ータオブジェクトである場合には、正算オペレータは、
データオブジェクトを直接ソースとする。
【0096】ステップ852では、ステップ850で生
成された直接ソースオペレータのリストが正算オペレー
タを含むかどうかについての判定がなされる。正算オペ
レータが、単一のデータオブジェクトをソースとするこ
ともできる。直接ソースオペレータのリストが正算オペ
レータを含んでいると判定されたとき、本方法は、ステ
ップ854に進み、選択されたデータオブジェクトが同
調していないかどうかを判定する。データオブジェクト
が同調していないとき、本方法はステップ856に進
み、図10の正算オペレータを処理するルーチンが、選
択されたデータオブジェクトをソースとする正算オペレ
ータを処理するために呼び出される。
【0097】図10に関連して上述したように、正算オ
ペレータ処理ルーチンの呼び出しは、処理するために最
初に呼び出される正算オペレータだけでなく、正算又は
非正算の他の全てのオペレータであって、直接的にまた
は間接的に依存するデータオブジェクトを生成するオペ
レータを処理する結果となる。このように、制限セット
の処理を完了させる前に、正算オペレータ処理ルーチン
を呼び出すことにより、図11及び図12の非正算オペ
レータ処理ルーチンは、制限セットを与える正算オペレ
ータが、制限セットの前にオペレータエバリュエータス
タック上に置かれることを保証する。正算オペレータの
出力は、制限セットに関しては、固定されるので、図1
1及び図12の方法は、制限セットが解決のために制限
解明エンジンに渡される前に、制限セットのための固定
値が評価されることを保証する。
【0098】正算オペレータ処理ルーチンがステップ8
56に戻ったとき、あるいはステップ854にて、選択
されたデータオブジェクトが同調していることが判定さ
れるか、あるいは、ステップ852にて、ステップ85
0にて生成されたソースオペレータのリストが正算オペ
レータを含んでいないことが判定されると、本方法はス
テップ858に進む。ステップ858では、ステップ8
50にて生成されたソースオペレータのリストが非正算
オペレータを含んでいるかどうかの判定がなされ、含ん
でいるとき、本方法はステップ860に進み、非正算オ
ペレータが処理のために選択され、そして、ステップ8
62に進み、非正算オペレータ処理ルーチンが、選択さ
れたオペレータのために呼び出される。
【0099】上記から理解されるように、正算オペレー
タを処理するための図10のルーチンと同様に、図11
及び図12の非正算オペレータ処理ルーチンは、反復的
な方法で作用する。しかしながら、これらのルーチンの
反復する性質の間には重大な相違がある。上述したよう
に、図10の正算オペレータルーチンの反復する性質
は、正算オペレータが実行されるための順序でオペレー
タエバリュエータスタック上にプッシュされる技術であ
る。対照的に、非正算オペレータ処理ルーチンの上記ス
テップから明らかなように、非正算オペレータが処理さ
れたとき、それらは、オペレータエバリュエータスタッ
ク上に個別にプッシュされるのではなく、むしろ、単に
オープンした制限セットに付加されるだけである。制限
解明エンジンがセットの非正算オペレータのすべてに同
時に作用するので、非正算オペレータが制限セットに置
かれる順序は重大なことではない。それゆえに、図11
及び図12に示すルーチンの反復的な性質は、制限セッ
トの非正算オペレータのすべてがそのセットに付加され
ることを保証するためにのみ使用され、その順序は無関
係であるので、セットに付加される順序を保証するため
に使用されるのではない。
【0100】非正算オペレータ処理するルーチンが、ス
テップ860で選択された非正算オペレータの処理から
戻った後、本方法はステップ864に進む。ステップ8
64では、いくつかの非正算オペレータが処理のために
残っているかどうかの判定がなされ、そして少なくとも
1つが処理されるために残っているとき、本方法は、ス
テップ860に戻り、他の非正算オペレータが処理のた
めに選択される。このように、ルーチンは、ステップ8
64にて非正算オペレータのすべてが処理されたと判定
されるまで、ステップ850で生成されたソースオペレ
ータのリスト中の非正算オペレータの各々を通して進行
する。
【0101】処理されるべき非正算オペレータが残って
いないとステップ864にて判定されたとき、またはソ
ースオペレータのリストが非正算オペレータを含んでい
ないとステップ858にて判定されたとき、本方法は、
ステップ866に進む。ステップ866では、ルーチン
が呼び出される非正算オペレータのために処理されるた
めのデータオブジェクトが残っているかどうかの判定が
なされ、そして、少なくとも1つのデータオブジェクト
が処理されるために残っているとき、本方法は、ステッ
プ848に戻り、他のデータオブジェクトが処理のため
に選択される。このように、ルーチンが呼び出されるオ
ペレータのためのデータオブジェクトのすべてが処理さ
れるまで、本方法はステップ848−866を実行す
る。
【0102】処理されるデータオブジェクトが残ってい
ないとステップ866にて判定されたとき、本方法は、
ステップ868に進み、ルーチンが呼び出されるための
非正算オペレータが制限セットをオープンしたかどうか
の判定がなされる。このステップは、その実行の反復す
る性質のためにルーチンに含まれている。ルーチンが、
現在オープンしている制限セットをオープンしなかった
オペレータのために実行されるとき、制限セットに付加
されるべき他の非正算オペレータは、処理のために残る
ことができ、それゆえに、制限セットは、まだクローズ
されず、オペレータエバリュエータスタックに付加され
るべきである。それゆえに、ステップ868にて呼び出
すオペレータが制限セットをオープンしなかったと判定
されたとき、本方法は単に終了し、ルーチンの反復的な
実行の次の高水準のステップ858に戻る。
【0103】呼び出すオペレータが現在オープンする制
限セットをオープンしたとステップ868にて判定され
たとき、本方法は、ステップ870に進み、制限セット
が空かどうかの判定がなされる。そして空と判定された
とき、本方法は、ステップ872に進み、制限セットが
方法の終了に先立って削除される。制限セットが空では
ないとき、本方法は、ステップ874に進み、制限セッ
トがクローズされる。そしてステップ876では、クロ
ーズされた制限セットが、方法の終了に先立って最新の
エントリーとして、オペレータエバリュエータスタック
上にプッシュされる。
【0104】2.評価パス 上記から理解されるように、図10〜図12の正算オペ
レータと非正算オペレータとの処理ルーチンの記号パス
中の反復的な実行は、正算オペレータと非正算オペレー
タの制限のセットとを、それらが評価されるべき順序で
オペレータエバリュエータスタック上に置く。それゆえ
に、グラフを更新するための実際の評価パスを実行する
ルーチンは、分かりやすく、そして、図13のフローチ
ャートによって示される。
【0105】まず、ステップ880では、本方法は、ス
タックによって指定された順序オペレータと制限セット
を実行する。各オペレータと制限セットのために実行さ
れた評価ルーチンは、図7と図8に関連して上述され、
収集と引数のフォーマットとを必要とし、それからデザ
インを更新するための適切な固有APIを呼び出す。そ
して、本方法はステップ882に進み、スタックが本発
明の1実施形態に関連して再利用されることができるよ
うにセーブされる。ユーザーによってなされる変更の性
質に応じて、各再評価のために個別の記号パスを要求す
ることなく2回以上、グラフの再評価ができる。特に、
ユーザーがグラフに入力されるリーフノードデータオブ
ジェクトを再編集するのであれば、記号パスは、オペレ
ータエバリュエータスタック上の結果が同調しているの
で、再実行される必要がない。加えて、デザインの変更
だけがすでにオペレータエバリュエータスタック上にあ
る正算オペレータに入力されるデータオブジェクトの編
集であれば、記号パスは、再び実行される必要がない。
【0106】IX.統合処理 上記から理解されるように、本発明は、ファンクション
で構成されるどんなソフトウェアシステムにも接続して
使用でき、本発明のソフトウェアのインストールに続い
てソフトウェアシステム上の統合処理を実行できる。結
合APIプロセッサファンクションと結合変数クラスと
は、本発明がインストールできるソフトウェアシステム
の詳細に関して一般的であり、それゆえに、インストー
ルされたソフトウェアに供給される。インストールされ
たソフトウェアは、図14に示される統合処理を実行す
る。処理の各ステップの詳細は、上述されている。ま
ず、ステップ301では、製品デザインの部分を表示す
るためにソフトウェアシステムによって生成された各ア
プリケーションエンティティのクラスの定義は、デザイ
ンに入力された引数を表示するこれらと同様に、結合変
数クラスから受け継ぐために修正されて、依存関係グラ
フに加入しているのか、そしてどこに加入するのかにつ
いての判定に使われる上述の能力を有するようにする。
次に、AAPIがステップ302にてソフトウェアシス
テムの各固有APIのために生成される。その後、ユー
ザーインタフェースがステップ303にて修正されて、
ユーザーから受け取ったコマンドに応答して、ユーザー
インタフェースが、ソフトウェアシステムのAPIを直
接呼び出すというよりはむしろ、ステップ302にて生
成されたAAPIを呼び出す。最後に、ステップ304
にて、グラフマネージャーを生成し、そしてグラフマネ
ージャーにハッシュテーブルのエントリーを形成するソ
フトウェアエンティティを作成させる初期化ファンクシ
ョンが実行される。
【0107】図14の統合処理がソフトウェアシステム
上で実行されると、システムには、ユーザーにとっては
明らかな方法で本発明の能力が供給され、特別なユーザ
ーの訓練を必要としない。加えて、このような能力が、
システムの固有コマンドと対応APIとに供給されない
としても、ソフトウェアシステム上の統合処理のオペレ
ーションがシステムにパラメータ能力を供給することが
理解される。上述したように、本発明のこの特徴は、サ
ードパーティにソフトウェアシステムに付加的な能力を
供給することを容易にする。なぜならば、サードパーテ
ィによって供給された付加的なコマンドは、パラメータ
能力を供給するソフトウェアシステムのコマンドセット
に統合される必要がないからである。
【0108】X.パラメータ能力 上述したように、本発明の利点の1つは、製品デザイン
に修正がなされたとき、修正により影響される結果を伴
うオペレータのみが再実行されるように、修正は依存関
係グラフを使用するデザインの中に組み込まれる点にあ
る。本発明のこの様相は、グラフマネージャー75(図
5)によってコントロールされる。グラフマネージャー
は、ユーザーインタフェース37からの入力を受け取る
ソフトウェアエンティティであり、製品デザンのために
いつ修正がなされたかを判定する。殆どのCADシステ
ムは、アプリケーションエンティティ(例えば、箱、円
柱、等)がデザインにつけ加えられた後、ユーザーが、
例えば、先に作られた箱の長さ、幅、そして/または高
さの変更等のデザインに関するパラメータに修正を加え
ることができるパラメータインタラクタを含む。
【0109】本発明に関して、デザインのパラメータの
変更は、システムから出力された製品デザイン45(図
3)の変更だけでなく、依存関係グラフのデータオブジ
ェクトに関連する少なくとも1つの引数を修正すること
になる。このように、ソフトウェアシステムが、ユーザ
ーコマンドにデザインのパラメータを変更させるパラメ
ータインタラクタを供給すると、本発明は、ユーザーか
ら受け取られたコマンドを、依存関係グラフにおいて変
更されたパラメータを表示するデータオブジェクトに結
合させる。特に、ユーザーがパラメータを変更するため
のコマンドを入力したとき、新しい引数は、ユーザーイ
ンタフェース37からグラフマネージャー75に渡さ
れ、グラフマネージャー75は、依存関係グラフの対応
するデータオブジェクトにより指し示されたメモリ場所
を更新して、変更された引数を反映する。
【0110】その後、グラフマネージャー75は、図9
〜図13に関連して説明した製品デザイン45に変更を
伝えるための2つのパスの処理を実行する。発明の1実
施形態では、現在のデザインパラメータに対する変更
は、製品デザインに直ぐに組み込まれるわけではない。
むしろ、デザインに対する更新は、ユーザーが再計算を
要求しない限り、そして要求するまでは実行されない。
この特徴は、デザインを更新する前に、例えばユーザー
がいくつかのパラメータを変更しようとしたときに有利
である。なぜならば、各パラメータを変更した後に再計
算をしないことによりシステムがリソースを保存するか
らである。ユーザーが再計算を要求したときには、グラ
フマネージャー75は、結合APIプロセッサ71に、
変更されたパラメータに依存する依存関係グラフのオペ
レータに上述した方法でそれ自身を再評価させることを
命令する。本発明の1つの実施形態では、再計算の2つ
のモードが供給される。第1のモードは、前に向けての
再生として知られているものであり、変更パラメータに
依存するすべてのオペレータの再計算を必要とするもの
である。第2のモードは、要求により再計算するモード
であり、要求駆動される。この第2のモードでは、ユー
ザーは更新されるべきデザインのサブセットだけを指定
する。例えば、ユーザーは、デザインの部分のみのパラ
メータの変更結果を見ることを要求することができる。
図2に示される例を参照すると、ユーザーは、例えば、
データオブジェクト3に関連する長さのパラメータに変
更を加えることができ、そしてこのパラメータの変更が
生成された箱に関してのみ与える影響を見ることを要求
することができる。ユーザーがこのような要求をする場
合、グラフマネージャー75は、結合APIプロセッサ
71に、オペレータ7だけにそれ自身を再評価させるよ
うに命令する。このように、オペレータ19もまた、デ
ータオブジェクト3に関連したパラメータに依存してい
るにもかかわらず、グラフマネージャーは、ユーザーに
よって要求されてはいないので、結合APIプロセッサ
71に、オペレータ19に自身を再評価させることを命
令しない。
【0111】XI.階層オペレータ 本発明の1つの実施の形態において、能力が供給され
て、依存関係グラフに階層的な方法で、ユーザーによっ
て実行されるオペレーションを表示する。ユーザーのデ
ザイン目的を表示するためのいくつかの論理的な方法で
配置された1つ以上の低水準のオペレータを夫々表示す
る階層オペレータが作成される。以下により詳細に説明
するように、階層的能力は、階層的な方法で、本発明の
結合サブシステムがインストールされているソフトウェ
アシステムの複数のコマンドをひとまとめにするために
ユーザーによって用いられ、単一の階層グループでコマ
ンドと1つ以上のサブコマンドをまとめるソフトウェア
システムによってもまた使用される。
【0112】本発明の階層的能力は、一組の低水準デザ
インオペレーションを、依存関係グラフにおけるユーザ
ーのアクティビティに適応させた単一のより高水準の目
的として組織させ、かつ、表示させる。例えば、CAD
システム上で自動車のロータをデザインするユーザー
は、ロータの突起継手を定義するために使用される低水
準のオペレータの全てをひとまとめにすることで、第1
の階層オペレータを作成し、ロータに冷却水路を付加す
るために使用される低水準オペレータをひとまとめにす
ることで、第2の階層オペレータを作成する。多数の低
水準オペレータをひとまとめにし、単一の階層オペレー
タでそれらを表示することで、デザイン用に生成される
依存関係グラフが、より有意義なユーザーのアクティビ
ティに適応させた目的を表示するために簡便になる。さ
らに、いったんそれらが形成されると、階層オペレータ
がデザインにおける他の場所での使用のため複写される
ので、階層グループを作成した低水準のデザインオペレ
ーションが複写される必要がない。
【0113】本発明の結合サブシステムがソフトウェア
システムに統合されると、結果として生じる結合システ
ムもまた、階層的能力を遂行して、コマンドと、コマン
ドの一定の特性を定義するコマンドと共にユーザーによ
って一般的に実行される一連の対応サブコマンドと、を
ひとまとめにする。例えば、多くのCADシステムは、
ユーザーのデザイン目的と相関するより高水準の幾何学
的なモデリングの一形態である特徴を用いているが、デ
ザイン目的の詳細を定義する特徴でサブコマンドの実行
を必要とする。本発明の階層的能力を用いると、本発明
の結合サブシステムがインストールされているCADシ
ステムは、特徴によって行われる潜在的に複雑な幾何学
的なモデリングファンクションを定義するのに必要なメ
インコマンドと、その支援サブコマンドの全てのための
個別のオペレータによって夫々の特徴が表示されること
を必要とするよりはむしろ、階層オペレータを使用する
依存関係グラフにおける高水準の特徴を表示することが
できる。
【0114】普通のCADの特徴の一例は、多くの異な
るタイプの穴である。図21は、箱702に設けられた
さら穴700の一例を示している。箱702にさら穴を
挿入するには、ユーザーは、穴が設けられる面データ7
04、面データ上の穴の中心位置、穴の深さ706、穴
の半径R2 、さら穴の半径R1 及びさら穴の角度θを含
む複数の定義用パラメータを指定する。これらのパラメ
ータは、さら穴を作成する特徴的なコマンドと共に、サ
ブコマンドのグループを実行することで指定される。
【0115】本発明の階層的能力が用いられない場合、
さら穴を有する箱を定義するユーザーのデザインアクシ
ョンは、図22に示すような依存関係グラフによって表
示される。オペレータ716の出力は、さら穴を有する
箱を定義する結果としてのアプリケーションエンティテ
ィを表示するデータオブジェクト724となる。図示す
るように、入力としての複数のリレーションとデータオ
ブジェクトを有する箱のオペレータ710の結果である
データオブジェクト712によって、箱自身が表示され
る。特徴的なコマンドと2つの支援サブコマンドとに対
応する3つのオペレータ714〜716によって、箱へ
のさら穴の挿入が表示される。オペレータ714が、箱
を表示するデータオブジェクト712に接続され、ユー
ザーによって実行されるサブコマンドを表示して、さら
穴が設けられる部分としての箱の上面を選択する。オペ
レータ714の結果が箱の上面となる。オペレータ71
5はこの結果を受け取り、ユーザーによって実行される
サブコマンドを表示して、さら穴が加えられる上面のデ
ータを選択する。オペレータ715の結果は、特徴的な
コマンドを表示するさら穴オペレータ716に入力され
る。データ入力に加えて、さら穴オペレータもまた、穴
の位置を表示するデータオブジェクト718、立体(例
えば、穴が設けられた箱)を表示するデータオブジェク
ト712、及び、さら穴の半径R1 、R2 、角度θ、深
さを夫々表示するデータオブジェクト720〜723に
接続される。
【0116】本発明の階層的能力が用いられたとき、前
述したデザインアクションを表示する依存関係グラフが
図23に示す方法で生成される。図22のオペレータ7
14〜716が、箱におけるさら穴の作成を表示する単
一の階層オペレータ726によって表示される。内部オ
ペレータ714及び716に接続する階層に、箱を表示
するデータオブジェクト712を差し込む2つの入力
と、単一結果データオブジェクト724と、を有するよ
うに階層オペレータ726が示される。オペレータ71
4〜716に入力されるが、階層オペレータに内在する
データオブジェクトの夫々は、グラフを簡単にするため
に表示されない。箱を表示する2つのリレーション73
0及び731を介して接続されて、このデータオブジェ
クトが階層オペレータ726内部の2つの個別オペレー
タ(例えば、714及び716)に供給されることを表
示する。階層オペレータの結果が、オペレータ716か
ら出力される同じ結果のさら穴を有する箱を定義するア
プリケーションエンティティを表示するデータオブジェ
クト724に接続される。
【0117】図22及び図23の依存関係グラフの比較
からわかるように、本発明の階層オペレータの能力によ
り、単にユーザーの意向にわずかに関係しているにすぎ
ない多数のオペレータで依存関係グラフを取り散らかさ
ずに、より高水準でユーザーのデザイン意向を表示でき
る。本発明の結合サブシステムが統合されたソフトウェ
アシステムは、単一の階層オペレータを有する依存関係
グラフで夫々が表示するのが好ましい多数の階層的な特
徴を含んでいる。それらの特徴のため、ソフトウェアシ
ステムは階層的な方法でそれらの特徴を表示する後述の
方法で、本発明の階層オペレータの能力を用いることが
できる。この能力は、ユーザーのデザイン目的を遂行す
るための特徴的なAPIと、またAPIが作用するデー
タを定義するサブコマンドに関するいくつかの付加的な
APIとの実行を必要とするコマンドに関連して、特
に、有用である。本発明の階層オペレータ能力により、
複数のAPIのグループを、ユーザーのデザイン意向を
より正確に表示する単一オペレータとして表示できる。
【0118】後述するように、本発明の一つの実施の形
態では、依存関係グラフはグラフィカルモードで編集で
きる。この能力が用いられるとき、ユーザーにはデザイ
ンの依存関係グラフ表示における詳細水準に関して適応
性が供給される。例えば、階層オペレータ726が使用
される図23の依存関係グラフに関して、ユーザーはよ
り詳細にグラフを見たいと所望し、図22において示さ
れる階層オペレータのより詳細な表示を明らかにするた
めに、階層オペレータ726が展開される異なったビュ
ーモードを選択することができる。この場合、展開され
た単一の階層ブロックに内在するグラフ要素のまわりに
点線を描くことで、ある階層の境界がより詳細な表示で
供給される。
【0119】階層オペレータが依存関係グラフのために
作成されたとき、本発明は、その入力及び出力を定義す
る一覧を供給する。このように、リレーションが階層境
界を横切らないように、明確な境界が依存関係グラフに
おける夫々のオペレータのために定義される。さらに、
ユーザーには、そのより詳細な表示を見るために階層オ
ペレータを展開する特性が供給されるので、その最上位
水準より低い夫々の水準の階層もまた、階層境界を横切
るリレーションなしに、他のグラフデータオブジェクト
からその入力と出力とを得ることができる。これは、階
層オペレータの境界外側にある依存関係グラフにおける
オペレータから入力、または、オペレータに出力される
各階層オペレータの内部データオブジェクトのいずれに
も、入力又は出力が各階層オペレータから供給されるこ
とを保証することで、達成される。階層境界を横切るデ
ータオブジェクトの視覚性を注意深く扱うことで、デザ
インの他の場所での階層オペレータの再使用が容易にな
り、後述する本発明のコード生成の特徴のための支援が
得られる。
【0120】階層境界を横切る1つより多いオペレータ
によって分けられるデータオブジェクトの視覚性が維持
される方法は、変数がCのような標準的なプログラミン
グ言語でファンクションを横切ってスコープされる方法
に類似している。階層境界を横切るデータオブジェクト
の処理を保証するために、2つの基準が設定される。第
1に、階層オペレータが、他のオペレータによって参照
されるデータオブジェクトが、その階層境界の外側にあ
ることを参照(入力かまたは出力か)しようとすると、
データオブジェクトが階層オペレータ用の引数リストに
含まれる。第2に、階層オペレータとデータオブジェク
トを参照する他のオペレータとの間の関係が、両方のオ
ペレータを含む親ファンクションに供給される。親ファ
ンクションは、両方を含むより高水準の階層オペレータ
であるか、または、依存関係グラフ自身の根である。
【0121】階層境界を横切るデータオブジェクトの処
理を容易にするには、階層オペレータのために、2つの
付加的なソフトウェアエンティティが作成される。第1
は、階層境界を横切る夫々の入力及び出力のために作成
される入力/出力(IO)ポートである。第2は、IO
_OPと呼ばれる階層オペレータのためのIOポートの
リストである。
【0122】図22及び図23に示される依存関係グラ
フの比較に関しては前述したように、本発明の一つの実
施の形態では、階層オペレータからポートされる(例え
ば、入力又は出力として外部に持ち出される)データオ
ブジェクトだけが、階層オペレータの境界外側にあるオ
ペレータから、入力又は出力として参照される。従っ
て、データオブジェクト718及び720〜723(図
22)が、階層オペレータ726に対して内部にのみ存
在するので、これらは図23の依存関係グラフにおいて
表示される階層オペレータ726からポートされず、そ
のグラフの複雑さを明確にしかつ削減する。本発明の別
の実施の形態では、各階層オペレータに入力されるデー
タオブジェクトの全ては、他のオペレータから供給され
なくても、階層オペレータからポートされ、依存関係グ
ラフにおいて表示される。
【0123】前述したように、各階層オペレータはその
IOポートを確認するIO_OPリストを有している。
このリストは動的なもので、オペレータが階層オペレー
タ内に前もって内包されるデータオブジェクトを参照す
るデザインに加えられるとき、付加的なポートが必要に
応じて加えられる。このIO_OPリストの動的性質
は、階層オペレータの中から全ての入力及び出力をポー
トする必要がない。しかしながら、これは後述するよう
に、結果として生じる依存関係グラフのサイズと明確性
に関して不利となる。
【0124】以上のことからわかるように、階層オペレ
ータのためのIO_OPにおける特定のエントリーは、
階層オペレータが用いられるデザインの状況に依存して
いる。図21〜図23の例について前述したようなさら
穴を生成するために、階層オペレータが作成される場
合、その階層オペレータがユーザーによってコピーで
き、デザインの異なる部分で使用できる。デザインにお
ける階層オペレータの各段階は、スコープアウトされる
入力及び出力に関して、階層オペレータの各例用の異な
るIO_OPを必要とする依存関係グラフにおける他の
オペレータと相違している。例えば、さら穴階層オペレ
ータ726が、デザインにおいて複製された場合、穴の
深さを定義するデータオブジェクト723(図22)
は、さら穴階層オペレータの境界外側で、オペレータの
結果として供給される。階層オペレータのこの段階で
は、階層オペレータ用のIOポートを作成し、階層オペ
レータのその段階のためのIO_OPにおけるIOポー
トを含むことにより、データオブジェクト723が階層
オペレータから出力される。
【0125】階層オペレータのために作成されたIOポ
ートの一例を、図24を参照して説明する。この図は、
図23の階層オペレータのためにどのようにIOポート
が作成されるかを概念的に示している。図24は、依存
関係グラフの一形態で示されているが、IOポートと支
援オペレータはユーザーのデザイン目的の表示には役に
立たないので、依存関係グラフには実際には表示されて
いない。
【0126】以下により詳細に説明するように、各階層
オペレータのためのIOポート及びIO_OPは、グラ
フマネージャー75(図5)によって作成される。階層
オペレータのための内部データオブジェクトが、階層外
側で参照(例えば、入力や出力)されるたびに、階層外
側でデータオブジェクトのポーティングを表示するため
にIOポートがIO_OPに加えられる。これは図24
に概念的に示されており、階層オペレータ726のため
に4つのIOポートが形成されて、階層外側で参照され
るその内部データオブジェクトをポートする。各IOポ
ートは、データオブジェクトと等価オペレータとを含ん
でいる。等価オペレータは他のオペレータと同様のグラ
フエンティティであり、等価オペレータの出力に結合さ
れたデータオブジェクトが等価オペレータの入力に結合
されたデータオブジェクトにおける値と等しく設定され
るように、2つのデータオブジェクトが単に同等視され
ることを表示する。
【0127】階層オペレータ726用のIOポートは、
2つの入力ポート730及び736を含んでいる。入力
ポート730は、データオブジェクト730Aと等価オ
ペレータ730Bとを含んでいる。等価オペレータはさ
らに、上面オペレータ714へのデータ入力を表示する
ために作成される内部データオブジェクト732に接続
されている。同様に、IOポート736は、データオブ
ジェクト736Aとさら穴オペレータ716の立体リレ
ーションへのデータ入力を表示するために作成されるデ
ータオブジェクト740に接続される等価オペレータ7
36Bとを含んでいる。
【0128】入力ポートは、階層境界を横切ってアクセ
スされる階層オペレータ内部のデータオブジェクトにデ
ータを入力するファンクションを行う。データオブジェ
クト730A及び736Aは、階層外側からデータオブ
ジェクトをソースするオペレータに、親水準で接続され
るポートを供給する。前述したように、親水準は、図2
4の例におけるようなデザインの根であってよく、或い
は、そのデータオブジェクトをソースするオペレータは
もちろん、そこから入力がポートされている一方の階層
オペレータを含む他方の階層オペレータでもよい。
【0129】図24において、データオブジェクト71
2を上面オペレータ714に、また、さら穴オペレータ
716の立体リレーションを階層オペレータ726内部
に夫々入力するために、2つの個別のIOポートが形成
される。本発明の一つの実施の形態において、階層境界
を横切る単一のデータオブジェクトに参照される階層オ
ペレータの範囲内のデータオブジェクトのような2つの
データオブジェクトのために、個別のIOポートが形成
される。個別のIOポートの供給は、ユーザーに、デザ
インの異なる部分での使用のために、予め作成された階
層オペレータを、コピーさせる能力を容易にする。特
に、階層オペレータの2つの内部データオブジェクト
は、他の段階においてそれらの内部データオブジェクト
が階層境界の外側で、別のデータオブジェクトと結合さ
れるのに対し、階層オペレータにおける2つの内部デー
タオブジェクトは、グラフにおける階層オペレータの1
段階において、階層境界を横切る単一のデータオブジェ
クトに結合される。個別のIOポートが、これらの内部
データオブジェクトを別々にポートするために作成され
なければ、内部データ入力が階層外側の個別データオブ
ジェクトに結合される所ではどこでも、階層オペレータ
はデザインにおいて、複製されず、使用もされない。
【0130】親水準では、等価オペレータ734及び7
38は、データオブジェクト712を、階層オペレータ
726の入力ポート730及び736に夫々結合するた
めに供給される。等価オペレータ734及び738は、
箱オペレータ710の結果のデータオブジェクト712
における値を、IOポート730及び736の入力デー
タオブジェクト730A及び736Aと夫々同等視す
る。従って、箱オペレータの結果が、等価オペレータ7
34を経由してIOポート730まで渡され、IOポー
ト730は順次、等価オペレータ730Bを介して結果
をデータオブジェクト732に渡して、結果が上面オペ
レータ714によって作用されるようにする。同様に、
この結果もまた、等価オペレータ738を経由してIO
ポート736まで渡され、IOポート736は順次、等
価オペレータ736Bを介して結果をデータオブジェク
ト740に渡して、結果がさら穴オペレータ716によ
って作用されるようにする。
【0131】以上のことからわかるように、さら穴階層
オペレータの範囲内に、データオブジェクト732及び
740のための個別のIOポート730及び736を作
成することにより、これらの2つの内部データオブジェ
クトが階層外側で、同じデータオブジェクトに接続され
ることを必要とせずに、階層オペレータが、デザインの
他の部分でコピーされ、かつ、複製される。
【0132】階層オペレータ726もまた、階層オペレ
ータ726からデータを出力する2つの出力ポート74
0及び742を含んでいる。これらのIOポートは、デ
ータオブジェクト740B、742Bと、これらのデー
タオブジェクトを、データオブジェクト724によって
表示されるさら穴オペレータ716の結果と同等視する
等価オペレータ740A、742Aを夫々含んでいる。
2つのIOポートはさら穴オペレータ716から結果を
出力するために使用される。これは、このオペレータが
階層オペレータ726のための結果を定義するからであ
る。第1のIOポート740は、階層からオペレータ7
16の結果の出力専用であり、オペレータ716の結果
がもはや階層オペレータの結果を表示しないように、階
層オペレータが変更されても、この結果を出力する。反
対に、IOポート742は、階層オペレータの結果の出
力専用なので、変更が階層オペレータに内部的になされ
て、他の内部オペレータが階層オペレータの結果を生む
結果となる場合、IOポート742は、階層オペレータ
の新しい結果を出力するために変更され、オペレータ7
16の結果は出力されない。
【0133】簡単な例により、階層オペレータのための
個別のIOポートを供給するという利点が示される。図
23及び図24で示される例は、非常に簡単な依存関係
グラフを示し、かなり複雑なグラフが展開されることが
理解される。例えば、さら穴階層オペレータ726の結
果が、さら穴を有する箱の重量を計算する図2で示され
るオペレータ19のような他のオペレータへの入力とな
る。前述したように、階層オペレータはユーザーによっ
て変更できる。例えば、ユーザーはまず、図25及び図
26に示す方法で、さら穴階層オペレータ726を定義
し、オペレータ716(図24)から出力され、かつ、
データオブジェクト724によって表示されるさら穴を
有する箱の重量を計算しようとする。しかしながら、例
えば、箱に第2のさら穴を作成することにより、ユーザ
ーはさら穴階層オペレータを後で変更してもよい。2つ
のさら穴を有する箱を作成するオペレータ714〜71
6と類似する一連の新しいオペレータへの入力として、
データオブジェクト724によって表示されるオペレー
タ716の結果を使用することで、この変更がなされ
る。このように、さら穴階層オペレータ726が変更さ
れると、重量計算オペレータへ出力される階層オペレー
タの結果は、もはやオペレータ716の結果ではなく、
むしろ、第2のさら穴を供給するこれに続くオペレータ
の結果となる。従って、結果のIOポート742は、階
層オペレータの結果として第2のさら穴オペレータの結
果を出力するために変更できる。しかしながら、デザイ
ンの他の部分は、第1のさら穴オペレータ716の結果
もまた出力されることを要求できる。このため、異なる
IOポート結果を作成することで、ちょうど階層オペレ
ータの範囲内で変更がなされたときに、階層オペレータ
の結果が常に出力されることが保証されると同時に、階
層境界外側のデザインの他の部分によって使用される階
層オペレータの範囲内で、中間のオペレータの結果もま
た出力されることが保証される。
【0134】図24に示される実施の形態では、入力及
び出力ポートに供給されるオペレータは、全て等価オペ
レータである。しかしながら、特に出力ポートには、異
なるタイプのオペレータを使用できることが理解され
る。これは、階層オペレータの結果が階層外側に位置す
る依存関係グラフのオペレータに供給されるように、付
加的な適応性を供給するものである。
【0135】図22の例を参照すると、さら穴階層オペ
レータの出力が、さら穴を有する箱を定義するアプリケ
ーションエンティティである。階層外側の依存関係グラ
フにおけるオペレータは、さら穴を有する箱に関する情
報の部分だけを受け取ることできる。例えば、他のオペ
レータは箱の一面だけを要求できる。この場合、階層オ
ペレータの結果のポート用のオペレータ742Aが変更
されて、さら穴を有する箱を階層外側に単に渡すのでは
なく、むしろ、所望の箱の面を決定し、これを階層外側
のオペレータにソースする。
【0136】上記能力を供給するには、階層オペレータ
の出力ポートは、図24に示される本発明の一つの実施
の形態におけるオペレータとデータオブジェクトとを含
んでいる。しかしながら、代わりに、出力ポートは、出
力される結果を表示するデータオブジェクト(例えば、
図24におけるデータオブジェクト724)から単に形
成するだけでもよく、オペレータと付加的なデータオブ
ジェクトとを含む必要はないことが理解される。しかし
ながら、このような方法は前述の有用な能力を供給する
ものではない。
【0137】階層オペレータ用の入力ポートにおけるオ
ペレータは、一般的には等価オペレータである。このた
め、代わりに、各入力ポートは、単に階層オペレータに
入力されるデータ入力を受け取るデータオブジェクト
(例えば、図24におけるデータオブジェクト732)
として提供できる。しかしながら、図24に示される本
発明の実施の形態では、入力ポートもまた、付加的なデ
ータオブジェクト及びオペレータと共に実行されるの
で、入力及び出力ポートは、一貫した方法で定義され
る。
【0138】前述したように、階層オペレータがデザイ
ンの範囲内でコピーされ、かつ、複製されたとき、階層
オペレータの各段階は、依存関係グラフにおけるその環
境に依存する異なる一組の入力及び出力ポートを有す
る。異なる組のIOポートは、階層オペレータの異なる
段階へ、及び、その段階から異なる内部データオブジェ
クトをポートする。さらに、同じデータオブジェクトを
出力する階層オペレータの2つの段階は、それらの夫々
の出力ポートに異なるオペレータを含むことができる。
例えば、図24に示されるさら穴階層オペレータの一方
の段階が、さら穴を有する箱を表示するアプリケーショ
ンエンティティが出力されるように、その結果の出力ポ
ート742に等価オペレータを含むことができるのに対
し、他方の段階は、前述したような箱の一面だけを出力
するオペレータを含むことができる。
【0139】IOポートの作成とポートのIO_OPリ
ストの更新によって、階層オペレータの範囲内のどのデ
ータオブジェクトが入力されかつ出力されるかの決定
は、グラフマネージャー75(図5)によってなされ
る。この決定は、どのデータオブジェクトが階層境界の
外側のグラフの部分に接続されるかに基づいている。階
層オペレータの外側でスコープされるデータオブジェク
トに関し、これらの他のグラフ要素との関係は、階層オ
ペレータを含む親ファンクションによって定義される。
前述したように、階層オペレータは、多数の水準を介し
て入れ子構造にされる。それゆえ、階層オペレータの出
力は、より大きな階層オペレータの範囲内の他のグラフ
要素に接続できる。この場合には、より大きな階層オペ
レータは、より大きな階層オペレータの範囲内の他のグ
ラフ要素に対するより低水準の階層オペレータからスコ
ープされるデータオブジェクトの関係を定義する親ファ
ンクションとしての役割を実行する。階層オペレータか
らスコープされた出力が、他の階層オペレータの部分を
形成しないようなデザインの最上位水準にある場合、デ
ザインの根は、階層オペレータからスコープされたデー
タオブジェクトが他のグラフ要素に接続される方法を定
義する親ファンクションとしての役割を実行する。
【0140】前述したように、各階層オペレータ用のI
O_OPとIOポートは、グラフマネージャー75(図
5)によって作成され、かつ、管理される。IO_OP
は、グラフエンティティとして実行され、かつ、依存関
係グラフにおけるその対応する階層オペレータへのポイ
ンタを含んでいる。グラフの階層オペレータは、同様に
その対応するIO_OPへのポインタを含んでいる。I
O_OPは、階層オペレータへ入力され、かつ、そのオ
ペレータから出力されるデータオブジェクトを表示する
IOポートのリストを含んでいる。従って、IO_OP
は、階層オペレータのためのリレーションの収集として
の役割を実行する。IOポートそれ自身は、それらのリ
レーションを定義する。
【0141】1.階層的AAPI 本発明の結合サブシステムは、階層オペレータの使用を
支援する複数のAAPIを供給する。前述したように、
階層オペレータは、2つの方法のうちの一方で用いられ
る。第1に、ユーザーは好ましい方法で、自分自身の階
層オペレータを作成する。このためには、ユーザーは、
後述の支援AAPIを単に用いて、階層オペレータを作
成する。第2に、本発明の結合サブシステムがインスト
ールされているソフトウェアシステムもまた、支援AA
PIを呼び出して、後述するような1つ以上のサブコマ
ンドを含むコマンドの周囲で、階層オペレータを実行す
る。
【0142】3つの基本的なAAPIが、階層オペレー
タを支援するために供給される。第1のものは、階層オ
ペレータをオープンする。少なくとも1つの階層オペレ
ータがオープンされているとき、その階層がデザインに
引渡されるまでは、デザインに加えられる全ての依存関
係グラフの要素が、最新にオープンされた階層オペレー
タの範囲内に含まれる。いったん階層が引渡されると、
階層が再びオープンされるまでは、階層オペレータがク
ローズされ、新しい依存関係グラフ要素がその階層に加
えられない。階層オペレータを支援する第2のAAPI
は、階層引渡しコマンドであり、これは、前述したよう
な方法で最新にオープンされた階層をデザインに引渡
す。最後に、階層中止AAPIもまた、最新にオープン
された階層オペレータの作成を中止するために供給され
る。中止コマンドを受け取ったとき、最新にオープンさ
れた階層は作成されず、最新にオープンされた階層のオ
ープンに続いて加えられるグラフ要素の夫々が、階層的
な方法で集められずに、グラフ要素のグループとしてだ
けデザインに加えられる。
【0143】前述したように、本発明は階層オペレータ
を入れ子構造にすることを可能にする。従って、階層オ
ペレータのオープンに続いて、1つ以上の付加的な階層
オペレータが、前もってオープンされた階層オペレータ
をクローズする前にオープンされる。従って、階層引渡
しコマンドを受け取るたびに、最新にオープンされた階
層がクローズされる。階層引渡しコマンドを、階層オー
プンコマンドまで追跡することで、多数の入れ子構造に
された階層オペレータが作成される。グラフマネージャ
ーは、現在オープンしている階層オペレータの先入れ後
出し(first-inlast-out) スタックを持続する。従っ
て、階層引渡しコマンド或いは階層中止コマンドが受け
取られたとき、スタックに付加された最新にオープンさ
れた階層オペレータが、夫々、完全な階層オペレータと
してデザインに引渡されるか、或いは、デザインから取
り除かれて、あたかも最新にオープンされた階層オペレ
ータが決してオープンされなかったかのように、その階
層のオープンに続いて加えられたグラフ要素が単にデザ
インに加えられる。中止コマンドが受け取られたとき、
他の階層オペレータがスタック上で現在オープンしてい
る場合、その後グラフに引渡されたとき、グラフ要素は
その階層オペレータの一部として、単にグラフに付加さ
れる。
【0144】デザインセッションが開始されたときには
いつでも、最上位水準の階層オペレータは、自動的に作
成されて、グラフマネージャースタックにプッシュされ
る。この最上位水準の階層オペレータは、デザインセッ
ション中に作成されるデザイン全体のための根を表示す
る。前述したように、このデザインの根は、デザイン水
準での階層オペレータの次の上位水準と非階層オペレー
タとの間の関係を定義する親のファンクションとしての
役割を実行する。
【0145】中止コマンドは、ユーザーにゴール指向ア
クティビティに関してユーザーの意向を変更する適応性
を提供する。同様に、このコマンドもまた、本発明の結
合サブシステムがインストールされたソフトウェアシス
テムによって用いられる。ソフトウェアシステムが本発
明の階層オペレータの能力を実行しようとするとき、階
層的な方法で一般的に使用される固有APIに対応する
AAPIが、それらの固有コマンドの1つがユーザーに
よって入力されるたびに、階層オペレータをオープンす
るコマンドを呼び出す。しかしながら、ユーザーは完了
前に、階層的なコマンドを終了することができる。この
場合には、ソフトウェアシステムは、固有コマンドのた
めにオープンされる階層オペレータの作成を中止する中
止コマンドを用いることができる。
【0146】2.オペレータの引渡 デザインに引渡された階層に加えて、ユーザーコマンド
に応じて作成された各オペレータもまた、正確に実行す
る場合には、デザインに引渡される。オペレータをデザ
インに引渡すとき、グラフマネージャーは次の3つの基
本的なステップを実行する。
【0147】(1) オペレータを処理する (2) オペレータの出力を処理する (3) オペレータの入力を処理する これらのステップは、図25〜図28のフローチャート
に表示される。オペレータがデザインに引渡されると、
グラフマネージャーはまず、図25のフローチャートで
示されるオペレータ引渡しルーチンを実行する。ステッ
プ610において、本方法はデザインに引渡されるオペ
レータがあるか否かを判定し、オペレータがあれば、本
方法は、ステップ612に進み、オペレータが引渡され
る目標のオペレータがあるか否かの判定がなされる。こ
れらの2つのステップは、エラーチェックをするための
ものである。前述したように、デザインセッションが開
始されるときはいつでも、デザインの根を表示する階層
オペレータが自動的にオープンされて、グラフマネージ
ャースタックにプッシュされる。従って、オペレータ引
渡しルーチンが呼び出され、かつ、引渡されるオペレー
タがないか、或いは、オペレータが引渡される目標のオ
ペレータがない場合には、エラー状態が発生し、本方法
はステップ614に進み、エラーメッセージをユーザー
に供給し、その後終了する。
【0148】エラー状態が発生しないときは、本方法は
ステップ616に進み、デザインに引渡されるオペレー
タがグラフマネージャースタックからポップされる(即
ち、読まれる)。ステップ618では、スタック上の次
のオペレータが、ステップ616でスタックからポップ
されたオペレータが引渡される目標のオペレータとして
確認される。最後に、ステップ620では、このルーチ
ンが、図26に示されるオペレータ付加ルーチンを呼び
出して、ルーチンへの引数として供給されるステップ6
16でスタックからポップされたオペレータと共に、目
標のオペレータに作用する。
【0149】図25及び図26で示される一つの実施の
形態では、デザインへのオペレータの引渡しは、それが
引渡される目標の階層オペレータによって一部制御され
る。前述したように、デザインに付加された各オペレー
タは、デザイン自身の根の一部としてか、或いは、デザ
インにおけるより低水準の階層オペレータの一部として
付加される。従って、オペレータがデザインに付加され
たとき、オペレータ付加ルーチンは、引数として引渡さ
れたオペレータを受け取り、そのオペレータが引渡され
る階層オペレータと関連して呼び出される。
【0150】ステップ622では、オペレータ付加ルー
チンは、引数として渡されたオペレータを処理して、依
存関係グラフにおいて余分の階層が作成されないことを
保証する。前述したように、本発明の結合サブシステム
がインストールされたソフトウェアシステムは、本発明
の階層的な能力を利用する。従って、階層的な方法で一
般的に使用されるソフトウェアシステムにおけるコマン
ドに関し、ソフトウェアシステムは、コマンドのための
対応AAPIにコマンドを受け取ったときはいつでも、
新しい階層をオープンさせることができる。例えば、図
21〜図24と関連して説明されたさら穴のコマンド
は、一般的に、サブコマンドで実行され、さら穴が設け
られる立体の面を確認する。従って、さら穴のコマンド
が実行されると、そのコマンドに関連して一般的に使用
される多数のサブコマンドを受け取ることを見越して、
階層がオープンされる。しかしながら、ユーザーが予期
したコマンドを実行しないと、不必要な階層が作成され
る可能性がある。例えば、ユーザーがサブコマンドを使
用せずにさら穴のコマンドを単に実行して、立体の面を
定義すると、さら穴のコマンドのために作成された階層
は、さら穴オペレータ716の周囲に単独で作成され
る。この階層は、単一のオペレータを含んでいるので、
不必要である。
【0151】オペレータ付加ルーチンのステップ622
の間に実行されるオペレータ処理ファンクションは、こ
のような不必要な階層を確認して、取り除く。階層が取
り除かれると、取り除かれた階層に属するものとして前
もって確認されたオペレータの夫々は、ステップ622
でグラフマネージャースタックにプッシュされて、その
ルーチンがオペレータ付加ルーチンのステップ626の
間に呼び出されたときに、後述するオペレータ引渡しル
ーチンのステップ616の間に、グラフに引渡される。
【0152】本発明の一つの実施の形態では、ステップ
622の処理ファンクション用のデフォルトオプション
は、単一のオペレータの周囲に作成された階層を取り除
くためのものである。従って、前述した一例では、オペ
レータ716の周囲に単独で作成された階層が取り除か
れる。しかしながら、本発明の結合サブシステムがイン
ストールされたソフトウェアシステムには、このデフォ
ルトを無効にする能力が供給され、単一のオペレータで
あってもその周囲に階層を作成することを選択できる。
さらに、デフォルトは、有効な階層オペレータを形成す
るために含まれる最少数のオペレータを確立すべく変更
される。このように、ソフトウェアシステムには、階層
が作成される方法を制御する適応性が供給される。
【0153】オペレータが処理された後で、オペレータ
付加ルーチンはステップ624へと進み、ステップ62
2の間にオペレータ階層が消失したか否かが判定され
る。階層が消失したとき、本方法はステップ626へと
進み、ステップ624で消失した階層にあった各オペレ
ータのために、図25のオペレータ引渡しルーチンが呼
び出される。それらのオペレータは、ステップ622の
間にグラフマネージャースタックにプッシュされている
ので、ステップ616(図25)でオペレータ引渡しル
ーチンによって処理されるときに、前述した方法でスタ
ックからポップされる。このように、階層オペレータが
消失するときはいつでも、ステップ626の実行が、消
失した階層の範囲内のより低水準のオペレータの夫々が
デザインに引渡されることを保証する。
【0154】ステップ622で階層オペレータが消失さ
れなかったと、ステップ624で判定されると、オペレ
ータ付加ルーチンはステップ628へと進み、図27の
入力処理ルーチンを呼び出す。入力処理ルーチンの目的
は、依存関係グラフにおける階層の水準を介してそれら
の入力をスコープすることで、階層オペレータを処理す
ることである。前述したように、階層境界を横切る夫々
の入力のためのIOポートを作成し、その入力を供給す
るグラフの親水準においてIOポートをデータオブジェ
クトに接続する階層の外側に等価オペレータを作成する
ことで、これが達成される。従って、依存関係グラフに
引渡されるオペレータのための入力処理ルーチンは、新
たに引渡されるオペレータを含む階層オペレータを必要
とする入力ポートを作成する。
【0155】入力処理ルーチンは、まず、ステップ75
0において、処理するために引渡されたオペレータの第
1の入力を選択する。ステップ752では、選択された
入力のためのソースデータオブジェクトが同じ階層にあ
るか否か、即ち、データオブジェクトのソースがオペレ
ータが引渡される目標の階層にあるか否か判定される。
ソースデータオブジェクトが同じ階層にあるとき、選択
された入力は、階層からスコープされる必要はなく、そ
れゆえ、入力は更に処理される必要がない。このため、
本方法はステップ788へと直接進み、処理されるべき
付加的な入力が残っているか否か判定される。付加的な
入力が残っているとき、本方法はステップ750に戻
り、処理すべき他の入力を選択する。引渡されたオペレ
ータのための処理すべき入力が残っていないと判定され
ると、本手順は終了する。
【0156】ステップ750において処理のために選択
された入力とそのソースデータオブジェクトが同じ階層
にないと、ステップ752で判定されると、本方法はス
テップ754へと進み、オペレータが引渡される目標の
階層オペレータの範囲内で、新しいデータオブジェクト
が選択された入力のために作成される。このようなデー
タオブジェクトの一例は、図24におけるデータオブジ
ェクト732である。新しいデータオブジェクトを作成
することで、ソースデータオブジェクトを、引渡される
オペレータの選択された入力に接続する関係が、目標の
オペレータの階層境界を横切らないことが保証される。
【0157】ステップ756では、階層の親のリスト
が、引渡されたオペレータのために生成される。階層の
親のリストは、引渡されたオペレータのための先祖ツリ
ーに類似しており、それらの階層的な関係はもちろん、
引渡されたオペレータが属する階層の夫々を確認する。
階層的な親のリストは後述の方法で、ルーチンによって
使用されて、その階層的な水準で等価オペレータ(例え
ば、図24におけるオペレータ734及び738)が選
択された入力を、そのソースデータオブジェクトに接続
するために供給されることを決定する。
【0158】本方法は次にステップ758に進み、ソー
スデータオブジェクトを生成するオペレータが確認さ
れ、ステップ760で、そのオペレータのための階層の
親のリストが生成される。ステップ762では、引渡さ
れたオペレータのための親のリストが、ソースオペレー
タのための親のリストに対して比較されて、両者に共通
した最も低い先祖の階層を確認する。この階層的な水準
は、ソースデータオブジェクトと選択された入力との間
の等価オペレータ作成のための目標の親水準として示さ
れる。これら2つを含む他の階層水準は、選択された入
力のスコープを必要としない。なぜならば、選択された
入力とそのソースデータオブジェクトとの間の接続が、
目標の水準の階層オペレータの内部となるからである。
しかしながら、ルーチンは、目標の水準及びそれより低
い水準で階層オペレータから選択された入力をスコープ
して、選択された入力とそのソースデータオブジェクト
との間の関係が、階層境界を横切らないことを保証す
る。
【0159】ステップ764では、引渡されたオペレー
タのための最低の階層水準、例えば、引渡されたオペレ
ータが引渡される階層オペレータ、を処理すべく選択す
る。ステップ766では、現在処理される階層水準が目
標の水準であるか否か判定される。現在処理される水準
が目標でないとき、本方法はステップ768へと進み、
IOポートが作成されて、現在処理される水準で、階層
オペレータから選択された入力を出力する。次に、本方
法はステップ770に進み、処理のため次の階層水準へ
と進み、その後、ステップ766に戻る。このように、
本方法は、目標の水準が達成されたとステップ766で
判定されるまで、目標の水準より低い全ての階層水準で
引渡されたオペレータの選択された入力のためのIOポ
ートを作成するためにステップ766〜770を実行す
る。
【0160】現在処理される水準が目標の水準であると
ステップ766で判定されたとき、本方法はこの水準で
IOポートを作成するステップ768には進まない。な
ぜならば、前述したように、目標の水準は選択された入
力とソースデータオブジェクトとの両者を含むので、そ
の入力のスコープを必要としないからである。むしろ、
目標の水準がステップ766において検出されたとき、
本方法はステップ774(図28)へと進み、ソースオ
ペレータの処理が開始される。
【0161】階層オペレータから供給されたとき、本方
法は、引渡されたオペレータの選択された入力に接続す
るために、階層オペレータの階層からの結果のデータオ
ブジェクトをスコープする前述したステップに類似する
複数のステップを実行する。特に、ステップ774で
は、本方法は処理のためのソースオペレータの最低の階
層水準を選択し、その後、ステップ776に進んで、現
在処理される階層水準が目標の水準であるか否かを判定
する。ソースオペレータが階層的ではないとき、その最
低水準が目標の水準となる。現在処理される階層水準が
目標の水準ではないとステップ776で判定されると、
本方法はステップ778へと進み、IOポートが作成さ
れて、現在処理される水準で階層オペレータから結果の
データオブジェクトを出力する。次に、本方法はステッ
プ780に進み、処理のための次の階層水準に進み、そ
の後、ステップ776へと戻る。このように、目標の水
準が達成されたとステップ776で判定されるまで、本
方法は目標の水準とそれ以下の夫々の水準で、ソースデ
ータオブジェクトのためのIOポートを作成するために
ステップ776〜780を実行する。
【0162】現在処理される水準が目標の水準であると
ステップ776で判定されると、本方法はこの水準でI
Oポートを作成するステップ778には進まない。なぜ
ならば、前述したように、目標の水準は選択された入力
とソースデータオブジェクトの両者を含み、それゆえ、
ソースデータオブジェクトのスコープを必要としないか
らである。
【0163】目標の水準がステップ776で検出される
と、本方法はステップ784へと進み、等価オペレータ
(例えば、図24におけるEQOPs734及び73
8)が目標の水準で作成される。等価オペレータの一端
は、目標のすぐ下位にある階層水準で引渡されたオペレ
ータの選択された入力のために作成されたIOポートに
接続され、他端が目標の水準でソースを表示するデータ
オブジェクトに接続される。ソースオペレータが階層的
であるとき、この接続は目標のすぐ下位にある水準でソ
ースデータオブジェクトのために作成されたIOポート
になされる。
【0164】等価オペレータがステップ784で作成さ
れた後、本方法はステップ786へと進み、等価オペレ
ータが目標の水準のデザインに引渡される。本方法はそ
の後、ステップ788(図27)へと進み、引渡された
オペレータの入力が処理のために残っているか否か判定
される。付加的な入力が残っていると判定されると、本
方法はステップ750へと戻り、次の入力が処理のため
に選択される。このように、本方法が終了する時点であ
る、全ての入力が処理されたとステップ788で判定さ
れるまで、本方法は引渡されたオペレータの入力の夫々
のスコープを実行する。
【0165】入力処理ルーチンに戻った後、オペレータ
付加ルーチンが、ステップ630(図26)に進み、オ
ペレータが引渡されている結果を処理する。オペレータ
が階層オペレータである場合、結果の処理はその結果の
IOポートがオペレータの出力を正確に反映することを
保証するために実行される。例えば、図24の依存関係
グラフと関連して説明したように、階層オペレータ72
6は、さら穴を有する箱を表示するアプリケーションエ
ンティティである結果を生ずる。しかしながら、さら穴
階層オペレータの範囲内での変更は、例えば、付加的な
さら穴を加えることで、階層オペレータの結果を変える
ことができる。夫々の階層オペレータは、その内部のオ
ペレータを指す結果のオペレータポインタを保持し、こ
れが実行されたとき、全体の階層オペレータの結果をも
たらす。このオペレータは、単に、階層オペレータの結
果であるデータオブジェクトを指す結果のIOポート
(例えば、図24におけるオペレータ724A)におけ
る等価オペレータである。新しいオペレータが階層に付
加され、その結果が階層オペレータの結果となるとき、
階層オペレータの結果の処理は、結果のオペレータの入
力関係が新たに付加されたオペレータの結果を指すため
に調整される。
【0166】異なる階層オペレータは、それらの出力が
階層オペレータの結果を定義するために処理される方法
に関しては、異なるようにふるまう。例えば、多くの階
層オペレータに関しては、最後のオペレータ(例えば、
依存関係グラフの右端の1つ)が階層の結果を定義でき
る。しかしながら、いくつかの階層オペレータに関して
は、これは当てはまらない。例えば、図23のさら穴階
層オペレータ726から出力される箱のような製作品を
生み出す階層オペレータに関しては、階層オペレータの
結果は常に製作品である。従って、たとえ他のオペレー
タが階層オペレータに付加され、製作品に作用(例え
ば、箱の重量を計算する)するとしても、製作品は階層
オペレータの結果である。本発明の一つの実施の形態で
は、デフォルト状態が設けられており、これは、最新に
階層に引渡されたオペレータの結果であるデータオブジ
ェクトを指す階層オペレータの結果のオペレータを生じ
る。しかしながら、このデフォルトは、特定の階層オペ
レータの作成に際して、ユーザー或いはソフトウェアシ
ステムによって無効にすることができる。
【0167】前述したように、階層的な方法でコマンド
をまとめるソフトウェアシステムに供給される能力は、
一連のサブコマンドと共にひとまとめにされるコマンド
と関連して使用される。例えば、前述したさら穴のコマ
ンドは、複数のサブコマンドと共に一般的に実行され
て、例えば作用されている立体の面を定義する。ユーザ
ーインタフェースは、その関連するサブコマンドがユー
ザーから受け取られるまで、より高水準のコマンドを一
般的には実行しない。従って、高水準のコマンドのサブ
コマンドの全てが受け取られるまで、本発明のオペレー
タ引渡しルーチンは、高水準のコマンド(例えば、さら
穴のオペレータ716)に対応するオペレータに引渡す
ために呼び出されない。それゆえ、高水準のコマンドが
ユーザーから始めに受け取られたとき、新しい階層がオ
ープンされ、階層はサブコマンドの夫々が実行されるま
では引渡されない。このように、コマンドは階層オペレ
ータにおいてそのサブコマンドと共にまとめられる。
【0168】以上のことからわかるように、各高水準の
コマンドのためのデザインにオペレータが引渡されるの
で、階層的なブロックにおける高水準のコマンドと関連
付けられるサブコマンドのグループを定義するソフトウ
ェアシステムの前述した能力が、1つより多い高水準の
コマンドをひとまとめにするため用いられることによっ
て、特にそのコマンドのためにオープンされる階層をク
ローズする。しかしながら、前述したように、この能力
はユーザーに供給されて、ユーザーが複数の高水準のコ
マンドを含む階層を含む階層的なグループを所望の方法
で指定できるようにする。
【0169】XII.インタラクティブ依存関係処理 上述のように、本発明の一つの実施の形態では、ユーザ
ーがデザインの依存関係表示と相互に作用してデザイン
を作成したり、既存のデザインを変更したりすることが
できる能力が提供される。例えば、デザインのこのグラ
フ表示と相互に作用することがユーザーにとってより速
くかつより容易になるということが理解される。
【0170】図3に示すように、本発明の結合サブシス
テムがソフトウェアシステム上にインストールされた場
合、そのシステムにはインタプリタ52が与えられる。
インタプリタ52は、テキストウィンドウを含み、この
テキストウィンドウは、ソフトウェアシステムのディス
プレイスクリーン上に表示でき、また、それによってイ
ンタプリタがユーザーからのテキストAAPIを受け取
ることができる。インタプリタ52は、テキストAAP
I表示を変換し、システム上の対応するAAPI42を
呼び出して、テキストAAPI表示によって指定された
デザイン動作を行う。このように、インタプリタテキス
トウィンドウは、テキストAAPI表示を用いた本発明
による依存関係グラフを作成、あるいは編集するために
使用できる。
【0171】上述した図3の説明に関連して、依存関係
グラフを図表的に編集する本発明の具体例が使用される
場合、システムは、また、依存関係グラフを図表的に編
集するのに用いる視覚的なプログラミング環境50も与
えられる。依存関係グラフの図表的な編集を支援するた
めの本発明の能力は、特定の視覚的なプログラミング環
境に限られるものではなく、本発明は、その幾つかは商
業的に利用されているような任意のタイプの視覚的なプ
ログラミング環境で使用することが可能である。
【0172】図3に示すように、視覚的なプログラミン
グ環境50はインタプリタ52と結合し、インタプリタ
52は、順次、システムの結合API42と結合する。
視覚的なプログラミング環境50は、視覚的環境中でユ
ーザーによって行われる動作をインタプリタと互換性の
ある語句に変換する。このようにインタプリタは、視覚
的なプログラミング環境50の言語とソフトウェアシス
テム上の結合API42との間を変換するパーザ(pars
er) として動作する。インタプリタ52は、分解される
有効なワードを定義する辞典を、その辞典を与える支援
的な文法ルールと同様にして設定する。インタプリタが
操作するシステム上のAPPI42は、階層的オペレー
タを支援するために用いられる上記3つのAAPIと同
様に、ソフトウェアシステム中の各固有API周辺にラ
ップされたAAPIを含む。ユーザーが視覚的なプログ
ラミング環境中でいくつかの動作を行う場合、インタプ
リタ52は、視覚的なプログラミング環境50から受け
取った語句を分解し、依存関係グラフ中でユーザーのデ
ザイン動作を実行するために正しくフォーマットされた
引数と共に、対応するAAPIを呼び出す。インタプリ
タは、相互に作用する視覚的なプログラミング環境の中
に統合されて、インタプリタによって分解される語句
が、ユーザーがシステムキーボードあるいは他の入力装
置を通してコマンドをタイプした結果として受け取られ
るようにする。
【0173】インタプリタテキストウィンドウまたは視
覚的なプログラミング環境50から語句が受け取られた
ときに必ずインタプリタによって実行されるソフトウェ
アルーチンが、図29のフローチャートに図示される。
ステップ900では、インタプリタが受け取った語句を
分解して、その語句で参照されるAAPIの名前を判定
する。次に、本方法はステップ901に進み、インタプ
リタスタックがクリアされる。このインタプリタスタッ
クは、後述する方法で使用されて、インタプリタルーチ
ンの再帰的な実行の間、サブコマンドの実行による引数
を受け取る機能コマンドについての結果の値を記憶す
る。このようにインタプリタスタックに記憶された結果
の値は、サブコマンドに関連して実行されたAAPIの
結果を示し、また、再帰的ルーチンを最初に呼び出す機
能コマンドのためのAAPIを呼び出す際に、引数を与
えるために使用される。スタックは、インタプリタルー
チンの実行について1回の再帰的サイクル中だけ使用さ
れる。しかしながら、再帰的サイクルが完了すると、そ
のルーチンはスタックをクリアすることなしに元に戻る
ことができる。従って、スタックはルーチンの最初のス
テップ901でクリアされて、その結果、そのルーチン
がサブコマンドを使用しない2つのコマンドについて連
続的に呼び出され、このため、インタプリタルーチンを
再帰的に実行しない場合には、後述するステップ910
において引数がスタック上で検出されない。
【0174】スタックがクリアされた後、本方法はステ
ップ902に進み、ステップ900において分解された
AAPIの引数が確認される。引数は、図5に関連して
上述したハッシュテーブル73にアクセスすることによ
って確認され、ハッシュテーブル73は各AAPIのエ
ントリーを含み、各AAPIは、それぞれの引数、およ
び実行のためAAPIが呼び出されたときにそれらの引
数が与えられる順序を確認する。
【0175】ステップ904では、ステップ902で確
認された引数を、AAPIが呼び出されたときに与えら
れる引数の順序リストの第1の引数として選択し、そし
て本方法はステップ906に進み、選択された引数に対
してデータ値を与えるためにサブコマンドが実行される
べきかどうかの判定が行われる。この判定は、引数のリ
ストを分解することによって行われる。引数がAAPI
の名前を含むならば、その引数はサブコマンドによって
与えられる。ステップ906でサブコマンドが実行され
るべきと判定された場合には、本方法はステップ908
に進み、引数の値を生じるAAPIの名前を使用してイ
ンタプリタルーチンが再度呼び出される。
【0176】ステップ926〜928に関連して後述す
るように、インタプリタルーチンがAAPIを処理する
ために呼び出される場合、そのルーチンの最新の2つの
ステップは、そのAAPIを実行して、インタプリタテ
キストウィンドウまたは視覚的なプログラミング環境か
ら受け取った語句で指定されたデザイン動作を実行し、
そして、この実行結果をインタプリタスタック上にプッ
シュする。このインタプリタスタックは、テキストウィ
ンドウまたは視覚的なプログラミング環境から受け取っ
た語句に応じてインタプリタルーチンの再帰的な呼び出
しの間に実行されたAAPIの結果を記憶する先入れ後
出し方式のスタックである。このように、インタプリタ
ルーチンが、ステップ906で確認されたサブコマンド
を処理するステップ908での呼び出しから戻るとき、
そのサブコマンドを実施するために実行されたAAPI
の結果がインタプリタスタック上に記憶される。
【0177】インタプリタルーチンがステップ908で
のサブコマンドの処理から戻った場合、または、選択さ
れた引数についてサブコマンドを実行する必要がないこ
とが決定された場合には、本方法はステップ910に進
み、引数がインタプリタスタック上に記憶されているか
どうかについての判定が行われる。上述のように、イン
タプリタルーチンが開始したとき、スタックはステップ
901でクリアされる。従って、引数がインタプリタス
タック上に記憶されている場合、それはサブコマンドの
処理のために呼び出されたルーチンの反復によって引数
が与えられることを示すので、本方法はステップ912
に進み、引数の値がインタプリタスタックからポップさ
れる。逆に、ステップ910で引数がスタック上にない
ことが判定された場合には、ステップ914に進み、選
択された引数についての値が、インタプリタテキストウ
ィンドウまたは視覚的なプログラミング環境50から与
えられた語句より読み取られる。
【0178】引数の値が、ステップ912でスタックか
らポップされた後、あるいは、ステップ914でテキス
トウィンドウまたは視覚的なプログラミング環境から読
み取られた後に、本方法はステップ916に進み、処理
を行うために選択された引数に値が割当てられる。そし
て、本方法はステップ918に進み、引数の値が、ステ
ップ900で確認されたAAPIについて要求されたタ
イプの値であるかどうかについての判定が行われる。引
数の値が要求されたタイプでない場合には、本方法はス
テップ920に進み、エラーメッセージがユーザーに対
して与えられ、そして、本方法が終了する。このよう
に、ユーザーは受入れ可能なタイプに引数の値を再定義
する機会を与えられる。
【0179】選択された引数に割り当てられた値が正し
いタイプであることがステップ918で判定された場合
には、本方法はステップ922に進み、AAPIについ
て処理される他の多くの引数が残っているかどうかにつ
いての判定が行われる。他の引数が残っていると判定さ
れた場合には、本方法はステップ924に進み、AAP
Iについて順序付けられた引数のリスト中の次の引数
が、処理を行うために選択され、そして、本方法はステ
ップ906に戻る。このように、ステップ922で全て
の引数が処理されたことが判定されるまで、AAPIに
ついての各引数の処理が行われる。
【0180】全ての引数が処理されると、本方法はステ
ップ926に進み、ステップ900で分解されたAAP
Iが、ルーチンによって正しい順序の位置に収集された
引数の値と共に呼び出される。この方法では、インタプ
リタルーチンは、インタプリタテキストウィンドウまた
は視覚的なプログラミング環境から受け取った語句によ
って要求されるデザイン動作がそのデザインとみなされ
ることを保証する。最後に、ステップ928で、AAP
Iから戻された結果がインタプリタスタック上にプッシ
ュされて、ステップ908でAAPIのサブコマンドの
ためにインタプリタルーチンが呼び出された場合に、そ
の結果が上述した方法でステップ912においてスタッ
クから読み取られる。
【0181】ユーザーがデザインを作成または編集して
いるとき、本発明は、ユーザーがそのデザインの部分を
確認して、インタプリタテキストウィンドウまたは視覚
的なプログラミング環境50を用いて表示されたデザイ
ンの部分を生成するAAPIを要求する能力を提供す
る。例えば、図2の依存関係グラフによって表示された
デザインを変更するユーザーは、箱を表示するアプリケ
ーションエンティティのディスプレイスクリーン表示を
簡単に指すことができ、また、箱を生成するAAPIに
対応するオペレータ7を含んだ図2の依存関係グラフの
部分が、視覚的なプログラミング環境を用いて表示でき
る。あるいは、インタプリタテキストウィンドウは、デ
ィスプレイスクリーンに、付随するデータ引数に加えて
コマンド "CV INSERT BOX(l,w,h,center)"のテキスト表
示が提供できるように、そのデザインの選択された部分
を生成するAAPIをテキスト表示するために使用でき
る。
【0182】テキストのAAPIまたはユーザーによっ
て選択された依存関係グラフ表示が表示されると、デザ
インの部分の表示は、インタプリタテキストウィンドウ
または視覚的なプログラミング環境50を使用して変更
できる。依存関係グラフを図表的に編集することは、オ
ペレータに入力されたデータを再定義すること、または
オペレータを置き換えることを意味する。同様に、AA
PIをテキスト的に編集することは、AAPIの引数の
うちの1つを再定義すること、またはAAPIを他のA
APIに置き換えることを意味する。
【0183】ユーザーが、編集されるデザインの部分を
表示したアプリケーションエンティティを選択した場
合、グラフマネージャー75(図5)によって実行され
る編集ルーチンが呼び出されて、編集オペレーションを
処理する。編集ルーチンは図30のフローチャートに示
される。まず、ステップ930で、本ルーチンはユーザ
ーによって編集するために選択されたアプリケーション
エンティティを確認する。次に、ステップ932で、本
ルーチンは、テキスト編集が実行される場合には、選択
されたアプリケーションオブジェクトに対応するAAP
Iを発見し、また、図表的編集が実行される場合には、
依存関係グラフ中の対応するオペレータを発見する。
【0184】ステップ934では、ステップ932で確
認されたAAPIまたはオペレータが、編集するために
ユーザーに提供される。編集オペレーションが、インタ
プリタテキストウィンドウまたは視覚的なプログラミン
グ環境からインタプリタを通して受け取られたとき、本
ルーチンはステップ936に進み、テキスト編集の間に
AAPIが編集されているかどうかについて、また、図
表的編集の間にオペレータが編集されているかどうかに
ついての判定が行われる。AAPIまたはグラフオペレ
ータのいずれかが編集されていることが判定される場合
には、本ルーチンはステップ938に進み、図29のイ
ンタプリタルーチンが呼び出されて、新しいAAPIま
たはオペレータを処理する。上述のように、インタプリ
タルーチンは新しいAAPIについての全ての引数値を
収集し、また、そのAAPIを引数の順序リストと共に
呼び出して、ユーザーの編集によって指定されたデザイ
ン動作を実行する。インタプリタルーチンが復帰する
と、本方法はステップ940に進み、図32に関連して
後述する置換オペレータルーチンが呼び出され、そし
て、本方法は終了する。ステップ936でユーザーがA
APIまたはグラフオペレータのどちらも編集していな
いことが判定される場合には、本方法はステップ942
に進み、ユーザーが引数を編集したかどうかについての
判定が行われる。引数が編集されなかった場合には、本
方法は単に終了する。しかしながら、ステップ942に
おいてユーザーが引数を編集したと判定された場合に
は、本ルーチンは、ステップ944で後述する再定義入
力ルーチン(図31)を呼び出した後に終了する。
【0185】再定義入力ルーチンは、図31のフローチ
ャートによって示され、このルーチンは、図29のイン
タプリタルーチンによって実行されるステップと同様な
いくつかのステップを実行する。まず、ステップ946
で、本ルーチンは上述したインタプリタスタックと同様
のスタックをクリアする。このスタックは、インタプリ
タスタックがインタプリタルーチンのステップ901で
最初にクリアされたのと同様の理由で最初にクリアされ
る。次に、ステップ948で、このルーチンは編集され
た引数を処理するために選択する。そして、本ルーチン
はステップ949〜968に進み、これらのステップ9
49〜968は、図29に関連して上述したインタプリ
タルーチンにおけるステップ906〜926と実質的に
同一である。これらステップの実行を通して、再定義入
力ルーチンは1つのAAPIについて編集された引数値
の全てを、その他の引数値と同様に収集し、そして、ス
テップ968でそのAAPIを引数値の順序リストと共
に呼び出して、ユーザーの編集によって要求されたデザ
イン動作を行う。その後、ステップ970で、本ルーチ
ンは後述する図32の置換オペレータルーチンを呼び出
して、終了する。
【0186】図30の編集ルーチンと図31の再定義入
力ルーチンの両方で呼び出された置換オペレータルーチ
ンは、図32に示すフローチャートによって表示され
る。置換オペレータルーチンが呼び出される前に、編集
ルーチン(図30)のステップ938におけるインタプ
リタルーチンに対する呼び出しの結果として新しいAA
PIが実行されるか、または再定義入力ルーチン(図3
1)のステップ968における新しいデータと共に現行
のAAPIが再び実行される。これらの場合のいずれか
においてもAAPIの実行結果として、付加的なグラフ
要素が作成され、この付加的なグラフ要素は、新しいオ
ペレータ、そのオペレータの入力についてのリレーショ
ン、そのオペレータの出力についてのリレーション、お
よび新しい結果データオブジェクトを含んでいる。置換
オペレータルーチンの目的は、依存関係グラフを掃除し
て、ユーザーのデザイン編集を正確に反映することであ
る。
【0187】初めに、ステップ972で、置換される古
いオペレータの結果データオブジェクトにどのグラフ要
素が依存するかについての判定が行われる。古いオペレ
ータの結果に依存するものが依存関係グラフ中にないと
判定された場合には、本方法はステップ973に進み、
古いオペレータの結果データオブジェクトが依存関係グ
ラフから削除され、そしてステップ984で、古いオペ
レータもまた削除される。この方法では、依存関係グラ
フが、ユーザーによって行われた編集を反映するために
更新される。
【0188】ステップ972で、いくつかのグラフ要素
が古いオペレータの結果に依存することが判定された場
合には、本方法はステップ974に進み、新しいオペレ
ータによって生じた結果が、古いオペレータの結果に依
存する各々のグラフ要素によって要求される正しいタイ
プであるか否かについての判定が行われる。その結果が
正しいタイプでないと判定された場合には、本方法はス
テップ976に進み、新しいオペレータがデザインにお
いて古いオペレータを置換できないことを示すエラーメ
ッセージがユーザーに対して生成され、そして本方法は
終了する。
【0189】その結果が正しいタイプである場合には、
本方法はステップ978に進み、新しいオペレータにつ
いての結果データオブジェクトに記憶された値が、古い
オペレータについての結果データオブジェクト中に置か
れる。これは、古いオペレータについての結果データオ
ブジェクト中のポインタを、新しいオペレータの結果の
値を記憶するメモリ場所を指すように単に更新すること
によって達成される。そして本方法はステップ980に
進み、新しいオペレータの結果リレーションが、古いオ
ペレータの結果データオブジェクトに接続されるよう
に、再度ポインタを新しいオペレータの結果リレーショ
ン中に単に更新することによってスイッチされる。その
後、本方法はステップ982に進み、新しいオペレータ
の結果データオブジェクトが削除される。最後に、ステ
ップ984で、本方法は古いオペレータを削除し、そし
て終了する。
【0190】前述のことからわかるように、図32の置
換オペレータルーチンは、古いオペレータを新しく実行
されたオペレータに置換し、ユーザーの編集によって要
求されるデザインに対する変更に影響を及ぼす依存関係
グラフ中の全ての必要な関係を作る。このルーチンは、
本方法に代えていくつかの異なった方法でも実施できる
ことがわかる。例えば、古いオペレータの結果データオ
ブジェクトを使用してその値を更新するよりもむしろ、
新しいオペレータの結果データオブジェクトを依存関係
グラフにフックアップすることもできる。しかしなが
ら、図32に示された実施の形態は、古いオペレータの
データオブジェクトが、古いオペレータに依存する全て
のグラフ要素について前に接続されたリレーションをす
でに有しており、従って、これらの接続を変える必要が
ないという点で優れている。
【0191】上述したように、視覚的なプログラミング
環境50(図3)の使用を通して、本発明の結合サブシ
ステムがインストールされたソフトウェアシステムのユ
ーザーには、デザインの依存関係グラフ表示を図表的に
編集する能力が提供される。依存関係グラフの視覚的な
表示は、多くの形式をとることができる。1つの例が図
33及び図34に示され、これは図22及び図23の依
存関係グラフの視覚的な表示を示す。
【0192】この依存関係グラフは、ソフトウェアシス
テムのディスプレイスクリーンのような視覚的環境カン
バス990上に視覚的に示される。また、AAPI99
0のツール箱も表示され、このツール箱は、依存関係グ
ラフを作成および編集する際にユーザーが選択するのに
利用できる結合APIのリストを含んで構成される。A
APIの表示リストは、図33及び図34のツール箱9
92中に含まれる。このツール箱992中のAAPI
は、アイコンによって、または対応するグラフエンティ
ティをデザインに付加するために起動される他のシンボ
ルによって表示される。
【0193】図33において、階層的さら穴オペレータ
726がボックスオペレータ710に接続されて表示さ
れる。オペレータ726の階層性は、その境界を定義し
ている2重線によって示される。グラフ中のデータオブ
ジェクトは、オペレータ上のポートとして表示される。
このポートは、そのポートにより要求または生成される
データタイプを描く異なるカラーで、カラーコード化さ
れる。オペレータポートのうちの1つに対する入力リレ
ーションを追加または変更する場合、システムは、それ
に接続できる依存関係グラフ中の他の有効なポートをハ
イライトできる。
【0194】上述のようにして、ユーザーに対し、階層
的オペレータを開くことができる能力が提供される。図
34は、階層的オペレータ726を構成する内部オペレ
ータ714〜716を示すために階層的オペレータ72
6を開いた状態にした、図33の依存関係グラフを表示
する。この表示では、階層的オペレータの境界が1対の
2重点線994によって限定される。
【0195】ユーザーがアイコンまたはAAPIを表示
する他のシンボルをツール箱から選択し、それらを視覚
的環境カンバス中に結合している間、依存関係グラフを
形成する実際のグラフエンティティは形成されない。し
かし、ユーザーがシステムに視覚的な表示を処理するよ
うに命令する場合、インタプリタ52(図3)は、視覚
的表示を示す視覚的なプログラミング環境50からの語
句を受け取り、上述した方法で依存関係グラフを作成す
るためにグラフエンティティを実際に構築する対応した
AAPIを呼び出す。
【0196】上述のように、階層的オペレータが与えら
れる本発明の実施の形態において、ユーザーは階層的オ
ペレータをデザインの他の段階において使用するために
コピーする能力を与えられる。本発明の視覚的なプログ
ラミング環境はこの機能を支援する。階層的オペレータ
がコピーされる場合、そのIO_OPおよびIOポート
は維持される。従って、階層的オペレータのコピーは、
単一のオペレータをAPPIのツールボックスから視覚
的環境カンバス中に挿入することと同じである。階層的
オペレータは、他のオペレータと全く同じように扱わ
れ、定義された一組の入力および出力を備える。階層的
オペレータがコピーされ、視覚的環境カンバス中に置か
れると、ユーザーは、その階層的オペレータのIOポー
トをグラフ中の所望の接続にフックアップするだけでよ
い。階層的オペレータがコピーされるとき、その階層的
オペレータの内部データオブジェクトもまたコピーされ
て、ユーザーは階層的オペレータのIOポートを接続す
る方法を定義するだけでよい。
【0197】XIII.コンピュータプログラムの生成 ユーザーがソフトウェアシステムでインタラクティブデ
ザインセッションを完了すると、本発明は結果デザイン
の構造的な依存関係を表示する依存関係グラフを図2に
示される実施の形態のように生成する。更に、本発明
は、例えばC++のような標準言語でコンピュータプログ
ラムを生成するために依存関係グラフを操作するプログ
ラム生成ツールを提供し、このツールは実行されると、
依存関係グラフおよびその依存関係グラフが表示するデ
ザインを生成する。上述のように、コンピュータプログ
ラムは、ユーザーによって編集でき、また、変更された
デザインを生成するためにシステムの中に戻すことがで
きる。
【0198】プログラム生成ツールを説明するフローチ
ャートが図15〜図19に示される。まず、ステップ1
01で、依存関係グラフ中の各々のリーフデータオブジ
ェクトが同調しないとしてマークされる。リーフデータ
オブジェクトは、オペレータによって与えられないグラ
フ中のものであって、即ち、リーフデータオブジェクト
は、オペレータの結果ではない。リーフデータオブジェ
クトが実際にマークされると、本方法はステップ103
に進み、図9の記号パスルーチンが呼び出される。各々
のリーフデータオブジェクトは、同調しないとしてマー
クされて、全てが記号パスによって処理される。前述の
ように、記号パスルーチンはグラフを識別して、リスト
が評価される順序と同様にして、評価されるオペレータ
のリストを形成する。このリスト中のオペレータは、正
算オペレータまたは非正算オペレータの制限セットを含
む。図9に関連して上述したように、オペレータのリス
トは、グラフマネージャースタック上でオペレータが実
行される順に記憶される。このように、記号パスを呼び
出して、グラフマネージャースタックに指定された順序
でオペレータを処理することによって、プログラム生成
コードは、対応するAAPIを同じ順序で呼び出すプロ
グラムを生成する。
【0199】記号パスが戻ると、本方法はステップ10
5に進み、グラフマネージャースタックに記憶された評
価順序の次のオペレータが処理するために選択され、こ
れは、ステップ105を通る第1のパスの間、第1のオ
ペレータとなる。その後、本方法はステップ107に進
み、選択されたオペレータが制限セットであるかどうか
についての判定が行われ、制限セットであると判定され
た場合には、本方法はステップ109に進み、制限セッ
トから1つの非正算オペレータが処理のために選択され
る。
【0200】ステップ109で非正算オペレータを選択
した後、またはステップ105で選択されたオペレータ
が1つの正算オペレータであることがステップ107で
判定された場合に、本方法はステップ111に進み、図
18の階層的ファイル準備ルーチンが、ステップ105
で処理するために選択された正算オペレータあるいはス
テップ109で選択された非正算オペレータの親である
階層的オペレータに関連して呼び出される。前述のよう
に、依存関係グラフ中の各々のオペレータは、少なくと
も1つの親の階層的オペレータに属し、最上位の階層的
オペレータがデザインの根底を定義する。各オペレータ
の親の階層は、オペレータを定義するグラフエンティテ
ィ中のポインタに記憶され、従って、各オペレータの親
の階層は、このグラフエンティティに単に問い合わせる
ことによるプログラム生成方法によって判定できる。
【0201】階層ファイル準備ルーチンが階層的オペレ
ータに対して呼び出されると、このルーチンは、ステッ
プ165でファイルがその階層的オペレータについて開
かれているかどうかをまず判定する。階層的オペレータ
は、本発明のプログラム生成方法により生成されたコー
ドで別のファンクションによって表示され、各ファンク
ションは異なるファイル中で定義されている。ファイル
がまだ開かれていないと判定された場合には、本方法は
ステップ167に進み、出力ファイルが階層的オペレー
タファンクションを定義するコードのために開かれる。
【0202】出力ファイルが、処理されている階層的オ
ペレータのために開かれると、本方法はステップ169
に進み、このファイルのためのポインタが目標として選
択されて、続いて生成されるコードがこのファイルに置
き換えられることを示す。その後ステップ171におい
て、変数が階層的オペレータの各IOポートについて定
義される。このIOポートは、階層的オペレータを表示
するグラフエンティティによって維持されたIO_OP
リストに問い合わせることで確認される。次に、ステッ
プ175で、本ルーチンは階層的オペレータを表示する
ファンクションの定義を作成する。ファンクションの定
義は、ファンクションの名前と、そのリターンタイプ
と、その引数についての名前およびタイプとを含む。本
ルーチンは、ステップ171でIOポートのために作成
された変数の名前をファンクションの引数として使用す
る。
【0203】ファンクションが定義された後、本方法は
ステップ177に進み、開いた階層AAPIを呼び出す
ための語句がファイルに書き出されて、コードが生成さ
れる場合に、処理される階層的オペレータのために階層
が作成される。その後、本方法はステップ179に進
み、親の階層が、処理される階層的オペレータに存在す
るかどうかについての判定が行われ、そのような親の階
層が存在しない場合には、本方法はステップ185に進
み、その階層的オペレータのためのファイルポインタ
が、目標として後述する理由で再び設定されて、本ルー
チンが終了する。
【0204】処理されている階層的オペレータが親の階
層を有することがステップ179で判定された場合に
は、階層的ファイル準備ルーチンが親の階層について呼
び出される。このように、ファイル準備ルーチンが再帰
的に呼び出されて、プログラム生成方法(図15)のス
テップ105の間に評価スタックから最初に処理するた
めに選択されたオペレータを含む階層的オペレータの全
てを処理する。ファイル準備ルーチンが親の階層的オペ
レータの処理から戻ると、本方法はステップ183に進
み、処理されている階層的オペレータへの呼び出しが、
その親の階層のためのファイル中に書き込まれる。この
ように、親の階層的オペレータを定義するファンクショ
ンは、その範囲内に含まれる階層的オペレータを定義す
るファンクションを呼び出す。
【0205】最後に、階層的オペレータファンクション
への呼び出しが、ステップ183でその親の階層的オペ
レータのためのファイル中に書き込まれた後、または、
ステップ179で処理されている階層的オペレータが親
の階層的オペレータを含まないと判定された場合、ある
いは、ステップ165で階層的オペレータのためのファ
イルが階層的ファイル準備ルーチンを呼び出すよりも前
に開かれた場合には、本ルーチンはステップ185に進
み、処理されている階層的オペレータのためのファイル
ポインタが目標として再び設定される。ステップ185
は、それが実行される再帰的方法であるためにファイル
準備ルーチンに含まれる。特に、ルーチンを初めに呼び
出すための階層的オペレータが少なくとも1つの親の階
層的オペレータを有する場合、目標ポインタは、親の階
層的オペレータを処理するルーチンへの再帰的呼び出し
のステップ169において、その親の階層的オペレータ
に設定される。プログラム生成方法(図15)のステッ
プ113に戻る前に、階層的ファイル準備ルーチンは、
目標ポインタを最初に呼び出すための階層的オペレータ
に設定して、プログラム生成方法の間に生成された付加
的コードがこのファイルに書き込まれる。
【0206】階層的準備ルーチンが戻った後に、本方法
はステップ113に進み、ステップ105あるいはステ
ップ109の処理の間に選択されたオペレータに接続さ
れたデータオブジェクトの全てが収集される。上述した
ように、各オペレータは、そのリレーションについての
ポインタを含み、各々のオペレータが、順次対応するデ
ータオブジェクトについてのポインタを含む。オペレー
タを表示するグラフエンティティに照会することによっ
て、プログラム生成方法はオペレータに接続された全て
のデータオブジェクトのリストを収集できる。ステップ
115において、本方法は、処理されているオペレータ
に接続されたデータオブジェクトのうちの1つを処理す
るために選択する。ステップ117において、本方法
は、選択されたデータオブジェクトが以前に処理された
かどうかを判定し、以前に処理されていない場合には、
本方法はステップ119に進み、変数が選択されたデー
タオブジェクトに対して宣言及び命名される。
【0207】ステップ119で選択されたデータオブジ
ェクトに対して変数が宣言された後、あるいは、ステッ
プ117で選択されたデータオブジェクトが以前に処理
されたと判定された場合には、本方法はステップ121
に進み、ステップ115で形成され接続されたデータオ
ブジェクトのリスト中の全てのデータオブジェクトが処
理されたかどうかについての判定が行われ、全てが処理
されていない場合には、本方法はステップ115に戻
る。このように、処理されているオペレータに接続され
た各データオブジェクトに対して変数名が宣言されるこ
とを保証するために、本方法はステップ115〜121
を続行する。
【0208】変数名が、処理されているオペレータに接
続された各データオブジェクトに対して宣言された後、
本方法はステップ123(図16)に進み、ステップ1
15で形成されたリストに含まれる入力データオブジェ
クトの全てが確認される。ステップ123での入力とし
ての確認のためには、プログラム生成方法は、正算オペ
レータへの入力だけでなく、非正算オペレータに接続さ
れたあらゆるデータオブジェクトを確認する。
【0209】入力データオブジェクトが確認された後、
本方法はステップ125に進み、入力データオブジェク
トのうちの1つが処理するために選択される。ステップ
127では、選択された入力データオブジェクトが、処
理されているオペレータの親のオペレータである階層的
オペレータのためのIO入力ポートであるかどうかにつ
いての判定が行われる。その入力データオブジェクトが
IOポートであると判定された場合には、本方法はステ
ップ129に進み、ステップ119(図15)で選択さ
れたデータオブジェクトに対して宣言された変数名が、
図18の階層的ファイル準備ルーチンのステップ171
の間にIOポートに対して宣言された変数名に等しくさ
れる。このように、選択されたデータオブジェクトに対
する値が、処理されているオペレータの親の階層のため
に作成されたファンクションの中にスコープされる。
【0210】ステップ129で変数名が等しくされた
後、あるいはステップ127でデータオブジェクトが階
層のためのIOポートではないと判定された場合には、
本方法はステップ131に進み、ステップ123でオペ
レータに対して確認された入力データオブジェクトのい
くつかが処理されるために残されているかどうかについ
ての判定が行われ、少なくとも1つが処理するために残
されている場合には、本方法はステップ125に戻る。
このように、本方法がステップ125〜131を通して
進み、親の階層のIOポートを形成する処理されたオペ
レータの入力データオブジェクトそれぞれの変数名を、
それの対応するIOポートの変数名に等しくする。
【0211】入力データオブジェクトの全てが処理され
た後、本方法はステップ133に進み、処理されている
オペレータに対応するAAPIマクロを呼び出すための
語句が、その対応する変数名と一緒に書き出される。そ
して、本方法はステップ135に進み、処理されている
オペレータが正算かどうかについての判定が行われ、正
算と判定された場合には、本方法はステップ137に進
み、正算オペレータに対する1つの結果データオブジェ
クトが確認される。逆に、ステップ135で処理されて
いるオペレータが非正算と判定された場合には、本方法
はステップ139に進み、変数、即ち、固定されない非
正算オペレータに接続されたデータオブジェクトの全て
を出力として確認する。
【0212】処理されているオペレータに対する出力デ
ータオブジェクトがステップ137または139のいず
れかで確認された後、本方法はステップ141(図1
7)に進み、出力データオブジェクトのうちの1つが処
理するために選択される。その後、本方法はステップ1
43に進み、選択された出力データオブジェクトが、処
理されているオペレータの親のオペレータである階層的
オペレータのためのIOポートであるかどうかについて
の判定が行われる。この判定は、ステップ127に関連
して前述したものに類似し、また、親の階層的オペレー
タのためのIOポートのIO_OPリストに照会するこ
とによって行われる。ステップ141で選択されたデー
タオブジェクトが親の階層的オペレータのためのIOポ
ートであると判定された場合には、本方法はステップ1
45に進み、IOポートのための変数名が、ステップ1
19(図15)でデータオブジェクトに対して宣言され
た変数名に等しくされる。このステップは、上述したス
テップ129(図16)に類似し、また、出力データオ
ブジェクト中の値が、対応するIOポートを通して親の
階層的オペレータのために作成されたファンクションの
うちからポートされることを保証し、そして、この値は
次の階層レベルのファンクションによってアクセスでき
る。
【0213】変数がステップ145で等しくされた後、
または、ステップ143で選択された出力データオブジ
ェクトが親の階層のIOポートではないと判定された場
合には、本方法はステップ147に進み、ステップ13
9(図16)で確認された出力データオブジェクトのい
くつかが処理されるために残されているかどうかについ
ての判定が行われ、少なくとも1つが処理されるために
残されている場合に、本方法はステップ141に戻る。
このように、本方法は選択されたオペレータのための出
力データオブジェクトのそれぞれを処理して、その親の
階層のIOポートである各々を対応するIOポート変数
名に等しくする。
【0214】ステップ147で選択されたオペレータに
対する出力データオブジェクトが処理されるために残さ
れていないと判定された場合には、本方法はステップ1
49に進み、そのオペレータが制限セットに属するかど
うかについての判定が行われ、そのオペレータが制限セ
ットに属する場合に、そのセットの中に何らかの付加的
なオペレータが処理されるために残されているかどうか
についての判定が行われる。ステップ149で同じ制限
セットの中に付加的なオペレータが処理されるために残
されている場合、本方法はステップ109(図15)に
戻り、制限セットからの次のオペレータが、処理するた
めに選択される。このように、制限セット中のオペレー
タそれぞれを処理するために、本方法はステップ109
〜149を続行する。
【0215】ステップ149で処理されるオペレータが
制限セットに属さない、あるいは、制限セット中のオペ
レータの各々が既に処理されていると判定された場合に
は、本方法はステップ151に進み、何らかのオペレー
タが評価スタック上に処理するために残されているかど
うかについての判定が行われる。少なくとも1つのオペ
レータが処理されるために残されていると判定された場
合には、本方法はステップ105(図15)に戻り、ス
タック上の次のオペレータが処理するために選択され
る。このように、ステップ103の記号パスに対する呼
び出しに起因する評価スタック上におかれたオペレータ
のそれぞれを処理するために、本方法はステップ105
〜151を続行する。オペレータが処理するために残さ
れていないと判定された場合には、本方法はステップ1
53に進み、階層的ファイル終了ルーチンが呼び出され
て、そして本方法が終了する。
【0216】階層的ファイル終了ルーチンは、図19に
示される。まず、ステップ155では、階層的ファイル
準備ルーチン(図18)のステップ167で開かれた階
層的オペレータファイルの1つが、処理するために選択
される。次に、選択された階層的オペレータファイルの
ファイルポインタが、目標としてステップ157で設定
されて、続いて生成されたコードがこのファイルに書き
込まれる。
【0217】選択された階層的オペレータのファイルポ
インタが目標として設定された後、本方法はステップ1
59に進み、引渡し階層AAPIがそのファイルに書き
込まれる。そして、本ルーチンはステップ160に進
み、階層的オペレータのためのファンクションリターン
が、階層的オペレータファンクションによって戻される
引数を含んで、書き込まれる。そして、本ルーチンはス
テップ161に進み、ステップ155で選択された階層
的オペレータファイルが閉じられる。最後に本ルーチン
はステップ163に進み、他の階層的オペレータファイ
ルが処理するために残されているかどうかについての判
定が行われ、少なくとも1つが処理のために残されてい
る場合、本ルーチンはステップ155に戻る。このよう
に、ステップ163でこれ以上開いたファイルが残され
ていないと判定されるまで、開いた階層的オペレータフ
ァイルそれぞれを処理するために本ルーチンは続行し、
そして、本ルーチンが終了する。
【0218】XIV.ハードウェアシステムの一例 図20は、本発明を操作できるハードウェアシステムの
ブロック図である。本システムは、上述したユーザーイ
ンタフェース37、プロセッサ600および結合メモリ
601を含む。上述のように、本発明は、ファンクショ
ンで構成される任意のソフトウェアシステム上で操作で
きる。従って、プロセッサ600は、ソフトウェアファ
ンクションを実行できる任意の変数タイプのプロセッサ
とすることができる。この中で説明される本発明のソフ
トウェアツール、ルーチンおよび方法は、それぞれメモ
リ601に記憶でき、またプロセッサ600上で本発明
を実施するために実行できる。
【0219】XV.デザイン反復の方法の一例 上述のことからわかるように、本発明の種々の能力によ
り、デザインを作成し、図表的に変更のできる依存関係
グラフにそのデザインを表示し、そして、デザインの構
造的依存関係を表示する標準言語でコンピュータプログ
ラムを作成する際に、ユーザーに優れた適応性が与えら
れ、また、将来的にはシステム上でデザインの作成が実
行され得る。例えば、本発明の結合サブシステムをイン
ストールしたソフトウェアシステムによって実行される
高水準のステップが、図35のフローチャートに示され
る。
【0220】ステップ985で、本方法はユーザーから
の入力を受け取り、そして、ステップ986に進んで、
ユーザーによって要求されたデザイン動作を実施するた
めに対応するAAPIを呼び出す。ステップ987で、
このAAPIのための依存関係グラフエンティティが生
成され、そして、本方法はステップ988に進み、この
グラフが評価される。そして、ユーザーは視覚的なプロ
グラム環境を使用して、依存関係グラフを見て、結果デ
ザインが容認できるかどうかを判定する。ステップ98
9で、結果がユーザーによって容認されなかったことが
判定された場合には、本方法はステップ990に進み、
コマンドがグラフを編集するために視覚的なプログラミ
ング環境から受け取られる。そして、本方法はステップ
988に進み、変更されたグラフが評価される。このよ
うに、本方法は、ユーザーが結果デザインを容認したこ
とを示すまでステップ988〜990を続行する。
【0221】結果が容認されると、本方法はステップ9
91に進み、いくつかの追加のコマンドがユーザーによ
って受け取られるかどうかについての判定が行われる。
多くのコマンドが受け取られる場合には、本方法はステ
ップ986に戻り、それらのコマンドが処理される。こ
れ以上コマンドがユーザーから受け取られない場合に
は、本方法はステップ992に進み、デザインの構造的
依存関係を表示する標準言語コンピュータプログラムの
生成をユーザーが望むかどうかについての判定が行われ
る。ユーザーが、コンピュータプログラムの生成を望ま
ない場合には、本方法は単に終了する。しかしながら、
プログラムが生成されることが判定された場合には、本
方法はステップ993に進み、このプログラムが上述し
た方法で作成され、ステップ994に進んで、そのプロ
グラムがソフトウェアシステムにコンパイルされて、リ
ンクされる。
【0222】XVI.結論 このように、本発明の種々の実施形態を説明したこと
で、様々な変更、修正および改良が、当業者には容易と
なる。このような変更、修正および改良は、本発明の意
図および範囲内であると考えられる。よって、上記の説
明や添付図面は、単に例として与えられたものであり、
これに限られるものではない。本発明は、特許請求の範
囲およびその均等物に定義されるものとしてのみ限定さ
れる。
【0223】
【発明の効果】以上説明したように、請求項1〜請求項
11の発明にかかる方法によれば、対応するファンクシ
ョンによって夫々作成される複数のデザインエンティテ
ィの依存関係が表示されるので、ユーザーは、該エンテ
ィティが相互に作用する関係を、視覚的により速くかつ
より容易にみることができ、視覚的なプログラミング環
境の中でデザインを作成したり、編集したりすることが
できる。また、標準言語でコンピュータプログラムが生
成されるので、ユーザーは、固有の言語を習得すること
なく、モデルを再生させることができる。
【0224】請求項12〜請求項20の発明にかかる方
法によれば、固有APIの周囲にラッパーが供給されて
結合ファンクションが作成され、モデルの依存関係表示
にグラフエンティティが付加されるので、適応性が増大
し、新しい固有APIの作成を必要としない。そして、
受け取ったコマンドに応じて、ユーザーインタフェース
も修正されるので、以後、ユーザーインタフェースから
新しい結合システムを呼び出すことができる。
【0225】請求項21及び請求項22の発明にかかる
方法によれば、複数のファンクションが正算と非正算に
係るものであるときは、正算と非正算との両者によって
作成されるデザインエンティティが依存関係に表示され
るので、ユーザーは、かかる関係を視覚的にみることが
できる。請求項23及び請求項24の発明にかかる方法
によれば、デザインが複数のファンクションの対応する
1つによって各々作成される場合でも、ユーザーは、同
様に該エンティティの依存関係を視覚的にみることがで
きる。
【0226】請求項25の発明にかかる方法によれば、
デザインが複数のファンクションの対応する1つによっ
て各々作成される場合でも、ユーザーは、複数のグラフ
エンティティで複数のデザインエンティティの依存関係
を視覚的にみることができる。請求項26の発明にかか
る方法によれば、デザインが修正された場合に、デザイ
ンの修正による影響を確認することができ、影響を受け
たファンクションだけを再評価してデザインアクション
の時間を節減することができる。
【図面の簡単な説明】
【図1】本発明による方法のステップを示す上位フロー
チャート
【図2】本発明により作成される依存関係グラフを示す
【図3】本発明を使用するCADシステムのユーザー側
からの配景を示す図
【図4】本発明の結合API構築用ツールと、作成され
た結合APIと、本発明の結合サブシステムがインスト
ールされたソフトウェアシステムの固有APIとの間の
関係を示す図
【図5】本発明を用いるCADシステムのユーザインタ
ーフェースで受け取られるコマンドが結合APIおよび
結合APIプロセッサを呼び出して、そのコマンドを表
示する依存関係グラフを表示し、ユーザーによって要求
されたデザイン動作を実行するためにそれら依存関係グ
ラフのエンティティを評価する方法を示す図
【図6】結合APIにより呼び出された場合の本発明の
結合APIプロセッサによって実行されるステップを示
すフローチャート
【図7】依存関係グラフ中のオペレータを評価するため
に呼び出された場合の、本発明の結合APIのためのオ
ペレータエバリュエータによって実行されるステップを
示すフローチャート
【図8】同上フローチャート
【図9】図7及び図8の評価方法の評価記号パスについ
ての1つの実施形態に関するフローチャート
【図10】本発明の正算オペレータ処理ルーチンのフロ
ーチャート
【図11】本発明の非正算オペレータ処理ルーチンのフ
ローチャート
【図12】同上フローチャート
【図13】図7及び図8の評価方法の評価パスを示すフ
ローチャート
【図14】ソフトウェアシステム中に本発明を統合する
本発明の統合プロセスのステップを示すフローチャート
【図15】本発明のプログラム生成方法および支援ルー
チンのステップを示すフローチャート
【図16】同上フローチャート
【図17】同上フローチャート
【図18】同上フローチャート
【図19】同上フローチャート
【図20】本発明を作動できるハードウェアシステムの
ブロック図
【図21】さら穴を有する箱を示す図
【図22】階層的オペレータを使用しない本発明の依存
関係グラフを示す図
【図23】階層的オペレータを使用する図16の依存関
係グラフを示す図
【図24】図16,図17の依存関係グラフにおける階
層的オペレータの実施形態についての概念図
【図25】本発明の依存関係グラフに引渡される各オペ
レータに作用する方法のフローチャート
【図26】同上フローチャート
【図27】同上フローチャート
【図28】同上フローチャート
【図29】本発明のインタプリタルーチンを示すフロー
チャート
【図30】視覚的なプログラミング環境を用いる本発明
のデザインおよび依存関係グラフについて処理編集する
ための方法を示すフローチャート
【図31】本発明の再定義入力ルーチンのステップを示
すフローチャート
【図32】本発明の置換オペレータルーチンのステップ
を示すフローチャート
【図33】本発明による依存関係グラフの視覚的表示の
一例を示す図
【図34】本発明による依存関係グラフの視覚的表示の
一例を示す図
【図35】本発明による方法のステップを示す上位フロ
ーチャート
【符号の説明】
3〜6 データオブジェクト 7,19 オペレータ 9〜12,15,21,23 リレーション
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ステファノ マルナティ アメリカ合衆国、マサチューセッツ 01845、エヌ. アンドバー、メイン ス トリート 148、ユニット ビー.533

Claims (26)

    【特許請求の範囲】
  1. 【請求項1】デザインを作成する際に使用する複数のフ
    ァンクションを含むソフトウェアシステム上で、デザイ
    ンセッションから生じるデザインを表示する方法であっ
    て、 前記デザインは、対応するファンクションによって夫々
    作成される複数のデザインエンティティを含み、 前記デザインを形成する複数のデザインエンティティの
    依存関係を示すデザインの依存関係表示を作成する依存
    関係作成ステップと、 前記デザインを形成するデザインエンティティを作成す
    る際に使用される対応するファンクションを呼び出し
    て、デザインを表示するコンピュータプログラムを前記
    依存関係表示から標準的なプログラミング言語で生成す
    るプログラム生成ステップと、を含むことを特徴とする
    ソフトウェアモデリングシステムにおけるデータ依存関
    係を表示する方法。
  2. 【請求項2】前記プログラム生成ステップは、前記ソフ
    トウェアシステム上で、デザインを形成する複数のデザ
    インエンティティの依存関係に対応する構造を有するコ
    ンピュータプログラムを生成するステップであることを
    特徴とする請求項1に記載のソフトウェアモデリングシ
    ステムにおけるデータ依存関係を表示する方法。
  3. 【請求項3】前記ソフトウェアシステムは、前記デザイ
    ンの依存関係表示を評価するために実行されるソフトウ
    ェアルーチンであることを特徴とし、 また、前記プログラム生成ステップは、前記コンピュー
    タプログラムを生成する際にソフトウェアルーチンの少
    なくとも一部を実行するステップであることを特徴とす
    る請求項1又は請求項2に記載のソフトウェアモデリン
    グシステムにおけるデータ依存関係を表示する方法。
  4. 【請求項4】コンピュータプログラムを編集し、修正さ
    れたデザインを表示する修正コンピュータプログラムを
    作成するプログラム修正ステップと、 該修正コンピュータプログラムをソフトウェアシステム
    上で実行し、ソフトウェアシステム上で修正デザインを
    生成するデザイン修正ステップと、をさらに含むことを
    特徴とする請求項1〜請求項3のいずれか1つに記載の
    ソフトウェアモデリングシステムにおけるデータ依存関
    係を表示する方法。
  5. 【請求項5】前記デザイン修正ステップは、前記修正さ
    れたデザインの依存関係表示を生成するステップである
    ことを特徴とする請求項4に記載のソフトウェアモデリ
    ングシステムにおけるデータ依存関係を表示する方法。
  6. 【請求項6】前記依存関係作成ステップは、前記デザイ
    ンを形成する複数のデザインエンティティのサブセット
    を表示する少なくとも1つの階層的なデザインエンティ
    ティを含む依存関係表示を作成するステップであり、 前記プログラム生成ステップは、少なくとも1つの階層
    的なデザインエンティティを表示するコンピュータプロ
    グラムを生成するステップであることを特徴とする請求
    項1〜請求項5のいずれか1つに記載のソフトウェアモ
    デリングシステムにおけるデータ依存関係を表示する方
    法。
  7. 【請求項7】前記プログラム生成ステップは、さらに、
    前記階層的なデザインエンティティによって表示される
    複数のデザインエンティティのサブセットを作成する複
    数のファンクションを呼び出して、少なくとも1つの階
    層的なデザインエンティティを表示するコンピュータプ
    ログラムを生成するステップであることを特徴とする請
    求項6に記載のソフトウェアモデリングシステムにおけ
    るデータ依存関係を表示する方法。
  8. 【請求項8】前記コンピュータプログラムを格納するプ
    ログラム格納ステップと、 前記ソフトウェアシステムから前記デザインを削除して
    格納空間を保存するデザイン削除ステップと、をさらに
    含むことを特徴とする請求項1〜請求項7のいずれか1
    つに記載のソフトウェアモデリングシステムにおけるデ
    ータ依存関係を表示する方法。
  9. 【請求項9】前記ソフトウェアシステム上でコンピュー
    タプログラムを実行してデザインを再生するデザイン再
    生ステップをさらに含むことを特徴とする請求項1〜請
    求項8のいずれか1つに記載のソフトウェアモデリング
    システムにおけるデータ依存関係を表示する方法。
  10. 【請求項10】前記ソフトウェアシステムから依存関係
    表示を削除して格納空間をさらに保存する依存関係表示
    削除ステップをさらに含むことを特徴とする請求項1〜
    請求項8のいずれか1つに記載のソフトウェアモデリン
    グシステムにおけるデータ依存関係を表示する方法。
  11. 【請求項11】前記ソフトウェアシステム上で依存関係
    表示を再生するコンピュータプログラムを実行する依存
    関係再生ステップをさらに含むことを特徴とする請求項
    10に記載のソフトウェアモデリングシステムにおける
    データ依存関係を表示する方法。
  12. 【請求項12】複数のファンクションと1つのユーザー
    インタフェースを有し、前記複数のファンクションの対
    応する1つを呼び出すことによって複数のコマンドの各
    々の受領に応答するソフトウェアモデリングシステム
    に、パラメータ能力を供給する方法であって、 前記複数のファンクションは、モデルを作成するモデリ
    ングセッション中に実行され、 ソフトウェアシステムにおいて前記複数のファンクショ
    ンの各々の周囲にラッパーを供給して複数の結合ファン
    クションを作成するステップであって、該複数の結合フ
    ァンクションの各々は、対応するファンクションを呼び
    出すことを特徴とし、さらに、その対応するファンクシ
    ョンが前記モデリングセッション中に実行されたとき、
    前記モデルの依存関係表示にグラフエンティティを作成
    し、付加する能力を有するものである結合ファンクショ
    ン作成ステップと、 各々受け取ったコマンドに応じて、該受け取ったコマン
    ドに対応する前記ファンクションに対応する結合ファン
    クションが呼び出されるように、前記ユーザーインタフ
    ェースを修正するユーザーインタフェース修正ステップ
    と、を含むことを特徴とするソフトウェアモデリングシ
    ステムにおけるデータ依存関係を表示する方法。
  13. 【請求項13】前記複数のファンクションの少なくとも
    1つは、固有のパラメータ能力を有していないことをさ
    らに特徴とする請求項12に記載のソフトウェアモデリ
    ングシステムにおけるデータ依存関係を表示する方法。
  14. 【請求項14】前記複数のファンクションは、第1のフ
    ォーマットでフォーマットされた引数の第1のセットに
    作用する第1のファンクションを含むことを特徴とし、 また、前記結合ファンクション作成ステップは、第1の
    ファンクションの周囲に第1のラッパーを供給するステ
    ップであって、該第1のラッパーは、第1のフォーマッ
    トとは異なる第2のフォーマットでフォーマットされた
    引数の第2のセットを受け取ることが可能であり、第1
    のファンクションが呼び出されるとき、引数の第2のセ
    ットを引数の第1のセットに変換するものであることを
    特徴とする請求項12又は請求項13に記載のソフトウ
    ェアモデリングシステムにおけるデータ依存関係を表示
    する方法。
  15. 【請求項15】前記結合ファンクション作成ステップ
    は、前記ラッパーの各々を、オブジェクト指向コンピュ
    ータプログラミング言語に供給するステップであること
    を特徴とする請求項12〜請求項14のいずれか1つに
    記載のソフトウェアモデリングシステムにおけるデータ
    依存関係を表示する方法。
  16. 【請求項16】修正が前記モデルになされたとき、前記
    依存関係表示を使用するツールを供給して前記デザイン
    の修正によって影響を受けるグラフエンティティに対応
    する前記モデルを作成するのに使用されるファンクショ
    ンだけを再評価するファンクション再評価ステップをさ
    らに含むことを特徴とする請求項12〜請求項15のい
    ずれか1つに記載のソフトウェアモデリングシステムに
    おけるデータ依存関係を表示する方法。
  17. 【請求項17】各々の結合ファンクションのためのテー
    ブルエントリを有するハッシュテーブルを作成するステ
    ップであって、各々のテーブルエントリは、該結合ファ
    ンクションが実行されたとき、依存関係表示に作成さ
    れ、付加された前記グラフエンティティのトポロジイを
    確認するものであるハッシュテーブル作成ステップをさ
    らに含むことを特徴とする請求項12〜請求項16のい
    ずれか1つに記載のソフトウェアモデリングシステムに
    おけるデータ依存関係を表示する方法。
  18. 【請求項18】前記結合ファクション作成ステップは、
    さらに、標準的なコンピュータプログラミング言語によ
    り前記ラッパーの各々を供給するステップであることを
    特徴とする請求項12〜請求項17のいずれか1つに記
    載のソフトウェアモデリングシステムにおけるデータ依
    存関係を表示する方法。
  19. 【請求項19】前記グラフエンティティを依存関係表示
    に作成し、付加する前記結合ファンクションの各々と協
    働する単一のプロセッサファンクションを作成する単一
    プロセッサファンクション作成ステップをさらに含むこ
    とを特徴とする請求項12〜請求項18のいずれか1つ
    に記載のソフトウェアモデリングシステムにおけるデー
    タ依存関係を表示する方法。
  20. 【請求項20】各々の結合ファンクションのためのテー
    ブルエントリを有するハッシュテーブルを作成するステ
    ップであって、各々のテーブルエントリは、結合ファン
    クションが実行されたときに、前記依存関係表示に作成
    され、付加されるグラフエンティティのトポロジィを確
    認するハッシュテーブル作成ステップをさらに含んで構
    成され、 また、前記単一プロセッサファンクション作成ステップ
    は、単一のプロセッサファンクションを作成し、ハッシ
    ュテーブルにおいてエントリにアクセスすることにより
    前記依存関係表示を作成するステップであって、該単一
    のプロセッサファンクションは一般的なものであり、結
    合ファンクションによって呼び出されたときに、それに
    渡される引数に応じて動作するものであることを特徴と
    する請求項19に記載のソフトウェアモデリングシステ
    ムにおけるデータ依存関係を表示する方法。
  21. 【請求項21】デザインを作成する際に使用する複数の
    ファンクションを含むソフトウェアシステム上で、デザ
    インセッションから生じるデザインに作用する方法であ
    って、 前記デザインは対応するファンクションによって各々作
    成される複数のデザインエンティティであり、 前記複数のファンクションは正算と非正算に係るもので
    あることを特徴とし、 前記デザインを形成する複数のデザインエンティティの
    間で、依存関係を示すデザインの依存関係表示を作成す
    るステップであって、該依存関係表示は、正算と非正算
    との両者によって作成されるデザインエンティティを表
    示するものである依存関係作成ステップを含むことを特
    徴とするソフトウェアモデリングシステムにおけるデー
    タ依存関係を表示する方法。
  22. 【請求項22】前記ソフトウェアシステムは、さらに、
    相互に接続された非正算の制限セットを解明するエンジ
    ンを含むことを特徴とし、 また、前記依存関係作成ステップは、さらに、デザイン
    をチェックして、相互に接続された非正算の各々の制限
    セットがエンジンが解明できる型のものであるか否か判
    定するデザインチェックステップを含むことを特徴とす
    る請求項21に記載のソフトウェアモデリングシステム
    におけるデータ依存関係を表示する方法。
  23. 【請求項23】デザインを作成する際に使用する複数の
    ファンクションを含むことを特徴とするソフトウェアシ
    ステム上で、デザインセッションから生じるデザインに
    作用する方法であって、 前記デザインは、前記複数のファンクションの対応する
    1つによって各々作成される複数のデザインエンティテ
    ィであることを特徴とし、 前記デザインを形成する前記複数のデザインエンティテ
    ィの間で、依存関係を示すデザインの依存関係表示を作
    成する依存関係作成ステップと、 前記デザインの依存関係表示を表示する依存関係表示ス
    テップと、を含むことを特徴とするソフトウェアモデリ
    ングシステムにおけるデータ依存関係を表示する方法。
  24. 【請求項24】依存関係表示を修正し、修正されたデザ
    インを表示する修正依存関係表示を作成する依存関係修
    正ステップと、 該修正依存関係表示から修正デザインを生成するデザイ
    ン修正ステップと、をさらに含むことを特徴とする請求
    項23に記載のソフトウェアモデリングシステムにおけ
    るデータ依存関係を表示する方法。
  25. 【請求項25】デザインを作成する際に使用する複数の
    ファンクションを含むことを特徴とするソフトウェアシ
    ステム上で、デザインセッションから生じるデザインに
    作用する方法であって、 前記デザインは、前記複数のファンクションの対応する
    1つによって各々作成される複数のデザインエンティテ
    ィであることを特徴とし、 前記デザインを形成する前記複数のデザインエンティテ
    ィの依存関係を示すデザインの依存関係表示を作成する
    ステップであって、該依存関係表示は、前記複数のデザ
    インエンティティを表示する複数のグラフエンティティ
    に特徴を有するものである依存関係作成ステップと、 同じ階層のグラフエンティティを有する複数のグラフエ
    ンティティの少なくとも2つを表示するグラフエンティ
    ティ表示ステップと、を含むことを特徴とするソフトウ
    ェアモデリングシステムにおけるデータ依存関係を表示
    する方法。
  26. 【請求項26】前記デザインに修正を加えるデザイン修
    正ステップと、 前記依存関係表示を使用して、デザインの修正によって
    影響を受ける1組のデザインエンティティを確認するデ
    ザインエンティティ確認ステップと、 前記修正によって影響を受ける1組のデザインエンティ
    ティに対応するデザインを作成する際に使用されるファ
    ンクションだけを再評価するファンクション再評価ステ
    ップと、をさらに含むことを特徴とする請求項1〜請求
    項25のいずれか1つに記載のソフトウェアモデリング
    システムにおけるデータ依存関係を表示する方法。
JP10054496A 1995-04-21 1996-04-22 ソフトウェアモデリングシステムにおけるデータ依存関係を表示する方法 Expired - Lifetime JP3962109B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/426,594 US5689711A (en) 1995-04-21 1995-04-21 Method and apparatus for representing data dependencies in software modeling systems
US08/426594 1995-04-21

Publications (2)

Publication Number Publication Date
JPH0969120A true JPH0969120A (ja) 1997-03-11
JP3962109B2 JP3962109B2 (ja) 2007-08-22

Family

ID=23691422

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10054496A Expired - Lifetime JP3962109B2 (ja) 1995-04-21 1996-04-22 ソフトウェアモデリングシステムにおけるデータ依存関係を表示する方法

Country Status (3)

Country Link
US (1) US5689711A (ja)
EP (1) EP0738965A3 (ja)
JP (1) JP3962109B2 (ja)

Families Citing this family (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845077A (en) * 1995-11-27 1998-12-01 Microsoft Corporation Method and system for identifying and obtaining computer software from a remote computer
US5815154A (en) * 1995-12-20 1998-09-29 Solidworks Corporation Graphical browser system for displaying and manipulating a computer model
US5907711A (en) * 1996-01-22 1999-05-25 Hewlett-Packard Company Method and apparatus for transforming multiplications into product table lookup references
US6049671A (en) * 1996-04-18 2000-04-11 Microsoft Corporation Method for identifying and obtaining computer software from a network computer
US6802061B1 (en) * 1996-12-12 2004-10-05 Microsoft Corporation Automatic software downloading from a computer network
US6029169A (en) * 1997-05-01 2000-02-22 Stratum Technologies Corporation Universal software structure for representing model structures
US6401114B1 (en) 1997-05-01 2002-06-04 Stratum Technologies Corporation Method and apparatus for dynamic programming across a computer network
US7162519B2 (en) 1998-05-01 2007-01-09 Stratum Technologies Corporation Structure and method for providing customized web pages-therefor
US6209125B1 (en) * 1997-06-03 2001-03-27 Sun Microsystems, Inc. Method and apparatus for software component analysis
US6026413A (en) * 1997-08-01 2000-02-15 International Business Machines Corporation Determining how changes to underlying data affect cached objects
US6256712B1 (en) * 1997-08-01 2001-07-03 International Business Machines Corporation Scaleable method for maintaining and making consistent updates to caches
JP3571526B2 (ja) * 1997-10-23 2004-09-29 富士通株式会社 システム設計/評価cadシステムおよびそのプログラム記憶媒体
US5937411A (en) * 1997-11-21 1999-08-10 International Business Machines Corporation Method and apparatus for creating storage for java archive manifest file
US6339838B1 (en) * 1998-01-02 2002-01-15 At&T Corp. Control of commercial processes
US6542937B1 (en) * 1998-02-27 2003-04-01 Amada Company, Limited Apparatus and method for transferring and editing sheet metal part data
US6232982B1 (en) * 1998-05-07 2001-05-15 Autodesk, Inc. Enhanced chronological feature browser for computer aided design
US6847384B1 (en) * 1998-05-14 2005-01-25 Autodesk, Inc. Translating objects between software applications which employ different data formats
US6381742B2 (en) * 1998-06-19 2002-04-30 Microsoft Corporation Software package management
US6295535B1 (en) 1998-11-13 2001-09-25 Board Of Trustees Operating Michigan State University Method and system for creating designs using internet-based agents
US6445974B1 (en) * 1998-12-30 2002-09-03 Intergraph Corporation CAD-neutral application programming interface
US6249714B1 (en) * 1998-12-31 2001-06-19 Rensselaer Polytechnic Institute Virtual design module
US7526468B2 (en) * 1999-01-08 2009-04-28 Computer Associates Think, Inc. System and method for recursive path analysis of DBMS procedures
US7065717B1 (en) 1999-01-19 2006-06-20 International Business Machines Corporation Tree-based interface apparatus for display of call dependencies and method therefor
US7464383B1 (en) * 1999-04-16 2008-12-09 Adobe Systems Incorporated Dynamic dependency graph in MVC paradigm
US7233326B1 (en) * 1999-04-29 2007-06-19 Autodesk, Inc. Three dimensional modeling and animation system using master objects and modifiers
US6360357B1 (en) * 1999-06-10 2002-03-19 Dassault Systems Adding code in an application during runtime to enrich object behavior
US7188332B2 (en) * 1999-10-05 2007-03-06 Borland Software Corporation Methods and systems for relating a data definition file and a data model for distributed computing
JP3759356B2 (ja) * 1999-11-26 2006-03-22 富士通株式会社 3次元モデル管理装置
GB2356946B (en) * 1999-12-01 2003-11-05 Int Computers Ltd Computer system user interface design
JP4656464B2 (ja) * 2000-05-17 2011-03-23 本田技研工業株式会社 ウィンドウ表示による形状作成方法および装置
DE10031041A1 (de) * 2000-06-26 2002-01-03 Autodesk Inc Bereitstellen einer Zugriffsmöglichkeit auf Anwendungsdatenelemente eines Anwendungsprogramms
US20020175948A1 (en) * 2001-05-23 2002-11-28 Nielsen Eric W. Graphical user interface method and apparatus for interaction with finite element analysis applications
US6735762B2 (en) * 2000-11-24 2004-05-11 Fujitsu Limited Record medium and method for analyzing a source file
US6571203B2 (en) * 2000-12-26 2003-05-27 Fujitsu Limited CAD-data management system having a plurality of interfaces corresponding to a plurality of CAD applications
DE10106397A1 (de) * 2001-02-12 2002-09-12 Siemens Ag Software-Werkzeug zur Formulierung einer zu lösenden Automatisierungsaufgabe
US20090254801A1 (en) * 2001-05-14 2009-10-08 The Mathworks, Inc. Model navigation
US8001523B1 (en) 2001-07-05 2011-08-16 Microsoft Corporation System and methods for implementing an explicit interface member in a computer programming language
US6981250B1 (en) * 2001-07-05 2005-12-27 Microsoft Corporation System and methods for providing versioning of software components in a computer programming language
US20030121024A1 (en) * 2001-12-13 2003-06-26 Microsoft Corporation System and method for building a runtime image from components of a software program
JPWO2003096183A1 (ja) * 2002-05-14 2005-09-15 富士通株式会社 機能ブロックへの分割を行なうシステム及び方法
US7086028B1 (en) * 2003-04-09 2006-08-01 Autodesk, Inc. Simplified generation of design change information on a drawing in a computer aided design (CAD) environment
US7283939B2 (en) * 2003-05-14 2007-10-16 Incs Inc. Method, system and program for supporting mechanism design
US8548837B2 (en) 2003-08-20 2013-10-01 International Business Machines Corporation E-business value web
US7669193B1 (en) * 2003-09-25 2010-02-23 Lantronix, Inc. Program transformation using flow-sensitive type constraint analysis
US7069095B2 (en) * 2003-12-04 2006-06-27 Hewlett-Packard Development Company, L.P. System and method for populating a computer-aided design program's database with design parameters
US7694315B2 (en) * 2004-02-13 2010-04-06 Microsoft Corporation Schema-based machine generated programming models
US7594227B2 (en) * 2004-03-08 2009-09-22 Ab Initio Technology Llc Dependency graph parameter scoping
US20050246773A1 (en) * 2004-04-29 2005-11-03 Microsoft Corporation System and methods for processing partial trust applications
US20050248573A1 (en) * 2004-05-10 2005-11-10 Pixar Storing intra-model dependency information
WO2005114587A1 (en) * 2004-05-10 2005-12-01 Pixar Techniques for rendering complex scenes
US7064761B2 (en) 2004-05-10 2006-06-20 Pixar Techniques for animating complex scenes
US7330185B2 (en) * 2004-05-10 2008-02-12 Pixar Techniques for processing complex scenes
US7532212B2 (en) * 2004-05-10 2009-05-12 Pixar Techniques for rendering complex scenes
US7925727B2 (en) * 2004-07-29 2011-04-12 Nortel Networks Limited Method and apparatus for efficient communication of management data in a telecommunications network
US20060143222A1 (en) * 2004-12-23 2006-06-29 Maxime Daniel Method, program and system for automatic reengineering of a client code
US20060200811A1 (en) * 2005-03-07 2006-09-07 Cheng Stephen M Method of generating optimised stack code
US10140387B2 (en) * 2005-08-02 2018-11-27 The Boeing Company Model for managing variations in a product structure for a product
US20160162607A1 (en) * 2005-08-02 2016-06-09 The Boeing Company Model for Managing Variations in a Product Structure for a Product
US7441230B2 (en) * 2005-10-07 2008-10-21 Lucasfilm Entertainment Company Ltd. Method of utilizing product proxies with a dependency graph
US7966346B1 (en) * 2006-01-23 2011-06-21 Coverity, Inc. Updating groups of items
US8612957B2 (en) * 2006-01-26 2013-12-17 Intel Corporation Scheduling multithreaded programming instructions based on dependency graph
US8713513B2 (en) * 2006-12-13 2014-04-29 Infosys Limited Evaluating programmer efficiency in maintaining software systems
US7949994B2 (en) * 2007-08-23 2011-05-24 International Business Machines Corporation Method and computer program product for viewing extendible models for legacy applications
US8095922B2 (en) * 2007-08-29 2012-01-10 International Business Machines Corporation Constructor argument optimization in object model for folding multiple casts expressions
US8090754B2 (en) * 2007-12-07 2012-01-03 Sap Ag Managing relationships of heterogeneous objects
CN103069383B (zh) * 2010-06-02 2016-09-28 艾伦智能科技公司 具有图形用户界面的装置及开发多媒体计算机应用程序的方法
US8713540B2 (en) * 2010-07-29 2014-04-29 National Instruments Corporation Generating and modifying textual code interfaces from graphical programs
US8818769B2 (en) 2010-10-28 2014-08-26 Parametric Technology Corporation Methods and systems for managing synchronization of a plurality of information items of a computer-aided design data model
US8890867B2 (en) 2010-10-28 2014-11-18 Parametric Technology Corporation Methods and systems for dynamically loading portions of a computer-aided design model on demand
US8892404B2 (en) 2010-10-28 2014-11-18 Parametric Technology Corporation Methods and systems for consistent concurrent operation of a plurality of computer-aided design applications
US8566066B2 (en) * 2010-10-28 2013-10-22 Parametric Technology Corporation Enforcing parametric constraints in a direct modeling interface in computer-aided design
US8943483B2 (en) * 2010-11-11 2015-01-27 International Business Machines Corporation Application programming interface naming using collaborative services
US9009682B2 (en) * 2010-12-13 2015-04-14 Sap Se Enhanced unit test framework
US9111238B2 (en) 2010-12-17 2015-08-18 Microsoft Technology Licensing, Llc Data feed having customizable analytic and visual behavior
US9069557B2 (en) * 2010-12-17 2015-06-30 Microsoft Technology Licensing, LLP Business intelligence document
US9104992B2 (en) 2010-12-17 2015-08-11 Microsoft Technology Licensing, Llc Business application publication
US8924385B2 (en) 2011-04-12 2014-12-30 Microsoft Corporation Query-based diagrammatic presentation of data
US10515141B2 (en) 2012-07-18 2019-12-24 Software Ag Usa, Inc. Systems and/or methods for delayed encoding of XML information sets
US9760549B2 (en) * 2012-07-18 2017-09-12 Software Ag Usa, Inc. Systems and/or methods for performing atomic updates on large XML information sets
US9922089B2 (en) 2012-07-18 2018-03-20 Software Ag Usa, Inc. Systems and/or methods for caching XML information sets with delayed node instantiation
CA2816830C (en) * 2012-08-14 2016-07-19 The Boeing Company Model for managing variations in a product structure for a product
US9182966B2 (en) * 2013-12-31 2015-11-10 International Business Machines Corporation Enabling dynamic software installer requirement dependency checks
US9785489B1 (en) * 2014-12-18 2017-10-10 Amazon Technologies, Inc. Secure script execution using sandboxed environments
US9710316B1 (en) 2014-12-18 2017-07-18 Amazon Technologies, Inc. Flexible scripting platform for troubleshooting
US9411556B1 (en) 2015-09-30 2016-08-09 Semmle Limited Template dependency inlining
EP3206143B1 (en) * 2016-02-12 2023-11-01 The Boeing Company System and method for managing variations in a product structure for a product
US10509634B2 (en) * 2016-03-30 2019-12-17 International Business Machines Corporation Data flow analysis for dynamic application, skipping views
US11853690B1 (en) 2016-05-31 2023-12-26 The Mathworks, Inc. Systems and methods for highlighting graphical models
US10585648B2 (en) * 2016-06-01 2020-03-10 The Mathworks, Inc. Systems and methods for aggregating implicit and explicit event code of executable models
US20180314408A1 (en) * 2017-04-28 2018-11-01 General Electric Company Systems and methods for managing views of computer-aided design models
US10732940B2 (en) 2018-04-27 2020-08-04 EMC IP Holding Company LLC Enterprise services framework for presentation layer management
US10740537B2 (en) * 2018-11-01 2020-08-11 Dell Products L.P. Enterprise form dependency visualization and management
US11467835B1 (en) * 2018-11-23 2022-10-11 Amazon Technologies, Inc. Framework integration for instance-attachable accelerator
US11194845B2 (en) 2019-04-19 2021-12-07 Tableau Software, LLC Interactive lineage analyzer for data assets
US11651003B2 (en) 2019-09-27 2023-05-16 Tableau Software, LLC Interactive data visualization interface for data and graph models
US11423217B2 (en) 2019-11-07 2022-08-23 Tableau Software, LLC Flexible table based visualizations
US11829421B2 (en) * 2019-11-08 2023-11-28 Tableau Software, LLC Dynamic graph generation for interactive data analysis
US10917401B1 (en) * 2020-03-24 2021-02-09 Imperva, Inc. Data leakage prevention over application programming interface
US11422985B2 (en) 2020-07-30 2022-08-23 Tableau Software, LLC Interactive data modeling
US11308267B1 (en) * 2020-09-25 2022-04-19 UiPath, Inc. Artifacts reference creation and dependency tracking
US20220179703A1 (en) * 2020-12-07 2022-06-09 Nvidia Corporation Application programming interface for neural network computation
CN112925522B (zh) * 2021-02-26 2023-11-21 北京百度网讯科技有限公司 依赖图生成方法、装置、设备、存储介质和程序产品
WO2022221418A1 (en) * 2021-04-14 2022-10-20 Nvidia Corporation Application programming interface to locate incomplete graph code
US12229145B2 (en) 2021-06-01 2025-02-18 Tableau Software, LLC Metadata inheritance for data assets
US12423333B2 (en) * 2021-07-08 2025-09-23 Tableau Software, LLC Data processing for visualizing hierarchical data
US20230059083A1 (en) 2021-08-23 2023-02-23 Tableau Software, LLC Generating shortcut paths between related data types
US12105742B2 (en) 2021-08-31 2024-10-01 Tableau Software, LLC Providing data flow directions for data objects
US11816012B2 (en) 2021-10-13 2023-11-14 Raytheon Company Multi-domain systems integration and evaluation
CN114880676A (zh) * 2022-06-08 2022-08-09 中国人民解放军陆军工程大学 一种Java第三方依赖漏洞检测方法、系统及存储介质
US12393903B2 (en) 2023-01-27 2025-08-19 Tableau Software, LLC Determining shortcut relationships in data models
US12602230B1 (en) 2023-02-27 2026-04-14 Nvidia Corporation Application programming interface to indicate null-operation dependencies
US12511106B1 (en) 2023-02-27 2025-12-30 Nvidia Corporation Application programming interface to indicate host dependencies
US12443462B1 (en) 2023-02-27 2025-10-14 Nvidia Corporation Application programming interface using node dependencies
US12579011B1 (en) 2023-02-27 2026-03-17 Nvidia Corporation Application programming interface to indicate semaphore wait dependencies

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265197A (en) * 1988-12-23 1993-11-23 Kabushiki Kaisha Toshiba Geometric modeling apparatus
US5327529A (en) * 1990-09-24 1994-07-05 Geoworks Process of designing user's interfaces for application programs
US5581672A (en) * 1991-12-19 1996-12-03 Aerohydro, Inc. System of relational entities for object-oriented computer-aided geometric design
JP2522898B2 (ja) * 1992-09-08 1996-08-07 インターナショナル・ビジネス・マシーンズ・コーポレイション 動的カストマイズ方法及びグラフィックリソ―ス・エディタ
US5438659A (en) * 1992-10-08 1995-08-01 Hewlett-Packard Company Object-action user interface management system
JP3793226B2 (ja) * 1992-12-23 2006-07-05 オブジェクト テクノロジー ライセンシング コーポレイション アトミック・コマンド・システム
US5530864A (en) * 1992-12-23 1996-06-25 Taligent Command object system for an object-oriented software platform
US5325533A (en) * 1993-06-28 1994-06-28 Taligent, Inc. Engineering system for modeling computer programs

Also Published As

Publication number Publication date
JP3962109B2 (ja) 2007-08-22
US5689711A (en) 1997-11-18
EP0738965A3 (en) 1998-09-09
EP0738965A2 (en) 1996-10-23

Similar Documents

Publication Publication Date Title
JP3962109B2 (ja) ソフトウェアモデリングシステムにおけるデータ依存関係を表示する方法
US5019961A (en) Computer apparatus and method for logical modelling
US5850535A (en) Roll-back during regeneration on a computer-aided design system
Ma et al. Associative feature modeling for concurrent engineering integration
CN115516443B (zh) 根据架构生成优化逻辑
US8234625B2 (en) Optimized look-up table calculations in block diagram software
US7765529B1 (en) Transforming graphical objects in a graphical modeling environment
US20110093835A1 (en) Non-graphical model dependencies in graphical modeling environments
US11893318B1 (en) Systems and methods for topology and shape optimization for modeling of a physical object
JPH0475134A (ja) ファイル管理装置
JP2008506162A (ja) オブジェクト・プロセス・グラフ・システム
Eastman System facilities for CAD databases
US9047165B1 (en) Multiversion model versioning system and method
KR20040004619A (ko) 구식 소프트웨어 애플리케이션을 최신의 객체 지향시스템으로 전환하는 방법과 시스템
KR20140110072A (ko) 객체 지향 환경에서 다중 트랜잭션 기법을 이용하여 객체들에 대한 기하학적인 변환을 수행하기 위한 방법 및 장치
JP2007511834A (ja) リバーシブルなデザイン・ツリーの変換のための方法とシステム
RU2406115C2 (ru) Доступ к сложным данным
CN112835567A (zh) 一种基于自然语言的可视化智能合约开发系统
Cook Jr ALPAL, a program to generate physics simulation codes from natural descriptions
US7272544B2 (en) Integrated modeling through symbolic manipulation
Roller Advanced methods for parametric design
Butler et al. The PAWS and STEM reliability analysis programs
Sun et al. Data exchange system for an integrated building design system
Jambon et al. Dialogue validation from task analysis
Werner et al. A generic language for query and viewtype generation by-example

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060131

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060428

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060731

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20061010

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070208

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070327

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070424

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070518

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110525

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110525

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120525

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130525

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term