以下、本発明の実施例について説明する。本実施例のモジュール生成方法は、電子機器1に実装されるモジュール群の一つであって、上位モジュールMUから入力される命令である入力命令IC1〜IC3毎に、この入力命令IC1〜IC3に対応した下位モジュールMDに対する命令を生成し、この命令を出力命令OC1〜OC3として下位モジュールMDに出力する処理を実行するための中間モジュールMMの生成方法である。生成対象の中間モジュールMMは、上位モジュールMUから下位モジュールMDへのインタフェースとして機能する。
以下では、この中間モジュールMMをプログラムとして生成する例を説明するが、中間モジュールMMは、ハードウェアにより構成することも可能である。また、上位モジュールMUや下位モジュールMDは、他のモジュールがソフトウェアであるかハードウェアであるかに依らず、ソフトウェア又はハードウェアで構成することが可能である。但し、以下では、説明を簡単にするため、電子機器1に実装される各モジュールがソフトウェアであるとして話を進める。電子機器1としての機能は、これらモジュール群の動作(コンピュータによるモジュール群の実行)により実現される。
図1及び図2に示すように、この中間モジュールMMの生成に際しては、まず中間モジュールMMにて実現されるべき機能を、入力命令IC1〜IC3及び出力命令OC1〜OC3の組合せ毎に一つの機能に分割する(S1)。図2は、本実施例のモジュール生成方法に対応する手順を示すフローチャートであり、図2(a)は、モジュール生成方法における第一段階の手順を示すフローチャートであり、図2(b)は、第二段階の手順を示すフローチャートである。
入力命令がα個、出力命令がβ個ある場合には、最大でα×β個の組合せが存在するので、これらの組合せに合わせて、α×β個の機能に分割する。図1に示す例では、α=β=3であるので、9個の機能FN11〜FN33に分割する。以下、組合せ毎に分割された機能のことを「細分化機能」ともいう。
但し、一つの入力命令に対して限られた出力命令のみを出力する中間モジュールMMの構成も考えられる。例えば、入力命令IC1の入力によっては、出力命令OC1及び出力命令OC2及び出力命令OC3の内、出力命令OC1のみしか出力がない場合(図1破線に対応する出力がない場合)や、入力命令IC3の入力によっては出力命令OC3のみしか出力がない場合(図1一点鎖線に対応する出力がない場合)がある。
この場合には、入力命令IC1と組み合わせられる出力命令は出力命令OC1のみであり、入力命令IC3と組み合わせられる出力命令は出力命令OC3のみであるので、入力命令及び出力命令の組合せは、α×β以下となる。
また、このような入力命令及び出力命令の組合せ毎の機能分割後には、入力命令IC1〜IC3毎に管理機能MA1〜MA3を定める(S2)。複数の細分化機能F11〜F33の協働により、一の入力命令に対する一連の機能が実現される場合には、上記機能分割により相互関係に関する情報(具体的には、動作順序の情報)が失われるので、入力命令IC1〜IC3毎には、この入力命令に対応する細分化機能の動作を制御する管理機能を定める。
また、この後には、出力命令毎に、プログラム部品を共通化する細分化機能のグループを定める(S3)。即ち、出力命令が同一で入力命令の異なる細分化機能の一群の中からプログラム部品を共通化する機能を選択して、出力命令が同一で入力命令の異なる細分化機能群のうち、上記選択した複数の機能を、プログラム部品を共通化する細分化機能の組合せとして、グループ化する。但し、プログラム部品の共通化が不要な出力命令に関しては、この出力命令に対する上記グループの設定は不要である。
更には、入力命令の一群を、上位モジュールMUの種類によっては中間モジュールMMに対して入力されない種類の入力命令である選択入力命令と、上位モジュールMUの種類に依らず中間モジュールMMに対して入力される種類の入力命令である基本入力命令と、に分類する(S4)。ここでは、中間モジュールMMと組み合わせられる上位モジュールMUの種類に応じて上記分類を行う。
例えば、入力命令IC1,IC2,IC3を中間モジュールMMに入力する上位モジュールMU、入力命令IC1,IC2を中間モジュールMMに入力する上位モジュールMU、及び、入力命令IC2,IC3を中間モジュールMMに入力する上位モジュールMUのいずれかが、中間モジュールMMと組み合わされて、電子機器1に実装される利用環境を考える。この場合には、入力命令IC1,IC3を選択入力命令に分類し、入力命令IC2を基本入力命令に分類する。
この後には、プログラム部品を共通化する上記グループ毎に、このグループに属する各細分化機能を複合化した、このグループに属する細分化機能共通のプログラム部品である複合プログラム部品を生成する(S5)。ここでは、グループに属する各細分化機能を実現するための手順を、共通部分については、共通のプログラムコードで記述したプログラム部品を上記複合プログラム部品として生成する(S5)。
但し、複合プログラム部品の生成に際しては、各グループに対して、中間モジュールMMに入力される入力命令の組合せ毎の複合プログラム部品を生成する。即ち、各グループに対しては、上記分類した選択入力命令の入力有無に応じて場合分けされる中間モジュールMMへ入力される入力命令の組合せ毎に、この組合せでは入力されない選択入力命令に対応する細分化機能を複合化の対象から外して、このグループに属する残りの細分化機能を複合化した上記複合プログラム部品を生成する。
例えば、S3では、入力命令IC2を基本入力命令に分類し、入力命令IC1,IC3を選択入力命令に分類し、S4では、出力命令OC1に対して、機能FN11、機能FN21及び機能F31のグループを、プログラム部品を共通化する細分化機能のグループに設定したとする。この場合、中間モジュールMMに入力される入力命令の組合せとしては、{入力命令IC1,入力命令IC2,入力命令IC3}の組合せ(第一の組合せ)、{入力命令IC1,入力命令IC2}の組合せ(第二の組合せ)、{入力命令IC2,入力命令IC3}の組合せ(第三の組合せ)及び{入力命令IC2}の組合せ(第四の組合せ)がある。
従って、このグループに対する複合プログラム部品としては、図3に示すように、入力命令IC1,IC2,IC3が入力される場合に使用する「機能FN11及び機能FN21及び機能FN31に対応する処理手順を実行可能な」複合プログラム部品、入力命令IC1,IC2が入力される場合に使用する「機能FN11及び機能FN21に対応する処理手順を実行可能な」複合プログラム部品、入力命令IC2,IC3が入力される場合に使用する「機能FN21及び機能FN31に対応する処理手順を実行可能な」複合プログラム部品、及び、入力命令IC2のみが入力される場合に使用する「機能F21に対応する処理手順を実行可能な」複合プログラム部品を生成する。
尚、入力命令IC2のみが入力される場合に使用する「機能F21に対応する処理手順を実行可能な」複合プログラム部品は、複数機能を複合化したものではないが、ここではプログラム部品を共通化する対象とした機能に対応するプログラム部品については、複合化する機能が複数か単一であるかを問わず複合プログラム部品と表現する。
一方で、プログラム部品を共通化する対象ではない細分化機能、即ち、S3で設定したグループのいずれにも属さない細分化機能、及び、入力命令毎の管理機能の夫々については、当該機能に対応する処理手順を実行可能な単独のプログラム部品を生成する(S6)。尚、このプログラム部品を単独プログラム部品と表現する。
このようして、モジュール生成方法における第一段階の手順を終了する。また、第二段階では、第一段階で生成したプログラム部品(単独プログラム部品及び複合プログラム部品)を組み合わせて、実装する電子機器1の環境に合わせた中間モジュールMMを生成する。
具体的には、実装する電子機器1において、上位モジュールMUから生成対象の中間モジュールMMに入力される入力命令の組合せを特定する(S7)。即ち、入力命令の一群の内、選択入力命令については、上位モジュールMUの種類によって中間モジュールMMに実際に入力されるか否かが変わる。従って、S7では、上位モジュールMUの種類を特定して、上位モジュールMUから生成対象の中間モジュールMMに入力される入力命令の組合せを特定する。
この後には、中間モジュールMMから出力する出力命令毎に、第一段階で生成したプログラム部品群の中から、この出力命令と中間モジュールMMに入力される入力命令との組合せに応じた複合プログラム部品及び単独プログラム部品を抽出する(S8)。具体的には、中間モジュールMMに入力される入力命令毎の上記管理機能に対応した単独プログラム部品を抽出すると共に、入力命令及び出力命令毎の細分化機能群の内、プログラム部品の共通化の対象となっていない各細分化機能に対応する単独プログラム部品を抽出する。更に、プログラム部品の共通化の対象となっている細分化機能のグループに関しては、グループ毎に、上位モジュールMUから実際に入力される入力命令の組合せに対応した複合プログラムを抽出する。
そして、抽出したプログラム部品群を組み合わせて中間モジュールMMを生成する。例えば、プログラム部品としてのオブジェクトファイル群をリンクして、中間モジュールMMとしての実行ファイルを生成する(S9)。
尚、第二段階の処理については、これを、中間モジュールMMを実装する電子機器1の上位モジュールMUの種類毎に実行することにより、実装する電子機器1の環境に合わせた中間モジュールMMを生成する。このように、本実施例のモジュール生成方法によれば、プログラム部品の組合せによって、入力命令の組合せに対応したモジュールを簡単に生成でき、多様な電子機器1への実装が想定される環境で、モジュールサイズを抑えつつ効率的に、電子機器1に実装する中間モジュールMMを生成することができる。
以上には、本実施例のモジュール生成方法について説明したが、続いては、このモジュール生成方法の適用例について、図4〜図8を用いて説明する。ここでは、図4に示すように、上位モジュールMUから入力命令としての初期化命令IC4及びデータ送信命令IC5及びデータ受信命令IC6を受けて、下位モジュールMDに対し通信初期化命令OC4及びメッセージ送信命令OC5及びメッセージ受信命令OC6を出力する通信制御機能を有した通信モジュールMMEに、上記実施例のモジュール生成方法を適用する例について説明する。
但し、ここでは、通信モジュールMMEを実装する電子機器1が、車両に搭載される電子制御装置(ECU)であるものとする。電子制御装置に通信モジュールMMEを実装することで、車内LANにおけるノード間の通信を実現するといった具合である。
車内LANに接続される電子制御装置としては、車両データを他の電子制御装置に送信する電子制御装置、他の電子制御装置から送信されてくる車両データを受信して車両を制御する電子制御装置、車両データを他の電子制御装置に送信する一方で他の電子制御装置から自己で検知できない車両状態を表す車両データを受信して車両を制御する電子制御装置等が知られている。
このような各電子制御装置に対して通信モジュールMMEを個別に一から生成していたのでは手間がかかる。そこで、上記実施例を適用して、モジュールサイズを抑えつつ、各電子制御装置に利用可能な通信モジュールMMEを生成する。
通信モジュールMMEに要求される機能は、次のようなものである。具体的には、上位モジュールMU(車両制御プログラム等)からの初期化命令IC4の入力を契機に、図5に示す内容の通信初期化/管理処理を実行可能な構成が通信モジュールに要求される。即ち、電子機器1(実装対象の電子制御装置)のコンピュータが上記処理を実行できるように、通信モジュールMMEをプログラムとして構成することが要求される。
ここで、通信初期化/管理処理の内容について図5を用いて説明すると、通信初期化/管理処理では、下位モジュールMDを初期化するための通信初期化命令OC4を下位モジュールMDに出力して、下位モジュールMDを初期化した後(S2110)、初期化メッセージの送信処理を実行する(S2120)。
具体的に、S2120では、図6(a)に示すように、メッセージID及び参加状態フラグ及び自ノードが認識しているネットワークへの参加ノードを表す情報を記述したメッセージ本体を生成する(S2210)。尚、メッセージIDは、このメッセージの種類を表すものであり、ここでは、メッセージIDとして、初期化メッセージに対応するID番号を記述する。また、参加状態フラグは、ネットワークへの参加/ネットワークからの脱退を表すフラグである。ここでは、参加状態フラグとして「参加」を表す値を記述して、メッセージ本体を生成する。
更には、生成したメッセージ本体にフォーマットに従う付属情報(メッセージIDのID番号に依らない付属情報)を追加して送信メッセージ(ここでは初期化メッセージ)を生成する(S2220)。送信メッセージには、上記付属情報としてCRCを記述する。そして、上記生成した送信メッセージを送信対象に設定したメッセージ送信命令OC5を下位モジュールMDに出力する(S2230)。これによって、下位モジュールMDを通じて上記送信メッセージ(初期化メッセージ)を送信する。S2120では、このようにして初期化メッセージの送信処理を行う。
また、S2120の処理後には、他ノードから送信されてくる初期化メッセージの受信処理を行う(S2130)。具体的に、S2130では、初期化メッセージを受信バッファから通信モジュールMMEに取り込むためのメッセージ受信命令OC6を下位モジュールMDに出力して、下位モジュールMDを通じ、受信バッファから初期化メッセージを取り込む。そして、取り込んだ初期化メッセージが有する上記参加状態フラグに基づき、ネットワークに参加しているノードを特定すると共に、初期化メッセージ毎に、初期化メッセージが示す初期化メッセージ送信元のノードが認識しているネットワークへの参加ノードを特定する。
このようなS2120,S2130動作を、ネットワークへの参加手続きが完了するまで繰り返し実行する。具体的には、自ノードで認識するネットワーク内の参加ノードが他ノードから受信した初期化メッセージが示すネットワーク内の参加ノードと一致するまで(S2140でNo)、S2120,S2130の処理を繰り返し、一致した場合には、ネットワークへの参加手続きが完了したと判断して(S2140でYes)、S2150に移行する。
そして、S2150以降では、所定時間が経過する度に(S2150でYes)、初期化メッセージの送信処理(S2160)及び初期化メッセージの受信処理(S2170)を行って、現時点でのネットワークへの参加ノードを特定する。
以上が、上位モジュールMUから入力される初期化命令IC4に基づく通信初期化/管理処理の内容である。
また、上記通信モジュールMMEには、上位モジュールMUからのデータ送信命令IC5の入力に対応して図6(b)に従う処理を実行可能であることが要求される。即ち、電子機器1(実装対象の電子制御装置)のコンピュータが図6(b)に従うデータ送信処理を実行できるように、通信モジュールMMEをプログラムとして構成することが要求される。
ここで、図6(b)に示すデータ送信処理について説明すると、この処理では、メッセージIDと、上位モジュールMUからのデータ送信命令IC5にて指定された送信対象データとを組み合わせて、メッセージ本体を生成する。メッセージ本体には、メッセージIDとして、上記モジュールから指定された送信対象データの種類に対応するID番号を格納する(S2310)。更には、生成したメッセージ本体に、初期化メッセージと共通のフォーマットに従う付属情報(メッセージIDのID番号に依らない付属情報)を追加して送信メッセージを生成する(S2320)。送信メッセージには、上記付属情報としてCRCを記述する。
そして、上記生成した送信メッセージを送信対象に設定したメッセージ送信命令OC5を下位モジュールMDに出力する(S2330)。これによって、下位モジュールMDを通じて上記送信メッセージを送信する。以上が、データ送信処理の内容である。
このような構成の通信モジュールMMEを生成するに際して、上述したモジュール生成方法を適用すると、まず通信モジュールMMEとしての機能を、図7に示すように、入力命令及び出力命令の組合せ毎の機能(FE1〜FE5)に分割する。但し、ここでは、データ送信命令IC5の入力に対応してはメッセージ送信命令OC5しか出力されず、データ受信命令IC6の入力に対応してはメッセージ受信命令OC6しか出力されないので、細分化機能は5つである(FE1〜FE5)。また、入力命令としての初期化命令IC4、データ送信命令IC5、及びデータ受信命令IC6に対しては管理機能(ME1〜ME3)を設ける(図2のS1,S2参照)。
この後、出力命令毎に、プログラム部品を共通化する細分化機能を選択してグループ化する(S3)。ここでは、出力命令であるメッセージ送信命令OC5に関して、データ送信処理(図6(b))に対応する細分化機能FE4と初期化メッセージ送信処理(図6(a))に対応する細分化機能FE2とを、プログラム部品を共通化するグループに設定する。更に、出力命令であるメッセージ受信命令OC6に関して、細分化機能FE5及び細分化機能FE3を、プログラム部品を共通化するグループに設定する。
更に、初期化命令IC4、データ送信命令IC5、及び、データ受信命令IC6を選択入力命令又は基本入力命令のいずれかに分類する(S4)。ここでは、データ送信命令IC及びデータ受信命令IC6を選択入力命令に分類し、初期化命令IC4を基本入力命令に分類する。
この後には、細分化機能FE4及び細分化機能FE2からなるグループ(Aグループと称する。)、並びに、細分化機能FE5及び細分化機能FE3からなるグループ(Bグループと称する。)の夫々に関して、入力命令の組合せ毎の複合プログラム部品を生成する(S5)。
詳述すると、Aグループに関しては、細分化機能FE4に対応するデータ送信命令IC5が選択入力命令であるので、複合プログラム部品としては、初期化命令IC4及びデータ送信命令IC5が入力される場合に使用する細分化機能FE4及び細分化機能FE2を複合化した複合プログラム部品、及び、データ送信命令IC5が入力されない場合に使用する細分化機能FE2を実現可能な複合プログラム部品を生成する。
同様に、Bグループに関しては、細分化機能FE5に対応するデータ受信命令IC6が選択入力命令であるので、複合プログラム部品としては、初期化命令IC4及びデータ受信命令IC6が入力される場合に使用する細分化機能FE5及び細分化機能FE3を複合化した複合プログラム部品、及び、データ受信命令IC6が入力されない場合に使用する細分化機能FE3を実現可能な複合プログラム部品を生成する。
ここで、グループAについて、細分化機能FE4及び細分化機能FE2を複合化して複合プログラム部品を生成する場合のプログラム部品の構成を、図8に示す。初期化メッセージ送信処理とデータ送信処理とでは、S2220及びS2230の手順と、S2320及びS2330の手順とで、共通する手順を有する。従って、この共通する手順に対応するプログラムコードを共通化して複合プログラム部品を生成する。グループBについても、同様の思想に基づき、複合プログラム部品を生成する。
また、Aグループ及びBグループのいずれにも属さない細分化機能FE1及び管理機能ME1〜ME3については、単独プログラムを生成し(S6)、これら複合プログラム部品及び単独プログラム部品を組み合わせて、各電子制御装置に対応した通信モジュールMMEを生成する(S7〜S9)。
例えば、自ノードからのデータ送信を行わず専ら他ノードからのデータ受信を行う電子制御装置に実装する通信モジュールMMEに関しては、Aグループに関して、細分化機能FE4及び細分化機能FE2を複合化した複合プログラム部品を選択せずに、細分化機能FE2のみを実現可能な複合プログラム部品を選択し、Bグループに関して、細分化機能FE5及び細分化機能FE3を複合化した複合プログラム部品を選択して、通信モジュールMMEを生成する。
従って、本実施例のモジュール生成方法によれば、通信モジュールMMEのプログラムサイズを、従来と比較して低減することができる。
以上に、本実施例のモジュール生成方法について説明したが、続いては、このモジュール生成方法の思想に従って、中間モジュールMMを生成する際に使用する支援装置100の構成について説明する。図9に示す支援装置100は、中間モジュールMMを生成する際のユーザの作業を支援するための装置である。但し、以下に説明する支援装置100は、上記モジュール生成方法を更に発展させた方法でのモジュール生成を想定したものであるので、この点留意されたい。
図9に示す支援装置100は、周知のパーソナルコンピュータと同様、演算部10と、表示部20と、操作部30と、入出力部40と、記憶部50と、を備えるものである。表示部20は、液晶ディスプレイ等から構成されるものであり、各種情報を画像情報として出力するものである。また、操作部30は、ユーザ操作可能なキーボードやポインティングデバイス等で構成されるユーザインタフェースである。また、入出力部40は、USBインタフェースや磁気ディスクドライブ装置、CD/DVDドライブ装置等で構成されるものであり、各種データ(プログラムを含む)を、支援装置100に入力したり、支援装置100から取り出したりするためのものである。
また、記憶部50は、ハードディスク装置等で構成されるものであり、演算部10で実行されるプログラムやプログラムで使用されるデータ等が格納されるものである。
そして、演算部10は、CPU11及びRAM13を備えるものであり、記憶部50が記憶するプログラムをCPU11にて実行することにより、ユーザによる中間モジュールMMの生成を支援するための各種処理を行う。
具体的に、記憶部50には、ユーザによる中間モジュールMMの生成作業を支援するためのアプリケーションプログラムとして第一支援ツール及び第二支援ツール及び第三支援ツールがインストールされている。CPU11は、操作部30を通じて入力される第一支援ツール及び第二支援ツール及び第三支援ツールの起動指示に従って、ユーザによる中間モジュールMMの生成を支援するための各種処理を行う。
図10は、第一支援ツールに従ってCPU11が実行する処理のフローチャートを示した図である。CPU11は、操作部30を通じて入力される第一支援ツールの起動指示に従って図10に示す処理を開始すると、まず命令登録処理を実行する(S100)。この命令登録処理は、図11に示すように、中間モジュールMMに入力される入力命令及び中間モジュールMMから出力される出力命令の登録操作を受け付けるための処理である。
命令登録処理を開始すると、CPU11は、入力命令の識別コードを格納するための配列{I_na(n)}及び出力命令の識別コードを格納するための配列{O_na(m)}を生成する(S110,S115)。そして、変数nをゼロに初期化後(S120)、S130以降の処理を実行する。
具体的には、変数nを1カウントアップし(S130)、入力命令登録画面を表示し、操作部30を通じて入力命令の識別コードの入力操作を受け付け(S135)、当該操作により入力された識別コードを、配列要素I_na(n)にセットする(S140)。
このような手順S130〜S140を、入力命令の登録完了操作がなされるまで繰り返し実行する。これにより、配列要素I_na(1),I_na(2),…,I_na(N)の順に、入力命令登録画面を通じて入力された入力命令の識別コードを登録する。尚、入力命令の識別コードは、中間モジュールMMの構成を画面表示する際に用いられるものである。従って、識別コードとしては、入力命令の名称や内容を表す文字列コードをユーザに入力させることができる。
そして、入力命令の登録完了操作がなされると(S145でYes)、出力命令の識別コードについても同様の手順で、その登録操作を受け付ける。即ち、変数mをゼロに初期化後(S150)、変数mを1カウントアップし(S160)、出力命令登録画面を表示し、操作部30を通じて出力命令の識別コードの入力操作を受け付け(S165)、当該操作により入力された識別コードを、配列要素O_na(m)にセットする(S170)手順を、出力命令の登録完了操作がなされるまで繰り返し実行することにより、配列要素O_na(1),O_na(2),…,O_na(M)の順に、出力命令登録画面を通じて入力された出力命令の識別コードを登録する。尚、出力命令の識別コードとしては、入力命令と同様、出力命令の名称や内容を表す文字列コードを挙げることができる。
そして、出力命令の登録完了操作がなされると(S175でYes)、当該命令登録処理を終了する。以下では、この命令登録処理で登録された入力命令の数をNと表現し、出力命令の数をMと表現する。
この命令登録処理を終了すると、CPU11は、S200に移行して、中間モジュールMMで実現すべき機能の登録操作を受け付けるために、図12に示す機能登録処理を実行する。この機能登録処理では、機能の識別コードを格納するために、N×(M+1)の二次元配列{F1(n1,m1)}を生成する(S210)。更に、命令登録処理で登録された入力命令I_na(1)〜I_na(N)の一覧画面(以下、「入力命令一覧画面」と表現する。)を表示して、入力命令の選択操作を受け付け(S220)、選択された入力命令I_na(sn)の識別コード(名称や内容を表す文字列)及び入力ライン、並びに、登録された各出力命令O_na(1)〜O_na(M)の識別コード及び出力ライン、並びに、各出力命令O_na(1)〜O_na(M)に対応した外部機能ブロック、並びに、内部機能ブロックを、レイアウトした図12右図に示す構成のモジュール構成画面を、表示部20に表示する(S230)。
尚、ここでは、配列要素I_na(1)〜I_na(N)に識別コードが登録された各入力命令の内、配列要素I_na(n)に識別コードが登録された入力命令のことを「入力命令I_na(n)」と表現する。出力命令についても同様である。
また、ここでいう外部機能とは、下位モジュールMDに命令を出力する動作を伴う機能のことであり、上記実施例のモジュール生成方法で説明した「細分化機能」に対応する。また、内部機能とは、下位モジュールMDに命令を出力する動作を伴わない機能のことである。このモジュール構成画面に表示される外部機能ブロックは、外部機能の登録内容を表示するためのブロックであり、モジュール構成画面には、入力命令I_na(sn)及び出力命令O_na(1)〜O_na(M)の組合せ毎の外部機能ブロックが表示される。
S230でモジュール構成画面を表示すると、CPU11は、変数m1をゼロに初期化後(S240)、S251以降の処理を実行する。
具体的には、変数m1を1カウントアップし(S251)、入力命令I_na(sn)及び出力命令O_na(m1)の組合せに対応する外部機能の登録操作を受け付けるための外部機能登録画面を表示して、操作部30を通じて外部機能の識別コードの入力操作を受け付け(S253)、当該操作により入力された識別コードを、配列要素F1(sn,m1)にセットすると共に、配列要素F1(sn,m1)に対応するモジュール構成画面の外部機能ブロックである入力命令I_na(sn)の入力ライン及び出力命令O_na(m1)に接続された外部機能ブロックに、登録された外部機能の識別コードを表示する(S255)。ここでは、識別コードが配列要素F1(n1,m1)にセットされる外部機能のことを、「外部機能F1(n1,m1)」と表現する。
CPU11は、このような手順S251〜S255を、変数m1が値M以上となるまで繰り返し実行する。これによって、配列要素F1(sn,1),F1(sn,2),…,F1(sn,M)の順に、外部機能登録画面を通じて入力された外部機能の識別コードを登録し、この登録内容をモジュール構成画面に反映させる。
尚、外部機能の識別コードとしては、この機能の名称や内容を表す文字列コードを挙げることができる。また、S253では、外部機能を登録しない旨の入力操作を受け付けることも可能である。この場合には、対応する配列要素F1(sn,m1)にNULLコードをセットする。入力命令に対応する出力命令が存在しない場合には、登録すべき外部機能がないので、ユーザにより、外部機能を登録しない旨の入力操作がなされる。
また、変数m1が値M以上となると(S257でYes)、内部機能登録画面を表示して、操作部30を通じて登録する内部機能の識別コードの入力操作を受け付け(S260)、当該操作により入力された識別コードを、配列要素F1(sn,M+1)にセットする(S270)。そして、登録された入力命令の全てを選択する操作がなされていない場合には(S280でNo)、S220に戻ってS220以降の処理を実行することで、入力命令I_na(1)〜I_na(N)に対応した外部機能及び内部機能の登録操作を受け付ける。
そして、全ての入力命令についての外部機能及び内部機能の登録操作を受け付けると(S280でYes)、当該機能登録処理を終了する。
また、機能登録処理を実行した後には、S300に移行して、図13に示す内部機能詳細登録処理を実行する。内部機能詳細登録処理では、上述した内部機能を、外部機能の動作を制御する管理機能と、その他の機能である個別機能とに分離して登録する。
内部機能詳細登録処理を開始すると、CPU11は、まず管理機能及び個別機能の識別コードを格納するために、N×(M+2)の二次元配列{T1(n2,m2)}を生成する(S310)。また、n2=1,…,N及びm2=1,…,Mの各配列要素T1(n2,m2)に、同一要素番号の配列要素F1(n2,m2)の値を設定する(S315)。
更に、入力命令一覧画面を表示して、入力命令の選択操作を受け付け(S320)、選択された入力命令I_na(sn)の識別コード及び入力ライン、並びに、各出力命令O_na(1)〜O_na(M)の識別コード及び出力ライン、並びに、各出力命令O_na(1)〜O_na(M)に対応した外部機能ブロック、並びに、内部機能に内在する管理機能のブロック及び個別機能のブロックを、レイアウトした図13右図に示す構成のモジュール構成画面を、表示部20に表示する(S330)。
S330で上記モジュール構成画面を表示すると、CPU11は、入力命令I_na(sn)に対応する管理機能登録用の画面である管理機能登録画面を表示部20に表示して、操作部30を通じて管理機能の識別コードの入力操作を受け付け(S340)、当該操作により入力された識別コードを、配列要素T1(sn,M+2)にセットすると共に、モジュール構成画面の管理機能ブロックに、登録された管理機能の識別コードを表示する(S345)。
この後、CPU11は、入力命令I_na(sn)に対応する個別機能登録画面を表示し、操作部30を通じて個別機能の識別コードの入力操作を受け付け(S350)、当該操作により入力された識別コードを、配列要素T1(sn,M+1)にセットすると共に、モジュール構成画面の個別機能ブロックに、登録された個別機能の識別コードを表示する(S355)。
また、登録された全ての入力命令を選択する操作がなされていない場合には(S360でNo)、S320に戻ってS320以降の処理を実行することで、各入力命令I_na(1)〜I_na(N)に対応した管理機能及び個別機能の登録操作を受け付ける。尚、S350では、個別機能を登録しない旨の入力操作を受け付けることも可能である。この場合には、対応する配列要素T1(sn,M+1)にNULLコードをセットする。
そして、全ての入力命令についての管理機能及び個別機能の登録操作を受け付けると(S360でYes)、当該内部機能詳細登録処理を終了する。
また、このようにして内部機能詳細登録処理を終えると、CPU11は、S400に移行し、図14に示す確認画面表示処理を実行する。
確認画面表示処理では、各入力命令I_na(1)〜I_na(N)の識別コード及び入力ライン、並びに、各出力命令O_na(1)〜O_na(M)の識別コード及び出力ライン、各外部機能F1(n1,m1)のブロック(但し、n1=1,…,Nでありm1=1,…,Mである。)をレイアウトした、図14右上段に示す外部機能確認画面を、表示部20に表示する(S410)。尚、登録されていない外部機能(NULLに設定された外部機能)に対応するブロックについては表示しない又はグレー表示するなどの処理を施すことができる。
また、先へ進む旨の操作が操作部30を通じてなされると(S420でYes)、CPU11は、登録された出力命令O_na(1)〜O_na(M)の一覧画面(以下、「出力命令一覧画面」と表現する。)を表示して、出力命令の選択操作を受け付け(S430)、出力命令の選択操作がなされると、選択された出力命令O_na(sm)についての外部機能確認画面を表示する。
具体的には、選択された出力命令O_na(sm)の識別コード及び出力ライン、並びに、この出力命令O_na(sm)を出力する各外部機能F1(1,sm),F1(2,sm),…,F1(N,sm)のブロック、及び、各外部機能F1(1,sm),F1(2,sm),…,F1(N,sm)に対応する入力命令I_na(1)〜I_na(N)の識別コード及び入力ラインをレイアウトした図14右下段に示す確認画面を表示する(S440)。
また、この確認画面を表示すると、出力命令の切替操作又は先へ進む旨の操作が操作部30を通じてなされるまで待機し(S450,S460)、出力命令の切替操作がなされた場合には、S430に移行して、後続処理を再度実行することにより、選択された出力命令に対応する上記確認画面を表示する(S440)。そして、先へ進む旨の操作がなされると(S460でYes)、当該確認画面表示処理を終了して、S500に移行する。尚、この確認画面表示処理は、生成する中間モジュールMMの構成をユーザに再確認させるための処理である。
また、S500に移行すると、CPU11は、図15に示す細分化処理を実行する。図15に示す細分化処理は、複雑な構造の中間モジュールMMに対応してプログラム部品を細分化する作業を支援するために、外部機能F1(1,1)〜F1(N,M)を、ユーザからの指示に従って更に細分化(分割)するものである。
細分化処理を開始すると、CPU11は、分割数を格納するための配列{DivF(n3,m3)}を生成し(S510)、各配列要素DivF(n3,m3)に対して初期値1をセットする(S515)。但し、n3=1,…,N及びm3=1,…,M+1である。また、配列{F2(n3,m3,l3)}を生成し(S520)、n3=1,…,N及びm3=1,…,M+1の各配列要素F2(n3,m3,1)に、同一要素番号の配列要素F1(n3,m3)の値を設定する(S525)。
そして、各入力命令I_na(1)〜I_na(N)の識別コード及び入力ライン、並びに、各出力命令O_na(1)〜O_na(M)の識別コード及び出力ライン、各詳細機能F2(n3,m3,l3)のブロック(但し、n3=1,…,Nでありm3=1,…,Mであり、l3=1,…,DivF(n3,m3)である。)をレイアウトしたモジュール構成画面を、表示部20に表示する(S530)。ここでは、外部機能F1(1,1)〜F1(N,M)を細分化して得られる各機能のことを特に「詳細機能」と表現する。図16は、S530で表示部20に表示されるモジュール構成画面の構成を表す図である。但し、初回のS530実行時には、DivF(n3,m3)=1であるので、図14右上段に示す確認画面と同様のモジュール構成画面が表示される。
この処理を終えると、CPU11は、出力命令一覧画面を表示して、出力命令の選択操作を受け付け(S540)、S530で表示したモジュール構成画面を、選択された出力命令O_na(sm)についてのモジュール構成画面に更新する(S545)。具体的には、出力命令O_na(1)〜O_na(M)の識別コード及び出力ラインの内、選択された出力命令O_na(sm)以外の識別コード及び出力ラインを削除したモジュール構成画面に更新する。
この後、CPU11は、入力命令一覧画面を表示して、入力命令の選択操作を受け付け(S550)、選択された入力命令I_na(sn)及び上記出力命令O_na(sm)の組合せに対応する外部機能F1(sn,sm)を細分化対象に設定して、この外部機能F1(sn,sm)についての分割数入力画面を表示し、分割数の入力操作を受け付ける(S560)。
そして、配列要素DivF(sn,sm)の値を、入力された分割数に更新し(S565)、モジュール構成画面における詳細機能F2(sn,sm,l)のブロックを、上記入力された分割数に応じたブロック数に更新する。即ち、上記モジュール構成画面を、外部機能F1(sn,sm)の詳細機能として、DivF(sn,sm)個の各詳細機能F2(sn,sm,1),F2(sn,sm,2),…,F2(sn,sm,DivF(sn,sm))のブロックをレイアウトしたモジュール構成画面に更新する(S569)。
また、モジュール構成画面にレイアウトされたブロックの選択操作により、詳細機能F2(sn,sm,1),F2(sn,sm,2),…,F2(sn,sm,DivF(sn,sm))についての選択操作を、操作部30を通じて受け付け(S570)、選択された詳細機能F2(sn,sm,sl)についての詳細機能登録画面を表示して、操作部30を通じて詳細機能の識別コードの入力操作を受け付ける(S580)。
そして、操作部30を通じて入力された識別コードを、配列要素F2(sn,sm,sl)にセットすると共に、配列要素F2(sn,sm,sl)に対応するモジュール構成画面の詳細機能ブロックに、登録された詳細機能の識別コードを表示する(S585)。尚、ここでは、配列要素F2(n3,m3,l3)に識別コードがセットされる詳細機能のことを、「詳細機能F2(n3,m3,l3)」と表現する。以下、配列要素をサフィックスに用いた類似の表現については、外部機能F1(n1,m1)や詳細機能F2(n3,m3,l3)と同様の規則に従うものとする。
そして、詳細機能F2(sn,sm,1)〜F2(sn,sm,DivF(sn,sm))の全てに対する識別コードの登録作業が完了していない場合には(S590でNo)、S570に移行して、S570以降の処理を実行し、詳細機能F2(sn,sm,1)〜F2(sn,sm,DivF(sn,sm))の全てに対する識別コードの登録作業が完了すると(S590でYes)、S540で選択された出力命令O_na(sm)に対応する入力命令であって、外部機能の分割が必要な入力命令についての選択操作が全て完了したか否かを判断し(S595)、完了していないと判断すると(S595でNo)、S550に戻って、S550以降の処理を実行する。
一方、完了したと判断すると(S595でYes)、CPU11は、出力命令O_na(1),…,_O_na(M)についての出力命令一覧画面を通じた選択操作が全て完了したか否かを判断し(S599)、選択操作が完了していないと判断すると(S599でNo)、S530に移行し、表示部20に表示するモジュール構成画面を更新してS540以降の処理を実行する。また、選択操作が完了したと判断すると(S599でYes)、当該細分化処理を終了する。
この細分化処理を終えると、CPU11は、S600にて共通化対象設定処理を実行する。図17は、共通化対象設定処理を表すフローチャートである。共通化対象設定処理では、ユーザからの指示に従って、プログラム部品を共通化する機能の一群をグループ化する。
共通化対象設定処理を開始すると、CPU11は、各入力命令I_na(1)〜I_na(N)の識別コード及び入力ライン、並びに、各出力命令O_na(1)〜O_na(M)の識別コード及び出力ライン、各詳細機能F2(n3,m3,l3)のブロック(但し、n3=1,…,Nでありm3=1,…,Mであり、l3=1,…,DivF(n3,m3)である。)をレイアウトしたモジュール構成画面を、表示部20に表示する(S610)。
また、管理用配列{FC2(x,y,z)}を生成し(S615)、グループ番号xを、値ゼロに初期化する(S620)。その後、S630以降の処理を実行する。
S630に移行すると、CPU11は、グループ番号xを1カウントアップし、出力命令一覧画面を表示して出力命令についての選択操作を受け付け(S640)、S610で表示したモジュール構成画面を、S545での処理と同様に、選択された出力命令O_na(sm)についてのモジュール構成画面に更新する(S650)。更に、グループ構成要素番号yを値ゼロに初期化する(S660)。
その後、CPU11は、グループ構成要素番号yを1カウントアップし(S671)、モジュール構成画面にレイアウトされたブロックの選択操作により、出力命令O_na(sm)に対応する詳細機能F2(n3,sm,l3)であって、プログラム部品を共通化する詳細機能F2(n3,sm,l3)の選択操作を受け付け(S673)、選択された詳細機能F2(sn,sm,sl)の要素番号snを、配列要素FC2(x,y,1)にセットし、選択された詳細機能F2(sn,sm,sl)の要素番号slを、配列要素FC2(x,y,2)にセットする(S675)。このようにして配列要素FC2(x,y,1)及び配列要素FC2(x,y,2)には、グループ番号がxであり、グループ構成要素番号がyである第xグループ第y要素の詳細機能を特定するための情報を登録する。
この処理を終えると、CPU11は、プログラム部品を共通化する第xグループの詳細機能についての選択操作が完了したか否かを判断し(S677)、選択操作が完了していない場合には(S677でNo)、S671に移行して、S671以降の処理を実行する。そして、選択操作が完了したと判断すると(S677でYes)、第xグループの要素数yを、配列要素F2C(x,0,1)にセットすると共に、S640で選択された出力命令O_na(sm)の要素番号smを、配列要素FC2(x,0,2)にセットする(S680)。
このようにして第xグループに対応する出力命令、第xグループに属する詳細機能の数、及び、第xグループの属する詳細機能の一群を特定できるように、S675,S680で配列要素FC2(x,y,z)に各種情報を登録する。
また、この処理を終えると、CPU11は、プログラム部品を共通化するグループの登録操作が完了したか否かを判断し(S690)、完了していないと判断すると(S690でNo))、S630に移行して、S630以降の処理を実行する。
そして、グループの登録操作が完了したと判断すると(S690でYes)、グループ総数xを、配列要素F2C(0,0,1)にセットして(S695)、当該共通化対象設定処理を終了する。
また、共通化対象設定処理を終了すると、CPU11は、S700に移行して、図18に示す副管理機能登録処理を実行する。尚、この副管理機能登録処理は、外部機能を細分化して得られる同一外部機能に属する各詳細機能の動作を制御するための機能(以下、副管理機能という。)を、操作部30を通じたユーザ操作に従って登録するための処理である。
この副管理機能登録処理を開始すると、CPU11は、副管理機能を含む各機能の識別コードを格納するための配列{T2(n4,m4,l4)}を生成すると共に(S710)、分割数を格納するための配列{DivT(n4,m4)}を生成する(S715)。但し、n4=1,…,Nであり、m4=1,…,M+2である。
また、この処理を終えると、CPU11は、n4=1,…,N及びm4=1,…,M及びl4=1,…,DivF(n4,m4)の範囲における各配列要素T2(n4,m4,l4)に、同一要素番号の配列要素F2(n4,m4,l4)の値をセットすると共に、n4=1,…,N及びm4=1,…,Mの範囲における各配列要素T2(n4,m4,DivF(n4,m4)+1)に、NULLをセットする(S720)。更に、配列要素T2(n4,M+1,1)に、配列要素T1(n4,M+1)の値をセットし、配列要素T2(m4,M+2,1)に、配列要素T1(m4,M+2)の値をセットする(S725)。
また、n4=1,…,N及びm4=1,…,Mの範囲における各配列要素DivT(n4,m4)に、同一要素番号の配列要素DivF(n4,m4)の値をセットし、配列要素DivT(n4,M+1)に値1をセットし、配列要素DivT(n4,M+2)に、値1をセットする(S730)。
また、この処理を終えると、S740に移行して、各入力命令I_na(1)〜I_na(N)の識別コード及び入力ライン、並びに、各出力命令O_na(1)〜O_na(M)の識別コード及び出力ライン、並びに、各詳細機能T2(n4,m4,l4)のブロック、並びに、各個別機能T2(n4,M+1,1)のブロック、並びに、各管理機能T2(n4,M+2,1)のブロック、並びに、各外部機能F1(n4,m4)毎の副管理機能T2(n4,m4,DivT(n4,m4)+1)のブロックをレイアウトしたモジュール構成画面を表示部20に表示する(但し、n4=1,…,Nでありm4=1,…,Mであり、l4=1,…,DivT(n4,m4)である)。図19は、S740で表示するモジュール構成画面の構成を表す図である。
そして、モジュール構成画面にレイアウトされたブロックの選択操作により、副管理機能T2(n4,m4,DivT(n4,m4)+1)についての選択操作を受け付け(S750)、選択された副管理機能T2(sn,sm,DivT(sn,sm)+1)についての識別コードを登録するための副管理機能登録画面を表示して、操作部30を通じた副管理機能T2(sn,sm,DivT(sn,sm)+1)の識別コードの入力操作を受け付ける(S760)。そして、入力された識別コードを、配列要素T2(sn,sm,DivT(sn,sm)+1)にセットする。この際には、モジュール構成画面における副管理機能T2(sn,sm,DivT(sn,sm)+1)のブロックに、登録された識別コードを表示する。
また、この処理後には、副管理機能についての識別コードの登録操作が全て完了したか否かを判断し(S780)、全て完了していないと判断するとS740に移行し、全て完了したと判断すると(S780でYes)、当該副管理機能登録処理を終了する。
また、副管理機能登録処理を終えると、CPU11は、S800に移行し、選択入力命令設定処理を実行する。図20に示す選択入力命令設定処理は、中間モジュールMMに入力される入力命令I_na(1)〜I_na(N)の内、上位モジュールMUの種類によっては中間モジュールMMに対して入力されない種類の入力命令である選択入力命令についての設定操作をユーザから受け付けて、中間モジュールMMに入力される入力命令を、上記選択入力命令又は上位モジュールMUの種類に依らず中間モジュールMMに対して入力される種類の入力命令である基本入力命令に分類するための処理である。
選択入力命令設定処理を開始すると、CPU11は、選択入力命令の要素番号を記憶するための配列{Dn(k)}を生成し(S810)、変数kを値ゼロに初期化する(S820)。その後、選択入力命令の設定を完了する旨の完了操作がなされたか否かを判断し(S830)、完了操作がなされていないと判断すると(S830でNo)、変数kを1カウントアップし(S840)、入力命令一覧画面を表示して、選択入力命令に設定する入力命令の選択操作を受け付ける(S850)。そして、選択された入力命令I_na(sn)の要素番号snを、配列要素Dn(k)にセットする(S860)。その後、S830に移行する。このような動作により、配列要素Dn(1),Dn(2)の順に、当該配列要素に、ユーザから指定された選択入力命令の要素番号をセットする。
そして、完了操作がなされたと判断すると(S830でYes)、配列要素Dn(0)に選択入力命令の数kをセットして(S870)、選択入力命令設定処理を終了する。
また、選択入力命令設定処理を終了すると、CPU11は、S900に移行し、図21に示す組合せテーブル生成処理を実行する。
組合せテーブル生成処理を開始すると、CPU11は、変数pに、プログラム部品を共通化するグループ総数を表す配列要素F2C(0,0,1)の値をセットした後(S910)、S915以降の処理を実行することにより、グループ毎の組合せテーブルを生成する。
詳述すると、S915では、変数pがゼロよりも大きいか否かを判断し、ゼロよりも大きい場合には(S915でYes)、第pグループについての組合せテーブルを、第pグループに属する詳細機能の個数を表す配列要素F2C(p,0,1)の値に基づき生成する(S920)。ここで生成する組合せテーブルは、中間モジュールMMへ入力される入力命令の組合せパターン(換言すれば入力有無のパターン)を表すテーブルのことであり、具体的には、図22上段太枠内に示すように、入力命令が入力される場合を値「1」、入力命令が入力されない場合を値ゼロで表現した組合せパターンを記したテーブルのことである。図22は、第pグループの組合せテーブルの例を概念的に表したものである。
第pグループに属する各詳細機能について、この詳細機能に対応する入力命令が上位モジュールMUから入力される場合及び入力されない場合を場合分けすると、詳細機能毎に、入力命令の入力有無に応じた2通りの場合分けができる。また、本実施例では、入力命令が同一の詳細機能が同一グループに複数存在することのないようにグループ化を行うルールを採用しているので、詳細機能毎に対応する入力命令は異なる。従って、中間モジュールMMに入力される第pグループに対応する入力命令の組合せパターンの総数は、2のF2C(p,0,1)乗となる。
従って、S920では、第pグループに属する各詳細機能に対応する入力命令の中間モジュールMMへの入力有無に応じた2のF2C(p,0,1)乗個の入力命令の組合せパターンを記した組合せテーブル{TLCP(p,q,r)}を生成する。TLCP(p,q,r)は、第pグループの組合せテーブルにおける第q行第r列のテーブル要素を表し、pはグループ番号、qはグループ構成要素番号、rは組合せパターン番号に対応する。
この点について詳述すると、テーブル要素TLCP(p,q,r)は、p>0,q>0,r>0の範囲において、第pグループにおけるグループ構成要素番号qの詳細機能に対応する入力命令I_na(F2C(p,q,1))の入力有無を表す値であって、第r組合せパターンでの入力有無を表す値を、値1又は値0で保持するものである。値1を採るときには、上位モジュールMUから中間モジュールMMへの入力命令I_na(F2C(p,q,1))の入力があることを示し、値ゼロを採るときには、上位モジュールMUから中間モジュールMMへの入力命令I_na(F2C(p,q,1))の入力がないことを示す。
図22上段に示す例によれば、TLCP(p,1,6)=1,TLCP(p,2,6)=0,TLCP(p,3,6)=1であるので、第6組合せパターンは、入力命令I_na(F2C(p,1,1))及び入力命令I_na(F2C(p,3,1))が中間モジュールMMに入力され、入力命令I_na(F2C(p,2,1))については中間モジュールMMに入力されないパターンであることになる。
補足すると、本実施例では、テーブル要素TLCP(p,q,0)に、第pグループにおけるグループ構成要素番号qの詳細機能に対応する入力命令I_na(F2C(p,q,1))の要素番号を表すF2C(p,q,1)の値を格納して、組合せテーブルを生成する。
ちなみに、S920では、基本入力命令及び選択入力命令を区別することなく、各入力命令が中間モジュールMMに入力される場合及び入力されない場合の夫々を場合分けして、上述したように、2のF2C(p,0,1)乗個の入力命令の組合せパターンを記した組合せテーブル{TLCP(p,q,r)}を生成する(S920)。但し、基本入力命令については、必ず中間モジュールMMに入力されるものであるので、本来、基本入力命令の入力がない場合については考慮する必要はない。この点については、後の処理で対応して組合せテーブルを修正する。
S920で、第pグループの組合せテーブル{TLCP(p,q,r)}を生成すると、CPU11は、変数pを1減算した値に更新し(S925)、S915に移行する。このようにして、S915〜S925の処理では、プログラム部品を共通化するグループ毎に、このグループについての組合せテーブルを生成する。
また、第1グループ(p=1)までの組合せテーブルを生成し、p=0になると(S915でNo)、CPU11は、変数pをゼロに初期化する(S930)。また、変数pを1カウントアップし(S940)、変数qをゼロに初期化後(S945)、S950以降の処理を実行する。
具体的に、S950では、グループ総数を表す配列要素F2C(0,0,1)の値に基づき、変数pがグループ総数以下であるか否かを判断し、グループ総数以下であると判断すると(S950でYes)、S955に移行し、グループ総数を超えていると判断すると(S950でNo)、当該組合せテーブル生成処理を終了する。即ち、この組合せテーブル生成処理では、S955以降の処理をグループ毎に実行し、全てのグループに対するS955以降の処理が完了すると、当該組合せテーブル生成処理を終了する。
S955に移行すると、CPU11は、変数qを1カウントアップした値に更新した後、S960に移行して、第pグループの要素数を表す配列要素F2C(p,0,1)の値に基づき、グループ構成要素番号に対応する変数qが第pグループの要素数以下であるか否かを判断する。そして、変数qが第pグループの要素数以下であると判断すると(S960でYes)、S970以降の処理を実行し、変数qが第pグループの要素数を超えていると判断すると(S960でNo)、S940に移行する。即ち、この組合せテーブル生成処理では、S970以降の処理を、グループ内の要素毎に実行して、全ての要素に対するS970以降の処理が完了すると、S940に移行する。このようにして、各グループについて、グループを構成する要素毎に、S970以降の処理を実行する。
また、S970に移行すると、CPU11は、第pグループ第q要素に対応する詳細機能に対応する入力命令I_na(F2C(p,q,1))が、配列{Dn(k)}に登録されているか否かを判断することによって、この入力命令が基本入力命令であるか否かを判断する。尚、基本入力命令である場合、入力命令I_na(F2C(p,q,1))は、配列{Dn(k)}に登録されていない。
そして、入力命令I_na(F2C(p,q,1))が基本入力命令ではない(換言すれば選択入力命令である)と判断すると(S970でNo)、S955に移行して、変数qを1カウントアップし(S955)、S960以降の処理を実行する。即ち、第pグループの次の要素に対応するS960以降の処理を実行する。
一方、入力命令I_na(F2C(p,q,1))が基本入力命令であると判断すると(S970でYes)、CPU11は、変数rをゼロに初期化して(S975)、S980以降の処理を実行する。
具体的に、S980では、変数rを1カウントアップした値に更新し、その後のS985では、変数rの値が、第pグループに属する詳細機能に対応する入力命令の組合せパターンの総数である2のF2C(p,0,1)乗以下であるか否かを判断する。
そして、変数rの値が2のF2C(p,0,1)乗以下であると判断すると(S985でYes)、テーブル要素TLCP(p,q,r)が値ゼロであるか否かを判断し(S990)、値ゼロである場合には(S990でYes)、第pグループの第r組合せパターンに対応するq=1,…,F2C(p,0,1)の各テーブル要素TLCP(p,q,r)の値を、NULLに設定する(S995)。その後、S980に移行する。一方、値ゼロではない場合には、(S990でNo)、S995の処理を実行することなく、S980に移行する。このようにして、S980〜S995の処理を繰り返し実行することにより、CPU11は、不適切な組合せパターンである基本入力命令が入力されないケースに対応する組合せパターンのテーブル要素の値をNULLに設定し、これによって、組合せテーブルを修正する。
そして、全組合せパターンに対してS980〜S995の処理を実行すると、変数rの値が2のF2C(p,0,1)乗を超えていると判断して(S985でNo)、S955に移行し、第pグループの次要素についてのS960以降の処理を実行する。
尚、図22下段は、S920で図22上段に示す組合せテーブルを生成した後、S930〜S995で修正した後の組合せテーブルの構成を表す図である。但し、図22に示す例では、入力命令I_na(F2C(p,3,1))が基本入力命令であるときの組合せテーブルの修正方法を表す図である。
また、このようにして組合せテーブル生成処理を終了すると、CPU11は、S1000(図10参照)に移行して、各グループの組合せテーブルを、表示部20に表示する。
即ち、グループ毎に、このグループに所属する詳細機能に対応する入力命令毎の識別コード、及び、入力命令の各組合せパターンを記した図22下段に示すような構成の組合せテーブルの出力画面を表示部20に表示する。この際には、出力命令の識別コードを併せて出力画面上に表示する。このようにして、S1000では、プログラム部品を共通化するグループ毎に、中間モジュールMMに入力される入力命令の組合せの各パターンをユーザに画像情報として表示する。
尚、S1000では、操作部30を通じて入力されるユーザによるグループの切替指示に従って、指定されたグループに対応する組合せテーブルを表示部20に切替表示してよいし、各グループの組合せテーブルを、並べて表示部20に一括表示してもよい。
また、このような表示動作を、操作部30を通じて第一支援ツールの終了操作がなされるまで継続し、第一支援ツールの終了操作がなされると(S1010でYes)、この第一支援ツールの処理結果を第二支援ツールでも使用するために作業データとして記憶部50に保存した後(S1020)、第一支援ツールを終了する。
ユーザは、この第一支援ツールで表示されるグループ毎の組合せテーブルに従って、グループ毎に、生成する中間モジュールMMに入力される入力命令の組合せ毎の複合プログラム部品を生成する。即ち、組合せ毎に、上位モジュールMUから入力されない入力命令に対応した詳細機能については複合化対象から外し、上位モジュールMUから中間モジュールMMへ入力される入力命令に対応した詳細機能群のみを複合化して、これらの詳細機能を実現可能な複合プログラム部品を生成する(図10参照)。
また、グループに属さない詳細機能の夫々、並びに、副管理機能及び管理機能及び個別機能の夫々について、これら各機能をコンピュータに実現させるための機能毎のプログラム部品である単独プログラム部品を生成する(図10右段参照)。
このようにして各プログラム部品を生成した後、ユーザは、操作部30を通じて第二支援ツールを起動する。第二支援ツールの起動操作が操作部30を通じて入力されると、CPU11は、第二支援ツールに従って、図23に示す処理を開始する。
この処理を開始すると、CPU11は、まず、第一支援ツールで保存された作業データを記憶部50から読み出す(S1100)。更に、複合プログラム部品管理テーブル{TLCPP(p,q,r)}を生成する(S1110)。この際には、図24に示すように、テーブル要素TLCPP(p,q,r)に、同一要素番号のテーブル要素TLCP(p,q,r)の値をセットする。また、単独プログラム部品管理テーブル{TLIPP(u,v,w)}を生成する(S1120)。この際には、図25に示すように、テーブル要素TLIPP(u,v,0)に、入力命令I_na(u)及び出力命令O_na(v)に対応する機能の分割数であるDivT(u,v)をセットする。
その後、変数pをゼロに初期化し(S1130)、S1140以降の処理を実行することにより、グループ毎に、複合プログラム部品の登録を受け付ける。具体的には、S1140において、変数pを1カウントアップして、複合プログラム部品の登録対象を第pグループに更新し、その後、第pグループに対応する入力命令の組合せの各パターンに対応した複合プログラム部品の登録操作を受け付けて、入出力部40を通じて登録対象の複合プログラム部品を取得し記憶部50に保存すると共に、その複合プログラム部品の格納場所を、登録情報として、図24に示すように、複合プログラム部品管理テーブルのテーブル要素TLCPP(p,0,r)に登録する(S1150)。例えば、第p0グループの組合せテーブル{TLCP(p0,q,r)}における第r0組合せパターンに対応する複合プログラム部品については、その登録情報を、テーブル要素TLCPP(p0,0,r0)に登録する。
尚、複合プログラム部品の登録時には、複合プログラム部品管理テーブルにおける当該プログラム部品の登録情報にアクセス可能なリンク情報を、単独プログラム部品管理テーブルにも登録する。例えば、該当する複合プログラム部品が、機能T2(u,v,r)を実現可能なプログラム部品である場合には、単独プログラム部品管理テーブルにおけるテーブル要素TLIPP(u,v,r)に、このプログラム部品の登録情報が記述された複合プログラム部品管理テーブルの要素番号をリンク情報として登録する。
CPU11は、このようなS1140及びS1150の手順を繰り返し実行することにより、各グループに対しての複合プログラム部品についての登録操作を受け付ける。そして、変数pがグループの総数以上となると(S1160でYes)、単独プログラム部品を登録すべき機能(グループに属さない詳細機能並びに個別機能及び管理機能及び副管理機能)の一覧画面を表示して、単独プログラム登録対象の機能についての選択操作を受け付け(S1170)、更に、選択された機能T2(u,v,r)についての単独プログラム部品の登録操作を受け付けて、入出力部40を通じて登録対象の単独プログラム部品を取得し記憶部50に保存すると共に、その単独プログラム部品の格納場所を、図25に示すように、登録情報として、テーブル要素TLIPP(u,v,r)に登録する(S1180)。
CPU11は、このようなS1170,S1180の手順を、全ての単独プログラム部品についての登録操作を受け付けるまで繰り返し実行し、全ての登録が完了すると(S1190でYes)、上記生成した複合プログラム部品管理テーブル及び単独プログラム部品管理テーブルを第三支援ツールで読出可能とするために、S1100で読み出した作業データに上記生成した複合プログラム部品管理テーブル及び単独プログラム部品管理テーブルを追加して更新してなる作業データを、記憶部50に保存して(S1195)、当該第二支援ツールに係る処理を終了する。
また、第三支援ツールは、このようなプログラムの登録が完了した後、電子機器1に実装する中間モジュールMMを生成する際にユーザからの指示に従って起動される。具体的に、CPU11は、操作部30を通じて第三支援ツールの起動指示が入力されると、図26に示す処理を開始し、まず、記憶部50から作業データを読み出す(S1200)。その後、S1300に移行して、図27に示す入力有無設定処理を実行する。
この入力有無設定処理は、入力命令I_na(1)〜I_na(N)の内、今回生成する中間モジュールMMには入力されない選択入力命令の情報を、操作部30を通じてユーザから取得するための処理である。この入力有無設定処理を実行すると、CPU11は、まず配列{DnP(k)}を生成し(S1310)、変数kをゼロに初期化する(S1320)。その後、S1330以降の処理を実行する。
S1330では、変数kを1カウントアップし、S1340では、選択入力命令の総数を表す配列要素Dn(0)の値に基づき、変数kが、選択入力命令の総数以下であるか否かを判断する。そして、総数以下であると判断すると(S1340でYes)、配列要素Dn(k)が示す入力命令I_na(Dn(k))が生成対象の中間モジュールMMに入力されるか否かを問合せる画面を表示部20に表示して、入力命令I_na(Dn(k))が中間モジュールMMに入力されるか否かを表す情報を、操作部30を通じて取得する(S1351)。
そして、入力命令I_na(Dn(k))が中間モジュールMMに入力されるとの操作情報が操作部30を通じて入力された場合には(S1353でYes)、配列要素DnP(k)を値1にセットする(S1355)。一方、入力命令I_na(Dn(k))が中間モジュールMMに入力されないとの操作情報が操作部30を通じて入力された場合には(S1353でNo)、配列要素DnP(k)を値ゼロにセットする(S1357)。その後、S1330に移行する。
このようにしてS1330〜S1357の処理では、配列{Dn(k)}に登録された各選択入力命令について、この選択入力命令が、今回生成する中間モジュールMMに入力されるか否かを問合せ、その入力有無の情報を、ユーザから取得して、配列要素DnP(k)に記憶する。
そして、変数kが選択入力命令の総数を超えると(S1340でNo)、全ての選択入力命令について入力有無の情報を取得したと取り扱って、配列要素DnP(0)に、配列要素Dn(0)の値、即ち、選択入力命令の総数をセットする(S1360)。その後、入力有無設定処理を終了する。
また、この入力有無設定処理を終了すると、CPU11は、S1400に移行し、図28に示すモジュール出力処理を実行する(S1400)。モジュール出力処理を開始すると、CPU11は、変数pを値ゼロに初期化した後(S1410)、S1420以降の処理を実行する。
S1420では、変数pを1カウントアップし、その後、複合プログラム部品を使用するグループの総数を表す配列要素F2C(0,0,1)に基づき、変数pがグループ総数以下であるか否かを判断する(S1421)。そして、グループ総数以下であると判断すると(S1421でYes)、複合プログラム部品管理テーブル{TLCPP(p,q,r)}を参照して、記憶部50が記憶する第pグループの複合プログラム部品群の中から、配列{DnP(k)}が示す生成対象の中間モジュールMMに入力される入力命令の組合せパターンに対応する複合プログラム部品を、使用プログラム部品として抽出する(S1425)。その後、S1420に移行する。
このようにして、S1420〜S1425の処理では、グループ毎に、配列{DnP(k)}が示す生成対象の中間モジュールMMに入力される入力命令の組合せパターンに対応する複合プログラム部品を、使用プログラム部品として記憶部50から抽出する。
また、全グループについてS1425の処理を実行することで、変数pがグループ総数を超えると(S1421でNo)、S1430に移行して、単独プログラム部品管理テーブル{TLIPP(u,v,w)}を参照して、プログラム部品共通化の対象外である各機能に対応する単独プログラムを、使用プログラム部品として記憶部50から抽出する。
ここで抽出する単独プログラム部品は、上記グループのいずれにも属さない詳細機能、詳細機能の動作を制御する副管理機能、副管理機能を通じて上記詳細機能の動作を制御する管理機能、及び、個別機能の各機能に対応した単独プログラム部品である。但し、生成対象の中間モジュールMMに入力されない入力命令に対応する管理機能、副管理機能、詳細機能及び個別機能についての単独プログラム部品に関しては、抽出対象外である。
また、この処理を終えると、CPU11は、S1440に移行し、使用プログラム部品として抽出した単独プログラム部品群のプログラムサイズの和(以下、この和を値ZIPと表現する。)を算出する。
更に、使用プログラムとして抽出した複合プログラム部品群のプログラムサイズの和(以下、この和を値ZCPと表現する。)を算出する(S1450)。
その他、上記グループ毎に、このグループに対応する複合プログラム部品の内、プログラムサイズが最大の複合プログラム部品(以下、「最大複合プログラム部品」と表現する。)を特定し、各グループの最大複合プログラム部品に対応するプログラムサイズの和(以下、この和を値ZMと表現する。)を算出する(S1460)。
そして、支援ツールで有効にサイズ低減されたプログラム部品群のプログラムサイズとして、値ZIPに値ZCPを加算した値ZA1を算出すると共に、従来と同様に、入力されない選択入力命令に対応する機能を盛り込んだ場合のプログラム部品群のプログラムサイズとして、値ZIPに値ZMを加算した値ZA2を算出する(S1470)。尚、最大複合プログラム部品は、多くの場合、選択入力命令が全て入力される場合に使用するプログラム部品となるため、値ZA2は、従来と同様に、選択入力命令の有無を考慮せずに中間モジュールMMを生成する場合のプログラムサイズに近似的に一致する。
この後、CPU11は、支援ツールを使用した場合の中間モジュールMMのプログラムサイズとして、値ZA1を記述し、支援ツールを使用しない場合の参考例としての中間モジュールMMのプログラムサイズとして、値ZA2を記述し、更に、支援ツールによるプログラムサイズ低減量として、Δ=ZA1−ZA2を記述したプログラムサイズ情報画面を、表示部20に表示する(S1480)。
また、CPU11は、使用プログラム部品として抽出した各複合プログラム部品及び各単独プログラム部品を、中間モジュールMMの構成部品のセットとして出力し(S1490)、当該モジュール出力処理を終了する。出力先としては、記憶部50におけるユーザから予め指定された領域、又は、入出力部40に装着された記憶媒体等を挙げることができる。
尚、S1490に代えては、各使用プログラム部品を組み合わせて実行プログラム(実行ファイル)を生成することで、中間モジュールMMを完成した形で出力する処理(S1491)を実行してもよい。使用プログラム部品を組み合わせて、コンピュータが実行可能な形式の中間モジュールMMを生成する手続きについては、プログラム言語に依るので、ここでは、これ以上の説明を省略する。
以上、本実施例の支援装置100の構成について説明したが、上記構成の支援装置100によれば、上述したモジュール生成方法による中間モジュールMMの生成に関して、ユーザ作業を支援することができ、プログラムサイズを低減しつつ、中間モジュールMMを効率的に生成することができる。
具体的には、出力命令毎の組合せテーブルを画像情報として表示部20に表示するので、ユーザは、入力命令の組合せを容易に把握することができ、入力命令の組合せ毎の複合プログラム部品を生成する際のユーザ作業を容易にすることができる。
特に、この支援装置100によれば、部品を共通化する対象の詳細機能のグループ毎に、このグループに属する各詳細機能に対応する入力命令の組合せであって、選択入力命令の入力有無に応じて場合分けして得られる中間モジュールMMに入力される入力命令の組合せについての一通りの各パターンを表す情報を、組合せテーブルとしてユーザに表示するので、グループ毎に、どのような種類の複合プログラム部品を生成すればよいかについての情報を簡素且つ理解しやすくユーザに表示することができる。
また、本実施例によれば、生成対象の中間モジュールMMに入力される選択入力命令の情報を、第三支援ツールを通じて支援装置100に入力することで、ユーザは、生成対象の中間モジュールMMに適切なプログラム部品のセットを簡単に取得することができる。よって、この支援装置100によれば、ユーザによる中間モジュールMMの生成作業を簡易にすることができる。
尚、「特許請求の範囲」に記載の分割手順は、S1の手順に対応し、特定手順は、S3の手順に対応し、分類手順は、S4の手順に対応し、複合部品生成手順は、S5の手順に対応し、単独部品生成手順は、S6の手順に対応し、モジュール生成手順は、S7〜S9の手順に対応する。また、管理機能部品生成手順は、S2,S6の手順に対応する。
また、「特許請求の範囲」に記載の支援装置は、支援装置100に対応し、命令情報取得手段は、CPU11が実行する命令登録処理にて実現され、選択入力情報取得手段は、CPU11が実行する選択入力命令設定処理にて実現され、情報提供手段は、CPU11が実行するS900〜S1000の処理にて実現されている。
また、機能分割手段は、CPU11が実行する機能登録処理及び細分化処理にて実現され、共通化情報取得手段は、CPU11が実行する共通化対象設定処理にて実現されている。
この他、複合部品取得手段は、CPU11が実行するS1140〜S1160の処理にて実現され、単独部品取得手段及び管理部品取得手段は、CPU11が実行するS1170〜S1190の処理にて実現され、入力有無情報取得手段は、CPU11が実行するS1300の処理にて実現され、抽出手段は、CPU11が実行するS1425,S1430の処理にて実現されている。
また、本発明は、上記実施例に限定されるものではなく、種々の態様を採ることができる。例えば、上記実施例では、モジュールをソフトウェアで構成する例を説明したが、モジュールは、電子機器1に実装可能なハードウェア回路として構成されてもよい。
図29は、変形例の電子機器1’の構成を表すブロック図である。以下に説明する変形例では、図4と同様に、上位モジュールMUから入力命令としての初期化命令IC4及びデータ送信命令IC5及びデータ受信命令IC6を受けて、下位モジュールMDに対し通信初期化命令OC4及びメッセージ送信命令OC5及びメッセージ受信命令OC6を出力する通信制御機能を有した通信モジュールMMEに、上記実施例のモジュール生成方法を適用し、ハードウェア構成の中間モジュール100を生成した場合の中間モジュール100の構成について説明する。
中間モジュール100は、基板本体110に、回路チップ135,136が装着されてなる。基板本体110は、入力命令IC4,IC5,IC6毎に、入力命令固有の機能(管理機能及び個別機能)を実現する入力処理回路114,115,116が形成され、更に、出力命令(通信初期化命令)OC4固有の機能を実現する出力処理回路124と、出力命令(メッセージ送信命令)OC5に対応する機能を実現する回路チップ135を実装可能な装着部125と、出力命令(メッセージ受信命令)OC6に対応する機能を実現する回路チップ136を実装可能な装着部126とが形成された構成にされている。
詳述すると、入力処理回路114,115,116及び出力処理回路124は、基板本体110に、その回路パターンが直接形成されている。
初期化命令IC4の入力を受け付ける入力処理回路114は、初期化命令IC4に対応する管理機能ME1(図7参照)を実現可能な回路であり、初期化命令IC4が入力される入力端子(図示せず)を備える。また、入力処理回路114の出力端は、基板本体110に形成された線路により、出力処理回路124、装着部125、及び、装着部126の各入力端に電気的に接続されている。
一方、データ送信命令IC5の入力を受け付ける入力処理回路115は、データ送信命令IC5に対応する管理機能ME2(図7参照)を実現可能な回路であり、データ送信命令IC5が入力される入力端子(図示せず)を備え、入力処理回路115の出力端は、基板本体110に形成された線路により、装着部125の入力端に電気的に接続されている。
同様に、データ受信命令IC6の入力を受け付ける入力処理回路116は、データ受信命令IC6に対応する管理機能ME3(図7参照)を実現可能な回路であり、データ受信命令IC6が入力される入力端子(図示せず)を備え、入力処理回路116の出力端は、基板本体110に形成された線路により、装着部126の入力端に電気的に接続されている。
また、出力処理回路124は、初期化命令IC4の入力を契機に通信初期化命令OC4を出力する細分化機能FE1(図7参照)に対応する処理を実現可能な回路として構成され、初期化命令IC4が入力されると、入力処理回路114からの信号を受けて通信初期化命令OC4を、出力端子(図示せず)を通じて下位モジュールMDに出力する。
また、装着部125は、入力処理回路114,115からの信号を受けてメッセージ送信指令OC5を出力する回路チップ135を、基板本体110に実装可能なソケット及び当該ソケットの出力端に接続された下位モジュールMDにメッセージ送信指令OC5を出力するための出力端子を備え、これらが基板本体110に形成された構成にされている。
この他、装着部126は、入力処理回路114,116からの信号を受けてメッセージ受信指令OC6を出力する回路チップ136を基板本体110に実装可能なソケット及び当該ソケットの出力端に接続された下位モジュールMDにメッセージ受信指令OC6を出力するための出力端子を備え、これらが基板本体110に形成された構成にされている。
また、装着部125のソケットは、上記回路チップ135として、上位モジュールMUから入力される入力命令の組合せ毎に用意される回路チップ135a,135bの一つを実装可能な構成にされている。
回路チップ135は、上記実施例における複合プログラム部品に対応する機能を専用回路により実現するものであり、入力命令の組合せ毎に用意される(回路チップ135a,135b)。即ち、装着部125のソケットには、入力命令の組合せ毎の回路チップ135a,135bの内、上位モジュールMUから実際に入力される命令に対応した回路チップ135a,135bが実装される。
具体的に、初期化命令IC4は、上位モジュールMUの種類に依らず必ず入力される種類の入力命令(基本入力命令)である一方、データ送信命令IC及びデータ受信命令IC6は、上位モジュールMUの種類によって入力有無が切り替わる選択入力命令である。
回路チップ135aは、初期化命令IC4及びデータ送信命令IC5が入力される場合に装着部125のソケットに実装される細分化機能FE4及び細分化機能FE2(図7参照)を複合化した回路チップであり、回路チップ135bは、初期化命令IC4は入力されるがデータ送信命令IC5は入力されない場合に、装着部125のソケットに実装される細分化機能FE2(図7参照)を実現可能な回路チップである。
また、装着部126のソケットは、回路チップ136として、上位モジュールMUから入力される入力命令の組合せ毎に用意される回路チップ136a,136bの一つを実装可能な構成にされている。
回路チップ136は、回路チップ135と同様、上記実施例における複合プログラム部品に対応する機能をハードウェア回路により実現するものであり、入力命令の組合せ毎に用意される(回路チップ136a,136b)。そして、装着部126のソケットには、入力命令の組合せ毎の回路チップ136a,136bの内、上位モジュールMUから実際に入力される命令に対応した回路チップ136a,136bが実装される。
具体的に、回路チップ136aは、初期化命令IC4及びデータ受信命令IC6が入力される場合に装着部126のソケットに実装される細分化機能FE5及び細分化機能FE3(図7参照)を複合化した回路チップであり、回路チップ136bは、データ受信命令IC6が入力されない場合に装着部126のソケットに実装される細分化機能FE3(図7参照)を実現可能な回路チップである。
このような中間モジュール100の構成により、本変形例では、上位モジュールMUから入力される入力命令の組合せに応じて中間モジュール100の回路構成を容易に変更できるようにしている。従って、本実施例によれば、従来のように複数種類の上位モジュールMUに対応可能に中間モジュール100を構成するために、上位モジュールMUの種類によっては不要な回路群を基板に冗長に形成しなければならないのを抑制することができ、多様な装置への適用が想定される環境でも、中間モジュール100のモジュールサイズ(回路規模)を抑えることができる。結果として、本実施例によれば、中間モジュール100の製造コストを抑えることができる。
以上には、通信モジュールMMEをハードウェア回路化した場合の具体的な構成を説明したが、図2に示した中間モジュールMMの生成方法を、ハードウェア回路を採用した場合で説明し直すと、中間モジュールMMの生成に際しては、中間モジュールMMにて実現されるべき機能を、入力命令IC1〜IC3及び出力命令OC1〜OC3の組合せ毎に一つの機能に分割し(S1)、入力命令及び出力命令の組合せ毎の機能分割後には、入力命令IC1〜IC3毎に管理機能MA1〜MA3を定める(S2)。
また、この後には、出力命令毎に、複数機能共通の回路チップにて実現する細分化機能のグループを定める(S3)。即ち、出力命令が同一で入力命令の異なる細分化機能の一群の中から、共通回路(回路チップ)を用いて実現する機能を選択して、出力命令が同一で入力命令の異なる細分化機能群のうち、上記選択した複数の機能を、回路を共通化する細分化機能の組合せとして、グループ化する。
更には、入力命令の一群を、選択入力命令と基本入力命令とに分類する(S4)。この後には、グループ毎に、このグループに属する各細分化機能を複合化した当該グループに属する細分化機能共通の回路チップ(上記回路チップ135a,135b,136a,136b)を生成し(S5)、更に、基板本体には、S3で設定したグループのいずれにも属さない細分化機能(出力処理回路124)、及び、入力命令毎の管理機能の夫々を実現可能な回路(入力処理回路114,115,116)を、基板本体に直接形成する(S6)。
具体的に、S5では、各グループに対して、中間モジュールMMに入力される入力命令の組合せ毎の回路チップを生成する。また、S6では回路チップを着脱可能な装着部(装着部125,126)を、上記グループ毎に基板本体に形成する。この際には、回路チップへの信号入力路を形成する装着部(装着部125,126)の入力端に、回路チップに対応する入力命令の管理機能を実現する各回路(入力処理回路114,115,116)の出力端を電気的に接続する。
このようして、モジュール生成方法における第一段階の手順を終了する。また、第二段階では、第一段階で生成した回路チップ(回路チップ135a,135b,136a,136b)を基板本体に実装して、環境に合わせた中間モジュール100を生成する。
具体的には、上位モジュールMUの種類を特定して、上位モジュールMUから生成対象の中間モジュールMMに入力される入力命令の組合せを特定し(S7)、上記装着部毎に、第一段階で生成した回路チップの中から、中間モジュールMMに入力される入力命令の組合せに応じた回路チップを抽出する(S8)。
そして、抽出した回路チップを、対応する装着部に実装して中間モジュールMMを生成する。この変形例によれば、実装する回路チップの組合せによって、入力命令の組合せに対応したモジュールを簡単に生成でき、多様な電子機器への実装が想定される環境で、効率的に、環境に適した中間モジュールMMを生成することができる。