JPH08512152A - インクリメンタル生成システム - Google Patents

インクリメンタル生成システム

Info

Publication number
JPH08512152A
JPH08512152A JP7502762A JP50276294A JPH08512152A JP H08512152 A JPH08512152 A JP H08512152A JP 7502762 A JP7502762 A JP 7502762A JP 50276294 A JP50276294 A JP 50276294A JP H08512152 A JPH08512152 A JP H08512152A
Authority
JP
Japan
Prior art keywords
component
list
components
value
error
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP7502762A
Other languages
English (en)
Inventor
マッキナーニィ,ピーター,ジョセフ
ギボンズ,ビル
Original Assignee
タリジェント インコーポレイテッド
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 タリジェント インコーポレイテッド filed Critical タリジェント インコーポレイテッド
Publication of JPH08512152A publication Critical patent/JPH08512152A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/48Incremental compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 人間指向オブジェクト・プログラミング・システムは、対話的でダイナミックな処理と増分的コンピュータ・プログラム生成を提供する。このシステムは、オペレーション・システムやグラフィック・ユーザ・インターフェース(GUI)を有する大きなアプリケーション・プログラムのような複雑なコンピュータ・プログラムの開発を容易にする。プログラムは、構成要素と呼ばれる単位の集合としてモデル化される。構成要素は、クラスや関数のようなコンパイル可能な単一の言語要素を表わしている。3つの主要な機能は、データベース、コンパイラそして生成機構である。データベースは、構成要素と特性を格納している。コンパイラは、特性のソース・コードをコンパイルすると共に、構成要素に関連する従属性を計算する責任を負っている。生成機構は、構成要素の特性と共に、コンパイラが作成した従属性を、正確におよび効率的に構成要素のコンパイルする順序に対して、生成処理中に使用する。

Description

