JP2005182102A - ビルドシステム及び方法並びにビルド用プログラム、ビルドサーバ - Google Patents

ビルドシステム及び方法並びにビルド用プログラム、ビルドサーバ Download PDF

Info

Publication number
JP2005182102A
JP2005182102A JP2003417507A JP2003417507A JP2005182102A JP 2005182102 A JP2005182102 A JP 2005182102A JP 2003417507 A JP2003417507 A JP 2003417507A JP 2003417507 A JP2003417507 A JP 2003417507A JP 2005182102 A JP2005182102 A JP 2005182102A
Authority
JP
Japan
Prior art keywords
build
source
source file
information
file
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.)
Withdrawn
Application number
JP2003417507A
Other languages
English (en)
Inventor
Keiichi Yanai
啓一 矢内
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2003417507A priority Critical patent/JP2005182102A/ja
Publication of JP2005182102A publication Critical patent/JP2005182102A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】 開発時間の短縮化、生成ソフトウェアのシステムリソースの節約を図る。
【解決手段】 以前にビルド処理を行った複数のソースファイル群に対して,以前のビルド処理後に更新されたソースファイルを対象として差分ビルドを行うビルド手段45を備え、ビルド処理前におけるソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段42と、差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と,以前のビルド処理前に取得して記憶したソースファイル情報と,の差分を抽出するソース差分ログ抽出手段43と、この抽出したソース差分ログ情報に基づいて,削除されているソースファイルに対応するビルド手段にて以前に生成されたビルド物件中のデータファイルを,当該ビルド物件中から削除するデータファイル削除手段44と、を備えた。
【選択図】図2

Description

本発明は、ビルドシステム及び方法並びにビルド用プログラムにかかり、特に、以前のビルド時から変更されたソースファイルに対して差分ビルド処理を行う機能を有するビルドシステム及び方法並びにビルド用プログラムに関する。また、上記機能を有するビルドサーバに関する。
パーソナルコンピュータなどの端末装置で使用されるソフトウェアは、所定の言語で記述されたソースプログラムをコンパイル、リンクなど、ビルドすることにより、端末装置で実行可能なファイルとして生成される。例えば、C++などのオブジェクト指向言語では、コンパイラにて複数のソースファイルを機械語に変換して複数の実行ファイルを生成し、リンカーにて結合することにより、ビルド後の成果物としてのソフトウェアを生成する。また、Java(登録商標)言語による場合には、複数のソースファイルが中間言語に変換されてクラスファイルを生成し、これらがJAR形式として1つにまとめてソフトウェアを生成する。このようにしてビルドが行われる。
そして、上述のようにしてビルドされたソフトウェアは、複数の実行ファイル(機械語や中間言語によるもの)にて構成されるため、当該ソフトウェアの開発段階ではこれら複数のファイルを管理することが必要となる。例えば、長期のソフトウェア開発においては、ソースプログラムに変更を加えたり、段階的に機能を付加する必要が生じるが、変更や追加されたソースファイルを管理することにより、迅速かつ的確なソフトウェア開発を実現できる。このような管理システムが、下記の特許文献1に開示されている。
ここで、上記Java(登録商標)を用いたシステムの開発案件は日に日に増加し、全開発案件に占めるJava言語の割合も増加している。このようなJavaで書かれたソースファイルをビルドするツールとしてAntというツールが存在する。このAntは、Jakarta−Apacheプロジェクトで作成されたライセンスフリーのツールであり、現在のJava開発環境においては、標準ビルドツールとして多くの案件で利用されているものである。
特開平7−93142号公報
しかしながら、上記Antを用いたビルドにおいては、ビルド対象のソースファイルを削除した場合に、そのファイルがアーカイブされているビルド物件(成果物)からは削除されない、という問題があった。すなわち、その削除したソースファイルの内容をビルド物件である成果物に反映するためには、換言すると、削除したソースファイルに対応するクラスファイルをビルド物件から取り除くためには、過去にビルドしてできた成果物を総て一旦削除して、再度新たにビルドを行わなければならず、かかる作業の手間が生じると共に、処理時間が増加し、開発の遅延という問題が発生する。例えば、1つだけ不要なソースファイルが存在していた場合、そのソースファイルに対応するたった1つのクラスファイル削除するためだけに、アーカイブファイルを全て一から作成しなおさなければならないという事態が生じ、効率が悪くシステムリソースの浪費にもつながる。
また、ビルド対象ファイルをリリースする開発者の立場からは、ビルドした結果としてどのファイルに変更があったのかという情報を簡単に入手できれば、障害発生時においても原因の切り分けに大いに役立つことになる。実際Antには、ログを出力する機能はあるが、前回のビルドと比較して変更のあった部分のみを出力する機能はなく、膨大なログ情報の中から開発者が関連するファイルの情報を見つけ出さなければならず、かかる作業に膨大な時間を要する、という問題があった。
そこで、本発明は、ソフトウェア開発時の確実性の向上を図ると共に、開発時間の短縮化を図り、さらに、生成されたソフトウェアの大容量化を抑制し、システムリソースの節約を図る、ビルドシステムを提供することをその目的とする。
本発明は、上記従来例の有する不都合を改善すべく、以下のような構成を採っている。まず、本発明は、複数のソースファイル群を端末装置にて実行可能なデータファイルにそれぞれ変換すると共に,これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うビルド手段を備え、このビルド手段が,にビルド処理を行った複数のソースファイル群に対して,以前のビルド処理後に更新されたソースファイルを対象として再びビルド処理を行う差分ビルド機能を備えた、ビルドシステムにおいて、ビルド手段によるビルド処理前におけるソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段と、差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と,以前のビルド処理前に取得して記憶したソースファイル情報と,の差分を抽出するソース差分ログ抽出手段と、この抽出した情報をソース差分ログ情報として外部に出力するソース差分ログ出力手段と、を備えた、という構成を採っている。
このような構成することにより、ビルドシステムでは、まず、例えばJava(登録商標)プログラム言語で記述されたソースファイル群をコンパイル、アーカイブすることにより、コンピュータにて実行可能なソフトウェアとしてのビルド物件が生成される。そして、一度ビルドが行われた後にソースファイルが変更されて再度ビルドが行われると、この更新されたソースファイルを対象として差分ビルド処理が行われる。これにより、ソフトウェア開発時のビルド時間の短縮化を図っている。これに加え、本発明では、差分ビルド前にソースファイルを特定する情報がソースファイル情報として取得・記憶されると共に、以前のソースファイル情報との差分が抽出される。そして、かかるソース差分ログ情報がソールプログラムを提供する開発者等に対して出力されることにより、当該開発者等は自ら提供したファイルのうち、どのファイルに変更を加えたかということを容易に認識することができる。特に、長期の時間が経過した場合であってもそのことを確認することができるため、バージョンアップなどの作業が正確かつ容易になる。
また、上記構成に加え、抽出したソース差分ログ情報に基づいて,削除されているソースファイルに対応するビルド手段にて以前に生成されたビルド物件中のデータファイルを,当該ビルド物件中から削除するデータファイル削除手段、を備えた、という構成であると望ましい。そして、上記構成から差分ログを出力する機能を除いた以下の構成でもよい。すなわち、複数のソースファイル群を端末装置にて実行可能なデータファイルにそれぞれ変換すると共に,これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うビルド手段を備え、このビルド手段が,以前にビルド処理を行った複数のソースファイル群に対して,以前のビルド処理後に更新されたソースファイルを対象として再びビルド処理を行う差分ビルド機能を備えた、ビルドシステムにおいて、ビルド手段によるビルド処理前におけるソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段と、差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と,以前のビルド処理前に取得して記憶したソースファイル情報と,の差分を抽出するソース差分ログ抽出手段と、この抽出したソース差分ログ情報に基づいて,削除されているソースファイルに対応するビルド手段にて以前に生成されたビルド物件中のデータファイルを,当該ビルド物件中から削除するデータファイル削除手段と、を備えた、という構成であってもよい。
これにより、差分情報を基にして既に生成されたビルド物件中から、削除されたソースファイルに対応するすでにコンパイルされた実行可能なデータファイルが削除され、その後、差分ビルド処理が行われる。従って、削除されたソースファイルの内容をビルド物件に反映すべく、以前のビルド物件を総て削除して、ソースファイル群を一からビルドすることが抑制され、ビルド時間のさらなる短縮化を図ることができる。また、ソフトウェア内から不要なファイルが削除さえるため、これにより、ソフトウェアによるシステムリソースの節約を図ることができる。
また、上記構成に加え、ビルド手段によるビルド処理後に,変換された各データファイルの内容を特定する情報をそれぞれ取得してデータファイル情報として記憶するデータファイル情報取得手段と、このデータファイル情報と,以前のビルド時に取得して記憶したデータファイル情報と,の差分を抽出するビルド差分ログ抽出手段と、この抽出した情報をビルド差分ログ情報として外部に出力するビルド差分ログ出力手段と、を備えた、という構成にしてもよい。
これにより、以前のビルド処理によるビルド物件と、差分ビルド処理後に生成されたビルド物件との差分、詳しくは、ビルド物件であるソフトウェアを構成する実行ファイルの構成の変化部分がログ情報として出力されるため、開発者は自己の行った変更の様子をログ情報を参照することで容易に確認することができ、以後のさらなるバージョンアップなどの参考にすることができる。
そして、本発明では、ソフトウェアを構成するソースファイルを提供する開発者端末にネットワークを介して接続されたビルドサーバであって、開発者端末から送信される複数のソースファイル群を受信し、各ソースファイルを所定の端末装置にて実行可能なデータファイルにそれぞれ変換すると共に,これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うビルド手段を備えると共に、このビルド手段が,以前にビルド処理を行った複数のソースファイル群に対して,以前のビルド処理後に更新されたソースファイルを対象として再びビルド処理を行う差分ビルド機能を備え、ビルド手段によるビルド処理前におけるソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段と、差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と,以前のビルド処理前に取得して記憶したソースファイル情報と,の差分を抽出するソース差分ログ抽出手段と、この抽出した情報をソース差分ログ情報として外部に出力するソース差分ログ出力手段と、を備えたビルドサーバをも提供している。
同様に、ソフトウェアを構成するソースファイルを提供する開発者端末にネットワークを介して接続されたビルドサーバであって、開発者端末から送信される複数のソースファイル群を受信し、各ソースファイルを所定の端末装置にて実行可能なデータファイルにそれぞれ変換すると共に,これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うビルド手段を備えると共に、このビルド手段が,以前にビルド処理を行った複数のソースファイル群に対して,以前のビルド処理後に更新されたソースファイルを対象として再びビルド処理を行う差分ビルド機能を備え、ビルド手段によるビルド処理前におけるソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段と、差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と,以前のビルド処理前に取得して記憶したソースファイル情報と,の差分を抽出するソース差分ログ抽出手段と、この抽出したソース差分ログ情報に基づいて,削除されているソースファイルに対応するビルド手段にて以前に生成されたビルド物件中のデータファイルを,当該ビルド物件中から削除するデータファイル削除手段と、を備えたビルドサーバでもよい。
さらに、本発明では、ソフトウェアを構成する複数のソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得工程と、複数のソースファイル群を端末装置にて実行可能なデータファイルにそれぞれ変換すると共に,これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド工程と、このビルド工程後に,再びビルド処理を行う複数のソースファイル群の各ソースファイルの内容を特定する情報をそれぞれ取得して新たなソースファイル情報として記憶する新ソースファイル情報取得工程と、この新たなソースファイル情報と,以前のビルド処理前にソースファイル情報取得工程にて取得して記憶したソースファイル情報と,の差分を抽出するソース差分ログ抽出工程と、この抽出したソース差分ログ情報に基づいて,削除されているソースファイルに対応するビルド工程にて以前に生成されたビルド物件中のデータファイルを,当該ビルド物件中から削除するデータファイル削除工程と、このデータファイル削除工程後に,複数のソースファイル群に対して,以前のビルド処理後に更新されたソースファイルを対象として再びビルド処理を行う再ビルド工程と、から成ることをビルド方法をも提供している。
また、本発明では、ソフトウェアの開発を行うコンピュータを、複数のソースファイル群を端末装置にて実行可能なデータファイルにそれぞれ変換すると共に,これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うと共に、以前にビルド処理を行った複数のソースファイル群に対して,以前のビルド処理後に更新されたソースファイルを対象として再びビルド処理を行う差分ビルド機能を備えたビルド手段、ビルド手段によるビルド処理前におけるソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段、差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と,以前のビルド処理前に取得して記憶したソースファイル情報と,の差分を抽出するソース差分ログ抽出手段、この抽出したソース差分ログ情報に基づいて,削除されているソースファイルに対応するビルド手段にて以前に生成されたビルド物件中のデータファイルを,当該ビルド物件中から削除するデータファイル削除手段、として機能させるためのビルド用プログラムをも提供している。
かかる構成であっても、上述したビルドシステムと同様に作用し、上記目的を達成することができる。
本発明は、以上のように構成され機能するので、これによると、プログラム開発者が、新たなソースプログラム提供時に、以前のものと比較した変更箇所を表す差分ログ情報を取得することができるため、プログラム上の変更点を容易に認識することができる。特に、長期の時間が経過した場合であってもそのことを確認することができ、ソフトウェア開発作業が正確かつ迅速なものとなる。
また、削除されたソースファイルに対応するすでにコンパイルされた実行可能なデータファイルが、以前のビルド処理にて生成されたビルド物件から削除され、その後、差分ビルド処理が行われるため、より的確に変更内容を反映したビルド物件(ソフトウェア)を生成することができる。特に、不要なファイルの存在を無くすことができるため、ソフトウェアの大容量化を抑制することができる。そして、削除されたソースファイルの内容を的確にビルド物件に反映すべく、以前のビルド物件を総て削除して、ソースファイル群を一からビルドする必要がないため、ビルド時間のさらなる短縮化を図ることができる。
本発明の特徴は、従来からソフトウェア開発システムに備わっている差分ビルド機能に、ソースファイルの変更点を開発者に明確に示す機能や、削除されたソースファイルに対応した実行ファイルをビルド物件から削除して再度ビルドを行う機能を備えた、ということが主である。これにより、迅速かつ的確にソースファイルの変更点を反映してソフトウェアの生成を行う、というものである。以下、プログラム開発言語がJava(登録商標)である場合を例に挙げて実施例にて詳細に説明する。ただし、ビルド環境、すなわち、開発言語はJava言語に限定されるものではない。
以下、本発明の第一の実施例を、図1乃至図5を参照して説明する。図1は、本発明であるビルドシステムの全体構成を示す概略図である。図2は、ビルドシステムの構成を示す機能ブロック図である。図3乃至図4は、システム内で抽出されるデータの一例を示す図である。図5は、システムの動作を示すフローチャートである。
(全体構成)
本発明であるビルドシステムは、Java(登録商標)言語によるソフトウェア開発ツールであり、ソフトウェアを構築するソースファイルを提供する開発者端末1にネットワークNを介して接続されたビルドサーバ2にて構成される。そして、複数の開発者端末10から提供されたソースファイルをビルドすることにより、ソフトウェアを生成するが、本実施例では特に、「Ant」ツールを用いたJava開発システムである。ここで、「Ant」ツールとは、Jakartaプロジェクトから提供されるJava用メイクツールであり、ソースファイルと実行ファイルファイルの日付を比較し、ソースファイルが更新されたものだけ、実行ファイルの生成を行うというものである。従って、たびたび変更が加えられるソフトウェア開発においては、効率よく短時間でビルドすることができるため、頻繁に用いられるものである。
そして、本発明では、ビルドサーバ2に本発明の特徴となる機能が備わっており、以前のビルド時に生成されたビルド物件に、迅速かつ的確にソースファイルの変更点を反映させて、ソフトウェアの累積的な開発を行うために好適なシステムである。以下、各構成について詳述すると共に、その動作を説明する。
(開発者端末)
開発者端末1は、ネットワークNに接続可能なパーソナルコンピュータやサーバコンピュータにて構成されており、開発者が開発したソフトウェアのソースファイルをビルドサーバ20に送信する端末である。そして、これら複数の者が共同してソフトウェアを開発することを背景に説明する。但し、本発明では、一人の開発者にて全てのソースファイルが提供されるソフトウェア開発に対しても、もちろん適用される。
この開発者端末1は、開発者にて操作されて、各自が作成したプログラムが記述されたソースファイル(図示せず)を、ネットワークNを介してビルドサーバに送信するよう動作する(矢印1参照)。このとき、開発者端末1は、自己が開発したソースプログラムが、いかなるソフトウェアのものであるか、ということを識別できるデータと共に、ソースファイルを送信する。これは、一のソフトウェアを複数の者で開発している場合に、ビルドサーバ2側でソフトウェアごとにまとめるためである。
(ネットワーク)
ネットワークNは、本実施例では、専用線や電話回線あるいはCATVのケーブル等の有線回線や、携帯電話回線といった無線回線を用い、TCP/IPプロトコルといった通信プロトコルにて通信を行うインターネットである。但し、特定企業内のみで稼働するイントラネットや、TCP/IP以外のプロトコルで通信する特定のネットワークであってもよい。
(ビルドサーバ)
本発明の中心となるビルドサーバ2は、ネットワークNに接続されたサーバコンピュータであって、当該ネットワークN上のコンピュータと相互に交信するための通信部3を備えている。そして、ビルドサーバ2には、種々の演算処理を実行する演算部であるCPU4と、所定のデータを記憶する記憶部であるハードディスク(HD)5とを備えている。なお、ハードディスク5は記憶部の一例であって、これに限定されるものではない。以下、CPU4に構築されている各処理部と、ハードディスク5に記憶されているデータの具体例を、図2を参照して説明する。
まず、CPU4には、上述した開発者端末1から送信される複数のソースファイル群を受信して、ハードディスク5に記憶するソースファイル受付部41が構築されている。このソースファイル受付部41は、開発ソフトウェアが複数の開発者にて開発されている場合には各開発者端末1からそれぞれソースファイルを受信することになるが、同一のソフトウェアのものである場合には、それをひとまとめにして記憶する。なお、一のソフトウェアのまとまりを以下では「プロジェクト」と呼ぶ。そして、これに対応して、ハードディスク5には、受信したソースファイルを格納するソースファイル記憶部51が備えられていて、プロジェクトごとにソースファイル群が記憶される。
そして、CPU4には、上記受信したあるプロジェクトのソースファイル群を、所定の端末装置にて実行可能なデータファイルにそれぞれ変換すると共に,これらデータファイル群をソフトウェアとなるビルド物件としてまとめてビルド物件記憶部54に記憶する、というビルド処理を行うビルド部45が構築されている。ここで、本実施例では、開発言語がJava言語であるため、ビルド部45は、具体的に、まずJavaVMにて実行可能な中間言語ファイルであるクラスファイル(実行可能なデータファイル)にコンパイルし、その後、各クラスファイルをJar形式にまとめてアーカイブを行う。これにより、ソフトウェアを生成する。なお、例えばソースファイルの名称が「001.java」である場合には、クラスファイル名を「001.class」としてコンパイルする。このように、両ファイルの関係は、拡張子「.java」の部分が「.class」に変わるだけであるので、ソースファイルとクラスファイルとの対応関係を容易に認識することができる。
また、上記ビルド処理は、具体的には、「Ant」ツールにて実行される。そして、一度ビルド処理を行い、プロジェクトのビルド物件を生成した後にさらにソースファイルに変更を加えてビルド処理を行うと、以前に生成されたクラスファイルとソースファイルとのタイムスタンプを比較し、更新されたものだけを対象として差分ビルド処理を行う。これにより、変更されていないソースファイルを再びコンパイルするという無駄を排除でき、迅速なソフトウェア開発を実現することができる。なお、かかる機能は従来より公知であるため、その詳細な説明は省略する。
そして、本発明におけるCPU4には、上記処理部に加えて、ビルド処理前に、これらかビルドする対象となるソースファイル群、すなわち、ソフトウェアの元となるプロジェクト内の全てのソースファイルの内容を特定する情報であるソースダイジェスト情報(ソースファイル情報)を取得するソースダイジェスト取得部42(ソースファイル情報取得手段)が構築されている。このソースダイジェスト取得部42は、ハッシュ法にてデータを高速に検索し、ソースファイルのハッシュ値を算出して、これをソースファイルの内容を特定するソースダイジェスト情報として抽出する。そして、プロジェクト内にある全てのソースファイルのダイジェスト情報を取得し、その取得データを「source_diff.db」として、ハードディスク5内のソースダイジェスト記憶部52に記憶しておく。その一例を、図3(a)に示す。なお、この場合、ソースファイルは「001.java」等であり、その内容を表すハッシュ値は数字とアルファベットで表されたものである。そして、このソースダイジェスト情報は、各プロジェクトごとに区別して記憶され、また、後に、ソースダイジェストを算出した際に、その時間的な前後関係がわかるよう、そのタイムスタンプなども記憶される。
また、CPU4には、上述したように取得されたソースダイジェスト情報の差分、具体的には、同一のプロジェクトのものであって、時間的に前後するものの差分を算出するソース差分ログ抽出部43(ソース差分ログ抽出手段)が構築されている。このソース差分ログ抽出部43が作動するタイミングは、プロジェクトであるソースファイル群のビルド処理が行われる前であって、上述したように、ソースファイル群のソースダイジェスト情報が取得された後である。従って、ソースダイジェスト情報を取得した場合に、これと同一のプロジェクトに関する以前に取得されたソースダイジェスト情報がソースダイジェスト情報記憶部52に存在する場合には、それを読み出して差分を抽出し、ソース差分ログ情報としてソース差分ログ記憶部53に記憶する。すなわち、これからビルド処理を行おうとしているソースファイル群のソースダイジェスト情報と,以前のビルド処理前に取得して記憶したソースダイジェスト情報と,の差分を抽出する。このとき、ソース差分ログ情報は、プロジェクト内で、新たに提供されたソースファイルと、内容が変更されたソールファイルと、削除されたソースファイルと、を特定するデータとして抽出され記憶される。その一例を、図3(b)に示す。この図では、削除されたソースファイルが「Delete」にて示される「001.java」ファイルであり、変更されたソースファイルが「Modify」にて示される「002.java」ファイルである。また、新たに提供されたソースファイルが「New」にて示される「003.java」ファイルである。
そして、上記ソース差分ログ情報に基づいて、削除されているソースファイル、すなわち、「Delete」にて示されるソースファイルに対応するクラスファイルであって、以前のビルド時に生成されたものを、その以前に生成されたビルド物件中から削除するクラスファイル削除部44(データファイル削除手段)が、CPU4に構築されている。このクラスファイル削除部44は、ソース差分ログ情報が生成された後であって、新たにビルド処理を行う前に実行されるものである。従って、例えば、あるプロジェクト内にて、「001.java」というソースファイルが削除されたとソース差分ログ抽出部43にて判断された場合には、そのファイル名のうち拡張子を除いた部分である「001」をキーワードとして、ビルド物件記憶部54内に格納されている当該プロジェクトのビルド物件内に「001.class」というクラスファイルが存在するか否かを調べ、存在する場合には、当該ファイルを削除する。
このとき、他のソースファイルにて、削除対象となるクラスファイルが参照されているか否かをも調べる。そして、他のソースファイルにて、削除対象となるクラスファイルを参照している場合には、ビルド後にもソフトウェアが作動する上で必要なファイルであるため、その削除は行わないこととする。あるいは、その旨を表す警告情報を、ビルドサーバ2のディスプレイに表示したり、開発者端末1に送信してもよい。
そして、クラスファイル削除部44が作動した後に、上述したビルド部45は差分ビルド処理を行う。すると、更新されたソースファイル(新たに追加されたファイルや変更されたファイル)がコンパイルされ、ビルド物件記憶部54内にすでに存在するビルド物件に対してアーカイブされる。このとき、新たに追加されたソースファイルに対応するクラスファイルは追加され、変更されたソースファイルに対応するクラスファイルは上書きされるため、これにより、ソースファイルの変更内容が反映された新たなビルド物件が構築されることとなる。従って、すでに削除されたソースファイルに対応する不要なクラスファイルがそのままビルド物件であるソフトウェア内に残されるということを防止でき、ソフトウェアの大容量化を抑制することができる。このことは、削除されたソースファイルの内容をビルド物件に反映すべく、以前のビルド物件を総て削除して、ソースファイル群を一からビルドすることを抑制することにもなり、従来と比較して、一層のビルド時間の短縮化を図ることができる。
また、CPU4には、ビルド処理後に、コンパイルされた各クラスファイル(変換された実行可能なデータファイル)の内容を特定する情報をそれぞれ取得してクラスダイジェスト情報(データファイル情報)として、クラスダイジェスト記憶部55に記憶するクラスダイジェスト取得部46(データファイル情報取得手段)が構築されている。このクラスダイジェスト取得部46は、生成されたクラスファイルに対して、上述したソースダイジェスト取得部42とほぼ同様に作動する。その一例を、図4(a)に示す。この図に示すように、各クラスファイルのハッシュ値を抽出して、これらを「build_diff.db」としてまとめて記憶しておく。なお、このとき、アーカイブされたjar形式ファイル内のクラスファイルに関しても、ダイジェスト情報を取得しておく。
そして、上記クラスダイジェスト情報を算出した後に、同一のプロジェクトについて、アーカイブされたビルド物件が以前に生成されており、そのクラスダイジェスト情報が記憶されている場合には、これらの差分を抽出してクラス差分ログ情報としてクラス差分ログ記憶部56に記憶しておく。すなわち、かかる機能を果たすクラス差分ログ抽出部47(ビルド差分ログ抽出手段)が、CPU4には構築されている。その一例である「build_diff.log」を、図4(b)に示す。この図に示すように、上述同様に、削除されたクラスファイルを「Delete」で示し、新しく追加されたクラスファイルを「New」、変更されたクラスファイル、及び、それらをまとめたアーカイブであるjarファイルを「Modify」で示す。
さらに、CPU4には、ビルドサーバ2内のデータを、ディスプレイに表示したり、ネットワークN上の他のコンピュータに送信するなど、外部に出力するデータ出力部48が構築されている。このデータ出力部48は、特に、上記ソース差分抽出部43にて抽出され、ソース差分ログ記憶部53に記憶されているソース差分ログ情報を、開発者端末2に送信する機能(ソース差分ログ出力手段)を有している。また、同様に、上記クラス差分ログ抽出部47にて抽出され、クラス差分ログ記憶部56に記憶されているクラス差分ログ情報を、開発者端末2に送信する機能(ビルド差分ログ出力手段)をも有している。
なお、以下に説明する処理部は、各処理を実現するために開発されたビルド用プログラムが当該CPUに組み込まれることで実現されている。そして、かかるプログラムは、CD−ROMなどの可搬媒体に記憶されたものがビルドサーバ2に提供されてもよく、ネットワークN上の他のコンピュータからダウンロードされることにより提供されてもよい。
(動作)
次に、上記構成の本システムの動作、すなわち、ビルドサーバ2の動作を、図5のフローチャートを参照して説明する。
まず、ビルドサーバ2は、開発者1から新規のソースファイル群のリリースを受けると(ステップS1)、ビルドを開始する準備を行う。そして、提供されたソースファイルが含まれるプロジェクト内の全てのソースファイル、すなわち、そのソースファイルが含まれるソフトウェアに関連する全てのソースファイルのダイジェスト情報を取得し、その情報をデータベース形式ファイル「source_diff.db」として、ソースダイジェスト記憶部52に記憶しておく(ステップS2、ソースファイル情報取得行程)。
続いて、上記ソースファイル群のソースダイジェスト情報であって、以前に取得されたものが存在するか否かを調べる(ステップS3)。そして、以前のソースダイジェスト情報が存在しない場合には(ステップS3にて否定判断)、一度もビルドを行っていないことから最初のビルド処理を行う(ステップS7、ビルド行程)。これにより、各ソースファイルがクラスファイルにコンパイルされ、これらがまとめられてjar形式にアーカイブされる。
続いて、ビルド物件のクラスダイジェスト情報を取得して、クラスダイジェスト記憶部55に記憶しておく(ステップS8)。そして、このクラスダイジェストに対応する以前に取得したクラスダイジェスト情報が存在するか否かを、クラスダイジェスト記憶部55内を調べるが(ステップS9)、今回の場合は新たにビルドを行った場合であるので、以前のクラスダイジェスト情報が存在しない(ステップS9にて否定判断)。従って、一旦、ビルド処理は終了する。
その後、開発者にて上記ビルドしたプロジェクト内のソースファイルに変更が加えられ、そのソースファイルが開発者端末1からビルドサーバ2に送信されると、再度ビルド処理が行われる。かかる処理の様子を以下に説明する。
まず、上述したように開発者端末1から変更されたソースファイルを含むソースファイル群を受け付け(ステップS1)、各ソースファイルのソースダイジェスト情報を取得して記憶する(ステップS2、新ソースファイル情報取得工程)。そして、同一プロジェクトの前回のビルド時に、ソースファイルのダイジェスト情報を取得して記憶したか否かをソースダイジェスト記憶部52を調べ、そのタイムスタンプを比較して判断する(ステップS3)。このとき、上述したように、前回ビルド時のソースファイルのダイジェスト情報があるので(ステップS3にて肯定判断)、前回のソースファイルのダイジェスト情報を読み出し(ステップS4)、今回のソースファイルのダイジェスト情報と比較してソース差分ログ情報「source_diff.log」を抽出する(ソース差分ログ抽出工程)。そして、この抽出したソース差分ログ情報を、ソース差分ログ記憶部53に記憶しておく(ステップS5)。このとき、ネットワークNを通じて、ソース差分ログ情報を、開発者端末1に送信する(ソース差分ログ出力行程、図1の矢印Y2参照)。なお、かかる通知は、後のビルド処理後であってもよい。
続いて、ソース差分ログ情報内に、「Delete」にて示される削除されたソースファイルが存在する場合には、ビルド物件記憶部54中の以前のビルド時に生成されたビルド物件であるアーカイブから、そのソースファイルに対応するクラスファイルを削除する(ステップS6、データファイル削除工程)。その後、更新されて提供されたソースファイルに対してビルド処理を行う(ステップS7、再ビルド工程)。このとき、すでにビルド物件が存在しているため、上述したようにソースファイルの変更点のみを反映した差分ビルド処理となり、ビルド時間の短縮化を図ることができる。
そしてビルド後に、クラスファイルのダイジェスト情報「build_diff.db」を取得し、その情報をデータベース形式ファイルにてクラスダイジェスト記憶部55に記憶する(ステップS8、データファイル情報取得行程)。また、これと同時に、前回ビルド時のクラスファイルのダイジェスト情報があるか否か、クラスダイジェスト記憶部55内を検索して判断し(ステップS9)、今回は、前回ビルド時のクラスファイルのダイジェスト情報があるため(ステップS9にて肯定判断)、前回のクラスファイルのダイジェスト情報を読み出し(ステップS10)、今回のクラスファイルのダイジェスト情報を比較してクラス差分ログ情報「build_diff.log」を抽出する(ビルド差分ログ抽出行程)。そして、かかるログ情報を、開発者端末2に送信する(ステップS11、ビルド差分ログ出力行程、図1の矢印Y2参照)。このようにして、ビルド処理全体を終了する。
このようにすることにより、本発明では、まず、ビルド対象であるソースファイルのログを開発者に対して出力することで、開発者自身がどのファイルに変更を加えたかということを後に容易に確認でき、内容の古いファイルを誤ってリリースしてしまう、ということを防止することができる。また、ソフトウェア開発が長期にわたる場合であっても、その変更点の確認が容易になり、バージョンアップなどの作業の正確性の向上、及び、当該作業の迅速化を図ることができる。さらに、削除されたソースファイルに対応するクラスファイルが以前のビルド物件中から削除され、その後、差分ビルド処理が行われるため、ビルド処理時間の短縮化を図ることができると共に、システムリソースの節約を図ることができる。
以上をまとめると、本発明では、システム開発における後戻り工数の削減並びにビルド時間の短縮、システムリソースの節約等の効果があり、さらなる飛躍的な開発効率の向上を図ることができる。
なお、上記実施例では、ビルドサーバ2がネットワークに接続されて備えられており、ネットワークN上の開発者端末1からソースファイルを受け付ける、という構成のシステムを例示したが、かかる構成に限定されるものではない。ビルドサーバ2が有する上記機能を、ソフトウェア開発者が有するパーソナルコンピュータなどの端末に組み込んでもよい。すなわち、ソフトウェア開発者が直接ソースファイルを作成する端末にて、上記ビルドシステムが構成されていてもよい。
本発明であるビルドシステムは、ソフトウェア開発時、具体的には、ソースファイルをコンパイル、アーカイブする際に用いられるため、産業上利用可能である。
本発明の全体的な構成の概要を示すブロック図である。 図1に開示したビルドサーバの構成を示す機能ブロック図である。 図1に開示したビルドサーバにて取得される情報の一例を示す図である。図3(a)はソースダイジェスト情報を示し、図3(b)はソース差分ログ情報を示す。 図1に開示したビルドサーバにて取得される情報の一例を示す図である。図4(a)はクラスダイジェスト情報を示し、図4(b)はクラス差分ログ情報を示す。 本発明の動作を示すフローチャートである。
符号の説明
1 開発者端末
2 ビルドサーバ
3 通信部
4 CPU(演算部)
5 ハードディスク(記憶部)
41 ソースファイル受付部
42 ソースダイジェスト取得部(ソースファイル情報取得手段)
43 ソース差分ログ抽出部(ソース差分ログ抽出手段)
44 クラスファイル削除部(データファイル削除手段)
45 ビルド部(ビルド手段、差分ビルド機能)
46 クラスダイジェスト取得部(データファイル情報取得手段)
47 クラス差分ログ抽出部(ビルド差分ログ抽出手段)
48 データ出力部(ソース差分ログ出力手段、ビルド差分ログ出力手段)
51 ソースファイル記憶部
52 ソースダイジェスト記憶部
53 ソース差分ログ記憶部
54 ビルド物件記憶部
55 クラスダイジェスト記憶部
56 クラス差分ログ記憶部

