並行開発管理装置および並行開発管理方法
【課題】プログラムの並行開発においてミスを低減する。
【解決手段】並行開発管理装置100は、プログラムを記憶する記憶領域を有する記憶装置90と、開発テーマごとに変更対象のプログラムの指定を受け付ける受付部20と、指定されたプログラムを記憶領域から読み出す読み出し部30と、読み出し部30によって読み出されたプログラムに対して開発テーマにしたがった変更がなされた場合、変更されたプログラムによって記憶領域に記憶されたプログラムを上書きする上書き部60と、開発テーマに関連付けられた通知先に所定の情報を通知する通知部70と、を有する。2つの開発テーマによってひとつのプログラムが指定され、一方の開発テーマによって先にリリースが行われた場合、通知部70は、そのひとつのプログラムのIDおよび一方の開発テーマのIDを他方の開発テーマに通知する。
【解決手段】並行開発管理装置100は、プログラムを記憶する記憶領域を有する記憶装置90と、開発テーマごとに変更対象のプログラムの指定を受け付ける受付部20と、指定されたプログラムを記憶領域から読み出す読み出し部30と、読み出し部30によって読み出されたプログラムに対して開発テーマにしたがった変更がなされた場合、変更されたプログラムによって記憶領域に記憶されたプログラムを上書きする上書き部60と、開発テーマに関連付けられた通知先に所定の情報を通知する通知部70と、を有する。2つの開発テーマによってひとつのプログラムが指定され、一方の開発テーマによって先にリリースが行われた場合、通知部70は、そのひとつのプログラムのIDおよび一方の開発テーマのIDを他方の開発テーマに通知する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータプログラムの開発を管理する並行開発管理装置および方法に関する。
【背景技術】
【0002】
近年、業務システムの複雑化、高機能化に伴い、その業務システムを構築するコンピュータプログラム(以下、単にプログラムと称す)の数も膨大なものとなり、プログラムの内容も高度になってきている。そのようなプログラムの新規開発や修正を好適に管理するために、本出願人は特許文献1においてプログラム開発管理装置を提案している。
【0003】
このプログラム開発管理装置は、開発すべきプログラムとリリース条件とを開発テーマごとに管理するためのテーマ別プログラムテーブルと、テーマ別プログラムテーブルを参照し、リリース条件が同一のプログラムをひとつのリリース単位として抽出し、リリース単位のディレクトリを生成し、抽出したリリース単位のプログラムを当該ディレクトリに格納するディレクトリ生成部と、を備える。
特許文献1に記載のプログラム開発管理装置によると、リリース時におけるプログラムのリリース漏れやリリース間違い等を大幅に軽減することができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−244974号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に代表されるプログラム開発管理技術においては、2つ以上の開発テーマがひとつのプログラムを指定する、いわゆる並行開発の状態が存在しうる。並行開発の状態では、担当者間の連携不足等のためにプログラム管理上のミスが発生しやすい。
【0006】
本発明はこうした課題に鑑みてなされたものであり、その目的は、プログラムの並行開発においてミスを低減できる管理技術の提供にある。
【課題を解決するための手段】
【0007】
本発明のある態様は並行開発管理装置に関する。この並行開発管理装置は、コンピュータプログラムを記憶する記憶領域と、開発のテーマごとに変更対象のコンピュータプログラムの指定を受け付ける受付部と、指定されたコンピュータプログラムを記憶領域から読み出す読み出し部と、読み出し部によって読み出されたコンピュータプログラムに対してテーマにしたがった変更がなされた場合、変更されたコンピュータプログラムによって記憶領域に記憶されたコンピュータプログラムを上書きする上書き部と、テーマに関連付けられた通知先に所定の情報を通知する通知部と、を備える。読み出し部は、受付部が第1および第2のテーマについてひとつのコンピュータプログラムの指定を受け付けた場合に、第1のテーマに対してひとつのコンピュータプログラムを第1のコンピュータプログラムとして記憶領域から読み出すと共に、第2のテーマに対してひとつのコンピュータプログラムを第2のコンピュータプログラムとして記憶領域から読み出す。通知部は、上書き部が第1のコンピュータプログラムよりも先に第2のコンピュータプログラムによって記憶領域に記憶されたひとつのコンピュータプログラムを上書きすると、ひとつのコンピュータプログラムの情報および第2のテーマの情報を第1のテーマに関連付けられた通知先に通知する。
【0008】
この態様によると、上書き部が第1のコンピュータプログラムよりも先に第2のコンピュータプログラムによって記憶領域に記憶されたひとつのコンピュータプログラムを上書きした場合、第1のテーマに関連付けられた通知先は、ひとつのコンピュータプログラムの情報および第2のテーマの情報を知ることができる。
【0009】
本発明の別の態様もまた、並行開発管理装置である。この装置は、互いに関連した第1のコンピュータプログラムおよび第2のコンピュータプログラムを記憶する記憶領域と、開発の第1のテーマについて第1のコンピュータプログラムの指定を受け付けると共に開発の第2のテーマについて第2のコンピュータプログラムの指定を受け付ける受付部と、第1のテーマに対して第1のコンピュータプログラムを記憶領域から読み出すと共に第2のテーマに対して第2のコンピュータプログラムを記憶領域から読み出す読み出し部と、第2のテーマの情報を第1のテーマに関連付けられた通知先に通知する通知部と、を備える。
【0010】
この態様によると、互いに関連した第1のコンピュータプログラムおよび第2のコンピュータプログラムを第1のテーマおよび第2のテーマがそれぞれ指定する場合、第1のテーマに関連付けられた通知先は第2のテーマの情報を知ることができる。
【0011】
なお、以上の構成要素の任意の組み合わせや、本発明の構成要素や表現を装置、方法、システム、プログラム、プログラムを格納した記録媒体などの間で相互に置換したものもまた、本発明の態様として有効である。
【発明の効果】
【0012】
本発明によれば、プログラムの並行開発においてミスを低減できる。
【図面の簡単な説明】
【0013】
【図1】実施の形態に係る並行開発管理装置を有するプログラム開発システムを模式的に示す説明図である。
【図2】図1の並行開発管理装置における例示的な一連の処理を示すフローチャートである。
【図3】実施の形態に係る並行開発管理装置の機能および構成を示すブロック図である。
【図4】図3の記憶装置のディレクトリ構成の一例を示す模式図である。
【図5】図4の並行開発管理テーブルの一例を示すデータ構造図である。
【図6】図4の開発テーマ管理テーブルの一例を示すデータ構造図である。
【図7】図4の第1依存関係テーブルの一例を示すデータ構造図である。
【図8】図4の第2依存関係テーブルの一例を示すデータ構造図である。
【図9】図3の並行開発管理装置における例示的な一連の処理を時系列に沿って示すチャートである。
【図10】図3の並行開発管理装置における例示的な一連の処理を時系列に沿って示すチャートである。
【図11】図3の並行開発管理装置における例示的な一連の処理を時系列に沿って示すチャートである。
【図12】第1通知画面の代表画面図である。
【図13】照会情報入力画面の代表画面図である。
【図14】第3通知画面の代表画面図である。
【図15】第4通知画面の代表画面図である。
【発明を実施するための形態】
【0014】
以下、本発明を好適な実施の形態をもとに図面を参照しながら説明する。各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付するものとし、適宜重複した説明は省略する。
【0015】
図1は、実施の形態に係る並行開発管理装置100を有するプログラム開発システム2を模式的に示す説明図である。プログラム開発システム2は、顧客のシステム内に設置されたサーバである本番環境サーバ116上で機能しているアプリケーションを構成するプログラムを管理する。プログラム開発システム2は、開発のテーマ(以下、開発テーマと称する)に基づきプログラムの修正、更新、追加等を行い、本番環境サーバ116に反映させる。開発テーマは、例えばアプリケーションを変更する目的である。例えば開発テーマ「バグの修正」では、プログラム開発システム2は、発見されたバグに対応する修正をプログラムに施して本番環境サーバ116へ配布する。また例えば開発テーマ「新機能追加」では、プログラム開発システム2は、開発されたアプリケーションの新機能に対応する新たなプログラムを本番環境サーバ116へ配布する。
【0016】
プログラム開発システム2は、実施の形態に係る並行開発管理装置100、複数の(図1では3つの)ユーザ端末102、開発環境サーバ110、テスト環境サーバ112、本番ゲートウェイ114、を備える。プログラム開発システム2のそれらの部材はインターネットなどのネットワーク108によって互いに接続される。本番ゲートウェイ114は本番環境サーバ116と不図示のネットワーク等で接続され、本番環境サーバ116へのゲートウェイの役割を果たす。
【0017】
プログラム開発システム2のユーザは、例えばプログラムを開発する開発者、開発のテーマを定め開発の指揮をとる開発リーダ、開発を管理する開発管理者、プログラムの本番環境サーバへの配布(すなわち、リリース)を担当するリリース担当者、を含む。
【0018】
以下、プログラム開発システム2や並行開発管理装置100ではプログラムが個別に取り扱われる場合について説明する。しかしながら、例えばプログラムアーカイブ単位と称してもよいような、関連する複数のプログラムの集合またはまとまりを一単位として扱う場合にも、本実施の形態に係る技術的思想を適用できることは、本明細書に触れた当業者には自明である。
【0019】
図2は、図1の並行開発管理装置100における例示的な一連の処理を示すフローチャートである。開発リーダは自己のユーザ端末から並行開発管理装置100にアクセスし、開発テーマを特定する開発テーマIDと、開発テーマの名称と、開発テーマの責任者名と、を対応付けて並行開発管理装置100に登録する。並行開発管理装置100は、その登録を受け付ける(S202)。登録された開発テーマに従事する開発者は自己のユーザ端末から並行開発管理装置100にアクセスし、登録された開発テーマにおいて変更する必要があるプログラムを変更対象のプログラムとして指定する。ここで指定されるプログラムは、原則として並行開発管理装置100の本番系記憶領域(後述)に記憶されているプログラムである。
【0020】
並行開発管理装置100はその指定を受け付け、指定されたプログラムを本番系記憶領域から読み出して開発系記憶領域(後述)へ複製する。このようにして開発系記憶領域に複製されたプログラムをプログラムAとよぶ。並行開発管理装置100は、プログラムAを開発環境サーバ110へ送信する(S204)。開発者は自己のユーザ端末から並行開発管理装置100を介して開発環境サーバ110にアクセスし、プログラムAに必要な変更を加える。変更完了後のプログラムAをプログラムBと呼ぶ。開発者は、変更完了後、開発環境サーバ110においてプログラムBに対して単体テストを実施する。開発者は、プログラムBがこの単体テストをパスすると、そのプログラムBを開発環境サーバ110から並行開発管理装置100に送信する。並行開発管理装置100は、そのようにして送信されたプログラムBを受信し、受信したプログラムBによって開発系記憶領域に記憶されているプログラムAを上書きする(S206)。
【0021】
開発テーマにおいて連結・総合テストが必要な場合、並行開発管理装置100は、プログラムBをテスト環境サーバ112へ送信する(S208)。開発者は自己のユーザ端末から並行開発管理装置100を介してテスト環境サーバ112にアクセスし、プログラムBを含む連結・総合テストを実施する。この連結・総合テストにパスすると、開発者は自己のユーザ端末から並行開発管理装置100にアクセスしその旨を並行開発管理装置100に登録する。並行開発管理装置100はその登録を受け付ける(S210)。
【0022】
開発リーダは、開発テーマについて必要な変更等が完了しリリース準備が整ったと判断すると、自己のユーザ端末から並行開発管理装置100にアクセスし、開発テーマIDおよびリリースすべきプログラムを指定してリリースの申請を行う。並行開発管理装置100はこのリリースの申請を受け付ける(S212)。並行開発管理装置100は、リリースの申請を受け付けると、リリース対象として指定されたプログラムの並行開発の状況を抽出し、その結果を不図示のプリンタ等で出力する。このように印刷された情報等を基にリリース確認会議にてリリースを承認するか否かが担当者によって議論される。その会議でリリースが承認されると、開発リーダまたは他のユーザは、自己のユーザ端末から並行開発管理装置100にアクセスし、リリースを承認する。並行開発管理装置100は、そのリリースの承認を受け付ける(S214)。並行開発管理装置100は、リリースの承認を受け付けると、プログラムBを本番ゲートウェイ114に送信する(S216)と共に、プログラムBによって本番系記憶領域に記憶されている読み出し元のプログラムを上書きする。以下、本番系記憶領域に記憶されている読み出し元のプログラムが上書されたことをもって、リリースの完了と定義する。
【0023】
図3は、実施の形態に係る並行開発管理装置100の機能および構成を示すブロック図である。ここに示す各ブロックは、ハードウエア的には、コンピュータのCPU(central processing unit)をはじめとする素子や機械装置で実現でき、ソフトウエア的にはプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウエア、ソフトウエアの組合せによっていろいろなかたちで実現できることは、本明細書に触れた当業者には理解されるところである。
【0024】
並行開発管理装置100は、入出力インタフェース部10、受付部20、読み出し部30、テスト・リリース管理部40、本番環境配布部50、上書き部60、通知部70、記憶装置90、を備える。
【0025】
図4は、図3の記憶装置90のディレクトリ構成の一例を示す模式図である。記憶装置90は、本番系記憶領域92、開発系記憶領域94、管理系記憶領域96、を含む。本番系記憶領域92は、本番環境サーバ116で稼働中のプログラムと同じプログラムを、本番環境サーバ116のものに準ずるディレクトリ構成で記憶する。以下、2つのプログラムが同じである、とは一方のプログラムの内容が他方のプログラムの内容と同じであることを示す。すなわち、それぞれ別々のサーバに保持された2つのプログラムであっても内容が同じであれば同じである。
【0026】
開発系記憶領域94は、開発テーマごとに、変更対象として指定されたプログラムを複製して生成されるプログラムを記憶する。開発系記憶領域94は、並行開発管理装置100に受け付けられた開発テーマごとに、その開発テーマを特定できる名称のディレクトリを有する。各開発テーマにおいて変更対象として指定されたプログラムを複製して生成されたプログラムは、その開発テーマのディレクトリに入れられる。
【0027】
管理系記憶領域96は、並行開発管理テーブル302、開発テーマ管理テーブル304、第1依存関係テーブル306、第2依存関係テーブル308、を記憶する。
【0028】
図5は、並行開発管理テーブル302の一例を示すデータ構造図である。並行開発管理テーブル302は、管理対象ID310ごとに、開発テーマID312と、ステータスID314と、開始日316と、終了日318と、リリース申請日320と、を対応付けて記憶する。
管理対象IDは、並行開発管理装置100によって管理される対象を並行開発管理装置100において特定するIDである。上記の通り本実施の形態ではプログラムが個別に取り扱われる場合を説明するので、管理対象IDは、プログラム名やプログラムの並行開発管理装置100におけるパスなどのプログラムを特定するIDである。特に管理対象IDは、本番系記憶領域92に記憶されているプログラムを特定するIDである。
【0029】
ステータスIDは、管理対象IDによって特定されるプログラムの開発テーマにおける状態を特定するIDである。この状態には、プログラムの変更やテストが行われている状態である開発中状態と、リリースが申請されてからリリースが完了するまでのリリース申請中状態と、リリースが完了したリリース済み状態と、がある。図5では、ステータスID「S1」は開発中状態に、ステータスID「S2」はリリース申請中状態に、ステータスID「S3」はリリース済み状態に、それぞれ対応する。
【0030】
各状態は例えば図2を参照して細分化できる。開発中状態は、開発環境サーバ110で修正等の変更が行われている変更中状態と、開発環境サーバ110において単体テストが完了した単体テスト完了状態と、テスト環境サーバ112において連結テストが完了した連結テスト完了状態と、テスト環境サーバ112において総合テストが完了した総合テスト完了状態と、に分けることができる。リリース申請中状態は、リリースの承認を待っているリリース承認待ち状態と、リリースが承認されてから実際にリリースが完了するまでのリリース承認済み状態と、に分けられる。
【0031】
開始日は、開発テーマの開始の日付であり、特に管理対象IDによって特定されるプログラムが変更対象のプログラムとして指定された日付である。
終了日は、開発テーマの終了の日付であり、特に管理対象IDによって特定されるプログラムのリリースが完了した日付である。
リリース申請日は、管理対象IDによって特定されるプログラムのリリースが申請された日付である。
【0032】
図6は、開発テーマ管理テーブル304の一例を示すデータ構造図である。開発テーマ管理テーブル304は、開発テーマID322ごとに、開発テーマの内容を端的に示す開発テーマ名324と、開発テーマによって変更対象として指定されたプログラムの管理対象ID326と、開発テーマについてリリースが予定される日付であるリリース予定日328と、を対応付けて記憶する。
【0033】
あるプログラムが別のプログラムを呼び出したり参照したりする場合やソースプログラムおよびそれをコンパイルして生成される実行プログラムの場合などのように、複数の異なるプログラムが関連する場合がある。2つのプログラムが関連することは、2つのプログラムが依存関係にある、すなわち一方のプログラムが他方のプログラムに依存することを含む。これは例えば、他方のプログラムを変更すると一方のプログラムも必然的に変更すべきである場合である。以下便宜的に、依存する側のプログラムを「子」、依存される側のプログラムを「親」として説明する。
本実施の形態では、前提として、ひとつの子プログラムに対してひとつの親プログラムのみ設定可能とする。しかしながら、例えば親プログラムと子プログラムとが多対多の場合にも、本実施の形態に係る技術的思想を適用できることは、本明細書に触れた当業者には自明である。
【0034】
図7は、第1依存関係テーブル306の一例を示すデータ構造図である。第1依存関係テーブル306は、プログラム間の依存関係を特定する依存関係ID334と、その依存関係における親プログラムの管理対象IDである親管理対象ID336と、を対応付けて記憶する。
【0035】
図8は、第2依存関係テーブル308の一例を示すデータ構造図である。第2依存関係テーブル308は、依存関係における子プログラムの管理対象IDである子管理対象ID330と、その依存関係を特定する依存関係ID332と、を対応付けて記憶する。
【0036】
本実施の形態に係る並行開発管理装置100では、子プログラムと親プログラムとを直接対応付けるテーブルを用意するかわりに、両者を紐付ける依存関係IDを使用し、依存関係を2つの異なるテーブルで管理する。他の実施の形態では前者も可能であるが、本実施の形態で後者を採用した理由は以下の通りである。
【0037】
並行開発管理装置100のユーザが並行開発管理装置100に親プログラム、子プログラムおよびそれらの依存関係を新規に登録する例示的な手順は以下の通りである。
(1)ユーザは、親プログラムを並行開発管理装置100の本番系記憶領域92に登録する。
(2)ユーザは依存関係の依存関係IDを採番し、親プログラムの親管理対象IDと共に並行開発管理装置100に入力する。並行開発管理装置100の受付部20は、入力された依存関係IDと親管理対象IDとを対応付けて第1依存関係テーブル306に登録する。
(3)ユーザは子プログラムを並行開発管理装置100の本番系記憶領域92に登録すると共に、採番された依存関係IDと子プログラムの子管理対象IDとを並行開発管理装置100に入力する。並行開発管理装置100の受付部20は、入力された子管理対象IDと依存関係IDとを対応付けて第2依存関係テーブル308に登録する。
【0038】
この場合、(2)で依存関係IDを採番してから(3)で子プログラムを登録するので、親プログラムと子プログラムとを同時に登録できない。また、依存関係を登録するためには、親プログラムが本番系記憶領域92に登録されていなければならない。したがって、親プログラムがいることを確定してから子プログラムを登録することとなるので、誤った登録を抑制することができる。
【0039】
図3に戻る。
入出力インタフェース部10は、ネットワーク108と接続され、並行開発管理装置100と外部の装置との通信を制御する。外部の装置は例えば複数のユーザ端末102、開発環境サーバ110、テスト環境サーバ112、本番ゲートウェイ114、である。入出力インタフェース部10は、ネットワーク108を介して装置間でデータ等をやりとりする公知の通信技術、例えばTCP/IPプロトコルにしたがった通信を行う技術を使用して構成される。
【0040】
受付部20は、開発テーマごとに変更対象のプログラムの指定を受け付ける。受付部20は、ログイン部22、開発テーマ受付部24、変更対象指定受付部26、依存関係参照部28、管理テーブル登録部29、を含む。
ログイン部22は、ユーザからのログインを許可するか否かを決定する。ログイン部22は、入出力インタフェース部10を介してユーザ端末からのログイン要求を取得すると、ユーザIDとパスワードとの入力を促す画面をユーザ端末のディスプレイに表示させるための情報をユーザ端末に送信する。ログイン部22は、ユーザがユーザ端末に入力したユーザIDとパスワードとを入出力インタフェース部10を介して取得して認証する。ログイン部22は、認証が成功するとそのユーザのログインを許可してセッションを開始し、失敗すると許可しない。
【0041】
ユーザIDは並行開発管理装置100のユーザを特定するIDである。ユーザIDは、ユーザの種別、すなわち開発者であるか、開発リーダであるか、開発管理者であるか、リリース担当者であるか、を識別可能に設定される。
【0042】
開発テーマ受付部24は、入出力インタフェース部10を介して開発リーダのユーザ端末から開発テーマIDと開発テーマ名とリリース予定日とを受け付け、開発テーマ管理テーブル304に登録する。なお、開発テーマIDは開発テーマ受付部24が決定してもよい。以下、開発テーマ受付部24によって受け付けられた開発テーマIDを受け付け開発テーマIDと称す。
【0043】
変更対象指定受付部26は、受け付け開発テーマIDによって特定される開発テーマに従事する開発者のユーザ端末から、入出力インタフェース部10を介して、その開発テーマにしたがって変更する必要があると指定されたプログラムの管理対象IDを取得する。変更対象指定受付部26は、取得された管理対象IDを受け付け開発テーマIDと対応付けて開発テーマ管理テーブル304に登録する。以下、変更対象指定受付部26によって取得された管理対象IDを指定管理対象ID、指定管理対象IDによって特定されるプログラムを指定プログラムと称す。
【0044】
依存関係参照部28は、第1依存関係テーブル306および第2依存関係テーブル308を参照し、指定プログラムと依存関係にあるプログラムの有無を判定する。そのようなプログラムが存在する場合、依存関係参照部28は、そのようなプログラムの管理対象IDを追加的に受け付け開発テーマIDに対応付けて開発テーマ管理テーブル304に登録する。すなわち、開発テーマ管理テーブル304は、開発テーマの開発テーマIDごとに、その開発テーマにおいて変更対象として指定されたプログラムの管理対象IDおよびそのプログラムと依存関係にあるプログラムの管理対象IDを記憶する。
【0045】
特に依存関係参照部28は、まず第2依存関係テーブル308を参照し、指定管理対象IDに対応する依存関係IDがあればそれを抽出する。次に依存関係参照部28は、第1依存関係テーブル306を参照し、抽出された依存関係IDに対応する親管理対象IDを抽出する。さらに依存関係参照部28は第2依存関係テーブル308を参照し、抽出された親管理対象IDを子管理対象IDとしたときにそれと対応する依存関係IDがあれば抽出する。以下、依存関係参照部28は第1依存関係テーブル306および第2依存関係テーブル308を交互に参照する処理を、抽出された親管理対象IDを子管理対象IDとしたときにそれと対応する依存関係IDがなくなるまで繰り返す。
依存関係参照部28は、上記処理により抽出された全ての親管理対象IDを、受け付け開発テーマIDに対応付けて開発テーマ管理テーブル304に登録する。
【0046】
例えば、受け付け開発テーマIDは「T1」であり、指定管理対象IDは「A100_1.pco」である場合を考える。
依存関係参照部28は、図8に示される第2依存関係テーブル308を参照し、依存関係ID「x1」を抽出する。依存関係参照部28は、図7に示される第1依存関係テーブル306を参照し、親管理対象ID「MAKEFILE」を抽出する。次に依存関係参照部28は、図8に示される第2依存関係テーブル308を参照し、抽出された親管理対象ID「MAKEFILE」に対応する依存関係ID「x2」を抽出する。依存関係参照部28は、図7に示される第1依存関係テーブル306を参照し、親管理対象ID「A100.exe」を抽出する。依存関係参照部28は、図8に示される第2依存関係テーブル308を参照し、抽出された親管理対象ID「A100.exe」に対応する依存関係IDはないと判定する。依存関係参照部28は、抽出された親管理対象ID「MAKEFILE」、「A100.exe」を受け付け開発テーマID「T1」に対応付けて追加的に開発テーマ管理テーブル304に登録する。
以下、依存関係参照部28によって抽出された親管理対象IDを依存管理対象ID、依存管理対象IDによって特定されるプログラムを依存プログラムと称す。
【0047】
管理テーブル登録部29は、指定管理対象IDと、受け付け開発テーマIDと、ステータスIDとして「S1」と、開始日として指定管理対象IDが取得された日付と、を対応付けて並行開発管理テーブル302に登録する。また管理テーブル登録部29は、依存管理対象IDと、受け付け開発テーマIDと、ステータスIDとして「S1」と、開始日として指定管理対象IDが取得された日付と、を対応付けて並行開発管理テーブル302に登録する。
【0048】
読み出し部30は、指定プログラムを本番系記憶領域92から読み出す。読み出し部30は、開発テーマディレクトリ生成部32、変更対象複製部34、変更対象送信部36、を含む。
開発テーマディレクトリ生成部32は、受け付け開発テーマIDに対応するディレクトリを開発系記憶領域94に生成する。
【0049】
変更対象複製部34は、指定プログラムおよび依存プログラムを本番系記憶領域92から読み出して複製する。以下、指定プログラムから複製されたプログラムを指定複製プログラム、依存プログラムから複製されたプログラムを依存複製プログラムと称す。変更対象複製部34は、指定複製プログラムおよび依存複製プログラムを開発テーマディレクトリ生成部32によって生成されたディレクトリに入れる。変更対象複製部34における処理の例が図4の破線矢印や一点鎖線矢印で示される。
【0050】
変更対象送信部36は、入出力インタフェース部10を介して開発環境サーバ110に指定複製プログラムおよび依存複製プログラムを送信する。
【0051】
開発者は、開発環境サーバ110において、指定複製プログラムおよび依存複製プログラムに受け付け開発テーマIDによって特定される開発テーマにしたがった修正等の変更を施し、単体テストを実施する。以下、変更が完了し単体テストをパスした指定複製プログラムを指定変更後プログラム、変更が完了し単体テストをパスした依存複製プログラムを依存変更後プログラムと称す。
【0052】
テスト・リリース管理部40は、開発テーマにしたがった変更が完了し単体テストをパスしたプログラムの連結・総合テストおよびリリースを管理する。テスト・リリース管理部40は、変更後プログラム取得部42、テスト環境配布部44、リリース申請受付部46、リリース認否判定部80、リリース承認受付部48、を含む。
【0053】
変更後プログラム取得部42は、入出力インタフェース部10を介して開発環境サーバ110から指定変更後プログラムおよび依存変更後プログラムを取得する。変更後プログラム取得部42は、取得された指定変更後プログラムおよび依存変更後プログラムによって、開発系記憶領域94の受け付け開発テーマIDに対応するディレクトリに入っている指定複製プログラムおよび依存複製プログラムをそれぞれ上書きする。
【0054】
テスト環境配布部44は、受け付け開発テーマIDによって特定される開発テーマにおいて連結・総合テストが必要な場合、入出力インタフェース部10を介して指定変更後プログラムおよび依存変更後プログラムをテスト環境サーバ112へ送信する。
【0055】
リリース申請受付部46は、入出力インタフェース部10を介して開発リーダのユーザ端末から、リリース対象の開発テーマを特定するリリース開発テーマIDとリリース対象として指定されたプログラムを特定するリリース管理対象IDとを受け付ける。ここでリリース申請受付部46は、依存関係参照部28と同様に第1依存関係テーブル306および第2依存関係テーブル308を参照して、リリース対象として指定されたプログラムと依存関係にあるプログラムがリリース対象とされているか否かを判定し、されていないものがあればそれをリリース対象に加えてもよい。この場合、リリース漏れを抑制することができる。
【0056】
リリース申請受付部46は並行開発管理テーブル302にアクセスし、受け付けたリリース管理対象IDおよびリリース開発テーマIDに対応するステータスIDを「S2」に書き換え、リリース申請日を登録する。
【0057】
以下、リリース申請受付部46がリリース開発テーマIDとして受け付け開発テーマIDを、リリース管理対象IDとして指定管理対象IDおよび依存管理対象IDを、受け付けた場合を考える。
リリース認否判定部80は、指定プログラムおよび依存プログラムについてリリースの認否を判定する。詳細は後述する。
リリース承認受付部48は、入出力インタフェース部10を介して開発リーダまたは他のユーザのユーザ端末から、受け付け開発テーマIDによって特定される開発テーマに対するリリースの承認を受け付ける。
【0058】
本番環境配布部50は、リリース承認受付部48によってリリースの承認が受け付けられると、入出力インタフェース部10を介して指定変更後プログラムおよび依存変更後プログラムを本番ゲートウェイ114に送信する。
【0059】
上書き部60は、リリース承認受付部48によってリリースの承認が受け付けられると、指定変更後プログラムおよび依存変更後プログラムによって、本番系記憶領域92に記憶されている指定プログラムおよび依存プログラムをそれぞれ上書きする。
上書き部60は、並行開発管理テーブル302にアクセスし、指定管理対象IDおよび受け付け開発テーマIDに対応するステータスIDを「S3」に書き換え、終了日を登録する。依存管理対象IDについても同様である。
【0060】
通知部70は、開発テーマに関連付けられた通知先に所定の情報を通知する。例えば通知部70は、所定の情報を提示する画面をユーザ端末のディスプレイに表示させるための画面情報を、入出力インタフェース部10を介してそのユーザ端末に送信する。また例えば通知部70は、開発リーダや開発者の電子メールアドレス宛に所定の情報を含む電子メールを入出力インタフェース部10を介して送信する。
通知部70は、判定結果出力部71、照会要求受付部72、指定検知部74、並行開発情報抽出部75、追い付き要否判定部76、並行開発状況提示部77、を含む。各部の詳細は後述する。
【0061】
さて、並行開発管理装置100の運用上、本番系記憶領域92に記憶されるひとつのプログラムが複数の異なる開発テーマによって指定されることがある。また、本番系記憶領域92に記憶された関連する2つのプログラムがそれぞれ別の開発テーマによって指定されることもある。これらはいずれもプログラムの並行開発である。
【0062】
並行開発管理テーブル302は、管理対象IDごとに、その管理対象IDによって特定されるプログラムを指定する開発テーマの開発テーマIDおよびその管理対象IDによって特定されるプログラムと依存関係にあるプログラム(特に、その管理対象IDによって特定されるプログラムを親プログラムとする子プログラム)を指定する開発テーマの開発テーマIDを記憶する。
また、並行開発管理テーブル302が管理対象IDと複数の開発テーマIDとを対応付けて記憶している場合、並行開発管理装置100はその管理対象IDによって特定されるプログラムが並行開発の状態にあると認識する。したがって並行開発管理装置100は、依存関係のために並行開発となるプログラムも並行開発の状態にあるプログラムとして認識することができる。
【0063】
例えば、親プログラムと子プログラムとがそれぞれ別の開発テーマによって指定された場合、並行開発管理テーブル302は親プログラムを特定する管理対象IDに両方の開発テーマの開発テーマIDを対応付けて記憶する。また、親プログラムを同じくする2つの子プログラムがそれぞれ別の開発テーマによって指定された場合、並行開発管理テーブル302は親プログラムを特定する管理対象IDに両方の開発テーマの開発テーマIDを対応付けて記憶する。
【0064】
並行開発に関する並行開発管理装置100のより詳しい処理を説明する。
以下、本番系記憶領域92に記憶され2つの別の開発テーマによって並行開発の状態にあるプログラムを並行開発プログラム、並行開発プログラムを特定する管理対象IDを並行開発管理対象ID、並行開発プログラムを指定する一方の開発テーマを第1開発テーマ、その開発テーマIDを第1開発テーマID、他方の開発テーマを第2開発テーマ、その開発テーマIDを第2開発テーマIDと称す。並行開発管理テーブル302は、並行開発管理対象IDと、第1開発テーマIDおよび第2開発テーマIDと、を対応付けて記憶する。また以下の説明は、並行開発プログラムが2つの開発テーマがそのプログラムを直接指定することによって並行開発の状態になった場合および依存関係によって並行開発の状態になった場合の両方に当てはまる。
【0065】
図9は、並行開発管理装置100における例示的な一連の処理を時系列に沿って示すチャートである。図9では、並行開発プログラムが指定される際の例示的な処理が示される。
第1開発テーマに従事する開発者は並行開発プログラムまたは並行開発プログラムの子プログラムを指定する(S402)。受付部20は、並行開発管理対象IDと第1開発テーマIDとステータスID「S1」とを対応付けて並行開発管理テーブル302に登録する(S404)。
【0066】
開発テーマディレクトリ生成部32は、第1開発テーマIDに対応する第1ディレクトリを開発系記憶領域94に生成する(S406)。変更対象複製部34は、並行開発プログラムを本番系記憶領域92から読み出して複製し、第1複製プログラムを生成する。変更対象複製部34は、第1複製プログラムを第1ディレクトリに格納する(S408)。変更対象送信部36は、第1複製プログラムを入出力インタフェース部10を介して開発環境サーバ110に送信する(S410)。
【0067】
その後、第2開発テーマに従事する開発者は並行開発プログラムまたは並行開発プログラムの子プログラムを指定する(S412)。管理テーブル登録部29は、登録のために並行開発管理テーブル302にアクセスし、並行開発管理対象IDが並行開発管理テーブル302に既に登録されていることを検知する。管理テーブル登録部29は、並行開発管理対象IDおよび第2開発テーマIDを指定検知部74に渡す。指定検知部74はそれらの情報を受けると、並行開発プログラムについての並行開発を検知する(S414)。
【0068】
並行開発情報抽出部75は、指定検知部74が並行開発を検知すると、並行開発管理テーブル302を参照し、並行開発の相手の開発テーマIDとして並行開発管理対象IDに対応する第1開発テーマIDと、そのステータスIDと、を抽出する(S416)。
並行開発状況提示部77は、並行開発情報抽出部75によって抽出されたステータスIDが「S1」または「S2」である場合、すなわちステータスがリリース済みでない場合、並行開発管理対象IDおよび第1開発テーマIDをテキストの形で含む第1通知画面500(図12で後述)をユーザ端末のディスプレイに表示させるための画面情報を生成する。並行開発状況提示部77は、生成した画面情報を入出力インタフェース部10を介して第2開発テーマに従事する開発者のユーザ端末に送信する(S418)。
【0069】
また並行開発状況提示部77は、並行開発管理対象IDおよび第2開発テーマIDをテキストの形で含む第2通知画面をユーザ端末のディスプレイに表示させるための画面情報を生成する。並行開発状況提示部77は、第1開発テーマに従事する開発者のセッション中であればそのセッション中に、第1開発テーマに従事する開発者がログアウトしていれば再ログイン後に、生成した画面情報を入出力インタフェース部10を介して第1開発テーマに従事する開発者のユーザ端末に送信する(S420)。
【0070】
受付部20は、並行開発管理対象IDおよび第2開発テーマIDを対応付けて並行開発管理テーブル302に登録する(S422)。
開発テーマディレクトリ生成部32は、第2開発テーマIDに対応する第2ディレクトリを開発系記憶領域94に生成する(S424)。
変更対象複製部34は、並行開発プログラムを本番系記憶領域92から読み出して複製し、第2複製プログラムを生成する。変更対象複製部34は、第2複製プログラムを第2ディレクトリに格納する(S426)。
変更対象送信部36は、第2複製プログラムを入出力インタフェース部10を介して開発環境サーバ110に送信する(S428)。
【0071】
第1開発テーマにしたがった変更が完了し単体テストをパスした第1複製プログラムを第1変更後プログラム、第2開発テーマにしたがった変更が完了し単体テストをパスした第2複製プログラムを第2変更後プログラムと称す。
第1開発テーマよりも先に第2開発テーマのリリースが完了した場合に、第1変更後プログラムに第2開発テーマにしたがった変更を取り込むことを第1開発テーマが第2開発テーマに「追い付く」と表現する。
【0072】
図10は、並行開発管理装置100における例示的な一連の処理を時系列に沿って示すチャートである。図10では、並行開発の状況が照会される際の例示的な処理が示される。
第1開発テーマに従事する開発者のユーザ端末は、並行開発の状況を照会するための並行開発照会要求をネットワーク108を介して並行開発管理装置100に送信する(S430)。照会要求受付部72は、並行開発照会要求を受けると、開発テーマIDなどの照会に必要な情報を第1開発テーマに従事する開発者に要求する(S432)。特に照会要求受付部72は、ユーザIDまたは開発テーマIDを必須入力項目として照会用の情報の入力を促す照会情報入力画面506(図13で後述)をユーザ端末のディスプレイに表示させるための画面情報を生成する。照会要求受付部72は、この画面情報を入出力インタフェース部10を介して第1開発テーマに従事する開発者のユーザ端末に送信する。
【0073】
第1開発テーマに従事する開発者のユーザ端末は、第1開発テーマIDを含む要求された情報を照会要求受付部72に提供する(S434)。特に照会要求受付部72は、ユーザ端末のディスプレイに表示された照会情報入力画面506に対して入力された情報を、そのユーザ端末から入出力インタフェース部10を介して取得する。照会要求受付部72は、取得した情報から第1開発テーマIDを抽出する(S436)。
【0074】
並行開発情報抽出部75は開発テーマ管理テーブル304を参照し、抽出された第1開発テーマIDに対応する管理対象IDを抽出する。このようにして抽出された管理対象IDは並行開発管理対象IDを含む。並行開発情報抽出部75は並行開発管理テーブル302を参照し、抽出された管理対象IDのなかから第1開発テーマID以外の開発テーマIDが対応付けられた管理対象IDを選択する。特に、並行開発管理テーブル302において並行開発管理対象IDには第1開発テーマIDおよび第2開発テーマIDが対応付けられているので、並行開発情報抽出部75は並行開発管理対象IDを選択する(S438)。
【0075】
追い付き要否判定部76は、並行開発プログラムについて第1開発テーマが第2開発テーマに追い付く必要があるか否かを判定する(S440)。追い付き要否判定部76は、上書き部60が第1変更後プログラムよりも先に第2変更後プログラムによって本番系記憶領域92に記憶された並行開発プログラムを上書きした場合、第1開発テーマが第2開発テーマに追い付く必要があると判定する。そうでない場合、追い付き要否判定部76は追い付く必要がないと判定する。
【0076】
特に追い付き要否判定部76は並行開発管理テーブル302を参照し、並行開発管理対象IDについて、第2開発テーマIDに対応するステータスIDが「S3」となっており、かつ、第2開発テーマIDに対応する終了日が第1開発テーマIDに対応する開始日よりも後となっている場合、第1開発テーマが第2開発テーマに追い付く必要があると判定する。また、追い付き要否判定部76は、例えば第2開発テーマIDに対応するステータスIDが「S1」となっている場合は追い付く必要がないと判定する。
【0077】
並行開発状況提示部77は、並行開発情報抽出部75によって選択された管理対象IDと並行開発の相手の開発テーマIDと追い付き要否判定部76における判定結果とを対応付けて照会元に通知する。特に並行開発状況提示部77は、並行開発管理対象IDと追い付きの要否と第2開発テーマIDとを含む第3通知画面508(図14で後述)をユーザ端末のディスプレイに表示させるための画面情報を生成する。並行開発状況提示部77は、この画面情報を入出力インタフェース部10を介して第1開発テーマに従事する開発者のユーザ端末に送信する(S442)。
【0078】
なお、照会要求受付部72は、並行開発照会要求に代えて第1開発テーマに従事する開発者のログインを契機として並行開発状況の照会を開始してもよい。
【0079】
図11は、並行開発管理装置100における例示的な一連の処理を時系列に沿って示すチャートである。図11では、リリースの際の例示的な処理が示される。
第1変更後プログラムが開発環境サーバ110から並行開発管理装置100へ送信され、連結・総合テストが完了すると、第1開発テーマの開発リーダは並行開発プログラムのリリースを申請する(S444)。リリース申請受付部46はこのリリース申請を受け付ける。
【0080】
リリース認否判定部80はリリース申請受付部46によってリリース申請が受け付けられると、並行開発プログラムについてリリースの認否を判定する。
リリース認否判定部80は、並行開発管理テーブル302を参照し、並行開発プログラムについて(甲)第1開発テーマの開始日からリリース申請日までの間に並行開発の状態になったことがない場合か、または、(乙)第2開発テーマによってリリース申請中とされておらずかつ第2開発テーマに対する追い付きが完了している場合か、または、(丙)第2開発テーマによってリリース申請中とされておらずかつ第2開発テーマに追い付く必要がない場合に、並行開発プログラムをリリースしてもよいと判定する。
【0081】
(乙)についてより具体的には、リリース認否判定部80は、並行開発管理テーブル302を参照し、並行開発管理対象IDに対応付けられた第2開発テーマIDのステータスIDを抽出する。リリース認否判定部80は、抽出されたステータスIDが「S2」である場合、並行開発プログラムについてリリース申請中の第2開発テーマが存在する旨を第1開発テーマに従事する開発者に通知する。リリース認否判定部80は並行開発プログラムの第1開発テーマによるリリースを禁止してもよい。リリース認否判定部80は、並行開発管理テーブル302にアクセスし、第1開発テーマIDに対応するステータスIDを「S1」に戻し、リリース申請日を消去してもよい。
【0082】
リリース認否判定部80は、抽出されたステータスIDが「S3」である場合すなわち第1開発テーマによるリリース申請より前に第2開発テーマによるリリースが完了している場合、並行開発プログラムについて第2開発テーマに追い付く必要があると判定する(S446)。リリース認否判定部80は、第2開発テーマにしたがった変更が第1変更後プログラムに反映されているか否かを判定する(S448)。リリース認否判定部80はユーザからの申告に基づいてこの判定を行ってもよい。あるいはまたリリース認否判定部80は、本番系記憶領域92に記憶され第2開発テーマにしたがった変更が反映されている並行開発プログラムと第1変更後プログラムとを比較することでこの判定を行ってもよい。反映されている場合、リリース認否判定部80は第2開発テーマに対する追い付きが完了していると判定する。
【0083】
(丙)についてより具体的には、リリース認否判定部80は、抽出されたステータスIDが「S1」である場合すなわち第2開発テーマによってリリースもリリース申請もされていない場合、並行開発プログラムについて第2開発テーマに追い付く必要がないと判定する。
【0084】
判定結果出力部71は、リリース認否判定部80において並行開発プログラムをリリースしてもよいと判定された場合、並行開発プログラムの追い付きの状況を入出力インタフェース部10を介して所定のプリンタから文書として出力する(S450)。リリース会議ではこの文書が追い付き確認のための参考として使用されてもよい。
【0085】
上書き部60は、リリース認否判定部80において並行開発プログラムをリリースしてもよいと判定され、かつ、リリース承認受付部48によってリリースの承認が受け付けられた場合、第1変更後プログラムによって本番系記憶領域92に記憶されている並行開発プログラムを上書きする(S452)。
【0086】
図12は、第1通知画面500の代表画面図である。第1通知画面500は、並行開発管理対象ID502および第1開発テーマID504をテキストの形で含む。第2通知画面も同様の構成を有する。
【0087】
図13は、照会情報入力画面506の代表画面図である。照会情報入力画面506は、ユーザID入力領域510と、開発テーマID入力領域512と、それ以外の情報の入力領域514と、実行ボタン516と、戻るボタン518と、を有する。照会情報入力画面506をユーザ端末のディスプレイに表示させるための画面情報は、実行ボタン516が押し下げられた場合にユーザID入力領域510および開発テーマID入力領域512のいずれにも入力がないとエラーを返すように構成される。
【0088】
図14は、第3通知画面508の代表画面図である。第3通知画面508は、並行開発管理対象ID520と、追い付き要否判定部76における追い付き要否の判定結果522と、自己の開発テーマID524と、自己のユーザID526と、並行開発の相手の開発テーマID528と、その相手のユーザID530と、を表形式で表示する。
【0089】
以上の構成による並行開発管理装置100の動作を説明する。
例えばあるアプリケーションについて、性能向上のための長期的な開発テーマが既に設定されているときに、そのアプリケーションにバグが発見されたとする。するとそのバグを修正するための新たな短期的な開発テーマが設定される。このような状況では長期的な開発テーマと短期的な開発テーマとで同じプログラムや依存関係にあるプログラムを修正対象として指定する場合がある。並行開発管理装置100は、そのようなプログラムが長期的な開発テーマと短期的な開発テーマとの間で並行開発の状態になると、ログインの際やプログラムの指定の際や照会要求に応じて、追い付きの要否を含む並行開発の状況をユーザに通知する。
【0090】
2つの開発テーマによって並行開発の状態にあるプログラムが、一方の開発テーマよりも先に他方の開発テーマによってリリースされたとする。ここで一方の開発テーマが他方の開発テーマに追い付かないまま一方の開発テーマによるリリースが行われると、他方の開発テーマにしたがった変更が消滅してしまう。これにより、例えば前回リリースした機能が動かなくなるなどのリリース後の障害が発生しうる。
【0091】
これに対して本実施の形態に係る並行開発管理装置100によると、並行開発に係るプログラムを指定する開発テーマのユーザに追い付きの要否を含む並行開発の状況が通知される。したがって、プログラムが並行開発の状態にあること、並行開発の相手、追い付きの要否などをユーザに知らせることで、ユーザの注意を喚起することができる。ユーザは通知内容に基づき適宜追い付きを実行することができる。その結果、リリース後に障害が発生する可能性を低減できる。
【0092】
また、本実施の形態に係る並行開発管理装置100では、既にある開発テーマによって指定されているプログラムが事後的に並行開発の状態となった場合、そのプログラムの情報および並行開発の相手の開発テーマの情報がある開発テーマの通知先に通知される。したがって、ある開発テーマに従事する開発者は、そのプログラムが並行開発の状態となったこと、および並行開発の相手を知ることができる。
【0093】
複数(例えば2つ)の開発テーマによって並行開発の状態にあるプログラムについて、一方の開発テーマによってリリースが申請されてからそのリリースが承認され、リリースが完了するまでには通常数時間から数日のタイムラグが存在する。この間に他方の開発テーマによるそのプログラムのリリースが完了すると、一方の開発テーマによるリリースの完了によって他方の開発テーマにしたがった変更が消滅してしまう場合がある。
【0094】
そこで、本実施の形態に係る並行開発管理装置100では、ある開発テーマによってリリース申請されたプログラムが他の開発テーマによってリリース申請中とされている場合、リリース認否判定部80においてそのプログラムをリリースしてもよいと判定されないので、ある開発テーマによるそのプログラムのリリースが制限される。すなわち、リリース認否判定部80においてプログラムをリリースしてもよいと判定されてから上書き部60が対応する上書きを実行するまでの間、そのプログラムに対する他の上書きが制限される。これにより、上記のようなリリース申請中の上書きによる変更の消滅が発生する可能性が低減される。
【0095】
上述の実施の形態において、記憶装置90の例は、ハードディスクやメモリである。また、本明細書の記載に基づき、各部を、図示しないCPUや、インストールされたアプリケーションプログラムのモジュールや、システムプログラムのモジュールや、ハードディスクから読み出したデータの内容を一時的に記憶するメモリなどにより実現できることは本明細書に触れた当業者には理解されるところである。
【0096】
以上、実施の形態に係る並行開発管理装置100の構成と動作について説明した。この実施の形態は例示であり、その各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0097】
実施の形態では、依存関係参照部28が登録されている依存関係に基づいて指定されたプログラムと依存関係にあるプログラムを開発テーマ管理テーブル304に登録し、読み出し部30は、指定されたプログラムおよびそれと依存関係にあるプログラムを開発環境サーバ110に送信する場合について説明したが、これに限られない。例えば、依存関係に基づく処理はチェックイン段階などの別の段階で行われてもよい。
【0098】
実施の形態では、追い付き要否判定部76は、上書き部60が第1変更後プログラムよりも先に第2変更後プログラムによって本番系記憶領域92に記憶された並行開発プログラムを上書きした場合、第1開発テーマが第2開発テーマに追い付く必要があると判定する場合について説明したが、これに限られない。
【0099】
例えば、追い付き要否判定部は、上書き部60が第1変更後プログラムよりも先に第2変更後プログラムによって本番系記憶領域92に記憶された並行開発プログラムを上書きする予定となっている場合、第1開発テーマが第2開発テーマに追い付く必要があると判定してもよい。
【0100】
特に追い付き要否判定部は、開発テーマ管理テーブル304を参照し、並行開発プログラムについて第1開発テーマIDに対応するリリース予定日が第2開発テーマIDに対応するリリース予定日よりも後となっている場合、第1開発テーマが第2開発テーマに追い付く必要があると判定してもよい。この場合、よりきめ細かな通知が可能となる。
【0101】
実施の形態では、開始日、終了日、リリース申請日など時刻の単位として日付を使用する場合について説明したが、これに限られず他の時刻の単位が使用されてもよい。
【0102】
実施の形態では、開発環境サーバ110、テスト環境サーバ112、本番ゲートウェイ114は別体である場合について説明したが、これに限られず、例えばひとつのサーバに実現されてもよい。
【0103】
通知部70は、ユーザがログオフしている間に発生するそのユーザに通知すべき情報を蓄積し、そのユーザがログインした際に蓄積された情報をそのユーザに通知してもよい。
この場合通知部70は、並行開発管理テーブル302を監視し、ステータスIDに変更があると、その変更があった日時とその変更の内容とを対応付けて図示しないログイン時通知内容保持部に登録する。通知部70は、ユーザが並行開発管理装置100にログインすると、ログイン時通知内容保持部に保持される情報からログインしたユーザに関する情報を抽出する。通知部70は、抽出した情報を含む第4通知画面532をユーザ端末のディスプレイに表示させるための画面情報を生成する。通知部70は、この画面情報を入出力インタフェース部10を介してログインしたユーザのユーザ端末に送信する。
【0104】
図15は、第4通知画面532の代表画面図である。第4通知画面532は、通知日時534と、メッセージID536と、ステータスの変更の内容を示すメッセージ538と、を表形式で表示する。
この場合、ユーザはログイン時に並行開発の状況や履歴を把握することができる。
【符号の説明】
【0105】
2 プログラム開発システム、 10 入出力インタフェース部、 20 受付部、 30 読み出し部、 40 テスト・リリース管理部、 50 本番環境配布部、 60 上書き部、 70 通知部、 90 記憶装置、 92 本番系記憶領域、 94 開発系記憶領域、 96 管理系記憶領域、 100 並行開発管理装置、 108 ネットワーク、 110 開発環境サーバ、 112 テスト環境サーバ、 114 本番ゲートウェイ、 116 本番環境サーバ。
【技術分野】
【0001】
本発明は、コンピュータプログラムの開発を管理する並行開発管理装置および方法に関する。
【背景技術】
【0002】
近年、業務システムの複雑化、高機能化に伴い、その業務システムを構築するコンピュータプログラム(以下、単にプログラムと称す)の数も膨大なものとなり、プログラムの内容も高度になってきている。そのようなプログラムの新規開発や修正を好適に管理するために、本出願人は特許文献1においてプログラム開発管理装置を提案している。
【0003】
このプログラム開発管理装置は、開発すべきプログラムとリリース条件とを開発テーマごとに管理するためのテーマ別プログラムテーブルと、テーマ別プログラムテーブルを参照し、リリース条件が同一のプログラムをひとつのリリース単位として抽出し、リリース単位のディレクトリを生成し、抽出したリリース単位のプログラムを当該ディレクトリに格納するディレクトリ生成部と、を備える。
特許文献1に記載のプログラム開発管理装置によると、リリース時におけるプログラムのリリース漏れやリリース間違い等を大幅に軽減することができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−244974号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に代表されるプログラム開発管理技術においては、2つ以上の開発テーマがひとつのプログラムを指定する、いわゆる並行開発の状態が存在しうる。並行開発の状態では、担当者間の連携不足等のためにプログラム管理上のミスが発生しやすい。
【0006】
本発明はこうした課題に鑑みてなされたものであり、その目的は、プログラムの並行開発においてミスを低減できる管理技術の提供にある。
【課題を解決するための手段】
【0007】
本発明のある態様は並行開発管理装置に関する。この並行開発管理装置は、コンピュータプログラムを記憶する記憶領域と、開発のテーマごとに変更対象のコンピュータプログラムの指定を受け付ける受付部と、指定されたコンピュータプログラムを記憶領域から読み出す読み出し部と、読み出し部によって読み出されたコンピュータプログラムに対してテーマにしたがった変更がなされた場合、変更されたコンピュータプログラムによって記憶領域に記憶されたコンピュータプログラムを上書きする上書き部と、テーマに関連付けられた通知先に所定の情報を通知する通知部と、を備える。読み出し部は、受付部が第1および第2のテーマについてひとつのコンピュータプログラムの指定を受け付けた場合に、第1のテーマに対してひとつのコンピュータプログラムを第1のコンピュータプログラムとして記憶領域から読み出すと共に、第2のテーマに対してひとつのコンピュータプログラムを第2のコンピュータプログラムとして記憶領域から読み出す。通知部は、上書き部が第1のコンピュータプログラムよりも先に第2のコンピュータプログラムによって記憶領域に記憶されたひとつのコンピュータプログラムを上書きすると、ひとつのコンピュータプログラムの情報および第2のテーマの情報を第1のテーマに関連付けられた通知先に通知する。
【0008】
この態様によると、上書き部が第1のコンピュータプログラムよりも先に第2のコンピュータプログラムによって記憶領域に記憶されたひとつのコンピュータプログラムを上書きした場合、第1のテーマに関連付けられた通知先は、ひとつのコンピュータプログラムの情報および第2のテーマの情報を知ることができる。
【0009】
本発明の別の態様もまた、並行開発管理装置である。この装置は、互いに関連した第1のコンピュータプログラムおよび第2のコンピュータプログラムを記憶する記憶領域と、開発の第1のテーマについて第1のコンピュータプログラムの指定を受け付けると共に開発の第2のテーマについて第2のコンピュータプログラムの指定を受け付ける受付部と、第1のテーマに対して第1のコンピュータプログラムを記憶領域から読み出すと共に第2のテーマに対して第2のコンピュータプログラムを記憶領域から読み出す読み出し部と、第2のテーマの情報を第1のテーマに関連付けられた通知先に通知する通知部と、を備える。
【0010】
この態様によると、互いに関連した第1のコンピュータプログラムおよび第2のコンピュータプログラムを第1のテーマおよび第2のテーマがそれぞれ指定する場合、第1のテーマに関連付けられた通知先は第2のテーマの情報を知ることができる。
【0011】
なお、以上の構成要素の任意の組み合わせや、本発明の構成要素や表現を装置、方法、システム、プログラム、プログラムを格納した記録媒体などの間で相互に置換したものもまた、本発明の態様として有効である。
【発明の効果】
【0012】
本発明によれば、プログラムの並行開発においてミスを低減できる。
【図面の簡単な説明】
【0013】
【図1】実施の形態に係る並行開発管理装置を有するプログラム開発システムを模式的に示す説明図である。
【図2】図1の並行開発管理装置における例示的な一連の処理を示すフローチャートである。
【図3】実施の形態に係る並行開発管理装置の機能および構成を示すブロック図である。
【図4】図3の記憶装置のディレクトリ構成の一例を示す模式図である。
【図5】図4の並行開発管理テーブルの一例を示すデータ構造図である。
【図6】図4の開発テーマ管理テーブルの一例を示すデータ構造図である。
【図7】図4の第1依存関係テーブルの一例を示すデータ構造図である。
【図8】図4の第2依存関係テーブルの一例を示すデータ構造図である。
【図9】図3の並行開発管理装置における例示的な一連の処理を時系列に沿って示すチャートである。
【図10】図3の並行開発管理装置における例示的な一連の処理を時系列に沿って示すチャートである。
【図11】図3の並行開発管理装置における例示的な一連の処理を時系列に沿って示すチャートである。
【図12】第1通知画面の代表画面図である。
【図13】照会情報入力画面の代表画面図である。
【図14】第3通知画面の代表画面図である。
【図15】第4通知画面の代表画面図である。
【発明を実施するための形態】
【0014】
以下、本発明を好適な実施の形態をもとに図面を参照しながら説明する。各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付するものとし、適宜重複した説明は省略する。
【0015】
図1は、実施の形態に係る並行開発管理装置100を有するプログラム開発システム2を模式的に示す説明図である。プログラム開発システム2は、顧客のシステム内に設置されたサーバである本番環境サーバ116上で機能しているアプリケーションを構成するプログラムを管理する。プログラム開発システム2は、開発のテーマ(以下、開発テーマと称する)に基づきプログラムの修正、更新、追加等を行い、本番環境サーバ116に反映させる。開発テーマは、例えばアプリケーションを変更する目的である。例えば開発テーマ「バグの修正」では、プログラム開発システム2は、発見されたバグに対応する修正をプログラムに施して本番環境サーバ116へ配布する。また例えば開発テーマ「新機能追加」では、プログラム開発システム2は、開発されたアプリケーションの新機能に対応する新たなプログラムを本番環境サーバ116へ配布する。
【0016】
プログラム開発システム2は、実施の形態に係る並行開発管理装置100、複数の(図1では3つの)ユーザ端末102、開発環境サーバ110、テスト環境サーバ112、本番ゲートウェイ114、を備える。プログラム開発システム2のそれらの部材はインターネットなどのネットワーク108によって互いに接続される。本番ゲートウェイ114は本番環境サーバ116と不図示のネットワーク等で接続され、本番環境サーバ116へのゲートウェイの役割を果たす。
【0017】
プログラム開発システム2のユーザは、例えばプログラムを開発する開発者、開発のテーマを定め開発の指揮をとる開発リーダ、開発を管理する開発管理者、プログラムの本番環境サーバへの配布(すなわち、リリース)を担当するリリース担当者、を含む。
【0018】
以下、プログラム開発システム2や並行開発管理装置100ではプログラムが個別に取り扱われる場合について説明する。しかしながら、例えばプログラムアーカイブ単位と称してもよいような、関連する複数のプログラムの集合またはまとまりを一単位として扱う場合にも、本実施の形態に係る技術的思想を適用できることは、本明細書に触れた当業者には自明である。
【0019】
図2は、図1の並行開発管理装置100における例示的な一連の処理を示すフローチャートである。開発リーダは自己のユーザ端末から並行開発管理装置100にアクセスし、開発テーマを特定する開発テーマIDと、開発テーマの名称と、開発テーマの責任者名と、を対応付けて並行開発管理装置100に登録する。並行開発管理装置100は、その登録を受け付ける(S202)。登録された開発テーマに従事する開発者は自己のユーザ端末から並行開発管理装置100にアクセスし、登録された開発テーマにおいて変更する必要があるプログラムを変更対象のプログラムとして指定する。ここで指定されるプログラムは、原則として並行開発管理装置100の本番系記憶領域(後述)に記憶されているプログラムである。
【0020】
並行開発管理装置100はその指定を受け付け、指定されたプログラムを本番系記憶領域から読み出して開発系記憶領域(後述)へ複製する。このようにして開発系記憶領域に複製されたプログラムをプログラムAとよぶ。並行開発管理装置100は、プログラムAを開発環境サーバ110へ送信する(S204)。開発者は自己のユーザ端末から並行開発管理装置100を介して開発環境サーバ110にアクセスし、プログラムAに必要な変更を加える。変更完了後のプログラムAをプログラムBと呼ぶ。開発者は、変更完了後、開発環境サーバ110においてプログラムBに対して単体テストを実施する。開発者は、プログラムBがこの単体テストをパスすると、そのプログラムBを開発環境サーバ110から並行開発管理装置100に送信する。並行開発管理装置100は、そのようにして送信されたプログラムBを受信し、受信したプログラムBによって開発系記憶領域に記憶されているプログラムAを上書きする(S206)。
【0021】
開発テーマにおいて連結・総合テストが必要な場合、並行開発管理装置100は、プログラムBをテスト環境サーバ112へ送信する(S208)。開発者は自己のユーザ端末から並行開発管理装置100を介してテスト環境サーバ112にアクセスし、プログラムBを含む連結・総合テストを実施する。この連結・総合テストにパスすると、開発者は自己のユーザ端末から並行開発管理装置100にアクセスしその旨を並行開発管理装置100に登録する。並行開発管理装置100はその登録を受け付ける(S210)。
【0022】
開発リーダは、開発テーマについて必要な変更等が完了しリリース準備が整ったと判断すると、自己のユーザ端末から並行開発管理装置100にアクセスし、開発テーマIDおよびリリースすべきプログラムを指定してリリースの申請を行う。並行開発管理装置100はこのリリースの申請を受け付ける(S212)。並行開発管理装置100は、リリースの申請を受け付けると、リリース対象として指定されたプログラムの並行開発の状況を抽出し、その結果を不図示のプリンタ等で出力する。このように印刷された情報等を基にリリース確認会議にてリリースを承認するか否かが担当者によって議論される。その会議でリリースが承認されると、開発リーダまたは他のユーザは、自己のユーザ端末から並行開発管理装置100にアクセスし、リリースを承認する。並行開発管理装置100は、そのリリースの承認を受け付ける(S214)。並行開発管理装置100は、リリースの承認を受け付けると、プログラムBを本番ゲートウェイ114に送信する(S216)と共に、プログラムBによって本番系記憶領域に記憶されている読み出し元のプログラムを上書きする。以下、本番系記憶領域に記憶されている読み出し元のプログラムが上書されたことをもって、リリースの完了と定義する。
【0023】
図3は、実施の形態に係る並行開発管理装置100の機能および構成を示すブロック図である。ここに示す各ブロックは、ハードウエア的には、コンピュータのCPU(central processing unit)をはじめとする素子や機械装置で実現でき、ソフトウエア的にはプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウエア、ソフトウエアの組合せによっていろいろなかたちで実現できることは、本明細書に触れた当業者には理解されるところである。
【0024】
並行開発管理装置100は、入出力インタフェース部10、受付部20、読み出し部30、テスト・リリース管理部40、本番環境配布部50、上書き部60、通知部70、記憶装置90、を備える。
【0025】
図4は、図3の記憶装置90のディレクトリ構成の一例を示す模式図である。記憶装置90は、本番系記憶領域92、開発系記憶領域94、管理系記憶領域96、を含む。本番系記憶領域92は、本番環境サーバ116で稼働中のプログラムと同じプログラムを、本番環境サーバ116のものに準ずるディレクトリ構成で記憶する。以下、2つのプログラムが同じである、とは一方のプログラムの内容が他方のプログラムの内容と同じであることを示す。すなわち、それぞれ別々のサーバに保持された2つのプログラムであっても内容が同じであれば同じである。
【0026】
開発系記憶領域94は、開発テーマごとに、変更対象として指定されたプログラムを複製して生成されるプログラムを記憶する。開発系記憶領域94は、並行開発管理装置100に受け付けられた開発テーマごとに、その開発テーマを特定できる名称のディレクトリを有する。各開発テーマにおいて変更対象として指定されたプログラムを複製して生成されたプログラムは、その開発テーマのディレクトリに入れられる。
【0027】
管理系記憶領域96は、並行開発管理テーブル302、開発テーマ管理テーブル304、第1依存関係テーブル306、第2依存関係テーブル308、を記憶する。
【0028】
図5は、並行開発管理テーブル302の一例を示すデータ構造図である。並行開発管理テーブル302は、管理対象ID310ごとに、開発テーマID312と、ステータスID314と、開始日316と、終了日318と、リリース申請日320と、を対応付けて記憶する。
管理対象IDは、並行開発管理装置100によって管理される対象を並行開発管理装置100において特定するIDである。上記の通り本実施の形態ではプログラムが個別に取り扱われる場合を説明するので、管理対象IDは、プログラム名やプログラムの並行開発管理装置100におけるパスなどのプログラムを特定するIDである。特に管理対象IDは、本番系記憶領域92に記憶されているプログラムを特定するIDである。
【0029】
ステータスIDは、管理対象IDによって特定されるプログラムの開発テーマにおける状態を特定するIDである。この状態には、プログラムの変更やテストが行われている状態である開発中状態と、リリースが申請されてからリリースが完了するまでのリリース申請中状態と、リリースが完了したリリース済み状態と、がある。図5では、ステータスID「S1」は開発中状態に、ステータスID「S2」はリリース申請中状態に、ステータスID「S3」はリリース済み状態に、それぞれ対応する。
【0030】
各状態は例えば図2を参照して細分化できる。開発中状態は、開発環境サーバ110で修正等の変更が行われている変更中状態と、開発環境サーバ110において単体テストが完了した単体テスト完了状態と、テスト環境サーバ112において連結テストが完了した連結テスト完了状態と、テスト環境サーバ112において総合テストが完了した総合テスト完了状態と、に分けることができる。リリース申請中状態は、リリースの承認を待っているリリース承認待ち状態と、リリースが承認されてから実際にリリースが完了するまでのリリース承認済み状態と、に分けられる。
【0031】
開始日は、開発テーマの開始の日付であり、特に管理対象IDによって特定されるプログラムが変更対象のプログラムとして指定された日付である。
終了日は、開発テーマの終了の日付であり、特に管理対象IDによって特定されるプログラムのリリースが完了した日付である。
リリース申請日は、管理対象IDによって特定されるプログラムのリリースが申請された日付である。
【0032】
図6は、開発テーマ管理テーブル304の一例を示すデータ構造図である。開発テーマ管理テーブル304は、開発テーマID322ごとに、開発テーマの内容を端的に示す開発テーマ名324と、開発テーマによって変更対象として指定されたプログラムの管理対象ID326と、開発テーマについてリリースが予定される日付であるリリース予定日328と、を対応付けて記憶する。
【0033】
あるプログラムが別のプログラムを呼び出したり参照したりする場合やソースプログラムおよびそれをコンパイルして生成される実行プログラムの場合などのように、複数の異なるプログラムが関連する場合がある。2つのプログラムが関連することは、2つのプログラムが依存関係にある、すなわち一方のプログラムが他方のプログラムに依存することを含む。これは例えば、他方のプログラムを変更すると一方のプログラムも必然的に変更すべきである場合である。以下便宜的に、依存する側のプログラムを「子」、依存される側のプログラムを「親」として説明する。
本実施の形態では、前提として、ひとつの子プログラムに対してひとつの親プログラムのみ設定可能とする。しかしながら、例えば親プログラムと子プログラムとが多対多の場合にも、本実施の形態に係る技術的思想を適用できることは、本明細書に触れた当業者には自明である。
【0034】
図7は、第1依存関係テーブル306の一例を示すデータ構造図である。第1依存関係テーブル306は、プログラム間の依存関係を特定する依存関係ID334と、その依存関係における親プログラムの管理対象IDである親管理対象ID336と、を対応付けて記憶する。
【0035】
図8は、第2依存関係テーブル308の一例を示すデータ構造図である。第2依存関係テーブル308は、依存関係における子プログラムの管理対象IDである子管理対象ID330と、その依存関係を特定する依存関係ID332と、を対応付けて記憶する。
【0036】
本実施の形態に係る並行開発管理装置100では、子プログラムと親プログラムとを直接対応付けるテーブルを用意するかわりに、両者を紐付ける依存関係IDを使用し、依存関係を2つの異なるテーブルで管理する。他の実施の形態では前者も可能であるが、本実施の形態で後者を採用した理由は以下の通りである。
【0037】
並行開発管理装置100のユーザが並行開発管理装置100に親プログラム、子プログラムおよびそれらの依存関係を新規に登録する例示的な手順は以下の通りである。
(1)ユーザは、親プログラムを並行開発管理装置100の本番系記憶領域92に登録する。
(2)ユーザは依存関係の依存関係IDを採番し、親プログラムの親管理対象IDと共に並行開発管理装置100に入力する。並行開発管理装置100の受付部20は、入力された依存関係IDと親管理対象IDとを対応付けて第1依存関係テーブル306に登録する。
(3)ユーザは子プログラムを並行開発管理装置100の本番系記憶領域92に登録すると共に、採番された依存関係IDと子プログラムの子管理対象IDとを並行開発管理装置100に入力する。並行開発管理装置100の受付部20は、入力された子管理対象IDと依存関係IDとを対応付けて第2依存関係テーブル308に登録する。
【0038】
この場合、(2)で依存関係IDを採番してから(3)で子プログラムを登録するので、親プログラムと子プログラムとを同時に登録できない。また、依存関係を登録するためには、親プログラムが本番系記憶領域92に登録されていなければならない。したがって、親プログラムがいることを確定してから子プログラムを登録することとなるので、誤った登録を抑制することができる。
【0039】
図3に戻る。
入出力インタフェース部10は、ネットワーク108と接続され、並行開発管理装置100と外部の装置との通信を制御する。外部の装置は例えば複数のユーザ端末102、開発環境サーバ110、テスト環境サーバ112、本番ゲートウェイ114、である。入出力インタフェース部10は、ネットワーク108を介して装置間でデータ等をやりとりする公知の通信技術、例えばTCP/IPプロトコルにしたがった通信を行う技術を使用して構成される。
【0040】
受付部20は、開発テーマごとに変更対象のプログラムの指定を受け付ける。受付部20は、ログイン部22、開発テーマ受付部24、変更対象指定受付部26、依存関係参照部28、管理テーブル登録部29、を含む。
ログイン部22は、ユーザからのログインを許可するか否かを決定する。ログイン部22は、入出力インタフェース部10を介してユーザ端末からのログイン要求を取得すると、ユーザIDとパスワードとの入力を促す画面をユーザ端末のディスプレイに表示させるための情報をユーザ端末に送信する。ログイン部22は、ユーザがユーザ端末に入力したユーザIDとパスワードとを入出力インタフェース部10を介して取得して認証する。ログイン部22は、認証が成功するとそのユーザのログインを許可してセッションを開始し、失敗すると許可しない。
【0041】
ユーザIDは並行開発管理装置100のユーザを特定するIDである。ユーザIDは、ユーザの種別、すなわち開発者であるか、開発リーダであるか、開発管理者であるか、リリース担当者であるか、を識別可能に設定される。
【0042】
開発テーマ受付部24は、入出力インタフェース部10を介して開発リーダのユーザ端末から開発テーマIDと開発テーマ名とリリース予定日とを受け付け、開発テーマ管理テーブル304に登録する。なお、開発テーマIDは開発テーマ受付部24が決定してもよい。以下、開発テーマ受付部24によって受け付けられた開発テーマIDを受け付け開発テーマIDと称す。
【0043】
変更対象指定受付部26は、受け付け開発テーマIDによって特定される開発テーマに従事する開発者のユーザ端末から、入出力インタフェース部10を介して、その開発テーマにしたがって変更する必要があると指定されたプログラムの管理対象IDを取得する。変更対象指定受付部26は、取得された管理対象IDを受け付け開発テーマIDと対応付けて開発テーマ管理テーブル304に登録する。以下、変更対象指定受付部26によって取得された管理対象IDを指定管理対象ID、指定管理対象IDによって特定されるプログラムを指定プログラムと称す。
【0044】
依存関係参照部28は、第1依存関係テーブル306および第2依存関係テーブル308を参照し、指定プログラムと依存関係にあるプログラムの有無を判定する。そのようなプログラムが存在する場合、依存関係参照部28は、そのようなプログラムの管理対象IDを追加的に受け付け開発テーマIDに対応付けて開発テーマ管理テーブル304に登録する。すなわち、開発テーマ管理テーブル304は、開発テーマの開発テーマIDごとに、その開発テーマにおいて変更対象として指定されたプログラムの管理対象IDおよびそのプログラムと依存関係にあるプログラムの管理対象IDを記憶する。
【0045】
特に依存関係参照部28は、まず第2依存関係テーブル308を参照し、指定管理対象IDに対応する依存関係IDがあればそれを抽出する。次に依存関係参照部28は、第1依存関係テーブル306を参照し、抽出された依存関係IDに対応する親管理対象IDを抽出する。さらに依存関係参照部28は第2依存関係テーブル308を参照し、抽出された親管理対象IDを子管理対象IDとしたときにそれと対応する依存関係IDがあれば抽出する。以下、依存関係参照部28は第1依存関係テーブル306および第2依存関係テーブル308を交互に参照する処理を、抽出された親管理対象IDを子管理対象IDとしたときにそれと対応する依存関係IDがなくなるまで繰り返す。
依存関係参照部28は、上記処理により抽出された全ての親管理対象IDを、受け付け開発テーマIDに対応付けて開発テーマ管理テーブル304に登録する。
【0046】
例えば、受け付け開発テーマIDは「T1」であり、指定管理対象IDは「A100_1.pco」である場合を考える。
依存関係参照部28は、図8に示される第2依存関係テーブル308を参照し、依存関係ID「x1」を抽出する。依存関係参照部28は、図7に示される第1依存関係テーブル306を参照し、親管理対象ID「MAKEFILE」を抽出する。次に依存関係参照部28は、図8に示される第2依存関係テーブル308を参照し、抽出された親管理対象ID「MAKEFILE」に対応する依存関係ID「x2」を抽出する。依存関係参照部28は、図7に示される第1依存関係テーブル306を参照し、親管理対象ID「A100.exe」を抽出する。依存関係参照部28は、図8に示される第2依存関係テーブル308を参照し、抽出された親管理対象ID「A100.exe」に対応する依存関係IDはないと判定する。依存関係参照部28は、抽出された親管理対象ID「MAKEFILE」、「A100.exe」を受け付け開発テーマID「T1」に対応付けて追加的に開発テーマ管理テーブル304に登録する。
以下、依存関係参照部28によって抽出された親管理対象IDを依存管理対象ID、依存管理対象IDによって特定されるプログラムを依存プログラムと称す。
【0047】
管理テーブル登録部29は、指定管理対象IDと、受け付け開発テーマIDと、ステータスIDとして「S1」と、開始日として指定管理対象IDが取得された日付と、を対応付けて並行開発管理テーブル302に登録する。また管理テーブル登録部29は、依存管理対象IDと、受け付け開発テーマIDと、ステータスIDとして「S1」と、開始日として指定管理対象IDが取得された日付と、を対応付けて並行開発管理テーブル302に登録する。
【0048】
読み出し部30は、指定プログラムを本番系記憶領域92から読み出す。読み出し部30は、開発テーマディレクトリ生成部32、変更対象複製部34、変更対象送信部36、を含む。
開発テーマディレクトリ生成部32は、受け付け開発テーマIDに対応するディレクトリを開発系記憶領域94に生成する。
【0049】
変更対象複製部34は、指定プログラムおよび依存プログラムを本番系記憶領域92から読み出して複製する。以下、指定プログラムから複製されたプログラムを指定複製プログラム、依存プログラムから複製されたプログラムを依存複製プログラムと称す。変更対象複製部34は、指定複製プログラムおよび依存複製プログラムを開発テーマディレクトリ生成部32によって生成されたディレクトリに入れる。変更対象複製部34における処理の例が図4の破線矢印や一点鎖線矢印で示される。
【0050】
変更対象送信部36は、入出力インタフェース部10を介して開発環境サーバ110に指定複製プログラムおよび依存複製プログラムを送信する。
【0051】
開発者は、開発環境サーバ110において、指定複製プログラムおよび依存複製プログラムに受け付け開発テーマIDによって特定される開発テーマにしたがった修正等の変更を施し、単体テストを実施する。以下、変更が完了し単体テストをパスした指定複製プログラムを指定変更後プログラム、変更が完了し単体テストをパスした依存複製プログラムを依存変更後プログラムと称す。
【0052】
テスト・リリース管理部40は、開発テーマにしたがった変更が完了し単体テストをパスしたプログラムの連結・総合テストおよびリリースを管理する。テスト・リリース管理部40は、変更後プログラム取得部42、テスト環境配布部44、リリース申請受付部46、リリース認否判定部80、リリース承認受付部48、を含む。
【0053】
変更後プログラム取得部42は、入出力インタフェース部10を介して開発環境サーバ110から指定変更後プログラムおよび依存変更後プログラムを取得する。変更後プログラム取得部42は、取得された指定変更後プログラムおよび依存変更後プログラムによって、開発系記憶領域94の受け付け開発テーマIDに対応するディレクトリに入っている指定複製プログラムおよび依存複製プログラムをそれぞれ上書きする。
【0054】
テスト環境配布部44は、受け付け開発テーマIDによって特定される開発テーマにおいて連結・総合テストが必要な場合、入出力インタフェース部10を介して指定変更後プログラムおよび依存変更後プログラムをテスト環境サーバ112へ送信する。
【0055】
リリース申請受付部46は、入出力インタフェース部10を介して開発リーダのユーザ端末から、リリース対象の開発テーマを特定するリリース開発テーマIDとリリース対象として指定されたプログラムを特定するリリース管理対象IDとを受け付ける。ここでリリース申請受付部46は、依存関係参照部28と同様に第1依存関係テーブル306および第2依存関係テーブル308を参照して、リリース対象として指定されたプログラムと依存関係にあるプログラムがリリース対象とされているか否かを判定し、されていないものがあればそれをリリース対象に加えてもよい。この場合、リリース漏れを抑制することができる。
【0056】
リリース申請受付部46は並行開発管理テーブル302にアクセスし、受け付けたリリース管理対象IDおよびリリース開発テーマIDに対応するステータスIDを「S2」に書き換え、リリース申請日を登録する。
【0057】
以下、リリース申請受付部46がリリース開発テーマIDとして受け付け開発テーマIDを、リリース管理対象IDとして指定管理対象IDおよび依存管理対象IDを、受け付けた場合を考える。
リリース認否判定部80は、指定プログラムおよび依存プログラムについてリリースの認否を判定する。詳細は後述する。
リリース承認受付部48は、入出力インタフェース部10を介して開発リーダまたは他のユーザのユーザ端末から、受け付け開発テーマIDによって特定される開発テーマに対するリリースの承認を受け付ける。
【0058】
本番環境配布部50は、リリース承認受付部48によってリリースの承認が受け付けられると、入出力インタフェース部10を介して指定変更後プログラムおよび依存変更後プログラムを本番ゲートウェイ114に送信する。
【0059】
上書き部60は、リリース承認受付部48によってリリースの承認が受け付けられると、指定変更後プログラムおよび依存変更後プログラムによって、本番系記憶領域92に記憶されている指定プログラムおよび依存プログラムをそれぞれ上書きする。
上書き部60は、並行開発管理テーブル302にアクセスし、指定管理対象IDおよび受け付け開発テーマIDに対応するステータスIDを「S3」に書き換え、終了日を登録する。依存管理対象IDについても同様である。
【0060】
通知部70は、開発テーマに関連付けられた通知先に所定の情報を通知する。例えば通知部70は、所定の情報を提示する画面をユーザ端末のディスプレイに表示させるための画面情報を、入出力インタフェース部10を介してそのユーザ端末に送信する。また例えば通知部70は、開発リーダや開発者の電子メールアドレス宛に所定の情報を含む電子メールを入出力インタフェース部10を介して送信する。
通知部70は、判定結果出力部71、照会要求受付部72、指定検知部74、並行開発情報抽出部75、追い付き要否判定部76、並行開発状況提示部77、を含む。各部の詳細は後述する。
【0061】
さて、並行開発管理装置100の運用上、本番系記憶領域92に記憶されるひとつのプログラムが複数の異なる開発テーマによって指定されることがある。また、本番系記憶領域92に記憶された関連する2つのプログラムがそれぞれ別の開発テーマによって指定されることもある。これらはいずれもプログラムの並行開発である。
【0062】
並行開発管理テーブル302は、管理対象IDごとに、その管理対象IDによって特定されるプログラムを指定する開発テーマの開発テーマIDおよびその管理対象IDによって特定されるプログラムと依存関係にあるプログラム(特に、その管理対象IDによって特定されるプログラムを親プログラムとする子プログラム)を指定する開発テーマの開発テーマIDを記憶する。
また、並行開発管理テーブル302が管理対象IDと複数の開発テーマIDとを対応付けて記憶している場合、並行開発管理装置100はその管理対象IDによって特定されるプログラムが並行開発の状態にあると認識する。したがって並行開発管理装置100は、依存関係のために並行開発となるプログラムも並行開発の状態にあるプログラムとして認識することができる。
【0063】
例えば、親プログラムと子プログラムとがそれぞれ別の開発テーマによって指定された場合、並行開発管理テーブル302は親プログラムを特定する管理対象IDに両方の開発テーマの開発テーマIDを対応付けて記憶する。また、親プログラムを同じくする2つの子プログラムがそれぞれ別の開発テーマによって指定された場合、並行開発管理テーブル302は親プログラムを特定する管理対象IDに両方の開発テーマの開発テーマIDを対応付けて記憶する。
【0064】
並行開発に関する並行開発管理装置100のより詳しい処理を説明する。
以下、本番系記憶領域92に記憶され2つの別の開発テーマによって並行開発の状態にあるプログラムを並行開発プログラム、並行開発プログラムを特定する管理対象IDを並行開発管理対象ID、並行開発プログラムを指定する一方の開発テーマを第1開発テーマ、その開発テーマIDを第1開発テーマID、他方の開発テーマを第2開発テーマ、その開発テーマIDを第2開発テーマIDと称す。並行開発管理テーブル302は、並行開発管理対象IDと、第1開発テーマIDおよび第2開発テーマIDと、を対応付けて記憶する。また以下の説明は、並行開発プログラムが2つの開発テーマがそのプログラムを直接指定することによって並行開発の状態になった場合および依存関係によって並行開発の状態になった場合の両方に当てはまる。
【0065】
図9は、並行開発管理装置100における例示的な一連の処理を時系列に沿って示すチャートである。図9では、並行開発プログラムが指定される際の例示的な処理が示される。
第1開発テーマに従事する開発者は並行開発プログラムまたは並行開発プログラムの子プログラムを指定する(S402)。受付部20は、並行開発管理対象IDと第1開発テーマIDとステータスID「S1」とを対応付けて並行開発管理テーブル302に登録する(S404)。
【0066】
開発テーマディレクトリ生成部32は、第1開発テーマIDに対応する第1ディレクトリを開発系記憶領域94に生成する(S406)。変更対象複製部34は、並行開発プログラムを本番系記憶領域92から読み出して複製し、第1複製プログラムを生成する。変更対象複製部34は、第1複製プログラムを第1ディレクトリに格納する(S408)。変更対象送信部36は、第1複製プログラムを入出力インタフェース部10を介して開発環境サーバ110に送信する(S410)。
【0067】
その後、第2開発テーマに従事する開発者は並行開発プログラムまたは並行開発プログラムの子プログラムを指定する(S412)。管理テーブル登録部29は、登録のために並行開発管理テーブル302にアクセスし、並行開発管理対象IDが並行開発管理テーブル302に既に登録されていることを検知する。管理テーブル登録部29は、並行開発管理対象IDおよび第2開発テーマIDを指定検知部74に渡す。指定検知部74はそれらの情報を受けると、並行開発プログラムについての並行開発を検知する(S414)。
【0068】
並行開発情報抽出部75は、指定検知部74が並行開発を検知すると、並行開発管理テーブル302を参照し、並行開発の相手の開発テーマIDとして並行開発管理対象IDに対応する第1開発テーマIDと、そのステータスIDと、を抽出する(S416)。
並行開発状況提示部77は、並行開発情報抽出部75によって抽出されたステータスIDが「S1」または「S2」である場合、すなわちステータスがリリース済みでない場合、並行開発管理対象IDおよび第1開発テーマIDをテキストの形で含む第1通知画面500(図12で後述)をユーザ端末のディスプレイに表示させるための画面情報を生成する。並行開発状況提示部77は、生成した画面情報を入出力インタフェース部10を介して第2開発テーマに従事する開発者のユーザ端末に送信する(S418)。
【0069】
また並行開発状況提示部77は、並行開発管理対象IDおよび第2開発テーマIDをテキストの形で含む第2通知画面をユーザ端末のディスプレイに表示させるための画面情報を生成する。並行開発状況提示部77は、第1開発テーマに従事する開発者のセッション中であればそのセッション中に、第1開発テーマに従事する開発者がログアウトしていれば再ログイン後に、生成した画面情報を入出力インタフェース部10を介して第1開発テーマに従事する開発者のユーザ端末に送信する(S420)。
【0070】
受付部20は、並行開発管理対象IDおよび第2開発テーマIDを対応付けて並行開発管理テーブル302に登録する(S422)。
開発テーマディレクトリ生成部32は、第2開発テーマIDに対応する第2ディレクトリを開発系記憶領域94に生成する(S424)。
変更対象複製部34は、並行開発プログラムを本番系記憶領域92から読み出して複製し、第2複製プログラムを生成する。変更対象複製部34は、第2複製プログラムを第2ディレクトリに格納する(S426)。
変更対象送信部36は、第2複製プログラムを入出力インタフェース部10を介して開発環境サーバ110に送信する(S428)。
【0071】
第1開発テーマにしたがった変更が完了し単体テストをパスした第1複製プログラムを第1変更後プログラム、第2開発テーマにしたがった変更が完了し単体テストをパスした第2複製プログラムを第2変更後プログラムと称す。
第1開発テーマよりも先に第2開発テーマのリリースが完了した場合に、第1変更後プログラムに第2開発テーマにしたがった変更を取り込むことを第1開発テーマが第2開発テーマに「追い付く」と表現する。
【0072】
図10は、並行開発管理装置100における例示的な一連の処理を時系列に沿って示すチャートである。図10では、並行開発の状況が照会される際の例示的な処理が示される。
第1開発テーマに従事する開発者のユーザ端末は、並行開発の状況を照会するための並行開発照会要求をネットワーク108を介して並行開発管理装置100に送信する(S430)。照会要求受付部72は、並行開発照会要求を受けると、開発テーマIDなどの照会に必要な情報を第1開発テーマに従事する開発者に要求する(S432)。特に照会要求受付部72は、ユーザIDまたは開発テーマIDを必須入力項目として照会用の情報の入力を促す照会情報入力画面506(図13で後述)をユーザ端末のディスプレイに表示させるための画面情報を生成する。照会要求受付部72は、この画面情報を入出力インタフェース部10を介して第1開発テーマに従事する開発者のユーザ端末に送信する。
【0073】
第1開発テーマに従事する開発者のユーザ端末は、第1開発テーマIDを含む要求された情報を照会要求受付部72に提供する(S434)。特に照会要求受付部72は、ユーザ端末のディスプレイに表示された照会情報入力画面506に対して入力された情報を、そのユーザ端末から入出力インタフェース部10を介して取得する。照会要求受付部72は、取得した情報から第1開発テーマIDを抽出する(S436)。
【0074】
並行開発情報抽出部75は開発テーマ管理テーブル304を参照し、抽出された第1開発テーマIDに対応する管理対象IDを抽出する。このようにして抽出された管理対象IDは並行開発管理対象IDを含む。並行開発情報抽出部75は並行開発管理テーブル302を参照し、抽出された管理対象IDのなかから第1開発テーマID以外の開発テーマIDが対応付けられた管理対象IDを選択する。特に、並行開発管理テーブル302において並行開発管理対象IDには第1開発テーマIDおよび第2開発テーマIDが対応付けられているので、並行開発情報抽出部75は並行開発管理対象IDを選択する(S438)。
【0075】
追い付き要否判定部76は、並行開発プログラムについて第1開発テーマが第2開発テーマに追い付く必要があるか否かを判定する(S440)。追い付き要否判定部76は、上書き部60が第1変更後プログラムよりも先に第2変更後プログラムによって本番系記憶領域92に記憶された並行開発プログラムを上書きした場合、第1開発テーマが第2開発テーマに追い付く必要があると判定する。そうでない場合、追い付き要否判定部76は追い付く必要がないと判定する。
【0076】
特に追い付き要否判定部76は並行開発管理テーブル302を参照し、並行開発管理対象IDについて、第2開発テーマIDに対応するステータスIDが「S3」となっており、かつ、第2開発テーマIDに対応する終了日が第1開発テーマIDに対応する開始日よりも後となっている場合、第1開発テーマが第2開発テーマに追い付く必要があると判定する。また、追い付き要否判定部76は、例えば第2開発テーマIDに対応するステータスIDが「S1」となっている場合は追い付く必要がないと判定する。
【0077】
並行開発状況提示部77は、並行開発情報抽出部75によって選択された管理対象IDと並行開発の相手の開発テーマIDと追い付き要否判定部76における判定結果とを対応付けて照会元に通知する。特に並行開発状況提示部77は、並行開発管理対象IDと追い付きの要否と第2開発テーマIDとを含む第3通知画面508(図14で後述)をユーザ端末のディスプレイに表示させるための画面情報を生成する。並行開発状況提示部77は、この画面情報を入出力インタフェース部10を介して第1開発テーマに従事する開発者のユーザ端末に送信する(S442)。
【0078】
なお、照会要求受付部72は、並行開発照会要求に代えて第1開発テーマに従事する開発者のログインを契機として並行開発状況の照会を開始してもよい。
【0079】
図11は、並行開発管理装置100における例示的な一連の処理を時系列に沿って示すチャートである。図11では、リリースの際の例示的な処理が示される。
第1変更後プログラムが開発環境サーバ110から並行開発管理装置100へ送信され、連結・総合テストが完了すると、第1開発テーマの開発リーダは並行開発プログラムのリリースを申請する(S444)。リリース申請受付部46はこのリリース申請を受け付ける。
【0080】
リリース認否判定部80はリリース申請受付部46によってリリース申請が受け付けられると、並行開発プログラムについてリリースの認否を判定する。
リリース認否判定部80は、並行開発管理テーブル302を参照し、並行開発プログラムについて(甲)第1開発テーマの開始日からリリース申請日までの間に並行開発の状態になったことがない場合か、または、(乙)第2開発テーマによってリリース申請中とされておらずかつ第2開発テーマに対する追い付きが完了している場合か、または、(丙)第2開発テーマによってリリース申請中とされておらずかつ第2開発テーマに追い付く必要がない場合に、並行開発プログラムをリリースしてもよいと判定する。
【0081】
(乙)についてより具体的には、リリース認否判定部80は、並行開発管理テーブル302を参照し、並行開発管理対象IDに対応付けられた第2開発テーマIDのステータスIDを抽出する。リリース認否判定部80は、抽出されたステータスIDが「S2」である場合、並行開発プログラムについてリリース申請中の第2開発テーマが存在する旨を第1開発テーマに従事する開発者に通知する。リリース認否判定部80は並行開発プログラムの第1開発テーマによるリリースを禁止してもよい。リリース認否判定部80は、並行開発管理テーブル302にアクセスし、第1開発テーマIDに対応するステータスIDを「S1」に戻し、リリース申請日を消去してもよい。
【0082】
リリース認否判定部80は、抽出されたステータスIDが「S3」である場合すなわち第1開発テーマによるリリース申請より前に第2開発テーマによるリリースが完了している場合、並行開発プログラムについて第2開発テーマに追い付く必要があると判定する(S446)。リリース認否判定部80は、第2開発テーマにしたがった変更が第1変更後プログラムに反映されているか否かを判定する(S448)。リリース認否判定部80はユーザからの申告に基づいてこの判定を行ってもよい。あるいはまたリリース認否判定部80は、本番系記憶領域92に記憶され第2開発テーマにしたがった変更が反映されている並行開発プログラムと第1変更後プログラムとを比較することでこの判定を行ってもよい。反映されている場合、リリース認否判定部80は第2開発テーマに対する追い付きが完了していると判定する。
【0083】
(丙)についてより具体的には、リリース認否判定部80は、抽出されたステータスIDが「S1」である場合すなわち第2開発テーマによってリリースもリリース申請もされていない場合、並行開発プログラムについて第2開発テーマに追い付く必要がないと判定する。
【0084】
判定結果出力部71は、リリース認否判定部80において並行開発プログラムをリリースしてもよいと判定された場合、並行開発プログラムの追い付きの状況を入出力インタフェース部10を介して所定のプリンタから文書として出力する(S450)。リリース会議ではこの文書が追い付き確認のための参考として使用されてもよい。
【0085】
上書き部60は、リリース認否判定部80において並行開発プログラムをリリースしてもよいと判定され、かつ、リリース承認受付部48によってリリースの承認が受け付けられた場合、第1変更後プログラムによって本番系記憶領域92に記憶されている並行開発プログラムを上書きする(S452)。
【0086】
図12は、第1通知画面500の代表画面図である。第1通知画面500は、並行開発管理対象ID502および第1開発テーマID504をテキストの形で含む。第2通知画面も同様の構成を有する。
【0087】
図13は、照会情報入力画面506の代表画面図である。照会情報入力画面506は、ユーザID入力領域510と、開発テーマID入力領域512と、それ以外の情報の入力領域514と、実行ボタン516と、戻るボタン518と、を有する。照会情報入力画面506をユーザ端末のディスプレイに表示させるための画面情報は、実行ボタン516が押し下げられた場合にユーザID入力領域510および開発テーマID入力領域512のいずれにも入力がないとエラーを返すように構成される。
【0088】
図14は、第3通知画面508の代表画面図である。第3通知画面508は、並行開発管理対象ID520と、追い付き要否判定部76における追い付き要否の判定結果522と、自己の開発テーマID524と、自己のユーザID526と、並行開発の相手の開発テーマID528と、その相手のユーザID530と、を表形式で表示する。
【0089】
以上の構成による並行開発管理装置100の動作を説明する。
例えばあるアプリケーションについて、性能向上のための長期的な開発テーマが既に設定されているときに、そのアプリケーションにバグが発見されたとする。するとそのバグを修正するための新たな短期的な開発テーマが設定される。このような状況では長期的な開発テーマと短期的な開発テーマとで同じプログラムや依存関係にあるプログラムを修正対象として指定する場合がある。並行開発管理装置100は、そのようなプログラムが長期的な開発テーマと短期的な開発テーマとの間で並行開発の状態になると、ログインの際やプログラムの指定の際や照会要求に応じて、追い付きの要否を含む並行開発の状況をユーザに通知する。
【0090】
2つの開発テーマによって並行開発の状態にあるプログラムが、一方の開発テーマよりも先に他方の開発テーマによってリリースされたとする。ここで一方の開発テーマが他方の開発テーマに追い付かないまま一方の開発テーマによるリリースが行われると、他方の開発テーマにしたがった変更が消滅してしまう。これにより、例えば前回リリースした機能が動かなくなるなどのリリース後の障害が発生しうる。
【0091】
これに対して本実施の形態に係る並行開発管理装置100によると、並行開発に係るプログラムを指定する開発テーマのユーザに追い付きの要否を含む並行開発の状況が通知される。したがって、プログラムが並行開発の状態にあること、並行開発の相手、追い付きの要否などをユーザに知らせることで、ユーザの注意を喚起することができる。ユーザは通知内容に基づき適宜追い付きを実行することができる。その結果、リリース後に障害が発生する可能性を低減できる。
【0092】
また、本実施の形態に係る並行開発管理装置100では、既にある開発テーマによって指定されているプログラムが事後的に並行開発の状態となった場合、そのプログラムの情報および並行開発の相手の開発テーマの情報がある開発テーマの通知先に通知される。したがって、ある開発テーマに従事する開発者は、そのプログラムが並行開発の状態となったこと、および並行開発の相手を知ることができる。
【0093】
複数(例えば2つ)の開発テーマによって並行開発の状態にあるプログラムについて、一方の開発テーマによってリリースが申請されてからそのリリースが承認され、リリースが完了するまでには通常数時間から数日のタイムラグが存在する。この間に他方の開発テーマによるそのプログラムのリリースが完了すると、一方の開発テーマによるリリースの完了によって他方の開発テーマにしたがった変更が消滅してしまう場合がある。
【0094】
そこで、本実施の形態に係る並行開発管理装置100では、ある開発テーマによってリリース申請されたプログラムが他の開発テーマによってリリース申請中とされている場合、リリース認否判定部80においてそのプログラムをリリースしてもよいと判定されないので、ある開発テーマによるそのプログラムのリリースが制限される。すなわち、リリース認否判定部80においてプログラムをリリースしてもよいと判定されてから上書き部60が対応する上書きを実行するまでの間、そのプログラムに対する他の上書きが制限される。これにより、上記のようなリリース申請中の上書きによる変更の消滅が発生する可能性が低減される。
【0095】
上述の実施の形態において、記憶装置90の例は、ハードディスクやメモリである。また、本明細書の記載に基づき、各部を、図示しないCPUや、インストールされたアプリケーションプログラムのモジュールや、システムプログラムのモジュールや、ハードディスクから読み出したデータの内容を一時的に記憶するメモリなどにより実現できることは本明細書に触れた当業者には理解されるところである。
【0096】
以上、実施の形態に係る並行開発管理装置100の構成と動作について説明した。この実施の形態は例示であり、その各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0097】
実施の形態では、依存関係参照部28が登録されている依存関係に基づいて指定されたプログラムと依存関係にあるプログラムを開発テーマ管理テーブル304に登録し、読み出し部30は、指定されたプログラムおよびそれと依存関係にあるプログラムを開発環境サーバ110に送信する場合について説明したが、これに限られない。例えば、依存関係に基づく処理はチェックイン段階などの別の段階で行われてもよい。
【0098】
実施の形態では、追い付き要否判定部76は、上書き部60が第1変更後プログラムよりも先に第2変更後プログラムによって本番系記憶領域92に記憶された並行開発プログラムを上書きした場合、第1開発テーマが第2開発テーマに追い付く必要があると判定する場合について説明したが、これに限られない。
【0099】
例えば、追い付き要否判定部は、上書き部60が第1変更後プログラムよりも先に第2変更後プログラムによって本番系記憶領域92に記憶された並行開発プログラムを上書きする予定となっている場合、第1開発テーマが第2開発テーマに追い付く必要があると判定してもよい。
【0100】
特に追い付き要否判定部は、開発テーマ管理テーブル304を参照し、並行開発プログラムについて第1開発テーマIDに対応するリリース予定日が第2開発テーマIDに対応するリリース予定日よりも後となっている場合、第1開発テーマが第2開発テーマに追い付く必要があると判定してもよい。この場合、よりきめ細かな通知が可能となる。
【0101】
実施の形態では、開始日、終了日、リリース申請日など時刻の単位として日付を使用する場合について説明したが、これに限られず他の時刻の単位が使用されてもよい。
【0102】
実施の形態では、開発環境サーバ110、テスト環境サーバ112、本番ゲートウェイ114は別体である場合について説明したが、これに限られず、例えばひとつのサーバに実現されてもよい。
【0103】
通知部70は、ユーザがログオフしている間に発生するそのユーザに通知すべき情報を蓄積し、そのユーザがログインした際に蓄積された情報をそのユーザに通知してもよい。
この場合通知部70は、並行開発管理テーブル302を監視し、ステータスIDに変更があると、その変更があった日時とその変更の内容とを対応付けて図示しないログイン時通知内容保持部に登録する。通知部70は、ユーザが並行開発管理装置100にログインすると、ログイン時通知内容保持部に保持される情報からログインしたユーザに関する情報を抽出する。通知部70は、抽出した情報を含む第4通知画面532をユーザ端末のディスプレイに表示させるための画面情報を生成する。通知部70は、この画面情報を入出力インタフェース部10を介してログインしたユーザのユーザ端末に送信する。
【0104】
図15は、第4通知画面532の代表画面図である。第4通知画面532は、通知日時534と、メッセージID536と、ステータスの変更の内容を示すメッセージ538と、を表形式で表示する。
この場合、ユーザはログイン時に並行開発の状況や履歴を把握することができる。
【符号の説明】
【0105】
2 プログラム開発システム、 10 入出力インタフェース部、 20 受付部、 30 読み出し部、 40 テスト・リリース管理部、 50 本番環境配布部、 60 上書き部、 70 通知部、 90 記憶装置、 92 本番系記憶領域、 94 開発系記憶領域、 96 管理系記憶領域、 100 並行開発管理装置、 108 ネットワーク、 110 開発環境サーバ、 112 テスト環境サーバ、 114 本番ゲートウェイ、 116 本番環境サーバ。
【特許請求の範囲】
【請求項1】
コンピュータプログラムを記憶する記憶領域と、
開発のテーマごとに変更対象のコンピュータプログラムの指定を受け付ける受付部と、
指定されたコンピュータプログラムを前記記憶領域から読み出す読み出し部と、
前記読み出し部によって読み出されたコンピュータプログラムに対してテーマにしたがった変更がなされた場合、変更されたコンピュータプログラムによって前記記憶領域に記憶されたコンピュータプログラムを上書きする上書き部と、
テーマに関連付けられた通知先に所定の情報を通知する通知部と、を備え、
前記読み出し部は、前記受付部が第1および第2のテーマについてひとつのコンピュータプログラムの指定を受け付けた場合に、第1のテーマに対して前記ひとつのコンピュータプログラムを第1のコンピュータプログラムとして前記記憶領域から読み出すと共に、第2のテーマに対して前記ひとつのコンピュータプログラムを第2のコンピュータプログラムとして前記記憶領域から読み出し、
前記通知部は、前記上書き部が第1のコンピュータプログラムよりも先に第2のコンピュータプログラムによって前記記憶領域に記憶された前記ひとつのコンピュータプログラムを上書きすると、前記ひとつのコンピュータプログラムの情報および第2のテーマの情報を第1のテーマに関連付けられた通知先に通知することを特徴とする並行開発管理装置。
【請求項2】
前記通知部は、前記受付部が第1のテーマについて前記ひとつのコンピュータプログラムの指定を受け付けた後、第2のテーマについて前記ひとつのコンピュータプログラムの指定を受け付けると、前記ひとつのコンピュータプログラムの情報および第2のテーマの情報を第1のテーマに関連付けられた通知先に通知することを特徴とする請求項1に記載の並行開発管理装置。
【請求項3】
前記通知部は、前記上書き部が第1のコンピュータプログラムよりも先に第2のコンピュータプログラムによって前記記憶領域に記憶された前記ひとつのコンピュータプログラムを上書きする予定となっている場合、前記ひとつのコンピュータプログラムの情報および第2のテーマの情報を第1のテーマに関連付けられた通知先に通知することを特徴とする請求項1または2に記載の並行開発管理装置。
【請求項4】
前記上書き部が第1のコンピュータプログラムよりも先に第2のコンピュータプログラムによって前記記憶領域に記憶された前記ひとつのコンピュータプログラムを上書きした場合に、第2のコンピュータプログラムに対してなされた第2のテーマにしたがった変更が第1のコンピュータプログラムに反映されているか否かを判定する判定部をさらに備え、
前記上書き部は、前記判定部において反映されていると判定された場合に、前記第1のコンピュータプログラムによって前記記憶領域に記憶された前記ひとつのコンピュータプログラムを上書きし、
前記判定部において反映されていると判定されてから前記上書き部が第1のコンピュータプログラムによって前記記憶領域に記憶された前記ひとつのコンピュータプログラムを上書きするまでの間、前記ひとつのコンピュータプログラムに対する他の上書きが制限されることを特徴とする請求項1から3のいずれかに記載の並行開発管理装置。
【請求項5】
前記通知部は、前記判定部において反映されていると判定された場合、その旨を出力することを特徴とする請求項4に記載の並行開発管理装置。
【請求項6】
互いに関連した第1のコンピュータプログラムおよび第2のコンピュータプログラムを記憶する記憶領域と、
開発の第1のテーマについて第1のコンピュータプログラムの指定を受け付けると共に開発の第2のテーマについて第2のコンピュータプログラムの指定を受け付ける受付部と、
第1のテーマに対して第1のコンピュータプログラムを前記記憶領域から読み出すと共に第2のテーマに対して第2のコンピュータプログラムを前記記憶領域から読み出す読み出し部と、
第2のテーマの情報を第1のテーマに関連付けられた通知先に通知する通知部と、を備えることを特徴とする並行開発管理装置。
【請求項7】
開発のテーマごとに変更対象のコンピュータプログラムの指定を受け付けるステップと、
指定されたコンピュータプログラムを記憶領域から読み出すステップと、
読み出されたコンピュータプログラムに対してテーマにしたがった変更がなされた場合、変更されたコンピュータプログラムによって前記記憶領域に記憶されたコンピュータプログラムを上書きするステップと、
第1および第2のテーマについてひとつのコンピュータプログラムの指定が受け付けられた場合に、第1のテーマに対して前記ひとつのコンピュータプログラムを第1のコンピュータプログラムとして前記記憶領域から読み出すと共に、第2のテーマに対して前記ひとつのコンピュータプログラムを第2のコンピュータプログラムとして前記記憶領域から読み出すステップと、
第1のコンピュータプログラムよりも先に第2のコンピュータプログラムによって前記記憶領域に記憶された前記ひとつのコンピュータプログラムが上書きされると、前記ひとつのコンピュータプログラムの情報および第2のテーマの情報を第1のテーマに関連付けられた通知先に通知するステップと、を含むことを特徴とする並行開発管理方法。
【請求項8】
開発のテーマごとに変更対象のコンピュータプログラムの指定を受け付ける機能と、
指定されたコンピュータプログラムを記憶領域から読み出す機能と、
読み出されたコンピュータプログラムに対してテーマにしたがった変更がなされた場合、変更されたコンピュータプログラムによって前記記憶領域に記憶されたコンピュータプログラムを上書きする機能と、
第1および第2のテーマについてひとつのコンピュータプログラムの指定が受け付けられた場合に、第1のテーマに対して前記ひとつのコンピュータプログラムを第1のコンピュータプログラムとして前記記憶領域から読み出すと共に、第2のテーマに対して前記ひとつのコンピュータプログラムを第2のコンピュータプログラムとして前記記憶領域から読み出す機能と、
第1のコンピュータプログラムよりも先に第2のコンピュータプログラムによって前記記憶領域に記憶された前記ひとつのコンピュータプログラムが上書きされると、前記ひとつのコンピュータプログラムの情報および第2のテーマの情報を第1のテーマに関連付けられた通知先に通知する機能と、をコンピュータに実現させることを特徴とするコンピュータプログラム。
【請求項1】
コンピュータプログラムを記憶する記憶領域と、
開発のテーマごとに変更対象のコンピュータプログラムの指定を受け付ける受付部と、
指定されたコンピュータプログラムを前記記憶領域から読み出す読み出し部と、
前記読み出し部によって読み出されたコンピュータプログラムに対してテーマにしたがった変更がなされた場合、変更されたコンピュータプログラムによって前記記憶領域に記憶されたコンピュータプログラムを上書きする上書き部と、
テーマに関連付けられた通知先に所定の情報を通知する通知部と、を備え、
前記読み出し部は、前記受付部が第1および第2のテーマについてひとつのコンピュータプログラムの指定を受け付けた場合に、第1のテーマに対して前記ひとつのコンピュータプログラムを第1のコンピュータプログラムとして前記記憶領域から読み出すと共に、第2のテーマに対して前記ひとつのコンピュータプログラムを第2のコンピュータプログラムとして前記記憶領域から読み出し、
前記通知部は、前記上書き部が第1のコンピュータプログラムよりも先に第2のコンピュータプログラムによって前記記憶領域に記憶された前記ひとつのコンピュータプログラムを上書きすると、前記ひとつのコンピュータプログラムの情報および第2のテーマの情報を第1のテーマに関連付けられた通知先に通知することを特徴とする並行開発管理装置。
【請求項2】
前記通知部は、前記受付部が第1のテーマについて前記ひとつのコンピュータプログラムの指定を受け付けた後、第2のテーマについて前記ひとつのコンピュータプログラムの指定を受け付けると、前記ひとつのコンピュータプログラムの情報および第2のテーマの情報を第1のテーマに関連付けられた通知先に通知することを特徴とする請求項1に記載の並行開発管理装置。
【請求項3】
前記通知部は、前記上書き部が第1のコンピュータプログラムよりも先に第2のコンピュータプログラムによって前記記憶領域に記憶された前記ひとつのコンピュータプログラムを上書きする予定となっている場合、前記ひとつのコンピュータプログラムの情報および第2のテーマの情報を第1のテーマに関連付けられた通知先に通知することを特徴とする請求項1または2に記載の並行開発管理装置。
【請求項4】
前記上書き部が第1のコンピュータプログラムよりも先に第2のコンピュータプログラムによって前記記憶領域に記憶された前記ひとつのコンピュータプログラムを上書きした場合に、第2のコンピュータプログラムに対してなされた第2のテーマにしたがった変更が第1のコンピュータプログラムに反映されているか否かを判定する判定部をさらに備え、
前記上書き部は、前記判定部において反映されていると判定された場合に、前記第1のコンピュータプログラムによって前記記憶領域に記憶された前記ひとつのコンピュータプログラムを上書きし、
前記判定部において反映されていると判定されてから前記上書き部が第1のコンピュータプログラムによって前記記憶領域に記憶された前記ひとつのコンピュータプログラムを上書きするまでの間、前記ひとつのコンピュータプログラムに対する他の上書きが制限されることを特徴とする請求項1から3のいずれかに記載の並行開発管理装置。
【請求項5】
前記通知部は、前記判定部において反映されていると判定された場合、その旨を出力することを特徴とする請求項4に記載の並行開発管理装置。
【請求項6】
互いに関連した第1のコンピュータプログラムおよび第2のコンピュータプログラムを記憶する記憶領域と、
開発の第1のテーマについて第1のコンピュータプログラムの指定を受け付けると共に開発の第2のテーマについて第2のコンピュータプログラムの指定を受け付ける受付部と、
第1のテーマに対して第1のコンピュータプログラムを前記記憶領域から読み出すと共に第2のテーマに対して第2のコンピュータプログラムを前記記憶領域から読み出す読み出し部と、
第2のテーマの情報を第1のテーマに関連付けられた通知先に通知する通知部と、を備えることを特徴とする並行開発管理装置。
【請求項7】
開発のテーマごとに変更対象のコンピュータプログラムの指定を受け付けるステップと、
指定されたコンピュータプログラムを記憶領域から読み出すステップと、
読み出されたコンピュータプログラムに対してテーマにしたがった変更がなされた場合、変更されたコンピュータプログラムによって前記記憶領域に記憶されたコンピュータプログラムを上書きするステップと、
第1および第2のテーマについてひとつのコンピュータプログラムの指定が受け付けられた場合に、第1のテーマに対して前記ひとつのコンピュータプログラムを第1のコンピュータプログラムとして前記記憶領域から読み出すと共に、第2のテーマに対して前記ひとつのコンピュータプログラムを第2のコンピュータプログラムとして前記記憶領域から読み出すステップと、
第1のコンピュータプログラムよりも先に第2のコンピュータプログラムによって前記記憶領域に記憶された前記ひとつのコンピュータプログラムが上書きされると、前記ひとつのコンピュータプログラムの情報および第2のテーマの情報を第1のテーマに関連付けられた通知先に通知するステップと、を含むことを特徴とする並行開発管理方法。
【請求項8】
開発のテーマごとに変更対象のコンピュータプログラムの指定を受け付ける機能と、
指定されたコンピュータプログラムを記憶領域から読み出す機能と、
読み出されたコンピュータプログラムに対してテーマにしたがった変更がなされた場合、変更されたコンピュータプログラムによって前記記憶領域に記憶されたコンピュータプログラムを上書きする機能と、
第1および第2のテーマについてひとつのコンピュータプログラムの指定が受け付けられた場合に、第1のテーマに対して前記ひとつのコンピュータプログラムを第1のコンピュータプログラムとして前記記憶領域から読み出すと共に、第2のテーマに対して前記ひとつのコンピュータプログラムを第2のコンピュータプログラムとして前記記憶領域から読み出す機能と、
第1のコンピュータプログラムよりも先に第2のコンピュータプログラムによって前記記憶領域に記憶された前記ひとつのコンピュータプログラムが上書きされると、前記ひとつのコンピュータプログラムの情報および第2のテーマの情報を第1のテーマに関連付けられた通知先に通知する機能と、をコンピュータに実現させることを特徴とするコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2012−174095(P2012−174095A)
【公開日】平成24年9月10日(2012.9.10)
【国際特許分類】
【出願番号】特願2011−36877(P2011−36877)
【出願日】平成23年2月23日(2011.2.23)
【出願人】(000155469)株式会社野村総合研究所 (1,067)
【Fターム(参考)】
【公開日】平成24年9月10日(2012.9.10)
【国際特許分類】
【出願日】平成23年2月23日(2011.2.23)
【出願人】(000155469)株式会社野村総合研究所 (1,067)
【Fターム(参考)】
[ Back to top ]