JP4845153B2 - 複数のクライアントを用いた分散環境で更新作業のコンフリクトを回避するシステム、方法、サーバ及びコンピュータプログラム - Google Patents

複数のクライアントを用いた分散環境で更新作業のコンフリクトを回避するシステム、方法、サーバ及びコンピュータプログラム Download PDF

Info

Publication number
JP4845153B2
JP4845153B2 JP2009083614A JP2009083614A JP4845153B2 JP 4845153 B2 JP4845153 B2 JP 4845153B2 JP 2009083614 A JP2009083614 A JP 2009083614A JP 2009083614 A JP2009083614 A JP 2009083614A JP 4845153 B2 JP4845153 B2 JP 4845153B2
Authority
JP
Japan
Prior art keywords
information
program file
update
client
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009083614A
Other languages
English (en)
Other versions
JP2010237870A (ja
Inventor
健二 内田
正樹 若尾
芳雄 堀内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2009083614A priority Critical patent/JP4845153B2/ja
Priority to US12/749,694 priority patent/US8713552B2/en
Publication of JP2010237870A publication Critical patent/JP2010237870A/ja
Application granted granted Critical
Publication of JP4845153B2 publication Critical patent/JP4845153B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は、複数のクライアントを用いてファイルを更新し、更新されたファイルをサーバに集約する分散開発環境において、更新作業のコンフリクトを回避することができるシステム、方法、サーバ及びサーバで実行することが可能なコンピュータプログラムに関する。
大規模なシステム開発では、多数の開発者が分散環境にて開発を実行することが多い。分散環境にてシステム開発を実行する場合、開発したプログラムのソースコード管理、構築されるアプリケーションのビルド管理、バグ管理等をサーバで実行しつつ、複数のクライアントにおいてプログラム開発を実行している。各クライアントにて編集されたソースコードは、定期的にサーバへ集約され、アプリケーションと同様の形態にビルドされた状態でテストを実行する。
開発対象となるシステムの規模が大きくなると、同じプログラムファイルの同じ箇所を複数のクライアントが更新する等のコンフリクトが生じる可能性が高くなる。また、他のクライアントにおける編集作業により思わぬ影響が生じ、ビルド時に想定外のエラーが発生する等、全体のシステム開発を効率良く実行することが困難になる傾向にある。
分散環境にてシステム開発を少しでも効率良く実行するために、例えば特許文献1では、エージェントプロセスがプログラムの更新時のソースコード行数を収集して管理サーバへ集約するソフトウェア開発自動管理システムが開示されている。特許文献1では、開発者端末にてコーディングが開始された場合、ソースコードを保存するワークディレクトリをエージェントプロセスが常時監視しておき、ソースコード行数等の情報を管理サーバへ集約することにより、各開発者端末での作業進捗を管理することができる。
また、特許文献2では、設計資産を格納する際に、格納する設計資産を参照している設計資産を網羅的に取得して設計資産格納庫に格納するリポジトリシステムが開示されている。特許文献3では、プログラムに対して行った各更新情報を記憶しておき、要求があった時点で更新情報を各開発者へ通知する開発支援装置が開示されている。いずれも、開発者側のコンピュータから送信された、内容が更新されているプログラムを受信した時点で、更新に関する情報及び/又は関連するプログラムに関する情報を、集約して管理するサーバ側で記憶している。
特開2002−366674号公報 特開2007−172223号公報 特開2007−272443号公報
しかし、特許文献1では、収集する情報はソースコード行数等のプログラムの規模を推定するための情報のみであり、分散環境において更新作業のコンフリクトが生じているか否かを検知することはできない。特許文献2及び3では、開発者が使用しているコンピュータから送信された、内容が更新されているプログラムを受信した時点で、更新に関する情報及び/又は関連するプログラムに関する情報を取得することはできるが、サーバ側のデータベースに記憶されない限りプログラムの内容が更新されていることを把握することはできない。
斯かる問題を解決するべく、例えば開発者側のコンピュータがサーバから最新のソースコードを取得して開発者側のコンピュータでテストを実行する場合もある。しかし、第三者が編集中のソースコードについては取得することができず、タイミングによっては最新のソースコードではない状態でテストを実行することから、上記問題は解決されない。
また、プログラムファイルの更新前にプログラムファイルをロックすることにより、第三者による編集作業ができない状態にすることも考えられるが、ロックされている間は他の開発者が該ソースコードに対して編集作業をすることもできず、作業待ち状態が生じる等、分散環境にて開発しているメリットを享受することができないという問題点もあった。
その他、分散環境にてファイルを更新する場合にも、上述した問題点と同様の問題点が生じる。すなわち、第三者によるファイルの更新作業により、実行する更新作業が影響を受ける場合、例えばHTML言語、XML言語等の構造化言語による文書作成を分散環境で実行する場合等にも、文書編集作業のコンフリクトは生じうる。
本発明は斯かる事情に鑑みてなされたものであり、分散環境にて大規模な更新作業を実行する場合であっても、更新作業のコンフリクトが生じる可能性があるか否かを更新者が的確に検知することが可能なシステム、方法、サーバ及びコンピュータプログラムを提供することを目的とする。
上記目的を達成するために第1発明に係るシステムは、複数のクライアントと、複数の該クライアントとデータ通信することが可能に接続されており、複数の前記クライアントで更新された複数のプログラムファイルを集約して記憶するサーバとを有し、前記クライアントは、更新用に所定のプログラムファイルを複製する指示を前記サーバへ送信する指示送信部と、複製されたプログラムファイルを受信するファイル受信部と、受信したプログラムファイルを更新した時点で、少なくとも更新されたプログラムファイルを識別する情報及び更新内容に関する情報を有する更新情報を生成する生成部と、生成した更新情報を前記サーバへ送信する第1の情報送信部とを備え、前記サーバは、前記更新情報を前記クライアントから受信する第1の受信部と、受信した更新情報及びプログラムファイルごとのソースコードに含まれるパラメータ、引数、ファンクションの関係に関する情報の少なくともいずれかを含むプログラムファイル間の関係に関する情報に基づいて、前記更新情報に含まれる更新内容が影響するプログラムファイルを抽出する抽出部と、抽出したプログラムファイルを直近に更新されてから現在までに他のクライアントに対して複製して送信したか否かを判断する複製判断部と、該複製判断部で他のクライアントに対して複製して送信したと判断した場合、前記クライアントに対して、抽出したプログラムファイルを送信した前記他のクライアントで更新されている旨を示す警告情報を送信する第2の情報送信部とを備える。
また、第2発明に係るシステムは、第1発明において、前記サーバは、前記更新情報を複製された前記プログラムファイルに対応付けて記憶する情報付与部と、第三者が使用する他のクライアントから所定のプログラムファイルを複製する指示を受信した場合、複製された前記プログラムファイルを、対応付けて記憶されている前記更新情報とともに前記第三者が使用する他のクライアントへ送信するファイル送信部とを備える。
また、第3発明に係るシステムは、第2発明において、前記クライアントは、前記ファイル送信部から送信されて受信したプログラムファイルに前記更新情報が対応付けられているか否かを判断する情報判断部と、該情報判断部で前記更新情報が対応付けられていると判断した場合、前記更新情報が対応付けられている旨を示す情報を報知する報知部とを備える。
また、第4発明に係るシステムは、第1乃至第3発明のいずれか1つにおいて、前記サーバは、更新対象となるプログラムファイルの、少なくともクラス定義されているメソッド間の関係、メソッドとソースコードに含まれるブロックとの関係を含むプログラムファイルの構造に関する情報を記憶する構造記憶部を備え、前記抽出部は、前記プログラムファイル間の関係に関する情報に基づいて抽出したプログラムファイルに加えて、さらに、前記構造記憶部により記憶されたプログラムファイルの構造に関する情報に基づいて、前記更新情報に含まれる更新内容が影響するプログラムファイルを抽出する。
また、第発明に係るシステムは、第1乃至第発明のいずれか1つにおいて、前記クライアントは、前記警告情報を受信した場合、前記警告情報を受信した旨を示す情報を報知する警告報知部を備える。
次に、上記目的を達成するために第発明に係る方法は、複数のクライアントと、複数の該クライアントとデータ通信することが可能に接続されており、複数の前記クライアントで更新された複数のプログラムファイルを集約して記憶するサーバとを用いて実行することが可能な方法において、前記サーバは、前記クライアントにより送信された、更新用に所定のプログラムファイルを複製する指示に基づいて、所定のプログラムファイルを複製し、複製したプログラムファイルを前記クライアントへ送信し、前記プログラムファイルが更新された時点で前記クライアントにて生成された、少なくとも更新されたプログラムファイルを識別する情報及び更新内容に関する情報を有する更新情報を受信し、受信した更新情報及びプログラムファイルごとのソースコードに含まれるパラメータ、引数、ファンクションの関係に関する情報の少なくともいずれかを含むプログラムファイル間の関係に関する情報に基づいて、前記更新情報に含まれる更新内容が影響するプログラムファイルを抽出し、抽出したプログラムファイルを直近に更新されてから現在までに他のクライアントに対して複製して送信したか否かを判断し、他のクライアントに対して複製して送信したと判断した場合、前記クライアントに対して、抽出したプログラムファイルを送信した前記他のクライアントで更新されている旨を示す警告情報を送信する。
次に、上記目的を達成するために第発明に係るサーバは、複数のクライアントとデータ通信することが可能に接続されており、複数の前記クライアントで更新された複数のプログラムファイルを集約して記憶するサーバにおいて、複製したプログラムファイルが前記クライアントにて更新された時点で生成された、少なくとも更新されたプログラムファイルを識別する情報及び更新内容に関する情報を有する更新情報を前記クライアントから受信する第1の受信部と、受信した更新情報及びプログラムファイルごとのソースコードに含まれるパラメータ、引数、ファンクションの関係に関する情報の少なくともいずれかを含むプログラムファイル間の関係に関する情報に基づいて、前記更新情報に含まれる更新内容が影響するプログラムファイルを抽出する抽出部と、抽出したプログラムファイルを直近に更新されてから現在までに他のクライアントに対して複製して送信したか否かを判断する複製判断部と、該複製判断部で他のクライアントに対して複製して送信したと判断した場合、前記クライアントに対して、抽出したプログラムファイルを送信した前記他のクライアントで更新されている旨を示す警告情報を送信する第2の情報送信部とを備える。
また、第発明に係るサーバは、第発明において、前記更新情報を複製された前記プログラムファイルに対応付けて記憶する情報付与部と、第三者が使用する他のクライアントから所定のプログラムファイルを複製する指示を受信した場合、複製された前記プログラムファイルを、対応付けて記憶されている前記更新情報とともに前記第三者が使用する他のクライアントへ送信するファイル送信部とを備える。
また、第発明に係るサーバは、第7又は第8発明において、更新対象となるプログラムファイルの、少なくともクラス定義されているメソッド間の関係、メソッドとソースコードに含まれるブロックとの関係を含むプログラムファイルの構造に関する情報を記憶する構造記憶部を備え、前記抽出部は、前記プログラムファイル間の関係に関する情報に基づいて抽出したプログラムファイルに加えて、さらに、前記構造記憶部により記憶されたプログラムファイルの構造に関する情報に基づいて、前記更新情報に含まれる更新内容が影響するプログラムファイルを抽出する。
次に、上記目的を達成するために第10発明に係るコンピュータプログラムは、複数のクライアントとデータ通信することが可能に接続されており、複数の前記クライアントで更新された複数のプログラムファイルを集約して記憶するサーバで実行することが可能なコンピュータプログラムにおいて、前記サーバを、複製したプログラムファイルが前記クライアントにて更新された時点で生成された、少なくとも更新されたプログラムファイルを識別する情報及び更新内容に関する情報を有する更新情報を前記クライアントから受信する第1の受信手段、受信した更新情報及びプログラムファイルごとのソースコードに含まれるパラメータ、引数、ファンクションの関係に関する情報の少なくともいずれかを含むプログラムファイル間の関係に関する情報に基づいて、前記更新情報に含まれる更新内容が影響するプログラムファイルを抽出する抽出手段、抽出したプログラムファイルを直近に更新されてから現在までに他のクライアントに対して複製して送信したか否かを判断する複製判断手段、及び該複製判断手段で他のクライアントに対して複製して送信したと判断した場合、前記クライアントに対して、抽出したプログラムファイルを送信した前記他のクライアントで更新されている旨を示す警告情報を送信する第2の情報送信手段として機能させる。
また、第11発明に係るコンピュータプログラムは、第10発明において、前記サーバを、前記更新情報を複製された前記プログラムファイルに対応付けて記憶する情報付与手段、及び第三者が使用する他のクライアントから所定のプログラムファイルを複製する指示を受信した場合、複製された前記プログラムファイルを、対応付けて記憶されている前記更新情報とともに前記第三者が使用する他のクライアントへ送信するファイル送信手段として機能させる。
また、第12発明に係るコンピュータプログラムは、第10又は第11発明において、前記サーバを、更新対象となるプログラムファイルの、少なくともクラス定義されているメソッド間の関係、メソッドとソースコードに含まれるブロックとの関係を含むプログラムファイルの構造に関する情報を記憶する構造記憶手段として機能させ、前記抽出手段を、前記プログラムファイル間の関係に関する情報に基づいて抽出したプログラムファイルに加えて、さらに、前記構造記憶手段により記憶されたプログラムファイルの構造に関する情報に基づいて、前記更新情報に含まれる更新内容が影響するプログラムファイルを抽出する手段として機能させる。
本発明によれば、クライアントにてファイルを更新した時点、例えばクライアントのメモリ上でファイルが更新された時点、ワークディレクトリに更新したファイルが記憶された時点等において、更新に関する更新情報を生成し、生成した更新情報をサーバにて集約することにより、どのファイルのどの部分が更新されているかサーバにて把握することができる。受信した更新情報に関連する部分を含むファイルが他のクライアントにて更新されている場合には、他のクライアントで更新されている旨を示す警告情報を送信することにより、同一のファイルを更新している他のクライアント、更新部分が影響を与えるファイルを更新している他のクライアントが、更新作業時に無用なテストを実行することなく、更新者が的確にテスト、確認作業等の手順を工夫することにより、更新作業の歩留まりの発生を最小限に止めることが可能となる。
本発明の実施の形態1に係るアプリケーション開発システムの構成例を示すブロック図である。 本発明の実施の形態1に係るクライアントの構成例を示すブロック図である。 本発明の実施の形態1に係るアプリケーション開発システムにおける更新情報の流れを示す模式図である。 他のクライアントで更新されていることによりコンフリクトが生じている可能性がある旨を示す警告情報として送信する通知メールの例示図である。 エディタのビュー表示画面の例示図である。 エディタ画面の例示図である。 本発明の実施の形態1に係るアプリケーション開発サーバの機能ブロック図である。 本発明の実施の形態1に係るクライアントの機能ブロック図である。 本発明の実施の形態1に係るクライアントのCPUの処理手順を示すフローチャートである。 本発明の実施の形態1に係るアプリケーション開発サーバのCPUの処理手順を示すフローチャートである。 想定アプリケーションのクラス図である。 想定アプリケーションのシーケンス図である。 想定アプリケーションのソースコードを解析した、プログラムファイルの構造の例示図である。 本発明の実施の形態2に係るアプリケーション開発サーバのCPUの処理手順を示すフローチャートである。
以下、本発明の実施の形態に係る更新作業のコンフリクトが生じているか否かを更新者が的確に検知することが可能なシステムについて、図面に基づいて具体的に説明する。以下の実施の形態は、特許請求の範囲に記載された発明を限定するものではなく、実施の形態の中で説明されている特徴的事項の組み合わせの全てが解決手段の必須事項であるとは限らないことは言うまでもない。
また、本発明は多くの異なる態様にて実施することが可能であり、実施の形態の記載内容に限定して解釈されるべきものではない。実施の形態を通じて同じ要素には同一の符号を付している。
以下の実施の形態では、コンピュータプログラムを導入した複数のコンピュータシステムで構成されたシステムについて説明するが、当業者であれば明らかな通り、本発明はその一部をコンピュータで実行することが可能なコンピュータプログラムとして実施することができる。したがって、本発明は、コンピュータプログラムを導入した複数のコンピュータシステムで構成されたシステムとしての実施の形態、ソフトウェアとしての実施の形態、又はソフトウェアとハードウェアとの組み合わせの実施の形態をとることができる。コンピュータプログラムは、ハードディスク、DVD、CD、光記憶装置、磁気記憶装置等の任意のコンピュータで読み取ることが可能な記録媒体に記録することができる。
以下に示す本発明の実施の形態では、分散環境にて大規模なプログラム開発を実行する場合を例に挙げて説明する。本発明の実施の形態では、クライアントにてプログラムファイルを更新した時点、例えばクライアントのメモリ上でプログラムファイルを更新した時点、クライアントのワークディレクトリに更新したプログラムファイルを記憶した時点等において、更新に関する更新情報を生成し、生成した更新情報をサーバにて集約することにより、どのプログラムファイルのどの部分が更新されているかサーバにて把握することができる。受信した更新情報に関連する部分を含む他のプログラムファイルが他のクライアントにて更新されている場合には、他のクライアントで更新されている旨を示す警告情報を送信することにより、同一のソースコードを更新している他のクライアント、更新部分が影響を与えるプログラムファイルを更新している他のクライアントが、更新作業時に無用なテストを実行することなく、開発者が的確にテスト手順を工夫することにより、プログラム開発作業の歩留まりの発生を最小限に止めることが可能となる。
(実施の形態1)
図1は、本発明の実施の形態1に係るアプリケーション開発システムの構成例を示すブロック図である。本発明の実施の形態1に係るアプリケーション開発システムは、プログラム開発の開発者が使用する複数のクライアント3、3、・・・と、アプリケーション開発サーバ1とがネットワーク2を介してデータ通信することが可能に接続されている。
アプリケーション開発サーバ1は、少なくともCPU(中央演算装置)11、メモリ12、記憶装置13、I/Oインタフェース14、通信インタフェース15、ビデオインタフェース16、可搬型ディスクドライブ17及び上述したハードウェアを接続する内部バス18で構成されている。
CPU11は、内部バス18を介してアプリケーション開発サーバ1の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、記憶装置13に記憶されているコンピュータプログラム100に従って、種々のソフトウェア的機能を実行する。メモリ12は、SRAM、SDRAM等の揮発性メモリで構成され、コンピュータプログラム100の実行時にロードモジュールが展開され、コンピュータプログラム100の実行時に発生する一時的なデータ等を記憶する。
記憶装置13は、内蔵される固定型記憶装置(ハードディスク)、ROM等で構成されている。記憶装置13に記憶されているコンピュータプログラム100は、プログラム及びデータ等の情報を記録したDVD、CD−ROM等の可搬型記録媒体90から、可搬型ディスクドライブ17によりダウンロードされ、実行時には記憶装置13からメモリ12へ展開して実行される。もちろん、通信インタフェース15を介してネットワーク2に接続されている外部のコンピュータからダウンロードされたコンピュータプログラムであっても良い。
また記憶装置13は、プログラムファイル記憶部131、更新情報記憶部132、更新クライアント情報記憶部133、及びプログラムファイル関係情報記憶部134を備えている。プログラムファイル記憶部131は、各クライアント3で開発され、直近に更新されたプログラムファイルを記憶する。すなわち、プログラムファイル記憶部131に記憶されているプログラムファイルを互いに結合することで、開発対象となるアプリケーションの最新の状態を構築することができる。プログラムファイル記憶部131には、各クライアント3から開発が完了したプログラムファイルである旨を示す情報とともに送信(アップロード)されてきたプログラムファイルのみを記憶する。
更新情報記憶部132は、各クライアント3で更新されたプログラムファイル名、更新内容、更新部分、更新日時等の更新情報を記憶する。更新情報は、各クライアント3のワークディレクトリに更新されたプログラムファイルが記憶された時点で生成され、アプリケーション開発サーバ1へ送信される。各クライアント3が更新情報をアプリケーション開発サーバ1へ送信するタイミングは、各クライアント3のメモリ上でプログラムファイルが更新された時点であっても良いし、各クライアント3のワークディレクトリにプログラムファイルが記憶された時点であっても良いし、一定時間が経過する都度送信するようにしても良い。
更新クライアント情報記憶部133は、プログラムファイル単位で更新作業を行っているクライアント3を識別する情報を記憶する。クライアント3からの指定により、所定のプログラムファイルを更新対象となるプログラムファイルとして複製した時点で、プログラムファイル名と複製指示の送信元のクライアント3を識別する情報とを対応付けて記憶する。なお、プログラムファイル名と対応付けて記憶することに限定されるものではなく、コンピュータプログラムを一又は複数の機能単位で区分けしたプログラムファイルを識別する情報、例えばメソッド名、ブロック名等と対応付けて記憶しても良い。
プログラムファイル関係情報記憶部134は、プログラムファイル間のパラメータ、引数、ファンクション等の関係に関する情報を記憶する。ここで、プログラムファイル間の関係に関する情報とは、プログラムファイル単位でのパラメータ、引数、ファンクション等の関係に関する情報に限定されるものではなく、メソッド単位でのパラメータ、引数、ファンクション等の関係に関する情報、ブロック単位でのパラメータ、引数、ファンクション等の関係に関する情報等であっても良い。
また、周知の方法によりプログラムファイル間の類似度を算出し、プログラムファイル名と類似度とを対応付けてプログラムファイル関係情報記憶部134に記憶しておいても良い。これにより、記憶してある類似度が所定値より高い場合には、プログラム開発においてコンフリクトが生じる可能性が高いと判断することができる。
通信インタフェース15は内部バス18に接続されており、インターネット、LAN、WAN等の外部のネットワーク2に接続されることにより、クライアント3、3、・・・等とデータ送受信を行うことが可能となっている。
I/Oインタフェース14は、キーボード21、マウス22等のデータ入力媒体と接続され、データの入力を受け付ける。また、ビデオインタフェース16は、CRTモニタ、LCD等の表示装置23と接続され、所定の画像を表示する。
図2は、本発明の実施の形態1に係るクライアント3の構成例を示すブロック図である。本発明の実施の形態1に係るクライアント3は、少なくともCPU(中央演算装置)31、メモリ32、記憶装置33、I/Oインタフェース34、通信インタフェース35、ビデオインタフェース36、可搬型ディスクドライブ37及び上述したハードウェアを接続する内部バス38で構成されている。
CPU31は、内部バス38を介してクライアント3の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、記憶装置33に記憶されているコンピュータプログラム101に従って、種々のソフトウェア的機能を実行する。メモリ32は、SRAM、SDRAM等の揮発性メモリで構成され、コンピュータプログラム101の実行時にロードモジュールが展開され、コンピュータプログラム101の実行時に発生する一時的なデータ等を記憶する。更新対象となるプログラムファイルもメモリ32上に展開され、メモリ32上のプログラムファイルが更新された時点で、上述した更新情報が生成されても良い。
記憶装置33は、内蔵される固定型記憶装置(ハードディスク)、ROM等で構成されている。記憶装置33に記憶されているコンピュータプログラム101は、プログラム及びデータ等の情報を記録したDVD、CD−ROM等の可搬型記録媒体91から、可搬型ディスクドライブ37によりダウンロードされ、実行時には記憶装置33からメモリ32へ展開して実行される。もちろん、通信インタフェース35を介してネットワーク2に接続されている外部のコンピュータからダウンロードされたコンピュータプログラムであっても良い。記憶装置33は、開発途上のプログラムファイルを記憶するワークディレクトリ331を備えている。ワークディレクトリ331に更新されたプログラムファイルが記憶された時点で、上述した更新情報が生成されても良い。
通信インタフェース35は内部バス38に接続されており、インターネット、LAN、WAN等の外部のネットワーク2に接続されることにより、アプリケーション開発サーバ1、他のクライアント3、3、・・・等とデータ送受信を行うことが可能となっている。
I/Oインタフェース34は、キーボード41、マウス42等のデータ入力媒体と接続され、データの入力を受け付ける。また、ビデオインタフェース36は、CRTモニタ、LCD等の表示装置43と接続され、所定の画像を表示する。
以下、上述した構成のアプリケーション開発サーバ1を用いるアプリケーション開発システムの動作について説明する。図3は、本発明の実施の形態1に係るアプリケーション開発システムにおける更新情報の流れを示す模式図である。図3において、プログラムファイルAの更新作業を、クライアント3Aにて開発者Developer.Aが、クライアント3Bにて開発者Developer.Bが、分散環境にて行っており、更新情報は、更新されたプログラムファイルがクライアント3A又はクライアント3Bのワークディレクトリ331に記憶された時点で生成されるものとする。もちろん、クライアント3A又はクライアント3Bのメモリ32上でプログラムファイルが更新された時点であっても良い。
開発者Developer.Aは、アプリケーション開発サーバ1のプログラムファイル記憶部131に記憶してあるプログラムファイルAを複製し、複製したプログラムファイルAをダウンロードして更新作業を行うことにより、新たなプログラムファイルA’を生成する。更新されたプログラムファイルA’は、クライアント3Aのワークディレクトリ331に記憶される。なお、プログラムファイルAをクライアント3Aに複製した旨を示す情報は、アプリケーション開発サーバ1の更新クライアント情報記憶部133に記憶される。
一方、開発者Developer.Bも、アプリケーション開発サーバ1のプログラムファイル記憶部131に記憶してあるプログラムファイルAを複製し、複製したプログラムファイルAをダウンロードして更新作業を行うことにより、新たなプログラムファイルA”を生成する。更新されたプログラムファイルA”は、クライアント3Bのワークディレクトリ331に記憶される。なお、プログラムファイルAをクライアント3Bに複製した旨を示す情報も、アプリケーション開発サーバ1の更新クライアント情報記憶部133に記憶される。
クライアント3Aは、ワークディレクトリ331に新たなプログラムファイルA’が更新ファイルとして記憶された時点で、更新されたプログラムファイルを識別する情報、例えばプログラムファイル名A、更新部分、更新内容、更新日時等を少なくとも含む更新情報A’を生成し、アプリケーション開発サーバ1へ送信する。この時点では、更新されたプログラムファイルA’自体はアプリケーション開発サーバ1へ送信されておらず、更新情報A’のみが送信される。送信された更新情報A’はアプリケーション開発サーバ1の更新情報記憶部132に記憶される。
更新情報A’を受信したアプリケーション開発サーバ1は、プログラムファイル関係情報記憶部134を照会して、更新情報A’に含まれている更新内容によって更新作業に影響を与える可能性のあるプログラムファイルが存在するか否かを判断する。図3の例では、同じプログラムファイルAがクライアント3Bに複製されていることから、クライアント3Bでの更新作業に影響を与える可能性があることが明らかである。
そこで、アプリケーション開発サーバ1は、更新作業に影響を受けると考えられるクライアント3Bへ、更新情報A’を送信するとともに、クライアント3Bに対して更新情報A’に含まれている更新内容を通知する。これにより、クライアント3Bで更新作業を行う開発者Developer.Bは、第三者である開発者Developer.AによってプログラムファイルAが更新されている旨を把握することができ、開発者Developer.Aによって更新されたプログラムファイルA’がアプリケーション開発サーバ1へアップロードされた時点でビルド結合テストを行う等、テスト手順を工夫することにより、無用なテストを実行することを回避することができ、プログラム開発作業の歩留まりを最小限に止めることが可能となる。
またクライアント3Bも、ワークディレクトリ331に新たなプログラムファイルA”が更新ファイルとして記憶された時点で、更新されたプログラムファイルを識別する情報、例えばプログラムファイル名A、更新部分、更新内容、更新日時等を少なくとも含む更新情報A”を生成し、アプリケーション開発サーバ1へ送信する。この時点では、更新されたプログラムファイルA”自体はアプリケーション開発サーバ1へ送信されておらず、更新情報A”のみが送信される。送信された更新情報A”もアプリケーション開発サーバ1の更新情報記憶部132に記憶される。
更新情報A”を受信したアプリケーション開発サーバ1は、プログラムファイル関係情報記憶部134を照会して、更新情報A”に含まれている更新内容によって更新作業に影響を与える可能性のあるプログラムファイルが存在するか否かを判断する。図3の例では、同じプログラムファイルAがクライアント3Aに複製されていることから、クライアント3Aでの更新作業に影響を与える可能性があることが明らかである。
そこで、アプリケーション開発サーバ1は、更新作業に影響を受けると考えられるクライアント3Aへ、更新情報A”を送信するとともに、クライアント3Aに対して更新情報A”に含まれている更新内容を通知する。これにより、クライアント3Aで更新作業を行う開発者Developer.Aは、第三者である開発者Developer.BによってプログラムファイルAが更新されている旨を把握することができ、開発者Developer.Bによって更新されたプログラムファイルA”がアプリケーション開発サーバ1へアップロードされた時点でビルド結合テストを行う等、テスト手順を工夫することにより、無用なテストを実行することを回避することができ、プログラム開発作業の歩留まりを最小限に止めることが可能となる。
このように、更新したプログラムファイルを各クライアント3のワークディレクトリ331に記憶した時点で、更新情報を生成してアプリケーション開発サーバ1へ送信することにより、更新情報に含まれる更新内容によって更新作業に影響を受けると考えられるプログラムファイルを複製して送信した他のクライアント3へ、更新内容を通知することができ、アプリケーション開発サーバ1のプログラムファイル記憶部131に更新されたプログラムファイルが記憶される前であっても、第三者による更新状況を把握することができる。
更新内容を通知する方法は、特に限定されるものではなく、電子メールに更新情報を添付して送信しても良い。例えばクライアント3Bに対しては、開発者Developer.BのメールアドレスDeveloper.B@location.βを送信先とする通知メールに更新情報A’を添付して送信し、クライアント3Aに対しては、開発者Developer.AのメールアドレスDeveloper.A@location.αを送信先とする通知メールに更新情報A”を添付して送信する。
図4は、他のクライアントで更新されていることによりコンフリクトが生じている可能性がある旨を示す警告情報として送信する通知メールの例示図である。図4に示すように、どの開発者によってどの部分が更新対象とされているかを示す通知メールが、更新対象となるブロックのソースコードとともに送信されている。更新内容に関する情報は、生成された更新情報に含まれており、通知メール作成時に読み取られている。もちろん、添付ファイルとして更新情報を直接添付した警告情報を送信しても良い。
通知メールではなく、例えば更新情報を警告情報として送信し、クライアント3で用いているエディタの問題ビュー等に表示しても良い。図5は、エディタのビュー表示画面の例示図である。図5の例では、エディタのビュー表示画面にソースコードの構造エラー、警告等を示すフィールドとともに「変更の衝突」というフィールドを設けてある。「変更の衝突」というフィールドにて、受信した更新情報の内容を表示することにより、更新情報を受信した時点でプログラムファイルを更新するべくエディタを起動させていなかった場合であっても、エディタ起動後にいつでも、更新作業のコンフリクトが生じているか否かを確認することができる。
また、アプリケーション開発サーバ1は、受信した更新情報を、更新対象となるプログラムファイルに対応付けて記憶しておき、各クライアント3へエディタを起動してプログラムファイルを更新する場合に、ダウンロードするプログラムファイルに更新情報を付与して送信する。ダウンロードしたプログラムファイルに更新情報が付与されている場合、更新情報が付与されている旨を示す情報がクライアント3にて表示される。
図6は、エディタ画面の例示図である。図6(a)に示すように、ソースコードの更新領域60とは別に、ソースコードの行単位で、更新情報が付与されている旨を示すアイコン等を表示する表示領域61が設けてある。図6(b)に示すように、表示領域61に更新情報が付与されている旨を示す情報62、例えばアイコン等が警告情報を受信した旨を示す情報として表示されている場合、マウス操作でカーソルを更新情報が付与されている旨を示す情報62上へ移動することにより、更新内容を表示するウインドウ63が表示される。更新情報が付与されている旨を示す情報62は、メソッドのアクセスレベル、パラメータ等のシグニチャを更新している旨を示している。
一方、図6(c)に示すように、表示領域61に更新情報が付与されている旨を示す情報64が表示されている場合、マウス操作でカーソルを更新情報が付与されている旨を示す情報64上へ移動することにより、更新内容を表示するウインドウ65が表示される。更新情報が付与されている旨を示す情報64は、「else」以下のブロックを更新している旨を示している。
このように、ソースコードのどの部分に対する更新情報が付与されているか、視覚的に容易に把握することができるとともに、簡単な操作で更新内容に関する情報を表示することができ、プログラムファイルの更新作業のコンフリクトの発生を未然に回避することができる。
図7は、本発明の実施の形態1に係るアプリケーション開発サーバ1の機能ブロック図である。通常は、ネットワーク2を介して接続されている各クライアント3にてプログラムファイルの開発作業、更新作業等を行い、プログラムファイル受信部701にて、作業が完了したプログラムファイルを受信し、プログラムファイル記憶部131に記憶する。プログラムファイル記憶部131に記憶されているプログラムファイルが最新のプログラムファイルであり、ビルドテスト等はプログラムファイル記憶部131に記憶されているプログラムファイルを用いて行う。
更新情報受信部(第1の受信部)702は、クライアント3にて生成されたプログラムファイルの更新内容等に関する更新情報を受信する。受信した更新情報は更新情報記憶部132に記憶される。
プログラムファイル抽出部(抽出部)703は、受信した更新情報及びプログラムファイル関係情報記憶部134に記憶されているプログラムファイル間の関係に関する情報に基づいて、更新情報で特定される更新内容が影響を与える可能性があるプログラムファイルを抽出する。抽出されるプログラムファイルとしては、例えば同じ引数の関数が含まれているメソッド、ブロック、ソースコード等だけでなく、パラメータの受け渡し元、パラメータの受け渡し先となるプログラムファイル等も含まれる。
複製判断部704は、更新クライアント情報記憶部133を照会して、抽出したプログラムファイルを複製して他のクライアント3へ送信したか否か、すなわち抽出したプログラムファイルが更新される状態にあるか否かを判断する。プログラムファイルが更新される状態にある場合、更新作業のコンフリクトが生じる可能性がある。
警告情報送信部(第2の情報送信部)705は、受信した更新情報で特定されるプログラムファイルが、第三者により更新作業のコンフリクトが生じる可能性がある場合、その旨を示す警告情報を送信する。送信先は、更新クライアント情報記憶部133から読み出す。送信する警告情報は特に限定されるものではなく、他のクライアント3にて表示される形態についても限定されない。
更新情報付与部(情報付与部)706は、抽出したプログラムファイルに対応付けて更新情報をプログラムファイル記憶部131に記憶する。
第三者である他のクライアント3がプログラムファイルを更新するために、更新対象となるプログラムファイルの複製を指示した場合、プログラムファイル送信部(ファイル送信部)707は、プログラムファイル記憶部131に記憶されている更新情報も複製して、他のクライアント3へ送信する。したがって、更新情報がアプリケーション開発サーバ1へ送信された時点では更新が行われていなかったプログラムファイルであっても、その後第三者が更新を行う場合には更新情報を参照することができ、更新作業のコンフリクトの発生を未然に回避することができる。
図8は、本発明の実施の形態1に係るクライアント3の機能ブロック図である。プログラムファイル複製指示部(指示送信部)801は、更新対象となるプログラムファイルを指定し、アプリケーション開発サーバ1にて複製して送信するよう指示を送信する。プログラムファイル受信部(ファイル受信部)802は、アプリケーション開発サーバ1から送信されてきた更新対象となるプログラムファイルを受信する。
プログラムファイル更新部803は、受信したプログラムファイルの内容を更新し、更新ファイルとしてワークディレクトリ331に記憶する。更新作業が完了した場合には、プログラムファイル送信部806が、更新したプログラムファイルをアプリケーション開発サーバ1へ送信し、プログラムファイル記憶部131に記憶される。
更新情報生成部(生成部)804は、更新作業が途上である場合に、更新されたプログラムファイルがワークディレクトリ331に記憶された時点で更新情報を生成する。生成される更新情報は、クライアント3で更新されたプログラムファイル名、更新内容、更新部分、更新日時等を少なくとも含む。もちろん、メモリ32上でプログラムファイルが更新された時点で更新情報を生成しても良い。
更新情報送信部(第1の情報送信部)805は、生成された更新情報をアプリケーション開発サーバ1へ送信する。プログラムファイルがクライアント3にて更新された時点で生成された更新情報を送信することにより、アプリケーション開発サーバ1のプログラムファイル記憶部131に記憶されていない状態のプログラムファイルに関するプログラムファイル名、更新内容、更新部分、更新日時等の情報をアプリケーション開発サーバ1が取得することができ、各クライアント3でのプログラムファイルの更新内容を正しく把握することが可能となる。
更新情報判断部(情報判断部)807は、更新対象として受信したプログラムファイルに更新情報が付与されているか否かを判断する。更新情報が付与されている場合、第三者による更新作業が行われていることをクライアント3が検知することができ、更新内容も把握することができる。
(警告)報知部808は、更新情報が付与されている旨を示す情報をクライアント3を使用している開発者に報知する。また、更新情報で特定されるプログラムファイルが、第三者により更新作業のコンフリクトが生じる可能性がある場合、その旨を示す警告情報を受信したときには、警告情報を受信した旨を示す情報もクライアント3を使用している開発者に報知する。報知する方法は特に限定されるものではなく、例えば図6の例に示すように、表示領域61に表示されるアイコン表示であっても良い。
図9は、本発明の実施の形態1に係るクライアント3のCPU31の処理手順を示すフローチャートである。クライアント3のCPU31は、更新対象となるプログラムファイルの指定を受け付ける(ステップS901)。プログラムファイルの指定の受付方法は特に限定されるものではないが、該クライアント3を使用する開発者が更新することが可能なプログラムファイルを表示装置43に一覧表示し、マウス42による選択を受け付けても良いし、キーボード41により直接プログラムファイル名をキーインしても良い。
CPU31は、指定を受け付けたプログラムファイルのダウンロード指示をアプリケーション開発サーバ1へ送信する(ステップS902)。ダウンロード指示を受信したアプリケーション開発サーバ1は、指定されたプログラムファイルをプログラムファイル記憶部131から複製して、ダウンロード指示の送信元であるクライアント3へ送信する。そして、ダウンロード指示の送信元であるクライアント3を識別する情報、例えばクライアントIDに対応付けて、プログラムファイル名を更新クライアント情報記憶部133に記憶する。
CPU31は、アプリケーション開発サーバ1から送信されたプログラムファイルを受信し(ステップS903)、プログラムファイルのソースコード更新用のエディタを起動する(ステップS904)。エディタの起動は、プログラムファイルを受信した時点でCPU31が起動しても良いし、開発者の入力を受け付けても良い。
CPU31は、受信したプログラムファイルに更新情報が付与されているか否かを判断する(ステップS905)。CPU31が、更新情報が付与されていると判断した場合(ステップS905:YES)、CPU31は、第三者の更新作業においてコンフリクトが生じる可能性があると判断して、更新情報に含まれる更新内容に関する情報を表示装置43に表示する(ステップS906)。
CPU31が、更新情報が付与されていないと判断した場合(ステップS905:NO)、CPU31は、ステップS906をスキップして、更新したプログラムファイルをワークディレクトリ331に記憶する(ステップS907)。すなわち、ビルドテスト完了前の更新されたプログラムファイルは、ワークディレクトリ331に記憶される。
CPU31は、更新したプログラムファイルがワークディレクトリ331に記憶された時点で、新たな更新情報を生成する(ステップS908)。生成された更新情報には、少なくとも更新されたプログラムファイル名、更新内容、更新部分、更新日時等が含まれる。もちろん、メモリ32上でプログラムファイルが更新された時点で更新情報を生成しても良いことは言うまでもない。
CPU31は、生成した更新情報をアプリケーション開発サーバ1へ送信する(ステップS909)。更新情報を受信したアプリケーション開発サーバ1は、更新作業のコンフリクトが生じているか否かを確認する処理を実行する。
図10は、本発明の実施の形態1に係るアプリケーション開発サーバ1のCPU11の処理手順を示すフローチャートである。アプリケーション開発サーバ1のCPU11は、クライアント3から更新情報を受信したか否かを判断する(ステップS1001)。CPU11が、更新情報を受信していないと判断した場合(ステップS1001:NO)、CPU11は、受信待ち状態となる。
CPU11が、更新情報を受信したと判断した場合(ステップS1001:YES)、CPU11は、更新情報の送信元であるクライアント3に関する情報と対応付けて、更新情報を更新情報記憶部132に記憶する(ステップS1002)。更新情報を、送信元に関する情報と対応付けて記憶しておくことにより、どのクライアント3の更新作業においてコンフリクトが発生するか容易に特定することができる。
CPU11は、更新情報に含まれる更新内容に関する情報と関連する部分を含むプログラムファイルがプログラムファイル記憶部131に記憶されているか否かを判断する(ステップS1003)。関連部分を含むプログラムファイルが更新された場合に、更新作業のコンフリクトが生じる可能性が高いからである。
CPU11が、更新内容に関する情報と関連する部分を含むプログラムファイルが記憶されていると判断した場合(ステップS1003:YES)、CPU11は、更新内容に関する情報と関連する部分を含むプログラムファイルを抽出し(ステップS1004)、更新情報を、抽出したプログラムファイルに対応付けて記憶する(ステップS1005)。具体的には、プログラムファイル記憶部131に記憶されているプログラムファイルに更新情報を付与する。これにより、後日、更新情報が付与されたプログラムファイルが更新の対象となって複製される場合、更新情報とともに、プログラムファイルが複製されて送信されたクライアント3へ送信されることにより、更新作業のコンフリクトが生じる可能性があることを開発者が検知することができ、コンフリクトを回避する手段を採ることにより、未然にコンフリクトの発生を回避することが可能となる。
CPU11は、他のクライアント3、すなわち更新情報の送信元であるクライアント3とは異なるクライアント3に抽出したプログラムファイルが複製されているか否かを判断する(ステップS1006)。CPU11が、他のクライアント3に複製されていると判断した場合(ステップS1006:YES)、CPU11は、更新作業のコンフリクトが生じる可能性が高いと判断し、更新作業のコンフリクトが生じる可能性がある旨を示す警告情報を、プログラムファイルが複製された他のクライアント3へ送信する(ステップS1007)。CPU11が、他のクライアント3に複製されていないと判断した場合(ステップS1006:NO)、CPU11は、ステップS1007をスキップして、処理を終了する。
CPU11が、更新内容に関する情報と関連する部分を含むプログラムファイルが記憶されていないと判断した場合(ステップS1003:NO)、CPU11は、処理を終了する。
以上のように本実施の形態1によれば、クライアント3にてプログラムファイルを更新した時点、例えばクライアント3のワークディレクトリ331に更新したプログラムファイルを記憶した時点で、更新に関する更新情報を生成し、生成した更新情報をアプリケーション開発サーバ1に集約することにより、どのプログラムファイルのどの部分が更新されているかアプリケーション開発サーバ1にて把握することができる。受信した更新情報に関連する部分を含む他のプログラムファイルが他のクライアント3にて更新されている場合には、他のクライアント3で更新されている旨を示す警告情報を送信することにより、同一のソースコードを更新しているクライアント3、更新部分が影響を与える可能性があるプログラムファイルを更新しているクライアント3等が、更新作業時に無用なテストを実行することなく、開発者が的確にテスト手順を工夫することにより、プログラム開発作業の歩留まりの発生を最小限に止めることが可能となる。
(実施の形態2)
本発明の実施の形態2に係るシステムの構成は、実施の形態1と同様であることから、同一の符号を付することにより詳細な説明は省略する。本実施の形態2は、更新に関する情報と関連する部分を含むプログラムファイルが記憶されているか否かを高い精度で判断するために、プログラムファイルのソースコードを解析して、プログラムファイルの構造に関する情報を事前に記憶しておく点で実施の形態1と相違する。
例えば、以下のクラスで構成されたアプリケーションを開発する場合を例に挙げて説明する。図11は、想定アプリケーションのクラス図である。図11の例では、4つのクラス「AbstractAction」、「ProcessPersonAction」、「Person」、「PersonFinder」が設定されており、それぞれのクラスについて一または複数のメソッドが定義されている。
クラス「AbstractAction」のメソッドは、クラス「ProcessPersonAction」に承継されており、子クラスであるクラス「ProcessPersonAction」に定義されているメソッド「doAction()」によって、クラス「PersonFinder」に定義されているメソッド「findPerson()」をコールする。
図12は、想定アプリケーションのシーケンス図である。図12の例では、第三者によるメソッドコールにより、まずインスタンス「ProcessPersonAction」が生成される。そして、インスタンス「ProcessPersonAction」に定義されているメソッド「doAction()」によって、クラス「PersonFinder」に定義されているメソッド「findPerson()」がコールされ、その時点でインスタンス「PersonFinder」が生成されている。インスタンス「PersonFinder」は、クラス「Person」に基づく配列を抽出して、メソッド「findPerson()」をコールしたインスタンス「ProcessPersonAction」へ戻している。
図11及び図12のクラスを含むプログラムファイルのソースコードを基礎として、周知の方法により、クラス、メソッド、ブロックに基づいてプログラムファイルの構造を解析する。図13は、想定アプリケーションのソースコードを解析した、プログラムファイルの構造の例示図である。図13のプログラムファイルの構造解析の基礎としたソースコードは、図6の更新領域60に示したソースコードである。
図13に示すように、3つのクラス「AbstractAction」1301、「ProcessPersonAction」1302、「PersonFinder」1303のそれぞれについて、定義されているメソッド、及びソースコード中のブロック単位でプログラムファイルの構造がツリー形式で表示されている。
例えばクラス「ProcessPersonAction」1302に定義されているメソッド「doAction」1304により、クラス「PersonFinder」1303に定義されているメソッド「findPerson」1305がコールされるので、メソッド「findPerson」1305のパラメータが更新された場合には、メソッド「doAction」1304が影響を受ける。したがって、更新情報に含まれる更新内容に関する情報と関連する部分として、メソッド「findPerson」1305の更新に対してメソッド「doAction」1304を記憶しておけば良い。
同様にクラス「AbstractAction」1301に定義されているメソッド「logError」1306のパラメータが更新された場合、ソースコード中でファンクション「logError」をコールしているメソッド「doAction」1304を構成するブロック1307、1308が影響を受ける。したがって、更新情報に含まれる更新内容に関する情報と関連する部分として、メソッド「doAction」1304に対してブロック1307、1308を記憶しておけば良い。
このようにプログラムファイルの構造を事前に解析しておき、パラメータの関係、パラメータの受け渡し等の更新内容に関する情報と関連する部分を、プログラムファイル関係情報記憶部134に記憶しておくことにより、より高い精度で更新作業においてコンフリクトが生じるか否かを判断することができる。
図14は、本発明の実施の形態2に係るアプリケーション開発サーバ1のCPU11の処理手順を示すフローチャートである。アプリケーション開発サーバ1のCPU11は、更新情報の送信元であるクライアント3に関する情報と対応付けて、更新情報を更新情報記憶部132に記憶し(ステップS1002)、更新情報に基づいて更新対象を特定する(ステップS1401)。更新対象は、プログラムファイル単位に限定されるものではく、例えばメソッド単位、ブロック単位等であっても良い。
CPU11は、プログラムファイル関係情報記憶部134に記憶されているプログラムファイルの構造に関する情報を読み出し(ステップS1402)、影響を受ける更新対象として記憶されている他の更新対象が存在するか否かを判断する(ステップS1403)。CPU11が、他の更新対象が存在すると判断した場合(ステップS1403:YES)、CPU11は他の更新対象を抽出して(ステップS1404)、ステップS1005以下の処理を継続する。CPU11が、他の更新対象が存在しないと判断した場合(ステップS1403:NO)、CPU11は、処理を終了する。
以上のように本実施の形態2によれば、受信した更新情報に関連する部分を含むプログラムファイル、メソッド、ブロック等が他のクライアント3にて更新されている場合には、他のクライアント3で更新されている旨を示す警告情報を送信することにより、同一のソースコードを更新しているクライアント3、更新部分が影響を与える可能性があるプログラムファイル、メソッド、ブロック等を更新しているクライアント3等が、更新作業時に無用なテストを実行することなく、開発者が的確にテスト手順を工夫することにより、プログラム開発作業の歩留まりの発生を最小限に止めることが可能となる。
なお、本発明は上記実施例に限定されるものではなく、本発明の趣旨の範囲内であれば多種の変更、改良等が可能である。例えばネットワーク2を介して本実施の形態に係るアプリケーション開発サーバ1に接続されている外部のコンピュータの記憶装置に、プログラムファイル記憶部131、プログラムファイル関係情報記憶部134等を備え、必要に応じて読み書きするようにしても良いし、ネットワーク2上の仮想ディスクに記憶するようにしても良い。また、別個にアプリケーションテストを実行するビルドサーバを設けても良い。
さらに、分散環境で実行される大規模なプログラム開発に限定されるものではなく、分散環境にて実行されるあらゆる種類のファイル更新作業、例えばHTML言語、XML言語等の構造化言語による文書作成・更新作業等においても、同様の効果が期待できる。
1 アプリケーション開発サーバ
2 ネットワーク
3 クライアント
11、31 CPU
12、32 メモリ
13、33 記憶装置
14、34 I/Oインタフェース
15、35 通信インタフェース
16、36 ビデオインタフェース
17、37 可搬型ディスクドライブ
18、38 内部バス
23、43 表示装置
90、91 可搬型記録媒体
100、101 コンピュータプログラム
131 プログラムファイル記憶部
132 更新情報記憶部
133 更新クライアント情報記憶部
134 プログラムファイル関係情報記憶部
331 ワークディレクトリ

Claims (12)

  1. 複数のクライアントと、
    複数の該クライアントとデータ通信することが可能に接続されており、複数の前記クライアントで更新された複数のプログラムファイルを集約して記憶するサーバと
    を有し、
    前記クライアントは、
    更新用に所定のプログラムファイルを複製する指示を前記サーバへ送信する指示送信部と、
    複製されたプログラムファイルを受信するファイル受信部と、
    受信したプログラムファイルを更新した時点で、少なくとも更新されたプログラムファイルを識別する情報及び更新内容に関する情報を有する更新情報を生成する生成部と、
    生成した更新情報を前記サーバへ送信する第1の情報送信部と
    を備え、
    前記サーバは、
    前記更新情報を前記クライアントから受信する第1の受信部と、
    受信した更新情報及びプログラムファイルごとのソースコードに含まれるパラメータ、引数、ファンクションの関係に関する情報の少なくともいずれかを含むプログラムファイル間の関係に関する情報に基づいて、前記更新情報に含まれる更新内容が影響するプログラムファイルを抽出する抽出部と、
    抽出したプログラムファイルを直近に更新されてから現在までに他のクライアントに対して複製して送信したか否かを判断する複製判断部と、
    該複製判断部で他のクライアントに対して複製して送信したと判断した場合、前記クライアントに対して、抽出したプログラムファイルを送信した前記他のクライアントで更新されている旨を示す警告情報を送信する第2の情報送信部と
    を備えるシステム。
  2. 前記サーバは、
    前記更新情報を複製された前記プログラムファイルに対応付けて記憶する情報付与部と、
    第三者が使用する他のクライアントから所定のプログラムファイルを複製する指示を受信した場合、複製された前記プログラムファイルを、対応付けて記憶されている前記更新情報とともに前記第三者が使用する他のクライアントへ送信するファイル送信部と
    を備える請求項1記載のシステム。
  3. 前記クライアントは、
    前記ファイル送信部から送信されて受信したプログラムファイルに前記更新情報が対応付けられているか否かを判断する情報判断部と、
    該情報判断部で前記更新情報が対応付けられていると判断した場合、前記更新情報が対応付けられている旨を示す情報を報知する報知部と
    を備える請求項2記載のシステム。
  4. 前記サーバは、更新対象となるプログラムファイルの、少なくともクラス定義されているメソッド間の関係、メソッドとソースコードに含まれるブロックとの関係を含むプログラムファイルの構造に関する情報を記憶する構造記憶部を備え、
    前記抽出部は、前記プログラムファイル間の関係に関する情報に基づいて抽出したプログラムファイルに加えて、さらに、前記構造記憶部により記憶されたプログラムファイルの構造に関する情報に基づいて、前記更新情報に含まれる更新内容が影響するプログラムファイルを抽出する請求項1乃至3のいずれか一項に記載のシステム。
  5. 前記クライアントは、前記警告情報を受信した場合、前記警告情報を受信した旨を示す情報を報知する警告報知部を備える請求項1乃至4のいずれか一項に記載のシステム。
  6. 複数のクライアントと、
    複数の該クライアントとデータ通信することが可能に接続されており、複数の前記クライアントで更新された複数のプログラムファイルを集約して記憶するサーバと
    を用いて実行することが可能な方法において、
    前記サーバは、
    前記クライアントにより送信された、更新用に所定のプログラムファイルを複製する指示に基づいて、所定のプログラムファイルを複製し、
    複製したプログラムファイルを前記クライアントへ送信し、
    前記プログラムファイルが更新された時点で前記クライアントにて生成された、少なくとも更新されたプログラムファイルを識別する情報及び更新内容に関する情報を有する更新情報を受信し、
    受信した更新情報及びプログラムファイルごとのソースコードに含まれるパラメータ、引数、ファンクションの関係に関する情報の少なくともいずれかを含むプログラムファイル間の関係に関する情報に基づいて、前記更新情報に含まれる更新内容が影響するプログラムファイルを抽出し、
    抽出したプログラムファイルを直近に更新されてから現在までに他のクライアントに対して複製して送信したか否かを判断し、
    他のクライアントに対して複製して送信したと判断した場合、前記クライアントに対して、抽出したプログラムファイルを送信した前記他のクライアントで更新されている旨を示す警告情報を送信する方法
  7. 複数のクライアントとデータ通信することが可能に接続されており、複数の前記クライアントで更新された複数のプログラムファイルを集約して記憶するサーバにおいて
    製したプログラムファイル前記クライアントにて更新された時点で生成された、少なくとも更新されたプログラムファイルを識別する情報及び更新内容に関する情報を有する更新情報を前記クライアントから受信する第1の受信部と
    受信した更新情報及びプログラムファイルごとのソースコードに含まれるパラメータ、引数、ファンクションの関係に関する情報の少なくともいずれかを含むプログラムファイル間の関係に関する情報に基づいて、前記更新情報に含まれる更新内容が影響するプログラムファイルを抽出する抽出部と
    抽出したプログラムファイルを直近に更新されてから現在までに他のクライアントに対して複製して送信したか否かを判断する複製判断部と
    該複製判断部で他のクライアントに対して複製して送信したと判断した場合、前記クライアントに対して、抽出したプログラムファイルを送信した前記他のクライアントで更新されている旨を示す警告情報を送信する第2の情報送信部と
    を備えるサーバ
  8. 前記更新情報を複製された前記プログラムファイルに対応付けて記憶する情報付与部と、
    第三者が使用する他のクライアントから所定のプログラムファイルを複製する指示を受信した場合、複製された前記プログラムファイルを、対応付けて記憶されている前記更新情報とともに前記第三者が使用する他のクライアントへ送信するファイル送信部と
    を備える請求項7記載のサーバ
  9. 更新対象となるプログラムファイルの、少なくともクラス定義されているメソッド間の関係、該メソッドとソースコードに含まれるブロックとの関係を含むプログラムファイルの構造に関する情報を記憶する構造記憶部を備え、
    前記抽出部は、前記プログラムファイル間の関係に関する情報に基づいて抽出したプログラムファイルに加えて、さらに、前記構造記憶部により記憶されたプログラムファイルの構造に関する情報に基づいて、前記更新情報に含まれる更新内容が影響するプログラムファイルを抽出する請求項7又は8記載のサーバ。
  10. 複数のクライアントとデータ通信することが可能に接続されており、複数の前記クライアントで更新された複数のプログラムファイルを集約して記憶するサーバで実行することが可能なコンピュータプログラムにおいて、
    前記サーバを、
    複製したプログラムファイルが前記クライアントにて更新された時点で生成された、少なくとも更新されたプログラムファイルを識別する情報及び更新内容に関する情報を有する更新情報を前記クライアントから受信する第1の受信手段、
    受信した更新情報及びプログラムファイルごとのソースコードに含まれるパラメータ、引数、ファンクションの関係に関する情報の少なくともいずれかを含むプログラムファイル間の関係に関する情報に基づいて、前記更新情報に含まれる更新内容が影響するプログラムファイルを抽出する抽出手段、
    抽出したプログラムファイルを直近に更新されてから現在までに他のクライアントに対して複製して送信したか否かを判断する複製判断手段、及び
    該複製判断手段で他のクライアントに対して複製して送信したと判断した場合、前記クライアントに対して、抽出したプログラムファイルを送信した前記他のクライアントで更新されている旨を示す警告情報を送信する第2の情報送信手段
    として機能させるコンピュータプログラム
  11. 前記サーバを、
    前記更新情報を複製された前記プログラムファイルに対応付けて記憶する情報付与手段、及び
    第三者が使用する他のクライアントから所定のプログラムファイルを複製する指示を受信した場合、複製された前記プログラムファイルを、対応付けて記憶されている前記更新情報とともに前記第三者が使用する他のクライアントへ送信するファイル送信手段
    として機能させる請求項10記載のコンピュータプログラム
  12. 前記サーバを、
    更新対象となるプログラムファイルの、少なくともクラス定義されているメソッド間の関係、該メソッドとソースコードに含まれるブロックとの関係を含むプログラムファイルの構造に関する情報を記憶する構造記憶手段として機能させ、
    前記抽出手段を、前記プログラムファイル間の関係に関する情報に基づいて抽出したプログラムファイルに加えて、さらに、前記構造記憶手段により記憶されたプログラムファイルの構造に関する情報に基づいて、前記更新情報に含まれる更新内容が影響するプログラムファイルを抽出する手段として機能させる請求項10又は11記載のコンピュータプログラム
JP2009083614A 2009-03-30 2009-03-30 複数のクライアントを用いた分散環境で更新作業のコンフリクトを回避するシステム、方法、サーバ及びコンピュータプログラム Expired - Fee Related JP4845153B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009083614A JP4845153B2 (ja) 2009-03-30 2009-03-30 複数のクライアントを用いた分散環境で更新作業のコンフリクトを回避するシステム、方法、サーバ及びコンピュータプログラム
US12/749,694 US8713552B2 (en) 2009-03-30 2010-03-30 Avoiding conflict in update in distributed environment employing multiple clients

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009083614A JP4845153B2 (ja) 2009-03-30 2009-03-30 複数のクライアントを用いた分散環境で更新作業のコンフリクトを回避するシステム、方法、サーバ及びコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2010237870A JP2010237870A (ja) 2010-10-21
JP4845153B2 true JP4845153B2 (ja) 2011-12-28

Family

ID=42785902

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009083614A Expired - Fee Related JP4845153B2 (ja) 2009-03-30 2009-03-30 複数のクライアントを用いた分散環境で更新作業のコンフリクトを回避するシステム、方法、サーバ及びコンピュータプログラム

Country Status (2)

Country Link
US (1) US8713552B2 (ja)
JP (1) JP4845153B2 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9609085B2 (en) 2011-07-28 2017-03-28 Hewlett-Packard Development Company, L.P. Broadcast-based update management
US9110747B2 (en) * 2011-11-22 2015-08-18 1Elimited Obtaining program data over a network
JP5868246B2 (ja) * 2012-04-05 2016-02-24 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ソフトウェア開発支援方法、プログラム及び装置
US9525587B2 (en) 2012-05-17 2016-12-20 International Business Machines Corporation Updating web resources
EP2898428A4 (en) * 2012-09-18 2016-06-22 Nokia Technologies Oy METHODS, APPARATUSES, AND COMPUTER PROGRAM PRODUCTS FOR PROVIDING SYNCHRONIZATION CONFLICT RESOLUTION PROTOCOL DURING SYNCHRONIZATION BETWEEN MULTIPLE DEVICES
US9626176B2 (en) * 2013-09-13 2017-04-18 Microsoft Technology Licensing, Llc Update installer with technical impact analysis
US9614724B2 (en) 2014-04-21 2017-04-04 Microsoft Technology Licensing, Llc Session-based device configuration
US9606788B2 (en) * 2014-04-30 2017-03-28 Microsoft Technology Licensing, Llc Dynamic update installer for customized software
US10111099B2 (en) 2014-05-12 2018-10-23 Microsoft Technology Licensing, Llc Distributing content in managed wireless distribution networks
US9384334B2 (en) 2014-05-12 2016-07-05 Microsoft Technology Licensing, Llc Content discovery in managed wireless distribution networks
US9430667B2 (en) 2014-05-12 2016-08-30 Microsoft Technology Licensing, Llc Managed wireless distribution network
US9874914B2 (en) 2014-05-19 2018-01-23 Microsoft Technology Licensing, Llc Power management contracts for accessory devices
US10037202B2 (en) 2014-06-03 2018-07-31 Microsoft Technology Licensing, Llc Techniques to isolating a portion of an online computing service
US9367490B2 (en) 2014-06-13 2016-06-14 Microsoft Technology Licensing, Llc Reversible connector for accessory devices
US9717006B2 (en) 2014-06-23 2017-07-25 Microsoft Technology Licensing, Llc Device quarantine in a wireless network
JP6029117B2 (ja) 2014-07-31 2016-11-24 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ソースコードの共有を支援する装置及び方法
US9747264B2 (en) 2015-06-19 2017-08-29 International Business Machines Corporation Optimizing update operations in hierarchically structured documents
US9767318B1 (en) 2015-08-28 2017-09-19 Frank Dropps Secure controller systems and associated methods thereof
US20180011910A1 (en) * 2016-07-06 2018-01-11 Facebook, Inc. Systems and methods for performing operations with data acquired from multiple sources
US11106387B2 (en) 2019-09-12 2021-08-31 Enmotus, Inc. Storage system with allocated storage device mechanism and method of operation thereof
KR102563176B1 (ko) * 2021-06-28 2023-08-02 주식회사 더블유비제이소프트 It 시스템 통합 관리를 위한 업무처리 시스템

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06332676A (ja) * 1993-05-18 1994-12-02 Nippon Steel Corp ソフトウェア共同版管理装置
JPH07319674A (ja) * 1994-05-26 1995-12-08 Fujitsu Ltd 情報ファイル更新支援方法及び情報ファイル更新支援方式
JPH11306173A (ja) * 1998-04-17 1999-11-05 Nec Corp 共同作業支援システム及びプログラムを記録した機械読み取り可能な記録媒体
JP2002366674A (ja) 2001-06-05 2002-12-20 Nec Corp ソフトウェア開発自動管理システム及びソフトウェア開発自動管理プログラム
US20050010916A1 (en) * 2003-05-24 2005-01-13 Hagen David A. System for providing software application updates to multiple clients on a network
US7454744B2 (en) * 2003-07-03 2008-11-18 International Business Machines Corporation Private source code commenting
JP5296960B2 (ja) * 2005-06-17 2013-09-25 日本電気株式会社 ファイルバージョン管理装置
JP4848760B2 (ja) 2005-12-21 2011-12-28 日本電気株式会社 リポジトリシステム、リポジトリシステムの管理方法、及びそのプログラム
JP2007272443A (ja) 2006-03-30 2007-10-18 Hokkaido Univ 開発支援装置、開発支援方法および開発支援プログラム
US20080140732A1 (en) * 2006-12-11 2008-06-12 Bentley System, Inc. Method and system for sharing file based data
JP4889593B2 (ja) * 2007-08-21 2012-03-07 株式会社日立ソリューションズ 構成管理システム
JP2009053767A (ja) * 2007-08-23 2009-03-12 Hitachi Ltd プログラム解析装置、および、プログラム解析方法
US20090129597A1 (en) * 2007-11-21 2009-05-21 Zimmer Vincent J Remote provisioning utilizing device identifier

Also Published As

Publication number Publication date
US20100251206A1 (en) 2010-09-30
US8713552B2 (en) 2014-04-29
JP2010237870A (ja) 2010-10-21

Similar Documents

Publication Publication Date Title
JP4845153B2 (ja) 複数のクライアントを用いた分散環境で更新作業のコンフリクトを回避するシステム、方法、サーバ及びコンピュータプログラム
JP3946057B2 (ja) 整合性検査支援方法および整合性検査支援システム
EP3438813B1 (en) Component management platform
US9483261B2 (en) Software documentation generation with automated sample inclusion
US9864793B2 (en) Language tag management on international data storage
JP4880376B2 (ja) 支援装置、プログラム、情報処理システム及び支援方法
KR20070049166A (ko) 목표 기기 상에서의 종속 소프트웨어 패키지의 검출 및이용을 자동화하기 위한 방법 및 소프트웨어 리포지터리를생성하기 위한 시스템
US8843943B2 (en) Generating a service definition in view of service activity events
US7400997B2 (en) Integrated instrument driver network
US20040205509A1 (en) System and method for comparing parsed XML files
JP2015018295A (ja) アプリケーション管理装置、アプリケーション管理システムおよびプログラム
US20030177442A1 (en) System and method for comparing hashed XML files
JPWO2012014284A1 (ja) テストシナリオ生成方法、テストシナリオ生成システム、及び、テストシナリオ生成プログラム
US20050268165A1 (en) Method and system for automated testing of web services
US8539474B2 (en) Method and system for management of interim software fixes
US20120290560A1 (en) Mechanism for efficiently querying application binary interface/application programming interface-related information
CN103649924A (zh) 嵌入式装置、程序产生装置和程序
US8245182B2 (en) Class selectable design sharing
JP6336919B2 (ja) ソースコードレビュー方法及びそのシステム
JP4848760B2 (ja) リポジトリシステム、リポジトリシステムの管理方法、及びそのプログラム
JP2009223822A (ja) ソースコード更新通知装置およびソースコード更新通知方法
JP2006302066A (ja) リモート実行機能を備えたメンテナンスシステムおよびその方法
CN113626134B (zh) 一种资源复制方法、装置、设备以及计算机可读存储介质
JP2017091027A (ja) システム開発支援システム
JP2005266976A (ja) プログラム保存装置、プログラム保存方法、プログラムおよび記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110215

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110607

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110719

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110920

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20110926

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111006

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141021

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees