JP2012230710A - 計算機が実行可能なコードを生成する方法及び計算機が実行可能なコードを生成するために使用されるコンポーネントを提供する方法 - Google Patents
計算機が実行可能なコードを生成する方法及び計算機が実行可能なコードを生成するために使用されるコンポーネントを提供する方法 Download PDFInfo
- Publication number
- JP2012230710A JP2012230710A JP2012162763A JP2012162763A JP2012230710A JP 2012230710 A JP2012230710 A JP 2012230710A JP 2012162763 A JP2012162763 A JP 2012162763A JP 2012162763 A JP2012162763 A JP 2012162763A JP 2012230710 A JP2012230710 A JP 2012230710A
- Authority
- JP
- Japan
- Prior art keywords
- component
- components
- agent
- processing system
- code
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical 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)
- Information Transfer Between Computers (AREA)
- Communication Control (AREA)
Abstract
【解決手段】方法は、所望の機能に基づいてコンポーネントの組み合わせを定義することを含み、コンポーネントの組み合わせは、実装されるコンポーネント及びコンポーネント間の接続を示す。そして、コンポーネントの組み合わせを使用して、コンポーネントの組み合わせにおけるコンポーネントが実装され、コンポーネントは接続を使用して通信し且つコードフラグメントを生成する。コンポーネントのうちの少なくとも2つは、コンテキストを確定するように通信し、コードフラグメントのうちの1つ又は複数は、少なくとも部分的に、確定されたコンテキストに基づく。生成されたコードフラグメントは結合され、それにより、適当な処理システムによって実行されると処理システムに対して所望の機能を実行させる実行可能コードを形成する。
【選択図】図1
Description
本発明は、コンピュータによって実行可能なコードを生成する方法及び装置に関し、特に、各々が、それぞれのコードの断片の生成等、データを処理する各サービスに対応するコンポーネントを使用して、コンピュータによって実行可能なコードを生成する方法及び装置に関する。
本明細書におけるいずれの従来技術への参照も、従来技術が通常の一般的な常識を成すと認めるものではなく、又は示唆ものでもない。また、そのように解釈されるべきではない。
・バグ又はミス−高レベルのソフトウェアの欠陥。
・ソフトウェアの肥大化−実行可能コードの容量が、その機能に不相応に大幅に増大すること。
・複雑性の限界−増大する要求による複雑性が、こうしたシステムを設計する能力を脅かす。
・予測不能性−開発コスト、スケジュール、パフォーマンス、又は資源使用量が予測不能である。
・生産性−過去10年において開発者の生産性は著しく向上していない。
・プログラマをマシンコードから切り離すことを目指した、第3世代言語、第4世代言語及び第5世代言語の開発が、初期のいくらかの生産性における成功に貢献した。プログラム言語が今日まで、生産性向上を追求するにあたっての核心であり続けているほどに、初期の生産性増大は成功した。
・データを、そのデータの処理に使用されるコードと一緒にカプセル化する新しいタイプの抽象化であるオブジェクト指向プログラミングが、許容を達成しているが、いかなる有効な生産性の向上も提供していない。
・大きなソフトウェアの開発の複雑性の管理を支援することを目指したコンピュータ支援ソフトウェア工学(CASE)。
・以前の知的努力を再使用しようとする取り組みであるコード再使用。
・数学的証明を利用して正確性を検証するとともに、ソフトウェア開発に伴う多数の欠陥及びバグに取り組む、形式的方法。
・履歴コードから知的内容を抽出するデコンパイラ。
第1の幅広い形態において、本発明は、所望の機能を実行する実行可能コードを生成する方法を提供し、本方法は、
a)所望の機能に基づいて、
i)実装されるコンポーネント、
ii)コンポーネント間の接続
を示すコンポーネントの組み合わせを定義すること、
b)コンポーネントを組み合わせたコンポーネントであって、該コンポーネントのうちの少なくともいくつかは接続を使用して通信し且つコードフラグメントを生成し、コンポーネントのうちの少なくとも2つは条件を確定するために通信し、コードフラグメントのうちの1つ又は複数は、少なくとも部分的に、確定された条件に基づいたコンポーネントが実装されるようにすること、
c)生成されたコードフラグメントを結合することによって、実行可能コードを形成すること、
d)実行可能コードを計算機の処理システムに提供することよって該実行可能コードの該処理システムによる実行により、該処理システムが所望の機能を実行するようにすること
を含む。
a)前記条件、
b)前記コンポーネントの組み合わせ、
c)コンポーネント間の1つ又は複数の合意、及び
d)1つ又は複数のネゴシエーションによる設定
のうちの少なくとも1つによって定義される方法で前記コードフラグメントを連結することによって形成される。
a)コンポーネントのうちの1つ又は複数、及び
b)処理システム
のうちの少なくとも1つによって実行される。
a)データ部分をシーケンスの所定の場所に追加すること、
b)シーケンス内の第1の場所から第2の場所にデータ部分を移動させること、
c)シーケンスからデータ部分を除去すること、及び
d)シーケンスのデータ部分を変更すること
を含む。
a)定義されたコンポーネントの組み合わせにおける他のコンポーネント、
b)定義されたコンポーネントの組み合わせにおける他のコンポーネントとの合意、
c)定義されたコンポーネントの組み合わせにおける他のコンポーネントとのネゴシエーションの結果、及び
d)偶発的要因
のうちの少なくとも1つを含む。
a)ディザリング、
b)メッシング、及び
c)遮蔽
のうちの少なくとも1つによる条件に依存することを含む。
a)コンポーネントの組み合わせ、及び
b)1つ又は複数のネゴシエーションによる設定
のうちの少なくとも1つによって定義される。
a)所定のデータ処理サービス、及び
b)それぞれのコードフラグメントの生成
のうちの少なくとも1つを実行させる、コンポーネントサーバを実装する。
a)コンポーネントの仕様を受け取ること、及び
b)コンポーネントの仕様を使用してコンポーネント要求を生成し、コンポーネント要求は、コンポーネント処理システムに転送されることによって、コンポーネントに対応するコンポーネントサーバの実装がもたらされること
を含む。
a)少なくとも1つのエージェントを実装させること、及び
b)少なくとも1つのエージェントに対し、1つ又は複数の他のコンポーネント処理システムによって実装される1つ又は複数のエージェントと通信させるようにさせることを含む。
a)利用可能なコンポーネントのリストからコンポーネントを選択すること、及び
b)コンポーネントのそれぞれのエージェント間の接続を定義すること
を含む。
a)1つ又は複数の選択されたコンポーネントのグラフィカル表現を生成させること、及び
b)ユーザから受け取られた入力コマンドに応じてグラフィカル表現を処理することによって、コンポーネントの組み合わせを定義させること
を含む。
a)選択されたコンポーネントが1つ又は複数の選択肢を有するか否かを判断すること、及び
b)肯定的な判断に応じて、
i)選択肢のうちの1つ又は複数を設定すること、及び
ii)各設定された選択肢の指示を、対応するコンポーネントを実装するために使用されるコンポーネント処理システムに転送すること
を含む。
a)コンポーネントの仕様から1つ又は複数の選択肢を確定すること、
b)選択肢のうちの1つ又は複数を設定すること、及び
c)設定された選択肢に基づいて更新されたコンポーネントの仕様を確定すること
を含む。
a)いくつかのコンポーネントの詳細を確定させること、及び
b)詳細を使用して第1の処理システムを介して利用可能なコンポーネントのリストをユーザに提供させること
を含む。
a)それぞれのデータ処理サービスの指示、
b)コンポーネントのグラフィカル表現、及び
c)他のコンポーネントに必要な任意の接続の指示
のうちの少なくとも1つを含む、コンポーネントの仕様を含む。
a)コンポーネントの実装に関連する1つ又は複数の基準を表すパフォーマンス情報を確定させること、及び
b)パフォーマンス情報をユーザに提供し、ユーザはパフォーマンス情報に従ってコンポーネントを選択する、提供させること
を含む。
a)コンポーネントを実装するエンティティの指示、
b)エンティティが格納される位置の指示、
c)コンポーネントを実装するための時間の指示、
d)それぞれのコンポーネントを実装することに関するコストの指示、及び
e)コンポーネントの出来を示す格付け
のうちの少なくとも1つを含む。
a)コンポーネントを実装するそれぞれのエンティティに対し利益の少なくとも一部を提供すること、及び
b)第2の処理システムの運営者に対し、利益の少なくとも一部を保持させること
を含む。
a)コンポーネントの組み合わせから
i)実装されるコンポーネント、
ii)コンポーネントのそれぞれの間の接続
を確定すること、
b)各コンポーネントに対し、任意の必要な接続を表す接続データを含み、コンポーネントの実装を要求するコンポーネント要求を生成すること、
c)コンポーネント要求をコンポーネント処理システムに転送することによりコンポーネント処理システムのうちの少なくともいくつかに対し接続を使用して通信させ且つコードフラグメントを生成させ、コンポーネント処理システムのうちの少なくとも2つは、条件を確定するために通信し、コードフラグメントのうちの1つ又は複数は、少なくとも部分的に、確定された条件に基づいていること、
d)コンポーネント処理システムからコードフラグメントを受け取り、コードフラグメントは、結合されると、実行可能コードを形成すること
を含む。
a)実行可能コードを形成するコードフラグメントを結合すること、及び
b)所定の順序でフラグメントを受け取ること
のうちの少なくとも1つを含む。
a)利用可能なコンポーネントのリストからコンポーネントを選択すること、及び
b)コンポーネントのそれぞれのエージェントの間の接続を定義すること
を含む。
a)コンポーネントの仕様を受け取ること、及び
b)コンポーネントの仕様を使用してコンポーネント要求を生成し、コンポーネント要求はコンポーネント処理システムに転送されることによって、コンポーネントに対応するコンポーネントサーバの実装がもたらされること
を含む。
a)任意の必要な接続を表す接続データを含むコンポーネント要求を受け取ること、
b)接続を使用して他のコンポーネント処理システムと通信することによって、条件を確定すること、
c)確定された条件に基づいてコードフラグメントを生成すること、及び
d)コードフラグメントを別の処理システムに転送し、コードフラグメントは、他のコードフラグメントと結合されると実行可能コードを形成し、実行可能コードは、適当な処理システムによって実行されると、処理システムに対し所望の機能を実行させること、
を含む。
a)コンポーネントの組み合わせを確定し、コンポーネントの組み合わせは少なくとも2つのコンポーネントシーケンスを含み、各コンポーネントシーケンスはデータ処理サービスを提供するそれぞれの方法を表し、コンポーネントの組み合わせは、
ii)実装されるコンポーネント、
ii)コンポーネント間の接続
を示し、
b)コンポーネントの組み合わせにおけるコンポーネントが実装されるようにし、コンポーネントのうちの少なくともいくつかは接続を使用して通信し、且つ各コンポーネントシーケンスに対応する少なくとも1つのコードフラグメントを含むコードフラグメントを生成すること、
c)生成されたコードフラグメントを結合することによって実行可能コードを生成すること、及び
d)実行可能コードを処理システムに提供し、実行可能コードの処理システムによる実行により、処理システムが、各コンポーネントシーケンスに対応する生成されたコードフラグメントのうちの少なくとも1つを実行することによってコンポーネントサーバを実装するようにすることによって、データ処理をそれぞれの方法で提供すること
を含む。
a)所定のデータ処理サービス、及び
b)それぞれのコードフラグメントの生成
のうちの少なくとも1つを実行させる実行可能コードから形成される。
a)コンポーネント要求を受け取らせること、及び
b)本発明の第1の幅広い形態の方法によって生成されるアプリケーションソフトウェアを実行させること
を含む。
a)コンポーネントの組み合わせから
i)実装されるコンポーネント、
ii)コンポーネントのそれぞれの間の接続
を確定すること、
b)各コンポーネントに対し、コンポーネントの実装を要求するコンポーネント要求を生成し、コンポーネント要求は、任意の必要な接続を表す接続データを含むこと
c)コンポーネント要求をコンポーネント処理システムに転送することによって、コンポーネント処理システムのうちの少なくともいくつかに対し、接続を使用して通信させ且つ各コンポーネントシーケンスに対応する少なくとも1つのコードフラグメントを生成させること、及び
d)コンポーネント処理システムからコードフラグメントを受け取り、コードフラグメントは、結合されると、実行可能コードを形成し、実行可能コードは、適当な処理システムによって実行されると、処理システムに対しコンポーネントサーバを実装させ、コンポーネントサーバは、生成されたコードフラグメントのうちの少なくとも1つを実行することによりデータ処理サービスを提供すること
を含む。
a)任意の必要な接続を表す接続データを含むコンポーネント要求を受け取ること、
b)接続を使用して他のコンポーネント処理システムと通信すること、
c)確定された条件に基づいてコードフラグメントを生成すること、及び
d)コードフラグメントを別の処理システムに転送し、コードフラグメントは、他のコードフラグメントと結合されると実行可能コードを形成し、実行可能コードは、適当な処理システムによって実行されると、処理システムに対しコンポーネントサーバを実装させ、コンポーネントサーバは生成されたコードフラグメントのうちの少なくとも1つを実行し、それによりデータ処理サービスを提供すること
を含む。
a)第1のコンポーネントに関連する第1のネゴシエーションデータを確定すること、第1のネゴシエーションデータは、
i)少なくとも1つのネゴシエーション選択肢、及び
ii)各ネゴシエーション選択肢に関連するそれぞれの重み付け
を含む第1のネゴシエーションリストを示し、
b)第2のコンポーネントに関連する第2のネゴシエーションデータを確定すること、第2のネゴシエーションデータは
i)少なくとも1つのネゴシエーション選択肢、及び
ii)各ネゴシエーション選択肢に関連するそれぞれの重み付け
を含む第2のネゴシエーションリストを示し、
c)第1のネゴシエーションリストを第2のネゴシエーションリストと比較すること、並びに
d)比較及びそれぞれの重み付けの結果を使用してネゴシエーションの選択肢のうちの1つを選択すること
を含む。
a)両ネゴシエーションリストに共通の任意のネゴシエーション選択肢を選択すること、及び
b)各選択された共通のネゴシエーション選択肢に対し、各ネゴシエーションリストにおけるそれぞれの重み付けから形成される結合された重み付けを確定すること、及び
c)確定された結合された重み付けに従って共通のネゴシエーションの選択肢のうちの1つを選択すること
により、処理システムにおけるネゴシエーションリストを比較することを含む。
a)各ネゴシエーションリストにおける重み付けを正規化すること、
b)各ネゴシエーションリストにおけるそれぞれの重み付けの平均を確定することにより、結合された重み付けを確定すること
を含む。
a)結合された重み付けが最も高い重み付けを有する共通のネゴシエーションの選択肢を選択すること、並びに
b)少なくとも2つの共通のネゴシエーションの選択肢が等しく最も高い結合された重み付けを有する場合、
i)少なくとも2つの共通のネゴシエーションの選択肢の各々に対して確定される平均自乗誤差、及び
ii)任意の規則の使用
のうちの少なくとも1つを使用すること
によって選択することを含む。
a)コンポーネント要求を受け取ること、及び
b)コンポーネント要求に応じて第1のコンポーネントサーバを実装すること
を含む。
a)少なくとも1つのエージェントを実装すること、及び
b)少なくとも1つのエージェントに対し、第2のコンポーネントサーバによって実装される1つ又は複数のエージェントと通信させることよって、第2のネゴシエーションデータを確定すること
を含む。
a)接続要求の一部として接続データを受け取ることであって、接続データは、第2のコンポーネントサーバに関連する1つ又は複数のエージェントのエージェントアドレスを含む、受け取ること、及び
b)接続要求に応じて第1のコンポーネントサーバを実装すること
を含む。
a)ネゴシエーション、
b)所定のデータ処理サービス、及び
c)それぞれのコードフラグメントの生成
のうちの少なくとも1つを実行させる実行可能コードから形成される。
a)所望の機能に基づいてコンポーネントの組み合わせを定義し、コンポーネントの組み合わせは、ネゴシエーションを実行する少なくとも2つのコンポーネントを含むこと、及び
b)コンポーネントの組み合わせにおけるコンポーネントが実装されるようにし、コンポーネントのうちの少なくともいくつかが通信して、結合されると実行可能コードを形成するコードフラグメントを生成し、少なくとも2つのコンポーネントは、共通のネゴシエーションの選択肢を確定するために通信するようになっており、コードフラグメントのうちの少なくとも1つは、確定されたネゴシエーションの選択肢に少なくとも部分的に依存して生成されること
を含む。
a)コンポーネントの組み合わせから
i)実装されるコンポーネント、
ii)コンポーネントのそれぞれの間の接続
を確定すること、
b)各コンポーネントに対し、コンポーネントの実装を要求するコンポーネント要求を生成し、コンポーネント要求は、任意の必要な接続を表す接続データを含むこと、
c)コンポーネント要求をコンポーネント処理システムに転送することによって、コンポーネント処理システムの少なくともいくつかに対し、接続を使用して通信させ且つコードフラグメントを生成させ、コンポーネント処理システムのうちの少なくとも2つは、いくつかの利用可能なネゴシエーションの選択肢から共通のネゴシエーションの選択肢を確定するために通信し、コードフラグメントのうちの1つ又は複数は、少なくとも部分的に共通のネゴシエーション選択肢に基づいていること、
d)コンポーネント処理システムからコードフラグメントを受け取り、コードフラグメントは、結合されると、実行可能コードを形成すること
を含む。
a)第1のコンポーネントに関連する第1のネゴシエーションデータを確定させ、第1のネゴシエーションデータは
i)少なくとも1つのネゴシエーション選択肢、及び
ii)各ネゴシエーション選択肢に関連するそれぞれの重み付け
を含む第1のネゴシエーションリストを示し、
b)コンポーネントに関連する第2のネゴシエーションデータを確定させ、第2のネゴシエーションデータは
i)少なくとも1つのネゴシエーション選択肢、及び
ii)各ネゴシエーション選択肢に関連するそれぞれの重み付け
を含む第2のネゴシエーションリストを示し、
c)第1のネゴシエーションリストを第2のネゴシエーションリストと比較させ、且つ、
d)比較の結果及びそれぞれの重み付けを使用してネゴシエーション選択肢のうちの1つを選択させる、コンピュータによって実行可能なコードによって具体化される。
a)第1のコンポーネント群に関連する第1のネゴシエーションデータを確定し、第1のネゴシエーションデータは
i)少なくとも1つのネゴシエーション選択肢、及び
ii)各ネゴシエーション選択肢に関連するそれぞれの重み付け
を含む第1のネゴシエーションリストを示し、
b)第2のコンポーネント群に関連する第2のネゴシエーションデータを確定し、第2のネゴシエーションデータは
i)少なくとも1つのネゴシエーション選択肢、及び
ii)各ネゴシエーション選択肢に関連するそれぞれの重み付け
を含む第2のネゴシエーションリストを示し、
c)第1のネゴシエーションリストを第2のネゴシエーションリストと比較すること、及び
d)比較の結果及びそれぞれの重み付けを使用してネゴシエーション選択肢のうちの1つを選択すること
を含む。
a)所望の機能に基づいてコンポーネントの組み合わせを定義することであって、コンポーネントの組み合わせは、ネゴシエーションを実行する少なくとも2つのコンポーネント群を含み、コンポーネントの組み合わせは、
i)実装されるコンポーネント
ii)コンポーネント間の接続
を示し、
b)コンポーネントの組み合わせにおけるコンポーネントが実装されるようにし、コンポーネントのうちの少なくともいくつかは、接続を使用して通信し且つコードフラグメントを生成し、コードフラグメントは、結合されると実行可能コードを形成し、少なくとも2つのコンポーネント群は、共通のネゴシエーション選択肢を確定するために通信するようになっており、コードフラグメントのうちの少なくとも1つは、確定されたネゴシエーション選択肢に少なくとも部分的に依存して生成されること
を含む。
a)1つ又はコンポーネント、及び
b)1つ又は複数のコンポーネント群
のうちの少なくとも1つから形成される。
(a)少なくとも1つの下位コンポーネントの組み合わせを表す内部略図を確定すること、
(b)内部略図に従って各下位コンポーネントの実装をもたらすこと、
(c)各下位コンポーネントが実装されると、各下位コンポーネントの終了をもたらすこと、
(d)必要に応じてステップ(a)〜(c)を繰り返すこと
を含む。
(a)1つ又は複数の下位コンポーネントの組み合わせを表す少なくとも1つの内部仕様を定義し、各下位コンポーネントは、それぞれのデータ処理サービスを表し、それにより定義された組み合わせは必要なサービスを表すこと、
(b)いくつかのエージェントを定義し、エージェントのうちの少なくとも1つは、受け取ったデータに応じて内部略図を選択するようになっており、エージェントは、内部仕様の終了時に存続するようになっていること、及び
(c)少なくとも1つの内部略図及びエージェントを定義する仕様を生成すること
を含む。
(a)1つ又は複数の他のコンポーネントと通信すること、及び
(b)通信に従って内部仕様を選択すること
を含む。
(a)下位コンポーネントの各々に対して通知を生成させること、
(b)通知の指示を終了コンポーネントに転送すること、
(c)終了コンポーネントに対し、指示を受け取ることに応じて終了命令を生成させること、及び
(d)終了命令を下位コンポーネントに転送すること
を含む。
(a)下位コンポーネントの組み合わせを表す内部仕様を確定し、下位コンポーネントは少なくとも1つの局所基本コンポーネントを含むこと、
(b)下位コンポーネントの各々の実装を、
(i)各非局所基本コンポーネントに関連するそれぞれの処理システムにコンポーネント要求を転送すること、及び
(ii)局所基本コンポーネントを表す所定の実行可能コードを実装すること
によりもたらすこと、並びに
(c)下位コンポーネントに対し、内部仕様に従って通信させることによって、データ処理サービスを実行すること
を含む。
(a)コード要求を定義するコンポーネントの組み合わせを確定し、コンポーネントは少なくとも1つの局所基本コンポーネントを含むこと、及び
(b)コンポーネントの組み合わせを実装することによって定義されたデータ処理のシーケンスを実行し、それによってコンピュータコードが生成され、局所基本コンポーネントは処理システムを使用して所定のコードを実行することにより実装されること
を含む。
(a)内部仕様内の下位コンポーネント間で転送されるデータを監視し、
(b)処理システムからデータをロードし、且つ、
(c)処理システムにデータを保存する
ことを含む。
(a)コンポーネントの完了を示す指示を受け取ること、及び
(b)終了命令がコンポーネントに転送されるようにし、いくつかのコンポーネントは終了命令に応じて終了すること
を含む。
(a)通知指示を受け取ることに応じて終了命令を生成し、且つ
(b)いくつかのコンポーネントのうちの少なくとも1つに終了命令を転送し、コンポーネントは終了命令に応じることによって終了する。
(a)いくつかの所定の規則を確定すること、及び
(b)所定の規則に従って終了命令を生成すること
を含む。
(a)通知指示を受け取ること、及び
(b)通知指示を使用していくつかの所定の規則を確定すること
を含む。
(a)いくつかのコンポーネントのうちの1つ、
(b)いくつかのコンポーネントのうちの複数、及び
(c)いくつかのコンポーネントの各々
を終了させることを含む。
(a)エージェントの各々に関連するそれぞれのバンドリングコンポーネントを提供すること、
(b)各バンドリングコンポーネントに対し、
(i)それぞれのエージェントに対する接続情報を確定させ、
(ii)エージェントバンドルに対して接続情報を追加させ、
(iii)エージェントバンドルに提供されるカウンタをインクリメントさせること、及び
(c)エージェントバンドルを第2のコンポーネントに転送し、第2のコンポーネントはエージェントバンドルに応じて接続情報を確定すること
を含む。
(a)エージェントバンドルを受け取ること、
(b)それぞれのエージェントに対して接続情報を確定すること、
(c)接続情報をエージェントバンドルに追加すること、
(d)エージェントバンドルに提供されるカウンタをインクリメントすること、及び
(e)変更されたエージェントバンドルを提供すること
を含む。
(a)エージェントバンドルを受け取ること、
(b)エージェントの数をカウンタから確定すること、及び
(c)対応する数のエージェントを実装することによって、その数のエージェントが処理されることが可能になること
を含むことができる。
(a)コンポーネントの組み合わせを確定し、コンポーネントの組み合わせは一連のデータ処理を定義し、且つ所望の機能が実現され得るようにする要求に従って定義されること、
(b)コンポーネントの組み合わせを、
(i)組み合わせにおける各コンポーネントに対応するコンポーネントサーバの実装をもたらし、各コンポーネントサーバは処理システムによって実装されること、
(ii)各コンポーネントサーバに対し、定義された一連のデータ処理に従ってそれぞれのデータ処理サービスを実行させ、コンポーネントサーバのうちの少なくともいくつかは、データシーケンスと対話することによってそれぞれのサービスを実行し、コンポーネントサーバの少なくともいくつかは
(1)1つ又は複数のコンポーネントサーバと通信すること、及び
(2)さらなるコンポーネントの実装をもたらすこと
のうちの少なくとも1つによってサービスを実行すること
によってコンピュータコードを生成するように実装すること、
(c)一連のデータ処理を実行する結果として且つデータシーケンスから、結果としてのデータシーケンスを取得し、結果としてのデータシーケンスはコンピュータコードであること、及び
(d)コンピュータコードを処理システムに提供し、処理システムによるコンピュータコードの実行により、処理システムは所望の機能を実行すること
を含む。
コンピュータによって実行可能なコードを生産するプロセスの一例について、これより図1を参照して概説する。
・開始時の実行可能ファイルが既知の状態。このため、たとえば、結果としてのコンピュータによって実行可能なコードがアプリケーションである場合、開始時のアプリケーションの既知の状態はオペレーティングシステムによって確定される。
・前の命令からのレジスタの既知の状態
・スタック及びメモリの既知の状態
・レジスタ、スタック及びメモリの割り当て
・プロジェクト内のそれ自体(コンポーネント)の番号
・どのコンポーネントが自分のコンポーネントに接続されるか
・コードを置くべき場所
使用の際、コンポーネントは、所定のデータ処理サービスを提供するように動作する。データ処理サービスには、データの処理又は実行可能ファイルの一部の生成が含まれてもよい。したがって、コンポーネントが実装される方法は、処理されるデータのタイプ、実行される処理のタイプ及びデータが処理されるコンテキスト等、複数の要素によって決まる。
要件の集まりを、プロトコルに分解することができ、ネゴシエーションはそれに関して実施され、異なるプロトコルは選択肢の異なるリストを定義する。
negotiateコンポーネントをカスケードにすることによりディシジョンツリーを作成することができる。
ネゴシエーションを実行する代りに、強制されたネゴシエーションポジションを使用することができる。これを、たとえば単一ネゴシエーション選択肢のみが定義されたプロトコルを実装することによって実現することができる。別の方法として、これを、他のコンポーネントが所定の選択肢に従って直接通信するようにnegotiationコンポーネントを単に除去することによって実現してもよい。
ネゴシエーションが2つのコンポーネント間で直接実行されることに加えて、より多くのコンポーネントの間で多重ネゴシエーションを実行することも可能である。ここで、この一例を、ADDコンポーネントの一例を示す図10を参照して説明する。
使用の際、ビルドプロセス中に仕様が実装されると、コンポーネントを、それぞれのコンポーネントサーバによってそれぞれのコンポーネントインスタンスとして実装することができる。コンポーネントサーバは、通常、コンポーネントサービスを構築し送るために使用されるコンポーネントの内部仕様を具体化する。この内部仕様は、それぞれのコンポーネント内に含まれる下位コンポーネントの相対編成を表し、結果は、コンポーネントサービスを送ることである。
状況によっては、連続して複数回コンポーネントを実装することができることが有用である。これを実現するために、コンポーネントが順に複数回定義される仕様を構築することが可能である。しかしながら、状況によっては、これは、問題に対する適当なソリューションを表していないことが理解されよう。
コンポーネントが具体化されたサービスを実行すると、コンポーネントインスタンスは終了する。コンポーネントが終了していない場合、コンポーネントインスタンスがコンポーネントサーバで生成されると、これは無期限に持続することになる。その結果、コンポーネントサーバは、使用済みのそれ以上必要でないコンポーネントインスタンスによって過負荷状態となる。これを回避するために、コンポーネントを、適当なイベントが発生した時に実装サーバに対しそれぞれのコンポーネントインスタンスを閉じさせることにより終了させる。
バンドリングの一例については、以前、本出願人による同時係属出願PCT/AU03/01474号において述べられている。
上述した例のほとんどにおいて、各エージェントは、他の1つのエージェントのみと相互接続するようになっている。この例では、多重接続が必要な場合、これがバンドリングを用いて実現される。
一例では、エージェントは、異なるエージェントと順に通信することによって動作することができる。したがって、エージェントが他の多くのエージェントと接続する場合、通信は適当な順序で実行されることが確実である必要がある。
多点エージェントが複数の異なるエージェントとネゴシエートしている場合、これを、複数の方法のうちの任意の1つで行うことができる。
概して、各コンポーネントは、上述したように、適当な処理システムによってホストされる実行可能ソフトウェアから形成されるコンポーネントサーバを利用して実装される。コンポーネントサーバの目的は、コンポーネントインスタンスが、通常コードフラグメントの生成を含むことができる所望のデータ処理サービスを実行するのを可能にすることである。
コンポーネントの柔軟性を向上させるために、コンポーネント供給者は、複数の選択肢がコンポーネントの一部として実装されるのを可能にすることができ、それにより、コンポーネントによって提供される機能の範囲が大幅に増大する。
コンポーネント提供者に対し追加のセキュリティを提供するために、プロトコル更新システムを提供することが可能である。この場合、これによって、コンポーネントによって使用される通信プロトコルが、更新されるべきエージェントメッセージのフォーマット及び取得命令、並びに任意の暗号化等を通信することができるようになる。これを使用して、コンポーネントサーバにおける攻撃、及び個人の提供されたコンポーネントの機能をリバースエンジニアリングしようとする不正な取得命令の利用を防止することにより、セキュリティを提供することができる。
上述したように、コンポーネントのコンテキストは、コンポーネントを使用してその特定の機能を実行することができる方法を制御するために使用される。したがって、これは、コンテキストが異なる毎に異なる命令を表す異なるバイナリコードを生成することに対応することができる。別の方法として、それは、コンポーネントを実装している時に異なる内部仕様をロードすることを構成してもよい。
・仕様における供給者自身のコンポーネントの2つ以上の存在、それは、このタイプのいくつかの又はすべてのコンポーネントの結果としてのコードフラグメントに影響を与える可能性がある
・仕様における他のコンポーネントの存在又は不在
・特定のコンテキストに対する特定の要求
・他のコンポーネントとの合意
・コンポーネントに対して定義された選択肢
・資源の場所及び可用性
・実行ファイルが実行されることになるターゲット環境
ここで、上述した概念を利用する2つの特定の実施例についてより詳細に説明する。
ここで、図14A、図14B及び図14Cを参照して、カウントダウンカウンタを実装することができるようにする多段階トランザクションの使用の一例について説明する。
・コンポーネント1210−文字列から値を減算する
・コンポーネント1220−受け取った文字列を複製する
・コンポーネント1230−文字列を値と比較する
・コンポーネント1240−論理AND
・コンポーネント1245−終了コンポーネント
・コンポーネント1250−メモリコンポーネント
・コンポーネント1260−メモリコンポーネント
ここで、上述した機能を組み込んだ仕様の特定の一例についてより詳細に説明する。
・Negotiateコンポーネント−上述したように、これはネゴシエーションサービスを提供する
・LUT−これは、入力エージェントI、テーブルエージェントT及び出力エージェントO並びに任意にエラーを示すエラーエージェントEを含む4つのエージェントを利用する。使用の際、エージェントIを介して受け取られた入力は、テーブルエージェントTを介してルックアップテーブルにアクセスするために使用され、出力の指示は出力エージェントOを介して提供される
・Watch−上述したwatchコンポーネントは、診断の目的で監視機能を提供するためにトラフィックをスヌープすることができる
・Bun3−Bun3は、PCT/AU03/01474号で示す同時係属出願に記載されているbundleコンポーネントであり、エージェントBを介してエージェントメッセージのバンドルを受け取り、エージェント1、2、及び3を介してバンドルの一部から形成される別個のメッセージを提供するように動作する
・ADD−数学的加算
・RND−数学的四捨五入
・EQ−数学的等号
・DUP−複製
・sinkコンポーネントのIDエージェントがsourceコンポーネントのEQコンポーネントのエージェント1に接続されるようにエージェント1受け渡し
・sourceコンポーネントのDUPコンポーネントの出力がsinkコンポーネントのwatchコンポーネントのエージェントIに接続されるようにエージェント2受け渡し
・各negotiationコンポーネントのInエージェントが相互接続されるようにエージェント3受け渡し
・Build ASM−これは、Codeエージェントを介してコードを送りState Inエージェント及びState Outエージェントを介してプロセッサ及び状態情報を送るための容易なアクセスを可能にすることにより、ビルドシステムとの通信を支援するコンポーネントである。build ASMはまた、IDエージェントを介してビルドシステム内の位置の指示も提供する。
・Header−このコンポーネントは、buildエージェントを介して受け取られるコードにヘッダを添付し、それにより機能コードがCode Outエージェントを介して出力され得るようにする。
・Bcat−このコンポーネントは、多くのコード生成コンポーネントからの出力をビルドシステム内で連結することができるように、複雑なbuildエージェントを分割する。
1)headerコンポーネントによってビルドバンドルが作成され、そこから、内部エージェントコードを介して送られるコードが抽出される
2)ビルドバンドルは、Bcatバンドルを介してelementコンポーネント及びsysexitコンポーネントのbuildエージェントに伝播される
3)ビルドバンドルは、それぞれのbuild ASMコンポーネントによって使用され、buld ASMコンポーネントは、ID値を抽出し、これをsourceコンポーネント及びsinkコンポーネントの各々に転送する
4)sinkコンポーネント及びsourceコンポーネントは、上述したように動作することにより、それらが仕様において隣接するか否かを判断する
5)elementコンポーネントにおいて
(a)確定されたネゴシエーション選択肢がDUPコンポーネントによって2回複製され3つのLUTコンポーネントに転送される
(b)LUTコンポーネントは、それぞれのtailコードテーブル、valueコードテーブル及びheadコードテーブルにアクセスし、headコード及びtailコードをCATコンポーネントに出力し、valueコードをnumber sourceに出力する
(c)number sourceは、任意に、valueコードをsysexitコンポーネントのnumber sinkに提供する。
(d)CATコンポーネントは、headコードを先頭に追加しtailコードを添付することによって、幾分かのメモリを確保し、それを初期化し、ネゴシエーション中の合意としてコピーを送るコードソリューションを形成し、このソリューションをbuild ASMコンポーネントのcodeエージェントに提供する
(e)build ASMコンポーネントは、結果としてのコードを、Bcatコンポーネントに転送されるビルドバンドルに組み込む
6)sysexitコンポーネントにおいて
(a)確定されたネゴシエーション選択肢は、DUPコンポーネントによって複製され2つのLUTコンポーネントに転送される
(b)LUTコンポーネントは、それぞれのtailコードテーブル及びheadコードテーブルにアクセスし、CATコンポーネントに転送される対応する出力を生成する
(c)CATコンポーネントは、elementコンポーネントのnumber sourceから受け取られた合意にheadコードを先頭に追加しtailコードを添付することによってコードソリューションを構築し、そのソリューションをbuild ASMコンポーネントのcodeエージェントに提供する
(d)build ASMコンポーネントは、結果としてのコードを、Bcatコンポーネントに転送されるビルドバンドルに組み込む
7)Bcatコンポーネントは、elementコンポーネント及びsysexitコンポーネントからのコードを連結し、結果をheaderコンポーネントに転送する
8)headerコンポーネントはヘッダを生成し、出力コードを提供する。
Datum dd 42
SECTION .text
Mov ecx,[datum]
mov eax,1
Int 0x80
; end of sys_exit
GLOBAL _start
SECTION .text
_start:
SECTION .data
datum dd 42
SECTION .text
mov ecx,[datum]
mov ebx,ecx
mov eax,1
int 0x80
; end of sys_exit
Datum dd 42
SECTION .text
mov ebx,[datum]
int 0x80
; end of sys_exit
GLOBAL _start
SECTION .text
_start:
SECTION .data
Datum dd 42
SECTION .text
mov ebx,[datum]
mov eax,1
int 0x80
; end of sys_exit
<option> <value>unsigned_32_actual_ebx</value> <weight>9</w eight> <type>compound</type> </option>
<option> <value>unsigned_32_actual_ecx</value> <weight>4</w eight> <type>compound</type> </option>
<option> <value>unsigned_32_actual_edx</value> <weight>4</w eight> <type>compound</type> </option>
<option> <value>unsigned_32_actual_edi</value> <weight>4</w eight> <type>compound</type> </option>
<option> <value>unsigned_32_actual_esi</value> <weight>4</w eight> <type>compound</type> </option>
<option> <value>unsigned_32_actual_ebp</value> <weight>4</w eight> <type>compound</type> </option>
<option> <value>unsigned_32_actual_mem</value> <weight>3</w eight> <type>compound</type> </option>
<option> <value>unsigned_32_actual_stack</value> <weight> 3</weight> <type>compound</type> </option>
Claims (40)
- 計算機で実行することにより該計算機が所望の機能を実行できる計算機が実行可能なコードを生成する方法であって、
a)第1の処理システムにおいて、前記所望の機能に基づいて、
i)1つ又は複数のコンポーネントサーバにより実装される複数のコンポーネントであって、各コンポーネントサーバは、前記第1の処理システムに通信ネットワークを介して結合されたそれぞれのコンポーネント処理システムによって実行可能なソフトウェアであり、前記コンポーネントの少なくとも一つはコード生成コンポーネントである、前記複数のコンポーネント
ii)該コンポーネント間の接続
を示すコンポーネントの組み合わせを定義すること、
b)前記第1の処理システムが前記コンポーネントの組み合わせの各コンポーネントをコンポーネントサーバにより実装することであって、各コンポーネント処理システムは前記接続を使用して1つ又は複数の他のコンポーネント処理システムと直接的に通信し、少なくともコード生成コンポーネントは実行可能なコードフラグメントを生成し、前記コンポーネント処理システムのうちの少なくとも2つは条件を確定するために前記接続を介して直接的に通信し、前記実行可能なコードフラグメントのうちの1つ又は複数は、少なくとも部分的に、前記確定された条件に基づいて生成されるようにすること、
c)前記第1の処理システムが前記生成された実行可能なコードフラグメントを受け取り、該実行可能なコードフラグメントは前記コンポーネントの組み合わせに従って結合されて、前記計算機が実行可能なコードを形成すること、
d)前記計算機が実行可能なコードを計算機に提供することよって該計算機が実行可能なコードの該計算機による実行により、該計算機が前記所望の機能を実行するようにすること
を含む方法。 - 前記計算機が実行可能なコードは、コンポーネントを実装するために使用される請求項1に記載の方法。
- 前記実行可能なコードフラグメントは、計算機が実行可能なコードの断片である請求項1に記載の方法。
- 前記計算機が実行可能なコードは、
a)前記条件、
b)前記コンポーネントの組み合わせ、
c)コンポーネント間の1つ又は複数の合意、及び
d)1つ又は複数のネゴシエーションによる設定
のうちの少なくとも1つによって定義される方法で前記実行可能なコードフラグメントを連結することによって形成される請求項1に記載の方法。 - 前記実行可能なコードフラグメントは、
a)前記コンポーネントのうちの1つ又は複数、及び
b)処理システム
のうちの少なくとも1つによって結合されることを特徴とする請求項1に記載の方法。 - 前記コンポーネントに対しデータシーケンスで提供されるデータ部分を処理させることを含み、該データ部分は、計算機が実行可能なコードの断片であり、該処理は、
a)データ部分を前記シーケンスの所定の場所に追加すること、
b)前記シーケンス内の第1の場所から第2の場所にデータ部分を移動させること、
c)前記シーケンスから前記データ部分を除去すること、及び
d)前記シーケンスの前記データ部分を変更すること
を含む請求項1に記載の方法。 - 前記コンポーネントに対し、それらのそれぞれの条件を確定するようにネゴシエートさせることを含む請求項1に記載の方法。
- 前記第1の処理システムは、少なくともメモリ、スタック及びレジスタを含み、前記条件は、該レジスタ、該スタック及び該メモリのうちの少なくとも1つの状態を含む、請求項1に記載の方法。
- 前記条件は、
a)前記定義されたコンポーネントの組み合わせにおける他のコンポーネント、
b)前記定義されたコンポーネントの組み合わせにおける他のコンポーネントとの合意、
c)前記定義されたコンポーネントの組み合わせにおける他のコンポーネントとのネゴシエーションの結果、及び
d)偶発的要因
のうちの少なくとも1つを含む請求項1に記載の方法。 - 前記データ処理が
a)ディザリング、
b)メッシング、及び
c)遮蔽
のうちの少なくとも1つによって条件に依存することを含む請求項1に記載の方法。 - 少なくとも1つのコンポーネントに対し、他のコンポーネントの1つ又は複数のエージェントと通信する1つ又は複数のエージェントを生成することを含む請求項1に記載の方法。
- 前記エージェントは、所定の順序で前記2つ以上の他のエージェントと通信する請求項11に記載の方法。
- 前記順序は、
a)前記コンポーネントの組み合わせ、及び
b)1つ又は複数のネゴシエーションによる設定
のうちの少なくとも1つによって定義される請求項12に記載の方法。 - 前記第1の処理システムは通信ネットワークを介して複数のコンポーネント処理システムに接続され、各コンポーネント処理システムは、1つ又は複数のそれぞれのコンポーネントを実装するようになっている請求項1〜13のいずれかに記載の方法。
- 各コンポーネント処理システムは、計算機が実行可能なコードから形成され、且つ前記コンポーネント処理システムに対し、
a)所定のデータ処理サービス、及び
b)それぞれの実行可能なコードフラグメントの生成
のうちの少なくとも1つを実行させる、コンポーネントサーバを実装する請求項14に記載の方法。 - 前記コンポーネントサーバは、請求項1の方法を使用して生成される計算機が実行可能なコードから形成される請求項15に記載の方法。
- 前記第1の処理システムにおいて、且つ前記コンポーネントの組み合わせの各コンポーネントに対し
a)コンポーネントの仕様を受け取ること、及び
b)該コンポーネントの仕様を使用してコンポーネント要求を生成し、該コンポーネント要求はコンポーネント処理システムに転送されることによって、前記コンポーネントに対応するコンポーネントサーバの実装がもたらされること
を含む請求項14に記載の方法。 - 各コンポーネント処理システムに対し、
a)少なくとも1つのエージェントを実装させること、及び
b)前記少なくとも1つのエージェントに対し、1つ又は複数の他のコンポーネント処理システムによって実装される1つ又は複数のエージェントと通信させるようにさせること
を含む、請求項17に記載の方法。 - 前記コンポーネント処理システムへのエージェント接続を表す接続データを提供することによって、前記少なくとも1つのエージェントが前記1つ又は複数の他のエージェントと通信することができるようにする請求項18に記載の方法。
- 前記接続データは、前記1つ又は複数の他のエージェントに対するアドレスを含み、該アドレスは、該エージェントを通信できるようにするためのエージェントメッセージが転送されるアドレスを示す請求項18に記載の方法。
- 前記コンポーネント要求は前記接続データを含む請求項18に記載の方法。
- 前記コンポーネントの組み合わせを確定する方法は、前記第1の処理システムにおいて、
a)利用可能なコンポーネントのリストからコンポーネントを選択すること、及び
b)前記コンポーネントのそれぞれのエージェント間の接続を定義すること
を含む請求項14に記載の方法。 - 前記第1の処理システムに対し、
a)前記1つ又は複数の選択されたコンポーネントのグラフィカル表現を生成させること、及び
b)前記第1の処理システムの入力装置を介してユーザから受け取られた入力コマンドに応じて前記グラフィカル表現を処理することによって前記コンポーネントの組み合わせを定義させること
を含む、請求項22に記載の方法。 - a)選択されたコンポーネントが1つ又は複数の選択肢を有するか否かを判断すること、及び
b)肯定的な判断に応じて、
i)前記選択肢のうちの1つ又は複数を設定すること、及び
ii)各設定された選択肢の指示を、前記対応するコンポーネントを実装するために使用される前記コンポーネント処理システムに転送すること
を含む、請求項22に記載の方法。 - a)コンポーネントの仕様から1つ又は複数の選択肢を確定すること、
b)前記選択肢のうちの1つ又は複数を設定すること、及び
c)前記設定された選択肢に基づいて更新されたコンポーネントの仕様を確定すること
を含む、請求項24に記載の方法。 - 第2の処理システムに対し、
a)いくつかのコンポーネントの詳細を確定させること、及び
b)該詳細を使用して前記第1の処理システムを介して前記利用可能なコンポーネントのリストを前記ユーザに提供させること
を含む、請求項22に記載の方法。 - 前記コンポーネントの仕様を含む詳細は、
a)それぞれのデータ処理サービスの指示、
b)前記コンポーネントのグラフィカル表現、及び
c)他のコンポーネントに必要な任意の接続の指示
のうちの少なくとも1つを含む請求項26に記載の方法。 - 前記第2の処理システムに対し、
a)前記コンポーネントの前記実装に関連する1つ又は複数の基準を表すパフォーマンス情報を確定させること、及び
b)前記パフォーマンス情報をユーザに提供し、該ユーザは該パフォーマンス情報に従って前記コンポーネントを選択する請求項26に記載の方法。 - 前記パフォーマンス情報は、
a)前記コンポーネントを実装する前記エンティティの指示、
b)前記エンティティが格納される位置の指示、
c)前記コンポーネントを実装するための時間の指示、
d)前記それぞれのコンポーネントを実装することに関するコストの指示、及び
e)前記コンポーネントの出来を示す格付け
のうちの少なくとも1つを含む請求項28に記載の方法。 - 各コンポーネントの使用に対して費用を課すことにより利益を生じさせることを含む、請求項26〜29のいずれか1項に記載の方法。
- a)前記コンポーネントを実装するそれぞれのエンティティに対し前記利益の少なくとも一部を提供すること、及び
b)前記第2の処理システムの運営者に対し、前記利益の少なくとも一部を保持させること
を含む請求項30に記載の方法。 - 計算機が所望の機能に基づいたコンポーネントの組み合わせを実装することにより該所望の機能を実行することができるように該計算機で実行できる計算機が実行可能なコードを生成する方法であって、第1の処理システムにおいて、
a)前記コンポーネントの組み合わせから
i)1つ又は複数のコンポーネントサーバにより実装される複数のコンポーネントであって、各コンポーネントサーバは、前記第1の処理システムに通信ネットワークを介して結合されたそれぞれのコンポーネント処理システムによって実行可能なソフトウェアであり、前記コンポーネントの少なくとも一つはコード生成コンポーネントである、前記複数のコンポーネント
ii)該コンポーネントのそれぞれの間の接続
を確定すること、
b)各コンポーネントに対し、任意の必要な接続を表す接続データを含み、該コンポーネントの実装を要求するコンポーネント要求を生成すること、
c)前記コンポーネント要求をコンポーネント処理システムに転送することにより各該コンポーネント処理システムが前記接続を使用して1つ又は複数の他のコンポーネント処理システムと直接的に通信させ、少なくとも前記コード生成コンポーネントに実行可能なコードフラグメントを生成させ、前記コンポーネント処理システムのうちの少なくとも2つは、条件を確定するために前記接続を使用して直接的に通信し、前記実行可能なコードフラグメントのうちの1つ又は複数は、少なくとも部分的に、前記確定された条件に基づいて生成されていること、
d)前記コンポーネント処理システムから前記生成された実行可能なコードフラグメントを受け取り、該実行可能なコードフラグメントは、結合されると、前記計算機が実行可能なコードを形成すること
を含む、計算機が実行可能なコードを生成する方法。 - a)前記計算機が実行可能なコードを形成するため前記コンポーネントの組み合わせに従って前記実行可能なコードフラグメントを結合すること、及び
b)所定の順序で前記実行可能なフラグメントを受け取ること
のうちの少なくとも1つを含む、請求項32に記載の方法。 - 前記コンポーネントの組み合わせを確定する前記方法は、
a)利用可能なコンポーネントのリストからコンポーネントを選択すること、及び
b)前記コンポーネントのそれぞれのエージェントの間の接続を定義すること
を含む請求項32に記載の方法。 - 前記第1の処理システムにおいて、前記コンポーネントの組み合わせにおける各コンポーネントに対し
a)コンポーネントの仕様を受け取ること、及び
b)該コンポーネントの仕様を使用してコンポーネント要求を生成し、該コンポーネント要求はコンポーネント処理システムに転送されることによって、前記コンポーネントに対応するコンポーネントサーバの実装がもたらされる
を含む、請求項34に記載の方法。 - 請求項1〜31のいずれか1項に記載の方法を使用して実行される請求項32に記載の方法。
- 計算機が所望の機能を実行できるように該計算機が実行できる、計算機が実行可能なコードを生成するために使用されるコンポーネントを提供する方法であって、前記方法は、実装されるコンポーネントと該コンポーネントの間の接続とを示すコンポーネントの組み合わせを使用する方法であり、前記コンポーネントは1つ又は複数のコンポーネントサーバにより実装され、各コンポーネントサーバは、第1の処理システムに通信ネットワークを介して結合されたそれぞれのコンポーネント処理システムによって実行可能なソフトウェアであり、前記コンポーネントの少なくとも一つはコード生成コンポーネントであるところ、
コンポーネント処理システムにおいて、
a)任意の必要な接続を表す接続データを含むコンポーネント要求を前記第1の処理システムから受け取ること、
b)前記接続を使用して1つ又は複数の他のコンポーネント処理システムと直接的に通信することによって、条件を確定すること、
c)前記確定された条件に基づいて実行可能なコードフラグメントを生成すること、及び
d)前記生成された実行可能なコードフラグメントを別の処理システムに転送し、該実行可能なコードフラグメントは、他の実行可能なコードフラグメントと結合されると前記計算機が実行可能なコードを形成し、該計算機が実行可能なコードは、計算機によって実行されると、該計算機に対し前記所望の機能を実行させること、
を含む方法。 - 請求項1〜31のいずれか1項に記載の方法を使用して実行される請求項37に記載の方法。
- コンポーネントサーバを実装するため、計算機が実行可能なコードを生成するために使用されるコンポーネントを提供することによって、前記コンポーネントサーバがデータ処理サービスを提供することができるようにする方法であって、前記実装されるコンポーネントと該コンポーネント間の接続とを示すコンポーネントの組み合わせを使用し、前記コンポーネントは1つ又は複数のコンポーネントサーバにより実装され、各コンポーネントサーバは、第1の処理システムに通信ネットワークを介して結合されたそれぞれのコンポーネント処理システムによって実行可能なソフトウェアであり、前記コンポーネントの少なくとも一つはコード生成コンポーネントであり、該コンポーネントの組み合わせは少なくとも2つのコンポーネントシーケンスを含み、各コンポーネントシーケンスは前記データ処理サービスを提供するそれぞれの方法を表しているところ、コンポーネント処理システムにおいて、
a)任意の必要な接続を表す接続データを含むコンポーネント要求を前記第1の処理システムから受け取ること、
b)条件を確定するために、前記接続を使用して1つ又は複数の他のコンポーネント処理システムと直接的に通信すること、
c)確定された条件に基づいて実行可能なコードフラグメントを生成すること、及び
d)前記生成された実行可能なコードフラグメントを別の処理システムに転送し、該実行可能なコードフラグメントは、他の実行可能なコードフラグメントと結合されると前記計算機が実行可能なコードを形成し、該計算機が実行可能なコードは、計算機によって実行されると、該計算機に対しコンポーネントサーバを実装させ、該コンポーネントサーバは前記生成された実行可能なコードフラグメントのうちの少なくとも1つを実行することにより前記データ処理サービスを提供すること
を含む方法。 - 請求項1〜31のいずれか1項に記載の方法を使用して実行される請求項39に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2004902675A AU2004902675A0 (en) | 2004-05-20 | Code generation techniques | |
AU2004902675 | 2004-05-20 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007516885A Division JP2007538321A (ja) | 2004-05-20 | 2005-05-20 | コード生成方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013254272A Division JP5705297B2 (ja) | 2004-05-20 | 2013-12-09 | 第1のコンポーネントと第2のコンポーネントとの間のネゴシエーションを実行する方法及びネゴシエーションを実行するコンポーネント |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012230710A true JP2012230710A (ja) | 2012-11-22 |
Family
ID=35428539
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007516885A Pending JP2007538321A (ja) | 2004-05-20 | 2005-05-20 | コード生成方法 |
JP2012162763A Pending JP2012230710A (ja) | 2004-05-20 | 2012-07-23 | 計算機が実行可能なコードを生成する方法及び計算機が実行可能なコードを生成するために使用されるコンポーネントを提供する方法 |
JP2013254272A Active JP5705297B2 (ja) | 2004-05-20 | 2013-12-09 | 第1のコンポーネントと第2のコンポーネントとの間のネゴシエーションを実行する方法及びネゴシエーションを実行するコンポーネント |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007516885A Pending JP2007538321A (ja) | 2004-05-20 | 2005-05-20 | コード生成方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013254272A Active JP5705297B2 (ja) | 2004-05-20 | 2013-12-09 | 第1のコンポーネントと第2のコンポーネントとの間のネゴシエーションを実行する方法及びネゴシエーションを実行するコンポーネント |
Country Status (5)
Country | Link |
---|---|
US (1) | US8856733B2 (ja) |
EP (2) | EP2386946B1 (ja) |
JP (3) | JP2007538321A (ja) |
CA (1) | CA2566000C (ja) |
WO (1) | WO2005114387A1 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8527943B1 (en) * | 2004-02-12 | 2013-09-03 | Raju V. Chiluvuri | System and method of application development |
US20070180069A1 (en) * | 2006-01-31 | 2007-08-02 | Staples The Office Superstore, Llc | Management of component configurations in a computer system |
WO2008022470A1 (de) * | 2006-08-21 | 2008-02-28 | Odz Organisation Datenverarbeitung Zweidler | Programm-generator zur generierung eines programms auf dem gebiet der warenwirtschaft und verfahren hierzu |
US8745557B1 (en) | 2006-09-11 | 2014-06-03 | The Mathworks, Inc. | Hardware definition language generation for data serialization from executable graphical models |
US8307329B2 (en) * | 2008-02-07 | 2012-11-06 | Microsoft Corporation | Implicit composition of component bindings |
US8108831B2 (en) * | 2008-02-07 | 2012-01-31 | Microsoft Corporation | Iterative component binding |
TW201006175A (en) * | 2008-07-31 | 2010-02-01 | Ibm | Method, apparatus, and computer program product for testing a network system |
US8898628B2 (en) * | 2011-09-23 | 2014-11-25 | Ahmad RAZA | Method and an apparatus for developing software |
GB2507273A (en) * | 2012-10-23 | 2014-04-30 | Ibm | Maintaining integrity of output of code generators |
US9665828B2 (en) | 2014-01-16 | 2017-05-30 | International Business Machines Corporation | Using physicochemical correlates of perceptual flavor similarity to enhance, balance and substitute flavors |
KR102190813B1 (ko) * | 2014-03-25 | 2020-12-14 | 한국전자통신연구원 | 코드 추천 및 공유 시스템 및 방법 |
CN105446711B (zh) * | 2014-08-08 | 2018-10-02 | 国际商业机器公司 | 获取用于软件开发任务的上下文信息的方法及装置 |
US10423733B1 (en) * | 2015-12-03 | 2019-09-24 | The Mathworks, Inc. | Systems and methods for sharing resources having different data types |
US10938665B2 (en) | 2015-12-15 | 2021-03-02 | At&T Intellectual Property I, L.P. | Method and apparatus for creating a custom service |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030158915A1 (en) * | 2001-12-10 | 2003-08-21 | Alexander Gebhart | Dynamic component transfer |
JP2004507009A (ja) * | 2000-08-24 | 2004-03-04 | ゼンプレックス プロプライエタリー リミテッド | 式をグラフィカルに定義する方法 |
JP2006506757A (ja) * | 2002-11-06 | 2006-02-23 | コード バリー ピーティーワイ リィミティッド | コード生成 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5517584A (en) * | 1994-08-09 | 1996-05-14 | Unisys Corporation | Method and apparatus for high-speed implementation of scaling, dithering, and data remapping operations with a single processor |
EP0937285B1 (en) * | 1995-12-15 | 2003-07-09 | Z-Force Corporation | Method for constructing software components and systems as assemblies of independent parts |
US5920868A (en) | 1996-07-03 | 1999-07-06 | Sun Microsystems, Inc. | Cataloging apparatus for facilitating the re-use of distributed objects in a distributed object system |
US5991535A (en) | 1996-07-03 | 1999-11-23 | Sun Microsystems, Inc. | Visual composition tool for constructing application programs using distributed objects on a distributed object network |
JP2000505225A (ja) | 1996-11-27 | 2000-04-25 | ソニー オイローパ ビーブイ | ソフトウェアコードの生成方法及び装置 |
US6212672B1 (en) | 1997-03-07 | 2001-04-03 | Dynamics Research Corporation | Software development system with an executable working model in an interpretable intermediate modeling language |
US6401114B1 (en) * | 1997-05-01 | 2002-06-04 | Stratum Technologies Corporation | Method and apparatus for dynamic programming across a computer network |
US6256771B1 (en) | 1997-10-16 | 2001-07-03 | At&T Corp. | Method and apparatus for providing a dynamic service composition software architecture |
US6484214B1 (en) | 1998-03-05 | 2002-11-19 | Mcdonnell Douglas Helicopter Company | Method for distributed object communications based on dynamically acquired and assembled software components |
WO1999046689A1 (en) * | 1998-03-12 | 1999-09-16 | Crossworlds Software, Inc. | Execution of extended activity diagrams by code generation |
DE19837871C2 (de) * | 1998-08-20 | 2000-06-08 | Manfred Broy | Verfahren zum automatischen Erzeugen eines Programms |
US6434738B1 (en) * | 1999-04-22 | 2002-08-13 | David Arnow | System and method for testing computer software |
BR0012706A (pt) | 1999-07-23 | 2002-04-09 | Codagen Technologies Corp | Editor de informações de controle hierarquicamente estruturado |
US7139728B2 (en) * | 1999-12-30 | 2006-11-21 | Rod Rigole | Systems and methods for online selection of service providers and management of service accounts |
US6681383B1 (en) | 2000-04-04 | 2004-01-20 | Sosy, Inc. | Automatic software production system |
WO2001086372A2 (en) * | 2000-05-12 | 2001-11-15 | Xtreamlok Pty. Ltd. | Information security method and system |
DE10041072A1 (de) | 2000-08-22 | 2002-03-14 | Siemens Ag | Verfahren zur automatischen Erzeugung von Programmcode |
AU2001295016A1 (en) * | 2000-09-01 | 2002-03-13 | Sri International, Inc. | Probabilistic alert correlation |
US20020055956A1 (en) | 2000-09-08 | 2002-05-09 | Krasnoiarov Boris Andreyevich | Method and system for assembling concurrently-generated content |
US7020868B2 (en) | 2000-11-22 | 2006-03-28 | General Electric Company | Graphic application development system for a medical imaging system |
CA2440031C (en) | 2001-02-22 | 2013-07-02 | Accenture Global Services Gmbh | Distributed development environment for building internet applications by developers at remote locations |
EP1246054A1 (en) * | 2001-03-30 | 2002-10-02 | BRITISH TELECOMMUNICATIONS public limited company | Creating software programs from software components |
US7206846B1 (en) * | 2003-04-29 | 2007-04-17 | Cisco Technology, Inc. | Method and apparatus for adaptively coupling processing components in a distributed system |
US7559050B2 (en) * | 2003-06-30 | 2009-07-07 | Microsoft Corporation | Generating software development tools via target architecture specification |
-
2005
- 2005-05-20 WO PCT/AU2005/000729 patent/WO2005114387A1/en active Application Filing
- 2005-05-20 EP EP11176742.2A patent/EP2386946B1/en active Active
- 2005-05-20 US US11/569,356 patent/US8856733B2/en active Active
- 2005-05-20 EP EP05742158.8A patent/EP1756706B1/en active Active
- 2005-05-20 JP JP2007516885A patent/JP2007538321A/ja active Pending
- 2005-05-20 CA CA2566000A patent/CA2566000C/en active Active
-
2012
- 2012-07-23 JP JP2012162763A patent/JP2012230710A/ja active Pending
-
2013
- 2013-12-09 JP JP2013254272A patent/JP5705297B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004507009A (ja) * | 2000-08-24 | 2004-03-04 | ゼンプレックス プロプライエタリー リミテッド | 式をグラフィカルに定義する方法 |
US20030158915A1 (en) * | 2001-12-10 | 2003-08-21 | Alexander Gebhart | Dynamic component transfer |
JP2006506757A (ja) * | 2002-11-06 | 2006-02-23 | コード バリー ピーティーワイ リィミティッド | コード生成 |
Also Published As
Publication number | Publication date |
---|---|
CA2566000A1 (en) | 2005-12-01 |
EP2386946A3 (en) | 2012-05-02 |
EP1756706A1 (en) | 2007-02-28 |
CA2566000C (en) | 2016-11-08 |
US8856733B2 (en) | 2014-10-07 |
EP1756706B1 (en) | 2019-09-25 |
EP2386946B1 (en) | 2020-06-10 |
US20080201690A1 (en) | 2008-08-21 |
JP2014044748A (ja) | 2014-03-13 |
JP2007538321A (ja) | 2007-12-27 |
EP2386946A2 (en) | 2011-11-16 |
WO2005114387A1 (en) | 2005-12-01 |
EP1756706A4 (en) | 2009-06-24 |
JP5705297B2 (ja) | 2015-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5705297B2 (ja) | 第1のコンポーネントと第2のコンポーネントとの間のネゴシエーションを実行する方法及びネゴシエーションを実行するコンポーネント | |
JP7220678B2 (ja) | ブロックチェーン上で高レベル演算を提供する方法及びシステム | |
AU2010213618B9 (en) | Managing task execution | |
KR101076910B1 (ko) | 객체 지향 언어로의 병행 프로그램 구현 | |
JP2004501548A (ja) | プロトコール・スタック | |
US20040172637A1 (en) | Code morphing manager | |
EP3912074B1 (en) | Generating a synchronous digital circuit from a source code construct defining a function call | |
EP3384380B1 (en) | Method and apparatus for declarative action orchestration | |
CN104615489A (zh) | 一种多节点数据交互的实现方法 | |
Männistö et al. | Product configuration view to software product families | |
CN105703941B (zh) | 配置事务的处理方法及装置 | |
US6728948B1 (en) | Object oriented framework mechanism and method for providing a generic order entry processing interface for one or more order fulfillment systems | |
Gomaa et al. | Reusable component interconnection patterns for distributed software architectures | |
Flores et al. | A formal model of object-oriented design and GoF design patterns | |
EP1565813B1 (en) | Code generation | |
AU2005245983B2 (en) | Code generation techniques | |
CN111208991B (zh) | 基于工作流的程序开发方法、电子设备及存储介质 | |
US10678515B1 (en) | Simplifying and reusing visual programming graphs | |
Lienhardt et al. | An object group-based component model | |
Giese et al. | The OCoN approach for object-oriented distributed software systems modeling | |
Canal et al. | Model-based adaptation of software communicating via FIFO buffers | |
Taher et al. | A model-driven approach for web service adaptation using complex event processing | |
Arbab et al. | Different glasses to look into the three cs: component, connector, coordination | |
CN114398043A (zh) | 应用部署方法和装置、电子设备及存储介质 | |
Canal-Velasco et al. | Model-Based Adaptation of Software Communicating via FIFO Buffers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120808 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121016 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130611 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130903 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130906 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20131007 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20131010 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140225 |