【発明の詳細な説明】 インクリメンタル生成システム 発明の分野 本発明は、一般に、コンピュータ支援ソフトウェア・エンジニアリング(CASE) 、特にコンピュータ・プログラムを生成するための対話型でダイナミック環境に 提供する人間指向オブジェクトプログラミング・システム(HOOPS)に関する。本 発明は、オペレーティング・システム(OS)ソフトウェアおよびグラフィック・ユ ーザ・インターフェース(GUI)を有する多数のアプリケーションのような複合プ ログラムを開発する際に特に有用である最適インクリメンタル・コンパイラでコ ンピュータ・プログラムを編集する細粒度ソース・コードをプログラマが、実行 することを可能にする。本発明は、通常用いられているオブジェクト指向プログ ラミング(OOP)言語、C++を用いた実施例で説明されているが、この原理は、オブ ジェクト指向および手続の両方の他のコンピュータ・プログラミング言語に適用 可能であり、従来の言語およびOOP言語の両方を使用するプログラムを生成する ために使用することができる。 従来技術の説明 オブジェクト指向プログラミング(OOP)は、ユーザ・フレンドリーなインテリ ジェント・コンピュータ・ソフトウェアを生成するための好ましい環境である。 OOPの主な要素は、データ遮蔽性(data encapsulation)、継承(inheritance)およ び多相性(polymorphism)である。これらの要素は、アイコン、マウスカーソルお よびメニューを有するウインドウイング環境によって一般に特徴づけられるグラ フィック・ユーザ・インターフェース(GUIを生成するために使用することがで きる。これらの3つの主な要素はOOP言語に共通であるのに対して、大抵のOOP言 語は3つの重要な要素を違ったふうに実装する。 OOP言語の例は、Smalltalk、Object PascalおよびC++である。Smalltalk実際 に言語以上のものである。すなわち、それはプログラミング環境とするとより正 確に特徴づけられる。Smalltalkは、1970年初期にゼロックス社のパロアルト研 究センター(PARC)の学習研究グループで開発された。Smalltalkでは、メッセー ジは、オブジェクト自体で評価するためにオブジェクトに送られる。メッセージ は、従来のプログラミング言語の関数呼出しと同様な役割を行っている。プログ ラマはデータタイプに注意する必要がない。どちらかといえば、プログラマは、 メッセージの正しい順序を生成することおよび正しいメッセージを使用すること に注意することだけ必要である。Object Pascalは、アップル社のマッキントッ シュ(登録商標)コンピュータのために使用される言語である。アップル社は、 パスカルの設計者、ニクラウス・ウィルス(Niklaus Wirth)と共同でオブジェク トパスカルを開発した。C++は、Cの拡張として1983年AT&Tのベル研究所で、ビ ョーン・ストラウストラップ(Bjarne Stroustrup)によって開発された。主なC++ のコンセプトはクラスであり、それは、ユーザ定義タイプである。クラスがオブ ジェクト指向プログラミング機能を提供している。C++モジュールは、Cモジュ ールと互換性があり、現在のCライブラリがC++プログラムとともに使用される ことができるように自由にリンクできる。最も広く使用されるオブジェクトに基 づくプログラミング言語およびオブジェクト指向プログラミング言語は、ノルウ ェーのO−J・ダール(O−J.Dahl)、B・ミーラウ(B.Myhrhaug)およびK・ニガ ード(K.Nygard)によって1960年に開発されたSimulaまでその祖先をさかのぼるこ とができる。OOPの主体に関する他の情報は、1991年、カリフォルニア州レッド ウッド市のベンジャミン/カミングス出版社発行のGrady Booch著“Object Orie nted Design with Application”を参照することによって得られる。 コンピュータ・プログラムを実行することに関する全処理には、オブジェクト ・コードと称される機械で実施可能な形式に、プログラマによって記述されたソ ース・コードを翻訳すること、そのオブジェクト・コードを実行することが含ま れる。翻訳処理は、インタプリタまたはコンパイラによって実行される。インタ プリタの場合、プログラムが実行されるときに翻訳が行われるのに対して、コ ンパイラの場合、プログラムを実行する前に翻訳が行われ、オブジェクト・コー ドとして記憶される。すなわち、通常のコンパイルおよび実行システムでは、翻 訳および実行の2つのフェーズは独立していて、コンパイルが一度だけ行われる 。Smalltalkインタプリタのようなインタプリティブ・システムでは、2つのフ ェーズが順次実行される。そのプログラミング環境の特質が、オブジェクトが実 行されるまで特定のレジスタまたはアドレス空間の指定を行うことができないの で、Smalltalkためのインタプリタが必要とされる。 コンパイラは、3つの部分、すなわち、字句解析部、構文解析部およびコード 生成部から構成される。字句解析部への入力は高レベル言語プログラムを表す一 連の文字である。この字句解析部は、シーケンスを構文解析部への入力である一 連のトークンに分割する。この構文解析部はトークンを命令に分割し、文法規則 のデータベースを使用して各命令が文法的に正しいか否かを決定する。正しくな いならば、エラーメッセージが発生される。正しいならば、命令は、一連の基本 命令に分解され、低レベル言語を発生するためにコード生成部に転送される。コ ード生成部そのものは、3つの部分、すなわち、中間コード生成、コード最適化 およびコード生成に一般に分割される。基本的に、コード生成部は、構文解析部 からの出力を受取り、マシン言語コードを生成する。 ソフトウェアの開発を支援するために、インクリメンタル・コンパイラが開発 され、このコンパイラは、バッチ処理動作において、他のステートメントに対し て後で生成されるコードとは独立に、受取られたときの一つのステートメントま たはステートメント・グループに対してコードを生成する。インクリメンタル・ コンパイルの長所は、必要なデバッグ処理が全プログラムが記述されるまで後回 しされるのではなく、コードが記述ごとに、プログラムの一部分のコードに対し てコンパイルおよびテストすることができることにある。しかしながら、伝統的 なインクリメンタル・コンパイラは、毎回全モジュールを再処理しなければなら ない。 最適化コンパイラは、多くの場合、非最適化コンパイラの場合よりソース・レ ベルでデバッグをすることがもっと困難である非常に最適化されたオブジェクト ・コードを生成する。この問題は、ルーチンは適切な応答をするようにコンパ イルされるけれども、それがその応答を計算する正確な方法がソース・コードで 記述された方法と著しく異なっているという事実にある。最適化コンパイラが行 うことができるいくつかのことは、最終結果に影響を及ぼさないことが知られて いるコードまたは変数を除去すること、不変コードをループの中から外に移動さ せること、共通コードを結合すること、変数がもはや必要としないとき変数に割 当たられたレジスタを再使用すること等を含んでいる。したがって、ソースから オブジェクト・コードへのおよびオブジェクト・コードからソースへのマッピン グは、これらの最適化のために難しいことがある。変数値を検査することは、変 数値が必ずしもルーチン内のいかなるロケーションでも使用可能ではないので、 難しいことがある。最適化されたコードの変数値を修正することは、不可能でな いとしても、特に困難である。特にvolatile(揮発性)であるとして宣言されて いなければ、コンパイラは変数に割当てられた値を“覚えておき”、変数を再読 出しをせずに、後でコード中の“覚えている”値を使用する。したがって、その 値の変化は誤りのあるプログラム結果を生じることがあった。 コンピュータ・プログラムを生成し、テストおよび開発する技術には多くの進 歩があったが、公知のソフトウェア・ツールは、しばしば洞察力のある直感を必 要とし、今だにプログラマに相当な負担を負わせる。さらに、伝統的なバッチ指 向プログラミング・システムは、プログラミングの創造的な活動に対して非常に 破壊的である、非常に長い編集−コンパイルーテストのサイクルを提供している 。 発明の要約 したがって、本発明の目的は、より良いプログラマに焦点および集中を増進し 、これにより、より大きな生産性を得るコンピュータ・プログラムの生成のため の人間指向の対話型でかつダイナミック処理を提供するとともに、コンピュータ ・プログラムの生成で必要とされる編集ーコンパイルーテストのサイクルを最小 にする自動プログラム生成機構(build mechanism)を提供することにある。 本発明によれば、プログラム生成は、プロジェクトと呼ばれるインクリメン タル・プログラム・モデルの相互作用および3つの主要な機能性によって可能と なる。プログラムは、属性と呼ばれる名前付けられたデータ項目(named dataite nes)のリストからなる構成要素(component)と呼ばれる意味単位(semanticunit) としてモデル化される。伝統的なシステムで行われるファイルのゆるやかなコレ クションとしてプログラムを記憶するよりもむしろ、本発明の人間指向オブジェ クトプログラミング・システム(HOOPS)は、このプロジェクトのプログラムにつ いての全ての情報を記憶する。 本発明の実施にあたっては、コンピュータ・プログラムは、プロジェクト構成 要素および生成可能な構成要素のコレクションとしてモデル化される。それぞれ は、単一のコンパイル可能な言語要素を表し、かつ増加性(incrementality)のレ ベルを規定している。コンピュータ・プログラムのためのモデルを提供する構成 要素(component)は、生成処理中はアクセスするために記憶される。この記憶さ れた構成要素は、順次にアクセスされ、構成要素に関連する従属性は、コンパイ ラを使用してクライアント・リストおよび参照リストを発生させるように計算さ れる。最後に、構成要素は、コンパイラ生成の従属性に加えて構成要素の特性を 使用してコンピュータ・プログラムを生成するようにコンパイルされる。 本発明の好ましい実施例は、C++で記述され、C++、Cおよびアセンブラでプロ グラムを生成するために使用される。これらは現在最も使用されている言語であ る。本発明を使用して生成されるプログラムは、一般にこれらの言語の3つ全て を使用する。したがって、本発明そのものはオブジェクト指向プログラミング言 語で記述されているオブジェクト指向プログラムであるが、本発明は、オブジェ クト指向プログラミング言語でプログラムを生成することに限定されず、手続言 語でプログラムを生成する際にも同様に有用である。さらに、本発明は、C++言 語に限定されず、他のプログラミング言語で実施されることができ、かつ本発明 はこれらの3つの言語への応用に限定されない。すなわち、本発明の教示すると ころにより、もっと一般的なアプリケーションの人間指向オブジェクト・プログ ラミング・システムで使用することができる。 図面の簡単な説明 上述の事項および他の目的、態様および利点は、図面に関して本発明の好まし い実施例の下記の詳細な説明から、よりよく理解されるだろう。 第1図は、本発明が実施される、高分解能グラフィック・ディスプレイ装置お よびマウスのようなカーソル指示装置をサポートすることができる汎用コンピュ ータ・システムを示す図である。 第2図は、コンピュータシステムの主要な要素をより詳細に示す、第1図に示 された汎用コンピュータシステムのブロック図である。 第3図は、プログラムを構成する構成要素のコレクションを概念形式で示すブ ロック図である。 第4図は、本発明の主要な機能性を示すブロック図である。 第5A図〜第5D図は、一緒にまとめて、BuildStateによる編集変化を登録するた めの論理のフローチャートである。 第6図は、本発明による生成機構(build mechanism)の動作の第1ステージの 可能な要素を決定するための論理を示すフローチャートである。 第7図は、本発明による生成機構の動作の第2ステージの処理インターフェー スの論理を示すフローチャートである。 第8図は、本発明による生成機構の動作の第3ステージの処理実行の論理を示 すフローチャートである。 第9図は、本発明によるコンパイラによって呼出されたGetDeclarations機能 の論理を示すフローチャートである。 第10A図および第10B図は、一緒にまとめて、条件付きコンパイル機能の論理を 示すフローチャートである。 本発明の好ましい実施例の詳細な説明 発明の概観 本発明による人間指向オブジェクトプログラミング・システム(HOOPS)では、 構成要素(Component)は、インクリメンタル・コンパイルのための粒度である。 すなわち、構成要素は、クラス(Class)または関数(Function)のような単一のコ ンパイル可能な言語要素を表している。構成要素は、2つの部分、すなわちイン ターフェース(Interface)と呼ばれる外部から認識できる部分(すなわち公開(pu blic)部分)およびインプリメンテーション(Implementation)(非公開(private) 部分)に分割される特性セットからなる。これは、構成要素(Component)が他の 構成要素のインターフェースに従属しているだけのこともあることを意味する。 プロジェクト(Project)の全構成要素はツリー構造に組織され、プロジェクト構 成要素と呼ばれるルート構成要素であるツリーのベースを有する。 3つの主要な機能性は、データベース、コンパイラおよび生成機構である。デ ータベースは、構成要素およびその特性(Property)を、持続的に記憶し、検索す る。特性のソース・コードをコンパイルするとともに、コンパイラは、構成要素 に関連する従属性を計算する責任を負う。生成機構は、生成処理中要素を正確か つ効率的に一定の順序に配列するために、コンパイラ生成従属性に加えて構成要 素の特性を使用する。生成機構は、いつもプログラムに関するグローバルな視野 を有する。これは、プログラムが互いに独立してコンパイルされる、ファイルの セットによって表されている伝統的な方法と対照をなしている。伝統的なプログ ラミング環境に使用されるファイルは、ファイルに含まれる意味ユニットに処理 の特定の固定的順序を負わせている。 本システムは、変化が、インターフェース(Interface)またはインプリメンテ ーション(Inplementation)であったかどうかを含む、構成要素の編集変化の経過 を自動的に追う。これは、ファイルレベルでのみ追跡する従来のシステムと対照 的である。従属性解析は自動的であり、構成要素間の関係に基づいている。この システムは、従属性が存在する事実ばかりでなく、それがいかなる種類の従属性 であるかを記録することをコンパイラが可能にする機構を含んでいる。これによ り、再コンパイルが必要であろとなかろうと従属性が存在する全ての構成要素を 再コンパイルするよりも、このシステムを有効にするコンパイルをどの構成要素 が実際必要とするかを、生成機構がより正確に決定することを可能にしてい る。 従来のコンパイラは、ソフトウェアを生成することを容易にするために、プロ グラミング環境のソフトウェア構造ツールを使用する。例えば、全てのプログラ ムを個々のファイル内に記憶されているモジュールに分割することは、従来のプ ログラム構造では通例である。そして、個々のモジュールは、それぞれ別々に処 理される。Makeコマンドは、コンピュータ・プログラムを構成するモジュールを 管理および保持するために使用される。すなわち、Make機能は、プログラムのモ ジュール間の関係の経過を追い、変化がなされた後モジュールを一貫性があるよ うにするのに必要とされるコマンドのみを発生する。しかしながら、プログラマ が、モジュール間の関係(従属性)を規定するMakefile仕様を生成することが必 要である。Makefile仕様に対する要求は、プログラマが、いつ従属性が発生する かを決定することができなければならないこと、およびプログラマに同期化従属 性を同期化する負担をかけていることを意味している。実際、これは通常、不必 要な従属性の存在および必要な従属性の省略の両方を意味する。不必要な従属性 の存在および必要な従属性の省略の両者は、コンピュータ・プログラムの生成の エラー源であることが多い。 Make機能と対照的に、本発明による生成機構は、プログラマがMakefile仕様の ような仕様を生成しないことで異なっている。この生成機構は、従属性のいかな る予備知識も想定していない。すなわち、実際には、それは、要素の従属性を“ 見いだし”、これらの従属性の経過を追う。これは、生成機構が、予め存在する 従属性情報がない状態からプログラムを生成することを意味する。初期の生成動 作では、全ての構成要素は変更リストに列挙される。変更リスト上の構成要素の コンパイルが試みられるが、もしそのコンパイルが他の構成要素のコンパイルに 従属するならば、第1の構成要素のコンパイルが中断されるかまたは打ち切られ るかのいずれかである。そして第2の構成要素のコンパイルが試みられる。この ようにコンパイルすることができる構成要素が見つけだされるまで続けられる。 次に、コンパイルが中断されたかまたは打切られた構成要素に対して、処理で既 に作成された情報を用いて、生成機構が再度働く。 生成機構は、全てのインターフェース(Interface)が、全てのインプリメン テーション(Inplementation)の前にコンパイルされるように、コンパイルに指令 する。これは、潜在的な相互従属性の数を減少するので、したがって効率を増加 する。この生成機構は、構成要素(Component)の処理を制御するために、有限状 態機械(finite state machine)の形成を用いている。そして、中断されたかまた は打切られた構成要素のコンパイルを最少にするために、正しい指令を確実にす るのに役立てている。 変更(構成要素の編集または構成要素の付加あるいは削除)が行われた後の生 成動作は、変更リストが変更されたこれらの構成要素のみを含むことを除いて、 初期の生成動作と同様であり、再コンパイルを必要とするこれらの構成要素のみ を再コンパイルするために、予め開発されたクライアントおよびソース参照リス トを使用する。本発明によって実施される機能レベルのインクリメンタル・コン パイルは、通常、プログラムのより小さい部分に対して再生成された後にテスト するために、プログラム変更からのターン・アラウンド・タイムを大いに減少す る。 プログラム・モデルは、インターフェースのための内部処理された様式(宣言 (Declaration)特性と呼ばれる)を記憶および再使用するための方法を提供する 。コンパイラは、インターフェース(Interface)の処理された内部様式を記憶す る。そして、他の構成要素をコンパイルする時に使用されることにより効率的に なる。これは、使用されるためのインターフェースが、使用される毎に全てのフ ァイルに含まれて(include)、コンパイラによって内部様式に再処理される伝統 的なシステムとは対照的である。さらに、構成要素および特性のプログラム・モ デルは、特定の構成要素と密接に結合した情報を記憶するのに自然な方法を提供 する。この情報は、プログラマにより直接または他のツールにより間接のいずれ かによって使用することができる。伝統的なシステムでは、このようなデータは 、コンパイルの終了で忘れられるかまたはプログラム・ソースとゆるく結合され るのみかのいずれかである。 エラー処理は、生成機構が、エラーを有する構成要素に従属する構成要素に対 してコンパイルすることを避けることを可能にする。生成機構は、できるだけ多 くのプロジェクトを正確に生成する。この双方の生成は、最初の誤りのあるファ イルで中止するか、または、続行しても、誤りを含んだファイルを繰り返して処 理する伝統的なシステムと対照的である。エラー処理は、エラーである特定の構 成要素を間違って処理されないように、警告メッセージがコンパイラによって発 生することを可能にする。この処理により、プログラムが警告を発生していると きでさえ正確に生成することを可能にする。 ハードウェア・プラットホーム ここで、図面を参照するに、特に第1図を参照とすると、汎用コンピュータ10 が示されている。コンピュータ10は、システム・ユニット12、陰極線管(CRT)ま たは液晶ディスプレイ(LCD)のような高解像度ディスプレイ装置14を有する。デ ィスプレイの種類は、それがグラフィック・ユーザ・インターフェース(GUI)の ウィンドウ・システムのために必要とされる高解像が可能なディスプレイである べきであることを除いて重要ではない。コンピュータへのユーザ入力は、キーボ ード16およびマウス18のようなカーソル指示装置による。マウス18はキーボード 16に接続される。このキーボード16は、次にシステム・ユニット12に接続される 。マウス18は、その代りに、システム・ユニット12の専用または直列ポートに接 続されてもよい。第1図に示されたタイプの汎用コンピュータの例は、アップル 社のマッキントッシュ(アップルコンピュータの登録商標)およびIBM社のPS/V である。他の例として、IBM社のRISCシステム/6000およびサン・マイクロ・シス テムズ社のコンピュータのような種々のワークステーションが含まれる。 第2図は、第1図に示された汎用コンピュータの主要な構成要素を詳細に示し ている。システム・ユニット12は、中央処理装置(CPU)21、ランダム・アクセス ・メモリ(RAM)22およびバス24に接続される読出し専用メモリ(ROM)23を含んでい る。CPU21は、アップル社のマッキントッシュ(登録商標)コンピュータに一般 に使用されているモトローラ社の68030および68040マイクロプロセッサまたはIB M社のPS/Vコンピュータに一般に使用されているインテル社の80386および80486 マイクロプロセッサのようないくつかの商用マイクロプロセッサのいずれでもよ い。ワークステーションに一般に使用されるRISC(reduced instruction set computers)コンピュータのような他のマイクロプロセッサもま た、使用することができる。ROM24は、CPU21のために基本入出力システム(BIOS) を含む基本マイクロコードを記憶する。コンピュータ・システム10のためのオペ レーティング・システム(OS)はROM24に記憶されてもよいし、またはそのOSは初 期プログラムロード(IPL)の一部としてRAM22に記憶されてもよい。RAM22はまた 、アプリケーション・プログラムの一部およびプログラムの実行で発生される一 時的データを記憶するために使用される。バス24は、アップル社のNuBus(登録 商標)、IBM社のマイクロチャネル(登録商標)またはISA(industrial standard adapter)あるいはEISA(extended industrial standard adapter)バスのような 工業規格の一つでもよい。 バス24には、ユーザ・インターフェース・アダプタ25およびI/Oアダプタ26を 含む種々の入出力(I/O)アダプタもまた、接続されている。キーボード16はユー ザ・インターフェース・アダプタ25に接続され、I/Oアダプタ26は、フロッピー ディスク駆動装置27およびハードディスク駆動装置28に接続する。フロッピーデ ィスク駆動装置27は、取外し可能な媒体へのデータおよびプログラムの読出しお よび書込みを可能にするのに対し、ハードディスク駆動装置28は、RAM22にペー ジインおよびページアウトされるデータおよびプログラムを一般に記憶する。デ ィスプレイ装置14は、ディスプレイ・アダプタ29を介してバス24に接続されてい る。通信アダプタ30はネットワークへのインターフェースを提供する。集積回路 (IC)チップの形の他のサポート回路(図示せず)は、バス24および/またはCPU2 1に接続されている。これらは、例えば、バス24上のトラフィックを制御するバ ス・マスタ・チップを含んでいる。あるコンピュータにおいては、バス24は2つ のバス、すなわちデータ・バスおよびディスプレイ・バスであり、ディスプレイ ・バスは、グラフィック・ユーザ・インターフェースで望ましい高速ディスプレ イ動作を可能にしている。 定義 プログラム 本発明の説明で使用されるように、HOOPSプログラムは、「プロジェクト (Project)」と呼ばれる一つの生成不可能な構成要素(non-buidable component) および“生成可能な構成要素(buildable component)”の集合(Collection)から なる。それはまた、生成不可能な構成要素(non-buidablecomponent)を格納する ことが可能であるが、この説明では、形容詞がない構成要素について言及されて いる時はいつでも、意味しているものは“生成可能な構成要素(buildable comp onent)”である。生成不可能な構成要素(non-buidable component)は生成動作中 コンパイルされない。 構成要素(Component) 構成要素(Component)は独特な識別を有し、名前を付けられる。異なる構成要 素は、IDと呼ばれるいくらかの様式の独特な識別子(Identifer)によって識別さ れる。いかなる構成要素にも属しないNullIDと呼ばれる、他とは異なるIDがある 。構成要素が形成されると、このIDが割当てられ、構成要素の存在中決して変更 されない。構成要素が削除されると、その構成要素のIDは決して再使用されない 。実際には、IDは通常数字である。 構成要素はまた、余白を含まないテキスト・ストリング(文字列)からなる名 前を有する。異なる構成要素が異なる名前を有する必要はない。その名前が、あ る所与のテキスト・ストリングにマッチする全ての構成要素のリスト(多分、空 )を得ることは可能である。構成要素の名前は、構成要素の存在中何回変更して よい。 各生成可能な構成要素は特定のコンピュータ言語に関連している。実際には、 コンピュータ言語は、通常テキスト・ストリング(文字列)によって識別される 。各コンピュータ言語は、その言語の全ての構成要素をコンパイルするときに使 用する関連したコンパイラを有する。実際には、所与のコンピュータ言語が一つ 以上のコンパイラと関連することは可能である。この場合、構成要素は、言語と 特定のコンパイラを識別するための何かの両者を記録しなければならない。 特定の言語は、種類(Kind)に対してそれに関連した特定の構成要素の種類(Kin d)のセットおよび特定の特性インプリメンテーションのセットを有する。し たがって、ある言語の特定意味構成要素は、必要に応じて異なる方法で構成され る。 構成要素は「BuildState(生成状態)」を有する。BuildStateは、リスト、Ne verCompile(コンパイル不可)、Compiled(コンパイル済み)、NeedToCompile (要コンパイル)、Uncertain(不確定)、BeingCompiled(コンパイル中)、Co mpileError(コンパイル・エラー)、UncertainError(不確定エラー)からの値 である。実際には、これらの値は通常数値である。各構成要素は、「InterfaceB uildState(インターフェース生成状態)」および「ImplementationBuildState (インプリメンテーション生成状態)」と呼ばれる一対のBuildStateを有する。 あらゆる構成要素は、それが生成可能(buildable)であれ生成不可能(non-builda ble)あれ、これらのBuildStateの両方を有する。生成不可能構成要素に対しては 、これらのBuildStateは、両者共NeverCompile(コンパイル不可)である。 BuildStateはアクセスされても、および変更されてもよい。構成要素のBuildS tateを同一値に再度設定することは可能であり、いかなる影響も引き起こさない 。BuildStateを変更することは、同一または異なる構成要素の他の特性のBuildS tateを変更するかまたは例えば、変更リストもしくはエラー・リストのようなあ るリストからの参照を付加あるいは削除するような、明確な副作用を有するかも しれない。 構成要素は、意味言語構成要素を表すために使用される。これが行われる方法 は、モデル化されている特定のコンピュータ言語に依存する。例えば、C++では 、構成要素によって表される言語構成要素の部分リストは、グローバル・データ (global data)、グローバル関数(global function)、クラス(class)、データメ ンバー(data member)、メンバー関数(member function)、型定義(typedef)、列 挙(enum)、列挙子(enumerator)、マクロ(macro)、ユニオン(union)および構造体 (struct)を含んでいる。一般に、各意味構成要素は関連する異なる種類を有する 。 特性(Property) 構成要素(Component)は名前を付けられた「特性(Property)」の集合からなる 。特性は、構成要素に関連されたいくつかのデータに対応する。実際には、特性 名は、名前を識別する番号(このような番号は、ときにはトークンと呼ばれる) によって通常、内部的に表される。いかなる特性にも属しない「NullProperty( ヌル特性)」と呼ばれる他とは異なる特性名がある。 所定の特性に関連するデータは、異なる構成要素(Component)に対して異なっ ている。一つの構成要素に対するある特性のためのデータを変更することは、他 の構成要素の同一の特性のためのデータを変更することを意味しない。しかしな がら、構成要素の一つの特性の変更により、同一または他の構成要素の他の特性 の変更を引き起こすことは可能である。 IDと特性名からなる一対は、リファレンス(Reference)と呼ばれる。リファレ ンスは、特定の特性データをユニークに識別する。しばしば、リファレンスは、 それが構成要素および/またはそれが参照する特性であるかのように漠然と使用 される。実際には、リファレンスは、プログラム生成に直接使用されない、デー タのどのバージョンが参照されているかおよびデータのどの細区分(subsection) が参照されているかを識別する他の情報を通常含んでいる。 全ての構成要素は、特性の「名前(Name)」および「コンテナ(Container)」を 有しなければならない。名前特性は構成要素名を記憶する。コンテナ特性は特性 名がNullProperty(ヌル特性)である単一のリファレンスを含んでいる。ある構 成要素から開始して、そのContainer ID(コンテナID)によって参照される構成 要素とを連続して置換えて行くと、常に最後にはプロジェクト構成要素(Project component)となる。プロジェクトのコンテナIDはNullID(ヌルID)である。し たがって、全ての構成要素は、プロジェクトにあるものとして記述されている。 生成特性(また構成要素生成リスト(eomponent built list)と呼ばれる)は、 構成要素が生成された順序の最後の生成で、正しくコンパイルされた特性リスト を記録する。同一の特性は、多くても一度リスト上に出現するだけである。それ は、テストおよびデバッグのために使用される。 プロジェクト構成要素(Project Component) プロジェクトは、さらに特性「ChangeList(変更リスト)」および「ErrorLis t(エラー・リスト)」を有する構成要素である。ChangeList(変更リスト)特 性はリファレンスのリストである。このリファレンスは、構成要素および最後の 生成以来変更された特性を記述する。実際には、ChangeList(変更リスト)は、 プログラムを生成する際の効率のために、いくらかの方法で分類された一つ以上 のリストによって表されてもよい。ErrorList(エラー・リスト)特性もまた、 リファレンスのリストである。これらのリファレンスは、最後のプログラム生成 中エラーを有するものとしてリストされた構成要素を記述している。リファレン スは、全てその特性としてエラーを有する。各リファレンスと関連しているのは 数値キーである。このキーは、特定のメッセージおよび構成要素の特定特性の特 定サブレンジを位置付けるために、特定のエラー特性とともに使用される。 生成可能な構成要素(Buildable Component) 生成可能な構成要素はまた、特性である「宣言(Declaration)」、「オブジェ クトコード(Objectcode)」、「クライアント(Clients)」、「ソースリファレン ス(SourceReferences)」、「エラー(Errors)」を有しなければならないし、特性 「インターフェース(Interface)」、「インプリメンテーション(Implementation )」および「メンバー(Members)」を有してもよい。 宣言特性は、コンパイラのためのデータキャッシュを表す。これは、構成要素 が、例えばコンパイルされてしまう前のように、空でもよい。実際には、記憶さ れた表現は、コンパイラの内部表現とは異なってもよいが、それはコンパイラの シンボル・テーブルのエントリとして考えられることができる。 オブジェクト・コード特性は、構成要素のための実行可能なコードを表す。こ れは、構成要素が、例えばコンパイルされてしまう前のように、または、すかな るオブジェクト・コードもこの構成要素と関連していないため、空でもよい。実 際には、それは、通常、ほかの所に記憶される実際のコードを指示するための手 段を提供している。 クライアントおよびソース・リファレンス特性は、リファレンスおよび「従属 性(dependency)」からなるペアの集合である。従属性は変更リストである。変更 は、特定の有限ストリング・リストから選択されたテキスト・ストリングとして 表することができる。インターフェース特性における使用とは反対に、インプリ メンテーション特性のみに対する構成要素に対して、リファレンスを区別するた めに使用される「パブリック(Public)」と呼ばれる特定の変更がある。リストの n番目の変更があるならば、n番目のビットが“1”であり、なければ“0”で あるビット・ベクトルとして、従属性は表すことができる。 「エラー」特性は複数の三つ組みのリストからなる。各三つ組みは「キー」、 特性名およびメッセージからなる。キーは数値識別子である。所定のキーは、特 定のエラー特性に一度だけ現れることができる。特性名は、通常インターフェー スまたはインプリメンテーションである。メッセージは、テキストおよび/また はグラフィックの一部分である。 インターフェースおよびインプリメンテーション特性は、構成要素のソース・ テキストを表す特性である。ソース・テキストは、テキストよりもむしろトーク ンとして記憶され、もし必要とされるならば、異なる様式でアクセスすることが できる。これらの特性によって表されるテキストは、プログラミング環境におい てそれをマニュアルで編集することによって変更することができる。構成された フィールドとして記憶されているインターフェース・データが可能であり、それ からソース・テキストが必要に応じて再構成することができる。 メンバー特性は、リファレンスの集合で(多分、空)、プロジェクト中の各構 成要素に対する特性であり、そのコンテナとしてこの構成要素を有している。 属性(Attribute) 構成要素は多数の「属性(attribute)」を有する。属性は「真」または「偽」 のいずれかである。実際には、属性は、数値“1”および“0”によって表され る値、「真」および「偽」で、メモリの単一ビットによって通常表されている。 全ての構成要素は属性「IsBuildable」を有する。もしこの属性が「真」ならば 、この構成要素は生成可能(buildable)であり、さもなければ、それは生成不 可能(non-buildable)である。構成要素は、常に生成不可能かまたは一時的生成 不可能(ある一時的条件の動作のために)であってもよい。 生成可能な構成要素はまた、属性「IsInline」を有する。この属性が「真」で あるとき、構成要素のインプリメンテーションは公開(public)であり、これは、 他の構成要素がインプリメンテーションの変化に従属され得ることを意味する。 もしそれが偽であるならば、インプリメンテーションの変更により、他の構成要 素は決して変更しない。 生成可能な構成要素はまた、属性「IsSynthetic」を有する。この属性は、コ ンパイラによって生成処理中、形成される構成要素に対して「真」である。それ は、プログラマによってマニュアルで作成される構成要素に対して「偽」である 。合成構成要素(synthetie component)は、コンパイラがデフォルト言語要素に 対応する構成要素を形成することを可能にするように設けられている。このデフ ォルト言語要素は、必要ではあるが、プログラマにより明示的に作成する必要の ないものである。実際には、例えば合成された構成要素がマニュアルで編集され るならば、属性IsSyntheticを真から偽へ変更することが可能であるかもしれな いが、偽から真への逆の変更は決して可能ではない。合成構成要素はしばしばイ ンターフェースまたはインプリメンテーション特性を有しないが、いかなる場合 でも、常にそのInterface BuildStateおよびImplementation Bui1dStateはコン パイル済み(Compiled)である。 種類(Kinds) 各構成要素は種類(kind)を有する。種類は、例えば、同一特性または同一言語 特有の動作を共有するグループに、構成要素を分類するために使用されるテキス ト・ストリングである。大部分の種類は特定のコンピュータ言語に特有であり、 意味的に特定言語要素を指定するように使用される。 しかしながら、システムによって規定されるいつくかの種類がある。これらは 、プロジェクト(Project)、ライブラリ(Library)およびコンテナ(Container)の 種類(kind)である。これらの種類は生成不可能な構成要素に適用されるのみであ る。プロジェクト種類はプロジェクト構成要素の種類である。ライブラリ種類は 、共有ライブラリまたはアプリケーションのようなオブジェクトコードの単一の 外部ブロックの中にリンクされるべきである構成要素の集合に適用される。コン テナ種類は、編成上の目的のために他の構成要素をグループ化するために適用さ れる。実際には、種類は、通常内部的には数値で表される。 プログラム表現 第3図は、構成要素セット31から構成されるようなプログラムの概念的表現を 提供する。各構成要素は、2つの部分、すなわち、インターフェース(Interface )311と呼ばれる外部から認識できる部分(すなわちpublic:公開)およびインプ リメンテーション(Implementation)(private part:非公開部分)312に分割さ れる特性セットからなる。第3図に示されるように、構成要素は、他の構成要素 のインターフェースにのみ従属する。プロジェクトにおける全構成要素は、ツリ ー構造に編成されており、プロジェクト構成要素と呼ばれるルート構成要素32で あるツリーのベースを有する。当業者によって理解されるように、構成要素は、 必ずしも自分自身を含むエンティティある必要はなく、実コードのための記憶位 置を指示するポインタを含んでいてもよい。それにもかかわらず、このツリー構 造表現はプログラムの編成を表現するのに有用であり、したがって、同様なツリ ー構造表現は、後述される複数のユーザ・スクリーンの一つで使用される。 第4図は、本発明の3つの主要な機能性を示すブロック図である。これらは、 データベース41、コンパイラ42および生成機構(build mechanism)43である。デ ータベース41は、ここで、プロジェクト構成要素411、および生成されるべきで あるプログラムをモデル化する生成可能な構成要素412の集合として示される構 成要素のセットからなる。コンパイラ42は、データベース41中の構成要素に関連 する従属性を計算する。生成機構43は、プログラムを生成するために、コンパイ ラが生成した従属性と一緒に構成要素の特性を使用する。 プログラマは、エディタ44によってプログラムを変更する。エディタは、構成 要素を形成および削除し、通常は構成要素をカット、コピー、ペーストおよび移 動することができなければならない。メニューからの選択のような他のより構造 化された方法が可能であるけれども、エディタは、テキストの直接修正を可能に することによってインターフェース(Interface)特性およびインプリメンテーシ ョン(Implementation)特性のデータを変更することができなければならない。実 際には、エディタ44はしばしば、インターフェース特性またはインプリメンテー ション特性の各タイプと同じ数のエディタか、あるいはこれらの特性のデータの サブフィールドに対するのと同じ数のエディタからなる可能性もある。 編集変更を登録するための方法 インクリメンタル生成44に関連するエディタによって実行される、機能の論理 を表現しているフローチャートを示す第5A図〜第5D図を参照する。生成可能な非 合成構成要素(non-synthetic component)に関しては、BuildStates(生成状態) は、生成処理以外では、値Compiled(コンパイル済み)およびNeedToCompile( コンパイルを要する)に制限される。もしInterface(インターフェース)特性 が存在しないならば、InterfaceBuildState(インターフェース生成状態)はCom piled(コンパイル済み)である。Implementation(インプリメンテーション) 特性が存在しないならば、ImplementationBuildState(インプリメンテーション 生成状態)はCompiled(コンパイル済み)である。第5A図では、種々の編集状態 変更が示される。ラベル500で、システムが、CreateComponent(構成要素の形成 )、RenameComponent(構成要素のリネーム)、PasteComponent(構成要素のペ ースト)またはEditInterface(インターフェースの編集)のコマンドを識別す ると き、制御は、インターフェース変更を処理するために、機能ブロック510に渡さ れる。変更のための詳細な論理は第5B図に詳述されている。 第5B図では、インターフェース生成状態がNeedToCompile(コンパイルを要す る)であるかどうかを決定するためにテストが実行される判断ブロック511で処 理が開始する。そうであるならば、ラベル514を介して制御が渡され、編集を継 続する。これらの動作は編集中に生じ、再生成中には生じない。次の動作は多分 他の編集動作である。そうでないならば、機能ブロック512で、インターフェー ス生成状態がNeedToCompile(コンパイルを要する)とセットされ、したがって 、インターフェース変更リストが更新される。それから、機能ブロック513で、 インプリメンテーション変更処理およびコンテナ変更処理が終了される。インプ リメンテーション変更動作は第5C図に示され、コンテナ変更動作は第5D図に詳述 される。 第5C図は、変更されたインプリメンテーションと関連した詳細な処理を詳述し ている。判断ブロック571で、インプリメンテーション生成状態が既にNeedToCom pile(コンパイルを要する)とセットされているかどうかを決定するためにテス トが実行される。もしそうであるならば、ラベル572を介して制御が渡され、編 集を継続する。もしそうでないならば、機能ブロック573で、インプリメンテー ション生成状態がNeedToCompile(コンパイルを要する)とセットされて、イン プリメンテーション変更リストが更新される。それから、制御はラベル574を介 して元に渡される。 第5D図は、コンテナ変更動作と関連した詳細な論理を詳述する。変数が生成可 能であるかどうかを決定するために、テストが判断ブロック542で実行される。 そうならば、機能ブロック543で、変更されたインターフェースが、第5B図の議 論で上記に詳述したような構成要素のコンテナによって、呼出される。それから 、制御はラベル544を介して戻される。 Edit Implementation(編集インプリメンテーション)コマンドが第5A図のラ ベル560で検出されるならば、処理は機能ブロック570で詳述され、第5C図の議論 で上記に詳述されたような変更された動作インプリメンテーションを実行する。 Delete Component(削除構成要素)コマンドが第5A図の530で検出されるなら ば、構成要素Aのためのコンテナ変更処理は機能ブロック540で示され、かつ第5 D図の議論で詳述されたように開始される。それから、コンテナAは削除され、 制御はラベル550を介して戻される。 Move Component(移動構成要素)コマンドが第5A図の580で検出されるならば 、構成要素Aのためのコンテナ変更処理は機能ブロック590で示され、かつ第5D 図で詳述されたように開始される。それから、構成要素のコンテナは新しいコン テナに等しくセットされ、構成要素Aのためのインターフェース変更処理は、第 5B図で詳述されるように開始される。最後に、処理はラベル595を介して戻され る。 生成構成要素を決定するための方法 プログラム生成中、プロジェクト構成要素(Project Component)はCompileList (コンパイル・リスト)と呼ばれるリファレンスの非公開リスト(private list) を保持する。InterfaceCompileList(インターフェース・コンパイル・リスト) およびImplementationCompileList(インプリメンテーション・コンパイル・リ スト)がある。プロジェクトはまた、InternalErrorList(内部エラー・リスト )と呼ばれるリファレンスの専用リストを保持する。実際には、これらのリスト のそれぞれは効率の理由で1つ以上のリストで物理的に表されてもよい。 この処理は第6図に示される。機能ブロック601で示されるようなプロジェク トのChangeList(変更リスト)の各リファレンスに関しては、リファレンスはリ ストの最前部から選択される。リスト上にリファレンスがもうこれ以上はないな らば、処理はブロック602で示されるように終了される。リファレンスがブロッ ク603で決定されるようなInterface(インターフェース)であるならば、リファ レンスのコピーはInterfaceCompileList(インターフェース・コンパイル・リス ト)の中に置かれ、機能AddClient(クライアントの付加)は、処理がブロック6 01で継続される前に機能ブロック604のリファレンスに呼出される。その特性名 がInterface(インターフェース)でないならば、その特性名はブロック605で 示されているようにImplementation(インプリメンテーション)であり、そのIs Inline属性が「真」かどうかを決定するために判断ブロック606でテストが行わ れる。もしそうであるならば、リファレンスのコピーはInterfaceCompileList( インターフェース・コンパイル・リスト)に置かれ、機能AddClientクライアン トの付加)は、処理がブロック601で継続される前に機能ブロック607のリファレ ンス上に呼出される。さもなければ、その特性名はImplementation(インプリメ ンテーション)でなければならないし、かつそのIsInline属性は「偽」でなけれ ばならないし、リファレンスの複写は、処理がブロック601で継続される前に機 能ブロック608のImplementationCompileList(インプリメンテーション・コンパ イル・リスト)上に置かれる。 機能CreateCompileList(コンパイルリストの形成)のための擬似コードは次 のようになる。 パラメータ・リファレンスのクライアントの各リファレンスに対して、機能Ad dClient(クライアントの付加)が、リファレンスを正確に調べ、そのBuildStat e(生成状態)がCompiled(コンパイル済み)であるならば、リファレンスのBui ldState(生成状態)をUncertain(不確定)とセットし、リファレンスの複写を 適当なCompileList(コンパイル・リスト)に付加し、リファレンス上にAddClie nt(クライアントの付加)を呼出す。この処理は、ChangeList(変更リスト)の Client Closure(クライアント終了)の形成と呼ばれる。このClient Closure( クライアント終了)は生成の結果として再コンパイルされる必要があるかもしれ ない構成要素のサブセットを表す。実際には、生成経過のようにコンパイラによ って発生された従属性および変更は、Client Closure(クライアント終了)にお いて出来る限り多くの構成要素をコンパイルしなければならないことを回避する ために使用される。 下記は、AddClient(クライアントの付加)機能のための擬似コードである。 インターフェースを処理するための方法 これはBuild(生成)処理の第2段階である。InterfaceCompileList(インタ ーフェース・コンパイル・リスト)に関する項目に対する可能なBuildStates( 生成状態)は、Compiled(コンパイル済み)、BeingCompiled(コンパイル中) 、NeedToCompile(コンパイルを要する)、Uncertain(不確定)、CompileError (コンパイルエラー)またはUncertainError(不確定エラー)である。Interfac eCompileList(インターフェース・コンパイル・リスト)は、それが第7図のフ ローチャートに示されるように、空になるまで処理される。この処理はブロック 701から入り、ここでリファレンスがInterfaceCompileList(インターフェース ・コンパイル・リスト)の最前列から選択される。リストにリファレンスがこれ 以上存在しないならば、処理はブロック702で終了する。リファレンスに関連し た構成要素(Component)のInterface(インターフェース)のBuildState(生成状 態)が、ブロック703で示されるように、Compiled(コンパイル済み)、Compile Error(コンパイル・エラー)またはUncertainError(不確定エラー)であるな らば、リファレンスはリストの最前列から取除かれ、処理はブロック701に継続 する。リファレンスに関連された構成要素のInterface(インターフェース)のB uildState(生成状態)が、ブロック704で示されるように、BeingCompiled(コ ンパイル中)またはNeedToCompile(コンパイルを要する)であるならば、構成 要素のBuildState(生成状態)は機能ブロック705でBeingCompiled(コンパイル 中)とセットされる。したがって、コンパイル機能(コンパイラ42を呼出す)は 構成要素のInterface(インターフェース)に対して呼出される。この機能は、A bort(打切り)、Done(実行)およびError(エラー)の一つの値を返す。ブロ ック706において返された値がAbort(打切り)であるならば、処理はブロック70 1で継続される。ブロック707において返された値がDone(実行)であるならば、 構成要素のInterface BuildState(インターフェース生成状態)はCompiled(コ ンパイル済み)とセットされ、かつリファレンスは、処理がブロック701で継続 される前に、ブロック708でリストの最前列から取除かれる。ブロック709におい て返された値がError(エラー)であるならば、構成要素のInterface BuildStat e(インターフェース生成状態)は CompileError(コンパイル・エラー)とセットされ、このリファレンスはリスト の前部から取除かれる。機能PropagateError(エラー伝播)は、処理がブロック 701で継続される前に機能ブロック710で構成要素に呼出される。リファレンスに 関連する構成要素のInterface BuildState(インターフェース生成状態)が、ブ ロック711で決定されるように、Uncertain(不確定)であるならば、構成要素の BuildState(生成状態)は機能ブロック712でBeingCompiled(コンパイル中)に セットされる。したがって、ConditionallyCompile(条件付きコンパイル)機能 (コンパイラ42を呼出すか、呼出さないか)は構成要素のInterface(インター フェース)に対して呼出される。この機能はまた、Abort(打切り)、Done(実 行)およびError(エラー)の一つの値を返す。返された値がAbort(打切り)で あるならば、処理はステップ1で継続される。返された値がブロック713でDone (実行)であるならば、リファレンスは機能ブロック708でリストの最前列から 取除かれ、処理は701に継続される。返された値がブロック714でError(エラー )であるならば、リファレンスがリストから取除かれ、機能PropagateError(エ ラー伝播)は、処理がブロック701に継続される前に、機能ブロック715で構成要 素に呼出される。 ProcessInterface(インターフェースの処理)機能ための擬似コードは、次の ようになる。 機能PropagateError(エラー伝播)は、プロジェクトのInternalErrorList( 内部エラー・リスト)に構成要素に対応するリファレンスを加え、構成要素のCl ient(クライアント)リストの全てのリファレンスに対して下記のことを実行す る。すなわち、リファレンスのBuildState(生成状態)がCompileError(コンパ イルエラー)またはUncertainError(不確定エラー)であるならば、処理は次の リファレンスに対して続ける。リファレンスのBuildState(生成状態)がNeedTo Compile(コンパイルを要する)であるならば、処理はそのBuildState(生成状 態)をCompileError(コンパイル・エラー)とセットし、リファレンスにIntern alErrorList(内部エラー・リスト)を加え、次のリファレンスに対して続ける 前にリファレンスに対してPropagateError(エラー伝播)を呼出す。リファレン スのBuildState(生成状態)がUncertain(不確定)であるならば、処理はそのB uildState(生成状態)をUncertainErrors(不確定エラー)とセットし、リファ レンスにInternalErrorList(内部エラーリスト)を加え、次のリファレンスに 対して続ける前にリファレンスに対してPropagateError(エラー伝搬)を呼出す 。 機能PropagateError(エラー伝播)の擬似コードは次のとおりである。 インプリメンテーションを処理するための方法 これはBuild(生成)処理の第3段階である。ImplementationCompileList(イ ンプリメンテーション・コンパイル・リスト)の各リファレンスは、第8図のフ ローチャートに示されるように処理される。この処理はブロック801から入り、 リファレンスがImplementationCompileList(インプリメンテーション・コンパ イル・リスト)の最前列から選択される。リストにリファレンスがこれ以上ない ならば、処理はブロック802で終了する。リファレンスのBuildState(生成状態 )が、ブロック803で決定されたようにUncertain(不確定)であるならば、Buil dState(生成状態)は、処理がブロック801に継続される前に、機能ブロック804 でCompiled(コンパイル済み)とセットされる。リファレンスのBuildState(生 成状態)が、ブロック805で決定されたようにNeedToCompile(コンパイルを要す る)ならば、構成要素は機能ブロック806でコンパイルされる。コンパイラ42か ら返される値は、Done(実行)およびErrors(エラー)である。返された値がブ ロック807でDone(実行)であるならば、リファレンスのBuildState(生成状態 )は、処理がブロック801に継続される前に、機能ブロック804でCompiled(コン パイル済み)とセットされる。返された値がブロック808でError(エラー)であ るならば、リファレンスのBuildState(生成状態)はCompileError(コンパイル ・エラー)とセットされ、機能PropagateError(エラー伝播)は、処理がブロッ ク801に継続される前に、機能ブロック809で構成要素に呼出される。リファレン スのBuildState(生成状態)がCompileError(コンパイルエラー)またはUncert ainError(不確定エラー)であるならば、何も実行されない。Implementation( インプリメンテーション)の処理はこの段階では順序に対して独立であることに 留意されたい。これは、従属性がInterface(インターフェース)またはImpleme ntation(インプリメンテーション)に対してのみあり得、そのIsInline属性は 真であり、これらは処理が完了しているからである。 ProcessImplementation(インプリメンテーションの処理)のための擬似コー ドは次のとおりである。 生成処理をサポートするコンパイラ コンパイラ42は、Compile(コンパイル)機能を介して呼出され、これらの2 つは同義語として使用されてもよい。コンパイラ42は、ソース・テキストを処理 し、可能な外部構成要素の名前を識別する。コンパイラ42は、次に、全ての構成 要素に対するリファレンスのリストを得る。コンパイラは、構成要素の種類のよ うな言語特有の知識を使用して、リストからリファレンスを除去する。それから 、コンパイラは、テキストで識別された各外部構成要素のために、GetDeclarati on(宣言の取得)と呼ばれる機能を呼出す。Compile(コンパイル)機能は、コ ンパイラ42を呼出す前に、構成要素に関する存在する全てのエラーをクリアする 。これは、エラー特性から全てのエラーメッセージをクリアし、プロジェクトの ErrorList特性から全てのリファレンスも取除く。 コンパイラは最初に、第9図のフローチャートによって示される GetDeclaration(宣言の取得)機能を呼出す。GetDeclaration(宣言の取得)機 能は、Abort打切り)、Done(実行)、Circulardependency(循環従属性)また はError(エラー)の一つの値を返し、さらに、Declaration(宣言)のデータを 返すことができる。この処理はブロック901から入り、各リファレンスがそのBui ldState(生成状態)に対して調べられる。ブロック902で示されるように、処理 に対するリファレンスがもうこれ以上はないならば、処理は終了し、リターンが 行われる。構成要素のBuildState(生成状態)がCompiled(コンパイル済み)で あるならば、この機能は機能ブロック904でDone(実行)を返し、処理がブロッ ク901に継続される前に、記憶されたDeclaration(宣言)データもまた、返され る。構成要素のBuildState(生成状態)がブロック905で示されるように、NeedT oCompile(コンパイルを要する)またはUncertain(不確定)であるならば、構 成要素に対応するリファレンスは、機能、ブロック906でInterfaceCompileList (インターフェース・コンパイル・リスト)の最前列に加えられ、この機能は、 処理がブロック901に継続される前に、機能ブロック907でAbort(打切り)を返 す。Declaration(宣言)データはこの場合、返されない。構成要素のBuildStat e(生成状態)がブロック908で示されるようにBeingCompiled(コンパイル中) であるならば、この機能は、処理がブロック901に継続される前に、機能ブロッ ク909でCirculardependency(循環従属性)を返す。Declaration(宣言)データ は、この場合には返されない。構成要素のBuildState(生成状態)が、ブロック 910で示されるように、CompileError(コンパイル・エラー)またはUncertain( 不確定エラー)であるならば、この機能は、処理がブロック901に継続される前 に、機能ブロック911でError(エラー)を返す。また、Declaration宣言)デー タは返されない。 GetDeclaration(宣言の取得)機能のための擬似コードは、次のようになる。 GetDeclaration(宣言の取得)を呼出した後、コンパイラは次のように続ける 。返された値がAbort(打切り)であったならば、コンパイラは処理を終了して 、Abort(打切り)値を返さなければならない。別の実装方法としては、コンパ イルをコンパイラは中断し返された構成要素をコンパイルした後、再開または放 棄することである。これは、コンパイラがリエントラントである必要があるが、 前述のような手順に対するいかなる本質的な変更も別に必要としない。返された 値がCompiled(コンパイル済み)であったならば、コンパイラは処理を継続する ことができる。Declaration(宣言)が使用されているならば、これはSourceRef erence(ソース・リファレンス)従属性を構成し、コンパイラは従属性およびそ の性質の両方について常に追跡しているべきである。返された値がCirculardepe ndency(循環従属性)またはError(エラー)であったならば、コンパイラは処 理を終了し、構成要素に関するSetError(エラーのセット)機能を呼出し、値Er ror(エラー)に返さなければならない。コンパイラは、終了前にでき るだけ多くのエラーを見つけだすために、処理を任意に継続してもよい。 GetDeclaration(宣言の取得)に対する呼出しがCompiled(コンパイル済み) を返すならば、コンパイラは、従来と同様ソース・テキストを処理し続ける。こ の処理でエラーにも出会うと、コンパイラは構成要素に対するSetError(エラー のセット)を呼出し、値Error(エラー)を返す。エラーに出会わないなら、コ ンパイラは値Done(実行)を返す。コンパイラがインターフェースを処理したな らば、それはDeclaration(宣言)特性の新しい値を記憶する。 エラーを処理する方法 コンパイラが、Interface(インターフェース)またはImplementation(イン プリメンテーション)をコンパイルするために呼出される前に、全ての存在する Errors(エラー)はクリアされる。これは、全てのエラー・メッセージを更新し ていることを保証する。Interface(インターフェース)とImplementation(イ ンプリメンテーション)間の組込み従属性およびエラーが伝播されるという事実 のために、同一の生成においてInterface(インターフェース)およびImplement ation(インプリメンテーション)の両者のコンパイラ・エラーを得ることは決 してできない。 コンパイラがエラーに出会うとき、コンパイラは、エラーの位置およびエラー を記述するメッセージを含むエラーについての情報を、誤りのある構成要素に返 して伝える機能であるSetError(エラーのセット)を呼出す。この情報は、構成 要素のErrors(エラー)特性および適切なソース特性(Interface(インターフ ェース)またはImplementation(インプリメンテーション))に記憶される。ま た、リファレンスは、Project(プロジェクト)によって保有されたグローバル ・エラー・リストに記憶され、全てのエラーに対する手近なアクセスを可能にし ている。 エラーが全ての従属する構成要素に伝播するため、構成要素は後でコンパイル されることはない。これは、これらのコンパイルが失敗することが分っているか らである。さらに、生成はエラーに出会った後も継続され、それ自身明白にエラ ーがない構成要素またはエラーを有する構成要素に従属していない構成要素 を、できるだけ多く正確に生成する。 SetError(エラーのセット)機能は、コンパイラ42によって渡されたエラー・ メッセージを処理し、特性(Interface(インターフェース)またはImplementat ion(インプリメンテーション))に対応する構成要素のエラー特性中のエント リを形成する。それはまた、エラーに対応するプロジェクトのErrorList特性の エントリを形成する。この方法で形成された2つのエントリは、同一のキーを共 有をし、それらは「リンク」されている。この機能はまた、その後のユーザ編集 の間、同一文字の範囲に添付されたままである“粘着性のあるマーカ”を使用し て、プログラム・ソースのエラーの位置を記録する。 コンパイラが、首尾よくソース・テキストの処理を完了すると、オブジェクト ・コードを生成し、増分的に(incrementally)リンクするようにリンカ機能にオ ブジェクト・コードを渡す。その代わりに、オブジェクト・コードを生成処理の 終了まで記憶し、伝統的な方法でリンクすることもできる。 コンパイラは、いま構成要素のSourceReference(ソース・リファレンス)特 性および各SourceReference(ソース・リファレンス)のClients(クライアント )特性を更新する。例えば構成要素AのSourceReference(ソース・リファレン ス)特性における、例えば構成要素Bに対する各リファレンスに関しては、構成 要素BのClients(クライアント)特性における構成要素Aに対応するリファレ ンス(同一の従属性情報を有している)である必要がある。 コンパイラは、Declaration(宣言)が、その前の値から変更した方法を記述 している変化(change)を形成する。コンパイラは、構成要素に対して機能Propag ateChange(変化の伝播)を呼出し、それに計算された変化を渡す。それから、 コンパイラはDeclaration(宣言)の新しい値をセットする。機能PropagateChan ge(変化の伝播)は、構成要素のClient List(クライアント・リスト)の各リ ファレンスの従属性に対して変化を合致させる。この合致が、参照された構成要 素は変化によって影響されて、そのBuildState(生成状態)がCompileList(コ ンパイル・エラー)またはUncertainError(不確定エラー)でないことを示す場 合は、そのBuildState(生成状態)はNeedToCompile(コンパイルを要する)と セットされる。 コンパイラは、種々の様式の警告メッセージまたは提案を発するために、SetE rror(エラーのセット)機能を使用することができる。この場合、警告メッセー ジのみが戻されるならば、Compile(コンパイル)機能はDone(実行)を返す。 この警告メッセージはErrors(エラー)特性に加えられ、リファレンスはプロジ ェクトのErrorList特性に加えられる。しかしながら、これ以外の場合、コンパ イルは、成功とみなされる。BuildState(生成状態)はCompiled(コンパイル済 み)とセットされ、エラーは伝播されない。警告または提案のみが出されるなら ば、プログラムは、完全にそして正確に生成される。 構成要素を条件付きコンパイルするための処理 機能ConditionallyCompile(条件付きコンパイル)は、第10A図および第10B図 に示されており、これを参照する。構成要素AのSourceReference(ソース・リ ファレンス)における各構成要素Bが1001で処理される。全ての構成要素Bは、 ブロック1002によって示されるように、処理されると、処理は構成要素Bについ ては完了し、処理は、構成要素Aをコンパイルするために第10B図に進む。構成 要素BのBuildState(生成状態)が、ブロック1003に示されるように、BeingCom piled(コンパイル中)またはNeedToCompile(コンパイルを要する)ならば、構 成要素のBuildState(生成状態)はBeingCompiled(コンパイル中)とセットさ れ、構成要素は機能ブロック1004でコンパイルされる。Compile(コンパイル) 機能は、Done(実行)、Abort(打切り)またはError(エラー)の一つの値を返 すことができる。値Done(実行)がブロック1005で返されると、処理はブロック 1001に継続する。 返された値が、ブロック1006でAbort(打切り)であるならば、この機能は終 了され、Abort(打切り)は機能ブロック1007で返される。返された値がブロッ ク1008でError(エラー)であるならば、原構成要素のBuildState(生成状態) はUncertainError(不確定エラー)とセットされ、この機能は終了され、Error (エラー)が機能ブロック1009で返される。構成要素BのBuildState(生成状態 )がブロック1010に示されるようにUncertain(不確定)であるならば、BuildSt ate(生成状態)はBeingCompile(コンパイル中)とセットされ、この構成要素 は 機能ブロック1011で条件付きでコンパイルされる。また、ConditionallyCompile (条件付きコンパイル)は、Done(実行)、Abort(打切り)またはError(エラ ー)の一つの値を返すことができる。値Done(実行)がブロック1005で返される ならば、処理はブロック1001に継続する。Error(エラー)がブロック1012で返 されるならば、構成要素のBuildState(生成状態)がUncertainError(不確定エ ラー)とセットされ、構成要素AはInterfaceCompileList(インターフェース・ コンパイル・リスト)から取除かれ、PropagateError(エラーの伝播)機能が、 この機能が終了される前に機能ブロック1014で呼出される。Abort(打切り)が ブロック1015で返されるならば、Abort(打切り)は、この機能が終了される前 に、機能ブロック1007で返される。 いま、第10B図を参照すると、全てのリファレンスが処理されたならば、全てC ompiled(コンパイル済み)BuildState(生成状態)を有する。しかしながら、S ourceReference(ソース・リファレンス)の一つが、この処理中の構成要素に対 する変化をこの点に伝搬する可能性があるので、それで、そのBuildState(生成 状態)は、BeingCompiled(コンパイル中)またはNeedToCompile(コンパイルを 要する)のいずれでもよい。したがって、構成要素AのBuildState(生成状態) がブロック1016で決定される。BuildState(生成状態)がブロック1017で示され るように、NeedToCompile(コンパイルを要する)ならば、BuildState(生成状 態)はBeingCompiled(コンパイル中)とセットされ、構成要素Aは機能ブロッ ク1018でコンパイルされる。コンパイラは、Error(エラー)またはDone(実行 )のいずれかを返すことができる。全てのSourceReference(ソース・リファレ ンス)はこの段階ではCompiled(コンパイル済み)であるため、Abort(打切り )は決して生じないことに注意されたい。Error(エラー)がブロック1019で返 されるならば、BuildState(生成状態)はCompileError(コンパイルエラー)と セットされ、Error(エラー)が機能ブロック1020で返される。Done(実行)が ブロック1021で返されるならば、BuildState(生成状態)はCompiled(コンパイ ル済み)とセットされ、かつDone(実行)が機能ブロック1023で返される。構成 要素AのBuildState(生成状態)が、ブロック1024に示されるように、BeingCom piled(コンパイル中)であるならば、BuildState(生成状態)はCompiled(コ ンパイル済 み)とセットされ、かつDone(実行)が機能ブロック1023で返される。 機能ConditionallyCompile(条件付きコンパイル)のための擬似コードは次の とおりである。 エラーを後処理するための方法 エラーを後処理するための方法はBuild(生成)処理の第4段階である。どの ようなエラーでも生成中に発生したならば、PostProcessEroors(エラーの後処 理)は生成の終わりで呼出される。InternalErrorList(内部エラー・リスト) の各リファレンスに関しては、リファレンスのBuildState(生成状態)がCompil eError(コンパイル・エラー)ならば、このBuildState(生成状態)はNeedToCo mpileコンパイルを要する)に変更される。リファレンスのBuildState(生成状 態)がUncertainError(不確定エラー)ならば、BuildState(生成状態)はComp iled(コンパイル済み)に変更される。 InternalErrorList(内部エラー・リスト)に関する全てのリファレンスが処 理されたとき、このリストの全てのエントリはクリアされる。プログラマのため の便宜として、プロジェクトのErrorListがあるエントリを含む場合、ウィンド ウ またはBrower(ブラウザ)がプロジェクトのErrorList(プロジェクトのエラー リスト)に対して開かれる。 PostProcessEroors(エラーの後処理)機能のための擬似コードは次のとおり である。 本発明は、特定のプログラミング環境で好ましい実施例に関して記載されてい るが、当業者は、本発明が添付の請求の範囲の精神および範囲内において変更し て実施され得ることを理解できるであろう。
【手続補正書】特許法第184条の8 【提出日】1995年7月7日 【補正内容】 請求の範囲 1.複数のコンポーネント(412)からコンピュータ・プログラムをインクレメン タルに構成する方法において、 (a)前記複数のコンポーネントの各々をモデル化し、コンパイルされる言語要 素の少なくとも1つとモデル化されたコンポーネントの従属関係を包含し、前記 従属関係は前記モデル化されたコンポーネントに関連する少なくとも1つのクラ イアント・コンポーネントと少なくとも1つのリファレンスとを定義し、前記リ ファレンスが前記モデル化されたコンポーネントの前記クライアント・コンポー ネント使用形態を定義するステップと、 (b)前記リファレンスのリストを形成(701)するステップと、 (c)前記コンピュータ・プログラムが構築されるまで、前記リファレンスのリ ストに準拠して前記複数のコンポーネントの1つを反復して選択しかつコンパイ ル(705または712)するステップと、 (d)ステップ(c)の各実行とコンカレント(並列)に、前記1つのコンポーネン トがコンパイルされるリファレンスを定める(708,710または715)ステップと、 (e)再びコンカレント(並列)にステップ(c)および(d)を実行する前に現在定 められたリファレンス(701)を包含するステップと からなることを特徴とするコンピュータ・プログラムを生成する方法。 2.(f)構成要素を生成、変更または削除する編集(603,605,606)ステップと、 (g)編集による構成要素の変更を変更リストに記憶(604,607)するステップとを 含む請求の範囲第1項に記載の方法。 3.前記各構成要素が、前記変更リスト中の編集による変更に基づいた構成要素 の状態を示すBuildState(生成状態)値を有する請求の範囲第2項に記載の方法 。 4.生成処理(build operation)の可能な構成要素を決定するために、前記変更 リストを評価(609)するステップを含む請求の範囲第3項に記載の方法。 5.コンパイル・リスト中の各変更リスト項目を記憶(604,607)し、コンパイル ・リストに変更リスト項目が追加されるときに変更リスト項目を処理し、変更さ れた構成要素に従属する構成要素を識別し、従属する構成要素をコンパイル・リ ストに追加するステップを含む請求の範囲第4項に記載の方法。 6.Uncertrain(不確定)の値を有する従属する構成要素を付加(905)するステ ップを含む請求の範囲第5項に記載の方法。 7.前記コンパイル・リストに付加される各項目を再帰的に処理(601)するステ ップを含む請求の範囲第5項に記載の方法。 8.各構成要素が、インターフェース(Interface)(311)とよばれる公開(public) 部分およびインプリメンテーション(Implementation)(312)とよばれる非公開(pr ivate)部分に分割される特性セットからなり、構成要素の従属性がインターフェ ース部分にのみ関連され、従属性リストを保持するステップは、前記構成要素の 前記公開部分および非公開部分に対してInterfaceCompileList(インターフェー ス・コンパイル・リスト)(701)およびImplementationCompileList(インプリメ ンテーション・コンパイル・リスト)(801)をそれぞれ保持することによって実 行される請求の範囲第1項に記載の方法。 9.コンパイルするステップが、ImplementationCompileList(インプリメンテ ーション・コンパイル・リスト)で参照される前記構成要素をコンパイル(806) する前に、最初に前記InterfaceCompileList(インターフェース・コンパイル・ リスト)で保持される前記構成要素を最初にコンパイル(705)することによって 実行される請求の範囲第8項に記載の方法。 10.構成要素がBuildState(生成状態)値を有し、InterfaceCompileList(イン ターフェース・コンパイル・リスト)に関する前記BuildState(生成状態)値が 、BeingCompiled(コンパイル中)またはNeedToCompile(コンパイルを要する) またはUncertrain(不確定)を含んでおり、InterfaceCompileList(インターフ ェース・コンパイル・リスト)に関する各リファレンスに対して、前記BuildSta te(生成状態)がBeingCompiled(コンパイル中)またはNeedToCompile(コンパ イルを要する)の場合、前記BuildState(生成状態)をBeingCompiled(コンパ イル中)とセット(705)し、次に前記構成要素をコンパイルし、前記BuildState (生成状態)がUncertrain(不確定)の場合前記BuildState(生成状態)をBein gCompiled(コンパイル中)とセットし、次に前記構成要素を条件付きでコンパ イルするステップを含む請求の範囲第9項に記載の方法。 11.コンパイラが前記構成要素に対してコンパイルを成功した場合、次の構成要 素を処理する前に前記構成要素の前記BuildState(生成状態)値をCompiled(コ ンパイル済み)とセット(708)するステップを実行する請求の範囲第10項に記載 の方法。 12.コンパイラがAbort(打ち切り)の値を返す(706)場合、次の構成要素を処理 する請求の範囲第10項に記載の方法。 13.コンパイラがコンパイルするステップで、Error(エラー)(709)の値を返す 場合、前記構成要素の前記BuildState(生成状態)値をCompileError(コンパイ ル・エラー)とセットし、かつ次の構成要素を処理する前に前記プロジェクト構 成要素のエラー・リストにリファレンスを付加(710)する請求の範囲第10項に記 載の方法。 14.コンパイラが値Error(エラー)を返す場合、前記構成要素の前記BuildStat e(生成状態)値をUncertrainError(不確定エラー)とセットし、次の構成要素 を処理する前に前記プロジェクト構成要素のエラー・リストにリファレンスを付 加 (715)する請求の範囲第10項によるコンピュータ・プログラムを生成する方法。 15.コンパイラが前記構成要素をコンパイルするとき、次の構成要素を処理(701 )する前に前記構成要素の前記BuildState(生成状態)値をCompiled(コンパイ ル済み)とセット(708)するステップを実行するが、コンパイラがAbort(打ち切 り)の値を返す場合、前記構成要素の前記BuildState(生成状態)値をCompileE rror(コンパイル・エラー)とセットし、次の構成要素を処理(701)する前に前 記プロジェクト構成要素のエラー・リストにリファレンスを付加し、コンパイラ が値Error(エラー)を返す場合、前記BuildState(生成状態)値をUncertrainE rror(不確定エラー)とセット(710)し、次の構成要素を処理する前に前記プロ ジェクト構成要素のエラー・リストにリファレンスを付加する請求の範囲第10項 によるコンピュータ・プログラムを生成する方法。 16.ImplementationCompileList(インプリメンテーション・コンパイル・リス ト)に関する前記BuildState(生成状態)値が、NeedToCompile(コンパイルを 要する)またはUncertrain(不確定)を含み、ImplementationCompileList(イ ンプリメンテーション・コンパイル・リスト)に関する各リファレンスに対して 、 (a)前記BuildState(生成状態)値が、NeedToCompile(コンパイルを要する) である場合、前記BuildState(生成状態)をBeingCompiled(コンパイル中)と セットし、つぎに前記構成要素をコンパイル(806)するステップと、 (b)前記BuildState(生成状態)値がUncertrain(不確定)である場合、つぎ に前記構成要素を処理する前に前記BuildState(生成状態)値をCompiled(コン パイル済み)とセット(804)するステップとを含んでいる請求の範囲第10項に記 載の方法。 17.コンパイラがコンパイルするステップで、前記構成要素に対してコンパイル が成功した場合、次の前記構成要素を処理する前に前記BuildState(生成状態) 値をCompiled(コンパイル済み)とセット(708)するステップをさらに実行する 請求の範囲第14項によるコンピュータ・プログラムを生成する方法。 18.コンパイラがコンパイルするステップで、値Error(エラー)を返す場合、 前記BuildState(生成状態)値をCompileError(コンパイル・エラー)とセット し、次の構成要素を処理する前に前記プロジェクト構成要素のエラー・リストに リファレンスを付加(710)する請求の範囲第14項によるコンピュータ・プログラ ムを生成する方法。 19.コンパイラが前記構成要素に対してコンパイルが成功した場合、次の前記構 成要素を処理する前に前記BuildState(生成状態)値をCompiled(コンパイル済 み)とセット(705)するステップをさらに実行するが、コンパイラがコンパイル するステップで値Error(エラー)を返す場合、前記構成要素の前記BuildState (生成状態)値をCompileError(コンパイル・エラー)とセットし、次の構成要 素を処理する前に前記プロジェクト構成要素のエラー・リストにリファレンスを 付加(710)する請求の範囲第14項によるコンピュータ・プログラムを生成する方 法。 20.前記変更リストの各構成要素に対して、インターフェース部分が変更された 場合、前記構成要素は前記InterfaceCompileList(インターフェース・コンパイ ル・リスト)(708)に付加され、Implementation(インプリメンテーション)部 分が変更され、この変更が他の構成要素に影響を及ぼす場合は、前記構成要素は InterfaceCompileList(インターフェース・コンパイル・リスト)に付加(906) され、それ以外の場合は、前記構成要素はImplementationCompileList(インプ リメンテーション・コンパイル・リスト)に付加される請求の範囲第14項に記載 の方法。 21.コンパイラが前記コンパイル(705)するステップまたは条件付きでコンパイ ル(712)するステップのいずれかで前記リファレンスがコンパイルに成功した場 合、すべてのリファレンスが処理(701)されるまで次のリファレンスを処理して いく請求の範囲第19項によるコンピュータ・プログラムを生成する方法。 22.少なくとも1つの名前をコンパイルし検出するステップ(c)による請求の範 囲第1項に記載のコンピュータ・プログラムを生成する方法において、さらに (f)宣言(901)のデータベースに問い合わせをしてコンポーネントの宣言の少な くとも1つの名前を決定するステップと、 (g)コンポーネントの宣言の状態を決定(903,910,905または908)するステップ と からなることを特徴とするコンピュータ・プログラムを生成する方法。 23.前記状態がCompiled(コンパイル済み)状態を示すならば、前記構成要素の 宣言の前記状態を使用することによってコンパイルを継続(903)するステップを 含んでいる請求の範囲第22項に記載の方法。 24.Error値(エラー)を返し、前記状態がエラー状態を示すならば、前記構成 要素の宣言の現在の構成要素状態の処理を停止(910)するステップを含んでいる 請求の範囲第23項に記載の方法。 25.abort(打ち切り)値を返し、かつ前記状態が打ち切り状態を示すならば、 前記構成要素の宣言の現在の構成要素状態の処理を停止(905)するステップを含 んでいる請求の範囲第22項に記載の方法。 26.構成要素の宣言の少なくとも1つの名前を決定するように宣言のデータベー スに問い合わせをするステップが、 (h)前記構成要素の状態がCompiled(コンパイル済み)状態であるかどうかを 決定(903)するステップと、 (i)前記状態がコンパイル済みであるならば、前記Compiled(コンパイル済み )宣言および関連するコンパイル(Compile)状態を返す(904)ステップと を含んでいる請求の範囲第22項に記載の方法。 27.前記コンパイル状態がエラーと宣言された場合、エラーのCompile(コンパ イ ル)状態を返すことを含んでいる請求の範囲第26項に記載の方法。 28.(h)前記構成要素の状態がUncertrain(不確定)であるかまたはNeedtocompi le(コンパイルを要する)であるかどうかを決定(910)するステップと、 (i)前記構成要素をコンパイル・リストに関する第一の項目として記憶(906)し 、かつabort(うちきり)状態を返すステップとを 含んでいる請求の範囲第22項に記載の方法。 29.複数のコンポーネント(412)からコンピュータ・プログラムをインクレメン タルに構成するシステムにおいて、 (a)前記複数のコンポーネントの各々をモデル化し、コンパイルされる言語要 素の少なくとも1つとモデル化されたコンポーネントの従属関係を包含し、前記 従属関係は前記モデル化されたコンポーネントに関連する少なくとも1つのクラ イアント・コンポーネントと少なくとも1つのリファレンスとを定義し、前記リ ファレンスが前記モデル化されたコンポーネントの前記クライアント・コンポー ネント使用形態を定義する手段と、 (b)前記リファレンスのリストを形成(701)する手段と、 (c)前記コンピュータ・プログラムが構築されるまで、前記リファレンスのリ ストに準拠して前記複数のコンポーネントの1つを反復して選択しかつコンパイ ル(705または712)する手段と、 (d)手段(c)の各実行とコンカレント(並列)に、前記1つのコンポーネントが コンパイルされるリファレンスを定める(708,710または715)手段と、 (e)再びコンカレント(並列)に手段(c)および(d)を実行する前に現在定めら れたリファレンス(701)を包含する手段と からなることを特徴とするコンピュータ・プログラムを生成するシステム。 30.(f)構成要素を生成し、変更または削除するように編集(603,605,606)する手 段と、 (g)変更リストに構成要素における編集による変更を記憶(604,607)する手段と を含む請求の範囲第29項に記載のシステム。 31.前記構成要素が、前記変更リストにおける編集変更に基づいた構成要素状態 を示すBuildState(生成状態)値を有する請求の範囲第30項に記載のシステム。 32.生成処理(build operation)の可能な構成要素を決定するために、前記変更 リストを評価(609)するための手段を含む請求の範囲第31項に記載のシステム。 33.コンパイル・リスト中の各変更リスト項目を記憶(604,607)し、コンパイル ・リストに変更リスト項目が追加されるときに変更リスト項目を処理し、変更さ れた構成要素に従属する構成要素を識別し、従属する構成要素をコンパイル・リ ストに追加する手段を含む請求の範囲第32項に記載のシステム。 34.Uncertrain(不確定)の値を有する従属構成要素を付加(905)する手段を含 む請求の範囲第33項に記載のシステム。 35.前記コンパイル・リストに付加される各項目を再帰的に処理(601)する手段 を含む請求の範囲第33項に記載のシステム。 36.各構成要素が、インターフェース(Interface)(311)とよばれる公開(public) 部分およびインプリメンテーション(Implementation)(312)とよばれる非公開(pr ivate)部分に分割される特性セットからなり、構成要素の従属性が前記インター フェース部分にのみ関連され、従属性リストを保持することは、前記構成要素の 前記公開部分および非公開部分に対してInterfaceCompileList(インターフェー ス・コンパイル・リスト)(701)およびImplementationCompileList(インプリメ ンテーション・コンパイル・リスト)(801)をそれぞれ保持することによって実 行される請求の範囲第29項に記載のシステム。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FR,GB,GR,IE,IT,LU,M C,NL,PT,SE),OA(BF,BJ,CF,CG ,CI,CM,GA,GN,ML,MR,NE,SN, TD,TG),AT,AU,BB,BG,BR,BY, CA,CH,CN,CZ,DE,DK,ES,FI,G B,HU,JP,KP,KR,KZ,LK,LU,LV ,MG,MN,MW,NL,NO,NZ,PL,PT, RO,RU,SD,SE,SK,UA,UZ,VN

