(57)【要約】【課題】ソフトウエアの開発効率を向上する。【解決手段】ソフトウエア管理装置１０は、複数種別のソフトウエアコンポーネント（以下、コンポーネント）をデータベース３０に管理し、コンポーネントの種別ごとのアクセス権を記憶する。ソフトウエア管理装置１０は、他の装置５０から処理要求（コンポーネント配信要求７００、コンポーネント登録要求８００）を受信すると、それに指定されている特定の種別のアクセス権に応じて、処理要求についての処理の実行可否を判定する。ソフトウエア管理装置１０は、コンポーネントの種別間のバージョンの対応をバージョン対応情報２２として記憶し、処理要求にソースコード以外の種別のコンポーネントが指定されている場合、指定されているソースコードのバージョンをバージョン対応情報２２と対照して処理対象のコンポーネントのバージョンを特定する。【選択図】図２
2014203352.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置を用いて構成されるソフトウエア管理装置であって、
複数種別のソフトウエアコンポーネントをデータベースに管理するソフトウエアコンポーネント管理部と、
前記ソフトウエアコンポーネントについて前記種別ごとに設定されたアクセス権を記憶するアクセス権記憶部と、
通信可能に接続する他の情報処理装置から送られてくる、前記ソフトウエアコンポーネントの特定の前記種別についての処理要求を受信する処理要求受信部と、
前記処理要求に指定されている前記特定の種別に設定されている前記アクセス権に応じて、前記処理要求が要求する処理の実行可否を判定するアクセス権検査部と
を備えるソフトウエア管理装置。
【請求項２】
請求項１に記載のソフトウエア管理装置であって、
前記ソフトウエアコンポーネントの種別間のバージョンの対応が夫々のソースコードのバージョンに対応づけて管理された情報であるバージョン対応情報を記憶するバージョン対応情報記憶部を備え、
前記処理要求には処理対象のソフトウエアコンポーネントのソースコードのバージョンが指定されており、
前記アクセス権検査部は、前記処理要求に前記処理対象のソフトウエアコンポーネントとしてソースコード以外の種別のソフトウエアコンポーネントが指定されている場合、前記処理要求に指定されている前記ソースコードのバージョンを前記バージョン対応情報と対照することにより、前記処理対象の前記ソフトウエアコンポーネントのバージョンを特定する、
ソフトウエア管理装置。
【請求項３】
請求項２に記載のソフトウエア管理装置であって、前記種別は、ソースコード、オブジェクトコード、及びスタブのうちの少なくともいずれかである、ソフトウエア管理装置。
【請求項４】
請求項１に記載のソフトウエア管理装置であって、
前記アクセス権は、前記ソフトウエアコンポーネントのユーザごとに設定されており、
前記アクセス権判定部は、前記処理要求の送信元のユーザの、前記処理要求に指定されている処理対象の前記ソフトウエアコンポーネントの前記種別について設定されている前記アクセス権に応じて、前記処理要求が要求する処理の実行可否を判定する、
ソフトウエア管理装置。
【請求項５】
請求項１乃至４のいずれか一項に記載のソフトウエア管理装置であって、
前記処理要求は、前記ソフトウエアコンポーネントの特定の前記種別についての配信要求であり、
前記アクセス権検査部は、前記配信要求に指定されている配信対象の前記ソフトウエアコンポーネントの前記種別に設定されている前記アクセス権に応じて、前記他の情報処理装置への前記ソフトウエアコンポーネントの配信可否を判定する、
ソフトウエア管理装置。
【請求項６】
請求項５に記載のソフトウエア管理装置であって、前記配信要求がオブジェクトコードの配信要求であり、かつ、前記データベースに前記ソースコードは存在するが前記オブジェクトコードは存在しない場合に、前記ソースコードに基づきオブジェクトコードを自動生成するオブジェクト生成部を備えるソフトウエア管理装置。
【請求項７】
請求項５又は６に記載のソフトウエア管理装置であって、前記アクセス権検査部により配信可と判定された前記配信対象のソフトウエアコンポーネントを前記他の情報処理装置に送信するコンポーネント管理部を備えるソフトウエア管理装置。
【請求項８】
請求項１乃至４のいずれか一項に記載のソフトウエア管理装置であって、
前記処理要求は、前記ソフトウエアコンポーネントの特定の前記種別についての前記データベースへの登録要求であり、
前記アクセス権検査部は、前記登録要求に指定されている登録対象の前記ソフトウエアコンポーネントの前記種別について設定されている前記アクセス権に応じて、前記データベースへの前記ソフトウエアコンポーネントの登録可否を判定する
ソフトウエア管理装置。
【請求項９】
請求項８に記載のソフトウエア管理装置であって、
前記種別は、ソースコード、オブジェクトコード、及びスタブのうちの少なくともいずれかであり、
前記ソースコード、前記オブジェクトコード、及び前記スタブのうちの少なくとも２つのバージョンの対応であるバージョン対応情報を記憶するバージョン対応情報記憶部を備え、
前記バージョン対応情報記憶部は、前記ソースコードのバージョンと前記オブジェクトコードのバージョン、又は、前記ソースコードのバージョンと前記スタブのバージョンの対応を記憶し、
前記登録要求には前記ソースコードのバージョンが指定されており、
前記アクセス権検査部は、前記登録要求に登録対象の前記ソフトウエアコンポーネントとして前記オブジェクトコード又は前記スタブのいずれかが指定されている場合に、前記登録要求に指定されている前記ソースコードのバージョンが前記バージョン対応情報に存在するか否かを判定し、存在しない場合は前記ソフトウエアコンポーネントの前記データベースへの登録を不可と判定する、
ソフトウエア管理装置。
【請求項１０】
請求項８に記載のソフトウエア管理装置であって、
前記種別は、ソースコード、オブジェクトコード、及びスタブのうちの少なくともいずれかであり、
前記ソースコード、前記オブジェクトコード、及び前記スタブのうちの少なくとも２つのバージョンの対応であるバージョン対応情報を記憶するバージョン対応情報記憶部を備え、
前記バージョン対応情報記憶部は、前記ソースコードのバージョンと前記オブジェクトコードのバージョン、又は、前記ソースコードのバージョンと前記スタブのバージョンの対応を記憶し、
前記登録要求に前記ソースコードのバージョンが指定されており、
前記登録要求に前記登録対象の前記ソフトウエアコンポーネントとして前記オブジェクトコード又は前記スタブが指定されている場合、前記バージョン対応情報に、前記登録要求に指定されている前記ソースコードのバージョンに対応づけて前記登録対象の前記ソフトウエアコンポーネントのバージョンを登録する、コンポーネント管理部を備える、
ソフトウエア管理装置。
【請求項１１】
請求項８に記載のソフトウエア管理装置であって、
前記アクセス権記憶部は、前記ソフトウエアコンポーネントのユーザごとに設定された、前記データベースへの前記ソフトウエアコンポーネントの新規登録についての権限を記憶し、
前記登録対象の前記ソフトウエアコンポーネントの種別がソースコードであり、当該ソースコードが前記データベースに登録されていない場合に、前記登録要求の送信元のユーザの前記新規登録の権限の有無を判定し、当該ユーザに前記権限が無い場合は前記ソースコードの前記データベースへの登録を不可と判定する、
ソフトウエア管理装置。
【請求項１２】
請求項８に記載のソフトウエア管理装置であって、前記ソフトウエアコンポーネントを新規に前記データベースに登録する際、前記ソフトウエアコンポーネントに付随するライセンス情報と共通のライセンス情報が付随する既登録のソフトウエアコンポーネントが前記データベースに存在するか否かを判定し、存在する場合は、新規に登録しようとする前記ソフトウエアコンポーネントの前記アクセス権として、前記既登録のソフトウエアコンポーネントに設定されている前記アクセス権と同じアクセス権を前記アクセス権記憶部に記憶させる、コンポーネント管理部を備える、ソフトウエア管理装置。
【請求項１３】
請求項１２に記載のソフトウエア管理装置であって、前記コンポーネント管理部は、前記ソフトウエアコンポーネントに付随するライセンス情報と共通のライセンス情報が付随する既登録のソフトウエアコンポーネントが前記データベースに存在しない場合、新規に登録しようとする前記ソフトウエアコンポーネントの前記アクセス権として予め記憶しているデフォルト値を設定する、ソフトウエア管理装置。
【請求項１４】
請求項８に記載のソフトウエア管理装置であって、前記アクセス権検査部により登録可と判定された前記登録対象のソフトウエアコンポーネントを前記データベースに登録するコンポーネント管理部を備える、ソフトウエア管理装置。
【請求項１５】
ソフトウエア管理方法であって、
情報処理装置を用いて構成されるソフトウエア管理装置が、
複数種別のソフトウエアコンポーネントをデータベースに管理し、
前記ソフトウエアコンポーネントについて前記種別ごとに設定されたアクセス権を記憶し、  通信可能に接続する他の情報処理装置から送られてくる、前記ソフトウエアコンポーネントの特定の前記種別についての処理要求を受信し、
前記処理要求に指定されている前記特定の種別に設定されている前記アクセス権に応じて、前記処理要求が要求する処理の実行可否を判定し、
前記ソフトウエアコンポーネントの種別間のバージョンの対応が夫々のソースコードのバージョンに対応づけて管理された情報であるバージョン対応情報を記憶し、
前記処理要求には処理対象のソフトウエアコンポーネントのソースコードのバージョンが指定され、
前記処理要求に前記処理対象のソフトウエアコンポーネントとしてソースコード以外の種別のソフトウエアコンポーネントが指定されている場合、前記処理要求に指定されている前記ソースコードのバージョンを前記バージョン対応情報と対照することにより、前記処理対象の前記ソフトウエアコンポーネントのバージョンを特定する、
ソフトウエア管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウエア管理装置、及びソフトウエア管理方法に関する。
【背景技術】
【０００２】
大規模なソフトウエアの開発に際しては、ソースコードのバージョン（改変履歴）を正確に管理することが重要である。ソースコードのバージョン管理に関し、例えば非特許文献１には、複数の開発者が並行してソースコードの修正や追加を行う際のバージョン管理を支援するための分散型のバージョン管理システムについて開示されている。このバージョン管理システムでは、各開発者が行った変更を夫々に付与した識別子とともに保存するので、ソースコードをいつでも変更前の状態に戻すことができる。またこのシステムでは、複数の開発者が同時に同じソースコードに対して変更を行った場合でも、更新順序を考慮しつつ個々の変更を自動的にマージすることができる。
【０００３】
昨今、ソフトウエアの開発の現場では、一般に公開されているソースコードを利用する機会が増えており、これに伴い、例えば、リバースエンジニアリングの許可を要求されたり、ソースコードの開示義務が発生するなど、ソフトウエアのライセンスに起因する様々な問題が生じている。
【０００４】
ソフトウエア開発におけるライセンスの管理に関し、例えば、特許文献１には、プログラム開発を行う組織において、ユーザ（開発者）が勝手に外部から入手したライセンス付きのプログラムを利用してシステム開発を行うことによりライセンスチェックが抜けてしまう、ユーザがプログラムを勝手に改変してしまうことにより後でソースを公開する必要が生じてライセンスに違反してしまうといった問題を解決すべく、プログラムのビルド前にライセンスを持つプログラムのライセンスをチェックし監視することが記載されている。
【０００５】
また特許文献２には、ビルド時にソースコードのライセンスの検査を行うことにより開発工数が増加してしまう問題を解決すべく、作成段階のソースコードについて随時ライセンスの検査を行うとともに、コンポーネントを登録した際においてもライセンスの検査を行い、検査結果に問題がある場合は作業者に通知することが記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−１９１８８９号公報
【特許文献２】特開２０１０−２１７９５０号公報
【非特許文献】
【０００７】
【非特許文献１】Version Control With Git, Jon Loelinger, Oreilly & Associates Inc, ISBN-13: 978-1449316389
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ソフトウエアの開発が複数の開発者の共同によって行われる場合、開発効率の向上や品質確保の観点から、各開発者の手元に全てのソフトウエアの構成要素が常時揃っていることが望ましい。また開発において現在生じている問題を開発者間でリアルタイムに共有することができるように、各開発者に如何にして最新のコンポーネント（ソースコード、オブジェクト、後述するスタブ等。）を配布するか、各開発者の手元にあるコンポーネントのバージョンをいかにして一致させるかといったことが重要な課題になる。
【０００９】
コンポーネントの管理に関して、例えば、非特許文献１に開示されているバージョン管理システムの場合はソースコードのバージョンを管理するツールを備えている。しかし例えばソフトウエア開発がオフショアで行われる場合、ライセンスや契約等の関係でオフショア先に対するソースコードの開示が制限されることがあり、オフショア先では同バージョン管理システムを利用することができない。
【００１０】
またライセンスや契約の問題により委託先にソースコードを渡すことができない問題の回避策として、委託先にオブジェクトコードを提供することが考えられる。しかし既存のバージョン管理システムはオブジェクトコードのバージョン管理までは対応しておらず、オブジェクトコードのバージョンはソースコードと独立して管理する必要があり、オブジェクトコードとソースコードのバージョンの対応等、コンポーネントの管理形態が煩雑になってしまう。
【００１１】
また開発がオフショアで行われる場合、輸出管理の制約によってソースコードやオブジェクトコードをオフショア先に提供することができないことがある。これについては、例えばスタブ（Stub）（他のモジュールに対してダミーの出力（ダミーコード）を返すモジュール（もしくは当該モジュールを実現するコード））を提供することが考えられるが、スタブをソースコード（バージョン管理システム）と独立して管理する必要があり、オブジェクトコードの場合と同様、コンポーネントの管理形態が煩雑になり、ソフトウエアの開発効率を低下させる要因となる。
【００１２】
本発明はこのような課題に鑑みてなされたものであり、ソフトウエアの開発効率を向上することが可能な、ソフトウエア管理装置、及びソフトウエア管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記の課題を解決するための本発明のうちの一つは、情報処理装置を用いて構成されるソフトウエア管理装置であって、複数種別のソフトウエアコンポーネントをデータベースに管理するソフトウエアコンポーネント管理部と、前記ソフトウエアコンポーネントについて前記種別ごとに設定されたアクセス権を記憶するアクセス権記憶部と、通信可能に接続する他の情報処理装置から送られてくる、前記ソフトウエアコンポーネントの特定の前記種別についての処理要求を受信する処理要求受信部と、前記処理要求に指定されている前記特定の種別に設定されている前記アクセス権に応じて、前記処理要求が要求する処理の実行可否を判定するアクセス権検査部とを備える。
【発明の効果】
【００１４】
本発明によれば、ソフトウエアの開発効率を向上することができる。
【００１５】
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１６】
【図１】ソフトウエア管理装置１０の実現に用いる情報処理装置の一例である。
【図２】ソフトウエア管理装置１０が備える主な機能並びに主なデータを示す図である。
【図３】ソフトウエア管理装置１０の機能の実現形態を示す図である。
【図４】ソフトウエア管理装置１０の機能の実現形態を示す図である。
【図５】ソフトウエア管理装置１０の機能の実現形態を示す図である。
【図６】ソフトウエア管理装置１０の機能の実現形態を示す図である。
【図７】コンポーネント配信要求７００の一例である。
【図８】コンポーネント登録要求８００の一例である。
【図９】コンポーネント登録要求８００の一例である。
【図１０】アクセス権情報２１の一例である。
【図１１】バージョン対応情報２２の一例である。
【図１２】配信処理Ｓ１２００を説明するフローチャートである。
【図１３】配信処理Ｓ１２００（図１２の続き）を説明するフローチャートである
【図１４】登録処理Ｓ１４００を説明するフローチャートである。
【図１５】登録処理Ｓ１４００（図１４の続き）を説明するフローチャートである。
【図１６】登録処理Ｓ１４００（図１５の続き）を説明するフローチャートである。
【図１７】アクセス権検査処理Ｓ１７００を説明するフローチャートである。
【発明を実施するための形態】
【００１７】
以下、実施例について図面を用いて説明する。
【００１８】
以下に説明するソフトウエア管理装置１０は、複数の開発者（以下、ユーザとも称する。）の共同によって行われるソフトウエア開発に際して利用される。ソフトウエア管理装置１０は、ソースコード（Source Code）間のバージョン管理に加え、ソースコードとオブジェクトコード（Object Code）との間のバージョン管理、ソースコードとスタブ（Stub）間のバージョン管理を行う。尚、スタブとは、他のモジュールに対してダミーの出力（ダミーコード）を返すモジュール（もしくは当該モジュールを実現するコード）のことである。スタブは、例えば、複数モジュールからなる大規模なソフトウエアの開発に際し、結合テストの実施前にモジュール単位での正当性を検査することを目的として、例えば、呼び出し先の代替モジュールとして用いられる。
【００１９】
ソフトウエア管理装置１０は、ソフトウエアコンポーネントについて、その種別（ソースコード（Source Code）、オブジェクトコード（Object Code）、スタブ（Stub）(後述）等）ごとに設定されたアクセス権を管理する。ソフトウエア管理装置１０は、例えば、開発者側の情報処理装置（以下、他の装置とも称する。）から特定の種別のソフトウエアコンポーネントについての処理要求（例えば、配信要求、登録要求）を受信すると、その種別について設定されているアクセス権に応じて処理要求が要求している処理の実行可否を判定する。
【００２０】
またソフトウエア管理装置１０は、ソフトウエアコンポーネントの種別間のバージョンの対応がソースコードのバージョンに対応づけて管理された情報であるバージョン対応情報を管理する。ソフトウエア管理装置１０は、他の装置から受信した処理要求に処理対象のソフトウエアコンポーネントとしてソースコード以外の種別のソフトウエアコンポーネントが指定されている場合、その処理要求に指定されているソースコードのバージョンをバージョン対応情報と対照することにより、処理対象になっている種別のソフトウエアコンポーネントのバージョンを特定する。
【００２１】
尚、以下の説明において、「ソフトウエアコンポーネント」のことを「コンポーネント」とも称し、また「ソースコード」のことを「ソース」とも称し、また「オブジェクトコード」のことを「オブジェクト」とも称する。
【００２２】
図１はソフトウエア管理装置１０を実現するためのハードウエアとして利用可能な情報処理装置１００（コンピュータの一例である。同図に示すように、情報処理装置１００は、中央処理装置１０１(ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro-Processing Unit）等）、主記憶装置１０２（ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＮＶＲＡＭ（Non Volatile Random Access Memory））、外部記憶装置１０３（ＨＤＤ（Hard Disk Drive）、半導体記憶装置（ＳＳＤ（Solid State Drive））、テープドライブ等）、及び通信装置１０４（ＮＩＣ（Network Interface Card）、ＨＢＡ（Host Bus Adapter）、及び有線又は無線のモジュール（ＬＡＮ、Ｉｎｆｉｎｉｂａｎｄ、Ｍｙｒｉｎｅｔ（登録商標）、ＩＥＥＥ１３９４等のモジュール））等を備える。
【００２３】
このうち外部記憶装置１０３は、情報処理装置１００と通信可能に接続する外部の装置（ブロックストレージ、ＮＡＳ（Network Attached Storage）、クラウド等）であってもよい。またソフトウエア管理装置１０は、単体の情報処理装置１００で構成される場合だけでなく、通信可能に接続された複数の情報処理装置１００によって構成されていてもよい。また情報処理装置１００は、仮想化システム（仮想化ソフトウエア）によって実現される仮想装置（仮想マシン）であってもよい。
【００２４】
同図に示すように、主記憶装置１０２（又は外部記憶装置１０３）には、情報処理装置１００にオペレーティングシステムの機能を実現するためのプログラム１１１(デバイスドライバ等のオペレーティングシステムに付随するプログラムを含む。）、情報処理装置１００にアプリケーションの機能を実現するためのプログラム１１２などが格納されている。これらのプログラムは、中央処理装置１０１によって随時読み出されて実行される。
【００２５】
図２にソフトウエア管理装置１０が備える主な機能並びに主なデータを示している。同図に示すように、ソフトウエア管理装置１０は、配信処理部１５、オブジェクト生成部１６、及びアクセス権設定部１７を備える。また同図に示すように、配信処理部１５は、アクセス権検査部１５１及びコンポーネント管理部１５２を含む。
【００２６】
ソフトウエア管理装置１０は、他の装置５０へのサービスの提供に用いるデータ（情報）として、アクセス権情報２１、バージョン対応情報２２、及びコンポーネント２３（コンポーネント２３に対応して、ソース２３１、オブジェクト２３２、及びスタブ２３３等の種別がある。）を管理（記憶）する。これらのデータは、ＤＢＭＳ（DataBase Management System）（以下、データベース３０と称する。）によって管理されている。これらのデータの実体は、ソフトウエア管理装置１０を実現している情報処理装置１００と同一の装置に記憶されていてもよいし、ソフトウエア管理装置１０を実現している情報処理装置１００と通信可能に接続された他の装置に記憶されていてもよい。
【００２７】
配信処理部１５は、ソフトウエア管理装置１０に通信ネットワーク５（ＬＡＮ、ＷＡＮ、インターネット等）を介して通信可能に接続している他の装置５０（開発者側の情報処理装置等）から送られてくる処理要求（例えば、コンポーネント２３の配信要求（以下、コンポーネント配信要求７００とも称する。）や登録要求（以下、コンポーネント登録要求８００とも称する。））を受信し、受信した処理要求に応じた処理を実行する。
【００２８】
具体的には、配信処理部１５のアクセス権検査部１５１は、他の装置５０から処理要求を受信すると、当該処理要求に指定されている処理対象（コンポーネントの特定の種別）に設定されているアクセス権に応じて、当該処理要求が要求する処理の実行可否を判定する。また配信処理部１５のコンポーネント管理部１５２は、アクセス権検査部１５１によって実行可と判定された処理要求について、当該処理要求が要求する処理（当該処理要求に指定されているコンポーネントの他の装置５０への配信、当該処理要求に指定されているコンポーネントのデータベース３０への登録等）を実行する。
【００２９】
オブジェクト生成部１６は、ソースに基づきオブジェクトを生成する。例えばソフトウエア管理装置１０が他の装置５０からオブジェクトの配信要求を受信した際、対応するソースはデータベース３０に登録されているがオブジェクトが登録されていない場合、オブジェクト生成部１６は、ソースについてビルドを実行してオブジェクトを自動生成する。
【００３０】
アクセス権設定部１７は、アクセス権情報２１の設定に関する処理を行う。アクセス権設定部１７は、例えば、他の装置５０から受け付けた設定要求に応じてアクセス権情報２１を設定する。またアクセス権設定部１７は、新規にコンポーネント（ソース）をデータベース３０に登録する際、当該コンポーネントの種別ごとのアクセス権を設定する。
【００３１】
尚、こうしたソフトウエア管理装置１０の機能は多様な形態で実現することが可能である。図３はその一例である。この例では、他の処理に比べて比較的処理負荷の高いオブジェクト生成部１６を配信処理部１５が配置されている情報処理装置１００（第１の情報処理装置１００）とは異なる情報処理装置１００（第２の情報処理装置１００）に配置している。この例の場合、オブジェクトの生成に際し、第１の情報処理装置１００から第２の情報処理装置１００にオブジェクトの生成要求とソースが送信され、第２の情報処理装置１００が上記ソースに基づきビルドを実行してオブジェクトを生成し、第２の情報処理装置１００は生成したオブジェクトを第１の情報処理装置１００に送信する。
【００３２】
また他の装置５０の資源に余裕があるときなどは、例えば、図４に示すように、他の装置５０を第２の情報処理装置１００としてもよい。この形態の場合は他の装置５０の資源を有効に利用することができる。
【００３３】
また例えば図５に示すように、複数の第２の情報処理装置１００（ユーザ装置を含む）にオブジェクト生成部１６を配置して負荷分散を図ってもよい。またユーザ装置側に資源の余裕があるときは、例えば図６に示すように配信処理部１５及びオブジェクト生成部１６の双方をユーザ装置に配置するようにしてもよい。
【００３４】
図７は他の装置５０からソフトウエア管理装置１０に送信されるコンポーネント配信要求７００の一例である。同図に示すように、コンポーネント配信要求７００には、ユーザＩＤ７１１、コンポーネント種別７１２、ソースバージョンＩＤ７１３、及びコンポーネント種別７１４などの情報が含まれる。
【００３５】
このうちユーザＩＤ７１１には、当該コンポーネント配信要求７００の送信者を特定する情報（例えば、開発者やユーザ装置を一意に識別できる値（例えば、ユーザＩＤ、ユーザ装置のＩＤ、ユーザ装置のネットワークアドレス、ＳＳＨ−ＲＳＡ公開鍵等）が設定される。この例では、ユーザＩＤ７１１として、「AndjaENlkDaDNeA89e8D+KE=ema」が設定されている。
【００３６】
コンポーネントＩＤ７１２には、当該コンポーネント配信要求７００の配信対象であるコンポーネントの識別子（例えば、コンポーネントを一意に識別できる値（コンポーネントの名称や文字列等））が設定される。この例では、コンポーネントＩＤ７１２として、「コンポーネントＡ」が設定されている。
【００３７】
ソースバージョンＩＤ７１３には、当該コンポーネント配信要求７００の配信対象であるコンポーネントのソース（配信対象のコンポーネントがソース以外の種別である場合は、そのコンポーネントに対応するソース）のバージョンを特定する情報が設定される。この例では、ソースバージョンＩＤ７１３として、「abcdefg」が設定されている。
【００３８】
コンポーネント種別７１４には、当該コンポーネント配信要求７００の配信対象であるコンポーネントの種別を特定する情報（「ソース」、「オブジェクト」、「スタブ」等）が設定される。この例では、コンポーネント種別７１４として、「ソース」が設定されている。即ち当該コンポーネント配信要求７００はソースの配信を要求するものである。
【００３９】
図８及び図９は、いずれも他の装置５０からソフトウエア管理装置１０に送信されるコンポーネント登録要求８００の一例である。コンポーネント登録要求８００には、ユーザＩＤ８１１、コンポーネントＩＤ８１２、コンポーネント種別８１３、ソースバージョンＩＤ８１４、及び登録内容８１５等の情報が含まれる。
【００４０】
ユーザＩＤ８１１には、当該コンポーネント登録要求８００の送信者を特定する情報（例えば、開発者やユーザ装置を一意に識別できる値（例えば、ユーザＩＤ、ユーザ装置のＩＤ、ユーザ装置のネットワークアドレス、ＳＳＨ−ＲＳＡ公開鍵等）が設定される。図８及び図９の例ではいずれもユーザＩＤ８１１として、「AndjaENlkDaDNeA89e8D+KE=ema」が設定されている。
【００４１】
コンポーネントＩＤ８１２には、当該コンポーネント登録要求８００の登録対象であるコンポーネントの識別子（例えば、コンポーネントを一意に識別できる値（コンポーネントの名称や文字列等））が設定される。図８及び図９の例ではコンポーネントＩＤ８１２として、「コンポーネントＡ」が設定されている。
【００４２】
コンポーネント種別８１３には、当該コンポーネント登録要求８００の登録対象であるコンポーネントの種別を特定する情報（「ソース」、「オブジェクト」、「スタブ」等）が設定される。図８の例では、コンポーネント種別８１３として、「ソース」が設定されている。即ちこのコンポーネント登録要求８００はソースの登録を要求するものである。また図９の例では、コンポーネント種別８１３として、「スタブ」が設定されている。即ちこのコンポーネント登録要求８００はスタブの登録を要求するものである。
【００４３】
ソースバージョンＩＤ８１４には、当該コンポーネント登録要求８００の配信対象がソース以外である場合に配信対象であるコンポーネント（ソース以外の種別のコンポーネント）に対応するソースのバージョンが設定される。図８の例では、配信対象がソースであるためソースバージョンＩＤ８１４に何も設定されていない（「＜ＮＵＬＬ＞」が設定されている）。一方、図９の例では、配信対象がスタブであるためソースバージョンＩＤ８１４に配信対象のスタブに対応するソースのバージョンである、「SrcveRsioN」が設定されている。
【００４４】
登録内容８１５には、当該コンポーネント登録要求８００の登録対象の実体が設定される。尚、登録対象が既にデータベース３０に登録されているときは、既存のコンポーネントの実体と新たに登録しようとするコンポーネントの実体との更新差分が設定される。更新差分としては、例えば、ＵＮＩＸ(登録商標）の「ｄｉｆｆ」コマンドを実行することにより出力される情報を用いることができる。図８の例では、登録内容８１５に、更新差分である「void new_function(void){…}  …」が設定されている。また図９の例では、登録内容８１５に、更新差分である「int stub_function(int input) {return 1;}  …」が設定されている。
【００４５】
図１０はソフトウエア管理装置１０が管理するアクセス権情報２１の一例である。同図に示すように、アクセス権情報２１は、ユーザＩＤ管理テーブル１０１０、並びにユーザごとに設けられた一つ以上のアクセス権管理テーブル１０２０を含む。
【００４６】
このうちユーザＩＤ管理テーブル１０１０には、ユーザＩＤ１０１１とユーザ名１０１２との対応が管理されている。ユーザＩＤ管理テーブル１０１０は、アクセス権検査部１５１が、処理要求に含まれているユーザＩＤ（ユーザＩＤ７１１，ユーザＩＤ８１１）に対応するアクセス権管理テーブル１０２０を特定する際に参照する。
【００４７】
アクセス権管理テーブル１０２０はユーザごとに設けられる。同図に示すように、アクセス権管理テーブル１０２０には、そのユーザの管理者権限１０２１、並びにそのユーザについて設定されたコンポーネントの種別ごとのアクセス権１０２２が登録される。尚、上記管理者権限１０２１（「有」又は「無」）は、ソースのデータベース３０への新規登録を許可するか否を判定する際に参照される。本実施例では、ソースのデータベース３０への新規登録は、管理者権限１０２１を有するユーザ（管理者権限１０２１に「有」が設定されているユーザ）にのみ許可されるものとする。
【００４８】
同図における「Ｒ」や「Ｗ」の表記は、コンポーネントの種別ごとに設定されるアクセス権である。「Ｒ」が設定されている場合、そのユーザがそのコンポーネントの種別について読み込み（配信）権限を有することを意味する。「Ｗ」が設定されている場合、そのユーザがそのコンポーネントの種別について書き込み（登録）権限を有することを意味する。「Ｒ／Ｗ」が設定されている場合、そのユーザがそのコンポーネントについて読み込み権限及び書き込み権限の双方を有することを意味する。尚、「不可」は、そのユーザがコンポーネントの種別について読み込み権限及び書き込み権限のいずれも有していない場合に設定される。
【００４９】
同図の例では、ユーザＡについては、「コンポーネントＡ」、「コンポーネントＢ」、「コンポーネントＣ」の夫々の「ソース」、「オブジェクト」、「スタブ」の全てに対して読み込み権限及び書き込み権限の双方が設定されている。尚、このようなアクセス権が設定されるユーザＡは、例えば、ソフトウエアの開発を外部組織に委託している、委託元やオフショア元の開発者などである。
【００５０】
またユーザＢについては、「コンポーネントＡ」については「ソース」、「オブジェクト」、「スタブ」のいずれに対しても読み込み権限及び書き込み権限の双方が設定されている。また「コンポーネントＢ」については、「オブジェクト」並びに「スタブ」については読み込み権限及び書き込み権限が設定されているが、「ソース」については読み込み権限及び書き込み権限のいずれも設定されていない。また「コンポーネントＣ」については、「スタブ」については読み込み権限及び書き込み権限の双方が設定されているが、「ソース」及び「オブジェクト」については読み込み権限及び書き込み権限のいずれも設定されていない。尚、このようなアクセス権が設定されるユーザＢは、例えば、ソースコードの開示が制限されているソフトウエア開発の委託先の開発者、輸出管理の制約によりソースやオブジェクトを提供することができないソフトウエア開発のオフショア先の開発者などである。
【００５１】
図１１は、ソフトウエア管理装置１０が管理するバージョン対応情報２２の一例である。バージョン対応情報２２には、データベース３０に登録されているコンポーネント２３の種別間でのバージョンの対応が管理されている。コンポーネント管理部１５２は、バージョン対応情報２２を参照することにより、あるバージョンのソースに対応するオブジェクトやスタブがデータベース３０に存在するか否か（既にデータベース３０に登録されているか否か）、あるバージョンのソースに対応するオブジェクトのバージョンが何であるか、あるバージョンのソースに対応するスタブのバージョンが何であるかといった情報を取得することができる。
【００５２】
同図に示すように、バージョン対応情報２２は、コンポーネント２３ごとに設けられた一つ以上のバージョン対応テーブル１１１０を含む。各バージョン対応テーブル１１１０には、そのバージョン対応テーブル１１１０の管理対象のコンポーネント（以下、当該コンポーネントとも称する。）のソースのバージョンを特定する情報であるソースバージョンＩＤ１１１１、当該コンポーネントのオブジェクトのバージョンを特定する情報であるオブジェクトバージョンＩＤ１１１２、及び当該コンポーネントのスタブのバージョンを特定する情報であるスタブバージョンＩＤ１１１３の対応が登録されている。これらのバージョンＩＤとしては、例えば、非特許文献１に開示されているバージョン管理システムがコンポーネントのバージョン間の変更差分に対して付与するコミットＩＤ（ＳＨＡ１ハッシュ値）を利用することができる。
【００５３】
あるコンポーネントのあるバージョンのソースについて、これに対応するオブジェクトもしくはスタブが存在しない場合、当該コンポーネントの当該バージョンに対応するオブジェクトバージョンＩＤ１１１２又は当該バージョンに対応するスタブバージョンＩＤ１１１３には、オブジェクトもしくはスタブが未登録であることを示す値（例えば「＜ＮＵＬＬ＞」）が設定される。
【００５４】
あるコンポーネントについて新しいバージョンのソースがデータベース３０に登録されると、当該コンポーネントのバージョン対応テーブル１１１０に新たなレコードが追加される。即ち新たなソースのデータベース３０の登録は、新たにコンポーネントを登録することを意味している。
【００５５】
この例では、「コンポーネントＡ」のソースバージョンＩＤ１１１１が「abcdefg」のソースのバージョンについてはオブジェクトが生成されておらず、対応するオブジェクトバージョンＩＤ１１１２に「＜ＮＵＬＬ＞」が設定されている。またコンポーネントＢのソースバージョンＩＤ１１１１１が「muuino」のソースのバージョンについてはスタブが生成されていないため、そのスタブバージョンＩＤ１１１３に「＜ＮＵＬＬ＞」が設定されている。
【００５６】
続いて、以上の構成からなるソフトウエア管理装置１０によって行われる処理について、図面とともに説明する。
【００５７】
図１２及び図１３（図１３は図１２の続き）は、ソフトウエア管理装置１０が他の装置５０からコンポーネント配信要求７００を受信した際にソフトウエア管理装置１０において行われる処理（以下、配信処理Ｓ１２００と称する。）を説明するフローチャートである。以下、これらの図とともに配信処理Ｓ１２００について説明する。  
【００５８】
図１２に示すように、ソフトウエア管理装置１０が、開発者の端末等の他の装置５０（以下、要求元とも称する。）からユーザの操作入力などに応じて送信されたコンポーネント配信要求７００（以下、当該配信要求とも称する。）を受信すると（Ｓ１２１１，Ｓ１２１２）、まずアクセス権検査部１５１が、当該配信要求について、当該配信要求に指定されているコンポーネントに対するアクセス権の検査を行う（Ｓ１２１３）（以下、この処理のことをアクセス権検査処理Ｓ１７００とも称する。）。尚、この検査は、当該配信要求に設定されているコンポーネントＩＤ７１２及びコンポーネント種別７１４を、当該配信要求のユーザＩＤ７１１で特定されるユーザのアクセス権管理テーブル１０２０と照合することにより行われる。アクセス権検査処理Ｓ１７００の詳細については後述する。
【００５９】
上記検査においてアクセス権が無いと判定すると（Ｓ１２１４：Ｎ）、アクセス権検査部１５１は、要求元にエラー通知（例えば、アクセス権が無く、配信に失敗した旨の通知)を送信する（Ｓ１２１５，Ｓ１２１６）。
【００６０】
一方、アクセス権検査部１５１が上記検査によりアクセス権が有ると判定すると（Ｓ１２１４：Ｙ）、コンポーネント管理部１５２が、当該配信要求に指定されている配信対象のコンポーネントがソースであるか否か、即ち当該配信要求のコンポーネント種別７１４に「ソース」が設定されているか否かを判定する。そして配信対象がソースであると判定すると（Ｓ１２２１：Ｙ）、コンポーネント管理部１５２は、当該配信要求に指定されているバージョンのソース、即ち当該配信要求のソースバージョンＩＤ７１３に対応するソースをデータベース３０から取得し（Ｓ１２２２）、取得したソースを他の装置５０に送信（配信）する（Ｓ１２２３、Ｓ１２２４）。
【００６１】
一方、配信対象がソースでないと判定すると（Ｓ１２２１：Ｎ）、コンポーネント管理部１５２は、配信対象がスタブであるか否か、即ち当該配信要求のコンポーネント種別７１４に「スタブ」が設定されているか否かを判定する。コンポーネント管理部１５２が配信対象がスタブでないと判定した場合（Ｓ１２３１：Ｎ）、処理は図１３のＳ１２４１に進む。
【００６２】
配信対象がスタブであると判定すると（Ｓ１２３１：Ｙ）、コンポーネント管理部１５２は、当該配信要求のコンポーネントＩＤ７１２で特定されるコンポーネントのバージョン対応テーブル１１１０（以下、該当のバージョン対応テーブル１１１０とも称する。）を参照し、配信対象のスタブがデータベース３０に登録されているか否かを確認する（Ｓ１２３２）。配信対象のスタブがデータベース３０に登録されていないと判定すると（Ｓ１２３２：Ｎ）、コンポーネント管理部１５２は、要求元にエラー通知（例えば、スタブが存在せず、配信に失敗した旨の通知)を送信する（Ｓ１２３３，Ｓ１２３４）。
【００６３】
一方、スタブがデータベース３０に登録されていると判定すると（Ｓ１２３２：Ｙ）、コンポーネント管理部１５２は、該当のバージョン対応テーブル１１１０から、当該配信要求のソースバージョンＩＤ７１３に対応するスタブバージョンＩＤを特定し、特定したスタブバージョンＩＤのスタブをデータベース３０から取得し（Ｓ１２３５）、取得したスタブを要求元に送信する（Ｓ１２３６、Ｓ１２３７）。
【００６４】
図１３のＳ１２４１では、コンポーネント管理部１５２が、配信対象がオブジェクトであるか否か、即ち当該配信要求のコンポーネント種別７１４に「オブジェクト」が設定されているか否かを判定する。配信対象はオブジェクトでないと判定すると（Ｓ１２４１：Ｎ）、コンポーネント管理部１５２は、要求元にエラー通知（例えば、配信対象が適切でない（管理対象でない）ため配信することができない旨の通知)を送信する（Ｓ１２４２，Ｓ１２４３）。
【００６５】
一方、配信対象はオブジェクトであると判定すると（Ｓ１２４１：Ｙ）、コンポーネント管理部１５２は、該当のバージョン対応テーブル１１１０を参照し、配信対象のオブジェクトがデータベース３０に登録されているか否かを判定する（Ｓ１２４４）。そして配信対象のオブジェクトがデータベース３０に登録されていると判定すると（Ｓ１２４４：Ｙ）、コンポーネント管理部１５２は、該当のバージョン対応テーブル１１１０から、当該配信要求のソースバージョンＩＤ７１３に対応するオブジェクトバージョンＩＤを特定し、特定したオブジェクトバージョンＩＤのオブジェクトをデータベース３０から取得し（Ｓ１２５３）、取得したオブジェクトを要求元に送信する（Ｓ１２５４、Ｓ１２５５）。
【００６６】
一方、オブジェクトがデータベース３０に登録されていないと判定すると（Ｓ１２４４：Ｎ）、コンポーネント管理部１５２は、オブジェクト生成部１６に配信対象のオブジェクトの生成要求を送信する（Ｓ１２４５）。
【００６７】
オブジェクト生成部１６は、オブジェクト生成要求を受信すると（Ｓ１２４６）、配信対象のオブジェクトに対応するソース、即ち当該配信要求のソースバージョンＩＤ７１３で特定されるソースをデータベース３０から取得し（Ｓ１２４７）、取得したソースに基づきビルドを実行して配信対象のオブジェクトを生成する（Ｓ１２４８）。そしてオブジェクト生成部１６は、生成したオブジェクトをデータベース３０に登録するとともに（Ｓ１２４９）、該当のバージョン対応テーブル１１１０を更新する（生成したオブジェクトのオブジェクトバージョンＩＤを当該配信要求のソースバージョンＩＤ７１３に対応づけて登録する。）（Ｓ１２５０）。その後、オブジェクト生成部１６は、オブジェクトを生成した旨の通知（完了通知）をコンポーネント管理部１５２に送信する（Ｓ１２５１）。
【００６８】
上記完了通知を受信すると（Ｓ１２５２）、コンポーネント管理部１５２は、該当のバージョン対応テーブル１１１０から特定される、当該配信要求のソースバージョンＩＤ７１３に対応するオブジェクトバージョンＩＤのオブジェクトをデータベース３０から取得し（Ｓ１２５３）、取得したオブジェクトを要求元に送信する（Ｓ１２５４、Ｓ１２５５）。
【００６９】
このように、ソフトウエア管理装置１０は、他の装置５０から配信要求を受信すると、当該配信要求に指定されている配信対象についてまず当該配信要求に指定されているコンポーネントに対するアクセス権を検査し、アクセス権を有すると判定した場合にのみ、当該配信要求に指定される配信対象のコンポーネントを他の装置５０に配信する（Ｓ１２１３（Ｓ１７００）。このため、例えば委託先やオフショア先を含む複数人でソフトウエアの開発が行われる場合、ライセンスや契約等の制約に応じて開発者ごとコンポーネントの種別ごとのアクセス権を適切に設定しておけば、ライセンスや契約等の制約を遵守しつつ、複数の開発者間でコンポーネントを共有する環境を実現することができる。
【００７０】
またソフトウエア管理装置１０は、コンポーネントの種別間のバージョンの対応をバージョン対応テーブル１１１０に管理し、当該配信要求に、処理対象のコンポーネントとしてソース以外の種別が指定されている場合、当該配信要求に指定されているソースのバージョンをバージョン対応テーブル１１１０と対照することにより、配信対象のコンポーネントのバージョンを特定する（Ｓ１２３５，Ｓ１２５３）。このように、各種別のコンポーネントは全てソースのバージョンに紐付けられて管理され、ソース以外のコンポーネントのバージョンは全てソースのバージョンを指定することにより自動的に特定される。これによれば、各開発者は煩雑なバージョン管理に煩わされることなく、ソフトウエアの開発を進めることができ、ソフトウエアの開発効率の向上を図ることができる。
【００７１】
またソフトウエア管理装置１０は、配信対象のオブジェクトがデータベース３０に登録されていない場合はオブジェクトを自動生成して要求元に提供するので（Ｓ１２４５〜Ｓ１２４９）、開発者にオブジェクトの生成や登録もしくは他の開発者への提供のために煩雑な作業を強いることなく、複数の開発者間でコンポーネントを共有する環境を実現することができ、ソフトウエアの開発効率の向上を図ることができる。
【００７２】
図１４乃至図１６は、ソフトウエア管理装置１０が他の装置５０からコンポーネント登録要求８００を受信した際にソフトウエア管理装置１０において行われる処理（以下、登録処理Ｓ１４００と称する。）を説明するフローチャートである。以下、これらの図とともに登録処理Ｓ１４００について説明する。
【００７３】
図１４に示すように、ソフトウエア管理装置１０が、他の装置５０（以下、要求元とも称する。）からユーザの操作入力などに応じて送信されたコンポーネント登録要求８００（以下、当該登録要求とも称する。）を受信すると（Ｓ１４１１，Ｓ１４１２）、まずアクセス権検査部１５１が、当該登録要求についてアクセス権の検査を行う（Ｓ１４１３）。尚、この検査は、当該登録要求に設定されているコンポーネントＩＤ８１２及びコンポーネント種別８１３を、当該登録要求に設定されているユーザＩＤ８１１で特定されるユーザのアクセス権管理テーブル１０２０と照合することにより行われる。この処理（配信処理Ｓ１２００のアクセス権検査処理Ｓ１２１３（Ｓ１７００）と共通）の詳細については後述する。
【００７４】
上記検査においてアクセス権が無いと判定すると（Ｓ１４１４：Ｎ）、アクセス権検査部１５１は、要求元にエラー通知（例えば、アクセス権が無く、登録に失敗した旨の通知)を送信する（Ｓ１４１５，Ｓ１４１６）。
【００７５】
一方、アクセス権検査部１５１が上記検査において当該登録要求にアクセス権が有ると判定すると（Ｓ１４１４：Ｙ）、コンポーネント管理部１５２は、当該登録要求に指定されている登録対象のコンポーネントがソースであるか否か、即ち当該登録要求のコンポーネント種別８１３に「ソース」が設定されているか否かを判定する。コンポーネント管理部１５２が登録対象がソースでないと判定した場合（Ｓ１４２１：Ｙ）、処理は図１５のＳ１４５１に進む。
【００７６】
一方、登録対象がソースであると判定すると（Ｓ１４２１：Ｙ）、コンポーネント管理部１５２は、続いて登録対象のソースが未だデータベース３０に登録されていない新規なコンポーネントであるか否かを判定する（Ｓ１４２２）。コンポーネント管理部１５２が登録対象のソースは新規なコンポーネントであると判定した場合（Ｓ１４２２：Ｙ）、処理はＳ１４２３に進み、一方、登録対象のソースは既に登録されているコンポーネントであると判定した場合（Ｓ１４２２：Ｎ）、処理は図１５のＳ１４４１に進む。
【００７７】
Ｓ１４２３では、アクセス権検査部１５１は、続いて当該登録要求が管理者権限を有するか否かの検査を行う。この検査は、当該登録要求に設定されているユーザＩＤ７１１で特定されるユーザ（以下、当該ユーザと称する。）のアクセス権管理テーブル１０２０の管理者権限１０２１を参照することにより行われる。そしてアクセス権検査部１５１は、上記検査において当該登録要求に管理者権限が無いと判定すると（Ｓ１４２４：Ｎ）、要求元にエラー通知（例えば、管理者権限が無く、新規登録に失敗した旨の通知)を送信する（Ｓ１４２５，Ｓ１４２６）。
【００７８】
一方、上記検査においてアクセス権検査部１５１が当該登録要求に管理者権限があると判定すると（Ｓ１４２４：Ｙ）、コンポーネント管理部１５２は、当該登録要求の登録対象のコンポーネント（ソース）をデータベース３０に新規に登録する（Ｓ１４３１）。またコンポーネント管理部１５２は、バージョン対応テーブル１１１０に新規に登録するコンポーネントに関する情報（ソースのバージョン）を新規登録する（Ｓ１４３２）。
【００７９】
続いてコンポーネント管理部１５２は、登録対象のコンポーネントのライセンス情報（例えば、当該コンポーネントに付随しているライセンスファイルの内容）を取得し、取得したライセンス情報と同じライセンス情報が付随する当該ユーザのコンポーネントがデータベース３０に登録されているか否かを判定する（Ｓ１４３３）。
【００８０】
上記判定において、登録対象のコンポーネントに付随するライセンス情報と同じライセンス情報が付随する当該ユーザのコンポーネント（以下、これを既登録コンポーネントと称する。）がデータベース３０に存在すると判定すると（Ｓ１４３３：Ｙ）、コンポーネント管理部１５２は、アクセス権管理テーブル１０２０から既登録コンポーネントについて設定されているアクセス権を取得し、当該ユーザのアクセス権管理テーブル１０２０に、登録対象のコンポーネントのアクセス権として、取得した既登録コンポーネントのアクセス権を設定する（Ｓ１４３４）。
【００８１】
一方、上記判定において、当該登録要求のライセンスと同じライセンスの既登録コンポーネントがデータベース３０に存在しないと判定すると（Ｓ１４３３：Ｎ）、コンポーネント管理部１５２は、当該ユーザのアクセス権管理テーブル１０２０に、登録対象のコンポーネントのアクセス権として、デフォルトとして保持（記憶）しているアクセス権（例えば、全てのコンポーネントの種別に「不可」）を設定する（Ｓ１４３５）。
【００８２】
図１５のＳ１４４１では、コンポーネント管理部１５２が、登録対象のコンポーネント（ソース）を新規バージョンのソースとしてデータベース３０に登録する。またコンポーネント管理部１５２は、当該ソースに付与されるソースバージョンＩＤのレコードを、バージョン対応テーブル１１１０に新規登録する（Ｓ１４４２）。
【００８３】
このように、登録対象がソースである場合、既存のソース(旧いバージョンのソース）がデータベース３０に存在するか否かに関わらず、当該ソースは新しいバージョンのソースとしてデータベース３０に登録される。これはソフトウエア管理装置１０が管理するコンポーネントは常にソースのバージョンを基本として管理されることを意味している。
【００８４】
以上の処理の後、コンポーネント管理部１５２は、他の装置５０にコンポーネントの登録が完了した旨の通知を送信する（Ｓ１４４３，Ｓ１４４４）。
【００８５】
続いて、Ｓ１４５１では、コンポーネント管理部１５２は、当該登録要求のソースバージョンＩＤ８１４に設定されているソースバージョンＩＤが、当該登録要求のコンポーネントＩＤ８１２に対応するバージョン対応テーブル１１１０に存在するか否かを判定する。コンポーネント管理部１５２が、当該登録要求のソースバージョンＩＤ８１４に設定されているソースバージョンＩＤがバージョン対応テーブル１１１０に存在すると判定した場合（Ｓ１４５１：Ｙ）、処理は図１６のＳ１４６１に進む。一方、コンポーネント管理部１５２が、当該登録要求のソースバージョンＩＤ８１４に設定されているソースバージョンＩＤがバージョン対応テーブル１１１０に存在しないと判定した場合（Ｓ１４５１：Ｎ）、コンポーネント管理部１５２は、他の装置５０にエラー通知（コンポーネントの登録に失敗した旨の通知)を送信する（Ｓ１４５２，Ｓ１４５３）。
【００８６】
このように、当該登録要求の登録対象のコンポーネントがソースではなく、かつ、当該登録要求のソースバージョンＩＤ８１４に設定されているソースバージョンＩＤが、当該登録要求のコンポーネントＩＤ８１２のバージョン対応テーブル１１１０に存在しない場合に当該コンポーネントをデータベース３０に登録しないのは、ソフトウエア管理装置１０がソースを基本としてコンポーネント２３を管理している為である。またこのようにソースを基本としてコンポーネント２３が管理されることで、データベース３０にスタブやオブジェクトがソースと独立して登録されるのを防ぐことができ、バージョン間の齟齬等の不具合を防ぐことができる。
【００８７】
続いて、図１６のＳ１４６１では、コンポーネント管理部１５２が、登録対象がスタブであるか否か（当該登録要求のコンポーネント種別８１３が「スタブ」であるか否か）を判定する。コンポーネント管理部１５２が登録対象はスタブでないと判定した場合（Ｓ１４６１：Ｎ）、処理はＳ１４７１に進む。
【００８８】
一方、登録対象はスタブであると判定した場合（Ｓ１４６１：Ｙ）、コンポーネント管理部１５２は、バージョン対応情報２２の該当のコンポーネント（当該登録要求のコンポーネントＩＤ８１２で特定されるコンポーネント）のバージョン対応テーブル１１１０を参照し、当該登録要求に設定されているソースバージョンＩＤ８１４に対応するスタブが既にデータベース３０に登録されているか否かを判定する（Ｓ１４６２）。
【００８９】
ソースバージョンＩＤに対応するスタブが登録されていないと判定した場合（Ｓ１４６２：Ｎ）、コンポーネント管理部１５２は、登録対象のスタブをデータベース３０に登録するとともに（Ｓ１４６４）、バージョン対応情報２２の該当のコンポーネント（当該登録要求のコンポーネントＩＤ８１２で特定されるコンポーネント）のバージョン対応テーブル１１１０に、当該登録要求のソースバージョンＩＤ８１４に設定されているソースバージョンＩＤに対応づけて登録対象のスタブのスタブバージョンＩＤを登録する（Ｓ１４６５）。
【００９０】
以上の処理の後、コンポーネント管理部１５２は、他の装置５０にコンポーネントの登録が完了した旨の通知を送信する（Ｓ１４６６，Ｓ１４６７）。
【００９１】
一方、ソースバージョンＩＤに対応するスタブが登録されていると判定した場合（Ｓ１４６２：Ｙ）、コンポーネント管理部１５２は、バージョン対応情報２２の該当のコンポーネントのバージョン対応テーブル１１１０の、当該登録要求のソースバージョンＩＤ８１４に設定されているソースバージョンＩＤに対応づけられているスタブバージョンＩＤを削除するとともに（Ｓ１４６３）、登録対象のスタブのデータベース３０への登録（Ｓ１４６４）及び登録対象のスタブのスタブバージョンＩＤのバージョン対応テーブル１１１０への登録を行う（Ｓ１４６５）。
【００９２】
このように、登録対象がスタブである場合、ソフトウエア管理装置１０は、まず当該スタブに対応するソースが既にデータベース３０に登録されているか否かを判定し（Ｓ１４６１）、ソースが登録されている場合（Ｓ１４６１：Ｙ）にのみ、スタブをデータベース３０に登録する。またソフトウエア管理装置１０は、スタブをデータベース３０に登録する場合、既存のスタブが存在する場合は（Ｓ１４６２：Ｙ）これを削除（Ｓ１４６３）してから登録対象のスタブを上記ソースに対応づけてデータベース３０に登録する（Ｓ１４６４，Ｓ１４６５）。これによれば、スタブは常にソースに付随する存在となり、スタブがソースと独立して管理されてしまうのを確実に防ぐことができる。
【００９３】
Ｓ１４７１では、コンポーネント管理部１５２は、登録対象がオブジェクトであるか否か、即ち当該登録要求のコンポーネント種別８１３が「オブジェクト」であるか否かを判定する。登録対象がオブジェクトでないと判定した場合（Ｓ１４７１：Ｎ）、コンポーネント管理部１５２は、他の装置５０にエラー通知（登録対象が適切でなく、登録することができない旨の通知)を送信する（Ｓ１４７２，Ｓ１４７３）。
【００９４】
一方、配信対象がオブジェクトであると判定した場合（Ｓ１４７１：Ｙ）、コンポーネント管理部１５２は、バージョン対応情報２２の該当のコンポーネント（当該登録要求のコンポーネントＩＤ８１２で特定されるコンポーネント）のバージョン対応テーブル１１１０を参照し、当該登録要求のソースバージョンＩＤ８１４に設定されているソースバージョンＩＤに対応するオブジェクトが既にデータベース３０に登録されているか否かを判定する（Ｓ１４７４）。
【００９５】
ソースバージョンＩＤに対応するオブジェクトがデータベース３０に登録されていないと判定した場合（Ｓ１４７４：Ｎ）、コンポーネント管理部１５２は、登録対象のオブジェクトをデータベース３０に登録するとともに（Ｓ１４７６）、バージョン対応情報２２の該当のコンポーネント（当該登録要求のコンポーネントＩＤ８１２で特定されるコンポーネント）のバージョン対応テーブル１１１０に、当該登録要求のソースバージョンＩＤ８１４に設定されているソースバージョンＩＤに対応づけて登録対象であるオブジェクトのオブジェクトバージョンＩＤを登録する（Ｓ１４７７）。
【００９６】
以上の処理の後、コンポーネント管理部１５２は、他の装置５０にコンポーネントのデータベース３０への登録が完了した旨の通知を送信する（Ｓ１４７８，Ｓ１４７９）。
【００９７】
一方、ソースバージョンＩＤに対応するオブジェクトがデータベース３０に登録されていると判定した場合（Ｓ１４７４：Ｙ）、コンポーネント管理部１５２は、バージョン対応情報２２の該当のコンポーネントのバージョン対応テーブル１１１０の、コンポーネント登録要求８００のソースバージョンＩＤ８１４に設定されているソースバージョンＩＤに対応づけられているオブジェクトバージョンＩＤを削除してから（Ｓ１４７５）、登録対象のオブジェクトのデータベース３０への登録（Ｓ１４７６）、並びに登録対象のオブジェクトのオブジェクトバージョンＩＤのバージョン対応テーブル１１１０への登録を行う（Ｓ１４７７）。
【００９８】
このように、登録対象がオブジェクトである場合、ソフトウエア管理装置１０は、まず当該オブジェクトに対応するソースが既にデータベース３０に登録されているか否かを判定し（Ｓ１４７１）、ソースが登録されている場合（Ｓ１４７１：Ｙ）にのみ、オブジェクトをデータベース３０に登録する。またソフトウエア管理装置１０は、オブジェクトをデータベース３０に登録する場合、既存のオブジェクトが存在する場合は（Ｓ１４７２：Ｙ）これを削除（Ｓ１４７５）してから登録対象のオブジェクトを上記ソースに対応づけてデータベース３０に登録する（Ｓ１４７６，Ｓ１４７７）。このため、オブジェクトは常にソースに付随する存在となり、オブジェクトがソースと独立して管理されてしまうのを確実に防ぐことができる。
【００９９】
以上に説明したように、本実施例のソフトウエア管理装置１０は、他の装置５０から登録要求を受信すると、当該登録要求に指定されている登録対象について、まず当該登録要求に指定されているコンポーネントに対するアクセス権を検査し、アクセス権を有すると判定した場合にのみ、当該登録要求に指定される登録対象のコンポーネントを他の装置５０に配信する（Ｓ１４１３（Ｓ１７００））。このため、例えば委託先やオフショア先を含む複数人でソフトウエアの開発が行われる場合、ライセンスや契約等の制約に応じて、開発者ごとコンポーネントの種別ごとのアクセス権を適切に設定しておけば、上記制約を遵守しつつ、複数の開発者間でコンポーネントを共有する環境を実現することができる。
【０１００】
またソフトウエア管理装置１０は、コンポーネントの種別間のバージョンの対応をバージョン対応テーブル１１１０に管理し、当該登録要求に、登録対象のコンポーネントとしてソース以外の種別が指定されている場合、当該登録要求に指定されているソースのバージョンをバージョン対応テーブル１１１０と対照することにより、登録対象のコンポーネントのバージョンを特定する（Ｓ１４６２，Ｓ１４７４）。このように、各種別のコンポーネントは全てソースのバージョンに紐付けられて管理され、ソース以外のコンポーネントのバージョンは全てソースのバージョンを指定することにより自動的に特定される。このため、各開発者はバージョン管理に煩わされることなくソフトウエアの開発を円滑に進めることができ、ソフトウエアの開発効率の向上を図ることができる。
【０１０１】
またソフトウエア管理装置１０は、他の装置５０から受信したコンポーネント登録要求８００がコンポーネントの新規登録を要求するものである場合、当該登録要求について管理者権限（新規登録の権限）の有無を検査し（Ｓ１４２４）、管理者権限を有する場合にのみ、登録対象のコンポーネントをデータベース３０に新規登録する。このため、管理者権限を有しない者によってデータベース３０に勝手にコンポーネントが新規登録されてしまうのを防ぐことができる。
【０１０２】
またソフトウエア管理装置１０は、データベース３０にコンポーネントを新規登録する際、登録対象のコンポーネントに付随しているライセンス情報と同じライセンス情報の既登録コンポーネントが発見されると（Ｓ１４３３：Ｙ）、新規登録するコンポーネントに既登録コンポーネントに設定されているアクセス権を設定する（Ｓ１４３４）。このため、コンポーネントのアクセス権の設定に要するユーザの負荷を軽減しつつ、新規登録するコンポーネントに適切にアクセス権を設定することができる。またソフトウエア管理装置１０は、登録対象のコンポーネントに付随しているライセンス情報と同じライセンス情報の既登録コンポーネントが発見されない場合は（Ｓ１４３３：Ｎ）、デフォルトのアクセス権を設定する（Ｓ１４３５）。このため、コンポーネントのデータベース３０への登録を確実に行いつつ、登録したライセンスや輸出管理等の制約に違反するようなコンポーネントへの不測のアクセスを防ぐことができる。
【０１０３】
図１７は前述したアクセス権検査処理Ｓ１７００を説明するフローチャートである。以下、同図とともに説明する。
【０１０４】
まずアクセス権検査部１５１は、他の装置５０から受信した処理要求に指定されているコンポーネントＩＤ（コンポーネントＩＤ７１２又はコンポーネントＩＤ８１２）に対応するユーザ名をユーザＩＤ管理テーブル１０１０から検索する（Ｓ１７１１）。
【０１０５】
上記検索の結果、当該処理要求に設定されているコンポーネントＩＤに対応するユーザ名がユーザＩＤ管理テーブル１０１０に存在しない場合（Ｓ１７１２：Ｎ）、アクセス権検査部１５１は、当該処理要求にアクセス権が無い旨の情報を出力する（Ｓ１７１３）。
【０１０６】
一方、当該処理要求に設定されているコンポーネントＩＤに対応するユーザ名がユーザＩＤ管理テーブル１０１０に存在する場合（Ｓ１７１２：Ｙ）、アクセス権検査部１５１は、当該処理要求に設定されているコンポーネントＩＤを、当該処理要求に設定されているユーザＩＤ８１１で特定されるユーザのアクセス権管理テーブル１０２０と照合し、当該処理要求について、その配信対象又は登録対象に対するアクセス権（当該処理要求がコンポーネント配信要求７００である場合は読み込み（配信）権限、当該処理要求がコンポーネント登録要求８００である場合は書き込み（登録）権限）の有無を検査する（Ｓ１７１４，Ｓ１７１５）。
【０１０７】
上記検査の結果、当該処理要求が配信対象又は登録対象に対するアクセス権を有していると判定した場合（Ｓ１７１５：Ｙ）、アクセス権検査部１５１は、当該処理要求にアクセス権が有る旨の情報を出力する（Ｓ１７１６）。一方、上記検索の結果、当該処理要求が配信対象又は登録対象に対するアクセス権を有していないと判定した場合（Ｓ１７１５：Ｎ）、アクセス権検査部１５１は、当該処理要求にアクセス権が無い旨の情報を出力する（Ｓ１７１３）。
【０１０８】
以上詳細に説明したように、本実施例のソフトウエア管理装置１０は、ソフトウエアの開発に際して生成される各コンポーネントについて、その種別（ソース、オブジェクト、スタブ等）ごとに設定されたアクセス権を管理し、他の装置５０から特定の種別のコンポーネントの処理要求を受信すると、その種別に設定されているアクセス権に応じて、処理要求が要求する処理の実行可否を判定する。またソフトウエア管理装置１０は、コンポーネントの種別間のバージョンの対応がソースのバージョンに対応づけて管理された情報であるバージョン対応情報２２を管理し、他の装置５０から受信した処理要求に、処理対象のコンポーネントとしてソースコード以外の種別が指定されていた場合、処理要求に指定されているソースのバージョンをバージョン対応情報２２と対照して処理対象になっている種別のコンポーネントのバージョンを特定する。
【０１０９】
このため、本実施例のソフトウエア管理装置１０によれば、例えば、開発者がソフトウエア管理装置１０から必要なコンポーネントを取得する際は当該開発者に設定されているアクセス権に応じてコンポーネントがデプロイ（deploy）もしくは配信が制限され、ライセンス等の制約に違反したＯＳＳ（Open Source Software）の混入を防ぐことができる。また暗号化モジュール等の輸出が禁止されているようなコンポーネントがオフショア先に亘ってしまうのを確実に防ぐことができる。また種別の異なるコンポーネントのバージョンをソースコードのバージョンに紐づけて一元的に管理することが可能となり、例えば、オフショアで大規模なソフトウエア開発が行われる場合でも、種別の異なるコンポーネント間のバージョンの対応を正確に管理しつつ、開発者間で最新のコンポーネントを共有することが可能になり、バージョン間の齟齬等による不具合も防ぐことができる。このように本実施例のソフトウエア管理装置１０によれば、ソフトウエア開発におけるコンタミネーション（Contamination）を確実に防ぐことができるとともに、ソフトウエアの開発効率の向上を図ることができる。
【０１１０】
ところで、本発明は以上に説明した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。またある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、またある実施例の構成に他の実施例の構成を加えることも可能である。また各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１１１】
また上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウエアで実現してもよい。また上記の各構成、機能等は、中央処理装置（プロセッサ）がそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウエアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に記憶することができる。
【０１１２】
また制御線や情報線は説明上必要と考えられるものを示すものであり、必ずしも本発明が適用される製品の全ての制御線や情報線を示しているとは限らない。  
【０１１３】
以上の実施例において、コンポーネントの種別は「ソース」、「オブジェクト」、「スタブ」以外のものであってもよい。またアクセス権管理テーブル１０２０を複数のユーザで構成されるユーザグループごとに設け、ユーザグループ単位でコンポーネントに対するアクセス権を設定するようにしてもよい。
【符号の説明】
【０１１４】
１０  ソフトウエア管理装置、１５  配信処理部、１５１  アクセス権検査部、１５２  コンポーネント管理部、１６  オブジェクト生成部、１７  アクセス権設定部、２１  アクセス権情報、１０１０  ユーザＩＤ管理テーブル、１０２０  アクセス権管理テーブル、２２  バージョン対応情報、１１１０  バージョン対応テーブル、２３  コンポーネント、２３１  ソース、２３２  オブジェクト、２３３  スタブ、３０  データベース、７００  コンポーネント配信要求、８００  コンポーネント登録要求、Ｓ１２００  配信処理、Ｓ１４００  登録処理、Ｓ１７００  アクセス権検査処理
【図１】
2014203352.tif 000003
【図２】
2014203352.tif 000004
【図３】
2014203352.tif 000005
【図４】
2014203352.tif 000006
【図５】
2014203352.tif 000007
【図６】
2014203352.tif 000008
【図７】
2014203352.tif 000009
【図８】
2014203352.tif 000010
【図９】
2014203352.tif 000011
【図１０】
2014203352.tif 000012
【図１１】
2014203352.tif 000013
【図１２】
2014203352.tif 000014
【図１３】
2014203352.tif 000015
【図１４】
2014203352.tif 000016
【図１５】
2014203352.tif 000017
【図１６】
2014203352.tif 000018
【図１７】
2014203352.tif 000019