(57)【特許請求の範囲】
【請求項１】
処理装置に処理を実行させるための設計を支援する設計支援装置であって、
前記処理の内容を記述した処理コードを取得する取得手段と、
前記処理コードを複数のモジュールに分割して、分割した前記モジュール各々について、前記処理装置に構築される複数の実行環境のいずれで実行するかを決定する分割手段と、
前記モジュールに、該モジュールを実行することが決定された一の実行環境とは異なる他の実行環境で実行することが優先される部分処理が含まれる場合に、前記一の実行環境と前記他の実行環境との間で通信して前記部分処理を前記他の実行環境で実行させるための通信コードを生成する通信コード生成手段と、
前記複数のモジュールと前記通信コードとを前記処理装置に出力する出力手段と、
を備える設計支援装置。
【請求項２】
前記モジュール及び前記通信コードの形式を実行形式に変換する変換手段をさらに備え、
前記処理コード及び前記通信コードは、ソースコードである、
請求項１に記載の設計支援装置。
【請求項３】
サーバに接続される設計支援装置であって、
前記出力手段は、前記処理コードに記述される処理を前記処理装置に実行させるためのデータを前記サーバから取得して、該データと前記複数のモジュールと前記通信コードとを前記処理装置に出力する、
請求項１又は２に記載の設計支援装置。
【請求項４】
前記分割手段は、前記モジュールに記述される処理の内容から得る指標値から、該モジュールを前記複数の実行環境のいずれで実行するかを決定する、
請求項１から３のいずれか一項に記載の設計支援装置。
【請求項５】
前記指標値は、前記モジュールに記述される処理におけるライブラリの使用頻度である、
請求項４に記載の設計支援装置。
【請求項６】
前記部分処理は、ライブラリを使用する処理であり、
前記取得手段は、ライブラリと通信方法とを関連付けた設計情報を取得し、
前記通信コード生成手段は、前記部分処理において使用されるライブラリと関連付けられた通信方法により通信するための通信コードを生成する、
請求項１から５のいずれか一項に記載の設計支援装置。
【請求項７】
コンピュータが、処理の内容を記述した処理コードを複数のモジュールに分割して、分割した前記モジュール各々について、複数の実行環境のいずれで実行するかを決定するステップと、
コンピュータが、前記モジュールに、該モジュールを実行することが決定された一の実行環境とは異なる他の実行環境で実行することが優先される部分処理が含まれる場合に、前記一の実行環境と前記他の実行環境との間で通信して前記部分処理を前記他の実行環境で実行させるための通信コードを生成するステップと、
コンピュータが、前記複数のモジュールと前記通信コードとを出力するステップと、
を含む設計支援方法。
【請求項８】
コンピュータに、
処理の内容を記述した処理コードを複数のモジュールに分割して、分割した前記モジュール各々について、複数の実行環境のいずれで実行するかを決定し、
前記モジュールに、該モジュールを実行することが決定された一の実行環境とは異なる他の実行環境で実行することが優先される部分処理が含まれる場合に、前記一の実行環境と前記他の実行環境との間で通信して前記部分処理を前記他の実行環境で実行させるための通信コードを生成し、
前記複数のモジュールと前記通信コードとを出力する、
ことを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、設計支援装置、設計支援方法及びプログラムに関する。
【背景技術】
【０００２】
ＰＬＣ（Programmable Logic Controller）に代表されるコントローラとして、近年、複数のＯＳや複数のプロセッサといった複数の実行環境を備えるコンピュータが採用されるケースが多くなっている。このようなケースにおいて、設計者は、利用可能なライブラリ、演算性能等の、実行環境の特性を考慮して、各実行環境で動作するアプリケーションを設計する必要があり、設計作業が煩雑となっていた。【０００３】
そこで、異なる実行環境に対応するため、ソースコードにおける実行環境による差異を自動的に変更する方法が提案されている（例えば、特許文献１を参照）。特許文献１には、生成したソースコードに対し、使用するプラットフォームに対応した加工ルールに基づいた加工を施し、プラットフォームに対応するソースコードを出力する装置が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１６５３４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載の技術は、使用する１つのプラットフォーム上で動作するようにソースコードを変更するものであった。したがって、複数の実行環境を備えるコンピュータへの適用については、考慮されておらず、適用する場合は、どの処理をどの実行環境で実行させるか等を考慮する必要があり、設計者の負担軽減は十分ではなかった。【０００６】
本発明は、上記の事情に鑑みてなされたものであり、複数の実行環境が含まれるシステムにおいて、アプリケーションの設計を容易とすることを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明の設計支援装置は、処理装置に処理を実行させるための設計を支援する設計支援装置であって、処理の内容を記述した処理コードを取得する取得手段と、処理コードを複数のモジュールに分割して、分割したモジュール各々について、処理装置に構築される複数の実行環境のいずれで実行するかを決定する分割手段と、モジュールに、該モジュールを実行することが決定された一の実行環境とは異なる他の実行環境で実行することが優先される部分処理が含まれる場合に、一の実行環境と他の実行環境との間で通信して部分処理を他の実行環境で実行させるための通信コードを生成する通信コード生成手段と、複数のモジュールと通信コードとを処理装置に出力する出力手段と、を備える。
【発明の効果】
【０００８】
本発明によれば、処理コードから分割されたモジュール各々について、複数の実行環境のいずれで実行するかが決定され、モジュールに、当該モジュールを実行する実行環境とは異なる他の実行環境で実行することが優先される部分処理が含まれる場合には、この部分処理を他の実行環境で実行させるための通信コードが生成される。このため、処理コードを構成するモジュールを複数の実行環境に配分することに加えて、モジュールに含まれる部分処理を、より適当な実行環境で実行することができる。したがって、複数の実行環境が含まれるシステムにおいて、設計者は、実行環境の差異を意識することなくアプリケーションを設計すればよく、アプリケーションの設計を容易とすることができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態に係る処理システムのブロック図
【図２】実施の形態に係る処理コードの一例を示す図
【図３】実施の形態に係る処理コードの分割、実行環境の決定、及び通信コードの生成の流れを示す図
【図４】実施の形態に係る処理装置の構成を示す図
【図５】実施の形態に係る設計支援装置及び処理装置のハードウェア構成を示す図
【図６】設計支援装置及び処理装置のハードウェア構成の変形例を示す図
【図７】実施の形態に係る設計支援処理のフローチャート
【図８】実施の形態に係る実行環境選択テーブルの一例を示す図
【図９】実施の形態に係る通信方法選択テーブルの一例を示す図
【図１０】実施の形態に係るモジュール毎のライブラリの使用状況の例を示す第１の図
【図１１】実施の形態に係るモジュール毎のライブラリの使用状況の例を示す第２の図
【図１２】実施の形態に係るモジュール毎のライブラリの使用状況の例を示す第３の図
【図１３】実施の形態に係る処理装置が複数ある変形例を示す図
【図１４】実施の形態に係る重み付け和が設計される実行環境選択テーブルの変形例を示す図
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態に係る処理システム１０００について、図面を参照しつつ詳細に説明する。
【００１１】
実施の形態．
図１には、本実施の形態に係る処理システム１０００の概要が示されている。処理システム１０００は、工場において構築される生産システムであって、材料加工装置、リフロー炉及びベルトコンベアに代表される機器により一連の生産処理を実行して製品を生産する。このような生産処理は、多数の生産機械を制御する処理装置２０が、ユーザ１００によって設計された所望の処理を実行することで達成される。ただし、処理システム１０００は、これに限定されず、工場以外の施設に設置されてもよいし、生産システム以外のシステムであってもよい。
【００１２】
処理システム１０００は、処理装置２０に特定の処理を実行させるためのアプリケーションプログラムの設計を支援する設計支援装置１０と、プロセッサを有し複数の実行環境が構築される処理装置２０と、設計支援装置１０によって参照されるサーバ４０と、を有している。設計支援装置１０と処理装置２０とは、専用線を介して接続されて有線通信を行う。ただし、設計支援装置１０と処理装置２０とは、互いに無線通信を行ってもよい。また、設計支援装置１０は、インターネットに代表されるネットワークを介してサーバ４０に接続される。
【００１３】
設計支援装置１０は、ユーザ１００から予め入力された設計情報１０１に基づいて、ユーザ１００から入力される処理コード１０２に記述される処理を処理装置２０に効率よく実行させる装置である。設計支援装置１０は、図１に示されるように、その機能として、ユーザ１００によって入力されるデータを取得する取得部１１と、入力された処理コード１０２を解析する解析部１２と、処理装置２０に実際に実行させるコードを生成するコード生成部１３と、生成されたコードを実行に適した形式に変換する変換部１４ａ，１４ｂ，１４ｃと、コードを処理装置２０に出力する出力部１５と、設計情報１０１が記憶される記憶部１６と、を有している。
【００１４】
取得部１１は、ユーザインタフェースに相当し、ユーザ１００が情報を入力するための入力デバイスとユーザに情報を提示する出力デバイスとを含む。取得部１１は、外部記憶装置からユーザによって指定されたデータを読み出すための端子又は通信インタフェース回路を含んでもよい。さらに、取得部１１は、ユーザインタフェースの機能を発揮することなく、外部のユーザインタフェース端末と通信するための通信インタフェース回路であってもよい。取得部１１は、ユーザ１００によって入力された設計情報１０１を取得して、記憶部１６に格納する。設計情報１０１の詳細については後述する。また、取得部１１は、ユーザ１００によって入力された処理コード１０２を取得して、解析部１２に出力する。処理コード１０２は、処理装置２０に実行させるアプリケーションプログラムの内容を記述したソースコードである。処理コード１０２に記述される処理は、設計者によって設計される。ただし、処理コード１０２は、ソースコードに限定されず、他のコードであってもよいしデータを含んでいてもよい。取得部１１は、請求項の取得手段として機能する。
【００１５】
解析部１２は、処理コード１０２を読み取って解析し、解析結果を出力する。詳細には、解析部１２は、処理コード１０２を構成する複数のモジュール各々を解析して、各モジュールを、処理装置２０に構築される複数の実行環境のいずれかに割り当てるための指標を求める。詳細には、解析部１２は、処理コード１０２に含まれる関数をモジュールとして扱って、複数のモジュール各々で参照されているライブラリの使用回数を指標としてカウントする。ライブラリには、その種類に応じて実行に適した実行環境があるため、モジュールに記述される処理におけるライブラリの使用回数は、モジュールを実行環境に割り当てるための指標となる。図２には、処理コード１０２を構成するモジュールとしての関数の一例が示されており、関数においてライブラリを使用している行が矢印で示されている。なお、モジュールは、関数に限定されず、他のモジュールであってもよい。
【００１６】
ここで、処理装置２０に構築される実行環境は、プログラムを実行する環境を意味し、ＯＳ（Operating System）とプロセッサとの組み合わせが実行環境に相当する。すなわち、処理装置２０で複数のＯＳが同時に起動し、ＯＳを実行するプロセッサが当該ＯＳ上でアプリケーション及びプログラムを実行する。単一のプロセッサが異なるＯＳを同時に実行する場合には、これらのＯＳは異なる実行環境を形成することとなる。また、同一のＯＳが異なるプロセッサによって実行される場合には、ＯＳが実質的に同一であっても、異なる実行環境が形成されることとなる。実行環境は、プラットフォームともいう。
【００１７】
また、ライブラリは、処理コード１０２に記述される処理を実行するプロセッサが呼び出して使用する外部プログラムである。処理コード１０２には、ライブラリの具体的な内容は記述されることなく、ライブラリを呼び出すためのライブラリ識別子、名称、又はアドレスが記述される。ライブラリは、ＯＳに含まれている場合もあるし、後述のソフトウェアコンポーネント４１として外部から提供される場合もある。
【００１８】
図１に戻り、コード生成部１３は、処理コード１０２を分割する分割部１３１と、通信コードを生成する通信コード生成部１３２と、を有している。
【００１９】
分割部１３１は、図３に示されるように、処理コード１０２を複数のモジュールに分割して、解析部１２による解析の結果に基づいて、分割したモジュール各々について、処理装置２０の複数の実行環境のいずれで実行するかを決定する。本実施の形態に係る分割部１３１は、モジュールにおいて最も多く使用されるライブラリに適した実行環境を、当該モジュールを実行する実行環境として決定する。また、設計情報１０１によりライブラリに対応する実行環境が指定される。分割部１３１は、請求項の分割手段として機能する。
【００２０】
通信コード生成部１３２は、図３に示されるように、通信コードを生成する。モジュールを実行する実行環境は、複数の実行環境のうちいずれか一の実行環境に決定されるが、この一の実行環境でモジュールに含まれる処理すべてを実行すると効率が悪いケース、及び、この一の実行環境ではモジュールのすべてを実行することができないケースがある。そこで、決定された一の実行環境とは異なる他の実行環境で実行することが優先される部分的な処理がモジュールに含まれている場合に、通信コード生成部１３２は、このような部分処理を他の実行環境で実行するための通信コードを生成する。部分処理は、他の実行環境で実行することが設計情報１０１により設計されているライブラリを使用する処理である。通信コードは、モジュールに含まれる処理の内、他の実行環境で実行する部分処理を特定するための情報を含む。また、通信コードは、一の実行環境と他の実行環境との間で通信を実現し、特定された部分処理を他の実行環境で実行させるためのソースコードであって、後述の通信方法の指定及びラッパー関数の記述を含む。モジュールと通信コードとを組み合わせれば、モジュールの大部分を一の実行環境で実行しつつ、部分処理を他の実行環境で実行することができる。通信コード生成部１３２は、請求項の通信コード生成手段として機能する。
【００２１】
図１に戻り、変換部１４ａ，１４ｂ，１４ｃはそれぞれ、処理装置２０に構築される複数の実行環境それぞれに対応する。以下では、変換部１４ａ，１４ｂ，１４ｃを総称して変換部１４と表記する。変換部１４は、対応する実行環境で実行されるモジュール及び通信コードをコード生成部１３から取得して、その形式を実行形式に変換する。本実施の形態に係る変換部１４は、ソースコードからオブジェクト形式のコードを生成するコンパイラである。以下では、処理装置２０にて直接実行されるコードを実行ファイルという。変換部１４から出力されるモジュール及び通信コードが実行ファイルに相当する。変換部１４は、請求項の変換手段として機能する。
【００２２】
出力部１５は、複数のモジュールと通信コードとを処理装置２０に出力する。その際に、出力部１５は、記憶部１６に格納されている設計情報１０１を読み出し、ユーザ１００により指定された内容に基づいて、変換部１４から出力されたコードを処理装置２０に実行させるためのソフトウェアコンポーネント及びＯＳのイメージファイルをサーバ４０から取得する。出力部１５は、処理装置２０上に複数の実行環境を構築して、モジュール、通信コード、ソフトウェアコンポーネント及びＯＳを、複数の実行環境それぞれに配置する。詳細には、出力部１５は、実行環境それぞれを構築するために必要なソフトウェアコンポーネント及びＯＳとともに、実行環境それぞれを構築するためのプロセッサを指定する情報と、構築を指示する制御命令と、を処理装置２０に出力することで、処理装置２０に複数の実行環境を構築させる。さらに、出力部１５は、モジュール及び通信コードを含む実行ファイルを処理装置２０に実行させる。出力部１５は、請求項の出力手段として機能する。
【００２３】
処理装置２０には、図４に示されるように、出力部１５によって複数の実行環境２１ａ，２１ｂ，２１ｃが構築される。実行環境２１ａ，２１ｂ，２１ｃはそれぞれ、一又は複数のモジュールが集約された実行ファイル２２と、サーバ４０からダウンロードされたソフトウェアコンポーネント４１及びＯＳ４２と、通信コードが実行されることで実現される、実行環境間で通信するための通信部２３と、を有している。なお、図４では、実行ファイル２２と通信部２３とを区別しているが、実行ファイル２２に含まれる通信コードを実行することで通信部２３が機能する。実行環境２１ａ，２１ｂ、２１ｃは、処理装置２０のハイパーバイザ２４上に形成される。このハイパーバイザ２４は、処理装置２０のハードウェア２５が協働することで実現される。
【００２４】
図５には、設計支援装置１０及び処理装置２０のハードウェア構成の一例が示されている。図５に示されるように、設計支援装置１０及び処理装置２０は、プロセッサ３１、主記憶部３２、補助記憶部３３、入力部３４、出力部３５及び通信部３６を有するコンピュータ装置として構成される。主記憶部３２、補助記憶部３３、入力部３４、出力部３５及び通信部３６はいずれも、内部バス３７を介してプロセッサ３１に接続されている。
【００２５】
プロセッサ３１は、ＣＰＵ（Central Processing Unit）又はＭＰＵ（Micro Processing Unit）を含む。プロセッサ３１は、補助記憶部３３に記憶されるプログラムＰ１を実行することにより、種々の機能を実現して、後述の処理を実行する。
【００２６】
主記憶部３２は、ＲＡＭ（Random Access Memory）を含む。主記憶部３２には、補助記憶部３３からプログラムＰ１がロードされる。そして、主記憶部３２は、プロセッサ３１の作業領域として用いられる。
【００２７】
補助記憶部３３は、ハードディスク及びフラッシュメモリに代表される不揮発性メモリを含む。補助記憶部３３は、プログラムＰ１の他に、プロセッサ３１の処理に用いられる種々のデータを記憶する。補助記憶部３３は、プロセッサ３１の指示に従って、プロセッサ３１によって利用されるデータをプロセッサ３１に供給し、プロセッサ３１から供給されたデータを記憶する。
【００２８】
入力部３４は、入力キー及びポインティングデバイスに代表される入力デバイスを含む。入力部３４は、ユーザ１００によって入力された情報を取得して、取得した情報をプロセッサ３１に通知する。
【００２９】
出力部３５は、ＬＣＤ（Liquid Crystal Display）及びスピーカに代表される出力デバイスを含んで構成される。出力部３５は、プロセッサ３１の指示に従って、種々の情報を設計支援装置１０及び処理装置２０のユーザに提示する。
【００３０】
通信部３６は、外部の装置と通信するためのＮＩＣ（Network Interface Controller）を含む。通信部３６は、外部の装置から信号を受信して、この信号に含まれるデータをプロセッサ３１へ出力する。また、通信部３６は、プロセッサ３１から出力されたデータを示す信号を外部の装置へ送信する。
【００３１】
なお、図６に示されるように、入力部３４及び出力部３５を省いて設計支援装置１０及び処理装置２０を構成してもよい。入力部３４及び出力部３５が省かれる場合には、入力部３４及び出力部３５に代えて、通信部３６が外部のユーザインタフェース端末と通信することにより、入力部３４及び出力部３５の機能を発揮することができる。
【００３２】
また、図５では、プロセッサ３１が１個である例が示されていた。処理装置２０のプロセッサ３１が１個である場合にも、図４に示されるように複数の実行環境を構築することができる。ただし、これには限定されず、図６に示されるように、設計支援装置１０及び処理装置２０は、複数のプロセッサ３１を有していてもよいし、処理装置２０において各プロセッサを１つの実行環境に対応させて、複数の実行環境を実現してもよい。
【００３３】
図１に示される設計支援装置１０の機能は、図５，６に示されるプロセッサ３１がプログラムＰ１を実行し、ハードウェア構成が協働することによって実現される。図５を例に詳細を説明すると、図１中の取得部１１は、主として図５中の入力部３４及び出力部３５によって実現される。また、解析部１２、コード生成部１３及び変換部１４は、主としてプロセッサ３１によって実現される。出力部１５は、主としてプロセッサ３１及び通信部３６によって実現される。記憶部１６は、主として補助記憶部３３によって実現される。
【００３４】
続いて、設計支援装置１０によって実行される処理について図６〜１２を用いて詳細に説明する。設計支援装置１０は、ユーザによってプログラムＰ１が実行されると（図５，６参照）、図７に示される設計支援処理を開始する。
【００３５】
設計支援処理では、設計支援装置１０は、ユーザ１００から設計情報１０１を取得する（ステップＳ１）。具体的には、取得部１１が、ユーザ１００に対して設計情報１０１の入力を促すことにより、設計情報１０１を取得して、記憶部１６に格納する。
【００３６】
設計情報１０１には、図８に例示される実行環境選択テーブルと、図９に例示される通信方法選択テーブルと、が含まれる。
【００３７】
実行環境選択テーブルは、実行環境を選択するためのテーブルであって、図８に示されるように、ライブラリ名と、ライブラリに適した実行環境のＯＳと、ライブラリに適した実行環境のプロセッサと、ライブラリに適した実行環境の識別子と、を関連付けたテーブルである。例えば、図８に示されるテーブルの１行目は、「モーション制御ライブラリ」を実行するのに適した実行環境が、ＯＳが「ＯＳ１」でありプロセッサが「Ｐｒ１」である実行環境２１ａであることを意味する。なお、実行環境の識別子のうち２１ａ〜２１ｃは、図１に示される符号に対応している。
【００３８】
通信方法選択テーブルは、モジュールの一部で使用されるライブラリを、当該モジュールを実行する実行環境とは異なる他の実行環境で実行するための通信方法を選択するためのテーブルである。通信方法選択テーブルは、図９に示されるように、ライブラリ名と、当該ライブラリを実行するために実行環境間で通信する方法と、を関連付けたテーブルである。例えば、図９に示されるテーブルの１行目は、「モーション制御ライブラリ」を使用するためには、実行環境間で「共有メモリ」を用いた通信方法を採用することが示されている。なお、図８では、「モーション制御ライブラリ」を実行するのは実行環境２１ａであることが指定されているため、「モーション制御ライブラリ」を使用するために、他の実行環境から実行環境２１ａに通信して、実行環境２１ａにおいて「モーション制御ライブラリ」が実行されることとなる。
【００３９】
実行環境選択テーブル及び通信方法選択テーブルに示されるように、ユーザ１００は、予め、種々のライブラリを使用する実行環境の構成としてＯＳ及びプロセッサを指定し、実行環境間で通信するときの通信方法を指定する。
【００４０】
図７に戻り、ステップＳ１に続いて、設計支援装置１０は、処理コード１０２を取得する（ステップＳ２）。具体的には、取得部１１が、ユーザに対して処理コード１０２の入力を促すことにより、処理コード１０２を取得する。
【００４１】
次に、設計支援装置１０は、モジュール毎に実行環境を決定するための指標値を算出する（ステップＳ３）。具体的には、解析部１２が、処理コード１０２に含まれるモジュールを読み出して、モジュール毎に、ライブラリの使用回数を指標値として計数する。図１０には、本実施の形態において１つのモジュールについて算出された指標値の一例が示されている。この例では、指標値は、９種のライブラリそれぞれの使用回数を含むため、ベクトル値に相当することとなる。このような指標値が、各モジュールについて算出される。
【００４２】
次に、設計支援装置１０は、処理コード１０２をモジュール単位に分割し、指標値に基づいて各モジュールを実行する実行環境を選択する（ステップＳ４）。具体的には、分割部１３１が、各モジュールの指標値から、各モジュールを実行する実行環境を決定する。図１０に示される指標値については、「Ｉ／Ｏアクセスライブラリ」の使用回数が最大となっている。また、図８の実行環境選択テーブルを参照すると、「Ｉ／Ｏアクセスライブラリ」には実行環境２１ａが適していることがわかる。そこで、分割部１３１は、図１０に示される指標値が算出されたモジュールを実行環境２１ａで実行することを決定する。このように、分割部１３１は、実行環境選択テーブルを記憶部１６から読み出して、使用回数が最大のライブラリに適した実行環境を選択する。
【００４３】
次に、設計支援装置１０は、通信コードを生成する（ステップＳ５）。図１０に示される指標値が算出されたモジュールは、上述のように実行環境２１ａで実行されることが決定された。このモジュールでは、「Ｉ／Ｏアクセスライブラリ」以外にも、「データベースライブラリ」及び「ＧＵＩライブラリ」も使用されている。しかしながら、図８の実行環境選択テーブルを参照すると、「データベースライブラリ」は実行環境２１ｂでの使用が指定されており、「ＧＵＩライブラリ」は実行環境２１ｃでの使用が指定されている。そこで、通信コード生成部１３２は、モジュールを実行環境２１ａで実行しつつ、「データベースライブラリ」を実行環境２１ｂで使用するための環境間通信処理の記述及びラッパー関数を含む通信コードを生成し、「ＧＵＩライブラリ」を実行環境２１ｃで使用するための環境間通信処理の記述及びラッパー関数を含む通信コードを生成する。
【００４４】
ここで、「データベースライブラリ」を実行環境２１ｂで使用するための通信方法に関して、図９の通信方法選択テーブルを参照すると、ＴＣＰ（Transmission Control Protocol）通信を用いることが指定されている。そこで、通信コード生成部１３２は、実行環境２１ａと実行環境２１ｂとの間でＴＣＰ通信をするための通信コードを生成する。また、「ＧＵＩライブラリ」を実行環境２１ｃで使用するための通信方法に関して、図９を参照すると、ＵＤＰ（User Datagram Protocol）通信を用いることが指定されている。そこで、通信コード生成部１３２は、実行環境２１ａと実行環境２１ｃとの間でＵＤＰ通信をするための通信コードを生成する。
【００４５】
なお、モジュールが実行される実行環境と他の実行環境との間で通信する必要がない場合には、通信コード生成部１３２は、通信コードを生成しない。例えば、図１１に示される指標値が算出されたモジュールでは、「Ｉ／Ｏアクセスライブラリ」のみが使用されていて、他のライブラリは使用されていない。このため、このモジュールに記述される処理はすべて、「Ｉ／Ｏアクセスライブラリ」に適した実行環境２１ａで実行すればよい（図８参照）。また、図１２に示される指標値が算出されたモジュールでは、「Ｉ／Ｏアクセスライブラリ」の他に「モーション制御ライブラリ」も使用されている。しかしながら、図８を参照すると、「Ｉ／Ｏアクセスライブラリ」及び「モーション制御ライブラリ」のいずれも実行環境２１ａで実行することが指定されているため、このモジュールに記述される処理はすべて実行環境２１ａで実行すればよい。
【００４６】
図７に戻り、ステップＳ５に続いて、設計支援装置１０は、モジュール及び通信コードの形式を変換して、形式が変換されたモジュール及び通信コードを集約した実行ファイル２２を生成する（ステップＳ６）。具体的には、変換部１４が、モジュール及び通信コードをコンパイルする。
【００４７】
次に、設計支援装置１０は、処理装置２０に実行環境を構築する（ステップＳ７）。具体的には、出力部１５が、図８に示される実行環境選択テーブルを参照して、実行環境の構築に必要なデータとしてソフトウェアコンポーネント及びＯＳをサーバ４０からダウンロードして、処理装置２０上に実行環境を構築する。例えば、出力部１５は、実行環境選択テーブルにおいて指定されたＯＳが対応するプロセッサによって実行されているか否かを処理装置２０に問い合わせることで、既に構築されている実行環境を確認する。未構築の実行環境があれば、出力部１５は、サーバ４０から必要なＯＳの最新版をダウンロードして、処理装置２０に出力する。また、出力部１５は、実行環境選択テーブルに示される各種プロセッサを処理装置２０がハードウェアとして有しているかを処理装置２０に問い合わせることで確認する。処理装置２０がハードウェアとして有していないプロセッサがあれば、出力部１５は、ユーザ１００に確認した上で、処理装置２０上でプロセッサをエミュレートするためのソフトウェアコンポーネントをサーバ４０からダウンロードする。
【００４８】
次に、設計支援装置１０は、モジュールと通信コードとを処理装置２０に出力して、処理コード１０２に記述された処理を処理装置２０に実行させる（ステップＳ８）。具体的には、出力部１５が、実行ファイルを複数の実行環境それぞれに配置して、それぞれの実行環境で実行ファイルを実行させる。
【００４９】
以上、説明したように、分割部１３１が、処理コード１０２から分割されたモジュール各々について、複数の実行環境のいずれで実行するかを決定する。そして、モジュールに、当該モジュールを実行する実行環境とは異なる他の実行環境で実行することが優先される部分処理が含まれる場合には、通信コード生成部１３２が、この部分処理を他の実行環境で実行させるための通信コードを生成する。このため、処理コード１０２を構成するモジュールを複数の実行環境に配分するのに加えて、モジュールに含まれる部分処理を、より適当な実行環境で実行することができる。したがって、複数の実行環境が含まれる処理システム１０００において、設計者は、実行環境の差異を意識することなくアプリケーションを設計すればよく、アプリケーションの設計を容易とすることができる。さらに、負荷分散の効率を向上させることができる。
【００５０】
また、分割部１３１が処理コード１０２を分割して、モジュールに記述される処理の内容から得た指標値から、当該モジュールを複数の実行環境のいずれで実行するかを決定した。このため、ユーザ１００が処理コード１０２を分割してモジュールを実行する実行環境を決定する必要がなく、ユーザ１００は、実行環境の特性を意識することなくアプリケーションを設計することができる。したがって、ユーザ１００が開発作業に熟練する必要がなくなる。また、開発工数を削減することができる。
【００５１】
本実施の形態に係る分割部１３１は、モジュールにおけるライブラリの使用頻度を指標値として、この使用頻度が最も高いライブラリが最適に動作する実行環境を、当該モジュールを実行する実行環境として決定した。一般的に、処理コード１０２には処理の概要的な流れを記述し、比較的負荷が高い処理はライブラリを使用して達成するケースが多い。このため、ライブラリの使用頻度に応じて実行環境を選択すれば、適当な実行環境でモジュールを実行することが期待できる。また、ユーザ１００が実行環境の特性を意識することなく、アプリケーションを容易に開発することができる。ここで、実行環境の特性には、例えば、ＯＳ毎の使用可能なライブラリ、リアルタイム性、演算性能が含まれる。
【００５２】
また、通信コード生成部１３２は、通信コードを生成する。具体的には、通信コード生成部１３２は、部分処理において使用されるライブラリと通信方法選択テーブルにおいて関連付けられた通信方法により通信するための通信コードを生成する。このため、ユーザ１００は、実行環境間における連携処理を実現するコードを作成する必要がない。したがって、ユーザ１００が開発作業に熟練する必要がなくなる。また、開発工数を削減することができる。
【００５３】
また、出力部１５は、実行ファイル２２を処理装置２０に実行させるために必要なデータとして、ソフトウェアコンポーネント及びＯＳを準備する。このため、ユーザ１００によるソフトウェアコンポーネント及びＯＳの準備、及び配置設定が不要となる。したがって、ユーザ１００が開発作業に熟練する必要がなくなる。また、開発工数を削減することができる。
【００５４】
以上、本発明の実施の形態について説明したが、本発明は上記実施の形態によって限定されるものではない。
【００５５】
例えば、上記実施の形態に係る処理システム１０００は、工場に設置される生産システムであったが、これには限定されない。処理システム１０００は、病院及び学校に代表される公共施設、住宅、又はオフィスビルにおいて構築されてもよい。また、処理システム１０００は、生産システムとは異なる加工システム、検査システム、制御システム、又はその他の処理システムであってもよい。
【００５６】
例えば、上記実施の形態では、処理装置２０が１台であることが想定されていたが、これには限定されない。図１３に示されるように、処理装置２０に構築される実行環境２１ａ，２１ｂ，２１ｃと、処理装置２０ａに構築される実行環境２１ｄ，２１ｅ，２１ｆと、に処理コード１０２の内容を実行させてもよい。
【００５７】
また、上記実施の形態では、処理システム１０００がサーバ４０を含んでいたが、これには限定されない。実行環境の構築に必要なソフトウェアコンポーネント及びＯＳをユーザ１００が用意できれば、サーバ４０を省いて処理システム１０００を構成してもよい。
【００５８】
また、上記実施の形態に係る通信コード生成部１３２が生成した通信コードは、ソースコードであったが、これには限定されず、ソフトウェアコンポーネントであってもよい。
【００５９】
また、上記実施の形態では、設計支援装置１０は、コードの形式を変換する変換部１４を有していたが、これには限定されず、変換部１４を省略して設計支援装置１０を構成してもよい。例えば、処理コード１０２がインタプリタ型言語で記述される場合、及び、処理コード１０２が低級言語で記述される場合においては、変換部１４を省略しても、設計支援装置１０は、上記実施の形態と同様の効果を奏することとなる。
【００６０】
また、上記実施の形態では、設計支援装置１０の出力部１５が設計情報１０１に基づいて実行環境を構築したが、これには限定されない。予め構築された複数の実行環境を備える処理装置２０に、設計支援装置１０が実行ファイルを出力してもよい。
【００６１】
また、上記実施の形態に係る設計支援処理では、処理コード１０２を入力する度に、事前に設計情報１０１を入力するフローが示されたが、これには限定されない。一度設定した設計情報１０１を流用して、処理コード１０２に関するステップＳ２以降の処理を繰り返し実行してもよい（図７参照）。
【００６２】
また、上記実施の形態では、使用回数が最大であるライブラリに対応する実行環境が、モジュールを実行する実行環境として選択されたが、これには限定されない。例えば、ライブラリ毎に重み付け係数を設定し、実行環境毎に重み付け和を求めて、重み付け和が最大となる実行環境を選択してもよい。図１４には、ライブラリ毎に重み付け係数を設定した例が示されている。図１０に示される指標値では、「Ｉ／Ｏアクセスライブラリ」、「データベースライブラリ」及び「ＧＵＩライブラリ」それぞれの使用回数が６，３，２である。図１４を参照して、実行環境毎に重み付け和を求めると、実行環境２１ａの重み付け和が６．０（＝６×１．０）、実行環境２１ｂの重み付け和が４．５（＝３×１．５）、実行環境２１ｃの重み付け和が７．６（＝２×３．８）となる。なお、実行環境２１ｄの重み付け和はゼロである。そこで、分割部１３１は、重み付け和が最大の実行環境２１ｃを選択してもよい。
【００６３】
また、上記実施の形態では、ライブラリの使用回数が指標値とされたが、これには限定されない。例えば、モジュールの行数或いは文字数を指標値としてもよい。
【００６４】
また、上記実施の形態では、処理コード１０２に含まれる関数がモジュールとして扱われたが、これには限定されない。処理コード１０２が、ソースコードが記述された複数のファイルを含み、それぞれのファイルに複数の関数が記述されている場合には、このファイルをモジュールとして扱うことも考えられる。
【００６５】
また、上記実施の形態に係る処理コード１０２は、ソースコードであったが、これには限定されない。例えば、処理コード１０２は、ラダーに代表される制御用言語、又は、プロファイルであってもよい。
【００６６】
また、上記実施の形態では、モジュールのうち他の実行環境で実行されることが優先される部分処理は、設定情報１０１により指定されたが、これには限定されない。例えば、通信コード生成部１３２が、実行環境の仕様を参照して、モジュールを実行する実行環境では実行が不可能とされるライブラリを抽出するとともに、抽出したライブラリの実行が可能な他の実行環境を判別してもよい。
【００６７】
また、上記実施の形態では、実行環境間における通信方法が、設計情報１０１により指定されたが、これには限定されない。例えば、処理装置１０１が十分な容量のＲＡＭを備える場合には、すべての通信を共有メモリで行ってもよい。
【００６８】
また、設計支援装置１０の機能は、専用のハードウェアによっても、また、通常のコンピュータシステムによっても実現することができる。
【００６９】
例えば、プロセッサ３１によって実行されるプログラムＰ１を、コンピュータ読み取り可能な非一時的な記録媒体に格納して配布し、そのプログラムＰ１をコンピュータにインストールすることにより、上述の処理を実行する装置を構成することができる。このような記録媒体としては、例えばフレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disc Read−Only Memory）、ＤＶＤ（Digital Versatile Disc）、ＭＯ（Magneto−Optical Disc）が考えられる。
【００７０】
また、プログラムＰ１をインターネットに代表される通信ネットワーク上のサーバ装置が有するディスク装置に格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロードするようにしてもよい。
【００７１】
また、通信ネットワークを介してプログラムＰ１を転送しながら起動実行することによっても、上述の処理を達成することができる。
【００７２】
さらに、プログラムＰ１の全部又は一部をサーバ装置上で実行させ、その処理に関する情報をコンピュータが通信ネットワークを介して送受信しながらプログラムを実行することによっても、上述の処理を達成することができる。
【００７３】
なお、上述の機能を、ＯＳ（Operating System）が分担して実現する場合又はＯＳとアプリケーションとの協働により実現する場合等には、ＯＳ以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロードしてもよい。
【００７４】
また、設計支援装置１０の機能を実現する手段は、ソフトウェアに限られず、その一部又は全部を、回路を含む専用のハードウェアによって実現してもよい。
【００７５】
本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施の形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【産業上の利用可能性】
【００７６】
本発明は、処理装置に実行させる処理を複数の実行環境に分散させることに適している。
【符号の説明】
【００７７】
１０００  処理システム、  １００  ユーザ、  １０１  設計情報、  １０２  処理コード、  １０  設計支援装置、  １１  取得部、  １２  解析部、  １３  コード生成部、  １３１  分割部、  １３２  通信コード生成部、  １４，１４ａ，１４ｂ，１４ｃ  変換部、  １５  出力部、  １６  記憶部、  ２０，２０ａ  処理装置、  ２１，２１ａ，２１ｂ，２１ｃ，２１ｄ，２１ｅ，２１ｆ  実行環境、  ２２  実行ファイル、  ２３  通信部、  ２４  ハイパーバイザ、  ２５  ハードウェア、  ３１  プロセッサ、  ３２  主記憶部、  ３３  補助記憶部、  ３４  入力部、  ３５  出力部、  ３６  通信部、  ３７  内部バス、  ４０  サーバ、  ４１  ソフトウェアコンポーネント、  ４２  ＯＳ、  Ｐ１  プログラム。
【要約】
設計支援装置（１０）は、処理装置（２０）に処理を実行させるための設計を支援し、取得部（１１）と分割部（１３１）と通信コード生成部（１３２）と出力部（１５）とを備える。取得部（１１）は、処理の内容を記述した処理コード（１０２）を取得する。分割部（１３１）は、処理コード（１０２）を複数のモジュールに分割し、分割したモジュール各々について、処理装置（２０）に構築される複数の実行環境のいずれで実行するかを決定する。通信コード生成部（１３２）は、モジュールに、該モジュールを実行することが決定された一の実行環境とは異なる他の実行環境で実行することが優先される部分処理が含まれる場合に、一の実行環境と他の実行環境との間で通信して部分処理を前記他の実行環境で実行させるための通信コードを生成する。出力部（１５）は、複数のモジュールと通信コードとを処理装置（２０）に出力する。【図１】
0006452904.tif 000002
【図２】
0006452904.tif 000003
【図３】
0006452904.tif 000004
【図４】
0006452904.tif 000005
【図５】
0006452904.tif 000006
【図６】
0006452904.tif 000007
【図７】
0006452904.tif 000008
【図８】
0006452904.tif 000009
【図９】
0006452904.tif 000010
【図１０】
0006452904.tif 000011
【図１１】
0006452904.tif 000012
【図１２】
0006452904.tif 000013
【図１３】
0006452904.tif 000014
【図１４】
0006452904.tif 000015