(57)【要約】【課題】検査モデルを自動生成するモデル生成装置において、より簡素な手順で検査モデルを生成できるようにする。【解決手段】モデル生成装置１は、モデル検査ツールによる検査対象となる検査用のプログラムを表すＰｒｏｍｅｌａモデル記述ファイル４１を生成するように構成された処理部１０を備える。処理部１０は、自然言語で記載された仕様書２１から、要素情報５１Ｃを抽出し、Ｐｒｏｍｅｌａモデル記述ファイル４１の雛型として予め準備された少なくとも１つのモデルテンプレート２３Ａ，２３Ｂ，２３Ｃに要素情報５１Ｃを組み込むことで、Ｐｒｏｍｅｌａモデル記述ファイル４１を生成するように構成される。【選択図】図１
2020067976.tif 000002
【特許請求の範囲】
【請求項１】
モデル検査ツールによる検査対象となる検査用のプログラムを表す検査モデル（４１）を生成するように構成されたモデル生成装置（１）であって、
検査用のプログラムに対して入出力されるデータを特定するための情報を表す要素情報を含み、自然言語で記載されたテキストファイル（２１）から前記要素情報を抽出するように構成された要素抽出部（１０：Ｓ１２０〜Ｓ１４０）と、
検査モデルの雛型として予め準備された少なくとも１つのモデルテンプレートに前記要素情報を組み込むことで前記検査モデルを生成するように構成されたモデル生成部（１０：Ｓ３４０，Ｓ３５０）と、
を備えるモデル生成装置。
【請求項２】
請求項１に記載のモデル生成装置であって、
前記要素抽出部は、予め準備された要素ＩＤ（２２Ａ，２２Ｂ）とキーワード群（２２Ｃ）との関係を記述した要素情報ファイル（２２）を参照することで、前記テキストファイルから前記キーワード群のうちの何れかのキーワードに対応する文字列を抽出し、該文字列を、前記要素ＩＤに対応する要素情報として抽出する
ように構成されたモデル生成装置。
【請求項３】
請求項１又は請求項２に記載のモデル生成装置であって、
前記モデル生成部は、予め準備された命令ファイルであって前記モデルテンプレートに対する記述を行うための少なくとも１つの命令が記述された依存部ファイル（２４）に記述された命令に従って、前記モデルテンプレートに前記要素情報を組み込むことで前記検査モデルを生成する
ように構成されたモデル生成装置。
【請求項４】
請求項１から請求項３までのいずれか１項に記載のモデル生成装置であって、
前記要素抽出部が前記テキストファイルから前記要素情報を抽出できない場合に、使用者に前記要素情報の入力を求めるように構成された入力要求部（Ｓ１５０，Ｓ１６０）、
をさらに備えるモデル生成装置。
【請求項５】
請求項１から請求項４までのいずれか１項に記載のモデル生成装置であって、
予め準備された複数のモデルテンプレートから前記検査モデルの生成に利用する少なくとも１つのモデルテンプレートを使用者に選択させるように構成された選択要求部（Ｓ３１０，Ｓ３２０）、
をさらに備え、
前記モデル生成部は、前記使用者に選択された少なくとも１つのモデルテンプレートを用いて前記検査モデルを生成する
ように構成されたモデル生成装置。
【請求項６】
請求項１から請求項５までのいずれか１項に記載のモデル生成装置であって、
前記モデル生成部は、前記検査モデルとして、モデル検査ツールＳＰＩＮでの検査を実行可能なプログラミング言語Ｐｒｏｍｅｌａにて記述された検査モデルを生成する
ように構成されたモデル生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、検査モデルを自動生成する技術に関する。
【背景技術】
【０００２】
車両等に搭載される電子制御装置で実行されるプログラムは、安全作動することが求められる。プログラムの作動を検証する手法として、プログラムを種々の条件で疑似的に作動させるように構成されたモデル検査ツールを用いる手法がある。
【０００３】
モデル検査ツールを用いる場合、モデル検査ツールによる検査対象となる検査用のプログラムを表す検査モデルを予め準備する必要があり、この検査モデルを自動生成する技術が知られている。例えば、下記特許文献１には、モデリング言語であるＵＭＬ形式、またはＶＤ−ＳＬＭ形式で記述されたファイルから検査モデルに必要な要素を抽出して検査モデルを生成する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−３０５０７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、検査モデルに要求される仕様は、モデリング言語でない自然言語にて記述された仕様書にまとめられていることが多い。しかしながら、発明者の詳細な検討の結果、このような仕様書から、上記特許文献１の技術を利用して検査モデルを生成しようとすると、自然言語で記述された仕様書を、モデリング言語で記述されたファイルに手作業で変換する必要があるという課題が見出された。
【０００６】
本開示の１つの局面は、検査モデルを自動生成するモデル生成装置において、より簡素な手順で検査モデルを生成できるようにすることにある。
【課題を解決するための手段】
【０００７】
本開示の一態様は、モデル検査ツールによる検査対象となる検査用のプログラムを表す検査モデル（４１）を生成するように構成されたモデル生成装置（１）であって、要素抽出部（１０：Ｓ１２０〜Ｓ１４０）と、モデル生成部（１０：Ｓ３４０，Ｓ３５０）と、を備える。要素抽出部は、検査用のプログラムに対して入出力されるデータを特定するための情報を表す要素情報（５１Ｃ）を含み、自然言語で記載されたテキストファイル（２１）から要素情報を抽出するように構成される。モデル生成部は、検査モデルの雛型として予め準備された少なくとも１つのモデルテンプレート（２３）に要素情報を組み込むことで検査モデルを生成するように構成される。
【０００８】
このような構成によれば、自然言語で記述されたテキストファイルから直接検査モデルを生成するので、モデリング言語で記述されたファイルを準備することなく、検査モデルを生成することができる。よって、モデリング言語で記述されたファイルを準備する工数分だけ簡素な手順で検査モデルを生成することができる。
【図面の簡単な説明】
【０００９】
【図１】モデル生成装置の構成を示すブロック図である。
【図２】要素抽出処理のフローチャートである。
【図３】仕様書のインタフェース部分の一例である。
【図４】要素情報ファイルの一例である。
【図５】要素記述ファイルの一例である。
【図６】モデル記述変換処理のフローチャートである。
【図７】モデルテンプレートの一例である。
【図８】テンプレート依存部関係ファイルの一例である。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら、本開示の一態様の実施形態を説明する。
［１．背景］
プログラムの作動を検証する手法の１つである仕様検証技術として、モデル検査ツールＳＰＩＮを用いたモデル検査がある。ＳＰＩＮでは要求仕様や設計仕様から検査したい検査モデルを所定の言語であるＰｒｏｍｅｌａによって記述する。そして検査モデルに対して満たすべき仕様の制約をＬＴＬ式という論理式によって表す。このＰｒｏｍｅｌａ記述とＬＴＬ式とをＳＰＩＮにかけることで検査モデルの全ての振る舞いが仕様の制約を満たすかどうかを自動検査することができる。
【００１１】
このように、検査モデルを用いた検証は、ソフトウェア開発時プロセスにおける仕様策定や設計時の品質向上に役立つ。ただし、ＳＰＩＮのための検査モデル生成には、Ｐｒｏｍｅｌａの習得が必要になり、さらに検査モデルの生成そのものにもある程度の工数が必要となるため、ＳＰＩＮを導入するうえで障害になり得る。
【００１２】
これに対して、下記のモデル生成装置は、自然言語で記述された仕様書のうち、インタフェース部分から、ＳＰＩＮを実行可能な検査モデルを自動生成できるように構成される。モデル生成装置の詳細を以下に説明する。
【００１３】
［２．実施形態］
［２−１．構成］
図１に示すモデル生成装置１は、自然言語で記述された仕様書２１に基づいて、前述の検査モデルとしてのＰｒｏｍｅｌａモデル記述ファイル４１を生成するように構成されている。Ｐｒｏｍｅｌａモデル記述ファイル４１は、モデル検査ツールＳＰＩＮによる検査対象となる検査用のプログラムである。
【００１４】
モデル生成装置１は、処理部１０を備える。また、モデル生成装置１は、データ記録部２０と、表示部３１と、入力部３２と、を備えてもよい。
データ記録部２０は、仕様書２１、要素情報ファイル２２、モデルテンプレートファイル群２３、依存部ファイル２４を格納する記録装置である。データ記録部２０は、例えば、ハードディスクドライブ、半導体メモリ等、データを記録可能な任意の形態を採り得る。また、データ記録部２０は、処理部１０から読み出しおよび書込みができるように構成される。
【００１５】
モデルテンプレートファイル群２３には、複数のモデルテンプレート２３Ａ，２３Ｂ，２３Ｃが含まれる。なお、仕様書２１、要素情報ファイル２２、モデルテンプレート２３Ａ，２３Ｂ，２３Ｃ、依存部ファイル２４については後述する。
【００１６】
表示部３１は、処理部１０から出力される映像信号に応じて使用者に対するメッセージを表示させるディスプレイとして構成される。入力部３２は、使用者が処理部１０に対して文字列および指令を入力するためのキーボード等の被操作部として構成される。
【００１７】
処理部１０は、ＣＰＵ１１と、例えば、ＲＡＭ又はＲＯＭ等の半導体メモリ（以下、メモリ１２）と、を有するマイクロコンピュータを備える。処理部１０の各機能は、ＣＰＵ１１が非遷移的実体的記録媒体に格納されたプログラムを実行することにより実現される。この例では、メモリ１２が、プログラムを格納した非遷移的実体的記録媒体に該当する。また、このプログラムが実行されることで、プログラムに対応する方法が実行される。なお、非遷移的実体的記録媒体とは、記録媒体のうちの電磁波を除く意味である。また、処理部１０は、１つのマイクロコンピュータを備えてもよいし、複数のマイクロコンピュータを備えてもよい。
【００１８】
処理部１０は、図１に示すように、処理部１０が実行する機能として、インタフェース要素抽出部１６と、モデル記述変換部１８と、を備える。処理部１０が備える各部の機能を実現する手法はソフトウェアに限るものではなく、その一部又は全部の機能は、一つあるいは複数のハードウェアを用いて実現されてもよい。例えば、上記機能がハードウェアである電子回路によって実現される場合、その電子回路は、デジタル回路、又はアナログ回路、あるいはこれらの組合せによって実現されてもよい。
【００１９】
処理部１０は、インタフェース要素抽出部１６の機能を用いて、後述する要素抽出処理を実施することで要素記述ファイル１７を生成する。処理部１０は、モデル記述変換部１８の機能を用いて、後述するモデル記述変換処理を実施することでＰｒｏｍｅｌａモデル記述ファイル４１を生成する。
【００２０】
［２−２．処理］
［２−２−１．要素抽出処理］
処理部１０が実行する要素抽出処理について、図２のフローチャートを用いて説明する。要素抽出処理は、仕様書２１の複数のインタフェース部分２１Ａ，２１Ｂと要素情報ファイル２２とを入力として、中間生成物である要素記述ファイル１７を出力する処理である。要素抽出処理は、例えば、使用者によって入力部３２を介してＰｒｏｍｅｌａモデル記述ファイル４１を生成する指令が入力されると開始される。
【００２１】
ここで、仕様書２１とは、最終的に生成されるＰｒｏｍｅｌａモデル記述ファイル４１に要求される仕様が自然言語で記述されたテキストファイルである。なお、自然言語とは、人間がお互いにコミュニケーションを行うための自然発生的な言語を表す。自然言語は、プログラミング言語を含む人工言語の対義語である。
【００２２】
また、仕様書２１には、要素情報５１Ｃが含まれる。要素情報５１Ｃとは、検査用のプログラムに対して入出力されるデータ、換言すれば、あるモジュールを呼び出すためのパラメータを特定するための情報を表す。要素情報５１Ｃは、仕様書２１中における複数のインタフェース部分２１Ａ，２１Ｂのそれぞれに記述される。
【００２３】
仕様書２１のインタフェース部分２１Ａ，２１Ｂとは、図３に示すように仕様書２１の記述のうち、インタフェースの個々の内容であるインタフェース要素５１Ａが多数列挙された部分を示す。なお、図３に例示する仕様書２１は、「OSEK/VDX Operating System Version 2.2.3 第50ページ」の記載の内容を引用している。
それぞれのインタフェース要素５１Ａには、図３に示すように、要素名５１Ｂと要素情報５１Ｃとが対応付けて記述されている。なお、図３には、２つのインタフェース部分２１Ａ，２１Ｂが仕様書２１に含まれる例を開示しているが、インタフェース部分の数は１つでも３つ以上でもよい。
【００２４】
要素抽出処理は、図２に示すように、まず、Ｓ１１０で、処理部１０は、インタフェースＩＤをカウントアップする。インタフェースＩＤは、初期値を０とし、Ｓ１１０では１だけカウントアップする。なお、インタフェースＩＤは、仕様書２１中に複数存在するインタフェース部分２１Ａ，２１Ｂを別々に管理するために付される識別番号である。
【００２５】
インタフェースＩＤは、インタフェース部分２１Ａ，２１Ｂのそれぞれに対して、仕様書２１の記述の先頭から順に付される。本実施形態の仕様書２１の場合、先に記述されたインタフェース部分２１Ａに対してインタフェースＩＤ「１」が付され、後に記述されたインタフェース部分２１Ｂに対してインタフェースＩＤ「２」が付される。
【００２６】
続いて、処理部１０は、Ｓ１２０〜Ｓ１４０で、現在のインタフェースＩＤが対応するインタフェース部分２１Ａ，２１Ｂから要素情報５１Ｃを抽出する。一般的に自然言語で記述された仕様書２１は、決まったフォーマットで記載されていないため、機械的に処理することが難しい。
【００２７】
しかし、インタフェース部分２１Ａ，２１Ｂに絞って着目すれば、インタフェース名、引数、戻り値、引数の型等のインタフェースの性質を示す共通の記述が複数含まれることが多い。また、要素名として使用される文言は、仕様書２１によらず同様の記述を行うことが多い。
【００２８】
このため、インタフェース部分２１Ａ，２１Ｂでは、抽出すべき要素情報５１Ｃを、予め絞り込むことができる。よって、本実施形態では、機械的に要素情報５１Ｃを抽出する処理が比較的容易なインタフェース部分２１Ａ，２１Ｂの記述から、形式的な記述である要素情報５１Ｃを抜き出す処理を行う。
【００２９】
この際、まず、Ｓ１２０で、処理部１０は、インタフェース部分２１Ａ，２１Ｂ中の未抽出のインタフェース要素５１Ａを抽出する。続いて、Ｓ１３０で、処理部１０は、インタフェース要素５１Ａに含まれるテキストのうちの要素名５１Ｂと一致する単語等の文字列が、要素情報ファイル２２内のキーワード群２２Ｃの中に存在するか否かを判定する。
【００３０】
ここで、要素情報ファイル２２は、図４に示すように、予め準備された要素ＩＤ２２Ａ，２２Ｂとキーワード群２２Ｃとの関係を記述したテキストファイルである。要素情報ファイル２２には、ある要素ＩＤ２２Ａ，２２Ｂに対応する１または複数の文字列を含むキーワード群２２Ｃが、複数の要素ＩＤ２２Ａ，２２Ｂに対してそれぞれ列挙されている。
【００３１】
キーワード群２２Ｃには、予めインタフェース部分２１Ａ，２１Ｂ内での要素名５１Ｂとして使用されそうな文字列が複数登録されている。要素ＩＤ２２Ａ，２２Ｂは、キーワード群２２Ｃを挟むように、キーワード群２２Ｃの左側、および右側に記述され、右側の要素ＩＤ２２Ｂの記述では、スラッシュ（／）を付すことで、左側の要素ＩＤ２２Ａの記述と区別される。
【００３２】
処理部１０は、Ｓ１３０で、インタフェース要素５１Ａのうちの要素名５１Ｂと一致する文字列が要素情報ファイル内のキーワード群２２Ｃの中に存在すると判定した場合には、Ｓ１４０へ移行する。そして、Ｓ１４０で、要素名５１Ｂのすぐ後、すなわち要素名５１Ｂの右隣りに記述された要素情報５１Ｃと、キーワード群２２Ｃの左右に記述された要素ＩＤ２２Ａ，２２Ｂとをセットにして、要素記述ファイル１７に記述し、Ｓ１８０に移行する。
【００３３】
図５に示す要素記述ファイル１７では、要素ＩＤ２２Ａ，２２Ｂは、要素情報５１Ｃを挟むように、要素情報５１Ｃの左側、および右側に記述され、右側の記述では、スラッシュ（／）を付すことで、左側の記述と区別される。
【００３４】
一方、処理部１０は、Ｓ１３０で、要素名５１Ｂと一致する文字列がキーワード群２２Ｃの中に存在しないと判定した場合には、Ｓ１５０へ移行し、使用者に対して要素名５１Ｂと要素ＩＤ２２Ａとの関係の手動入力を求める。この際、要素名５１Ｂと要素ＩＤ２２Ａとの関係の手動入力を促す画像および文字を表示部３１に表示させる。
【００３５】
ここでは、使用者が要素記述ファイル１７に、要素名５１Ｂと要素ＩＤ２２Ａとの関係を直接記述するように求めてもよいが、本実施形態では、要素情報ファイル２２のキーワード群２２Ｃに、要素名５１Ｂと一致する文字列を追記する修正を求める。
【００３６】
続いて、Ｓ１６０で、処理部１０は、要素名５１Ｂと要素ＩＤ２２Ａとの関係の手動入力があったか否かを判定する。処理部１０は、Ｓ１６０で手動入力がないと判定した場合には、Ｓ１６０に戻る。
【００３７】
一方、処理部１０は、Ｓ１６０で手動入力があったと判定した場合には、Ｓ１７０へ移行し、使用者による手動入力に従って、要素情報ファイル２２の修正、すなわち、キーワード群２２Ｃに要素名５１Ｂを追記する修正を行う。続いて、Ｓ１３０に戻る。なお、処理がＳ１３０に戻ると、修正された要素情報ファイル２２を用いて、処理部１０が要素名５１Ｂと要素ＩＤ２２Ａとのセットを抽出できるようになる。
【００３８】
続いて、Ｓ１８０で、処理部１０は、未抽出のインタフェース要素５１Ａがあるか否かを判定する。処理部１０は、Ｓ１８０で未抽出のインタフェース要素５１Ａがあると判定した場合には、Ｓ１２０に戻る。
【００３９】
一方、処理部１０は、Ｓ１８０で未抽出のインタフェース要素５１Ａがないと判定した場合には、Ｓ１８５に移行し、要素ＩＤ２２Ａ，２２Ｂと、インタフェースＩＤとをセットにして、要素記述ファイル１７に記述する。つまり、インタフェースＩＤと、Ｓ１２０〜Ｓ１４０で抽出された要素ＩＤ２２Ａ，２２Ｂとを対応付けて記述する。この処理では、既にＳ１４０で要素記述ファイル１７に記述された要素情報５１Ｃと要素ＩＤ２２Ａ，２２Ｂとのセットに対して、インタフェースＩＤを追記してもよいし、要素情報５１Ｃと要素ＩＤ２２Ａ，２２Ｂとのセットとは別に、要素ＩＤ２２Ａ，２２ＢとインタフェースＩＤとのセットを要素記述ファイル１７に記述してもよい。
続いて、Ｓ１９０へ移行し、未抽出のインタフェース部分２１Ａ，２１Ｂがあるか否かを判定する。処理部１０は、Ｓ１９０で未抽出のインタフェース部分２１Ａ，２１Ｂがあると判定した場合には、Ｓ１１０に戻る。
【００４０】
一方、処理部１０は、Ｓ１９０で未抽出のインタフェース部分２１Ａ，２１Ｂがないと判定した場合には、Ｓ２００へ移行し、生成された要素記述ファイル１７を出力し、図２の要素抽出処理を終了する。なお、要素記述ファイル１７は、処理部１０において内部的に出力され、例えば、メモリ１２に格納される。
【００４１】
［１−２−２．モデル記述変換処理］
次に、処理部１０が実行するモデル記述変換処理について、図６のフローチャートを用いて説明する。また、モデル記述変換処理は、要素記述ファイル１７、モデルテンプレートファイル群２３、依存部ファイル２４を入力として、Ｐｒｏｍｅｌａモデル記述ファイル４１を出力する処理である。
【００４２】
モデル記述変換処理は、例えば、要素抽出処理が終了すると、要素抽出処理に続いて実行される処理である。なお、以下では、モデルテンプレートファイル群２３内における１のモデルテンプレート２３Ａ，２３Ｂ，２３Ｃを用いてＰｒｏｍｅｌａモデル記述ファイル４１を生成する例について述べるが、複数のモデルテンプレート２３Ａ，２３Ｂ，２３Ｃを用いてＰｒｏｍｅｌａモデル記述ファイル４１を生成してもよい。
【００４３】
モデル記述変換処理では、まず、Ｓ３１０で、処理部１０は、モデルテンプレートファイル群２３から何れかのモデルテンプレート２３Ａ，２３Ｂ，２３Ｃを選択させる。この際、モデルテンプレート２３Ａ，２３Ｂ，２３Ｃの選択を促す画像および文字を表示部３１に表示させる。モデルテンプレート２３Ａ，２３Ｂ，２３Ｃとしては、エンジン制御用、信号機制御用等、種々の目的に適合する複数の雛形が準備されており、使用者は目的に合致したテンプレートを選択する。なお、モデルテンプレート２３Ａ，２３Ｂ，２３Ｃの詳細については後述する。
【００４４】
続いて、Ｓ３２０で、処理部１０は、何れかのモデルテンプレート２３Ａ，２３Ｂ，２３Ｃが使用者によって選択されたか否かを判定する。Ｓ３２０でモデルテンプレート２３Ａ，２３Ｂ，２３Ｃが選択されていないと判定した場合には、Ｓ３２０に戻る。
【００４５】
一方、処理部１０は、Ｓ３２０でモデルテンプレート２３Ａ，２３Ｂ，２３Ｃが選択されたと判定した場合には、Ｓ３３０へ移行する。
ここで、モデルテンプレート２３Ａ，２３Ｂ，２３Ｃは、モデル化しようとする仕様書の特徴に合わせて予め準備されたテンプレートである。仕様書の特徴には、例えば、通信に関するモデルテンプレートの場合、モジュール通信を他の処理と同期させるか非同期とするか、或いは通信が１対１で実施されるか１対多で実施されるか等が含まれる。
【００４６】
モデルテンプレート２３Ａ，２３Ｂ，２３Ｃは、例えば、図７に示すように、Ｐｒｏｍｅｌａで記述されたテンプレートであり、記述の各所に依存部ＩＤ２３Ｄ，２３Ｅが準備されている。依存部ＩＤ２３Ｄ，２３Ｅは、実質的には空欄である。依存部ＩＤ２３Ｄ，２３Ｅは、例えば、［メッセージ定義部］、［パラメータ定義部］等というように、それぞれの空欄の位置を特定するための名称が対応付けられている。
【００４７】
処理部１０は、Ｓ３３０で、依存部ファイル２４を取得し、依存部ファイル２４から依存部ＩＤ２３Ｄ，２３Ｅと一致するＩＤを検索する。そして、依存部ファイル２４から依存部ＩＤ２３Ｄ，２３Ｅに対応する生成アルゴリズムを抽出する。ここで、依存部ファイル２４とは、モデルテンプレート２３Ａ，２３Ｂ，２３Ｃの空欄を埋めるための１または複数の命令が記述されたプログラムファイルである。生成アルゴリズム２４Ａには、Ｐｒｏｍｅｌａ内の空欄を埋めるために必要な要素情報５１Ｃと、その要素情報５１Ｃを用いてどのようなＰｒｏｍｅｌａ記述を生成するかを示す手順に関する命令が記述されている。
【００４８】
依存部ファイル２４は、図８に示すように、依存部ＩＤ２３Ｄ，２３Ｅと、依存部ＩＤ２３Ｄ，２３Ｅに対応する命令としての生成アルゴリズム２４Ａとが記述されている。図８における生成アルゴリズム２４Ａは、命令の一例を説明するために自然言語に記述されているが、生成アルゴリズム２４Ａを処理部１０が実行できるためにはプログラム言語で記述されていることが好ましい。
【００４９】
依存部ファイル２４において、依存部ＩＤ２３Ｄ，２３Ｅは、生成アルゴリズム２４Ａの左側、および右側に記述され、右側の依存部ＩＤ２３Ｅの記述では、スラッシュ（／）を付すことで、左側の依存部ＩＤ２３Ｄの記述と区別される。
【００５０】
続いて、Ｓ３４０で、処理部１０は、生成アルゴリズム２４Ａに従って、生成アルゴリズム２４Ａで指定される要素記述ファイル１７中の要素情報５１Ｃを組み合わせて、依存部ＩＤ２３Ｄ，２３Ｅに対応する記述であるＰｒｏｍｅｌａ記述を生成する。
【００５１】
続いて、Ｓ３５０で、処理部１０は、生成したＰｒｏｍｅｌａ記述をモデルテンプレートファイル内の依存部ＩＤの部分に埋め込む。続いて、Ｓ３６０で、処理部１０は、モデルテンプレートファイル内に、未抽出の依存部ＩＤ２３Ｄ，２３Ｅがあるか否かを判定する。Ｓ３６０で未抽出の依存部ＩＤ２３Ｄ，２３Ｅがあると判定した場合には、Ｓ３３０に戻る。
【００５２】
一方、処理部１０は、Ｓ３６０で未抽出の依存部ＩＤ２３Ｄ，２３Ｅがないと判定した場合には、Ｓ３７０へ移行し、全ての依存部ＩＤ２３Ｄ，２３Ｅの部分の記述が埋め込まれたモデルテンプレート２３Ａ，２３Ｂ，２３ＣをＰｒｏｍｅｌａモデル記述ファイル４１として出力した後、図６のモデル記述変換処理を終了する。
【００５３】
［２−３．効果］
以上詳述した実施形態によれば、以下の効果を奏する。
（２ａ）本開示の一態様のモデル生成装置１は、モデル検査ツールによる検査対象となる検査用のプログラムを表すＰｒｏｍｅｌａモデル記述ファイル４１を生成するように構成された処理部１０を備える。処理部１０は、Ｓ１２０〜Ｓ１４０で、自然言語で記載された仕様書２１から、要素情報５１Ｃを抽出するように構成される。処理部１０は、Ｓ３４０，Ｓ３５０で、Ｐｒｏｍｅｌａモデル記述ファイル４１の雛型として予め準備された少なくとも１つのモデルテンプレート２３Ａ，２３Ｂ，２３Ｃに要素情報５１Ｃを組み込むことで、Ｐｒｏｍｅｌａモデル記述ファイル４１を生成するように構成される。
【００５４】
このような構成によれば、自然言語で記述された仕様書２１からＰｒｏｍｅｌａモデル記述ファイル４１を生成するので、プログラミング言語で記述された仕様書２１を準備することなく、Ｐｒｏｍｅｌａモデル記述ファイル４１を生成することができる。よって、プログラミング言語で記述された仕様書２１を準備する工数分だけ簡素な手順でＰｒｏｍｅｌａモデル記述ファイル４１を生成することができる。
【００５５】
（２ｂ）処理部１０は、Ｓ１２０〜Ｓ１４０で、予め準備された要素ＩＤ２２Ａとキーワード群２２Ｃとの関係を記述した要素情報ファイル２２を参照することで、仕様書２１からキーワード群のうちの何れかのキーワードに対応する文字列を抽出し、この文字列を、要素ＩＤ２２Ａに対応する要素情報５１Ｃとして抽出する。
【００５６】
このような構成によれば、要素ＩＤ２２Ａとキーワード群との関係を記述した要素情報ファイル２２を準備しておき、要素情報５１Ｃを抽出する際に、この要素情報ファイル２２を参照するので、抽出しようとする要素情報５１Ｃを変更する際に、要素情報ファイル２２を書き換えるだけでよく、要素情報５１Ｃを抽出するためのプログラムの書き換えを不要とすることができる。
【００５７】
（２ｃ）処理部１０は、Ｓ３４０，Ｓ３５０で、予め準備された依存部ファイル２４に記述された命令に従って、モデルテンプレート２３Ａ，２３Ｂ，２３Ｃに要素情報５１Ｃを組み込むことでＰｒｏｍｅｌａモデル記述ファイル４１を生成する。
【００５８】
このような構成によれば、依存部ファイル２４内の命令に従ってモデルテンプレート２３Ａ，２３Ｂ，２３Ｃに対して要素情報５１Ｃを組み込むことができるので、単に要素情報５１Ｃを組み込む場合と比較して、命令に応じて組み込む要素情報５１Ｃを変更するなど、モデルテンプレート２３Ａ，２３Ｂ，２３Ｃに対してより適切な要素情報５１Ｃを組み込むことができる。
【００５９】
（２ｄ）処理部１０は、仕様書２１から要素情報５１Ｃを抽出できない場合に、Ｓ１５０，Ｓ１６０で、使用者に要素情報５１Ｃの入力を求める。本実施形態では、要素情報ファイル２２の修正を求めることで、間接的に使用者に要素情報５１Ｃの入力を求める。
【００６０】
このような構成によれば、仕様書２１から要素情報５１Ｃを抽出できない場合であっても、使用者が要素情報５１Ｃの入力を補助することができるので、良好に要素情報５１Ｃを抽出することができる。
【００６１】
（２ｅ）処理部１０は、Ｓ３１０，Ｓ３２０で、予め準備された複数のモデルテンプレート２３Ａ，２３Ｂ，２３ＣからＰｒｏｍｅｌａモデル記述ファイル４１の生成に利用する少なくとも１つのモデルテンプレート２３Ａ，２３Ｂ，２３Ｃを使用者に選択させるように構成される。そして、Ｓ３４０，Ｓ３５０で、使用者に選択された少なくとも１つのモデルテンプレート２３Ａ，２３Ｂ，２３Ｃを用いてＰｒｏｍｅｌａモデル記述ファイル４１を生成する。
【００６２】
このような構成によれば、複数のモデルテンプレート２３Ａ，２３Ｂ，２３Ｃが準備されている場合に、Ｐｒｏｍｅｌａモデル記述ファイル４１に最適なモデルテンプレート２３Ａ，２３Ｂ，２３Ｃを使用者に選択させることができる。よって、良好にＰｒｏｍｅｌａモデル記述ファイル４１を生成することができる。
【００６３】
（２ｆ）処理部１０は、Ｓ３４０，Ｓ３５０では、Ｐｒｏｍｅｌａモデル記述ファイル４１として、モデル検査ツールＳＰＩＮでの検査を実行可能なプログラミング言語Ｐｒｏｍｅｌａにて記述されたモデルを生成する。
【００６４】
このような構成によれば、習熟に時間を要するプログラミング言語Ｐｒｏｍｅｌａで記述されたＰｒｏｍｅｌａモデル記述ファイル４１を生成することができ、このＰｒｏｍｅｌａモデル記述ファイル４１を用いて、Ｐｒｏｍｅｌａに対応したモデル検査ツールＳＰＩＮによる検査を実施することができる。
【００６５】
［３．他の実施形態］
以上、本開示の実施形態について説明したが、本開示は上述の実施形態に限定されることなく、種々変形して実施することができる。
【００６６】
（３ａ）上記実施形態では、モデル検査ツールＳＰＩＮについての検査モデルを生成したが、これに限定されるものではない。例えば、モデル検査ツールＮｕＳＭＶ、ＬＴＳＡ等についての検査モデルを生成してもよい。モデル検査ツールＮｕＳＭＶ、ＬＴＳＡについても、ＳＰＩＮ同様に、独自の言語や所定の書式の記述等を必要とするため、本実施形態の構成を適用すれば、より簡素な手順で検査モデルを生成することができる。
【００６７】
（３ｂ）上記実施形態では、要素名の直後に記述された文字列や、各ＩＤに挟まれて記述された文字列を、要素名やＩＤに対応する文字列として抽出したが、これに限定されるものではない。例えば、要素名やＩＤの直前、直後に記述された文字列、或いは改行を挟んで記述された文字列等を、要素名やＩＤに対応する文字列として抽出してもよい。
【００６８】
（３ｃ）上記実施形態における１つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、１つの構成要素が有する１つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、１つの構成要素によって実現したり、複数の構成要素によって実現される１つの機能を、１つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。
【００６９】
（３ｄ）上述したモデル生成装置１の他、当該モデル生成装置１を構成要素とするシステム、当該モデル生成装置１としてコンピュータを機能させるためのプログラム、このプログラムを記録した半導体メモリ等の非遷移的実態的記録媒体、モデル生成方法など、種々の形態で本開示を実現することもできる。
【００７０】
[４．実施形態の構成と本開示の構成との対応関係]
上記実施形態でのＰｒｏｍｅｌａモデル記述ファイル４１は本開示での検査モデルに相当し、上記実施形態での依存部ファイル２４は本開示での命令ファイルに相当する。また、上記実施形態において処理部１０が実施する処理のうちのＳ１２０〜Ｓ１４０の処理は本開示での要素抽出部に相当し、Ｓ３４０，Ｓ３５０の処理は本開示でのモデル生成部に相当する。また、Ｓ１５０，Ｓ１６０の処理は本開示での入力要求部に相当し、Ｓ３１０，Ｓ３２０の処理は本開示での選択要求部に相当する。
【符号の説明】
【００７１】
１…モデル生成装置、１０…処理部、１１…ＣＰＵ、１２…メモリ、１６…インタフェース要素抽出部、１７…要素記述ファイル、１８…モデル記述変換部、２０…データ記録部、２１…仕様書、２２…要素情報ファイル、２２Ａ，２２Ｂ…要素ＩＤ、２２Ｃ…キーワード群、２３…モデルテンプレートファイル群、２３Ａ，２３Ｂ，２３Ｃ…モデルテンプレート、２３Ｄ，２３Ｅ…依存部ＩＤ、２４…依存部ファイル、２４Ａ…生成アルゴリズム、３１…表示部、３２…入力部、４１…モデル記述ファイル、５１Ａ…インタフェース要素、５１Ｂ…要素名、５１Ｃ…要素情報。
【図１】
2020067976.tif 000003
【図２】
2020067976.tif 000004
【図３】
2020067976.tif 000005
【図４】
2020067976.tif 000006
【図５】
2020067976.tif 000007
【図６】
2020067976.tif 000008
【図７】
2020067976.tif 000009
【図８】
2020067976.tif 000010