JPH06119156A - プログラム自動生成方法 - Google Patents

プログラム自動生成方法

Info

Publication number
JPH06119156A
JPH06119156A JP26717692A JP26717692A JPH06119156A JP H06119156 A JPH06119156 A JP H06119156A JP 26717692 A JP26717692 A JP 26717692A JP 26717692 A JP26717692 A JP 26717692A JP H06119156 A JPH06119156 A JP H06119156A
Authority
JP
Japan
Prior art keywords
program
component
algorithm
input
output 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.)
Pending
Application number
JP26717692A
Other languages
English (en)
Inventor
Yoichi Shiraishi
洋一 白石
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP26717692A priority Critical patent/JPH06119156A/ja
Publication of JPH06119156A publication Critical patent/JPH06119156A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【目的】本発明は部品プログラムを組合せてプログラム
を自動生成する方法に関し、特に、プログラムの特性を
基準として選択した部品同志の結合プログラムを自動生
成する。 【構成】ユーザ入力情報103に指定された特性最適化
項目に基づき、部品プログラム情報101で指定された
プログラム種類から部品プログラムを選択し106、そ
れらを結合し109、得られたプログラムの特性を解析
し111、さらに、特性の改善117を行ない、特性を
基準にするための各処理を実行する。 【効果】部品プログラムを登録しておき、特性に基づい
てそれらを選択して結合し、特性を改善するので、プロ
グラム品質が保証される。更に、入出力データ仕様が必
ずしも一致しない部品プログラムを結合できるので、プ
ログラム設計開発工数大幅削減、すなわち、開発期間を
大幅に短縮できる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、それによって得られる
解の品質のみならず、プログラムの特性である時間複雑
度、および空間複雑度が最適化された目的関数を生成す
るプログラム自動生成方法に関する。特に、プログラム
の設計工数削減、および設計期間短縮に好適なプログラ
ムの自動生成方法、及び実行方法に関する。
【0002】
【従来の技術】爆発的に増大するソフトウェア設計開発
工数を削減するためのアプローチとして、部品プログラ
ムの組み合わせによるソフトウェアの自動生成技術は有
望なものの一つとして認識され、それに関する研究は数
多くなされている。現在、この技術は、例えば単純な事
務計算等のごく限られた分野における比較的単純な問題
に対して、それを解くプログラムの「機能」を実現でき
るレベルには到達しつつある。
【0003】例えば、「部品合成による自動プログラミ
ング」、古宮、他、情報処理、Vol.28.No.10,1987,1329
〜1345には、部品プログラム合成によるプログラム自動
生成が記載されている。このプログラム自動生成は、
(1)要求仕様の理解、及び単純仕様の集合への分解、
(2)それらの単純仕様を満足する部品作成、及び
(3)部品プログラム合成、の3ステップからなる。
(1)では、自然言語などで記述された要求仕様と、予
め準備された「骨組み部品」との照合によって仕様が理
解される。(2)では、部品プログラムの機能に基づい
て部品が検索される。更に、特開平4-98530号では、時
間及び空間の複雑度等の特性を検索時の基準に加える技
術が開示されている。(3)では、特開平2-236627号に
記載のように、連続して実行される部品プログラムの入
力及び出力データの仕様が一致している制限のもとで、
部品プログラムが合成される。
【0004】
【発明が解決しようとする課題】部品プログラムの組み
合わせによるソフトウェアの自動生成技術が未だ実用レ
ベルに到達していないのは、以下の課題が解決されてい
ないためである。
【0005】(1)では、自然言語等を用いて要求仕様
を記述し、それを理解するための技術が確立されている
とはいえない現状にある。現状の技術では、例えば、組
み合わせ最適化問題を解くプログラムのような複雑な要
求仕様を記述できない。従って、そのための特別な仕様
記述言語を開発する必要があり、それを理解する技術も
必要であるが、これらの課題は文章の意味理解の問題に
帰着され、その解決はかなり困難であり、未だこの技術
は提案されていない。
【0006】(2)では、自動生成後のプログラムの機
能は言うまでもなく、その時間及び空間の複雑度等の特
性の最適化が強く要求され、膨大な量の高度なプログラ
ムを開発し、保守しなければならない技術分野、例えば
半導体の設計開発を支援するためのEDA(Electronic
Design Automation)プログラム、あるいはシステムプ
ログラムの開発に適用できる技術が実現されていない。
部品プログラムの選択基準に上記の特性を加える技術は
提案されているが、自動生成されたプログラム全体とし
ての特性最適化までは行なわれていない。
【0007】(3)では、連続して実行される部品プロ
グラムの入出力データの仕様が一致しているという制限
のもとでは、汎用性、又は拡張性のある入出力データの
仕様を決定することが現実的には非常に困難であり、部
品プログラムの開発時に、その内部データを入出力デー
タの仕様に合うように変換するためのプログラムを開発
しなければならない、特に、既に開発された部品プログ
ラムの入出力データの仕様を変更するためには多大な設
計工数と作業期間を必要とする。
【0008】本発明の目的は、使用者が要求仕様として
部品プログラムを指定するだけで、部品プログラム間の
入出力データの整合が取れ、動作特性が最適化されたプ
ログラムを生成する方法を提供することにある。すなわ
ち、本発明の目的は、(1)部品プログラムの種類とそ
の適用順序を要求仕様として記述するだけで、(2)プ
ログラムの機能に加えて、時間及び空間の複雑度が最適
化された部品プログラム選択を行ない、(3)連続して
実行される部品プログラム間の入出力データの仕様の不
一致を解消して結合する、プログラム自動生成方法を提
供することにある。
【0009】
【課題を解決するための手段】上記の目的(1)は、ユ
ーザ入力情報として、生成すべきプログラムを構成する
部品プログラム種類名、それらの適用順序、及び制御構
造からなるプログラム戦略を指定し、上記ユーザ入力情
報に基づいて、指定された1つの部品プログラム種類か
ら1つの部品プログラムを選択することによって達成さ
れる。
【0010】上記の目的(2)は、部品プログラムの特
性を予め部品プログラム情報に登録し、ユーザ入力情報
として最適化すべき特性を指定し、部品プログラム選択
処理に於いて特性を最適化する部品プログラムを選択
し、更に、部品プログラムを結合した後、部品プログラ
ム結合プログラムを含めたプログラム全体の特性を解析
して、再度部品プログラムの選択を行ってプログラム全
体の特性を改善することによって達成される。
【0011】上記の目的(3)は、部品プログラム結合
処理に於いて、或る部品プログラムの各入力データ項目
に対して、それより先に実行される部品プログラムの出
力データ項目中からそれらの意味が一致する項目を検索
し、一致する項目が検索された場合、その出力データを
入力データに変換するプログラムを生成し、一致する項
目が検索できなかった場合、予め作成された意味変換ル
ールに従って抽出した関連出力データを入力データに変
換するプログラムを生成することによって達成される。
【0012】
【作用】本プログラム自動生成処理に於いて、ユーザ入
力情報中にプログラム戦略として所望のプログラムの制
御構造と部品プログラム種類を指定することにより、自
然言語等でプログラム要求仕様を記述した場合に比べて
構文解析が容易になり、更に、部品プログラム選択、結
合後のプログラムの特性解析、及び特性改善の繰返しに
より、所望のプログラム、及び部品プログラムの機能の
みのユーザの知識でも特性が最適化された高品質のプロ
グラムが生成される。
【0013】部品プログラム結合処理に於いて、或る部
品プログラムの入力データ仕様に対して、それより先に
実行される部品プログラム中にその出力データ仕様が一
致するものが見つからない場合でも、予め作成してある
意味変換ルールに従って部品プログラムを結合するプロ
グラムを生成することによって、部品プログラム登録時
のデータ仕様を一致させることができるので、ユーザ自
身による入出力データのプログラム開発工数を削減で
き、必ずしもデータ仕様が一致していない過去の部品プ
ログラムの再利用工数を削減でき、部品プログラムの再
利用を考慮した汎用的なデータ仕様決定に伴う困難を回
避できる。
【0014】
【実施例】図1から図37を用いて、論理VLSIの設
計開発を支援する設計自動化、特に、レイアウト自動設
計(DA:Design Automation)プログラムの生成を具
体例として本発明の第1の実施例を説明する。全体の概
略フローを説明した後、各処理における入出力データの
詳細、及び処理内容の詳細を説明する。
【0015】図1は、本発明の一実施例によるプログラ
ム自動生成システムの全体構成を示す。プログラム自動
生成システムは、本発明の方法を実施する処理装置10
0、及びファイルから構成される。処理装置100への
主な入力は、予め用意された部品プログラム情報101
と、プログラム戦略、最適化項目、プログラム記述言
語、問題の入出力データ、及び問題名称からなるユーザ
入力情報103である。さらに、ユーザからプログラム
戦略が指定されなかった場合に、部品プログラムの選択
を補助するための情報102が入力される。
【0016】プログラム自動生成システムでは、まず、
上記の情報101、103、及び102が入力され(1
04)、部品プログラム選択処理106によって所望の
プログラムを構成する部品プログラムが選択される。部
品プログラムは、部品プログラム情報101に登録され
た特性を基に、ユーザ入力情報として指定された部品プ
ログラム種類と最適化項目に従って選択される。
【0017】次に、部品プログラム結合処理109で
は、部品プログラム情報101に登録されている部品プ
ログラム毎の入出力データに基づいて、上記選択された
部品プログラムを結合するプログラムを自動生成する。
即ち、変換ルール情報107を用いて、部品プログラム
の出力データ中から選択して、次に実行される部品プロ
グラムに入力される入力データに変換する、部品プログ
ラム結合プログラムの擬似コードを生成する。
【0018】部品プログラム選択と部品プログラム結合
プログラムの擬似コードの作成後、結合後プログラム特
性解析処理111は、部品プログラム情報101に登録
された各部品プログラムの特性と、部品プログラム結合
プログラムの擬似コードの特性解析結果とから結合後の
全体プログラムの特性を求める。得られたプログラムの
特性とユーザ入力情報103に格納された特性の最適化
項目とが比較され、比較結果に基づいて部品プログラム
を交換して、更にプログラムの特性を最適化できるかど
うかが判断される(112)。
【0019】最適化の可能性があれば、対応する部品プ
ログラムを交換し(117)、その後、上記の処理10
6、109及び111が繰り返され、プログラムの特性
の最適化が行なわれる。部品プログラムの選定、及び部
品プログラム結合プログラムの生成後、全体のプログラ
ムは指定された計算機言語によるソースコード114、
115、116に変換される。
【0020】図2は部品プログラム情報101を詳細に
示した図である。部品プログラム情報101の種々の情
報は、部品プログラム種類名とそれに対応する部品プロ
グラム情報管理へのポインタとを対にして格納した部品
プログラムインデクス201を介して参照される。部品
プログラム情報管理は、その部品プログラム種類に属す
る部品プログラム毎に、部品プログラム名202と、特
性ポインタ203、入出力データ仕様ポインタ204、
部品プログラムソースコード210へのソースコードポ
インタ205、及び次のデータへのポインタとを有す
る。特性ポインタ203で示される特性の組み合わせ
は、そのプログラムの時間複雑度207、及び空間複雑
度208からなり、プログラム選択の際の基準として使
用される。各部品プログラムの入出力データは、入出力
データ仕様ポインタ204で示されるデータ仕様管理2
09の下に、テーブル形式のデータ、レコード形式のデ
ータ、及びファイル形式のデータに分類され、それぞれ
入出力データ仕様情報、レコード形式情報、及びデータ
構造情報に格納されている。テーブル形式のデータが格
納される入出力データ仕様情報は、データ項目名21
1、その意味212、型213、入出力の区別214、
データ個数管理変数名215、及びデータ数上限値21
6で構成され、データをファイルに出力する場合には、
さらに、そのファイル名称217、及びテーブルの方式
名222を有する。レコード形式情報は、レコード形式
218毎にレコード名219とその型220とを有す
る。更に、このレコードをファイルに格納する際のデー
タ構造221がデータ構造情報に格納される。
【0021】図3は部品プログラム選択補助情報102
を詳細に示した図である。本情報は、ユーザ入力情報1
03中にプログラム戦略の指定が無いときに、プログラ
ム自動生成処理装置100がプログラム戦略を自動生成
する際に使用されるデータベ−スである。入力データ名
301、出力データ名302、及び問題の名称303の
組合せに基づいて、ポインタ304を介してプログラム
戦略307が選択され、プログラム自動生成に使用され
る。該当するプログラム戦略が複数ある場合には優先順
位305に従って1つの戦略が選択される。実施例で
は、論理データと実装データを入力してレイアウト後の
シンボルパタ−ンを出力する「ゲートアレイ配置配線」
問題に対して、Gatearry-1とGatearry-2の2種のプログ
ラム戦略が用意されている時、優先順位が1番目の戦略
306(Gatearry-2)が選択されることを示す。
【0022】図4はユーザ入力情報103の詳細を示し
た図である。ユーザが指定するデータは、問題の名称4
01、入出力データ管理402のポインタで示される入
出力データ407、自動生成するプログラムの性能の最
適化項目403、その優先順位404、生成するプログ
ラムの記述言語405、及びプログラム戦略が記述でき
る場合にはプログラム戦略406のポインタを介して示
されるその内容409である。入出力データ407は、
入出力データ名、及び問題の入出力データのデータ数か
らなる。プログラム戦略が書けない場合には、プログラ
ム戦略を未設定にすると、処理装置100は、部品プロ
グラム選択補助情報102に基づいて、プログラム戦略
を自動生成する。
【0023】図5は、図1の入力処理104を詳細に示
した図である。本処理では、プログラム戦略の生成及び
解析を行なう。ユーザ入力情報103にプログラム戦略
が指定されていない時、所望のプログラムの入出力デー
タ、及びプログラムが解くべき問題の名称をキーとして
部品プログラム選択補助情報102を検索し(50
1)、登録されているプログラム戦略を抽出する(50
2)。プログラム戦略が指定されている場合にはそれを
採用する。プログラム戦略を解析した(503)後、そ
の解析結果に部品プログラム種類ではなく部品プログラ
ム自身が指定されている場合には、そのプログラム名、
及びそれらの制御構造を抽出し、これをプログラム戦略
解釈結果105として出力する。
【0024】図6は、図1の部品プログラム選択処理1
06を詳細に示した図である。本処理では、指定された
1つのプログラム種類毎に最適化項目を考慮して、その
種類に含まれる1つの部品プログラムを選択する。ま
ず、部品プログラム種類名をキーとして部品プログラム
インデクス201を検索する(601)。その部品プロ
グラム種類に属する全部品プログラムに対して、その特
性項目207、208と、ユーザ入力情報103で指定
された最適化項目403とを基準に、1つの部品プログ
ラムを選択する(602)。続いて、選択した部品プロ
グラムを部品プログラム種類名と1対1に対応づけて部
品プログラム選択結果ファイル108に出力する(60
3)。
【0025】図7は、入力処理104が出力したプログ
ラム戦略解釈結果105の一例である。図7に示す内容
は、図4に示すユーザ入力情報103で与えられたプロ
グラム戦略409に対応する。図7では、配置改善処理
の戦略として、min-cut programが指定されており、そ
の名称が部品プログラム名72に格納されており、それ
以外の処理は全て部品プログラム種類名71のみが指定
されている。レイアウト自動設計の処理全体の部品プロ
グラム制御構造73は、while文からなる。
【0026】図8は、部品プログラム選択処理106が
出力する部品プログラム選択結果108の一実施例であ
る。部品プログラム種類名と部品プログラム名とが対応
表の形式で格納され、指定された部品プログラム種類毎
に処理106で選択された部品プログラム名が格納され
る。
【0027】図1の部品プログラム結合処理109を、
図9から図16を用いて説明する。部品プログラム結合
処理の機能は、連続して実行される部品プログラムを結
合するためのプログラムを、擬似コードの形で自動生成
することである。即ち、或る部品プログラムの全ての入
力データに対して、その部品プログラムよりも先に実行
される全ての部品プログラムの出力データ中からその入
力データに対応するものを抽出し、これを変形して入力
データにセットするコードである。
【0028】図9と図16は自動生成される部品プログ
ラムの擬似コードである。図9は、後から実行される部
品プログラム902の入力データとその意味が一致する
データが、先に実行される部品プログラム901の出力
データの中から検索できた時に、擬似コードポインタ9
03を介して、出力データを変形して入力データに代入
する擬似コード904が登録される。図9に示す擬似コ
ード904は、テーブルXからデータを読み込み、テー
ブルYに出力する処理を示す。
【0029】図16は、入力データとその意味が一致す
るデータを出力データの中から検索できない場合に生成
される擬似コードを示す。図16は、入力データの意味
から出力データの意味を、変換ルール情報107に予め
登録した意味変換ルール(図10)を使用して導出し、
その導出過程を擬似コードで表現したものである。図1
6に示す各ステップの詳細説明は後述する。
【0030】図10は、図1に示した変換ルール情報1
07に格納された意味変換ルールとテーブル操作ルール
1015を示す。意味変換ルールは、解くべき問題の分
野に特有のルールを格納したものであり、問題の分野毎
に特有のデータの意味の相互関係を表わしている。図1
0aの第1の例は、レイアウトDAの分野において、
「ネットの集合(1005)は端子の集合(1006)
であって、且つ(1007)等しい信号名を持つ(10
08)」ことを表わし、第2の例は、「幹線の集合(1
009)はネットの集合(1010)であって、且つ
(1011)等しいチャネル番号を持つ(1012)」
ことを表わす。図10aに示す意味変換ルールにおい
て、定義意味1001は意味変換の対象となる被定義項
目を表わし、第1意味項1002、及び第2意味項10
04では、被定義項目に対応する意味が定義される。論
理演算1003は、被定義項目を定義する意味項同志を
結合し、意味同志の関係を規定する。
【0031】図10bのテーブル操作ルール1015
は、テーブル操作の方式名毎にget、put等の基本的なテ
ーブル操作の擬似コードを纏めたものであり、方式名と
操作名称1014とを対にした情報1013を介して参
照される。テーブル操作はテーブル操作の方式が決定さ
れれば、他の条件とは独立に操作の擬似コードを対応さ
せることができる。実施例では、方式名が連続テーブル
の場合、メモリ上の連続した領域にget及びputの操作1
014を格納することによって、テーブル操作ルール1
015の操作擬似コードポインタを介して、一連の操作
に対応する擬似コード1016を辿ることができる。
【0032】意味変換ルールにより、意味の上では、或
る部品プログラムの入力データをそれより先に実行され
る部品プログラムの出力データから変換して得られるこ
とが示された。意味変換ルールを擬似コードに変換する
ために、図1の変換ルール情報107に格納された意味
変換述語−擬似コード変換ルールを使用する。図11
に、意味変換述語−擬似コード変換ルールの一実施例を
示す。図11に示す意味変換述語1101は、意味変換
ルール中の意味項1002、1012を記述するため
に、意味と結合して使用される一種の述語を表わす。実
施例では、擬似コードポインタを介して、意味変換ルー
ルに使用されているset_of_...1006、及びequal
_...1008にそれぞれ対応する擬似コード1102、
1103が示されている。前者に対応する擬似コード
は、或るテーブルからデータを読み込んで内部領域にセ
ットすることを表わし、後者に対応する擬似コードは、
内部領域にセットされたデータからequalで示される条
件を満たすデータを抽出することを表わす。擬似コード
中のget、putはテーブル操作ルール1015に示された
擬似コード1016に対応する。
【0033】図12に示す意味変換木は、意味変換ルー
ル107を使用して、出力データの意味と入力データの
意味との対応関係を調べる時に使用される。この木に於
いて、根1200は、入力データの意味を表わし、各頂
点1202と頂点間の論理演算1201は、意味変換ル
ールの意味項と意味項間の結合をそれぞれ表わす。図1
2に示す木では、全ての葉の各意味項1203が、それ
より前に実行される部品プログラムの出力データの意味
と一致するまで階層的に展開される。
【0034】図13は部品プログラム結合処理109の
詳細を示す。各部品プログラム(1301)の各入力デ
ータ(1302)に対して、その部品プログラムよりも
先に実行される部品プログラムの出力データの内で、そ
の意味が入力データの意味と一致する出力データを検索
し(1303)、もしそこで出力データを検索できれば
入力データに出力データを代入するプログラムの擬似コ
ード904を生成する(1304)。意味が一致する出
力データを検索できない時には、意味変換ルールを用い
てデータ変換を行ない(1305)、全入力データに出
力データを代入するプログラムの擬似コードを生成す
る。その後、自動生成プログラム全体から冗長な擬似コ
ードを削除する(1306)。自動生成プログラムは、
或るデータを書き込み、その直後にデータをそのままテ
ーブルに書き込む、というような冗長な擬似コードを含
む可能性があるため、冗長擬似コードの簡約処理が必要
である。
【0035】次に、意味変換ルールを用いたデータ変換
処理1305を詳細に説明する。まず、注目している入
力データ項目を根とする図13に示すような意味変換木
を作成し(1307)、意味変換木を擬似コードに変換
するために、データを格納する領域Bufferを作成し、こ
れを0クリアする擬似コードを生成する(1308)。
意味変換木の各葉に対応する意味項に対して(130
9)、葉が第1番目の時には、葉に対応する意味項を意
味変換述語1101と意味212とに分離し(131
0)、意味を持つデータとBufferとを対象として意味変
換述語に対応する擬似コード1102、1103を生成
する(1311)。葉が第2番目以降の時には、隣接す
る葉との間の論理演算子毎に、論理演算子に対応する擬
似コードを生成する。論理演算子がANDの時には、Bu
fferから意味変換述語に記された指定条件を満たすデー
タを抽出する擬似コードを生成し(1312)、論理演
算子がORの時には、意味を持つデータをBufferに追加
する擬似コードを生成し(1313)、論理演算子がD
IFFの時には、Bufferから意味変換述語に記された指
定条件に反するデータのみを抽出する擬似コードを生成
する(1314)。
【0036】図14、15、及び16を用いて、意味変
換ルールを用いたデータ変換1305の具体例を説明す
る。具体例は、ネットデータをそれより先に実行される
部品プログラムの出力データから変換し、作成するもの
である。図14は、ネット1400の意味変換木であ
る。ネットは、論理演算子1406で結合された端子1
401、1402の集合であって、且つ等しい信号名
(X)を持つものである。図14に示すネットは、意味
変換ルール107から抽出した図10に示したルール1
005である。さらに、端子の集合は、論理演算子14
05で結合されたセルの端子1403あるいは外部端子
1404の集合である。
【0037】図15は、具体例の各データをテーブル形
式で格納した入出力データ仕様情報である。図16は、
生成された擬似コードである。項目名1501がBuffer
のデータは、テーブル方式1502が連続テーブルであ
る。従って、Bufferを0クリアする擬似コードは、連続
テーブル方式1013のテーブル操作ルール1015を
検索することによって、図16に示すBuffer領域クリア
擬似コード1601となる。
【0038】図14に示した意味変換木の各葉を順に左
から見ていくと、まずset_of_cell_terminals (X)の葉
1403が処理1301の対象となる。その結果、葉1
403は、意味変換述語set_of_と意味cell_terminals
とに分離される。図11に示す意味変換述語−擬似コー
ド変換ルール107に従って、set_of_に対応する擬似
コード1102が得られる。次に、この擬似コードのge
t,及びputに対応する擬似コードを生成する。cell_term
inalsのテーブル方式、即ち、図15に示す連続テーブ
ルに対応するgetの擬似コードを、テーブル操作ルール
1015、1016から引用する。同様に、Bufferにpu
tする擬似コードを引用する。これらの処理によって意
味変換木の葉1403の部分が擬似コード1602に変
換される。次に、第2番目の葉1404、set_of_exter
nal_terminals (X)の処理を行なうが、この葉は第1番
目の葉と論理演算子OR1405によって結合されてい
る。従って、図15に示すexternal_terminalsのテーブ
ル方式に従って、external_terminalsをgetする擬似コ
ードを生成し、それをBufferに追加する(1313)擬
似コード1603を生成する。第3番目の葉1402
は、第2番目の葉1404と論理演算子AND1406
によって結合されている。第2番目の葉と同様の処理に
より、Bufferからデータをgetして、signalsの値とequa
l_となるデータのみをBufferに抽出する擬似コード16
04を生成する(1312)。最後に、以上の処理で得
られたデータをBufferからネットのテーブルに出力する
擬似コード1605を生成する。ここでも、図15に示
したBuffer及びネットのテーブル方式と、図11に示し
た意味変換述語−擬似コード変換ルール107が使用さ
れる。
【0039】図17は、結合後プログラム特性解析処理
111の詳細を示した図である。本処理では、各部品プ
ログラムの特性を解析して全体プログラムの特性を求め
る。先ず、プログラム戦略で指定された部品プログラム
種類に対して選択された部品プログラム(106)と、
自動生成した109部品プログラム結合プログラムの擬
似コード(109)とを、処理の対象として抽出する
(1701)。続いて、部品プログラム結合プログラム
の擬似コードを解析し、その特性、即ち、時間複雑度及
び空間複雑度の問題の規模に対するオーダを求め(17
02、1703)、その結果を部品プログラム特性解析
結果118に格納する(1704)。
【0040】次に、部品プログラム情報101の特性を
検索して、その部品プログラムの時間複雑度207と空
間複雑度208とを求める(1705、1706)。求
めた部品プログラムの時間、及び空間の複雑度とプログ
ラム戦略307の部品プログラム制御構造とから、全体
のプログラム実行時の特性の最大値、及びその最大値を
持つ部品プログラム名を求める(1707、170
8)。同様に、部品プログラム結合プログラムの時間、
及び空間の複雑度の最大値とその最大値を持つ部品プロ
グラム名を求める(1709、1710)。
【0041】図1の特性改善可能性の判定112を説明
する。自動生成するプログラム全体の時間、及び空間の
複雑度と、ユーザ入力情報103に指定された最適化項
目403を優先順位404に基づいて比較して、特性を
改善する。一般に、時間複雑度と空間複雑度とは特性最
適化の両極に位置するものであり、時間複雑度のみを最
適化すると空間複雑度の増大を招く。特性は自動生成後
のプログラム全体で評価される。そのため、例えば、時
間複雑度は最大であるが空間複雑度が最大ではない部品
プログラムに対して、それと同種類の他の部品プログラ
ムから、空間複雑度が増大しても時間複雑度を減少でき
るプログラムを選択できる可能性がある。この考え方に
基づき、部品プログラムを交換して117、再結合10
9、特性再評価111、及び特性改善可能性の再判定1
12を、特性改善の可能性が無くなるまで繰り返す。
【0042】図18は、部品プログラムの特性解析結果
118の具体例である。部品プログラムの特性解析結果
118には、部品プログラム名又は結合プログラム名1
801毎に、時間複雑度1802、及び空間複雑度18
03が格納され、それをもとに交換対象となる部品プロ
グラム又は結合プログラム1801が決定される。
【0043】図19は、出力処理113の詳細を示した
図である。処理113は、部品プログラムと部品プログ
ラム結合プログラムの擬似コードとを、指定された電子
計算機言語に変換する。先ず、各部品プログラムに対し
て、部品プログラムの入出力データ仕様情報に格納され
た各データ項目名211、及びデータ数216と、ユー
ザ入力情報103で指定された自動生成プログラムを適
用する問題のデータ数の上限値407とを求め(19
1)、対応するデータ数を比較して部品プログラムが使
用するテーブルサイズを変更する(192)。変更後の
部品プログラムを、ユーザ入力情報103で指定された
電子計算機のプログラム記述言語405による部品プロ
グラムのソースコードに変換し、変更済みプログラムソ
ースコード114に出力する(193)。
【0044】続いて、各部品プログラム結合プログラム
の擬似コードに対して、上記の処理と同様に入出力デー
タの規模を求め(194)、その規模のデータを取り扱
えるように擬似コード中のテーブルサイズを変更し(1
95)、擬似コードを部品結合プログラムのソースコー
ドに変換し、自動生成ソースコード115に出力する
(196)。最後に、プログラム戦略中の部品プログラ
ム制御構造を指定されたメインプログラムのソースコー
ドに変換し、自動生成ソースコード116に出力する
(197)。
【0045】次に、部品アルゴリズムを組み合わせてア
ルゴリズムを生成する本発明の第2の実施例を説明す
る。第1の実施例では、プログラム生成の起点を部品プ
ログラムとしているのに対し、第2の実施例では、プロ
グラム生成の起点を部品アルゴリズムとしている。従っ
て、第2の実施例の処理の概要は、第1の実施例のそれ
と類似しており、処理の対象が異なることが大きな相違
点である。図20は、部品アルゴリズムの組み合わせに
よるプログラム自動生成システムの全体構成である。本
実施例のアルゴリズム自動生成システムは、本発明を実
施する処理装置2000、及び各種ファイルから構成さ
れる。
【0046】本システムへの入力は、部品アルゴリズム
情報2001、部品アルゴリズム選択補助情報200
2、及びユーザ入力情報2003である。アルゴリズム
自動生成システムは、これらの情報を入力し(200
4)、部品アルゴリズム選択処理2006において所望
のアルゴリズムを実現する部品アルゴリズムを選択す
る。処理2006では、部品アルゴリズム情報2001
の特性を元に、ユーザ入力情報で指定された部品アルゴ
リズム種類と最適化項目とに従って、部品アルゴリズム
が選択される。部品アルゴリズム結合処理2009で
は、部品アルゴリズム情報2001に登録されている部
品アルゴリズム毎の入出力データに注目し、変換ルール
情報2007を用いて、或る部品アルゴリズムに入力さ
れる入力データを、それ迄に実行される部品アルゴリズ
ムの出力データの中から選択し、これを変換して部品ア
ルゴリズム結合アルゴリズムの擬似コードを生成する。
部品アルゴリズムと部品アルゴリズム結合アルゴリズム
の擬似コードが得られた後、結合後アルゴリズム特性解
析処理2011では、部品アルゴリズム情報の各部品ア
ルゴリズムの特性と擬似コードの解析結果とから全体の
アルゴリズムの特性を求める。得られた全体のアルゴリ
ズムの特性とユーザ入力情報の特性の最適化項目とを比
較し、部品アルゴリズムを再度選択することによって更
に全体のアルゴリズムの特性を最適化できるかどうかを
判断する(2012)。最適化の可能性があれば、部品
アルゴリズムを交換して(2017)、部品アルゴリズ
ム選択2006、部品アルゴリズム結合2009、及び
結合後アルゴリズム特性解析2011の各処理を再実行
する。続いて、出力処理2013では、アルゴリズムを
指定された電子計算機のプログラミング記述言語による
ソースコード、あるいは部品アルゴリズム、部品アルゴ
リズム結合アルゴリズム及びそれらの制御構造からなる
擬似コードに変換する。
【0047】図21は、部品アルゴリズム情報2001
の詳細を示す。部品アルゴリズムに関する情報は、図2
1に示す部品アルゴリズムインデクス2101の部品ア
ルゴリズムの種類名2102、及びそれぞれの情報への
ポインタ2103を介して、参照される。実施例では、
部品アルゴリズムの種類名2102として、組み合わせ
最適化、グラフ理論等の分野における基本的なアルゴリ
ズムが登録されている。ポインタ2103で示される部
品アルゴリズム情報管理は、その種類に属する部品アル
ゴリズムの名称2104、時間複雑度2105と空間複
雑度2106からなる特性、入力データ仕様2110へ
のポインタ、出力データ仕様2115へのポインタ、及
びアルゴリズムの擬似コード2113経のポインタから
なる。
【0048】実施例では、quick sortアルゴリズムに関
する情報を示した。同一アルゴリズム種類に属する他の
アルゴリズムはポインタ2108を介して参照できる。
アルゴリズム名毎の特性である時間複雑度2105、及
び空間複雑度の情報2106は、或るアルゴリズムの種
類から1つのアルゴリズムを選択する際の選択基準とし
て利用される。入力データ仕様2110、及び出力デー
タ仕様2115は、いずれもデータ名2109、221
4、データの型2111、2116、及びデータ構造名
2112、2117からなる。
【0049】図22は部品アルゴリズム選択補助情報2
002の詳細を示す。補助情報2002は、ユーザ入力
情報2003にプログラム戦略が指定されていな時に使
用される情報であり、入力データへのポインタ220
1、出力データへのポインタ2202、問題の名称22
03、アルゴリズム戦略の内容2206を示すポインタ
2204、及び優先順位2205からなる。入出力デー
タと問題の組合せからアルゴリズム戦略2204、22
06が選択され、アルゴリズム自動生成に使用される。
該当するアルゴリズム戦略が複数個ある場合には優先順
位2205に従って1つの戦略が選択される。例えば、
論理VLSIのレイアウトDAにおいて、幹線データを
入力して幹線をトラックに割り当てる「チャネル配線問
題」に対しては、Channel Router2206のアルゴリズ
ム戦略が選択される。
【0050】図23は、ユーザ入力情報2003の詳細
を示す。アルゴリズム戦略は、アルゴリズム戦略名と部
品アルゴリズム種類の適用順序、及びそれらの制御構造
をある擬似コードによって記述したものである。実施例
は、論理VLSIのレイアウトDAにおける自動配線の
一種であるチャネル配線のアルゴリズム戦略2309を
示す。ユーザ入力情報2003は、問題の名称230
1、入出力データの情報2307へのポインタを格納し
た入出力データ管理2302、最適化項目2303、優
先順位2304、プログラム記述言語2305、及びア
ルゴリズム戦略2309へのポインタからなる。
【0051】最適化項目2303は、自動生成後のアル
ゴリズム実行時の特性を指定したものであり、処理時間
あるいは所要メモリ量のいずれを優先するかが指定され
る。最適化項目2303は優先順位2304と共に指定
される。問題の入出力データ管理が示す情報2307
は、入出力データ名称と実際にアルゴリズムが適用され
る問題のデータ数、及び実際の入力(出力)データ23
08からなる。プログラム記述言語2305は、自動生
成するアルゴリズムを最終的にプログラムに変換する際
の電子計算機用言語名を指定する。問題の名称2301
は、アルゴリズム戦略が指定されていない場合、部品ア
ルゴリズム選択補助情報2002を検索する際の一つの
キーに全てのデータが入力されていれば、部品アルゴリ
ズム選択補助情報に登録する際の管理データとする。
【0052】図24は入力処理2004を詳細に示す。
入力処理2004は、指定されたアルゴリズム戦略を解
釈する処理である。ユーザ入力情報2003でアルゴリ
ズム戦略が指定されていない時には、所望のアルゴリズ
ムの入力データ、出力データ、及びアルゴリズムが解く
べき問題の名称をキーとして部品アルゴリズム選択補助
情報2002を検索し(2401)、登録されているア
ルゴリズム戦略を抽出する(2402)。次に、アルゴ
リズム戦略を解析した(2403)後、部品アルゴリズ
ム種類名2102と部品アルゴリズム名2104とを抽
出してアルゴリズム戦略解釈結果2005に出力する
(2404)。更に、アルゴリズム戦略から部品アルゴ
リズムの制御構造を抽出し(2405)、アルゴリズム
戦略解釈結果2005に出力する。
【0053】図25は部品アルゴリズム選択処理200
6の詳細を示す。本処理では、実際に部品アルゴリズム
を選択するために、部品アルゴリズム種類名2102を
キーとして部品アルゴリズムインデクス2101を検索
する(2501)。部品アルゴリズム種類名2102に
属する全部品アルゴリズムに対して、その特性項目21
05、2106と、ユーザ入力情報で指定された最適化
項目2303、2304とを比較し、指定された最適化
項目を優先して1つの部品アルゴリズムを選択する(2
502)。続いて、選択した部品アルゴリズムを部品ア
ルゴリズム種類名と1対1に対応づけて部品アルゴリズ
ム選択結果2008に出力する(2503)。
【0054】図26は、図22に示す例題のアルゴリズ
ム戦略2206の解釈結果2005の具体例である。部
品アルゴリズム種類2601の項番1から7にはアルゴ
リズム種類名が指定され、それ以外は部品アルゴリズム
名2602が指定されているとする。部品アルゴリズム
種類名2601として項番1から7までが認識される。
アルゴリズム戦略で指定された部品アルゴリズムは、認
識された部品アルゴリズム名2602として登録され
る。更に、ユーザ入力情報2003から本戦略の制御構
造を抽出し、部品アルゴリズム制御構造2603に格納
する。
【0055】図27は、部品アルゴリズム選択処理20
06が出力する部品プログラム種類名と部品プログラム
名との対応表2008の具体例である。具体例では、プ
ログラム戦略で指定された各部品アルゴリズム種類名2
701に対して、具体的に部品アルゴリズムを選択した
結果を示している。
【0056】部品アルゴリズム結合処理2009を図2
8から図34を用いて説明する。本処理は、連続して実
行される部品アルゴリズムから、或る部品アルゴリズム
の全ての入力データを、それよりも先に実行される全て
の部品アルゴリズムの出力データから抽出し、そのデー
タ構造を入力データの構造に変換する機能を持つ部品ア
ルゴリズム結合アルゴリズムを、擬似コードの形で生成
する。
【0057】図28は、部品アルゴリズム結合処理20
09の結果を示す。項番で示された連続して実行される
部品アルゴリズム2801、2802を結合する擬似コ
ード2804が、擬似コードポインタ2803を介し
て、部品アルゴリズム結合擬似コード2010に出力さ
れる。同一の意味を持ち、構造のみが異なるデータの変
換コードは、データを入力(get)してそれを出力(put)す
る擬似コード2804になる。データの変換が必要な場
合を図33に示す。
【0058】図33は、自動生成する部品アルゴリズム
結合アルゴリズムの擬似コードの具体例である。本擬似
コードは、入力データとその意味が一致するデータを出
力データの中からは発見できない時、予め登録した意味
変換木(図14)とデータ構造変換ルール(図30)を
用いて、入力データの意味から出力データの意味を導出
することを表わす。詳細は、後述する。
【0059】図29は、変換ルール情報2007に含ま
れる基本的なデータ構造操作ルールを表わす。本ルール
は、データ構造名2901毎に対に設けられたポインタ
を介して示され、get、put等の基本的なデータ構造操作
のそれぞれの擬似コード2905を示す擬似コードポイ
ンタが設けられている。操作はデータ構造が決定されれ
ば他の条件には独立にその擬似コードを対応させること
ができる。具体例では、木の構造を持つデータに対して
create、get、putの操作名称2902、その時間複雑度
2903、及び空間複雑度2904が設けられている。
【0060】図30は、変換ルール情報2007に含ま
れるデータ構造変換ルールの具体例である。本ルール
は、本システムが取り扱う部品アルゴリズムが使用する
全ての組み合わせのデータ構造間変換を表わす。本ルー
ルは、変換ルール名称3001毎に、変換すべき入力デ
ータ構造名3002、変換後の出力データ構造名300
3、その時間複雑度3004、空間複雑度3005、及
び擬似コード3006を示す擬似コードポインタとから
なる。擬似コード3006は、Array構造を持つデータ
をLinked-List構造を持つデータに変換する機能を表わ
す。
【0061】図31は、部品アルゴリズム結合処理20
09の詳細を示す。各部品アルゴリズム(3101)の
各入力データに対して(3102)、その部品アルゴリ
ズムよりも先に実行される部品アルゴリズムの出力デー
タを探索する(3103)。その意味が入力データの意
味と一致する出力データを発見できれば、出力データの
データ構造を入力データのデータ構造に変換するアルゴ
リズムの擬似コードを生成する(3104)。意味が一
致する出力データを発見できない時には、意味変換ルー
ルを用いたデータ変換を実行し(3105)、全入力デ
ータに出力データを対応させる部品アルゴリズム結合ア
ルゴリズムの擬似コードを生成する。
【0062】意味変換ルールを用いたデータ変換処理
は、まず、注目する入力データ項目を根とする意味変換
木(図14)を作成する(3106)。続いて、意味変
換木の各葉に対応する意味項に対して(3107)、葉
が第1番目の時には入力データが格納されているデータ
構造と等しいデータ構造を持つデータの格納領域Buffer
が作成される(3108)。そして、データ構造変換ル
ールを基に、葉に対応するデータをBufferに格納するア
ルゴリズムの擬似コードが生成される(3109)。葉
が第2番目以降の時は、隣接する葉との間の論理演算子
により処理を分岐する。論理演算子がANDの時には、
Bufferから意味変換述語に記された指定条件を満たすデ
ータを抽出する擬似コードを生成する(3110)。論
理演算子がORの時には、Bufferにデータを追加する擬
似コードを生成する(3111)。論理演算子がDIF
Fの時には、Bufferから意味変換述語(図11)に記さ
れた指定条件に違反するデータのみを抽出する擬似コー
ドを生成する(3112)。図32は、データ構造変換
ルールによって得られたデータ名3201とそのデータ
構造名3202を示す。図33は、意味変換木を用いた
データ変換を実行するアルゴリズムの擬似コードであ
る。データ構造を宣言した(3301)後、図14の第
1の葉1403に対するデータをBuffer領域に読み込む
(3108、3109)ための擬似コード3302を生
成する。擬似コード3302は、Array構造を持つset_o
f_cell_terminalsをLinked_List構造を持つBufferにcre
ateするコード(Transform-AL)である。第2の葉140
4は第1の葉とORの関係にある。同様に、それぞれの
データ構造を考慮して擬似コード3303を生成する
(3111)。更に、第3の葉1402に対して擬似コ
ード3304を生成し、最後に、Buffer内のデータをse
t_of_netsとして出力する擬似コード3305を生成す
る。
【0063】図34は、アルゴリズム戦略Channel Rout
er2309を基に、チャネル配線アルゴリズムを自動生
成した結果の一部を示す。チャネル配線アルゴリズムへ
の入力データは、Linked-Listのデータ構造を持つネッ
トデータ3401であり、図33に示す擬似コードによ
り生成される。inputアルゴリズム3402の入出力デ
ータは、それぞれ、ネットデータ3401と幹線データ
3403である。端子ソ−トアルゴリズム3406への
入力データの構造3405はArrayである。従って、こ
れらの部品アルゴリズムを結合するアルゴリズム340
4は、幹線データから幹線内端子を抽出し、データ構造
Linked-List3403をデータ構造Array3405の形で
出力するTransform-LA3404となる。以下、同様の処
理により、幹線内端子のソート以降のアルゴリズム34
06〜3412が生成される。
【0064】図35は、自動生成アルゴリズムの特性改
善処理2012における部品アルゴリズム特性解析結果
2018の例である。図34に示す全てのアルゴリズム
について、時間複雑度3502、及び空間複雑度350
3を部品アルゴリズム3501毎に求められる。ここで
は、図21に示す部品アルゴリズムの時間複雑度210
5、空間複雑度2106、及び図29に示すデータ構造
変換ルールの時間複雑度3004、空間複雑度3005
が使用される。これらの複雑度と部品アルゴリズム制御
構造2603とから部品アルゴリズム特性を求められ
る。制御構造に含まれるループの繰返し回数を示すルー
プ番号3504と関連する部品アルゴリズムの複雑度の
最大値とループの繰返し回数とから、時間複雑度、及び
空間複雑度の最大値を求め、自動生成アルゴリズムの時
間複雑度、及び空間複雑度とする。この結果をもとに、
部品プログラムの特性改善処理118(図18)と同様
に、交換対象部品アルゴリズムを抽出し、特性改善の可
能性の可否を示すYes又はNoのフラグ3506が格納さ
れる。結合後アルゴリズム特性改善処理2011では、
これらの部品アルゴリズムを交換し(2017)、部品
アルゴリズム結合2009、及び結合後アルゴリズム特
性解析処理2011を再実行する。
【0065】図36は出力処理2013の詳細を示す。
本処理では、自動生成したアルゴリズムを、指定された
電子計算機のプログラミング言語のソースコードによる
プログラムに変換する。先ず、各部品アルゴリズムに対
して(3601)、アルゴリズムの擬似コードをソース
コードに変換する(3602)。部品アルゴリズム結合
アルゴリズムも、同様に、指定言語のソースコードに変
換する(3603、3604)。続いて、部品アルゴリ
ズム制御構造を指定言語のソースコードに変換する(3
605)。そして、制御構造の中に部品アルゴリズム、
及び部品アルゴリズム結合アルゴリズムをそれぞれ変換
したソースコードを埋込み(3606)、全体のソース
コードを自動生成ソースコード2015に出力する(3
607)。或いは、部品アルゴリズムを変換したソース
コードをサブルーチン、部品アルゴリズム制御構造をメ
インルーチンとしてそれぞれ独立に出力する。
【0066】図37に、図1、及び図20に示したユー
ザ入力情報(103、2003)のプログラム戦略40
9、または、アルゴリズム戦略2309を対話型処理に
よって作成する際の実施例を示す。図37には、部品プ
ログラムの組合せによるプログラム自動生成の場合を示
すが、部品アルゴリズムを使用する場合でも同様であ
る。端末の画面では、以下の情報がそれぞれウインドウ
の中に表示される。プログラム戦略を記述する領域37
01、システムに登録されている部品プログラム種類の
名称一覧3704とそれに属する部品プログラムの名称
一覧3705、システムに登録されている問題の名称一
覧3702、及び表示された問題3702を解くための
プログラム戦略一覧3703が表示される。これらの情
報を参照して、プログラム戦略の内容を予め設定された
コマンドによって表示、選択、又は修正することによっ
て、ユーザはプログラム戦略記述領域内にプログラム戦
略を作成する。
【0067】
【発明の効果】本発明に依れば、ユーザによって指定さ
れたプログラム種類、それらの制御構造、及び生成され
るプログラムの最適化項目を基に、最適化項目を選択基
準として部品プログラム種類から部品プログラムを選択
するだけで、部品プログラムの入出力データを変換する
プログラムを生成できる。さらに、このプログラムを部
品プログラムと結合し、結合後の全体のプログラムの特
性を解析して、部品プログラムを再選択、及び再結合す
ることによって、全体のプログラムの特性を改善するの
で、高いレベルでの特性と性能が要求されるプログラム
の品質が保証される。また、上記のプログラム生成を計
算機を用いて実施するので、設計開発工数の大幅削減、
すなわち、設計期間を大幅に短縮できる。
【0068】更に、本発明では、プログラムを電子計算
機上で実行する際の詳細な条件とは独立に、計算の手順
を記したアルゴリズムを部品として登録しておき、ユー
ザによって指定されたアルゴリズム種類、それらの制御
構造、及び生成されるアルゴリズムの最適化項目を基
に、最適化項目を選択基準として、部品アルゴリズムを
選択するだけで、部品アルゴリズムの入力データを変換
するアルゴリズムを生成できる。さらに、このアルゴリ
ズムを部品アルゴリズムと結合し、結合後の全体のアル
ゴリズムの特性を解析して、部品アルゴリズムを再選
択、及び再結合することによって、全体のアルゴリズム
の特性を改善するので、部品プログラムを組み合せてプ
ログラムを自動生成する場合に比べて、結合後のアルゴ
リズムの特性をより高精度に推定でき、最終的に生成さ
れるプログラムの品質が保証される。また、上記のアル
ゴリズム生成を計算機を用いて実施するので、設計開発
工数の大幅削減、即ち、設計期間の大幅短縮でき、部品
格納領域を大幅に削減できる。
【図面の簡単な説明】
【図1】部品プログラムの組み合せによるプログラム自
動生成全体構成図である。
【図2】部品プログラム情報説明図である。
【図3】部品プログラム選択補助情報説明図である。
【図4】ユーザ入力情報説明図である。
【図5】入力処理詳細説明図である。
【図6】部品プログラム選択処理詳細説明図である。
【図7】部品プログラム戦略解釈結果説明図である。
【図8】部品プログラム選択結果説明図である。
【図9】部品結合プログラム擬似コード(代入の場合)
である。
【図10】意味変換ルール説明図である。
【図11】意味変換ルール情報における意味変換述語−
擬似コード変換ルール説明図である。
【図12】意味変換木説明図である。
【図13】部品プログラム結合処理詳細説明図である。
【図14】意味変換木の例題である。
【図15】テ−ブル構造の例題である。
【図16】部品プログラム結合擬似コード(変換の場
合)例である。
【図17】結合後プログラム特性解析処理詳細説明図で
ある。
【図18】部品プログラム特性解析結果の例である。
【図19】出力処理詳細説明図である。
【図20】部品アルゴリズムの組み合せによるプログラ
ム自動生成全体構成図である。
【図21】部品アルゴリズム情報説明図である。
【図22】部品アルゴリズム選択補助情報説明図であ
る。
【図23】ユーザ入力情報説明図である。
【図24】入力処理詳細説明図である。
【図25】部品アルゴリズム選択処理詳細説明図であ
る。
【図26】部品アルゴリズム戦略解釈結果説明図であ
る。
【図27】部品アルゴリズム選択結果説明図である。
【図28】部品アルゴリズム結合擬似コード(代入の場
合)である。
【図29】変換ルール情報説明図である。
【図30】データ構造変換ルール説明図である。
【図31】部品アルゴリズム結合処理の詳細説明図であ
る。
【図32】データ構造の例題である。
【図33】部品アルゴリズム結合擬似コード(変換の場
合)である。
【図34】自動生成アルゴリズムの実行手順である。
【図35】結合後アルゴリズム特性解析説明図である。
【図36】出力処理詳細説明図である。
【図37】プログラム戦略対話作成の詳細説明図であ
る。
【符号の説明】
100…処理装置、101…部品プログラム情報、10
2…部品プログラム選択補助情報、103…ユーザ入力
情報、104…入力処理、105…プログラム戦略解釈
結果、106…プログラム選択処理、107…変換ルー
ル情報、108…部品プログラム選択結果、109…部
品プログラム結合処理、110…部品結合後擬似コー
ド、111…結合後プログラム特性解析処理、112…
特性改善可能性判断、113…出力処理、114…変更
済みプログラムソースコード格納ファイル、115…自
動生成ソースコード格納ファイル、116…自動生成ソ
ースコード格納ファイル、117…部品プログラム交換
処理、118…部品プログラム特性解析結果。

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】電子計算機を用いてプログラムを自動生成
    する方法は、(1)部品プログラムのソースコードと、
    空間複雑度を示す所要メモリ量オーダ、及び時間複雑度
    を示す処理時間オーダからなる特性と、部品プログラム
    の入出力データ名とを記述した部品プログラム情報を入
    力し、(2)解くべき問題の入出力データ名と、部品プ
    ログラム種類、及びそれらの適用順序を記したプログラ
    ム戦略と、自動生成するプログラムの最適化すべき特性
    とからなるユーザ入力情報を入力し、(3)前記プログ
    ラム戦略を基に登録されている部品プログラム中から、
    前記ユーザ入力情報で指定された特性を最適化するため
    の目的関数の値に基づいて、前記入力された一つの部品
    プログラム種類に対して前記一つの部品プログラムを選
    択し、(4)所定の部品プログラムに対して、それより
    先に実行される複数の部品プログラムの出力データから
    前記部品プログラムの入力データを作成する部品プログ
    ラム結合のためのプログラムの擬似コードを生成し、
    (5)前記部品プログラム特性と前記擬似コードの特性
    から結合されたプログラム全体の特性を求め、(6)前
    記ステップ(5)で得た特性が、ユーザ入力情報中で指
    定された最適化すべき特性に関して更に改善の可能性が
    あるかどうかを判定し、改善の可能性があれば、指定特
    性の改善の可能性が無くなるまで前記ステップ(3)か
    ら(6)を再実行して異なる部品プログラムを選択して
    結合し、(7)得られたプログラムを指定された電子計
    算機言語によるソースコードに変換し、(8)得られた
    ソースコードから実行可能モジュールを生成する、こと
    を特徴とするプログラム自動生成方法。
  2. 【請求項2】前記ステップ(3)において、所望のプロ
    グラムが解決しようとする問題の入出力データと、問題
    の名称と、前記問題を解くために過去に使用したプログ
    ラム戦略、及びその適用優先順序とを記述した部品プロ
    グラム選択補助情報に基づいて、前記ユーザ入力情報か
    ら前記プログラム戦略を選択することを特徴とする請求
    項1記載のプログラム自動生成方法。
  3. 【請求項3】前記ステップ(3)において、前記部品プ
    ログラム種類名に対してそれぞれ対応する未選択部品プ
    ログラムを選択する際に、(9)前記部品プログラム種
    類名をキーとして前記部品プログラム情報を検索し、
    (10)前記部品プログラム種類中に含まれる全ての部
    品プログラムの特性と前記ユーザ入力情報で指定された
    最適化項目とをその優先順位を含めて比較して、前記特
    性と前記最適化項目との差を小さくする部品プログラム
    を選択することを特徴とする請求項1記載のプログラム
    自動生成方法。
  4. 【請求項4】前記ステップ(4)は、(11)前記ステ
    ップ(3)で得られた前記部品プログラム種類毎の部品
    プログラム名を入力し、(12)前記部品プログラムが
    取扱う入出力データの意味を変換する意味変換ルールを
    入力し、(13)前記部品プログラムが取扱う入出力デ
    ータの操作ルールを入力し、(14)前記部品プログラ
    ム情報を入力し、(15)連続して実行される2つの前
    記部品プログラムの内、後に実行される第1の前記部品
    プログラムの、前記部品プログラム情報に記された入出
    力データ仕様中の各入力データ項目と、前記第1の部品
    プログラムより先に実行される複数の第2の前記部品プ
    ログラムの入出力データ仕様中の出力データ項目とが同
    一の意味を持つ項目を検索し、(16)前記検索された
    項目に対して、前記データ操作ルールに基づいて、前記
    出力データを前記入力データに変換する擬似コードを自
    動生成し、(17)前記項目が検索できない場合は、意
    味変換ルールを抽出できなくなるまで、前記項目の意味
    に対応する意味変換ルールを検索し、検索した前記ルー
    ル中の各意味項に含まれる意味に対応する前記意味変換
    ルールを更に検索し、さらに、(18)前記ステップ
    (17)で検索された前記意味変換ルールの階層関係
    と、前記意味変換ルールに記された意味間の論理関係を
    基に、前記出力データを前記入力データに変換する擬似
    コードを生成することを特徴とする請求項1記載のプロ
    グラム自動生成方法。
  5. 【請求項5】前記ステップ(5)は、(19)前記プロ
    グラム戦略を基に選択した部品プログラムの擬似コード
    と、自動生成した前記部品プログラム結合のためのプロ
    グラム擬似コードとを入力し、(20)前記プログラム
    擬似コードを解析して、それらの前記時間複雑度と前記
    空間複雑度とを求め、(21)前記部品プログラムに対
    して、部品プログラム情報の特性に記された時間複雑度
    と空間複雑度とを求め、(22)部品プログラム結合後
    の全体プログラム中の時間複雑度と空間複雑度を求め
    る、ことを特徴とする請求項1記載のプログラム自動生
    成方法。
  6. 【請求項6】前記ステップ(6)において、前記全体プ
    ログラムの特性に寄与しない前記部品プログラムの特性
    が悪化しても前記全体プログラムの特性の範囲内にあれ
    ば、前記部品プログラムを結合した後の前記全体プログ
    ラムの特性とそれを構成する前記部品プログラムの特性
    を基に、前記ユーザ入力情報中の特性最適化項目であっ
    て、且つ前記全体プログラムの特性を決定している特性
    を改善できるかどうかを判定することを特徴とする請求
    項1記載のプログラム自動生成方法。
  7. 【請求項7】前記ステップ(8)において、指定された
    電子計算機言語によるソースコードに変換された前記部
    品プログラム及び前記部品プログラム結合のための擬似
    コードから、部品プログラム制御構造に基づいて、1つ
    のソースコードを構成し、得られた前記ソースコード全
    体から1つの実行可能モジュールを生成することを特徴
    とする請求項1記載のプログラム自動生成方法。
  8. 【請求項8】電子計算機を用いてプログラムを自動生成
    する方法は、(1)問題解決の手順を示す部品アルゴリ
    ズムと、空間複雑度を示す所要メモリ量オーダ、及び時
    間複雑度を示す処理時間オーダからなる特性と、部品ア
    ルゴリズムの入出力データ名とを記述した部品アルゴリ
    ズム情報を入力し、(2)解くべき問題の入出力データ
    名と、部品アルゴリズム種類、及びそれらの適用順序を
    記したアルゴリズム戦略と、自動生成するプログラムの
    最適化すべき特性とからなるユーザ入力情報を入力し、
    (3)前記アルゴリズム戦略を基に登録されている部品
    アルゴリズム中から、前記ユーザ入力情報で指定された
    特性を最適化するための目的関数の値に基づいて、前記
    入力された一つの部品アルゴリズム種類に対して前記一
    つの部品アルゴリズムを選択し、(4)所定の部品アル
    ゴリズムに対して、それより先に実行される複数の部品
    アルゴリズムの出力データから前記部品アルゴリズムの
    入力データを作成する部品アルゴリズム結合のためのア
    ルゴリズムの擬似コードを生成し、(5)前記部品アル
    ゴリズム特性と前記擬似コードの特性から結合されたア
    ルゴリズム全体の特性を求め、(6)前記ステップ
    (5)で得た特性が、ユーザ入力情報中で指定された最
    適化すべき特性に関して更に改善の可能性があるかどう
    かを判定し、改善の可能性があれば、指定特性の改善の
    可能性が無くなるまで前記ステップ(3)から(6)を
    再実行して異なる部品アルゴリズムを選択して結合し、
    (7)得られたアルゴリズムを指定された電子計算機言
    語によるソースコードに変換し、(8)得られたソース
    コードから実行可能モジュールを生成する、ことを特徴
    とするプログラム自動生成方法。
  9. 【請求項9】電子計算機を用いてプログラムを自動生成
    する方法は、(1)部品プログラムのソースコード、特
    性、及び入出力データからなる部品プログラム情報を入
    力し、(2)解くべき問題の入出力データ、プログラム
    戦略、及びプログラム全体の特性からなるユーザ入力情
    報を入力し、(3)前記プログラム戦略に基づいて、前
    記プログラム全体の特性を最適化する部品プログラムを
    選択し、(4)前記部品プログラムの実行順序に基づい
    て、前記出力データから前記入力データを作成して前記
    選択された部品プログラムを結合するための擬似コード
    を生成し、(5)前記部品プログラム特性と前記擬似コ
    ードの特性から結合されたプログラム全体の特性を求
    め、(6)前記ステップ(5)で得た特性が、前記ユー
    ザ入力情報で指定された特性を改善できなくなるまで前
    記ステップ(3)から(6)を再実行して異なる部品プ
    ログラムを選択して結合し、(7)得られたプログラム
    を指定された電子計算機言語によるソースコードに変換
    する、ことを特徴とするプログラム自動生成方法。
  10. 【請求項10】電子計算機を用いてプログラムを自動生
    成する方法は、(1)部品アルゴリズム、特性、及び入
    出力データからなる部品アルゴリズム情報を入力し、
    (2)解くべき問題の入出力データ、アルゴリズム戦
    略、及びアルゴリズム全体の特性からなるユーザ入力情
    報を入力し、(3)前記アルゴリズム戦略に基づいて、
    前記アルゴリズム全体の特性を最適化する部品アルゴリ
    ズムを選択し、(4)前記部品アルゴリズムの実行順序
    に基づいて、前記出力データから前記入力データを作成
    して前記選択された部品アルゴリズムを結合するための
    擬似コードを生成し、(5)前記部品アルゴリズム特性
    と前記擬似コードの特性から結合されたアルゴリズム全
    体の特性を求め、(6)前記ステップ(5)で得た特性
    が、前記ユーザ入力情報で指定された特性を改善できな
    くなるまで前記ステップ(3)から(6)を再実行して
    異なる部品アルゴリズムを選択して結合し、(7)得ら
    れたアルゴリズムを指定された電子計算機言語によるソ
    ースコードに変換する、ことを特徴とするプログラム自
    動生成方法。
