(57)【特許請求の範囲】
【請求項１】
ソフトウェア並行開発のタスクを管理するタスク管理装置と作業中のソースコードを一元管理する共通レポジトリとに接続されるソフトウェア開発支援装置であって、
前記共通レポジトリにチェックインするソースコードを検出するチェックイン検出部と、
チェックインしたソースコードに所定のアノテーションが挿入されているか否かを判断するアノテーション解析部と、
前記所定のアノテーションが挿入されているソースコードに記述された一時インターフェースに対応するスタブコードを生成し、前記共通レポジトリにチェックインするスタブコード生成部と、
前記一時インターフェースを実装するタスクを生成して前記タスク管理装置に登録するともに、該タスク管理装置から該タスクのタスクＩＤを取得するタスク生成部と、
前記タスク管理装置から取得した前記タスクＩＤを記述した所定のアノテーションを前記スタブコードに挿入するとともに、前記チェックインしたソースコードに挿入された前記アノテーションに該タスクＩＤを記述するアノテーション生成部と、
前記チェックインしたソースコードの前記アノテーションに記述されたタスクＩＤを持つタスクに対して、該ソースコードに関するコメントを付加するコメント付加部と
を含む、装置。
【請求項２】
前記チェックインしたソースコードに含まれる前記一時インターフェースは、該ソースコードと依存関係にある他のソースコードを呼び出すための仮コードである、請求項１に記載の装置。
【請求項３】
前記チェックインしたソースコードに挿入された前記アノテーションには、前記一時インターフェースを実装するタスクの担当者およびステータスが属性として記述され、
前記アノテーション生成部は、前記アノテーションに記述されたタスクＩＤを持つタスクの担当者およびステータスに係る情報を前記タスク管理装置から取得し、該情報に基づいて該アノテーションに記述された前記属性を更新する、請求項１または２に記載の装置。
【請求項４】
前記チェックインしたソースコードに挿入された前記アノテーションには、前記一時インターフェースを実装するタスクの担当者およびステータスが属性として記述され、各属性について属性値を参照するためのＵＲＬが記述され、
前記アノテーション生成部は、前記アノテーションに記述されたタスクＩＤを持つタスクの担当者およびステータスに係る情報を前記タスク管理装置から取得し、該情報を前記属性値として前記ＵＲＬにリンクさせる、請求項１または２に記載の装置。
【請求項５】
コンピュータにソフトウェア並行開発において依存関係にあるタスクの担当者間のコミュニケーションを支援させる方法であって、前記コンピュータが、
作業中のソースコードを一元管理する共通レポジトリにチェックインするソースコードを検出するステップと、
チェックインしたソースコードに所定のアノテーションが挿入されているか否かを判断するステップと、
前記所定のアノテーションが挿入されているソースコードに記述された一時インターフェースに対応するスタブコードを生成し、前記共通レポジトリにチェックインするステップと、
前記一時インターフェースを実装するタスクを生成して並行開発のタスクを管理するタスク管理装置に登録するともに、該タスク管理装置から該タスクのタスクＩＤを取得するステップと、
前記タスク管理装置から取得した前記タスクＩＤを記述した所定のアノテーションを前記スタブコードに挿入するとともに、前記チェックインしたソースコードに挿入された前記アノテーションに該タスクＩＤを記述するステップと、
前記チェックインしたソースコードの前記アノテーションに記述されたタスクＩＤを持つタスクに対して、該ソースコードに関するコメントを付加するステップと
を実行する方法。
【請求項６】
前記チェックインしたソースコードに含まれる前記一時インターフェースは、該ソースコードと依存関係にある他のソースコードを呼び出すための仮コードである、請求項５に記載の方法。
【請求項７】
前記チェックインしたソースコードに挿入された前記アノテーションには、前記一時インターフェースを実装するタスクの担当者およびステータスが属性として記述され、
前記アノテーションに記述されたタスクＩＤを持つタスクの担当者およびステータスに係る情報を前記タスク管理装置から取得し、該情報に基づいて該アノテーションに記述された前記属性を更新するステップをさらに含む、請求項５または６に記載の方法。
【請求項８】
前記チェックインしたソースコードに挿入された前記アノテーションには、前記一時インターフェースを実装するタスクの担当者およびステータスが属性として記述され、各属性について属性値を参照するためのＵＲＬが記述され、
前記アノテーションに記述されたタスクＩＤを持つタスクの担当者およびステータスに係る情報を前記タスク管理装置から取得し、該情報を前記属性値として前記ＵＲＬにリンクさせるステップをさらに含む、請求項５または６に記載の方法。
【請求項９】
コンピュータに、請求項５〜８のいずれか一項に記載の方法の各ステップを実行させるためのコンピュータ実行可能なプログラム。
【請求項１０】
ソフトウェア並行開発において依存関係にあるタスクの担当者間のコミュニケーションをコンピュータが支援する方法であって、前記コンピュータが、
第１の担当者が第１のソースコードを作成する際に、該第１のソースコードが依存する依存コードの存在を表すメタデータを該第１のソースコードに挿入するステップと、
前記メタデータの検出に応答して、前記依存コードを作成するタスクを生成するステップと、
前記依存コードを作成するタスクを担当する第２の担当者と該タスクのステータスを表すメタデータを前記第１のソースコードに挿入するステップと
を実行する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発支援技術に関し、より詳細には、開発者間のコミュニケーションを支援する技術に関する。
【背景技術】
【０００２】
ソフトウェア開発プロジェクトの進行を管理するためのシステムが提供されている（例えば、特開２００７−２７２６５５号公報）。ここで、複数の作業者による並行開発においては、一つの要求を実現する上で、ある開発者が担当するコンポーネントＤが別の開発者が担当するコンポーネントＰに依存するといったことが生じる。
【０００３】
従来では、このような場合、コンポーネントＤの開発者は、電話、電子メール、ＦＡＸなどの人間系のコミュニケーションを使ってコンポーネントＰの開発者にコンタクトを取り、作業を早く終わらせるように催促していた。
【０００４】
しかし、依存先の進捗状況を常に気にかけながら、その担当者に対して何度も催促を繰り返すといった作業は、コンポーネントＤの開発者にとって大きな心理的負担となる。さらに、コンポーネントＤの開発者が複数の作業を抱えて忙殺されているような場合には、コンポーネントＰの開発者に対して催促すること自体を忘れるといったことが起こり、最悪の場合、コンポーネントＤの開発が締め切りに間に合わなくなるといった事態を招く。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２７２６５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、上記従来技術における課題に鑑みてなされたものであり、本発明は、ソフトウェアの並行開発において、依存関係にあるタスクの担当者間のコミュニケーションを支援する新規な方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明者は、依存関係にあるタスクの担当者間のコミュニケーションを支援する方法につき鋭意検討した結果、依存元の作業コードに挿入したアノテーションをキーとして開発者間のコミュニケーションをシステマティックに実行する構成に想到し、本発明に至ったのである。
【０００８】
すなわち、本発明によれば、ソフトウェア並行開発のタスクを管理するタスク管理装置と作業中のソースコードを一元管理する共通レポジトリとに接続されるソフトウェア開発支援装置であって、前記共通レポジトリにチェックインするソースコードを検出するチェックイン検出部と、チェックインしたソースコードに所定のアノテーションが挿入されているか否かを判断するアノテーション解析部と、前記所定のアノテーションが挿入されているソースコードに記述された一時インターフェースに対応するスタブコードを生成し、前記共通レポジトリにチェックインするスタブコード生成部と、前記一時インターフェースを実装するタスクを生成して前記タスク管理装置に登録するともに、該タスク管理装置から該タスクのタスクＩＤを取得するタスク生成部と、前記タスク管理装置から取得した前記タスクＩＤを記述した所定のアノテーションを前記スタブコードに挿入するとともに、前記チェックインしたソースコードに挿入された前記アノテーションに該タスクＩＤを記述するアノテーション生成部と、前記チェックインしたソースコードの前記アノテーションに記述されたタスクＩＤを持つタスクに対して、該ソースコードに関するコメントを付加するコメント付加部とを含む装置が提供される。
【発明の効果】
【０００９】
上述したように、本発明によれば、依存関係にあるタスクの担当者間のコミュニケーションを支援する新規な方法が提供される。本発明によれば、依存元の開発者は、依存先の進捗状況に煩わされることなく、自分のペースで作業を進めることが可能になる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態のソフトウェア開発支援装置を含むソフトウェア開発システムを示す図。
【図２】本実施形態のソフトウェア開発支援装置の機能ブロック図。
【図３】本実施形態のソフトウェア開発支援装置の機能を説明するための概念図。
【図４】本実施形態のソフトウェア開発支援装置の機能を説明するための概念図。
【図５】アノテーションが挿入された作業コードを示す図。
【図６】スタブコード生成部が生成したスタブコードを示す図。
【図７】本実施形態のソフトウェア開発支援装置の機能を説明するための概念図。
【図８】アノテーションが挿入されたスタブコードおよび作業コードを示す図。
【図９】本実施形態のソフトウェア開発支援装置の機能を説明するための概念図。
【図１０】アノテーションが挿入された作業コードを示す図。
【図１１】本実施形態のソフトウェア開発支援装置の機能を説明するための概念図。
【図１２】本実施形態のソフトウェア開発支援装置の機能を説明するための概念図。
【図１３】本実施形態のソフトウェア開発支援装置の機能を説明するための概念図。
【図１４】一時インターフェースが実装された作業コードを示す図。
【図１５】本実施形態のソフトウェア開発支援装置が実行する処理を示すフローチャート。
【発明を実施するための形態】
【００１１】
以下、本発明を図面に示した実施の形態をもって説明するが、本発明は、図面に示した実施の形態に限定されるものではない。なお、以下に参照する各図においては、共通する要素について同じ符号を用い、適宜、その説明を省略するものとする。
【００１２】
図１は、本発明の実施形態であるソフトウェア開発支援装置１００が導入されたソフトウェア開発システム１０００を示す。ソフトウェア開発システム１０００は、タスク管理装置２００と、ソースコード管理装置３００と、ソフトウェア開発支援装置１００と、複数の作業用クライアント端末４００とを含み、各装置は、ＬＡＮ、ＶＰＮ、インターネットなどとして参照されるネットワーク５００を介して接続されている。
【００１３】
図２は、本実施形態のソフトウェア開発支援装置１００の機能ブロックをソフトウェア開発システム１０００を構成する他の装置とともに示している。本実施形態のソフトウェア開発支援装置１００の説明に入る前に、ソフトウェア開発支援装置１００の導入先である、従来のソフトウェア開発システム１０００の機能について、図２に基づいて概説する。
【００１４】
タスク管理装置２００は、開発の要求仕様、各要求仕様に関する作業タスク、障害報告などを管理し、プロジェクトの進行をコントロールする装置であり、タスクを登録するタスクレポジトリ２０２と通知部２０４を含んで構成されている。通知部２０４は、タスクレポジトリ２０２を常に監視し、タスクに発生したイベントに応答して、必要な情報を当該タスクの関係者に通知する。
【００１５】
一方、ソースコード管理装置３００は、ソフトウェア開発における各工程のコード情報を一元管理する装置であり、共通レポジトリ３０２を含んで構成されている。共通レポジトリ３０２は、開発環境およびテストビルドから参照可能に構成される開発チーム共通のレポジトリ領域であり、各開発者は、各自の作業内容について、その差分情報（作業コード）を、逐次、共通レポジトリ３０２にアップデートする（以下、この行為をチェックインという）。
【００１６】
通常、開発者は、作業コードのチェックインと同時に、タスク管理装置２００に対して作業の進捗状況を報告することが義務づけられる。図２に示す例の場合、開発者Ａは、共通レポジトリ３０２にチェックインした後（Ｓ１）、チェックインした作業コードに対応するタスクに進捗状況などに関するコメントを付加する（Ｓ２）。このとき、通知部２０４は、タスクにコメントが付加されたことを検知し、その内容を当該タスクの関係者である開発者Ｂに通知する（Ｓ３）。なお、タスク管理装置２００およびソースコード管理装置３００が有するその他の機能については、本発明の要旨と直接関係がないので、これ以上の説明は省略する。
【００１７】
続いて、本実施形態のソフトウェア開発支援装置１００の構成について説明する。ソフトウェア開発支援装置１００は、チェックイン検出部１０１、アノテーション解析部１０２、スタブコード生成部１０３、タスク生成部１０４、アノテーション生成部１０５、およびコメント付加部１０６を含んで構成されている。
【００１８】
チェックイン検出部１０１は、ソースコード管理装置３００の共通レポジトリ３０２を常に監視し、共通レポジトリ３０２にチェックインするソースコードを検出して取得する機能部である。アノテーション解析部１０２は、チェックイン検出部１０１が取得したソースコードに挿入されたアノテーションを解析する機能部である。
【００１９】
スタブコード生成部１０３は、依存元のソースコードに含まれる一時インターフェース（後述する）に対応するスタブコードを生成する機能部である。タスク生成部１０４は、一時インターフェースを実装するタスクを生成してタスク管理装置２００に登録する機能部である。
【００２０】
アノテーション生成部１０５は、スタブコード生成部１０３が生成したスタブコードおよび依存元のソースコードに対して、所定のアノテーションを挿入する機能部である。コメント付加部１０６は、共通レポジトリ３０２にチェックインしたソースコードに挿入されたアノテーションが提供する情報に基づいて、当該ソースコードに関するコメントを生成し、アノテーションによって指定されるタスクに生成したコメントを付加する機能部である。
【００２１】
以上、本実施形態のソフトウェア開発支援装置１００の構成について概説してきたが、次に、本実施形態のソフトウェア開発支援装置１００が実現する開発者間のシステマティックなコミュニケーションの機構について、具体例に基づいて説明する。
【００２２】
最初に、図３を参照されたい。図３に示す例においては、計画時の要求（Requirement)において、コンポーネントＤがコンポーネントＰに依存することが定義されている。コンポーネントＤの開発者である「andy」は、タスク管理装置２００が管理する要求仕様を参照し、コンポーネントＤが使用する関数「getResult」が未だ作成されていないことを知る。
【００２３】
続いて、図４を参照して説明を続ける。関数「getResult」が未だ作成されていないことを知った「andy」は、コンポーネントＤの中の該当する作業コード（すなわち、関数「getResult」を使用するコード）の中に一時インターフェースを記述し、一時インターフェースに対して所定のアノテーションを挿入する（Ｓ１）。
【００２４】
図５（ａ）は、一時インターフェース１２が記述されたコンポーネントＤの作業コード６００(作業コードＤ’)を示す。ここで、一時インターフェースとは、依存元のソースコードの開発者が想定する依存先のソースコードを呼び出すため仮のコード（クラス生成、関数呼び出しなど）であり、図５（ａ）に示す例においては、コンポーネントＰが提供すべき関数「getResult」を呼び出すためのＡＰＩ「クラスFoo  int result = foo.getResult (in1, in2 );」が一時インターフェース１２として記述されている。
【００２５】
続いて、「andy」は、記述した一時インターフェース１２に対してアノテーションを挿入する。本実施形態において、アノテーションとは、一時インターフェース１２に対する注釈として付与されるメタデータを意味し、予め決められたフォーマットの文字列等を識別子として含む。図５（ｂ）は、一時インターフェース１２に対してアノテーション１４が挿入されたコンポーネントＤの作業コード６０２(作業コードＤ’)を示す。図５（ｂ）に例示するアノテーション１４においては、「@request to implement」等の文字列が識別子として記述される他、属性として、一時インターフェースを実装するタスクの担当者（owner）およびステータス（status）が用意され、各属性に初期値「owner：空白（作業者未定）／status：open（未着手）」がセットされている。なお、本実施形態においては、ユーザにアノテーションを予め決められた正しいフォーマットで挿入させるために適切なＵＩを提供するようにしてもよい。
【００２６】
図４に戻って説明を続ける。「andy」は、アノテーションを挿入した作業コード６０２(作業コードＤ’)を共通レポジトリ３０２にチェックインする（Ｓ２）。以上の手順を踏んだ後は、タスク管理装置２００に対してコンポーネントＰの進捗状況を頻繁に問い合わせる必要はなく、「andy」は、自分のペースで作業を続けることできる。
【００２７】
一方で、ソフトウェア開発支援装置１００のチェックイン検出部１０１は、先に説明したように、共通レポジトリ３０２を常に監視しており、「andy」のチェックインを検出して、その作業コード６０２(作業コードＤ’)を取得（コピー）する（Ｓ３）。
【００２８】
アノテーション解析部１０２は、チェックイン検出部１０１が取得した作業コード６０２を解析し、挿入されたアノテーション１４にタスクＩＤが記述されているか否かを判断する。この場合、図５（ｂ）に示す作業コード６０２のアノテーション１４にはタスクＩＤが記述されていないので、スタブコード生成部１０３に対してスタブコードの生成を依頼する。
【００２９】
スタブコード生成部１０３は、上記依頼に応答して、アノテーション１４が付与された一時インターフェース１２「int result = foo.getResult (in1, in2 );」を抽出し、一時インターフェース１２の実装クラスとしてスタブコードを生成する。図６は、スタブコード生成部１０３が生成したスタブコード７００を示す。スタブコード生成部１０３は、生成したスタブコード７００（作業コードＰ’）を共通レポジトリ３０２にチェックインする（Ｓ４）。
【００３０】
タスク生成部１０４は、スタブコード７００をチェックインしたことに応答して、一時インターフェース１２を実装するタスク（以下、Ｐ’の実装タスクという）を生成し、タスク管理装置２００に登録する（Ｓ５）。このとき、タスク管理装置２００は、ソフトウェア開発支援装置１００をＰ’の実装タスクの関係者として登録する。さらに、タスク生成部１０４は、登録したＰ’の実装タスクのタスクＩＤ「1234」をタスク管理装置２００から取得する（Ｓ６）。
【００３１】
タスク管理装置２００は、Ｐ’の実装タスクが登録されたことに応答して、Ｐ’の実装タスクをコンポーネントオーナー（例えば、開発リーダなど）にアサインする。コンポーネントオーナーは、「bob」に作業コードＰ’をアサインし、Ｐ’の実装タスクのオーナーを「bob」に変更する。タスク管理装置２００の通知部２０４は、オーナーが「bob」に変更されたことに応答して、Ｐ’の実装タスクとスタブコードの格納場所を作業コードＰ’の実装担当者である「bob」に通知する（Ｓ７）。
【００３２】
続いて、図７を参照して説明を続ける。アノテーション生成部１０５は、スタブコード生成部１０３が生成したスタブコード７００に対して、「@requested」等の文字列が識別子として記述された所定のアノテーションを挿入する。このとき、アノテーション生成部１０５は、当該アノテーションに対して、タスク生成部１０４が取得したタスクＩＤ「1234」および一時インターフェースの実装を要求した担当者（creator）を属性として記述する。
【００３３】
加えて、アノテーション生成部１０５は、先にチェックイン検出部１０１が取得した「andy」の作業コード６０２(作業コードＤ’)に挿入されたアノテーション１４に対して、タスク生成部１０４が取得したタスクＩＤ「1234」を記述する。
【００３４】
アノテーション生成部１０５は、タスクＩＤ「1234」を記述した作業コードＰ’（スタブコード)および作業コードＤ’を共通レポジトリ３０２にチェックインする（Ｓ４）。その結果、差分情報がアップデートされる。
【００３５】
図８（ａ）は、差分情報がアップデートされたスタブコード７０２を示す。図８（ａ）に示すように、スタブコード７０２には、アノテーション２４が挿入されている。アノテーション２４には、「@requested」等の文字列が識別子として記述される他、属性として、一時インターフェースの実装を要求した担当者（creator）およびタスクＩＤ（work item）が表示され、それぞれの値として、「andy」および「1234」がセットされている。
【００３６】
一方、図８（ｂ）は、差分情報がアップデートされた作業コード６０４(作業コードＤ’)を示す。図８（ｂ）に示すように、作業コード６０４のアノテーション１４には、新たに属性としてタスクＩＤ（work item）が表示され、その値として「1234」がセットされている。
【００３７】
図７に戻って説明を続ける。この時点で、「andy」が共通レポジトリ３０２との同期処理を実行する（Ｓ９）。その結果、作業コード６０４(作業コードＤ’)が「andy」のローカルにコピーされる（以下、共通レポジトリ３０２との同期処理をチェックアウトという）。「andy」は、作業ウィンドウに表示された作業コード６０４(作業コードＤ’)のアノテーション１４にタスクＩＤ「1234」が指定されたことを確認し、関数「getResult」の実装タスクが登録されたことを知る。
【００３８】
続いて、図９を参照して説明を続ける。作業コードＰ’の実装担当者「bob」は、タスク管理装置２００からの通知を受けて、スタブコード７０２をチェックアウトし（Ｓ１）、作業コードＰ’の実装を開始する（Ｓ２）。このとき、「bob」は、タスク管理装置２００が管理するＰ’の実装タスクのステータスを「open」から「in  progress（作業中）」に更新する（Ｓ３）。
【００３９】
タスク管理装置２００の通知部２０４は、Ｐ’の実装タスクのステータスが更新されたことに応答して、Ｐ’の実装タスクの関係者として登録されたソフトウェア開発支援装置１００に対してＰ’の実装タスクのステータスが更新されたことを通知する（Ｓ４）。通知を受け取ったソフトウェア開発支援装置１００のアノテーション生成部１０５は、公開ＡＰＩ等の適切な手段を使用して、タスク管理装置２００からＰ’の実装タスクの担当者情報（owner）およびステータス情報(status)を取得し（Ｓ５）、取得した当該情報に基づいてアノテーション１４の属性「owner」および属性「status」を更新する。
【００４０】
具体的には、アノテーション生成部１０５は、タスク管理装置２００から取得した情報に基づいて「andy」の作業コード６０４(作業コードＤ’)のアノテーション１４の属性「owner」に「bob」をセットし、属性「status」を「open」から「in  progress」に書き換えた後、アノテーション１４を修正した作業コード６０６(作業コードＤ’)を共通レポジトリ３０２にチェックインする（Ｓ６）。その結果、差分情報がアップデートされる。
【００４１】
図１０は、差分情報がアップデートされた作業コード６０６を示す。図１１に示すように、作業コード６０６のアノテーション１４においては、属性「owner」に「bob」が、属性「status」には「in  progress」がそれぞれセットされている。
【００４２】
図９に戻って説明を続ける。この時点で、「andy」がチェックアウトすると（Ｓ７）、作業ウィンドウには、作業コード６０６(作業コードＤ’)が表示される。「andy」は、作業コードＤ’のアノテーション１４に「owner：bob／status：in  progress」と記述されていることを確認し、関数「getResult」の実装タスクが「bob」によって着手されたことを知る。
【００４３】
以上、アノテーションの属性（担当者・ステータス）を更新する処理について説明したが、次に、図１１に基づいて、アノテーションの属性を更新する処理の別法を説明する。
【００４４】
図１１に示す実施形態においては、「andy」は、ソフトウェア開発支援装置１００から提供される所定のＵＩを介して、作業コードＤ’に対して所定のアノテーションを挿入する（Ｓ１）。
【００４５】
このとき、アノテーション内の属性を記述する領域には、下記に例示するように属性値を参照するためのＵＲＬが自動的に記述される。
owner:${taskurl}/owner
status:${taskurl}/status
【００４６】
「andy」は、アノテーションを挿入した作業コードＤ’をチェックインする（Ｓ２）。その後、共通レポジトリ３０２にスタブコードを生成し、タスク管理装置２００にＰ’の実装タスクを登録する手順は上述したのと同様であるので説明を省略する。
【００４７】
ここで、本実施形態においては、アノテーション生成部１０５は、タスク管理装置２００に登録したタスクを継続的に監視し（Ｓ３）、当該タスクの担当者およびステータスの更新内容を、当該タスクのタスクＩＤが埋め込まれたアノテーションに記述された参照用ＵＲＬにリンクさせて属性データベース１０７で管理する。そして、「andy」が作業コードＤ’をローカルで開く度に、「andy」のクライアントは、作業コードＤ’内に記述された参照用ＵＲＬに属性（担当者・ステータス）の更新内容を属性データベース１０７に読みにいき、クライアント側で読み出した属性情報をアノテーションに合成して、ユーザに表示する。
【００４８】
続いて、図１２を参照して説明を続ける。コンポーネントＤの開発者「andy」は、作業コードＤ’に関係するコードを変更する（Ｓ１）。ここで、作業コードＤ’に関係するコードの変更とは、作業コードＤ’が記述されているメソッドの変更等を意味し、「foo.getResult()」の呼び出しに続く処理の追加などがこれに該当する。
【００４９】
「andy」は、作業コードＤ’ に関係するコードを変更したファイルを共通レポジトリ３０２にチェックインする（Ｓ２）。ソフトウェア開発支援装置１００のチェックイン検出部１０１は、「andy」のチェックインを検出して、そのファイルを取得（コピー）する（Ｓ３）。
【００５０】
アノテーション解析部１０２は、チェックイン検出部１０１が取得したファイルに含まれる作業コードＤ’を解析し、挿入されたアノテーション１４にタスクＩＤが記述されているか否かを判断する。この場合、作業コードＤ’にはタスクＩＤ「1234」が記述されているので、アノテーション解析部１０２は、タスクＩＤ「1234」をコメント付加部１０６に通知して、コメントの生成を依頼する。
【００５１】
コメント付加部１０６は、アノテーション解析部１０２からの依頼に応答して、チェックイン検出部１０１が取得した作業コードＤ’を解析し、ファイルの変更内容（コードの差分など）を含むコメントを生成する。その後、コメント付加部１０６は、通知されたタスクＩＤ「1234」を持つタスクに生成したコメントを付加する（Ｓ４）。この場合、タスク管理装置２００で管理されるＰ’の実装タスクにコメントが付加される。
【００５２】
タスク管理装置２００の通知部２０４は、Ｐ’の実装タスクにコメントが付加されたことに応答して、Ｐ’の実装タスクの担当者である「bob」にコメントを通知する（Ｓ５）。「bob」は、このコメントが示すコンポーネントＤの進捗状況から、自分の作業ペースを上げなければならないことを知る。
【００５３】
続いて、図１３を参照して説明を続ける。「bob」は、作業コードＰ’の実装を完了すると（Ｓ１）、共通レポジトリ３０２に実装した作業コードＰ’をチェックインする（Ｓ２）。図１４は、一時インターフェース１２が実装された作業コード７０３を示す。ソフトウェア開発支援装置１００のチェックイン検出部１０１は、「bob」のチェックインを検出して、その作業コード７０３を取得（コピー）する（Ｓ３）。
【００５４】
アノテーション解析部１０２は、チェックイン検出部１０１が取得した作業コード７０３を解析し、挿入されたアノテーション２４にタスクＩＤが記述されているか否かを判断する。この場合、作業コード７０３にはタスクＩＤ「1234」が記述されているので、アノテーション解析部１０２は、タスクＩＤ「1234」をコメント付加部１０６に通知して、コメントの生成を依頼する。
【００５５】
コメント付加部１０６は、アノテーション解析部１０２からの依頼に応答して、チェックイン検出部１０１が取得した作業コード７０３を解析し、作業コード７０３の変更内容（コードの差分など）を含むコメントを生成する。を含むコメントを生成する。その後、コメント付加部１０６は、アノテーション解析部１０２から通知されたタスクＩＤ「1234」を持つタスクに生成したコメントを付加する（Ｓ４）。この場合、タスク管理装置２００で管理されるＰ’の実装タスクにコメントが付加される。
【００５６】
タスク管理装置２００の通知部２０４は、Ｐ’の実装タスクにコメントが付加されたことに応答して、Ｐ’の実装タスクの関係者である「andy」にコメントの内容を通知する（Ｓ５）。このコメントの内容から関数「getResult」の実装が完了したことを知った「andy」は、共通レポジトリ３０２から実装済みの作業コードＰ’をチェックアウトする（Ｓ６）。「andy」は、チェックアウトした作業コードＰ’の内容を自分の作業コードＤ’に反映させる変更を行い、コンポーネントＤを完成させる（Ｓ７）。
【００５７】
以上、本実施形態のソフトウェア開発支援装置１００を含むソフトウェア開発システム１０００において実行される手順について説明してきたが、次に、本実施形態のソフトウェア開発支援装置１００が実行する処理を図１５に示すフローチャートに基づいて説明する。
【００５８】
ソフトウェア開発支援装置１００が起動すると、共通レポジトリ３０２の監視が開始される（ステップ１０１）。共通レポジトリ３０２へのチェックインを検出すると（ステップ１０２、Ｙｅｓ）、チェックインした作業コードが解析され、所定のアノテーションが挿入されているか否かが判断される（ステップ１０３）。
【００５９】
ステップ１０３において、所定のアノテーションが挿入されていないと判断された場合は（ステップ１０３、Ｎｏ）、再び、ステップ１０１に戻って、共通レポジトリ３０２を監視する。一方、所定のアノテーションが挿入されていると判断された場合は（ステップ１０３、Ｙｅｓ）、ステップ１０４に進む。
【００６０】
ステップ１０４においては、アノテーションにタスクＩＤが記述されているか否かが判断される。タスクＩＤが記述されていないと判断された場合は（ステップ１０４、Ｎｏ）、作業コード内から一時インターフェースを抽出し、その実装クラスであるスタブコードを生成し（ステップ１０５）、ステップ１０６に進む。
【００６１】
ステップ１０６においては、一時インターフェースを実装する作業タスクを生成する。その後、生成した作業タスクをタスク管理装置２００に登録し、当該作業タスクのタスクＩＤを取得して（ステップ１０７）、ステップ１０８に進む。
【００６２】
ステップ１０８においては、取得したタスクＩＤを埋め込んだアノテーションをステップ１０５で生成したスタブコードに挿入するとともに、ステップ１０２で検出した作業コードのアノテーションに取得したタスクＩＤを埋め込んで、ステップ１０９に進む。
【００６３】
ステップ１０９においては、同じタスクＩＤが埋め込まれたスタブコードおよび作業コードを共通レポジトリ３０２にチェックインする。その後、処理は、ステップ１０１に戻り、再び、共通レポジトリ３０２の監視を開始する。
【００６４】
一方、ステップ１０４において、アノテーションにタスクＩＤが記述されていると判断された場合は（ステップ１０４、Ｙｅｓ）、チェックインした作業コードに関するコメントを生成し、記述されたタスクＩＤを持つタスク管理装置２００内の作業タスクに生成したコメントを付加する（Ｓ１１０）。その後、処理は、ステップ１０１に戻り、再び、共通レポジトリ３０２の監視を開始する。
【００６５】
以上、説明したように、本発明によれば、依存関係にある開発者間のコミュニケーションが依存元の作業コードに挿入したアノテーションをキーとしてシステマティックに実行される。一般的に、依存関係にある開発者同士は、作業開始当初はお互いを意識しているが、時間の経過とともに徐々になおざりになる傾向があり、必要な連絡・通知等を失念しがちである。この点につき、本発明によれば、依存関係にある開発者は、作業コードの中で互いの状況を自動的に知ることができるので、自分の作業に集中することができる。
【００６６】
以上、本発明について実施形態をもって説明してきたが、本発明は上述した実施形態に限定されるものではなく、その他、当業者が推考しうる実施態様の範囲内において、本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【００６７】
なお、上述したタスク管理装置２００、ソースコード管理装置３００およびソフトウェア開発支援装置１００の各装置の間は、ＴＣＰ／ＩＰなどのトランザクション・プロトコルを使用し、ＲＭＩ(Remote Method Invocation)、ＲＰＣ(Remote Procedure Call)、ＥＪＢ(Enterprise Ｊａｖａ（登録商標） Beans)、ＣＯＲＢＡ(Common Object Broker Architecture)などの分散コンピューティング環境やＨＴＴＰプロトコルを使用して相互接続することができる。また、各装置は、データベースなどに接続するためのＪＤＢＣ(Ｊａｖａ（登録商標）Database Component)およびその他のインターフェースを実装し、ＭｙＳＱＬ、ＤＢ２、ＯＲＡＣＬＥ（商標）、ＰｏｓｔａｇｅＳＱＬ、ＳＱＬｓｅｒｖｅｒ、ＡＣＥＳＳなどのデータベースにアクセスすることが可能とされていてもよい。この他、各装置は、ウェブ・ブラウザを実装し、ＣＧＩ、ＪＡＶＡ（登録商標）、ＰＥＲＬ、ＲＵＢＹなどの言語を使用して実装されるサーバ・プログラムを介して処理を共有させてもよい。また、各装置は、パーソナル・コンピュータ、ワークステーション、サーバなどとして実装することができ、各装置は、いかなる実装形式のシングルコア・プロセッサまたはマルチコア・プロセッサを搭載していてもよく、ＷＩＮＤＯＷＳ（登録商標）、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ（登録商標）などの適切なオペレーティング・システムを実行することができる環境とされている。
【００６８】
また、上述した実施形態の各機能は、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）などのオブジェクト指向プログラミング言語などで記述された装置実行可能なプログラムにより実現でき、本実施形態のプログラムは、ハードディスク装置、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、フレキシブルディスク、ＥＥＰＲＯＭ、ＥＰＲＯＭなどの装置可読な記録媒体に格納して頒布することができ、また他装置が可能な形式でネットワークを介して伝送することができる。
【符号の説明】
【００６９】
１２…一時インターフェース
１４，２４…アノテーション
３０…共通レポジトリ
１００…ソフトウェア開発支援装置
１０１…チェックイン検出部
１０２…アノテーション解析部
１０３…スタブコード生成部
１０４…タスク生成部
１０５…アノテーション生成部
１０６…コメント付加部
１０７…属性データベース
２００…タスク管理装置
２０２…タスクレポジトリ
２０４…通知部
３００…ソースコード管理装置
３０２…共通レポジトリ
４００…作業用クライアント端末
５００…ネットワーク
６００，６０２，６０４，６０６，７０３…作業コード
７００，７０２…スタブコード
１０００…ソフトウェア開発システム
【図１】
0005868246.tif 000002
【図２】
0005868246.tif 000003
【図３】
0005868246.tif 000004
【図４】
0005868246.tif 000005
【図５】
0005868246.tif 000006
【図６】
0005868246.tif 000007
【図７】
0005868246.tif 000008
【図８】
0005868246.tif 000009
【図９】
0005868246.tif 000010
【図１０】
0005868246.tif 000011
【図１１】
0005868246.tif 000012
【図１２】
0005868246.tif 000013
【図１３】
0005868246.tif 000014
【図１４】
0005868246.tif 000015
【図１５】
0005868246.tif 000016