Claims (1)

  1. 【特許請求の範囲】 1.コンピュータ・プログラムを生成する方法において、 (a)コンピュータ・プログラムを構成要素の集合としてモデル化するステップ と、 (b)メモリに前記構成要素を記憶するステップと、 (c)前記記憶された構成要素をアクセスし、かつ従属性のリストを発生させる ために各構成要素に関連する従属性を計算するステップと、 (d)前記コンピュータ・プログラムを生成するために、前記従属性のリストに 基づいて構成要素をコンパイルするステップと からなるコンピュータ・プログラムを生成する方法。 2.(a)構成要素を生成、変更または削除する編集するステップと、 (b)編集による構成要素の変更を変更リストに記憶するステップとを含む請求 の範囲第1項に記載の方法。 3.前記構成要素が、前記変更リスト中の編集による変更に基づいた構成要素の 状態を示すBuildState(生成状態)値を有する請求の範囲第2項に記載の方法。 4.生成処理(build operation)の可能な構成要素を決定するために、前記変更 リストを処理するステップとを含む請求の範囲第3項に記載の方法。 5.コンパイル・リスト中の各変更リスト項目を記憶し、コンパイル・リストに 変更リスト項目が追加されるときに変更リスト項目を処理し、変更された構成要 素に従属する構成要素を識別し、従属する構成要素をコンパイル・リストに追加 するステップを含む請求の範囲第4項に記載の方法。 6.Uncertain(不確定)の値を有する従属する構成要素を付加するステップと を含む請求の範囲第5項に記載の方法。 7.前記コンパイル・リストに付加される各項目を再帰的に処理するステップと を含む請求の範囲第5項に記載の方法。 8.各構成要素が、インターフェース(Interface)と呼ばれる公開(public)部分 およびインプリメンテーション(Implementation)と呼ばれる非公開(private)部 分に分割される特性セットからなり、構成要素の従属性がインターフェース部分 にのみ関連され、従属性リストを保持するステップは、前記構成要素の前記公開 部分および非公開部分に対してInterfaceCompileList(インターフェース・コン パイル・リスト)およびImplementation(インプリメンテーション・コンパイル ・リスト)をそれぞれ保持することによって実行される請求の範囲第1項に記載 の方法。 9.コンパイルするステップが、ImplementationCompileList(インプリメンテ ーション・コンパイル・リスト)で参照される前記構成要素をコンパイルする前 に、最初に前記ImplementationCompileList(インターフェース・コンパイル・ リスト)で参照される前記構成要素を最初にコンパイルすることによって実行さ れる請求の範囲第8項に記載の方法。 10.構成要素がBuildState(生成状態)値を有し、InterfaceCompileList(イン ターフェース・コンパイル・リスト)に関する前記BuildState(生成状態)値が 、BeingCompiled(コンパイル中)、NeedToCompile(コンパイルを要する)また はUncertain(不確定)を含んでおり、InterfaceCompileList(インターフェー ス・コンパイル・リスト)に関する各リファレンスに対して、前記BuildState( 生成状態)がBeingCompiled(コンパイル中)またはNeedToCompile(コンパイル を要する)の場合、前記BuildState(生成状態)をBeingCompiled(コンパイル 中)とセットし、次に前記構成要素をコンパイルし、前記BuildState(生成状態 )値がUncertain(不確定)の場合、前記BuildState(生成状態)をBeingCompil ed(コンパイル中)とセットし、次に前記構成要素を条件付きでコンパイルする ステップを含む請求の範囲第9項に記載の方法。 11.コンパイラが前記構成要素に対してコンパイルを成功した場合、次の構成要 素を処理する前に前記構成要素の前記BuildState(生成状態)値をCompiled(コ ンパイル済み)とセットするステップを実行する請求の範囲第10項に記載の方法 。 12.コンパイラがAbort(打切り)の値を返す場合、次の構成要素を処理する請 求の範囲第10項に記載の方法。 13.コンパイラがコンパイルするステップで、Error(エラー)の値を返す場合 、前記構成要素の前記BuildState(生成状態)値をCompileError(コンパイル・ エラー)とセットし、かつ次の構成要素を処理する前に前記プロジェクト構成要 素のエラー・リストにリファレンスを付加する請求の範囲第10項に記載の方法。 14.コンパイラが値Error(エラー)を返す場合、前記構成要素の前記BuildStat e(生成状態)値をUncertainError(不確定エラー)とセットし、次の構成要素 を処理する前に前記プロジェクト構成要素のエラー・リストにリファレンスを付 加する請求の範囲第10項によるコンピュータ・プログラムを生成する方法。 15.コンパイラが前記構成要素をコンパイルするとき、次の構成要素を処理する 前に前記構成要素の前記BuildState(生成状態)値をCompiled(コンパイル済み )とセットするステップを実行するが、コンパイラがAbort(打切り)の値を返 す場合、前記構成要素の前記BuildState(生成状態)値をCompileError(コンパ イル・エラー)とセットし、次の構成要素を処理する前に前記プロジェクト構成 要素のエラー・リストにリファレンスを付加し、コンパイラが値Error(エラー )を返す場合、前記構成要素のBuildState(生成状態)値をUncertainError(不 確定エラー)とセットし、次の構成要素を処理する前に前記プロジェクト構成要 素のエラー・リストにリファレンスを付加する請求の範囲第10項によるコンピュ ータ・プログラムを生成する方法。 16.ImplementationCompileList(インプリメンテーション・コンパイル・リス ト)に関する前記BuildState(生成状態)値が、NeedToCompile(コンパイルを 要する)またはUncertain(不確定)を含み、ImplementationCompileList(イン プリメンテーション・コンパイル・リスト)に関する各リファレンスに対して、 (a)前記BuildState(生成状態)値がNeedToCompile(コンパイルを要する)で ある場合、前記BuildState(生成状態)をBeingCompiled(コンパイル中)とセ ットし、次に前記構成要素をコンパイルするステップと、 (b)前記BuildState(生成状態)値がUncertain(不確定)である場合、次の構 成要素を処理する前に前記BuildState(生成状態)値をCompiled(コンパイル済 み)とセットするステップとを含んでいる請求の範囲第10項に記載の方法。 17.コンパイラがコンパイルするステップで、前記構成要素に対してコンパイル が成功した場合、次の構成要素を処理する前に前記構成要素の前記BuildState( 生成状態)値をCompiled(コンパイル済み)とセットするステップをさらに実行 する請求の範囲第14項によるコンピュータ・プログラムを生成する方法。 18.コンパイラがコンパイルするステップでError(エラー)の値を返す場合、 前記構成要素の前記BuildState(生成状態)値をCompileError(コンパイル・エ ラー)とセットし、次の構成要素を処理する前に前記プロジェクト構成要素のエ ラー・リストにリファレンスを付加する請求の範囲第14項によるコンピュータ・ プログラムを生成する方法。 19.コンパイラが前記構成要素に対してコンパイルを成功した場合、次の構成要 素を処理する前に前記構成要素の前記BuildState(生成状態)値をCompiled(コ ンパイル済み)とセットするステップをさらに実行するが、コンパイラがコンパ イルするステップでError(エラー)の値を返す場合、前記構成要素の前記Build State(生成状態)値をCompileError(コンパイル・エラー)とセットし、次の 構成要素を処理する前に前記プロジェクト構成要素におけるエラー・リストにリ ファレンスを付加する請求の範囲第14項によるコンピュータ・プログラムを 生成する方法。 20.前記変更リストの各構成要素に対して、Interface(インターフェース)部 分が変更された場合、前記構成要素は前記InterfaceCompileList(インターフェ ース・コンパイルリスト)に付加され、Implementation(インプリメンテーショ ン)部分が変更され、この変更が他の構成要素に影響を及ぼす場合は、前記構成 要素はInterfaceCompileList(インターフェース・コンパイル・リスト)に付加 され、それ以外の場合は、前記構成要素はImplementationCompileList(インプ リメンテーション・コンパイル・リスト)に付加される請求の範囲第14項に記載 の方法。 21.コンパイラが前記コンパイルするステップまたは条件付きでコンパイルする ステップのいずれかで前記リファレンスをコンパイルを成功した場合、全てのリ ファレンスが処理されるまで次のリファレンスを処理して行く請求の範囲第19項 によるコンピュータ・プログラムを生成する方法。 22.コンピュータ・プログラムを生成する方法において、 (a)コンピュータ・プログラムを構成要素の集合として生成するステップと、 (b)前記構成要素をメモリに記憶するステップと、 (c)前記記憶された構成要素をアクセスし、かつ従属性のリストを発生させる ために各構成要素に関連した従属性を計算するステップと、 (d)構成要素をコンパイルし、かつ構成要素の少なくとも一つの名前を検出す るステップと、 (e)構成要素の宣言の少なくとも一つの名前を決定するように宣言のデータベ ースに問合わせをするステップと、 (f)前記構成要素の宣言の状態を決定するステップと からなるコンピュータ・プログラムを生成する方法。 23.前記状態がcompiled(コンパイル済み)状態を示すならば、前記構成要素の 宣言の前記状態を使用することによってコンパイルを継続するステップを含んで いる請求の範囲第22項に記載の方法。 24.error(エラー)値を返し、前記状態がエラー状態を示すならば、前記構成 要素の宣言の現在の構成要素状態の処理を停止するステップを含んでいる請求の 範囲第23項に記載の方法。 25.abort(打切り)値を返し、かつ前記状態が打切り状態を示すならば、前記 構成要素の宣言の現在の構成要素状態の処理を停止するステップを含んでいる請 求の範囲第22項に記載の方法。 26.構成要素の宣言の少なくとも一つの名前を決定するように宣言のデータベー スに問合わせをするステップが、 (a)前記構成要素の状態がcompiled(コンパイル済み)であるかどうかを決定 するステップと、 (b)前記状態がコンパイル済みであるならば、前記compiled(コンパイル済み )宣言および関連するコンパイル(compile)状態を返すステップとを含む請求 の範囲第22項に記載の方法。 27.前記コンパイル状態がエラーと宣言された場合、エラーのcompile(コンパ イル)状態を返すことを含んでいる請求の範囲第26項に記載の方法。 28.(a)前記構成要素の状態がimcertain(不確定)であるかまたはneedtocompil e(コンパイルを要する)であるかどうかを決定するステップと、 (b)前記構成要素をコンパイル・リストに関する第1の項目として記憶し、か つabort(打切り)状態を返すステップとを含んでいる請求の範囲第22項に記載 の方法。 29.コンピュータ・プログラムを生成するシステムにおいて、 (a)構成要素の集合としてコンピュータ・プログラムをモデル化する手段と、 (b)メモリに前記構成要素を記憶する手段と、 (c)前記記憶された構成要素をアクセスし、かつ従属性のリストを発生させる ために各構成要素と関連した従属性を計算する手段と、 (d)前記コンピュータプログラムを生成するために前記従属性のリストに基づ いて構成要素をコンパイルする手段と を備えたコンピュータ・プログラムを生成するシステム。 30.(a)構成要素を生成し、変更または削除するように編集する手段と、 (b)変更リストに構成要素における編集による変更を記憶する手段と を含む請求の範囲第29項に記載のシステム。 31.前記構成要素が、前記変更リストにおける編集変更に基づいた構成要素状態 を示すBuildSate(生成状態)値を有する請求の範囲第30項に記載のシステム。 32.生成処理(buildoperation)の可能な構成要素を決定するために、前記変更 リストを処理するための手段を含む請求の範囲第31項に記載のシステム。 33.コンパイル・リスト中の各変更リスト項目を記載し、コンパイル・リストに 変更リスト項目が追加されるときに変更リスト項目を処理し、変更された構成要 素に従属する構成要素を識別し、従属する構成要素をコンパイル・リストに追加 する手段を含む請求の範囲第32項に記載のシステム。 34.Uncertain(不確定)の値を有する従属構成要素を付加する手段を含む請求 の範囲第33項に記載のシステム。 35.前記コンパイルリストに付加される各項目を再帰的に処理する手段を含む請 求の範囲第33項に記載のシステム。 36.各構成要素が、Interface(インターフェース)と呼ばれる公開(bublic)部 分およびImplementation(インプリメンテーション)と呼ばれる非公開(private )部分に分割される特性セットからなり、構成要素の従属性は前記Interface(イ ンターフェース)部分にのみ関連し、従属性リストを保持することは、前記構成 要素の前記公開部分および非公開部分に対してInterfaceCompileList(インター フェース・コンパイル・リスト)およびImplementationCompileList(インプリ メンテーション・コンパイル・リスト)をそれぞれ保持することによって実行さ れる請求の範囲第29項に記載のシステム。
