(57)【要約】【課題】ソフトウェア部品の管理者側に管理情報や利用情報を確実かつリアルタイムに通知することによって、ソフトウェア開発の効率を向上させることができると供に、不正な使用を排除することができるソフトウェア部品を提供する。【解決手段】本発明に係るソフトウェア部品は、管理部門から払い出しを受けるソフトウェア部品であり、かつ１以上のソフトウェアモジュールを含むソフトウェア部品において、ソフトウェアモジュールが実行されるときに本ソフトウェア部品を識別する部品識別情報を外部の部品管理サーバに送信する部品識別情報送信ステップと、ソフトウェアモジュールが実行されるときに本ソフトウェア部品が実行されるコンピュータを識別する機器識別情報を部品管理サーバに送信する機器識別情報送信ステップと、をコンピュータに実行させることを特徴とする。【選択図】  図３
2007156987.tif 000002
【特許請求の範囲】
【請求項１】
管理部門から払い出しを受けるソフトウェア部品であり、かつ１以上のソフトウェアモジュールを含むソフトウェア部品において、
前記ソフトウェアモジュールが実行されるときに、本ソフトウェア部品を識別する部品識別情報を外部の部品管理サーバに送信する部品識別情報送信ステップと、
前記ソフトウェアモジュールが実行されるときに、本ソフトウェア部品が実行されるコンピュータを識別する機器識別情報を前記部品管理サーバに送信する機器識別情報送信ステップと、
をコンピュータに実行させることを特徴とするソフトウェア部品。
【請求項２】
前記部品識別情報送信ステップをコンピュータに実行させる第１のソフトウェア部品と、
前記機器識別情報送信ステップをコンピュータに実行させる第２のソフトウェア部品と、
を備えたことを特徴とする請求項１に記載のソフトウェア部品。
【請求項３】
前記部品識別情報は、本ソフトウェア部品の名称、識別番号、及びバージョン情報の少なくとも１つを含むことを特徴とする請求項１に記載のソフトウェア部品。
【請求項４】
前記部品識別情報は、本ソフトウェア部品の利用契約情報をさらに含むことを特徴とする請求項３に記載のソフトウェア部品。
【請求項５】
前記利用契約情報は、本ソフトウェア部品を利用できる者、利用できる機器、及び利用できる期間の少なくとも１つを含むことを特徴とする請求項４に記載のソフトウェア部品。
【請求項６】
前記機器識別情報は、前記コンピュータのＩＰアドレス及びＭＡＣアドレスの少なくとも１つを含むことを特徴とする請求項１に記載のソフトウェア部品。
【請求項７】
前記部品識別情報送信ステップは、前記部品識別情報を前記機器識別情報送信ステップに送信し、
前記機器識別情報送信ステップは、受信した前記部品識別情報と供に前記機器識別情報を前記部品管理サーバに送信する、
ことを特徴とする請求項１に記載のソフトウェア部品。
【請求項８】
前記部品識別情報送信ステップは、前記ソフトウェアモジュールのフック手段によって起動され、前記機器識別情報送信ステップは、前記部品識別情報送信ステップによって起動されることを特徴とする請求項１に記載のソフトウェア部品。
【請求項９】
前記管理部門から払い出しを受ける前記ソフトウェア部品は、バイナリデータの形態であることを特徴とする請求項１に記載のソフトウェア部品。
【請求項１０】
ソフトウェア部品の管理部門から払い出しを受けたソフトウェア部品を組み込んでアプリケーションソフトウェアを開発する、或いは開発した前記アプリケーションソフトウェアを使用する部品利用端末と、
前記部品利用端末と電気通信回線を介して接続され、前記部品利用端末から少なくとも前記ソフトウェア部品を識別する部品識別情報と、前記部品利用端末を識別する機器識別情報とを受信する部品管理サーバと、
を備え、
１以上のソフトウェアモジュールを含む前記ソフトウェア部品は、
前記ソフトウェアモジュールが実行されるときに、前記ソフトウェア部品を識別する部品識別情報を前記部品管理サーバに送信する部品識別情報送信ステップと、
前記ソフトウェアモジュールが実行されるときに、前記部品利用端末を識別する機器識別情報を前記部品管理サーバに送信する機器識別情報送信ステップと、
を前記部品管理端末に実行させることを特徴とする、
ソフトウェア部品管理システム。
【請求項１１】
前記ソフトウェア部品は、
前記部品識別情報送信ステップを前記部品管理端末に実行させる第１のソフトウェア部品と、
前記機器識別情報送信ステップを前記部品管理端末に実行させる第２のソフトウェア部品と、
を備えたことを特徴とする請求項１０に記載のソフトウェア部品管理システム。
【請求項１２】
前記部品識別情報は、前記ソフトウェア部品の名称、識別番号、及びバージョン情報の少なくとも１つを含むことを特徴とする請求項１１に記載のソフトウェア部品管理システム。
【請求項１３】
前記部品識別情報は、前記ソフトウェア部品の利用契約情報をさらに含むことを特徴とする請求項１２に記載のソフトウェア部品管理システム。
【請求項１４】
前記利用契約情報は、前記ソフトウェア部品を利用できる者、利用できる機器、及び利用できる期間の少なくとも１つを含むことを特徴とする請求項１３に記載のソフトウェア部品管理システム。
【請求項１５】
前記機器識別情報は、前記部品利用端末のＩＰアドレス及びＭＡＣアドレスの少なくとも１つを含むことを特徴とする請求項１０に記載のソフトウェア部品管理システム。
【請求項１６】
前記部品識別情報送信ステップは、前記部品識別情報を前記機器識別情報送信ステップに送信し、
前記機器識別情報送信ステップは、受信した前記部品識別情報と供に前記機器識別情報を前記部品管理サーバに送信する、
ことを特徴とする請求項１０に記載のソフトウェア部品管理システム。
【請求項１７】
前記部品識別情報送信ステップは、前記ソフトウェアモジュールが具備するフック手段によって起動され、前記機器識別情報送信ステップは、前記部品識別情報送信ステップによって起動されることを特徴とする請求項１０に記載のソフトウェア部品管理システム。
【請求項１８】
前記管理部門から払い出しを受ける前記ソフトウェア部品は、バイナリデータの形態であることを特徴とする請求項１０に記載のソフトウェア部品管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア部品およびソフトウェア部品管理システムに係り、特に、各種のアプリケーションソフトウェアに「部品」として使用されるソフトウェア部品、およびソフトウェア部品を管理するソフトウェア部品管理システムに関する。
【背景技術】
【０００２】
今日、ソフトウェアの開発形態として、適宜の単位で分割されたソフトウェアを部品として取り扱い（以下、この分割されたソフトウェアをソフトウェア部品という）、開発済みのソフトウェア部品を複数組み合わせることによって、新たなソフトウェアを効率良く開発する形態が多く用いられている。
【０００３】
このような開発形態においては、ソフトウェア部品の正しい利用方法を管理者が利用者に的確に伝えることが必要となる。また、ソフトウェア部品を用いて開発をする際に、発生した不具合等に迅速に対応するためには、ソフトウェア部品の利用状況を利用者が正確に管理者に伝え、管理者が正確に把握することが重要である。
【０００４】
ここで、ソフトウェア部品の「管理者」とは、ソフトウェア部品の払い出し、利用状況の把握、バージョン管理、不具合や拡張についての情報収集とその通知、適用支援といった管理作業を行う作業者のことをいう。
【０００５】
また、ソフトウェア部品の「利用者」とは、ソフトウェア部品を利用してアプリケーションソフトウェアを開発する作業者のことをいう。アプリケーションソフトウェアを利用する立場のエンドユーザも、アプリケーションソフトウェアを利用することで間接的にソフトウェア部品を利用することになるが、ここではエンドユーザはソフトウェア部品の「利用者」には含まれないものとする。
【０００６】
特許文献１には、ソフトウェア部品の利用形態に関連する技術が開示されている。特許文献１が開示する技術は、電子機器が具備するソフトウェア部品に、例えば視覚表示可能な情報を付加し、この情報に基づいて電子機器の動作状況を電子機器自体の表示部や外部のコンピュータでモニタしようとするものである。
【特許文献１】特開平１１−３２７９６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ソフトウェアを部品化し製品開発で利用する開発形態では、部品の管理者にとって、ソフトウェア部品の払出し管理が重要な課題となっている。即ち、払出し管理では、正しい利用者が正しい開発対象で部品を利用しているかどうか、また、部品の不具合や拡張についての情報を必要なときに通知するためにどの部品をどの利用者が利用しているかを管理者が把握する必要ある。
【０００８】
人間系での払出し管理では、部品を受け渡した後に実際にどのように利用されているかを把握するには限界がある。即ち、例えば利用者が誤って、または故意に本来の適用対象でない開発に適用し、或いは、譲渡するなどしても、管理者がすべての開発のソースコードやリンク情報を検査することはできないため、このような管理者の意に反する利用を確実に発見することは事実上困難である。
【０００９】
特許文献１が開示する技術は、電子機器の動作シーケンスや動作の異常の有無をモニタすることを目的とするものであり、ソフトウェア部品の払い出し管理に適用できる技術ではない。
【００１０】
本発明は、上記事情に鑑みてなされたもので、ソフトウェア部品の払い出し元の管理者側にソフトウェア部品の管理情報や利用情報を確実かつリアルタイムに通知することによって、適切なソフトウェア部品の利用促進を図りソフトウェア開発の効率を向上させることができると供に、ソフトウェア部品の不正な使用を排除することができるソフトウェア部品およびソフトウェア部品管理システムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するため、本発明に係るソフトウェア部品は、請求項１に記載したように、管理部門から払い出しを受けるソフトウェア部品であり、かつ１以上のソフトウェアモジュールを含むソフトウェア部品において、前記ソフトウェアモジュールが実行されるときに、本ソフトウェア部品を識別する部品識別情報を外部の部品管理サーバに送信する部品識別情報送信ステップと、前記ソフトウェアモジュールが実行されるときに、本ソフトウェア部品が実行されるコンピュータを識別する機器識別情報を前記部品管理サーバに送信する機器識別情報送信ステップと、をコンピュータに実行させることを特徴とする。
【００１２】
また、上記課題を解決するため、本発明に係るソフトウェア部品管理システムは、請求項１０に記載したように、ソフトウェア部品の管理部門から払い出しを受けたソフトウェア部品を組み込んでアプリケーションソフトウェアを開発する、或いは開発した前記アプリケーションソフトウェアを使用する部品利用端末と、前記部品利用端末と電気通信回線を介して接続され、前記部品利用端末から少なくとも前記ソフトウェア部品を識別する部品識別情報と、前記部品利用端末を識別する機器識別情報とを受信する部品管理サーバと、を備え、１以上のソフトウェアモジュールを含む前記ソフトウェア部品は、前記ソフトウェアモジュールが実行されるときに、前記ソフトウェア部品を識別する部品識別情報を前記部品管理サーバに送信する部品識別情報送信ステップと、前記ソフトウェアモジュールが実行されるときに、前記部品利用端末を識別する機器識別情報を前記部品管理サーバに送信する機器識別情報送信ステップと、を前記部品管理端末に実行させることを特徴とする。
【発明の効果】
【００１３】
本発明に係るソフトウェア部品およびソフトウェア部品管理システムによれば、ソフトウェア部品の払い出し元の管理者側にソフトウェア部品の管理情報や利用情報を確実かつリアルタイムに通知することによって、適切なソフトウェア部品の利用促進を図りソフトウェア開発の効率を向上させることができると供に、ソフトウェア部品の不正な使用を排除することができる。
【発明を実施するための最良の形態】
【００１４】
本発明に係るソフトウェア部品及びソフトウェア部品管理システムの実施形態について添付図面を参照して説明する。
【００１５】
（１）ソフトウェア部品管理システム
図１は、ソフトウェア部品管理システム１の一実施形態のシステム構成例を示す図である。
【００１６】
ソフトウェア部品管理システム１は、部品利用端末２と部品管理サーバ３とを備えて構成され、部品利用端末２と部品管理サーバ３とは相互に電気通信回線４を介して接続されている。
【００１７】
部品管理サーバ３は主にソフトウェア部品３０の管理者側に配置されるサーバであり、部品利用端末２は主にソフトウェア部品３０の利用者側に配置される端末装置である。
【００１８】
ソフトウェア部品３０は、所定の機能単位で分割されたプログラムであり、一般に汎用性を有するプログラムの機能単位のことをいう。装置における部品のように、ソフトウェア部品３０を組合せることによって、或いはソフトウェア部品３０の組合せにさらに新たなソフトウェアを付加することによって、特定の機能を有する大きなソフトウェア（アプリケーションソフトウェア）を構築することができる。
【００１９】
ソフトウェア部品３０は、汎用性を有し部品として利用できる限りにおいては、種類や規模を限定するものではない。例えば、所定のデータ構造を有するデータベースへのアクセスプログラムや、フーリエ解析プログラム等の汎用性を有するプログラムはソフトウェア部品３０となりうる。
【００２０】
ソフトウェア部品の管理者は、各種のソフトウェア部品を保有し管理する者であり、ソフトウェア部品の利用者側の要求に応じてソフトウェア部品を払い出す。
【００２１】
ソフトウェア部品３０の払い出しに際しては、ソフトウェア部品３０の利用者、利用期間、利用する端末等について取り決めを行うことが一般的には行われる（以下、これらの取り決めに関する情報を利用契約情報という）。
【００２２】
また、払い出したソフトウェア部品３０の利用状況を把握し、ソフトウェア部品３０の不具合情報や拡張性に関する情報を該当するソフトウェア部品３０を使用している利用者に迅速に通知する責任を持っている。
【００２３】
さらに、ソフトウェア部品３０のバージョン管理を適正に行い、バージョン情報を利用者に通知することも重要な役割である。
【００２４】
他方、ソフトウェア部品３０の利用者は、ソフトウェア部品３０の管理者からソフトウェア部品３０の払い出しを受け、払い出されたソフトウェア部品３０を組み込んで新たなアプリケーションソフトウェア１０を開発する者である。
【００２５】
アプリケーションソフトウェア１０の開発は部品利用端末２を用いて行われる。部品利用端末２は特に限定するものではなく、例えば汎用のパーソナルコンピュータである。
【００２６】
図１には、部品利用端末２で開発されるアプリケーションソフトウェア１０の基本構成例も併せて図示している。
【００２７】
アプリケーションソフトウェア１０は、管理者から払い出しを受けたソフトウェア部品３０、ソフトウェア部品３０を利用するためのプログラムである部品利用ソフトウェア２０、及び送信モジュール５０を備えて構成される。
【００２８】
勿論、この構成以外に、利用者（アプリケーションソフトウェア１０の開発者）が独自に開発したソフトウェア部品や、ソフトウェア部品を利用しない形態のソフトウェアを含んだ構成としてもよい。
【００２９】
ソフトウェア部品３０は、所定の機能を実現する機能単位であり、例えば解析系のアプリケーションソフトウェア１０の場合では、フーリエ変換機能を実現するソフトウェアユニットである。
【００３０】
これに対して、部品利用ソフトウェア２０はソフトウェア部品３０を利用するソフトウェアユニットである。上記の例で言えば、フーリエ変換機能を実現するソフトウェア部品３０に対して時系列データを入力し、フーリエ変換された周波数データをソフトウェア部品３０から受け取り、適宜加工、編集等を行うソフトウェアユニットということになる。
【００３１】
本実施形態では、各ソフトウェア部品３０が発信コード４０を備えており、また、これとは別に送信モジュール５０を備えている。これらの点が本発明の特徴であり、また従来技術と異なる点である。
【００３２】
発信コード４０は、アプリケーションソフトウェア１０の実行時にソフトウェア部品３０が呼び出されて起動したときに、起動したソフトウェア部品３０に関する部品識別情報や利用契約情報等を部品管理サーバ３に対して自動的に発信するためのコード（プログラム）である。具体的には、これらの情報を一旦送信モジュール５０に送り、送信モジュール５０から電気通信回線を介して部品管理サーバ３に送信されることになる。
【００３３】
送信モジュール５０は、発信コード４０から受け取った情報を部品管理サーバ３に送信する他、自ら取得する機器識別情報も部品管理サーバ３に送信するためのプログラムユニットである。
【００３４】
この送信モジュール５０も管理者側から払い出しを受けるものである。従って、ソフトウェア部品３０を第１のソフトウェア部品とするならば、送信モジュール５０は第２のソフトウェア部品ということができる。
【００３５】
機器識別情報は、部品利用端末２を識別する、例えばＩＰアドレスのような情報であり、ソフトウェア部品３０の種類に依存しない共通の情報である。従って共通の情報は共通のソフトウェアユニットである送信モジュール５０に情報取得の役目を担わせるという考え方である。
【００３６】
なお、ソフトウェア部品３０の発信コード４０が、部品識別情報および利用契約情報に加えて機器識別情報も併せて発信する形態としてもよい。この場合には、送信モジュール５０は、発信コード４０から受け取った情報をそのまま電気通信回線を介して部品管理サーバ３に送信する形態となる。
【００３７】
ソフトウェア部品３０、或いは送信モジュール５０は、利用者が内部を改変できない形態、即ちブラックボックス部品として提供する形態が好ましい。ソフトウェア部品３０や送信モジュール５０は、所定の機能を実現するソフトウェアユニットであり、利用者側は基本的にはその外部仕様が明確であれば利用可能なものである。逆に、不用意な改変をされると管理者側としては、払い出したソフトウェア部品３０の品質を保証できなくなる。
【００３８】
また、本実施形態では、部品利用端末２から部品管理サーバ３に送られてくる部品識別情報、利用契約情報、および機器識別情報によって、ソフトウェア部品３０の不正利用を発見することが可能であり、不正利用の排除は本実施形態の重要な効果の１つである。この観点からも、発信コード４０等を故意に削除できないようにブラックボックス部品の形態で利用者に提供する形態が好ましい。
【００３９】
ブラックボックス部品の実現方法としては、例えば、ソフトウェア部品３０や送信モジュール５０をバイナリデータ形式とし、これを利用者に払いだす形態とすればよい。
【００４０】
他方、部品利用端末２からオンラインで送られてくる部品識別情報、利用契約情報、機器識別情報等の情報は、部品管理サーバ３で受信される。
【００４１】
部品管理サーバ３は、図１に例示したように、受信部３１、表示部３２、記録部３３、指示入力部３４等を備えて構成される。受信部３１で入力された情報は、表示部３２によってオンラインでモニタすることが可能であり、また、一旦記録部３３に記録した後に、オフラインでモニタし、或いは分析することもできる。
【００４２】
管理者側では、これらの情報に基づいて、もし利用者が誤った方法でソフトウェア部品３０を利用している場合にはタイムリーにそれを発見することが可能となる。この結果、利用者に対して、より適切な使用方法を提供することが可能となり、アプリケーションソフトウェア１０の開発効率を向上させることができる。
【００４３】
また、利用者側でソフトウェア部品３０の不正使用をしている場合には、利用契約情報や機器識別情報から不正使用事実を容易に発見できる。また、これに伴って不正使用を抑止する効果もある。
【００４４】
（２）ソフトウェア部品の構成及び動作
図２は、ソフトウェア部品３０の構成例を示す図である。ソフトウェア部品３０は、外部（部品利用ソフトウェア２０）からの呼び出しを受けるためのメソッド呼出しインタフェース３０１と、メソッド呼出しインタフェース３０１が呼ばれた際に起動されるメソッドの実装コード３０３と、メソッドの実装コード３０３が起動する際に発信コード４０を起動する発信コード呼出フックポイント３０２と、発信コード４０とを有するグループを１以上備えて構成される。
【００４５】
メソッドの実装コード３０３は、ソフトウェア部品３０が本来実現すべき機能が記述されているソフトウェアモジュールである。サブルーチン、或いは関数と呼ばれるソフトウェアモジュールと類似の概念であり、Ｊａｖａ（登録商標）やＣ＋＋等のオブジェクト指向言語ではメソッドと呼ばれることが多い。以下の記述では、このソフトウェアモジュールをメソッドと呼ぶものとする。
【００４６】
ソフトウェア部品３０は通常複数のメソッドから構成されるが、１つのメソッドからなるソフトウェア部品３０を排除するものではない。
【００４７】
また、ソフトウェア部品３０が複数のメソッドを有する場合、いずれか１つのメソッドを選択し、このメソッドにメソッド呼出しインタフェース３０１、発信コード呼出フックポイント３０２、および発信コード４０を具備させる形態としても良い。この場合、選択するメソッドとしては、ソフトウェア部品３０の実行中に必ず呼び出されるメソッドが好ましい。必ず呼び出されるメッソドの例としては、ソフトウェア部品３０の初期化や終了時の後処理のためのメソッドがある。例えば、Ｊａｖａ、Ｃ＋＋、Ｃ＃等の言語では、コンストラクタ、デストラクタと呼ばれるメソッドがこれらに該当する。
【００４８】
メソッド呼出しインタフェース３０１は、外部の部品利用ソフトウェア２０から呼出しを受ける際に利用されるインタフェースである。Ｊａｖａ、Ｃ＋＋、Ｃ＃等といった言語の“クラス”や“インタフェース”の個々のメソッド定義によって実現されるものである。
【００４９】
発信コード呼出フックポイント３０２は、メソッドの実装コード３０３が起動する際に、一旦メソッドの実装コード３０３の実行を一時中断し、発信コード４０を起動させるフック手段の仕組みである。一般にフックとは、入力やメッセージを横取りして独自処理を行うことをいう。本実施形態では、メソッドの実装コード３０３の処理主導権を発信コード４０が一旦横取りして奪い、発信コード４０の処理が終了した時点でメソッドの実装コード３０３を再開する処理形態のものであり、具体的な例は後述する。
【００５０】
上記のように構成されたソフトウェア部品３０および送信モジュール５０の動作について図３および図４を用いて説明する。
【００５１】
図３は、ソフトウェア部品３０および送信モジュール５０の構成図上に処理の流れを矢印で示した図である。また、図４は、ソフトウェア部品３０および送信モジュール５０の処理の流れを示すフローチャートである。
【００５２】
まず、最初に、部品利用ソフトウェア２０からメソッド呼出しインタフェース３０１を介して、ソフトウェア部品３０のメソッドの実装コード３０３が呼び出される（図４のステップＳＴ１）。この呼出しによってメソッドの実装コード３０３は起動される（ステップＳＴ２）。
【００５３】
次に、発信コード呼出フックポイント３０２が有するフック手段によって、メソッドの実装コード３０３の動作を途中でフック（横取り）し、発信コード４０が呼び出され（ステップＳＴ３）、この呼出によって発信コード４０が起動する（ステップＳＴ４）。この際、必要に応じて発信コード呼出フックポイント３０２は、関数起動の際の引数を発信コード４０に引き渡す形態としても良い。
【００５４】
発信コード４０は、所定のメモリから、部品識別情報および利用契約情報を読み出し、これらの情報を送信モジュール５０に受け渡す（ステップＳＴ５）。
【００５５】
図５は、部品識別情報および利用契約情報の具体例を示した図である。部品識別情報は、例えば、ソフトウェア部品３０の名称、ソフトウェア部品３０の識別番号（ＩＤ）、ソフトウェア部品３０のバージョン情報等からなる。
【００５６】
また、利用契約情報は、例えば、利用契約者名や契約者番号、ソフトウェア部品３０の払い出し日、ソフトウェア部品３０の利用期間、利用対象機器情報等からなる。
【００５７】
これらの部品識別情報がソフトウェア部品３０の管理者側に送信されることにより、管理者側は、どのバージョンの、どのソフトウェア部品３０を、誰が、どこで今現在使用しているかをリアルタイム把握することができる。また、そのソフトウェア部品３０が、払い出し時の約束（契約）に則ったものであるか否かも直ちに把握することができる。
【００５８】
一方、送信モジュール５０は、自ら機器識別情報を所定のメモリ等から読み出して取得する。図５には、機器識別情報の具体例も示している。機器識別情報は、例えば、使用している機器（部品利用端末２）の名称、ＩＰアドレス、ＭＡＣアドレス等の情報である。これらの機器識別情報によって、現在実際に使用している部品利用端末２を確実に特定することが可能となる。
【００５９】
送信モジュール５０は、自ら取得する機器識別情報と、発信コード４０から受け取った部品識別情報および利用契約情報とを併せて、電気通信回線４を介して部品管理サーバ３に送信する（ステップＳＴ６）。
【００６０】
部品管理サーバ３への送信後、メソッドの実装コード３０３の処理に戻り、本来実行すべき処理の実装コードの実行を再開する（ステップＳＴ７）。
【００６１】
部品管理サーバ３側では、受信部３１で受信した部品識別情報、利用契約情報、および機器識別情報等を記録部３３に記録する。また、必要に応じてリアルタイム表示部３２にこれらの情報が表示される。
【００６２】
一旦記録部３３に記録された情報は、指示入力部３４からの指示に基づいて必要な情報が検索され、オフラインでも表示部３２に表示することが可能である。
【００６３】
図６は、その他の実施形態（第２の実施形態）に係るソフトウェア部品３０および送信モジュール５０の処理の流れを示すフローチャートである。
【００６４】
この実施形態では、ソフトウェア部品３０が、部品識別情報、利用管理情報、及び機器管理情報を取得し（ステップＳＴ５０）、送信モジュール５０は、ソフトウェア部品３０から受け取ったこれらの情報を単に部品管理サーバ３に送信する（ステップＳＴ６０）機能を有する形態である。他の処理は図４に示したフローチャートと同一であり、図４と同一の符号を付している。
【００６５】
図７ないし図９は、ステップＳＴ３におけるフック手段の具体例を説明する図である。
【００６６】
図７は、ハードコーディングによるフック手段（第１の形態）の一例を示す図である。この形態は、発信コード４０の呼出しをメソッドの実装コードの中に直接記述する形態である。図７の左図は、発信コード４０の呼出しを含まない従来のメソッド（本例ではメソッドＡ）を示すものであり、実際には２行目（コメント行）の位置にこのソフトウェア部品３０が本来実現すべき機能のコードが記述されることになる。
【００６７】
図７の右図は、ハードコーディングによるフック手段の実現例を示す例であり、２行目に記述されたコード（「send_data（data）」）によって発信コード４０の呼出を行っている。
【００６８】
この形態は、プログラム以外に特別な知識を必要としないというメリットがある。他方、発信コード４０が存在するソフトウェア部品３０と発信コード４０が存在しないソフトウェア部品３０（管理者側で監視を必要としないソフトウェア部品）の両方が存在し、かつこれらを保守する必要がある場合には、メソッドＡの実装コードがそれぞれのソフトウェア部品に存在するため、メソッドＡの実装コードに変更が発生した場合それら総てに対して変更せねばならず、効率が悪いというデメリットがある。
【００６９】
図８は、クラス継承を利用するフック手段の一例を示す図である。この形態は、オブジェクト指向言語で記述されるソフトウェア部品３０のフック手段をクラス継承によって実現するものである。
【００７０】
図８の左図は、ソフトウェア部品３０の本来実現すべき機能を実装するクラスを基底クラスとして定義したものである。図８の右図は、発信コード４０の埋め込みを実現するクラスを導出クラスとして定義したものである。この場合、発信コード４０を埋め込みたいメソッド（本例ではメソッドＡ）に対して、導出クラス側で同名、同引数のメソッドとして定義して仮想関数化し、この仮想関数の中で基底クラスのメソッドを利用することにより、監視可能なソフトウェア部品３０を実現するものである。
【００７１】
この形態では、発信コード４０が存在するソフトウェア部品３０と発信コード４０が存在しないソフトウェア部品３０の両方を保守する場合、ソフトウェア部品３０の本来実現すべき機能の実装コードは１つのクラス内のみに存在するため、保守が容易となるメリットがある。他方、基底クラス側に発信コード４０を埋め込みたいメソッドが複数ある場合、発信コード４０を埋め込むか否かの場合分けによって多数のクラスが必要となるというデメリットがある。
【００７２】
図９は、アスペクト指向言語（ＡＯＰ）を利用するフック手段の一例を示す図である。AspectJやHyper/Jといったアスペクト指向言語を用いてソフトウェア部品３０を記述し、発信コード４０をアスペクトとして定義し、既存ソフトウェア部品３０への埋め込みによって、監視可能なソフトウェア部品を実現するものである。
【００７３】
この形態は、クラス継承を利用する形態と同様に、発信コード４０が存在するソフトウェア部品３０と発信コード４０が存在しないソフトウェア部品３０の両方を保守する場合、ソフトウェア部品３０の本来実現すべき機能の実装コードは１つのクラス内のみに存在するため、保守が容易となるというメリットがある。さらに、発信コード４０の埋め込み場所の指定や変更がアスペクト指向言語の高い記述力を利用することによって少ない作業コストで実現できる。
【００７４】
他方、アスペクト指向言語は、オブジェクト指向言語に比べると普及の範囲が現時点でそれ程広くないため、言語教育等のコストが発生するというデメリットがある。
【００７５】
以上、述べたように、本実施形態に係るソフトウェア部品３０、及びソフトウェア部品管理システム１によれば、ソフトウェア部品３０の払い出し元の管理者側にソフトウェア部品３０の管理情報や利用情報を確実かつリアルタイムに通知することが可能となり、適切なソフトウェア部品の利用促進を図りソフトウェア開発の効率を向上させることができる。
【００７６】
また、ソフトウェア部品の不正な使用を排除し、或いは不正な使用を抑止することができる。
【００７７】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
【図面の簡単な説明】
【００７８】
【図１】本発明に係るソフトウェア部品管理システムの一実施形態のシステム構成例を示す図。
【図２】本発明に係るソフトウェア部品の一実施形態の構成例を示す図。
【図３】ソフトウェア部品及び送信モジュールの構成及び処理の流れを示す説明図。
【図４】ソフトウェア部品及び送信モジュールの処理の流れを示す第１のフローチャート。
【図５】部品識別情報、利用契約情報、及び機器識別情報の具体例を示す図。
【図６】ソフトウェア部品及び送信モジュールの処理の流れを示す第２のフローチャート。
【図７】ハードコーディングによるフック手段の一例を示す説明図。
【図８】クラス継承を利用するフック手段の一例を示す説明図。
【図９】アスペクト指向言語を利用するフック手段の一例を示す説明図。
【符号の説明】
【００７９】
１  ソフトウェア部品管理システム
２  部品利用端末
３  部品管理サーバ
４  電気通信回線
１０  アプリケーションソフトウェア
２０  部品利用ソフトウェア
３０  ソフトウェア部品
４０  発信コード
５０  送信モジュール
３０１  メソッド呼出しインタフェース
３０２  発信コード呼出フックポイント
３０３  メソッドの実装コード
【図１】
2007156987.tif 000003
【図２】
2007156987.tif 000004
【図３】
2007156987.tif 000005
【図４】
2007156987.tif 000006
【図５】
2007156987.tif 000007
【図６】
2007156987.tif 000008
【図７】
2007156987.tif 000009
【図８】
2007156987.tif 000010
【図９】
2007156987.tif 000011