JP26717692A 1992-10-06 1992-10-06 プログラム自動生成方法 Pending JPH06119156A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP26717692A JPH06119156A (ja) 1992-10-06 1992-10-06 プログラム自動生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP26717692A JPH06119156A (ja) 1992-10-06 1992-10-06 プログラム自動生成方法

Publications (1)

Publication Number Publication Date
JPH06119156A true JPH06119156A (ja) 1994-04-28

Family

ID=17441166

Family Applications (1)

Application Number Title Priority Date Filing Date
JP26717692A Pending JPH06119156A (ja) 1992-10-06 1992-10-06 プログラム自動生成方法

Country Status (1)

Country Link
JP (1) JPH06119156A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101134116B1 (ko) * 2010-08-19 2012-04-09 주식회사 잉카인터넷 응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법
JP2016062300A (ja) * 2014-09-18 2016-04-25 日本電気株式会社 ソースコード生成装置、ソースコード生成方法およびソースコード生成プログラム
JP2016126474A (ja) * 2014-12-26 2016-07-11 富士通株式会社 定義ファイル生成プログラム、定義ファイル生成方法、および情報処理装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101134116B1 (ko) * 2010-08-19 2012-04-09 주식회사 잉카인터넷 응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법
JP2016062300A (ja) * 2014-09-18 2016-04-25 日本電気株式会社 ソースコード生成装置、ソースコード生成方法およびソースコード生成プログラム
JP2016126474A (ja) * 2014-12-26 2016-07-11 富士通株式会社 定義ファイル生成プログラム、定義ファイル生成方法、および情報処理装置

