以下、図面を参照して本発明の実施形態を説明する。以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は単数でも複数でも構わない。
図面において示す各構成要素の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面に開示された位置、大きさ、形状、範囲などに限定されない。
以下の説明では、「データベース」、「テーブル」、「リスト」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いた場合、これらについてはお互いに置換が可能である。
同一あるいは同様な機能を有する構成要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。ただし、これらの複数の構成要素を区別する必要がない場合には、添字を省略して説明する場合がある。
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU、GPU(Graphics Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)および/またはインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部であれば良く、特定の処理を行う専用回路(例えばFPGA(Field-Programmable Gate Array)やASIC(Application Specific Integrated Circuit))を含んでいてもよい。
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
以下、本実施例にかかるクラウド環境構築支援システム、クラウド環境構築支援方法の一実施例について説明する。
図1は、本実施例におけるクラウド環境構築支援システムの構成の一例を示す図である。図1に示すように、クラウド環境構築支援システム1000は、クラウドでのシステム環境の構築を支援するためのクラウド環境構築支援装置100と、ユーザであるシステムエンジニアにより操作されるユーザ端末300とが、インターネット等の一般的なネットワークNを介して接続されている。
クラウド環境構築支援装置100は、顧客の要望に応じて様々なクラウド環境のシステム構築を支援するためのサーバである。クラウド環境構築支援装置100は、非機能要件リスト201、クラウドデータ202、非機能要件選択データ203、クラウド選択データ204、フィーチャモデル基礎データ205を用いて、フィーチャモデルデータ206を生成するフィーチャモデルデータ生成部101と、フィーチャモデルデータ206をjson形式のユーザ編集用フィーチャモデルデータ207に変換するフィーチャモデル変換部102と、ユーザ編集用フィーチャモデルデータ207を編集するフィーチャモデル編集部103とを有して構成される。jsonは、JavaScript(登録商標)のオブジェクト記法を用いたデータ交換フォーマット、データ記述言語である。本例では、フィーチャモデルデータ206をユーザが編集可能なjson形式に変換する場合を例示するが、他のフォーマットを用いてもよい。
具体的には後述するが、フィーチャモデルデータ生成部101は、ユーザが非機能要件とクラウドを決定した結果に基づき、フィーチャモデル基礎データ205を加工し、フィーチャモデルデータ206を生成する。
機能要件とは、システム構築にあたって顧客が必要とする機能の要件であり、非機能要件とは、上記顧客が必要とする機能要件以外の要件である。非機能要件の種別の一例としては、システムの可用性、システムの性能および拡張性、システムの運用および保守性、システムの移行性、システムのセキュリティ、システムの環境およびエコロジーなどの要件が挙げられる。ここでは、非機能要件が上記列挙した要件である前提で説明しているが、もちろん、非機能要件として定義づけられる他の一般的な要件を含めてよい。
可用性は、システムを継続利用するための要件であり、例えば、サーバや端末といった機器の冗長化や運用スケジュール、障害時の復旧方法などの定義を含む。性能および拡張性は、システムの処理性能や拡張に関する要件であり、例えば、構築するシステムで処理するトランザクション数や利用ユーザ数、システムへの負荷などの定義を含む。運用および保守性は、システムの運用や保守に関する要件であり、例えば、システムの監視方法やバックアップ方法、運用体制などの定義を含む。移行性は、現行システムからの移行に関する要件であり、例えば、新システムへ移行するための移行期間、移行体制、移行リハーサルなどの移行計画などの定義を含む。セキュリティは、システムの安全性の確保に関する要件であり、例えば、アクセス制限や不正アクセスの監視方法などの定義を含む。環境およびエコロジーは、システムを設置する環境やエコロジーに関する要件であり、例えば、耐震や騒音といった環境負荷を低減するシステム構成や、CO2排出量や消費エネルギーを低減するシステムの適合性などの定義を含む。
フィーチャモデル変換部102は、生成されたフィーチャモデルデータ206をjson形式などの所定の形式のユーザ編集用フィーチャモデルデータ207に変換し、当該変換したデータをユーザ端末300に送信する。ユーザ端末300では、表示出力部301が、ブラウザを起動する等して画面上に上記変換したデータを表示し、入力部302がユーザからの入力を受け付けて、フィーチャモデル、定数設計書、構築スクリプト、パラメータなどの生成を行う。以下では、フィーチャモデルを編集する場合を例示するが、定数設計書、構築スクリプト、パラメータなども同様に適用できる。
フィーチャモデル編集部103は、ユーザ端末300においてユーザが操作して編集した新たなフィーチャモデルを保存および出力する。
非機能要件リスト201、クラウドデータ202、非機能要件選択データ203、クラウド選択データ204、フィーチャモデル基礎データ205、フィーチャモデルデータ206、ユーザ編集用フィーチャモデルデータ207の具体的な内容については、フローチャートを用いて本システムの処理を説明する際にあわせて説明する。
ユーザ端末300は、クラウド環境を構築するユーザが用いる端末である。ユーザ端末300は、表示出力部301と、入力部302とを有する。表示出力部301は、例えば、ディスプレイであり、以下に示す処理の実行に関する様々な情報を画面上に表示する。入力部302は、例えば、キーボードやマウスであり、以下に示す処理の実行に関する様々な情報の入力を受け付ける。
本システムで用いられるクラウド環境構築支援装置100やユーザ端末300は、例えば、図2(コンピュータ概略図)に示すような、CPU1601と、メモリ1602と、HDD(Hard Disk Drive)等の外部記憶装置1603と、CD(Compact Disk)やUSBメモリ等の可搬性を有する記憶媒体1608に対して情報を読み書きする読書装置1607と、キーボードやマウス等の入力装置1606と、ディスプレイ等の出力装置1605と、通信ネットワークに接続するためのNIC(Network Interface Card)等の通信装置1604と、これらを連結するシステムバス等の内部通信線(システムバスという)1609と、を備えた一般的なコンピュータ1600により実現できる。
また、各端末やサーバに記憶され、あるいは処理に用いられる様々なデータは、CPU1601がメモリ1602または外部記憶装置1603から読み出して利用することにより実現可能である。また、クラウド環境構築支援装置100やユーザ端末300が有する各機能部(例えば、フィーチャモデルデータ生成部101、フィーチャモデル変換部102、フィーチャモデル編集部103)は、CPU1601が外部記憶装置1603に記憶されている所定のプログラムをメモリ1602にロードして実行することにより実現可能である。
上述した所定のプログラムは、読書装置1607を介して記憶媒体1608から、あるいは、通信装置1604を介してネットワークから、外部記憶装置1603に記憶(ダウンロード)され、それから、メモリ1602上にロードされて、CPU1601により実行されるようにしてもよい。また、読書装置1607を介して、記憶媒体1608から、あるいは通信装置1604を介してネットワークから、メモリ1602上に直接ロードされ、CPU1601により実行されるようにしてもよい。
以下では、クラウド環境構築支援装置100が、ある1つのコンピュータにより構成される場合を例示するが、これらの機能の全部または一部が、クラウドのような1または複数のコンピュータに分散して設けられ、ネットワークを介して互いに通信することにより同様の機能を実現してもよい。
図3は、フィーチャモデルデータ生成部101が行う処理(フィーチャモデルデータ生成処理)の処理手順を示すフローチャートである。
図3に示すように、フィーチャモデルデータ生成部101は、1または複数のフィーチャモデル基礎データ205から表を一つ取り出し(S301)、当該取り出した表から一行のレコードを取り出す(S302)。
図4は、フィーチャモデル基礎データ205の一例を示す図である。フィーチャモデル基礎データ205は、フィーチャモデルの作成にあたり、クラウドサービスや非機能要件についての一般的な構成を定めたテーブルである。フィーチャモデル基礎データ205は、例えば、システム管理者によりあらかじめ定められる。
図4に示すように、フィーチャモデル基礎データ205は、各レコードを一意に定めるためのIDと、1~n階層目のフィーチャの名前を示す階層1~nと、レコードが取りうる選択肢と、当該選択肢をフィーチャモデルに取り入れた際の選択状態の制約の種類を示す選択肢種類と、クラウドで提供されるサービスの名前を示すクラウドサービス種別と、当該レコードに記載されている階層が許容する非機能要件のIDを示す非機能要件選択データIDリストとが対応付け記憶されている。
図4では、例えば、ID「3」により識別されるレコードは、「AP」(アプリケーションサーバ)を階層1、「ミドルウェア」を階層2としたフィーチャモデルのための基礎データであり、当該フィーチャモデルのミドルウェアがとりうる選択肢は「JBOSS」アプリケーションであることを示している。そして、その際には、「JBOSS」アプリケーションを必ず取り入れなければならないことを示している。選択肢種類には、必ず選択される必要がある「必須」、選択肢リストのうちのいずれか1つが選択される必要がある「選択」、選択可否が任意である「任意」が設定される。ただし、「非機能要件選択データIDリスト」が定義されたレコードは、後述する工程で選択肢種類を更新するため選択肢種類は空白となる。また、クラウドサービス種別は、クラウドで提供されるサービスの名前は「インスタンスタイプ」により定められることを示している。クラウドサービス種別は、クラウドデータ202で定められる「クラウド種別」には左右されない名前である。
続いて、フィーチャモデルデータ生成部101は、非機能要件リスト201から一行のレコードを取り出す(S303)。
図5は、非機能要件リスト201の一例を示す図である。非機能要件リスト201は、非機能要件の種別ごとに、その非機能要件を実現する手段と、その手段の選択肢を表形式で表したリストである。図5に示すように、非機能要件リスト201は、各非機能要件を一意に定めるためのIDと、達成したい非機能要件の種別を示す非機能要件種別と、当該非機能要件種別に記載の非機能要件を達成するための手段を示す非機能要件実現手段と、当該非機能要件実現手段が取りうる選択肢を示す実現手段選択肢リストと、フィーチャモデル基礎データ205と同様の選択肢種類とが対応付けて記憶されている。
図5では、例えば、ID「3」で識別されるレコードは、非機能種別「セキュリティ」であらわされる非機能要件であり、当該非機能要件を実現するための手段は、「HTTPS」、「SSL/TSL」のいずれかを選択して暗号化することであることを示している。
続いて、フィーチャモデルデータ生成部101は、S302においてフィーチャモデル基礎データ205から取り出した行の「非機能要件選択データIDリスト」が非機能要件リスト201から取り出した行の「ID」を含むか否かを判定する(S304)。
フィーチャモデルデータ生成部101は、S302においてフィーチャモデル基礎データ205から取り出した行の「非機能要件選択データIDリスト」が非機能要件リスト201から取り出した行の「ID」を含むと判定した場合(S304;Yes)、S305に進む。
例えば、フィーチャモデルデータ生成部101は、S302において、図4に示したフィーチャモデル基礎データ205の中からID「1」のレコードを取り出し、S303において、図5に示した非機能要件リスト201の中からID「1」のレコードを取り出した場合、フィーチャモデル基礎データ205のレコードの「非機能要件選択データIDリスト」に記載されているID「1」、「3」のうち、非機能要件リスト201のID「1」のレコードが含まれている。したがって、フィーチャモデルデータ生成部101は、S304において「Yes」と判定し、S305に進むこととなる。この例の場合、非機能要件リスト201のID「3」のレコードを取り出した場合についても同様である。
一方、フィーチャモデルデータ生成部101は、S302においてフィーチャモデル基礎データ205から取り出した行の「非機能要件選択データIDリスト」が非機能要件リスト201から取り出した行の「ID」を含まないと判定した場合(S304;No)、S307に進む。
さらに、フィーチャモデルデータ生成部101は、後述する非機能要件選択データ203のうち、非機能要件リスト201から取り出した行の「ID」と合致する「非機能要件選択ID」をもつ行に選択フラグがあるか否かを判定する(S305)。
図6は、非機能要件選択データ203の一例を示す図である。非機能要件選択データ203は、ユーザが1または複数の非機能要件のうち、どの非機能要件を選択したのかを記憶したデータである。図6に示すように、非機能要件選択データ203は、非機能要件リスト201のIDを示す非機能要件IDと、当該非機能要件IDの選択有無を示す選択フラグとが対応付けて記憶されている。
図6では、ユーザが、作成しようとしているフィーチャモデルに対して、非機能要件ID「1」、「3」の非機能要件を選択したことを示している。当該選択フラグの設定は、例えば、ユーザ端末300が、図6に示した非機能要件選択データ203を表示出力部301に表示し、入力部302が、上記ユーザから非機能要件IDに対応する選択フラグの選択を受け付け、その結果を非機能要件選択データ203としてクラウド環境構築支援装置100に送信することで実現できる。
この例では、非機能要件選択データ203において非機能要件ID「1」、「3」が選択されているため、フィーチャモデルデータ生成部101は、S305において、「Yes」と判定し、S306に進む。一方、S305において、非機能要件リスト201から取り出した行の「ID」と合致する「非機能要件選択ID」をもつ行に選択フラグがないと判定した場合(S305;No)、S307に進む。
フィーチャモデルデータ生成部101は、S302でフィーチャモデル基礎データ205から取り出したレコードに、S303で非機能要件リスト201から取り出したレコードの非機能要件実現手段、実現手段選択肢リスト、選択肢種別を書き加え、フィーチャモデルデータ206に新たな行として記載する(S306)。
図7は、フィーチャモデルデータ206の一例を示す図である。フィーチャモデルデータ206は、フィーチャモデル基礎データ205に対して、ユーザが選択した非機能要件等を加えて、クラウド上のシステム環境を構成するフィーチャモデルを記憶したデータである。図7に示すように、フィーチャモデルデータ206は、図4に示したフィーチャモデル基礎データ205と同様の、各レコードを一意に定めるためのIDと、1~n階層目のフィーチャの名前を示す階層1~nと、レコードが取りうる選択肢と、当該選択肢の制約種類を示す選択肢種類とが対応付けて記憶されている。また、これらの各項目に対応付けて、ユーザにより非機能要件選択データ203において選択された非機能要件を示す選択結果が記憶されている。
図7では、例えば、ID「2」で識別されるレコードは、フィーチャモデル基礎データ205をベースとして、非機能種別「セキュリティ」であらわされる非機能要件を実現するための手段のうち、「HTTPS」が選択されたフィーチャモデルであることを示している。
フィーチャモデルデータ生成部101は、すべての非機能要件リスト201について処理を行ったか否かを判定する(S307)。全てのレコードについて処理を行ったと判定した場合(S307;Yes)、S308に進む。一方、フィーチャモデルデータ生成部101は、非機能要件リスト201のすべてのレコードについて処理を行っていないと判定した場合(S307;No)、S303に戻り、以降の処理を繰り返す。
フィーチャモデルデータ生成部101は、S307までの処理で、ユーザが選択した日機能要件をフィーチャモデル基礎データ205に書き加える処理を行うと、続いて、クラウドデータ202から一行のレコードを取り出す(S308)。
図8は、クラウドデータ202の一例を示す図である。クラウドデータ202は、クラウドベンダが提供するクラウドサービスが取りうる選択肢を記憶したテーブルである。図8に示すように、クラウドデータ202は、各レコードを一意に定めるためのIDと、クラウドベンダの名称を示すクラウド種別と、当該クラウド種別のクラウドで提供されるサービスの名称を示すクラウドサービス種別と、当該クラウドサービス種別におけるクラウドサービスを実現するサービス名を示すクラウドサービスと、当該クラウドサービスにおいてクラウドサービス種別が取りうる選択肢を示すクラウドサービス選択肢と、非機能要件リスト205と同様、フィーチャモデルに取り入れた際の選択状態の制約を示す選択肢種類とが対応付け記憶されている。
図8では、例えば、ID「1」により識別されるレコードは、EC2インスタンスにより提供されるAWSのクラウドであり、「m5.xlarge」をはじめとするクラウドサービス選択肢で定められたスペックの中から1つ(または複数を)選択する必要があることを示している。
フィーチャモデルデータ生成部101は、S302においてフィーチャモデル基礎データ205から取り出した行の「クラウドサービス種別」がクラウドデータ202から取り出した行の「クラウドサービス種別」と一致するか否かを判定する(S309)。
フィーチャモデルデータ生成部101は、S302においてフィーチャモデル基礎データ205から取り出した行の「クラウドサービス種別」がクラウドデータ202から取り出した行の「クラウドサービス種別」と一致すると判定した場合(S309;Yes)、S310に進む。
例えば、フィーチャモデルデータ生成部101は、S302において、図4に示したフィーチャモデル基礎データ205の中からID「2」のレコードを取り出した場合、当該フィーチャモデル基礎データ205のレコードの「クラウドサービス種別」に記載されている「インスタンスタイプ」を読み取る。フィーチャモデルデータ生成部101は、クラウドデータ202のID「1」のレコードの「クラウドサービス種別」が「インスタンスタイプ」であるため、S308において「Yes」と判定し、S310に進むこととなる。
一方、フィーチャモデルデータ生成部101は、S302においてフィーチャモデル基礎データ205から取り出した行の「クラウドサービス種別」がクラウドデータ202から取り出した行の「クラウドサービス種別」と一致しないと判定した場合(S309;No)、S312に進む。
さらに、フィーチャモデルデータ生成部101は、後述するクラウド選択データ204のうち、クラウドデータ202から取り出した行の「ID」と合致する「クラウドデータID」をもつ行に選択フラグがあるか否かを判定する(S310)。
図9は、クラウド選択データ204の一例を示す図である。クラウド選択データ204は、ユーザが1または複数のクラウドサービスのうち、どのクラウドサービスを選択したのかを記憶したデータである。図8に示すように、クラウド選択データ204は、クラウドデータ206のIDを示すクラウドデータIDと、当該クラウドデータIDの選択有無を示す選択フラグとが対応付けて記憶されている。
図9では、ユーザが、作成しようとしているフィーチャモデルに対して、クラウドデータID「1」のクラウドサービスを選択したことを示している。当該選択フラグの設定は、例えば、ユーザ端末300が、図9に示したクラウド選択データ204を表示出力部301に表示し、入力部302が、上記ユーザからクラウドデータIDに対応する選択フラグの選択を受け付け、その結果をクラウド選択データ204としてクラウド環境構築支援装置100に送信することで実現できる。
この例では、クラウド選択データ204においてクラウドデータID「1」が選択されているため、フィーチャモデルデータ生成部101は、S310において、「Yes」と判定し、S311に進む。一方、S310において、クラウドデータ202から取り出した行の「ID」と合致する「クラウドデータID」をもつ行に選択フラグがないと判定した場合(S310;No)、S312に進む。
フィーチャモデルデータ生成部101は、S302でフィーチャモデル基礎データ205から取り出したレコードに、S308でクラウドデータ202から取り出したレコードのクラウドサービス、クラウドサービス選択肢を書き加え、フィーチャモデルデータ206に新たな行として記載する(S311)。
図7に示したフィーチャモデルデータ206では、S307で書き加えたID「2」のレコードに加え、さらにID「3」のレコードには、フィーチャモデル基礎データ205をベースとして、EC2インスタンスにより提供されるAWSのクラウドであり、スペックが「m5.xlarge」であるクラウドサービスが、フィーチャモデルデータ206として追加されていることを示している。
フィーチャモデルデータ生成部101は、すべてのクラウドデータ202について処理を行ったか否かを判定し(S312)、すべてのクラウドデータ202について処理を行ったと判定した場合(S312;Yes)、S313に進む。一方、フィーチャモデルデータ生成部101は、すべてのクラウドデータ202について処理を行っていないと判定した場合(S312;No)、S308に戻り、以降の処理を繰り返す。
さらに、フィーチャモデルデータ生成部101は、S302で取り出したフィーチャモデル基礎データ205のすべてのレコードについて処理を行ったか否かを判定し(S313)、S302で取り出したフィーチャモデル基礎データ205のすべてのレコードについて処理を行ったと判定した場合(S313;Yes)、S314に進む。一方、フィーチャモデルデータ生成部101は、S302で取り出したフィーチャモデル基礎データ205のすべてのレコードについて処理を行っていないと判定した場合(S313;No)、S302に戻り、以降の処理を繰り返す。
さらに、フィーチャモデルデータ生成部101は、S301で取り出し対象となるフィーチャモデル基礎データ205のすべての表について処理を行ったか否かを判定し(S314)、S301で取り出し対象となるフィーチャモデル基礎データ205のすべての表について処理を行ったと判定した場合(S314;Yes)、本処理を終了する。一方、フィーチャモデルデータ生成部101は、S301で取り出し対象となるフィーチャモデル基礎データ205のすべての表について処理を行っていないと判定した場合(S314;No)、S301に戻り、以降の処理を繰り返す。
フィーチャモデルデータ生成部101が、このようなフィーチャモデルデータ生成処理を行うことにより、ユーザが選択した非機能要件とクラウドサービスとに基づいて、フィーチャモデル基礎データのデータを処理し、フィーチャモデルデータを生成することができる。
図10は、フィーチャモデル変換部102が行う処理(フィーチャモデル変換処理)の処理手順を示すフローチャートである。
図10に示すように、フィーチャモデル変換部102は、フィーチャモデルデータ生成部101により生成された1または複数のフィーチャモデルデータ206から表を一つ取り出し(S1001)、当該取り出した表から一行のレコードを取り出す(S1002)。
さらに、フィーチャモデル変換部102は、S1002で取り出したレコードの中から、「階層」を一つ取り出し(S1003)、取り出した「階層」の内容が空白か否かを判定する(S1004)。
フィーチャモデル変換部102は、取り出した「階層」の内容が空白でないと判定した場合(S1004;No)、S1005に進む。一方、フィーチャモデル変換部102は、取り出した「階層」の内容が空白であると判定した場合(S1004;Yes)、S1008に進む。
さらに、フィーチャモデル変換部102は、S1003で取り出した「階層」の内容が既に書き出したものであるか否かを判定する(S1005)。フィーチャモデル変換部102は、S1003で取り出した「階層」の内容が既に書き出したものでないと判定した場合(S1005;No)、「階層N」の内容を”name”の値、”id”に通し番号を値としてユーザ編集用フィーチャモデルデータ207に出力する(S1006)。一方、フィーチャモデル変換部102は、S1003で取り出した「階層」の内容が既に書き出したものであると判定した場合(S1005;Yes)、何もせずにS1007に進む。
フィーチャモデル変換部102は、S1006で、「階層N」の内容を”name”の値、”id”に通し番号を値としてユーザ編集用フィーチャモデルデータ207に出力すると、当該階層の内容をすべて処理したか否かを判定し(S1007)、当該階層の内容をすべて処理したと判定した場合(S1007;Yes)、S1008に進む。一方、フィーチャモデル変換部102は、当該階層の内容をすべて処理していないと判定した場合(S1007;No)、S1003に戻り、以降の処理を繰り返す。
フィーチャモデル変換部102は、S1007で処理した階層に対応する「選択肢」の内容を”item”の値、選択肢種類の内容を”option”の値、選択結果の内容を”selection”の値としてユーザ編集用フィーチャモデルデータ207に出力する(S1008)。
図11は、フィーチャモデル変換部102がjson形式のユーザ編集用フィーチャモデルデータ207に出力する様子を説明するための図である。図11に示すように、フィーチャモデル変換部102は、S1006において、フィーチャモデルデータ生成部101が生成したフィーチャモデルデータ206に記憶されているレコード(この例では、ID「1」のレコード)の各階層(この例では、階層1、階層2)のそれぞれに設定されている内容を、ユーザ編集用フィーチャモデルデータ207に出力する。図11では、階層1に設定されている「AP」、階層2に設定されている「リージョン」を、それぞれを”name”の値として出力している(S1101、S1102)。また、フィーチャモデル変換部102は、”id”に、通し番号「1」、「2」を設定している。
さらに、フィーチャモデル変換部102は、S1008において、S1101、S1102で出力したフィーチャモデルデータ206に記憶されているID「1」のレコードの「選択肢」の内容である「シングル、マルチ」を”item”の値に設定し、選択肢種類の内容である「選択」を”option”の値に設定し、選択結果の内容である「シングル」を”selection”の値としてユーザ編集用フィーチャモデルデータ207に出力している(S1103、S1104、S1105)。
図10に戻り、フィーチャモデル変換部102は、S1001で取り出した表のすべてのレコードを処理したか否かを判定し(S1009)、S1001で取り出した表のすべてのレコードを処理したと判定した場合(S1009;Yes)、S1010に進む。一方、フィーチャモデル変換部102は、S1001で取り出した表のすべてのレコードを処理していないと判定した場合(S1009;No)、S1002に戻り、以降の処理を繰り返す。
さらに、フィーチャモデル変換部102は、S1001で取り出し対象となるフィーチャモデルデータ206のすべての表について処理を行ったか否かを判定し(S1010)、S1001で取り出し対象となるフィーチャモデルデータ206のすべての表について処理を行ったと判定した場合(S1010;Yes)、本処理を終了する。一方、フィーチャモデルデータ生成部101は、S1001で取り出し対象となるフィーチャモデルデータ206のすべての表について処理を行っていないと判定した場合(S1010;No)、S1001に戻り、以降の処理を繰り返す。
フィーチャモデル変換部102が、このようなフィーチャモデル変換処理を行うことにより、ユーザが選択した非機能要件とクラウドサービスとを含むフィーチャモデルデータから、json形式などの所定の形式のファイルであるユーザ編集用フィーチャモデルデータ207を出力することができる。
図12は、フィーチャモデル編集部103が行う処理(フィーチャモデル編集処理)の処理手順を示すフローチャートである。この例では、フィーチャモデル編集部103は、フィーチャモデル変換部102が変換したユーザ編集用フィーチャモデルデータ207を1つ読み出し、読み出された上記ユーザ編集用フィーチャモデルデータ207をユーザ端末300に送信しているものとする。さらに、ユーザ端末300が、上記ユーザ編集用フィーチャモデルデータ207に記憶されている各項目を含む編集用データ(例えば、ブラウザ表示形式のデータ)を表示出力部301に表示し、入力部302が、上記ユーザ編集用フィーチャモデルデータ207で構成されるフィーチャモデルの編集を受け付け、選択されたフィーチャのデータとユーザ編集用フィーチャモデルデータ207をクラウド環境構築支援装置100に送信したものとする。
図12に示すように、フィーチャモデル編集部103は、ユーザ端末300において保存ボタンが押下され、ユーザ端末300から、選択されたフィーチャのデータとユーザ編集用フィーチャモデルデータ207を受け取る(S1201)。
フィーチャモデル編集部103は、ユーザ端末300から受け取った1または複数の選択済みのフィーチャの中から1つの選択済みフィーチャを選択し、S1201にてユーザ端末300から受け取ったユーザ編集用フィーチャモデルデータ207における該当箇所の”selection”の値を選択済みフィーチャの値に更新する(S1202)。
フィーチャモデル編集部103は、ユーザ端末300から受け取った1または複数の上記選択済みフィーチャについて処理したか否かを判定し(S1203)、ユーザ端末300から受け取った1または複数の上記選択済みフィーチャについて処理したと判定した場合(S1203;Yes)、本処理を終了させる。一方、フィーチャモデル編集部103は、ユーザ端末300から受け取った1または複数の上記選択済みフィーチャについて処理していないと判定した場合(S1203;No)、S1202に戻り、処理を継続する。
図13は、ユーザ端末300に表示される画面(フィーチャモデル編集画面)の一例を示す図である。図13に示すように、フィーチャモデル編集画面1300は、上記編集用データを読み込むための読込ボタン1301と、編集領域1303において編集された上記編集用データの各項目をユーザ編集用フィーチャモデルデータ207に反映させるための保存ボタン1302と、上記ユーザ編集用フィーチャモデルデータ207をユーザが編集するための領域を示す編集領域1303とを含む。
図13では、図11に示したフィーチャモデルデータ206からユーザ編集用フィーチャモデルデータ207に出力されたS1101~S1105までの各項目が、編集領域1303の左欄に表示されている。例えば、S1101において階層1として設定された「AP」については、項目1304として設定され、S1102において階層2として設定された「リージョン」については、項目1305として設定されている。さらに、S1103において選択肢として設定された「シングル、マルチ」が項目1306として設定され、そのうち、S1105において設定された選択結果「シングル」にチェックが入力されていることを示している。
ユーザ端末300の表示出力部301は、図13に示したようなフィーチャモデル編集画面を表示すると、入力部302が、ユーザから、表示した内容に対する編集を受け付ける。ユーザは、例えば、階層2として設定された「リージョン」について、顧客要望に照らして、生成すべきフィーチャモデルは「シングル」ではなく「マルチ」が望ましいと判断した場合、当該画面から「マルチ」にチェックを入力し、保存ボタン1302を押下する。入力部302が、保存ボタン1302の押下を受け付けると、表示出力部301が、編集後の画面で入力、更新、変更された項目を含む上記選択済みフィーチャを出力し、当該出力データとユーザ編集用フィーチャモデルデータ207をクラウド環境構築支援装置100に送信する。
フィーチャモデル編集部103は、ユーザ端末300から受け取った新たな編集後の上記編集用データの各項目を、上述の通り、ユーザ編集用フィーチャモデルデータ207に反映させる。
以上のとおり説明したように、本実施例におけるクラウド環境構築支援システムは、プロセッサとメモリとを有したコンピュータにより、クラウド環境のシステム構築を支援するクラウド環境構築支援システム1000であって、上記プロセッサ(例えば、CPU1601)は、フィーチャモデルデータ生成部101(プログラム)を実行して、異なるクラウドベンダが提供するクラウドサービスと非機能要件についての一般的な構成を定めたフィーチャモデル基礎データ205と、上記非機能要件の種別ごとに、当該非機能要件を実現する手段を表した非機能要件リスト201と、上記クラウドベンダが提供するクラウドサービスが取りうる選択肢を記憶したクラウドデータ202と、ユーザにより選択された上記非機能要件を記憶した非機能要件選択データ203と、上記ユーザにより選択されたクラウドサービスを記憶したクラウド選択データ204とに基づいて、上記クラウド環境のシステムを構成するフィーチャモデルデータ206を生成し、フィーチャモデル変換部102(プログラム)を実行して、生成された上記フィーチャモデルデータを、ユーザが編集可能な所定のフォーマット(例えば、json形式)のユーザ編集用フィーチャモデルデータ207に変換し、フィーチャモデル編集部103(プログラム)を実行して、上記所定のフォーマットに変換された上記フィーチャモデルデータを、ユーザ端末300に出力する。これにより、顧客の非機能要件や異なるクラウドベンダにより提供されるクラウドサービスを加味したフィーチャモデルを作成することで、より顧客の要求を反映させたクラウド環境の構築を支援することができる。従来、非機能要件への対応やマルチクラウドへの対応を行う場合、システム設計の工数が大きくなっていたが、本システムによれば、このような工数を削減することができ、システムエンジニア所望のクラウドサービスと非機能要件と共通のフィーチャモデルに合わせこむことで、非機能要件やマルチクラウドへの対応を自動的に行うことができる。
また、図13等を用いて説明したように、上記プロセッサは、フィーチャモデル編集部103を実行して、上記ユーザ端末において編集された後のフィーチャモデルを、上記コンピュータに記憶されている上記生成されたユーザ編集用フィーチャモデルデータに反映させる。これにより、ユーザ所望の編集内容をユーザ編集用フィーチャモデルに反映することができる。
また、図11等を用いて説明したように、上記プロセッサは、フィーチャモデル変換部102を実行して、生成された上記フィーチャモデルデータを、上記所定のフォーマットとしてjson形式を選択して変換する。これにより、他の複数のフォーマットの中からjson形式によるフィーチャモデルの編集が可能となる。
また、図3、5等を用いて説明したように、上記プロセッサは、フィーチャモデルデータ生成部101を実行する際に、上記フィーチャモデル基礎データに記憶する非機能要件として、少なくとも、システムの可用性、システムの性能および拡張性、システムの運用および保守性、システムの移行性、システムのセキュリティ、システムの環境およびエコロジー、に関する定義を含める。これにより、非機能要件のうちこれらの要件を考慮してフィーチャモデルを生成することができる。
本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化したり、上記実施の形態に開示されている複数の構成要素を適宜組み合わせて実施することができる。