JP2012104134A - 構成要素を使用してコンピュータによる実行可能なコードを生成する方法及び装置 - Google Patents
構成要素を使用してコンピュータによる実行可能なコードを生成する方法及び装置 Download PDFInfo
- Publication number
- JP2012104134A JP2012104134A JP2011274319A JP2011274319A JP2012104134A JP 2012104134 A JP2012104134 A JP 2012104134A JP 2011274319 A JP2011274319 A JP 2011274319A JP 2011274319 A JP2011274319 A JP 2011274319A JP 2012104134 A JP2012104134 A JP 2012104134A
- Authority
- JP
- Japan
- Prior art keywords
- component
- components
- processing system
- agent
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 245
- 238000012545 processing Methods 0.000 claims description 326
- 230000008569 process Effects 0.000 claims description 117
- 238000010276 construction Methods 0.000 claims description 78
- 230000006870 function Effects 0.000 claims description 37
- 238000004891 communication Methods 0.000 claims description 28
- 238000012546 transfer Methods 0.000 claims description 24
- 239000012634 fragment Substances 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 18
- 239000000470 constituent Substances 0.000 claims description 11
- 239000003795 chemical substances by application Substances 0.000 description 808
- 238000010586 diagram Methods 0.000 description 96
- 101150005267 Add1 gene Proteins 0.000 description 38
- 101150014859 Add3 gene Proteins 0.000 description 22
- 230000003993 interaction Effects 0.000 description 22
- 230000007246 mechanism Effects 0.000 description 17
- 101150060298 add2 gene Proteins 0.000 description 14
- 230000008859 change Effects 0.000 description 12
- 238000011161 development Methods 0.000 description 12
- 230000006872 improvement Effects 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 11
- 230000002441 reversible effect Effects 0.000 description 9
- 102100023882 Endoribonuclease ZC3H12A Human genes 0.000 description 8
- 101710112715 Endoribonuclease ZC3H12A Proteins 0.000 description 8
- 101100120298 Rattus norvegicus Flot1 gene Proteins 0.000 description 8
- 101100412403 Rattus norvegicus Reg3b gene Proteins 0.000 description 8
- 230000001419 dependent effect Effects 0.000 description 8
- 238000003860 storage Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 239000013256 coordination polymer Substances 0.000 description 7
- 238000012552 review Methods 0.000 description 7
- 101100436078 Caenorhabditis elegans asm-2 gene Proteins 0.000 description 6
- 230000006399 behavior Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 6
- 239000000284 extract Substances 0.000 description 6
- 230000004888 barrier function Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 5
- 101100436077 Caenorhabditis elegans asm-1 gene Proteins 0.000 description 4
- 101100204282 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) Asm-1 gene Proteins 0.000 description 4
- 239000002131 composite material Substances 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 239000000047 product Substances 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000002860 competitive effect Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 241000234295 Musa Species 0.000 description 2
- 235000018290 Musa x paradisiaca Nutrition 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 235000013570 smoothie Nutrition 0.000 description 2
- 101000939676 Androctonus crassicauda Toxin a Proteins 0.000 description 1
- 102100024348 Beta-adducin Human genes 0.000 description 1
- 101000689619 Homo sapiens Beta-adducin Proteins 0.000 description 1
- -1 K Here Proteins 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 238000005352 clarification Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- WHHGLZMJPXIBIX-UHFFFAOYSA-N decabromodiphenyl ether Chemical compound BrC1=C(Br)C(Br)=C(Br)C(Br)=C1OC1=C(Br)C(Br)=C(Br)C(Br)=C1Br WHHGLZMJPXIBIX-UHFFFAOYSA-N 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012946 outsourcing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 208000024891 symptom Diseases 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/34—Graphical or visual programming
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
【解決手段】各構成要素は、データ処理サービスに対応しており、代表的には、各エンティティによって実装される。この方法は、データ処理のシーケンスに対応する構成要素の組み合わせの定義を含む。構成要素の組み合わせの定義に従って、各エンティティからのサービスの提供の要求によって達成できるように、データ処理が実行される。
【選択図】図1
Description
本発明は、コンピュータによって実行可能なコードを生成する方法及び装置に関し、特に、データを処理する各サービスに対応する構成要素を使用して、コンピュータによって実行可能なコードの生成に関する。
本明細書におけるいずれの従来技術への参照も、従来技術が通常の一般知識の一環を成すことを認めるものではなく、又は示唆を形成するものでもない。また、そのように解釈されるべきではない。
・最初は、より困難な分散モデルよりも社内開発モデルのほうが好都合であること。このため、限られた資源の一般化が求められる。
・所定の機能を実行する標準ルーチンを確立したライブラリ/リンカの導入。このため、競争及び最適化が低下する。
・ソフトウェア生産の本質そのものについての一般的な見解。それは、プログラマによって課される限界を顧客が許容するように求める。
・バグやミス − 高レベルのソフトウェア欠陥。
・ソフトウェアの肥大化 − 実行可能コードのサイズの大幅な増大。
・複雑性の限界 − 増し続けるソフトウェアの複雑性が、システムの能力を有効に安定状態に保つことを脅かす。
・低い参入障壁。
・予測不能性 − 開発コスト、スケジュール、パフォーマンス、又は資源使用が予測不能である。
・生産性 − 過去10年において開発者の生産性の向上はほとんど見られなかった。
・ソフトウェア開発者に対するIP保護が機能不全であること。
・優れた諸技術がある中でx86アーキテクチャの使用を継続していること。
・ソフトウェアエラー又は瑕疵を顧客が許容すること。
・ソフトウェア危機へ対応を試みる実装複雑性が増大すること(コードライブラリからのコードの再使用、古いオペレーティングシステムの不足分との互換を図ることを含む)。
・プログラマをマシンコードから切り離すことを目指した、第3、第4及び第5世代言語の開発が、初期のいくらかの生産性における成功に貢献した。言語が今日まで、生産性向上を追求するにあたっての核心であり続けているほどに、初期の生産性増大は成功した。
・データを、そのデータの処理に使用されるコードと一緒にカプセル化する新しいタイプの抽象化であるオブジェクト指向プログラミングが、主に制御複雑性を通してある程度の成功を実現した。
・大きなソフトウェアの開発の複雑性の管理を支援することを目指したコンピュータ支援ソフトウェア工学(CASE)。
・以前の知的努力を再使用しようとする取り組みであるコード再使用。
・数学的証明を利用して正確性を検証するとともに、ソフトウェア開発に伴う多数の欠陥及びバグに鋭く取り組む、形式的方法。
・履歴コードから知的内容を抽出するデコンパイラ。
第1の広い形態において、本発明は、構成要素を使用してコードを生成する方法を提供し、各構成要素は各データ処理サービスに対応する。本方法は、
a)コードを定義する構成要素の組み合わせの決定し、及び、
b)定められたデータ処理シーケンスが実行される構成要素の組み合わせの実装。また、それによってコンピュータによって実行可能なコードの生成すること、を含む。
a)複数のデータ部分を含むデータを受け取り、
b)データを、
i)データ部分をシーケンスの所定の位置に追加し、
ii)データ部分をシーケンス中の第1の位置から第2の位置に移動し、
iii)シーケンスからデータ部分を除去し、及び、
iv)シーケンスにおいてデータ部分を変更すること、によって処理する、
構成要素を有することを含む。
a)個人によるデータの手動処理、
b)処理システムにより実行され、それによってデータを自動的に処理するようになされたコンピュータにより実行可能なコード、及び、
c)下位構成要素の組み合わせ、のうちの少なくとも一つを使用して行われてもよい。
a)ユーザから受け取った入力コマンドに応答して、複数の構成要素を選択し、
b)選択された構成要素を使用して構成要素の組み合わせを定義し、及び、
c)定義されたデータ処理シーケンスが行われるように、構成要素の組み合わせを実装させ、ることを含むことが好ましい。
a)選択された各構成要素のポートの指示をユーザに提供させ、及び、
b)ユーザからの入力コマンドに応答して、上記ポートの中から選択されたポートを相互接続し、それによって構成要素の組み合わせを定義すること、を含むことが好ましい。
a)複数の構成要素の詳細を決定させ、
b)第1の処理システムを介して、少なくとも詳細の指示をユーザに提供させること、を含む。
a)ユーザからの入力コマンドに応答して、上記構成要素の中から各構成要素を選択させ、及び、
b)第1の処理システムを介して、選択された構成要素の詳細をユーザに提供させること、を含むことができる。
a)構成要素の仕様を記憶する記憶装置であって、
構成要素仕様は、
i)処理サービスの指示、
ii)構成要素のグラフィック表現、及び、
iii)各ポートに関連するエージェントの動作を定義するポート仕様
のうちの少なくとも一つを含む記憶装置と、
b)プロセッサであって、本方法は通常、このプロセッサに、
i)記憶装置から一つ又は複数の構成要素仕様を取得させ、及び、
ii)第1の処理システムを介して、構成要素仕様をユーザに提供させることを含むプロセッサと、を含む。
a)一つ又は複数の選択された構成要素のグラフィック表現を生成させ、及び、
b)ユーザから受け取った入力コマンドに応答して、グラフィック表現を処理させ、それによって構成要素の組み合わせを定義すること、を含んでもよい。
各構成要素処理システムは、一つ又は複数の各構成要素を実装するように成され、
この場合、本方法は、
a)構成要素の組み合わせ内の各構成要素に対するサービス要求を生成し、及び、
b)通信ネットワークを介して各エンティティにサービス要求を転送し、各エンティティは、サービス要求に応答して、各構成要素によって具現されるデータ処理を実装するように成されること、を含むことが好ましい。
a)構成要素が必要とするあらゆるデータを決定し、及び、
b)このデータをサービス要求の際に提供すること、を含む。
a)受け取ったサービス要求に従って、一つ又は複数の各構成要素インスタンスを実装させ、及び、
b)各構成要素インスタンスに、
i)サービス要求中に定義された相互接続に従って他の構成要素と対話させ、及び、
ii)必要なあらゆるデータ処理を行わせること、を含むことができる。
a)各ポートに関連する各エージェントを実装させ、及び、
b)定義された相互接続に従って各エージェントに別の構成要素のエージェントと協働させ、それによってポート間でデータを転送できるようにすること、を含んでもよい。
a)パフォーマンス情報を決定させ、当該パフォーマンス情報は、構成要素の実装に関連する一つ又は複数の基準を表すこと、
b)パフォーマンス情報をユーザ対して提供させ、ユーザはこのパフォーマンス情報に従って構成要素を選択すること、を含むことが好ましい。
a)構成要素を実装するエンティティの指示、
b)エンティティの地理的場所の指示、
c)構成要素の実装期間の指示、
d)各構成要素を実装に関連する費用の指示、及び、
e)構成要素の出来のよさを示す格付け、のうちの少なくとも一つを含む。
a)同等のサービスを行う複数の異なる構成要素を提供し、これらの異なる構成要素は異なるエンティティによって提供されること、
b)エンティティを競争させ、それによって構成要素の改良を促すこと、を含むことが好ましい。
a)利益の少なくともいくらかを、構成要素を実装する各エンティティに提供し、及び、
b)第2の処理システムの運営者に、利益の少なくともいくらかを保持させること、を含む。
a)実行可能コード及び処理システムのコンテキストを決定させ、及び、
b)当該決定されたコンテキストに従って、実行されるデータ処理がコンテキストに依存するようにデータ処理サービスを実行させること、を含む。
a)レジスタ、スタック及びメモリのうちの少なくとも一つの状態、
b)定義された構成要素の組み合わせ内の他の構成要素、及び、
c)偶発的要因、のうちの少なくとも一つを含む。
a)ディザリング、
b)メッシング、及び、
c)遮蔽、のうちの少なくとも一つを実行することによって、データ処理作をコンテキストに依存させることを含む。
a)データ処理シーケンスに対応する構成要素の組み合わせを定義し、及び、
b)コンピュータにより実行可能なコードが生成されるように、構成要素の組み合わせを実装し、それによって上記定義されたデータ処理シーケンスが行われる、ように成された一つ又は複数の処理システムを含む。
a)各構成要素を実装するようにそれぞれ成された一つ又は複数の構成要素処理システム、及び、
b)第1の処理システムであって、
i)ユーザから受け取った入力コマンドに従って、構成要素の組み合わせを定義し、
ii)各構成要素を実装する構成要素処理システムを決定し、及び、
iii)当該決定された構成要素処理システムのそれぞれにサービス要求を転送する、ように成された第1の処理システム、を備えることが好ましい。
a)サービス要求を受け取り、
b)各構成要素インスタンスを生成し、及び、
c)各構成要素インスタンスを使用してサービスを実行する、ように成ることができる。
a)利用可能な構成要素のうちの一つ又は複数を選択させ、及び、
b)構成要素の組み合わせを定義させ、るように成されてもよい。
a)各エンティティによって実装される各データ処理サービスをそれぞれ表す複数の構成要素の詳細を記憶し、
b)選択された構成要素の詳細をユーザに提供し、それによってユーザに、データを処理するデータ処理サービスシーケンスを定義する構成要素の組み合わせを定義させること、を含む。
a)実行されるデータ処理サービスを決定し、
b)当該データ処理サービスを行う方法を決定し、及び、
c)データ処理サービスを定義する構成要素仕様を生成し、当該構成要素仕様は、データの受け取り又は出力に使用されるポートを表すポート仕様を含むこと、を含む。
a)サービス要求を受け取らせ、
b)当該受け取ったサービス要求に応答して、各構成要素インスタンスを生成させ、
c)処理するデータを受け取らせ、
d)各構成要素インスタンスを使用してデータを処理させ、及び、
e)当該処理されたデータを出力に供給させること、を含む。
a)構成要素の組み合わせから、
i)実装する構成要素と、
ii)各構成要素のポート間の接続と、を決定し、
b)構成要素が必要とするあらゆるデータ、を決定し、
c)各構成要素ごとに、
d)各サービスの提供を要求するサービス要求を生成し、
e)サービス要求を、各構成要素を実装するエンティティに転送し、当該エンティティはサービス要求に応答して各サービスを行い、それによってデータ処理を行えるように転送すること、を含む。
a)組み合わせる一つ又は複数の構成要素を選択し、
b)処理システムに、
i)選択された各構成要素のグラフィック表現をディスプレイ上に生成させ、及び、
ii)グラフィック表現を処理して、構成要素のポート間の接続を定義させること、を含む。
a)所望のデータ処理を行う複数の技法を決定し、
b)当該決定された技法のそれぞれを具現する構成要素を定義し、及び、
c)使用に際して、結果得られる処理済みデータがコンテキストに依存するように、コンテキストに従って上記技法のうちの選択された一つの技術を行うこと、を含む。
a)エージェントの指示を受け取り、
b)エージェントを生成し、及び、
c)エージェントの指示に従って、エージェントに別のエージェントとの接続を確立させること、を含む。
a)実行されるサービスを決定し、
b)当該サービスを実行する少なくとも2つの方法を決定し、
c)受け取ったデータに従って方法の中から一つを選択する方法を決定し、及び、
d)データ処理サービスを実現する構成要素を定義する構成要素の仕様を生成すること、を含む。
a)サービス要求を受け取らせ、
b)当該受け取ったサービス要求に応答して、各構成要素インスタンスを生成させ、
c)処理するデータを受け取らせ、
d)当該受け取ったデータに従ってデータを処理する方法を選択させ、
e)各構成要素インスタンスを使用してデータを処理させ、及び、
f)当該処理されたデータを出力に供給させること、を含む。
a)バンドリング下位構成要素を各構成要素に提供し、
b)接続を定義し、当該接続は、
i)バンドリング下位構成要素の第1のエージェント及び各構成要素の各エージェントと、
ii)各バンドリング下位構成要素の第2のエージェントとの間のものであること、を含む。
a)ルート処理システムに、ペイロードを含むエージェントを生成させ、
b)エージェントをシーケンス内の複数の構成要素に、最後の構成要素から最初の構成要素へと転送し、
c)最初の構成要素をエージェントと対話させ、それによってペイロードにデータを提供し、
d)エージェントを最初の構成要素から次の構成要素へ転送し、
e)次の構成要素をエージェントと対話させ、それによってペイロードにデータを提供し、
f)最後の構成要素がペイロードと対話するまで、ステップ(d)及び(e)を繰り返し、及び、
g)エージェントをルート処理システムに転送し、それによってコードを提供すること、を含む。
a)各エンティティによって実装される各データ処理サービスをそれぞれ表す複数の構成要素の詳細を提供し、
b)ユーザに、データ処理サービスシーケンスを定義する構成要素の組み合わせを定義させ、及び、
c)当該定義された組み合わせに従ってデータ処理サービスを行わせること、を含む。
バイトレベルでコードを構築することができ、形式化されたデータ処理サービスを接続するシステムの複数の例について説明する。
・製造業者ID − サービスを提供するエンティティの識別に使用される
・構成要素ID − 各構成要素の識別に使用される
・ロケーション情報 − 構成要素が実装される場所の識別に使用される
・説明 − 構成要素によって提供されるサービスの指示
例えば、この情報は、図8に示す属性ダイアログボックスの使用を通して提供することができる。属性ダイアログボックスは、構成要素の名前、構成要素の説明、作成者、アドレス、報告番号等の情報を提供するように、エンティティを促す。この例では、図は、より詳細に以下に説明する設計者向けプログラム用のグラフィカルユーザインタフェース(GUI)を示す。この場合、設計者向けプログラムには「add_other」構成要素が編集のためにロードされている。GUIには3つの主なフィールドがある。
1.ツールバー − 構成要素の表示を編集できるようにする
2.構成要素の表示 − 公開されるとフォーラムにおいて利用可能になるもの
3.構成要素の詳細 − エンドユーザが必要とする、構成要素の表示と組み合わせられる追加情報
エンティティ処理システム15にインストールされているアプリケーションソフトウェアも、必要とされる任意の識別子の生成に使用することができる。具体的には、一般には、エンティティ及び構成要素の両方を一意に識別することができる識別子を生成することが必要である。
・製造業者ID
・構成要素ID
・ビルドID − 各ビルドインスタンスの識別に使用される
・制約 − ユーザによる実装に対して課されるあらゆる制約の指示
・必要なエージェント接続の詳細
以上では購入注文を用いる場合について説明したが、これらは本質的なものではなく、各構成要素に関連するサービスの実装を注文する他の技術を代わりに使用し得ることが理解できる。
前述したように、ベースステーション1により、通常は各エンティティステーション5において複数の異なるエンティティによって提供されるサービスに、複数の異なるユーザが一元的にアクセスできることが理解できる。これにより、エンティティによって提供される構成要素を、多くの異なるソフトウェアアプリケーションの作成の際に、複数回再使用することが可能になる。
・各サービスを行うエンティティ
・コスト
・各サービスを行うエンティティの所在
・構成要素の人気
・構成要素から受けとることのできる、又は出力することのできるデータ形式/タイプ
・それまでのユーザ又はフォーラムが構成要素に与える格付け
この点において、一般に、フォーラムは、ユーザが構成要素の有効性を格付けできるようにする格付けシステムを提供する。例えば、格付けは、各構成要素それぞれに発生したビルド障害の数を、ユーザにフィードバックすることによって、又はフォーラム自体による構成要素のテストによって、統計的に定めることができる。
前述した例では、エージェントは構成要素間の通信の唯一の形態である。エージェントは、構成要素が、具体化するサービスの完了に必要なすべての情報の提供及び収集を担当する。エージェントは一般に、機能の限定された単純な実行可能なコードから形成され、これは、構成要素サーバの一部を成す場合もあれば、構成要素サーバによって実装される場合もある。使用の際に、エージェントは、各ポートを介して他の構成要素のエージェントと通信するようになされる。通常、エージェントはより詳細に以下に説明するようにメッセージを転送することによって通信する。
・ベースステーション識別子 1
・略図識別子 P
・構成要素Xのラベル U1
・エンティティ識別子 IDx
・エンティティ品番 X
・以下を含む構成要素Xのエージェントの接続の詳細
・エンティティ識別子ID y
・エンティティ品番 Y
・構成要素Yのエージェント番号 Y1
・ユーザの識別子 IDp
・略図識別子 P
・Yの構成要素ラベル U2
構成要素Yに対する購入注文も同様の情報を含む。
構成要素サーバは、エンティティステーション5に設けられ、エンティティステーションが構成要素を実装できるようにするソフトウェアアプリケーションである。具体的には、構成要素サーバは、エンドステーション3によって生成された購入注文を受け取り、次いで購入注文を使用して、適当なエージェントと共に、新しい構成要素インスタンスを作成するようになされる。
・図17Bに示すように、購入注文POを、各構成要素A、B及びCに関連するサービスを供給するエンティティに提出し、
・各下位構成要素A、B及びCに必要なデータを提供して、定義されるサービスを各下位構成要素が行えるようにし、
・下位構成要素エージェントアドレスを供給して、これらのエージェントが終了すると、構成要素A、B及びCを組み付けられるようにする
ように動作する。
エージェントが静的に接続することに加えて、エージェント受け渡しメカニズムも存在する。エージェント受け渡しメカニズムによって、エージェントとエージェントとの接続を終了させ、エージェントの一つをさらに別のエージェントに再接続することができる。
前述したように、各エージェントは、通常、別の構成要素に関連する他の一つのエージェントと対話する。一般に、構成要素は多くの入力及び出力を含み、従って多くのエージェントを有し得る。仮に、個人が略図作成時に各構成要素の各エージェント間の接続を定義する必要があるならば、多数の関連接続を行うべき状況での作業は繁雑になる。
多くの場合、構成要素は複数のエージェントが特定のタスクのために情報を解決する必要がある。これらエージェントは時に関連する場合があるため、エージェントをグループ化してバンドルにして複雑性を隠し、そのようにして一つのエージェントのようにバンドルを取り扱うことは理にかなっている。これは略図を大幅に簡易化し、エラーを低減させる。
例えば、典型的には、エージェントバンドルが最大で100を越える多数のエージェントを含むことがある。バンドリング/バンドリング解除プロセスの効率を向上させるために、エージェントバンドルを階層的に配置することはよくある。そして、アクセスされる機会が多いエージェント又はエージェントのバンドルは、より容易にアクセスできるようになる。
前述したように、エージェントの受け渡しは、対話に明示的に関わらないエージェントが責任を他の下位構成要素に渡せるようにするために行われる。
ビルドプロセスの実装においてさらなる有用な技術は、チェーニングとして知られる技術である。
前述した例の全てでは、エージェント間は1対1で対話が行われた。従って、構成要素からの一つの出力は、後続する構成要素の一つの入力に接続され、各エージェントは一つの対応するエージェントと対話するようになされる。
動的な構成要素又は動的な略図の実装を可能にするために、多段階構築を使用することができる。具体的には、通常、多段階構築は、設計者が、困難な構築を制御するために、複数の段階で略図を意図的にレイアウトして、次いでこれを、初期段階の進行を満足したときに実装する状況を指す。しかし、これは構成要素レベルで実装することもできる。
前述した例では、動的な構成要素の場合であっても構成要素は予め定義される。これは、入力及び出力されるデータの性質が予め決定されるためである。これは、ユーザが、フォーラムから構成要素を選択するときに、構成要素の特定の入力及び出力の要件を認識していることを意味する。
前述したように、システムは、構成要素を階層的に組み合わせられるようにして、複雑で連続したデータ処理を行えるようにする。従って、フォーラムを介して提供可能な基礎的な基本構成要素を使用して、複雑な構成要素を構築することができる。
構成要素供給者のサービス実装に保護を提供するため、システムは、コンテキストに依存するコードを生成するように実装することができる。
・開始時の実行可能な既知の状態
・前の命令からのレジスタの既知の状態
・スタック及びメモリの既知の状態
・レジスタ、スタック及びメモリの割り当て
・プロジェクト内のそれ自体(構成要素)の番号
・どの構成要素が自分の構成要素に接続されるか
・コードを置くべき場所
コンテキスト依存コードは、同じタスクを実行する多くの方法があり、方法によってはシステムの他の部分に依存することを利用する。依存するコードを作成することによって、第3者が、あまり書き換えることなくコードの容易な再使用を防止し、又はリバースエンジニアリングを防止する。あるレベルの依存性を越えると、リバースエンジニアリングし書き換えるよりも、構成要素を単に再購入するほうが経済的になる。
例1
留意点:これはx86アセンブリであり、またアセンブリが16進数の代わりに提示される。
mov ebx, 0 ;store number 0 in register ebx
int 0x80 ;trap call to Unix OS
この結果、定数1及び0が、登録されたeax及びebxにそれぞれロードされ、ソフトウェア割り込みを実行してオペレーティングシステムにトラップして戻る。このコードを実行すると、オペレーティングシステムがプログラムを終了し、コードをメモリから解放する。例1は、これを顧客に送ると、供給者のIPを与えることになるので、コンテキストに鈍感である。
1)送るコード量を少なくする。
2)実行時間を短くする。
3)コードをこの特定のコンテキストでしか動作できないようにする。
例2
int 0x80
他の多くの組み合わせが存在する。例えば、異なるレジスタが正しい定数を含む場合、レジスタからレジスタへの移動は、定数をレジスタに移すよりも安価である。同様に、レジスタは、存在する定数が必要な数に非常に近いものである場合に加算することができる。それぞれの場合で、生じる結果は他のいずれのコンテキストでも使用不可能なものである。さらに、顧客は、それぞれのコンテキストでの他の多くの組み合わせに気付かないであろう。
一例では、前述したプロセスは、構成要素のサプライチェーンを使用し、実行可能アプリケーションのコードを生成する。コード生成構成要素サプライチェーンの根底には、アセンブリ命令に似たものに類似した構成要素がある。これら根底の各構成要素は、通常、1〜3のマシンコード命令を生成し、いくつかの例としては、以下のものがある。
・assign
・add
・multiply
・divide
・subtract
・jump condition
これら各構成要素は、レジスタ、スタックメモリ、ヒープメモリ及びマシン状態に対してどのような作用を有するかを理解する。
mov eax, 1 ;eax=1 ;eax=1, ebx=?, ecx=?, edx=?
mov ebx, 2 ;ebx=2 ;eax=1, ebx=2, ecx=?, edx=?
add eax, exb ;eax=eax+ebx ;eax=3, ebx=2, ecx=?, edx=?
mov ecx, eax ;ecx=eax ;eax=3, ebx=2, ecx=3, edx=?
単一パラメータのコンテキスト依存性
単一パラメータ依存性とは、生成されたコードが一つのレジスタの状態に依存することである。単一パラメータ依存性は、最小レベルのマシン状態コンテキスト依存性を表す。
アセンブリに近い低レベルにコンテキスト依存性を作り出すことは、実装が最も困難なレベルである。これは、与えられた問題を実装することができる方法の数が限られていることによる。より高いレベルの構成要素がこのようなコンテキストに依存する構成要素を使用するには、固有のコンテキスト依存性が高すぎる。
前述した例では、複数回のコード生成が行われる場合、各回での出力結果は、コンテキストに直接依存するため同じである。
・ランダムコンテキストの導入(ディザリングとして知られる)
・複数の可能な出力からの選択(例えば、表1は所定のコンテキストに可能な8つの結果を示し、これら8つの選択肢の中の一つがランダムに選択されて出力として使用される)
・データ処理の再分配のネゴシエーション(メッシングとして知られる)
従って、例えば、構成要素は、レジスタを乱数に設定する等により、後続する構成要素が使用するランダムコンテキストを導入するようになすことができる。さらに、システムは、複数の等しく適切であるが、異なるコンテキスト依存性ソリューションのる出力を選択するように動作することができる。
この場合、構成要素は、複数の異なる技術を用いてデータ処理を内部で行うようになされる。この場合、技術は異なる結果コードを生成するように構成される。この一例について、これより図29Aに関連して説明する。
メッシングの場合、構成要素は協働して、各構成要素の出力を、各構成要素の各作業に基づいて変更できるようにする。
従って、一例では、前述したシステムは、ユーザが、構成要素の組み合わせを定義することによってデータ処理を実行する、又はコンピュータコードを生成できるようにする。この場合、各構成要素は各データ処理サービスに対応する。これによって、構成要素の組み合わせが実行されると、所望のデータ処理が実行される一連のデータ処理を定義する。又は、所望のコードが生成されることになる一連のデータ処理を定義する。
・競争要素をソフトウェア開発に加える、
・供給者の専門化を可能にする、
・供給者及び顧客両方のIPを保護する、
・クライアントに完全に譲渡可能な所有権を生み出す、
・工業的スタイルのソフトウェアサプライチェーンを作成する。
・構成要素の供給者が直接競争して、各サービスを提供できるようにすることによって、構成要素供給者間の競争を可能にし、
・供給者及びクライアントのIPを均整が取れるように保護し、
・構成要素のサプライチェーンの開発を可能にし、
・完全分散型の構成要素の処理エンジンを提供し、
・完全自動コードの生成をサポートする。
・構成要素デザイナー − 構成要素の視覚的組み立てをサポートするアプリケーション
・構成要素公開及び非公開仕様ファイル − XML等、所定の形式で構成要素の定義のため
・構成要素サーバ − 構成要素公開仕様ファイルに指定のサービス供給をサポートするアプリケーション
・構成要素の提供を調整する、エージェントによって具体化されるサーバ間通信メッセージのセット
IP保護
処理は、構成要素を個々に識別することができ、設計されたコンテキスト内でしか使用可能な出力を生成することができない固有のメカニズムを提供することによって供給者の知的財産を保護することができる。
これに加えて、前述したモデルは、コンテキスト独立環境に存在する受動的に再使用可能要素からのコードの開発を助長する現在のコーディングの慣行とは対照的に、使用に応じて料金を支払う構成要素の戦略を可能にする。コンテキスト独立構成要素は、ユーザが使用の都度、構成要素を再購入する必要性をなくし、構成要素を元から生成することの経済性を揺るがす。
説明したプロセスは、業界型のサプライチェーンをサポートする。この場合、所定の構成要素に対する購入注文が供給者に届き、構成要素ベンダーサイトに配備された構成要素サーバが必要な下位構成要素に対する購入注文を自動的に生成する。このような自動化により、効率的な「ジャストインタイム」による構成要素のサプライチェーンが生み出される。
プロセスは真の分散型コード構築をサポートする。
このセクションは、通常、実行可能なコードの構築に使用される基本構成要素の例を含む。
前述したように、バンドル構成要素は、複数のエージェント接続を一つのエージェント接続にバンドリングするように動作する。入力及び出力の数の違いを含め、様々な、異なるバンドリング構成要素を提供することができる。
dup構成要素は、例えば、図31Cに示すように、二つ以上の出力エージェントOに接続された入力エージェントIを含む。
この構成要素は、図31Dに示され、エージェントIが受け取ったペイロードを、10進数から16進数に変換して、エージェントOから出力する。これはエージェントPによって与えられる精度で行われる。変換のいずれのエラーもオプションのエージェントEにら出力される。
図31Eに示すH2B構成要素は、エージェントIが受け取ったペイロードを、16進数から2進数に変換して、エージェントOから出力する。これはエージェントPによって与えられる精度で行われる。変換のいずれのエラーもオプションのエージェントEに出力される。
図31Fに示すendian構成要素は、エージェントIがペイロードとして受け取った入力16進数のバイト単位で反転してエージェントOに出力する。例えば、入力が01234567の場合、出力は67452301になる。これはエージェントPによって与えられる精度で行われる。変換のいずれのエラーもオプションのエージェントEに出力される。
図31Gに示すこの構成要素は、エージェントFindに入力される文字列の出現を求めて、エージェントInに入力された文字列をサーチし、各外観をエージェントReplaceに入力された文字列で置き換え、結果をエージェントOutに送る。
図31Hに示すこの構成要素は、Tag Inエージェントに入力されたタグを求めてXML Inエージェントに提示されたXML文書をサーチする。
・Value Outにタグに関連する値、
・XML OutにXML文書の残りの部分、
・Exceptionに発生したいずれの例外、
を出力する。
"<b>
<a>1</a>
</b>
<a>2</a>
<b>
<a>3</a>
</b>"
であり、Tag Inエージェントのペイロードが「a」である場合、Value Outは「2」であり、XML Outは、
"<b>
<a>1</a>
</b>
<b>
<a>3</a>
</b>"
になる。
図31Iに示すadd tag構成要素は、Tag Inエージェントに入力されるペイロードに示されるタグに基づいて、またValue Inエージェントに入力される値に従って、有効なXMLにおいて<Tag In>Value In</Tag In>の形態のXMLデータ(タプル)を作成する。値をBase64数として記憶する必要がある場合にはそうされる。XMLにおいて有効ではないタグである場合、例外が発生し、XML Outエージェントに出力されるペイロードは何も含まない。
図31Jに示すこの構成要素は、エージェント1及び2に入力されるペイロードの文字列を連結し、結果を残りのエージェントに出力する。例えば、文字列1が「バナナ」であり、文字列2が「スムージー」である場合、出力エージェントは「バナナスムージー」を出力する。
図31Kに示すこの構成要素は、エージェントIが受け取った文字列の長さを測定し、長さをエージェントOから出力する。例えば、エージェントIにおける入力文字列が「ABCDEF」である場合、出力は6になる。
図31Lに示すこの構成要素は、ルックアップテーブル」プロトコルに従って、XMLでエージェント「T」に供給されるルックアップテーブルから入力「I」をサーチし、適合する出力をエージェント「O」から出力する。
<protocol>
<protocol_name>lookup table</protocol_name>
<protocol_data>
<entry>
<input>input 1</input>
<output>output 1</output>
</entry>
<entry>
<input>input 1</input>
<output>output 1</output>
</entry>
<entry>
<otherwise>output otherwise</otherwise>
</entry>
</protocol_data>
</protocol>
And
図31Mに示すこの構成要素は、エージェント1及び2に入力されたペイロードに示されるブール文字列の論理和を計算し、結果をエージェントOのペイロードに出力する。入力のいずれかをブール文字列に解析することができない場合、例外が発生し、エージェントOからは何も送られない。例えば、1が「true」であり、2が「false」の場合、Oは「false」になる。
図31N、図31O及び図31Pは、エージェント1、2に入力されたペイロードの除算、加算及び等号判定という数学的関数を行う数学演算子構成要素Div、ADD、EQを示す。この場合、結果は各出力エージェントOに出力され、例外がエージェントEに出力される。
図31Qに示すBuild ASM1構成要素は、コードの断片の収集を担当するデータ構造を表すビルドチェーニングの処理をする、ビルド構成要素のメンバである。
図31Sに示すBuild ASM2構成要素もビルド構成要素のメンバである。
図31Uに示すInit_elf構成要素もビルド構成要素の一つである。
具体例
代替の技術について、以下詳細に記す複数の具体例において概説する。
第1の例では、一つの構成要素を含む略図が構築される。この単純な例は、構築に関わるステップを強調する役割を果たす。
第2の例は、この例では「Add」サービスの提供が、自動化された構成要素「Add2」の使用を通して提供されること以外は、第1の例と実質的に同じである。構成要素「Add2」の構成要素の表示Add2の一例を図33に示す。図に示すように、構成要素の表示Add2は、構成要素の表示Add1と実質的に同じである。
第3の具体例は、add構成要素の複雑性を拡張して、10進数及び16進数等、底の異なる数値の入力を取り扱えるようにする。これは、10進数又は16進数のいずれかとして入力を許容できる加算であり、10進数又は16進数のいずれかを出力することができる。
この具体例は、最も複雑なadd構成要素について考察する。
Validate String構成要素は、入力文字列(In)をLISTエージェントの有効文字列リストと比較することによって機能する。この例では、リストは「Decimal」及び「Hexadecimal」である。入力文字列は、有効な場合、有効であるとして渡され、OUT(checked)エージェントは「true」に戻る。文字列が有効ではなかった場合、OUT(checked)エージェントは「false」に戻る。validate stringのさらなるサービスは、入力文字列を指定された出力形式に再フォーマットすることである。これには、空きスペース(スペース及び復帰改行文字)の除去、文字列の小文字への変換、及び、また文字列長のトリミングが含まれ得る。FORMATエージェントがこの出力形式を指定する。
Or構成要素は、複数のソースからの入力に基づいてイベントをトリガするときに使用される論理演算子である。入力のいずれかがtrueの場合にはtrueを出力するように、すべての入力を組み合わせる。Orを購入した最初のとき、入力エージェントは、それぞれ接続されたばかりであるためすべて未定義である。従ってペイロードを有さない。次いで、Or構成要素は、送るべき出力が何であるかを決定するのに十分な情報を得るまでエージェントペイロードを待つ。Or構成要素は入力エージェントのいずれかが「true」のペイロードを有すると、すぐに「true」を出力し、その他の場合は、すべての入力エージェントが「false」と特定されるまで待ち、すべて「false」と特定されたポイントで「false」を出力する。
エージェントIN1、IN2、OUTが、バンドリングを利用して、一方は数値を表し、一方は数の形式を指定する二つのエージェントを共に組み合わせる。このバンドリングは、数の形式がバンドルの最初の位置にあり、数値が2番目の位置にあるものと想定する。これら二つの特定のエージェントの組み合わせをナンバーバンドリングと呼ぶ。互換性を保証するために、エージェントIN1、IN2は、ナンバーバンドルを生成するエージェントのみに接続しなければならず、OUTエージェントはナンバーバンドルを取り扱うことのできるエージェントにのみ接続されなければならない。バンドリングについてさらに情報を得るには、バンドリング及びバンドリング解除のセクションを参照のこと。
Validate String構成要素は、所定の要件に基づいて入力をチェックしフォーマットできるようにする。
Validate String構成要素のOUT(checked)エージェントA23、A53、A31は、各形式仕様が入力検証に合格したか否かを示す。これらのいずれかが不合格である場合、さらなる機能を手動で実行する必要がある。OUT(checked)エージェントA23、A53、A31は、Or構成要素C8を使用して一つのエージェントA36に組み合わせられ、エージェントA36は、「Add4」によって提供される手動の加算を使用すべきか、又は「Add3」によって提供される自動的な加算を使用すべきかを指定するエージェントペイロードを有する。
addition構成要素C11によって行われる加算の出力は、bundle構成要素C10を使用して複数のバンドルに組み合わせられる。
前述した四つの具体例では、どのようにしてエージェント情報の処理できるかについて示した。前述した各例は、コードの構築を取り扱っているが、代わりにコンピュータプログラムがいくつかのタスク、これら例では加算演算を行っていたことに留意されたい。これから、図1、図3A〜図3B及び図10A〜図10Eのフローチャートに記した例はソフトウェア生成の例であるが、処理動作を直接行うにあたっても使用することが可能なことが理解できる。
最後の具体例は、図36AのPit Pixel構成要素を使用して、図36Cに詳述するスタンドアロンプログラムを作成することを示す。
可変コンテキスト依存性について、内部略図を図37Aに示すassign構成要素の使用に関連してこれより説明する。
マシンの状態は、各レジスタが、構築時に決定することができる値を含むか否か、決定することができる場合には値が何であるかを記録する。レジスタの値は、実行時でしか決定することができない場合には未知になる。以下の例では、マシンの状態は、以下の形式を有するXMLペイロードに対応する。
<ebx>B</ebx>
<ecx>C</ecx>
<edx>D</edx>
ここで、A、B、C、又はDはレジスタの10進数値又は文字列「unknown」に対応する。例えば、以下のようになる。
<ebx>1</ebx>
<ecx>unknown</ecx>
<edx>10</edx>
この例はx86CPUのレジスタのうち、4個のみのマシン状態を追跡するだけであり、これは様々なCPUアーキテクチャに応じて拡張し変更することができることが理解できる。
build中のすべての構成要素は、Init_elf、int 0×80、Bcat及びAssign構成要素を含め、マシン状態サービスをサポートしなければならない。Init_elf構成要素は、値0を含むレジスタeax、ebx、ecx及びedxに対応するLinuxエグゼキュータブルのスタートアップマシン状態でビルドチェーニングを初期化する。Assign構成要素は、マシン状態における一つのレジスタエントリの値を、割り当てるレジスタ及び値に一致するように設定する。int 0×80構成要素は、この構成要素によって生成されるコードは、レジスタeaxの値を実行時に変更するシステムコールに対応するため、マシン状態におけるeaxエントリを「unknown」に設定する。Bcatはビルドチェーニングの一部を成し、コードチェーニングと並列してマシン状態チェーニングを提供することによってマシン状態をサポートし、これにより、各構成要素がマシン状態をチェーニング内の前の構成要素から受け取り、更新されたマシン状態を次の構成要素に送ることができる。
Add Reg1, K
ここで、Reg1は割り当てるべきレジスタであり、Reg2は既知の値を含むレジスタであり、Kは、要求される割り当て値を得るためにReg2の値に加算する必要がある数である。
Add Reg1
また、第2の部分は値Kに対応する。第1の部分は、lookup table構成要素82を使用して、Reg1、Reg2情報を適切なマシンコードに変換することで計算される。
<protocol_name>lookup table</protocol_name>
<protocol_data>
<entry>
<input>eaxeax</input>
<output>89C005</output>
</entry>
<entry>
<input>eaxebx</input>
<output>89D805</output>
</entry>
.....
</protocol_data>
</protocol>
このルックアップテーブルは、Reg1及びReg2の各組み合わせごとに一つのエントリを含むため、レジスタeax、ebx、ecx、及びedxに16個のエントリがある。第2のルックアップテーブル84は、Kのコードを含め、送られたコードに対応するバイト数を出力する。
この一例について、「hello world」プログラムに関連してこれより説明する。具体的には、構成要素を生成する「アセンブリ的な」コードで書かれた従来の「hello world」プログラムの例を以下に記す。
GLOBAL _start
section .text
_start:
mov ebx, 1 ;standard out
mov eax, 4 ;system write system call
mov ecx, string ;Pointer to string
mov edx, 11 ;Length of string
int 0x80 ;start system call
mov ebx, 0 ;exit error code
mov eax, 1 ;System exit system call
int 0x80 ;start system call
section .data
string db 'hello world'
これは、以下を使用してアセンブルされリンクされる。
ld -s hello.o. -o hello
実行できる逆アセンブラを表8に示す。これはマシンコードを示し、以下を使用して作成された。
従来のコードとの比較として、前述したassign構成要素を使用して同じプログラムを作成した。これは図38Aに示すルート略図を使用して実現した。
<schematic>
<name>test</name>
<author>none</author>
<description>undescribed</description>
<w>400</w>
<h>460</h>
<agent>
<x>371</x>
<y>412</y>
<agent_id>2147483647<agent_id>
<agent_name>Code Out</agent_name>
<agent_description></agent_description>
<auto_term>manual</auto_term>
<persistance>persistance</persistance>
<payload></payload>
<optional>false</optional>
<auto_payload>false</auto_payload>
<hand_off>true</hand_off>
<sound_file></sound_file>
</agent>
...
<component>
<filename>/dream/asm/techreview/assign.comp</filename>
<schematic_component_id>1</schematic_component_id>
<x>190.0</x>
<y>66.0</y>
</component>
...
<link>
<half_link>
<schematic_component_id>10</schematic_component_id>
<agent_id>3</agent_id>
</half_link>
<half_link>
<schematic_component_id>17</schematic_component_id>
<agent_id>1</agent_id>
<half_link>
<anchor>
<x>190.0</x>
<y>66.0</y>
</anchor>
</link>
...
</schematic>
従来の技術によって生成した結果コードと本発明により生成した結果コードの比較を表8に記す。
printf("hello world");
]
そして、以下を使用して統計的にリンクしてストリップすると、
gcc -static hello.c -o hello
strip hello
377kBのエグゼキュータブルになる。このプログラムはprintfを使用し、printfは汎用であり、かつコンテキストから独立したものであり、明らかにコードの膨張を際立たせる。
この例は、二つのprint stringのシステムコールを使用して「Hello」を、次いで「world」をプリントする。本発明によりこれを行う略図の一例を図38Bに示し、手動で最適化されたコンテキスト独立コードと結果コードの比較を表9に示す。従来のアセンブリコードは以下の通りである。
GLOBAL _start
section .text
_start:
mov ebx, 1 ;standard out
mov eax, 4 ;system write system call
mov ecx, string1 ;Pointer to string1
mov edx, 6 ;Length of string1
int 0x80 ;start system call
mov ebx, 1 ;standard out
mov eax, 4 ;system write system call
mov ecx, string2 ;Pointer to string2
mov edx, 5 ;Length of string2
int 0x80 ;start system call
mov ebx, 0 ;exit error code
mov eax, 1 ;System exit system call
int 0x80 ;start system call
section .data
string1 db 'hello '
string2 db 'world'
この例では、コンテキスト独立例は手動で最適化され、当業者に理解されるように、同等の標準的なC++プログラムと比較してサイズが大幅に低減される。重要なのは、コードバレーの2番目のprint stringでは、ecxがstring2のポインタに設定されることを出力する(add ecx,0×6)。この場合、前のprint stringがecxをstring1の値に初期化した。string2のアドレスはecxの前の値に相対して計算される。これは、assign構成要素内のAdd selfを使用して実現される。
Claims (16)
- 構成要素を使用してコンピュータによる実行可能なコードを生成する方法であって、該コンピュータによる実行可能なコードはコンピュータで実行可能であり該実行により当該コンピュータがユーザ所望の機能を実行可能であり、各構成要素はそれぞれの機能有し構成要素サーバによって自動的に実行される各データ処理サービスを表現するものであり、各データ処理サービスは処理されたデータを提供し、当該構成要素のそれぞれは前記構成要素サーバに入力されるデータを表現する少なくとも一つの入力部と前記構成要素サーバによって出力される処理されたデータを表現する少なくとも一つの出力部とを含み、該方法は複数の処理システムによって実行され、該複数の処理システムは第1の処理システムと、該第1の処理システムに通信ネットワークを介して接続された一つ又は複数のエンティティ処理システムとを有し、該第1の処理システムはプロセッサとメモリと当該メモリに記憶され、当該プロセッサで実行可能なソフトウェアとを有し、各エンティティ処理システムはプロセッサとメモリと当該メモリに格納され、当該プロセッサで実行可能なソフトウェアとを有し、各構成要素のそれぞれの表現は前記第1の処理システムに記憶されており、
前記方法は、
a)前記第1の処理システムが構成要素の組み合わせを決定することであって、当該構成要素の組み合わせは複数の構成要素の組み合わせであり、定義された一連のデータ処理を実行するための相互接続された複数の構成要素サーバを表現するものであり、前記構成要素の組み合わせは、当該構成要素の組み合わせに含まれる各構成要素の機能を組み合わせることにより前記ユーザ所望の機能を達成させるようにユーザにより定義され、かつ、
前記構成要素の組み合わせは、
i)前記第1の処理システムの前記ソフトウェアが入力装置を介してユーザから受け取った入力コマンドに応答していくつかの前記構成要素を選択すること、及び、
ii)前記第1の処理システムの前記ソフトウェアが前記ユーザから前記入力装置を介して受け取った入力コマンドに応答して選択された構成要素の選択された入力部と他の選択された構成要素の選択された出力部との間の必要な接続を定義して前記構成要素の組み合わせを定義すること、により決定される、
構成要素の組み合わせを決定すること、及び、
b)前記第1の処理システムが前記構成要素の組み合わせを実装して前記コンピュータによる実行可能なコードを生成するために、
i)前記第1の処理システムの前記ソフトウェアが前記構成要素の組み合わせに含まれる各構成要素に対する構築要求を生成し、各構築要求が前記構成要素の組み合わせの前記定義された一連のデータ処理に従って生成されており、各構築要求が前記構成要素の組み合わせでそれぞれの構成要素について決定された必要な接続の詳細を含むこと、
ii)前記第1の処理システムが前記通信ネットワークを介して各構築要求をそれぞれのエンティティ処理システムに転送することであって、各エンティティ処理システムは前記構築要求に関連づけられた各構成要素に対応する構成要素サーバを実装することで前記構築要求に応答できるようにされており、各構成要素サーバは前記各エンティティ処理システムの前記プロセッサにより実行されるソフトウェアアプリケーションである、転送すること、
iii)各構成要素サーバが、前記それぞれの構築要求に従って前記それぞれのデータ処理サービスを自動的に行うことであって、
(1)前記構成要素サーバの少なくともいくつかは前記それぞれのデータ処理サービスを実行するため、
(イ)前記構成要素サーバが前記構築要求に含まれる前記必要な接続の詳細に従って前記第1の処理システムか他の構成要素サーバからデータを受け取ること、
(ロ)前記構成要素サーバが当該エンティティ処理システムの前記メモリに当該データを記憶すること、及び
(ハ)前記構成要素サーバが前記データを処理し処理されたデータを提供できるようにすることであり、当該処理されたデータはそれぞれの構成要素の機能を提供するためのコードの断片を含むこと、を含む、前記各データ処理サービスを行うこと、
(2)前記構成要素サーバの少なくともいくつかは、
(イ) 当該構成要素サーバが構成要素でもある下位構成要素のための一つ又は複数のさらなる構築要求を生成させ、当該一つ又は複数のさらなる構築要求がさらなるエンティティ処理システムに転送され、当該さらなるエンティティ処理システムのそれぞれは前記下位構成要素のそれぞれに関連付けられて当該さらなるエンティティ処理システムによってさらなる構成要素サーバを実装して前記下位構成要素によって表現されるそれぞれのデータ処理サービスを実行できるようにすること、及び
(ロ)前記構成要素サーバが、前記さらなるエンティティ処理システムのいくつかから、前記さらなる構成要素サーバが前記データ処理サービスを実行した結果として与えられる処理されたデータを受け取ること、
によって前記各データ処理サービスを行うこと、及び
(3)各構成要素サーバが、前記構築要求に含まれる前記必要な接続の詳細に従って、前記処理されたデータを前記第1の処理システムか他の構成要素サーバに提供すること、および
iv)前記第1の処理システムは、前記構成要素サーバが前記一連のデータ処理を実行した結果として提供した前記処理されたデータを受け取り、前記構成要素サーバによって当該処理されたデータに提供された当該コードの断片は前記構成要素の組み合わせに従って結合されると、前記構成要素の組み合わせに含まれる各構成要素の機能を有し前記コンピュータによる実行可能なコードである結果バイナリファイルを形成すること、を含むコード生成方法。 - 前記構成要素サーバが前記データを処理して処理されたデータを提供するために、
a)コードの断片を前記データへ追加すること、
b)コードの断片を前記データ内の第1の位置から第2の位置へ移動すること、
c)前記データからコードの断片を除去すること、及び、
d)前記データにおいてコードの断片を変更すること、の少なくとも1つをおこなうことを特徴とする請求項1に記載の方法。 - 前記第1の処理システムにおいて、
a)前記構成要素の組み合わせに含まれる各構成要素に対する構成要素の仕様を決定することであって、各構成要素の仕様は前記構成要素に対応する構成要素サーバを実装するために使用される少なくとも前記エンティティ処理システムの指示を含むこと、
b)前記構成要素の仕様のそれぞれに基づいて、前記構成要素の組み合わせに含まれる各構成要素のための前記それぞれのエンティティ処理システムを決定すること、及び
c)前記構成要素の仕様のそれぞれに従って、前記構成要素の組み合わせに含まれる各構成要素のための構築要求を前記エンティティ処理システムのそれぞれに転送すること、を含む請求項1あるいは請求項2に記載の方法。 - 前記複数の処理システムがさらに前記第1の処理システムとは異なる第2の処理システムを含み、当該第2の処理システムは前記通信ネットワークを介して少なくとも前記第1の処理システムに結合されるとともに、プロセッサとメモリと当該メモリに記憶され、当該プロセッサで実行可能なソフトウェアとを有し、
前記方法は、前記第2の処理システムにおいて、
a)複数の構成要素の詳細を前記第2の処理システムの前記メモリから取り出すことであって、該詳細は、
i)前記構成要素により表現された前記データ処理サービスの説明、
ii)前記第1の処理システムの表示装置上に表示するのに適した前記構成要素のグラフィック表現、及び
iii) 前記構成要素の前記入力部と出力部の動作を定義する入出力仕様、
の少なくとも一つを含む構成要素の仕様である、該取り出すこと、
及び、
b)前記第1の処理システムを介して、前記構成要素の仕様をユーザに提供すること、を含む請求項1乃至請求項3のいずれか一項に記載の方法。 - 前記第2の処理システムにおいて、
a)前記第1の処理システムの前記入力装置と前記通信ネットワークとを介して前記ユーザから受け取った入力コマンドに応答して、前記構成要素の中から各構成要素を選択し、及び、
b)前記第1の処理システムを介して、前記選択された構成要素の前記仕様を前記ユーザに提供すること、を含む請求項4に記載の方法。 - 前記第2の処理システムにおいて、
a)前記第1の処理システムを介してユーザに複数の構成要素の分類の指示を提供することであって、該分類は異なる形態の構成要素を定義すること、
b)前記第1の処理システムの入力装置を介してユーザから受け取った入力コマンドに応答して構成要素の分類を選択することであって、該入力コマンドは通信ネットワークを介して前記第2の処理システムによって受け取られること、及び
c)前記選択された分類内の前記構成要素についての構成要素の仕様を前記第1の処理装置を介して前記ユーザに提供することであって、該提供によって、前記ユーザが前記構成要素の機能に基づいて構成要素の選択を行なえるようにすること、を含む請求項4又は請求項5に記載の方法。 - 前記第1の処理システムにおいて、
a)前記一つ又は複数の選択された構成要素の前記構成要素の仕様に含まれる各グラフィック表現を使用して該一つ又は複数の選択された構成要素のグラフィック表現を当該第1の処理システムの表示装置上に表示し、及び、
b)前記入力装置を介してユーザから受け取った入力コマンドに応答して、前記表示装置上の前記グラフィック表現を処理して前記一つ又は複数の選択された構成要素間の相互接続を少なくとも定義し、それによって前記構成要素の組み合わせを定義すること、を含む請求項4乃至請求項6のいずれか一項に記載の方法。 - 前記第2の処理システムにおいて、
a)前記メモリから前記構成要素のパフォーマンス情報を取り出し、及び、
b)前記パフォーマンス情報を前記第1の処理システムを介して前記ユーザに提供し、前記ユーザが前記パフォーマンス情報に従って前記構成要素を選択できるようにすること、を含み、
前記パフォーマンス情報は、
i)前記構成要素に対応する前記構成要素サーバを実装する前記エンティティ処理システムの指示、
ii)前記エンティティ処理システムの地理的場所の指示、
iii)前記構成要素サーバの実装期間の指示、
iv)前記各構成要素サーバの実装に関連する費用の指示、及び、
v)前記構成要素サーバによる前記各データ処理サービスの実行における出来のよさを示す格付け、
のうちの少なくとも一つを含むことを特徴とする請求項4に記載の方法。 - 異なる構成要素サーバによって提供される実質的に同等のデータ処理サービスを行う複数の異なる構成要素を提供し、前記異なる構成要素は異なるパフォーマンス情報を有するように前記異なる構成要素サーバは異なるエンティティ処理システムによって実装されること、
を含む請求項8に記載の方法。 - 前記構成要素の組み合わせにおける前記構成要素の一つがルート構成要素であって、当該ルート構成要素の対応する構成要素サーバがルートサーバであり、
a)前記ルートサーバは前記構成要素の組み合わせ内の他の構成要素に対する構築要求を発行し、
b)前記ルートサーバは前記他の構成要素のそれぞれのためのそれぞれの構成要素サーバへそれぞれの構築要求を転送し、
c)各構成要素サーバはそれぞれの構築要求に従ってそれぞれのデータ処理サービスを自動的に実行し、
d)前記ルートサーバは前記それぞれの構築要求で要求される接続の詳細に従い、前記構成要素サーバから処理されたデータを受け取り、
e)前記ルートサーバは前記構成要素サーバによって前記処理されたデータ内に提供された前記コードの断片を前記構成要素の組み合わせに従って結合して前記コンピュータによる実行可能なコードを提供する、
ことを特徴とする請求項1に記載の方法。 - 前記ルートサーバは前記第1の処理システムの前記プロセッサにより実行されるソフトウェアアプリケーションであることを特徴とする請求項10に記載の方法。
- 各コードの断片は前記第1の処理システムの前記メモリのそれぞれ所定のメモリロケーションに提供され、前記所定のメモリロケーションは前記構成要素の組み合わせに従って決定されており、よって前記コードの断片は前記第1の処理システムの前記メモリ内で結合されて前記コンピュータによる実行可能なコードを提供することを特徴とする請求項11に記載の方法。
- 構成要素を使用してコンピュータによる実行可能なコードを生成する装置であって、該コンピュータによる実行可能なコードはコンピュータで実行可能であり該実行により当該コンピュータがユーザ所望の機能を実行可能であり、各構成要素はそれぞれの機能を有し構成要素サーバによって自動的に実行される各データ処理サービスを表現するものであり、各データ処理サービスは処理されたデータを提供し、当該構成要素のそれぞれは前記構成要素サーバに入力されるデータを表現する少なくとも一つの入力部と前記構成要素サーバによって出力される処理されたデータを表現する少なくとも一つの出力部とを含み、
複数の処理システムを含む前記装置は、
a)プロセッサとメモリと当該メモリに記憶され、当該プロセッサで実行可能なソフトウェアとを有するとともに、前記各構成要素のそれぞれの表現を記憶する第1の処理システムであって、
i)構成要素の組み合わせを決定することであって、当該構成要素の組み合わせは複数の構成要素の組み合わせであり、定義された一連のデータ処理を実行するための相互接続された複数の構成要素サーバを表現し、前記構成要素の組み合わせは、当該構成要素の組み合わせに含まれる各構成要素の機能を組み合わせることにより前記ユーザ所望の機能を達成させるようにユーザにより定義され、かつ、前記構成要素の組み合わせは、
(1)前記第1の処理システムの前記ソフトウェアが入力装置を介してユーザから受け取った入力コマンドに応答していくつかの前記構成要素を選択すること、及び、
(2)前記第1の処理システムの前記ソフトウェアが前記ユーザから受け取った入力コマンドに応答して選択された構成要素の選択された入力部と選択された構成要素の選択された出力部との間の必要な接続を定義して前記構成要素の組み合わせを定義すること、により定義、決定すること、
ii)前記構成要素の組み合わせを実装して前記コンピュータによる実行可能なコードを生成するために、
(1)前記第1の処理システムの前記ソフトウェアが前記構成要素の組み合わせに含まれる各構成要素に対する構築要求を生成し、当該構築要求が当該構成要素の組み合わせの前記一連のデータ処理に従って生成されており、各構築要求が前記構成要素の組み合わせでそれぞれの構成要素について決定された必要な接続の詳細を含むこと、
(2)当該第1の処理システムが前記構築要求を各エンティティ処理システムに転送して各エンティティ処理システムが前記各構成要素に対応する構成要素の組み合わせを実装できるようにすること、
iii) 前記構成要素の組み合わせの前記実装の結果として提供された処理されたデータを受け取り、前記構成要素サーバによって当該処理されたデータに提供された当該コードの断片は前記構成要素の組み合わせに従って結合されると、前記構成要素の組み合わせに含まれる各構成要素の機能を有し前記コンピュータによる実行可能なコードである結果バイナリファイルを形成すること、
を行う第1の処理システム、
及び
b)該第1の処理システムに通信ネットワークを介して接続された一つ又は複数のエンティティ処理システムであって、各エンティティ処理システムはプロセッサとメモリと当該メモリに格納され、当該プロセッサで実行可能なソフトウェアとを有し、各エンティティ処理システムは、
i)前記第1の処理システムから前記構築要求を受け取り、
ii)該構築要求に応答して当該構築要求に関連する前記各構成要素に対応する構成要素サーバを実装し、当該構成要素サーバは各エンティティ処理システムの前記プロセッサによって実行されるソフトウェアアプリケーションであり、かつ、前記各構築要求に従って前記各データ処理サービスを自動的に実行するようにされており、
(1)前記構成要素サーバの少なくともいくつかは前記各データ処理サービスを実行するため、
(a)前記構成要素サーバが前記構築要求に含まれる前記必要な接続の詳細に従って前記第1の処理システムか他の構成要素サーバから前記データを受け取ること、
(b)前記構成要素サーバが当該エンティティ処理システムの前記メモリに当該データを記憶すること、及び
(c)前記構成要素サーバが処理されたデータを提供するように前記データを処理することであって、当該処理されたデータは前記それぞれの構成要素の機能を提供するための前記コードの断片を含むこと、により前記データを処理し、
(2)前記構成要素サーバの少なくともいくつかは、
(a)当該構成要素サーバが下位構成要素のための一つ又は複数のさらなる構築要求を生成させ、当該一つ又は複数のさらなる構築要求がさらなるエンティティ処理システムに転送され、当該さらなるエンティティ処理システムのそれぞれは前記下位構成要素のそれぞれに関連付けられて当該さらなるエンティティ処理システムによってさらなる構成要素サーバを実装して前記下位構成要素によって表現されるそれぞれのデータ処理サービスを実行できるようにすること、によって前記各データ処理サービスを行うこと、及び
(b)前記構成要素サーバが、前記さらなるエンティティ処理システムのいくつかから、前記さらなる構成要素サーバが前記データ処理サービスを実行した結果として与えられる処理されたデータを受け取ること、及び
(iii)前記構築要求に含まれる前記必要な接続の詳細に従って、前記処理されたデータを前記第1の処理システムか他の構成要素サーバに提供すること、を行うエンティティ処理システム、とを備える装置。 - 前記第1の処理システムとは異なる第2の処理システムをさらに備え、当該第2の処理システムは前記通信ネットワークを介して少なくとも前記第1の処理システムに結合されるとともに、プロセッサとメモリと当該メモリに記憶され、当該プロセッサで実行可能なソフトウェアとを有し、前記第2の処理システムの前記メモリは使用可能な構成要素の詳細を記憶し、
前記詳細は、
a)前記構成要素により表現された前記データ処理サービスの説明、
b)前記第1の処理システムの表示装置上に表示するのに適した前記構成要素のグラフィック表現、及び
c)前記構成要素の前記入力部と出力部の動作を定義する入出力仕様、
の少なくとも一つを含む構成要素の仕様である、ことを特徴とする請求項13に記載の装置。 - 前記第2の処理システムは、エンティティ処理システムから構成要素の仕様を得るように成される請求項12に記載の装置。
- 前記第1の処理システムは、前記第2の処理システムと協働し、
それによってユーザが、
a)前記利用可能な構成要素のうちの一つ又は複数を選択し得る、及び、
b)前記構成要素の組み合わせを定義し得る、請求項12又は請求項13に記載の装置。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2002952510A AU2002952510A0 (en) | 2002-11-06 | 2002-11-06 | Code genertation |
AU2002952510 | 2002-11-06 | ||
US42485902P | 2002-11-08 | 2002-11-08 | |
US60/424,859 | 2002-11-08 | ||
AU2003901926A AU2003901926A0 (en) | 2003-04-22 | 2003-04-22 | Code generation |
AU2003901926 | 2003-04-22 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005502080A Division JP2006506757A (ja) | 2002-11-06 | 2003-11-06 | コード生成 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012104134A true JP2012104134A (ja) | 2012-05-31 |
JP5456756B2 JP5456756B2 (ja) | 2014-04-02 |
Family
ID=32314656
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005502080A Pending JP2006506757A (ja) | 2002-11-06 | 2003-11-06 | コード生成 |
JP2011274319A Expired - Lifetime JP5456756B2 (ja) | 2002-11-06 | 2011-12-15 | 構成要素を使用してコンピュータによる実行可能なコードを生成する方法及び装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005502080A Pending JP2006506757A (ja) | 2002-11-06 | 2003-11-06 | コード生成 |
Country Status (4)
Country | Link |
---|---|
EP (3) | EP1565813B1 (ja) |
JP (2) | JP2006506757A (ja) |
CA (1) | CA2503629C (ja) |
WO (1) | WO2004042639A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10885016B2 (en) | 2016-09-06 | 2021-01-05 | Kabushiki Kaisha Toshiba | System, client device, server device, and program |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9521209B2 (en) | 2002-11-06 | 2016-12-13 | Code Valley Corp Pty Ltd | Code generation |
US8589861B2 (en) | 2002-11-06 | 2013-11-19 | Code Valley Corp Pty Ltd | Code generation |
US8832178B2 (en) | 2002-11-06 | 2014-09-09 | Noel William Lovisa | Service implementation |
EP2386946B1 (en) * | 2004-05-20 | 2020-06-10 | Code Valley Corp Pty Ltd | Code generation techniques using components in a distributed system |
RU2722239C1 (ru) * | 2019-11-26 | 2020-05-28 | Общество с ограниченной ответственностью «ПИРФ» (ООО «ПИРФ») | Способ создания и использования формата исполняемого файла с динамическим расширяемым заголовком |
US11570099B2 (en) * | 2020-02-04 | 2023-01-31 | Bank Of America Corporation | System and method for autopartitioning and processing electronic resources |
US12020004B1 (en) | 2023-08-08 | 2024-06-25 | Eygs Llp | Systems and methods to generate human-readable instruction code based on a declarative specification |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11316675A (ja) * | 1998-01-16 | 1999-11-16 | Toshiba Corp | コンピュ―タシステム |
JP2003005977A (ja) * | 2001-06-26 | 2003-01-10 | Ricoh Co Ltd | ソフトウェア供給システム |
JP2003140895A (ja) * | 2001-11-06 | 2003-05-16 | Ricoh Co Ltd | 組み替え可能なソフトウェアを持つ検査システム |
JP2003241966A (ja) * | 2002-02-18 | 2003-08-29 | Toshiba Corp | プログラム作成支援方法、プログラム作成支援プログラム及びプログラム作成支援装置 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07104981A (ja) * | 1993-09-30 | 1995-04-21 | Hitachi Software Eng Co Ltd | オブジェクトリンク情報を用いたプログラム構築装置 |
US5553282A (en) * | 1994-12-09 | 1996-09-03 | Taligent, Inc. | Software project history database and method of operation |
AU1331897A (en) * | 1995-12-15 | 1997-07-14 | Object Dynamics Corp. | Method and system 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 |
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 |
DE19837871C2 (de) | 1998-08-20 | 2000-06-08 | Manfred Broy | Verfahren zum automatischen Erzeugen eines Programms |
US20010051928A1 (en) * | 2000-04-21 | 2001-12-13 | Moshe Brody | Protection of software by personalization, and an arrangement, method, and system therefor |
US7171693B2 (en) * | 2000-05-12 | 2007-01-30 | Xtreamlok Pty Ltd | Information security method and system |
DE10041072A1 (de) * | 2000-08-22 | 2002-03-14 | Siemens Ag | Verfahren zur automatischen Erzeugung von Programmcode |
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 |
EP1211598A1 (en) | 2000-11-29 | 2002-06-05 | Texas Instruments Incorporated | Data processing apparatus, system and method |
US7870535B2 (en) * | 2001-02-22 | 2011-01-11 | 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 |
-
2003
- 2003-11-06 CA CA2503629A patent/CA2503629C/en not_active Expired - Lifetime
- 2003-11-06 WO PCT/AU2003/001474 patent/WO2004042639A1/en active Application Filing
- 2003-11-06 EP EP03810334.7A patent/EP1565813B1/en not_active Expired - Lifetime
- 2003-11-06 EP EP11175797.7A patent/EP2385463B1/en not_active Expired - Lifetime
- 2003-11-06 EP EP11175802A patent/EP2390785A3/en not_active Ceased
- 2003-11-06 JP JP2005502080A patent/JP2006506757A/ja active Pending
-
2011
- 2011-12-15 JP JP2011274319A patent/JP5456756B2/ja not_active Expired - Lifetime
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11316675A (ja) * | 1998-01-16 | 1999-11-16 | Toshiba Corp | コンピュ―タシステム |
JP2003005977A (ja) * | 2001-06-26 | 2003-01-10 | Ricoh Co Ltd | ソフトウェア供給システム |
JP2003140895A (ja) * | 2001-11-06 | 2003-05-16 | Ricoh Co Ltd | 組み替え可能なソフトウェアを持つ検査システム |
JP2003241966A (ja) * | 2002-02-18 | 2003-08-29 | Toshiba Corp | プログラム作成支援方法、プログラム作成支援プログラム及びプログラム作成支援装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10885016B2 (en) | 2016-09-06 | 2021-01-05 | Kabushiki Kaisha Toshiba | System, client device, server device, and program |
Also Published As
Publication number | Publication date |
---|---|
JP5456756B2 (ja) | 2014-04-02 |
EP2385463A3 (en) | 2012-04-25 |
JP2006506757A (ja) | 2006-02-23 |
EP1565813B1 (en) | 2019-01-09 |
CA2503629A1 (en) | 2004-05-21 |
CA2503629C (en) | 2014-07-08 |
WO2004042639A1 (en) | 2004-05-21 |
EP2385463B1 (en) | 2020-04-29 |
EP2390785A3 (en) | 2012-10-24 |
EP2390785A2 (en) | 2011-11-30 |
EP1565813A4 (en) | 2009-06-10 |
EP2385463A2 (en) | 2011-11-09 |
EP1565813A1 (en) | 2005-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5456756B2 (ja) | 構成要素を使用してコンピュータによる実行可能なコードを生成する方法及び装置 | |
US8589861B2 (en) | Code generation | |
Greenfield et al. | Software factories: assembling applications with patterns, models, frameworks and tools | |
US10140098B2 (en) | Code generation | |
US7454399B2 (en) | Application integration system and method using intelligent agents for integrating information access over extended networks | |
Perrouin et al. | Reconciling automation and flexibility in product derivation | |
Ziadi et al. | Software product line engineering with the UML: Deriving products | |
US20040064805A1 (en) | Enterprise scoped software factory | |
EP2228726B1 (en) | A method and system for task modeling of mobile phone applications | |
Hausmann et al. | Model-based discovery of Web Services | |
US20090094576A1 (en) | Pattern-Based Development of Computer System Solutions | |
Brown et al. | On components and objects: the foundations of component-based development | |
Neubauer et al. | Higher-order process modeling: product-lining, variability modeling and beyond | |
Binder et al. | Towards a standards-based domain specific language for industry 4.0 architectures | |
Srinivasan et al. | CODE: a development environment for OWL-S Web services | |
US20120278787A1 (en) | Collaborative realtime planning using a model driven architecture and iterative planning tools | |
Matejaš et al. | Building a BPM application in an SOA-based legacy environment | |
Eslamichalandar et al. | Service composition adaptation: An overview | |
Bresciani et al. | The Tropos analysis process as graph transformation system | |
Huang et al. | Platform-independent model templates for business process integration and management solutions | |
Taher et al. | A model-driven approach for web service adaptation using complex event processing | |
AU2003275766B2 (en) | Code generation | |
Chen et al. | DRIVE: A tool for developing, deploying, and managing distributed sensor and actuator applications | |
Louhichi et al. | ATL Transformation of UML 2.0 for the Generation of SCA Model | |
Chung et al. | Legacy to web migration: service-oriented software reengineering methodology |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120216 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130611 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130612 |
|
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 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131203 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140107 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140108 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5456756 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |