(57)【要約】【課題】利用状況を迅速かつ的確に管理者側に伝達すると共に、ソフトウェア部品の誤用があった場合には、その誤用を迅速に検出するソフトウェア部品を提供する。【解決手段】本発明に係るソフトウェア部品は、１以上のソフトウェアモジュールを含むソフトウェア部品において、ソフトウェアモジュールが実行されるときに、ソフトウェアモジュールの利用状況を表す利用状況情報を外部の部品管理サーバに送信する利用状況情報送信ステップと、ソフトウェアモジュールが実行される時刻を表す利用時刻情報を部品管理サーバに送信する利用時刻情報送信ステップと、本ソフトウェア部品を識別する部品識別情報を部品管理サーバに送信する部品情報送信ステップと、本ソフトウェア部品が実行されるコンピュータを識別する利用機器情報を部品管理サーバに送信する利用機器情報送信ステップと、をコンピュータに実行させることを特徴とする。【選択図】  図４
2008090358.tif 000002
【特許請求の範囲】
【請求項１】
管理部門から払い出しを受けるソフトウェア部品であり、１以上のソフトウェアモジュールを含むソフトウェア部品において、
前記ソフトウェアモジュールが実行されるときに、前記ソフトウェアモジュールの利用状況を表す利用状況情報を外部の部品管理サーバに送信する利用状況情報送信ステップと、
前記ソフトウェアモジュールが実行されるときに、前記ソフトウェアモジュールが実行される時刻を表す利用時刻情報を前記部品管理サーバに送信する利用時刻情報送信ステップと、
前記ソフトウェアモジュールが実行されるときに、本ソフトウェア部品を識別する部品識別情報を前記部品管理サーバに送信する部品情報送信ステップと、
前記ソフトウェアモジュールが実行されるときに、本ソフトウェア部品が実行されるコンピュータを識別する利用機器情報を前記部品管理サーバに送信する利用機器情報送信ステップと、
をコンピュータに実行させることを特徴とするソフトウェア部品。
【請求項２】
前記部品識別情報は、本ソフトウェア部品の名称、識別番号、及びバージョン情報の少なくとも１つを含むことを特徴とする請求項１に記載のソフトウェア部品。
【請求項３】
前記利用機器情報は、前記コンピュータのＩＰアドレス及びＭＡＣアドレスの少なくとも１つを含むことを特徴とする請求項１に記載のソフトウェア部品。
【請求項４】
前記利用時刻情報は、前記コンピュータが具備するオペレーティングシステムから取得される、ことを特徴とする請求項１に記載のソフトウェア部品。
【請求項５】
前記利用状況情報は、前記ソフトウェアモジュールを特定するためのモジュール識別情報、前記ソフトウェアモジュールに渡される引数に基づいて生成される引数状態識別情報、及び前記ソフトウェアモジュールの内部で使用される変数に基づいて生成される変数状態識別情報を含む情報であり、
前記モジュール識別情報、前記引数状態識別情報、および前記変数状態識別情報は、前記ソフトウェアモジュールにて生成される情報である、ことを特徴とする請求項１に記載のソフトウェア部品。
【請求項６】
前記引数は、前記ソフトウェアモジュールに渡される引数の中から、本ソフトウェア部品の動作監視のために、予め選択される特定の引数であり、
前記引数状態識別情報は、本ソフトウェア部品の動作監視のために、前記特定の引数から所定の閾値又は判定値に基づいて変換される数字又は文字列である、
ことを特徴とする請求項５に記載のソフトウェア部品。
【請求項７】
前記変数は、前記ソフトウェアモジュールの内部で使用される変数の中から、本ソフトウェア部品の動作監視のために、予め選択される特定の変数であり、
前記変数状態識別情報は、本ソフトウェア部品の動作監視のために、前記特定の変数から所定の閾値又は判定値に基づいて変換される数字又は文字列である、
ことを特徴とする請求項５に記載のソフトウェア部品。
【請求項８】
ソフトウェア部品の管理部門から払い出しを受けるソフトウェア部品であり１以上のソフトウェアモジュールを含むソフトウェア部品を組み込んでアプリケーションソフトウェアを開発する、或いは開発した前記アプリケーションソフトウェアを使用する部品利用端末と、
前記部品利用端末と電気通信回線を介して接続され、少なくとも、前記ソフトウェアモジュールの利用状況を表す利用状況情報、前記ソフトウェア部品が実行されるコンピュータを識別する利用機器情報、前記ソフトウェア部品を識別する部品識別情報、及び前記ソフトウェアモジュールが実行される時刻を表す利用時刻情報を、前記部品利用端末から受信する部品管理サーバと、
を備え、
前記ソフトウェア部品は、
前記ソフトウェアモジュールが実行されるときに、前記ソフトウェアモジュールの利用状況を表す利用状況情報を外部の部品管理サーバに送信する利用状況情報送信ステップと、
前記ソフトウェアモジュールが実行されるときに、前記ソフトウェアモジュールが実行される時刻を表す利用時刻情報を前記部品管理サーバに送信する利用時刻情報送信ステップと、
前記ソフトウェアモジュールが実行されるときに、前記ソフトウェア部品を識別する部品識別情報を前記部品管理サーバに送信する部品情報送信ステップと、
前記ソフトウェアモジュールが実行されるときに、前記ソフトウェア部品が実行される前記部品利用端末を識別する利用機器情報を前記部品管理サーバに送信する利用機器情報送信ステップと、
を前記部品利用端末に実行させる、
ことを特徴とするソフトウェア部品管理システム。
【請求項９】
前記部品識別情報は、前記ソフトウェア部品の名称、識別番号、及びバージョン情報の少なくとも１つを含むことを特徴とする請求項８に記載のソフトウェア部品管理システム。
【請求項１０】
前記利用機器情報は、前記部品利用端末のＩＰアドレス及びＭＡＣアドレスの少なくとも１つを含むことを特徴とする請求項８に記載のソフトウェア部品管理システム。
【請求項１１】
前記利用時刻情報は、前記部品利用端末が具備するオペレーティングシステムから取得される、ことを特徴とする請求項８に記載のソフトウェア部品管理システム。
【請求項１２】
前記利用状況情報は、前記ソフトウェアモジュールを特定するためのモジュール識別情報、前記ソフトウェアモジュールに渡される引数に基づいて生成される引数状態識別情報、及び前記ソフトウェアモジュールの内部で使用される変数に基づいて生成される変数状態識別情報を含む情報であり、
前記モジュール識別情報、前記引数状態識別情報、および前記変数状態識別情報は、前記ソフトウェアモジュールにて生成される情報である、ことを特徴とする請求項８に記載のソフトウェア部品管理システム。
【請求項１３】
前記引数は、前記ソフトウェアモジュールに渡される引数の中から、前記ソフトウェア部品の動作監視のために、予め選択される特定の引数であり、
前記引数状態識別情報は、前記ソフトウェア部品の動作監視のために、前記特定の引数から所定の閾値又は判定値に基づいて変換される数字又は文字列である、
ことを特徴とする請求項１２に記載のソフトウェア部品管理システム。
【請求項１４】
前記変数は、前記ソフトウェアモジュールの内部で使用される変数の中から、前記ソフトウェア部品の動作監視のために、予め選択される特定の変数であり、
前記変数状態識別情報は、前記ソフトウェア部品の動作監視のために、前記特定の変数から所定の閾値又は判定値に基づいて変換される数字又は文字列である、
ことを特徴とする請求項１２に記載のソフトウェア部品管理システム。
【請求項１５】
前記部品管理サーバは、
受信した前記利用状況情報、前記利用機器情報、前記部品識別情報、及び前記利用時刻情報を記憶する記憶部と、
受信した前記利用状況情報、前記利用機器情報、前記部品識別情報、及び前記利用時刻情報を表示する表示部と、
を備えたことを特徴とする請求項８に記載のソフトウェア部品管理システム。
【請求項１６】
前記部品管理サーバは、
前記ソフトウェア部品が誤って利用されたときの利用状況情報が予め記憶されているデータベースを具備し、
前記部品利用端末から送信される利用状況情報と、前記データベースに記憶されている利用状況情報とが一致したときには、前記ソフトウェア部品が誤って利用されたと判定する、
ことを特徴とする請求項８に記載のソフトウェア部品管理システム。
【請求項１７】
前記部品管理サーバは、
前記ソフトウェア部品が正しく利用されたときの利用状況情報が予め記憶されているデータベースを具備し、
前記部品利用端末から送信される利用状況情報と、前記データベースに記憶されている利用状況情報とが一致しないときには、前記ソフトウェア部品が誤って利用されたと判定する、
ことを特徴とする請求項８に記載のソフトウェア部品管理システム。
【請求項１８】
前記部品利用端末から送信される利用状況情報及び前記データベースに記憶されている利用状況情報は、前記ソフトウェアモジュールを特定するためのモジュール識別情報、前記ソフトウェアモジュールに渡される引数に基づいて生成される引数状態識別情報、及び前記ソフトウェアモジュールの内部で使用される変数に基づいて生成される変数状態識別情報を含む情報であり、
前記部品利用端末から送信される利用状況情報は、前記ソフトウェアモジュールにて生成される情報である、ことを特徴とする請求項１６又は１７に記載のソフトウェア部品管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア部品およびソフトウェア部品管理システムに係り、特に、各種のアプリケーションソフトウェアに「部品」として使用されるソフトウェア部品、およびソフトウェア部品を管理するソフトウェア部品管理システムに関する。
【背景技術】
【０００２】
今日、ソフトウェアの開発形態として、適宜の単位で分割されたソフトウェアを部品として取り扱い（以下、この分割されたソフトウェアをソフトウェア部品という）、開発済みのソフトウェア部品を複数組み合わせることによって、新たなソフトウェアを効率良く開発する形態が多く用いられている。
【０００３】
このような開発形態においては、ソフトウェア部品の正しい利用方法を管理者が利用者に的確に伝えることが必要となる。また、ソフトウェア部品を用いて開発をする際に、発生した不具合等に迅速に対応するためには、ソフトウェア部品の利用状況を利用者が正確に管理者に伝え、管理者が正確に把握することが重要である。
【０００４】
ここで、ソフトウェア部品の「管理者」とは、ソフトウェア部品の払い出し、利用状況の把握、バージョン管理、不具合や拡張についての情報収集とその通知、適用支援といった管理作業を行う作業者のことをいう。
【０００５】
また、ソフトウェア部品の「利用者」とは、ソフトウェア部品を利用してアプリケーションソフトウェアを開発する作業者のことをいう。アプリケーションソフトウェアを利用する立場のエンドユーザも、アプリケーションソフトウェアを利用することで間接的にソフトウェア部品を利用することになるが、ここではエンドユーザはソフトウェア部品の「利用者」には含まれないものとする。
【０００６】
特許文献１には、電子機器の保守管理を行うシステムに関する技術が開示されている。電子機器をネットワークを介して保守管理者側のサーバに接続し、電子機器の動作状態をリアルタイムで保守管理者側のサーバに送信することで、応答型の処理が可能な保守管理環境を構築するというものである。
【特許文献１】特開２００５−１８２４４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
一般にソフトウェアを部品化し製品開発で利用する開発形態においては、次のような問題点が指摘されている。
【０００８】
第１の問題点は、ソフトウェア部品の利用方法習熟のためのコストが高くつく点である。ソフトウェア部品の利用の際に生じる不具合等では、ソフトウェア部品自体の品質に起因する場合よりも、むしろソフトウェア部品の利用方法の誤用に起因する場合の方が多いと言われている。ソフトウェア部品の正しい利用方法を利用者に習熟させ誤用を低減するためには適切な教育が必要となるが、この教育に要するコストが高い。また、利用者の中には外注業者等の一時的な利用者も多く、このため教育における費用対効果は必ずしも高くならない。
【０００９】
第２の問題点は、ソフトウェア部品の利用を支援するための人的リソース不足である。ソフトウェア部品の内容に関してはその開発者が最も熟知しているため、利用者はソフトウェア部品の開発者に支援を依頼する場合が多い。しかしながら、ソフトウェア部品の開発者のリソースは限られており、特に、ソフトウェア部品を多数の利用者が利用している場合や、利用者が遠隔地にいるような場合には、開発者が個々の問題点に個別に対応することが困難となる場合が多い。
【００１０】
第３の問題点は、ソフトウェア部品の不具合に関する情報を的確に把握するために多くの時間を費やす点である。従来からソフトウェア部品の不具合情報は、主に人間系による伝達手段によって行われている。ソフトウェア部品を利用した開発において不具合が発生した場合、管理者は、利用者からの文書や口頭による状況報告や、システムの動作ログ（動作記録）に基づいて不具合事象を解析し、対策を講じる。
【００１１】
しかしながら、管理者が必要とする情報を利用者が直ちに報告することや、動作ログを常に記録しておくことは必ずしも期待できない。このため、一般には、管理者は利用者から必要とする情報を再度聞き直し、或いは、再現テストを実施することが多い。このため、不具合の状況を正しく把握するまでに多大なコストを要することになる。また、利用者が開発の後期の段階まで誤った利用方法に気づかない場合もありうるが、このような場合誤用の発見が遅れれば遅れるほど多大な改修コストが発生することになる。
【００１２】
さらに、第４の問題点は、ソフトウェア部品の不具合情報が主に人間系による伝達手段によって行われているため、不具合やその対策に関する情報を、迅速にかつ総ての利用者に対して伝達することが困難な点にある。
【００１３】
特許文献１が開示する技術は、電子機器の動作状態を、ネットワークを介してリアルタイムで保守管理者側に伝達するものであるが、上述した問題点を解決する技術を提供するものではない。
【００１４】
本発明は、上記事情に鑑みてなされたもので、ソフトウェア部品の利用状況を迅速かつ的確に管理者側に伝達すると共に、ソフトウェア部品の利用において誤用があった場合には、その誤用を迅速に検出し、ソフトウェア部品を利用する開発の品質向上とコスト低減とを実現することができるソフトウェア部品およびソフトウェア部品管理システムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記課題を解決するため、本発明に係るソフトウェア部品は、請求項１に記載したように、管理部門から払い出しを受けるソフトウェア部品であり、１以上のソフトウェアモジュールを含むソフトウェア部品において、前記ソフトウェアモジュールが実行されるときに、前記ソフトウェアモジュールの利用状況を表す利用状況情報を外部の部品管理サーバに送信する利用状況情報送信ステップと、前記ソフトウェアモジュールが実行されるときに、前記ソフトウェアモジュールが実行される時刻を表す利用時刻情報を前記部品管理サーバに送信する利用時刻情報送信ステップと、前記ソフトウェアモジュールが実行されるときに、本ソフトウェア部品を識別する部品識別情報を前記部品管理サーバに送信する部品情報送信ステップと、前記ソフトウェアモジュールが実行されるときに、本ソフトウェア部品が実行されるコンピュータを識別する利用機器情報を前記部品管理サーバに送信する利用機器情報送信ステップと、をコンピュータに実行させることを特徴とする。
【００１６】
また、上記課題を解決するため、本発明に係るソフトウェア部品管理システムは、請求項８に記載したように、ソフトウェア部品の管理部門から払い出しを受けるソフトウェア部品であり１以上のソフトウェアモジュールを含むソフトウェア部品を組み込んでアプリケーションソフトウェアを開発する、或いは開発した前記アプリケーションソフトウェアを使用する部品利用端末と、前記部品利用端末と電気通信回線を介して接続され、少なくとも、前記ソフトウェアモジュールの利用状況を表す利用状況情報、前記ソフトウェア部品が実行されるコンピュータを識別する利用機器情報、前記ソフトウェア部品を識別する部品識別情報、及び前記ソフトウェアモジュールが実行される時刻を表す利用時刻情報を、前記部品利用端末から受信する部品管理サーバと、を備え、前記ソフトウェア部品は、前記ソフトウェアモジュールが実行されるときに、前記ソフトウェアモジュールの利用状況を表す利用状況情報を外部の部品管理サーバに送信する利用状況情報送信ステップと、前記ソフトウェアモジュールが実行されるときに、前記ソフトウェアモジュールが実行される時刻を表す利用時刻情報を前記部品管理サーバに送信する利用時刻情報送信ステップと、前記ソフトウェアモジュールが実行されるときに、前記ソフトウェア部品を識別する部品識別情報を前記部品管理サーバに送信する部品情報送信ステップと、前記ソフトウェアモジュールが実行されるときに、前記ソフトウェア部品が実行される前記部品利用端末を識別する利用機器情報を前記部品管理サーバに送信する利用機器情報送信ステップと、を前記部品利用端末に実行させる、ことを特徴とする。
【発明の効果】
【００１７】
本発明に係るソフトウェア部品およびソフトウェア部品管理システムによれば、ソフトウェア部品の利用状況を迅速かつ的確に管理者側に伝達すると共に、ソフトウェア部品の利用において誤用があった場合には迅速に検出することによって、ソフトウェア部品を利用する開発の品質向上とコスト低減とを実現することができる。
【発明を実施するための最良の形態】
【００１８】
本発明に係るソフトウェア部品及びソフトウェア部品管理システムの実施形態について添付図面を参照して説明する。
【００１９】
（１）ソフトウェア部品管理システム（第１の実施形態）
図１は、本発明の第１の実施形態に係るソフトウェア部品管理システム１のシステム構成例を示す図である。
【００２０】
ソフトウェア部品管理システム１は、部品利用端末２と部品管理サーバ３とを備えて構成され、部品利用端末２と部品管理サーバ３とは相互に電気通信回線４を介して接続されている。
【００２１】
部品管理サーバ３は主にソフトウェア部品４０の管理部門に配置されるサーバであり、部品利用端末２は主にソフトウェア部品４０の利用者側に配置される端末装置である。
【００２２】
ソフトウェア部品４０は、所定の機能単位で分割されたプログラムであり、一般に汎用性を有するプログラムの機能単位のことをいう。装置における部品のように、ソフトウェア部品４０を組み合わせることによって、或いはソフトウェア部品４０の組合せにさらに新たなソフトウェアを付加することによって、特定の機能を有する大きなソフトウェア（アプリケーションソフトウェア）を構築することができる。
【００２３】
ソフトウェア部品４０は、汎用性を有し部品として利用できる限りにおいては、種類や規模を限定するものではない。例えば、所定のデータ構造を有するデータベースへのアクセスプログラムや、フーリエ解析プログラム等の汎用性を有するプログラムはソフトウェア部品４０となりうる。
【００２４】
ソフトウェア部品４０の管理部門は、各種のソフトウェア部品４０を保有し管理する部門であり、管理部門にいるソフトウェア部品４０の管理者は、利用者側の要求に応じてソフトウェア部品を払い出す。
【００２５】
ソフトウェア部品４０の管理者は、払い出したソフトウェア部品４０の利用状況を把握し、ソフトウェア部品４０の不具合情報や拡張性に関する情報を該当するソフトウェア部品４０を使用している利用者に迅速に通知する責任を持っている。
【００２６】
また、払い出したソフトウェア部品４０を組み込んだシステムが正常に動作しない場合には、その理由がソフトウェア部品４０自体の問題であるのか否かを判断する必要がある。このため、ソフトウェア部品４０の利用状況を的確に把握し、ソフトウェア部品４０が誤用されている（誤った利用方法で使用されている）場合には、利用者にその旨を迅速に通知することも管理者の重要な役割である。
【００２７】
他方、ソフトウェア部品４０の利用者は、ソフトウェア部品４０の管理者からソフトウェア部品４０の払い出しを受け、払い出されたソフトウェア部品４０を組み込んで新たなアプリケーションソフトウェア１０を開発する者である。
【００２８】
アプリケーションソフトウェア１０の開発は部品利用端末２を用いて行われる。部品利用端末２の具体的な種類や形態は特に限定するものではなく、例えば汎用のパーソナルコンピュータである。
【００２９】
図１には、部品利用端末２で開発されるアプリケーションソフトウェア１０の基本構成例も併せて図示している。
【００３０】
アプリケーションソフトウェア１０は、管理者から払い出しを受けたソフトウェア部品４０、ソフトウェア部品４０を利用するためのプログラムである部品利用コード２０、及び送信モジュール６０を備えて構成される。
【００３１】
勿論、この構成以外に、利用者（アプリケーションソフトウェア１０の開発者）が独自に開発したソフトウェア部品や、ソフトウェア部品を利用しない形態のソフトウェアを含んだ構成としてもよい。
【００３２】
ソフトウェア部品４０は、所定の機能を実現する機能単位であり、例えば解析系のアプリケーションソフトウェア１０の場合では、フーリエ変換機能を実現するソフトウェアユニットである。
【００３３】
これに対して、部品利用コード２０はソフトウェア部品４０を利用するソフトウェアユニットである。上記の例で言えば、フーリエ変換機能を実現するソフトウェア部品４０に対して時系列データを入力し、フーリエ変換された周波数データをソフトウェア部品４０から受け取り、適宜加工、編集等を行うソフトウェアユニットということになる。
【００３４】
本実施形態では、各ソフトウェア部品４０が発信コード５０を備えており、また、これとは別に送信モジュール６０を備えている。これらの点が本発明の特徴であり、また従来技術と異なる点である。
【００３５】
発信コード５０は、アプリケーションソフトウェア１０の実行時にソフトウェア部品４０が呼び出され実行されるときに、そのソフトウェア部品４０の利用情報（ソフトウェア部品４０がどのように利用されているかを示す情報）を部品管理サーバ３に対して自動的に発信するためのコード（プログラム）である。利用情報の具体的な内容については後述する。
【００３６】
利用情報は、一旦送信モジュール６０に送られ、送信モジュール６０から電気通信回線を介して部品管理サーバ３に送信されることになる。
【００３７】
送信モジュール６０は、発信コード５０から受け取った情報を部品管理サーバ３に送信する他、自ら取得する利用機器情報を部品管理サーバ３に送信するためのプログラムユニットである。
【００３８】
この送信モジュール６０も管理者側から払い出しを受けるものである。従って、ソフトウェア部品４０を第１のソフトウェア部品とするならば、送信モジュール６０は第２のソフトウェア部品ということができる。
【００３９】
利用機器情報は、ソフトウェア部品４０の利用情報の１つではあるが、具体的には、部品利用端末２を特定するための情報、例えばＩＰアドレスやＭＡＣアドレスのような情報である。即ち、ソフトウェア部品４０の種類に依存せず、部品利用端末２で使用される総てのソフトウェア部品４０に共通の情報である。そこで、共通の情報の取得は、共通のソフトウェアユニットである送信モジュール６０にて行っている。
【００４０】
なお、ソフトウェア部品４０が具備する発信コード５０が、利用機器情報を取得する形態としてもよい。この場合には、送信モジュール６０は、発信コード５０から受け取ったソフトウェア部品４０の利用情報をそのまま電気通信回線を介して部品管理サーバ３に送信する形態となる。
【００４１】
部品管理サーバ３は、図１に例示したように、受信部３１、表示部３２、利用情報記録部３３、入力部３４等を備えて構成される。受信部３１によって受信されたソフトウェア部品４０の利用情報は、表示部３２によってオンラインでモニタすることが可能であり、また、一旦利用情報記録部３３に記録した後に、オフラインでモニタし、或いは分析することもできる。
【００４２】
管理者側では、部品利用端末２から送信されてくる利用情報に基づいて、もし利用者が誤った方法でソフトウェア部品４０を利用している場合にはタイムリーにそれを発見することが可能となる。この結果、利用者に対して、より適切な使用方法を提供することが可能となり、アプリケーションソフトウェア１０の開発効率を向上させることができる。
【００４３】
（２）ソフトウェア部品の構成及び動作
図２は、ソフトウェア部品４０の構成例を示す図である。ソフトウェア部品４０は、１つ、或いは複数のソフトウェアモジュール４１を備えている。
【００４４】
各ソフトウェアモジュール４１は、メソッドの実装コード４２と発信コード５０とを備えている。
【００４５】
メソッドの実装コード４２は、ソフトウェアモジュール４１が本来実現すべき機能が記述されているプログラムのモジュールである。サブルーチン、或いは関数と呼ばれるプログラムと類似の概念であり、Ｊａｖａ（登録商標）やＣ＋＋等のオブジェクト指向言語ではメソッドと呼ばれることが多い。以下の記述では、このメソッドの実装コード４２を単にメソッド４２と呼ぶ場合もある。
【００４６】
各メソッドの実装コード４２は、外部の部品利用コード２０から呼出しを受けるメソッド呼出しインタフェース７０を具備している。メソッド呼出しインタフェース７０は、例えば、Ｊａｖａ、Ｃ＋＋、Ｃ＃等といった言語の“インタフェース”の個々のメソッド定義によって実現されるものである。メソッドの実装コード４２は部品利用コード２０から、メソッド呼出しインタフェース７０を介して起動されることになる。
【００４７】
また、メソッドの実装コード４２はフック手段４２ａを具備している。フック手段４２ａは、メソッドの実装コード４２が起動する際に、一旦メソッドの実装コード４２の実行を一時中断し、発信コード５０を起動させる仕組みである。一般にフックとは、入力やメッセージを横取りして独自処理を行うことをいう。本実施形態では、メソッドの実装コード４２の処理主導権を発信コード５０が一旦横取りして奪い、発信コード５０の処理を起動させた後、メソッドの実装コード４２を再開する処理形態のものである。
【００４８】
発信コード５０と送信モジュール５０は、ソフトウェア部品４０の利用情報を生成し、部品管理サーバ３へ送信する機能を有する。ソフトウェア部品４０の利用情報は、ソフトウェア部品４０が正しく利用されているか否か、逆に言えば誤用されていないか否かを判断するために必要な情報である。
【００４９】
図３は、ソフトウェア部品４０の利用情報の一例を示す図である。利用情報は大別すると、「利用機器情報」、「利用部品情報」、「利用状況情報」、および「利用時刻情報」からなっている。「利用状況情報」は、さらに、「メソッドＩＤ」、「引数状態ＩＤ」、および「変数状態ＩＤ」からなっている。
【００５０】
「利用機器情報」は、ソフトウェア部品４０を利用する部品利用端末２を識別するための情報であり、部品利用端末２のＩＰアドレスやＭＡＣアドレス等である。「利用機器情報」はＯＳ等の機能を利用して送信モジュール５０が取得するが、前述したように発信コード５０が取得してもよい。
【００５１】
「利用部品情報」は、部品利用端末２にて実行されるソフトウェア部品４０を識別する情報であり、ソフトウェア部品４０の名称やＩＤ（識別番号や識別記号）等で記述される。また、ソフトウェア部品４０のバージョン情報も「利用部品情報」に含まれる。
【００５２】
「メソッドＩＤ」は、ソフトウェア部品４０の内部で起動、実行されるメソッド４２を特定するための情報であり、数字や文字列によって記述される。
【００５３】
「引数状態ＩＤ」は、外部の部品利用コード２０からメソッド４２に渡される引数に基づいて発信コード５０で生成される情報であり、数字や文字列で記述される。
【００５４】
「変数状態ＩＤ」は、メソッド４２の内部で使用される変数に基づいて発信コード５０で生成される情報であり、同様に数字や文字列で記述される。
【００５５】
引数や変数のタイプや値が、予め想定されている範囲内で使用されているか否かを判断することによって、ソフトウェア部品４０の誤用を検出することができる。「引数状態ＩＤ」、および「変数状態ＩＤ」は、この目的で生成される情報であり、具体的な生成方法については後述する。
【００５６】
「利用時刻情報」は、利用情報が生成された時刻を示す情報である。実際には、ソフトウェアモジュール４１（メソッド４２）が呼び出された時点で利用情報が生成されるため、メソッド４２が起動された時刻でもある。「利用時刻情報」により、各メソッド４２の呼出し順序や、メソッド間の呼出し間隔を特定することが可能となり、これらの情報によってもソフトウェア部品４０の誤用を検出することができる。
【００５７】
上記のように構成されたソフトウェア部品４０および送信モジュール６０の動作について図４および図５を用いて説明する。
【００５８】
図４は、ソフトウェア部品４０および送信モジュール６０の構成図上に処理の流れを矢印で示した図である。また、図５は、ソフトウェア部品４０および送信モジュール６０の処理の流れを示すフローチャートである。なお、図４の矢印に付した丸で囲んだ数字は、図５のフローチャートにおけるステップ番号に対応している。
【００５９】
ソフトウェア部品４０が実行されるときには、アプリケーションソフトウェア１０が有する部品利用コード２０から呼出しを受け、ソフトウェア部品４０内のソフトウェアモジュール４１が起動する。具体的には、メソッド呼出しインタフェース７０を介してソフトウェアモジュール４１内のメソッド４２が起動される。また、メソッド４２の起動に際しては、メソッド４２の動作に必要となる外部変数（引数）が部品利用コード２０からメソッド４２に引き渡される（図５のステップＳＴ１）。
【００６０】
次に、ステップＳＴ２では、メソッド４２が具備するフック手段４２ａにより、発信コード５０を起動するとともに、部品利用コード２０からメソッド４２に引き渡された引数を発信コード５０にも引き渡す。
【００６１】
発信コード５０を起動後、メソッドの実装コード４２を再開する（ステップＳＴ３）。
【００６２】
次のステップＳＴ４では、発信コード５０が具備するプログラム、具体的には、「引数及び変数変換コード５１」を用いて、部品利用コード２０から引き渡された引数の中の特定の引数を、引数状態ＩＤ（引数状態識別情報）に変換する。変換に際しては、発信コード５０が備えている「変換用データ５２」を参照する。
【００６３】
同様に、メソッド４２の内部で使用する内部変数（変数）も、引数及び変数変換コード５１を用いて、変換用データ５２を参照し、変数状態ＩＤ（変数状態識別情報）に変換する。
【００６４】
一般にソフトウェア部品４０、或いはメソッド４２では、種々の引数や変数を使用するが、これらの引数や変数は、ソフトウェア部品４０を正しく利用している場合には、所定の範囲内の値や特定の値をとることが予めわかっている場合が多い。この特徴を利用してソフトウェア部品４０が誤用されているか否かを判断することができる。
【００６５】
具体的には、変換用データ５２に、ソフトウェア部品４０が正しく利用されているときに引数や変数が取り得る範囲の閾値や特定の値（判定値）を予め記憶させておき、引数や変数と上記閾値や判定値とを比較判定し、その判定結果を簡単な数字や文字列で記述される引数状態ＩＤや変数状態ＩＤによって表わす。その結果、ソフトウェア部品４０の誤用は、引数状態ＩＤや変数状態ＩＤの数字や文字列で表わされることになり、これらの引数状態ＩＤや変数状態ＩＤによってソフトウェア部品４０の誤用を判定できる。
【００６６】
図６は、引数から変換された引数状態ＩＤ、及び変数から変換された変数状態ＩＤの一例を示す図である。メソッドＩＤは、ソフトウェア部品４０の中のメソッド４２を特定するための識別記号であり、図６の例では「Ｍ１」となっている。
【００６７】
図６の例では、引数１は、部品利用コード２０からメソッドＩＤ「Ｍ１」のメソッド４２に引き渡される引数の１つであり、引数１を引数及び変数変換コード５１と変換用データ５２とを用いて変換した結果が引数状態ＩＤ「α」となる。同様に、引数２に対応する引数状態ＩＤが「β」であり、引数Ｎに対応する引数状態ＩＤが「ω」である。
【００６８】
引数１乃至引数Ｎは、メソッド４２に引き渡される総ての引数である必要は無く、引き渡された総ての引数の中から誤用判定に必要であると判断された特定の引数である。
【００６９】
同様に、変数１は、メソッドＩＤ「Ｍ１」のメソッド４２で使用される変数の１つであり、変数１を引数及び変数変換コード５１と変換用データ５２とを用いて変換した結果が変数状態ＩＤ「δ」となる。また、変数２に対応する変数状態ＩＤが「π」であり、変数Ｎに対応する変数状態ＩＤが「ε」である。
【００７０】
変数１乃至変数Ｎについても、メソッド４２で使用される総ての変数である必要は無く、使用される変数の中から誤用判定に必要であると判断される特定の変数である。
【００７１】
図６の例示では、引数や変数を、「α」や「δ」等の文字列で表わされる引数状態ＩＤや変数状態ＩＤに変換しているが、文字列の他、単純な数字に変換する方法でも良い。
【００７２】
図７は、引数や変数から引数状態ＩＤや変数状態ＩＤに変換する方法をより具体的に説明するため、「引数及び変数変換コード５１」の一例を示したものである。本例では、２つの引数と１つの変数を夫々、２つの引数状態ＩＤと１つの変数状態ＩＤに変換する処理となっている。行番号は説明の便宜上、「引数及び変数変換コード５１」に追記したものである。
【００７３】
第１行では、ソフトウェア部品４０（メソッド４２）で使用する整数型の変数として、整数型の変数「GlobalVar」を定義し、第２行で、引数として、整数型の引数「param1」と、実数型の引数「param２」の2つの引数を定義している。
【００７４】
また、第３行には、変換された２つの引数状態ＩＤと１つの変数状態ＩＤを格納する変数として、整数型の変数配列「dataＩＤ[3］」を定義している。
【００７５】
第４行から第９行が、第１の引数「param1」を引数状態ＩＤに変換し、「dataＩＤ[０］」に格納する処理を示している。変換に際しては、変換用データ５２に記憶されている閾値を参照する。本例では、引数「param1」が第１の閾値「３００」より小さい場合は、引数「param1」を数字「０」で表わされる引数状態ＩＤに変換した後、「dataＩＤ[０］」に格納する。また、引数「param1」が第１の閾値「３００」以上で第２の閾値「５００」より小さい場合は、引数「param1」を数字「１」で表わされる引数状態ＩＤに変換した後、「dataＩＤ[０］」に格納する。それ以外の場合（引数「param1」が第２の閾値「５００」以上の場合）は、引数「param1」を数字「２」で表わされる引数状態ＩＤに変換した後、「dataＩＤ[０］」に格納する。
【００７６】
第１１行から第１４行が、第２の引数「param２」を引数状態ＩＤに変換し、「dataＩＤ[１］」に格納する処理を示している。変換に際しては、同様に変換用データ５２に記憶されている閾値を参照する。本例では、引数「param２」が閾値「１．５」より小さい場合は、引数「param２」を数字「０」で表わされる引数状態ＩＤに変換した後、「dataＩＤ[１］に格納し、それ以外の場合は、引数「param２」を数字「１」で表わされる引数状態ＩＤに変換した後、「dataＩＤ[１］に格納している。
【００７７】
また、第１６行から第１９行が、変数「GlobalVar」を変数状態ＩＤに変換し、「dataＩＤ[２］」に格納する処理を示している。変換に際しては、変換用データ５２に記憶されている判定値を参照し、変数「GlobalVar」が判定値「１」に一致する場合は、変数「GlobalVar」を数字「０」で表される変数状態ＩＤに変換した後、「dataＩＤ[２］に格納している。
【００７８】
このように、引数及び変数変換コード５１では、ソフトウェア部品４０（メソッド４２）の誤用判定に必要と判断される特定の引数や変数まず選択し、選択した引数や変数を、変換用データ５２に予め記憶されている閾値や判定値を参照して、簡潔な数字や文字列で表わされる「状態ＩＤ」（引数状態ＩＤや変数状態ＩＤ）に分類している。
【００７９】
判定に用いられる閾値を、ソフトウェア部品４０（メソッド４２）が正しく利用されたときにとりうる範囲と、誤用されたときにとりうる範囲との境界を示す値とすることにより、変換された「状態ＩＤ」によって誤用の有無を容易に識別することができる。
【００８０】
同様に、判定に用いられる判定値をソフトウェア部品４０が誤用されたときに示す値とすることにより、変換された「状態ＩＤ」によって誤用の有無を容易に識別することができる。
【００８１】
また、引数や変数の中には、ポインタ等のように単純な数値で表現できない種類のものもある。この場合には、ポインタ等を一旦変換用データ５２を参照して「状態ＩＤ」に変換することで誤用の識別が容易となる。
【００８２】
さらに、「状態ＩＤ」は単純な整数型の数値（数字）や文字列で表現することができるため、部品利用端末２から部品管理サーバ３へ伝送するときに、実数型の数値やポインタ等を直接送る場合に比べると伝送容量が節約できる。
【００８３】
このようにして、図５のステップＳＴ４では、引数から引数状態ＩＤへ、また、変数から変数状態ＩＤへの変換が行われる。
【００８４】
次に、ステップＳＴ５では、発信コード５０に予め保有されているメソッドＩＤ（メソッド４２或いはソフトウェアモジュール４１を識別するための情報）と、ステップＳＴ３で生成された（変換された）引数状態ＩＤ及び変数状態ＩＤとを１つにまとめ、利用状況情報を作成する。
【００８５】
さらに、発信コード５０は、部品利用端末２が有するＯＳの機能等を利用して現在時刻を取得し、これを利用時刻情報として作成する（ステップＳＴ６）。
【００８６】
また、発信コード５０は、その内部に予め保有されている利用部品情報（ソフトウェア部品４０を識別する情報）と、上記の利用状況情報および利用時刻情報を送信モジュール６０に引き渡す（ステップＳＴ７）。
【００８７】
送信モジュール６０は、ＯＳの機能等を利用して、ＩＰアドレスやＭＡＣアドレス等を取得し、部品利用端末２を識別する利用機器情報を生成する（ステップＳＴ８）。
【００８８】
また、送信モジュール６０は、発信コード５０から受けた利用状況情報、利用部品情報、及び利用時刻情報と、自ら生成した利用機器情報とを１つにまとめて利用情報とし、この利用情報を、電気通信回線４を介して、部品管理サーバ３に送信する（ステップＳＴ９）。
【００８９】
利用情報を生成しかつ送信する発信コード５０は、管理部門の管理者側で予め作成され、ソフトウェア部品４０に組み込まれた形態で利用者に払い出しが行われる。送信モジュール６０も同様に管理者側で作成され、利用者に払い出される。従って、ソフトウェア部品４０の利用者は、特別の作業をすることなく、またソフトウェア部品４０の利用に際して特に意識することなく、ソフトウェア部品４０の利用情報は自動生成され、自動的に部品管理サーバ３に送信される。
【００９０】
利用情報が部品管理サーバ３に送信されると、利用情報は部品管理サーバ３の利用情報記録部３３に保存される。保存されたソフトウェア部品４０の利用情報は、必要に応じて部品管理サーバ３の表示部３２に表示され、ソフトウェア部品４０の管理者はその利用状況を詳細に分析、評価することができる。
【００９１】
本実施形態に係るソフトウェア部品４０、及びソフトウェア部品管理システム１によれば、ソフトウェア部品４０の動的な利用状況を管理者が遠隔集中監視することができる。
【００９２】
このため、ソフトウェア部品４０の利用者のスキルが比較的低く、誤った利用方法をした場合であっても遠隔地にて誤用を検出することができ、正しい利用方法をその利用者に対して的確に教育することができる。この結果、全体として教育コストを低減することができる。
【００９３】
例えば、ソフトウェア部品４０を利用した開発を一時的に外注業者に依頼するような場合であって教育コストをあまりかけたくないような場合には、特に有効である。また、技術ノウハウの流出を防止するため、ソフトウェア部品４０をブラックボックとして提供せざるを得ない場合（例えば、ソースコードの提供ではなく、バイナリコードとして提供する場合）においては特にソフトウェア部品４０の誤用が発生しやすいが、このような場合であっても誤用の検出が容易である。
【００９４】
また、本実施形態に係るソフトウェア部品４０、及びソフトウェア部品管理システム１によれば、ソフトウェア部品４０の多数の利用者が遠隔地で作業する場合であっても、電気通信回線４を介して利用状況を集中的に監視することが可能であるため、個別に遠隔地に出向く手間や、或いは個々の利用者から逐一利用状況を確認する手間が省け、ソフトウェア部品４０の利用を支援するための作業効率の大幅に向上する。
【００９５】
さらに、本実施形態に係るソフトウェア部品４０、及びソフトウェア部品管理システム１によれば、ソフトウェア部品４０の利用情報がほぼリアルタイムで管理者側に送られてくるため、ソフトウェア部品４０に不具合があった場合でもその不具合情報を迅速にかつ集中的に把握することができる。またソフトウェア部品４０の誤用に対する検査方法のノウハウも管理者側に集中させることができる。
【００９６】
このため、最新の不具合情報や新たに判明した誤用情報が管理者に蓄積され、不具合情報や誤用情報を熟知した管理者によって、迅速かつ的確な検査が可能となる。また、ソフトウェア部品４０の利用情報は、部品管理サーバ３の利用情報記録部３３に保存されるため、蓄積された過去の利用情報を容易に参照でき、より的確な検査が可能となる。
【００９７】
（３）ソフトウェア部品管理システム（第２の実施形態）
図８は、第２の実施形態に係るソフトウェア部品管理システム１ａのシステム構成例を示す図である。第１の実施形態（図１）との相違点は、部品管理サーバ３ａが、誤用パターンデータベース３５と比較判定部３６をさらに備えている点である。
【００９８】
図９は、第２の実施形態に係る部品管理サーバ３ａの処理例を示すフローチャートである。
【００９９】
部品利用端末２から送信されてきた利用情報（利用状況情報）は、逐次利用情報記録部３３に保存される（ステップＳＴ１１）。
【０１００】
第２の実施形態に係る部品管理サーバ３ａでは、ソフトウェア部品４０の誤用のパターンを予めデータベースとして保存しておき、この誤用パターンと利用情報記録部３３に保存されている利用情報（利用状況情報）とのマッチングを比較判定部３６で行う（ステップＳＴ１２）。
【０１０１】
誤用パターンと利用情報とが一致した場合（ステップＳＴ１３のＹｅｓ）には、ソフトウェア部品４０の利用において何らかの誤用が検出されたとして、ユーザ（ソフトウェア部品４０の管理者９）にその旨を、例えば表示部３２に表示して通知する。
【０１０２】
図１０は、誤用パターンデータベース３５に保存される誤用パターンの一例を示す表である。表全体で１つの誤用パターンが記述されており、表の縦方向には、ソフトウェア部品４０で実行されるメソッド４２のメソッドＩＤが時系列の順に記載されている。
【０１０３】
表の横方向には、各メソッドＩＤにおける引数状態ＩＤ、変数状態ＩＤ、最短間隔、及び最長間隔が記載されている。ここで、引数状態ＩＤ及び変数状態ＩＤは、ソフトウェア部品４０の利用において引数や変数の誤用があった場合に、所定の閾値や判定値によって分類され、変換されるべき数字や文字列に対応するものである。
【０１０４】
また、誤用判定上、無視してもよい引数や変数に対しては、所謂ワイルドカードとして「＊」を割り付けている。
【０１０５】
ソフトウェア部品４０の誤用を判断する上では、メソッド４２の実行順序や実行間隔も重要である。このうち、実行順序については、誤用パターンのメソッドＩＤの記述順序によって規定される。また、メソッド４２の呼出し間隔については、表の「最短間隔」と「最長間隔」によって規定される。例えば、メソッド「Ｍ１」の利用時刻情報と、次のメソッド「Ｍ２」の利用時刻情報との差（実行間隔）が最短間隔の「１００」ミリ秒よりも長かった場合は、何らかの誤用が生じたと判断する。一方、メソッドＩＤ「Ｍｘ」が、１つ前のメソッドの実行後、「最長間隔」の「２０００」ミリ秒を経過する前に実行された場合にも、何らかの誤用が発生したと判断する。
【０１０６】
このように、誤用パターンは、ソフトウェア部品４０で実行される各メソッド４２の実行順序、メソッド４２間の実行間隔、および各メソッド４２で用いられる引数や変数（実際にはこれらが変換用データ５２によって変換されたものと同じ引数状態ＩＤや変数状態ＩＤ）によって構成されている。この誤用パターンと利用情報とを比較する（マッチングを行う）ことでソフトウェア部品４０の誤用の有無を検出することができる。
【０１０７】
ソフトウェア部品４０の誤用のパターンが複数想定される場合には、対応する複数の誤用パターンを誤用パターンデータベースに保存させ、利用情報と複数の誤用パターンをそれぞれマッチングさせればよい。
【０１０８】
なお、特に図示はしないが、誤用パターンに替えて、正常な動作パターンをデータベースに保存する形態でもよい。この場合、部品利用端末２から送られてくる利用情報と正常パターンとが不一致の場合に、ソフトウェア部品４０の誤用があったと判定されることになる。
【０１０９】
第２の実施形態に係るソフトウェア部品管理システム１ａによれば、ソフトウェア部品４０の誤用が自動的に検出されるため、管理者の監視負担が低減されると共に、迅速な誤用検出が可能となる。
【０１１０】
なお、本発明は上記の実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
【図面の簡単な説明】
【０１１１】
【図１】本発明の第１の実施形態に係るソフトウェア部品管理システムのシステム構成例を示す図。
【図２】本発明の第１の実施形態に係るソフトウェア部品の構成例を示す図。
【図３】ソフトウェア部品から部品管理サーバに送信する利用情報の内容の一例を示す図。
【図４】利用情報の生成の流れの一例を示す説明図。
【図５】部品利用端末から部品管理サーバへ利用情報が送信されまでの処理の流れの一例を示すフローチャート。
【図６】引数および変数と、引数状態ＩＤ及び変数状態ＩＤとの関係を説明する図。
【図７】引数状態ＩＤ及び変数状態ＩＤを、引数及び変数変換コード及び変換用データを用いて生成する方法を具体例を用いて説明する図。
【図８】本発明の第２の実施形態に係るソフトウェア部品管理システムのシステム構成例を示す図。
【図９】第２の実施形態における部品管理サーバの動作例を示すフローチャート。
【図１０】誤用パターンの一例を示す図。
【符号の説明】
【０１１２】
１、１ａ  ソフトウェア部品管理システム
２  部品利用端末
３  部品管理サーバ
４  電気通信回線
１０  アプリケーションソフトウェア
２０  部品利用コード
３１  受信部
３２  表示部
３３  利用情報記録部
３４  入力部
３５  誤用パターンデータベース
３６  比較判定部
４０  ソフトウェア部品
４１  ソフトウェアモジュール
４２  メソッド（メソッドの実装コード）
４２ａ  フック手段
５０  発信コード
５１  引数及び変数変換コード
５２  変換用データ
６０  送信モジュール
【図１】
2008090358.tif 000003
【図２】
2008090358.tif 000004
【図３】
2008090358.tif 000005
【図４】
2008090358.tif 000006
【図５】
2008090358.tif 000007
【図６】
2008090358.tif 000008
【図７】
2008090358.tif 000009
【図８】
2008090358.tif 000010
【図９】
2008090358.tif 000011
【図１０】
2008090358.tif 000012