説明

システムの構築方法

【課題】
プログラムにおいて、モジュールAの提供する関数FAがさらに複数の機能(以下、サブ機能)を提供する場合、これらのサブ機能を利用するモジュールBから指定する必要がある。従来この指定方法に関しては関数の引数などを用いて、サブ機能を指定する情報(以下機能ID情報)をモジュールBに通知する方法が利用されている。本発明が解決しようとする課題は、前記機能ID情報を用いたモジュール間でのサブ機能の利用に関して、モジュールBが通知する機能ID情報とモジュールAが提供するサブ機能の対応がシステム構築時あるいはシステム動作時に考慮されていないという点である。
【解決手段】
モジュールBが関数・メッセージング機能を用いる場合に指定する機能ID情報の候補と、モジュールAが提供可能なサブ機能の対応関係を用いたしステムの構築管理を支援する実行機能管理手段を設けた。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は任意のシステムを実現するプログラムモジュール(以下、モジュールと称する)の構築方法に関連し、特にモジュール間の相互利用時における利用機能の特定・管理に関するビルド時、処理装置の起動時、処理装置の実行時などのシステムの構築方法に関する。
【背景技術】
【0002】
モジュールの構築方法においては、モジュールAが機能を実装した関数FAを提供しかつ、モジュールBが必要とする関数FAを定義するモジュールBの外部参照関数情報と、モジュールAが前記モジュールBの必要とする関数を定義するモジュールAの外部提供関数情報を設け、ビルド時に例えばリンカがモジュールBの外部参照関数情報とモジュールAの外部提供関数情報の関連付けを行う。
【0003】
この関連付けは、モジュールBが関数FAを呼び出し場合に必要となるモジュールA実行時の実際の関数の呼び出しアドレスなどの情報の設定を行うことを主な処理内容とし、この関連付けによってモジュールBからモジュールAの関数FAの呼び出しが可能となる。
なお、このようなビルド時のコンパイラ・リンカなどのビルド手段の機能・動作に関しては特開2003−67196号公報などに記載されているように、プログラム構築時に広く用いられている技術であり、とくに詳細に関しては記載しない。
【0004】
【特許文献1】特開2003−67196号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
上記従来技術を用いることで、モジュール間で相互に利用する関数や変数などの管理が可能となる。一方モジュールAの提供する関数FAがさらに複数の機能FA1、FA2、・・・FAX(以下、サブ機能FANと称する)を提供する場合、これらのサブ機能を関数FAを利用するモジュールBから指定する必要がある。
従来この指定方法に関しては関数FAの引数を用いて、サブ機能を指定する情報(以下機能ID情報と称する)をモジュールBに通知する方法が利用されている。
【0006】
本発明が解決しようとする課題は、前記機能ID情報を用いたモジュール間での関数FAのサブ機能FANの利用に関して、モジュールBが通知する機能ID情報とモジュールAが提供する関数FAのサブ機能FANの対応がシステム構築時に考慮されていないという点である。
このため例えばシステム構築が完了し、システム実行時において、モジュールBがある機能ID情報=Pを指定した関数FAの呼び出しをおこない、モジュールAでは機能ID情報Pに対応する関数FAの小関数FANがなく、エラー処理となる、といった問題がある。
【0007】
さらに、モジュールBがモジュールCの提供する、メッセージ・イベントなどの送受信機能(以下、メッセージング機能と称する)を用いてモジュールAの機能を利用する場合においても同様の課題が存在する。モジュールAとモジュールBがそれぞれ異なるスレッドで動作していると仮定する。モジュールCが例えばメッセージ送信関数FC1とメッセージ受信関数FC2を提供する場合、モジュールBはメッセージ送信関数FC1を用いて送信先のモジュールA、実行する機能ID情報を通知する、モジュールAはメッセージ受信関数FC2を用いてモジュールAに通知される任意のメッセージを取得することが可能となる。
このような構成において、モジュールBが特定の機能ID情報=Pを指定したモジュールAへのメッセージ送信をおこない、モジュールAではメッセージ受信後に機能ID情報Pに対応するサブ機能FANがなく、エラー処理となる、といった問題がある。
【課題を解決するための手段】
【0008】
モジュールBが関数・メッセージング機能を用いる場合に指定する機能ID情報の候補と、モジュールAが提供可能なサブ機能の対応関係を用いたしステムの構築管理を支援する実行機能管理手段を設けた。
この記実行機能管理手段は、モジュールBの利用する機能ID情報の候補である必要機能情報とモジュールAの提供するサブ機能の情報である提供機能情報を比較し、管理を行う。管理内容としては、例えば、モジュールAのサブ機能に対応するものがないモジュールBの機能ID情報候補に関してシステム構築時に警告通知を提供する、あるいはモジュールBの機能ID情報候補に対応するものがないモジュールAのサブ機能に関してシステム構築時に対応するサブ機能の雛形となるコードを生成する、といった管理が可能である。なお、管理内容は特にこれを限定しない。
【0009】
また、前記実行機能管理手段を個々のモジュールをコンパイル・リンクするビルド処理時に利用するビルド手段内に設ける構成や、個々のモジュールをシステム起動時に情報処理装置上で実行可能な形式に配置する実行モジュールロード手段内に設ける構成や、処理装置がモジュールを実行中に該モジュールが必要とする他のモジュールを配置する動的実行モジュールロード手段内に設ける構成などが可能である。また、少なくとも1つ以上の前記モジュールを実行するCPUなどの処理実行手段と、その他のモジュールを実行する処理実行手段が異なるように前記実行機能管理手段は管理する。なお、実行機能管理手段の構成方法に関しては特にこれを限定しない。
【発明の効果】
【0010】
上記機能ID情報に基づいた必要機能情報と提供機能情報を用いたシステム構築の管理を行う実行機能管理手段を設けたことにより、システム構築時にモジュールBの必要とするモジュールAのサブ機能の管理が可能となり、システムの信頼性が向上する。さらにモジュール作成時においてサブ機能レベルでの整合性の管理が可能となり開発効率が向上する。
【発明を実施するための最良の形態】
【0011】
以下本発明の実施の形態について、図面を用いて説明する。
【実施例1】
【0012】
以下本発明の実施例1について、図1から図4を用いて説明する。
本実施例は、サブ機能レベルでのモジュール間の機能連携の管理を機能ID情報の基づいて実現する実行機能管理手段をビルド手段に設けた構成を示す例である。
図1はモジュールの構成概要を示すモジュール構成概要図、図2はビルド手段の構成と処理手順を示すビルド手段構成図、図3は本実施例のモジュール構成を示すモジュール構成図、図4、図5は図2の実行管理手段が図3のモジュール間の機能連携の管理に用いる必要機能情報および提供機能情報のデータ構造を示す図である。
【0013】
図1において、101および121は組込み装置やコンピュータなどの情報処理装置上で動作するプログラムの実装単位であるモジュール、102および122は各モジュールが提供する機能である機能手段、104および105は少なくとも一部の機能を他のモジュールから利用可能としている機能手段である機能提供手段、124および125は少なくとも機能の一部の処理を他のモジュールの機能手段に依頼している機能利用手段、103は機能提供手段104,105を利用するために必要な機能提供手段の機能実行開始アドレス情報など機能提供手段情報を提供する機能をもつインターフェース手段、123は機能利用手段124、125が必要となる機能提供手段の機能を実行するために必要となる機能提供手段の実行開始アドレス情報などの機能利用手段情報を設定する機能をもつインターフェース手段である。
【0014】
従来のモジュール間連携の方法としては、例えばビルド手段でモジュールB121の機能利用手段が必要とするモジュールA101の機能提供手段などの情報をモジュールB121のインターフェース手段123から機能利用手段情報として取得し、さらにモジュールA101の機能提供手段が提供する他のモジュールから利用可能な機能に関する情報をインターフェース手段103から機能提供手段情報として取得し、ビルド時にモジュールB121のインターフェース手段123に対してモジュールA101の機能提供手段情報を用いた必要情報の設定を行うことにより、機能利用手段124、125からの機能提供手段104、105の利用を実現している。
【0015】
図2において、201、202はモジュールの処理内容をプログラム言語を用いて記述したソースコード(以下ソースと記述する)、203はソースを解釈し特定の情報処理装置上で実行可能な形式に変換するコンパイラ、205、206はコンパイラの出力するソースの変換結果であるモジュールのバイナリ、207はバイナリ実行時に必要となる初期化処理のバイナリやモジュールバイナリなどを相互に呼び出し可能な構成に統合するリンカ、208はリンカの出力する情報処理装置上で実行可能な実行モジュールまたは実行モジュールと連携利用が可能なライブラリ、220は必要機能情報、221は提供機能情報である。なお、以上記載したコンパイラ・リンカなどから成るプログラムのビルド手順に関しては広くプログラムの作成に利用されている公知の技術であり、その詳細に関しては特に記載しない。
図2において209は機能ID情報をもちいて、サブ機能レベルでのモジュール相互の機能連携の管理を行う実行機能管理手段である。
【0016】
図3において、304はモジュールA301の機能手段302が他のモジュールに対して提供するサブ機能である機能提供手段、305、306は機能提供手段304が利用するサブ機能、314はモジュールB311の機能手段312がもつ他のモジュールの機能を利用する機能利用手段である。図3において、機能提供手段304が関数funcA()をもち、さらにfuncA()はサブ機能305である関数funcA0()とサブ機能306である関数funcA1()を利用することを示している。一方、機能利用手段314がモジュールA301の機能提供手段304が提供するサブ機能funcA()を利用すること示している。
【0017】
図4において、410は実行機能管理手段209が利用するモジュールBの機能利用手段に関する情報である必要機能情報である。
図5において、540は実行機能管理手段209が利用するモジュールAの機能提供手段に関する情報である提供機能情報である。
【0018】
以上、本実施例の各図の関係をまとめる。図2のビルド手段を用いてモジュールA・Bのソースをビルドし、実行モジュール208を生成する。実行モジュールの情報処理装置上での構成の概要を図1に示す。さらに実行モジュール構成の詳細な具体例に関して図3に示す。図2のビルド手段210の実行管理手段209は図4の必要機能情報と図5の提供機能情報を用いて、機能ID情報に基づいたモジュール間でのサブ機能レベルでの機能連携の管理を行う。
【0019】
以下本実施例の動作を、図2を用いて説明する。なおモジュールの構成として図3のモジュール構成を利用する。
処理1:コンパイラ203は、モジュールAのソース201をモジュールAバイナリ205に変換する。この変換処理と連動してコンパイラ203は、実行機能管理手段209に対してコンパイル対象であるモジュールを指定するモジュール名などのモジュール情報を通知する。実行機能管理手段209はモジュール情報を用いて該当モジュールの必要機能情報と提供機能情報を取得する。本実施例のモジュールA301は機能手段302内に機能提供手段304のみをもつため、実行機能管理手段209は提供機能情報540を取得する。
【0020】
処理2:提供機能情報540は、以下の情報をもつ。対応するモジュール名を示すモジュール名情報541。関数名を示す関数名情報522。機能を提供することを示すタグ文字列"DST"または、機能を利用することを示すタグ文字列“SRC”をもつタイプ情報524、機能利用時の呼び出し関数を示す対応関数情報525。対応関数525の引数の情報を示す引数情報527。引数527のなかでサブ関数の指定に用いられる引数(機能ID情報)を示す引数情報528、引数528の値と実行するサブ関数の対応を示す機能ID情報529・530。
モジュールAの提供機能情報540は、提供する関数名522としてfuncA()、タイプ524として機能提供を示す“DST”、機能を提供する対応関数525としてfuncA()、funcA()の引数528としてint型の引数"mode"、機能ID情報を指定する引数528として”mode"、 ”mode"に設定可能な機能ID情報529・530の値と実行されるサブ関数の対応から構成される。
【0021】
処理3:次にコンパイラはモジュールBのソース202をモジュールBバイナリ206に変換する。コンパイラ203と実行機能管理手段209の動作は先に示したモジュールAソース201の場合を同様である。本実施例のモジュールB311は機能手段312内に機能利用手段314のみをもつため、実行機能管理手段209は必要機能情報410を取得する。
必要機能情報410は、以下の情報をもつ。対応するモジュール名を示すモジュール名情報411。関数名を示す関数名情報401。機能を提供することを示すタグ文字列"DST"または、機能を利用することを示すタグ文字列“SRC”をもつタイプ情報402、機能利用時の呼び出し関数を示す対応関数情報403。対応関数403の引数の情報を示す引数情報404。引数404のなかでサブ関数の指定に用いられる引数(機能ID情報)を示す引数情報405、引数405の取り得る値を示す機能ID情報。
モジュールBの必要機能情報410は、呼び出す関数名401としてfuncA()、タイプ402として機能利用を示す“SRC”、機能を提供する対応関数403としてfuncA()、funcA()の引数404としてint型の引数"mode"、機能ID情報を指定する引数405として”mode"、 ”mode"に設定され得る機能ID情報406・407の値から構成される。
【0022】
処理4:リンカ207は、モジュールAバイナリ205とモジュールBバイナリ206を実行モジュールまたはライブラリ208に変換する。
【0023】
処理5:リンカ207は、入力対象のモジュールのモジュール名などのリンクモジュール情報を実行機能管理手段209に通知する。実行機能管理手段209はリンクモジュール情報を用いて機能提供手段と機能利用手段のサブ機能レベルでの整合性の管理を行う。
図3の構成で、リンクモジュール情報としては、リンク対象のモジュールがモジュールAとモジュールBであることが含まれる。
実行機能管理手段209は、この情報を用いて該当する全モジュールの必要機能情報と提供機能情報を取得する。本実施例ではこの処理により、モジュールBの必要機能情報410とモジュールAの提供機能情報540を取得する。
【0024】
次に各必要機能情報に対して対応関数名を取得する。本実施例においては本処理により対応関数名401funcA()を取得する。次に各提供機能情報のなかから同一の関数名を検索する。検索結果該当する関数がなければサブ機能レベルでのモジュール間の機能連携ができない旨を通知するエラー処理を行う。
一方検索結果に該当するものがあった場合には、対応関数の引数404および527が一致していることを確認の上、機能ID情報の確認を行う。本実施例では、関数funcA()はモジュールAの提供機能情報540に登録されているので、機能ID情報の確認を次に行う。
【0025】
機能ID情報の整合性の確認は、必要機能情報が指定する機能ID情報の取り得る値406・407に対して、対応する提供機能情報の対応関数の機能ID情報の対応可能な値と対応するサブ機能情報の有無を確認する。
本実施例では必要機能情報410でモジュールBは機能ID情報modeが“0”と“1"で対応関数funcA()の機能を利用することが規定され、提供機能情報540でモジュールAは対応関数funcA()が機能ID情報としてmodeが”0“と”1“に対応するサブ機能実行の処理を実装していることが規定される。
【0026】
次に実行機能管理手段209はリンク手段207と連携して機能ID情報529・530で指定されているサブ関数funcA0()、funcA1()の有無を確認する。本実施例においては、以上の機能ID情報の確認処理によりモジュールAとモジュールB間のサブ機能レベルでの整合性が取れていると判断する。この判定処理により、モジュールBが必要とするサブ機能がすべてモジュールAの対応関数で提供されていることが確認可能となり、サブ機能レベルでの整合性の管理が可能となる。
【0027】
なお必要機能情報と提供機能情報の生成方法に関しては、利用者がこれを作成する方法、モジュールソースからコンパイラが自動的・半自動的に生成する方法、モジュールソースに関連する情報を記載しコンパイラが自動的に生成する方法などが可能であり、必要機能情報と提供機能情報の生成方法に関しては特にこれを限定しない。
なお、本実施例においては機能提供手段からのみ成るモジュールと、機能利用手段からのみ成るモジュールをもつシステム構成を実施例として示したが、機能利用手段と機能提供手段の両方をもつモジュールなども可能でありモジュールの数、モジュール内の機能手段の構成、モジュール間の機能連携関係などは、任意の構成が可能であり、特にモジュールの構成に関してはこれを限定しない。
【0028】
また、本実施例においてはコンパイルするモジュール単位を最小単位として、実行機能管理手段によるサブ機能レベルでの整合性の管理を行う構成としたが、リンカが出力する実行モジュールやライブラリ単位でサブ機能レベルでの整合性の管理を行う構成も可能であり、実行機能管理手段がサブ機能レベルでの整合性の管理を行う粒度は特にこれを限定しない。
【0029】
また、本実施例においてはサブ機能レベルでの整合性の管理として、機能提供手段が提供するサブ機能と、機能利用手段が利用するサブ機能の整合性を判定し、機能利用手段が必要とするサブ機能がすべて機能提供手段において提供されていること確認・管理する構成とした。サブ機能レベルでの整合性の管理としては、他に機能利用手段が利用とするサブ機能のうち機能提供手段が提供していないものに関しては、該当するサブ機能のソースコードのスケルトンを提供する方法など他の管理方法も可能であり、サブ機能レベルでの整合性の管理方法に関しては特にこれを限定しない。
【実施例2】
【0030】
以下、本発明の他の実施例である実施例2について、図6から図8を用いて説明する。
本実施例は機能利用手段と機能提供手段がメッセージの送受信機能を用いてモジュール相互で連携する例である。
図6は本実施例のモジュール構成を示すモジュール構成図、図7、図8は図6の実行管理手段がモジュール間のサブ機能レベルでの機能連携の管理に用いる必要機能情報および提供機能情報のデータ構造を示す図である。
【0031】
図6においてモジュールA604、モジュールB611、モジュールC621の構成および各モジュール内の構成手段は図2の実施例と同様である。641は情報処理装置上で動作可能なモジュールのメモリへのロード管理および実行管理を行う実行モジュールロード手段、642は実行機能管理手段である。
【0032】
以下本発明の実施例を、図6を用いて説明する。図6はモジュールB611の機能手段612が機能利用手段614をもち、モジュールA601の提供するメッセージ通信機能を用いてモジュールC621の機能手段622の機能提供手段624を利用する例を示すモジュール構成図である。
【0033】
以下、本実施例の動作を説明する。
処理1:実行モジュールロード手段641は情報処理装置起動時にモジュールA・モジュールB・モジュールCをロードする。実行モジュールロード手段641はモジュールロード時にモジュール情報を実行機能管理手段642に通知する。本実施例では、実行機能管理手段642はモジュールBロード時にモジュールBに関連する必要機能情報・提供機能情報を取得する。この処理により必要機能情報720を取得する。さらにモジュールCロード時にモジュールCに関連する必要機能情報・提供機能情報を取得する。この処理により提供機能情報820を取得する。
【0034】
処理2:実行モジュールロード手段641は予め指定されたモジュールを起動する。この起動処理の前に、実行機能管理手段642に対してシステム上にある実行モジュールのモジュール名などの実行モジュール情報を通知する。実行機能管理手段642は実行モジュール情報を用いて機能提供手段と機能利用手段のサブ機能レベルでの整合性の管理を行う。
図6の構成で、実行モジュール情報としては、実行対象のモジュールがモジュールA・B・Cであることが含まれる。実行機能管理手段642は、この情報を用いて該当する全モジュールの必要機能情報と提供機能情報を取得する。本実施例ではこの処理により、モジュールBの必要機能情報720とモジュールCの提供機能情報820を取得する。
【0035】
次に各必要機能情報に対して対応関数名を取得する。本実施例においては本処理のより、関数名701snd()の対応関数名703rcv()を取得する。次に各提供機能情報のなかから同一の関数名を検索する。検索結果該当する関数がなければサブ機能レベルでのモジュール間の機能連携ができないのでエラー処理を行う。一方検索結果に該当するものがあった場合には、対応関数の引数704および804が一致していることを確認の上、機能ID情報の確認を行う。本実施例では、関数rcv()はモジュールCの提供機能情報820に登録されているので、機能ID情報の確認を次に行う。
【0036】
機能ID情報の整合性の確認は、必要機能情報が指定する機能ID情報の取り得る値706・708・709に対して、対応する提供機能情報の対応関数の機能ID情報の対応可能な値と対応するサブ機能情報の有無を確認する。
本実施例では必要機能情報720でモジュールBは機能ID情報procidが“5”、message.idが“0”と“1”で対応関数の機能を利用することが規定され、提供機能情報820でモジュールCは対応関数rcv()が機能ID情報としてprocidが“5”、message.idが“0”と“1”に対応するサブ機能実行の処理を実装していることが規定される。本実施例においては、以上の機能ID情報の確認処理によりモジュールBとモジュールC間のサブ機能レベルでの整合性が取れていると判断する。
【0037】
なお、本実施例では必要機能情報・提供機能情報で定義される情報が情報処理装置の起動時点で確定している構成としたが、必要機能情報・提供機能情報の少なくとも1部が情報処理装置起動後に確定する構成も可能であり、必要機能情報・提供機能情報の構成方法に関しては特にこれを限定しない。
【産業上の利用可能性】
【0038】
上記機能ID情報に基づいた必要機能情報と提供機能情報を用いたシステム構築の管理を行う実行機能管理手段を設けたことにより、システム構築時またはシステム動作時にモジュールBの必要とするモジュールAのサブ機能の管理が可能となり、システムの信頼性が向上する。さらにモジュール作成時においてサブ機能レベルでの整合性の管理が可能となり開発効率が向上する。
【図面の簡単な説明】
【0039】
【図1】モジュール構成概要図
【図2】ビルド手段構成図
【図3】モジュール構成図
【図4】必要機能情報のデータ構造を示す図
【図5】提供機能情報のデータ構造を示す図
【図6】モジュール構成図
【図7】必要機能情報のデータ構造を示す図
【図8】提供機能情報のデータ構造を示す図
【符号の説明】
【0040】
101 モジュールA
102 機能手段
103 インターフェース手段
203 コンパイラ
207 リンカ
209 実行機能管理手段
410 必要機能情報
540 提供機能情報

