JP2007128517A - コンポーネントライブラリを自動設計するためのシステム、方法及びプログラム - Google Patents
コンポーネントライブラリを自動設計するためのシステム、方法及びプログラム Download PDFInfo
- Publication number
- JP2007128517A JP2007128517A JP2006297594A JP2006297594A JP2007128517A JP 2007128517 A JP2007128517 A JP 2007128517A JP 2006297594 A JP2006297594 A JP 2006297594A JP 2006297594 A JP2006297594 A JP 2006297594A JP 2007128517 A JP2007128517 A JP 2007128517A
- Authority
- JP
- Japan
- Prior art keywords
- components
- component
- combination
- library
- subset
- 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
- G06F2111/00—Details relating to CAD techniques
- G06F2111/20—Configuration CAD, e.g. designing by assembling or positioning modules selected from libraries of predesigned modules
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)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
【課題】本発明は、コンポーネントライブラリを自動設計するためのシステム及び方法を提供する。
【解決手段】システムは、各々が一定の関数を実行する複数のコンポーネントと、複数のコンポーネントを維持するコンポーネントライブラリと、コンポーネント生成モジュールとを有する。コンポーネント生成モジュールは、コンポーネントライブラリ内の複数のコンポーネントのサブセットを選択し、複数のコンポーネントのサブセットを無作為に組み合わせることによって組み合わせを生成し、組み合わせを複数の目標に対して評価し、組み合わせを新しいコンポーネントにカプセル化し、組み合わせが1つまたはそれ以上の基準に合致する場合にそれをコンポーネントライブラリ内に加える。
【選択図】図2
【解決手段】システムは、各々が一定の関数を実行する複数のコンポーネントと、複数のコンポーネントを維持するコンポーネントライブラリと、コンポーネント生成モジュールとを有する。コンポーネント生成モジュールは、コンポーネントライブラリ内の複数のコンポーネントのサブセットを選択し、複数のコンポーネントのサブセットを無作為に組み合わせることによって組み合わせを生成し、組み合わせを複数の目標に対して評価し、組み合わせを新しいコンポーネントにカプセル化し、組み合わせが1つまたはそれ以上の基準に合致する場合にそれをコンポーネントライブラリ内に加える。
【選択図】図2
Description
本発明は、コンポーネントライブラリの自動設計の分野に関し、さらに詳細には自動コンポーネントライブラリ設計をサポートするシステム、方法、該システムによって実行することのできる命令からなるプログラムに関する。
コンピュータシステムがより普及してきているため、ソフトウェア構築の経済的なやり方がますます重要になる。従来、ソフトウェアのコストを下げるために、数種類のアプローチ、すなわち、再使用可能なソフトウェアコードのライブラリ、ドメイン特化技術および言語、進化的アプローチ、および、演繹的な論理ベースの方法がとられている。これらの従来のソフトウェアコンポーネントライブラリは、多大なコストで手動で形成される。デジタル回路の分野では、コンポーネントライブラリが長い間、使用されてきている。有用であるデジタルコンポーネントは、集積回路としてカプセル化される。事実上、すべてのデジタル設計が、ライブラリまたは集積回路のカタログで構築される。形式仕様から設計された人工生成物(アーチファクト)を生成するために、多くの研究が、数学的論理の使用に集中している。この作業は、今までのところデジタル回路の分野では成功しているが、ソフトウェアコードの構築では限られた成功を収めているだけである。
課題を解決する非線形遺伝的アルゴリズムが提供されている(例えば、特許文献1参照)。複雑な構造を設計するために用いられる自動設計処理および装置が提供されている(例えば、特許文献2参照)。
米国特許第5,136,686号明細書
米国特許第5,867,397号明細書
本発明は、上記に鑑み、コンポーネントライブラリを自動設計するためのシステム、方法、該システムによって実行することのできる命令からなるプログラムを提供する。
本発明の様々な実施の形態は、上述の公知の技術のすべての態様に、コンポーネントのライブラリを自動的に形成する新規の再帰的アセンブリプロセスを結合し、それは、コンピュータソフトウェアコンポーネント、デジタル回路、機械的およびアーキテクチャ設計、または、階層的に構成されることができ且つコンピュータシステムで表示され操作されることができる他の種類の人工生成物でありうるが、それらに限定されない。本発明は、ビルディングブロックとして使用される簡単なコンポーネントで開始し、これらを無作為により複雑なものへ繰り返し組み合わせることによって進行する。コンポーネントのこれらの無作為な組み合わせの有用性および性質は、機能的な目標(goal)のセットに対して測定される。次いで、有用な組み合わせがライブラリ内の新しいコンポーネントになり、それを、さらなる無作為組み合わせのためのビルディングブロックとして使用することができる。このようにして、本発明は、自力でより簡単なコンポーネントからより複雑なものの集合になる有用なコンポーネントのライブラリを提供する。既存のコンポーネントは、より良好な解が見出されたときに、置き換えられる。ユーザによって選ばれた機能的な目標のセットは、特定のクラスの問題を解決するコンポーネントを生成するようシステムを方向づける。
本発明の第1の態様は、自動コンポーネントライブラリ設計をサポートするシステムであって、該システムは、各々が一定の関数を実行する複数のコンポーネントと、前記複数のコンポーネントを維持するコンポーネントライブラリと、コンポーネント生成モジュールであって、前記コンポーネントライブラリ内の前記複数のコンポーネントのサブセットを選択し、前記複数のコンポーネントの前記サブセットを無作為に組み合わせることによって組み合わせを生成し、前記組み合わせを複数の目標に対して評価し、前記組み合わせを新しいコンポーネントにカプセル化し、前記組み合わせが1つまたはそれ以上の基準に合致する場合に、それを前記コンポーネントライブラリ内に加えるコンポーネント生成モジュールとを具備する。
本発明の第2の態様は、第1の態様のシステムであって、前記複数のコンポーネントの各々は、ソフトウェアコンポーネント、デジタル回路、電子コンポーネント、プロセスコンポーネント、機械コンポーネント、アーキテクチャ設計、および、階層的に構成されコンピュータシステムで表示され操作されることができる人工生成物のうちの1つである。
本発明の第3の態様は、第2の態様のシステムであって、前記ソフトウェアコンポーネントは、サブプログラム、オブジェクト、モジュール、および、パッケージのうちの1つである。
本発明の第4の態様は、第1の態様のシステムであって、前記複数のコンポーネントの各々は、コストに関連づけることができる。
本発明の第5の態様は、第1の態様のシステムであって、前記目標は、形式論理言語を経由してユーザによって特定されることができる。
本発明の第6の態様は、第1の態様のシステムであって、さらに、前記コンポーネントライブラリを複数のプリミティブコンポーネントで初期化する。
本発明の第7の態様は、第1の態様のシステムであって、前記コンポーネント生成モジュールは、さらに、前記組み合わせによって包含されるかまたは前記目標および前記組み合わせに整合しないかのいずれかである前記複数のコンポーネント内の1つのコンポーネントを置き換える。
本発明の第8の態様は、第1の態様のシステムであって、前記コンポーネント生成モジュールは、さらに、前記組み合わせを生成するときに前記複数のコンポーネントの前記サブセットにおいて一定のコンポーネントを別のものよりも優先する。
本発明の第9の態様は、第1の態様のシステムであって、前記コンポーネント生成モジュールは、さらに、前記新しいコンポーネントを観測するインタフェースを指定する。
本発明の第10の態様は、第1の態様のシステムであって、前記組み合わせは、前記複数のコンポーネントの前記サブセット内の前記コンポーネントのいずれよりも複雑である。
本発明の第11の態様は、第1の態様のシステムであって、前記1つまたはそれ以上の基準の各々は、前記組み合わせが有効な関数を有する、前記組み合わせが前記複数のコンポーネントのいずれよりも安価なコストを有する、および、前記組み合わせが前記複数のコンポーネントのいずれよりも良好に前記目標に関係する、のうちの1つである。
本発明の第12の態様は、自動コンポーネントライブラリ設計をサポートする方法であって、該方法は、複数のコンポーネントをコンポーネントライブラリ内に維持するステップであって、前記複数のコンポーネントの各々が一定の関数を実行する、該維持するステップと、前記コンポーネントライブラリ内の前記複数のコンポーネントのサブセットを選択するステップと、前記複数のコンポーネントの前記サブセットを無作為に組み合わせることによって組み合わせを生成するステップと、前記組み合わせを複数の目標に対して評価するステップと、前記組み合わせを新しいコンポーネントにカプセル化し、前記組み合わせが1つまたはそれ以上の基準に合致する場合にそれを前記コンポーネントライブラリ内に加えるステップとを含む。
本発明の第13の態様は、第12の態様の方法であって、形式論理言語を経由してユーザによって1つまたはそれ以上の目標を特定するステップをさらに含む。
本発明の第14の態様は、第12の態様の方法であって、前記コンポーネントライブラリを複数のプリミティブコンポーネントで初期化するステップをさらに含む。
本発明の第15の態様は、第12の態様の方法であって、前記組み合わせによって包含されるかまたは前記目標および前記組み合わせに整合しないかのいずれかである前記複数のコンポーネント内の1つのコンポーネントを置き換えるステップをさらに含む。
本発明の第16の態様は、第12の態様の方法であって、前記組み合わせを生成するときに前記複数のコンポーネントの前記サブセットにおいて一定のコンポーネントを別のものよりも優先するステップをさらに含む。
本発明の第17の態様は、第12の態様の方法であって、前記新しいコンポーネントを観測するインタフェースを指定するステップをさらに含む。
本発明の第18の態様は、第12の態様の方法であって、前記複数のコンポーネントの前記サブセット内の前記コンポーネントのいずれよりも複雑である前記組み合わせを生成するステップをさらに含む。
本発明の第19の態様は、自動コンポーネントライブラリ設計をサポートするためのシステムによって実行することのできる命令からなるプログラムであって、該プログラムは、複数のコンポーネントをコンポーネントライブラリ内に維持するステップであって、前記複数のコンポーネントの各々が一定の関数を実行する、該維持するステップと、前記コンポーネントライブラリ内の前記複数のコンポーネントのサブセットを選択するステップと、前記複数のコンポーネントの前記サブセットを無作為に組み合わせることによって組み合わせを生成するステップと、前記組み合わせを目標に対して評価するステップと、前記組み合わせを新しいコンポーネントにカプセル化し、前記組み合わせが1つまたはそれ以上の基準に合致する場合にそれを前記コンポーネントライブラリ内に加えるステップとを含む。
本発明の第20の態様は、自動コンポーネントライブラリ設計をサポートするシステムであって、該システムは、複数のコンポーネントをコンポーネントライブラリ内に維持するための手段であって、前記複数のコンポーネントの各々が一定の関数を実行する、該維持するための手段と、前記コンポーネントライブラリ内の前記複数のコンポーネントのサブセットを選択するための手段と、前記複数のコンポーネントの前記サブセットを無作為に組み合わせることによって組み合わせを生成するための手段と、前記組み合わせを複数の目標に対して評価するための手段と、前記組み合わせを新しいコンポーネントにカプセル化し、前記組み合わせが1つまたはそれ以上の基準に合致する場合に、それを前記コンポーネントライブラリ内に加えるための手段とを具備する。
本発明によれば、コンポーネントのライブラリを自動的に形成することができる。
本発明は、例のために、限定のためではなく、添付の図面の図に例示され、類似参照符号が類似要素を示す。本開示における「1つの」または「いくつかの」実施の形態に対する参照は、必ずしも同一の実施の形態に対するものではなく、そのような参照は、少なくとも1つを意味することに注意しなければならない。
また、本発明の上記及び下記の例示的な実施形態は、情報処理装置によって実行されてもよい。当該情報処理装置は、例えば、目標を受け取る入力部、プロセッサによる実行の際の作業領域を形成するとともにモジュールや処理対象としてのコンポーネントやコンポーネントライブラリ等のデータを格納する記憶部、処理内容や処理結果を表示する表示部、及び、データを通信網などに出力する出力部などを含む。プロセッサは、モジュールを読み出し実行することにより、処理対象のデータ等に対して当該プログラムの手順に対応した処理をする。
図1は、本発明の1つの実施の形態における好適な自動コンポーネントライブラリ設計システムの例示である。この線図は、コンポーネントを機能的に別個のものとして描いているが、そのような描写は、単に例示目的のためである。この図に描かれたコンポーネントが、任意に組み合わされることができるか、または、別個のソフトウェア、ファームウェア、ハードウェアのコンポーネントに分割されることができることは、当業者には明らかである。さらに、そのようなコンポーネントは、どのように組み合わされるかまたは分割されるかにかかわらず、同一のコンピュータデバイスまたは複数のコンピュータデバイス上で実行することができ、複数のコンピュータデバイスは、1つまたはそれ以上のネットワークによって接続されることができることもまた、当業者には明らかである。
図1を参照すると、本発明は、仕様から、コンポーネントライブラリ101を自動的に構築することが可能である。これらのライブラリは、静的ではなく、経時的に、より良好により効率的にコンポーネントが発展するにつれて、自動的に改良する。下記は、特定のアプリケーション分野とは無関係に、本発明の操作の原則を一般的な用語で説明する。
・コンポーネント102は、一定の関数を実行することができる。本発明は、ライブラリにおける所与のコンポーネントまたはコンポーネントの組み合わせ用の関数を決定することが可能であることを必要とする。コンポーネントのいくつかは、プリミティブであるとみなされ、すなわち、公知の基本的なビルディングブロックである。目標は、ユーザ103によって規定された所望のコンポーネントの関数の形式仕様である。コンポーネント生成モジュール104は、数コンポーネントを使用することができ、一定の設計ルールを受ける組み合わせを形成する。非限定的な例では、デジタルコンポーネントの組み合わせは、コンポーネントを一緒にワイヤで結ぶことによって形成されることができる。ソフトウェアコンポーネントの組み合わせは、サブプログラムを呼び出すことによって形成されることができる。コンポーネント生成モジュールは、どれほどよくコンポーネントまたは組み合わせが目標を満足させるかを測定することもできる。コンポーネントおよび組み合わせを比較して、一方が他方より良好に目標を満足させるか否かを決定することができる。すべてのコンポーネントおよび組み合わせをこのように比較することができるわけではなく、すなわち、すべての点で他のものよりもよいものがなくてもよい(数学的に、それらの関係は、半順序である)。
・その関数とは別に、各コンポーネントで関連づけられたコストがある。デジタル回路では、コストは、それを構築するのに必要なコンポーネントの数であり、ソフトウェアコンポーネントのコストは、その計算効率であってもよい。組み合わせは、コンポーネント生成モジュールによってカプセル化することができ、組み合わせにインタフェース105を指定することによって新しいコンポーネント106を形成し、その新しいコンポーネントをライブラリへ戻って加える。組み合わせ、その構造およびサブコンポーネントは、新しいコンポーネントの設計と呼ばれる。事実上、新しいコンポーネントは、インタフェースのみが観測できる(observable)隠された設計を備えたブラックボックスである。これは、さらなる組み合わせで使用することができる。このようにして、有用な組み合わせが、ライブラリの新しいコンポーネントになることができる。したがって、コンポーネントは、コンポーネントの組み合わせから構築された再帰的アセンブリであり、これは、今度は、コンポーネントの組み合わせから構築されることができる等である。
・コンポーネント102は、一定の関数を実行することができる。本発明は、ライブラリにおける所与のコンポーネントまたはコンポーネントの組み合わせ用の関数を決定することが可能であることを必要とする。コンポーネントのいくつかは、プリミティブであるとみなされ、すなわち、公知の基本的なビルディングブロックである。目標は、ユーザ103によって規定された所望のコンポーネントの関数の形式仕様である。コンポーネント生成モジュール104は、数コンポーネントを使用することができ、一定の設計ルールを受ける組み合わせを形成する。非限定的な例では、デジタルコンポーネントの組み合わせは、コンポーネントを一緒にワイヤで結ぶことによって形成されることができる。ソフトウェアコンポーネントの組み合わせは、サブプログラムを呼び出すことによって形成されることができる。コンポーネント生成モジュールは、どれほどよくコンポーネントまたは組み合わせが目標を満足させるかを測定することもできる。コンポーネントおよび組み合わせを比較して、一方が他方より良好に目標を満足させるか否かを決定することができる。すべてのコンポーネントおよび組み合わせをこのように比較することができるわけではなく、すなわち、すべての点で他のものよりもよいものがなくてもよい(数学的に、それらの関係は、半順序である)。
・その関数とは別に、各コンポーネントで関連づけられたコストがある。デジタル回路では、コストは、それを構築するのに必要なコンポーネントの数であり、ソフトウェアコンポーネントのコストは、その計算効率であってもよい。組み合わせは、コンポーネント生成モジュールによってカプセル化することができ、組み合わせにインタフェース105を指定することによって新しいコンポーネント106を形成し、その新しいコンポーネントをライブラリへ戻って加える。組み合わせ、その構造およびサブコンポーネントは、新しいコンポーネントの設計と呼ばれる。事実上、新しいコンポーネントは、インタフェースのみが観測できる(observable)隠された設計を備えたブラックボックスである。これは、さらなる組み合わせで使用することができる。このようにして、有用な組み合わせが、ライブラリの新しいコンポーネントになることができる。したがって、コンポーネントは、コンポーネントの組み合わせから構築された再帰的アセンブリであり、これは、今度は、コンポーネントの組み合わせから構築されることができる等である。
図2は、本発明の1つの実施の形態における自動コンポーネントライブラリ設計の好適なプロセスを例示するフローチャートである。この図は、例示の目的のために特定の順序の機能的なステップを描いているが、プロセスは、ステップのいずれの特定の順序または配列に限定されない。この図に描かれた様々なステップは、様々なやり方で、省略され、再配列され、組み合わされ、および適合されることの少なくともひとつが可能であることが当業者には明らかである。
図2を参照すると、プロセスは、1セットの目標および1セットのプリミティブコンポーネントを入力とする。ステップ201で、ライブラリを、その中に置かれた小セットのプリミティブコンポーネントの小セットで初期化する。ステップ202で、ライブラリのコンポーネントのいくつかがビルディングブロックとして選択され、それは、ステップ203で無作為に組み合わされる。結果は、ステップ204でユーザ指定の目標に対して評価され、ステップ205で有用であると決定される場合には、全体としてステップ206で示されるように、新しいコンポーネントとしてライブラリに加えられ、将来のコンポーネント用に可能なビルディングブロックとなる。そうでない場合には、組み合わせは、ステップ207で捨てられる。これらのステップは、満足のいくコンポーネントライブラリが得られるまで繰り返すことができる。
図2の個別ステップは、下記のようにより詳細に説明することができる。
・ライブラリを初期化する(201)。所与のプリミティブコンポーネントがライブラリに加えられる。
・いくつかのコンポーネントを選択する(202)。このステップで(図3に示される好適なフローチャートによって詳述される)、選択関数に基づいて、小さな数のコンポーネントがライブラリから選択される。選択関数は、下記により詳細に説明され、コンポーネントを無作為に選択するが、いくつかのコンポーネントを他のものよりも優先させてもよく、すなわち、いくつかのコンポーネントは、他のものよりも高い確率で選択されてもよい。選択されるコンポーネントの正確な数は、コンポーネントの性質および利用可能な組み合わせ演算子に依存する。本発明の1つの実施の形態において、この数nは、ステップ302で無作為に選ばれ、各選択ステップで、2から12の間であった。最良の範囲nは、操作されているコンポーネントの性質に依存してもよい。コンポーネントは次いで、ステップ303で選択されることができ、n個のコンポーネントが選ばれるまでプロセスが続く。このステップで、同一のコンポーネントを数回選択することができることに注意されたい。
・選択されたコンポーネントを無作為に組み合わせる(203)。選択されたコンポーネントは、ドメインの組み合わせルールを受けて無作為に組み合わせることができる。1つの実施の形態において、コンポーネントは、一緒にワイヤで結んで回路を形成することができる。このワイヤ結合は、2つの出力ピンを接続することができないというルールがあってもよいが、これに限られない。ルールは、組み合わせを構築しながらテストされてもよく、または、ひとたび組み合わせが形成されてからテストされてもよい。たとえば、ソフトウェアコンポーネントの場合には、コンパイラまたは類似分析ツールを使用して、組み合わせが有効なソフトウェアコードを構成しているか否かを決定することができる。そのようなテストで不合格だった場合には、異なる組み合わせが試される。
・組み合わせを評価する(204)。組み合わせの関数が決定され、この関数が所与の目標にどのように関係するかがさらに決定される。組み合わせは無作為に生成されるため、その関数が、所与の目標にまったく関係しなくてもよい。この場合、組み合わせは、有用ではないとみなされる。
・組み合わせが有用であり(205)、ライブラリに加えられなければならない(206)。組み合わせは、既存のコンポーネントを包含するか(208)。組み合わせが既存のコンポーネントに機能的に等価である場合で、且つ、新しい組み合わせが既存のコンポーネントよりも安価にこの関数を実行する場合には、新しい組み合わせは既存のコンポーネントを包含する。
・包含されたコンポーネントの設計を、新しい組み合わせによって置き換える(209)。新しい組み合わせは既存のコンポーネントと同一の関数を実行するがより安価にこれを行うため、これは、すべての点で既存のコンポーネントよりも好ましい。このステップで、既存のコンポーネントの設計は、新しい組み合わせ、新しい設計で置き換えられる。この置き換えは、包含されたコンポーネントで構築されたすべてのコンポーネントに影響を与える。
・新しいコンポーネントを形成する(210)。このステップで、新しい組み合わせは、新しいコンポーネントとしてカプセル化される。新しいコンポーネントは、その関数にもっとも緊密に整合する目標に関連づけられる。
・新しいコンポーネントをライブラリへ加える(211)。
・改良されたコンポーネントを置き換える(212)。新しいコンポーネントとして同一の目標に整合するライブラリ内のすべてのコンポーネントは、新しいコンポーネントがその目標によりよく整合するか否かが確かめられる。そうである場合、既存のコンポーネントは、ライブラリから除去される(したがって、これは、さらなる組み合わせのために選択されることには考慮されない)。しかし、(上記包含されたコンポーネントの置き換えとは対照的に)既存のコンポーネントを他のコンポーネントの設計に使用することには影響しない。
・ライブラリを初期化する(201)。所与のプリミティブコンポーネントがライブラリに加えられる。
・いくつかのコンポーネントを選択する(202)。このステップで(図3に示される好適なフローチャートによって詳述される)、選択関数に基づいて、小さな数のコンポーネントがライブラリから選択される。選択関数は、下記により詳細に説明され、コンポーネントを無作為に選択するが、いくつかのコンポーネントを他のものよりも優先させてもよく、すなわち、いくつかのコンポーネントは、他のものよりも高い確率で選択されてもよい。選択されるコンポーネントの正確な数は、コンポーネントの性質および利用可能な組み合わせ演算子に依存する。本発明の1つの実施の形態において、この数nは、ステップ302で無作為に選ばれ、各選択ステップで、2から12の間であった。最良の範囲nは、操作されているコンポーネントの性質に依存してもよい。コンポーネントは次いで、ステップ303で選択されることができ、n個のコンポーネントが選ばれるまでプロセスが続く。このステップで、同一のコンポーネントを数回選択することができることに注意されたい。
・選択されたコンポーネントを無作為に組み合わせる(203)。選択されたコンポーネントは、ドメインの組み合わせルールを受けて無作為に組み合わせることができる。1つの実施の形態において、コンポーネントは、一緒にワイヤで結んで回路を形成することができる。このワイヤ結合は、2つの出力ピンを接続することができないというルールがあってもよいが、これに限られない。ルールは、組み合わせを構築しながらテストされてもよく、または、ひとたび組み合わせが形成されてからテストされてもよい。たとえば、ソフトウェアコンポーネントの場合には、コンパイラまたは類似分析ツールを使用して、組み合わせが有効なソフトウェアコードを構成しているか否かを決定することができる。そのようなテストで不合格だった場合には、異なる組み合わせが試される。
・組み合わせを評価する(204)。組み合わせの関数が決定され、この関数が所与の目標にどのように関係するかがさらに決定される。組み合わせは無作為に生成されるため、その関数が、所与の目標にまったく関係しなくてもよい。この場合、組み合わせは、有用ではないとみなされる。
・組み合わせが有用であり(205)、ライブラリに加えられなければならない(206)。組み合わせは、既存のコンポーネントを包含するか(208)。組み合わせが既存のコンポーネントに機能的に等価である場合で、且つ、新しい組み合わせが既存のコンポーネントよりも安価にこの関数を実行する場合には、新しい組み合わせは既存のコンポーネントを包含する。
・包含されたコンポーネントの設計を、新しい組み合わせによって置き換える(209)。新しい組み合わせは既存のコンポーネントと同一の関数を実行するがより安価にこれを行うため、これは、すべての点で既存のコンポーネントよりも好ましい。このステップで、既存のコンポーネントの設計は、新しい組み合わせ、新しい設計で置き換えられる。この置き換えは、包含されたコンポーネントで構築されたすべてのコンポーネントに影響を与える。
・新しいコンポーネントを形成する(210)。このステップで、新しい組み合わせは、新しいコンポーネントとしてカプセル化される。新しいコンポーネントは、その関数にもっとも緊密に整合する目標に関連づけられる。
・新しいコンポーネントをライブラリへ加える(211)。
・改良されたコンポーネントを置き換える(212)。新しいコンポーネントとして同一の目標に整合するライブラリ内のすべてのコンポーネントは、新しいコンポーネントがその目標によりよく整合するか否かが確かめられる。そうである場合、既存のコンポーネントは、ライブラリから除去される(したがって、これは、さらなる組み合わせのために選択されることには考慮されない)。しかし、(上記包含されたコンポーネントの置き換えとは対照的に)既存のコンポーネントを他のコンポーネントの設計に使用することには影響しない。
このアプローチは、本発明の連続的なプロセスおよび絶対に終結しない改良とみなされる。言い換えると、これは、目標の所与のセットに基づいて、ライブラリ内のコンポーネントを絶えず改良する。時折、ユーザは、新しい目標を加えてもよく、プロセスは、その点でこの目標を満足させる新しいコンポーネントを見出すように試みる。そのように所望される場合には、プロセスは、すべての目標が十分に低コストのコンポーネントによって満足させられたときに、終結してもよい。
従来の方法は、適合性に基づいて無作為の構造物を使用しおよび選択する進化技術を採用することが多い。本発明によるコンポーネントの目標指向の組み合わせを新しいより複雑なコンポーネントに使用することは、新規であり、既存のコンポーネントをより良好なものによって置き換える概念は新しい。これは、使用される無作為の演算の種類、適合性が決定されるやり方、および、目標の構造が、基本的に異なる。ユーザが設けた目標は、形式論理言語を使用して規定することができる。従来の合成において行われるように、これらの形式仕様を合致するコンポーネントに変換しようと試みるよりはむしろ、本発明は、本発明に記載された再帰的アセンブリプロセスによって生成されたコンポーネントの性質を測定するためにのみ仕様を使用する。本発明は、したがって、仕様から生成された設計への建設的なやり方が知られていない状況に適用可能である。本発明が良好なコンポーネントを見出す効率は、ユーザによって与えられる機能的目標に依存する。一般に、最良の性能は、困難さが増大する多くの目標で達成される。
本発明の潜在的なユーザは、構築されているライブラリコンポーネントの種類に依存して変動し、それは下記でありうるが、それらに限定されない。すなわち、
・ビジネスプロセスオートメーション。企業は、本発明を使用して、ビジネスプロセスのライブラリを形成し、顧客用にカスタマイズされたビジネスプロセスの自動化を提供する。プリミティブビジネスプロセスステップで開始し、より複雑な自動化されたビジネスプロセスが、この場合はカスタマーのニーズおよび必要条件である目標に基づいて、構築される。このようにして、企業のサービスの多くを自動化することができ、以前のクライアント用に開発されたプロセスを再使用することができる。
・ソフトウェア開発。カスタムソフトウェアの開発者は、特に、ロボット工学および制御システムを含むがそれらに限定されない専門技術の狭い領域に集中する者は、カスタマーのニーズによって動かされるますます複雑なソフトウェアソリューションのライブラリを蓄積することによって、本発明を使用することができ、新しいオーダーに即座に且つ安価に応える。
・電子設計。電子装置の設計者は、既存の集積回路(IC)を組み合わせることによって、新しい回路を構築する。そのようにしながら、彼らは、サブアセンブリを構築し、繰り返し再使用される設計パターンを開発する。本発明は、ますます複雑な回路を維持するライブラリでこの活動をサポートすることができる。プリミティブとして既存のICで開始して、新しい回路またはサブアセンブリが構築され、古いものは自動的に改良される。このプロセスを動かす目標は、設計者のカスタマーの機能的な必要条件である。
類似の潜在的なユーザを、機械設計およびコンピュータ支援設計方法を使用する他の専門分野等の領域で見出してもよい。
・ビジネスプロセスオートメーション。企業は、本発明を使用して、ビジネスプロセスのライブラリを形成し、顧客用にカスタマイズされたビジネスプロセスの自動化を提供する。プリミティブビジネスプロセスステップで開始し、より複雑な自動化されたビジネスプロセスが、この場合はカスタマーのニーズおよび必要条件である目標に基づいて、構築される。このようにして、企業のサービスの多くを自動化することができ、以前のクライアント用に開発されたプロセスを再使用することができる。
・ソフトウェア開発。カスタムソフトウェアの開発者は、特に、ロボット工学および制御システムを含むがそれらに限定されない専門技術の狭い領域に集中する者は、カスタマーのニーズによって動かされるますます複雑なソフトウェアソリューションのライブラリを蓄積することによって、本発明を使用することができ、新しいオーダーに即座に且つ安価に応える。
・電子設計。電子装置の設計者は、既存の集積回路(IC)を組み合わせることによって、新しい回路を構築する。そのようにしながら、彼らは、サブアセンブリを構築し、繰り返し再使用される設計パターンを開発する。本発明は、ますます複雑な回路を維持するライブラリでこの活動をサポートすることができる。プリミティブとして既存のICで開始して、新しい回路またはサブアセンブリが構築され、古いものは自動的に改良される。このプロセスを動かす目標は、設計者のカスタマーの機能的な必要条件である。
類似の潜在的なユーザを、機械設計およびコンピュータ支援設計方法を使用する他の専門分野等の領域で見出してもよい。
本発明の様々な実施の形態において、コンポーネント構築プロセスは、興味のある領域を特定する1セットのユーザが設けた目標によってガイドされる。目標自体は、厳密な数学的記述を有することができ、ドメイン特化言語および狭いアプリケーションドメインに集中する形式化を使用し、さらなる自動化を可能にする。ユーザが設けた目標は、形成すべきコンポーネントのドメインを決定する。ライブラリのコンポーネントは、算術演算用のデジタル回路であってもよく、一方、異なるセットの目標が、マルチプレクサ用の回路のライブラリに導いてもよいが、これらに限られない。
非環状デジタル回路の非限定的な例の自動設計用の1つの実施の形態は、下記に詳細に説明される。この実施の形態において、回路の要素は、下記のように実現することができる。
・コンポーネント。コンポーネントは、変動する数の入力および出力のピンを備えたカプセル化されたデジタル回路である。すべての回路は、非環状且つ非同期である(クロック信号は使用されない)。コンポーネントの入力および出力は、それぞれ、入力および出力として指定されるピンである。これらを従来の集積回路として考えることができる。電力および接地接続は示されていない。
・プリミティブ。NANDゲートが唯一のプリミティブコンポーネントである。
・目標。目標は、論理関数のベクトルであり、二分決定グラフ(BDD)のベクトルとして表され、各関数に1つのBDDである。目標は、指定されるべき集積回路の仕様として考えることができる。これは、すべての出力ピン用の論理関数を入力ピンの値によって特定する。
・組み合わせ。組み合わせは、ワイヤで一緒に結ばれた数コンポーネントである。組み合わせの入力は、出力に結合されていないいずれのその構成コンポーネントのすべての入力である。組み合わせの出力は、すべてのその構成コンポーネントのすべての出力である。
・コンポーネント。コンポーネントは、変動する数の入力および出力のピンを備えたカプセル化されたデジタル回路である。すべての回路は、非環状且つ非同期である(クロック信号は使用されない)。コンポーネントの入力および出力は、それぞれ、入力および出力として指定されるピンである。これらを従来の集積回路として考えることができる。電力および接地接続は示されていない。
・プリミティブ。NANDゲートが唯一のプリミティブコンポーネントである。
・目標。目標は、論理関数のベクトルであり、二分決定グラフ(BDD)のベクトルとして表され、各関数に1つのBDDである。目標は、指定されるべき集積回路の仕様として考えることができる。これは、すべての出力ピン用の論理関数を入力ピンの値によって特定する。
・組み合わせ。組み合わせは、ワイヤで一緒に結ばれた数コンポーネントである。組み合わせの入力は、出力に結合されていないいずれのその構成コンポーネントのすべての入力である。組み合わせの出力は、すべてのその構成コンポーネントのすべての出力である。
好適な実施の形態のためのコンポーネント構築プロセスのステップの特定の詳細は、下記のようでありうる。
・ライブラリを初期化する。NANDゲートがライブラリに加えられる。
・いくつかのコンポーネントを選択する。2から12の間の数nを無作為に決定することができる。次いで、n個のコンポーネントがライブラリから無作為に選択され、すなわち、選択関数が無作為に選択される。
・選択されたコンポーネントを無作為に組み合わせる。組み合わせは、選択されたコンポーネントの1つで開始し、引き続いて図4に示された好適なフローチャートによって説明されるように無作為なワイヤ結合を通してさらに選択されたコンポーネントを加えることによって、形成されることができる。各追加コンポーネントは、図5に示された好適なフローチャートによって説明されるように無作為なワイヤ結合を通して加えることができる。非限定的な例では、入力が底部に引かれ出力が各コンポーネントおよび組み合わせの頂部に引かれる図6に示されるように、3つのコンポーネントがワイヤで一緒に結ばれてもよい。
・組み合わせを評価する。組み合わせの関数は、各出力用に、この出力の関数を回路のすべての入力によって記述するBDDを計算することによって、決定することができる。このステップは、当業者に公知である標準回路分析を使用し、ここではさらには記述されない。組み合わせは、それがコンポーネントを包含する場合に(下記参照)、または、すべての既存のコンポーネントよりも良好にいくつかの目標に近づく場合に、有用である。
・関数fおよび目標の1つの関数gを備えた組み合わせの少なくとも1つの組み合わせがあり、fとgとの間の差が、コンポーネントのいずれの出力のいずれの関数とgとの間の差よりも小さいような場合に、組み合わせは、既存のコンポーネントよりも良好に目標に近づくことに注意されたい。図7は、この計算を記述する好適なフローチャートを示す。
・2つの論理関数の差は、2つの関数の出力が異なる入力値のパーセンテージである。この計算は、2つの関数を記述するBDDに基づいて効率的に行うことができる。このステップは、直接BDDの理論に従い、ここではさらには記述されない。
・組み合わせは、既存のコンポーネントを包含する。組み合わせは、コンポーネント各出力用に、2つの出力が同一の関数すなわち同一のBDDを有するように組み合わせの出力がある場合で、且つ、組み合わせのコストがコンポーネントのコストよりも低い場合に、既存のコンポーネントを包含する。組み合わせのコストは、そのコンポーネントのコストの合計であり、コンポーネントのコストは、今度は、1+その設計のコンポーネントの数である。図8は、組み合わせがコンポーネントを包含するか否かをどのように決定するかを記述する好適なフローチャートを示す。
・包含されたコンポーネントの設計を新しい組み合わせによって置き換える。コンポーネントの設計を新しい組み合わせで置き換えるために、新しい組み合わせの出力および入力をコンポーネントの出力および入力に関連づけることができ、コンポーネントの設計は、関数が不変のままであるように新しい組み合わせで置き換えられる。
・新しいコンポーネントを形成する。組み合わせが有用であり既存のコンポーネントを包含しないため、これは、すべての既存のコンポーネントよりも良好にいくつかの目標に近づく。組み合わせは、下記のように、新しいコンポーネントとしてカプセル化されることができる:
・新しいコンポーネントの設計は組み合わせである。
・新しいコンポーネントのインタフェースは、下記のように、入力および出力から構成される。
・新しいコンポーネントの入力は、組み合わせの入力である。
・目標の各関数g用に、その関数がすべての出力のgに対する最小差を有する組み合わせの出力が選択される。新しいコンポーネントの出力は、このように選択された組み合わせの出力である。
・改良されたコンポーネントを置き換える。新しく形成されたコンポーネントが既存のコンポーネントよりも良好にいくつかの目標に近づく場合には、この既存のコンポーネントは、ライブラリから除去される。
・ライブラリを初期化する。NANDゲートがライブラリに加えられる。
・いくつかのコンポーネントを選択する。2から12の間の数nを無作為に決定することができる。次いで、n個のコンポーネントがライブラリから無作為に選択され、すなわち、選択関数が無作為に選択される。
・選択されたコンポーネントを無作為に組み合わせる。組み合わせは、選択されたコンポーネントの1つで開始し、引き続いて図4に示された好適なフローチャートによって説明されるように無作為なワイヤ結合を通してさらに選択されたコンポーネントを加えることによって、形成されることができる。各追加コンポーネントは、図5に示された好適なフローチャートによって説明されるように無作為なワイヤ結合を通して加えることができる。非限定的な例では、入力が底部に引かれ出力が各コンポーネントおよび組み合わせの頂部に引かれる図6に示されるように、3つのコンポーネントがワイヤで一緒に結ばれてもよい。
・組み合わせを評価する。組み合わせの関数は、各出力用に、この出力の関数を回路のすべての入力によって記述するBDDを計算することによって、決定することができる。このステップは、当業者に公知である標準回路分析を使用し、ここではさらには記述されない。組み合わせは、それがコンポーネントを包含する場合に(下記参照)、または、すべての既存のコンポーネントよりも良好にいくつかの目標に近づく場合に、有用である。
・関数fおよび目標の1つの関数gを備えた組み合わせの少なくとも1つの組み合わせがあり、fとgとの間の差が、コンポーネントのいずれの出力のいずれの関数とgとの間の差よりも小さいような場合に、組み合わせは、既存のコンポーネントよりも良好に目標に近づくことに注意されたい。図7は、この計算を記述する好適なフローチャートを示す。
・2つの論理関数の差は、2つの関数の出力が異なる入力値のパーセンテージである。この計算は、2つの関数を記述するBDDに基づいて効率的に行うことができる。このステップは、直接BDDの理論に従い、ここではさらには記述されない。
・組み合わせは、既存のコンポーネントを包含する。組み合わせは、コンポーネント各出力用に、2つの出力が同一の関数すなわち同一のBDDを有するように組み合わせの出力がある場合で、且つ、組み合わせのコストがコンポーネントのコストよりも低い場合に、既存のコンポーネントを包含する。組み合わせのコストは、そのコンポーネントのコストの合計であり、コンポーネントのコストは、今度は、1+その設計のコンポーネントの数である。図8は、組み合わせがコンポーネントを包含するか否かをどのように決定するかを記述する好適なフローチャートを示す。
・包含されたコンポーネントの設計を新しい組み合わせによって置き換える。コンポーネントの設計を新しい組み合わせで置き換えるために、新しい組み合わせの出力および入力をコンポーネントの出力および入力に関連づけることができ、コンポーネントの設計は、関数が不変のままであるように新しい組み合わせで置き換えられる。
・新しいコンポーネントを形成する。組み合わせが有用であり既存のコンポーネントを包含しないため、これは、すべての既存のコンポーネントよりも良好にいくつかの目標に近づく。組み合わせは、下記のように、新しいコンポーネントとしてカプセル化されることができる:
・新しいコンポーネントの設計は組み合わせである。
・新しいコンポーネントのインタフェースは、下記のように、入力および出力から構成される。
・新しいコンポーネントの入力は、組み合わせの入力である。
・目標の各関数g用に、その関数がすべての出力のgに対する最小差を有する組み合わせの出力が選択される。新しいコンポーネントの出力は、このように選択された組み合わせの出力である。
・改良されたコンポーネントを置き換える。新しく形成されたコンポーネントが既存のコンポーネントよりも良好にいくつかの目標に近づく場合には、この既存のコンポーネントは、ライブラリから除去される。
いくつかの実施の形態において、組み合わせが2つ以上の目標に有用であることが発生しうる。この場合、各目標につき1回、数回カプセル化される。この場合、結果として得られるコンポーネントは、それらが異なるインタフェースを有してもよく且つ各々に組み合わせの異なる出力が使用されてもよいため、一般に非常に異なる。図9は、新しいコンポーネントとして組み合わせをカプセル化する例を示す。組み合わせのすべての入力がコンポーネントの入力である一方、組み合わせのすべての出力が、コンポーネントの出力として使用されるわけではない。これは、冗長な不使用の部品を含む設計を備えたコンポーネントへ導くこともある。これが発生する場合には、本発明のアルゴリズムは、やがて、より効率的である機能的に等価な組み合わせを見出す。
図10は、簡単な目標のために生成されたいくつかの好適なコンポーネントを示す。例は、初期のコンポーネントで起こるいくつかの冗長性を例示し、たとえば、等価を構築するための加算の使用である。この種類の不十分さは、やがて、置き換えによって排除される。プリミティブコンポーネントの異なるセットで開始することによって類似の結果が達成されることを認識すべきである。
いくつかの実施の形態において、本発明は、ソフトウェアコンポーネントに適用されることができ、それは、いくつかのプログラミング言語におけるソフトウェアコードである。コンポーネントの正確な性質は、特定の言語によってサポートされるコンポーネントの種類に依存する。したがって、コンポーネントは、フォートランおよびCでありうるがそれらに限定されないサブプログラム、Java(登録商標)およびC++でありうるがそれらに限定されないオブジェクト、Ada等でありうるがそれに限定されないパッケージであってもよい。公理的意味論および述語変換でありうるがそれに限定されない様々な形式仕様形式化を、方法とともに使用することができる。
いくつかの実施の形態において、本発明は、プロセスコンポーネントに適用されることができ、これは、独立して操作しメッセージを交換することによってコミュニケートするプロセスである。プリミティブプロセスのインタフェースは、送信し受信することができるメッセージの種類によって決められる。プロセスは、単一のプロセスとしてプロセスのクラスターを処理することによって作ることができる。この新しいプロセスのインタフェースは、送信し受信することができるメッセージの種類を制限する。コミュニケーティングシステムの計算(calculus of communicating systems、CCS)、コミュニケーティングシーケンシャルプロセス(communicating sequential processes、CSP)およびπ計算でありうるがそれに限定されない様々な形式記述技術を使用することができる。
いくつかの実施の形態において、本発明は、並列計算を使用することができ、図11の好適なシステムによって示されるようなライブラリおよび目標のための共有ストレージを共有する多くのプロセッサを有するコンピュータシステムを効率的に使用する。個別のプロセッサは、互いに無関係に新しい組み合わせを構築し、評価する。したがって、自動設計を加速するのに使用することができるプロセッサの数に制限はない。データをキャッシュに格納し複製するための標準ソフトウェア技術を使用して、メモリコンテンションを最小限にすることができ、インターネットで広域ネットワーク(WAN)を通して接続されたプロセッサを使用することを可能にする。
いくつかの実施の形態において、本発明は、プログラムテストと一緒に使用することができる。この場合、目標の各々は、ユーザによって与えられたテストケースのセットである。組み合わせの適合性は、各々でテストケースを実行することによって決定される。しかし、2つのコンポーネントが機能的に等価であるか否かを決定することが可能ではないため、プロセスを修正しなければならない。テストケースのセットで2つのコンポーネントが同一に振る舞ったとしても、テストされていない入力では異なることもある。したがって、コンポーネントを、機能的に等価なより効率的なものによって置き換えることは可能ではない。代わりに、置き換え後の結果が、いずれのそのような置き換え前のテストを依然として満足させるか否かを決定しなければならない。
いくつかの実施の形態において、本発明は、代替選択を使用することができる。無作為に組み合わせ用のコンポーネントを選択するよりむしろ、一定のコンポーネントが好ましいこともある。他のコンポーネントを構築するのに成功しているコンポーネントが、好適であってもよいが、これに限られない。あるいは、最近形成されたコンポーネントが、組み合わせに好適であってもよい。そのような好みを利用するために、コンポーネントの無作為選択を、図12に示された好適なフローチャートに記述されるように、トーナメント選択によって置き換えることができる。第1のコンポーネントは、ステップ1201で無作為に選択され、1202で選択された第2の無作為コンポーネントとステップ1203で繰り返し比較される。第2のコンポーネントが第1のものよりも組み合わせ用に好適である場合には、ステップ1204で第1のコンポーネントに取って代わり、そうでなければステップ1205で捨てられる。kmaxコンポーネントの合計を比較することができる。kmaxの正確な値は、コンポーネントの種類に依存し、1から4の間でなければならない。
いくつかの実施の形態において、本発明は、交叉演算で結合することができる。上述のように、本発明は、より簡単なコンポーネントから新しい組み合わせを構築する。遺伝的プログラミングで使用される種類の交叉技術をさらに使用して、同一の目標のための2つのコンポーネントの設計を2つの組み合わせに結合することが可能である。
コンピュータ業界の当業者に明らかであるように、従来の汎用または本開示の教示にしたがってプログラムされた特化型のデジタルコンピュータまたはマイクロプロセッサを使用して、1つの実施の形態が実施されてもよい。ソフトウェア業界の当業者に明らかであるように、適切なソフトウェアコーディングは、本開示の教示に基づいて熟練したプログラマーによって容易に準備されることができる。本発明はまた、当業者には容易に明らかであるように、集積回路を準備することによって、または、従来のコンポーネント回路の適切なネットワークを相互接続することによって、実施されてもよい。
1つの実施の形態は、ここに呈された特徴のいずれを実行するために1つまたはそれ以上のコンピュータデバイスをプログラムするために使用することができる命令を格納して有する機械読取可能媒体であるコンピュータプログラム製品を含む。機械読取可能媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブおよび光磁気ディスクを含む1つまたはそれ以上の種類のディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気または光カード、ナノシステム(分子メモリICを含む)、または、命令およびデータの少なくとも1つを格納するのに適切ないずれの種類の媒体またはデバイスを含むことができるが、それらに限定されない。コンピュータ機械読取可能媒体のいずれの1つに格納されるため、本発明は、汎用型のハードウェア、特化型のコンピュータまたはマイクロプロセッサの両方を制御するための、および、コンピュータまたはマイクロプロセッサが本発明の結果を使用する人間のユーザまたは他の機構と相互作用するのを可能にするためのソフトウェアを含む。そのようなソフトウェアは、デバイスドライバ、オペレーティングシステム、実行環境/コンテナ、および、アプリケーションを含むが、それらに限定されない。
本発明の好適な実施の形態の先の記載は、例示および説明のために提供されてきた。これは、網羅的であることを意図せず、または、本発明を開示された正確な形態に限定することを意図しない。多くの修正例および変形例が、当業者には明らかである。特に、「モジュール」という概念が上述のシステムおよび方法の実施の形態に使用されているが、そのような概念は、ビーン、クラス、メソッド、タイプ、コンポーネント、オブジェクトモデル、および、他の適切な概念等の等価の概念と交換可能に使用されることができることが明らかである。実施の形態は、本発明の原則およびその実際的な用途を最良に記載するために選ばれ記載され、それによって、本発明、様々な実施の形態、および、企図された特定の使用に適切である様々な修正例を他の当業者が理解するのを可能にした。本発明の範囲は、下記の特許請求の範囲およびその均等物に規定されることが意図される。
Claims (20)
- 自動コンポーネントライブラリ設計をサポートするシステムであって、
各々が一定の関数を実行する複数のコンポーネントと、
前記複数のコンポーネントを維持するコンポーネントライブラリと、
コンポーネント生成モジュールであって、
前記コンポーネントライブラリ内の前記複数のコンポーネントのサブセットを選択し、
前記複数のコンポーネントの前記サブセットを無作為に組み合わせることによって組み合わせを生成し、
前記組み合わせを複数の目標に対して評価し、
前記組み合わせを新しいコンポーネントにカプセル化し、前記組み合わせが1つまたはそれ以上の基準に合致する場合に、それを前記コンポーネントライブラリ内に加えるコンポーネント生成モジュールと、
を具備するシステム。 - 前記複数のコンポーネントの各々は、ソフトウェアコンポーネント、デジタル回路、電子コンポーネント、プロセスコンポーネント、機械コンポーネント、アーキテクチャ設計、および、階層的に構成されコンピュータシステムで表示され操作されることができる人工生成物のうちの1つである請求項1記載のシステム。
- 前記ソフトウェアコンポーネントは、サブプログラム、オブジェクト、モジュール、および、パッケージのうちの1つである請求項2記載のシステム。
- 前記複数のコンポーネントの各々は、コストに関連づけることができる請求項1記載のシステム。
- 前記目標は、形式論理言語を経由してユーザによって特定されることができる請求項1記載のシステム。
- 前記コンポーネント生成モジュールは、さらに、前記コンポーネントライブラリを複数のプリミティブコンポーネントで初期化する請求項1記載のシステム。
- 前記コンポーネント生成モジュールは、さらに、前記組み合わせによって包含されるかまたは前記目標および前記組み合わせに整合しないかのいずれかである前記複数のコンポーネント内の1つのコンポーネントを置き換える請求項1記載のシステム。
- 前記コンポーネント生成モジュールは、さらに、前記組み合わせを生成するときに前記複数のコンポーネントの前記サブセットにおいて一定のコンポーネントを別のものよりも優先する請求項1記載のシステム。
- 前記コンポーネント生成モジュールは、さらに、前記新しいコンポーネントを観測するインタフェースを指定する請求項1記載のシステム。
- 前記組み合わせは、前記複数のコンポーネントの前記サブセット内の前記コンポーネントのいずれよりも複雑である請求項1記載のシステム。
- 前記1つまたはそれ以上の基準の各々は、
前記組み合わせが有効な関数を有する、
前記組み合わせが前記複数のコンポーネントのいずれよりも安価なコストを有する、および、
前記組み合わせが前記複数のコンポーネントのいずれよりも良好に前記目標に関係する、
のうちの1つである請求項1記載のシステム。 - 自動コンポーネントライブラリ設計をサポートする方法であって、
複数のコンポーネントをコンポーネントライブラリ内に維持するステップであって、前記複数のコンポーネントの各々が一定の関数を実行する、該維持するステップと、
前記コンポーネントライブラリ内の前記複数のコンポーネントのサブセットを選択するステップと、
前記複数のコンポーネントの前記サブセットを無作為に組み合わせることによって組み合わせを生成するステップと、
前記組み合わせを複数の目標に対して評価するステップと、
前記組み合わせを新しいコンポーネントにカプセル化し、前記組み合わせが1つまたはそれ以上の基準に合致する場合に、それを前記コンポーネントライブラリ内に加えるステップと、
を含む方法。 - 形式論理言語を経由してユーザによって1つまたはそれ以上の目標を特定するステップをさらに含む請求項12記載の方法。
- 前記コンポーネントライブラリを複数のプリミティブコンポーネントで初期化するステップをさらに含む請求項12記載の方法。
- 前記組み合わせによって包含されるかまたは前記目標および前記組み合わせに整合しないかのいずれかである前記複数のコンポーネント内の1つのコンポーネントを置き換えるステップをさらに含む請求項12記載の方法。
- 前記組み合わせを生成するときに前記複数のコンポーネントの前記サブセットにおいて一定のコンポーネントを別のものよりも優先するステップをさらに含む請求項12記載の方法。
- 前記新しいコンポーネントを観測するインタフェースを指定するステップをさらに含む請求項12記載の方法。
- 前記複数のコンポーネントの前記サブセット内の前記コンポーネントのいずれよりも複雑である前記組み合わせを生成するステップをさらに含む請求項12記載の方法。
- 自動コンポーネントライブラリ設計をサポートするためのシステムによって実行することのできる命令からなるプログラムであって、
複数のコンポーネントをコンポーネントライブラリ内に維持するステップであって、前記複数のコンポーネントの各々が一定の関数を実行する、該維持するステップと、
前記コンポーネントライブラリ内の前記複数のコンポーネントのサブセットを選択するステップと、
前記複数のコンポーネントの前記サブセットを無作為に組み合わせることによって組み合わせを生成するステップと、
前記組み合わせを目標に対して評価するステップと、
前記組み合わせを新しいコンポーネントにカプセル化し、前記組み合わせが1つまたはそれ以上の基準に合致する場合にそれを前記コンポーネントライブラリ内に加えるステップと、
を含むプログラム。 - 自動コンポーネントライブラリ設計をサポートするシステムであって、
複数のコンポーネントをコンポーネントライブラリ内に維持するための手段であって、前記複数のコンポーネントの各々が一定の関数を実行する、該維持するための手段と、
前記コンポーネントライブラリ内の前記複数のコンポーネントのサブセットを選択するための手段と、
前記複数のコンポーネントの前記サブセットを無作為に組み合わせることによって組み合わせを生成するための手段と、
前記組み合わせを複数の目標に対して評価するための手段と、
前記組み合わせを新しいコンポーネントにカプセル化し、前記組み合わせが1つまたはそれ以上の基準に合致する場合に、それを前記コンポーネントライブラリ内に加えるための手段と、
を具備するシステム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/264,219 US7711674B2 (en) | 2005-11-01 | 2005-11-01 | System and method for automatic design of components in libraries |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007128517A true JP2007128517A (ja) | 2007-05-24 |
Family
ID=37997757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006297594A Pending JP2007128517A (ja) | 2005-11-01 | 2006-11-01 | コンポーネントライブラリを自動設計するためのシステム、方法及びプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US7711674B2 (ja) |
JP (1) | JP2007128517A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011198278A (ja) * | 2010-03-23 | 2011-10-06 | Denso Corp | 中間モジュールの生成方法及び支援装置 |
US11423088B2 (en) | 2018-06-11 | 2022-08-23 | Kabushiki Kaisha Toshiba | Component management device, component management method, and computer program product |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8176457B2 (en) * | 2006-12-04 | 2012-05-08 | Fujitsu Limited | Apparatus and method updating diagram of circuit based on pin swap performed in package design with respect to PLD |
US7904863B2 (en) | 2006-12-04 | 2011-03-08 | Fujitsu Limited | Circuit-design supporting apparatus, circuit-design supporting method, computer product, and printed-circuit-board manufacturing method |
US8255844B2 (en) * | 2006-12-04 | 2012-08-28 | Fujitsu Limited | Coordinated-design supporting apparatus, coordinated-design supporting method, computer product, printed-circuit-board manufacturing method, circuit-design supporting apparatus, circuit-design supporting method, computer product, and printed-circuit-board manufacturing method |
US8266092B2 (en) | 2008-07-10 | 2012-09-11 | Palo Alto Research Center Incorporated | Methods and systems for target value path identification |
US8219437B2 (en) * | 2008-07-10 | 2012-07-10 | Palo Alto Research Center Incorporated | Methods and systems for constructing production plans |
US8145334B2 (en) * | 2008-07-10 | 2012-03-27 | Palo Alto Research Center Incorporated | Methods and systems for active diagnosis through logic-based planning |
US8165705B2 (en) * | 2008-07-10 | 2012-04-24 | Palo Alto Research Center Incorporated | Methods and systems for continuously estimating persistent and intermittent failure probabilities for production resources |
US8397222B2 (en) * | 2008-12-05 | 2013-03-12 | Peter D. Warren | Any-to-any system for doing computing |
US8359110B2 (en) * | 2009-03-23 | 2013-01-22 | Kuhn Lukas D | Methods and systems for fault diagnosis in observation rich systems |
FR2994295B1 (fr) * | 2012-07-31 | 2014-08-29 | Heavenize | Procede de creation d'une application logicielle mis en oeuvre par un moteur |
WO2015194006A1 (ja) * | 2014-06-19 | 2015-12-23 | 富士通株式会社 | プログラム生成装置、プログラム生成方法およびプログラム |
US10228678B2 (en) * | 2015-07-22 | 2019-03-12 | Tokyo Electron Limited | Tool failure analysis using space-distorted similarity |
CN110147223B (zh) * | 2019-04-11 | 2023-04-25 | 北京乐我无限科技有限责任公司 | 组件库的生成方法、装置及设备 |
US11379188B2 (en) * | 2019-11-15 | 2022-07-05 | Foresight Data Systems LLC | Plugin-oriented functional programming system configured with software components |
GB2598959B (en) * | 2020-09-22 | 2023-01-18 | Caterpillar Inc | Powertrain architecture design tool |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1991014990A1 (en) * | 1990-03-28 | 1991-10-03 | Koza John R | Non-linear genetic algorithms for solving problems by finding a fit composition of functions |
JPH07160191A (ja) * | 1993-12-10 | 1995-06-23 | Mitsubishi Electric Corp | 制御プログラム設計支援装置 |
JPH10149280A (ja) * | 1996-09-17 | 1998-06-02 | Toshiba Corp | プログラム合成装置及びプログラム合成方法 |
WO2001090887A1 (fr) * | 2000-05-25 | 2001-11-29 | Fujitsu Limited | Procede de traitement de programme permettant un traitement haute vitesse au moyen d'un materiel a reconfiguration dynamique et programme permettant d'executer ce procede de traitement |
JP2002099893A (ja) * | 2000-07-07 | 2002-04-05 | Fuji Xerox Co Ltd | 自己再構成可能ロボット中のモジュールへのソフトウェアの提供方法、自己再構成可能ロボットに含まれるモジュール、コンピュータ可読メモリを含む製品、及び自己再構成可能ロボット |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5463564A (en) | 1994-09-16 | 1995-10-31 | 3-Dimensional Pharmaceuticals, Inc. | System and method of automatically generating chemical compounds with desired properties |
US5867397A (en) | 1996-02-20 | 1999-02-02 | John R. Koza | Method and apparatus for automated design of complex structures using genetic programming |
US6282527B1 (en) * | 1997-06-27 | 2001-08-28 | Microsoft Corporation | Adaptive problem solving method and apparatus utilizing evolutionary computation techniques |
US6499129B1 (en) * | 1998-07-22 | 2002-12-24 | Circuit Semantics, Inc. | Method of estimating performance of integrated circuit designs |
US6427230B1 (en) * | 1998-11-09 | 2002-07-30 | Unisys Corporation | System and method for defining and managing reusable groups software constructs within an object management system |
US7322024B2 (en) * | 2002-03-18 | 2008-01-22 | Logiclibrary, Inc. | Generating reusable software assets from distributed artifacts |
US7149734B2 (en) * | 2001-07-06 | 2006-12-12 | Logic Library, Inc. | Managing reusable software assets |
US6839874B1 (en) * | 2002-02-28 | 2005-01-04 | Xilinx, Inc. | Method and apparatus for testing an embedded device |
US7243086B2 (en) | 2003-12-19 | 2007-07-10 | Fuji Xerox Co., Ltd. | Methods and systems for automatically generating provably correct computer program code |
-
2005
- 2005-11-01 US US11/264,219 patent/US7711674B2/en not_active Expired - Fee Related
-
2006
- 2006-11-01 JP JP2006297594A patent/JP2007128517A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1991014990A1 (en) * | 1990-03-28 | 1991-10-03 | Koza John R | Non-linear genetic algorithms for solving problems by finding a fit composition of functions |
JPH07160191A (ja) * | 1993-12-10 | 1995-06-23 | Mitsubishi Electric Corp | 制御プログラム設計支援装置 |
JPH10149280A (ja) * | 1996-09-17 | 1998-06-02 | Toshiba Corp | プログラム合成装置及びプログラム合成方法 |
WO2001090887A1 (fr) * | 2000-05-25 | 2001-11-29 | Fujitsu Limited | Procede de traitement de programme permettant un traitement haute vitesse au moyen d'un materiel a reconfiguration dynamique et programme permettant d'executer ce procede de traitement |
JP2002099893A (ja) * | 2000-07-07 | 2002-04-05 | Fuji Xerox Co Ltd | 自己再構成可能ロボット中のモジュールへのソフトウェアの提供方法、自己再構成可能ロボットに含まれるモジュール、コンピュータ可読メモリを含む製品、及び自己再構成可能ロボット |
Non-Patent Citations (4)
Title |
---|
CSNB200300002001; 伊庭 斉志: 遺伝的プログラミング入門 初版, 20010705, pp.9-25, 財団法人東京大学出版会 * |
CSND199801150010; 野田 五十樹: 'RoboCup-97観戦記' コンピュータソフトウェア Vol.15,No.4, 19980715, pp.82-90, 日本ソフトウェア科学会 * |
JPN6012025710; 野田 五十樹: 'RoboCup-97観戦記' コンピュータソフトウェア Vol.15,No.4, 19980715, pp.82-90, 日本ソフトウェア科学会 * |
JPN6012025713; 伊庭 斉志: 遺伝的プログラミング入門 初版, 20010705, pp.9-25, 財団法人東京大学出版会 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011198278A (ja) * | 2010-03-23 | 2011-10-06 | Denso Corp | 中間モジュールの生成方法及び支援装置 |
US11423088B2 (en) | 2018-06-11 | 2022-08-23 | Kabushiki Kaisha Toshiba | Component management device, component management method, and computer program product |
Also Published As
Publication number | Publication date |
---|---|
US7711674B2 (en) | 2010-05-04 |
US20070100784A1 (en) | 2007-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2007128517A (ja) | コンポーネントライブラリを自動設計するためのシステム、方法及びプログラム | |
US7665072B2 (en) | Generating test cases for software with complex preconditions | |
US6671874B1 (en) | Universal verification and validation system and method of computer-aided software quality assurance and testing | |
US8418093B2 (en) | Method and system for design simplification through implication-based analysis | |
US20070061354A1 (en) | System for modeling architecture for business systems and methods thereof | |
EP1248211A2 (en) | Data processing system and design system | |
ter Beek et al. | Family-based model checking with mCRL2 | |
US11373114B1 (en) | CSP-based synthesis of a quantum circuit | |
Fursin | Collective knowledge: organizing research projects as a database of reusable components and portable workflows with common interfaces | |
JP2000181939A (ja) | 論理装置の検証方法、検証装置及び記録媒体 | |
WO2022153290A1 (en) | Quantum circuit modeling | |
US11281988B1 (en) | Re-generation of a gate-level quantum circuit based on gate-level analysis | |
Núñez et al. | Using genetic algorithms to generate test sequences for complex timed systems | |
JP5456756B2 (ja) | 構成要素を使用してコンピュータによる実行可能なコードを生成する方法及び装置 | |
Käss et al. | Drivers and inhibitors of low code development platform adoption | |
Mokhov et al. | Mining conditional partial order graphs from event logs | |
Suryasarman et al. | Automation of test program synthesis for processor post-silicon validation | |
Bergenthum et al. | Synthesis of Petri nets from scenarios with VipTool | |
KR20220017993A (ko) | 플랫 넷리스트로부터 동작 디자인 복구 | |
Alshareef et al. | Activity-based DEVS modeling | |
Lustig et al. | Synthesis from recursive-components libraries | |
Voneva et al. | Optimizing parametric dependencies for incremental performance model extraction | |
CN114174983B (zh) | 用于高级构造的优化的自动验证的方法和系统 | |
US20060195681A1 (en) | Test program instruction generation | |
Ferreira Filho | Leveraging model-based product lines for systems engineering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20091023 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120522 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120925 |