Claims (8)

  1. 複数のソースファイル群を端末装置にて実行可能なデータファイルにそれぞれ変換すると共に,これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うビルド手段を備え、
    このビルド手段が,以前にビルド処理を行った前記複数のソースファイル群に対して,以前のビルド処理後に更新された前記ソースファイルを対象として再びビルド処理を行う差分ビルド機能を備えた、ビルドシステムにおいて、
    前記ビルド手段によるビルド処理前における前記ソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段と、前記差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と,以前のビルド処理前に取得して記憶した前記ソースファイル情報と,の差分を抽出するソース差分ログ抽出手段と、この抽出した情報をソース差分ログ情報として外部に出力するソース差分ログ出力手段と、を備えたことを特徴とするビルドシステム。
  2. 複数のソースファイル群を端末装置にて実行可能なデータファイルにそれぞれ変換すると共に,これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うビルド手段を備え、
    このビルド手段が,以前にビルド処理を行った前記複数のソースファイル群に対して,以前のビルド処理後に更新された前記ソースファイルを対象として再びビルド処理を行う差分ビルド機能を備えた、ビルドシステムにおいて、
    前記ビルド手段によるビルド処理前における前記ソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段と、前記差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と,以前のビルド処理前に取得して記憶した前記ソースファイル情報と,の差分を抽出するソース差分ログ抽出手段と、この抽出したソース差分ログ情報に基づいて,削除されているソースファイルに対応する前記ビルド手段にて以前に生成されたビルド物件中の前記データファイルを,当該ビルド物件中から削除するデータファイル削除手段と、を備えたことを特徴とするビルドシステム。
  3. 前記抽出したソース差分ログ情報に基づいて,削除されているソースファイルに対応する前記ビルド手段にて以前に生成されたビルド物件中の前記データファイルを,当該ビルド物件中から削除するデータファイル削除手段、を備えたことを特徴とする請求項1記載のビルドシステム。
  4. 前記ビルド手段によるビルド処理後に,変換された各データファイルの内容を特定する情報をそれぞれ取得してデータファイル情報として記憶するデータファイル情報取得手段と、このデータファイル情報と,以前のビルド時に取得して記憶した前記データファイル情報と,の差分を抽出するビルド差分ログ抽出手段と、この抽出した情報をビルド差分ログ情報として外部に出力するビルド差分ログ出力手段と、を備えたことを特徴とする請求項2又は3記載のビルドシステム。
  5. ソフトウェアを構成するソースファイルを提供する開発者端末にネットワークを介して接続されたビルドサーバであって、
    前記開発者端末から送信される複数のソースファイル群を受信し、各ソースファイルを所定の端末装置にて実行可能なデータファイルにそれぞれ変換すると共に,これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うビルド手段を備えると共に、
    このビルド手段が,以前にビルド処理を行った前記複数のソースファイル群に対して,以前のビルド処理後に更新された前記ソースファイルを対象として再びビルド処理を行う差分ビルド機能を備え、
    前記ビルド手段によるビルド処理前における前記ソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段と、前記差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と,以前のビルド処理前に取得して記憶した前記ソースファイル情報と,の差分を抽出するソース差分ログ抽出手段と、この抽出した情報をソース差分ログ情報として外部に出力するソース差分ログ出力手段と、を備えたことを特徴とするビルドサーバ。
  6. ソフトウェアを構成するソースファイルを提供する開発者端末にネットワークを介して接続されたビルドサーバであって、
    前記開発者端末から送信される複数のソースファイル群を受信し、各ソースファイルを所定の端末装置にて実行可能なデータファイルにそれぞれ変換すると共に,これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うビルド手段を備えると共に、
    このビルド手段が,以前にビルド処理を行った前記複数のソースファイル群に対して,以前のビルド処理後に更新された前記ソースファイルを対象として再びビルド処理を行う差分ビルド機能を備え、
    前記ビルド手段によるビルド処理前における前記ソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段と、前記差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と,以前のビルド処理前に取得して記憶した前記ソースファイル情報と,の差分を抽出するソース差分ログ抽出手段と、この抽出したソース差分ログ情報に基づいて,削除されているソースファイルに対応する前記ビルド手段にて以前に生成されたビルド物件中の前記データファイルを,当該ビルド物件中から削除するデータファイル削除手段と、を備えたことを特徴とするビルドサーバ。
  7. ソフトウェアを構成する複数のソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得工程と、
    複数のソースファイル群を端末装置にて実行可能なデータファイルにそれぞれ変換すると共に,これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド工程と、
    このビルド工程後に,再びビルド処理を行う前記複数のソースファイル群の各ソースファイルの内容を特定する情報をそれぞれ取得して新たなソースファイル情報として記憶する新ソースファイル情報取得工程と、
    この新たなソースファイル情報と,以前のビルド処理前に前記ソースファイル情報取得工程にて取得して記憶した前記ソースファイル情報と,の差分を抽出するソース差分ログ抽出工程と、
    この抽出したソース差分ログ情報に基づいて,削除されているソースファイルに対応する前記ビルド工程にて以前に生成されたビルド物件中の前記データファイルを,当該ビルド物件中から削除するデータファイル削除工程と、
    このデータファイル削除工程後に,前記複数のソースファイル群に対して,以前のビルド処理後に更新された前記ソースファイルを対象として再びビルド処理を行う再ビルド工程と、から成ることを特徴とするビルド方法。
  8. ソフトウェアの開発を行うコンピュータを、
    複数のソースファイル群を端末装置にて実行可能なデータファイルにそれぞれ変換すると共に,これらデータファイル群をソフトウェアとなるビルド物件としてまとめて記憶するビルド処理を行うと共に、以前にビルド処理を行った前記複数のソースファイル群に対して,以前のビルド処理後に更新された前記ソースファイルを対象として再びビルド処理を行う差分ビルド機能を備えたビルド手段、
    前記ビルド手段によるビルド処理前における前記ソースファイル群内の各ソースファイルの内容を特定する情報をそれぞれ取得してソースファイル情報として記憶するソースファイル情報取得手段、
    前記差分ビルド機能による現在のビルド処理前に取得したソースファイル情報と,以前のビルド処理前に取得して記憶した前記ソースファイル情報と,の差分を抽出するソース差分ログ抽出手段、
    この抽出したソース差分ログ情報に基づいて,削除されているソースファイルに対応する前記ビルド手段にて以前に生成されたビルド物件中の前記データファイルを,当該ビルド物件中から削除するデータファイル削除手段、として機能させるためのビルド用プログラム。
