(57)【特許請求の範囲】
【請求項１】
開発者のためのプロジェクト開発環境を与える方法であって、装置が、
開発者によりアクセスされ得る第１の製作物及び、前記開発者によりアクセスされ得ないが前記開発者によりアクセスされ得る前記第１の製作物により従属される第２の製作物を、開発者のＩＤ又は開発者のＩＤを伴う製作物の名称を含む、前記開発者の要求、プロジェクトの分割及びプロジェクト開発についての状況の情報であるプロジェクト割り当て情報及びプロジェクト開発のプロセスにおいて生成される製作物相互間の従属性であるプロジェクト製作物従属性に基づいて決定するステップと、
前記開発者によりアクセスされ得る前記第１の製作物に対する物理的製作物を与えるステップと、
前記開発者によりアクセスされ得ないが前記開発者によりアクセスされ得る前記第１の製作物により従属される第２の製作物に対する、製作物の主要コードが維持され、詳細が隠される論理的製作物を発生するステップと、
前記物理的製作物及び前記論理的製作物を前記開発者に送るステップと
を含み、
前記論理的製作物を発生するステップが、
前記開発者によりアクセスされ得ないが前記開発者によりアクセスされ得る前記第１の製作物により従属される第２の製作物をプロジェクト保管手段内で探し出すステップと、
前記探し出された前記第２の製作物に対する代理物を発生するステップであって、前記代理物が前記論理的製作物として使用され、前記論理的製作物が前記開発者によって使用されることができ、前記探し出された前記第２の製作物の実装の詳細が前記代理物内に隠され、前記詳細は前記開発者によって見られることができない、前記発生するステップと
を実行することを含む、前記方法。
【請求項２】
前記物理的製作物を与えるステップが、前記開発者によりアクセスされ得る前記第１の製作物を前記プロジェクト保管手段内で探し出すステップを含み、前記探し出された第１の製作物が前記物理的製作物として使用される、請求項１に記載の方法。
【請求項３】
前記第１及び第２の製作物が、プロジェクト開発プロセスにおいて発生された任意のエンティティからなる、請求項１又は２に記載の方法。
【請求項４】
前記エンティティが、インターフェース、コンポーネント及びデータのうちの少なくとも１つである、請求項３に記載の方法。
【請求項５】
前記プロジェクト割り当て情報が、前記開発者及び前記プロジェクト製作物の間の関係をマッピングした情報である、請求項１又は２に記載の方法。
【請求項６】
前記プロジェクト製作物従属性が、前記製作物相互間の参照関係である、請求項１又は２に記載の方法。
【請求項７】
開発者のためのプロジェクト開発環境を与える装置であって、
開発者によりアクセスされ得る第１の製作物及び、前記開発者によりアクセスされ得ないが前記開発者によりアクセスされ得る前記第１の製作物により従属される第２の製作物を、開発者のＩＤ又は開発者のＩＤを伴う製作物の名称を含む、前記開発者の要求、プロジェクトの分割及びプロジェクト開発についての状況の情報であるプロジェクト割り当て情報及びプロジェクト開発のプロセスにおいて生成される製作物相互間の従属性であるプロジェクト製作物従属性に基づいて決定するプロジェクト製作物フィルタ・ユニットと、
前記開発者によりアクセスされ得る前記第１の製作物に対する物理的製作物を与える物理的製作物供給ユニットと、
前記開発者によりアクセスされ得ないが前記開発者によりアクセスされ得る前記第１の製作物により従属される第２の製作物に対する、製作物の主要コードが維持され、詳細が隠される論理的製作物を発生する論理的製作物発生ユニットと、
前記物理的製作物及び前記論理的製作物を前記開発者に送る送出ユニットと
を備え、
前記論理的製作物発生ユニットが、
前記開発者によりアクセスされ得ないが前記開発者によりアクセスされ得る前記第１の製作物により従属される第２の製作物をプロジェクト保管手段内で探し出す調査ユニットと、
前記探し出された前記第２の製作物に対する代理物を発生する代理物発生ユニットであって、前記代理物が前記論理的製作物として使用され、前記論理的製作物が前記開発者によって使用されることができ、前記代理物発生ユニットが、前記調査ユニットにより探し出された前記第２の製作物の実装の詳細を前記代理物内に隠し、前記詳細は前記開発者によって見られることができない、前記代理物発生ユニットと
を備えている、前記装置。
【請求項８】
前記物理的製作物供給ユニットが、前記開発者によりアクセスされ得る前記第１の製作物を前記プロジェクト保管手段内で探し出す調査ユニットを有し、前記探し出された第１の製作物が前記物理的製作物として使用される、請求項７に記載の装置。
【請求項９】
前記第１及び第２の製作物が、プロジェクト開発プロセスにおいて発生された任意のエンティティからなる、請求項７又は８に記載の装置。
【請求項１０】
前記エンティティが、インターフェース、コンポーネント及びデータのうちの少なくとも１つである、請求項９に記載の装置。
【請求項１１】
前記プロジェクト割り当て情報が、前記開発者及び前記プロジェクト製作物の間の関係をマッピングした情報である、請求項７又は８に記載の装置。
【請求項１２】
前記プロジェクト製作物従属性が、前記製作物相互間の参照関係である、請求項７又は８に記載の装置。
【請求項１３】
プロジェクト開発システムであって、
プロジェクトを割り当てそしてプロジェクト割り当て情報を与えるプロジェクト管理ツール（ＰＭＴ）と、
プロジェクト開発プロセスにおいて発生された製作物を管理しそして記憶するバージョン・コントロール・システム（ＶＣＳ）と、
開発者にプロジェクトを開発させる統合開発環境（ＩＤＥ）と、
開発者の要求、前記ＰＭＴにより与えられるプロジェクト割り当て情報及びプロジェクト製作物従属性に基づいて開発者のための論理的開発環境を与える請求項７〜１２のいずれか一項に記載の装置と
を備える、前記プロジェクト開発システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ技術に関し、更に具体的にいうと、ソフトウエア・プロジェクトの開発プロセス中にある開発者のためのプロジェクト開発環境を与える技術に関する。
【背景技術】
【０００２】
現在、ソフトウエア・プロジェクト開発は、複数の開発者を必要とし、更に、異なる分野からの複数の開発者が協力することを必要とし、ここで各開発者はプロジェクトの一部分を開発する。
【０００３】
ソフトウエア・プロジェクトの今日の開発プロセスにおいては、プロジェクト管理ツール（ＰＭＴ）がプロジェクトを分割するために、即ちプロジェクトを多数のサブ・プロジェクトに分割するために使用され、次いで、統合開発環境（ＩＤＥ）が各サブ・プロジェクトを開発するために使用され、例えば、ソース・ファイルが生成されそして修正され、同時に、バージョン・コントロール・システム（ＶＣＳ）が、開発プロセスの間に生成された製作物（ａｒｔｉｆａｃｔｓ）のバージョンを管理する、例えばソース・ファイルのバージョンを更新するために使用される。例えば、並行バージョン・システム（ＣＶＳ），ＣｌｅａｒＣａｓｅ及び構成管理バージョン・コントロール（ＣＭＶＣ）等の多くの製品は、例えばチェック・イン、チェック・アウトの動作等のユーザに対するバージョン管理に対して強力な能力を与える。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
統合開発環境（ＩＤＥ）及びバージョン・コントロール・システム（ＶＣＳ）を使用することによりプロジェクトを開発及び管理するプロセスにおいて、各開発者は、開発環境のもとでプロジェクト全体から割り当てられたサブ・プロジェクトを開発する。しかしながら、この作業モードは、特別な要求を伴う幾つかのプロジェクトの開発には適応しない。例えば、次の２つの条件のもとでは問題が生じる。
（１） プロジェクトが、高い機密性を保つという要求を有し、そして複数の開発者が一緒に開発することを必要とする。この場合、プロジェクト・マネージャは、如何なる開発者といえども彼が全体のプロジェクトに係わることを望まず、従って、各開発者が、全体のプロジェクトの内容を取得し得ないようにすることを確実にすることが重要な問題である。
（２） プロジェクトが非常に複雑で、そして異なる複数の開発者相互間の作業関係も又非常に複雑である。一般的に、他の開発者の作業との関連で生じる開発環境の問題を解決するには、開発者は多くの時間を必要とする。
【０００５】
上述の状況に対する幾つかの可能な現存する解決策は、異なる開発環境を人手により用意して各開発者に割り当て、そして、全体のプロジェクトを多数の異なるサブ・プロジェクトに人手により分割し、次いで、各サブ・プロジェクトが独立的に開発され、そしてこれらのサブ・プロジェクト相互間に関係がないようにすることを含む。この方法は、各開発者が全体のプロジェクトの内容を確実に知り得ないようにするけれども、もしも全体のプロジェクトが修正されると、以前に分割されたサブ・プロジェクトはこの全体のプロジェクトから再び人手により分割される必要がある。この分割の修正は、ソフトウエア・プロジェクトでは非常に通常的なものであり、従って、人手による方法は、多量の人手により繰り返される努力を避けることが困難である。従ってこの方法は、時間を浪費しそして誤りを生じやすい。更に、最も重要なことは、モジュールの設計及びテストが人手による方法では互いに独立していることである。モジュールが互いに従属しているソフトウエアの場合には、或る開発者が、他の開発者により開発されているモジュールに従属している彼（彼女）のモジュールをテストするときには非常に不便である。従って、一般的な場合には、開発環境の純粋に人手による割り当ては、小さなスケールのソフトウエア・プロジェクトの開発プロセスに採用されるにすぎない。
【０００６】
異なる複数の開発者により開発されるサブ・プロジェクトは、ＶＣＳを使用するアクセス権利に従って、管理され得る。例えば、プロジェクトＡは、サブ・プロジェクトＡ−１，サブ・プロジェクトＡ−２及びサブ・プロジェクトＡ−３に分割される。サブ・プロジェクトＡ−１を開発している開発者は、このサブ・プロジェクトを全体的に管理する（例えば、読み取り、修正しそして新たなバージョンを提出する）ことができ、このサブ・プロジェクトＡ−１が従属しているサブ・プロジェクトＡ−２を読む権利を有するが、このサブ・プロジェクトＡ−１が従属していないサブ・プロジェクトＡ−３をアクセスする権利を有しない。しかしながら、もしもサブ・プロジェクトＡ−１の開発者が、他の開発者により開発されているサブ・プロジェクトＡ−２の詳細の全てを読むことができるならば、この解決法は、サブ・プロジェクトＡ−２に対する機密性の要求を達成することができない。全ての開発者が、彼自身又は彼女自身が開発していないどのサブ・プロジェクトの内容をも取得できないようにし、そして機密性の要求を確実に達成するためには、彼自身又は彼女自身により開発されていないプロジェクトを読む権利を制限することが必要である。しかしながら、読むことの権利が完全に制限される場合には、コンパイル・エラーが生じる。これの理由は、或る開発者がアクセスできないが必要としているプロジェクトの内容が、アクセス管理機構に基づくこのプロジェクト開発環境では、開発者に与えられないからである。しかしながら、従属している他のサブ・プロジェクトの内容は、コンパイルの間にこの開発者が必要とする。コンパイラが従属するコードを見いだせないならば、エラーが生じる。
【０００７】
更に、プロジェクト分割方法は、名称が“engineering system for distributeddevelopment and development by a number of users”である米国公開特許第２００６／０１６８５５６Ａ１に開示され、ここで、全体的に独立的なサブ・プロジェクトは、全体のプロジェクトから分割され、そして特定な開発者により開発される。しかしながら、ソフトウエアの実際の開発プロセスにおいては、１つのプロジェクトが、複数の完全に独立的はサブ・プロジェクトから構成されることはできない。しかしながら、サブ・プロジェクト相互間に独立性が存在することは排除できない。
【０００８】
かくして、知る必要のないコードを含まない全体的な開発コードを開発者に与える方法が必要である。即ち、この方法は、開発者が取得しうるどのようなサブ・プロジェクトも、この開発者により知られてはならない内容を含まないが、正しくコンパイルされそしてテストされ得ることを確実にするべきである。
【特許文献１】米国公開特許第２００６／０１６８５５６Ａ１
【課題を解決するための手段】
【０００９】
従来技術により注目されてこなかった上述の問題点を解決するために、本発明は、開発者のためのプロジェクト開発環境を与える方法、開発者のためのプロジェクト開発環境を与える装置及びプロジェクト開発システムを提供する。
【００１０】
本発明の一つの態様に従うと、
或る開発者によりアクセスされ得る第１の製作物及び前記開発者によりアクセスされ得ないが前記開発者によりアクセスされ得る前記第１の製作物により従属される（第１の製作物が従属する）第２の製作物を、前記開発者の要求、プロジェクト割り当て情報及びプロジェクト製作物従属性に基づいて決定するステップと、
前記開発者によりアクセスされ得る前記第１の製作物に対する物理的製作物を与えるステップと、
前記開発者によりアクセスされ得ないが前記開発者によりアクセスされ得る前記第１の製作物により従属される第２の製作物に対する論理的製作物を発生するステップと、
前記物理的製作物及び前記論理的製作物を前記開発者に送るステップとを含む開発者のためのプロジェクト開発環境を与える方法が提供される。
【００１１】
本発明の他の態様に従うと、
或る開発者によりアクセスされ得る第１の製作物及び前記開発者によりアクセスされ得ないが前記開発者によりアクセスされ得る前記第１の製作物により従属される（第１の製作物が従属する）第２の製作物を、前記開発者の要求、プロジェクト割り当て情報及びプロジェクト製作物従属性に基づいて決定するように構成されたプロジェクト製作物フィルタ・ユニットと、
前記開発者によりアクセスされ得る前記第１の製作物に対する物理的製作物を与えるように構成された物理的製作物供給ユニットと、
前記開発者によりアクセスされ得ないが前記開発者によりアクセスされ得る前記第１の製作物により従属される第２の製作物に対する論理的製作物を発生するように構成された論理的製作物発生ユニットと、
前記物理的製作物及び前記論理的製作物を前記開発者に送る送出ユニットとを備える、開発者のためのプロジェクト開発環境を与える装置が提供される。
【００１２】
本発明の他の態様に従うと、
プロジェクトを割り当てそしてプロジェクト割り当て情報を与えるように構成されたプロジェクト管理ツール（ＰＭＴ）と、
プロジェクト開発プロセスにおいて発生された製作物を管理しそして記憶するように構成されたバージョン・コントロール・システム（ＶＣＳ）と、
開発者によりプロジェクトを開発させるように構成された統合開発環境（ＩＤＥ）と、
開発者による要求、前記ＰＭＴにより与えられるプロジェクト割り当て情報及びプロジェクト製作物従属性に基づいて開発者のための論理的開発環境を与える上述の装置と備えるプロジェクト開発システムが提供される。
【発明を実施するための最良の形態】
【００１３】
次に、図面を参照しながら本発明の良好な実施例を詳細に説明する。
【００１４】
開発者のためのプロジェクト開発環境を与える方法：
図１は、本発明に従う実施例の開発者のためのプロジェクト開発環境を与える方法を示すフローチャートである。図１に示すように、第１のステップ１０１において、或る開発者によりアクセスされ得る第１の製作物及び前記開発者によりアクセスされ得ないが前記開発者によりアクセスされ得る前記第１の製作物により従属される（第１の製作物が従属する）第２の製作物が、前記開発者の要求、プロジェクト割り当て情報及びプロジェクト製作物従属性に基づいて決定される。特に、開発者の要求は、開発者の身元（ＩＤ，ｉｄｅｎｔｉｔｙ）又は開発者のＩＤを伴う製作物の名称を含み、ここで、製作物の名称は、例えば、インターフェース、コンポーネント／モジュール及びデータ・タイプ等のような開発されているエンティティ（ｅｎｔｉｔｙ）の名称である。開発者のＩＤは、開発者のユーザ名又はインターネット・プロトコル（ＩＰ）アドレスに基づいて同定されることができ、そして本発明は、開発者のＩＤが同定されうる限り、これに限定しない。
【００１５】
ステップ１０１において、もしも開発者の要求がこの開発者のＩＤを含むならば、開発者は、この開発者によりアクセスされ得る全ての製作物及びこの製作物により従属される（この製作物が従属する）他の全ての製作物を取得することを希望している。もしも要求が、この開発者のＩＤを伴う製作物の名称であるならば、この開発者は、この開発者によりアクセスされ得る特定な製作物及びこの特定な製作物により従属される他の製作物を取得することを希望しているにすぎない。
【００１６】
この実施例において、製作物は、例えば、インターフェース、コンポーネント／モジュール及びデータ等のようにプロジェクト開発のプロセスにおいて生成される任意のエンティティであり得る。インターフェースは、コンポーネントに実装（インプリメント）される通信当事者相互間の通信のために規定されたプロトコルである。コンポーネント／モジュールは、幾つかの機能を達成するためのアプリケーション・ロジックを含むソース・コードである。データは、コンポーネントにより使用されるデータのことである。図３は、ＦｏｏｄＯｒｄｅｒ＿Ｉｎｔｅｒｆａｃｅ＿ＦｏｏｄＳｅｒｖｉｃｅのインターフェースを示す、本発明の実施例に従うプロジェクト製作物の例である。図３において、“ｃｈｅｃｋ”及び“ｎｏｔｉｆｙＣｏｌｌｅｃｔｏｒ”は、このインターフェースの２つのメソッドであり、そして、”ｃｈｅｃｋ”のメソッドの機能は、“ｔｉｍｅＩｎｔｅｒｖａｌＩＢＯ”の所定の時間間隔に“ｆｏｏｄ  ｏｒｄｅｒ”を行う必要があるか否かを調べることである。“ｎｏｔｉｆｙＣｏｌｌｅｃｔｏｒ”のメソッドは、用意された“メッセージ”を、ｆｏｏｄ  ｏｒｄｅｒ（食物注文）管理者に送り、彼又は彼女が“ｆｏｏｄ  ｏｒｄｅｒ”を行えるようにすることである。
【００１７】
図４は、ＴｉｍｅＩｎｔｅｒｖａｌＩＢＯのデータの内容を示す本発明の実施例に従うプロジェクト製作物の他の例である。図４において、ＴｉｍｅＩｎｔｅｒｖａｌＩＢＯは、開始時刻及び終了時刻を含む時間間隔（期間）のデータ・タイプであり、例えば、開始時刻は１０／２６／２００７  １：００：００ＰＭでありそして終了時刻は１０／２６／２００７  １：３０：００ＰＭである。
【００１８】
本明細書中で示しそして列挙する製作物の例は、説明のためのものであり、本発明はこれに限定されず、そして製作物は、プロジェクト開発のプロセスにおいて生成される如何なるエンティティでもよいことを理解されたい。
【００１９】
この実施例において、プロジェクト割り当て情報は、プロジェクトの分割及びプロジェクト開発についての状況の情報である。プロジェクトの開発前に、プロジェクトの管理者は、プロジェクトを、異なる複数の開発者又は異なる複数の開発者グループにより開発される複数のサブ・プロジェクトに分割する必要がある、プロジェクト開発のプロセスにおいて、或る開発された製作物はある開発者に対応する。従って、プロジェクト割り当て情報は、以下に示す表１のようにすることができ、この表１は、開発者と製作物の間のマッピング関係を示す。
【００２０】
【表１】
0005475979.tif 000002
【００２１】
表１から、開発者アリスは、サブプロジェクト“ＦｏｏｄＰｒｏｄｕｃｔＭａｎａｇｅｍｅｎｔ＿Ｉｎｔｅｒｆａｃｅ＿ＦｏｏｄＰｒｏｄｕｃｔＣｈａｎｇｅ”及び“ＦｏｏｄＰｒｏｄｕｃｔＭａｎａｇｅｍｅｎｔ＿Ｉｎｔｅｒｆａｃｅ＿ＦｏｏｄｐｒｏｄｕｃｔＤｅｌｅｔｅ”を開発する責務を有し、そして開発者ボブは、サブ・プロジェクト“ＦｏｏｄＰｒｏｄｕｃｔＭａｎａｇｅｍｅｎｔ＿Ｉｎｔｅｒｆａｃｅ＿ＦｏｏｄｐｒｏｄｕｃｔＧｅｔ”を開発する責務を有することが明らかである。
【００２２】
この実施例において、プロジェクト製作物従属性は、プロジェクト開発のプロセスにおいて生成される製作物相互間の従属性、例えば、これら製作物相互間の参照関係である。図２は、本発明の実施例に従うプロジェクト製作物従属性の１つの例である。図２は、インターフェース、コンポーネント及びデータの間の従属性を示し、例えば、コンポーネントＣ３は、インターフェースＩ３を実装（インプリメント）し、インターフェースＩ４及びＩ５を参照し、そしてデータＤ２及びＤ４を使用する。図２は、プロジェクト製作物相互間の例示的な従属性を示しているにすぎず、本発明はこれに制限されることはなく、例えば、データ及びデータの間の従属性又はインターフェース及びデータとの間の従属性等を更に含むことができることが当業者により理解されるであろう。或る製作物により直接的に従属される製作物のサロゲート（ｓｕｒｒｏｇａｔｅ＝代理物）を発生することが必要であるが、製作物により間接的に従属される製作物に対するサロゲートを発生する必要がないことを理解されたい。その理由は、これが本発明の実装（インプリメンテーション）に影響を及ぼさないからである。
【００２３】
図１のステップ１０２において、開発者によりアクセスされ得る第１の製作物に対する物理的製作物を与えられる。特に、開発者によりアクセスされ得る製作物がプロジェクト保管手段（リポジトリ）において探索され（サーチされ）、ここで探し出された製作物は、物理的製作物として使用され、そして、この物理的製作物は、この開発者によりアクセスされ得る開発された製作物でありそしてプロジェクト保管手段内に対応する特定な物理的ファイルを有する。
【００２４】
この実施例においては、プロジェクト保管手段は、プロジェクト開発のプロセスにおいて生成されたどのような製作物をも収集的に記憶する中央記憶ユニットである。又、プロジェクト保管手段は、製作物それ自体ばかりではなく各製作物のバージョン情報及び変更した状況をも記憶する。物理的に、プロジェクト保管手段は、単一のサーバーにより実現されることができ、又、バージョン・コントロール・システム（ＶＣＳ）のファイル管理システムにより実現されることができる。本発明は、製作物を記憶でき、そしてこれが必要とされるときに製作物を供給することができるならば、プロジェクト保管手段に対して何らの制限を課すものではない。
【００２５】
次に、図１のステップ１０３において、もしも開発者によりアクセスされ得る第１の製作物（図２のコンポーネントＣ１）がこの開発者によりアクセスされることができない第２の製作物（例えば、図２のインターフェースＩ１）に従属しているならば、この開発者によりアクセスされることができない第２の製作物（図２のインターフェースＩ１）に対する論理的製作物が発生される。
【００２６】
特に、開発者によりアクセスされ得ないがこの開発者によりアクセスされ得る第１の製作物により従属される第２の製作物が、プロジェクト保管手段内で探索される。次いで、この探し出された製作物に対するサロゲートが発生され、ここで、このサロゲートが論理的製作物として使用される。
【００２７】
開発者により呼び出されることを必要とした製作物が探索された後、この探し出された製作物の実装（インプリメンテーション）の詳細は、ステップ１０３において発生されたサロゲート内に隠され、その結果、開発者はこの製作物の詳細を見ることはできないが、これを使用することができる。これは、他の製作物に従属する製作物の実行に影響を与えない。
【００２８】
特に、サロゲートを発生する方法は、例えば現存するＪａｖａ  Ｅｍｉｔｔｅｒ  Ｔｅｍｐｌａｔｅｓ（ＪＥＴ）の方法により達成されることができ、そしてこれの詳細は、次のリンク〔１〕−〔２〕に示されている。
〔１〕
〔２〕
【００２９】
サロゲートを発生する方法は、これに限定されるものではなく、発生されるべき製作物の主要コードがサロゲートとして維持され、そして重要な情報の詳細が隠されるならば、当業者により知られている任意の方法が使用され得る。
【００３０】
この実施例のサロゲートを発生するプロセスを、図３に示すＦｏｏｄＯｒｄｅｒ＿Ｉｎｔｅｒｆａｃｅ＿ＦｏｏｄＳｅｒｖｉｃｅのインターフェースの例を使用して詳細に説明する。
【００３１】
ＦｏｏｄＯｒｄｅｒ＿Ｉｎｔｅｒｆａｃｅ＿ＦｏｏｄＳｅｒｖｉｃｅのインターフェースを実装（インプリメント）するコードは次の通りである。
package com.dcm.foodsystem;
import com.dcm.foodsystem.FoodOrder_Interface_FoodService;
import com.ibm.websphere.sca.Ticket;
import commonj.sdo.DataObject;
import com.ibm.websphere.sca.ServiceManager;
public class FoodSystem1Impl {
/**
* Default constructor.
*/
publicFoodSystem1Impl() {
super();
}
/**
* Return a reference to the componentservice instance for this
* implementation class. This methodshould be used when passing this
* service to a partner reference or ifyou want to invoke this component
* service asynchronously.
* 
* @generated (com.ibm.wbit.java)
*/
privateObject getMyService() {
return(Object) ServiceManager.INSTANCE.locateService("self");
}
/**
* This method is used to locate theservice for the reference named
*"FoodOrder_Interface_FoodServicePartner". This will return aninstance of
* {@linkFoodOrder_Interface_FoodService}. If you would like to use this
* service asynchronously then you willneed to cast the result to
* {@linkFoodOrder_Interface_FoodServiceAsync}.
* 
* @generated (com.ibm.wbit.java)
* 
* @return FoodOrder_Interface_FoodService
*/
publicFoodOrder_Interface_FoodServicelocateService_FoodOrder_Interface_FoodServicePartner() {
return(FoodOrder_Interface_FoodService) erviceManager.INSTANCE
.locateService("FoodOrder_Interface_FoodServicePartner");
}
/**
* Method generated to supportimplemention of operation "check" defined for
* WSDL port type named"interface.FoodOrder_Interface_FoodService".
* 
* The presence of commonj.sdo.DataObjectas the return type and/or as a
* parameter type conveys that its acomplex type. Please refer to the WSDL
* Definition for more information on thetype of input, output and
* fault(s).
*/
publicBoolean check(DataObject timeIntervalBO) {
System.out.println(timeIntervalBO);
Booleanresult = locateService_FoodOrder_Interface_FoodServicePartner()
.check(timeIntervalBO);
System.out.println("result"+ result);
returnresult;
}
/**
* Method generated to supportimplemention of operation "notifyCollector"
* defined for WSDL port type named
*"interface.FoodOrder_Interface_FoodService".
* 
* Please refer to the WSDL Definition formore information on the type of
* input, output and fault(s).
*/
publicString notifyCollector(String message) {
Stringresult = locateService_FoodOrder_Interface_FoodServicePartner()
.notifyCollector(message);
returnresult;
}
}
【００３２】
サロゲートを発生するプロセスにおいて、ＦｏｏｄＯｒｄｅｒ＿Ｉｎｔｅｒｆａｃｅ＿ＦｏｏｄＳｅｒｖｉｃｅのインターフェースのｐｕｂｌｉｃ  Ｂｏｏｌｅａｎ  ｃｈｅｃｋ  （ＤａｔａＯｂｊｅｃｔ  ｔｉｍｅＩｎｔｅｒｖａｌＢＯ）のインプリメンテーションの詳細は隠され、そして結果“トゥルー（ｔｒｕｅ）”だけが戻される。本実施例においては、“トゥルー（ｔｒｕｅ）”が“リターン結果（戻される結果）”として使用されるけれども、“トゥルー”又は“フォールス（ｆａｌｓｅ）”のいずれかが“リターン結果”として使用され得ることを理解されたい。実際の動作においては、開発者は、デフォルトのリターン結果を不規則（ランダム）にセットし、又はこのデフォルトのリターン結果を彼らのコードで修正することができ、そして修正された結果に基づいて彼ら自身により開発されたコードをテストすることができる。これは以下のものを省略する。
public Booleancheck(DataObject timeIntervalBO) {
System.out.println(timeIntervalBO);
Booleanresult=locateService_FoodOrder_Interface_FoodServicePartner()
.check(timeIntervalBO);
System.out.println("result"+ result);
return result;
}
as
public Booleancheck(DataObject timeIntervalBO) {
return true;
}
【００３３】
更に、ＦｏｏｄＯｒｄｅｒ＿Ｉｎｔｅｒｆａｃｅ＿ＦｏｏｄＳｅｒｖｉｃｅのインターフェース内のｐｕｂｌｉｃ  Ｂｏｏｌｅａｎ  ｃｈｅｃｋ  （ＤａｔａＯｂｊｅｃｔ  ｔｉｍｅＩｎｔｅｒｖａｌＢＯ）のインプリメンテーションの詳細が隠され、そして結果“ヌル（ｎｕｌｌ）”だけが戻される。これは以下のものを省略する。
public StringnotifyCollector(String message) {
String  result =locateService_FoodOrder_Interface_FoodServicePartner()
.notifyCollector(message);
return result;
}
as
public StringnotifyCollector(String message) {
returnnull;
}
【００３４】
従って、ＦｏｏｄＯｒｄｅｒ＿Ｉｎｔｅｒｆａｃｅ＿ＦｏｏｄＳｅｒｖｉｃｅのインターフェースに対して発生されたサロゲートのコードは、次の通りである。
package com.dcm.foodsystem;
import com.dcm.foodsystem.FoodOrder_Interface_FoodService;
import com.ibm.websphere.sca.Ticket;
import commonj.sdo.DataObject;
import com.ibm.websphere.sca.ServiceManager;
public class FoodSystem2Impl {
/**
* Default constructor.
*/
publicFoodSystem2Impl() {
super();
}
/**
* Return a reference to the componentservice instance for this
* implementation class. This methodshould be used when passing this
* service to a partner reference or ifyou want to invoke this component
* service asynchronously.
* 
* @generated (com.ibm.wbit.java)
*/
privateObject getMyService() {
return(Object) ServiceManager.INSTANCE.locateService("self");
}
/**
* This method is used to locate theservice for the reference named
*"FoodOrder_Interface_FoodServicePartner". This will return aninstance of
* {@linkFoodOrder_Interface_FoodService}. If you would like to use this
* service asynchronously then you willneed to cast the result to
* {@linkFoodOrder_Interface_FoodServiceAsync}.
* 
* @generated (com.ibm.wbit.java)
* 
* @return FoodOrder_Interface_FoodService
*/
publicFoodOrder_Interface_FoodServicelocateService_FoodOrder_Interface_FoodServicePartner() {
return(FoodOrder_Interface_FoodService) ServiceManager.INSTANCE
.locateService("FoodOrder_Interface_FoodServicePartner");
}
/**
* Method generated to supportimplemention of operation "check" defined for
* WSDL port type named"interface.FoodOrder_Interface_FoodService".
* 
* The presence of commonj.sdo.DataObjectas the return type and/or as a
* parameter type conveys that its acomplex type. Please refer to the WSDL
* Definition for more information on thetype of input, output and
* fault(s).
*/
publicBoolean check(DataObject timeIntervalBO) {
returntrue;
}
/**
* Method generated to support implementionof operation "notifyCollector"
* defined for WSDL port type named
*"interface.FoodOrder_Interface_FoodService".
* 
* Please refer to the WSDL Definition formore information on the type of
* input, output and fault(s).
*/
publicString notifyCollector(String message) {
returnnull;
}
}
【００３５】
ＦｏｏｄＯｒｄｅｒ＿Ｉｎｔｅｒｆａｃｅ＿ＦｏｏｄＳｅｒｖｉｃｅのインターフェースにおいて、ｐｕｂｌｉｃ  Ｂｏｏｌｅａｎ  ｃｈｅｃｋ（ＤａｔａＯｂｊｅｃｔ  ｔｉｍｅＩｎｔｅｒｖａｌＢＯ）及びｐｕｂｌｉｃ  Ｂｏｏｌｅａｎ  ｐｕｂｌｉｃ  Ｓｔｒｉｎｇ  ｎｏｔｉｆｙＣｏｌｌｅｃｔｏｒ（Ｓｔｒｉｎｇ  ｍｅｓｓａｇｅ）は、このインターフェースの２つのメソッドであり、そして、全てのアプリケーション・ロジックはこれら２つのモジュール内にある。このインターフェース内の他のコードは、このインターフェースのインプリメンテーションが通常に動作することを確実にするための補助的なコードであり、これは他の異なるインターフェースのインプリメンテーションと同じである。更に、インプリメンテーションの詳細が隠されなければならないメソッドは、本発明の方法におけるインターフェースの定義に従って自動的に選択され、例えば、図３に示されているこのインターフェースのメソッド“ｃｈｅｃｋ”及び“ｎｏｔｉｆｙＣｏｌｌｅｃｔｏｒ”は、自動的に選択されそして隠され、そして他の共通コードは維持される。
【００３６】
本実施例の製作物に対するサロゲートを発生するプロセスを、ＦｏｏｄＯｒｄｅｒ＿Ｉｎｔｅｒｆａｃｅ＿ＦｏｏｄＳｅｒｖｉｃｅのインターフェースの例について説明したが、このプロセスは例示的なものであり、本発明は、インターフェースのメソッドをインプレメントするコードが消去され、リターン（戻し）タイプで承認されたランダム（不規則）データが生成され、そして他のコードが維持される限り、上記の例に限定されない。
【００３７】
最後に、図１のステップ１０４において、物理的製作物及び論理的製作物の両方が開発者に送られる。
【００３８】
本実施例の開発者のためのプロジェクト開発環境を与える方法により、プロジェクト開発の機密性は、如何なる開発者もプロジェクトの全体の内容に触れることができないことを確実にするためにサロゲートを発生することにより改善される。同時に、完全な論理的開発環境が開発者に対して自動的に提供され、そして開発者は、従属される製作物を自由に呼び出すことができる。本発明は、人手による方法に比べて、開発の効率を著しく改善する。
【００３９】
開発者のためのプロジェクト開発環境を与える装置：
図５は、本発明の実施例に従う開発者のためのプロジェクト開発環境を与える装置のブロック図を示す。次にこの実施例を図５を参照して説明する。上述の実施例と同じ部分に対しては説明を適切に省略する。
【００４０】
図５に示すように、本実施例の開発者のためのプロジェクト開発環境を与える装置５００は、
開発者によりアクセスされ得る第１の製作物及び前記開発者によりアクセスされ得ないが前記開発者によりアクセスされ得る前記第１の製作物により従属される第２の製作物を、前記開発者の要求、プロジェクト割り当て情報及びプロジェクト製作物従属性に基づいて決定するように構成されたプロジェクト製作物フィルタ・ユニット５０１と、
前記開発者によりアクセスされ得る前記第１の製作物に対する物理的製作物を与えるように構成された物理的製作物供給ユニット５０２と、
前記開発者によりアクセスされることができず、そして前記開発者によりアクセスされ得る前記第１の製作物により従属される第２の製作物に対する論理的製作物を発生するように構成された論理的製作物発生ユニット５０３と、
前記物理的製作物及び前記論理的製作物を共に前記開発者に送る送出ユニット５０４とを備える。
【００４１】
特に、開発者の要求は、開発者の身元（ＩＤ，ｉｄｅｎｔｉｔｙ）又は開発者のＩＤを伴う製作物の名称を含む。開発者のＩＤは、開発者のユーザ名又はインターネット・プロトコル（ＩＰ）アドレスに基づいて同定されることができ、そして本発明は、開発者のＩＤが同定されうる限り、これに対して制限しない。
【００４２】
本実施例において、もしも開発者の要求がこの開発者のＩＤを含むならば、開発者は、この開発者によりアクセスされ得る全ての製作物及びこの製作物により従属される他の全ての製作物を取得することを希望している。もしも要求が、この開発者のＩＤを伴う製作物の名称であるならば、この開発者は、この開発者によりアクセスされ得る特定な製作物及びこの特定な製作物により従属される他の製作物を取得することを希望しているにすぎない。
【００４３】
本実施例において、製作物は、例えば、インターフェース、コンポーネント／モジュール及びデータ等のようなプロジェクト開発のプロセスにおいて生成された任意のエンティティであり得る。インターフェースは、コンポーネントにより実装（インプリメント）される通信当事者相互間の通信のために規定されたプロトコルである。コンポーネントは、幾つかの機能を達成するためのアプリケーション・ロジックを含むソース・コードである。データは、コンポーネントにより使用されるデータのことである。図３は、ＦｏｏｄＯｒｄｅｒ＿Ｉｎｔｅｒｆａｃｅ＿ＦｏｏｄＳｅｒｖｉｃｅのインターフェースを示す本発明の実施例に従うプロジェクト製作物の１つの例である。図４は、ｔｉｍｅＩｎｔｅｒｖａｌＩＢＯのデータを示す本発明の実施例に従うプロジェクト製作物の他の例である。
【００４４】
本明細書において示しそして列挙する製作物の例は、説明のためのものであり、本発明はこれに限定されず、そして製作物とは、プロジェクト開発のプロセスにおいて生成される任意のエンティティであり得る。
【００４５】
この実施例において、プロジェクト割り当て情報は、プロジェクトの分割及びプロジェクト開発についての情報である。プロジェクトの開発前に、プロジェクトの管理者は、プロジェクトを、異なる複数の開発者又は異なる複数の開発者グループによりそれぞれ開発される複数のサブ・プロジェクトに分割する必要がある。プロジェクト開発のプロセスにおいて、或る開発された製作物はある開発者に対応する。従って、プロジェクト割り当て情報は、どの開発者がどのサブ・プロジェクトを開発するか、即ち、開発者と製作物の間のマッピング関係を示す表において見出すことができる。
【００４６】
この実施例において、プロジェクト製作物従属性は、プロジェクト開発のプロセスにおいて生成される製作物相互間の従属性、即ち、１つの実行物に対する他の製作物の従属性である。図２は、本発明の実施例に従うプロジェクト製作物の例である。図２は、インターフェース、コンポーネント及びデータの間の従属性を示し、例えば、コンポーネントＣ３は、インターフェースＩ３を実装（インプリメント）し、インターフェースＩ４及びＩ５を呼び出し、そしてデータＤ２及びＤ４を使用する。図２は、プロジェクト製作物相互間の例示的な従属性を示しているにすぎず、本発明はこれに限定されない。
【００４７】
特に、開発者によりアクセスされ得る製作物は、プロジェクト保管手段内で、物理的製作物供給ユニット５０２により探索され、ここで、探し出された製作物は物理的製作物として使用される。
【００４８】
この特定な実施例においては、プロジェクト保管手段は、プロジェクト開発のプロセスにおいて生成されたどのような製作物をも収集的に記憶する中央記憶ユニットである。又、プロジェクト保管手段は、製作物それ自体ばかりではなく各製作物のバージョン情報及び変更した状況をも記憶する。物理的に、プロジェクト保管手段は、単一のサーバーにより実現されることができ、又、バージョン・コントロール・システム（ＶＣＳ）のファイル管理システムにより実現されることができる。本発明は、製作物を記憶できそして必要に応じて製作物を供給することができるならば、プロジェクト保管手段に対して何らの限定を課すものではない。
【００４９】
特に、開発者によりアクセスされ得ないがこの開発者によりアクセスされ得る製作物により従属されている製作物が、プロジェクト保管手段内で、論理的製作物発生ユニット５０３により探索される。次いで、この探し出された製作物に対してサロゲートが発生され、ここで、このサロゲートは論理的製作物として使用される。
【００５０】
開発者により呼び出された製作物が探し出された後、この探し出された製作物のインプリメンテーションの詳細が、論理的製作物発生ユニット５０３により発生されたサロゲート内に隠され、その結果、開発者は、この製作物の詳細を見ることはできないが、これを使用することができる。これは、他の製作物に従属する製作物の実行に影響を与えない。
【００５１】
特に、例えば現存するＪａｖａ  Ｅｍｉｔｔｅｒ  Ｔｅｍｐｌａｔｅｓ（ＪＥＴ）の技術が、論理的製作物発生ユニット５０３で使用されることができ、そしてこれの詳細は、次のリンク〔１〕−〔２〕に示されている。
［１］  
［２］  
【００５２】
本発明の論理的製作物発生ユニット５０３はこれに限定されるものではなく、そしてサロゲートとして発生される製作物の主要コードが維持され、そして重要な詳細が隠される限り、当業者により知られている任意の方法が使用され得る。
【００５３】
論理的製作物発生ユニット５０３のサロゲートを発生する特定なプロセスは、図３に示すＦｏｏｄＯｒｄｅｒ＿Ｉｎｔｅｒｆａｃｅ＿ＦｏｏｄＳｅｒｖｉｃｅのインターフェースの例を使用して説明したサロゲートを発生するプロセスと同じであり、従って、簡略化のためにこれの詳細な説明を省略する。
【００５４】
本実施例の開発者のためのプロジェクト開発環境を与える装置５００により、プロジェクトの機密性は、如何なる開発者もプロジェクトの全体の内容に触れることができないことを確実にするために論理的製作物発生ユニット５０３を使用して発生することにより改善される。同時に、完全な論理的開発環境が開発者に対して自動的に提供され、そして、人手による方法に比べて、開発の効率が著しく改善される。
【００５５】
プロジェクト開発システム：
上述と同じ発明の考えのもとで、図６は、本発明の実施例に従うプロジェクト開発システムのブロック図である。次のこの実施例を図５を参照して説明する。上述の実施例と同じものについては説明を省略する。
【００５６】
図６に示すように、本発明の実施例に従うプロジェクト開発システム６００は、
プロジェクトを割り当てそしてプロジェクト割り当て情報を与えるように構成されたプロジェクト管理ツール（ＰＭＴ）６０１と、
プロジェクト開発プロセスにおいて発生された製作物を管理しそして記憶するように構成されたバージョン・コントロール・システム（ＶＣＳ）６０２と、
開発者によりプロジェクトを開発させるように構成された統合開発環境（ＩＤＥ）６０３と、
開発者の要求、プロジェクト管理ツールにより与えられるプロジェクト割り当て情報及びプロジェクト製作物従属性に基づいて開発者のための論理的開発環境を与えるように構成された上述の装置５００とを備える。
【００５７】
本実施例において、プロジェクト管理ツール（ＰＭＴ）６０１は、プロジェクトが複数のサブ・プロジェクトに分割され、そしてプロジェクトがプロジェクト開発のプロセスにおいて管理され得る限り、当業者により知られている任意のプロジェクト管理ツールでもよい。バージョン・コントロール・システム（ＶＣＳ）６０２は、例えばＶＣＳ，ＣｌｅａｒＣａｓｅ及びＣＭＶＣ等でよく、そして本発明は、プロジェクト開発のプロセスにおいて発生された製作物が管理されそして記憶される限り、これに限定されることはない。統合開発環境（ＩＤＥ）６０３は、プロジェクトを開発するために開発者により使用されうるものであれば、当業者により知られている任意に開発環境でもよい。
【００５８】
本実施例のプロジェクト開発システム６００により開発者のための統合開発環境を与えるプロセスは、前述の方法及び装置の実施例のものと同じであり、従ってこれの詳細な説明は省略する。
【００５９】
本実施例の開発者のためのプロジェクト開発環境を与えるシステム６００により、プロジェクト開発の機密性は、如何なる開発者もプロジェクトの全体の内容に触れることができないことを確実にするためにサロゲートを発生することにより改善される。同時に、完全な論理的開発環境が開発者に対して自動的に提供され、そして、人手による方法に比べて、開発の効率を著しく改善する。
【００６０】
更に、プロジェクト管理ツール（ＰＭＴ），バージョン・コントロール・システム（ＶＣＳ）及び統合開発環境（ＩＤＥ）は、本実施例のプロジェクト開発システム６００に統合され、これにより、全体的に信頼性が高く且つ汎用性の開発環境がプロジェクト開発に対して提供され、そして、開発の効率が著しく改善される。
【００６１】
他に特に述べない限り、本発明の機能は、ハードウエアまたはソフトウエアあるいはその両方により実現されることができる。しかしながら良好な実施例では、他に特に述べない限り、これらの機能は、例えばコンピュータ・プログラムのコード化のように、コード化された集積回路を伴うコンピュータ又は電子データ・プロセッサのようなプロセッサにより達成されることができる。一般的に、本発明の実施例をインププリメントする方法は、オペレーティング・システムの一部、特定なアプリケーション・プログラム、プログラム、モジュール、オブジェクト又は命令のシーケンスであり得る。一般的に、本発明のソフトウエアは、ローカル・コンピュータによりコンピュータ読み取り可能な命令に変換されて実行可能な命令になる複数の命令を含む。更に、プログラムは、これに関連してローカルに維持され又はメモリ内で探索される変数及びデータ構造を含む。更に、これらのプログラムは、これらを本発明の特定な実施例に実装するためにアプリケーション・メソッドに基づいて同定され得る。本発明の機能をインプリメントするためのコンピュータ読み取り可能な命令が実行されると、信号坦持媒体は、本発明の実施例を示す。
【００６２】
本発明に従う、開発者のためのプロジェクト開発環境を与える方法、開発者のためのプロジェクト開発環境を与える装置及びプロジェクト開発システムが幾つかの例示的な実施例を使用して詳細に説明されたが、これらの実施例は本発明の全てを網羅するものではなく、本発明の精神及び範囲から逸脱することなく種々な変更及び修正が当業者によりなされ得ることが明らかである。従って、本発明はこれらの実施例に限定されない。
【図面の簡単な説明】
【００６３】
【図１】本発明の実施例に従う開発者のためのプロジェクト開発環境を提供する方法を示すフローチャートである。
【図２】本発明の実施例に従うプロジェクト製作物依存性の例を示す図である。
【図３】本発明の実施例に従うプロジェクト製作物の例を示す図である。
【図４】本発明の実施例に従うプロジェクト製作物の他の例を示す図である。
【図５】本発明の実施例に従う開発者のためのプロジェクト開発環境を提供する装置を示すブロック図である。
【図６】本発明の実施例に従うプロジェクト開発システムを示すブロック図である。
【符号の説明】
【００６４】
５００  プロジェクト開発環境を与える装置
５０１  プロジェクト製作物フィルタ・ユニット
５０２  物理的製作物供給ユニット
５０３  論理的製作物発生ユニット
５０４  送出ユニット
６００  プロジェクト開発システム
６０１  プロジェクト管理ツール
６０２  バージョン・コントロール・システム
６０３  統合開発環境
【図１】
0005475979.tif 000003
【図２】
0005475979.tif 000004
【図３】
0005475979.tif 000005
【図４】
0005475979.tif 000006
【図５】
0005475979.tif 000007
【図６】
0005475979.tif 000008