(57)【要約】【課題】サービスモジュールの変更に応じて、インターフェースを管理する技術を提供する。【解決手段】コンピュータに、格納部に格納された第１のソースコードと、第１のソースコードよりも前のバージョンの第２のソースコードに基づいて、第１のソースコードに含まれるインターフェース関数に用いられる入出力パラメータの定義と、第２のソースコードに含まれるインターフェース関数に用いられる入出力パラメータの定義との差分を示す差分情報を生成し、生成した差分情報を外部装置に送信する処理を実行させることにより、上記課題の解決を図る。【選択図】図１
2013073400.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
格納部に格納された第１のソースコードと、該第１のソースコードよりも前のバージョンの第２のソースコードに基づいて、前記第１のソースコードに含まれるインターフェース関数に用いられる入出力パラメータの定義と、前記第２のソースコードに含まれるインターフェース関数に用いられる入出力パラメータの定義との差分を示す差分情報を生成し、
生成した前記差分情報を外部装置に送信する
処理を実行させるプログラム。
【請求項２】
前記差分情報は、前記差分の種別を示す種別情報と、インターフェース名と、前記入出力パラメータのデータ型と、を含む
ことを特徴とする請求項１に記載のプログラム。
【請求項３】
前記差分の種別は、追加、削除、または変更である、
ことを特徴とする請求項２に記載のプログラム。
【請求項４】
前記コンピュータに、さらに、
前記差分情報を前記外部装置に送信させる送信コードを前記第１のソースコードに追加し、
前記送信コードを追加した前記第１のソースコードをコンパイルする、
ことを特徴とする請求項１又は２に記載のプログラム。
【請求項５】
第１のソースコードが格納されている格納部と、
該第１のソースコードよりも前のバージョンの第２のソースコードに基づいて、前記第１のソースコードに含まれるインターフェース関数に用いられる入出力パラメータの定義と、前記第２のソースコードに含まれるインターフェース関数に用いられる入出力パラメータの定義との差分を示す差分情報を生成する生成部と、
生成した前記差分情報を外部装置に送信する送信部と、
を備えることを特徴とする情報処理装置。
【請求項６】
前記差分情報は、前記差分の種別を示す種別情報と、インターフェース名と、前記入出力パラメータのデータ型と、を含む
ことを特徴とする請求項５に記載の差分情報生成装置。
【請求項７】
前記差分の種別は、追加、削除、または変更である、
ことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記情報処理装置は、さらに、
前記差分情報を前記外部装置に送信させる送信コードを前記第１のソースコードに追加する追加部と、
前記送信コードを追加した前記第１のソースコードをコンパイルするコンパイル部と、
を備えることを特徴とする請求項５又は６に記載の情報処理装置。
【請求項９】
ソースコードの変更に応じて、入出力パラメータを管理する入出力パラメータ管理方法であって、
第１のコンピュータは、
格納部に格納された第１のソースコードと、該第１のソースコードよりも前のバージョンの第２のソースコードに基づいて、前記第１のソースコードに含まれるインターフェース関数に用いられる入出力パラメータの定義と、前記第２のソースコードに含まれるインターフェース関数に用いられる入出力パラメータの定義との差分を示す差分情報を生成し、
生成した前記差分情報を第２のコンピュータに送信し、
前記第２のコンピュータは、
前記差分情報を収集し、
前記収集した差分情報を格納部に格納する
処理を行う入出力パラメータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、サービス情報管理技術に関する。
【背景技術】
【０００２】
近年、ＳＯＡ（Service Oriented Architecture、サービス指向アーキテクチャ）の普及により、独立した複数の業務システムで提供される機能を組み合わせ、１つの業務処理として提供する処理形態へのニーズが高まっている。ＳＯＡは、アプリケーションソフトウェア又はその機能の一部を共通の「サービス」としてコンポーネント化（部品化）し、それらサービスを必要に応じて組み合わせることにより、新たなシステムを構築しようという設計手法である。
【０００３】
ＳＯＡ（Service Oriented Architecture）によるサービス情報管理では、企業のネットワーク内にどのようなＷｅｂサービスがあり、どのようなインターフェースであるかの情報（以降、サービスＩＦと呼ぶ）がデータベースで管理されている。
【０００４】
そのようなＷｅｂサービス及びサービスＩＦに関する情報をユーザが手動で登録するには、手間がかかり、また登録漏れが発生しやすいため、自動的に情報を収集することが求められている。そこで、例えば、次のモニタシステムを利用することができる。
【０００５】
そのモニタシステムの技術では、まず、コンピュータ・ネットワーク上で所定のサービスを提供するサービスシステムに新たにモニタサーバを導入する。また、サービスのサーバにはモニタサーバと通信可能なモニタ埋め込みモジュールを組み込む。モニタサーバは、サービスシステムの各サーバのモニタ埋め込みモジュールに対してサーバの動作状況の報告を要求するとともに、その応答を受信してこれに対応する処理を実行する。このことにより、サービスの情報を自動的にモニタサーバが収集することができるようになる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開１０−１６１９６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
サービスの変更のためサービスＩＦに変更があった場合、その変更による影響は、サービスＩＦ間の不整合のため他のサービスにも及ぶ。そのため、サービスの情報管理においては、サービスの名前や稼動場所などの基本情報に加え、サービスＩＦにどのような変化があったか検出し、利用者に知らせることが求められている。
【０００８】
しかしながら、上記モニタシステムの技術は、サービス稼動時の動作状況を、サービス自身に埋め込まれたプログラムロジックが取得して、情報通知を行う技術である。そのため、上記モニタシステムの技術では、サービスの変更があった場合に、インターフェースの不整合を検知し管理することはできなかった。
【０００９】
１つの側面では、本発明は、サービスモジュールの変更に応じて、インターフェースを管理する技術を提供する。
【課題を解決するための手段】
【００１０】
サービスモジュールプログラムは、コンピュータに、次の処理を実行させる。コンピュータは、格納部に格納された第１のソースコードと、該第１のソースコードよりも前のバージョンの第２のソースコードに基づいて、差分情報を生成する。差分情報は、第１のソースコードに含まれるインターフェース関数に用いられる入出力パラメータの定義と、第２のソースコードに含まれるインターフェース関数に用いられる入出力パラメータの定義との差分を示す。コンピュータは、生成した前記差分情報を外部装置に送信する。
【発明の効果】
【００１１】
１実施態様によれば、サービスモジュールの変更に応じて、インターフェースを管理することができる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態におけるサービスモジュール生成装置を示す。
【図２】本実施形態におけるサービスモジュール生成装置の構成の一例を示す。
【図３】本実施形態におけるサービスモジュール生成装置によるコンパイル処理のフローを示す。
【図４】本実施形態におけるサービス実行時のネットワークの構成例を示す。
【図５】サービスモジュールが稼動しているサーバから、モニタサーバへ送信されるサービス情報の構成の一例を示す。
【図６】変更前後のサービスモジュールのサービスＩＦ定義の一例を示す。
【図７】図３の処理の詳細を示すフローである。
【図８】サービス実行時における、サービスモジュール、モニタモジュール、及びサービス情報管理ＤＢの処理フローを示す。
【図９】本実施形態におけるサービスモジュールの起動時に送付するサービス情報の一例を示す。
【図１０】本実施形態におけるサービス情報管理ＤＢのデータ構造の一例を示す。
【図１１】コンピュータのハードウェア環境の構成ブロック図である。
【発明を実施するための形態】
【００１３】
上記モニタシステムの技術では、サービスのモジュール作成時に、そのモジュールに自身の動作状況の情報を送信／受信するライブラリ・ルーチンが埋め込まれる。モジュール稼動時には、その動作状況の情報がモニタ用の別ソフトウェア（以降、モニタサーバと呼ぶ）に対して送信される。
【００１４】
仮に、個々のサービスモジュールごとに、サービスＩＦの情報又は過去のサービスＩＦとの相違点に関する情報を送信するようなロジックを埋め込むこととする。これにより、個々のサービスモジュールごとに、サービスＩＦの情報又は過去のサービスＩＦとの相違点に関する情報を送信することができる。
【００１５】
このとき、個々のサービスごとにＩＦ情報が異なり、さらに、そのＩＦ情報はサービスの実装方法が変更されたときに変更となる可能性がある。しかしながら、どのサービスについても、自動でサービスＩＦの情報又は過去のサービスＩＦとの相違点に関する情報を送信することを可能とする技術はなかった。
【００１６】
そこで、本実施形態では、上記モニタシステムの技術に対し、モニタサーバからサービス情報管理用のデータベースに情報を書き込むロジックを加えることにより、サービスの情報を、データベースに自動的に反映する技術について説明する。
【００１７】
図１は、本実施形態におけるサービスモジュール生成装置を示す。サービスモジュール生成装置１は、格納部２、コード取得部３、インターフェース定義作成部４、差分取得部５、送信コード埋め込み部６、コンパイル処理部７を含む。
【００１８】
格納部２には、サービスモジュールのソースコードが格納されている。格納部２の一例は、格納部１７である。
コード取得部３は、格納部２から、第１のソースコードと、第１のソースコードの以前のバージョンの第２のソースコードを取得する。コード取得部３の一例は、プレコンパイラ１２である。
【００１９】
インターフェース定義作成部４は、第１のソースコードから第１のインターフェース関数を抽出し、第１のインターフェース関数の入出力パラメータを用いて第１のインターフェース定義を作成する。インターフェース定義作成部４は、第２のソースコードから第２のインターフェース関数を抽出し、第２のインターフェース関数の入出力パラメータを用いて第２のインターフェース定義を作成する。インターフェース定義作成部４の一例は、解析部１４である。
【００２０】
差分取得部５は、第１のインターフェース定義と第２のインターフェース定義との差分を差分情報として取得する。差分取得部５の一例は、解析部１４である。
送信コード埋め込み部６は、差分情報を含むサービス情報を外部装置に送信する送信コードを、第１のソースコードに埋め込む。送信コード埋め込み部６の一例は、埋込み部１５である。外部装置の一例は、モニタサーバ２２である。
【００２１】
コンパイル処理部７は、送信コードを書き込んだ第１のソースコードをコンパイルする。コンパイル処理部７の一例は、コンパイラ１６である。
差分情報は、新たに追加され、削除され、または変更されたインターフェースかを示す種別情報と、インターフェース名と、入出力パラメータのデータ型を含む。
【００２２】
このように構成することにより、変更後と変更前のソースコードのＩＦ定義の差分をモニタモジュールに送信する送信コードを、変更後のソースコードに埋め込んだサービスモジュールを生成することができる。
【００２３】
なお、本実施形態では、送信コード埋め込み部６を用いて、差分情報を含むサービス情報を外部装置に送信する送信コードを、第１のソースコードに埋め込んだが、これに限定されない。例えば、差分取得部５により取得した差分情報を外部装置に送信するようにしてもよい。すなわち、サービスモジュール生成装置１は、格納部に格納された第１のソースコードと、第１のソースコードよりも前のバージョンの第２のソースコードに基づいて、差分情報を生成する。ここで、差分情報は、第１のソースコードに含まれるインターフェース関数に用いられる入出力パラメータの定義と、第２のソースコードに含まれるインターフェース関数に用いられる入出力パラメータの定義との差分を示す。そして、サービスモジュール生成装置１は、生成した差分情報を外部装置に送信するようにしてもよい。
【００２４】
この場合、差分情報は、差分の種別を示す種別情報と、インターフェース名と、前記入出力パラメータのデータ型と、を含む。差分の種別は、追加、削除、または変更である。
サービスモジュール生成装置１は、さらに、差分情報を外部装置に送信させる送信コードを前記第１のソースコードに追加する。サービスモジュール生成装置１は、送信コードを追加した第１のソースコードをコンパイルする。
【００２５】
以下では、本実施形態の詳細を説明する。
図２は、本実施形態におけるサービスモジュール生成装置の構成の一例を示す。サービスモジュール生成装置１１は、プレコンパイラ１２、コンパイラ１６、格納部１７を含む。格納部１７には、サービスモジュールのソースコード１８が格納されている。コンパイラ１６は、サービスモジュールのソースコード１８をコンパイルしてオブジェクトコードを生成するプログラムである。
【００２６】
プレコンパイラ１２は、サービスモジュールのソースコード１８のコンパイル前に、動作するプログラムである。プレコンパイラ１２は、ＩＤ生成部１３、解析部１４、埋め込み部１５を含む。ＩＤ生成部１３、解析部１４、埋め込み部１５の機能については、図３を用いて説明する。
【００２７】
図３は、本実施形態におけるサービスモジュール生成装置によるコンパイル処理のフローを示す。以下では、図２を参照しながら、図３について説明する。
プレコンパイラ１２は、コンパイラ１６の前処理として、格納部１７に格納されたサービスモジュールのソースコード１８を読み出す（Ｓ１）。すると、ＩＤ生成部１３は、格納部１７から読み出したサービスモジュールのソースコード１８に、サービスモジュールを識別するための識別情報（モジュールＩＤ）が割り当てられていない場合、モジュールＩＤを生成する。ＩＤ生成部１３は、その読み出したソースコード１８に対して、その生成したモジュールＩＤを割り当てる（Ｓ２）。
【００２８】
解析部１４は、そのソースコード１８を解析し、サービスＩＦ定義を取得する。サービスＩＦ定義とは、そのソースコード１８をコンパイルして得られるサービスモジュールで用いられているインターフェース関数に入力されるパラメータ及びそのインターフェース関数が出力するパラメータに関して定義された情報である。また、解析部１４は、その取得したサービスＩＦ定義と、以前のバージョンのソースコード１８ａのサービスＩＦ定義と比較し、サービスＩＦ定義の差分を抽出する（Ｓ３）。
【００２９】
埋め込み部１５は、サービスＩＦ定義の差分情報を含むサービス情報を自動送信するコードを、その解析したソースコード１８に埋め込む（Ｓ４）。
コンパイラ１６は、Ｓ４においてサービスＩＦ定義の差分情報を含むサービス情報を自動送信するコードを埋め込まれたソースコード１８をコンパイルし、サービスモジュールを生成する（Ｓ５）。
【００３０】
このように、サービスモジュールのソースコードのコンパイル前にサービスＩＦ情報を解析し、その結果の情報と、その情報を送信するコードを、そのソースコード１８に埋め込む。これにより、稼動されたサービスモジュールのサービスＩＦの変更情報の自動送信が可能となる。
【００３１】
なお、サービスモジュール変更前のサービスＩＦ定義を取得する方法については、例えば、次のいずれかの方法を用いることができる。第１の方法としては、サービスモジュールのソースコード１８のバージョンの管理がされた格納部１７から変更前のバージョンのソースコードを取り出し、サービスモジュール変更前のサービスＩＦ定義を生成する方法がある。第２の方法としては、最初にプレコンパイラ１２を実行したときに、サービスＩＦ定義をテキストデータとしてコメント行として埋め込んでおき、次回のプレコンパイル時からはそのコメント行からサービス変更前のサービスＩＦ定義を取り出す方法がある。
【００３２】
コンパイル後、サービスモジュールのソースコードがコンパイルされて得られたサービスモジュールは、所定のサーバにインストールされる。そのサーバ上でサービスモジュールが稼動した場合、そのサービスモジュールは、どのサービスのどのインターフェースが変更されたかという情報を送信することができる。これについて、図４を用いて説明する。
【００３３】
図４は、本実施形態におけるサービス実行時のネットワークの構成例を示す。サーバ２１には、サービスモジュール２０がインストールされている。サービスモジュール２０は、サービスＩＦ定義の差分情報を含むサービス情報を自動送信するコードが埋め込められたソースコードがコンパイルされて得られたサービスモジュールである。
【００３４】
モニタサーバ２２は、モニタモジュール２３とサービス情報管理データベース（ＤＢ）２４を含む。モニタモジュール２３は、サーバ２１のサービスモジュール２０から送信される差分情報を含むサービス情報を収集する。モニタモジュール２３は、収集したサービス情報をサービス情報管理ＤＢ２４に格納する。
【００３５】
これにより、オペレータは、サービス情報管理ＤＢ２４を参照することにより、サービスモジュールのサービスＩＦの変更を確認することができる。また、モニタサーバ２２は、サービス情報管理ＤＢ２４に格納したサービス情報を、予め登録された関係者（例えば、情報システムの管理者、メンテナンス担当者、システムエンジニア等）の端末にe-mailなどの手段を用いて通知するようにしてもよい。
【００３６】
図５は、サービスモジュールが稼動しているサーバから、モニタサーバへ送信されるサービス情報の構成の一例を示す。サービス情報３０は、モジュールＩＤ３１、バージョン番号３２、サービス名３３、差分情報１（３４−１）、差分情報２（３４−２）、差分情報３（３４−３）・・・を含む。以下では、差分情報１（３４−１）、差分情報２（３４−２）、差分情報３（３４−３）・・・を総称して、差分情報３４と称する。
【００３７】
モジュールＩＤ３１には、サービスモジュールを識別するＩＤが設定される。バージョン情報３２には、サービスモジュールのバージョン番号が設定される。サービス名３３には、サービスモジュールの名称が設定される。差分情報３４には、変更前のサービスモジュールのソースコード１８ａのサービスＩＦ定義と変更後のサービスモジュールのソースコード１８のサービスＩＦ定義の差分が設定される。
【００３８】
差分情報３４は、変更種別３５、インターフェース名３６、パラメータ型３７−１、パラメータ型３７−２、パラメータ形３７−３、・・・を含む。
変更種別には、「追加」、「削除」、「変更」などの種別が設定される。「追加」は、新たに追加されたインターフェースであることを示す種別情報である。「削除」は、削除されたインターフェースであることを示す種別情報である。「変更」は、パラメータ等が変更されたインターフェース情報であることを示す種別情報である。
【００３９】
インターフェース名３６には、サービスＩＦの名称が設定される。パラメータ型３７（３７−１，３７−２，３７−３，・・・）には、サービスＩＦで用いられるパラメータのデータ型が設定される。
【００４０】
上記では、サービスモジュールの生成、及び利用について説明した。以下では、サービスモジュールの生成について、さらに詳述する。
図６は、変更前後のサービスモジュールのサービスＩＦ定義の一例を示す。図６（Ａ）は、変更前のサービスモジュールのサービスＩＦ定義４０ａである。図６（Ｂ）は、変更後のサービスモジュールのサービスＩＦ定義４０ｂの一例である。サービスＩＦ定義４０ａ，４０ｂは、「モジュールＩＤ」４１、「バージョン」４２、「サービス名」４３、「ＩＦ名」４４、「パラメータリスト」４５を含む。
【００４１】
「モジュールＩＤ」４１には、サービスモジュールを識別するＩＤが設定される。「バージョン」４２には、サービスモジュールのバージョン番号が設定される。「サービス名」４３には、サービスモジュールの名称が設定される。「ＩＦ名」４４には、サービスＩＦの名称が設定される。「パラメータリスト」４５には、サービスＩＦで用いられるパラメータのデータ型が設定される。
【００４２】
次に、サービスモジュールの作成について、さらに詳述する。
図７は、図３の処理の詳細を示すフローである。以下では、図２を用いて、図７を説明する。
【００４３】
プレコンパイラ１２は、格納部１７よりサービスモジュールのソースコード１８を取得する（Ｓ１１）。ＩＤ生成部１３は、取得したソースコード１８のコメント行にモジュールＩＤと、バージョン番号とが埋め込まれているか検索する（Ｓ１２）。
【００４４】
Ｓ１２での検索の結果、取得したソースコードのコメント行にモジュールＩＤと、バージョン番号が埋め込まれていなかった場合（Ｓ１３で「Ｎｏ」）、ＩＤ生成部１３は、一意のモジュールＩＤと、バージョン番号を生成する（Ｓ１８）。Ｓ１８の処理では、例えば、ＵＵＩＤ（Universal Unique IDentifier）等の技術を用いてもよい。バージョン番号の初期値は、例えば、「１．０」であるとする。
【００４５】
ＩＤ生成部１３は、その取得したソースコード１８中のコメント行に、生成したモジュールＩＤと、バージョン番号を埋め込む（Ｓ１９）。解析部１４は、ソースコード１８を解析し、サービスＩＦ定義を抽出する（Ｓ２０）。その後、Ｓ２１の処理が実行される。
【００４６】
Ｓ１２での検索の結果、取得したソースコード１８のコメント行にモジュールＩＤと、バージョン番号が埋め込まれていた場合（Ｓ１３で「Ｙｅｓ」）、解析部１４は、バージョン番号をカウントアップする（Ｓ１４）。それから、解析部１４は、その埋め込められたモジュールＩＤをキーとして、格納部１７よりその埋め込められたバージョン番号の直近のバージョン番号を含むソースコード１８ａを取得する（Ｓ１５）。例えば、取得したソースコード１８のモジュールＩＤが「00000103-0000-0010-8000-00AA006D2EA4」、バージョン番号が「２」の場合、解析部１４は、次の処理を実行する。すなわち、解析部１４は、そのモジュールＩＤをキーとして、格納部１７よりバージョン番号「２」の直近のバージョン番号「１」のソースコード１８ａを取得する。
【００４７】
解析部１４は、ソースコード１８を解析して、ソースコード１８のサービスモジュールのＩＦ関数を抽出する。解析部１４は、そのＩＦ関数の入出力パラメータに基づいて、サービスＩＦ定義を作成する。ソースコード１８を解析して抽出されたサービスＩＦ定義が、例えば、図６（Ｂ）であるとする。また、解析部１４は、ソースコード１８ａを解析して、ソースコード１８ａのサービスモジュールのＩＦ関数を抽出する。解析部１４は、そのＩＦ関数の入出力パラメータに基づいて、サービスＩＦ定義を作成する（Ｓ１６）。ソースコード１８ａを解析して抽出されたサービスＩＦ定義が、例えば、図６（Ａ）であるとする。
【００４８】
解析部１４は、ソースコード１８のサービスＩＦ定義と、ソースコード１８ａのサービスＩＦ定義を比較して、その差分情報を抽出する（Ｓ１７）。図６（Ａ）に示すように、変更前のサービスモジュール「Ｓｅｒｖｉｃｅ１」は、ＩＦ「Ｍｕｌｔｉｐｌｙ」を含む。また、図６（Ｂ）に示すように、変更後のサービスモジュール「Ｓｅｒｖｉｃｅ１」は、ＩＦ「Ｍｕｌｔｉｐｌｙ」及びＩＦ「Ｄｉｖｉｄｅ」を含む。
【００４９】
図６（Ａ）と図６（Ｂ）を比較すると、図６（Ｂ）のサービスＩＦ定義は、ＩＦ「Ｄｉｖｉｄｅ」が追加されている点が図６（Ａ）のサービスＩＦ定義と異なる。そこで、解析部１４は、差分情報として、図６（Ｂ）のＩＦ「Ｄｉｖｉｄｅ」を含むレコードを抽出する。その後、Ｓ２１の処理が実行される。
【００５０】
Ｓ１７またはＳ２０の処理終了後、埋め込み部１５は、情報をモニタモジュール２３に送信するための情報送信コードをソースコード１８に埋め込む。その際、埋め込み部１５は、図５に示すフォーマットを用いて、サービスモジュールのモジュールＩＤ３１、新バージョン番号３２、サービス名３３、サービスＩＦ定義の差分情報３４を含むサービス情報３０を生成する。埋め込み部１５は、そのサービス情報３０を送信用データとして、情報送信コードに加える（Ｓ２１）。このとき、図６の例では、変更後のソースコードに、ＩＦ「Ｄｉｖｉｄｅ」が追加されているので、変更種別３５には、「追加」が設定される。
【００５１】
埋め込み部１５は、Ｓ２１において変更を加えたソースコード１８を格納部１７にコピーする（Ｓ２２）。コンパイラ１６は、Ｓ２１において変更を加えたソースコード１８をコンパイルし、サービスモジュール２０を生成する（Ｓ２３）。
【００５２】
このようにして、変更前のサービスＩＦ定義と変更後のサービスＩＦ定義との差分を取得し、その差分を含むサービス情報を送信する情報送信コードを変更後のソースコードに埋め込むことができる。
【００５３】
次に、Ｓ２１において変更を加えたソースコード１８をコンパイルして得られたサービスモジュール２０の利用について、図８を用いて、説明する。
図８は、サービス実行時における、サービスモジュール、モニタモジュール、及びサービス情報管理ＤＢの処理フローを示す。図８は、図４のサービスモジュール２０、モニタモジュール２３、及びサービス情報管理ＤＢ２４の処理フローを示す。モニタモジュール２３、及びサービス情報管理ＤＢ２４は、モニタサーバ２２に格納されている。
【００５４】
まず、サーバ２１は、サービスモジュール２０を実行し、サービスの実行を開始させる（Ｓ３１）。すると、サービスモジュール２０は、自身に埋め込められた情報送信コードに基づいて、サービス情報３０を送信する（サービス情報登録処理）（Ｓ３２）。
【００５５】
その後、サービスモジュール２０は、本来のサービス処理を実行し（Ｓ３３）、サービス処理が終了する（Ｓ３４）。
モニタサーバ２２において、モニタモジュール２３は、サービスモジュール２０より送信されたサービス情報３０を受信する（Ｓ３５）。モニタモジュール２３は、サービス情報３０に含まれる変更種別３５に基づいて、受信したサービス情報３０の内容をサービス情報管理ＤＢ２４に反映する（Ｓ３６）。仮に、変更種別３５が「追加」である場合、モニタモジュール２３は、サービス情報３０に含まれる差分情報３４の内容をサービス情報管理ＤＢ２４に追加する。仮に、変更種別３５が「削除」である場合、モニタモジュール２３は、サービス情報３０に含まれる差分情報３４の内容に対応する情報をサービス情報管理ＤＢ２４から削除する。仮に、変更種別３５が「変更」である場合、モニタモジュール２３は、サービス情報管理ＤＢ２４において、サービス情報３０に含まれる差分情報３４の「インターフェース名」に対応する内容を更新する。
【００５６】
このように、サービスモジュール２０の実行により、変更前後のサービスＩＦの差分情報を含むサービス情報３０をモニタモジュール２３に送信し、サービス情報管理ＤＢ２４に登録することができる。
【００５７】
ここで、サーバ２１からモニタサーバ２２へはネットワーク通信により必要なデータを送信する。データの送信ロジックについては、HTTP（HyperText Transfer Protocol）プロトコルや、FTP（File Transfer Protocol）等のプロトコルによる汎用の通信方法を使ってよい。
【００５８】
送信先のネットワークアドレス、ポート番号についてはいくつかの方法で送信前に特定できるようなロジックを、プレコンパイラがサービスモジュールのソースコードに埋め込んでおくこができる。第１の例としては、サービスモジュールのコンパイル時に、プレコンパイラが送信先のネットワークアドレス、ポート番号のデータをソース中に自動的に埋め込むようにしてもよい。また、第２の例としては、社内のLDAP（Lightweight Directory Access Protocol）サーバに、サービス情報管理ＤＢのモニタモジュールのネットワークアドレス、ポート番号の情報を管理者が予め入力しておく。そして、サービスモジュールのソースコードにはプレコンパイラがLDAPサーバへ情報問い合わせをするロジックを埋め込む。
【００５９】
図９は、本実施形態におけるサービスモジュールの起動時に送付するサービス情報の一例を示す。図９のサービス情報３０ａは、図５のサービス情報３０の一例である。サービス情報３０ａは、「モジュールＩＤ」３１ａ、「バージョン」３２ａ、「サービス名」３３ａ、差分情報３４ａを含む。差分情報３４ａは、「種別」３５ａ、「インターフェース名」３６ａ、「パラメータ型」３７ａを含む。
【００６０】
図１０は、本実施形態におけるサービス情報管理ＤＢのデータ構造の一例を示す。サービス情報管理ＤＢ２４には、サービス基本テーブル２４−１、インターフェース管理テーブル２４−２、パラメータ管理テーブル２４−３がある。サービスモジュール２０より受信したサービス情報は、これらのテーブルに格納される。
【００６１】
サービス基本テーブル２４−１には、サービス名とそのサービスの補足情報が格納される。インターフェース管理テーブル２４−２には、各サービスモジュールに含まれるインターフェース名と、そのインターフェースの補足情報が格納される。パラメータ管理テーブル２４−３は、各サービスモジュールに含まれるインターフェース名のパラメータを管理するテーブルである。
【００６２】
図１１は、コンピュータのハードウェア環境の構成ブロック図である。コンピュータ５０は、サービスモジュール生成装置１１、サーバ２１、またはモニタサーバ２２である。コンピュータ５０は、ＣＰＵ５２、ＲＯＭ５３、ＲＡＭ５６、通信Ｉ／Ｆ５４、記憶装置５７、出力Ｉ／Ｆ５１、入力Ｉ／Ｆ５５、読み取り装置５８、バス５９、出力機器６１、入力機器６２によって構成されている。
【００６３】
ここで、ＣＰＵは、中央演算装置を示す。ＲＯＭは、リードオンリメモリを示す。ＲＡＭは、ランダムアクセスメモリを示す。Ｉ／Ｆは、インターフェースを示す。バス５９には、ＣＰＵ５２、ＲＯＭ５３、ＲＡＭ５６、通信Ｉ／Ｆ５４、記憶装置５７、出力Ｉ／Ｆ５１、入力Ｉ／Ｆ５５、及び読み取り装置５８が接続されている。読み取り装置５８は、可搬型記録媒体を読み出す装置である。出力機器６１は、出力Ｉ／Ｆ５１に接続されている。入力機器６２は、入力Ｉ／Ｆ５５に接続にされている。
【００６４】
記憶装置５７としては、ハードディスク、フラッシュメモリ、磁気ディスクなど様々な形式の記憶装置を使用することができる。コンピュータ５０がサービスモジュール生成装置１１の場合、記憶装置５７またはＲＯＭ５３には、ＣＰＵ５２をプレコンパイラ１２、コンパイラ１６として機能させるプログラム及びサービスモジュールのソースコード１８，１８ａが格納されている。また、コンピュータ５０がサーバ２１の場合、記憶装置５７またはＲＯＭ５３には、ＣＰＵ５２により実行されるサービスモジュール２０が格納されている。また、コンピュータ５０がモニタサーバ２２の場合、記憶装置５７またはＲＯＭ５３には、ＣＰＵ５２により実行されるモニタモジュール２３、サービス情報管理ＤＢ２４が格納されている。
【００６５】
ＣＰＵ５２は、記憶装置５７等に格納した上記実施形態で説明した処理を実現するプログラムを読み出し、当該プログラムを実行する。
上記実施形態で説明した処理を実現するプログラムは、プログラム提供者側から通信ネットワーク６０、および通信Ｉ／Ｆ５４を介して、例えば記憶装置５７に格納されてもよい。また、上記実施形態で説明した処理を実現するプログラムは、市販され、流通している可搬型記憶媒体に格納されていてもよい。この場合、この可搬型記憶媒体は読み取り装置５８にセットされて、ＣＰＵ５２によってそのプログラムが読み出されて、実行されてもよい。可搬型記憶媒体としてはＣＤ−ＲＯＭ、フレキシブルディスク、光ディスク、光磁気ディスク、ＩＣカード、ＵＳＢメモリ装置など様々な形式の記憶媒体を使用することができる。このような記憶媒体に格納されたプログラムが読み取り装置５８によって読み取られる。
【００６６】
また、入力機器６２には、キーボード、マウス、電子カメラ、ウェブカメラ、マイク、スキャナ、センサ、タブレットなどを用いることが可能である。また、出力機器６１には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。また、ネットワーク６０は、インターネット、ＬＡＮ、ＷＡＮ、専用線、有線、無線等の通信網であってよい。
【００６７】
本実施形態によれば、サービスモジュールにどのような変化があったかを自動的に収集することができる。これにより、例えば、サービスモジュールの入出力インターフェースが変更されたことを検知できる。その結果、サービスの情報管理システムから、その変更内容を、予め登録された関係者にe-mailなどの手段により通知することが可能となる。
【００６８】
また、サービスの既存インターフェースが削除された場合には、ソースコードに情報送信コードを埋め込むだけではなく、そのインターフェースを実装したダミー用のコードを挿入しておく。そして、サービス実行時に削除されたインターフェースを外部から呼び出された場合に、呼び出し不整合があったことを自動的に知らせることができる。
【００６９】
このように、サービスモジュールの変更があったことと、その内容を自動的に検知することができ、サービスモジュールの変更の影響を通知したり、インターフェースの不整合検知をしたりすることが可能となる。
【００７０】
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【００７１】
１      サービスモジュール生成装置
２      格納部
３      コード取得部
４      インターフェース定義作成部
５      差分取得部
６      送信コード埋め込み部
７      コンパイル処理部
１１      サービスモジュール生成装置
１２      プレコンパイラ
１３      ＩＤ生成部
１４      解析部
１５      埋め込み部
１６      コンパイラ
１７      格納部
１８，１８ａ      ソースコード
２０      サービスモジュール
２１      サーバ
２２      モニタサーバ
２３      モニタモジュール
２４      サービス情報管理ＤＢ
【図１】
2013073400.tif 000003
【図２】
2013073400.tif 000004
【図３】
2013073400.tif 000005
【図４】
2013073400.tif 000006
【図５】
2013073400.tif 000007
【図６】
2013073400.tif 000008
【図７】
2013073400.tif 000009
【図８】
2013073400.tif 000010
【図９】
2013073400.tif 000011
【図１０】
2013073400.tif 000012
【図１１】
2013073400.tif 000013