JP2003417507A 2003-12-16 2003-12-16 ビルドシステム及び方法並びにビルド用プログラム、ビルドサーバ Withdrawn JP2005182102A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003417507A JP2005182102A (ja) 2003-12-16 2003-12-16 ビルドシステム及び方法並びにビルド用プログラム、ビルドサーバ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003417507A JP2005182102A (ja) 2003-12-16 2003-12-16 ビルドシステム及び方法並びにビルド用プログラム、ビルドサーバ

Publications (1)

Publication Number Publication Date
JP2005182102A true JP2005182102A (ja) 2005-07-07

Family

ID=34779983

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003417507A Withdrawn JP2005182102A (ja) 2003-12-16 2003-12-16 ビルドシステム及び方法並びにビルド用プログラム、ビルドサーバ

Country Status (1)

Country Link
JP (1) JP2005182102A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100866211B1 (ko) 2007-01-03 2008-10-30 삼성전자주식회사 프로그램 개발 장치 및 방법과 이를 이용한 프로그램업데이트 방법
WO2012017522A1 (ja) * 2010-08-03 2012-02-09 富士通株式会社 検証プログラムおよび検証装置
JP2014010699A (ja) * 2012-06-29 2014-01-20 Fujitsu Ltd 更新判定プログラムおよび更新判定装置
JP2015197902A (ja) * 2014-04-03 2015-11-09 日本電信電話株式会社 オンラインビルドシステム、オンラインビルド方法およびオンラインビルドプログラム
KR20160002165A (ko) * 2014-06-30 2016-01-07 주식회사 포워드벤처스 소스 배포 장치, 방법, 및 컴퓨터 판독 가능한 기록 매체

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100866211B1 (ko) 2007-01-03 2008-10-30 삼성전자주식회사 프로그램 개발 장치 및 방법과 이를 이용한 프로그램업데이트 방법
WO2012017522A1 (ja) * 2010-08-03 2012-02-09 富士通株式会社 検証プログラムおよび検証装置
JP5316719B2 (ja) * 2010-08-03 2013-10-16 富士通株式会社 検証プログラムおよび検証装置
JP2014010699A (ja) * 2012-06-29 2014-01-20 Fujitsu Ltd 更新判定プログラムおよび更新判定装置
JP2015197902A (ja) * 2014-04-03 2015-11-09 日本電信電話株式会社 オンラインビルドシステム、オンラインビルド方法およびオンラインビルドプログラム
KR20160002165A (ko) * 2014-06-30 2016-01-07 주식회사 포워드벤처스 소스 배포 장치, 방법, 및 컴퓨터 판독 가능한 기록 매체

