JPH08328840A - プログラム合成方法 - Google Patents

プログラム合成方法

Info

Publication number
JPH08328840A
JPH08328840A JP13318495A JP13318495A JPH08328840A JP H08328840 A JPH08328840 A JP H08328840A JP 13318495 A JP13318495 A JP 13318495A JP 13318495 A JP13318495 A JP 13318495A JP H08328840 A JPH08328840 A JP H08328840A
Authority
JP
Japan
Prior art keywords
data
program
connection information
output
objects
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
JP13318495A
Other languages
English (en)
Inventor
Toshiya Chiba
俊哉 千葉
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 JP13318495A priority Critical patent/JPH08328840A/ja
Publication of JPH08328840A publication Critical patent/JPH08328840A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【目的】 複数のプログラム部品を組み合わせ、計算機
によって自動的に応用プログラムを合成する方法におい
て、複数のプログラム部品を任意に組み合わせてプログ
ラムを合成することを可能とする。 【構成】 データ入出力オブジェクト102と、データ処
理オブジェクト103の組み合わせと、データの受け渡し
関係を定義するオブジェクト接続情報104から、インス
タンスを生成・初期化するオブジェクト初期化ルーチン
106を生成する。また、接続情報104を複数の部分接続情
報群108に分解し、各部分接続毎にオブジェクトの制御
を行う部分接続制御ルーチン群110を生成する。生成さ
れたルーチン106、110と、データ項目クラス群101、デ
ータ入出力クラス群102、データ処理クラス群103をコン
パイル・リンクして、完成プログラム112を得る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は計算機を用いたプログラ
ム自動合成ツールに関し、特に、バッチ処理プログラム
のように、ファイル、端末等のデータ入力装置から順次
データを入力し、入力されたデータに対して処理を行
い、結果として得られたデータをプリンタ、端末等のデ
ータ出力装置に順次出力するオブジェクト指向プログラ
ムを計算機によって自動的に合成する、プログラム合成
方法に関する。
【0002】
【従来の技術】従来、プログラム合成方法としては、応
用プログラムの構成要素である処理パターンを実行する
プログラムを複数生成し、これらプログラム群を組み合
わせ、順次実行する事によって目的とする動作を得る、
特開平5-108319が知られていた。上記従来技術では、2
次記憶に作成されるテンポラリファイルを介し、プログ
ラム間のデータ受け渡しを行っていた。
【0003】
【発明が解決しようとする課題】上記従来方法では、運
用時に管理しなければならないプログラムの本数がふえ
てしまい、運用に手間がかかるという問題があった。ま
た、プログラム間でのデータ受け渡しは、2次記憶に作
成されるテンポラリファイルを介して行われるため、2
次記憶を無駄に消費する上に、プログラム実行性能が悪
くなるという問題があった。
【0004】上記の問題を解決するためには、処理パタ
ーンをプログラム部品として実現し、複数のプログラム
部品を組み合わせて1本のプログラムに合成する手段を
有し、かつ、テンポラリファイルを介さずに、プログラ
ム部品間でデータ受け渡しを可能にしなければならな
い。上記事項を実現するためには、解決しなければなら
ない3つの課題がある。
【0005】第1の課題は、プログラム部品間で受け渡
しされるデ−タの形式に関係なく、プログラム部品を自
由に組み合わせられることである。プログラム部品間の
インターフェースが、受け渡しされるデータの形式に依
存していると、プログラム部品の組合せに複雑な制限が
生じてしまう。
【0006】第2の課題は、複数プログラム部品の動作
シーケンスを取り扱う手段を有する事である。第1のプ
ログラム部品で何らかのデータを処理し、その結果とし
て得られたデータを第2のプログラム部品が処理する場
合について考察する。第1のプログラム部品で入力デー
タを全て処理した後に、第2のプログラム部品が処理を
行うシーケンスとすると、処理途中のデータを保持する
領域が必要となる。多量のデータを処理する場合、デー
タを保持する領域が大きくなり、現実のシステムに適用
することができない。従って、入力となるデータを一定
の単位(レコード等)に区切り、単位毎に第1のプログラ
ム部品と第2のプログラム部品を続けて動作させるよう
な動作シーケンスにする必要がある。プログラム部品の
動作シーケンスは複雑であり、合成されたプログラムの
保守が困難になる。
【0007】第3の課題は、プログラム部品の組み合わ
せの誤りを容易に発見する手段を、ユーザに提供する事
である。複数のプログラム部品をつなぎあわせると、例
えば複数のプログラム部品が同一のファイルに、同時に
書き込み動作を行うなどの不正な動作を行う場合があ
る。第2の課題で述べたように、プログラム部品の動作
シーケンスを扱う問題は複雑であり、ユーザがこのよう
な問題を考慮し、プログラム部品の組み合わせの誤りを
発見することは容易ではない。
【0008】本発明は、上記3つの問題を解決すること
により、複数のプログラム部品をつなぎ合わせて1本の
プログラムを合成することを可能とし、より実用性の高
いプログラム合成方法を提供する事を目的とする。
【0009】
【課題を解決するための手段】本発明のプログラム合成
方法では、オブジェクト指向プログラミング技術を用
い、大きく分けて次の3種類のオブジェクトを組み合わ
せることによってプログラムを合成する。
【0010】(1)データ項目オブジェクト 特定の種別のデータを抽象化したオブジェクト。データ
種別により異なる種類のデータ項目オブジェクトが存在
する。データ値を属性として持ち、データ値に対する基
本的な操作(大小比較や文字列変換等)をインターフェー
スの統一されたメソッドとして持つ。
【0011】(2)データ入出力オブジェクト 磁気ディスク装置、プリンタ等のデータ入出力装置を介
して、データ項目オブジェクトとの間でデータ入出力を
行うオブジェクト。装置の種別や、装置で用いられるデ
ータ書式等によって、それぞれ異なる種類のデータ入出
力オブジェクトが存在する。データ取得およびデータ書
き込みの手続きをインターフェースの統一されたメソッ
ドとして持つ。
【0012】(3)データ処理オブジェクト データ項目オブジェクトのメソッドを定型的な順序で呼
び出すことにより、データ項目オブジェクトに対して特
定の定型的処理を行うオブジェクト。定型的処理の内容
によりそれぞれ異なる種類のデータ処理オブジェクトが
存在する。データ取得およびデータ書き込みの手続きを
インターフェースの統一されたメソッドとして持つ。
【0013】データ入出力オブジェクトおよびデータ処
理オブジェクトの、データ取得メソッドおよびデータ書
き込みメソッドは、同一のインターフェースによって統
一されている。従って、これら2つのメソッドのみを使
用する限りは、データ入出力オブジェクトおよびデータ
処理オブジェクトは、同一の種類のオブジェクトとして
扱う事ができる。以後、データ入出力オブジェクトとデ
ータ処理オブジェクトを包括するオブジェクトの種別と
して、データ受け渡しオブジェクトという用語を定義
し、説明を続ける。
【0014】データ処理オブジェクトは、データ取得用
のデータ受け渡しインスタンスと、データ書き込み用の
データ受け渡しインスタンスを、属性として持つ。デー
タ取得メソッド又はデータ書き込みメソッドが呼び出さ
れると、データ取得用のデータ受け渡しインスタンスの
データ取得メソッドを呼び出して、データ項目インスタ
ンスを取得する。次に、取得したデータ項目インスタン
スのメソッドを定型的な順序で呼び出し、その結果とし
て得られたデータ項目インスタンスを、データ書き込み
用のデータ受け渡しインスタンスの、データ書き込みメ
ソッドに渡す。ここでメソッド呼び出しが行われたデー
タ受け渡しオブジェクトがデータ処理オブジェクトであ
る場合には、上記と同様の動作が再帰的に繰り返され
る。
【0015】オブジェクト接続情報は、データ入出力オ
ブジェクトおよびデータ処理オブジェクトをどのように
組合わせて完成プログラムを実現するのかを記述する情
報である。完成プログラムで使用するオブジェクトをノ
ードとし、オブジェクト間のデータの流れをノード間の
接続とするネットワーク状の情報で構成されている。
【0016】オブジェクト接続情報が入力されたとき、
情報に対して次の2つの検査を行う事により、誤りをプ
ログラム合成前に発見する。
【0017】(1)情報のネットワーク構造の中の、デー
タ処理オブジェクトのみからなる部分ネットワークに接
続されているデータ入出力オブジェクト群の中で、互い
に同一のリソースにアクセスするデータ入出力オブジェ
クトの組が存在するような接続がないかを検査する。こ
のような接続は不正である。
【0018】(2)上記部分ネットワークの中に、ループ
状の接続が存在しないかを検査する。 このような
接続は不正である。
【0019】また、オブジェクト接続情報をユーザが作
成する際、情報をグラフィカル・ユーザ・インターフェ
ース等により、対話的に入力する。このとき、ユーザが
オブジェクト間のデータの流れを1つ定義する都度、上
記検査を行う。
【0020】検査の結果、正しいと判定されたオブジェ
クト接続情報からは、コードを生成する。まず、情報に
記述されている全てのオブジェクトを生成・初期化す
る、オブジェクト初期化ルーチンを生成する。次に、情
報のネットワーク構造を解析し、ネットワークを、デー
タ処理オブジェクトのみからなる部分ネットワーク群に
分解する。完成プログラムでは、各々の部分ネットワー
クを1つの処理単位として、オブジェクトの制御を行
う。各々の部分ネットワークについて、次の4つの動作
を行う、部分ネット制御ルーチンが生成される。
【0021】(1)データ入出力オブジェクトをデータ入
力又は出力用にオープンする。 (2)該部分ネットワークに所属する各々のデータ処理オ
ブジェクトに対し、データ入力先とデータ出力先となる
データ受け渡しオブジェクトを渡し、オブジェクト間の
接続関係を確立する。
【0022】(3)データ処理オブジェクトに対し、デー
タ処理依頼を行う。 (4)データ処理が終了したら、データ入出力オブジェク
トをクローズする。
【0023】最後に、データ項目オブジェクト群、デー
タ入出力オブジェクト群、データ処理オブジェクト群、
オブジェクト初期化ルーチン、部分ネット制御ルーチン
群をコンパイル/リンクすることにより、完成プログラ
ムを得る。
【0024】
【作用】完成プログラムで処理されるデータをオブジェ
クトとして抽象化し、さらにメソッドのインターフェー
スを統一する事で、オブジェクトを受け渡しする、デー
タ入出力オブジェクトおよびデータ処理オブジェクトの
メソッドインターフェースが、受け渡しされるデータの
形式に非依存となり、メソッドインターフェースを統一
する事が可能となる。さらに、データ入出力オブジェク
トとデータ処理オブジェクトのメソッドインターフェー
スを互いに統一することにより、これら2種類のオブジ
ェクトをつなぎ合わせる際に、インターフェースに起因
する接続の制限がなくなる。従って、発明が解決しよう
とする課題の項に示した、第1の課題が解決される。
【0025】次に、データ処理オブジェクトを複数組み
合わせて処理を行う際、これらのデータ処理オブジェク
トを交互に動作させる必要があるが、その動作制御をオ
ブジェクト外部から行うのではなく、オブジェクト内部
からの再帰的動作で行わせる。オブジェクト外部から行
うオブジェクト制御は、オブジェクト間の接続関係の指
定と、処理依頼のみであり、単純で分かりやすい制御内
容となる。その結果、プログラム合成系が単純で済む上
に、合成されたプログラムの保守性も向上する。従っ
て、発明が解決しようとする課題の項に示した、第2の
課題が解決される。
【0026】また、オブジェクト接続情報を、プログラ
ム合成前に検査することにより、オブジェクトの組み合
わせの誤りを、プログラムの合成、テストを行う前に知
る事ができる。さらに、オブジェクト接続情報をの入力
を対話的に行う場合には、ユーザがオブジェクト間のデ
ータの流れを指定する都度、その指定が正当であるか否
かが検査される。この結果、ユーザはオブジェクトの組
み合わせを定義する作業を行いながら、その場でオブジ
ェクトの組み合わせの誤りを知る事ができる。従って、
発明が解決しようとする課題の項に示した、第3の課題
が解決される。
【0027】
【実施例】本発明では、オブジェクト指向プログラミン
グに関連する用語を次のように定義している。
【0028】(1)インスタンス 0ないし複数のデータを保持するデータ領域と、手続き
を一意に決定するための0ないし複数の、データ値(手
続きを実行するサブルーチンが置かれる、計算機上のア
ドレス等)を保持するデータ領域から成るデータ構造
体。
【0029】(2)メソッド インスタンスに記述されているデータ値から、一意に決
定される手続き。
【0030】(3)クラス インスタンスを作成・初期化する手続きと、メソッドか
ら成るプログラムモジュール。
【0031】(4)オブジェクト インスタンスおよびクラス。
【0032】(5)メソッドインターフェース インスタンスからメソッドを特定しメソッドを呼び出す
際の手続き。
【0033】以下、次のような応用プログラムを合成す
る場合を例にとり、本発明の実施例を説明する。
【0034】(1)総務部の人事情報を記録する総務部人
事マスタファイルが存在する。このファイルは、従業員
レコードの並びによって、従業員の情報が記録されてい
る。また、従業員レコードは、従業員番号をキーにし
て、あらかじめソートされている。
【0035】(2)従業員レコードは、従業員番号、従業
員名、従業員役職コードの、3つのフィールドから成
る。
【0036】(3)経理部の人事情報を記録する経理部人
事マスタファイルが存在する。このファイルの書式は、
総務部人事マスタファイルと同一である。
【0037】(4)プログラムを実行すると、総務部人事
マスタファイルと経理部人事マスタファイルの中の、役
職コードが001(研修員)である従業員を、研修員一覧票
として、帳票出力する。その際出力される従業員は、従
業員番号をキーとしてソートされている。
【0038】図1は、本発明のプログラム合成方法の全
体構成図である。図2は本発明のプログラム合成方法で
使用するハードウェアの構成図である。図3は、オブジ
ェクト初期化ルーチン生成処理105の処理内容を示す
フローチャート、図4は、部分接続情報抽出処理107
の処理内容を示すフローチャート、図5〜図8は、部分
接続制御ルーチン生成処理109の処理内容を示すフロ
ーチャートである。
【0039】以下では、本発明の実施例として、プログ
ラミング言語C++プログラムの合成系を用いて説明する
が、必ずしもC++プログラムの合成系に限定されるべき
ものではなく、あらゆるプログラミング言語のプログラ
ムの合成原理を含むものである。ただし、本発明は、オ
ブジェクト指向プログラミング言語のプログラム合成に
適用した場合に、効果が最も良く発揮される。
【0040】本実施例では、データ項目クラス101、デ
ータ入出力クラス102、データ処理クラス103は、クラス
ライブラリに格納されている。ただし、クラスライブラ
リに格納されているのは、オブジェクトのインターフェ
ースのみを規定する抽象クラスと、多くの応用プログラ
ムで共通的に見られるクラスのみである。クラスライブ
ラリに存在しないクラスは、ユーザが入力する仕様書の
情報から、クラスライブラリに格納されているクラスの
サブクラスとして生成する。
【0041】図9に、実施例で用いるクラスライブラリ
のクラス階層図を示す。DataItem901は、データ項目ク
ラス101のインターフェースを規定する抽象クラスであ
る。メソッド一覧を表1に示す。DataNode905は、データ
入出力クラス102およびデータ処理クラス103の共通部分
のインターフェースを規定する抽象クラスである。メソ
ッド一覧を表2に示す。DataIO906、DataProcessor907
は、それぞれ、データ入出力クラス102と、データ処理
クラス103のインターフェースを規定する抽象クラスで
ある。メソッド一覧を表3、表4に示す。その他に、多く
の応用プログラムで再利用可能な、KanjiName903、Code
Number904等のデータ項目クラス、Merger910、Selector
911等のデータ処理クラスはクラスライブラリに格納さ
れており、そのまま応用プログラムの部品として利用す
る。また、Record902、File908、Sheet909等は、各々デ
ータ書式に依存する情報が未定義であり、そのままでは
部品として利用出来ないが、プログラム仕様書から入力
されるデータ書式情報から、該クラスのサブクラスを生
成し、応用プログラムの部品として利用する。
【0042】
【表1】
【0043】
【表2】
【0044】
【表3】
【0045】
【表4】
【0046】まず、図10に示すレコード仕様書画面10
01、ファイル書式仕様書画面1002、帳票書式仕様書画面
1003によってレコード、ファイル、帳票の書式を定義す
る。レコード仕様書1001は、レコードクラス名、各フィ
ールドの名前、使用するデータ項目の種別(クラス名)等
を入力する。本仕様書の情報からは、Record902のサブ
クラスが生成される。ファイル書式仕様書1002は、ファ
イルクラス名、使用データ項目の種別等を入力する。本
仕様書の情報からは、File908のサブクラスが生成され
る。帳票書式仕様書1003は、帳票クラス名、使用データ
項目の種別、題名文字列(1枚目の帳票の先頭行に印刷さ
れる文字列)、ヘッダ文字列(帳票の各ページ先頭行に印
刷される文字列)、フッタ文字列 (帳票の各ページ末尾
行に印刷される文字列)等を入力する。本仕様書の情報
からは、Sheet909のサブクラスが生成される。
【0047】次に、図11に示すオブジェクト接続情報
入力画面によって、オブジェクト接続情報104を作成す
る。入力画面では、オブジェクトの組み合わせと、個々
のオブジェクトの詳細情報を入力する。まず、1101に示
すネットワーク図により、完成プログラムにおけるオブ
ジェクト間のデータの流れを定義する。1102〜1106に示
すアイコンは、完成プログラムで使用されるオブジェク
トを表現しており、1つのアイコンが一つのインスタン
スに対応する。アイコン間を結ぶ矢印は、インスタンス
間のデータの流れを表現する。以後、ネットワーク図を
システムフロー図と呼ぶ。システムフロー図1101では、
次のようなデータの流れが定義されている。
【0048】(1)総務部人事マスタファイル1102は、マ
ージ部品1104からの要求を受けるとファイルからデータ
を読みだし、結果として得られたレコードインスタンス
を返す。
【0049】(2)経理部人事マスタファイル1103は、マ
ージ部品1104からの要求を受けるとファイルからデータ
を読みだし、結果として得られたレコードインスタンス
を返す。
【0050】(3)マージ部品1104は、総務部人事マスタ
ファイル1102と、経理部人事マスタファイル1103からレ
コードインスタンスを取得し、該レコードインスタンス
の大小比較メソッドを呼び出す。大小比較した結果、よ
り(キー項目が)小さいと判断されたレコードインスタン
スを出力する。出力したレコードインスタンスが総務部
人事マスタファイル1102のものならば、総務部人事マス
タファイル1102から1レコード取得し、経理部人事マス
タファイル1103のものならば、経理部人事マスタファイ
ル1103から1レコード取得する。該操作を繰り返すこと
により総務部人事マスタファイル1102、経理部人事マス
タファイル1103双方のレコードが、キー項目がソートさ
れた状態で順次出力される。
【0051】(4)選択部品1105は、マージ部品から入力
したレコードの特定フィールドが特定の値である場合の
み得られたレコードを研修員一覧票1106に出力する。
(5)研修員一覧票1106は、渡されたレコードを帳票に出
力する。
【0052】次に、1107〜1111に示す表により、個々の
プログラム部品インスタンスの詳細定義を行う。全ての
詳細定義1102から1111において、個々のインスタンスの
所属クラスおよびインスタンス名を定義するが、その他
の付加情報を定義しなければならないインスタンスも存
在する。総務人事マスタファイル1102及び、経理部人事
マスタファイル1103の詳細定義1107、1108では、使用す
るファイルのファイル名を定義する。選択部品1105の詳
細定義1110では、レコードの中の、最初から何番目のフ
ィールドを検査するのかを定義する検査フィールド番号
と、監査したフィールドがどのような値である場合にレ
コードを出力するかを定義する適合値の、2つの付加情
報を定義する。
【0053】検査の結果、オブジェクト接続情報104に
は、正当な接続情報が格納される。オブジェクト接続情
報104からは、部品初期化ルーチン106と、部分接続制御
ルーチン群110が生成される。本実施例では、部品初期
化ルーチン106と、部分接続制御ルーチン群110は、一体
化されたメインルーチンとして生成される。生成される
メインルーチンを図12に示す。
【0054】まず、図3のフローチャートに基づき、図
11において記述された全てのインスタンスを生成・初
期化する1201が生成される。まず、301でオブジェク
ト接続情報に未処理のオブジェクトが残っているかを調
べ、オブジェクト接続情報内の全てのオブジェクトを処
理し終えたらオブジェクト初期化ル−チン生成処理10
5を終了する。未処理のオブジェクトが残っていれば、
302で上記未処理オブジェクトをオブジェクト接続情
報内から取得し、303で取得したオブジェクトの初期
化ル−チン呼出しコ−ドを出力する。出力が終わると、
301に戻る。
【0055】次に、図4のフローチャートに基づき、デ
ータ処理オブジェクトのみからなる部分接続と、部分接
続に直接接続されているデータ入出力オブジェクトのみ
からなる部分接続情報が抽出される。まず、401で、
オブジェクト接続情報からデ−タ処理オブジェクトのみ
からなる部分を抽出する。402で、上記部分が抽出で
きたかを判定する。抽出されなかったと判断された場合
は、部分接続情報抽出処理107を終了し、抽出に成功
したと判定され時は403に進む。403では401で
抽出した、デ−タ処理オブジェクトのみからなる部分
と、上記部分に直接接続されているデ−タ入出力オブジ
ェクトから成る部分を併せた部分接続情報を出力する。
出力が終了すると、401に戻る。
【0056】本実施例の図11からは、マージオブジェ
クト1104と、選択オブジェクト1105からなる部分が抽出
され、部分に直接接続されているデータ入出力オブジェ
クトも含めた、総務部人事ファイル1102、経理部人事マ
スタファイル1103、マージオブジェクト1104、選択オブ
ジェクト1105、研修員一覧票1106からなる部分接続情報
が出力される。
【0057】上記部分接続情報から、図5のフローチャ
ートに基づき、部分接続情報に含まれるオブジェクトを
制御する部分1202が生成される。まず、501で図4の
フロ−チャ−トに基づいて抽出された部分接続情報がま
だ残っているかを判定する。残っていなければ部分接続
制御ル−チン生成処理108を終了し、残っているなら
ば、502に進む。502では上記部分接続情報を取得
し、部分接続初期化コ−ド生成処理503、デ−タ処理
依頼コ−ド生成処理504、リソ−ス解放コ−ド生成処
理505を順次行なった上で501に戻る。
【0058】図6は、部分接続初期化コ−ド生成処理5
03の詳細を示すフロ−チャ−トである。まず、601
で、502において取得した部分接続情報に未処理のオ
ブジェクトが残っているかを判定する。残っていないな
らば部分接続初期化コ−ド生成処理503を終了し、残
っているならば602に進む。602でオブジェクト種
別を判別し、次に603でそれがデ−タ入出力オブジェ
クトかを判定する。デ−タ入出力オブジェクトでないな
らば604に進み、デ−タ入出力オブジェクトならば6
05に進む。604ではデ−タ処理オブジェクトのオブ
ジェクト接続オブジェクトを呼び出すコ−ドを出力し、
601に戻る。605ではデ−タ入出力オブジェクトの
オ−プンメソッドを呼び出すコ−ドを出力し、601に
戻る。上記フロ−チャ−トにより、図12に示したメイ
ンル−チンの例では1203の部分が生成される。
【0059】図7は、デ−タ処理依頼コ−ド生成処理5
04の詳細を示すフロ−チャ−トである。まず701
で、502において取得した部分接続情報から任意のデ
−タ処理オブジェクトを抽出する。次に702で上記デ
−タ処理オブジェクトのデ−タ処理メソッドを呼び出す
コ−ドを出力する。上記フロ−チャ−トにより、図12
に示したメインル−チンの例では1204の部分が生成
される。
【0060】図8は、リソ−ス解放コ−ド生成処理50
5の詳細を示すフロ−チャ−トである。まず801で、
502において取得した部分接続情報に未処理のデ−タ
入出力オブジェクトが残っているかを判定する。デ−タ
入出力オブジェクトが残っていないならばリソ−ス解放
コ−ド生成処理505を終了し、残っているならば80
2に進む。802でオブジェクト種別を判別し、次に8
03でデ−タ入出力オブジェクトのクロ−ズメソッドを
呼び出すコ−ドを出力する。上記フロ−チャ−トによ
り、図12に示したメインル−チンの例では1205が
生成される。
【0061】図1における部品初期化ル−チン106は
図12の1201に、図1における部分接続制御ル−チ
ン110は図12の1202に対応する。本実施例で
は、部品初期化ル−チン106及び部分接続制御ル−チ
ン110は1つのメインル−チンとして生成される。最
後に、本実施例で生成したサブクラス及びメインル−チ
ンをコンパイルし、さらに最初に説明したクラスライブ
ラリをリンクすることにより、完成プログラムを得る。
【0062】次に、第2の実施例を説明する。本実施例
では、複数のデ−タ処理オブジェクトが、同時にシステ
ム上の同一のリソースにアクセスしないように、オブジ
ェクト接続情報を検査する。図13に示す接続例では、デ
−タ処理オブジェクト1301と、デ−タ処理オブジェクト
1302が、帳票1303と、帳票1304に処理結果を出力してい
る。完成プログラムでは、デ−タ処理オブジェクト1301
とデ−タ処理オブジェクト1302は同時に動作する事にな
るため、帳票1303と帳票1304が同一のプリンタから出力
されると、正常な結果を得ることができない。
【0063】このような、不正な接続を検出するために
は、システムフロー図を、デ−タ処理オブジェクトのみ
からなる部分ネットワークに分解し、同一の該部分ネッ
トワークに接続されているデ−タ入出力オブジェクト
で、同一リソースを使用しているものがないかを検査す
る。
【0064】次に、第3の実施例を説明する。発明で
は、完成プログラムにおいて、処理途中にあるデ−タが
失われることのないように、オブジェクト接続情報を検
査する。図14に示す接続例では、デ−タ処理オブジェ
クト1403がデ−タ処理オブジェクト1401から2回続けて
デ−タを取得すると、デ−タ処理オブジェクト1401から
デ−タ処理オブジェクト1402へ、2回続けてデ−タが出
力される可能性がある。デ−タ処理オブジェクト1402の
処理結果デ−タがデ−タ処理オブジェクト1403に渡され
る前に、次のデ−タが送られてきてしまうため、処理途
中のデ−タが次のデ−タ処理オブジェクトに渡される前
に消滅してしまう。
【0065】このような、不正な接続を検出するために
は、システムフロー図を、デ−タ処理オブジェクトのみ
からなる部分ネットワークに分解し、該部分ネットワー
クにループ接続がないかを検査する。
【0066】次に、第4の実施例を説明する。該発明で
は、システムフロー図1101をユーザと対話的に入力する
際、ユーザがオブジェクト間のデ−タの流れを定義する
都度、検査を行う。検査が必要となるのは、ユーザが次
の動作を行った時である。
【0067】(1)オブジェクトを示すアイコン間にデ−
タの流れを示すアークを引いた時。 (2)アークで接続されているアイコンの種類又は名称を
変更した時。 (3)アイコン間のアークの引き方を変更した時。
【0068】上記以外の、オブジェクト間のデ−タの流
れが変更されない操作をユーザが行った場合は、検査を
行う必要がない。検査が行われる操作を、あらかじめ限
定しておくことにより、システムフロー図を入力するエ
ディタの性能を著しく損なうことなく、かつ、不正なオ
ブジェクトの接続を、システムフロー図の作成時に、そ
の場で知る事ができる。
【0069】
【発明の効果】本発明によれば、ユーザがプログラム部
品を組み合わせることによってプログラムを自動合成す
る際、部品の組み合わせを意識することなく容易に組み
合わせ定義が行え、かつ、部品間のデータ受け渡しにテ
ンポラリファイルを介さない、高性能で、運用の手間が
かからないプログラムを自動合成する事ができる。
【図面の簡単な説明】
【図1】プログラム合成方法の、処理手順の全体図。
【図2】ハードウェア構成図。
【図3】図1に示すオブジェクト初期化ルーチン生成処
理105のフローチャート。
【図4】図1に示す部分接続情報抽出処理107のフロー
チャート。
【図5】図1に示す部分接続制御ルーチン生成処理109
のフローチャート。
【図6】図5に示す部分接続初期化コード生成処理501
のフローチャート。
【図7】図5に示すデータ処理依頼コード生成処理502
のフローチャート。
【図8】図5に示すリソース開放コード生成処理503の
フローチャート。
【図9】実施例のクラスライブラリのクラス階層図。
【図10】実施例のプログラム仕様書入力画面。
【図11】実施例のオブジェクト接続情報入力画面。
【図12】実施例で生成されるメインルーチン。
【図13】同一リソースへの同時アクセスが行われる、
不正な接続例。
【図14】処理途中デ−タが失われる、不正な接続例。
【符号の説明】
101…データ項目クラス群、102…データ入出力クラス
群、103…データ処理クラス群、104…オブジェクト接続
情報、105…オブジェクト初期化ルーチン生成処理、106
…オブジェクト初期化ルーチン、107…部分接続情報抽
出処理、108…部分接続情報群、109…部分接続制御ルー
チン生成処理、110…部分接続制御ルーチン群、111…コ
ンパイル、112…リンク、113…完成プログラム

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】計算機によって、仕様書の情報を元に、デ
    ータ処理を行う応用プログラムを自動的に合成する際
    に、(1)応用プログラムで使用されるデータの、データ
    値を属性として持ち、該属性に対する操作をメソッドと
    して持つデータ項目オブジェクト、(2)データ入出力装
    置と、データ項目オブジェクトとの間でデータの受け渡
    しを行うデータ入出力オブジェクト、及び(3)他のオブ
    ジェクトから取得したデータ項目オブジェクトのメソッ
    ドを定型的な順序で呼び出す操作を行ない、前記データ
    項目オブジェクトを他のオブジェクトに渡すデータ処理
    オブジェクトであって、デ−タ項目オブジェクトを取得
    する対象となるオブジェクト及び、デ−タ項目オブジェ
    クトを渡す対象となるオブジェクトがデ−タ入出力オブ
    ジェクトまたはデ−タ処理オブジェクトであるデ−タ処
    理オブジェクトを組み合わせて応用プログラムを合成す
    るプログラム合成方法において、 応用プログラムにおいて使用される、データ入出力オブ
    ジェクトおよびデータ処理オブジェクトとの間のデータ
    項目オブジェクトの受け渡し関係を表現する、オブジェ
    クト接続情報を入力し、該接続情報に記述された全ての
    データ入出力オブジェクトとデータ処理オブジェクトの
    生成・初期化手続きを呼び出すコードを合成し、さらに
    該接続情報のうち、データ入出力オブジェクトのみから
    なる部分接続情報毎にループが存在する制御構造を持つ
    コードを合成することを特徴とする、プログラム合成方
    法。
  2. 【請求項2】データ取得メソッドを持ち、該メソッドが
    呼び出されると、1ないし複数のデータ入出力オブジェ
    クトおよびデータ処理オブジェクトのデータ取得メソッ
    ドを呼び出し、得られたデータ項目オブジェクトのメソ
    ッドを定型的な順序で呼び出した結果得られたデータ項
    目オブジェクトをメソッド呼出し元に返し、該手続きに
    おいて、データ取得メソッドを呼び出す対象となったオ
    ブジェクトがデータ処理オブジェクトである場合、該手
    続きと同様の手続きが再帰的に行われるように構成され
    ている事を特徴とする、請求項1記載のプログラム合成
    方法。
  3. 【請求項3】データ項目オブジェクトをパラメータとし
    て持つデータ書き込みメソッドを持ち、該メソッドが呼
    び出されると、パラメータとして渡されたデータ項目オ
    ブジェクトのメソッドを定型的な順序で呼び出した結果
    得られたデータ項目オブジェクトを引数として1ないし
    複数のデータ入出力オブジェクトおよびデータ処理オブ
    ジェクトの書き込みメソッドを呼び出し、該手続きにお
    いて、データ書き込みメソッドを呼び出す対象となった
    オブジェクトがデータ処理オブジェクトである場合、該
    手続きと同様の手続きが再帰的に行われるように構成さ
    れている事を特徴とする、請求項1記載のプログラム合
    成方法。
  4. 【請求項4】オブジェクト接続情報の、ノードがデータ
    処理オブジェクトのみで構成される部分接続情報につい
    て、同一リソースを使用するレコード入出力オブジェク
    トが複数接続される組み合わせを不正と判定する、オブ
    ジェクト接続情報検査処理を行うことを特徴とする、請
    求項1記載のプログラム合成方法。
  5. 【請求項5】上記部分接続情報において、複数のデータ
    処理オブジェクトが、単一のデータ処理オブジェクトか
    らデータ項目オブジェクトを入力する接続を不正と判定
    する、オブジェクト接続情報検査処理を行うことを特徴
    とする、請求項1記載のプログラム合成方法。
  6. 【請求項6】上記部分接続情報において、複数のデータ
    処理オブジェクトが、単一のデータ処理オブジェクトに
    データ項目オブジェクトを出力する接続を不正と判定す
    る、オブジェクト接続情報検査処理を行うことを特徴と
    する、請求項1記載のプログラム合成方法。
  7. 【請求項7】上記部分接続情報において、ループ接続が
    存在する組み合わせを不正と判定する、オブジェクト接
    続情報検査処理を行うことを特徴とする、請求項1記載
    のプログラム合成方法。
  8. 【請求項8】オブジェクト接続情報を対話的に入力する
    手段を持ち、該入力手段を実行する際に、ユーザがレコ
    ード入出力構造体およびレコード処理構造体間のデータ
    項目オブジェクトの受け渡し関係を定義する都度、該定
    義が正当であるか否か判定することを特徴とする、請求
    項1記載のプログラム合成方法。
  9. 【請求項9】レコードの各フィールドで使用するデータ
    項目オブジェクトの種別を定義する事によって、データ
    項目オブジェクトの集合体であるレコードをデータ項目
    クラスとして生成し、データ入出力部品に格納されるデ
    ータ項目オブジェクトの種別を定義することによって、
    データ入出力部品を生成し、生成された該部品群を利用
    してプログラム合成を行う事を特徴とする、請求項1記
    載のプログラム合成方法。
