JP2007213417A - プログラムコード生成装置、方法、及びコンピュータプログラム - Google Patents
プログラムコード生成装置、方法、及びコンピュータプログラム Download PDFInfo
- Publication number
- JP2007213417A JP2007213417A JP2006034065A JP2006034065A JP2007213417A JP 2007213417 A JP2007213417 A JP 2007213417A JP 2006034065 A JP2006034065 A JP 2006034065A JP 2006034065 A JP2006034065 A JP 2006034065A JP 2007213417 A JP2007213417 A JP 2007213417A
- Authority
- JP
- Japan
- Prior art keywords
- information
- program
- program code
- design drawing
- alignment
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】そのコンテンツデータに関連するコンテンツデータの表示方法を状況によって制御することを目的とする。
【解決手段】プログラムの構造を表現する設計図面情報をユーザが記述編集可能とする手段と、設計図面情報で記述されるプログラムをビルド及び実行する環境を指示するプラットフォーム情報をユーザが記述編集可能とする手段と、複数のプログラム間で送受信されるデータオブジェクトの型情報を設計図面情報から抽出する手段と、プラットフォーム情報から各プログラムの実行環境情報を取り出す手段と、設計図面情報及びプラットフォーム情報を元にプログラムコードを自動生成する手段と、自動生成されたプログラムコードをビルドするために必要となるプロジェクトファイルを自動生成する手段と、実行環境情報及び送信オブジェクトの型情報から最適なデータ変換関数のプログラムコードを自動生成する手段を有する。
【選択図】図1
【解決手段】プログラムの構造を表現する設計図面情報をユーザが記述編集可能とする手段と、設計図面情報で記述されるプログラムをビルド及び実行する環境を指示するプラットフォーム情報をユーザが記述編集可能とする手段と、複数のプログラム間で送受信されるデータオブジェクトの型情報を設計図面情報から抽出する手段と、プラットフォーム情報から各プログラムの実行環境情報を取り出す手段と、設計図面情報及びプラットフォーム情報を元にプログラムコードを自動生成する手段と、自動生成されたプログラムコードをビルドするために必要となるプロジェクトファイルを自動生成する手段と、実行環境情報及び送信オブジェクトの型情報から最適なデータ変換関数のプログラムコードを自動生成する手段を有する。
【選択図】図1
Description
本発明は、ソフトウェアの設計図面よりプログラムコードの自動生成を行うプログラムコード生成装置、方法、及びコンピュータプログラムのうち、特に分散環境にてソフトウェアコンポーネント間で構造を持ったデータオブジェクトの送受信を行うモデルにおいて、パフォーマンスを向上することを特徴とするプログラムコード生成装置、方法、及びコンピュータプログラムに関する。
近年のソフトウェア設計技術として、モデル駆動型アーキテクチャ(Model Driven Architecture)技術(以降、MDA技術と称す)が広まり、採用されるようになってきている。
一般的にMDA技術とは、オペレータが入力したソフトウェアの設計図面情報(設計モデル)から各種プラットフォームのプログラムコードを自動的に生成し、且つ、入力したソフトウェアの設計図面情報をMDA専用ツール(以降、MDAツールと称す)上で動作及び検証することが可能な技術である。MDA技術では、実行プラットフォームに非依存な設計モデルと、実行プラットフォーム依存部分を明確に分けている。これにより、実行プラットフォーム依存部分を切り替えることにより、同一の設計モデルから異なるプラットフォームで動作する実行形式を作成することが可能である。
MDAツールは設計モデルを記述するモデルエディタ、モデルの配置情報やプラットフォーム依存な実行環境情報等を入力する実行環境情報エディタ、設計モデルと実行環境情報からプログラムコードを自動生成するプログラム自動生成装置、実行形式を得るためのコンパイラ、リンカを統合したツールである。
また、コンポーネント開発の考えが広まっている。これは、急激に規模が増大する傾向にあるソフトウェアを、より効率的に開発し、また品質を向上させるために、ソフトウェアをコンポーネントとして部品化し、必要なコンポーネントを組み合わせることによってソフトウェアを開発するものである。MDA技術を用いたソフトウェア設計においてもこの考え方を適用することは有効であり、設計モデルをコンポーネントとして部品化し再利用することが考えられている。
MDA技術は、アプリケーションの振る舞いを表す設計モデルと、プラットフォームに依存する言語やミドルウェア等の実装技術を分離するものである。すなわち上記コンポーネント単位で開発された設計モデルをミドルウェアにマッピングし、プログラムコードを自動生成することが可能である。
一方、分散オブジェクト技術は、複数のプロセスやネットワーク上に分散されているソフトウェアコンポーネント(オブジェクト)を他のロケーションから利用可能とする技術である。分散オブジェクト技術では、同一コンピュータ上の異なるプロセス上で動作するコンポーネントや、ネットワークを介して異なるコンピュータ上で動作するコンポーネントに対して相互にメッセージ通信が行われる。
このような分散オブジェクトシステムの代表的なものとして、CORBA(Common Object Request Broker Architecture)や、Java(登録商標)RMI(Java(登録商標) Remote Method Invocation)等がある。これらのシステムでは、分散されたコンポーネント(オブジェクト)間でのデータ通信を含むプログラムの記述を簡単にするために、ユーザプログラムとは別に、クライアントとサーバとの間のインタフェースプログラムを、ユーザプログラムのプログラム言語とは異なるIDL(Interface Definition Language:インタフェース記述言語)を用いて記述する。IDLを記述することにより、C/C++言語やJava(登録商標)言語等異なるプログラミング言語で実装したコンポーネント間でデータ通信が可能となり、コンポーネントの相互運用性を高めていると言える。
異なるコンピュータ上で動作するプログラムで扱うメモリ上のデータ内部表現形式(エンディアン及びアライメント)が異なる場合がある。図9はエンディアン及びアライメントの違いによるデータの内部表現の違いを表している。901は数値0x12345678をメモリ上に配置したイメージに関し、CPUアーキテクチャがビッグエンディアンの場合とリトルエンディアンの場合の違いを例示したものである。
902は構造体のアライメントの違いによる内部表現の違いを表しており、例示した構造体(Data)を1バイト境界、2バイト境界、4バイト境界でメモリ上に配置した場合のパディングの様子を示している。また、構造体のアライメントはコードコンパイル時のコンパイルオプションもしくは、#pragma pack等によりプログラムコード上で指定することができる。プログラムコード上で構造体のアライメントを指定する場合の1例を図10に示す。
このように、データの内部表現形式の違いが存在するため、プロセスを超えて、又はネットワークを介してデータオブジェクトを送信する際には、マーシャリングを行う必要がある。マーシャリングとは、送信元のコンピュータの内部表現形式からネットワーク上で共通の論理形式に変換する操作のことで、データはメンバ毎にエンディアン変換され、パディングを含まないストリームデータとなる。
マーシャリングされたデータはネットワーク上に送信され、送信先においてデマーシャリングする必要がある。デマーシャリングはマーシャリングの逆変換で、受信した論理形式のデータを受信したコンピュータの内部表現形式に変換する操作のことである。
このように、分散オブジェクトシステムにおいてはコンポーネント相互通信の汎用性を高めるために、送受信データを一旦、共通の表現形式に変換して送信するという手法がとられている。図11は、CORBAによるコンポーネント間のデータオブジェクトの送受信時におけるデータ変換の様子を説明した図である。
1101はリトルエンディアンのCPUで構成されるコンピュータAを示しており、1102及び1105は同コンピュータ内で動作するプロセスである。1103はプロセス(A)1102内で動作するC言語で作成されたコンポーネントAで、1106はプロセス(B)1105内で動作するC言語で作成されたコンポーネントBである。1108はビッグエンディアンのCPUで構成されるコンピュータBを示しており、1109は同コンピュータB内で動作するプロセス(C)である。1110はプロセス(C)内で動作するJava(登録商標)言語で作成コンポーネントCである。
コンポーネントA1103からデータオブジェクトをコンポーネントB及びコンポーネントCに送信する場合を考える。この場合、コンポーネントAから送信されるデータオブジェクトはマーシャリング関数1104にてマーシャリングされ、論理形式に変換されたストリームデータ1112としてORB等の伝送路を流れる。受信側のコンポーネントBではデマーシャリング関数1107を通して、再び内部表現形式に変換され利用される。
同様にコンポーネントCにおいてもデマーシャリング関数1111により内部表現形式に変換される。
なお、Java(登録商標)言語の場合はCPUアーキテクチャによらず、内部データ形式はビッグエンディアンで表現される。
しかしながら、CORBA等の分散オブジェクトシステムは高機能であるが、それゆえ実行時のパフォーマンスやメモリ使用量等の観点から組み込みシステム等のメモリリソースやパフォーマンスの制限が厳しい領域では敬遠される傾向にある。
また、組み込みシステムでは内部のソフトウェアコンポーネントの構成は静的に決定されることが多く、必ずしも汎用性の高いコンポーネントが必要とされるわけではない。例えば、マルチプロセスOS上で動作する組み込みシステムにおいて、プロセス間におけるコンポーネント通信を行う場合は、言語非依存性やコンポーネントの可搬性を犠牲にしてもパフォーマンスを重視する場合が多い。
マーシャリングを行うには、データオブジェクト(クラスや構造体)の各メンバの基本型を理解し、正しいサイズでエンディアン変換及びパッキング/アンパッキング処理を送信時及び受信時に行う必要がある為、実行時の負荷を伴う。
一部のCORBA製品では、Collocation Optimizationという最適化の仕様が用意されており、同一プロセス内の通信においてはマーシャリングを省略することが可能なものもある。しかしながら、プロセスやコンピュータを越える通信の場合はマーシャリングを行う必要がある。
また、特許文献1では、C/C++言語で分散プログラミングを行う場合にユーザプログラムから通信を行う際のマーシャリング関数を自動生成する仕組みが開示されている。しかしながら、本来マーシャリングが不必要な状況においてマーシャリングを省略する考慮はなされていない。
同じく、特許文献2では、ユーザ記述言語ソースプログラムから分散処理プログラムを自動生成する方法が開示されており、前記IDL記述をユーザが行うことなくマーシャリング/デマーシャリングを含むコードを自動生成することを可能としている。しかしながら、コンポーネントの配置やエンディアンやアライメント等の実行環境を考慮して、実行効率の良いマーシャリング関数の生成に関する言及はなされていない。
上記問題点を解決すべく、本発明では、ソフトウェア図面よりプログラムの自動生成を行うMDA技術を用いて、ソフトウェアコンポーネント間のデータ通信を行うモデルを作成する場合、送受信を行うコンポーネント間の実行環境属性を元に、分散環境でのデータオブジェクト送信におけるデータ変換方式を選択し、状況に応じて無駄なマーシャリング操作を省くことにより、実行効率の良いデータ転送を実現することを目的とする。
図12はデータオブジェクトを送受信するコンポーネントの実行環境(エンディアン及びアライメント)の違いとマーシャリング操作の要否を示した図である。送信側コンポーネント及び受信側コンポーネントの双方のエンディアン及びアライメントが一致した場合は、マーシャリング操作を省略できる。
特に送受信するデータオブジェクトが参照を含まない単純な構造の場合、データオブジェクトの送受信は単純なメモリコピー(シャローコピーという)で実現できる。つまり、送信側はデータオブジェクトを内部表現形式のまま伝送路にデータストリームとして流し、受信側は受け取ったデータストリームをデータオブジェクトの型に当てはめてキャストするだけでよい。
図13は送信するデータオブジェクトが参照を含まない単純な構造で、送受信を行うコンポーネントのエンディアン及びアライメントが一致した場合のデータオブジェクトの流れを例示した図である。1301はリトルエンディアンのCPUを持つコンピュータAで1302及び1304はコンピュータA1301上に存在するプロセスである。1302で示したプロセス1上には送信側のコンポーネントA1303が動作し、1304で示したプロセス2上には受信側のコンポーネントB1305が動作している。また、1310はリトルエンディアンのCPUを持つコンピュータBで、1311で示すプロセス3が存在している。1312は1311で示したプロセス3上で動作するコンポーネントCである。
このようなコンポーネントの配置関係において、コンポーネントAからデータオブジェクト1306をコンポーネントBに送信する場合、伝送路1309に流すデータストリーム1307はデータオブジェクト1306と同一の配列で構成されている。また、コンポーネントBがデータストリーム1307を受信して内部表現形式に直した結果のデータオブジェクト1308もデータオブジェクト1306と同一の配列で構成されている。同様に、コンポーネントAからコンポーネントCに対するデータオブジェクト1306の送信においても、伝送路を流れるデータストリーム1313及びコンポーネントCで受信したデータオブジェクト1314も同一の配列で構成される。つまり、例示した実行環境においてはいかなる個所においてもマーシャリング操作が行われていない。
このように、データオブジェクトを送受信するコンポーネント間通信において、コンポーネント相互間の配置を静的に決定することにより、不要なマーシャリング処理を省略することが可能となる。
本発明によるプログラムコード生成装置は、プログラムの構造を表現する設計図面情報をユーザが記述編集可能とする設計図面入力手段と、前記設計図面情報で記述されるプログラムをビルド及び実行する環境を指示するプラットフォーム情報をユーザが記述編集可能とするプラットフォーム情報入力手段と、複数のプログラム間で送受信されるデータオブジェクトの型情報を前記設計図面情報から抽出する送信オブジェクト型情報抽出手段と、プラットフォーム情報から各プログラムの実行環境情報を取り出す実行環境抽出手段と、前記設計図面情報及びプラットフォーム情報を元にプログラムコードを自動生成するプログラムコード生成手段と、前記自動生成されたプログラムコードをビルドするために必要となるプロジェクトファイルを自動生成するプロジェクトファイル生成手段と、前記実行環境情報及び送信オブジェクトの型情報から最適なデータ変換関数のプログラムコードを自動生成するマーシャリング関数コード生成手段を有することを特徴とする。
本発明によれば、ソフトウェア図面よりプログラムの自動生成を行うプログラム生成装置によりソフトウェアコンポーネント間のデータ通信を行うプログラムを作成する場合、送受信を行うコンポーネントのそれぞれの実行環境属性(エンディアン、アライメント)を元に、データオブジェクト送信におけるデータ変換(マーシャリング)方式を選択する。すなわち、送受信を行うコンポーネントのエンディアン及びアライメントを示した実行環境属性からマーシャリングが必要か否かを判断して、マーシャリングが不必要な場合はマーシャリングコードを生成せず、単純なメモリコピーでマーシャリングを代用するコードを生成する。これにより、データオブジェクトを送受信するコンポーネント間通信において、コンポーネント相互間の配置及び実行環境属性を静的に決定することで、不要なマーシャリング処理を省略し実行効率の良いデータ転送を実現するプログラムを生成することが可能となる。
以下、添付図面を参照して、本発明の好適な実施形態について説明する。
図1は本発明の実施例を示す全体構成図である。図1において、1はCPUであり、以下に説明する3〜10の装置を2で示すバスを介してアクセスし制御を行う。3はバス2を介してCPU1からアクセス可能な読み出し専用メモリ(ROM)であり、本実施例ではその動作を詳細に説明する処理プログラム3a及び処理プログラムにより使用されるパラメータ3bが格納されている。
図1は本発明の実施例を示す全体構成図である。図1において、1はCPUであり、以下に説明する3〜10の装置を2で示すバスを介してアクセスし制御を行う。3はバス2を介してCPU1からアクセス可能な読み出し専用メモリ(ROM)であり、本実施例ではその動作を詳細に説明する処理プログラム3a及び処理プログラムにより使用されるパラメータ3bが格納されている。
4は読み書き可能なメモリ(RAM)であり、RAM4上には、上記処理プログラム3により作成/変更がなされる、設計図面情報、プラットフォーム情報、送信オブジェクト型情報、エンディアン/アライメント情報、プログラムコード、ライブラリ、マーシャリングコード、プロジェクトファイル、実行可能形式をそれぞれ格納するための領域(順に4a、4b、4c、4d、4e、4f、4g、4h、4i)が確保されている。
5は入力インタフェースであり、6で示したキーボード、マウス、タブレット等の入力装置を介してなされる入力を受け取る。7は出力インタフェースであり、8で示したCRT、LCD等の表示媒体、更にはプリンタ、プロッタ等の出力装置に対し、データの表示/出力を行う。9は外部記憶装置インタフェースであり、10で示したHD、FD、CD−ROM、MD、CF等の外部記憶装置に対するデータの入出力を行うものである。
本実施例では、動作の詳細な説明と行う処理プログラム3aやパラメータ3bがROM3上にあるものとして説明を行う。また、処理対象となる各データの格納領域(4a〜4i)がRAM上にあるものとして説明を行う。ただし、これらはすべて、外部記憶装置上に配置することも可能であり、更に、必要に応じて、外部記憶装置からRAM上にロードし、使用することもできる。また、CPUのキャッシュメモリ上に配置することも同様に可能である。
図2は、図1において3aで示した処理プログラムの構成要件とそれら構成要件が図1の4a〜4gで示した格納領域に格納されるデータとどのような関係にあるかを示すものである。200は図1における入力インタフェース5を介して入力されるデータを扱うGUI入力処理部であり、ユーザはこのGUI入力処理部によりデータの入力や編集と、各処理部へ指示できるようになっている。本発明におけるプログラムコード生成装置においては、自動生成装置起動部200として利用する。
201は外部記憶装置内から実行可能な設計図面を読み込み、構文解析を行う設計図面入力部であり、処理プログラムが実行可能な設計図面を解釈し、設計図面情報を生成することを可能にする。
202は外部記憶装置内から実行ファイルの動作するOSやCPUアーキテクチャやプログラミング言語やコンパイラオプションやフレームワークといったプラットフォームデータを読み込み、構文解析を行うプラットフォーム情報入力部である。プラットフォーム上方入力部202は、処理プログラムがプラットフォーム情報を生成することを可能にする。
203は設計図面入力部201より生成された、処理プログラムが解釈することが可能な設計図面情報である。204はプラットフォーム情報入力部202より生成された、処理プログラムが解釈することが可能なプラットフォーム情報である。プラットフォーム情報は対象とする実行形式が複数存在する場合は、それぞれの実行形式を動作させるプロセスやコンピュータを指定する配置情報を含む。従って、システムが複数のプラットフォームに跨る場合は、それぞれのプラットフォーム情報が含まれる。
205は設計図面情報203を解析することで、コンポーネント間で送受信されるオブジェクトを抽出する送信オブジェクト抽出部であり、設計図面から送信オブジェクトの型(クラスや構造体)情報を取り出すことを可能とする。206は送信オブジェクト抽出部205が生成した送信オブジェクト型情報である。
207はプラットフォーム情報204から、実行ファイルの動作するCPUアーキテクチャやコンパイラオプションというプログラムの実行環境を決定する情報を取り出す実行環境抽出部であり、エンディアン及び構造体のアライメント情報を抽出する。208は実行環境抽出部207により抽出された、エンディアン/アライメントの情報であり、実行ファイルが複数存在する場合は、それぞれの実行ファイル毎にエンディアン及びアライメントの情報を含んでいる。
211は設計図面情報203、送信オブジェクト型情報206及びエンディアン/アライメント情報208から、適切なマーシャリング関数のプログラムコードを生成するマーシャリング関数コード生成部である。例えば、対象送信オブジェクトがマーシャリング操作を省略可能である場合は、単純なメモリコピー操作でオブジェクトのコピーを作成する関数を生成する。エンディアンもしくはアライメントが異なる場合等マーシャリング操作が省略不可能な場合は、送信オブジェクト型情報からデータオブジェクトのメンバ1つ1つをエンディアン変換してパディングを除いてシリアライズ化されたデータストリームに変換するマーシャリング関数を生成する。
212は設計図面情報203やプラットフォーム依存情報204から、プログラムコードを自動生成するプログラムコード生成部である。プログラムコード生成部212は、設計図面の依存情報や実行対象となるプラットフォームに応じて最適化されたプログラムコードの自動生成が可能である。213は、設計図面情報203やプラットフォーム依存情報204から、生成されたプログラムコードやマーシャリングコード及びライブラリ等の依存関係及びコードコンパイラやリンカに渡すオプション等の情報を管理するプロジェクトファイルを自動生成するプロジェクトファイル生成部である。ここでは、プロジェクトファイル生成部213がプログラムコード生成部212に内包される機能として記述した。
215はプロジェクトファイル生成部213から生成されたプロジェクトファイルである。216はプログラムコード生成部212から生成されたプログラムコードである。217はマーシャリング関数コード生成部211から生成されたマーシャリング関数のプログラムコードである。218はプログラムコード216やマーシャリングコード217から参照されるライブラリである。
219はプログラムコード216と、プロジェクトファイル215と、マーシャリングコード217及びライブラリ218から、実行可能形式220を生成するコードコンパイラである。220はコードコンパイラにより生成された実行形式ファイルである。
次に、実行可能な設計図面について説明する。実行可能な設計図面の全体構成を規定する図面は、一般にドメイン図と呼ばれている。実際の例を図3に示す。図3は、オペレータからの入力を受け、ライトを付けたり、時間を指定してライトを消すシステムを表したドメイン図の一例である。
301はライトを明滅するシステムの制御を行うControllerドメイン、302はオペレータからの操作を受け取るUIドメイン、303はライトを制御するLightドメイン、304はタイムサービスを提供するTimerドメインを示している。さらに、ドメイン同士の結びつきは、関連と呼ばれ、図3においては矢印付きの点線で表現される。図3では、ドメイン間の通信であるイベントの送受信を行う場合に点線で結ぶ例を示している。305は、関連の一例で、Controllerドメイン301とTimerドメイン304の間で、双方向のイベント通信を行うため、両方向に矢印のついた点線で示している。306の関連の一例で、Controllerドメイン301とLightドメイン303の間で、片方向のイベント通信を行うため、Lightドメイン303側だけに矢印のついた点線で示す。
実行可能な設計図面において、処理を行うオブジェクトの静的な構造を示す設計図は、クラス図と呼ばれている。実際の例を図4に示す。図4は、図3で示したオペレータからの入力を受け、ライトを付けたり、時間を指定してライトを消すシステムを表したドメイン図の一例における、ライトを明滅するシステムの制御を行うControllerドメイン301のクラス図の一例である。
図4において、401はクラスの名称を示し、図4の例では「Controller」がクラスの名称である。402はControllerクラスが「name」というString型のインスタンス変数を持つことを表現している。403はControllerクラスが「getName」というメソッドをもち、「evOn」、「evOff」、「alarm」という3つのイベントを受け取ることを示している。メソッドは処理の内容が書かれており、イベントはクラス間での通信オブジェクトの一例である。
実行可能な設計図面において、クラスの動的な振る舞いは状態の遷移を表現する図や表等で表現する。実際の例を図5に示す。図5は状態遷移図を使ったクラスの動的な振る舞いを表現した例で、図4におけるControllerクラスの状態遷移図の例である。図5において、501は初期状態を示し、Controllerクラスのインスタンスが生成されたときに入る状態を表す。初期状態501はその状態に留まることはなく、すぐに次の状態502に遷移する。502は「Off」と名づけた状態を表し、Controllerクラスのインスタンスが生成された後、この状態に留まる。503は状態から状態への遷移を示し、Off状態502のときにevOnイベントが発行されると特定のアクションevOn()を実行して、状態504に遷移する。505は、On状態504のときにalarmイベントが発行されると特定のアクションalarmを実行して、再度、On状態504に遷移する。なお、一般に、状態遷移図にはアクションを記述することも可能であるが、図5に示した状態遷移図の例では別のファイルに定義して利用する例を示している。
プラットフォーム非依存であり、実行可能であり、かつオブジェクト指向である、設計図面において、各クラスの状態における処理手順の記述を一般にはアクションと呼ぶ。本発明においてはアクションの記述を別ファイルにて提供する場合を例に説明するが、状態遷移図等に記入する場合も問わない。
プラットフォーム非依存であり、実行可能であり、かつオブジェクト指向である、設計図面におけるアクション記述の例を図6に示す。図6において、601は図3で例として示した、オペレータからの入力を受け、ライトを付けたり、時間を指定してライトを消すシステムの初期化時に実行されるアクションを示した例である。システムで必要となるControllerクラス、UIクラス、Lightクラスのインスタンスを、それぞれ、newにより作成する。ここで作成したインスタンスは、システム全体で操作可能な変数として登録するため、registLinkにより登録する。
602は図5で示したControllerクラスの状態遷移図において、Off状態502からOn状態504に遷移するアクションevOnを記述した例である。evOnアクション602では、このアクション内で、クラスTimerのインスタンスを新たに生成し、このアクションを実行するControllerクラスのインスタンス内で操作可能な変数として登録するため、resigtLinkにより登録する。さらに、evOnアクション602では、既にシステム全体で操作可能として登録したLightクラスの唯一のインスタンスをqueryLinkにより入手して、ライトを点灯するためのイベントlightOnをsendEventにより送信する。
603は図5で示したControllerクラスの状態遷移図において、On状態504からOff状態502に遷移するアクションevOffを記述した例である。evOffアクション603では、既にシステム全体で操作可能として登録したLightクラスの唯一のインスタンスをqueryLinkにより入手して、ライトを消灯するためのイベントlightOffをsendEventにより送信する。さらに、evOffアクション603では、evOnアクション602でControllerクラスのインスタンス内で操作可能な変数として登録したTimerクラスのインスタンスをqueryLinkにより入手してtimerインスタンスを削除する。加えて、evOffアクション603では、既にシステム全体で操作可能として登録したUIクラスの唯一のインスタンスuiをqueryLinkにより入手して、ライトを消灯したことを知らせるイベントstopをsendEventにより送信する。
図6に示したアクションの例では、インスタンスの識別に生成時の変数名を利用しているが、インスタンスを識別するための情報、例えばシステム内で特定できる識別番号等を用いる別の方法でも実現可能である。図6に示したアクションの例では、生成したクラスのインスタンスが、システム全体で利用可能なインスタンスであるのか、特定のインスタンス内で利用可能なインスタンスであるのか、アクション記述のブロック内だけで利用可能なインスタンスであるのかを、ユーザがアクションで記述している。ただし、図4で示したドメイン図や図5で示したクラス図からこれらの変数の利用範囲を特定する情報を得ることができるため、この方法によらない。
これ以降の説明においてのフローチャートによる処理手順は、例に限定されることはなく、本発明の結果を満たす限りいかなる手順の組み合わせも、複数処理をまとめることも、処理を細分化することも可能である。また、各処理を個々に切り出してひとつの機能要素として単体として機能し、示している処理以外の処理と組み合わせて使用することも可能である。
(実施例1)
以下、図面を参照して、本発明の請求項1及び請求項2の実施例を説明する。図7は、本実施例のシステム全体の処理手順を示したフローチャートである。起動したオブジェクト配置を考慮したプログラムコード生成装置は、ステップ701において外部記憶装置内等に記憶してある実行可能な設計図面を読み込み、設計図面入力部201により設計図面情報203を生成する。
以下、図面を参照して、本発明の請求項1及び請求項2の実施例を説明する。図7は、本実施例のシステム全体の処理手順を示したフローチャートである。起動したオブジェクト配置を考慮したプログラムコード生成装置は、ステップ701において外部記憶装置内等に記憶してある実行可能な設計図面を読み込み、設計図面入力部201により設計図面情報203を生成する。
また、ステップ702においてプラットフォーム情報入力部202によりプラットフォーム情報204を生成する。プラットフォーム情報とは、例えば、プログラムを実行するプラットフォームのCPUアーキテクチャ(エンディアン情報を含む)やアライメント等の実行環境に関わる情報及び、タスクやスレッドをどこのドメインやクラス等にマッピングさせるか、等の生成したコードを実行するプラットフォームに依存した情報である。
ステップ703において、設計図面情報203から図面情報を解析してドメインやクラス間で送信される送信オブジェクトを抽出し送信オブジェクト型情報206を生成する。
ステップ704において、プラットフォーム情報204から実行環境抽出部207によって実行可能プログラムのアライメント/エンディアン情報208を抽出する。ここで抽出されるアライメント情報は対象プログラムをコンパイルするコンパイラの設定によって予め選択されているものとする。アライメントは2、4、8、16等の2のべき乗の数値であり、コンパイラによって選択可能な範囲やデフォルトの値が異なる場合がある。
ステップ705において、設計図面情報203及びアライメント/エンディアン情報208から、各ドメインもしくはクラス間のデータ送受信においてマーシャリング操作の必要性の有無の判定を行い、マーシャリング判定結果を得る。
ステップ706において、マーシャリングが必要と判断された場合は、ステップ708へ進む。マーシャリングが不用と判断された場合はステップ707へ進む。
ステップ707において、送信オブジェクト型情報206からオブジェクトのサイズを取得しオブジェクトの単純なコピーを生成するコードを生成する。なお、C言語の構造体でデータオブジェクトを表現する場合は、そのサイズはsizeof()にて取得することができるので、データオブジェクトの先頭番地からサイズ分のメモリコピーを行うコードを生成すればよい。同様に、C++言語のクラスにおいてもsizeof()を利用してデータオブジェクトのサイズを取得することができるが、C++言語のクラスでデータオブジェクトを表現する場合は、オブジェクトの先頭番地に仮想関数テーブルへのポインタを含む場合があるので、最初のデータメンバのオフセット位置からsizeof()で取得したサイズのメモリコピーを行うコードを生成する必要がある。
ステップ708において、マーシャリング関数コード生成部211では、送信オブジェクトの型情報206から送信オブジェクトの型に従って各メンバに対する変換処理を行うマーシャリング関数のコードを生成する。
ステップ709において、プロジェクトファイル生成部213は、設計図面情報203及びプラットフォーム情報204からプロジェクトファイル215を生成する。
ステップ710において、プログラムコード生成部212は設計図面情報203とプラットフォーム情報204とを用いてプログラムコード216を生成する。
ステップ711においてプログラムコード216とライブラリ218及びマーシャリングコード217から、コードコンパイラ219によりコンパイル、リンクを実施し、プログラム実行形式220を生成する。
以上の説明から、設計図面及びプラットフォーム情報を解析し、送受信を行うプログラム間の実行環境の相違を判定することで、送信するデータオブジェクトのマーシャリングを行うか否かを静的に判断することができる。例えば、データオブジェクトが参照を含まない単純な構造で、送受信を行うプログラムのアライメント及びエンディアンが一致する場合はマーシャリング操作を単純なメモリコピー操作に置き換えることができる。
(実施例2)
以下、図面を参照して、本発明の請求項3の実施例を説明する。図16は、図1において3aで示した処理プログラムの構成要件とそれら構成要件が図1の4a〜4gで示した格納領域に格納されるデータとどのような関係にあるかを示すものである。基本的な流れは図2で示したものと同様であるので、ここではその差分だけを説明する。
以下、図面を参照して、本発明の請求項3の実施例を説明する。図16は、図1において3aで示した処理プログラムの構成要件とそれら構成要件が図1の4a〜4gで示した格納領域に格納されるデータとどのような関係にあるかを示すものである。基本的な流れは図2で示したものと同様であるので、ここではその差分だけを説明する。
1609は、エンディアン/アライメント情報1608から使用するコンパイラで選択可能なアライメントの選択枝をユーザによって選択させるアライメント選択部である。アライメント選択部1609は、設計図面情報1603に記述されている実行可能なプログラム毎にアライメントを選択することが可能である。従って、当該プログラムに複数の送信オブジェクトが含まれる場合でも、全ての送信オブジェクトのアライメントは選択したアライメントに統一される。ユーザが選択したアライメントは選択されたアライメント1610として保存される。
1611は、設計図面情報1601、送信オブジェクト型情報1606、エンディアン情報1608及び選択されたアライメント1610から、適切なマーシャリング関数のプログラムコードを生成するマーシャリング関数コード生成部である。例えば、対象送信オブジェクトがマーシャリング操作を省略可能である場合は、単純なメモリコピー操作でオブジェクトのコピーを作成する関数を生成する。エンディアンもしくはアライメントが異なる場合等マーシャリング操作が省略不可能な場合は、送信オブジェクト型情報からデータオブジェクトのメンバ1つ1つをエンディアン変換してパディングを除いてシリアライズ化されたデータストリームに変換するマーシャリング関数を生成する。
1613は、設計図面情報1603、プラットフォーム依存情報1604及び選択されたアライメント1610から、生成されたプログラムコードやマーシャリングコード及びライブラリ等の依存関係及びコードコンパイラやリンカに渡すオプション等の情報を管理するプロジェクトファイルを自動生成するプロジェクトファイル生成部である。ここでは、プロジェクトファイル生成部1613がプログラムコード生成部1612に内包される機能として記述した。
なお、コードコンパイラに渡すオプションの中に、本実施例によって選択されたアライメントを指定するコンパイルスイッチが指定されることになる。
図8は、本実施例のシステム全体の処理手順を示したフローチャートである。起動したオブジェクト配置を考慮したプログラムコード生成装置は、ステップ801において、外部記憶装置内等に記憶してある実行可能な設計図面を読み込み、設計図面入力部1601により設計図面情報1603を生成する。
また、ステップ802において、プラットフォーム情報入力部1602によりプラットフォーム情報1604を生成する。プラットフォーム情報とは、例えば、プログラムを実行するプラットフォームのCPUアーキテクチャ(エンディアン情報を含む)や利用するコードコンパイラにおける選択可能なアライメントの選択枝等の実行環境に関わる情報及び、タスクやスレッドをどこのドメインやクラス等にマッピングさせるか、等の生成したコードを実行するプラットフォームに依存した情報である。
ステップ803において、設計図面情報1603から図面情報を解析してドメインやクラス間で送信される送信オブジェクトを抽出し送信オブジェクト型情報1606を生成する。
ステップ804において、プラットフォーム情報1604から実行環境抽出部1607によって実行可能プログラムのアライメント/エンディアン情報1608を抽出する。ここで抽出されるアライメント情報は対象プログラムをコンパイルするコンパイラよって選択可能な候補が列挙されているものとする。アライメントは2、4、8、16等の2のべき乗の数値であり、コンパイラによって選択可能な範囲やデフォルトの値が異なる場合がある。
ステップ805において、設計図面情報1603及びアライメント/エンディアン情報1608から、選択可能なアライメントの候補を列挙し、アライメント選択部1609によって候補の中から1つをユーザが選択する。
ステップ806において、設計図面情報1603、エンディアン情報1608及び選択されたアライメント1610から、各プログラム間のデータ送受信においてマーシャリング操作の必要性の有無の判定を行い、マーシャリング判定結果を得る。
ステップ807において、マーシャリングが必要と判断された場合は、ステップ809へ進む。マーシャリングが不用と判断された場合はステップ808へ進む。
ステップ808において、送信オブジェクト型情報1606からオブジェクトのサイズを取得しオブジェクトの単純なコピーを生成するコードを生成する。
ステップ809において、マーシャリング関数コード生成部1611では、送信オブジェクトの型情報1606から送信オブジェクトの型に従って各メンバに対する変換処理を行うマーシャリング関数のコードを生成する。
ステップ810において、プロジェクトファイル生成部1613は、設計図面情報1603、プラットフォーム情報1604及び選択されたアライメント1610からプロジェクトファイル1615を生成する。
ステップ811において、プログラムコード生成部1612は設計図面情報1603とプラットフォーム情報1604及び選択されたアライメント1610とを用いてプログラムコード1616を生成する。
ステップ812において、プログラムコード1616とライブラリ1618及びマーシャリングコード1617から、コードコンパイラ1619によりコンパイル、リンクを実施し、プログラム実行形式1620を生成する。
(実施例3)
以下、図面を参照して、本発明の請求項4の実施例を説明する。図16は、図1において3aで示した処理プログラムの構成要件とそれら構成要件が図1の4a〜4gで示した格納領域に格納されるデータとどのような関係にあるかを示すものである。基本的な流れは実施例2で示したものと同様であるので、ここではその差分だけを説明する。
以下、図面を参照して、本発明の請求項4の実施例を説明する。図16は、図1において3aで示した処理プログラムの構成要件とそれら構成要件が図1の4a〜4gで示した格納領域に格納されるデータとどのような関係にあるかを示すものである。基本的な流れは実施例2で示したものと同様であるので、ここではその差分だけを説明する。
1609は、エンディアン/アライメント情報1608から使用するコンパイラで選択可能なアライメントの選択枝をユーザによって選択させるアライメント選択部である。アライメント選択部1609は、設計図面情報1603に記述されている送信オブジェクト毎にアライメントを選択することが可能である。従って、当該プログラムに複数の送信オブジェクトが含まれる場合は、それぞれの送信オブジェクトに対して異なるアライメントを指定することが可能で、ユーザが選択したアライメントは選択されたアライメント1610として保存される。
1612は設計図面情報1603、プラットフォーム依存情報1604及び選択されたアライメント1610から、プログラムコードを自動生成するプログラムコード生成部である。プログラムコード生成部1612は、設計図面の依存情報や実行対象となるプラットフォームに応じて最適化されたプログラムコードの自動生成が可能である。また、送信オブジェクト毎にユーザが設定したアライメントに従ったデータオブジェクトを作成する為のコンパイラへの指示を、プログラムコードのデータオブジェクトの型宣言を行う部分に埋め込む。
例えば、図10で示した例は、あるコンパイラにおけるアライメントの指定方法を示しており、#pragma packを用いることにより、特定の構造体やクラスに対して個別にアライメントの指定を行うことができる。これにより、同一実行プログラム内に複数のタイプの送信オブジェクトが存在し、それぞれアライメントの異なる相手に送信する場合においても、それぞれのアライメントで送信オブジェクトを生成することができる為、本発明を適用することが可能となる。
(実施例4)
以下、図面を参照して、本発明の請求項5の実施例を説明する。図14は、送受信するデータオブジェクトのマーシャリングが必要な場合において、本発明で生成されるマーシャリング関数を送信側プログラムのみに配置した一例を示した図である。
以下、図面を参照して、本発明の請求項5の実施例を説明する。図14は、送受信するデータオブジェクトのマーシャリングが必要な場合において、本発明で生成されるマーシャリング関数を送信側プログラムのみに配置した一例を示した図である。
1401はリトルエンディアンのCPUを持つコンピュータAである。1402はコンピュータA1401上に存在するプロセスである。1402で示したプロセス1上にはC言語で記述され構造体のアライメントが4である送信側のコンポーネントA1403が動作している。
また、1410はリトルエンディアンのCPUを持つコンピュータBで、1411で示すプロセス3が存在している。
1412は1411で示したプロセス3上で動作するC言語で記述され構造体のアライメントが2であるコンポーネントCである。このようなコンポーネントの配置関係において、コンポーネントAからコンポーネントCに対するデータ送信において、1404で示したマーシャリング関数によってデータオブジェクト1406をマーシャリングする。この例では、送信側コンポーネントA1403と受信側コンポーネントC1412では、エンディアンは一致しているがアライメントが異なっている。
本発明の請求項5のマーシャリング関数は、送信側コンポーネントA1403で呼び出され、4バイトでアライメントされたデータオブジェクト1406を、受信側コンポーネントC1412の内部表現形式である2バイトでアライメントされた形式に変換し、データストリーム1413として伝送路1409に流す。コンポーネントCで受信したデータストリーム1413は、既にコンポーネントCにおける内部表現形式に変換されているため、受信側でデマーシャリングを行う必要がない。
(実施例5)
以下、図面を参照して、本発明の請求項6の実施例を説明する。図15は、送受信するデータオブジェクトのマーシャリングが必要な場合において、本発明で生成されるマーシャリング関数を受信側プログラムのみに配置した一例を示した図である。
以下、図面を参照して、本発明の請求項6の実施例を説明する。図15は、送受信するデータオブジェクトのマーシャリングが必要な場合において、本発明で生成されるマーシャリング関数を受信側プログラムのみに配置した一例を示した図である。
1501はリトルエンディアンのCPUを持つコンピュータAで1502はコンピュータA1501上に存在するプロセスである。1502で示したプロセス1上にはC言語で記述され構造体のアライメントが4である送信側のコンポーネントA1503が動作している。
また、1510はリトルエンディアンのCPUを持つコンピュータBで、1511で示すプロセス3が存在している。1512は1511で示したプロセス3上で動作するC言語で記述され構造体のアライメントが2であるコンポーネントCである。このようなコンポーネントの配置関係において、コンポーネントAからコンポーネントCに対するデータ送信において、1515で示したマーシャリング関数によってデータストリーム1513をマーシャリングする。
この例では、送信側コンポーネントA1503と受信側コンポーネントC1512では、エンディアンは一致しているがアライメントが異なっている。送信側コンポーネントA1503は送信データオブジェクト1506を内部表現形式のまま無加工でデータストリーム1513として伝送路1509に流す。
本発明の請求項6のマーシャリング関数は、受信側コンポーネントC1512で利用され、伝送路1509を流れてきた4バイトでアライメントされたデータストリーム1513を、送信側のアライメントで解釈し、受信側コンポーネントC1512の内部表現形式である2バイトでアライメントされた形式のデータオブジェクト1514に変換する。本方式では変換操作を受信側に集中させることにより、送信側でのマーシャリングを省略可能にしている。
なお、本発明の目的は、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。
この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することになり、プログラムコード自体及びそのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、上述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(基本システム或いはオペレーティングシステム)等が実際の処理の一部又は全部を行い、その処理によって上述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部又は全部を行い、その処理によって上述した実施形態の機能が実現される場合も含まれることは言うまでもない。
1:CPU
2:バス
3:ROM
4:RAM
4a:設計図面情報
4b:プラットフォーム情報
4c:送信オブジェクト型情報
4d:エンディアン/アライメント情報
4e:プログラムコード
4f:ライブラリ
4g:マーシャリングコード
4h:プロジェクトファイル
4i:実行可能形式
5:入力インタフェース
6:キーボード、ボタン、マウス、ダイアル
7:出力インタフェース
8a:CRT、LCD
8b:プリンタ、プロッタ
9:外部記憶装置インタフェース
10:HD、FD、CD−ROM、MD、CF、・・・(ファイル)
200:自動生成装置起動部
201:設計図面入力部
202:プラットフォーム情報入力部
203:設計図面情報
204:プラットフォーム情報
205:送信オブジェクト抽出部
206:送信オブジェクト型情報
207:実行環境抽出部
208:エンディアン/アライメント情報
211:マーシャリング関数コード生成部
212:プログラムコード生成部
213:プロジェクトファイル生成部
215:プロジェクトファイル
216:プログラムコード
217:マーシャリングコード
218:ライブラリ
219:コードコンパイラ
220:プログラム実行形式
2:バス
3:ROM
4:RAM
4a:設計図面情報
4b:プラットフォーム情報
4c:送信オブジェクト型情報
4d:エンディアン/アライメント情報
4e:プログラムコード
4f:ライブラリ
4g:マーシャリングコード
4h:プロジェクトファイル
4i:実行可能形式
5:入力インタフェース
6:キーボード、ボタン、マウス、ダイアル
7:出力インタフェース
8a:CRT、LCD
8b:プリンタ、プロッタ
9:外部記憶装置インタフェース
10:HD、FD、CD−ROM、MD、CF、・・・(ファイル)
200:自動生成装置起動部
201:設計図面入力部
202:プラットフォーム情報入力部
203:設計図面情報
204:プラットフォーム情報
205:送信オブジェクト抽出部
206:送信オブジェクト型情報
207:実行環境抽出部
208:エンディアン/アライメント情報
211:マーシャリング関数コード生成部
212:プログラムコード生成部
213:プロジェクトファイル生成部
215:プロジェクトファイル
216:プログラムコード
217:マーシャリングコード
218:ライブラリ
219:コードコンパイラ
220:プログラム実行形式
Claims (8)
- プログラムの構造を表現する設計図面情報をユーザが記述編集可能とする設計図面入力手段と、
前記設計図面情報で記述されるプログラムをビルド及び実行する環境を指示するプラットフォーム情報をユーザが記述編集可能とするプラットフォーム情報入力手段と、
複数のプログラム間で送受信されるデータオブジェクトの型情報を前記設計図面情報から抽出する送信オブジェクト型情報抽出手段と、
プラットフォーム情報から各プログラムの実行環境情報を取り出す実行環境抽出手段と、
前記設計図面情報及びプラットフォーム情報を元にプログラムコードを自動生成するプログラムコード生成手段と、
前記自動生成されたプログラムコードをビルドするために必要となるプロジェクトファイルを自動生成するプロジェクトファイル生成手段と、
前記実行環境情報及び送信オブジェクトの型情報から最適なデータ変換関数のプログラムコードを自動生成するマーシャリング関数コード生成手段を有することを特徴とするプログラムコード生成装置。 - 前記実行環境情報とは、前記設計図面情報に含まれる1つのプログラムを実行するコンピュータのエンディアン情報及び自動生成されたプログラムコードをコンパイルする際に利用するコンパイラで決められている構造体のアライメント情報を含み、これらの予め決定されたエンディアン情報及びアライメント情報及び前記送信オブジェクトの型情報から、最適なマーシャリング関数のプログラムコードを自動生成するマーシャリング関数コード生成手段を有することを特徴とする請求項1に記載のプログラムコード生成装置。
- 前記実行環境情報とは、前記設計図面情報に含まれる1つのプログラムを実行するコンピュータのエンディアン情報及び自動生成されたプログラムコードをコンパイルする際に利用するコンパイラの設定可能なアライメントの選択肢を含み、前記設定可能なアライメントの選択肢をユーザが選択するアライメント選択手段を有し、ユーザがプログラム毎に選択したアライメント情報をコンパイラのオプションとしてプロジェクトファイルに反映し、前記アライメント情報と前記エンディアン情報及び前記送信オブジェクトの型情報から、最適なマーシャリング関数のプログラムコードを自動生成するマーシャリング関数コード生成手段を有することを特徴とする請求項1に記載のプログラムコード生成装置。
- 前記実行環境情報とは、前記設計図面情報に含まれる1つのプログラムを実行するコンピュータのエンディアン情報及び自動生成されたプログラムコードをコンパイルする際に利用するコンパイラの設定可能なアライメントの選択肢を含み、前記設定可能なアライメントの選択肢をユーザが選択するアライメント選択手段を有し、ユーザが送信オブジェクト毎に選択したアライメントを、自動生成するプログラムコードの各データオブジェクトの宣言部にて個々に指定し、前記アライメント情報と前記エンディアン情報及び前記送信オブジェクトの型情報から、最適なマーシャリング関数のプログラムコードを自動生成するマーシャリング関数コード生成手段を有することを特徴とする請求項1に記載のプログラムコード生成装置。
- 送受信するデータオブジェクトのマーシャリングが必要な通信の場合において、送信側プログラムにおいて実行される、受信側プログラムの内部表現形式に直接変換するマーシャリング関数を前記アライメント情報と前記エンディアン情報及び前記送信オブジェクトの型情報を用いて生成することを特徴とする請求項1〜4のいずれか1項に記載のプログラムコード生成装置。
- 送受信するデータオブジェクトのマーシャリングが必要な通信の場合において、送信側プログラムの内部表現形式を未加工のまま伝送路に送出し、受信側プログラムにおいて実行される、送信側プログラムの内部表現形式から受信側プログラムの内部表現形式に直接変換するマーシャリング関数を前記アライメント情報と前記エンディアン情報及び前記送信オブジェクトの型情報を用いて生成することを特徴とする請求項1〜4のいずれか1項に記載のプログラムコード生成装置。
- プログラムの構造を表現する設計図面情報をユーザが記述編集可能とする設計図面入力工程と、
前記設計図面情報で記述されるプログラムをビルド及び実行する環境を指示するプラットフォーム情報をユーザが記述編集可能とするプラットフォーム情報入力工程と、
複数のプログラム間で送受信されるデータオブジェクトの型情報を前記設計図面情報から抽出する送信オブジェクト型情報抽出工程と、
プラットフォーム情報から各プログラムの実行環境情報を取り出す実行環境抽出工程と、
前記設計図面情報及びプラットフォーム情報を元にプログラムコードを自動生成するプログラムコード生成工程と、
前記自動生成されたプログラムコードをビルドするために必要となるプロジェクトファイルを自動生成するプロジェクトファイル生成工程と、
前記実行環境情報及び送信オブジェクトの型情報から最適なデータ変換関数のプログラムコードを自動生成するマーシャリング関数コード生成工程を有することを特徴とするプログラムコード生成方法。 - プログラムの構造を表現する設計図面情報をユーザが記述編集可能とする設計図面入力処理と、
前記設計図面情報で記述されるプログラムをビルド及び実行する環境を指示するプラットフォーム情報をユーザが記述編集可能とするプラットフォーム情報入力処理と、
複数のプログラム間で送受信されるデータオブジェクトの型情報を前記設計図面情報から抽出する送信オブジェクト型情報抽出処理と、
プラットフォーム情報から各プログラムの実行環境情報を取り出す実行環境抽出処理と、
前記設計図面情報及びプラットフォーム情報を元にプログラムコードを自動生成するプログラムコード生成処理と、
前記自動生成されたプログラムコードをビルドするために必要となるプロジェクトファイルを自動生成するプロジェクトファイル生成処理と、
前記実行環境情報及び送信オブジェクトの型情報から最適なデータ変換関数のプログラムコードを自動生成するマーシャリング関数コード生成処理とをコンピュータに実行させることを特徴とするコンピュータプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006034065A JP2007213417A (ja) | 2006-02-10 | 2006-02-10 | プログラムコード生成装置、方法、及びコンピュータプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006034065A JP2007213417A (ja) | 2006-02-10 | 2006-02-10 | プログラムコード生成装置、方法、及びコンピュータプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007213417A true JP2007213417A (ja) | 2007-08-23 |
Family
ID=38491777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006034065A Pending JP2007213417A (ja) | 2006-02-10 | 2006-02-10 | プログラムコード生成装置、方法、及びコンピュータプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007213417A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1970364A2 (en) | 2007-03-16 | 2008-09-17 | Sumitomo Chemical Company, Limited | Method for Producing Cycloalkanol and/or Cycloalkanone |
JP2009093455A (ja) * | 2007-10-10 | 2009-04-30 | Meidensha Corp | コンピュータ間のデータ通信方式 |
JP2017062554A (ja) * | 2015-09-24 | 2017-03-30 | ルネサスエレクトロニクス株式会社 | プログラム開発支援装置およびプログラム開発支援ソフトウェア |
CN111954854A (zh) * | 2018-05-31 | 2020-11-17 | 欧姆龙株式会社 | 支持装置以及支持程序 |
-
2006
- 2006-02-10 JP JP2006034065A patent/JP2007213417A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1970364A2 (en) | 2007-03-16 | 2008-09-17 | Sumitomo Chemical Company, Limited | Method for Producing Cycloalkanol and/or Cycloalkanone |
JP2009093455A (ja) * | 2007-10-10 | 2009-04-30 | Meidensha Corp | コンピュータ間のデータ通信方式 |
JP2017062554A (ja) * | 2015-09-24 | 2017-03-30 | ルネサスエレクトロニクス株式会社 | プログラム開発支援装置およびプログラム開発支援ソフトウェア |
CN111954854A (zh) * | 2018-05-31 | 2020-11-17 | 欧姆龙株式会社 | 支持装置以及支持程序 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5021193B2 (ja) | 拡張可能ワークフローモデルの宣言的表現 | |
JP3579823B2 (ja) | キャラクタ・ストリングを表示する方法 | |
EP1999557B1 (en) | Printing controller,gui display method, printer driver, and recording medium | |
US8086618B2 (en) | Configuration rule translation mapper | |
Huston et al. | The ACE programmer's guide: practical design patterns for network and systems programming | |
JP2007213417A (ja) | プログラムコード生成装置、方法、及びコンピュータプログラム | |
JP2007323443A (ja) | Webサービス実行方法及び情報処理装置 | |
US20060010421A1 (en) | Methods and apparatus for portable object-oriented components | |
CN115390846A (zh) | 编译构建方法、装置、电子设备和存储介质 | |
JP4942144B2 (ja) | 情報処理装置及びその制御方法、プログラム、記憶媒体 | |
JP2009223577A (ja) | ユーザインタフェースエミュレート装置及びユーザインタフェースエミュレートプログラム | |
JPH11110256A (ja) | プログラムデバッグ装置、プログラムデバッグ方法及びその方法を記録したコンピュータ読取り可能な記録媒体 | |
JP2006236375A (ja) | Webアプリケーション開発方法、開発支援システム、および該方法に係るプログラム | |
US20110099534A1 (en) | Information processing apparatus, execution program operation modification method, and recording medium | |
KR102337961B1 (ko) | 모노리틱 아키텍처와 마이크로서비스 아키텍처를 모두 지원하는 개발 프레임워크 제공 시스템, 이를 이용한 애플리케이션 개발 방법 및 이를 위한 컴퓨터 프로그램 | |
US11635998B2 (en) | Standard API for integrated development environments | |
JP2011060236A (ja) | 情報処理装置、開発支援プログラム、及びソフトウェア統合開発環境 | |
JP2017182572A (ja) | データ処理装置、情報処理装置、データ処理装置のデータ処理方法、情報処理装置のデータ処理方法、及びプログラム | |
JP2006293437A (ja) | プログラムコード生成装置及び生成方法 | |
JP7280475B2 (ja) | 情報処理装置及びその制御方法、プログラム | |
JP4371000B2 (ja) | Idlコンパイル装置、idlコンパイル方法及びidlコンパイラ | |
KR100960968B1 (ko) | Http를 사용하지 않는 웹 어플리케이션 제공 장치 및방법 | |
JP2009087128A (ja) | 分散環境用プログラム実行システム及び方法、ならびに、コンピュータプログラム | |
JP2002132502A (ja) | 言語機能解釈による分散オブジェクト自動生成システム及び方法 | |
Lestrat et al. | Comprehensive CAD support for boundary scan implementation in ASICs |