ハードウェアの動作を制御する制御モジュールを複数記憶する制御モジュール記憶手段と、前記複数の制御モジュールの1つ以上で構成される制御プログラムのアーキテクチャに共通したプログラム構造であるアーキテクチャパタンを表すパタン情報を複数記憶するパタン情報記憶手段と、前記記憶されたパタン情報を選択するパタン選択情報を取得するパタン選択情報取得手段と、前記パタン選択情報で選択されたパタン情報で表されるアーキテクチャパタンを有する制御プログラムの実行時間に課される時間的制限を表す制限情報を取得する制限情報取得手段と、前記選択されたパタン情報で表されるアーキテクチャパタンと、前記アーキテクチャパタンを有する制御プログラムのプログラム構造と、前記制御プログラムを構成する制御モジュールの実行時間と、前記取得された制限情報で表される時間的制限と、を対応付けて表示部に表示させる表示制御手段と、前記制御プログラムのプログラム構造に対する変更内容を記述する記述情報を取得する記述情報取得手段と、前記取得された記述情報に基づいて、前記制御プログラムのプログラム構造を編集するプログラム編集手段と、前記編集されたプログラム構造に基づいて前記制御モジュール記憶手段に記憶された制御モジュールを連結することで、ハードウェアを制御する制御プログラムを生成するプログラム生成手段と、を備える、制御プログラム生成装置。前記制限情報は、前記制御プログラムを構成する複数の制御モジュールの総実行時間の制限を表し、前記プログラム編集手段は、前記制限情報で表される総実行時間の制限が課せられた複数の制御モジュールのそれぞれに対して実行時間を推定する実行時間推定手段と、前記制限情報で表される総実行時間の制限と、前記実行時間推定手段で推定された実行時間とに基づいて、前記制限に対する余裕時間を算出する余裕時間算出手段と、を有し、前記表示制御手段は、前記余裕時間算出手段で算出された余裕時間を表示するように前記表示部を制御する、請求項1に記載の制御プログラム生成装置。前記制御モジュールは、前記ハードウェアの制御を行わない、又は前記ハードウェアを待機させる制御を行う待機モジュールを含み、前記プログラム編集手段は、前記余裕時間算出手段で算出された余裕時間が正の値である場合に、前記複数の制御モジュールの実行順序の先頭、中間、及び最後のいずれかにおいて、実行時間の長さが前記余裕時間の長さに等しい待機モジュールが実行されるように、前記制御プログラムのプログラム構造を編集するプログラム構造編集手段を、さらに有する、請求項2に記載の制御プログラム生成装置。前記生成された制御プログラムの実行を検証する検証範囲を表す検証範囲情報を取得する検証範囲情報取得手段と、前記取得された検証範囲情報で表される検証範囲で、前記生成された制御プログラムの実行を模擬するプログラム実行模擬手段と、前記プログラム実行模擬手段の模擬結果から、前記生成された制御プログラムを構成する制御モジュールを識別する識別情報と、前記制御モジュールが模擬実行された時刻と、を解析する解析手段と、をさらに備え、前記表示制御手段は、前記解析手段による解析結果を表示するように前記表示部を制御する、請求項3に記載の制御プログラム生成装置。前記パタン情報記憶手段は、ハードウェアが使用される範囲であるドメインを表すドメイン情報と、前記範囲で使用される複数のハードウェアをそれぞれ制御する複数の制御プログラムのアーキテクチャに共通したアーキテクチャパタンを表すパタン情報とを対応付けて複数記憶し、前記記憶されたドメイン情報を選択するドメイン選択情報を取得するドメイン選択情報取得手段、をさらに備え、前記パタン選択情報取得手段は、前記取得されたドメイン選択情報で選択されたドメイン情報に対応付けて記憶されたパタン情報を選択するパタン選択情報を取得する、請求項1から4のいずれか一項に記載の制御プログラム生成装置。コンピュータを、ハードウェアの動作を制御する制御モジュールを複数記憶する制御モジュール記憶手段、前記複数の制御モジュールの1つ以上で構成される制御プログラムのアーキテクチャに共通したプログラム構造であるアーキテクチャパタンを表すパタン情報を複数記憶するパタン情報記憶手段、前記記憶されたパタン情報を選択するパタン選択情報を取得するパタン選択情報取得手段、前記パタン選択情報で選択されたパタン情報で表されるアーキテクチャパタンを有する制御プログラムの実行時間に課される時間的制限を表す制限情報を取得する制限情報取得手段、前記選択されたパタン情報で表されるアーキテクチャパタンと、前記アーキテクチャパタンを有する制御プログラムのプログラム構造と、前記制御プログラムを構成する制御モジュールの実行時間と、前記取得された制限情報で表される時間的制限と、を対応付けて表示部に表示させる表示制御手段、前記制御プログラムのプログラム構造に対する変更内容を記述する記述情報を取得する記述情報取得手段、前記取得された記述情報に基づいて、前記制御プログラムのプログラム構造を編集するプログラム編集手段、前記編集されたプログラム構造に基づいて前記制御モジュール記憶手段に記憶された制御モジュールを連結することで、ハードウェアを制御する制御プログラムを生成するプログラム生成手段、として機能させる、制御プログラム生成プログラム。ハードウェアの動作を制御する1つ以上の制御モジュールでそれぞれ構成される複数の制御プログラムのアーキテクチャに共通したプログラム構造であるアーキテクチャパタンを表すパタン情報を、パタン情報記憶手段の記憶する複数のパタン情報から選択するパタン選択情報を取得するパタン選択情報取得ステップと、前記パタン選択情報で選択されたパタン情報で表されるアーキテクチャパタンを有する制御プログラムの実行時間に課される時間的制限を表す制限情報を取得する制限情報取得ステップと、前記選択されたパタン情報で表されるアーキテクチャパタンと、前記アーキテクチャパタンを有する制御プログラムのプログラム構造と、前記制御プログラムを構成する制御モジュールの実行時間と、前記取得された制限情報で表される時間的制限と、を対応付けて表示部に表示させる表示制御ステップと、前記制御プログラムのプログラム構造に対する変更内容を記述する記述情報を取得する記述情報取得ステップと、前記取得された記述情報に基づいて、前記制御プログラムのプログラム構造を編集するプログラム編集ステップと、前記編集されたプログラム構造に基づいて前記制御モジュールを連結することで、ハードウェアを制御する制御プログラムを生成するプログラム生成ステップと、を有する、制御プログラム生成方法。しかしながら、特許文献1に開示された方法では、プログラムの基本設計つまり、アーキテクチャに基づいてプログラムを生成していない。このため、既に生成されたプログラムとアーキテクチャのパタンが共通するプログラムを作成する場合であっても、既に作成され、実際に運用されるなどして信頼性が確保されたアーキテクチャパタンを再利用できないので、信頼性の高いプログラムを効率良く開発できなかった。また、特許文献2に開示されたシステムでは、プログラムの構造を記述する方法が開示されていない。このため、プログラムの構造をプログラムの設計者が認識することが困難であり、プログラムモジュール及びアーキテクチャの再利用が困難であった。さらに、特許文献3に開示されたソフトウェア実行装置では、制御プログラムに課せられる時間的制限と、制御プログラムを構成する制御モジュールの実行時間とを表示できない。このため、どのような制御モジュールを再利用して制御プログラムを作成すれば、時間的制限を満足できるプログラムを生成できるかを設計者が認識することが困難であり、プログラムモジュール及びアーキテクチャの再利用が困難であった。本発明は、上記実情に鑑みてなされたものであり、その目的とするところは、プログラムモジュール及びアーキテクチャを再利用することで、信頼性の高いハードウェアの制御プログラムを効率的に生成できる制御プログラム生成装置、制御プログラム生成プログラム、及び制御プログラム生成方法を提供することにある。上記目的を達成するため、本発明の制御プログラム生成装置は、ハードウェアの動作を制御する制御モジュールを複数記憶する制御モジュール記憶手段と、前記複数の制御モジュールの1つ以上で構成される制御プログラムのアーキテクチャに共通したプログラム構造であるアーキテクチャパタンを表すパタン情報を複数記憶するパタン情報記憶手段と、前記記憶されたパタン情報を選択するパタン選択情報を取得するパタン選択情報取得手段と、前記パタン選択情報で選択されたパタン情報で表されるアーキテクチャパタンを有する制御プログラムの実行時間に課される時間的制限を表す制限情報を取得する制限情報取得手段と、前記選択されたパタン情報で表されるアーキテクチャパタンと、前記アーキテクチャパタンを有する制御プログラムのプログラム構造と、前記制御プログラムを構成する制御モジュールの実行時間と、前記取得された制限情報で表される時間的制限と、を対応付けて表示部に表示させる表示制御手段と、前記制御プログラムのプログラム構造に対する変更内容を記述する記述情報を取得する記述情報取得手段と、前記取得された記述情報に基づいて、前記制御プログラムのプログラム構造を編集するプログラム編集手段と、前記編集されたプログラム構造に基づいて前記制御モジュール記憶手段に記憶された制御モジュールを連結することで、ハードウェアを制御する制御プログラムを生成するプログラム生成手段と、を備える。本発明に係る制御プログラム生成装置、制御プログラム生成プログラム、及び制御プログラム生成方法によれば、信頼性の高いハードウェアの制御プログラムを効率的に生成できる。以下、本発明の実施形態に係る制御プログラム生成装置100で構成される制御プログラム生成システム1について、添付図面を参照しつつ説明する。制御プログラム生成システム1は、図1aに示すような制御プログラム生成装置100と、試験用実機200とを含んで構成される。先ず、制御プログラム生成装置100について説明する前に、試験用実機200について説明する。試験用実機200は、例えば、空調機器以下、空調というのコントローラで構成され、制御プログラム生成装置100と、不図示の空調とに接続されている。試験用実機200は、制御プログラム生成装置100で生成された制御プログラムを実行することでハードウェアである空調機器を制御する実機であって、制御プログラムの試験を行う機能が追加されている。この試験用実機200は、制御プログラム生成装置100から制御プログラムを受信すると、受信した制御プログラムを試験実行する。その後、試験用実機200は、実行が終了すると実行結果を表す試験結果情報を制御プログラム生成装置100へ返信する。この試験結果情報は、例えば、制御プログラムを構成する制御モジュールを識別するモジュールID又はモジュール名と、制御モジュールの実行時刻を表す実行時刻情報とを対応付けた情報を含む。なお、制御モジュールの実行時刻は、実行開始時刻と実行終了時刻とを含み、試験結果は、制御モジュールを識別するモジュールID又はモジュール名と、制御モジュールの実行開始時刻から実行終了時刻までの実行期間を表す実行期間とを含む。また、試験結果は、実行時刻と、当該実行時刻における制御モジュールの変数値とをさらに含んでも良い。また、実機は、空調のコントローラに限定されず、ビルで使用されるエレベータ、照明、駐車場、及びセキュリティ装置などのハードウェアを制御するコントローラであっても良いし、家庭以下、ホームというで使用される太陽光発電機、エアコン、床暖房、給湯機、換気装置、及びセキュリティ装置などのハードウェアを制御するコントローラであっても良い。制御プログラム生成装置100は、図1bに示すように、CPUCentralProcessingUnit100a、ROMReadOnlyMemory100b、RAMRandomAccessMemory100c、ハードディスク100d、メディアコントローラ100e、LANカードLocalAreaNetwork100f、ビデオカード100g、LCDLiquidCrystalDisplay100h、キーボード100i、及びポインティングデバイス以下単に、マウスという100jを含んで構成される。CPU100aは、ROM100b又はハードディスク100dに保存されたプログラムに従ってソフトウェア処理つまり、情報処理を実行することで、制御プログラム生成装置100の全体制御を行う。RAM100cは、CPU100aによるプログラムの実行時において、処理対象とする情報つまり、データを一時的に記憶する。ハードディスク100dは、後述するような、各種の情報つまり、データを保存した表つまり、テーブルを記憶する。尚、制御プログラム生成装置100は、ハードディスク100dの代わりに、フラッシュメモリを備えても良い。メディアコントローラ100eは、記録媒体から各種のデータ及びプログラムを読み出す。尚、記録媒体は、フラッシュメモリ、CDCompactDisc、DVDDigitalVersatileDisc、及びブルーレイディスクBlurayDiscを含む。LANカード100fは、通信網10を介して接続する試験用実機200との間でデータ及びコマンドを送受信する。ビデオカード100gは、CPU100aから出力されたデジタル信号に基づいて画像を描画つまり、レンダリングすると共に、描画された画像を表す画像信号を出力する。LCD100hは、ビデオカード100gから出力された画像信号に従って画像を表示する。尚、制御プログラム生成装置100は、LCD100hの代わりに、PDPPlasmaDisplayPanel又はELElectroluminescenceディスプレイを備えても良い。キーボード100i及びマウスjは、ユーザの操作に応じた信号を入力する。尚、制御プログラム生成装置100は、キーボード100i及びマウスjの代わりにタッチパネルを備えても良い。次に、制御プログラム生成装置100が実行する処理について説明する。制御プログラム生成装置100のCPU100aが、図2の制御プログラム生成処理を実行することで、図3aに示すプログラム編集部110、アーキテクチャパタンライブラリ以下、パタン情報記憶部という120、制御プログラム再利用ライブラリ以下、制御モジュール記憶部という130、制御プログラム構造記述言語仕様ライブラリ以下、記述情報記憶部140、ドメイン選択情報取得部151、パタン選択情報取得部152、制限情報取得部153、記述情報取得部154、検証範囲情報取得部155、表示制御部160、プログラム生成部170、情報通信部180、プログラム模擬部190、及び動作解析部195として機能する。図2の制御プログラム生成処理の実行を開始すると、プログラム編集部110は、図3aのパタン情報記憶部つまり、アーキテクチャパタンライブラリ120に記憶された複数のテーブルの1つである、図4aに示すようなドメインパタンテーブルから、プログラム生成部170で生成される制御プログラムで制御されるハードウェアのドメインを表すドメイン情報を取得するステップS01。ここで、ドメインとは、ハードウェアが使用される範囲をいう。例えば、ハードウェアがエレベータ、空調、照明、駐車場、又はセキュリティ装置であれば、これらのハードウェアは、ビルで使用される。このため、これらのハードウェアのドメインは、ビル分野を含む。また例えば、ハードウェアが太陽光発電機、エアコン、換気装置、給湯器、又はセキュリティ装置であれば、これらのハードウェアは、一般家庭で使用される。このため、これらのハードウェアのドメインは、ホーム分野を含む。なお、図4aのドメインパタンテーブルは、ドメイン情報としてドメイン名を表す情報とドメインを識別するドメインIDとを保存し、ドメイン名には、ビル分野及びホーム分野が含まれる。次に、図3aの表示制御部160は、プログラム編集部110が取得したドメイン情報で表されるドメイン名を一覧表示するように、図1aのLCD100hを制御するステップS02。次に、図3のドメイン選択情報取得部151は、ユーザつまり、制御プログラムの開発者に操作されたキーボード100i及びマウス100jの1つ以上以下、入力部というから、表示されたドメイン名のドメインであって、生成する制御プログラムのドメインとして選択されたドメイン以下、選択ドメインというを表すドメイン選択情報を取得するステップS03。例えば、一般家庭で使用されるハードウェアを制御する制御プログラムを生成する場合には、ホーム分野をドメインとして選択する。次に、プログラム編集部110は、ステップS03で取得された選択ドメインを表すドメイン情報以下、選択ドメイン情報というと対応付けられたパタン情報を、図4aのドメインパタンテーブルから1以上検索するステップS04。ここで、パタン情報は、パタンを識別するパタンIDと、パタン名を表す情報と、パタン内容を表す情報とを含む。なお、本明細書で使用されるパタンという語は、あるドメインで使用される制御プログラムのアーキテクチャに共通したプログラム構造以下、共通構造というであるアーキテクチャパタンをいう。また、アーキテクチャとは、プログラムの構造的な基本設計をいう。プログラム編集部110は、ステップS04において、選択ドメイン情報に基づいてパタンIDを検索し、検索されたパタンIDと対応付けられたパタン名を表す情報及びパタン内容を表す情報を、図3aのパタン情報記憶部つまり、アーキテクチャパタンライブラリ120に記憶された複数のテーブルの1つである、図4bのパタン構造記述テーブルから検索する。図2のステップS04の後、図3aの表示制御部160は、プログラム編集部110が検索した情報に基づいて、選択ドメインのドメインIDと対応付けられたパタンIDで識別される1以上のパタンのパタン名及びパタン内容の一覧を生成した後、生成した一覧を、図5aに示すような編集画面Fの構造テンプレート表示エリアFSに表示するようにLCD100hを制御するステップS05。あるドメインで使用される複数のハードウェアは、共通の機能を有することが多いため、それらのハードウェアを制御する制御プログラムは、基本的な設計を共通にするつまり、共通のアーキテクチャを有することが多いためである。なお、編集画面Fは、制御プログラムのプログラム構造及びプログラム構造の編集内容が表示される画面である。また、編集画面Fの構造テンプレート表示エリアFSは、図5bに示すような、選択されたドメインに属する制御プログラムに共通のプログラム構造であって、見本つまり、テンプレートとなるものつまり、アーキテクチャパタンのパタン名及びパタン内容が表示される領域である。なお、編集画面FのアイコンICは、例えば、編集画面Fを用いた制御プログラムの作成作業の手順を案内するナビゲーション表示、ヘルプ表示、又は後述するシミュレーション結果の要約表示を行うように命じるコマンドと関連付けられている。図5bの構造テンプレート表示エリアFSに表示されたアーキテクチャパタンについて具体的に説明すると、運転停止というアーキテクチャパタンのパタン内容は、ハードウェアであるコントローラに制御画面などの所定の画面を表示させる処理を最初とし、制御画面に表示された運転停止ボタンに対するタッチ操作を検出した後に、運転停止状態を表すパラメタに運転停止を表す値を格納する処理を中番とし、運転停止を命じるコマンドをハードウェアへ通信する処理を最後とするプログラム構造である。図2のステップS05の後に、パタン選択情報取得部152は、ユーザに操作された入力部から、表示されたパタン名のパタンであって、生成する制御プログラムのアーキテクチャとして使用するアーキテクチャパタンを選択するパタン選択情報を取得するステップS06。次に、プログラム編集部110は、ステップS06で取得されたパタン選択情報で選択された選択パタンのパタンIDと対応付けられた構造記述IDを、図4bのパタン構造記述テーブルから検索する。次に、プログラム編集部110は、検索した構造記述IDと対応付けられた構造記述情報を、図3aのパタン情報記憶部つまり、アーキテクチャパタンライブラリ120に記憶された複数のテーブルの1つである、図4cに示すような構造記述テーブルから検索するステップS07。ここで、構造記述IDとは、構造記述を識別する情報をいい、構造記述情報とは、構造記述を表す情報をいう。また、構造記述とは、本実施形態において、プログラム構造を記述する特別な言語であるプログラム構造記述言語を用いて表されたプログラム構造の記述をいう。ここで、一旦、図6を参照して、プログラム構造記述言語で記述されたプログラム構造の一例について説明する。図6のプログラム構造は、空調を制御するコントローラで実行される制御プログラムのプログラム構造を表す。この制御プログラムは、コントローラの立ち上げから10秒後に、スケジュールリストに保持された空調制御を1つずつ実行すると共に、空調の制御状態を表す変数を更新するプログラムである。図6のプログラム構造は、言語オントロジー以下単に、仕様というN01からN11で表される。仕様N01は、プログラム関数の開始点を表す。仕様N01から仕様N02へ向かう矢印と連結された仕様N02は、関数の実行を開始すると、下部の四角形の中に記載された数字で表される秒つまり、10秒だけウェイト処理以下、待機処理というを行うことを表す。仕様N02から仕様N03へ向かう矢印と連結された仕様N03は、仕様N02の処理の後に何らかの条件分岐を行うことを表す。同様に、仕様N04は、仕様N03の処理の後に何らかの条件分岐を行うこと表す。仕様N04と仕様N05とを結ぶ線分と連結された仕様N05は、スケジュールリストの要素番号を表す変数Scheduleに対して仕様N04の条件分岐における判別処理で使用された変数値を格納つまり、データストアすることを表す。Nの文字が右側に付された、仕様N04から仕様N03へ戻る矢印は、仕様N04の条件分岐における判別結果が偽の場合に、再度仕様N03の処理が繰り返されることを表す。これに対して、Yの文字が下側に付された、仕様N04から仕様N06へ向かう矢印と連結された仕様N06は、仕様N04の条件分岐における判別結果が真の場合に、空調の制御状態を更新する関数を実行することを表す。また、仕様N06と仕様N07とを結ぶ線分と連結された仕様N07は、変数Scheduleに対して仕様N06の処理で使用される変数値を格納することを表す。仕様N08及びN09は、それぞれ仕様N07及びN04と同様であるので説明を省略する。Nの文字が左側に付された、仕様N09から仕様N10へ向かう矢印と連結された仕様N10は、仕様N09の条件分岐における判別結果が偽の場合に、変数Scheduleの値を値1だけインクリメントする処理を表す。仕様N10からN03へ向かう矢印は、仕様N10の処理の後に、仕様N03の処理が再度繰り返されることを表す。また、Yの文字が下側に付された、仕様N09から仕様N11へ向かう矢印と連結された仕様N11は、仕様N09の条件分岐における判別結果が真の場合に、関数処理の実行を終了することを表す。なお、仕様は、再帰的に記載されても良い。つまり、関数を表す仕様は、関数に含まれる複数の処理を表す複数の仕様で表されても良い。ここで、プログラム構造を表す言語オントロジーつまり、仕様は、図6に示した仕様N01からN11に限定されるものではない。例えば、図7に示すような、値操作処理つまり、データに対する演算処理を表す仕様N25、初期化処理を表す仕様N26、メッセージ通信処理を表す仕様N28、例外処理を表す仕様N29、結合点つまり、シンクロナイゼーションポイントを表す仕様N30、制御プログラムの実行時間又は制御プログラムを構成する複数の制御モジュールの実行時間の総和に課せられる時間的制限を表す仕様N31及び時間的制限条件を表す仕様N32、並びにプロセスの制御を表す仕様N33を含む。なお、仕様N21からN24及び仕様N27については、図6を用いて既に説明したため繰り返しの説明を省略する。次に、図7の結合点を表す仕様以下、結合点仕様というN30と、時間的制限を表す仕様以下、制限仕様というN31とについて、図8aを参照して詳細に説明する。図8aに示すプログラム構造は、関数を表す仕様以下、関数仕様というN21aからN21c、結合点仕様N30a及びN30b、及び制限仕様N31で表される。結合点仕様N30aからは、2本の矢印が生じているため、結合点仕様N30aは、2つのプロセスを生成するフォーク処理を表す。結合点仕様N30aから生じた上側の矢印は、関数仕様N21aに到達した後に、結合点仕様N30bに到達する。これに対して、結合点仕様N30aから生じた下側の矢印は、関数仕様N21b及びN21cに順に到達した後に、結合点仕様N30bに到達する。このため、結合点仕様N30bは、結合点仕様N30aの処理で生成された2つのプロセスが、それぞれ関数仕様N21aの処理、並びに関数仕様N21bの処理及び関数仕様N21cの処理を実行し終えるのを待つつまり、同期を取る処理を表す。また、制限仕様N31は、結合点仕様N30aから延びる点線と結合点仕様N30bから延びる点線とを用いて、結合点仕様N30aの処理から、結合点仕様N30bの処理までを3ミリ秒で実行完了するつまり、スループットが3ミリ秒となるという時間的制限が制御プログラムに課せられていることを表す。この構成によれば、制御対象とするハードウェアにより定まる制御プログラムの実行時間に課せられる制限つまり、時間的制限を明確にすることができる。なお、プログラム構造を表す言語オントロジーつまり、仕様は、図9aに示すwhile文を表す仕様N41、Dowhile文を表す仕様N42、及びFor文を表す仕様N43のように、処理の繰り返し構造つまり、ループ構造を表しても良い。また、言語オントロジーは、図9bに示すような、例えば、構造体つまり、StructureValueなどを入力する処理つまり、多入力処理を表す仕様N51、及び構造体などを出力する処理つまり、多出力処理を表す仕様N52を含んでも良い。ここで、図2に戻り、ステップS07から引き続き制御プログラム生成処理の説明を行う。ステップS07で検索に用いられる図4cの構造記述テーブルは、構造記述IDと、構造記述IDで識別される構造記述を表す構造記述情報とを対応付けて保存するテーブルである。構造記述テーブルの構造記述情報は、仕様つまり、言語オントロジーを識別する仕様IDと、仕様から延びる矢印と連結するつまり、連結先である仕様の仕様ID以下、連結先IDというと、仕様が条件分岐を表す場合に、矢印の脇に記載されるY又はNを表す分岐条件情報などを含むその他の情報とを対応付けた情報である。この仕様IDは、図3aの記述情報記憶部つまり、制御プログラム構造記述言語仕様ライブラリ140が記憶する複数のテーブルの1つである、図4dの仕様テーブルに、仕様を表す仕様情報と対応付けて保存されている。なお、仕様情報は、図6から図9を参照して説明した仕様の種類、及びそれぞれの仕様種類が処理を表すために必要なその他の情報をいう。例えば、仕様が関数を表す場合には、その他情報は関数名を表し、仕様が時間制限を表す場合には、その他情報は制限時間と、制限の課せられる複数の仕様とを表す。ここで、図2に戻り、引き続き制御プログラム生成処理について説明を行う。ステップS07の後に、図3aの表示制御部160は、プログラム編集部110が検索した構造記述情報に基づいて、選択パタンのプログラム構造を、図5aの編集画面Fの作業エリアFWに表示するように図1bのLCD100hを制御するステップS08。次に、例えば、図1bのマウス100jをユーザが操作することで、LCD100hに表示されたカーソルを、図5aの作業エリアFWに表示されたボタンBTに重ね合わせた後に、ユーザが行ったクリック操作に応じてマウス100jが入力した信号に基づいて、図3aのプログラム生成部170は、制御プログラムの生成を指示されたか否かを判別するステップS09。ステップS09において、制御プログラムの生成を指示されなかったとプログラム生成部170が判別するとステップS09;No、プログラム編集部110は、ユーザに操作された入力部から、図3の制限情報取得部153が制限情報と、対象情報とを取得したか否かを判別するステップS10。なお、制限情報とは、生成する制御プログラムの実行時間に課される時間的制限、若しくは、生成する制御プログラムを構成し、かつ順次実行される複数の制御モジュールで表される関数の総実行時間に対する時間的制限を表す情報をいう。また、対象情報は、時間的制限が課せられる制御プログラム又は関数を表す情報をいう。ステップS10において、制限情報が取得されたとプログラム編集部110が判別すると、図10に示すような制限情報表示制御処理が実行されるステップS11。図10の制限情報表示制御処理が開始されると、図3bに示すようなプログラム編集部110が有する実行時間推定部111は、取得された制限情報で表される時間制限が課せられるそれぞれの関数の関数ID又は関数名に基づいて、図4eに示すような制御モジュールテーブルから、関数処理を表す制御モジュールを特定する。なお、制御モジュールテーブルは、図3aの制御モジュール記憶部つまり、制御プログラム再利用ライブラリ130に記憶された複数のテーブルの1つである。次に、実行時間推定部111は、例えば、特定した制御モジュールのそれぞれについて、制御モジュールのステップ数と、入力部から入力された情報で表される制御プログラムを実行する実機の性能つまり、CPU性能などとに基づいて、関数の実行時間を推定するステップS31。次に、表示制御部160は、推定された実行時間を、制御モジュールに対応した関数仕様と対応付けて表示するようLCD100hを制御するステップS32。その後、実行時間推定部111は、時間制限が課せられる1以上の制御モジュールの実行時間の総和を算出するステップS33。次に、図3bに示すプログラム編集部110が有する余裕時間算出部112は、制限情報で表される時間制限から、ステップS33で算出された総推定実行時間を減算することで、余裕時間を算出するステップS34。次に、図3bに示すプログラム編集部110が有するプログラム構造編集部113は、算出された余裕時間が正の値であるか否かを判別するステップS35。ステップS35において、余裕時間が負の値であるとプログラム構造編集部113によって判別されるとステップS35;No、図3aの表示制御部160は、余裕時間を表示し、かつ時間的制限に違反する旨のエラーメッセージを表示するように、図1bのLCD100hを制御するステップS36。その後、制限表示制御処理の実行が終了される。ステップS35において、余裕時間が正の値であるとプログラム構造編集部113によって判別されるとステップS35;Yes、図3aの表示制御部160は、余裕時間を表示するように、図1bのLCD100hを制御するステップS37。次に、プログラム構造編集部113は、制御対象とするハードウェアの制御を行わない処理、又はハードウェアを余裕時間だけ待機させる制御処理つまり、待機処理を行う制御モジュールを、図3aの制御モジュール記憶部つまり、制御プログラム再利用ライブラリ130から検索する。次に、プログラム構造編集部113は、検索した制御モジュールを用いて実行される関数を表す仕様を、時間的制限が課せられる複数の仕様の実行順序の先頭、中間、及び最後のいずれかに追加する。その後、表示制御部160は、追加された仕様を表示するようにLCD100hを制御するステップS38。その後、制限表示制御処理の実行が終了される。具体例としては、図8bに示すように、仕様N30aからN30bの間に仕様N21a及び仕様N21bが記述され、これらの仕様N21aで表される関数Aと、N21bで表される関数Bとが、総実行時間3ミリ秒で実行される必要があるという時間的制限が課せられている場合を例に挙げて説明する。この場合に、実行時間推定部111は、関数Aの実行時間と関数Bの実行時間とが共に05ミリ秒であると推定し、推定した実行時間の総和を1ミリ秒と算出する。次に、表示制御部160は、関数Aを表す仕様N21aよりも所定量だけ下の表示位置と関数Bを表す仕様N21bよりも所定量だけ下の表示位置に、推定された実行時間が05ミリ秒である旨の表示を行うようLCD100hを制御する。次に、余裕時間算出部112は、時間的制限3ミリ秒から推定された関数Aの実行時間と関数Bの実行時間との和1ミリ秒を減算し、余裕時間を2ミリ秒であると算出する。なお、表示制御部160は、仕様N21aと関数Bと関連付けて、総実行時間が1ミリ秒である旨の表示を行うよう表示制御しても良い。その後、プログラム構造編集部113は、図8cに示すように、2ミリ秒に亘って実行される待機処理を表す仕様N21cを、仕様N21a及び仕様N21bの後であって、仕様N30bの前に追加し、表示制御部160は、仕様N21cよりも所定量だけ下の表示位置に、余裕時間が2ミリ秒である旨の表示を行うようLCD100hを制御する。なお、待機処理を表す仕様N21cは、仕様N21aと仕様N21bとの前に追加されても良いし、仕様N21aと仕様N21bとの間に追加されても良い。図2のステップS11の後に、プログラム編集部110は、ユーザに操作された入力部から、表示されたプログラム構造に対する変更内容を記述する記述情報を、図3aの記述情報取得部154が取得したか否かを判別するステップS12。なお、図5に示す編集画面の部品表示エリアFPには、図3aの記述情報記憶部つまり、制御プログラム構造記述言語仕様ライブラリ140に記憶された言語オントロジーつまり、仕様が表示される領域であり、ユーザは、入力部を操作することで、部品表示エリアFPに表示された言語オントロジーを、プログラム構造が表示された作業エリアFWにドラッグアンドドロップしたり、ドロップした仕様を編集するなどして、プログラム構造の変更内容を記述する記述情報を入力部に入力させる。ステップS12において、プログラム編集部110は、記述情報が取得されなかったと判別するとステップS12;No、ステップS09に戻り上記処理が繰り返される。これに対して、プログラム編集部110は、記述情報が取得されたと判別するとステップS12;Yes、取得された記述情報に基づいて、表示されたプログラム構造を編集するステップS13。その後、表示制御部160は、編集されたプログラム構造を表示するようLCD100hを制御するステップS14。その後、ステップS09に戻り上記処理が繰り返される。ステップS09において、制御プログラムの生成を指示されたとプログラム生成部170が判別するとステップS09;Yes、プログラム生成部170は、表示されたプログラム構造以下、表示プログラム構造に用いられる制御モジュールを、既に説明した図4dの仕様テーブル及び図4eの制御モジュールテーブルを用いて、図3aの制御モジュール記憶部つまり、制御プログラム再利用ライブラリ130から取得するステップS15。また、プログラム生成部170は、取得できない制御モジュールつまり、再利用できない新しい制御モジュールなどを、表示された仕様に基づいて生成する。次に、プログラム生成部170は、取得した制御モジュールを、表示プログラム構造に基づいて連結することで、制御プログラムを生成するステップS16。なお、プログラム生成部170は、例えば、表示された仕様に基づいて生成された制御プログラムを識別する識別情報又はプログラム名を表す情報と、表示された仕様で表された制限情報及び対象情報とを対応付けて、図3の記述情報記憶部140に保存する。その後、図3aの情報通信部180は、生成された制御プログラムを試験用実機200へ送信するステップS17。なお、試験用実機200は、送信された制御プログラムをインストールし、インストールしたプログラムを試験モードで実行する。試験用実機200は、試験モードで制御プログラムを実行すると、制御プログラムの実行状態と実行時刻とを対応付けた実行結果を表す試験結果情報を試験用実機200が有する記憶部に保存する。なお、本実施形態において、実行結果は、制御プログラムの実行時刻と、制御プログラムを構成する制御モジュールを識別する識別情報若しくは名称、又は当該制御モジュールの関数を識別する識別情報つまり、関数ID若しくは名称つまり、関数名と、当該制御モジュールが実行されたプロセスを識別するIDとを含む。その後、試験用実機200は、試験結果情報を情報通信部180へ返信する。ステップS17の後に、図3aの検証範囲情報取得部155は、ユーザに操作された入力部から、制御プログラムの実行を検証する検証範囲を表す検証範囲情報を取得するステップS18。具体例として、生成した制御プログラムのプログラム構造が、図11aに示すような仕様N21aからN21hで表される場合を挙げて説明する。ユーザは、検証範囲を指定するために、入力部を操作することで、図11aに示すようなプローブを、仕様N21aからN21hの間の位置に挿入する。例えば、ユーザが、プローブPB1を仕様N21a、N21d、及びN21gの前に挿入し、プローブPB2を仕様N21e、及びN21hの後に挿入した場合には、検証範囲は、あるスレッドにおける仕様N21dで表される処理の開始から仕様N21eで表される処理の終了まで、及び他のスレッドにおける仕様N21gで表される処理の開始から仕様N21hで表される処理の終了までとなる。また例えば、ユーザが、プローブPB1を仕様N21a、N21d、及びN21gの前に挿入し、プローブPB3を仕様N21c、及びN21fの後に挿入した場合には、検証範囲は、第1スレッドにおける仕様N21aの処理開始から仕様N21cの処理終了まで、第2スレッドにおける仕様N21dの処理開始から仕様N21fの処理終了まで、及び第3スレッドにおける仕様N21gの処理開始から仕様N21hの処理終了までとなる。図2のステップS18の後に、図3aのプログラム模擬部190は、制御対象とするハードウェアを模擬するシミュレーションプログラムを実行することで仮想的なハードウェアを形成する。次に、プログラム模擬部190は、生成された制御プログラムを検証範囲情報で表される検証範囲で実行することで、仮想的なハードウェアを制御する制御動作を模擬するステップS19。プログラム模擬部190は、制御プログラムの制御動作を模擬する際に、模擬結果を表す模擬結果情報を生成する。具体的には、プログラム模擬部190は、ステップS18で取得された検証範囲情報で表される検証範囲に含まれる関数の内で、最も早い実行順序の関数と、最も遅い実行順序の関数を特定する。次に、プログラム模擬部190は、検証範囲において制御プログラムを実行するために使用される変数値に対して、ユーザに操作された入力部から取得された値を初期値として代入する。その後、プログラム模擬部190は、最も早い実行順序の関数をコールする処理又から、最も遅い実行順序の関数からリターンする処理までを模擬実行する。この模擬結果情報は、試験結果情報と同様に、例えば、制御プログラムの実行時刻と、制御プログラムを構成する制御モジュールを識別する識別情報つまり、モジュールID若しくは名称つまり、モジュール名、又は当該制御モジュールの関数を識別する識別情報つまり、関数ID若しくは名称つまり、関数名と、当該制御モジュールが実行されたプロセスを識別するIDとを含む。なお、制御モジュールの実行時刻は、実行開始時刻と実行終了時刻とを含み、模擬結果は、制御モジュールのモジュールID又はモジュール名と、制御モジュールの模擬実行が開始された実行開始時刻から模擬実行が修了された実行終了時刻までの実行期間を含む。また、検証結果は、実行時刻と、当該実行時刻における制御モジュールの変数値をさらに含んでも良い。ステップS19の後に、図3aの情報通信部180は、試験用実機200から試験結果情報を受信するステップS20。その後、動作解析部195は、ステップS19で生成された模擬結果情報で表される模擬結果、又はステップS20で受信された試験結果情報で表される試験結果から、ステップS18で取得された検証範囲情報で表される検証範囲において、制御モジュール及び当該制御モジュールを構成する各関数が模擬実行又は試験実行された時刻と、当該制御モジュールを識別する識別情報又は名称と、当該制御モジュールの関数を識別する識別情報又は名称と、当該制御モジュールが実行されたプロセスを識別する識別情報とを解析するステップS21。その後、表示制御部160は、ステップS21の解析結果を表示するよう、図1bのLCD100hを制御した後にステップS22、制御プログラム生成処理の実行を終了する。具体的には、LCD100hは、図11bに示すような解析結果表示画面FA1を表示する。図11bの解析結果表示画面FA1は、横軸で表される実行時間軸を有し、制御プログラムの実行により生成される第1プロセスで実行される制御モジュールの関数名AからC及び関数IDF0001からF0003、第2プロセスで実行される制御モジュールの関数名DからF及び関数IDF0004からF0006、第3プロセスで実行される制御モジュールの関数名G及びH及び関数IDF0007及びF0008を、画面の上側から順に表示する。つまり、第1プロセスで実行される関数IDF0001で識別される関数Aと、第2プロセスで実行される関数IDF0002で識別される関数Bとは、略同一の時刻に実行が開始されたことを表す。なお、解析結果表示画面FA1に表示される関数名及び関数IDは、それぞれモジュール名及びモジュールIDでも良い。また、動作解析部195は、上記各関数の実行時刻に基づいて制御モジュール及び制御モジュールを構成する関数の実行時間を解析する。次に、動作解析部195は、試験実行又は模擬実行された制御プログラムの識別情報又は名称に基づいて、当該制御プログラムに課せられた制限を表す制限情報及び当該制限が課せられる対象を表す対象情報とを、図3の記述情報記憶部140から検索する。その後、動作解析部195は、検索した対象情報で表される関数の総実行時間又は制御モジュールの実行時間を算出し、算出した実行時間が検索された制限情報で表される時間的制限に違反するかつまり、解析された試験実行時間又は模擬実行時間が制限時間よりも長いか否かを判別する。その後、表示制御部160は、動作解析部195の判別結果などを表す、図11cの解析結果表示画面FA2をLCD100hに表示させる。図11cの解析結果表示画面FA2は、図11bの解析結果表示画面FA1と同様に、横軸で表される実行時間軸を有する。また、図11cの解析結果表示画面FA2は、第1プロセスを識別するプロセスIDP0001と、第1プロセスで実行される制御モジュールの関数名A及び関数IDF0001など、第2プロセスを識別するプロセスIDP0002と、第2プロセスで実行される制御モジュールの関数名D及び関数IDF0004など、第3プロセスを識別するプロセスIDP0003と、第3プロセスで実行される制御モジュールの関数名G及び関数IDF0007などを画面の上側から順に表示する。また、解析結果表示画面FA2は、関数IDF0001からF0008でそれぞれ識別される関数の試験実行時間又は模擬実行時間を、関数名の下側に表示する。特に、関数IDF0007で識別される関数G及び関数IDF0008で識別される関数Hは、それぞれの試験実行時間又は模擬実行時間の下側に、関数G及び関数Hの総実行時間に課せられた時間制限を表示する。さらに、解析結果表示画面FA2は、関数G及び関数Hの総試験実行時間又は総模擬実行時間が時間制限を違反したか否かという動作解析部195の判定結果を、時間制限の表示から吹き出した文字で表示する。これらの構成によれば、複数のタスクつまり、マルチプロセスが並行実行されることにより、複数のタスクが同じハードウェアを制御することなどにより発生するデッドロックなどの交互干渉をユーザが容易に把握できる。これらの構成によれば、生成する制御プログラムのアーキテクチャのみならず、生成する制御プログラムに課せられる時間制限、及び制御プログラムを構成する制御モジュールの実行時間をも表示部に表示できる。このため、ハードウェアを制御する制御プログラムのプログラム構造だけでなく、制御プログラムを構成するそれぞれの制御モジュールに課せられる時間的制限をも、制御プログラムの設計者が容易に把握できる。よって、記憶された作成済みの制御モジュール及びアーキテクチャを再利用して、信頼性の高い新たな制御プログラムを効率的に生成できる。また、これらの構成によれば、制御プログラムに課せられる実行時間の時間的制限と、時間的制限に対する余裕時間とを表示するため、ユーザは、生成する制御プログラムが時間的制限を満足するか否かを容易に確認できるので、制御プログラムを効率的に生成できる。さらに、これらの構成によれば、制御プログラムの試験実行又は模擬実行に要した時間と、当該制御プログラムに課せられた時間的制限とを表示するため、ユーザは、生成した制御プログラムが時間的制限を満足したか否かを容易に確認できるので、制御プログラムを効率的に試験できる。またさらに、これらの構成によれば、制御プログラムの試験実行又は模擬実行に要した時間が、当該制御プログラムに課せられた時間的制限に違反したか否かを表示するため、ユーザは、生成した制御プログラムが時間的制限に違反したか否かをより容易に確認できるので、制御プログラムをより効率的に試験できる。さらに、これらの構成によれば、実行時間の長さが余裕時間の長さに等しい待機モジュールが時間的制限の課せられた複数の制御モジュールの実行順序の先頭、中間、及び最後のいずれかで実行されるように、制御プログラムのプログラム構造が編集されるため、時間的制限を満足する信頼性の高い制御プログラムを容易に生成できる。またさらに、これらの構成によれば、検証範囲で制御プログラムの実行を模擬すると共に、模擬結果に基づいて制御モジュールの識別情報と、制御モジュールが模擬実行された時刻とを表示するため、少ない計算時間で制御モジュールの実行結果を容易に確認できる。また、これらの構成によれば、選択ドメインで使用されるプログラムを制御する制御プログラムであって、選択ドメインで既に運用された制御プログラムに共通した1以上のアーキテクチャパタンを有する制御プログラムを、既に選択ドメインで運用された1以上の制御モジュールに連結して生成する。このように、既に選択ドメインで運用されたアーキテクチャ及び制御モジュールを再利用して制御プログラムを生成することで、選択ドメインで使用されるハードウェアの制御を行う信頼性の高い制御プログラムを短時間かつ少ない工数で効率的に生成できる。さらに、これらの構成によれば、再利用したアーキテクチャパタンに基づいて制御プログラムを生成するため、制御モジュールのようなコンピュータプログラムのみならず、アーキテクチャパタンというプログラム構造の基本的な設計ノウハウをも再利用できる。尚、本実施形態に係る機能を実現するための構成を予め備えた制御プログラム生成装置100として提供できることはもとより、プログラムの適用により、既存の制御プログラム生成装置を本実施形態に係る制御プログラム生成装置100として機能させることもできる。すなわち、上記の実施形態で例示した制御プログラム生成装置100による各機能構成を実現させるための制御プログラムを、既存の制御プログラム生成装置を制御するコンピューターCPUなどが実行できるように適用することで、本実施形態に係る制御プログラム生成装置100として機能させることができる。また、本発明に係る制御プログラム生成方法は、制御プログラム生成装置100を用いて実施できる。また、上述の機能を、OSOperatingSystemが分担して実現する場合又はOSとアプリケーションとの協働により実現する場合等には、OS以外の部分のみを媒体に格納して配布してもよく、また、ダウンロード等しても良い。このようなプログラムの配布方法は任意であり、例えば、メモリカード、CD-ROM、又はDVD-ROMなどの記録媒体に格納して配布できる他、インターネットなどの通信媒体を介して配布することもできる。また、本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。以上本発明の好ましい実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。本出願は、2010年8月16日に出願された日本国特許出願2010-181897号に基づく。本明細書中に日本国特許出願2010-181897号の明細書、特許請求の範囲、図面全体を参照として取り込むものとする。