Similar Documents

Publication Publication Date Title
CN109656934B (zh) 基于日志解析的源端Oracle数据库DDL同步方法及设备
CN109034993B (zh) 对账方法、设备、系统及计算机可读存储介质
US7478170B2 (en) Generic infrastructure for converting documents between formats with merge capabilities
US7200668B2 (en) Document conversion with merging
US7340534B2 (en) Synchronization of documents between a server and small devices
CN107220142B (zh) 执行数据恢复操作的方法及装置
CN108845843B (zh) 一种函数处理方法、装置以及相关设备
CN109800207B (zh) 日志解析方法、装置、设备及计算机可读存储介质
CN112685433B (zh) 元数据更新方法、装置、电子设备及计算机可读存储介质
JP2005044360A (ja) データのパッケージ内デルタ圧縮(intra−packetdeltacompression)のためのシステムおよび方法
CN110851209B (zh) 一种数据处理方法、装置、电子设备及存储介质
WO2020238597A1 (zh) 基于Hadoop的数据更新方法、装置、系统及介质
CN110347399B (zh) 数据处理方法、实时计算系统以及信息系统
CN109086382B (zh) 一种数据同步方法、装置、设备及存储介质
CN107797823B (zh) 业务规则管理方法、装置、存储介质和计算机设备
JP2009116733A (ja) アプリケーション検索システム、アプリケーション検索方法、モニタ端末、検索サーバおよびプログラム
CN110941629B (zh) 元数据处理方法、装置、设备及计算机可读存储介质
CN109408594B (zh) 一种基于区块链的跨链数据检索系统
CN112540862A (zh) 一种接口文档数据生成方法、装置、设备及存储介质
CN111737140A (zh) 接口自动化测试方法、装置、设备及计算机可读存储介质
CN112612850A (zh) 数据同步方法及装置
US20140359077A1 (en) Method and apparatus for transmitting symbol files
US11775290B2 (en) Detection of API backward compatibility across software versions
JP2005182102A (ja) ビルドシステム及び方法並びにビルド用プログラム、ビルドサーバ
CN112559344A (zh) 远程mock测试方法及系统

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20070306