【特許請求の範囲】
【請求項1】
少なくとも2つ以上のプログラムモジュールから成るシステムで、モジュールAの機能を他のモジュールBが利用する場合のシステム構築方法であって、
モジュールBからモジュールAに送付される機能を指定する情報である機能ID情報を用い、システム構築時にモジュールBが要求する前記機能ID情報の候補である必要機能情報と、モジュールAが提供可能な機能の情報である提供機能情報との対応関係を用いてシステムの構築管理を行う実行機能管理手段を設けたことを特徴とするシステムの構築方法。
【請求項2】
前記実行機能管理手段を、プログラムのコンパイル・リンクなどを行うビルド手段内に設けたことを特徴とする請求項1記載のシステムの構築方法。
【請求項3】
少なくとも1つ以上の前記モジュールを実行するCPUなどの処理実行手段と、その他のモジュールを実行する処理実行手段が異なるように前記実行機能管理手段が管理することを特徴とする請求項1記載のシステムの構築方法。
【請求項4】
前記システムは、モジュールを処理装置上に実行可能な形式に配置し、実行を管理する実行モジュールロード手段を有し、前記実行機能管理手段を、前記実行モジュールロード手段内に設けたことを特徴とする請求項1記載のシステムの構築方法。
【請求項5】
前記システムは、処理装置がモジュールを実行中に該モジュールが必要とする他のモジュールを配置する動的実行モジュールロード手段を有し、前記実行機能管理手段を、前記動的実行モジュールロード手段内に設けたことを特徴とする請求項1記載のシステムの構築方法。
【請求項6】
前記モジュールAが提供可能な機能の情報は、複数のサブ機能の情報であることを特徴とする請求項1記載のシステムの構築方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2008−9578(P2008−9578A)
【公開日】平成20年1月17日(2008.1.17)
【国際特許分類】
【出願番号】特願2006−177467(P2006−177467)
【出願日】平成18年6月28日(2006.6.28)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】