(57)【特許請求の範囲】
【請求項１】
コンピュータプログラムを記憶する第１記憶領域と、
一方のコンピュータプログラムを変更すると他方のコンピュータプログラムも必然的に変更すべきことを示す、コンピュータプログラム間の依存関係に関する情報を記憶する第２記憶領域と、
開発のテーマごとに変更対象のコンピュータプログラムの指定を受け付ける変更対象指定受付部と、
前記第２記憶領域を参照して、指定されたコンピュータプログラムと依存関係にあるコンピュータプログラムを抽出する依存関係参照部と、
指定されたコンピュータプログラムおよび依存関係にあるコンピュータプログラムを前記第１記憶領域から読み出す読み出し部と、
前記読み出し部によって読み出されたコンピュータプログラムに対してテーマにしたがった変更がなされた場合、変更されたコンピュータプログラムによって前記第１記憶領域に記憶されたコンピュータプログラムを上書きする上書き部と、
テーマに関連付けられた通知先に所定の情報を通知する通知部と、を備え、
前記読み出し部は、第１のテーマに対してひとつのコンピュータプログラムを第１のコンピュータプログラムとして前記第１記憶領域から読み出すと共に、第２のテーマに対して前記ひとつのコンピュータプログラムを第２のコンピュータプログラムとして前記第１記憶領域から読み出し、
前記通知部は、前記上書き部が第１のコンピュータプログラムよりも先に第２のコンピュータプログラムによって前記第１記憶領域に記憶された前記ひとつのコンピュータプログラムを上書きすると、前記ひとつのコンピュータプログラムの情報および第２のテーマの情報を第１のテーマに関連付けられた通知先に通知し、
前記通知部は、前記上書き部が第１のコンピュータプログラムよりも先に第２のコンピュータプログラムによって前記第１記憶領域に記憶された前記ひとつのコンピュータプログラムを上書きする予定となっている場合、前記ひとつのコンピュータプログラムの情報および第２のテーマの情報を第１のテーマに関連付けられた通知先に通知することを特徴とする並行開発管理装置。
【請求項２】
コンピュータプログラムを記憶する第１記憶領域と、
一方のコンピュータプログラムを変更すると他方のコンピュータプログラムも必然的に変更すべきことを示す、コンピュータプログラム間の依存関係に関する情報を記憶する第２記憶領域と、
開発のテーマごとに変更対象のコンピュータプログラムの指定を受け付ける変更対象指定受付部と、
前記第２記憶領域を参照して、指定されたコンピュータプログラムと依存関係にあるコンピュータプログラムを抽出する依存関係参照部と、
指定されたコンピュータプログラムおよび依存関係にあるコンピュータプログラムを前記第１記憶領域から読み出す読み出し部と、
前記読み出し部によって読み出されたコンピュータプログラムに対してテーマにしたがった変更がなされた場合、変更されたコンピュータプログラムによって前記第１記憶領域に記憶されたコンピュータプログラムを上書きする上書き部と、
テーマに関連付けられた通知先に所定の情報を通知する通知部と、を備え、
前記読み出し部は、第１のテーマに対してひとつのコンピュータプログラムを第１のコンピュータプログラムとして前記第１記憶領域から読み出すと共に、第２のテーマに対して前記ひとつのコンピュータプログラムを第２のコンピュータプログラムとして前記第１記憶領域から読み出し、
前記通知部は、前記上書き部が第１のコンピュータプログラムよりも先に第２のコンピュータプログラムによって前記第１記憶領域に記憶された前記ひとつのコンピュータプログラムを上書きすると、前記ひとつのコンピュータプログラムの情報および第２のテーマの情報を第１のテーマに関連付けられた通知先に通知し、
前記通知部は、前記受付部が第１のテーマについて前記ひとつのコンピュータプログラムの指定を受け付けた後、第２のテーマについて前記ひとつのコンピュータプログラムの指定を受け付けると、前記ひとつのコンピュータプログラムの情報および第２のテーマの情報を第１のテーマに関連付けられた通知先に通知し、
前記通知部は、前記上書き部が第１のコンピュータプログラムよりも先に第２のコンピュータプログラムによって前記第１記憶領域に記憶された前記ひとつのコンピュータプログラムを上書きする予定となっている場合、前記ひとつのコンピュータプログラムの情報および第２のテーマの情報を第１のテーマに関連付けられた通知先に通知することを特徴とする並行開発管理装置。
【請求項３】
前記上書き部が第１のコンピュータプログラムよりも先に第２のコンピュータプログラムによって前記第１記憶領域に記憶された前記ひとつのコンピュータプログラムを上書きした場合に、第２のコンピュータプログラムに対してなされた第２のテーマにしたがった変更が第１のコンピュータプログラムに反映されているか否かを判定する判定部をさらに備え、
前記上書き部は、前記判定部において反映されていると判定された場合に、前記第１のコンピュータプログラムによって前記第１記憶領域に記憶された前記ひとつのコンピュータプログラムを上書きし、
前記判定部において反映されていると判定されてから前記上書き部が第１のコンピュータプログラムによって前記第１記憶領域に記憶された前記ひとつのコンピュータプログラムを上書きするまでの間、前記ひとつのコンピュータプログラムに対する他の上書きが制限されることを特徴とする請求項１または２に記載の並行開発管理装置。
【請求項４】
前記通知部は、前記判定部において反映されていると判定された場合、その旨を出力することを特徴とする請求項３に記載の並行開発管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプログラムの開発を管理する並行開発管理装置および方法に関する。
【背景技術】
【０００２】
近年、業務システムの複雑化、高機能化に伴い、その業務システムを構築するコンピュータプログラム（以下、単にプログラムと称す）の数も膨大なものとなり、プログラムの内容も高度になってきている。そのようなプログラムの新規開発や修正を好適に管理するために、本出願人は特許文献１においてプログラム開発管理装置を提案している。
【０００３】
このプログラム開発管理装置は、開発すべきプログラムとリリース条件とを開発テーマごとに管理するためのテーマ別プログラムテーブルと、テーマ別プログラムテーブルを参照し、リリース条件が同一のプログラムをひとつのリリース単位として抽出し、リリース単位のディレクトリを生成し、抽出したリリース単位のプログラムを当該ディレクトリに格納するディレクトリ生成部と、を備える。
特許文献１に記載のプログラム開発管理装置によると、リリース時におけるプログラムのリリース漏れやリリース間違い等を大幅に軽減することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２４４９７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に代表されるプログラム開発管理技術においては、２つ以上の開発テーマがひとつのプログラムを指定する、いわゆる並行開発の状態が存在しうる。並行開発の状態では、担当者間の連携不足等のためにプログラム管理上のミスが発生しやすい。
【０００６】
本発明はこうした課題に鑑みてなされたものであり、その目的は、プログラムの並行開発においてミスを低減できる管理技術の提供にある。
【課題を解決するための手段】
【０００７】
本発明のある態様は並行開発管理装置に関する。この並行開発管理装置は、コンピュータプログラムを記憶する記憶領域と、開発のテーマごとに変更対象のコンピュータプログラムの指定を受け付ける受付部と、指定されたコンピュータプログラムを記憶領域から読み出す読み出し部と、読み出し部によって読み出されたコンピュータプログラムに対してテーマにしたがった変更がなされた場合、変更されたコンピュータプログラムによって記憶領域に記憶されたコンピュータプログラムを上書きする上書き部と、テーマに関連付けられた通知先に所定の情報を通知する通知部と、を備える。読み出し部は、受付部が第１および第２のテーマについてひとつのコンピュータプログラムの指定を受け付けた場合に、第１のテーマに対してひとつのコンピュータプログラムを第１のコンピュータプログラムとして記憶領域から読み出すと共に、第２のテーマに対してひとつのコンピュータプログラムを第２のコンピュータプログラムとして記憶領域から読み出す。通知部は、上書き部が第１のコンピュータプログラムよりも先に第２のコンピュータプログラムによって記憶領域に記憶されたひとつのコンピュータプログラムを上書きすると、ひとつのコンピュータプログラムの情報および第２のテーマの情報を第１のテーマに関連付けられた通知先に通知する。
【０００８】
この態様によると、上書き部が第１のコンピュータプログラムよりも先に第２のコンピュータプログラムによって記憶領域に記憶されたひとつのコンピュータプログラムを上書きした場合、第１のテーマに関連付けられた通知先は、ひとつのコンピュータプログラムの情報および第２のテーマの情報を知ることができる。
【０００９】
本発明の別の態様もまた、並行開発管理装置である。この装置は、互いに関連した第１のコンピュータプログラムおよび第２のコンピュータプログラムを記憶する記憶領域と、開発の第１のテーマについて第１のコンピュータプログラムの指定を受け付けると共に開発の第２のテーマについて第２のコンピュータプログラムの指定を受け付ける受付部と、第１のテーマに対して第１のコンピュータプログラムを記憶領域から読み出すと共に第２のテーマに対して第２のコンピュータプログラムを記憶領域から読み出す読み出し部と、第２のテーマの情報を第１のテーマに関連付けられた通知先に通知する通知部と、を備える。
【００１０】
この態様によると、互いに関連した第１のコンピュータプログラムおよび第２のコンピュータプログラムを第１のテーマおよび第２のテーマがそれぞれ指定する場合、第１のテーマに関連付けられた通知先は第２のテーマの情報を知ることができる。
【００１１】
なお、以上の構成要素の任意の組み合わせや、本発明の構成要素や表現を装置、方法、システム、プログラム、プログラムを格納した記録媒体などの間で相互に置換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１２】
本発明によれば、プログラムの並行開発においてミスを低減できる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態に係る並行開発管理装置を有するプログラム開発システムを模式的に示す説明図である。
【図２】図１の並行開発管理装置における例示的な一連の処理を示すフローチャートである。
【図３】実施の形態に係る並行開発管理装置の機能および構成を示すブロック図である。
【図４】図３の記憶装置のディレクトリ構成の一例を示す模式図である。
【図５】図４の並行開発管理テーブルの一例を示すデータ構造図である。
【図６】図４の開発テーマ管理テーブルの一例を示すデータ構造図である。
【図７】図４の第１依存関係テーブルの一例を示すデータ構造図である。
【図８】図４の第２依存関係テーブルの一例を示すデータ構造図である。
【図９】図３の並行開発管理装置における例示的な一連の処理を時系列に沿って示すチャートである。
【図１０】図３の並行開発管理装置における例示的な一連の処理を時系列に沿って示すチャートである。
【図１１】図３の並行開発管理装置における例示的な一連の処理を時系列に沿って示すチャートである。
【図１２】第１通知画面の代表画面図である。
【図１３】照会情報入力画面の代表画面図である。
【図１４】第３通知画面の代表画面図である。
【図１５】第４通知画面の代表画面図である。
【発明を実施するための形態】
【００１４】
以下、本発明を好適な実施の形態をもとに図面を参照しながら説明する。各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付するものとし、適宜重複した説明は省略する。
【００１５】
図１は、実施の形態に係る並行開発管理装置１００を有するプログラム開発システム２を模式的に示す説明図である。プログラム開発システム２は、顧客のシステム内に設置されたサーバである本番環境サーバ１１６上で機能しているアプリケーションを構成するプログラムを管理する。プログラム開発システム２は、開発のテーマ（以下、開発テーマと称する）に基づきプログラムの修正、更新、追加等を行い、本番環境サーバ１１６に反映させる。開発テーマは、例えばアプリケーションを変更する目的である。例えば開発テーマ「バグの修正」では、プログラム開発システム２は、発見されたバグに対応する修正をプログラムに施して本番環境サーバ１１６へ配布する。また例えば開発テーマ「新機能追加」では、プログラム開発システム２は、開発されたアプリケーションの新機能に対応する新たなプログラムを本番環境サーバ１１６へ配布する。
【００１６】
プログラム開発システム２は、実施の形態に係る並行開発管理装置１００、複数の（図１では３つの）ユーザ端末１０２、開発環境サーバ１１０、テスト環境サーバ１１２、本番ゲートウェイ１１４、を備える。プログラム開発システム２のそれらの部材はインターネットなどのネットワーク１０８によって互いに接続される。本番ゲートウェイ１１４は本番環境サーバ１１６と不図示のネットワーク等で接続され、本番環境サーバ１１６へのゲートウェイの役割を果たす。
【００１７】
プログラム開発システム２のユーザは、例えばプログラムを開発する開発者、開発のテーマを定め開発の指揮をとる開発リーダ、開発を管理する開発管理者、プログラムの本番環境サーバへの配布（すなわち、リリース）を担当するリリース担当者、を含む。
【００１８】
以下、プログラム開発システム２や並行開発管理装置１００ではプログラムが個別に取り扱われる場合について説明する。しかしながら、例えばプログラムアーカイブ単位と称してもよいような、関連する複数のプログラムの集合またはまとまりを一単位として扱う場合にも、本実施の形態に係る技術的思想を適用できることは、本明細書に触れた当業者には自明である。
【００１９】
図２は、図１の並行開発管理装置１００における例示的な一連の処理を示すフローチャートである。開発リーダは自己のユーザ端末から並行開発管理装置１００にアクセスし、開発テーマを特定する開発テーマＩＤと、開発テーマの名称と、開発テーマの責任者名と、を対応付けて並行開発管理装置１００に登録する。並行開発管理装置１００は、その登録を受け付ける（Ｓ２０２）。登録された開発テーマに従事する開発者は自己のユーザ端末から並行開発管理装置１００にアクセスし、登録された開発テーマにおいて変更する必要があるプログラムを変更対象のプログラムとして指定する。ここで指定されるプログラムは、原則として並行開発管理装置１００の本番系記憶領域（後述）に記憶されているプログラムである。
【００２０】
並行開発管理装置１００はその指定を受け付け、指定されたプログラムを本番系記憶領域から読み出して開発系記憶領域（後述）へ複製する。このようにして開発系記憶領域に複製されたプログラムをプログラムＡとよぶ。並行開発管理装置１００は、プログラムＡを開発環境サーバ１１０へ送信する（Ｓ２０４）。開発者は自己のユーザ端末から並行開発管理装置１００を介して開発環境サーバ１１０にアクセスし、プログラムＡに必要な変更を加える。変更完了後のプログラムＡをプログラムＢと呼ぶ。開発者は、変更完了後、開発環境サーバ１１０においてプログラムＢに対して単体テストを実施する。開発者は、プログラムＢがこの単体テストをパスすると、そのプログラムＢを開発環境サーバ１１０から並行開発管理装置１００に送信する。並行開発管理装置１００は、そのようにして送信されたプログラムＢを受信し、受信したプログラムＢによって開発系記憶領域に記憶されているプログラムＡを上書きする（Ｓ２０６）。
【００２１】
開発テーマにおいて連結・総合テストが必要な場合、並行開発管理装置１００は、プログラムＢをテスト環境サーバ１１２へ送信する（Ｓ２０８）。開発者は自己のユーザ端末から並行開発管理装置１００を介してテスト環境サーバ１１２にアクセスし、プログラムＢを含む連結・総合テストを実施する。この連結・総合テストにパスすると、開発者は自己のユーザ端末から並行開発管理装置１００にアクセスしその旨を並行開発管理装置１００に登録する。並行開発管理装置１００はその登録を受け付ける（Ｓ２１０）。
【００２２】
開発リーダは、開発テーマについて必要な変更等が完了しリリース準備が整ったと判断すると、自己のユーザ端末から並行開発管理装置１００にアクセスし、開発テーマＩＤおよびリリースすべきプログラムを指定してリリースの申請を行う。並行開発管理装置１００はこのリリースの申請を受け付ける（Ｓ２１２）。並行開発管理装置１００は、リリースの申請を受け付けると、リリース対象として指定されたプログラムの並行開発の状況を抽出し、その結果を不図示のプリンタ等で出力する。このように印刷された情報等を基にリリース確認会議にてリリースを承認するか否かが担当者によって議論される。その会議でリリースが承認されると、開発リーダまたは他のユーザは、自己のユーザ端末から並行開発管理装置１００にアクセスし、リリースを承認する。並行開発管理装置１００は、そのリリースの承認を受け付ける（Ｓ２１４）。並行開発管理装置１００は、リリースの承認を受け付けると、プログラムＢを本番ゲートウェイ１１４に送信する（Ｓ２１６）と共に、プログラムＢによって本番系記憶領域に記憶されている読み出し元のプログラムを上書きする。以下、本番系記憶領域に記憶されている読み出し元のプログラムが上書されたことをもって、リリースの完了と定義する。
【００２３】
図３は、実施の形態に係る並行開発管理装置１００の機能および構成を示すブロック図である。ここに示す各ブロックは、ハードウエア的には、コンピュータのＣＰＵ（central processing unit）をはじめとする素子や機械装置で実現でき、ソフトウエア的にはプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウエア、ソフトウエアの組合せによっていろいろなかたちで実現できることは、本明細書に触れた当業者には理解されるところである。
【００２４】
並行開発管理装置１００は、入出力インタフェース部１０、受付部２０、読み出し部３０、テスト・リリース管理部４０、本番環境配布部５０、上書き部６０、通知部７０、記憶装置９０、を備える。
【００２５】
図４は、図３の記憶装置９０のディレクトリ構成の一例を示す模式図である。記憶装置９０は、本番系記憶領域９２、開発系記憶領域９４、管理系記憶領域９６、を含む。本番系記憶領域９２は、本番環境サーバ１１６で稼働中のプログラムと同じプログラムを、本番環境サーバ１１６のものに準ずるディレクトリ構成で記憶する。以下、２つのプログラムが同じである、とは一方のプログラムの内容が他方のプログラムの内容と同じであることを示す。すなわち、それぞれ別々のサーバに保持された２つのプログラムであっても内容が同じであれば同じである。
【００２６】
開発系記憶領域９４は、開発テーマごとに、変更対象として指定されたプログラムを複製して生成されるプログラムを記憶する。開発系記憶領域９４は、並行開発管理装置１００に受け付けられた開発テーマごとに、その開発テーマを特定できる名称のディレクトリを有する。各開発テーマにおいて変更対象として指定されたプログラムを複製して生成されたプログラムは、その開発テーマのディレクトリに入れられる。
【００２７】
管理系記憶領域９６は、並行開発管理テーブル３０２、開発テーマ管理テーブル３０４、第１依存関係テーブル３０６、第２依存関係テーブル３０８、を記憶する。
【００２８】
図５は、並行開発管理テーブル３０２の一例を示すデータ構造図である。並行開発管理テーブル３０２は、管理対象ＩＤ３１０ごとに、開発テーマＩＤ３１２と、ステータスＩＤ３１４と、開始日３１６と、終了日３１８と、リリース申請日３２０と、を対応付けて記憶する。
管理対象ＩＤは、並行開発管理装置１００によって管理される対象を並行開発管理装置１００において特定するＩＤである。上記の通り本実施の形態ではプログラムが個別に取り扱われる場合を説明するので、管理対象ＩＤは、プログラム名やプログラムの並行開発管理装置１００におけるパスなどのプログラムを特定するＩＤである。特に管理対象ＩＤは、本番系記憶領域９２に記憶されているプログラムを特定するＩＤである。
【００２９】
ステータスＩＤは、管理対象ＩＤによって特定されるプログラムの開発テーマにおける状態を特定するＩＤである。この状態には、プログラムの変更やテストが行われている状態である開発中状態と、リリースが申請されてからリリースが完了するまでのリリース申請中状態と、リリースが完了したリリース済み状態と、がある。図５では、ステータスＩＤ「Ｓ１」は開発中状態に、ステータスＩＤ「Ｓ２」はリリース申請中状態に、ステータスＩＤ「Ｓ３」はリリース済み状態に、それぞれ対応する。
【００３０】
各状態は例えば図２を参照して細分化できる。開発中状態は、開発環境サーバ１１０で修正等の変更が行われている変更中状態と、開発環境サーバ１１０において単体テストが完了した単体テスト完了状態と、テスト環境サーバ１１２において連結テストが完了した連結テスト完了状態と、テスト環境サーバ１１２において総合テストが完了した総合テスト完了状態と、に分けることができる。リリース申請中状態は、リリースの承認を待っているリリース承認待ち状態と、リリースが承認されてから実際にリリースが完了するまでのリリース承認済み状態と、に分けられる。
【００３１】
開始日は、開発テーマの開始の日付であり、特に管理対象ＩＤによって特定されるプログラムが変更対象のプログラムとして指定された日付である。
終了日は、開発テーマの終了の日付であり、特に管理対象ＩＤによって特定されるプログラムのリリースが完了した日付である。
リリース申請日は、管理対象ＩＤによって特定されるプログラムのリリースが申請された日付である。
【００３２】
図６は、開発テーマ管理テーブル３０４の一例を示すデータ構造図である。開発テーマ管理テーブル３０４は、開発テーマＩＤ３２２ごとに、開発テーマの内容を端的に示す開発テーマ名３２４と、開発テーマによって変更対象として指定されたプログラムの管理対象ＩＤ３２６と、開発テーマについてリリースが予定される日付であるリリース予定日３２８と、を対応付けて記憶する。
【００３３】
あるプログラムが別のプログラムを呼び出したり参照したりする場合やソースプログラムおよびそれをコンパイルして生成される実行プログラムの場合などのように、複数の異なるプログラムが関連する場合がある。２つのプログラムが関連することは、２つのプログラムが依存関係にある、すなわち一方のプログラムが他方のプログラムに依存することを含む。これは例えば、他方のプログラムを変更すると一方のプログラムも必然的に変更すべきである場合である。以下便宜的に、依存する側のプログラムを「子」、依存される側のプログラムを「親」として説明する。
本実施の形態では、前提として、ひとつの子プログラムに対してひとつの親プログラムのみ設定可能とする。しかしながら、例えば親プログラムと子プログラムとが多対多の場合にも、本実施の形態に係る技術的思想を適用できることは、本明細書に触れた当業者には自明である。
【００３４】
図７は、第１依存関係テーブル３０６の一例を示すデータ構造図である。第１依存関係テーブル３０６は、プログラム間の依存関係を特定する依存関係ＩＤ３３４と、その依存関係における親プログラムの管理対象ＩＤである親管理対象ＩＤ３３６と、を対応付けて記憶する。
【００３５】
図８は、第２依存関係テーブル３０８の一例を示すデータ構造図である。第２依存関係テーブル３０８は、依存関係における子プログラムの管理対象ＩＤである子管理対象ＩＤ３３０と、その依存関係を特定する依存関係ＩＤ３３２と、を対応付けて記憶する。
【００３６】
本実施の形態に係る並行開発管理装置１００では、子プログラムと親プログラムとを直接対応付けるテーブルを用意するかわりに、両者を紐付ける依存関係ＩＤを使用し、依存関係を２つの異なるテーブルで管理する。他の実施の形態では前者も可能であるが、本実施の形態で後者を採用した理由は以下の通りである。
【００３７】
並行開発管理装置１００のユーザが並行開発管理装置１００に親プログラム、子プログラムおよびそれらの依存関係を新規に登録する例示的な手順は以下の通りである。
（１）ユーザは、親プログラムを並行開発管理装置１００の本番系記憶領域９２に登録する。
（２）ユーザは依存関係の依存関係ＩＤを採番し、親プログラムの親管理対象ＩＤと共に並行開発管理装置１００に入力する。並行開発管理装置１００の受付部２０は、入力された依存関係ＩＤと親管理対象ＩＤとを対応付けて第１依存関係テーブル３０６に登録する。
（３）ユーザは子プログラムを並行開発管理装置１００の本番系記憶領域９２に登録すると共に、採番された依存関係ＩＤと子プログラムの子管理対象ＩＤとを並行開発管理装置１００に入力する。並行開発管理装置１００の受付部２０は、入力された子管理対象ＩＤと依存関係ＩＤとを対応付けて第２依存関係テーブル３０８に登録する。
【００３８】
この場合、（２）で依存関係ＩＤを採番してから（３）で子プログラムを登録するので、親プログラムと子プログラムとを同時に登録できない。また、依存関係を登録するためには、親プログラムが本番系記憶領域９２に登録されていなければならない。したがって、親プログラムがいることを確定してから子プログラムを登録することとなるので、誤った登録を抑制することができる。
【００３９】
図３に戻る。
入出力インタフェース部１０は、ネットワーク１０８と接続され、並行開発管理装置１００と外部の装置との通信を制御する。外部の装置は例えば複数のユーザ端末１０２、開発環境サーバ１１０、テスト環境サーバ１１２、本番ゲートウェイ１１４、である。入出力インタフェース部１０は、ネットワーク１０８を介して装置間でデータ等をやりとりする公知の通信技術、例えばＴＣＰ／ＩＰプロトコルにしたがった通信を行う技術を使用して構成される。
【００４０】
受付部２０は、開発テーマごとに変更対象のプログラムの指定を受け付ける。受付部２０は、ログイン部２２、開発テーマ受付部２４、変更対象指定受付部２６、依存関係参照部２８、管理テーブル登録部２９、を含む。
ログイン部２２は、ユーザからのログインを許可するか否かを決定する。ログイン部２２は、入出力インタフェース部１０を介してユーザ端末からのログイン要求を取得すると、ユーザＩＤとパスワードとの入力を促す画面をユーザ端末のディスプレイに表示させるための情報をユーザ端末に送信する。ログイン部２２は、ユーザがユーザ端末に入力したユーザＩＤとパスワードとを入出力インタフェース部１０を介して取得して認証する。ログイン部２２は、認証が成功するとそのユーザのログインを許可してセッションを開始し、失敗すると許可しない。
【００４１】
ユーザＩＤは並行開発管理装置１００のユーザを特定するＩＤである。ユーザＩＤは、ユーザの種別、すなわち開発者であるか、開発リーダであるか、開発管理者であるか、リリース担当者であるか、を識別可能に設定される。
【００４２】
開発テーマ受付部２４は、入出力インタフェース部１０を介して開発リーダのユーザ端末から開発テーマＩＤと開発テーマ名とリリース予定日とを受け付け、開発テーマ管理テーブル３０４に登録する。なお、開発テーマＩＤは開発テーマ受付部２４が決定してもよい。以下、開発テーマ受付部２４によって受け付けられた開発テーマＩＤを受け付け開発テーマＩＤと称す。
【００４３】
変更対象指定受付部２６は、受け付け開発テーマＩＤによって特定される開発テーマに従事する開発者のユーザ端末から、入出力インタフェース部１０を介して、その開発テーマにしたがって変更する必要があると指定されたプログラムの管理対象ＩＤを取得する。変更対象指定受付部２６は、取得された管理対象ＩＤを受け付け開発テーマＩＤと対応付けて開発テーマ管理テーブル３０４に登録する。以下、変更対象指定受付部２６によって取得された管理対象ＩＤを指定管理対象ＩＤ、指定管理対象ＩＤによって特定されるプログラムを指定プログラムと称す。
【００４４】
依存関係参照部２８は、第１依存関係テーブル３０６および第２依存関係テーブル３０８を参照し、指定プログラムと依存関係にあるプログラムの有無を判定する。そのようなプログラムが存在する場合、依存関係参照部２８は、そのようなプログラムの管理対象ＩＤを追加的に受け付け開発テーマＩＤに対応付けて開発テーマ管理テーブル３０４に登録する。すなわち、開発テーマ管理テーブル３０４は、開発テーマの開発テーマＩＤごとに、その開発テーマにおいて変更対象として指定されたプログラムの管理対象ＩＤおよびそのプログラムと依存関係にあるプログラムの管理対象ＩＤを記憶する。
【００４５】
特に依存関係参照部２８は、まず第２依存関係テーブル３０８を参照し、指定管理対象ＩＤに対応する依存関係ＩＤがあればそれを抽出する。次に依存関係参照部２８は、第１依存関係テーブル３０６を参照し、抽出された依存関係ＩＤに対応する親管理対象ＩＤを抽出する。さらに依存関係参照部２８は第２依存関係テーブル３０８を参照し、抽出された親管理対象ＩＤを子管理対象ＩＤとしたときにそれと対応する依存関係ＩＤがあれば抽出する。以下、依存関係参照部２８は第１依存関係テーブル３０６および第２依存関係テーブル３０８を交互に参照する処理を、抽出された親管理対象ＩＤを子管理対象ＩＤとしたときにそれと対応する依存関係ＩＤがなくなるまで繰り返す。
依存関係参照部２８は、上記処理により抽出された全ての親管理対象ＩＤを、受け付け開発テーマＩＤに対応付けて開発テーマ管理テーブル３０４に登録する。
【００４６】
例えば、受け付け開発テーマＩＤは「Ｔ１」であり、指定管理対象ＩＤは「A100_1.pco」である場合を考える。
依存関係参照部２８は、図８に示される第２依存関係テーブル３０８を参照し、依存関係ＩＤ「ｘ１」を抽出する。依存関係参照部２８は、図７に示される第１依存関係テーブル３０６を参照し、親管理対象ＩＤ「MAKEFILE」を抽出する。次に依存関係参照部２８は、図８に示される第２依存関係テーブル３０８を参照し、抽出された親管理対象ＩＤ「MAKEFILE」に対応する依存関係ＩＤ「ｘ２」を抽出する。依存関係参照部２８は、図７に示される第１依存関係テーブル３０６を参照し、親管理対象ＩＤ「A100.exe」を抽出する。依存関係参照部２８は、図８に示される第２依存関係テーブル３０８を参照し、抽出された親管理対象ＩＤ「A100.exe」に対応する依存関係ＩＤはないと判定する。依存関係参照部２８は、抽出された親管理対象ＩＤ「MAKEFILE」、「A100.exe」を受け付け開発テーマＩＤ「Ｔ１」に対応付けて追加的に開発テーマ管理テーブル３０４に登録する。
以下、依存関係参照部２８によって抽出された親管理対象ＩＤを依存管理対象ＩＤ、依存管理対象ＩＤによって特定されるプログラムを依存プログラムと称す。
【００４７】
管理テーブル登録部２９は、指定管理対象ＩＤと、受け付け開発テーマＩＤと、ステータスＩＤとして「Ｓ１」と、開始日として指定管理対象ＩＤが取得された日付と、を対応付けて並行開発管理テーブル３０２に登録する。また管理テーブル登録部２９は、依存管理対象ＩＤと、受け付け開発テーマＩＤと、ステータスＩＤとして「Ｓ１」と、開始日として指定管理対象ＩＤが取得された日付と、を対応付けて並行開発管理テーブル３０２に登録する。
【００４８】
読み出し部３０は、指定プログラムを本番系記憶領域９２から読み出す。読み出し部３０は、開発テーマディレクトリ生成部３２、変更対象複製部３４、変更対象送信部３６、を含む。
開発テーマディレクトリ生成部３２は、受け付け開発テーマＩＤに対応するディレクトリを開発系記憶領域９４に生成する。
【００４９】
変更対象複製部３４は、指定プログラムおよび依存プログラムを本番系記憶領域９２から読み出して複製する。以下、指定プログラムから複製されたプログラムを指定複製プログラム、依存プログラムから複製されたプログラムを依存複製プログラムと称す。変更対象複製部３４は、指定複製プログラムおよび依存複製プログラムを開発テーマディレクトリ生成部３２によって生成されたディレクトリに入れる。変更対象複製部３４における処理の例が図４の破線矢印や一点鎖線矢印で示される。
【００５０】
変更対象送信部３６は、入出力インタフェース部１０を介して開発環境サーバ１１０に指定複製プログラムおよび依存複製プログラムを送信する。
【００５１】
開発者は、開発環境サーバ１１０において、指定複製プログラムおよび依存複製プログラムに受け付け開発テーマＩＤによって特定される開発テーマにしたがった修正等の変更を施し、単体テストを実施する。以下、変更が完了し単体テストをパスした指定複製プログラムを指定変更後プログラム、変更が完了し単体テストをパスした依存複製プログラムを依存変更後プログラムと称す。
【００５２】
テスト・リリース管理部４０は、開発テーマにしたがった変更が完了し単体テストをパスしたプログラムの連結・総合テストおよびリリースを管理する。テスト・リリース管理部４０は、変更後プログラム取得部４２、テスト環境配布部４４、リリース申請受付部４６、リリース認否判定部８０、リリース承認受付部４８、を含む。
【００５３】
変更後プログラム取得部４２は、入出力インタフェース部１０を介して開発環境サーバ１１０から指定変更後プログラムおよび依存変更後プログラムを取得する。変更後プログラム取得部４２は、取得された指定変更後プログラムおよび依存変更後プログラムによって、開発系記憶領域９４の受け付け開発テーマＩＤに対応するディレクトリに入っている指定複製プログラムおよび依存複製プログラムをそれぞれ上書きする。
【００５４】
テスト環境配布部４４は、受け付け開発テーマＩＤによって特定される開発テーマにおいて連結・総合テストが必要な場合、入出力インタフェース部１０を介して指定変更後プログラムおよび依存変更後プログラムをテスト環境サーバ１１２へ送信する。
【００５５】
リリース申請受付部４６は、入出力インタフェース部１０を介して開発リーダのユーザ端末から、リリース対象の開発テーマを特定するリリース開発テーマＩＤとリリース対象として指定されたプログラムを特定するリリース管理対象ＩＤとを受け付ける。ここでリリース申請受付部４６は、依存関係参照部２８と同様に第１依存関係テーブル３０６および第２依存関係テーブル３０８を参照して、リリース対象として指定されたプログラムと依存関係にあるプログラムがリリース対象とされているか否かを判定し、されていないものがあればそれをリリース対象に加えてもよい。この場合、リリース漏れを抑制することができる。
【００５６】
リリース申請受付部４６は並行開発管理テーブル３０２にアクセスし、受け付けたリリース管理対象ＩＤおよびリリース開発テーマＩＤに対応するステータスＩＤを「Ｓ２」に書き換え、リリース申請日を登録する。
【００５７】
以下、リリース申請受付部４６がリリース開発テーマＩＤとして受け付け開発テーマＩＤを、リリース管理対象ＩＤとして指定管理対象ＩＤおよび依存管理対象ＩＤを、受け付けた場合を考える。
リリース認否判定部８０は、指定プログラムおよび依存プログラムについてリリースの認否を判定する。詳細は後述する。
リリース承認受付部４８は、入出力インタフェース部１０を介して開発リーダまたは他のユーザのユーザ端末から、受け付け開発テーマＩＤによって特定される開発テーマに対するリリースの承認を受け付ける。
【００５８】
本番環境配布部５０は、リリース承認受付部４８によってリリースの承認が受け付けられると、入出力インタフェース部１０を介して指定変更後プログラムおよび依存変更後プログラムを本番ゲートウェイ１１４に送信する。
【００５９】
上書き部６０は、リリース承認受付部４８によってリリースの承認が受け付けられると、指定変更後プログラムおよび依存変更後プログラムによって、本番系記憶領域９２に記憶されている指定プログラムおよび依存プログラムをそれぞれ上書きする。
上書き部６０は、並行開発管理テーブル３０２にアクセスし、指定管理対象ＩＤおよび受け付け開発テーマＩＤに対応するステータスＩＤを「Ｓ３」に書き換え、終了日を登録する。依存管理対象ＩＤについても同様である。
【００６０】
通知部７０は、開発テーマに関連付けられた通知先に所定の情報を通知する。例えば通知部７０は、所定の情報を提示する画面をユーザ端末のディスプレイに表示させるための画面情報を、入出力インタフェース部１０を介してそのユーザ端末に送信する。また例えば通知部７０は、開発リーダや開発者の電子メールアドレス宛に所定の情報を含む電子メールを入出力インタフェース部１０を介して送信する。
通知部７０は、判定結果出力部７１、照会要求受付部７２、指定検知部７４、並行開発情報抽出部７５、追い付き要否判定部７６、並行開発状況提示部７７、を含む。各部の詳細は後述する。
【００６１】
さて、並行開発管理装置１００の運用上、本番系記憶領域９２に記憶されるひとつのプログラムが複数の異なる開発テーマによって指定されることがある。また、本番系記憶領域９２に記憶された関連する２つのプログラムがそれぞれ別の開発テーマによって指定されることもある。これらはいずれもプログラムの並行開発である。
【００６２】
並行開発管理テーブル３０２は、管理対象ＩＤごとに、その管理対象ＩＤによって特定されるプログラムを指定する開発テーマの開発テーマＩＤおよびその管理対象ＩＤによって特定されるプログラムと依存関係にあるプログラム（特に、その管理対象ＩＤによって特定されるプログラムを親プログラムとする子プログラム）を指定する開発テーマの開発テーマＩＤを記憶する。
また、並行開発管理テーブル３０２が管理対象ＩＤと複数の開発テーマＩＤとを対応付けて記憶している場合、並行開発管理装置１００はその管理対象ＩＤによって特定されるプログラムが並行開発の状態にあると認識する。したがって並行開発管理装置１００は、依存関係のために並行開発となるプログラムも並行開発の状態にあるプログラムとして認識することができる。
【００６３】
例えば、親プログラムと子プログラムとがそれぞれ別の開発テーマによって指定された場合、並行開発管理テーブル３０２は親プログラムを特定する管理対象ＩＤに両方の開発テーマの開発テーマＩＤを対応付けて記憶する。また、親プログラムを同じくする２つの子プログラムがそれぞれ別の開発テーマによって指定された場合、並行開発管理テーブル３０２は親プログラムを特定する管理対象ＩＤに両方の開発テーマの開発テーマＩＤを対応付けて記憶する。
【００６４】
並行開発に関する並行開発管理装置１００のより詳しい処理を説明する。
以下、本番系記憶領域９２に記憶され２つの別の開発テーマによって並行開発の状態にあるプログラムを並行開発プログラム、並行開発プログラムを特定する管理対象ＩＤを並行開発管理対象ＩＤ、並行開発プログラムを指定する一方の開発テーマを第１開発テーマ、その開発テーマＩＤを第１開発テーマＩＤ、他方の開発テーマを第２開発テーマ、その開発テーマＩＤを第２開発テーマＩＤと称す。並行開発管理テーブル３０２は、並行開発管理対象ＩＤと、第１開発テーマＩＤおよび第２開発テーマＩＤと、を対応付けて記憶する。また以下の説明は、並行開発プログラムが２つの開発テーマがそのプログラムを直接指定することによって並行開発の状態になった場合および依存関係によって並行開発の状態になった場合の両方に当てはまる。
【００６５】
図９は、並行開発管理装置１００における例示的な一連の処理を時系列に沿って示すチャートである。図９では、並行開発プログラムが指定される際の例示的な処理が示される。
第１開発テーマに従事する開発者は並行開発プログラムまたは並行開発プログラムの子プログラムを指定する（Ｓ４０２）。受付部２０は、並行開発管理対象ＩＤと第１開発テーマＩＤとステータスＩＤ「Ｓ１」とを対応付けて並行開発管理テーブル３０２に登録する（Ｓ４０４）。
【００６６】
開発テーマディレクトリ生成部３２は、第１開発テーマＩＤに対応する第１ディレクトリを開発系記憶領域９４に生成する（Ｓ４０６）。変更対象複製部３４は、並行開発プログラムを本番系記憶領域９２から読み出して複製し、第１複製プログラムを生成する。変更対象複製部３４は、第１複製プログラムを第１ディレクトリに格納する（Ｓ４０８）。変更対象送信部３６は、第１複製プログラムを入出力インタフェース部１０を介して開発環境サーバ１１０に送信する（Ｓ４１０）。
【００６７】
その後、第２開発テーマに従事する開発者は並行開発プログラムまたは並行開発プログラムの子プログラムを指定する（Ｓ４１２）。管理テーブル登録部２９は、登録のために並行開発管理テーブル３０２にアクセスし、並行開発管理対象ＩＤが並行開発管理テーブル３０２に既に登録されていることを検知する。管理テーブル登録部２９は、並行開発管理対象ＩＤおよび第２開発テーマＩＤを指定検知部７４に渡す。指定検知部７４はそれらの情報を受けると、並行開発プログラムについての並行開発を検知する（Ｓ４１４）。
【００６８】
並行開発情報抽出部７５は、指定検知部７４が並行開発を検知すると、並行開発管理テーブル３０２を参照し、並行開発の相手の開発テーマＩＤとして並行開発管理対象ＩＤに対応する第１開発テーマＩＤと、そのステータスＩＤと、を抽出する（Ｓ４１６）。
並行開発状況提示部７７は、並行開発情報抽出部７５によって抽出されたステータスＩＤが「Ｓ１」または「Ｓ２」である場合、すなわちステータスがリリース済みでない場合、並行開発管理対象ＩＤおよび第１開発テーマＩＤをテキストの形で含む第１通知画面５００（図１２で後述）をユーザ端末のディスプレイに表示させるための画面情報を生成する。並行開発状況提示部７７は、生成した画面情報を入出力インタフェース部１０を介して第２開発テーマに従事する開発者のユーザ端末に送信する（Ｓ４１８）。
【００６９】
また並行開発状況提示部７７は、並行開発管理対象ＩＤおよび第２開発テーマＩＤをテキストの形で含む第２通知画面をユーザ端末のディスプレイに表示させるための画面情報を生成する。並行開発状況提示部７７は、第１開発テーマに従事する開発者のセッション中であればそのセッション中に、第１開発テーマに従事する開発者がログアウトしていれば再ログイン後に、生成した画面情報を入出力インタフェース部１０を介して第１開発テーマに従事する開発者のユーザ端末に送信する（Ｓ４２０）。
【００７０】
受付部２０は、並行開発管理対象ＩＤおよび第２開発テーマＩＤを対応付けて並行開発管理テーブル３０２に登録する（Ｓ４２２）。
開発テーマディレクトリ生成部３２は、第２開発テーマＩＤに対応する第２ディレクトリを開発系記憶領域９４に生成する（Ｓ４２４）。
変更対象複製部３４は、並行開発プログラムを本番系記憶領域９２から読み出して複製し、第２複製プログラムを生成する。変更対象複製部３４は、第２複製プログラムを第２ディレクトリに格納する（Ｓ４２６）。
変更対象送信部３６は、第２複製プログラムを入出力インタフェース部１０を介して開発環境サーバ１１０に送信する（Ｓ４２８）。
【００７１】
第１開発テーマにしたがった変更が完了し単体テストをパスした第１複製プログラムを第１変更後プログラム、第２開発テーマにしたがった変更が完了し単体テストをパスした第２複製プログラムを第２変更後プログラムと称す。
第１開発テーマよりも先に第２開発テーマのリリースが完了した場合に、第１変更後プログラムに第２開発テーマにしたがった変更を取り込むことを第１開発テーマが第２開発テーマに「追い付く」と表現する。
【００７２】
図１０は、並行開発管理装置１００における例示的な一連の処理を時系列に沿って示すチャートである。図１０では、並行開発の状況が照会される際の例示的な処理が示される。
第１開発テーマに従事する開発者のユーザ端末は、並行開発の状況を照会するための並行開発照会要求をネットワーク１０８を介して並行開発管理装置１００に送信する（Ｓ４３０）。照会要求受付部７２は、並行開発照会要求を受けると、開発テーマＩＤなどの照会に必要な情報を第１開発テーマに従事する開発者に要求する（Ｓ４３２）。特に照会要求受付部７２は、ユーザＩＤまたは開発テーマＩＤを必須入力項目として照会用の情報の入力を促す照会情報入力画面５０６（図１３で後述）をユーザ端末のディスプレイに表示させるための画面情報を生成する。照会要求受付部７２は、この画面情報を入出力インタフェース部１０を介して第１開発テーマに従事する開発者のユーザ端末に送信する。
【００７３】
第１開発テーマに従事する開発者のユーザ端末は、第１開発テーマＩＤを含む要求された情報を照会要求受付部７２に提供する（Ｓ４３４）。特に照会要求受付部７２は、ユーザ端末のディスプレイに表示された照会情報入力画面５０６に対して入力された情報を、そのユーザ端末から入出力インタフェース部１０を介して取得する。照会要求受付部７２は、取得した情報から第１開発テーマＩＤを抽出する（Ｓ４３６）。
【００７４】
並行開発情報抽出部７５は開発テーマ管理テーブル３０４を参照し、抽出された第１開発テーマＩＤに対応する管理対象ＩＤを抽出する。このようにして抽出された管理対象ＩＤは並行開発管理対象ＩＤを含む。並行開発情報抽出部７５は並行開発管理テーブル３０２を参照し、抽出された管理対象ＩＤのなかから第１開発テーマＩＤ以外の開発テーマＩＤが対応付けられた管理対象ＩＤを選択する。特に、並行開発管理テーブル３０２において並行開発管理対象ＩＤには第１開発テーマＩＤおよび第２開発テーマＩＤが対応付けられているので、並行開発情報抽出部７５は並行開発管理対象ＩＤを選択する（Ｓ４３８）。
【００７５】
追い付き要否判定部７６は、並行開発プログラムについて第１開発テーマが第２開発テーマに追い付く必要があるか否かを判定する（Ｓ４４０）。追い付き要否判定部７６は、上書き部６０が第１変更後プログラムよりも先に第２変更後プログラムによって本番系記憶領域９２に記憶された並行開発プログラムを上書きした場合、第１開発テーマが第２開発テーマに追い付く必要があると判定する。そうでない場合、追い付き要否判定部７６は追い付く必要がないと判定する。
【００７６】
特に追い付き要否判定部７６は並行開発管理テーブル３０２を参照し、並行開発管理対象ＩＤについて、第２開発テーマＩＤに対応するステータスＩＤが「Ｓ３」となっており、かつ、第２開発テーマＩＤに対応する終了日が第１開発テーマＩＤに対応する開始日よりも後となっている場合、第１開発テーマが第２開発テーマに追い付く必要があると判定する。また、追い付き要否判定部７６は、例えば第２開発テーマＩＤに対応するステータスＩＤが「Ｓ１」となっている場合は追い付く必要がないと判定する。
【００７７】
並行開発状況提示部７７は、並行開発情報抽出部７５によって選択された管理対象ＩＤと並行開発の相手の開発テーマＩＤと追い付き要否判定部７６における判定結果とを対応付けて照会元に通知する。特に並行開発状況提示部７７は、並行開発管理対象ＩＤと追い付きの要否と第２開発テーマＩＤとを含む第３通知画面５０８（図１４で後述）をユーザ端末のディスプレイに表示させるための画面情報を生成する。並行開発状況提示部７７は、この画面情報を入出力インタフェース部１０を介して第１開発テーマに従事する開発者のユーザ端末に送信する（Ｓ４４２）。
【００７８】
なお、照会要求受付部７２は、並行開発照会要求に代えて第１開発テーマに従事する開発者のログインを契機として並行開発状況の照会を開始してもよい。
【００７９】
図１１は、並行開発管理装置１００における例示的な一連の処理を時系列に沿って示すチャートである。図１１では、リリースの際の例示的な処理が示される。
第１変更後プログラムが開発環境サーバ１１０から並行開発管理装置１００へ送信され、連結・総合テストが完了すると、第１開発テーマの開発リーダは並行開発プログラムのリリースを申請する（Ｓ４４４）。リリース申請受付部４６はこのリリース申請を受け付ける。
【００８０】
リリース認否判定部８０はリリース申請受付部４６によってリリース申請が受け付けられると、並行開発プログラムについてリリースの認否を判定する。
リリース認否判定部８０は、並行開発管理テーブル３０２を参照し、並行開発プログラムについて（甲）第１開発テーマの開始日からリリース申請日までの間に並行開発の状態になったことがない場合か、または、（乙）第２開発テーマによってリリース申請中とされておらずかつ第２開発テーマに対する追い付きが完了している場合か、または、（丙）第２開発テーマによってリリース申請中とされておらずかつ第２開発テーマに追い付く必要がない場合に、並行開発プログラムをリリースしてもよいと判定する。
【００８１】
（乙）についてより具体的には、リリース認否判定部８０は、並行開発管理テーブル３０２を参照し、並行開発管理対象ＩＤに対応付けられた第２開発テーマＩＤのステータスＩＤを抽出する。リリース認否判定部８０は、抽出されたステータスＩＤが「Ｓ２」である場合、並行開発プログラムについてリリース申請中の第２開発テーマが存在する旨を第１開発テーマに従事する開発者に通知する。リリース認否判定部８０は並行開発プログラムの第１開発テーマによるリリースを禁止してもよい。リリース認否判定部８０は、並行開発管理テーブル３０２にアクセスし、第１開発テーマＩＤに対応するステータスＩＤを「Ｓ１」に戻し、リリース申請日を消去してもよい。
【００８２】
リリース認否判定部８０は、抽出されたステータスＩＤが「Ｓ３」である場合すなわち第１開発テーマによるリリース申請より前に第２開発テーマによるリリースが完了している場合、並行開発プログラムについて第２開発テーマに追い付く必要があると判定する（Ｓ４４６）。リリース認否判定部８０は、第２開発テーマにしたがった変更が第１変更後プログラムに反映されているか否かを判定する（Ｓ４４８）。リリース認否判定部８０はユーザからの申告に基づいてこの判定を行ってもよい。あるいはまたリリース認否判定部８０は、本番系記憶領域９２に記憶され第２開発テーマにしたがった変更が反映されている並行開発プログラムと第１変更後プログラムとを比較することでこの判定を行ってもよい。反映されている場合、リリース認否判定部８０は第２開発テーマに対する追い付きが完了していると判定する。
【００８３】
（丙）についてより具体的には、リリース認否判定部８０は、抽出されたステータスＩＤが「Ｓ１」である場合すなわち第２開発テーマによってリリースもリリース申請もされていない場合、並行開発プログラムについて第２開発テーマに追い付く必要がないと判定する。
【００８４】
判定結果出力部７１は、リリース認否判定部８０において並行開発プログラムをリリースしてもよいと判定された場合、並行開発プログラムの追い付きの状況を入出力インタフェース部１０を介して所定のプリンタから文書として出力する（Ｓ４５０）。リリース会議ではこの文書が追い付き確認のための参考として使用されてもよい。
【００８５】
上書き部６０は、リリース認否判定部８０において並行開発プログラムをリリースしてもよいと判定され、かつ、リリース承認受付部４８によってリリースの承認が受け付けられた場合、第１変更後プログラムによって本番系記憶領域９２に記憶されている並行開発プログラムを上書きする（Ｓ４５２）。
【００８６】
図１２は、第１通知画面５００の代表画面図である。第１通知画面５００は、並行開発管理対象ＩＤ５０２および第１開発テーマＩＤ５０４をテキストの形で含む。第２通知画面も同様の構成を有する。
【００８７】
図１３は、照会情報入力画面５０６の代表画面図である。照会情報入力画面５０６は、ユーザＩＤ入力領域５１０と、開発テーマＩＤ入力領域５１２と、それ以外の情報の入力領域５１４と、実行ボタン５１６と、戻るボタン５１８と、を有する。照会情報入力画面５０６をユーザ端末のディスプレイに表示させるための画面情報は、実行ボタン５１６が押し下げられた場合にユーザＩＤ入力領域５１０および開発テーマＩＤ入力領域５１２のいずれにも入力がないとエラーを返すように構成される。
【００８８】
図１４は、第３通知画面５０８の代表画面図である。第３通知画面５０８は、並行開発管理対象ＩＤ５２０と、追い付き要否判定部７６における追い付き要否の判定結果５２２と、自己の開発テーマＩＤ５２４と、自己のユーザＩＤ５２６と、並行開発の相手の開発テーマＩＤ５２８と、その相手のユーザＩＤ５３０と、を表形式で表示する。
【００８９】
以上の構成による並行開発管理装置１００の動作を説明する。
例えばあるアプリケーションについて、性能向上のための長期的な開発テーマが既に設定されているときに、そのアプリケーションにバグが発見されたとする。するとそのバグを修正するための新たな短期的な開発テーマが設定される。このような状況では長期的な開発テーマと短期的な開発テーマとで同じプログラムや依存関係にあるプログラムを修正対象として指定する場合がある。並行開発管理装置１００は、そのようなプログラムが長期的な開発テーマと短期的な開発テーマとの間で並行開発の状態になると、ログインの際やプログラムの指定の際や照会要求に応じて、追い付きの要否を含む並行開発の状況をユーザに通知する。
【００９０】
２つの開発テーマによって並行開発の状態にあるプログラムが、一方の開発テーマよりも先に他方の開発テーマによってリリースされたとする。ここで一方の開発テーマが他方の開発テーマに追い付かないまま一方の開発テーマによるリリースが行われると、他方の開発テーマにしたがった変更が消滅してしまう。これにより、例えば前回リリースした機能が動かなくなるなどのリリース後の障害が発生しうる。
【００９１】
これに対して本実施の形態に係る並行開発管理装置１００によると、並行開発に係るプログラムを指定する開発テーマのユーザに追い付きの要否を含む並行開発の状況が通知される。したがって、プログラムが並行開発の状態にあること、並行開発の相手、追い付きの要否などをユーザに知らせることで、ユーザの注意を喚起することができる。ユーザは通知内容に基づき適宜追い付きを実行することができる。その結果、リリース後に障害が発生する可能性を低減できる。
【００９２】
また、本実施の形態に係る並行開発管理装置１００では、既にある開発テーマによって指定されているプログラムが事後的に並行開発の状態となった場合、そのプログラムの情報および並行開発の相手の開発テーマの情報がある開発テーマの通知先に通知される。したがって、ある開発テーマに従事する開発者は、そのプログラムが並行開発の状態となったこと、および並行開発の相手を知ることができる。
【００９３】
複数（例えば２つ）の開発テーマによって並行開発の状態にあるプログラムについて、一方の開発テーマによってリリースが申請されてからそのリリースが承認され、リリースが完了するまでには通常数時間から数日のタイムラグが存在する。この間に他方の開発テーマによるそのプログラムのリリースが完了すると、一方の開発テーマによるリリースの完了によって他方の開発テーマにしたがった変更が消滅してしまう場合がある。
【００９４】
そこで、本実施の形態に係る並行開発管理装置１００では、ある開発テーマによってリリース申請されたプログラムが他の開発テーマによってリリース申請中とされている場合、リリース認否判定部８０においてそのプログラムをリリースしてもよいと判定されないので、ある開発テーマによるそのプログラムのリリースが制限される。すなわち、リリース認否判定部８０においてプログラムをリリースしてもよいと判定されてから上書き部６０が対応する上書きを実行するまでの間、そのプログラムに対する他の上書きが制限される。これにより、上記のようなリリース申請中の上書きによる変更の消滅が発生する可能性が低減される。
【００９５】
上述の実施の形態において、記憶装置９０の例は、ハードディスクやメモリである。また、本明細書の記載に基づき、各部を、図示しないＣＰＵや、インストールされたアプリケーションプログラムのモジュールや、システムプログラムのモジュールや、ハードディスクから読み出したデータの内容を一時的に記憶するメモリなどにより実現できることは本明細書に触れた当業者には理解されるところである。
【００９６】
以上、実施の形態に係る並行開発管理装置１００の構成と動作について説明した。この実施の形態は例示であり、その各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００９７】
実施の形態では、依存関係参照部２８が登録されている依存関係に基づいて指定されたプログラムと依存関係にあるプログラムを開発テーマ管理テーブル３０４に登録し、読み出し部３０は、指定されたプログラムおよびそれと依存関係にあるプログラムを開発環境サーバ１１０に送信する場合について説明したが、これに限られない。例えば、依存関係に基づく処理はチェックイン段階などの別の段階で行われてもよい。
【００９８】
実施の形態では、追い付き要否判定部７６は、上書き部６０が第１変更後プログラムよりも先に第２変更後プログラムによって本番系記憶領域９２に記憶された並行開発プログラムを上書きした場合、第１開発テーマが第２開発テーマに追い付く必要があると判定する場合について説明したが、これに限られない。
【００９９】
例えば、追い付き要否判定部は、上書き部６０が第１変更後プログラムよりも先に第２変更後プログラムによって本番系記憶領域９２に記憶された並行開発プログラムを上書きする予定となっている場合、第１開発テーマが第２開発テーマに追い付く必要があると判定してもよい。
【０１００】
特に追い付き要否判定部は、開発テーマ管理テーブル３０４を参照し、並行開発プログラムについて第１開発テーマＩＤに対応するリリース予定日が第２開発テーマＩＤに対応するリリース予定日よりも後となっている場合、第１開発テーマが第２開発テーマに追い付く必要があると判定してもよい。この場合、よりきめ細かな通知が可能となる。
【０１０１】
実施の形態では、開始日、終了日、リリース申請日など時刻の単位として日付を使用する場合について説明したが、これに限られず他の時刻の単位が使用されてもよい。
【０１０２】
実施の形態では、開発環境サーバ１１０、テスト環境サーバ１１２、本番ゲートウェイ１１４は別体である場合について説明したが、これに限られず、例えばひとつのサーバに実現されてもよい。
【０１０３】
通知部７０は、ユーザがログオフしている間に発生するそのユーザに通知すべき情報を蓄積し、そのユーザがログインした際に蓄積された情報をそのユーザに通知してもよい。
この場合通知部７０は、並行開発管理テーブル３０２を監視し、ステータスＩＤに変更があると、その変更があった日時とその変更の内容とを対応付けて図示しないログイン時通知内容保持部に登録する。通知部７０は、ユーザが並行開発管理装置１００にログインすると、ログイン時通知内容保持部に保持される情報からログインしたユーザに関する情報を抽出する。通知部７０は、抽出した情報を含む第４通知画面５３２をユーザ端末のディスプレイに表示させるための画面情報を生成する。通知部７０は、この画面情報を入出力インタフェース部１０を介してログインしたユーザのユーザ端末に送信する。
【０１０４】
図１５は、第４通知画面５３２の代表画面図である。第４通知画面５３２は、通知日時５３４と、メッセージＩＤ５３６と、ステータスの変更の内容を示すメッセージ５３８と、を表形式で表示する。
この場合、ユーザはログイン時に並行開発の状況や履歴を把握することができる。
【符号の説明】
【０１０５】
２  プログラム開発システム、  １０  入出力インタフェース部、  ２０  受付部、  ３０  読み出し部、  ４０  テスト・リリース管理部、  ５０  本番環境配布部、  ６０  上書き部、  ７０  通知部、  ９０  記憶装置、  ９２  本番系記憶領域、  ９４  開発系記憶領域、  ９６  管理系記憶領域、  １００  並行開発管理装置、  １０８  ネットワーク、  １１０  開発環境サーバ、  １１２  テスト環境サーバ、  １１４  本番ゲートウェイ、  １１６  本番環境サーバ。
【図１】
0005661505.tif 000002
【図２】
0005661505.tif 000003
【図３】
0005661505.tif 000004
【図４】
0005661505.tif 000005
【図５】
0005661505.tif 000006
【図６】
0005661505.tif 000007
【図７】
0005661505.tif 000008
【図８】
0005661505.tif 000009
【図９】
0005661505.tif 000010
【図１０】
0005661505.tif 000011
【図１１】
0005661505.tif 000012
【図１２】
0005661505.tif 000013
【図１３】
0005661505.tif 000014
【図１４】
0005661505.tif 000015
【図１５】
0005661505.tif 000016