JP7502762A 1993-06-28 1994-01-03 インクリメンタル生成システム Pending JPH08512152A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/085,487 1993-06-28
US08/085,487 US5758160A (en) 1993-06-28 1993-06-28 Method and apparatus for building a software program using dependencies derived from software component interfaces
PCT/US1994/000041 WO1995000901A1 (en) 1993-06-28 1994-01-03 Incremental build system

Publications (1)

Publication Number Publication Date
JPH08512152A true JPH08512152A (ja) 1996-12-17

Family

ID=22191926

Family Applications (2)

Application Number Title Priority Date Filing Date
JP7502762A Pending JPH08512152A (ja) 1993-06-28 1994-01-03 インクリメンタル生成システム
JP2006239370A Expired - Lifetime JP4195479B2 (ja) 1993-06-28 2006-09-04 インクリメンタル生成システム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2006239370A Expired - Lifetime JP4195479B2 (ja) 1993-06-28 2006-09-04 インクリメンタル生成システム

Country Status (8)

Country Link
US (1) US5758160A (ja)
EP (1) EP0688448B1 (ja)
JP (2) JPH08512152A (ja)
CN (1) CN1105802A (ja)
AU (1) AU6018794A (ja)
CA (1) CA2144874C (ja)
DE (1) DE69406113D1 (ja)
WO (1) WO1995000901A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002082922A (ja) * 2001-06-14 2002-03-22 Digital Vision Laboratories Corp 並列分散処理方法