JP13318495A 1995-05-31 1995-05-31 プログラム合成方法 Pending JPH08328840A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP13318495A JPH08328840A (ja) 1995-05-31 1995-05-31 プログラム合成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP13318495A JPH08328840A (ja) 1995-05-31 1995-05-31 プログラム合成方法

Publications (1)

Publication Number Publication Date
JPH08328840A true JPH08328840A (ja) 1996-12-13

Family

ID=15098663

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13318495A Pending JPH08328840A (ja) 1995-05-31 1995-05-31 プログラム合成方法

Country Status (1)

Country Link
JP (1) JPH08328840A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11249987A (ja) * 1998-03-05 1999-09-17 Nec Corp メッセージ処理装置およびその方法ならびにメッセージ処理制御プログラムを格納した記憶媒体
JP2003076706A (ja) * 2001-08-31 2003-03-14 Tsubasa System Co Ltd 統合マスタファイル制御方法、統合マスタファイル制御プログラム及び統合マスタファイル制御装置
US6654799B1 (en) 1998-05-27 2003-11-25 Nec Corporation Network management system uses managed object instances which are hierarchically organized in inclusion relation for recursively creating processing object and recuresively returning information

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11249987A (ja) * 1998-03-05 1999-09-17 Nec Corp メッセージ処理装置およびその方法ならびにメッセージ処理制御プログラムを格納した記憶媒体
US6654799B1 (en) 1998-05-27 2003-11-25 Nec Corporation Network management system uses managed object instances which are hierarchically organized in inclusion relation for recursively creating processing object and recuresively returning information
US6895435B2 (en) 1998-05-27 2005-05-17 Nec Corporation Network management system creating managed object instances which are hierarchically organized in inclusion relation for recursively creating processing object and recuresively returning information
JP2003076706A (ja) * 2001-08-31 2003-03-14 Tsubasa System Co Ltd 統合マスタファイル制御方法、統合マスタファイル制御プログラム及び統合マスタファイル制御装置

