IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ コニカミノルタ株式会社の特許一覧

特開2024-171273ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラム
<>
  • 特開-ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラム 図1
  • 特開-ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラム 図2
  • 特開-ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラム 図3
  • 特開-ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラム 図4
  • 特開-ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラム 図5
  • 特開-ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラム 図6
  • 特開-ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラム 図7
  • 特開-ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラム 図8
  • 特開-ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラム 図9
  • 特開-ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラム 図10
  • 特開-ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラム 図11
  • 特開-ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラム 図12
  • 特開-ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラム 図13
  • 特開-ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラム 図14
  • 特開-ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラム 図15
  • 特開-ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラム 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024171273
(43)【公開日】2024-12-11
(54)【発明の名称】ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラム
(51)【国際特許分類】
   G06F 8/20 20180101AFI20241204BHJP
   G06Q 10/04 20230101ALI20241204BHJP
【FI】
G06F8/20
G06Q10/04
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023088258
(22)【出願日】2023-05-29
(71)【出願人】
【識別番号】000001270
【氏名又は名称】コニカミノルタ株式会社
(74)【代理人】
【識別番号】100108523
【弁理士】
【氏名又は名称】中川 雅博
(72)【発明者】
【氏名】大羽 伸
【テーマコード(参考)】
5B376
5L010
5L049
【Fターム(参考)】
5B376BA02
5B376BA14
5B376BC54
5B376BC57
5B376EA17
5L010AA04
5L049AA04
(57)【要約】
【課題】 ソフトウエアをビルドする時間およびビルドのためのコストを抑制すること。
【解決手段】 ソフトウエアビルドシステムは、ソフトウエアに定められた納期を取得する納期取得部35と、仮想サーバを供給するサービスから提供される仮想サーバとソフトウエアとを関連付ける関連付部41と、ソフトウエアに関する情報に基づいて、仮想サーバの性能を決定する性能決定部37と、を備える。
【選択図】 図5
【特許請求の範囲】
【請求項1】
ソフトウエアに定められた納期を取得する納期取得手段と、
仮想サーバを供給するサービスから提供される前記仮想サーバと前記ソフトウエアとを関連付ける関連付け手段と、
前記ソフトウエアに関する情報に基づいて、前記仮想サーバの性能を決定する性能決定手段と、を備えたソフトウエアビルドシステム。
【請求項2】
前記性能決定手段は、前記ソフトウエアの納期までの期間が短いほど、前記仮想サーバの性能を高くする、請求項1に記載のソフトウエアビルドシステム。
【請求項3】
前記ソフトウエアの納期は、変更不可能な第1種類の納期と、変更可能な第2種類の納期とを含み、
前記性能決定手段が単位期間あたりに上昇させる性能の差は、前記ソフトウエアに前記第2種類の納期が定められている場合よりも前記第1種類の納期が定められている場合の方が大きい、請求項2に記載のソフトウエアビルドシステム。
【請求項4】
前記性能決定手段が単位期間あたりに上昇させる性能の差は、前記ソフトウエアを構成するソースファイルの数またはサイズが大きいほど大きい、請求項2または3に記載のソフトウエアビルドシステム。
【請求項5】
前記性能決定手段が単位期間あたりに上昇させる性能の差は、前記ソフトウエアが有するバグの密度が高いほど大きい、請求項2または3に記載のソフトウエアビルドシステム。
【請求項6】
前記仮想サーバにより前記ソフトウエアがビルドされた履歴を記憶する履歴記憶手段を、さらに備え、
前記性能決定手段が単位期間あたりに上昇させる性能の差は、前記ソフトウエアがビルドされた時間が長いほど大きい、請求項2または3に記載のソフトウエアビルドシステム。
【請求項7】
前記ソフトウエアが複数の開発者により開発される場合、前記性能決定手段が単位期間あたりに上昇させる性能の差は、前記複数の開発者の数が多いほど大きい、請求項2または3に記載のソフトウエアビルドシステム。
【請求項8】
前記性能決定手段は、前記仮想サーバの性能の程度が異なる複数の性能レベルのうちから1つを決定し、前記仮想サーバの性能を、決定された前記性能レベルで定まる性能とする変更を前記サービスに依頼する、請求項1~3のいずれかに記載のソフトウエアビルドシステム。
【請求項9】
ソフトウエアに定められた納期を取得する納期取得ステップと、
仮想サーバを供給するサービスから提供される前記仮想サーバと前記ソフトウエアとを関連付ける関連付けステップと、
前記ソフトウエアに関する情報に基づいて、前記仮想サーバの性能を決定する性能決定ステップと、を含む、ソフトウエア開発支援方法。
【請求項10】
ソフトウエアに定められた納期を取得する納期取得ステップと、
仮想サーバを供給するサービスから提供される前記仮想サーバと前記ソフトウエアとを関連付ける関連付けステップと、
前記ソフトウエアに関する情報に基づいて、前記仮想サーバの性能を決定する性能決定ステップと、をコンピューターに実行させるソフトウエア開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ソフトウエアビルドシステム、ソフトウエア開発支援方法およびソフトウエア開発支援プログラムに関し、特に、仮想サーバを用いてソフトウエアをビルドするソフトウエアビルドシステム、仮想サーバを用いたソフトウエアのビルドを支援するソフトウエア開発支援方法、そのソフトウエア開発支援方法をコンピュータに実行させるソフトウエア開発支援プログラムに関する。
【背景技術】
【0002】
ソフトウエアを開発する場合に、そのバージョンを管理するためにソフトウエアのソースファイルや編集履歴がリポジトリに格納され、ソフトウエアの開発が効率化される。このリポジトリに格納された情報を利用して複数のソフトウエアをビルドする順番を調整する技術が知られている。例えば、特開2017-215762号公報には、設計者がコミットしたソースコードと、開発テーマ管理システムに登録されたビルド優先度と、障害管理システムに登録された対策優先度とに基づいて、コンパイルサーバ群にソフトウエアのビルド依頼を行うソフトウエアのビルドシステムが記載されている。
【0003】
しかしながら、特開2017-215762号公報に記載のソフトウエアのビルドシステムにおいては、優先度の高いソフトウエアが優先度が低いソフトウエアよりも優先してビルドされる。このため、優先度の低いソフトウエアをビルドする時期が遅れるといった問題がある。このため、ビルドサーバの性能を高くして、ソフトウエアのビルドに費やされる時間を短くすることが望まれる。
【0004】
ソフトウエアのビルドに費やされる時間を短くするためには、性能の高いビルドサーバを用いる必要があるが、ビルドサーバが高額になってしまう。近年、クラウド上に仮想サーバを生成するサービスが知られている。このサービスを利用すれば、ソフトウエアのビルドごとに仮想サーバを生成することができるが、仮想サーバをビルドサーバとして使用するために、仮想サーバにビルド環境を設定する作業が必要になり、作業が煩雑になるといった問題がある。この問題に対応するためのサービスとして、ビルド環境が設定された仮想サーバを複製した別の仮想サーバを提供するサービスがある。このサービスを利用することにより、ビルド環境を設定する作業が必要なくなる。
【0005】
一方で、サービスの提供を受けるための費用は、仮想サーバの性能の違いによって異なってくる。仮想サーバの料金は、性能が高いほど高額になる。先にビルド環境が設定された仮想サーバの性能によって、それから複製された仮想サーバの料金が定まる。しかしながら、仮想サーバに要求される性能は、ソフトウエアの開発段階、納期等の種々の要因により異なってくるので、最初に生成する仮想サーバの性能を定めることは困難である。費用を押さえようとすれば仮想サーバの性能が低くなるのでビルドに費やされる時間が長くなり効率的に開発することができない場合があるといった問題がある。逆に、仮想サーバの性能を高くすれば、効率的に開発できるが費用が高くなるといった問題がある。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2017-215762号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
この発明は上述した問題点を解決するためになされたもので、この発明の目的の1つは、ソフトウエアをビルドする時間およびビルドのためのコストを抑制したソフトウエアビルドシステムを提供することである。
【0008】
この発明の他の目的は、ソフトウエアをビルドする時間およびビルドのためのコストを抑制したソフトウエア開発支援方法を提供することである。
【0009】
この発明のさらに他の目的は、ソフトウエアをビルドする時間およびビルドのためのコストを抑制したソフトウエア開発支援プログラムを提供することである。
【課題を解決するための手段】
【0010】
この発明のある局面によれば、ソフトウエアビルドシステムは、ソフトウエアに定められた納期を取得する納期取得手段と、仮想サーバを供給するサービスから提供される仮想サーバとソフトウエアとを関連付ける関連付手段と、ソフトウエアに関する情報に基づいて、仮想サーバの性能を決定する性能決定手段と、を備える。
【0011】
この発明の他の局面によれば、ソフトウエア開発支援方法は、ソフトウエアに定められた納期を取得する納期取得ステップと、仮想サーバを供給するサービスから提供される仮想サーバとソフトウエアとを関連付ける関連付けステップと、ソフトウエアに関する情報に基づいて、仮想サーバの性能を決定する性能決定ステップと、を含む。
【0012】
この発明のさらに他の局面によれば、ソフトウエア開発支援プログラムは、ソフトウエアに定められた納期を取得する納期取得ステップと、仮想サーバを供給するサービスから提供される仮想サーバとソフトウエアとを関連付ける関連付けステップと、ソフトウエアに関する情報に基づいて、仮想サーバの性能を決定する性能決定ステップと、をコンピュータに実行させる。
【図面の簡単な説明】
【0013】
図1】本実施の形態におけるソフトウエアビルドシステムの全体概要の一例を示す図である。
図2】ビルド環境管理サーバのハードウエア構成の一例を示すブロック図である。
図3】ソフトウエアビルドシステムにおけるソフトウエアのビルドの手順を示す第1のシーケンス図である。
図4】ソフトウエアビルドシステムにおけるソフトウエアのビルドの手順を示す第2のシーケンス図である。
図5】ビルド環境管理サーバが備えるCPUが有する機能の一例を示すブロック図である。
図6】管理者ビルド指示画面の一例を示す図である。
図7】再生指示画面の一例を示す図である。
図8】開発者ビルド指示画面の一例を示す図である。
図9】バージョン管理テーブルの一例を示す図である。
図10】ビルド履歴テーブルの一例を示す図である。
図11】性能レベルテーブルの一例を示す図である。
図12】性能レベルと納期との関係の一例を示すグラフである。
図13】仮想サーバ生成処理の流れの一例を示すフローチャートである。
図14】仮想サーバ再生処理の流れの一例を示すフローチャートである。
図15】性能決定処理の流れの一例を示すフローチャートである。
図16】上昇率決定処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【0014】
以下、本発明の実施の形態におけるソフトウエアビルドシステムについて図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰り返さない。
【0015】
図1は、本実施の形態におけるソフトウエアビルドシステムの全体概要の一例を示す図である。ソフトウエアビルドシステム1は、ビルド環境管理サーバ100、サービス提供サーバ200、バージョン管理サーバ201、納期管理サーバ202、管理者PC300および開発者PC300A~300Cを含む。
【0016】
ビルド環境管理サーバ100、サービス提供サーバ200、バージョン管理サーバ201、納期管理サーバ202、管理者PC300および開発者PC300A~300Cは、ネットワーク5に接続され、互いに通信可能である。ネットワーク5は、インターネットである。なお、ネットワーク5は、インターネットに限られず、ワイドエリアネットワーク(WAN)、公衆交換電話網(PSTN)、ローカルエリアネットワーク等であってもよい。ビルド環境管理サーバ100、サービス提供サーバ200、バージョン管理サーバ201、納期管理サーバ202、管理者PC300および開発者PC300A~300Cのネットワーク5への接続形態は、有線または無線を問わない。
【0017】
ビルド環境管理サーバ100、バージョン管理サーバ201および納期管理サーバ202は、一般的なコンユータであり、その構成は周知なのでここでは説明を繰り返さない。
【0018】
サービス提供サーバ200は、仮想サーバを供給するサービスを提供する事業者により管理されるコンピュータである。ユーザーは、事業者に登録することにより、サービス提供サーバ200が提供するサービスを利用することが可能になる。
【0019】
バージョン管理サーバ201は、ソフトウエアのバージョンを管理するバージョン管理プログラムを実行し、バージョン管理システムを実現する。バージョン管理サーバ201は、ソースコードの変更履歴を管理する機能を有する。バージョン管理サーバ201は、リポジトリを有し、ソフトウエアのバージョンごとに、ソースコード、オブジェクトプログラム、変更履歴、関連するドキュメントを保存する。
【0020】
納期管理サーバ202は、ソフトウエアの納期を管理する。納期管理サーバ202は、ソフトウエアごとに納期を定める。ソフトウエアの納期は、ソフトウエアの販売担当者が、顧客との間で取り決めた期日であり、販売担当者により納期管理サーバ202にソフトウエアに関連付けて登録される。この納期には、第1種類の納期と、第2種類の納期と、が定められる。第1種類の納期は、延長することのできない納期である。第2種類の納期は、延長することが可能な納期である。第1種類の納期と第2種類の納期とは、例えば、販売担当者が顧客との間で取り決めた納期であり、販売担当者により納期管理サーバ202にソフトウエアに関連付けて登録される。1つのソフトウエアに対して第1種類の納期と、第2種類の納期のいずれか一方、または両方が設定される。
【0021】
管理者PC300および開発者PC300A~300Cそれぞれは、一般的なパーソナルコンピュータである。ここでは、開発者PC300A~300Cを3台である例を示すが、台数を制限するものではない。開発者PC300Aは、1台以上であればよい。
【0022】
本実施の形態において、管理者と、3人の開発者A~Cがソフトウエアを開発するチームに属する場合を例に説明する。管理者は管理者PC300を操作し、開発者A~Cがそれぞれ開発者PC300A~300Cを操作する場合を例に説明する。
【0023】
図2は、ビルド環境管理サーバのハードウエア構成の一例を示すブロック図である。図2を参照して、ビルド環境管理サーバ100は、演算処理を行うコンピュータであり、ビルド環境管理サーバ100の全体を制御するための中央演算装置(CPU)101と、CPU101が実行するためのプログラムを記憶するROM(Read Only Memory)102と、CPU101の作業領域として使用されるRAM(Random Access Memory)103と、データを不揮発的に記憶するHDD104と、CPU101をネットワークに接続する通信部105と、情報を表示する表示部106と、ユーザーの操作の入力を受け付ける操作部107と、外部記憶装置108と、を含む。
【0024】
通信部105は、PC200Aをネットワーク5に接続するためのインターフェースである。このため、CPU101は、通信部105を介して、ネットワーク5に接続されたサービス提供サーバ200、バージョン管理サーバ201、納期管理サーバ202、管理者PC300および開発者PC300A~300Cと通信可能である。
【0025】
CPU101は、ネットワーク5に接続されたコンピュータからプログラムをダウンロードしてHDD104に記憶する。また、ネットワーク5に接続されたコンピュータがプログラムをHDD104に書込みする場合に、HDD104にプログラムが記憶される。CPU101は、HDD104に記憶されたプログラムをRAM103にロードして実行する。なお、HDD104に代えて、データを不揮発的に記憶可能なEPROM(Erasable Programmable ROM)等の半導体メモリが用いられてもよい。
【0026】
外部記憶装置108は、CD-ROM(Compact Disk Read Only Memory)109が装着される。本実施の形態においては、CPU101は、ROM102またはHDD104に記憶されたプログラムを実行する例を説明する。CPU101は、外部記憶装置108を制御して、CD-ROM109からCPU101が実行するためのプログラムを読出し、読み出したプログラムをRAM103に記憶して実行してもよい。
【0027】
なお、CPU101が実行するためのプログラムを記憶する記録媒体としては、CD-ROM109に限られず、フレキシブルディスク、カセットテープ、光ディスク(MO(Magnetic Optical Disc)/MD(Mini Disc)/DVD(Digital Versatile Disc))、ICカード、光カード、マスクROM、EPROM(Erasable Programmable ROM)等の半導体メモリ等の媒体でもよい。ここでいうプログラムは、CPU101により直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
【0028】
図3は、ソフトウエアビルドシステムにおけるソフトウエアのビルドの手順を示す第1のシーケンス図である。図3においては、管理者PC300、ビルド環境管理サーバ100、サービス提供サーバ200、バージョン管理サーバ201それぞれで実行される処理および送受信される情報が示される。図3においては、上から下に時間の経過が示される。また、開発者PC300A~300Cのいずれかで生成されたソースプログラムがバージョン管理サーバ201のリポジトリに保存されている例を説明する。
【0029】
図3を参照して、管理者が管理者PC300を操作して、ビルド環境管理サーバ100に仮想サーバの生成を指示する。生成指示は、仮想サーバの性能を定める性能情報を含む。性能情報は、限定するものではないが、CPU性能、メモリ性能、ストレージ性能およびネットワーク性能を少なくとも含む。CPU性能は、CPUのコア数および/または処理速度を含む。メモリ性能は、メインメモリのサイズ、転送速度を含む。ストレージ性能は、不揮発性メモリのサイズおよびハードウエアの種類を含む。ネットワーク性能は、通信能力を示し、データを送受信する速度を含む。
【0030】
ビルド環境管理サーバ100は、管理者から生成指示を受け付けることに応じて、サービス提供サーバ200に仮想サーバの生成を依頼する。この生成依頼は、生成指示で特定される性能情報を含む。サービス提供サーバ200は、生成依頼を受けることに応じて、生成依頼に含まれる性能情報で特定される性能の仮想サーバを生成する。これにより、サービス提供サーバ200に仮想サーバが形成される。
【0031】
管理者が管理者PC300を操作して、ビルド環境管理サーバ100にビルド環境の設定を指示する。ビルド環境の設定指示は、ビルド環境として仮想サーバにより用いられるツールを特定するツール情報を含む。ツール情報は、限定するものではないが、Toolchainを特定する情報である。Toolchainは、コンパイラ、リンカー、デバッガを含む。
【0032】
ビルド環境管理サーバ100は、管理者からのビルド環境の設定指示に応じて、サービス提供サーバ200に形成された仮想サーバにビルド環境を設定する。この設定指示は、ツール情報を含む。サービス提供サーバ200に形成された仮想サーバは、ビルド環境管理サーバ100から受け付けられる設定指示に従ってツール情報で特定されるToolchainを設定する。
【0033】
管理者が管理者PC300を操作して、ビルド環境管理サーバ100にソフトウエアのビルドを指示する。ここでのビルド指示を開発者ビルド指示という。開発者ビルド指示は、ビルド条件を含む。ビルド条件は、ビルドの対象となるソフトウエアを特定する情報と、そのソフトウエアのバージョンと、そのソフトウエアを構成するソースファイルが格納されるリポジトリを特定する情報と、を含む。ソースファイルは、ソースコードが記述されたデータである。
【0034】
ビルド環境管理サーバ100は、管理者ビルド指示に応じて、サービス提供サーバ200に形成された仮想サーバにフルビルドの実行を指示するコマンドを送信する。このコマンドは、ビルド条件を含む。サービス提供サーバ200に形成された仮想サーバは、コマンドを受信することに応じて、コマンドに含まれるビルド条件に従ってフルビルドを実行する。具体的には、仮想サーバは、ビルド条件で定められるソースファイルを、ビルド条件で定められるリポジトリから取得する。ここでは、バージョン管理サーバ201が有するリポジトリにソースファイルが格納されているので、サービス提供サーバ200に形成された仮想サーバは、バージョン管理サーバ201からソースファイルを取得する。そして、サービス提供サーバ200に形成された仮想サーバは、ソースファイルを用いてフルビルドする。
【0035】
サービス提供サーバ200に形成された仮想サーバは、ソースファイルを用いたフルビルドが完了すると、ビルド実績データをバージョン管理サーバ201に送信する。ビルド実績データは、オブジェクトファイル、ビルド時間、バグの数、エラーが発生した場合にはそのエラーに関するエラー情報を含む。
【0036】
バージョン管理サーバ201は、サービス提供サーバ200に形成された仮想サーバからビルド実績データを受信すると、ビルド実績データをリポジトリに格納する。これにより、ソフトウエアに関するビルド履歴が更新される。また、バージョン管理サーバ201は、オブジェクトファイルをリポジトリに保存する。
【0037】
一方、サービス提供サーバ200は、仮想サーバがフルビルドを実行し、ビルド実績情報をバージョン管理サーバ201に送信した後に、仮想マシンイメージを保存し、仮想サーバの電源をOFFにする。仮想マシンイメージは、ビルド環境が設定された仮想サーバのイメージであり、ビルド環境が設定された仮想サーバを起動するために必要な情報をまとめた起動テンプレートである。
【0038】
ビルド環境管理サーバ100は、サービス提供サーバ200から仮想マシンイメージを識別するためのマシンイメージ名を取得し、取得されたマシンイメージ名をHDD104に保存する。そして、ビルド環境管理サーバ100は、ビルドの対象となったソフトウエアを仮想マシンイメージと関連付ける。ソフトウエアを識別するためのソフトウエア名、バージョンおよびマシンイメージ名を関連付けた関連付データがHDD104に格納される。
【0039】
サービス提供サーバ200は、仮想サーバが生成されてから電源がOFFになるまでの使用時間をカウントしており、仮想サーバの性能に応じて定められる単位時間当たりの単価と、使用時間とから課金額を算出し、ビルド環境管理サーバ100に対して課金する。ビルド環境管理サーバ100は、サービス提供サーバ200に、サービス提供サーバ200が発行するIDを用いてアクセスする。サービス提供サーバ200は、アクセスのあったIDに対して課金する。このIDは、ビルド環境管理サーバ100により管理されてもよいし、管理者PC300を操作する管理者により管理されてもよい。
【0040】
図4は、ソフトウエアビルドシステムにおけるソフトウエアのビルドの手順を示す第2のシーケンス図である。図4においては、開発者PC300A、ビルド環境管理サーバ100、サービス提供サーバ200、バージョン管理サーバ201および納期管理サーバ202それぞれで実行される処理および送受信される情報が示される。図4においては、上から下に時間の経過が示される。また、開発者PC300A~300Cのいずれか、ここでは開発者PC300Aで生成されたソフトウエアを構成するソースファイルがバージョン管理サーバ201のリポジトリに保存されている例を説明する。
【0041】
図4を参照して、開発者Aが開発者PC300Aを操作して、ビルド環境管理サーバ100に仮想サーバの再生を指示する。再生指示は、マシンイメージ名を含む。図3において示したように、ビルド環境管理サーバ100は、ソフトウエア名と、そのソフトウエアのバージョンと、そのバージョンのソフトウエアをビルドするために生成され仮想サーバの仮想マシンイメージのマシンイメージ名とを関連付けている。このため、開発者PC300Aは、ビルド環境管理サーバ100からソースファイル名と、バージョンと、マシンイメージ名とを関連付けたテーブルを取得し、それを表示する。これにより、開発者Aは、自身が開発したバージョンのソフトウエアをビルドするための仮想サーバに対応するマシンイメージ名を特定することができる。また、開発者Aは、バージョン管理サーバ201により管理されているソフトウエアのバージョン履歴から、自身が開発したソフトウエアのバージョンを特定することができる。開発者Aがテーブルを参照して決定したマシンイメージ名を開発者PC300Aに入力することに応じて、開発者PC300Aは仮想サーバの再生指示をビルド環境管理サーバ100に送信する。
【0042】
ビルド環境管理サーバ100は、開発者Aからの再生指示に応じて、サービス提供サーバ200に仮想サーバの再生を依頼する。この仮想サーバの再生依頼は、再生指示に含まれるマシンイメージ名を含む。サービス提供サーバ200は、仮想サーバの再生依頼を受けることに応じて、マシンイメージ名で特定される仮想マシンイメージを用いて、ビルド環境が設定された仮想サーバを生成する。この仮想サーバは、図3を用いて説明したように、管理者により決定された性能を有し、管理者により設定されたビルド環境が設定されている。ビルド環境管理サーバ100は、サービス提供サーバ200により再生された仮想サーバを識別するための仮想サーバ名をサービス提供サーバ200から取得し、開発者PC300Aに送信する。これにより、開発者Aは、サービス提供サーバ200に形成された仮想サーバを特定することが可能となる。
【0043】
ビルド環境管理サーバ100は、ソフトウエアの納期を取得する。サービス提供サーバ200は、納期管理サーバ202からソフトウエアの納期を取得する。そして、ビルド環境管理サーバ100は、ビルド履歴を取得する。ビルド環境管理サーバ100は、バージョン管理サーバ201からソフトウエアに関連するビルド履歴を取得する。
【0044】
ビルド環境管理サーバ100は、仮想サーバの性能を決定する。ビルド環境管理サーバ100は、ソフトウエアの納期とビルド履歴とに基づいて仮想サーバの性能を決定する。そして、ビルド環境管理サーバ100は、ビルド環境管理サーバ100に形成された仮想サーバの性能を変更する指示をビルド環境管理サーバ100に送信する。この性能変更指示は、コマンドラインインターフェース(CLI)を用いて送信される。性能変更指示を受信するサービス提供サーバ200は、先に形成された仮想サーバの性能を性能変更指示で特定される性能に変更する。
【0045】
開発者Aが開発者PC300Aを操作して、ビルド環境管理サーバ100にソフトウエアのビルドを指示する。ここでのビルド指示を、開発者ビルド指示という。開発者ビルド指示は、仮想サーバ名を含む。
【0046】
ビルド環境管理サーバ100は、開発者PC300Aから開発者ビルド指示を受信することに応じて、ビルドの対象となるソフトウエアを特定する。本実施の形態において、仮想サーバ名がソフトウエア名およびバージョンを含んでいるので、仮想サーバ名に関連付けられたソフトウエア名およびバージョンとからビルドの対象となるソースファイルを特定する。なお、開発者がソフトウエアを指定してもよい。
【0047】
ビルド環境管理サーバ100は、サービス提供サーバ200に形成された仮想サーバにソフトウエアのビルドの実行を指示するコマンドを送信する。このコマンドは、ビルド条件を含む。サービス提供サーバ200に形成された仮想サーバは、コマンドを受信することに応じて、コマンドに含まれるビルド条件に従ってソフトウエアのビルドを実行する。具体的には、仮想サーバは、ビルド条件で定められるソフトウエアを構成するソースファイルを、ビルド条件で定められるリポジトリから取得する。ここでは、バージョン管理サーバ201が有するリポジトリにソースファイルが格納されているので、サービス提供サーバ200に形成された仮想サーバは、バージョン管理サーバ201からソースファイルを取得する。そして、サービス提供サーバ200に形成された仮想サーバは、ソースファイルを用いてビルドする。ビルド条件は、フルビルドと差分ビルドとの別を含む。仮想サーバは、ビルド条件でフルビルドが定められている場合には、ソースファイルを用いてフルビルドし、ビルド条件で差分ビルドが定められている場合には、ソースファイルを用いて差分ビルドする。
【0048】
サービス提供サーバ200に形成された仮想サーバは、ソフトウエアのビルドが完了すると、ビルド実績データをバージョン管理サーバ201に送信する。ビルド実績データは、オブジェクトファイル、ビルド時間、バグの数、エラーが発生した場合にはそのエラーに関するエラー情報を含む。
【0049】
バージョン管理サーバ201は、サービス提供サーバ200に形成された仮想サーバからビルド実績データを受信すると、ビルド実績データをリポジトリに格納する。これにより、ソースコードに関するビルド履歴が更新される。また、バージョン管理サーバ201は、オブジェクトファイルをリポジトリに保存する。
【0050】
一方、サービス提供サーバ200は、仮想サーバがソフトウエアのビルドを実行し、ビルド実績データをバージョン管理サーバ201に送信した後に、仮想サーバの電源をOFFにする。
【0051】
サービス提供サーバ200は、仮想サーバが生成されてから電源がOFFになるまでの使用時間をカウントしており、仮想サーバの性能に応じて定められる単位時間当たりの単価と、使用時間とから課金額を算出し、ビルド環境管理サーバ100に対して課金する。
【0052】
図5は、ビルド環境管理サーバが備えるCPUが有する機能の一例を示すブロック図である。図5に示す機能は、ビルド環境管理サーバ100が備えるCPU101が、ソフトウエア開発支援プログラムを実行することによりCPU101に実現される。また、ビルド環境管理サーバ100には、継続的インテグレーションツールがインストールされている。継続的インテグレーションツールは、ソフトウエアのビルドを自動的に実行するためのツールである。継続的インテグレーションツールの一例として、Jenkinsが挙げられる。このため、ビルド環境管理サーバ100は、サービス提供サーバ200にビルドサーバとして形成された仮想サーバと連携して、ソースファイルをビルドする処理を実行する。
【0053】
図5を参照して、ビルド環境管理サーバ100が備えるCPU101は、管理者指示受付部11と、ビルド環境生成部13と、管理者ビルド指示部15と、開発者指示受付部21と、仮想サーバ再生部23と、開発者ビルド指示部25と、関連付部41と、を含む。
【0054】
管理者指示受付部11は、通信部105を制御して、管理者PC300と通信する。管理者指示受付部11は、管理者が管理者PC300に入力する指示を管理者PC300から受信する。
【0055】
管理者指示受付部11は、仮想サーバの性能を入力するための性能入力画面を管理者PC300に送信し、管理者が性能入力画面に従って入力する性能を示す性能情報を管理者PC300から受信する。管理者指示受付部11は、性能情報をビルド環境生成部13に出力する。
【0056】
管理者指示受付部11は、仮想サーバに設定されるビルド環境を指定するための環境設定画面を送信し、管理者が環境設定面に従って入力するビルド環境情報を管理者PC300から受信する。ビルド環境情報は、ソフトウエアをビルドする処理を実行するために仮想サーバに設定される情報である。ビルド環境情報は、例えば、ツール情報およびバージョン管理サーバ201を指定する情報を含む。
【0057】
ビルド環境生成部13は、サービス提供サーバ200と通信し、サービス提供サーバ200が提供するサービスを利用する。ビルド環境生成部13は、仮想サーバ生成依頼部17と、ビルド環境設定部19と、を含む。仮想サーバ生成依頼部17は、管理者指示受付部11から性能情報が入力されることに応じて、サービス提供サーバ200に仮想サーバの生成を依頼する。例えば、ビルド環境生成部13は、CLIを用いて、仮想サーバを生成するコマンドを送信する。コマンドを受信するサービス提供サーバ200は、コマンドに含まれる性能情報で特定される性能を有する仮想サーバを生成し、ビルド環境管理サーバ100が利用可能な状態にする。
【0058】
ビルド環境生成部13は、管理者指示受付部11からビルド環境情報が入力されることに応じて、サービス提供サーバ200に形成された仮想サーバにビルド環境を設定する。例えば、ビルド環境生成部13は、サービス提供サーバ200に形成された仮想サーバを操作し、ビルド環境情報で特定されるビルド環境を仮想サーバに設定する。
【0059】
管理者指示受付部11は、管理者ビルド指示画面を管理者PC300に送信し、管理者PC300から管理者ビルド指示を受信する。
【0060】
図6は、管理者ビルド指示画面の一例を示す図である。図6を参照して、管理者ビルド指示画面は、ソースファイルのファイル名を入力する領域と、ソースファイルのバージョンを入力する領域と、リポジトリ情報を入力する領域と、フルビルドの文字列が表された実行指示ボタンと、を含む。管理者PC300は、ソースファイル名、ソースファイルのバージョンおよびリポジトリ情報それぞれが入力された状態で、実行指示ボタンが指示されると、管理者ビルド指示をビルド環境管理サーバ100に送信する。管理者ビルド指示は、ソースファイル名、ソースファイルのバージョン、およびソースファイルが格納されるリポジトリを特定するリポジトリ情報を含む。ここでは、ソフトウエアが1つのソースファイルで構成される場合を例に示している。したがって、図6におけるソースファイル名は、ソフトウエアを特定する情報である。
【0061】
図5に戻って、管理者指示受付部11は、管理者PC300から管理者ビルド指示を受信することに応じて、管理者ビルド指示を管理者ビルド指示部15に出力する。管理者ビルド指示部15は、管理者ビルド指示が入力されることに応じて、サービス提供サーバ200に形成された仮想サーバにビルドを指示する。具体的には、管理者ビルド指示部15は、管理者ビルド指示に含まれるソースファイル名およびバージョンで特定されるソースファイルを、リポジトリ情報で特定されるリポジトリから取得し、フルビルドする指示を仮想サーバに入力する。これにより、サービス提供サーバ200に形成された仮想サーバによりソースファイルがビルドされ、ビルド実績データが、リポジトリに格納される。管理者ビルド指示部15は、仮想サーバによるビルドが完了すると、関連付部41に完了指示を出力する。完了指示は、ソースファイル名を含む。
【0062】
関連付部41は、完了指示が入力されることに応じて、サービス提供サーバ200に、仮想サーバに対する仮想マシンイメージの保存と、仮想サーバの電源のOFFを指示する。サービス提供サーバ200は、仮想サーバの仮想マシンイメージを保存すると、その仮想マシンイメージを識別するためのマシンイメージ名を返信する。関連付部41は、仮想マシンイメージとソフトウエアとを関連付ける。具体的には、関連付部41は、マシンイメージ名とソースファイルのファイル名と、ソースファイルのバージョンと、を関連付けた関連付データを仮想サーバ再生部23に出力する。
【0063】
開発者指示受付部21は、通信部105を制御して、開発者PC300Aと通信する。開発者指示受付部21は、開発者Aが開発者PC300Aに入力する指示を管理者PC300から受信する。開発者指示受付部21は、再生指示画面を開発者PC300Aに送信し、開発者PC300Aから再生指示を受信する。
【0064】
図7は、再生指示画面の一例を示す図である。図7を参照して、再生指示画面は、マシンイメージ名を入力する領域と、案件番号を入力する領域と、生成の文字列が表された実行指示ボタンと、を含む。管理者PC300は、マシンイメージ名、案件番号が入力された状態で、実行指示ボタンが指示されると、再生指示をビルド環境管理サーバ100に送信する。再生指示は、マシンイメージ名および案件番号を含む。
【0065】
図5に戻って、管理者指示受付部11は、管理者PC300から再生指示を受信することに応じて、受信された再生指示を仮想サーバ再生部23に出力する。
【0066】
仮想サーバ再生部23は、再生指示が入力されることに応じて、サービス提供サーバ200に仮想サーバを生成する。仮想サーバ再生部23は、仮想サーバ再生依頼部31と、ビルド履歴取得部33と、納期取得部35と、性能決定部37と、性能変更依頼部39と、を含む。
【0067】
仮想サーバ再生依頼部31は、再生指示が入力されることに応じて、サービス提供サーバ200に仮想サーバの再生を依頼する。具体的には、仮想サーバ再生依頼部31は、再生指示に含まれるマシンイメージ名および案件番号を含み、仮想サーバを再生するコマンドを仮想サーバに入力する。これにより、サービス提供サーバ200は、マシンイメージ名で特定される仮想マシンイメージに基づいて仮想サーバを生成する。サービス提供サーバ200は、生成した仮想サーバを識別するための仮想サーバ名を返信する。この際、サービス提供サーバ200は、仮想サーバ名に案件番号を付加する。同一の仮想サーバが案件の数だけ生成される場合がある。仮想サーバ再生依頼部31は、仮想サーバ名を開発者PC300Aに送信する。このため、開発者Aは、サービス提供サーバ200に生成された仮想サーバの名称を認識することができる。
【0068】
ビルド履歴取得部33は、再生指示が入力されることに応じて、バージョン管理サーバ201からビルド履歴情報を取得する。ビルド履歴取得部33は、関連付部41から関連付データが入力される。関連付データは、マシンイメージ名とソースファイルのファイル名と、ソースファイルのバージョンと、を関連付ける。ビルド履歴取得部33は、再生指示に含まれるマシンイメージ名と関連付データにより関連付けられたソースファイル名およびバージョンを特定する。ビルド履歴取得部33は、ソースファイル名およびバージョンに対応するビルド実績データを、バージョン管理サーバ201から取得する。ビルド履歴取得部33は、ビルド実績データを性能決定部37に出力する。
【0069】
納期取得部35は、再生指示に含まれるマシンイメージ名と関連付データにより関連付けられたソースファイル名およびバージョンを特定する。納期取得部35は、ソースファイル名およびバージョンに対応する納期を、納期管理サーバ202から取得する。納期取得部35は、納期を性能決定部37に出力する。
【0070】
性能決定部37は、仮想サーバの性能を決定する。性能決定部37は、納期およびビルド実績データに基づいて仮想サーバの性能レベルを決定する。性能レベルおよび性能決定部37による性能レベルを決定する処理の詳細は後述する。性能決定部37は、決定された性能レベルを性能変更依頼部39に出力する。
【0071】
性能変更依頼部39は性能決定部37から入力される性能レベルで定まる性能に仮想サーバの性能の変更を指示するコマンドをサービス提供サーバ200に送信する。サービス提供サーバ200は、コマンドを受信することに応じて、仮想サーバの性能を変更する。
【0072】
開発者指示受付部21は、開発者ビルド指示画面を開発者PC300Aに送信し、開発者PC300Aから開発者ビルド指示を受信する。
【0073】
図8は、開発者ビルド指示画面の一例を示す図である。図8を参照して、開発者ビルド指示画面は、仮想サーバ名を入力する領域と、差分ビルドの文字列が表された差分ビルド実行指示ボタンと、フルビルドの文字列が表されたフルビルド実行指示ボタンと、を含む。
【0074】
開発者PC300Aは、仮想サーバ名が入力された状態で、差分ビルド実行指示ボタンおよびフルビルド実行指示ボタンのいずれかが指示されると、開発者ビルド指示をビルド環境管理サーバ100に送信する。管理者ビルド指示は、仮想サーバ名と、ビルド種類と、を含む。ビルド種類は、差分ビルドおよびフルビルドのいずれかを示す。
【0075】
図5に戻って、開発者指示受付部21は、開発者PC300Aから開発者ビルド指示を受信することに応じて、開発者ビルド指示を開発者ビルド指示部25に出力する。開発者ビルド指示部25は、開発者ビルド指示が入力されることに応じて、サービス提供サーバ200に形成された仮想サーバに差分ビルドおよびフルビルドのいずれかを指示する。開発者ビルド指示部25は、仮想サーバ再生部23から仮想サーバに対応するソースファイル名およびバージョンが入力される。開発者ビルド指示部25は、ソースファイル名およびバージョンで特定されるソースファイルを、リポジトリ情報で特定されるリポジトリから取得し、ビルドする指示を仮想サーバに入力する。これにより、サービス提供サーバ200に形成された仮想サーバによりソースファイルがビルドされ、ビルド実績データが、リポジトリに格納される。開発者ビルド指示部25は、仮想サーバによるビルドが完了すると、サービス提供サーバ200に、仮想サーバの電源のOFFを指示する。
【0076】
<ビルド履歴テーブルの生成>
ビルド履歴取得部33は、バージョン管理サーバ201から取得されたバージョン管理情報および納期管理サーバ202から取得された納期情報に基づいてバージョン管理テーブルを生成する。さらに、ビルド履歴取得部33は、バージョン管理テーブルと、バージョン管理サーバ201から取得されたビルド実績データに基づいて、ビルド履歴テーブルを生成する。
【0077】
図9は、バージョン管理テーブルの一例を示す図である。図9を参照して、バージョン管理テーブルは、複数のバージョン管理レコードを含む。バージョン管理レコードは、案件番号ごとに生成される。バージョン管理レコードは、案件番号の項目と、ソフトウエア名の項目と、バージョンの項目と、案件内容の項目と、開発規模の項目と、担当者の項目と、納期の項目と、必達納期の項目と、を含む。
【0078】
ソフトウエア名の項目は、開発の対象となるソフトウエアを識別するための情報が設定される。バージョンの項目は、ソフトウエア名の項目に設定されたソフトウエア名で特定されるソフトウエアのバージョンが設定される。ソフトウエア名とバージョンとの組み合わせによって、開発対象となるソフトウエアが特定される。案件内容の項目は、開発対象となるソフトウエアに対して開発者がソフトウエアを開発する内容が設定される。例えば、案件内容は、ソフトウエアの一部分を追加する場合は追加される部分を示し、ソフトウエアを改変する場合は改変される部分と改変の内容を示す。
【0079】
案件番号の項目は、ソフトウエア名、バージョンおよび案件内容の組に付される情報が設定される。開発規模の項目は、案件番号で特定されるソフトウエアの開発規模が設定される。開発規模は、ソースファイルのサイズ、または、ソースファイルの数、を含む。ここでは、開発規模を、大、中、小のいずれかとしている。例えば、予定されるプログラムの行数を閾値で3つに分類することにより、開発規模が定められる。
【0080】
担当者の項目は、案件番号の項目で特定されるソフトウエアの開発作業を担当する開発者を識別する情報が設定される。
【0081】
納期の項目は、案件番号で特定されるソフトウエアの第2種類の納期が設定される。第2種類の納期は、延長可能な期日が設定される。必達納期の項目は、案件番号で特定されるソフトウエアの第1種類の納期が設定される。必達納期の項目に設定される第1種類の納期は、延長不可能な期日が設定される。第2種類の納期は設定される場合と、設定されない場合と、がある。
【0082】
図9に示されるバージョン管理テーブルによれば、ソフトウエア名が製品AでバージョンがVer2のソフトウエアの開発を担当する開発者の数は2人であり、ソフトウエア名が製品BでバージョンがVer1のソフトウエアの開発を担当する開発者の数は1人である。
【0083】
図10は、ビルド履歴テーブルの一例を示す図である。図10を参照して、ビルド履歴テーブルは、ソフトウエアのビルドの実行に対してバージョン管理サーバ201により生成されるビルド実績データに対応するビルド履歴レコードを含む。
【0084】
ビルド履歴レコードは、案件番号の項目と、マシンイメージ名の項目と、仮想サーバの項目と、ビルド実績の項目と、を含む。案件番号の項目は、図9に示したバージョン管理テーブルの案件番号の項目に設定された情報が設定される。したがって、図9のソフトウエア名の項目およびバージョン項目に設定されたバージョンのソフトウエアに対するビルドに対してビルド履歴レコードが生成される。
【0085】
マシンイメージ名の項目には、管理者により生成されたビルド環境が設定された仮想サーバのマシンイメージを識別するためのマシンイメージ名が設定される。仮想サーバの項目は、名称の項目と、性能レベルの項目と、を含む。名称の項目には、サービス提供サーバ200によりマシンイメージから再生された仮想サーバの名称が設定される。性能レベルの項目には、仮想サーバの性能レベルが設定される。
【0086】
ビルド実績の項目は、バグ密度の項目と、ビルド時間履歴の項目と、を含む。バグ密度の項目は、仮想サーバによりビルドが実行された結果に発見されたバグの密度のレベルが設定される。ここでは、バグ密度のレベルを、高、中、低の3つのレベルとしている。バグ密度を、閾値で3つのレベルに分類することにより、バグ密度が定められる。
【0087】
ビルド時間履歴の項目は、仮想サーバがビルドを開始してから終了するまでの時間が設定される。ビルド時間履歴の項目に設定される時間は、直前のビルドに要した時間が設定されてもよいし、ビルドが複数回繰り返される場合には、累積時間が設定されてもよい。
【0088】
<性能レベルの決定>
性能決定部37は、性能レベルテーブルをHDD104に格納している。性能レベルテーブルは、仮想サーバの性能レベルと、仮想サーバの性能および料金との関係を定めるテーブルである。ここでは、性能レベルが高いほど仮想サーバの性能が高く料金が高いなる関係を定める。
【0089】
図11は、性能レベルテーブルの一例を示す図である。図11を参照して、性能レベルテーブルは、複数の性能レベルにそれぞれに対応する性能レベルレコードを含む。性能レベルレコードは、インスタンス名の項目と、性能レベルの項目と、仮想サーバの性能の項目と、料金の項目と、を含む。
【0090】
インスタンス名の項目は、サービス提供サーバ200により定められた仮想サーバの名称が設定される。性能レベルの項目は、予め定められた複数の性能レベルのいずれかが設定される。ここでは、性能レベルを1~100の100のレベルを定める例を説明する。図では、性能レベルがLv1、4,8,15,25,30,75および100の8つの例が示され、その他の性能レベルについての性能レベルレコードが省略されている。Lv100が最も高い性能レベルを示し、Lv1が最も低い性能レベルを示す。
【0091】
仮想サーバの項目は、CPU性能の項目と、メモリ性能の項目と、ストレージ性能の項目と、ネットワーク性能の項目と、を含む。CPU性能の項目は、仮想サーバのCPUの性能を示す値が設定される。本実施の形態においては、CPUの性能は、CPUのコア数としている。なお、CPUの性能は、処理速度が用いられてもよい。メモリ性能の項目は、メインメモリのサイズが設定される。ストレージ性能の項目は、不揮発性メモリのサイズが設定される。なお、ストレージ性能は、不揮発性メモリの種類が設定されてもよい。ネットワーク性能の項目は、通信速度が設定される。
【0092】
料金の項目は、サービス提供サーバ200が仮想サーバの性能の項目に設定された値の性能を有する仮想サーバを供給する際に、サービス提供サーバ200を管理する事業者から要求される料金が設定される。料金は、単位時間当たりの価格である。
【0093】
性能決定部37は、ビルドの対象となるソフトウエアの納期に基づいて性能レベルを決定する。性能決定部37は、現在の年月日と納期との間の期間が短いほど高い性能レベルを決定する。
【0094】
また、性能決定部37は、ビルドの対象となるソフトウエアに対してビルド実績データが存在する場合には、HDD104に格納されたビルド履歴テーブルを参照して、納期に加えてビルド実績データに基づいて性能レベルを決定する。ビルド実績データは、ビルド履歴時間、バグ密度を含む。性能決定部37は、ビルド時間が長いほど高い性能レベルを決定する。性能決定部37は、バグ密度が高いほど高い性能レベルを決定する。また、性能決定部37は、ビルドの対象となるソフトウエアの開発を担当する開発者の数が多いほど高い性能レベルを決定する。
【0095】
図12は、性能レベルと納期との関係の一例を示すグラフである。図12を参照して、横軸に納期までの期間を示し、縦軸に性能レベルを示す。図12においては、開発規模が小さく、開発者が1人でバグ密度が低い場合の納期と性能レベルとの関係を示す直線と、開発規模が大きく、開発者が3人でバグ密度が高い場合の納期と性能レベルとの関係を示す。2つの直線のいずれにおいても納期までの期間が短くなるほど性能レベルが高くなる。
【0096】
2つの直線の間の範囲に、開発規模、開発者数およびバグ密度が異なる場合における性能レベルを示す直線は、2つの直線の間の範囲に位置する。
【0097】
また、グラフの傾きは、上昇率を示す。上昇率は、単位期間当たりに上昇する性能の差を示す。性能の差は、単位時間の開始時点の性能レベルと、単位時間の終了時点の性能レベルとの差である。開発規模、開発者数およびバグ密度が高いほど、上昇率が大きくなる。上昇率Wは、開発規模X、開発者数Yおよびバグ密度Zを用いる次式(1)を用いて定めてもよい。
【0098】
W=aX+bY+cZ …(1)
但し、a,b,cは、予め定められた定数である。
【0099】
性能決定部37は、ビルドの対象となるソフトウエアに対してビルド履歴が存在しない場合には、単位期間当たりに上昇する性能の差として予め定められた値を用いて、納期までの期間に基づいて性能レベルを決定する。
【0100】
図13は、仮想サーバ生成処理の流れの一例を示すフローチャートである。仮想サーバ生成処理は、ビルド環境管理サーバ100が備えるCPU101が、ソフトウエア開発支援プログラムを実行することによりCPU101により実行される処理である。図13を参照して、ビルド環境管理サーバ100が備えるCPU101は、管理者のログインを検出したか否かを判断する(ステップS01)。管理者のログインを検出するまで待機状態となり(ステップS01でNO)、管理者のログインを検出したならば(ステップS01でYES)、処理はステップS02に進む。
【0101】
ステップS02においては、性能情報が受け付けられ、処理はステップS03に進む。CPU101は、性能入力画面を管理者PC300に送信し、管理者が性能入力画面に従って管理者PC300に入力する性能を示す性能情報を管理者PC300から受信する。性能情報は、CPUのコア数、メインメモリのサイズ、通信能力、および不揮発性メモリのサイズを含む。
【0102】
ステップS03においては、サービス提供サーバ200に仮想サーバの生成が依頼され、処理はステップS04に進む。例えば、CPU101は、CLIを用いて、仮想サーバを生成するコマンドをサービス提供サーバ200に送信する。コマンドを受信するサービス提供サーバ200は、コマンドに含まれる性能の仮想サーバを生成する。
【0103】
ステップS04においては、ビルド環境が受け付けられ、処理はステップS05に進む。CPU101は、環境設定画面を管理者PC300に送信し、管理者が環境設定面に従って管理者PC300に入力するビルド環境を示すビルド環境情報を管理者PC300から受信する。ビルド環境情報は、例えば、コンパイラ、ライブラリ、リンカー、デバッガおよびバージョン管理サーバ201を指定する情報を含む。
【0104】
ステップS05においては、サービス提供サーバ200に形成された仮想サーバにビルド環境が設定され、処理はステップS06に進む。CPU101は、例えば、サービス提供サーバ200に形成された仮想サーバを操作し、仮想サーバにビルド環境情報で特定されるビルド環境を設定する。
【0105】
ステップS06においては、ソースファイルが指定されたか否かが判断される。ソースファイルが指定されるまで待機状態となり(ステップS06でNO)、ソースファイルが指定されたならば(ステップS06でYES)、処理はステップS07に進む。CPU101は、図6に示した管理者ビルド指示画面を管理者PC300に送信し、管理者PC300から管理者ビルド指示を受信する。管理者ビルド指示は、ソースファイルのファイル名と、ソースファイルのバージョンと、リポジトリ情報と、を含む。
【0106】
ステップS07においては、サービス提供サーバ200に形成されたビルド環境が設定された仮想サーバにフルビルドを指示し、処理をステップS08に進める。CPU101は、ソースファイル名およびバージョンで特定されるソースファイルを、リポジトリ情報で特定されるリポジトリから取得し、ビルドする指示を仮想サーバに入力する。これにより、サービス提供サーバ200に形成された仮想サーバによりソースファイルがビルドされ、ビルド実績データが、リポジトリに格納される。
【0107】
ステップS08においては、仮想マシンイメージの生成が依頼され、処理はステップS09に進む。CPU101は、仮想サーバの仮想マシンイメージを保存するコマンドをサービス提供サーバ200に送信する。サービス提供サーバ200は、仮想マシンイメージの保存が完了すると、その仮想マシンイメージを識別するためのマシンイメージ名を返信する。ステップS09においては、仮想サーバの電源がOFFにされ、処理はステップS10に進む。する指示が送信され、CPU101は、サービス提供サーバ200に仮想サーバの電源をOFFにするコマンドを送信する。
【0108】
ステップS10においては、仮想サーバとソフトウエアとが関連付けられ、処理は終了する。CPU101は、仮想マシンイメージのマシンイメージ名とソースファイルのファイル名と、ソースファイルのバージョンと、を関連付けた関連付データを生成し、HDD104に格納する。
【0109】
図14は、仮想サーバ再生処理の流れの一例を示すフローチャートである。仮想サーバ再生処理は、ビルド環境管理サーバ100が備えるCPU101が、ソフトウエア開発支援プログラムを実行することによりCPU101により実行される処理である。図14を参照して、ビルド環境管理サーバ100が備えるCPU101は、開発者のログインを検出したか否かを判断する。CPU101は、開発者A~Cのいずれかのログインを検出するまで待機状態となり(ステップS11でNO)、開発者A~Cのいずれかのログインを検出したならば(ステップS11でYES)、処理をステップS12に進める。以下、開発者Aのログインが検出された場合を例に説明する。
【0110】
ステップS12においては、CPU101は、開発者PC300Aに再生指示画面を表示させ、処理をステップS13に進める。CPU101は、図7に示した再生指示画面を開発者PC300Aに送信し、開発者PC300Aに再生指示画面を表示させる。
【0111】
ステップS13においては、再生指示が受け付けられたか否かが判断される。再生指示が受け付けられるまで待機状態となり(ステップS13でNO)、再生指示が受け付けられると(ステップS13でYES)、処理はステップS14に進む。再生指示は、マシンイメージ名、案件番号を含む。
【0112】
ステップS14においては、サービス提供サーバ200に仮想サーバの再生が依頼され、処理はステップS15に進む。CPU101は、仮想サーバを再生するコマンドをサービス提供サーバ200に送信する。再生コマンドは、ステップS12において受け付けられた再生指示に含まれるマシンイメージ名および案件番号を含む。これにより、サービス提供サーバ200は、マシンイメージ名で特定される仮想マシンイメージに基づいて仮想サーバを生成する。
【0113】
ステップS15においては、ビルドの対象となるソースファイルが特定され、処理はステップS16に進む。CPU101は、バージョン管理サーバ201からビルド履歴情報を取得し、関連付データに基づいて、ソースファイルを特定する。関連付データは、マシンイメージ名とソースファイルのファイル名と、ソースファイルのバージョンと、を関連付ける。CPU101は、ステップS13において受け付けられた再生指示に含まれるマシンイメージ名と関連付データにより関連付けられたソースファイル名およびバージョンで特定されるソースファイルをビルドの対象に特定する。
【0114】
ステップS16においては、ソースファイルの納期が取得され、処理はステップS17に進む。CPU101は、納期管理サーバ202からソースファイルの納期を取得する。
【0115】
ステップS17においては、ビルド実績データが取得され、処理はステップS18に進む。CPU101は、バージョン管理サーバ201からソースファイルのビルド履歴を示すビルド実績データを取得する。
【0116】
ステップS18においては、性能決定処理が実行され、処理はステップS19に進む。性能決定処理の詳細は後述するが、サービス提供サーバ200に形成されたビルド環境が設定された仮想サーバの性能を決定する処理である。
【0117】
ステップS19においては、仮想サーバの性能の変更が依頼され、処理はステップS20に進む。CPU101は、ステップS18において決定された性能に仮想サーバの性能の変更を指示するコマンドをサービス提供サーバ200に送信する。サービス提供サーバ200は、コマンドを受信することに応じて、仮想サーバの性能を変更する。
【0118】
ステップS20においては、ビルド指示が受け付けられたか否かが判断される。CPU101は、図8に示した開発者ビルド指示画面を開発者PC300Aに送信し、開発者PC300Aからビルド指示を受信することによりビルド指示を受け付ける。ビルド指示が受け付けられるまで待機状態となり(ステップS20でNO)、ビルド指示が受け付けられたならば(ステップS20でYES)、処理はステップS21に進む。ビルド指示は、仮想サーバ名と、ビルド種類と、を含む。ビルド種類は、差分ビルドおよびフルビルドのいずれかを示す。
【0119】
ステップS21においては、サービス提供サーバ200に形成された仮想サーバにビルドが指示される。CPU101は、ステップS15において特定されたソースファイルを、フルビルドまたは差分ビルドする指示を、サービス提供サーバ200に形成された仮想サーバに指示する。これにより、サービス提供サーバ200に形成された仮想サーバによりソースファイルがビルドされ、ビルド実績データが、リポジトリに格納される。
【0120】
次のステップS22においては、仮想サーバの電源がOFFにされ、処理は終了する。CPU101は、サービス提供サーバ200に仮想サーバの電源をOFFにするコマンドを送信する。
【0121】
図15は、性能決定処理の流れの一例を示すフローチャートである。性能決定処理は、仮想サーバ再生処理のステップS18において実行される処理である。図15を参照して、ビルド環境管理サーバ100が備えるCPU101は、開発案件の納期と現在の日時を取得し(ステップS31)、処理をステップS32に進める。CPU101は、納期までの期間を算出する。
【0122】
ステップS32においては、納期までの期間が閾値TH以下か否かが判断される。納期までの期間が閾値TH以下ならば処理はステップS33に進むが、そうでなければ処理はステップS35に進む。
【0123】
ステップS33においては、上昇率決定処理が実行され、処理はステップS34に進む。ステップS34においては、上昇率がデフォルトで定められた値に設定され、処理はステップS35に進む。デフォルトで定められた上昇率は、開発規模、バグ密度、ビルド履歴時間および開発者数の少なくとも1に基づいて定められる。
【0124】
ステップS35においては、性能レベルが決定され、処理は仮想サーバ再生処理に戻る。処理がステップS33から進む場合には、ステップS33において決定された上昇率に基づいて性能レベルが決定され、処理がステップS34から進む場合にはデフォルトで定められた上昇率に基づいて性能レベルが決定される。上昇率は、図12に示されたグラフの傾きを示す。
【0125】
図16は、上昇率決定処理の流れの一例を示すフローチャートである。上昇率決定処理は、性能決定処理のステップS33において実行される処理である。図16を参照して、ビルド環境管理サーバ100が備えるCPU101は、納期が必達納期か否かが判断される(ステップS41)。性能決定処理のステップS32において閾値Th1以下と判断された納期が必達納期ならば処理はステップS42に進むが、そうでなければステップS42をスキップして処理はステップS43に進む。ステップS42においては、CPU101は、上昇率を上げ、処理をステップS43に進める。CPU101は、デフォルトで定められた上昇率よりも大きな値に上昇率を決定する。
【0126】
ステップS43においては、開発規模が閾値Th2以上か否かが判断される。開発規模が閾値Th2以上ならば処理はステップS44に進むが、そうでなければステップS44をスキップして処理はステップS45に進む。ステップS44においては、CPU101は、上昇率を上げ、処理をステップS45に進める。ステップS43が実行される前に決定された上昇率よりも大きな値に決定される。
【0127】
ステップS45においては、バグ密度が閾値Th3以上か否かが判断される。バグ密度が閾値Th3以上ならば処理はステップS46に進むが、そうでなければステップS46をスキップして処理はステップS47に進む。ステップS46においては、CPU101は、上昇率を上げ、処理をステップS47に進める。ステップS46が実行される前に決定された上昇率よりも大きな値に決定される。
【0128】
ステップS47においては、ビルド履歴時間が閾値Th4以上か否かが判断される。ビルド履歴時間が閾値Th4以上ならば処理はステップS48に進むが、そうでなければステップS48をスキップして処理はステップS49に進む。CPU101は、ステップS48において、上昇率を上げ、処理をステップS49に進める。ステップS48が実行される前に決定された上昇率よりも大きな値に決定される。
【0129】
ステップS49においては、開発者数が閾値Th5以上か否かが判断される。開発者数が閾値Th5以上ならば処理はステップS50に進むが、そうでなければステップS50をスキップして処理は性能決定処理に戻る。ステップS50においては、CPU101は、上昇率を上げ、処理を性能決定処理に戻す。ステップS50が実行される前に決定された上昇率よりも大きな値に決定される。
【0130】
以上説明したように、本実施の形態におけるソフトウエアビルドシステム1は、ビルド環境管理サーバ100および仮想サーバを供給するサービスを提供するサービス提供サーバ200を備え、ビルド環境管理サーバ100は、ソフトウエアに定められた納期を納期管理サーバ202から取得し、サービス提供サーバ200が提供する仮想サーバとソフトウエアとを関連付け、ソフトウエアに関する情報に基づいて、仮想サーバの性能を決定し、サービス提供サーバ200に仮想サーバの性能を決定された性能に変更を依頼する。このため、ソフトウエアに関する情報に基づいて仮想サーバでソフトウエアをビルドする時間が調整される。また、サービス提供サーバ200から仮想サーバの提供を受けるための対価が仮想サーバの性能によって異なる場合に、仮想サーバの提供を受けるための対価をできるだけ低くすることができる。したがって、ソフトウエアをビルドする時間およびビルドのためのコストを抑制することができる。
【0131】
また、ビルド環境管理サーバ100は、ソフトウエアの納期までの期間が短いほど、仮想サーバの性能を高い性能に決定する。このため、納期までの期間が短くなるに連れてソフトウエアをビルドする時間を短くすることができ、開発に費やされる時間を確保することができる。
【0132】
また、ソフトウエアの納期が、変更不可能な第1種類の納期と、変更可能な第2種類の納期とを含む場合、ビルド環境管理サーバ100は、単位期間あたりに上昇させる性能の差を、ソフトウエアに第2種類の納期が定められている場合よりも第1種類の納期が定められている場合の方が大きくする。第1種類の納期が設定されている場合は第2種類の納期が設定されている場合と比較して、コストが高くなるが、仮想サーバの性能が単位期間当たりに上昇する性能の差が高いのでビルドが短くなる。このため、ソフトウエアの開発期間をより多く確保することができる。一方、第2種類の納期が設定されている場合は第1種類の納期が設定されている場合よりもコストを低くすることができる。
【0133】
また、ビルド環境管理サーバ100は、単位期間あたりに上昇させる性能の差を、ソフトウエアを構成するソースファイルの数またはサイズが大きいほど大きくする。一般的に、ソースファイルの数またはサイズが大きいほど、仮想サーバの負荷が大きくなり、仮想サーバの性能が同じであればビルドの時間が長くなる。また、ソフトウエアの開発が進むにつれてソースファイルの数またはサイズが大きくなる。ビルド環境管理サーバ100は、ソースファイルの数またはサイズが大きい場合は小さい場合と比較して、単位期間当たりに上昇する性能の差を大きくするので、開発が進むに伴ってソースファイルの数またはサイズが大きくなるソフトウエアをビルドする時間が長くなるのを抑制することができる。
【0134】
また、ビルド環境管理サーバ100は、単位期間あたりに上昇させる性能の差を、ソフトウエアが有するバグの密度が高いほど大きくする。一般的に、ソフトウエアのバグ密度が高い場合は低い場合に比較してビルドする回数が多くなる。このため、ビルド環境管理サーバ100は、ソフトウエアのバグ密度が高い場合は低い場合に比較して、単位期間当たりに上昇する性能の差を高くするので、ビルド時間が短くなり、ソフトウエアのバグの改善作業の時間を確保することができる。
【0135】
また、バージョン管理サーバ201は、仮想サーバによりソフトウエアがビルドされた履歴を記憶し、ビルド環境管理サーバ100は、単位期間あたりに上昇させる性能の差をソフトウエアがビルドされた時間が長いほど大きくする。このため、ビルド環境管理サーバ100は、ソフトウエアがビルドされた時間が長い場合は短い場合に比較して、単位期間当たりに上昇する性能の差が高くするので、ビルド時間が長くなるのを抑制して、ソフトウエアを開発する時間を確保することができる。
【0136】
また、ビルド環境管理サーバ100は、ソフトウエアが複数の開発者により開発される場合、単位期間あたりに上昇させる性能の差を、複数の開発者の数が多いほど大きくする。一般的に、ソフトウエアを開発する開発者の数が多い場合は少ない場合に比較してビルドする回数が多くなる。このため、ビルド環境管理サーバ100は、ソフトウエアを開発する開発者の数が多い場合は少ない場合に比較して、単位期間当たりに上昇する性能の差を高くするので、ビルド時間が短くなり、ソフトウエアの開発時間を確保することができる。
【0137】
また、ビルド環境管理サーバ100は、仮想サーバの性能の程度が異なる複数の性能レベルを定めており、複数の性能レベルのうちから1つを決定し、決定した性能レベルで定まる性能に仮想サーバの性能を変更する依頼をサービス提供サーバ200に送信する。このため、サービス提供サーバ200に形成された仮想サーバの性能を変更することができる。
【0138】
<実施の形態の総括>
(項1) ソフトウエアに定められた納期を取得する納期取得手段と、
仮想サーバを供給するサービスから提供される前記仮想サーバと前記ソフトウエアとを関連付ける関連付手段と、
前記ソフトウエアに関する情報に基づいて、前記仮想サーバの性能を決定する性能決定手段と、を備えたソフトウエアビルドシステム。
【0139】
この局面に従えば、仮想サーバとソフトウエアとが関連付けられ、ソフトウエアに関する情報に基づいて、仮想サーバの性能が決定されるので、ソフトウエアをビルドする時間が調整される。また、仮想サーバの提供を受けるための対価が仮想サーバの性能によって異なる場合に、仮想サーバの提供を受けるための対価をできるだけ低くすることができる。その結果、ソフトウエアをビルドする時間およびビルドのためのコストを抑制したソフトウエアビルドシステムを提供することができる。
【0140】
(項2) 前記性能決定手段は、前記ソフトウエアの納期までの期間が短いほど、前記仮想サーバの性能を高くする、項1に記載のソフトウエアビルドシステム。
【0141】
この局面に従えば、ソフトウエアの納期までの期間が短いほど、仮想サーバの性能が高くなるので、納期までの期間が短くなるにつれてソフトウエアをビルドする時間を短くすることができ、開発に費やされる時間を確保することができる。
【0142】
(項3) 前記ソフトウエアの納期は、変更不可能な第1種類の納期と、変更可能な第2種類の納期とを含み、
前記性能決定手段が単位期間あたりに上昇させる性能の差は、前記ソフトウエアに前記第2種類の納期が定められている場合よりも前記第1種類の納期が定められている場合の方が大きい、項2に記載のソフトウエアビルドシステム。
【0143】
この局面に従えば、第1種類の納期が設定されている場合は第2種類の納期が設定されている場合と比較して、コストが高くなるが、仮想サーバの性能が単位期間当たりに上昇する性能の差が高いのでビルドが短くなる。このため、ソフトウエアの開発期間をより多く確保することができる。一方、第2種類の納期が設定されている場合は第1種類の納期が設定されている場合よりもコストを低くすることができる。
【0144】
(項4) 前記性能決定手段が単位期間あたりに上昇させる性能の差は、前記ソフトウエアを構成するソースファイルの数またはサイズが大きいほど大きい、項2または3に記載のソフトウエアビルドシステム。
【0145】
この局面に従えば、単位期間あたりに上昇させる性能の差は、ソースファイルの数またはサイズが大きいほど大きい。ソースファイルの数またはサイズが大きいほど、仮想サーバの負荷が大きくなり、仮想サーバの性能が同じであればビルドの時間が長くなる。ソフトウエアの開発が進むにつれてソースファイルの数またはサイズが大きくなる。ソースファイルの数またはサイズが大きい場合は小さい場合と比較して、性能が単位期間当たりに上昇する性能の差が大きいので、開発が進むに伴ってソースファイルの数またはサイズが大きくなるソフトウエアをビルドする時間が長くなるのを抑制することができる。
【0146】
(項5) 前記性能決定手段が単位期間あたりに上昇させる性能の差は、前記ソフトウエアが有するバグの密度が高いほど大きい、項2~4のいずれかに記載のソフトウエアビルドシステム。
【0147】
この局面に従えば、単位期間あたりに上昇させる性能の差が、ソフトウエアが有するバグの密度が高いほど大きい。ソフトウエアのバグ密度が高い場合は低い場合に比較してビルドする回数が多くなる。このため、ソフトウエアのバグ密度が高い場合は低い場合に比較して、単位期間当たりに上昇する性能の差が高いので、ビルド時間が短くなり、ソフトウエアのバグの改善作業の時間を確保することができる。
【0148】
(項6) 前記仮想サーバにより前記ソフトウエアがビルドされた履歴を記憶する履歴記憶手段を、さらに備え、
前記性能決定手段が単位期間あたりに上昇させる性能の差は、前記ソフトウエアがビルドされた時間が長いほど大きい、項2~5のいずれかに記載のソフトウエアビルドシステム。
【0149】
この局面に従えば、単位期間あたりに上昇させる性能の差が、ソフトウエアがビルドされた時間が長いほど大きい。このため、ソフトウエアがビルドされた時間が長い場合は短い場合に比較して、単位期間当たりに上昇する性能の差が高いので、ビルド時間が長くなるのを抑制して、ソフトウエアを開発する時間を確保することができる。
【0150】
(項7) 前記ソフトウエアが複数の開発者により開発される場合、前記性能決定手段が単位期間あたりに上昇させる性能の差は、前記複数の開発者の数が多いほど大きい、項2~6のいずれかに記載のソフトウエアビルドシステム。
【0151】
この局面に従えば、ソフトウエアを開発する開発者の数が多いほど単位期間あたりに上昇させる性能の差が大きい。ソフトウエアを開発する開発者の数が多い場合は少ない場合に比較してビルドする回数が多くなる。このため、ソフトウエアを開発する開発者の数が多い場合は少ない場合に比較して、単位期間当たりに上昇する性能の差が高いので、ビルド時間が短くなり、ソフトウエアの開発時間を確保することができる。
【0152】
(項8) 前記性能決定手段は、前記仮想サーバの性能の程度が異なる複数の性能レベルのうちから1つを決定し、前記仮想サーバの性能を、決定された前記性能レベルで定まる性能とする変更を前記サービスに依頼する、項1~7のいずれかに記載のソフトウエアビルドシステム。
【0153】
この局面に従えば、仮想サーバの性能の程度が異なる複数の性能レベルのうちから1つが決定され、仮想サーバの性能を、決定された性能レベルで定まる性能とする変更がサービスに依頼される。このため、仮想サーバの性能を変更することができる。
【0154】
(項9) ソフトウエアに定められた納期を取得する納期取得ステップと、
仮想サーバを供給するサービスから提供される前記仮想サーバと前記ソフトウエアとを関連付ける関連付けステップと、
ソフトウエアに関する情報に基づいて、前記仮想サーバの性能を決定する性能決定ステップと、を含む、ソフトウエア開発支援方法。
【0155】
この局面に従えば、ソフトウエアをビルドする時間およびビルドのためのコストを抑制したソフトウエア開発支援方法を提供することができる。
【0156】
(項10) ソフトウエアに定められた納期を取得する納期取得ステップと、
仮想サーバを供給するサービスから提供される前記仮想サーバと前記ソフトウエアとを関連付ける関連付けステップと、
前記ソフトウエアに関する情報に基づいて、前記仮想サーバの性能を決定する性能決定ステップと、をコンピュータに実行させるソフトウエア開発支援プログラム。
【0157】
この局面に従えば、ソフトウエアをビルドする時間およびビルドのためのコストを抑制したソフトウエア開発支援プログラムを提供することができる。
【0158】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0159】
1 画像形成支援システム、3 LAN、5 インターネット、100 モバイル端末、200A~200C PC、400 第1サーバ、401 第2サーバ、402 第3サーバ、101 CPU、102 ROM、103 RAM、104 HDD、105 通信部、106 表示部、107 操作部、108 外部記憶装置、109 CD-ROM、201 検出部、203 印刷指示取得部、205 画像データ取得部、207 RIP、209 出力部、211 設定部、213 状態更新部、215 装置決定部、221 アカウント取得部、223 装置種類取得部、225 指示取得要求部、301~306 印刷装置。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16