(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-24
(45)【発行日】2024-07-02
(54)【発明の名称】システム検証プログラム生成装置、システム検証プログラム生成方法およびシステム検証プログラム生成プログラム
(51)【国際特許分類】
G06F 11/36 20060101AFI20240625BHJP
G06F 8/30 20180101ALI20240625BHJP
【FI】
G06F11/36 164
G06F8/30
(21)【出願番号】P 2020068942
(22)【出願日】2020-04-07
【審査請求日】2023-03-02
【国等の委託研究の成果に係る記載事項】(出願人による申告)2019年度 総務省研究開発委託「革新的AIネットワーク統合基盤技術の研究開発」産業技術力強化法第17条の適用を受ける特許出願
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103090
【氏名又は名称】岩壁 冬樹
(74)【代理人】
【識別番号】100124501
【氏名又は名称】塩川 誠人
(72)【発明者】
【氏名】田辺 和輝
(72)【発明者】
【氏名】福田 達也
(72)【発明者】
【氏名】黒田 貴之
【審査官】山本 俊介
(56)【参考文献】
【文献】国際公開第2017/037914(WO,A1)
【文献】特開2011-028313(JP,A)
【文献】特開平06-066603(JP,A)
【文献】福田達也ほか,探索型ネットワーク設計導出方式を用いた障害自動切り分け技術,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2019年08月29日,第119巻 第194号,pp. 41-46
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
G06F 8/30
(57)【特許請求の範囲】
【請求項1】
システム要件から抽出された1つ以上の検証項目を前記システム要件から導出されたシステム設計が充足するか否かを検証するプログラムである検証プログラムの実行主体およびパラメータを前記システム設計から探索する探索部を備える
ことを特徴とするシステム検証プログラム生成装置。
【請求項2】
前記探索部は、前記検証プログラムの実行主体およびパラメータを前記システム設計から探索するための手順である探索手順を用いて実行主体およびパラメータを探索する
請求項1記載のシステム検証プログラム生成装置。
【請求項3】
検証項目、実行主体に対応する探索手順、およびパラメータに対応する探索手順がそれぞれ関連付けられて規定されたテンプレートである検証テンプレートを記憶する検証テンプレート記憶部を備え、
前記探索部は、
検証対象の検証項目を含む前記検証テンプレートから実行主体に対応する探索手順と、パラメータに対応する探索手順をそれぞれ抽出し、
抽出された各探索手順を用いて前記検証プログラムの実行主体およびパラメータをそれぞれ探索する
請求項2記載のシステム検証プログラム生成装置。
【請求項4】
前記検証プログラムを構成するコマンドの引数に探索されたパラメータを割り当てることによって前記検証プログラムを生成する生成部を備える
請求項1から請求項3のうちのいずれか1項に記載のシステム検証プログラム生成装置。
【請求項5】
実行主体、パラメータ、および前記検証プログラムを構成するコマンドがそれぞれ関連付けられて規定されたテンプレートであるコマンドテンプレートを記憶するコマンドテンプレート記憶部を備え、
前記生成部は、
探索された実行主体およびパラメータを含む前記コマンドテンプレートからコマンドを抽出し、
抽出されたコマンドの引数に探索されたパラメータを割り当てる
請求項4記載のシステム検証プログラム生成装置。
【請求項6】
前記システム要件から1つ以上の検証項目を抽出する抽出部を備える
請求項1から請求項5のうちのいずれか1項に記載のシステム検証プログラム生成装置。
【請求項7】
コンピュータが、
システム要件から抽出された1つ以上の検証項目を前記システム要件から導出されたシステム設計が充足するか否かを検証するプログラムである検証プログラムの実行主体およびパラメータを前記システム設計から探索する
ことを特徴とするシステム検証プログラム生成方法。
【請求項8】
コンピュータが、
前記検証プログラムの実行主体およびパラメータを前記システム設計から探索するための手順である探索手順を用いて実行主体およびパラメータを探索する
請求項7記載のシステム検証プログラム生成方法。
【請求項9】
コンピュータに、
システム要件から抽出された1つ以上の検証項目を前記システム要件から導出されたシステム設計が充足するか否かを検証するプログラムである検証プログラムの実行主体およびパラメータを前記システム設計から探索する探索処理
を実行させるためのシステム検証プログラム生成プログラム。
【請求項10】
コンピュータに、
前記探索処理で、前記検証プログラムの実行主体およびパラメータを前記システム設計から探索するための手順である探索手順を用いて実行主体およびパラメータを探索させる
請求項9記載のシステム検証プログラム生成プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、システム検証プログラム生成装置、システム検証プログラム生成方法およびシステム検証プログラム生成プログラムに関する。特に、本発明は、プログラムの実行主体およびパラメータを探索できるシステム検証プログラム生成装置、システム検証プログラム生成方法およびシステム検証プログラム生成プログラムに関する。
【背景技術】
【0002】
サーバやネットワーク機器等で構成されるICT(Information Communication Technology)システムの構築作業の工程は、一般的に、主に要件定義工程、基本設計工程、詳細設計工程、配備(デプロイ)工程、検証工程なる5つの工程に分類可能である。
【0003】
ICTシステムの構築作業では、技術者が上記の5つの工程を手動で行うことが多い。しかし、専用のツールが用いられることによって、各工程(特に、基本設計工程、詳細設計工程、および配備工程)の自動化も多く行われている。
【0004】
非特許文献1および非特許文献2には、基本設計工程および詳細設計工程の自動化を目的とする、システム要件を基にシステム設計を自動で生成する技術が記載されている。
【0005】
非特許文献1および非特許文献2に記載されている技術は、システム要件を入力とし、入力されたシステム要件を充足するシステム設計を生成し、生成されたシステム設計を出力する。
【0006】
上記の入力されるシステム要件は、例えば複数の基礎的な要件の組み合わせで記述される。また、上記の出力されるシステム設計は、例えば全ての基礎的な要件を充足することを目的とする計算が実行されることによって生成される。
【0007】
また、非特許文献3および非特許文献4には、ICTシステムのデプロイの自動化を目的とする構成管理ツールが記載されている。
【0008】
非特許文献3および非特許文献4に記載されている構成管理ツールは、ユーザが希望するICTシステムの構成を所定の仕様に従い、プログラムの記法に沿って記述する。すなわち、非特許文献3および非特許文献4に記載されている構成管理ツールを使用するユーザは、作業手順間の依存関係を考慮することなく、現在の状態から記述された状態へのICTシステムの構成の変更に求められる作業を自動的に生成できる。
【0009】
また、デプロイされたシステムが与えられたシステム要件を充足しているか否かが検証される検証工程において、例えばシステム要件が充足されているか否かを確認するための単一または複数の検証項目が生成される。また、生成された各検証項目に対して、例えばシステム検証プログラム(以下、検証プログラムとも呼ぶ。)がそれぞれ生成される。
【0010】
検証プログラムの生成において、システムの構成(設計)を参照し、参照されたシステムの構成に応じて検証プログラムを修正することが求められる。例えば、プログラムを実行するOS(Operating System)に応じて、プログラムを構成するコマンドを変更することが求められる。
【0011】
また、検証プログラムの生成において、検証プログラムに規定されている通信の宛先であるIP(Internet Protocol)アドレスとMAC(Media Access Control)アドレス、およびURL(Uniform Resource Locator)等の情報を引数(パラメータ)に設定することも求められる。
【0012】
検証プログラムが生成されると、生成された検証プログラムが、デプロイされたシステムにおいて実行される。次いで、検証プログラムの実行結果を基に、各検証項目が充足されているか否かが判定される。検証プログラムの生成から各検証項目の判定までが含まれる検証工程は、手動で行われることが多い。
【0013】
また、非特許文献5には、グラフ構造のデータ処理を行うために開発された宣言型のグラフクエリ言語が記載されている。
【先行技術文献】
【非特許文献】
【0014】
【文献】黒田貴之、桑原拓也、丸山貴志、“Intentに基づくITサービスの構成設計と機械学習の活用”、2019年電子情報通信学会ソサイエティ大会、BI-6-4、2019年9月.
【文献】T. Kuroda, T. Kuwahara, T. Maruyama, K. Satoda, H. Shimonishi, T. Osaki, and K. Matsuda, "Weaver: A Novel Configuration Designer for IT/NW Services in Heterogeneous Environments," in Proceedings of IEEE GLOBECOM 2019, pp. 1-6, 2019年12月.
【文献】"Red Hat Ansible"、[online]、Red Hat(登録商標)、[令和2年3月16日検索]、インターネット<https://www.ansible.com>
【文献】"Chef"、[online]、Chef(登録商標)、[令和2年3月16日検索]、インターネット<https://www.chef.io>
【文献】"Cypher Query Language"、[online]、Neo4j(登録商標)、[令和2年3月16日検索]、インターネット<https://neo4j.com/developer/cypher-query-language/>
【発明の概要】
【発明が解決しようとする課題】
【0015】
検証工程が手動で行われる場合の問題点は、複数の異なるシステム要件から自動で生成されたそれぞれのシステム設計に対して、それぞれ異なる検証プログラムを手動で生成しなければならないため、技術者の負担が大きくなることである。
【0016】
上記の理由は、検証対象の具体的なシステム構成(設計)に応じてプログラムの実行主体やパラメータ等の検証プログラムの内容が変化するため、システム設計ごとに検証プログラムの記述を修正することが求められるからである。非特許文献1~非特許文献5には、システム構成に応じた検証プログラムを自動で生成する技術が記載されていない。
【0017】
そこで、本発明は、上述した課題である、システム検証プログラムの生成に係る技術者の負担を軽減できるシステム検証プログラム生成装置、システム検証プログラム生成方法およびシステム検証プログラム生成プログラムを提供することを目的の1つとする。
【課題を解決するための手段】
【0018】
本発明の実施形態において、システム検証プログラム生成装置は、システム要件から抽出された1つ以上の検証項目をシステム要件から導出されたシステム設計が充足するか否かを検証するプログラムである検証プログラムの実行主体およびパラメータをシステム設計から探索する探索部を備える。
【0019】
本発明の実施形態において、システム検証プログラム生成方法は、コンピュータが、システム要件から抽出された1つ以上の検証項目をシステム要件から導出されたシステム設計が充足するか否かを検証するプログラムである検証プログラムの実行主体およびパラメータをシステム設計から探索する。
【0020】
本発明の実施形態において、システム検証プログラム生成プログラムは、コンピュータに、システム要件から抽出された1つ以上の検証項目をシステム要件から導出されたシステム設計が充足するか否かを検証するプログラムである検証プログラムの実行主体およびパラメータをシステム設計から探索する探索処理を実行させる。
【発明の効果】
【0021】
本発明によれば、システム検証プログラムの生成に係る技術者の負担を軽減できる。
【図面の簡単な説明】
【0022】
【
図1】本発明の実施形態のシステム検証プログラム生成装置の構成例を示すブロック図である。
【
図3】システム要件の一例を示すブロック図である。
【
図4】システム要件、検証項目、および検証項目群の対応関係を示す説明図である。
【
図5】検証テンプレートをなすデータ構造(データセット)の一例を示す説明図である。
【
図6】探索手順の表記方法の一例を示す説明図である。
【
図7】探索手順がシステム設計に適用された時の探索処理の一例を示す説明図である。
【
図9】システム設計の一例を示すブロック図である。
【
図10】コマンドテンプレートをなすデータ構造(データセット)の一例を示す説明図である。
【
図11】検証プログラム群の一例を示す説明図である。
【
図12】本実施形態のシステム検証プログラム生成装置100によるシステム検証プログラム生成処理の動作を示すフローチャートである。
【
図13】システム検証プログラム生成装置の変形例を示すブロック図である。
【
図16】本実施形態のシステム検証プログラム生成装置100によるシステム検証プログラム生成処理の他の動作を示すフローチャートである。
【
図17】本実施形態のシステム検証プログラム生成装置100が実装されるコンピュータの構成例を示す概略ブロック図である。
【
図18】本発明によるシステム検証プログラム生成装置の概要を示すブロック図である。
【発明を実施するための形態】
【0023】
[構成の説明]
以下、本発明の実施形態を図面を参照して説明する。
図1は、本発明の実施形態のシステム検証プログラム生成装置の構成例を示すブロック図である。
【0024】
本実施形態のシステム検証プログラム生成装置は、単一のシステム要件と単一のシステム設計に対して、システム設計がシステム要件を充足しているか否かを検証するシステム検証プログラムを、人手を介さずに生成する。すなわち、本実施形態のシステム検証プログラム生成装置によれば、システム検証プログラムの生成に係る技術者の負担を軽減することができる。
【0025】
図1に示すように、本実施形態のシステム検証プログラム生成装置100は、検証項目抽出部110と、実行主体・パラメータ探索部120と、検証プログラム生成部130と、検証テンプレート記憶部140と、コマンドテンプレート記憶部150とを備える。
【0026】
また、
図1に示すように、システム検証プログラム生成装置100は、システム要件およびシステム設計を入力とし、検証プログラム群を出力とする。
【0027】
本実施形態のシステム要件には、システムに達成することが求められる機能の条件が抽象的な形式で記述されている。
図2は、システム要件の一例を示す説明図である。
【0028】
図2に示すように、システム要件は、例えばシステムを構成する要素である構成要素、および構成要素間の接続関係が用いられて定義される。
図2に示す構成要素は、「App1」、「App2」である。また、
図2に示す構成要素間の接続関係は、「HTTP(Hyper Text Transfer Protocol)通信[App->App]」、「帯域[App->App]≧100Mbps」である。
【0029】
図3は、システム要件の一例を示すブロック図である。
図3に示すシステム要件は、グラフ構造で表現された
図2に示すシステム要件である。
【0030】
図3における記法では、アプリケーションやOS等のシステムの構成要素は、ノード(頂点)として表現される。例えば、
図3に示すように、構成要素「App1」、「App2」が、それぞれノードとして表現されている。
【0031】
また、
図3における記法では、各構成要素間の接続関係は、エッジ(枝)として表現される。例えば、
図3に示すように、接続関係「HTTP通信[App->App]」が、「App1」から「App2」へ伸びる破線のエッジとして表現されている。以後、簡便のため、他の図面でも同様の記法を用いる。
【0032】
図3は、アプリケーションApp1とアプリケーションApp2の間で、HTTP通信が可能であること、および両アプリケーション間の通信帯域が100Mbps以上であることの2つの要件を示している。
【0033】
なお、
図2も、
図3に示すシステム要件と同じシステム要件を示している。また、システム要件の具体的な内容や形式は、
図2~
図3に示す例に限定されない。
【0034】
検証項目抽出部110は、入力されたシステム要件から、単一または複数の検証項目で構成される検証項目群を抽出する機能を有する。
【0035】
本実施形態の検証項目は、システム要件に記述されている達成することが求められる機能の条件であって、プログラムが用いられる検証方法が事前に定義された単位ごとに分割された機能の条件である。
【0036】
また、検証項目群は、単一または複数の検証項目で構成されている。検証項目群に含まれる検証項目が全て充足されたとき、システム設計がシステム要件を充足していると判定される。
【0037】
図4は、システム要件、検証項目、および検証項目群の対応関係を示す説明図である。
図4に示すシステム要件は、
図3に示すシステム要件である。
【0038】
また、
図4に示す検証項目は、システム要件に記述されている機能の条件である「HTTP通信[<a:App>-><b:App>]」と、「帯域[<a:App>-><b:App>, 100Mbps]」である。なお、<a:App>はApp1、<b:App>はApp2をそれぞれ意味する。また、
図4に示す検証項目群は、
図4に示す2つの検証項目で構成されている。
【0039】
検証項目抽出部110は、入力されたシステム要件に対して、例えば接続関係が検証テンプレート記憶部140に記憶されている検証テンプレートに規定されている検証項目に合致するか否かを、システム要件に含まれる全ての接続関係に関して判定する。
【0040】
検証テンプレートに規定されている検証項目に接続関係が合致する場合、検証項目抽出部110は、合致する検証項目と、検証項目である接続関係の始点および終点の組を抽出する。次いで、検証項目抽出部110は、抽出された検証項目と、始点および終点の組を検証項目群に追加する。
【0041】
なお、同一の始点および終点の間に複数の異なる検証項目(接続関係)が存在する場合、検証項目抽出部110は、それぞれ独立した検証項目として検証項目群に追加する。
【0042】
また、検証項目は、接続関係以外の機能に関する項目でもよい。例えば、検証項目は、システムの構成要素単体での動作の確認に関する項目でもよい。
【0043】
実行主体・パラメータ探索部120は、抽出された検証項目に対応した検証テンプレートを検証テンプレート記憶部140から取得する。次いで、実行主体・パラメータ探索部120は、取得された検証テンプレートに記載された、コマンドの実行主体の探索手順およびパラメータの探索手順をそれぞれ取得する。
【0044】
本実施形態の検証テンプレートは、検証項目を主項目とするテンプレートである。検証テンプレートには、検証項目に対応する検証プログラムを構成するコマンドの種別と、コマンドの実行主体(Agent)およびパラメータの探索手順とが規定されている。また、検証テンプレートは、検証テンプレート記憶部140に記憶されている。
【0045】
図5は、検証テンプレートをなすデータ構造(データセット)の一例を示す説明図である。
図5に示すように、検証テンプレートには、例えば各検証項目の検証に要するコマンドの種別、コマンドの実行に要する実行主体とパラメータ、および実行主体とパラメータの探索手順がそれぞれ規定される。
【0046】
例えば、検証項目「HTTP通信[<a:App>-><b:App>]」の場合、コマンドの種別として「Run http(Agent, OS.Type, App2.URL)」が規定されている。また、実行主体として「Agent」が規定されている。また、パラメータとして「OS.Type」および「App2.URL」がそれぞれ規定されている。
【0047】
また、探索手順として、例えば実行主体「Agent」に対して「<a>(HostedOn, OS)+OSAgent」が規定されている。なお、
図5に示す<a>はApp1、<b>はApp2をそれぞれ意味する。
【0048】
図5に示す探索手順には、引数として与えられたシステム設計中の始点からコマンドの実行主体またはパラメータに到達するための、システム設計中の構成要素および構成要素間の接続関係の辿り方が定義されている。
【0049】
例えば、探索手順は、非特許文献5に記載されている、グラフ構造を抽象的に表現する手法を用いて記述される。また、より簡便な手法として、文字列の検索に用いられる正規表現を用いて記述する手法も考えられる。以下、本実施形態では、正規表現を用いて記述する例を示す。
【0050】
図6は、探索手順の表記方法の一例を示す説明図である。
図6に示すように、探索手順は、例えば記号「<>」中に記載される探索の始点と、記号「+」で区切られて記載される探索ルール1、探索ルール2、・・・、探索ルールnとで構成される。
【0051】
各探索ルールは、探索ルール1、探索ルール2、・・・、探索ルールnの順に実行される。
図6に示す探索手順「<App>(HostedOn, OS)+OSAgent」は、構成要素Appを探索の始点として、接続関係HostedOnを1回以上繰り返し辿り、最初に到達したOS型の構成要素を探索結果とすることを意味する。なお、
図5に示す探索手順は、
図6に示す表記方法を用いて記述されている。
【0052】
図7は、探索手順がシステム設計に適用された時の探索処理の一例を示す説明図である。
図7に示す探索手順「<App1>(HostedOn,OS)+OSAgent」が、
図7に示すシステム設計に適用された場合の探索処理の例を以下に示す。
【0053】
探索ルール「(HostedOn,OS)」は、接続関係HostedOnを1回以上繰り返し辿り、最初に到達したOS型の構成要素を探索結果とすることを意味する。なお、接続関係HostedOnは、ある構成要素が別の構成要素にホストされている関係性を表す。
【0054】
本実施形態のシステムの構成要素の型および接続関係の型には、継承関係が存在する。具体的には、実行主体・パラメータ探索部120に、「Wire:OS」、「Wire:Machine」、「Wire:NIC」、「Wire:Router」がそれぞれ接続関係HostedOnから継承された接続関係であることが定義されている。すなわち、
図7に示すシステム設計では「Wire:OS」、「Wire:Machine」、「Wire:NIC」、「Wire:Router」が、いずれも接続関係HostedOnに該当する。
【0055】
また、探索ルール「OSAgent」は、接続関係OSAgentで接続されている構成要素を探索結果とすることを意味する。
【0056】
図7に示す探索手順に従う実行主体・パラメータ探索部120は、構成要素App1を始点として探索処理を開始する。実行主体・パラメータ探索部120は、最初に探索ルール1「(HostedOn,OS)」に従って、接続関係HostedOnに属する接続関係Wire:MWを辿り、構成要素MW1へ移動する。
【0057】
構成要素MW1はMW型であるため、実行主体・パラメータ探索部120は、更に接続関係HostedOnに属する接続関係Wire:OSを辿り、構成要素OS1:Ubuntuへ移動する。構成要素OS1:UbuntuはOS型であるため、実行主体・パラメータ探索部120は、探索ルール1に従う処理を終了する。
【0058】
次に、実行主体・パラメータ探索部120は、探索ルール2「OSAgent」に従って、構成要素OS1:Ubuntuから接続関係OSAgentで接続されている構成要素Ansible1へ移動する。実行主体・パラメータ探索部120は、構成要素Ansible1を探索結果として返し、探索ルール2に従う処理および探索処理を終了する。
【0059】
図7に示すように、実行主体・パラメータ探索部120は、入力されたシステム設計に対して取得された探索手順を適用することによって、コマンドの実行主体およびパラメータを検証項目ごとに探索する。
【0060】
上述したように、検証テンプレート記憶部140は、検証項目、実行主体に対応する探索手順、およびパラメータに対応する探索手順がそれぞれ関連付けられて規定されたテンプレートである検証テンプレートを記憶する。
【0061】
また、実行主体・パラメータ探索部120は、検証対象の検証項目を含む検証テンプレートから実行主体に対応する探索手順と、パラメータに対応する探索手順をそれぞれ抽出する。次いで、実行主体・パラメータ探索部120は、抽出された各探索手順を用いて検証プログラムの実行主体およびパラメータをそれぞれ探索する。
【0062】
本実施形態のシステム設計には、システムの構成要素および各構成要素の関係性が、デプロイ可能な程度の内容で定義されている。
図8は、システム設計の一例を示す説明図である。
【0063】
図8に示すように、システム設計には、例えばシステムの各構成要素が主項目として記述される。例えば、
図8には、主項目として「App1」、「App2」、「OS1」がそれぞれ記述されている。
【0064】
また、
図8に示すように、システム設計には、例えば主項目である構成要素の型(type)、属性値(properties)、および接続関係(requirements)がそれぞれ記述される。
【0065】
図9は、システム設計の一例を示すブロック図である。
図9に示すシステム設計は、グラフ構造で表現された
図8に示すシステム設計である。
【0066】
最初に、
図9の右側に示す例から説明する。
図9の右側に示す例では、アプリケーションApp2が、自身へアクセスするために要するURL(”http://www.example.jp”)をパラメータとして保持している。また、アプリケーションApp2をホストしているOS2は、OSの種別を示すType値(”Windows”)をパラメータとして保持している。
【0067】
また、OS2には、プログラムの実行主体となるAgentであるAnsible2が接続されている。また、OS2がインストールされている物理マシンMachine2は、IPアドレスの値(”192.168.1.102”)をパラメータとして保持している。
【0068】
また、Machine2が接続するNIC(Network Interface Card)2は、MACアドレスの値(”aa:bb:cc:dd:ee:ff”)をパラメータとして保持している。また、NIC2が接続するルータ(Router)は、IPアドレスの値(”192.168.1.1”)をパラメータとして保持している。
【0069】
次に、
図9の左側に示す例から説明する。
図9の左側に示す例では、アプリケーションApp1をホストしているOS1は、OSの種別を示すType値(”Windows”)をパラメータとして保持している。
【0070】
また、OS1には、プログラムの実行主体となるAgentであるAnsible1が接続されている。また、OS1がインストールされている物理マシンMachine1は、IPアドレスの値(”192.168.1.101”)をパラメータとして保持している。
【0071】
また、Machine1が接続するNIC1は、MACアドレスの値(”00:11:22:33:44:55”)をパラメータとして保持している。
【0072】
なお、
図8も、
図9に示すシステム設計と同じシステム設計を示している。また、システム設計の具体的な内容や形式は、
図8~
図9に示す例に限定されない。
【0073】
図9に示す例の場合、実行主体・パラメータ探索部120は、検証項目「HTTP通信[<a:App>-><b:App>]」に対応する実行主体およびパラメータとして「Agent=Ansible1, OS.Type=Windows, App2.URL=http://www.example.jp」を探索する。
【0074】
また、実行主体・パラメータ探索部120は、検証項目「帯域[<a:App>→<b:App>, x[Mbps]]」に対応する実行主体およびパラメータとして「Agent1=Ansible1, OS1.Type=Windows, Agent2=Ansible2, OS2.Type=Windows, Machine2.ip=192.168.1.102」を探索する。実行主体・パラメータ探索部120は、探索された実行主体およびパラメータを検証プログラム生成部130に入力する。
【0075】
検証プログラム生成部130は、検証項目ごとに探索されたコマンドの実行主体およびパラメータを用いて、コマンドテンプレート記憶部150に記憶されているコマンドテンプレートを参照する。
【0076】
次いで、検証プログラム生成部130は、参照されたコマンドテンプレートから取得された対応するコマンドにパラメータを代入することによって、検証プログラムを生成する。なお、本実施形態では、スクリプトがコマンドに該当する。
【0077】
本実施形態のコマンドテンプレートには、検証プログラムを構成するコマンドの種別を具体的なスクリプトに変換するためのコマンドの種別とスクリプトの対応関係、およびスクリプトの引数の代入方法がそれぞれ規定されている。
【0078】
図10は、コマンドテンプレートをなすデータ構造(データセット)の一例を示す説明図である。
図10に示すように、コマンドテンプレートは、例えば検証テンプレートから取得されたコマンドの種別を主項目とするテンプレートである。また、1つのコマンドテンプレートには、例えば条件である取得されたコマンドのパラメータと、コマンドの実行主体と、コマンドに該当するスクリプトとで構成される組がそれぞれ規定される。
【0079】
例えば、
図10に示すように、コマンドの種別が「http(Agent, OS.Type, URL)」であるコマンドテンプレートには、条件が「OS.Type == ”Windows”」、実行主体が「Agent」、スクリプトが「Invoke-Restmethod -url {{URL}}」の組が規定されている。
【0080】
図10に示す各スクリプトは、単一または複数の命令文で構成されている。命令文中にパラメータ変数が含まれる場合、検証プログラム生成部130は、探索された該当のパラメータが代入された場合の参照結果を返す。
【0081】
例えば、検証プログラム生成部130が、コマンドの種別が「http(Agent, OS.Type, URL)」であるコマンドテンプレートを参照する場合を考える。パラメータとして「OS.Type=Windows, App2.URL=http://www.example.jp」が入力された場合、パラメータがパラメータ条件「OS.Type == ”Windows”」を満たす。
【0082】
よって、検証プログラム生成部130は、入力された実行主体とパラメータが代入されたスクリプトの組である、「実行主体:Ansible1,スクリプト:Invoke-Restmethod -url http://www.example.jp」の組を参照結果として返す。
【0083】
また、入力されたパラメータが複数のパラメータ条件を満たす場合、検証プログラム生成部130は、該当する実行主体とスクリプトの組を全て取得し、参照結果として返す。
【0084】
例えば、検証プログラム生成部130が、コマンドの種別が「bandwidth(Agent1, OS1.Type, Agent2, OS2.Type, Machine2.ip)」であるコマンドテンプレートを参照する場合を考える。パラメータとして「OS1.Type=Windows, OS2.Type=Windows, Machine2.ip=192.168.1.102」が入力された場合、パラメータが2つのパラメータ条件「OS1.Type == ”Windows”」および「OS2.Type == ”Windows”」を満たす。
【0085】
よって、検証プログラム生成部130は、入力された実行主体とパラメータが代入されたスクリプトの組である、「実行主体:Ansible1,スクリプト:iperf -c 192.168.1.102」および「実行主体:Ansible2,スクリプト:iperf -s」の2つの組を参照結果として返す。
【0086】
なお、コマンドテンプレートは、
図10に示す例に限定されない。また、コマンドは、スクリプト以外の形式で表現されてもよい。
【0087】
本実施形態の検証プログラムは、1つの検証項目を検証するために実行されるプログラムである。また、検証プログラム群は、システム設計がシステム要件を充足することを確認するために実行される検証プログラムの集合である。すなわち、検証プログラム群は、単一または複数の検証プログラムで構成される。
【0088】
図11は、検証プログラム群の一例を示す説明図である。
図11に示す検証プログラム群は、
図3に示すシステム要件、および
図9に示すシステム設計がシステム検証プログラム生成装置100にそれぞれ入力されることによって得られる検証プログラム群の一例である。
【0089】
図11に示すように、検証プログラムは、例えばスクリプトの実行順と、スクリプトの実行主体と、スクリプト本文とで構成される。
図11に示す各検証プログラムの内容は、上記の検証プログラム生成部130が返す各参照結果にそれぞれ対応する。
【0090】
すなわち、
図11に示す検証プログラム群には、検証項目「HTTP通信[App1→App2]」および検証項目「帯域[App1→App2,100[Mbps]]」それぞれに対する検証プログラムが含まれている。検証プログラム生成部130は、各参照結果を基に検証プログラム群を生成し、生成された検証プログラム群を出力する。
【0091】
上述したように、コマンドテンプレート記憶部150は、実行主体、パラメータ、および検証プログラムを構成するコマンド(本例ではスクリプト)がそれぞれ関連付けられて規定されたテンプレートであるコマンドテンプレートを記憶する。
【0092】
検証プログラム生成部130は、探索された実行主体およびパラメータを含むコマンドテンプレートからコマンドを抽出し、抽出されたコマンドの引数に探索されたパラメータを割り当てる。
【0093】
本実施形態のシステム検証プログラム生成装置100は、入力されたシステム要件から単一または複数の検証項目で構成される検証項目群を抽出する(すなわち、システム要件から1つ以上の検証項目を抽出する)検証項目抽出部110を備える。
【0094】
また、システム検証プログラム生成装置100は、検証項目群に含まれる各検証項目に関して、システム要件から導出されたシステム設計から検証プログラムの実行主体およびパラメータを探索する実行主体・パラメータ探索部120を備える。
【0095】
上述したように、本実施形態の検証プログラムは、システム要件から抽出された1つ以上の検証項目をシステム要件から導出されたシステム設計が充足するか否かを検証するプログラムである。
【0096】
また、実行主体・パラメータ探索部120は、検証プログラムの実行主体およびパラメータをシステム設計から探索するための手順である探索手順を用いて実行主体およびパラメータを探索する。
【0097】
また、システム検証プログラム生成装置100は、検証プログラムを構成するコマンドの引数に探索されたパラメータを割り当てることによって検証プログラムを生成する検証プログラム生成部130を備える。
【0098】
本実施形態のシステム検証プログラム生成装置100は、システム要件から導出される複数のシステム設計に対して、複数の検証プログラムをそれぞれ手動での修正を介さずに生成できる。その理由は、実行主体・パラメータ探索部120が複数の異なるシステム設計それぞれに対応する検証プログラムの実行主体およびパラメータを抽出し、検証プログラム生成部130が検証プログラムを構成するコマンドに抽出されたパラメータを代入するためである。
【0099】
[動作の説明]
以下、本実施形態のシステム検証プログラム生成装置100の動作を
図12を参照して説明する。
図12は、本実施形態のシステム検証プログラム生成装置100によるシステム検証プログラム生成処理の動作を示すフローチャートである。
【0100】
最初に、システム検証プログラム生成装置100に、システム要件と、システム要件から導出されたシステム設計がそれぞれ入力される(ステップS101)。
【0101】
次いで、システム検証プログラム生成装置100の検証項目抽出部110は、システム要件から1つ以上の検証項目を抽出する。次いで、検証項目抽出部110は、抽出された検証項目で構成される検証項目群を生成する(ステップS102)。次いで、検証項目抽出部110は、生成された検証項目群を実行主体・パラメータ探索部120に入力する。
【0102】
次いで、実行主体・パラメータ探索部120は、入力された検証項目群に検証プログラムが生成されていない検証項目がないか否かを判定する(ステップS103)。
【0103】
検証項目群に検証プログラムが生成されていない検証項目がある場合(ステップS103におけるNo)、実行主体・パラメータ探索部120は、入力された検証項目群から検証プログラムが生成されていない検証項目を1つ取り出す。
【0104】
次いで、実行主体・パラメータ探索部120は、検証テンプレート記憶部140を参照して、取り出された検証項目に合致する検証項目を含む検証テンプレートを取得する(ステップS104)。
【0105】
次いで、実行主体・パラメータ探索部120は、ステップS104で取得された検証テンプレートに記載された、コマンドの実行主体の探索手順、およびパラメータの探索手順を入力されたシステム設計に適用する。探索手順をシステム設計に適用することによって、実行主体・パラメータ探索部120は、取り出された検証項目に対応する実行主体およびパラメータを探索する(ステップS105)。
【0106】
次いで、実行主体・パラメータ探索部120は、ステップS104で取得された検証テンプレートに記載されたコマンドの種別、および探索された実行主体およびパラメータを検証プログラム生成部130に入力する。
【0107】
次いで、検証プログラム生成部130は、コマンドテンプレート記憶部150に記憶されているコマンドテンプレートを参照する。
【0108】
具体的には、検証プログラム生成部130は、入力されたコマンドの種別に対応するコマンドテンプレートのうち、パラメータ条件および実行主体が入力されたパラメータおよび実行主体に合致するコマンドテンプレートを参照する。次いで、検証プログラム生成部130は、参照されたコマンドテンプレートのスクリプトを取得する。
【0109】
次いで、検証プログラム生成部130は、取得されたスクリプトに、対応する入力されたパラメータを代入することによって、検証プログラムを生成する(ステップS106)。
【0110】
次いで、検証プログラム生成部130は、生成された検証プログラムを検証プログラム群に追加する(ステップS107)。検証プログラムを追加した後、システム検証プログラム生成装置100は、再度ステップS103の処理を行う。
【0111】
検証項目群に検証プログラムが生成されていない検証項目がない場合(ステップS103におけるYes)、検証プログラム生成部130は、検証プログラム群を出力する(ステップS108)。検証プログラム群を出力した後、システム検証プログラム生成装置100は、システム検証プログラム生成処理を終了する。
【0112】
[効果の説明]
本実施形態のシステム検証プログラム生成装置100では、検証項目抽出部110によりシステム要件から抽出された1つ以上の検証項目それぞれに関して、実行主体・パラメータ探索部120が検証テンプレートに規定された探索手順をシステム設計に適用する。探索手順をシステム設計に適用することによって、実行主体・パラメータ探索部120は、検証プログラムの実行主体およびパラメータを探索する。次いで、検証プログラム生成部130は、コマンドテンプレートに規定されたスクリプトにパラメータを代入することによって、検証プログラムを生成する。
【0113】
従って、本実施形態のシステム検証プログラム生成装置100は、システム要件から導出された複数のシステム設計それぞれに対して、検証プログラムの実行主体およびパラメータを探索するので、各システム設計に応じた適切な検証プログラム群を手動での修正を介さずに生成できる。
【0114】
本実施形態のシステム検証プログラム生成装置100が使用されると、ICTシステムの検証工程の高速化および省力化が実現される。システム検証プログラム生成装置100は、検証テンプレートに規定された探索手順を使用するので、例えば同一のシステム要件から導出された複数の異なるシステム設計に対しても、複数の異なる検証プログラムをそれぞれ生成できる。
【0115】
本実施形態のシステム検証プログラム生成装置100は、例えば、システム設計に従って構築されたネットワークシステムが、システム要件通りに動作するか否かの検証に利用される。
【0116】
[変形例]
次に、本実施形態の変形例を説明する。
図13は、システム検証プログラム生成装置の変形例を示すブロック図である。
【0117】
図13に示すように、システム検証プログラム生成装置100は、システム設計装置200および検証プログラム実行装置300と通信可能に接続されている。また、検証プログラム実行装置300は、検証結果記憶部400と通信可能に接続されている。
【0118】
システム設計装置200は、システム要件を入力とし、入力されたシステム要件に対応するシステム設計を出力する装置である。
【0119】
また、検証プログラム実行装置300は、検証プログラム群を入力とし、検証プログラム群に含まれる各検証プログラムに対して、検証プログラムに記載された実行順および実行主体に従って、検証プログラムに記載されたスクリプトを実行する装置である。
【0120】
具体的には、検証プログラム実行装置300は、検証プログラムに記載された実行主体に、検証プログラムに記載された実行順でスクリプトを実行させる。スクリプトを実行した後、検証プログラム実行装置300は、検証結果を出力する。
【0121】
また、検証結果記憶部400は、検証プログラム実行装置300から出力された検証結果を記憶する機能を有する。
【0122】
図14~
図15は、検証結果の一例を示す説明図である。
図14~
図15に示す検証結果は、検証が行われたシステム設計と、検証項目と、検証項目の充足可否を表す判定と、検証プログラムの実行結果とで構成されている。
【0123】
本変形例では、システム設計装置200が様々なシステム要件から導出した多数のシステム設計に関する検証を、検証プログラム実行装置300が実行できる。検証プログラム実行装置300として、例えば新製品の動作を様々な設定や環境で検証することや、機械学習の実行に求められる大量の教師データを生成すること等を目的として検証プログラムを実行する装置が利用される。
【0124】
[動作の説明]
以下、本変形例のシステム検証プログラム生成装置100の動作を
図16を参照して説明する。
図16は、本実施形態のシステム検証プログラム生成装置100によるシステム検証プログラム生成処理の他の動作を示すフローチャートである。
【0125】
最初に、システム設計装置200およびシステム検証プログラム生成装置100に、システム要件がそれぞれ入力される(ステップS201)。
【0126】
次いで、システム設計装置200は、入力されたシステム要件を基にシステム設計を生成する。次いで、システム設計装置200は、生成されたシステム設計をシステム検証プログラム生成装置100に入力する(ステップS202)。
【0127】
ステップS203~ステップS209の各処理は、
図12に示すステップS102~ステップS108の各処理と同様である。なお、ステップS209で、検証プログラム生成部130から出力された検証プログラム群は、検証プログラム実行装置300に入力される。
【0128】
次いで、検証プログラム実行装置300は、入力された検証プログラム群を実行し、検証結果を出力する(ステップS210)。次いで、検証プログラム実行装置300は、出力された検証結果を検証結果記憶部400に蓄積する(ステップS211)。検証結果が蓄積された後、システム検証プログラム生成装置100は、システム検証プログラム生成処理を終了する。
【0129】
[効果の説明]
本変形例では、システム要件と、システム要件からシステム設計装置200により生成されたシステム設計とが入力されたシステム検証プログラム生成装置100が、検証プログラム群を生成する。次いで、検証プログラム実行装置300が、検証プログラム群を実行し、検証プログラム群を実行することによって出力される検証結果を検証結果記憶部400に格納する。
【0130】
よって、本変形例では、検証プログラム群の実行時に出力される検証結果が検証結果記憶部400に格納されるため、大量のシステム要件およびシステム設計に対する膨大な検証結果の蓄積が可能になる。
【0131】
また、本変形例では、システム設計装置200がシステム要件からシステム設計を生成するため、ICTシステムの構築作業の工程における、基本設計工程および詳細設計工程から検証工程までの自動化が実現される。
【0132】
図17は、本実施形態のシステム検証プログラム生成装置100が実装されるコンピュータの構成例を示す概略ブロック図である。
図17に示すコンピュータ10は、CPU(Central Processing Unit)11と、主記憶装置12と、補助記憶装置13と、インタフェース14と、入力デバイス15と、出力デバイス16とを備える。
【0133】
本実施形態のシステム検証プログラム生成装置100は、コンピュータ10に実装される。システム検証プログラム生成装置100の動作を実現するシステム検証プログラム生成プログラムは、補助記憶装置13に記憶されている。
【0134】
CPU11は、システム検証プログラム生成プログラムを補助記憶装置13から読み出して主記憶装置12に展開し、展開されたシステム検証プログラム生成プログラムに従って、上記の実施形態で説明した処理を実行する。主記憶装置12は、例えばRAM(Random Access Memory)である。
【0135】
補助記憶装置13は、例えば一時的でない有形の媒体である。一時的でない有形の媒体として、インタフェース14を介して接続される磁気ディスク、光磁気ディスク、CD-ROM(Compact Disk Read Only Memory )、DVD-ROM(Digital Versatile Disk Read Only Memory )、半導体メモリ等が挙げられる。
【0136】
入力デバイス15は、データや処理命令を入力する機能を有する。入力デバイス15は、例えばキーボードやマウスである。
【0137】
出力デバイス16は、データを出力する機能を有する。出力デバイス16は、例えば液晶ディスプレイ装置等の表示装置、またはプリンタ等の印刷装置である。
【0138】
また、システム検証プログラム生成プログラムが通信回線を介してコンピュータ10に配信される場合、コンピュータ10が、配信されたプログラムを主記憶装置12に展開し、上記の処理を実行してもよい。
【0139】
また、各構成要素の一部または全部は、汎用または専用の回路(circuitry )、プロセッサやこれらの組み合わせによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【0140】
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【0141】
次に、本発明の概要を説明する。
図18は、本発明によるシステム検証プログラム生成装置の概要を示すブロック図である。本発明によるシステム検証プログラム生成装置20は、システム要件から抽出された1つ以上の検証項目をシステム要件から導出されたシステム設計が充足するか否かを検証するプログラムである検証プログラムの実行主体およびパラメータをシステム設計から探索する探索部21(例えば、実行主体・パラメータ探索部120)を備える。
【0142】
そのような構成により、システム検証プログラム生成装置は、システム検証プログラムの生成に係る技術者の負担を軽減できる。
【0143】
また、探索部21は、検証プログラムの実行主体およびパラメータをシステム設計から探索するための手順である探索手順を用いて実行主体およびパラメータを探索してもよい。
【0144】
また、システム検証プログラム生成装置20は、検証項目、実行主体に対応する探索手順、およびパラメータに対応する探索手順がそれぞれ関連付けられて規定されたテンプレートである検証テンプレートを記憶する検証テンプレート記憶部(例えば、検証テンプレート記憶部140)を備え、探索部21は、検証対象の検証項目を含む検証テンプレートから実行主体に対応する探索手順と、パラメータに対応する探索手順をそれぞれ抽出し、抽出された各探索手順を用いて検証プログラムの実行主体およびパラメータをそれぞれ探索してもよい。
【0145】
そのような構成により、システム検証プログラム生成装置は、より容易に検証プログラムの実行主体およびパラメータを探索できる。
【0146】
また、システム検証プログラム生成装置20は、検証プログラムを構成するコマンドの引数に探索されたパラメータを割り当てることによって検証プログラムを生成する生成部(例えば、検証プログラム生成部130)を備えてもよい。
【0147】
また、システム検証プログラム生成装置20は、実行主体、パラメータ、および検証プログラムを構成するコマンドがそれぞれ関連付けられて規定されたテンプレートであるコマンドテンプレートを記憶するコマンドテンプレート記憶部(例えば、コマンドテンプレート記憶部150)を備え、生成部は、探索された実行主体およびパラメータを含むコマンドテンプレートからコマンドを抽出し、抽出されたコマンドの引数に探索されたパラメータを割り当ててもよい。
【0148】
そのような構成により、システム検証プログラム生成装置は、システム検証プログラムの生成に係る技術者の負担を軽減できる。
【0149】
また、システム検証プログラム生成装置20は、システム要件から1つ以上の検証項目を抽出する抽出部(例えば、検証項目抽出部110)を備えてもよい。
【0150】
また、システム検証プログラム生成装置20には、システム要件を入力とし、システム要件に対応するシステム設計を生成するシステム設計装置(例えば、システム設計装置200)から、生成されたシステム設計が入力されてもよい。
【0151】
また、システム検証プログラム生成装置20は、生成された検証プログラムを入力とし、検証プログラムを実行して検証結果を出力する検証プログラム実行装置(例えば、検証プログラム実行装置300)と通信可能に接続されていてもよい。
【0152】
また、検証プログラム実行装置から出力された検証結果は、検証結果記憶部(例えば、検証結果記憶部400)に格納されてもよい。
【符号の説明】
【0153】
10 コンピュータ
11 CPU
12 主記憶装置
13 補助記憶装置
14 インタフェース
15 入力デバイス
16 出力デバイス
20、100 システム検証プログラム生成装置
21 探索部
110 検証項目抽出部
120 実行主体・パラメータ探索部
130 検証プログラム生成部
140 検証テンプレート記憶部
150 コマンドテンプレート記憶部
200 システム設計装置
300 検証プログラム実行装置
400 検証結果記憶部