Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP4702194B2 - プログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラム - Google Patents
[go: Go Back, main page]

JP4702194B2 - プログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラム - Google Patents

プログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラム Download PDF

Info

Publication number
JP4702194B2
JP4702194B2 JP2006172043A JP2006172043A JP4702194B2 JP 4702194 B2 JP4702194 B2 JP 4702194B2 JP 2006172043 A JP2006172043 A JP 2006172043A JP 2006172043 A JP2006172043 A JP 2006172043A JP 4702194 B2 JP4702194 B2 JP 4702194B2
Authority
JP
Japan
Prior art keywords
setting information
program
flow diagram
data flow
arithmetic device
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.)
Active
Application number
JP2006172043A
Other languages
English (en)
Other versions
JP2008003817A (ja
Inventor
寛和 徳田
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.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Holdings 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 Fuji Electric Holdings Ltd filed Critical Fuji Electric Holdings Ltd
Priority to JP2006172043A priority Critical patent/JP4702194B2/ja
Publication of JP2008003817A publication Critical patent/JP2008003817A/ja
Application granted granted Critical
Publication of JP4702194B2 publication Critical patent/JP4702194B2/ja
Anticipated expiration legal-status Critical
Active legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明はプログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラムに関し、特に演算装置固有の拡張機能を利用するプログラムの開発を支援するプログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラムに関する。
現在、自動車や家電機器、産業用機械装置など、さまざまな機器に電子制御のための演算装置が組み込まれている。このような組み込み向けの演算装置は、一般的なコンピュータ向けの演算装置と比べ、処理のリアルタイム性がより強く要求される。例えば、自動車の制御に用いられる演算装置は、走行の安全を確保するために、入力信号を受け取ってから応答するまでの時間をできる限り短くする必要がある。そのため、組み込み向けの演算装置には、処理効率を高めるための拡張機能が用意されている。このような拡張機能は、開発者が明示的に選択することで利用できる機能であり、それぞれの演算装置の種類ごとに異なる演算装置固有の機能である。
ここで、組み込み向け演算装置で実行するプログラムを開発するために、従来は、アセンブラなどの低級言語が用いられてきた。C言語などの高級言語で記述したソースコードを機械可読なオブジェクトコードに変換するコンパイラでは、演算装置固有の拡張機能を利用した処理を扱えなかったためである。このように、組み込み向けプログラムの開発では、高級言語と比べて記述量が多く可読性が低くなりやすい低級言語を使用しなければならず、一般的なコンピュータ向けプログラムの開発よりも多くの開発時間と労力が必要であった。また、演算装置固有の拡張機能を利用する処理のみ低級言語を用いて記述し、その他の処理は高級言語を用いて記述することも可能であるが、この場合には低級言語の記述と高級言語の記述とが混在し、ソースコードの可読性や保守の容易性が低下するという問題もあった。
そこで、近年は、既存の高級言語を拡張して、演算装置固有の拡張機能を利用する処理も高級言語で記述できるようにすることが行われている。例えば、組み込み向け演算装置の製造業者は、独自に拡張したC言語を定義し、拡張したC言語で記述したソースコードをコンパイルできるコンパイラを提供している。このようなコンパイラを利用することで、組み込み向けプログラムを高級言語のみを用いて開発することができ、プログラムの開発効率を大きく向上させることができる。また、拡張した高級言語で記述したソースコードを、従来のコンパイラでコンパイル可能なソースコード(例えば、低級言語の記述と高級言語の記述とが混在したソースコード)に変換する技術も知られている(例えば、特許文献1参照)。このような変換装置を用いても、上記と同様の効果を得られる。
特開平5−127880号公報
ところで、現在、一般的なコンピュータ向けプログラムの開発では、プログラムの自動生成技術が注目を集めている。プログラムの自動生成とは、データフロー図などの設計図から、ソースコードやオブジェクトコードなどの実装コードを生成することである。プログラム自動生成技術を用いることで、開発者が設計図とソースコードの2つを別個に記述する必要がなくなり、プログラムの開発効率をさらに向上させることができる。また、開発者はソースコードよりも理解容易な設計図を管理すればよいため、保守の容易性も向上する。
しかし、従来のプログラム自動生成技術を組み込み向けプログラムの開発に直接適用することができないという問題がある。すなわち、特許文献1記載の技術によれば拡張した高級言語で記述したソースコードをオブジェクトコードに変換可能であるが、従来のプログラム自動生成技術では、このような拡張した高級言語で記述したソースコードを生成できない。一般に、データフロー図などの設計図はハードウェアに関する情報を含まないため、生成されるソースコードは演算装置固有の拡張機能を利用しないものとなるからである。したがって、演算装置固有の拡張機能を利用する場合、開発者は生成したソースコードをその後に修正する必要があり、プログラム自動生成技術がもつ利点を十分に生かすことができない。
本発明はこのような点に鑑みてなされたものであり、設計図として代表的なデータフロー図から、演算装置固有の機能を利用するプログラムの実装コードを生成するプログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラムを提供することを目的とする。
本発明では上記問題を解決するために、演算装置固有の拡張機能を利用するプログラムの開発を支援するプログラム開発支援装置において、前記拡張機能を利用しない複数の実装モジュールから成る演算装置独立ライブラリと、前記拡張機能を利用する複数の前記実装モジュールから成る演算装置依存ライブラリとを記憶するライブラリ記憶手段と、プログラムによるデータ処理を表す機能ブロックと、前記機能ブロック間のデータ受け渡し関係とを記述したデータフロー図を記憶するデータフロー図記憶手段と、ユーザによる操作入力を受け付け、前記データフロー図記憶手段に記憶された前記データフロー図の前記機能ブロックのうち、前記拡張機能を利用する前記機能ブロックを指定する情報を有する設定情報を取得する設定情報取得手段と、前記設定情報取得手段が前記設定情報を取得すると、前記データフロー図記憶手段と前記ライブラリ記憶手段とを参照して、前記設定情報で指定された前記機能ブロックに対しては前記演算装置依存ライブラリ内の対応する前記実装モジュールをそれぞれ適用し、前記設定情報で指定されなかった前記機能ブロックに対しては前記演算装置独立ライブラリ内の対応する前記実装モジュールをそれぞれ適用して、前記データフロー図に応じた実装コードを生成する実装コード生成手段と、を有することを特徴とするプログラム開発支援装置が提供される。
このようなプログラム開発支援装置によれば、設定情報取得手段により、データフロー図の機能ブロックのうち演算装置固有の拡張機能を利用する機能ブロックを指定した設定情報が取得される。そして、実装コード生成手段により、設定情報で指定された機能ブロックに対しては演算装置依存ライブラリ内の対応する実装モジュールが適用され、設定情報で指定されなかった機能ブロックに対しては演算装置独立ライブラリ内の対応する実装モジュールが適用されて、データフロー図に応じた実装コードが生成される。
また、上記問題を解決するために、演算装置固有の拡張機能を利用するプログラムの開発を支援するプログラム開発支援方法において、設定情報取得手段が、ユーザによる操作入力を受け付け、データフロー図記憶手段に記憶された、プログラムによるデータ処理を表す機能ブロックと前記機能ブロック間のデータ受け渡し関係とを記述したデータフロー図の前記機能ブロックのうち、前記拡張機能を利用する前記機能ブロックを指定する情報を有する設定情報を取得し、実装コード生成手段が、前記設定情報取得手段が前記設定情報を取得すると、前記データフロー図記憶手段と、前記拡張機能を利用しない複数の実装モジュールから成る演算装置独立ライブラリと前記拡張機能を利用する複数の前記実装モジュールから成る演算装置依存ライブラリとを記憶するライブラリ記憶手段とを参照して、前記設定情報で指定された前記機能ブロックに対しては前記演算装置依存ライブラリ内の対応する前記実装モジュールをそれぞれ適用し、前記設定情報で指定されなかった前記機能ブロックに対しては前記演算装置独立ライブラリ内の対応する前記実装モジュールをそれぞれ適用して、前記データフロー図に応じた実装コードを生成する、ことを特徴とするプログラム開発支援方法が提供される。
このようなプログラム開発支援方法によれば、データフロー図の機能ブロックのうち演算装置固有の拡張機能を利用する機能ブロックを指定した設定情報が取得される。そして、設定情報で指定された機能ブロックに対しては演算装置依存ライブラリ内の対応する実装モジュールが適用され、設定情報で指定されなかった機能ブロックに対しては演算装置独立ライブラリ内の対応する実装モジュールが適用されて、データフロー図に応じた実装コードが生成される。
また、上記問題を解決するために、演算装置固有の拡張機能を利用するプログラムの開発を支援するプログラム開発支援プログラムにおいて、コンピュータを、前記拡張機能を利用しない複数の実装モジュールから成る演算装置独立ライブラリと、前記拡張機能を利用する複数の前記実装モジュールから成る演算装置依存ライブラリとを記憶するライブラリ記憶手段、プログラムによるデータ処理を表す機能ブロックと、前記機能ブロック間のデータ受け渡し関係とを記述したデータフロー図を記憶するデータフロー図記憶手段、ユーザによる操作入力を受け付け、前記データフロー図記憶手段に記憶された前記データフロー図の前記機能ブロックのうち、前記拡張機能を利用する前記機能ブロックを指定する情報を有する設定情報を取得する設定情報取得手段、前記設定情報取得手段が前記設定情報を取得すると、前記データフロー図記憶手段と前記ライブラリ記憶手段とを参照して、前記設定情報で指定された前記機能ブロックに対しては前記演算装置依存ライブラリ内の対応する前記実装モジュールをそれぞれ適用し、前記設定情報で指定されなかった前記機能ブロックに対しては前記演算装置独立ライブラリ内の対応する前記実装モジュールをそれぞれ適用して、前記データフロー図に応じた実装コードを生成する実装コード生成手段、として機能させることを特徴とするプログラム開発支援プログラムが提供される。
このようなプログラム開発支援プログラムを実行するコンピュータによれば、設定情報取得手段により、データフロー図の機能ブロックのうち演算装置固有の拡張機能を利用する機能ブロックを指定した設定情報が取得される。そして、実装コード生成手段により、設定情報で指定された機能ブロックに対しては演算装置依存ライブラリ内の対応する実装モジュールが適用され、設定情報で指定されなかった機能ブロックに対しては演算装置独立ライブラリ内の対応する実装モジュールが適用されて、データフロー図に応じた実装コードが生成される。
本発明では、設定情報で指定された機能ブロックに対しては演算装置依存ライブラリの実装モジュールを適用し、指定されなかった機能ブロックに対しては演算装置独立ライブラリの実装モジュールを適用して、データフロー図に応じた実装コードを生成することとした。これにより、開発者は、データフロー図から演算装置固有の拡張機能を利用した処理効率の高いプログラムの実装コードを直接かつ容易に生成することができる。したがって、演算装置固有の拡張機能を利用するプログラムの開発効率が大きく向上する。
以下、本発明の実施の形態を図面を参照して詳細に説明する。まず、本発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。
図1は、実施の形態に適用される発明の概念図である。図1に示されるプログラム開発支援装置は、データフロー図とデータフロー図に対する設定情報とから、演算装置固有の拡張機能を利用するプログラムの実装コードを生成するものである。プログラム開発支援装置10は、ライブラリ記憶手段11、データフロー図記憶手段12、設定情報取得手段13および実装コード生成手段14を有する。
ライブラリ記憶手段11は、演算装置独立ライブラリ11aおよび演算装置依存ライブラリ11bを記憶する。演算装置独立ライブラリ11aおよび演算装置依存ライブラリ11bは、それぞれ、複数の実装モジュールから構成される。実装モジュールは、一定のまとまったデータ処理を実現する実装コードの断片である。実装モジュールは、例えば、ソースコードやソースコードをコンパイルした機械可読なオブジェクトコードなどである。
演算装置独立ライブラリ11aは、演算装置の標準機能のみを利用した実装モジュールから構成される。例えば、C言語の標準化された記法のみを用いて記述したソースコードなどである。
演算装置依存ライブラリ11bは、組み込み用演算装置などが有する演算装置固有の拡張機能を利用した実装モジュールから構成される。すなわち、標準機能に代えて拡張機能を利用して処理を実行することを明示的に指定したコードを含む実装モジュールから構成される。例えば、拡張したC言語の記法を用いて記述したソースコードであって、一般的なコンパイラではコンパイル不可能なソースコードなどである。演算装置依存ライブラリ11b内の実装モジュールは、演算装置独立ライブラリ11a内の同一種類の処理を実行する実装モジュールよりも、実行時の処理効率が高い。
データフロー図記憶手段12は、データフロー図2を記憶する。データフロー図2は、機能ブロック2a,2b,2cと、機能ブロック2a,2b,2c間のデータ受け渡し関係とを記述する。機能ブロック2a,2b,2cは、プログラムによる一定のまとまったデータ処理を表す。
設定情報取得手段13は、ユーザの操作入力を受け付け、入力された設定情報4を取得する。設定情報4は、データフロー図記憶手段12に記憶されたデータフロー図2の機能ブロック2a,2b,2cのうち、演算装置固有の拡張機能を利用する機能ブロック2a,2b,2cを指定する情報を有する。例えば、設定情報4は、機能ブロック2bが演算装置固有の拡張機能を利用する機能ブロックである旨の情報を有する。
実装コード生成手段14は、設定情報取得手段13が設定情報4を取得すると、データフロー図記憶手段12からデータフロー図2を取得する。そして、実装コード生成手段14は、設定情報4で指定された機能ブロック(例えば、機能ブロック2b)に対応する実装モジュールを、演算装置依存ライブラリ11bから取得する。また、実装コード生成手段14は、設定情報4で指定されなかった機能ブロック(例えば、機能ブロック2a,2c)に対応する実装モジュールを、演算装置独立ライブラリ11aから取得する。その後、実装コード生成手段14は、データフロー図2の記述に従い取得した実装モジュールを組み合わせて実装コード5を生成する。
このようなプログラム開発支援装置10によれば、設定情報取得手段13により、データフロー図2の機能ブロック2a,2b,2cのうち演算装置固有の拡張機能を利用する機能ブロックを指定する情報を有する設定情報4が取得される。そして、実装コード生成手段14により、設定情報4で指定された機能ブロックに対しては演算装置依存ライブラリ11b内の対応する実装モジュールが適用され、設定情報4で指定されなかった機能ブロックに対しては演算装置独立ライブラリ11a内の対応する実装モジュールが適用されて、実装コード5が生成される。
これにより、開発者は、データフロー図から演算装置固有の拡張機能を利用した処理効率の高いプログラムの実装コードを直接かつ容易に生成することができる。したがって、演算装置固有の拡張機能を利用するプログラムの開発効率が大きく向上する。特に、組み込み向けプログラムの開発効率が大きく向上する。また、データフロー図を用いて効率的にプログラムの保守・管理ができるなど、従来のプログラム自動生成技術の利点を生かすこともできる。
なお、本発明は、設定情報取得手段13が設定情報4を取得した後、実装コード生成手段14に設定情報4を直接渡す場合と、データフロー図記憶手段12にデータフロー図2と対応付けて設定情報4を一旦記憶して使用する場合との両方を含んでいる。以下に説明する実施の形態では、設定情報4をデータフロー図2と対応付けて一旦記憶する場合について説明する。
以下、本発明の実施の形態を、図面を参照して詳細に説明する。本実施の形態は、1つのプログラム開発支援装置100で構成される。開発者は、プログラム開発支援装置100を用いてデータフロー図などを記述し、記述したデータフロー図などからプログラムのソースコードを生成することができる。
図2は、プログラム開発支援装置のハードウェア構成を示す図である。プログラム開発支援装置100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス107を介してRAM(Random Access Memory)102、ハードディスクドライブ(HDD:Hard Disk Drive)103、グラフィック処理装置104および入力インタフェース105が接続されている。
RAM102には、CPU101に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。HDD103には、OSプログラムやアプリケーションプログラムが格納される。
グラフィック処理装置104には、モニタ20が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ20の画面に表示させる。入力インタフェース105には、キーボード31とマウス32とが接続されている。入力インタフェース105は、キーボード31やマウス32から送られてくる信号を、バス107を介してCPU101に送信する。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
次に、プログラム開発支援装置100のモジュール構成について説明する。
図3は、プログラム開発支援装置の機能を示すブロック図である。プログラム開発支援装置100は、ライブラリ記憶部110、設計モデル記憶部120、ソースファイル記憶部130、設計モデル作成部140、設定情報取得部150、設計モデル検査部160およびソースコード生成部170を有する。設計モデル作成部140、設定情報取得部150、設計モデル検査部160およびソースコード生成部170は、キーボード31およびマウス32を通じて開発者からの入力を受け付けることができる。また、設計モデル作成部140、設定情報取得部150、設計モデル検査部160およびソースコード生成部170は、モニタ20の画面に処理結果を表示することができる。
ライブラリ記憶部110は、CPU独立ライブラリ110a、CPU−X依存ライブラリ110bおよびCPU−Y依存ライブラリ110cを有する。CPU独立ライブラリ110a、CPU−X依存ライブラリ110bおよびCPU−Y依存ライブラリ110cは、それぞれ、複数の実装モジュールから構成される。実装モジュールは、プログラムによる一定のまとまった処理を記述したソースコードの断片であり、1つ以上の関数で構成される。プログラムの実行時には、この関数が呼び出されることで、所定のデータ処理を実行する。
CPU独立ライブラリ110a、CPU−X依存ライブラリ110bおよびCPU−Y依存ライブラリ110c内の実装モジュールには、それぞれモジュール名が割り振られている。モジュール名は、その実装モジュールが実現するデータ処理の内容を識別する識別情報である。例えば、“絶対値”や“リミッタ”などのモジュール名が実装モジュールに割り振られる。
CPU独立ライブラリ110aは、演算装置固有の拡張機能を利用しない実装モジュールから構成される。例えば、標準化されたC言語の記法のみを用いて記述したソースコードなどである。一方、CPU−X依存ライブラリ110bは、“CPU−X”という種類の演算装置に固有の拡張機能を利用した実装モジュールから構成される。例えば、“CPU−X”向けに拡張されたC言語の記法を用いて記述したソースコードなどである。同様に、CPU−Y依存ライブラリ110cは、“CPU−Y”という種類の演算装置に固有の拡張機能を利用した実装モジュールから構成される。
CPU独立ライブラリ110aは、プログラム開発支援装置100が開発対象とするプログラムにおいて必要となる全てのデータ処理に対応する実装モジュールを有している。一方、CPU−X依存ライブラリ110bおよびCPU−Y依存ライブラリ110cは、CPU独立ライブラリ110a内の実装モジュールの一部に対応する実装モジュールを有している。すなわち、演算装置固有の拡張機能を利用することで処理効率を向上させることができるデータ処理についての実装モジュールのみ有している。したがって、“CPU−X”や“CPU−Y”向けのプログラムを開発する場合でも、演算装置固有の拡張機能を利用しないデータ処理については、CPU独立ライブラリ110a内の実装モジュールを使用すればよい。
例えば、CPU独立ライブラリ110aは実装モジュール“絶対値”と実装モジュール“リミッタ”とを有し、CPU−X依存ライブラリ110bは実装モジュール“リミッタ”を有し、CPU−Y依存ライブラリ110cは実装モジュール“絶対値”を有する。
なお、“CPU−X”および“CPU−Y”以外の種類の演算装置を扱えるようにプログラム開発支援装置100を拡張する場合、ライブラリ記憶部110にライブラリを追加すればよい。例えば、ライブラリ記憶部110に、“CPU−Z依存ライブラリ”を追加すればよい。
設計モデル記憶部120は、プログラム構造図およびデータフロー図を記述したファイルをそれぞれ記憶する。プログラム構造図は、プログラムの構成要素を階層的に記述した木構造グラフである。例えば、プログラム実行単位、ソースファイル、メイン関数、サブルーチンなどの構成要素を木構造で表現したものである。一方、データフロー図は、プログラムによるデータ処理を表す機能ブロックと、機能ブロック間のデータ受け渡し関係とを記述した有向グラフである。
ソースファイル記憶部130は、生成されたソースコードが記述されたソースファイルを格納する。
設計モデル作成部140は、開発者の操作入力に基づいてプログラム構造図とデータフロー図とを作成する。ここで、設計モデル作成部140は、開発者によるプログラム構造図およびデータフロー図の作図を視覚的に支援する。例えば、モニタ20の画面に表示されたボタンを押すことで、描画領域に機能ブロックなどが配置されるようにする。そして、設計モデル作成部140は、作成したプログラム構造図とデータフロー図とを、それぞれファイルに保存し設計モデル記憶部120に格納する。
設定情報取得部150は、開発者の操作入力を受け付け、プログラム構造図およびデータフロー図に対する設定情報を取得する。設定情報は、演算装置固有の拡張機能を利用する機能ブロックまたはプログラム実行単位を指定する情報と、その拡張機能をもつ演算装置の種類を特定する情報とから構成される。ここで、設定情報取得部150は、設計モデル作成部140と同様、設定情報の入力を視覚的に支援する。そして、設定情報取得部150は、取得した設定情報をプログラム構造図およびデータフロー図と関連付けて、設計モデル記憶部120に格納する。
設計モデル検査部160は、開発者から検査開始の指示を受け取ると、設計モデル記憶部120に格納されたプログラム構造図とデータフロー図とに基づいて、設定情報の記述に矛盾がないか検査する。具体的には、それぞれのプログラム実行単位の中で、異なる種類の演算装置が指定されていないか調べる。そして、設計モデル検査部160は、検査結果をモニタ20に表示する。また、設計モデル検査部160は、ソースコード生成部170から指示を受けた場合も、同様の検査を行う。
ソースコード生成部170は、開発者から生成開始の指示を受け取ると、まず設計モデル検査部160に設定情報の検査を指示する。ここで、設計モデル検査部160から検査失敗の結果を取得した場合、ソースコード生成部170はソースコードの生成を行わない。検査成功の結果を取得した場合、ソースコード生成部170は、設計モデル検査部160を介して設計モデル記憶部120に格納されたプログラム構造図とデータフロー図とを取得し、ソースコードを生成する。
具体的には、ソースコード生成部170は、データフロー図のそれぞれの機能ブロックに対応する実装モジュールをライブラリ記憶部110から取得し、取得した実装モジュールをデータフロー図に記述されたデータ受け渡し関係に従って組み合わせることで、ソースコードを生成する。そして、ソースコード生成部170は、生成したソースコードをファイルに保存してソースファイル記憶部130に格納する。また、ソースコード生成部170は、ソースコードの生成が完了した旨をモニタ20に表示する。
開発者は、生成されたソースコードをコンパイルし他のオブジェクトコードとリンクすることで、実行可能な形式のロードモジュールを作成できる。ここで、生成されたソースコードをコンパイルするには、拡張された高級言語を理解可能なコンパイラを用いる必要がある。
なお、本実施の形態では、ライブラリ記憶部110が記憶する実装モジュールの形式をソースコードとしたが、予めコンパイルしたオブジェクトコードとしてもよい。この場合、プログラム開発支援装置100は、ソースコードのファイルとオブジェクトコードのファイルの2種類のファイルを生成する。
図4は、ソースコードの生成に使用されるプログラム構造図の例である。プログラム構造図ファイル121は、設計モデル記憶部120に格納されている。プログラム構造図ファイル121には、プロジェクトノード121a、モジュールノード121b,121gおよび関数ノード121c,121d,121e,121f,121h,121i,121jから成るプログラム構造図が記述されている。
プロジェクトノードは、プログラムの実行単位を表すノードである。プロジェクトノード以下のノードは、そのプログラムの構成要素を意味する。プロジェクトノードには、プログラムを識別するためのプロジェクト名が付加される。例えば、プロジェクトノード121aのプロジェクト名は“インバータ制御”である。プロジェクトノードは、1つ以上のモジュールノードを子要素としてもつ。
モジュールノードは、1つのソースファイルに対応するノードである。モジュールノードには、ソースファイルを識別するためのモジュール名が付加される。例えば、モジュールノード121bのモジュール名は“入力制御”である。モジュールノードは、1つ以上の関数ノードを子要素としてもつ。
関数ノードは、1つの関数に対応するノードである。親要素であるモジュールノードに対応するソースファイル中にその関数が記述されることを意味する。関数ノードには、関数を識別するための関数名が付加される。例えば、関数ノード121cの関数名は“電流制御”である。関数ノードは、別の関数ノードを子要素としてもつ場合がある。これは、親要素に対応する関数が、処理の実行中に子要素に対応する関数を呼び出すことを意味する。
上記のプログラム構造図は、開発者の操作入力に基づいて設計モデル作成部140が作成する。このようなプログラム構造図を用いることで、開発者は、プログラムの全体構成を容易に理解することができる。例えば、図4に示したプログラム構造図は、プロジェクト“インバータ制御”がソースファイル“入力制御”とソースファイル“故障検出”とから構成され、ソースファイル“入力制御”には、関数“電流制御”と関数“直流電圧制御”とが記述されることを意味する。
図5は、ソースコードの生成に使用されるデータフロー図の例である。データフロー図ファイル122は、設計モデル記憶部120に格納されている。
データフロー図は、それぞれの関数で実行される処理の流れを記述したものである。1つのデータフロー図は、プログラム構造図における1つの関数ノードに対応する。図5に示したデータフロー図は、図4に示したプログラム構造図の関数ノード121cに対応するデータフロー図であり、“電流制御”の処理を記述したものである。
データフロー図ファイル122には、開始ブロック122a,122b、通常ブロック122c,122d,122e,122f,122g,122h,122iおよび終端ブロック122jが記述されている。そして、矢印線によって、これら機能ブロック間のデータ入出力関係が記述されている。
開始ブロックは、処理の開始時に関数の外部から与えられる入力値を意味する。1つのデータフロー図につき、1つ以上の開始ブロックが記述される。図5に示したデータフロー図では、処理の開始時に2つの入力値(開始ブロック122aおよび開始ブロック122bに対応する入力値)が与えられている。
通常ブロックは、一定のまとまったデータ処理を意味する。それぞれの通常ブロックでは、矢印線に沿って入力されるデータに基づいて、矢印線に沿って出力されるデータが計算される。例えば、通常ブロック122cでは、開始ブロック122aで与えられる入力値に基づいて、通常ブロック122dに対して出力するデータが計算される。また、通常ブロック122gでは、通常ブロック122dから出力されるデータと通常ブロック122fから出力されるデータとに基づいて、通常ブロック122hに対して出力するデータが計算される。
それぞれの通常ブロックには、データ処理を識別するためのブロック名が付加される。例えば、通常ブロック122dのブロック名は“絶対値”である。なお、データフロー図が表す関数がさらに他の関数を呼び出す場合、呼び出される関数を1つの通常ブロックとして表現することができる。その場合、呼び出される関数に対応する通常ブロックには、呼び出される関数の関数名がブロック名として付加される。
終端ブロックは、処理の終了時に関数の外部へと出力される戻り値を意味する。1つのデータフロー図につき、1つ以上の終端ブロックが記述される。図5に示したデータフロー図では、通常ブロック122iが出力したデータが最終的な戻り値として出力されている。
上記のデータフロー図は、開発者の操作入力に基づいて設計モデル作成部140が作成する。このようなデータフロー図を用いることで、開発者は、関数の内部で実行される処理の流れを容易に理解することができる。
次に、設計モデル作成部140および設定情報取得部150がモニタ20に表示する入力画面および設定画面について説明する。
図6は、プログラム構造図およびデータフロー図の入力画面例を示す第1の図である。入力画面21は、描画領域21a,21bおよび選択ボタン21c,21d,21e,21f,21gを有する。入力画面21は、設計モデル作成部140によって表示される画面である。
描画領域21aは、プログラム構造図を記述するための描画領域である。プログラム開発を開始した時点では、1つのプロジェクトノードが描画領域21aに配置されている。ここで、開発者が選択ボタン21cを押すと、新たなモジュールノードが描画領域21aに配置される。また、描画領域21aで1つのモジュールノードまたは関数ノードが選択されている状態で選択ボタン21dを押すと、選択されているノードの子要素として新たな関数ノードが描画領域21aに配置される。このようにして、開発者はプログラム構造図を記述することができる。
描画領域21bは、データフロー図を記述するための描画領域である。描画領域21aに配置された1つの関数ノードが選択されると、選択された関数ノードに対応するデータフロー図が描画領域21bに表示される。ここで、開発者が選択ボタン21eを押すと、新たな開始ブロックが描画領域21bに配置される。同様に、開発者が選択ボタン21fを押すと、新たな通常ブロックが描画領域21bに配置される。開発者が選択ボタン21gを押すと、新たな終端ブロックが描画領域21bに配置される。このようにして、開発者はデータフロー図を記述することができる。
ここで、描画領域21aに配置されたプロジェクトノードが選択されると、プロジェクトノードについての設定画面が表示される。
図7は、プロジェクトノードに対する設定画面例を示す図である。設定画面22は、入力領域22a,22bおよびボタン22c,22dを有する。設定画面22は、設定情報取得部150によって表示される画面である。
入力領域22aは、プロジェクト名を入力するための入力領域である。既にプロジェクト名を設定済みの場合には、設定されたプロジェクト名を編集することができる。
入力領域22bは、演算装置の種類名を入力するための入力領域である。開発対象のプログラムが、ここで設定された種類の演算装置で実行される予定であることを意味する。なお、特定の種類の演算装置で実行する予定がない場合には、入力領域22bを空欄にするか、“なし”と入力しておく。
ボタン22cは、入力内容を確定するためのボタンである。ボタン22cが押されると、設定情報取得部150は、入力領域22a,22bに入力された情報を設計モデル記憶部120に格納すると共に、モニタ20に表示されているプログラム構造図にこれらの情報を反映させる。また、ボタン22dは、入力領域22a,22bに入力された情報を破棄するためのボタンである。
プロジェクトノードと同様に、図6に示した入力画面21の描画領域21bに配置された通常ブロックが選択されると、通常ブロックについての設定画面が表示される。
図8は、機能ブロックに対する設定画面例を示す図である。設定画面23は、入力領域23a,23bおよびボタン23c,23dを有する。設定画面23は、設定情報取得部150によって表示される画面である。
入力領域23aは、選択された通常ブロックのブロック名を入力するための入力領域である。既にブロック名を設定済みの場合には、設定されたブロック名を編集することができる。
入力領域23bは、演算装置の種類名を入力するための入力領域である。選択された機能ブロックが、ここで設定された種類の演算装置の拡張機能を利用することを意味する。なお、演算装置固有の拡張機能を利用しない場合には、入力領域23bを空欄にするか、“なし”と入力しておく。
ボタン23cは、入力内容を確定するためのボタンである。ボタン23cが押されると、設定情報取得部150は、入力領域23a,23bに入力された情報を設計モデル記憶部120に格納すると共に、モニタ20に表示されているデータフロー図にこれらの情報を反映させる。また、ボタン23dは、入力領域23a,23bに入力された情報を破棄するためのボタンである。
図9は、プログラム構造図およびデータフロー図の入力画面例を示す第2の図である。入力画面24は、設定画面22,23により設定情報が入力された後に表示される画面であり、図6に示した入力画面21のプログラム構造図とデータフロー図に設定情報が反映された状態の画面である。
プログラム構造図のプロジェクトノードには、プロジェクト名と共に、設定画面22で入力された演算装置の種類名が付加される。例えば、プロジェクトノード24aは、“インバータ制御”というプログラムが“CPU−X”という種類の演算装置で実行される予定であることを表している。このように、プログラム構造図と共に設定情報が表示されることで、開発者は、開発中のプログラムと演算装置との依存関係を直感的に理解することができる。
データフロー図の機能ブロックには、ブロック名と共に、設定画面23で入力された演算装置の種類名が付加される。例えば、通常ブロック24cは、“リミッタ”というデータ処理が“CPU−X”という種類の演算装置の拡張機能を利用することを表している。一方、設定画面23で演算装置の種類名が入力されなかった機能ブロックには、演算装置の種類名が表示されない。例えば、通常ブロック24bは、“絶対値”というデータ処理が演算装置固有の拡張機能を利用しないことを表している。このように、データフロー図と共に設定情報が表示されることで、開発者は、一連のデータ処理の中で演算装置固有の拡張機能が利用される部分を的確かつ容易に把握することができる。
このようにして、開発者は、入力画面21,24および設定画面22,23を用いて、プログラム構造図とデータフロー図とを記述し、設定情報を入力することができる。なお、本実施の形態では入力画面21,24と設定画面22,23をそれぞれ別個の画面としたが、これらを1つの画面として構成してもよい。
また、本実施の形態では、データフロー図の機能ブロックに付加する演算装置の種類名は、設定画面22,23で入力した内容を用いることとしたが、ライブラリ記憶部110から取得した情報を用いてもよい。この場合、設定画面22,23では演算装置の種類を一意に識別する簡易的な識別情報を入力または選択するようにし、データフロー図の機能ブロックにはライブラリ記憶部110から取得した対応する正式名称を表示することも可能である。
次に、以上のような装置構成および入力データのもとで実行される処理の詳細を説明する。はじめに、プロジェクトノードおよび機能ブロックに対して設定された設定情報の検査処理について説明する。
図10は、設定情報検査の処理手順を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
[ステップS11]設計モデル検査部160は、検査処理の開始を指示する入力を受け取ると、設計モデル記憶部120に格納されたプログラム構造図、データフロー図および設定情報を取得する。
[ステップS12]設計モデル検査部160は、ステップS11で取得したプログラム構造図のプロジェクトノード対して、演算装置の種類名が設定されているか判断する。演算装置の種類名が設定されている場合には、処理がステップS13へ進められる。演算装置の種類名が設定されていない場合には、処理がステップS14へ進められる。
[ステップS13]設計モデル検査部160は、プロジェクトノードに対して設定されている演算装置の種類名を、対象演算装置名に指定する。
[ステップS14]設計モデル検査部160は、ステップS11で取得したデータフロー図の通常ブロックのうち、未選択の通常ブロックを1つ選択する。
[ステップS15]設計モデル検査部160は、ステップS14で選択した通常ブロックに対して演算装置の種類名が設定されているか判断する。演算装置の種類名が設定されている場合には、処理がステップS16へ進められる。演算装置の種類名が設定されていない場合には、処理がステップS19へ進められる。
[ステップS16]設計モデル検査部160は、この検査処理において、対象演算装置名が既に指定されているか判断する。対象演算装置名が指定されている場合には、処理がステップS17へ進められる。対象演算装置名が指定されていない場合には、処理がステップS18へ進められる。
[ステップS17]設計モデル検査部160は、ステップS14で選択した通常ブロックに対して設定されている演算装置の種類名が、対象演算装置名と同一か否か判断する。同一である場合には、処理がステップS19へ進められる。同一でない場合には、処理がステップS20へ進められる。
[ステップS18]設計モデル検査部160は、ステップS14で選択した通常ブロックに対して設定されている演算装置の種類名を、対象演算装置名に指定する。
[ステップS19]設計モデル検査部160は、ステップS11で取得したデータフロー図の通常ブロックのうち、ステップS14で未選択の通常ブロックがあるか判断する。未選択の通常ブロックがある場合には、処理がステップS14へ進められる。未選択の通常ブロックがない場合には、処理がステップS21へ進められる。
[ステップS20]設計モデル検査部160は、検査処理に失敗した旨のエラー出力を行う。
[ステップS21]設計モデル検査部160は、検査処理に成功した旨の出力を行う。
このようにして、設計モデル検査部160は、検査処理の開始の指示があると、設定情報で指定された演算装置の種類が全て同一か検査する。具体的には、設計モデル検査部160は、プロジェクトノードに対して演算装置の種類名が設定されている場合には、プロジェクトノードとそれぞれの機能ブロックとの間で、演算装置の種類の一致を検査する。プロジェクトノードに対して演算装置の種類名が設定されていない場合には、機能ブロック間で、演算装置の種類の一致を検査する。
これにより、複数人の開発者でプログラム開発を行う場合などに発生しがちな設定情報の矛盾を、自動的に検出することができる。
なお、設計モデル検査部160は、開発者の明示の指示に基づいて上記の検査処理を行うときは、処理結果をモニタ20に表示する。一方、設計モデル検査部160は、ソースコードの生成前にソースコード生成部170からの指示に基づいて上記の検査処理を行うときは、処理結果をモニタ20に表示すると共に、ソースコード生成部170に処理結果を通知する。このとき、検査処理に成功した場合は、設計モデル記憶部120に格納されたプログラム構造図、データフロー図および設定情報を、処理結果の通知と併せてソースコード生成部170に渡す。
次に、プログラム構造図とデータフロー図とからソースコードを生成する処理について説明する。
図11は、ソースコード生成の処理手順を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
[ステップS31]ソースコード生成部170は、設計モデル検査部160から受け取ったプログラム構造図のモジュールノードのうち、未選択のモジュールノードを1選択する。そして、ソースコード生成部170は、選択したモジュールノードに対応するコード記憶領域を確保する。
[ステップS32]ソースコード生成部170は、ステップS31で選択したモジュールノードに属する関数ノードのうち、未選択の関数ノードを1つ選択する。そして、ソースコード生成部170は、選択した関数ノードに対応する関数宣言文を作成し、ステップS31で確保したコード記憶領域に追加する。
[ステップS33]ソースコード生成部170は、ステップS32で選択した関数ノードに対応するデータフロー図の通常ブロックのうち、開始ノードから近い順に未選択の通常ブロックを1つ選択する。すなわち、必要な全ての入力データを計算するコードが既に生成されている通常ブロックを1つ選択する。
[ステップS34]ソースコード生成部170は、ステップS33で選択した機能ブロックが、プログラム構造図で定義された他の関数を呼び出す機能ブロックか判断する。他の関数を呼び出す機能ブロックでない場合には、処理がステップS35へ進められる。他の関数を呼び出す機能ブロックである場合には、処理がステップS36へ進められる。
[ステップS35]ソースコード生成部170は、ステップS33で選択した機能ブロックに対応する関数呼び出し文を作成し、ステップS31で確保したコード記憶領域に追加する。ここで、関数呼び出し文の関数名には、選択した機能ブロックのブロック名を用いる。関数呼び出し文の引数には、データフロー図で他の機能ブロックから受け渡されるデータを用いる。
[ステップS36]ソースコード生成部170は、ステップS33で選択した機能ブロックに対応する関数呼び出し文を作成し、ステップS31で確保したコード記憶領域に追加する。ここで、関数呼び出し文の関数名には、選択した機能ブロックが表す関数に対応する関数ノードの関数名を用いる。関数呼び出し文の引数には、データフロー図で他の機能ブロックから受け渡されるデータを用いる。
[ステップS37]ソースコード生成部170は、ステップS32で選択した関数ノードに対応するデータフロー図の通常ブロックのうち、ステップS33で未選択の通常ブロックがあるか判断する。未選択の通常ブロックがある場合には、処理がステップS33へ進められる。未選択の通常ブロックがない場合には、処理がステップS38へ進められる。
[ステップS38]ソースコード生成部170は、ステップS32で選択した関数ノードに対応する関数の戻り値の出力文を作成し、ステップS31で確保したコード記憶領域に追加する。ここで、関数の戻り値は、データフロー図の終端ブロックに隣接する通常ブロックからの出力データを用いる。
[ステップS39]ソースコード生成部170は、ステップS31で選択したモジュールノードに属する関数ノードのうち、ステップS32で未選択の関数ノードがあるか判断する。未選択の関数ノードがある場合には、処理がステップS32へ進められる。未選択の関数ノードがない場合には、処理がステップS40へ進められる。
[ステップS40]ソースコード生成部170は、ステップS35で呼び出し文を作成した全ての関数に対応する実装モジュールをライブラリ記憶部110から取得し、取得した実装モジュールのコードをステップS31で確保したコード記憶領域に追加する。ここで、対応する実装モジュールとは、ステップS33で選択した機能ブロックのブロック名と同一のモジュール名を有する実装モジュールである。ただし、ソースコード生成部170は、選択した機能ブロックに演算装置の種類名が設定されていない場合には、CPU独立ライブラリ110a内の実装モジュールを使用し、選択した機能ブロックに演算装置の種類名が設定されている場合には、その演算装置の種類に対応するライブラリ内の実装モジュールを使用する。
[ステップS41]ソースコード生成部170は、ステップS31で確保したコード記憶領域にあるコードをファイルに出力し、ソースファイル記憶部130に格納する。
[ステップS42]ソースコード生成部170は、プログラム構造図のモジュールノードのうち、ステップS31で未選択のモジュールノードがあるか判断する。未選択のモジュールノードがある場合には、処理がステップS31に進められる。未選択のモジュールノードがない場合には、処理がソースコード生成処理を終了する。
このようにして、ソースコード生成部170は、プログラム構造図のモジュールノードごとにソースファイルを出力し、ソースファイル記憶部130に格納する。ここで、データフロー図の通常ブロックには、演算装置固有の拡張機能を利用するか否かに応じて、適切な実装モジュールが適用される。適用された実装モジュールのコードは、出力されるソースファイルに直接埋め込まれる。
次に、以上のような処理によって生成されるソースコードについて説明する。本実施の形態で生成されるソースコードは、拡張したC言語で記述されたものである。
図12は、生成されるソースコード例を示す図である。ソースファイル131は、ソースファイル記憶部130に格納されている。ソースファイル131は、図4に示したプログラム構造図のモジュールノード121bに対応するソースファイルである。
関数宣言文131aは、図4に示したプログラム構造図の関数ノード121cに対応する関数の宣言文である。関数宣言文131aでは、図5に示したデータフロー図に記載の通り、2つの引数を有している。
関数呼び出し文131bは、図5に示したデータフロー図の通常ブロック122cに対応したものであり、引数の入力値“in_1”を関数に与えて出力データ“out_a”を取得する。また、関数呼び出し文131cは、通常ブロック122dに対応したものであり、入力データ“out_a”を関数に与えて出力データ“out_b”を取得する。このように、関数の内部では、データフロー図に記述されたデータ受け渡し関係に従ってデータ処理が進められる。
同様に、関数呼び出し文131dは、通常ブロック122hに対応する関数呼び出し文である。ただし、図9の入力画面24で示した通り、通常ブロック122hには演算装置の種類名“CPU−X”が設定されているため、関数呼び出し文131dで呼び出される関数は、種類名“CPU−X”の演算装置に固有の拡張機能を利用した処理を行う。なお、関数呼び出し文は、演算装置固有の拡張機能を利用する関数か否かによる差異はない。
関数131eは、関数呼び出し文131cで呼び出される関数であり、実装モジュールのコードがそのまま埋め込まれたものである。関数131eは、CPU独立ライブラリ110a内の実行モジュールのコードである。
同様に、関数131fは、関数呼び出し文131dで呼び出される関数であり、実装モジュールのコードがそのまま埋め込まれたものである。ただし、関数131fは、CPU−X依存ライブラリ110b内の実行モジュールのコードである。
なお、本実施の形態では拡張したC言語で記述されたソースコードを生成したが、本実施の形態に係るプログラム開発支援装置は特定のプログラミング言語に特化したものではなく、他のプログラミング言語への応用も容易に行える。
このようなプログラム開発支援装置を用いることで、開発者は、プログラム構造図とデータフロー図とから演算装置固有の拡張機能を利用した処理効率の高いプログラムのソースコードを直接かつ容易に生成することができる。したがって、演算装置固有の拡張機能を利用するプログラムの開発効率が大きく向上する。このようなプログラム開発支援装置は、特に、組み込み向けプログラムの開発に有用である。
また、開発者は、ソースコードよりも理解容易なプログラム構造図とデータフロー図とを用いてプログラムの保守・管理ができるため、保守・管理の負担も大きく軽減される。特に、開発者は、プログラム全体の中で演算装置固有の拡張機能が利用されている部分を的確に把握できるため、設計モデルの修正も容易であり、既存の設計モデルを利用して他の演算装置向けのプログラムを開発することも容易である。
さらに、ソースコードの生成前に設定情報に矛盾がないか検査が行われるため、異なる演算装置向けのライブラリを組み合わせることによるプログラムの不具合を未然に防止できる。このような検査機能は、特に、複数の開発者が分担して開発を行うような大規模プログラムの開発において有益である。
以上、本発明のプログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラムを、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
また、本発明は、前述した実施の形態のうちの、任意の2以上の構成(特徴)を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、プログラム開発支援装置100が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどが挙げられる。磁気記録装置としては、例えば、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどが挙げられる。光ディスクとしては、例えば、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などが挙げられる。光磁気記録媒体としては、例えば、MO(Magneto-Optical disk)などが挙げられる。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラム開発支援プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
実施の形態に適用される発明の概念図である。 プログラム開発支援装置のハードウェア構成を示す図である。 プログラム開発支援装置の機能を示すブロック図である。 ソースコードの生成に使用されるプログラム構造図の例である。 ソースコードの生成に使用されるデータフロー図の例である。 プログラム構造図およびデータフロー図の入力画面例を示す第1の図である。 プロジェクトノードに対する設定画面例を示す図である。 機能ブロックに対する設定画面例を示す図である。 プログラム構造図およびデータフロー図の入力画面例を示す第2の図である。 設定情報検査の処理手順を示すフローチャートである。 ソースコード生成の処理手順を示すフローチャートである。 生成されるソースコード例を示す図である。
符号の説明
2 データフロー図
2a,2b,2c 機能ブロック
4 設定情報
5 実装コード
10 プログラム開発支援装置
11 ライブラリ記憶手段
11a 演算装置独立ライブラリ
11b 演算装置依存ライブラリ
12 データフロー図記憶手段
13 設定情報取得手段
14 実装コード生成手段

Claims (7)

  1. 演算装置固有の拡張機能を利用するプログラムの開発を支援するプログラム開発支援装置において、
    前記拡張機能を利用しない複数の実装モジュールから成る演算装置独立ライブラリを記憶し、前記拡張機能を利用する複数の前記実装モジュールから成る演算装置依存ライブラリを前記拡張機能をもつ演算装置の種類ごとに記憶するライブラリ記憶手段と、
    プログラムによるデータ処理を表す機能ブロックと、前記機能ブロック間のデータ受け渡し関係とを記述したデータフロー図を記憶するデータフロー図記憶手段と、
    ユーザによる操作入力を受け付け、前記データフロー図記憶手段に記憶された前記データフロー図の前記機能ブロックのうち、前記拡張機能を利用する前記機能ブロックを指定する情報と、指定したそれぞれの前記機能ブロックと対応付けて、前記機能ブロックが利用する前記拡張機能をもつ演算装置の種類を特定する情報と、を有する設定情報を取得する設定情報取得手段と、
    前記設定情報取得手段が前記設定情報を取得すると、前記設定情報で特定される演算装置の種類が、指定された全ての前記機能ブロックについて同一か否か判定し、同一でない場合にはエラー出力を行う設定情報検査手段と、
    前記設定情報取得手段が前記設定情報を取得すると、前記データフロー図記憶手段と前記ライブラリ記憶手段とを参照して、前記設定情報で指定された前記機能ブロックに対しては前記設定情報で特定される演算装置の種類に対応する前記演算装置依存ライブラリ内の対応する前記実装モジュールをそれぞれ適用し、前記設定情報で指定されなかった前記機能ブロックに対しては前記演算装置独立ライブラリ内の対応する前記実装モジュールをそれぞれ適用して、前記データフロー図に応じた実装コードを生成する実装コード生成手段と、
    を有し、
    前記実装コード生成手段は、前記設定情報検査手段が前記エラー出力を行ったときは前記実装コードの生成を行わない、
    ことを特徴とするプログラム開発支援装置。
  2. 演算装置固有の拡張機能を利用するプログラムの開発を支援するプログラム開発支援装置において、
    前記拡張機能を利用しない複数の実装モジュールから成る演算装置独立ライブラリを記憶し、前記拡張機能を利用する複数の前記実装モジュールから成る演算装置依存ライブラリを前記拡張機能をもつ演算装置の種類ごとに記憶するライブラリ記憶手段と、
    プログラムによるデータ処理を表す機能ブロックと、前記機能ブロック間のデータ受け渡し関係とを記述した複数のデータフロー図と、プログラム実行単位ごとに前記データフロー図を分類するプログラム構造情報と、を記憶するデータフロー図記憶手段と、
    ユーザによる操作入力を受け付け、前記データフロー図記憶手段に記憶された前記データフロー図の前記機能ブロックのうち、前記拡張機能を利用する前記機能ブロックを指定する情報と、指定したそれぞれの前記機能ブロックと対応付けて、前記機能ブロックが利用する前記拡張機能をもつ演算装置の種類を特定する情報と、前記データフロー図記憶手段に記憶された前記プログラム構造情報で示される前記プログラム実行単位のうち、前記拡張機能を利用する前記プログラム実行単位を指定する情報と、指定した前記プログラム実行単位が利用する前記拡張機能をもつ演算装置の種類を特定する情報と、を有する設定情報を取得する設定情報取得手段と、
    前記設定情報取得手段が前記設定情報を取得すると、前記データフロー図記憶手段を参照して、前記プログラム実行単位について前記設定情報で特定される演算装置の種類が、前記プログラム実行単位に属する前記データフロー図の前記機能ブロックについて前記設定情報で特定される演算装置の種類と同一か否か判定し、同一でない場合にはエラー出力を行う設定情報検査手段と、
    前記設定情報取得手段が前記設定情報を取得すると、前記データフロー図記憶手段と前記ライブラリ記憶手段とを参照して、前記設定情報で指定された前記機能ブロックに対しては前記設定情報で特定される演算装置の種類に対応する前記演算装置依存ライブラリ内の対応する前記実装モジュールをそれぞれ適用し、前記設定情報で指定されなかった前記機能ブロックに対しては前記演算装置独立ライブラリ内の対応する前記実装モジュールをそれぞれ適用して、前記データフロー図に応じた実装コードを生成する実装コード生成手段と、
    を有し、
    前記実装コード生成手段は、前記設定情報検査手段が前記エラー出力を行ったときは前記実装コードの生成を行わない、
    ことを特徴とするプログラム開発支援装置。
  3. 前記データフロー図の前記機能ブロックには、前記機能ブロックによるデータ処理の内容を識別するブロック名がそれぞれ付加されており、
    前記ライブラリ記憶手段に記憶された前記実装モジュールには、前記実装モジュールによるデータ処理の内容を識別するモジュール名がそれぞれ付加されており、
    前記実装コード生成手段は、前記ブロック名と一致する前記モジュール名の前記実装モジュールを、それぞれの前記機能ブロックに適用すべき前記実装モジュールと決定する、
    ことを特徴とする請求項1又は2記載のプログラム開発支援装置。
  4. 演算装置固有の拡張機能を利用するプログラムの開発を支援するプログラム開発支援方法において、
    設定情報取得手段が、ユーザによる操作入力を受け付け、データフロー図記憶手段に記憶された、プログラムによるデータ処理を表す機能ブロックと前記機能ブロック間のデータ受け渡し関係とを記述したデータフロー図の前記機能ブロックのうち、前記拡張機能を利用する前記機能ブロックを指定する情報と、指定したそれぞれの前記機能ブロックと対応付けて、前記機能ブロックが利用する前記拡張機能をもつ演算装置の種類を特定する情報と、を有する設定情報を取得し、
    設定情報検査手段が、前記設定情報取得手段が前記設定情報を取得すると、前記設定情報で特定される演算装置の種類が、指定された全ての前記機能ブロックについて同一か否か判定し、同一でない場合にはエラー出力を行い、
    実装コード生成手段が、前記設定情報検査手段が前記エラー出力を行わない場合は、前記データフロー図記憶手段と、前記拡張機能を利用しない複数の実装モジュールから成る演算装置独立ライブラリを記憶し前記拡張機能を利用する複数の前記実装モジュールから成る演算装置依存ライブラリを前記拡張機能をもつ演算装置の種類ごとに記憶するライブラリ記憶手段とを参照して、
    前記設定情報で指定された前記機能ブロックに対しては前記設定情報で特定される演算装置の種類に対応する前記演算装置依存ライブラリ内の対応する前記実装モジュールをそれぞれ適用し、前記設定情報で指定されなかった前記機能ブロックに対しては前記演算装置独立ライブラリ内の対応する前記実装モジュールをそれぞれ適用して、前記データフロー図に応じた実装コードを生成し、
    前記実装コード生成手段が、前記設定情報検査手段が前記エラー出力を行った場合は、前記実装コードの生成を行わない、
    ことを特徴とするプログラム開発支援方法。
  5. 演算装置固有の拡張機能を利用するプログラムの開発を支援するプログラム開発支援方法において、
    設定情報取得手段が、ユーザによる操作入力を受け付け、データフロー図記憶手段に記憶された、プログラムによるデータ処理を表す機能ブロックと前記機能ブロック間のデータ受け渡し関係とを記述した複数のデータフロー図の前記機能ブロックのうち、前記拡張機能を利用する前記機能ブロックを指定する情報と、指定したそれぞれの前記機能ブロックと対応付けて、前記機能ブロックが利用する前記拡張機能をもつ演算装置の種類を特定する情報と、前記データフロー図記憶手段に記憶された、プログラム実行単位ごとに前記データフロー図を分類するプログラム構造情報で示される前記プログラム実行単位のうち、前記拡張機能を利用する前記プログラム実行単位を指定する情報と、指定した前記プログラム実行単位が利用する前記拡張機能をもつ演算装置の種類を特定する情報と、を有する設定情報を取得し、
    設定情報検査手段が、前記設定情報取得手段が前記設定情報を取得すると、前記データフロー図記憶手段を参照して、前記プログラム実行単位について前記設定情報で特定される演算装置の種類が、前記プログラム実行単位に属する前記データフロー図の前記機能ブロックについて前記設定情報で特定される演算装置の種類と同一か否か判定し、同一でない場合にはエラー出力を行い、
    実装コード生成手段が、前記設定情報検査手段が前記エラー出力を行わない場合は、前記データフロー図記憶手段と、前記拡張機能を利用しない複数の実装モジュールから成る演算装置独立ライブラリを記憶し前記拡張機能を利用する複数の前記実装モジュールから成る演算装置依存ライブラリを前記拡張機能をもつ演算装置の種類ごとに記憶するライブラリ記憶手段とを参照して、
    前記設定情報で指定された前記機能ブロックに対しては前記設定情報で特定される演算装置の種類に対応する前記演算装置依存ライブラリ内の対応する前記実装モジュールをそれぞれ適用し、前記設定情報で指定されなかった前記機能ブロックに対しては前記演算装置独立ライブラリ内の対応する前記実装モジュールをそれぞれ適用して、前記データフロー図に応じた実装コードを生成し、
    前記実装コード生成手段が、前記設定情報検査手段が前記エラー出力を行った場合は、前記実装コードの生成を行わない、
    ことを特徴とするプログラム開発支援方法。
  6. 演算装置固有の拡張機能を利用するプログラムの開発を支援するプログラム開発支援プログラムにおいて、
    コンピュータを、
    前記拡張機能を利用しない複数の実装モジュールから成る演算装置独立ライブラリを記憶し、前記拡張機能を利用する複数の前記実装モジュールから成る演算装置依存ライブラリを前記拡張機能をもつ演算装置の種類ごとに記憶するライブラリ記憶手段、
    プログラムによるデータ処理を表す機能ブロックと、前記機能ブロック間のデータ受け渡し関係とを記述したデータフロー図を記憶するデータフロー図記憶手段、
    ユーザによる操作入力を受け付け、前記データフロー図記憶手段に記憶された前記データフロー図の前記機能ブロックのうち、前記拡張機能を利用する前記機能ブロックを指定する情報と、指定したそれぞれの前記機能ブロックと対応付けて、前記機能ブロックが利用する前記拡張機能をもつ演算装置の種類を特定する情報と、を有する設定情報を取得する設定情報取得手段、
    前記設定情報取得手段が前記設定情報を取得すると、前記設定情報で特定される演算装置の種類が、指定された全ての前記機能ブロックについて同一か否か判定し、同一でない場合にはエラー出力を行う設定情報検査手段、
    前記設定情報取得手段が前記設定情報を取得すると、前記データフロー図記憶手段と前記ライブラリ記憶手段とを参照して、前記設定情報で指定された前記機能ブロックに対しては前記設定情報で特定される演算装置の種類に対応する前記演算装置依存ライブラリ内の対応する前記実装モジュールをそれぞれ適用し、前記設定情報で指定されなかった前記機能ブロックに対しては前記演算装置独立ライブラリ内の対応する前記実装モジュールをそれぞれ適用して、前記データフロー図に応じた実装コードを生成する実装コード生成手段、
    として機能させ、
    前記実装コード生成手段は、前記設定情報検査手段が前記エラー出力を行ったときは前記実装コードの生成を行わない、
    ことを特徴とするプログラム開発支援プログラム。
  7. 演算装置固有の拡張機能を利用するプログラムの開発を支援するプログラム開発支援プログラムにおいて、
    コンピュータを、
    前記拡張機能を利用しない複数の実装モジュールから成る演算装置独立ライブラリを記憶し、前記拡張機能を利用する複数の前記実装モジュールから成る演算装置依存ライブラリを前記拡張機能をもつ演算装置の種類ごとに記憶するライブラリ記憶手段、
    プログラムによるデータ処理を表す機能ブロックと、前記機能ブロック間のデータ受け渡し関係とを記述した複数のデータフロー図と、プログラム実行単位ごとに前記データフロー図を分類するプログラム構造情報と、を記憶するデータフロー図記憶手段、
    ユーザによる操作入力を受け付け、前記データフロー図記憶手段に記憶された前記データフロー図の前記機能ブロックのうち、前記拡張機能を利用する前記機能ブロックを指定する情報と、指定したそれぞれの前記機能ブロックと対応付けて、前記機能ブロックが利用する前記拡張機能をもつ演算装置の種類を特定する情報と、前記データフロー図記憶手段に記憶された前記プログラム構造情報で示される前記プログラム実行単位のうち、前記拡張機能を利用する前記プログラム実行単位を指定する情報と、指定した前記プログラム実行単位が利用する前記拡張機能をもつ演算装置の種類を特定する情報と、を有する設定情報を取得する設定情報取得手段、
    前記設定情報取得手段が前記設定情報を取得すると、前記データフロー図記憶手段を参照して、前記プログラム実行単位について前記設定情報で特定される演算装置の種類が、前記プログラム実行単位に属する前記データフロー図の前記機能ブロックについて前記設定情報で特定される演算装置の種類と同一か否か判定し、同一でない場合にはエラー出力を行う設定情報検査手段、
    前記設定情報取得手段が前記設定情報を取得すると、前記データフロー図記憶手段と前記ライブラリ記憶手段とを参照して、前記設定情報で指定された前記機能ブロックに対しては前記設定情報で特定される演算装置の種類に対応する前記演算装置依存ライブラリ内の対応する前記実装モジュールをそれぞれ適用し、前記設定情報で指定されなかった前記機能ブロックに対しては前記演算装置独立ライブラリ内の対応する前記実装モジュールをそれぞれ適用して、前記データフロー図に応じた実装コードを生成する実装コード生成手段、
    として機能させ
    前記実装コード生成手段は、前記設定情報検査手段が前記エラー出力を行ったときは前記実装コードの生成を行わない、
    ことを特徴とするプログラム開発支援プログラム。
JP2006172043A 2006-06-22 2006-06-22 プログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラム Active JP4702194B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006172043A JP4702194B2 (ja) 2006-06-22 2006-06-22 プログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006172043A JP4702194B2 (ja) 2006-06-22 2006-06-22 プログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラム

Publications (2)

Publication Number Publication Date
JP2008003817A JP2008003817A (ja) 2008-01-10
JP4702194B2 true JP4702194B2 (ja) 2011-06-15

Family

ID=39008150

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006172043A Active JP4702194B2 (ja) 2006-06-22 2006-06-22 プログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラム

Country Status (1)

Country Link
JP (1) JP4702194B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10628140B2 (en) * 2016-11-17 2020-04-21 Mitsubishi Electric Corporation Program code generation apparatus

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5573287B2 (ja) * 2010-03-29 2014-08-20 富士電機株式会社 プログラム自動生成装置
JP2013073542A (ja) * 2011-09-29 2013-04-22 Fixstars Corp プログラム処理装置、プログラム処理方法、およびプログラム
US10284428B2 (en) * 2016-06-09 2019-05-07 Fujitsu Limited Graphical policy interface for network control systems
CN112199085B (zh) * 2020-09-10 2024-08-27 广州致远电子股份有限公司 基于流图绘制的应用程序开发方法、运行方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07191840A (ja) * 1993-12-27 1995-07-28 Mitsubishi Electric Corp プログラム自動生成装置
JPH09319617A (ja) * 1996-05-30 1997-12-12 Mitsubishi Electric Corp ソフトウエア開発システム、プログラム実行方法、プログラム作成方法、トレース装置および方法、計算機装置、ならびにプログラムの評価方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10628140B2 (en) * 2016-11-17 2020-04-21 Mitsubishi Electric Corporation Program code generation apparatus

Also Published As

Publication number Publication date
JP2008003817A (ja) 2008-01-10

Similar Documents

Publication Publication Date Title
CN100571167C (zh) Web服务业务流程的单元测试的方法和设备
US8566782B2 (en) Generating application data editors
US20120116561A1 (en) Program testing apparatus, method of testing a program, and program testing program
CN111143228B (zh) 基于决策表法的测试代码生成方法及装置
US20070094542A1 (en) Method, system and computer program for managing test processes based on customized uml diagrams
US20050149868A1 (en) User interface application development program and development apparatus
CN104090776A (zh) 一种软件开发方法及系统
CN111158656A (zh) 基于因果树法的测试代码生成方法及装置
US20090217259A1 (en) Building Operating System Images Based on Applications
US20050137839A1 (en) Methods, apparatus and programs for system development
JP2009169828A (ja) テストケース生成装置及びテストケース生成プログラム
JP6568017B2 (ja) テスト支援装置、および、テスト支援方法
KR101352383B1 (ko) Vpl을 이용한 프로그램 개발 방법과 그 방법을 구현한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체
US8086455B2 (en) Model development authoring, generation and execution based on data and processor dependencies
JPH11249875A (ja) プログラミング支援方法及びその装置
JP4702194B2 (ja) プログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラム
CN119668576B (zh) 一种低代码软件开发系统
CN120994540A (zh) 脚本生成方法及装置
CN118502753A (zh) 一种基于原子组件的数据处理方法、装置、设备及介质
JP5319643B2 (ja) ソフトウェアプロダクトライン開発支援装置およびその方法
CN118819673B (zh) 基于dpu业务的项目构建方法、装置、电子设备、介质
Dragaš et al. A Novel Approach to Integration of Manual Changes in Generated Code: SeamlessMDD
JPH0546377A (ja) 制御プログラム作成方法及びその作成装置
JP4670724B2 (ja) ソースコード生成装置、ソースコード生成方法およびソースコード生成プログラム
JP4679540B2 (ja) プログラム検証方法とシステムおよびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090415

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110107

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: 20110208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110221

R150 Certificate of patent or registration of utility model

Ref document number: 4702194

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140318

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

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