Similar Documents

Publication Publication Date Title
US6246404B1 (en) Automatically generating code for integrating context-sensitive help functions into a computer software application
US5812851A (en) Compiler with generic front end and dynamically loadable back ends
US7080350B2 (en) Method for developing Web applications, development support system and storage medium for storing programs developed according to the method
US6411974B1 (en) Method to collate and extract desired contents from heterogeneous text-data streams
US6507855B1 (en) Method and apparatus for extracting data from files
US6324576B1 (en) Management interworking unit and a method for producing such a unit
US6334158B1 (en) User-interactive system and method for integrating applications
US8010844B2 (en) File mutation method and system using file section information and mutation rules
US20030200532A1 (en) System and method for sharing reusable code base
US6263376B1 (en) Generic run-time binding interpreter
JPH0683598A (ja) ジョブフロー仕様書自動作成方法
US6219802B1 (en) System for generating test data
JP2000029674A (ja) アプリケ―ションソフトウェア構成方法
US6546549B2 (en) Source code transformation process and recording medium
JPH08328840A (ja) プログラム合成方法
CN113485686B (zh) 信息系统程序的生成方法、装置、电子设备及存储介质
US20020092001A1 (en) Record medium and method for analyzing a source file
US7437714B1 (en) Category partitioning markup language and tools
JPH06110733A (ja) プログラムのテストケース生成装置
WO1995000902A1 (en) Dynamic browser system
JP2820184B2 (ja) ロードモジュール単体テスト支援装置
Rogerson OpenGL III: Building an OpenGL C++ Class
CN115686489A (zh) 一种飞控系统的传输服务代码的自动生成方法和装置
Nicinski Architecture flow diagrams under Teamwork
JP2003085013A (ja) Pdmシステム、システム接続用プログラム作成方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040309

A02 Decision of refusal

Effective date: 20040629

Free format text: JAPANESE INTERMEDIATE CODE: A02