(57)【要約】【課題】テストを完遂することができる自動ビルドシステムの提供【解決手段】依存関係判定部１１２が、バージョン管理部から最新の全ソースコードとバージョンを取得し、取得したソースコードの依存関係を示す依存関係情報を作成し、コンパイルテスト実行部１１３が、前記作成したソースコードの依存関係に基づいてビルド及びテストを実施し、この実施したビルド及びテスト結果が成功か否かを自動ビルド結果格納部１１４に格納し、この格納したビルド結果が成功したソースコードに最新以外のソースコードが含まれているか否かを判定し、この判定によって最新以外のソースコードが含まれていると判定したとき、自動ビルド結果格納部１１４に格納した自動ビルド結果を失敗に更新し、前記判定によって最新以外のソースコードが含まれていないと判定したとき、テストを続行する自動ビルドシステム。【選択図】図１
2012093879.tif 000002
【特許請求の範囲】
【請求項１】
開発マシン上で実行するソフトウェアを構成するソースコードのコンパイルやライブラリのリンクなどを行ない、実行可能なソフトウェアファイルを作成するビルド及び前記作成した実行可能ファイルのテストをコンピュータによって実行する自動ビルドシステムであって、前記ソースコードのバージョンを管理するためのバージョン管理部と、開発マシンのソフトウェアのビルド及びテストを実行するコンパイルテスト実行部と、前記ソースコード間の依存関係を判定するための依存関係判定部と、前記コンパイルテスト実行部によるビルド及びテスト結果を格納するビルド結果格納部とを備え、前記依存関係判定部が、前記バージョン管理部から最新の全ソースコードとバージョンを取得する工程と、前記取得したソースコードに対して字句解析を行い、ソースコードの依存関係を示す依存関係情報を作成する工程とを実行し、前記コンパイルテスト実行部が、前記依存関係判定部によって作成したソースコードの依存関係に基づいてビルド及びテストを実施する工程と、前記実施したビルド及びテスト結果が成功か否かを自動ビルド結果格納部に格納する工程と、前記自動ビルド結果格納部に格納したビルド結果が成功したソースコードに最新以外のソースコードが含まれているか否かを判定する工程と、前記判定工程によって最新以外のソースコードが含まれていると判定したとき、前記自動ビルド結果格納部に格納した自動ビルド結果を失敗に更新する工程と、前記判定工程によって最新以外のソースコードが含まれていないと判定したとき、テストを続行する工程とを実行する自動ビルドシステム。
【請求項２】
前記判定工程によって最新以外のソースコードが含まれていないと判定したとき、前記自動ビルド結果格納部から失敗したソースコードが最後に自動ビルドに成功したバージョンを取得する工程と、前記取得したバージョンの失敗したソースコード及び依存している全ソースコードをシステムバージョン管理部から取得する工程と、前記取得したソースコードを用いて再ビルドを行う工程とを実行することによって、テストを続行する請求項１記載の自動ビルドシステム。
【請求項３】
開発マシン上で実行するソフトウェアを構成するソースコードのバージョンを管理するためのバージョン管理部と、開発マシンのソフトウェアのビルド及びテストを実行するコンパイルテスト実行部と、前記ソースコード間の依存関係を判定するための依存関係判定部と、前記コンパイルテスト実行部によるビルド及びテスト結果を格納するビルド結果格納部とを備え、前記ソースコードのコンパイルやライブラリのリンクなどを行ない、実行可能なソフトウェアファイルを作成するビルド及び前記作成した実行可能ファイルのテストを実行するコンピュータの自動ビルド方法であって、前記依存関係判定部に、前記バージョン管理部から最新の全ソースコードとバージョンを取得する工程と、前記取得したソースコードに対して字句解析を行い、ソースコードの依存関係を示す依存関係情報を作成する工程とを実行させ、前記コンパイルテスト実行部に、前記依存関係判定部によって作成したソースコードの依存関係に基づいてビルド及びテストを実施する工程と、前記実施したビルド及びテスト結果が成功か否かを自動ビルド結果格納部に格納する工程と、前記自動ビルド結果格納部に格納したビルド結果が成功したソースコードに最新以外のソースコードが含まれているか否かを判定する工程と、前記判定工程によって最新以外のソースコードが含まれていると判定したとき、前記自動ビルド結果格納部に格納した自動ビルド結果を失敗に更新する工程と、前記判定工程によって最新以外のソースコードが含まれていないと判定したとき、テストを続行する工程とを実行させる自動ビルド方法。
【請求項４】
前記判定工程によって最新以外のソースコードが含まれていないと判定したとき、前記自動ビルド結果格納部から失敗したソースコードが最後に自動ビルドに成功したバージョンを取得する工程と、前記取得したバージョンの失敗したソースコード及び依存している全ソースコードをシステムバージョン管理部から取得する工程と、前記取得したソースコードを用いて再ビルドを行う工程とを実行させることによって、テストを続行する請求項３記載の自動ビルド方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムバージョン管理システムと連動してソースコードから成るソフトウェアを自動的に構成する自動ビルドシステム及び自動ビルド方法に係り、特にソフトウェアの自動構成が失敗した場合にもテストを継続することができる自動ビルドシステム及び自動ビルド方法に関する。
【背景技術】
【０００２】
一般にコンピュータシステムのソフトウェアの開発においては、ソースコードのコンパイルやライブラリのリンクなどを行ない、最終的な実行可能ファイルを作成するビルド（ｂｕｉｌｄ）及び作成した実行可能ファイルのテストを自動的に行うツールが使用され、これは自動ビルドツールと呼ばれている。この実行可能ファイルのテストは、作成したソフトウェアの仕様が妥当であること及び仕様とおりに実装していることを確認するための工程である。このテスト工程において、バグが発見されると、該当箇所の作り直し及び影響範囲のテストのやり直しが必要となる。そこで、自動ビルドツールは、テストを早い段階から実施し、修正の手戻りを小さくする必要があり、このテスト工程を削減に関する技術が記載された文献としては、下記の特許文献１が挙げられ、この特許文献１には、スタブ（ｓｔｕｂ）と呼ばれる仲介プログラムを使用することでユニットテストの繁雑さを取り除き、テスト工数の削減を図る技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−９３４６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１記載の技術は、エラーがないソフトウェアをテストする際にはスタブを使用することによってテスト工数を削減することができるものの、テストが失敗した場合、実行されずに残ったテストで発見されるバグは、テスト失敗の原因を解消したテストのときに発見されるため、テスト失敗時に得られる結果は部分的なものになって複数回テスト実行を行う必要があるため、テスト工数を逆に増加してしまうという課題があった。
【０００５】
本発明の目的は、前述の従来技術による課題を解決しようとするものであり、１回の自動ビルドの実行によってテストを完遂することができる自動ビルドシステム及び自動ビルド方法を提供することである。
【課題を解決するための手段】
【０００６】
前記目的を達成するために請求項１記載の本発明は、開発マシン上で実行するソフトウェアを構成するソースコードのコンパイルやライブラリのリンクなどを行ない、実行可能なソフトウェアファイルを作成するビルド及び前記作成した実行可能ファイルのテストをコンピュータによって実行する自動ビルドシステムであって、前記ソースコードのバージョンを管理するためのバージョン管理部と、開発マシンのソフトウェアのビルド及びテストを実行するコンパイルテスト実行部と、前記ソースコード間の依存関係を判定するための依存関係判定部と、前記コンパイルテスト実行部によるビルド及びテスト結果を格納するビルド結果格納部とを備え、前記依存関係判定部が、前記バージョン管理部から最新の全ソースコードとバージョンを取得する工程と、前記取得したソースコードに対して字句解析を行い、ソースコードの依存関係を示す依存関係情報を作成する工程とを実行し、前記コンパイルテスト実行部が、前記依存関係判定部によって作成したソースコードの依存関係に基づいてビルド及びテストを実施する工程と、前記実施したビルド及びテスト結果が成功か否かを自動ビルド結果格納部に格納する工程と、前記自動ビルド結果格納部に格納したビルド結果が成功したソースコードに最新以外のソースコードが含まれているか否かを判定する工程と、前記判定工程によって最新以外のソースコードが含まれていると判定したとき、前記自動ビルド結果格納部に格納した自動ビルド結果を失敗に更新する工程と、前記判定工程によって最新以外のソースコードが含まれていないと判定したとき、テストを続行する工程とを実行することを特徴とする。
【０００７】
請求項２記載の発明は、前記特徴の自動ビルドシステムにおいて、前記判定工程によって最新以外のソースコードが含まれていないと判定したとき、前記自動ビルド結果格納部から失敗したソースコードが最後に自動ビルドに成功したバージョンを取得する工程と、前記取得したバージョンの失敗したソースコード及び依存している全ソースコードをシステムバージョン管理部から取得する工程と、前記取得したソースコードを用いて再ビルドを行う工程とを実行することによって、テストを続行することを第２の特徴とする。
【０００８】
請求項３記載の発明は、開発マシン上で実行するソフトウェアを構成するソースコードのバージョンを管理するためのバージョン管理部と、開発マシンのソフトウェアのビルド及びテストを実行するコンパイルテスト実行部と、前記ソースコード間の依存関係を判定するための依存関係判定部と、前記コンパイルテスト実行部によるビルド及びテスト結果を格納するビルド結果格納部とを備え、前記ソースコードのコンパイルやライブラリのリンクなどを行ない、実行可能なソフトウェアファイルを作成するビルド及び前記作成した実行可能ファイルのテストを実行するコンピュータの自動ビルド方法であって、前記依存関係判定部に、前記バージョン管理部から最新の全ソースコードとバージョンを取得する工程と、前記取得したソースコードに対して字句解析を行い、ソースコードの依存関係を示す依存関係情報を作成する工程とを実行させ、前記コンパイルテスト実行部に、前記依存関係判定部によって作成したソースコードの依存関係に基づいてビルド及びテストを実施する工程と、前記実施したビルド及びテスト結果が成功か否かを自動ビルド結果格納部に格納する工程と、前記自動ビルド結果格納部に格納したビルド結果が成功したソースコードに最新以外のソースコードが含まれているか否かを判定する工程と、前記判定工程によって最新以外のソースコードが含まれていると判定したとき、前記自動ビルド結果格納部に格納した自動ビルド結果を失敗に更新する工程と、前記判定工程によって最新以外のソースコードが含まれていないと判定したとき、テストを続行する工程とを実行させることを第３の特徴とする。
【０００９】
請求項４記載の発明は、前記特徴の自動ビルド方法において、前記判定工程によって最新以外のソースコードが含まれていないと判定したとき、前記自動ビルド結果格納部から失敗したソースコードが最後に自動ビルドに成功したバージョンを取得する工程と、前記取得したバージョンの失敗したソースコード及び依存している全ソースコードをシステムバージョン管理部から取得する工程と、前記取得したソースコードを用いて再ビルドを行う工程とを実行させることによって、テストを続行することを第４の特徴とする。
【発明の効果】
【００１０】
本発明による自動ビルドシステム及び自動ビルド方法は、依存関係判定部が、バージョン管理部から最新の全ソースコードとバージョンを取得する工程と、この取得したソースコードの依存関係を示す依存関係情報を作成する工程と、コンパイルテスト実行部が、前記作成したソースコードの依存関係に基づいてビルド及びテストを実施する工程と、この実施したビルド及びテスト結果が成功か否かを自動ビルド結果格納部に格納する工程と、この格納したビルド結果が成功したソースコードに最新以外のソースコードが含まれているか否かを判定する工程と、この判定工程によって最新以外のソースコードが含まれていると判定したとき、自動ビルド結果格納部に格納した自動ビルド結果を失敗に更新する工程と、前記判定工程によって最新以外のソースコードが含まれていないと判定したとき、テストを続行することによって、テストを完遂することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態による自動ビルドシステムの全体構成を示す図
【図２】本発明の実施形態による依存関係判定処理のフローを示す図
【図３】本発明の実施形態によるビルド及びテスト処理のフローフローを示す図
【図４】本発明の実施形態による失敗時処理のフローフローを示す図
【図５】本発明の実施形態による自動ビルド結果格納情報を示す図
【発明を実施するための形態】
【００１２】
以下、本発明による自動ビルドシステム及び自動ビルド方法の一実施形態を図面を参照して詳細に説明する。本実施形態による自動ビルドプログラムを実行するコンピュータシステムである自動ビルドシステムは、図１に示す如く、ソフトウェアを実行する開発マシン１２１のソースコードのバージョンを管理するためのシステムバージョン管理部１０１を含むバージョン管理マシン１００と、前記開発マシン１２１のソフトウェアのビルド及びテストを実行するコンパイルテスト実行部１１３及びソースコード間の依存関係を判定するための依存関係判定部１１２を含む自動ビルドマシン１１０と、この自動ビルドマシン１１０のビルド及びテスト結果である自動ビルド結果格納情報を格納する自動ビルド結果格納部１１４と、図示しない制御部とを備え、複数人の開発者が各開発マシン１２１を使って１つのシステムを開発し、バージョン管理マシン１００にあるシステムバージョン管理部１０１を使用してソースコードを管理するように構成されている。前記自動ビルド結果格納部１１２に格納する自動ビルド結果格納情報は、図５に示す如く、データ識別子である「ＩＤ」と、ソースコード名を示す「ｓｏｕｒｃｅ＿ｃｏｄｅ」と、ソースコードのバージョン番号を示す「ｖｅｒｓｉｏｎ」と、成功・後退・ビルド失敗・テスト無効・テスト失敗等の自動ビルド結果を示す「ｒｅｓｕｉｔ」の各項目とから構成される。
【００１３】
このように構成された自動ビルドシステムは、まず、依存関係判定部１１２が、システムバージョン管理部１０１から取得したソースコードを解析するコンポーネントである開発マシン１２１に対し、システムバージョン管理部１０１から最新の全ソースコードとバージョンを取得するステップ２０１と、この取得したソースコードの数だけ処理を行うステップ２０２と、選択したソースコードに対して字句解析を行い、ソースコードの依存関係を示す依存関係情報を作成するテップ２０３とを実行することによって、ソースコードの依存関係を格納する。
【００１４】
次いで、本実施形態による自動ビルドシステムは、コンパイルテスト実行部１１３が、前記依存関係判定部１１２で作成したソースコードの依存関係を基にビルド及びテストを実施する。このビルド及びテストは、図３に示す如く、選択したソースコードをビルドし、結果が成功か否かを判定するステップ３０２と、このステップ３０２において失敗と判定したとき、失敗処理を行うステップ３０３と、自動ビルド結果格納部にビルド失敗の結果を保存するステップ３０４と、前記ステップ３０２において成功と判定したとき、ビルドが成功したものが最新のソースコードによって作られたものかを判定するステップ３０５と、このステップ３０５において、最新以外のソースコードが含まれていると判定したとき、自動ビルド結果格納部にテスト無効の結果を保存するステップ３０６と、前記ステップ３０５において、最新以外のソースコードが含まれていない（最新のソースコードで記載）と判定したとき、テストを続行して実行するステップ３０７と、このステップ３０７においてビルドが成功したと判定したときに自動ビルド結果格納部にテスト成功の結果を保存するステップ３０８と、前記ステップ３０７においてビルドが失敗したと判定したとき、失敗処理を行うステップ３０９と、自動ビルド結果格納部にビルド失敗の結果を保存するステップ３１０と、前記ステップ３０２からステップ３１０の処理を取得したソースコードの数だけ繰り返して処理を行うステップ３０１及び３１１とを実行し、最後に自動ビルドに成功したバージョンのソースコードのビルドを行うことによって、テスト失敗時でもテストを一度で完遂することができる。
【００１５】
前記自動ビルドに成功したバージョンのソースコードのビルドを行う処理は、図４に示す如く、前記自動ビルド結果格納部１１４から失敗したソースコードが最後に自動ビルドに成功したバージョンを取得するステップ４０１と、このステップ４０１で取得したバージョンの失敗したソースコード及び依存している全ソースコードをシステムバージョン管理部１０１から取得するステップ４０２と、この取得したソースコードで改めてビルドを行うステップ４０３と、取得したソースコードに対して自動ビルド結果格納部１１４に後退の結果を、旧データに上書きを行うのではなく、別データとして保存するステップ４０４とを実行する。
【００１６】
前記自動ビルド結果格納部１１４に保存されている自動ビルド結果は、図５の内容を含み、１つのソースコードは、１回のビルドで少なくとも１つのデータは保存され、このビルド結果は、「成功」は、ビルドからテストまで最新のソースコードで行えた事を表し、「後退」は、自動ビルドツールが自動ビルドを行うことによって提供する動くシステムに最新のソースコードではなく昔のソースコードでビルドされていることを表し、「ビルド失敗」は、このソースコードを含めたビルドを行ったときに失敗したことを表し、「テスト無効」は、依存しているソースコードの自動ビルド結果に後退があるため、テスト実行を行わなかったことを表し、「テスト失敗」は、最新ソースコードでテスト実行を行い、テストに失敗したことを表すものである。
【００１７】
以上述べた如く本実施形態による自動ビルドシステム及び自動ビルド方法は、自動ビルド結果を自動ビルド結果格納部１１４に格納しておき、最後に自動ビルドが成功したバージョンを特定してビルドを成功させると共に、自動ビルドの失敗の直接的原因を知ることもできる。
【００１８】
すなわち、本実施形態による自動ビルドシステム及び自動ビルド方法は、自動ビルド結果を自動ビルド結果格納部１１４に格納することによって、変更を行った複数のソースコードを取り込んだビルド及びテストを行う場合に、ある変更点が原因でビルドやテストが失敗しても、過去にテストまで成功したバージョンのソースコードに置き換えることによって、一度の実行で変更に対して依存関係のない部分のテストを完遂することができる。また、詳細なビルド結果が保存されているため、今回の自動ビルドの失敗した直接的原因が分かり、比較的軽度の失敗であれば、変更を最大限追加した動くシステムを提供することができる。
【産業上の利用可能性】
【００１９】
本発明による自動ビルドシステム及び自動ビルド方法は、大規模開発で各メンバーが開発した部分のユニットテスト完了後のソースコードを結合する際に、ビルド失敗により他のビルドが行えない場合を防ぐことに利用できる。また、アジャイル開発では、常に動くものを顧客に見せることを目標として掲げており、ソースコードのコミットごとにビルド及びテストを行う。この場面でも本発明は、コミットによる新たな変更を最大限追加したシステムを顧客に見せることに利用できる。
【符号の説明】
【００２０】
１００  バージョン管理マシン、１０１  システムバージョン管理部、
１１０  自動ビルドマシン、１１２  依存関係判定部、
１１２  自動ビルド結果格納部、１１３  コンパイルテスト実行部、
１１４  自動ビルド結果格納部、１２１  開発マシン
【図１】
2012093879.tif 000003
【図２】
2012093879.tif 000004
【図３】
2012093879.tif 000005
【図４】
2012093879.tif 000006
【図５】
2012093879.tif 000007