Similar Documents

Publication Publication Date Title
JP4544473B2 (ja) インタフェース画面設計中心のソフトウェア生産工程の自動化方法及び、この方法をプログラム化して収録したコンピュータで読出し可能な記録媒体
JP2506991B2 (ja) 回路変換システムと回路変換方法と反転論理生成方法および論理設計システム
Smaragdakis et al. DiSTiL: A Transformation Library for Data Structures.
JPH02264329A (ja) プログラム自動生成装置
US5452226A (en) Rule structure for insertion of new elements in a circuit design synthesis procedure
JPH09212353A (ja) 再利用設計支援方法および設計支援装置
Bhargava et al. On embedded languages for model management
US20040049742A1 (en) Document creation support system
CN108874395A (zh) 一种组件化流处理过程中的硬编译方法及装置
Yushchenko et al. Multilevel synthesis of structured programs
Bowen Formal specification in Z as a design and documentation tool
JPH06119156A (ja) プログラム自動生成方法
Ramaji et al. Interpreted information exchange: implementation point of view.
Lopez et al. Design assistance for CAD frameworks
Antao et al. Techniques for synthesis of analog integrated circuits
Silva et al. Test case generation from natural language requirements using cpn simulation
Caballero et al. Two type extensions for the constraint modeling language MiniZinc
Brockman et al. A schema-based approach to CAD task management
Mabrok et al. Mathematical framework for recursive model-based system design
JP2551944B2 (ja) 図的言語処理システム
Harandi et al. Software design using reusable algorithm abstractions
JPH04172529A (ja) データ中心型ソフトウエア部品によるプログラム自動生成方式
Kambe et al. A Method for Analyzing and Visualizing Intermodule Relations to Support the Reuse‐Based Embedded Software Development
CN117707500A (zh) 业务应用的生成方法、运行方法、系统、设备及存储介质
JPH02116972A (ja) プログラムデータベースの検索方式