Families Citing this family (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6070006A (en) * 1993-04-14 2000-05-30 Kabushiki Kaisha Toshiba Object oriented software development tool for creation of new class(es)
US5854932A (en) * 1995-08-17 1998-12-29 Microsoft Corporation Compiler and method for avoiding unnecessary recompilation
JPH09134282A (ja) * 1995-11-08 1997-05-20 Hitachi Ltd プログラム作成方法
US6282561B1 (en) * 1995-12-07 2001-08-28 Microsoft Corporation Method and system for resource management with independent real-time applications on a common set of machines
US6526565B1 (en) * 1995-12-21 2003-02-25 International Business Machines Corporation Packaging algorithm for providing object oriented applications having reduced footprints
US5848274A (en) * 1996-02-29 1998-12-08 Supercede, Inc. Incremental byte code compilation system
US5764989A (en) * 1996-02-29 1998-06-09 Supercede, Inc. Interactive software development system
DE19615683A1 (de) * 1996-04-22 1997-10-23 Sel Alcatel Ag Verfahren und Steuereinrichtung für eine graphische Steuerung von Abläufen in einem Netzwerkmanagementsystem
US6434739B1 (en) 1996-04-22 2002-08-13 International Business Machines Corporation Object oriented framework mechanism for multi-target source code processing
US6067413A (en) * 1996-06-13 2000-05-23 Instantations, Inc. Data representation for mixed-language program development
JP3763937B2 (ja) 1996-06-28 2006-04-05 富士通株式会社 オブジェクト指向プログラミング装置、およびオブジェクト結合プログラム記憶媒体
JP3427918B2 (ja) * 1996-07-02 2003-07-22 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム開発支援システム及び支援方法
US6094528A (en) * 1996-10-24 2000-07-25 Sun Microsystems, Inc. Method and apparatus for system building with a transactional interpreter
US6901579B1 (en) * 1996-11-07 2005-05-31 Fujitsu Limited Generation of source code from classes and maintaining the comment that indicates the role of the class in the generated source code
US6473768B1 (en) * 1996-11-12 2002-10-29 Computer Associates Think, Inc. System and method for modifying an executing application
US5950000A (en) * 1996-12-06 1999-09-07 Sun Microsystems, Inc. Integrated of a third party software tool
CA2224466C (en) * 1997-01-09 2003-12-23 Mitel Corporation Transfer of basic knowledge to agents
US5907707A (en) * 1997-01-14 1999-05-25 International Business Machines Corporation Object model for Java
US6212673B1 (en) * 1997-03-31 2001-04-03 International Business Machines Corporation Component-neutral builder interface
US6023578A (en) * 1997-05-09 2000-02-08 International Business Macines Corporation Systems, methods and computer program products for generating an object oriented application for an object oriented environment
US5987247A (en) * 1997-05-09 1999-11-16 International Business Machines Corporation Systems, methods and computer program products for building frameworks in an object oriented environment
AU753202B2 (en) * 1997-07-25 2002-10-10 British Telecommunications Public Limited Company Software system generation
EP0945812A1 (en) 1998-03-23 1999-09-29 Application Building Blocks Limited Data processing systems
US6735757B1 (en) * 1998-06-04 2004-05-11 Gateway, Inc. Apparatus and method for checking component compatibility in a build to order computer system
KR100311231B1 (ko) 1998-08-11 2001-11-30 오길록 객체지향분석정보를이용한프레임워크모델링장치및그방법
US6167563A (en) * 1998-09-17 2000-12-26 Unisys Corporation Method and system for building components in a framework useful in developing integrated business-centric applications
US6449050B1 (en) 1998-10-05 2002-09-10 Canon Kabushiki Kaisha Code generator for printer driver
US6173441B1 (en) * 1998-10-16 2001-01-09 Peter A. Klein Method and system for compiling source code containing natural language instructions
US6272674B1 (en) * 1998-12-14 2001-08-07 Nortel Networks Limited Method and apparatus for loading a Java application program
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
US6370683B1 (en) * 1999-05-07 2002-04-09 Arnold Sobers Computer software for generating flowchart images of a source program
WO2000073893A2 (en) * 1999-05-26 2000-12-07 Sobrio International Incorporated Apparatus and method for re-using and tracking digital assets
US6487713B1 (en) 1999-09-24 2002-11-26 Phoenix Technologies Ltd. Software development system that presents a logical view of project components, facilitates their selection, and signals missing links prior to compilation
US6591413B1 (en) 1999-10-07 2003-07-08 International Business Machines Corporation Method and apparatus in a data processing system for faster notification of errors in a software build
US6757893B1 (en) 1999-12-17 2004-06-29 Canon Kabushiki Kaisha Version control system for software code
CN1957328A (zh) * 2000-03-20 2007-05-02 凤凰技术有限公司 展示方案组件的逻辑视图、便于其选择以及在编译之前的信号遗漏链接的软件开发***
US7334216B2 (en) * 2000-04-04 2008-02-19 Sosy, Inc. Method and apparatus for automatic generation of information system user interfaces
US6681383B1 (en) * 2000-04-04 2004-01-20 Sosy, Inc. Automatic software production system
US6658642B1 (en) * 2000-06-21 2003-12-02 International Business Machines Corporation System, method and program product for software development
US7853922B1 (en) 2001-05-15 2010-12-14 The Mathworks, Inc. Data objects for model-based design
US7080352B2 (en) * 2002-01-30 2006-07-18 Dloo, Incorporated Method and system for creating programs using code having coupled syntactic and semantic relationships
US7133894B2 (en) * 2002-03-12 2006-11-07 International Business Machines Corporation Method, apparatus, and program for synchronous remote builds
US7703077B2 (en) * 2002-04-30 2010-04-20 Microsoft Corporation Programming model to detect deadlocks in concurrent programs
US7203924B2 (en) * 2002-04-30 2007-04-10 Microsoft Corporation Behavioral analysis for message-passing application programs
US7360201B2 (en) * 2002-12-09 2008-04-15 International Business Machines Corporation Automated analysis and identification of options in project management
EP1465069B1 (en) * 2003-04-01 2017-01-25 Sap Se Method and computer system for activation of source files
US20050144615A1 (en) * 2003-12-29 2005-06-30 Shu-Chuan Chen Modularized custom-developed software package producing method and system
US7337428B2 (en) * 2004-02-05 2008-02-26 Microsoft Corporation Automatic batching of tasks in a build process
US7797669B1 (en) 2004-02-13 2010-09-14 Microsoft Corporation Analysis of distributed software systems via specification substitution
US7765520B2 (en) * 2004-05-21 2010-07-27 Bea Systems, Inc. System and method for managing cross project dependencies at development time
US7757212B2 (en) * 2004-05-21 2010-07-13 Bea Systems, Inc. System and method for managing cross project dependencies at development time
US7640533B1 (en) * 2005-03-30 2009-12-29 Emc Corporation System and methods for defining a software build
US20070006166A1 (en) * 2005-06-20 2007-01-04 Seagate Technology Llc Code coverage for an embedded processor system
US7895572B2 (en) * 2005-08-15 2011-02-22 Sap Aktiengesellschaft Systems and methods for enterprise software management
US7949995B2 (en) * 2005-09-14 2011-05-24 Sadlek James M Visual programming method
US7797689B2 (en) * 2005-12-12 2010-09-14 Microsoft Corporation Using file access patterns in providing an incremental software build
US7721272B2 (en) * 2005-12-12 2010-05-18 Microsoft Corporation Tracking file access patterns during a software build
US20070234278A1 (en) * 2006-03-02 2007-10-04 Microsoft Corporation Managing source code in a model-based development environment
US9361137B2 (en) 2006-03-10 2016-06-07 International Business Machines Corporation Managing application parameters based on parameter types
US9727604B2 (en) * 2006-03-10 2017-08-08 International Business Machines Corporation Generating code for an integrated data system
US20070283282A1 (en) * 2006-04-18 2007-12-06 Collabnet, Inc. Systems and methods for on-demand deployment of software build and test environments
KR100834676B1 (ko) * 2006-08-08 2008-06-02 삼성전자주식회사 소프트웨어 프로젝트 빌드 방법
US8381180B2 (en) * 2006-09-08 2013-02-19 Sap Ag Visually exposing data services to analysts
US8307337B2 (en) 2006-12-01 2012-11-06 Murex S.A.S. Parallelization and instrumentation in a producer graph oriented programming framework
US8332827B2 (en) 2006-12-01 2012-12-11 Murex S.A.S. Produce graph oriented programming framework with scenario support
US8191052B2 (en) 2006-12-01 2012-05-29 Murex S.A.S. Producer graph oriented programming and execution
US8160999B2 (en) * 2006-12-13 2012-04-17 International Business Machines Corporation Method and apparatus for using set based structured query language (SQL) to implement extract, transform, and load (ETL) splitter operation
US8219518B2 (en) 2007-01-09 2012-07-10 International Business Machines Corporation Method and apparatus for modelling data exchange in a data flow of an extract, transform, and load (ETL) process
KR100871563B1 (ko) * 2007-02-14 2008-12-02 삼성전자주식회사 컴포넌트 기반의 소프트웨어 개발을 위한 장치 및 방법
US8122428B2 (en) * 2007-06-26 2012-02-21 Analog Devices, Inc. Methods and apparatus for automation and facilitating design of register maps
US8122440B1 (en) * 2007-09-26 2012-02-21 Netapp, Inc. Method and apparatus for enumerating external program code dependencies
US8856752B2 (en) * 2007-10-26 2014-10-07 Microsoft Corporation Monitoring asset state to enable partial build
CN101546260B (zh) * 2008-03-28 2012-07-11 国际商业机器公司 用于重构面向服务的应用的方法及其设备
US20100050156A1 (en) 2008-08-20 2010-02-25 International Business Machines Corporation Using build history information to optimize a software build process
US20110239195A1 (en) * 2010-03-25 2011-09-29 Microsoft Corporation Dependence-based software builds
US9250866B2 (en) 2011-06-20 2016-02-02 Ebay Inc. Systems and methods for incremental software deployment
US8856724B2 (en) 2011-06-20 2014-10-07 Ebay Inc. Systems and methods for incremental software development
US9003383B2 (en) * 2011-09-15 2015-04-07 You Know Solutions, LLC Analytic engine to parallelize serial code
GB2506596A (en) * 2012-10-02 2014-04-09 Ibm Managing a set of software modules in a runtime environment
US9558220B2 (en) 2013-03-04 2017-01-31 Fisher-Rosemount Systems, Inc. Big data in process control systems
US10386827B2 (en) * 2013-03-04 2019-08-20 Fisher-Rosemount Systems, Inc. Distributed industrial performance monitoring and analytics platform
US10649424B2 (en) 2013-03-04 2020-05-12 Fisher-Rosemount Systems, Inc. Distributed industrial performance monitoring and analytics
US11573672B2 (en) 2013-03-15 2023-02-07 Fisher-Rosemount Systems, Inc. Method for initiating or resuming a mobile control session in a process plant
CN103294478A (zh) * 2013-06-17 2013-09-11 宁夏新航信息科技有限公司 一种计算机软件的智能化编程方法
US20150082298A1 (en) * 2013-09-19 2015-03-19 Qiu Shi WANG Packaging and deploying hybrid applications
US10261889B2 (en) 2014-06-25 2019-04-16 Microsoft Technology Licensing, Llc Techniques for edit-and-continue and enhanced optimized debugging on optimized code
US9442707B2 (en) 2014-06-25 2016-09-13 Microsoft Technology Licensing, Llc Incremental whole program compilation of code
US10817552B2 (en) 2017-03-27 2020-10-27 Microsoft Technology Licensing, Llc Input-output example encoding
US10795645B2 (en) 2017-03-27 2020-10-06 Microsoft Technology Licensing, Llc Neural network for program synthesis
CN108920217B (zh) * 2018-03-30 2021-12-03 惠州市德赛西威汽车电子股份有限公司 一种减少不可重入函数的重构方法
US11656860B2 (en) * 2021-03-26 2023-05-23 Microsoft Technology Licensing, Llc Bundling data packages based on usage patterns for download control
KR102649150B1 (ko) * 2021-04-23 2024-03-18 연세대학교 산학협력단 다중 오류 프로그램 소스 코드 자동 수정 장치 및 방법

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4589068A (en) * 1983-10-03 1986-05-13 Digital Equipment Corporation Segmented debugger
US4943932A (en) * 1986-11-25 1990-07-24 Cimflex Teknowledge Corporation Architecture for composing computational modules uniformly across diverse developmental frameworks
US4809170A (en) * 1987-04-22 1989-02-28 Apollo Computer, Inc. Computer device for aiding in the development of software system
US4910663A (en) * 1987-07-10 1990-03-20 Tandem Computers Incorporated System for measuring program execution by replacing an executable instruction with interrupt causing instruction
US4953084A (en) * 1987-11-16 1990-08-28 Hewlett-Packard Company Method and apparatus using variable ranges to support symbolic debugging of optimized code
US5129086A (en) * 1988-11-29 1992-07-07 International Business Machines Corporation System and method for intercommunicating between applications and a database manager
US5193190A (en) * 1989-06-26 1993-03-09 International Business Machines Corporation Partitioning optimizations in an optimizing compiler
US5325531A (en) * 1989-06-30 1994-06-28 Digital Equipment Corporation Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines
US5170465A (en) * 1989-06-30 1992-12-08 Digital Equipment Corporation Incremental-scanning compiler for source-code development system
US5182806A (en) * 1989-06-30 1993-01-26 Digital Equipment Corporation Incremental compiler for source-code development system
US5201050A (en) * 1989-06-30 1993-04-06 Digital Equipment Corporation Line-skip compiler for source-code development system
US5193191A (en) * 1989-06-30 1993-03-09 Digital Equipment Corporation Incremental linking in source-code development system
US5124989A (en) * 1990-01-08 1992-06-23 Microsoft Corporation Method of debugging a computer program
US5204960A (en) * 1990-01-08 1993-04-20 Microsoft Corporation Incremental compiler
US5140671A (en) * 1990-01-26 1992-08-18 International Business Machines Corporation Expert system debugger
US5175856A (en) * 1990-06-11 1992-12-29 Supercomputer Systems Limited Partnership Computer with integrated hierarchical representation (ihr) of program wherein ihr file is available for debugging and optimizing during target execution
US5187789A (en) * 1990-06-11 1993-02-16 Supercomputer Systems Limited Partnership Graphical display of compiler-generated intermediate database representation
US5325533A (en) * 1993-06-28 1994-06-28 Taligent, Inc. Engineering system for modeling computer programs
US5519866A (en) * 1993-06-28 1996-05-21 Taligent, Inc. Method and apparatus of incrementally linking components of a modeled computer program

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002082922A (ja) * 2001-06-14 2002-03-22 Digital Vision Laboratories Corp 並列分散処理方法

Also Published As

Publication number Publication date
JP4195479B2 (ja) 2008-12-10
EP0688448B1 (en) 1997-10-08
AU6018794A (en) 1995-01-17
JP2007012088A (ja) 2007-01-18
WO1995000901A1 (en) 1995-01-05
CA2144874A1 (en) 1995-01-05
EP0688448A1 (en) 1995-12-27
CA2144874C (en) 2000-07-18
DE69406113D1 (de) 1997-11-13
CN1105802A (zh) 1995-07-26
US5758160A (en) 1998-05-26

Similar Documents

Publication Publication Date Title
JPH08512152A (ja) インクリメンタル生成システム
JP7090778B2 (ja) 影響分析
US5325533A (en) Engineering system for modeling computer programs
US5956479A (en) Demand based generation of symbolic information
US5519866A (en) Method and apparatus of incrementally linking components of a modeled computer program
US7171646B2 (en) Generating source code for object oriented elements with language neutral transient meta model and correlating display of names, symbols and code
US7526750B2 (en) Object-based systematic state space exploration of software
US20050204344A1 (en) Program analysis device, analysis method and program of same
Valente et al. A semi-automatic approach for extracting software product lines
US20070169023A1 (en) Restructuring computer programs
US6345387B1 (en) Coherent object system architecture
US9311077B2 (en) Identification of code changes using language syntax and changeset data
Kahani et al. Comparison and evaluation of model transformation tools
WO2018222327A1 (en) Automated or machine-enhanced source code debugging
Olsen Jr et al. Research directions for user interface software tools
Gabrijelčič Delphi High Performance: Build fast Delphi applications using concurrency, parallel programming and memory management
McGrath C# Programming in easy steps: Updated for Visual Studio 2019
US20230418574A1 (en) Using a semantic tree of a compiler to execute a semantic code query against source code
Fasie An eclipse based development environment for raise
II User's Manual
POWER TECHNOLOGIES OF PROGRAMMING
Lee Pro Objective-C
CN118210845A (zh) 一种基于Spark计算引擎的环境隔离方法、装置及设备
CN117687913A (zh) 一种分布式事务测试方法、装置、电子设备及存储介质
Bendisposto A framework for semantic-aware editors in eclipse