(57)【要約】【課題】任意の異なる種類のダイアグラム間での、任意の要素に対する整合性を検証することができる整合性検証装置、整合性検証方法及び整合性検証プログラムを提供する。【解決手段】１つのソフトウェア構造を複数の線図により可視化したモデル１０７について、整合性を検証する整合性検証装置１００において、各線図に含まれる要素をメタモデル要素により定義するメタモデル１０３，１０４に基づいて作成され、異なる線図間で整合するメタモデル要素の対応を検証項目として定義した検証項目１０６と、モデル１０７とメタモデル１０３，１０４とに基づいて、各線図に含まれる要素を定義するメタモデル要素と、前記要素の値とを対応付けたモデル情報表１１０を生成するモデル情報生成部と、検証項目１０６とモデル情報表１１０とに基づいて、モデル情報表１１０のなかに検証項目１０６に合致しない要素があるかを判定する検証処理部１０８とを備える。【選択図】図１
2015041285.tif 000002
【特許請求の範囲】
【請求項１】
１つのソフトウェア構造を複数の線図により可視化したモデルについて、前記複数の線図間の整合性を検証する整合性検証装置において、
前記複数の線図の各線図に含まれる要素をメタモデル要素により定義するメタモデルに基づいて作成され、異なる線図間で整合するメタモデル要素の対応を検証項目として定義した検証項目表を記憶装置に記憶する検証項目表記憶部と、
前記モデルと前記メタモデルとに基づいて、前記複数の線図の各線図に含まれる要素を定義するメタモデル要素と、前記要素の値とを対応付けた対応表を生成する対応表生成部と、
前記検証項目表と前記対応表とに基づいて、前記対応表のなかに前記検証項目表に合致しない要素があるか否かを処理装置により判定する検証処理部と
を備えることを特徴とする整合性検証装置。
【請求項２】
前記検証処理部は、
前記対応表のうち前記検証項目表に合致しないと判定した要素の一覧を違反結果表として出力し、
前記検証処理部により出力された前記違反結果表を表示装置に表示するリスト表示部を備えることを特徴とする請求項１に記載の整合性検証装置。
【請求項３】
前記異なる線図間で整合する箇所を定義する検証対象表を記憶する検証対象表記憶部と、
前記検証対象表に定義された箇所について、前記メタモデル要素を対応付けたメタモデル対応表を記憶するメタモデル対応表記憶部と、
前記検証対象表と前記メタモデル対応表とに基づいて、前記検証項目表を生成する検証項目生成部と
を備えることを特徴とする請求項１または２に記載の整合性検証装置。
【請求項４】
前記モデルを表示装置に表示するとともに、前記表示装置に表示された前記モデルのうち、前記検証項目表に合致しないと判定した要素に対応する部分をハイライト表示するハイライト表示部を備えることを特徴とする請求項１に記載の整合性検証装置。
【請求項５】
１つのソフトウェア構造を複数の線図により可視化したモデルについて、前記複数の線図間の整合性を検証する整合性検証装置の整合性検証方法において、
前記モデルと、前記複数の線図の各線図に含まれる要素をメタモデル要素により定義するメタモデルとに基づいて、前記要素を定義するメタモデル要素と、前記要素の値とを対応付けた対応表を生成する対応表生成ステップと、
前記メタモデルに基づいて作成され、異なる線図間で整合するメタモデル要素の対応を検証項目として定義した検証項目表と、前記対応表とに基づいて、前記対応表のなかに前記検証項目表に合致しない要素があるか否かを処理装置により判定する検証処理ステップとを備えることを特徴とする整合性検証方法。
【請求項６】
１つのソフトウェア構造を複数の線図により可視化したモデルについて、前記複数の線図間の整合性を検証するコンピュータである整合性検証装置に実行させる整合性検証プログラムにおいて、
前記モデルと、前記複数の線図の各線図に含まれる要素をメタモデル要素により定義するメタモデルとに基づいて、前記要素を定義するメタモデル要素と、前記要素の値とを対応付けた対応表を生成する対応表生成処理と、
前記メタモデルに基づいて作成され、異なる線図間で整合するメタモデル要素の対応を検証項目として定義した検証項目表と、前記対応表とに基づいて、前記対応表のなかに前記検証項目表に合致しない要素があるか否かを処理装置により判定する検証処理とを備えることを特徴とする整合性検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｓ／Ｗ（ソフトウェア）構造を可視化したモデルの整合性を検証するための整合性検証装置、整合性検証方法及び整合性検証プログラムに関する。
【背景技術】
【０００２】
Ｓ／Ｗ開発の際、Ｓ／Ｗ構造を可視化する手法として、ＵＭＬ（Ｕｎｉｆｉｅｄ・Ｍｏｄｅｌｉｎｇ・Ｌａｎｇｕａｇｅ）を用いた方法がある。
ＵＭＬは、Ｓ／Ｗ構造を表す様々な図（ダイアグラム（線図））の表記方法を定義したものであり、Ｓ／Ｗの設計や分析に用いられる。
【０００３】
複数のＵＭＬモデルの整合性を取ることで、別々に開発されたＳ／Ｗを組み合わせた大規模なＳ／Ｗ開発に役立てることができる。
一方、複数のＵＭＬモデル間に不整合が存在する状態で開発を進めると、後工程で手戻りが発生する可能性があり、工程の遅延につながる。
【０００４】
ＵＭＬの記述には自由度があるので、記述方針が異なる場合、複数のモデルにおいて不整合が発生する可能性がある。例えば、クラス・メソッドなどの要素の名称、あるいは変数・引数の型が一致していない等の記述方針の不一致があると、複数のモデルにおいて不整合が発生する可能性がある。
しかし、ＵＭＬにおいて、人間がモデルを書く際に不整合を完全に無くすことや、人間が複数のモデルを比較してモデル間の不整合を発見することは困難である。
【０００５】
特許文献１では、ＵＭＬモデルがＵＭＬのメタモデルの仕様に合致しているか又は一般的によく知られているモデルリング・ルールに沿っているかについて検証することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−８６０６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１では、異なる種類のダイアグラム間での整合性を検証することはできないという課題があった。
また、整合性ルールをモデル担当者が独自に設定することができないという課題があった。
【０００８】
本発明は、例えば、任意の異なる種類のダイアグラム間での、任意の要素に対する整合性を検証することができる整合性検証装置、整合性検証方法及び整合性検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る整合性検証装置は、
１つのソフトウェア構造を複数の線図により可視化したモデルについて、前記複数の線図間の整合性を検証する整合性検証装置において、
前記複数の線図の各線図に含まれる要素をメタモデル要素により定義するメタモデルに基づいて作成され、異なる線図間で整合するメタモデル要素の対応を検証項目として定義した検証項目表を記憶装置に記憶する検証項目表記憶部と、
前記モデルと前記メタモデルとに基づいて、前記複数の線図の各線図に含まれる要素を定義するメタモデル要素と、前記要素の値とを対応付けた対応表を生成する対応表生成部と、
前記検証項目表と前記対応表とに基づいて、前記対応表のなかに前記検証項目表に合致しない要素があるか否かを処理装置により判定する検証処理部と
を備えることを特徴とする。
【発明の効果】
【００１０】
本発明の一の態様によれば、メタモデルに基づいて作成され、異なる線図間で整合するメタモデル要素の対応を検証項目として定義した検証項目表と、要素を定義するメタモデル要素と前記要素の値とを対応付けた対応表とに基づいて、前記対応表のなかに前記検証項目表に合致しない要素があるか否かを処理装置により判定するので、任意の異なる種類の線図間での、任意の要素に対する整合性を検証することができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１に係る整合性検証装置１００の構成を示すブロック図である。
【図２】実施の形態１に係る整合性検証装置１００のハードウェア構成の一例を示す図である。
【図３】実施の形態１に係る検証項目１０６の構成の一例を示す図である。
【図４】実施の形態１に係るメタモデル（要素定義）１０３の一例であり、クラス図メタモデルを示す図である。
【図５】実施の形態１に係るメタモデル（要素定義）１０３の一例であり、シーケンス図メタモデルを示す図である。
【図６】実施の形態１に係るメタモデル（要素定義）１０３の一例であり、ステートマシン図メタモデルを示す図である。
【図７】実施の形態１に係るメタモデル（記法定義）１０４の一例（一部抜粋）であり、クラス図のメタモデル（記法定義）を示す図である。
【図８】実施の形態１に係るモデル１０７の一例であり、クラス図を示す図である。
【図９】実施の形態１に係るモデル１０７の一例であり、シーケンス図を示す図である。
【図１０】実施の形態１に係るモデル１０７の一例であり、ステートマシン図を示す図である。
【図１１】実施の形態１に係るモデル情報表１１０の構成の一例を示す図である。
【図１２】実施の形態１に係る検証処理部１０８による整合性検証処理を示すフローチャートである。
【図１３】実施の形態１に係る検証処理部１０８による整合性検証処理を示すフローチャートである。
【図１４】実施の形態１に係る違反結果表１０９の構成の一例を示す図である。
【図１５】実施の形態２に係る整合性検証装置１００ａを示すブロック構成図である。
【図１６】実施の形態２に係る検証対象表１２１の一例を示す図である。
【図１７】実施の形態２に係るメタモデル対応表１２２の一例を示す図である。
【図１８】実施の形態３に係る整合性検証装置１００ｂを示すブロック構成図である。
【図１９】実施の形態３に係る指定箇所１１７の一例を示す図である。
【発明を実施するための形態】
【００１２】
実施の形態１．
図１は、本実施の形態に係る整合性検証装置１００の構成を示すブロック図である。整合性検証装置１００は、１つのソフトウェア構造を複数のダイアグラム（線図）により可視化したモデル１０７について、複数のダイアグラム間の整合性を検証する。モデル１０７は、例えば、ＵＭＬなどである。整合性検証装置１００は、モデル１０７の定義レベル（メタレベル）において定義された整合性の検証項目を読み込み、検証する機能を有する装置である。
【００１３】
図１において、整合性検証装置１００は、モデル情報生成部１０５、検証処理部１０８、リスト表示部１１４を備える。
また、使用者によって記述された整合性検証対象であるモデル１０７、モデル１０７の定義であるメタモデル（要素定義）１０３とメタモデル（記法定義）１０４とが予め記憶装置に記憶されている。メタモデル（要素定義）１０３とメタモデル（記法定義）１０４とを合わせて、単にメタモデルと呼ぶ場合もある。
メタモデルは、複数のダイアグラムのそれぞれに含まれる要素を、メタレベルのメタモデル要素（メタモデル要素名ともいう）により定義する。
【００１４】
使用者は検証したい項目を検証項目１０６として明記し、予め記憶装置に記憶する。あるいは、整合性検証装置１００を起動すると、表示装置に検証したい項目を入力する検証項目入力画面が表示され、使用者により入力された検証項目を検証項目１０６として記憶装置に記憶するとしてもよい。
検証項目１０６（検証項目表）は、メタモデルに基づいてユーザにより作成される。検証項目１０６（検証項目表）は、異なるダイアグラム間で整合する要素を、メタモデル要素の対応を用いて定義される。検証項目１０６は、例えば、検証項目表記憶部により記憶装置に記憶される。
【００１５】
モデル情報生成部１０５は、モデル１０７、メタモデル（要素定義）１０３とメタモデル（記法定義）１０４とを記憶装置から読み込む。モデル情報生成部５は、検証する情報を抽出したモデル情報表１１０を処理装置により生成し、出力する。
モデル情報生成部１０５は、モデル１０７とメタモデル（メタモデル（要素定義）１０３、メタモデル（記法定義）１０４）とに基づいて、メタモデルにおいて要素を定義するメタモデル要素と、要素の値とを対応付けたモデル情報表１１０（対応表）を生成する対応表生成部の一例である。
【００１６】
検証処理部１０８は、記憶装置に記憶されている検証項目１０６と、モデル情報生成部１０５から出力されたモデル情報表１１０とを読み込む。検証処理部１０８は、読み込んだ検証項目１０６とモデル情報表１１０とに基づいて、モデル情報表１１０の行（要素を定義するメタモデル要素と、要素の値との対応）のなかに、検証項目１０６に合致しない行（要素）があるか否かを処理装置により判定する。
検証処理部１０８は、検証項目１０６から、検証元である正とする要素、検証対象とする要素を抽出し、抽出結果を元にモデル情報表１１０から正とする要素の値と検証対象とする要素の値を抽出する。
【００１７】
検証処理部１０８は、モデル情報表１１０の行（メタモデル要素と、要素の値との対応）のうち検証項目１０６に合致しないと判定した行（要素）の一覧を違反結果表１０９として出力する。つまり、検証処理部１０８は、抽出した値から違反を抽出し、違反結果表１０９を処理装置により生成し、出力する。
リスト表示部１１４は、検証処理部１０８から違反結果表９を入力し、表示装置にリスト形式で表示する。
【００１８】
図２は、本実施の形態に係る整合性検証装置１００のハードウェア構成の一例を示す図である。
図２を用いて、整合性検証装置１００のハードウェア構成例について説明する。
【００１９】
整合性検証装置１００はコンピュータを備え、整合性検証装置１００の各要素をプログラムで実現することができる。
【００２０】
整合性検証装置１００のハードウェア構成としては、バスに、演算装置９０１、外部記憶装置９０２、主記憶装置９０３、通信装置９０４、入出力装置９０５が接続されている。
【００２１】
演算装置９０１は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）である。
外部記憶装置９０２は、例えばＲＯＭ（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）やフラッシュメモリ、ハードディスク装置である。ハードディスク１２０は、外部記憶装置９０２の一例である。
主記憶装置９０３は、ＲＡＭ（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）である。
【００２２】
通信装置９０４は、例えば通信ボード等であり、ＬＡＮ（Ｌｏｃａｌ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）等に接続されている。通信装置９０４は、ＬＡＮに限らず、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ・Ｐｒｏｔｏｃｏｌ・Ｖｉｒｔｕａｌ・Ｐｒｉｖａｔｅ・Ｎｅｔｗｏｒｋ）、広域ＬＡＮ、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ・Ｔｒａｎｓｆｅｒ・Ｍｏｄｅ）ネットワークといったＷＡＮ（Ｗｉｄｅ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）、あるいは、インターネットに接続されていても構わない。ＬＡＮ、ＷＡＮ、インターネットは、ネットワークの一例である。
【００２３】
入出力装置９０５は、例えばマウス、キーボード、ディスプレイ装置等である。マウスの代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。ディスプレイ装置は、ＬＣＤ（Ｌｉｑｕｉｄ・Ｃｒｙｓｔａｌ・Ｄｉｓｐｌａｙ）、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）、あるいは、その他の表示装置でもよい。ディスプレイ１３０は、表示装置の一例である。
【００２４】
プログラムは、通常は外部記憶装置９０２に記憶されており、主記憶装置９０３にロードされた状態で、順次演算装置９０１に読み込まれ、実行される。
プログラムは、図１に示す「〜部」として説明している機能を実現するプログラムである。
更に、外部記憶装置９０２にはオペレーティングシステム（ＯＳ）も記憶されており、ＯＳの少なくとも一部が主記憶装置９０３にロードされ、演算装置９０１はＯＳを実行しながら、図１に示す「〜部」の機能を実現するプログラムを実行する。
また、アプリケーションプログラムも外部記憶装置９０２に記憶されており、主記憶装置９０３にロードされた状態で、順次演算装置９０１により実行される。
また、「〜テーブル」等の情報も外部記憶装置９０２に記憶されている。
【００２５】
また、本実施の形態の説明において、「〜の判断」、「〜の判定」、「〜の抽出」、「〜の検知」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の生成」、「〜の入力」、「〜の出力」、「〜表」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置９０３にファイルとして記憶されている。
また、整合性検証装置１００が受信したデータが主記憶装置９０３に記憶される。
また、暗号鍵・復号鍵や乱数値やパラメータが、主記憶装置９０３にファイルとして記憶されてもよい。
【００２６】
なお、図２の構成は、あくまでも整合性検証装置１００のハードウェア構成の一例を示すものであり、整合性検証装置１００のハードウェア構成は図２に記載の構成に限らず、他の構成であってもよい。
【００２７】
図３は、本実施の形態に係る検証項目１０６の構成の一例を示す図である。
検証項目１０６は、整合性検証で正とするメタモデル要素（メタモデル要素名）、検証対象とするメタモデル要素を明示する。
検証項目１０６は、「検証元一致条件１」、「検証元一致条件２」、「検証元」、「検証対象一致条件１」、「検証対象一致条件２」、「検証対象」の項目から構成される。
「検証元一致条件１」と「検証対象一致条件１」、「検証元一致条件２」と「検証対象一致条件２」が一致することを前提条件として、整合性検証で正とする「検証元」、検証対象とする「検証対象」を示している。「検証元一致条件１」、「検証対象一致条件１」、「検証元一致条件２」、「検証対象一致条件２」は必須ではない。設定されていない場合には、「−（ハイフン）」が記入されている。
【００２８】
図３を用いて、検証項目６の具体例について説明する。
例えば、第１行では、前提条件として「検証元一致条件１」である「Ｎｏｔｅ．ＣｌａｓｓＤｉａｇｒａｍ」と、「検証対象一致条件１」である「Ｉｎｔｅｒａｃｔｉｏｎ．ｎａｍｅ」が一致する必要があることを示している。一致した場合には、「検証元」である「Ｃｌａｓｓ．ｎａｍｅ」を正として、「検証対象」である「Ｉｎｔｅｒａｃｔｉｏｎ．ｍｅｓｓａｇｅ．ｒｅｃｅｉｖｅＥｖｅｎｔ．ｃｏｖｅｒｅｄ．ｎａｍｅ」を検証の対象とすることを示している。
【００２９】
メタモデル（要素定義）１０３は、ダイアグラムで記述される各要素を、メタレベルのメタモデル要素により定義している。代表例として、ＵＭＬのメタモデルが挙げられる。
【００３０】
図４は、本実施の形態に係るメタモデル（要素定義）１０３の一例（一部抜粋）であり、クラス図メタモデルを示す図である。
図５は、本実施の形態に係るメタモデル（要素定義）１０３の一例（一部抜粋）であり、シーケンス図メタモデルを示す図である。
図６は、本実施の形態に係るメタモデル（要素定義）１０３の一例（一部抜粋）であり、ステートマシン図メタモデルを示す図である。
【００３１】
メタモデル（記法定義）１０４は、ダイアグラムで記述される記法の定義をしている。具体的には、メタモデル（要素定義）１０３で定義された各要素の記法を定義している。代表例として、ＵＭＬのメタモデルが挙げられる。
図７は、本実施の形態に係るメタモデル（記法定義）１０４（一部抜粋）であり、クラス図のメタモデル（記法定義）を示す図である。
【００３２】
図８は、本実施の形態に係るモデル１０７の一例であり、クラス図を示す図である。
図９は、本実施の形態に係るモデル１０７の一例であり、シーケンス図を示す図である。
図１０は、本実施の形態に係るモデル１０７の一例であり、ステートマシン図を示す図である。
【００３３】
モデル１０７はメタモデル（要素定義）１０３及びメタモデル（記法定義）１０４を用いて、作成される。メタモデル（要素定義）１０３及びメタモデル（記法定義）１０４を併せてメタモデルと呼ぶ。
図８〜１０は、ＵＭＬのメタモデルから作成されたモデル１０７の一例を示す図であり、クラス図、シーケンス図、ステートマシン図を示している。
なお、図８では、コメント機能を利用してクラス図名を定義している。これは、ＵＭＬのメタモデル上では、クラス図の名前を持つ要素が定義されていないためである。そのため、本例ではメタモデルを拡張し、要素定義を「Ｎｏｔｅ．ＣｌａｓｓＤｉａｇｒａｍ」としている。
【００３４】
図１１は、本実施の形態に係るモデル情報表１１０の構成の一例を示す図である。
モデル情報表１１０は、モデル情報生成部１０５により生成される。
【００３５】
モデル情報表１１０は、メタモデル要素を示す「メタモデル要素１種類」、「メタモデル要素２種類」、「メタモデル要素３種類」と各々に対応した値である「要素１」、「要素２」、「要素３」で構成される。また、「メタモデル要素１種類」は「メタモデル要素２種類」を保持し、「メタモデル要素２種類」は「メタモデル要素３種類」を保持する関係が成り立つ。
【００３６】
以下に、モデル情報生成部１０５がモデル７とメタモデル（要素定義）１０３」、「メタモデル（記法定義）１０４」を入力として、「モデル情報表１１０」を出力するモデル情報出力処理（対応表生成処理）について説明する。
モデル情報生成部１０５は、処理装置を用いて、以下の手順でモデル情報表１１０を生成する。
【００３７】
（１）モデル情報生成部１０５は、「モデル１０７」に対して、「メタモデル（記法定義）１０４」に基づいて得られる要素の値と、「メタモデル（要素定義）１０３」で定義されているメタモデル要素との対応を取る。
（２）モデル情報生成部１０５は、（１）で対応を取ったメタモデル要素を「モデル情報表１１０」の「メタモデル要素１種類」または「メタモデル要素２種類」または「メタモデル要素３種類」に設定する。次に、対応を取った値をそれぞれ、「要素１」または「要素２」または「要素３」に設定する。
ここで、モデル情報生成部１０５は、以下の規則に従って、モデル情報表１１０を出力する。「メタモデル要素１種類」は「メタモデル要素２種類」を保持し、「メタモデル要素２種類」は「メタモデル要素３種類」を保持する関係とすることを規則とする。
【００３８】
図１２及び図１３は、本実施の形態に係る検証処理部１０８による整合性検証処理を示すフローチャートである。フローチャートは検証項目１０６の各行毎に実行される。
図１２及び図１３を用いて、検証処理部１０８による整合性検証処理（検証処理）について説明する。
【００３９】
Ｓ１０１において、検証処理部１０８は、「検証項目１０６」の処理対象の行（処理対象行）の「検証元一致条件１」、「検証元一致条件２」、「検証元」に合致するモデル情報表１１０の行を抽出する。検証処理部１０８が抽出したモデル情報表１１０の検証元の行を検証元表１０とする。
具体例を用いて説明する。例えば、「検証項目１０６」の処理対象行を第１行とする。このとき、「検証元一致条件１」、「検証元一致条件２」、「検証元」は、「Ｎｏｔｅ．ＣｌａｓｓＤｉａｇｒａｍ」、「−」、「Ｃｌａｓｓ．ｎａｍｅ」となる。したがって、検証処理部１０８は、処理対象行の第１行に対応するモデル情報表１１０の行として、モデル情報表１１０の第１行と第２行とを抽出する。モデル情報表１１０の第１行と第２行とが検証元表１０となる。
【００４０】
Ｓ１０２において、検証処理部１０８は、「検証項目１０６」の処理対象行の「検証対象一致条件１」、「検証対象一致条件２」、「検証対象」に合致するモデル情報表１１０の行を抽出する。検証処理部１０８が抽出したモデル情報表１１０の検証対象の行を検証元表１０とする。
具体例では、「検証項目１０６」の処理対象行が第１行のとき、「検証対象一致条件１」、「検証対象一致条件２」、「検証対象」は、「Ｉｎｔｅｒａｃｔｉｏｎ．ｎａｍｅ」、「−」、「Ｉｎｔｅｒａｃｔｉｏｎ．ｍｅｓｓａｇｅ．ｒｅｃｅｉｖｅＥｖｅｎｔ．ｃｏｖｅｒｅｄ．ｎａｍｅ」となる。したがって、検証処理部１０８は、処理対象行の第１行に対応するモデル情報表１１０の行として、モデル情報表１１０の第４行と第６行とを抽出する。モデル情報表１１０の第４行と第６行とが検証対象抽出表２０となる。
【００４１】
次に、検証処理部１０８は、検証対象抽出表２０の各行について処理する。
Ｓ１０３において、検証処理部１０８は、検証対象抽出表２０の全ての行について処理したかを判定する。検証処理部１０８は、検証対象抽出表２０の全ての行について処理したと判定した場合（Ｓ１０３においてＹＥＳ）、処理を終了する。検証処理部１０８は、検証対象抽出表２０に、未処理の行があると判定した場合（Ｓ１０３においてＮＯ）、Ｓ１０４に処理を進める。
【００４２】
Ｓ１０４において、検証処理部１０８は、検証対象抽出表２０から処理する１行を選択する。そして、検証処理部１０８は、選択した行が、以下の条件（ａ）〜（ｃ）（Ｓ１０５〜Ｓ１０７）に合致するか否かを判定する。
【００４３】
（ａ）の条件判定：
Ｓ１０５において、検証処理部１０８は、検証対象抽出表２０から選択した１行について、以下の判定をする。「検証元一致条件１」で指定されたメタモデル要素（「抽出した検証元表１０」の「メタモデル要素１種類」列または「メタモデル要素２種類」列または「メタモデル要素３種類」列）に対応した値（抽出した検証元表１０の「要素１」列または「要素２」列または「要素３」列）と、「検証対象一致条件１」で指定されたメタモデル要素（「抽出した検証対象抽出表２０」の「メタモデル要素１種類」列または「メタモデル要素２種類」列または「メタモデル要素３種類」列）に対応した値（「抽出した検証対象抽出表２０」の「要素１」列または「要素２」列または「要素３」列）が等しいがどうか判定する。
【００４４】
具体的には、検証対象抽出表２０の第１行（モデル情報表１１０の第４行に相当）の「検証元一致条件１」「Ｎｏｔｅ．ＣｌａｓｓＤｉａｇｒａｍ」は「ｓａｍｐｌｅ」であり、「抽出した検証元表１０」の第１行（モデル情報表１１０の第１行に相当）の「Ｎｏｔｅ．ＣｌａｓｓＤｉａｇｒａｍ」は「ｓａｍｐｌｅ」であり、値が等しいと判定される。
Ｓ１０５において、値が等しくないと判定された場合、Ｓ１０３に戻る。
Ｓ１０５において、値が等しいと判定された場合、Ｓ１０６に進む。
【００４５】
抽出した検証元表１０が複数行ある場合、検証処理部１０８は、等しいと判定される行が見つかるまで処理を行い、等しいと判定される行がない場合には、値が等しくないと判定する。例えば、次に説明するＳ１０６の判定を行う場合には、Ｓ１０５における判定が等しいとされた検証元表１０の行についてのみ判定を行う。
【００４６】
（ｂ）の条件判定：
Ｓ１０６において、検証処理部１０８は、検証対象抽出表２０から選択した上記１行について、以下の判定をする。
Ｓ１０６において、検証処理部１０８は、検証対象抽出表２０から選択した上記１行について、以下の判定をする。「検証元一致条件２」で指定されたメタモデル要素（「抽出した検証元表１０」の「メタモデル要素１種類」列または「メタモデル要素２種類」列または「メタモデル要素３種類」列）に対応した値（抽出した検証元表１０の「要素１」列または「要素２」列または「要素３」列）と、「検証対象一致条件２」で指定されたメタモデル要素（「抽出した検証対象抽出表２０」の「メタモデル要素１種類」列または「メタモデル要素２種類」列または「メタモデル要素３種類」列）に対応した値（「抽出した検証対象抽出表２０」の「要素１」列または「要素２」列または「要素３」列）が等しいかどうか判定する。
【００４７】
具体的には、検証対象抽出表２０の第１行（モデル情報表１１０の第４行に相当）の「検証元一致条件２」「−」であり、「抽出した検証元表１０」の第１行（モデル情報表１１０の第１行に相当）の「検証元一致条件２」「−」であるため、条件判定する必要がなく、値が等しいと判定される。
Ｓ１０６において、値が等しくないと判定された場合、Ｓ１０３に戻る。
Ｓ１０６において、値が等しいと判定された場合、Ｓ１０７に進む。
【００４８】
（ｃ）の条件判定：
Ｓ１０７において、検証処理部１０８は、検証対象抽出表２０から選択した上記１行について、以下の判定をする。
Ｓ１０７において、検証処理部１０８は、検証対象抽出表２０から選択した上記１行について、以下の判定をする。「検証元」で指定されたメタモデル要素（「抽出した検証元表１０」の「メタモデル要素１種類」列または「メタモデル要素２種類」列または「メタモデル要素３種類」列）に対応した値（抽出した検証元表１０の「要素１」列または「要素２」列または「要素３」列）と、「検証対象」で指定されたメタモデル要素（「抽出した検証対象抽出表２０」の「メタモデル要素１種類」列または「メタモデル要素２種類」列または「メタモデル要素３種類」列）に対応した値（「抽出した検証対象抽出表２０」の「要素１」列または「要素２」列または「要素３」列）が等しいかどうか判定する。
【００４９】
具体的には、検証対象抽出表２０の第１行（モデル情報表１１０の第４行に相当）の「検証対象」「Ｃｌａｓｓ．ｎａｍｅ」は値が「ＣｌａｓｓＢ」であり、「抽出した検証元表１０」の第２行（モデル情報表１１０の第２行に相当）の「検証元」「Ｃｌａｓｓ．ｎａｍｅ」は値が「ＣｌａｓｓＢ」であるため、値が等しいと判定される。
Ｓ１０６において、値が等しくないと判定された場合、検証結果が違反であることを意味し、Ｓ１０８に進む。
Ｓ１０６において、値が等しいと判定された場合、Ｓ１０３に戻る。
【００５０】
Ｓ１０８において、検証処理部１０８は、検証結果が違反となった検証対象抽出表２０の行（すなわち、Ｓ１０５、Ｓ１０６、Ｓ１０７の条件に該当した行）を含む違反結果表１０９を生成する。違反結果表１０９が既に生成済の場合は、検証処理部１０８は、検証結果が違反であると判定された検証対象抽出表２０の行（すなわち、Ｓ１０５、Ｓ１０６、Ｓ１０７の条件に該当した行）を違反結果表１０９」に追加する。
以上のように、検証処理部１０８による検証処理の結果、検証処理部１０８は違反結果表１０９を生成し、出力する。
リスト表示部１１４は、検証処理部１０８から出力された違反結果表１０９を表示装置に表示する。
【００５１】
図１４は、本実施の形態に係る違反結果表１０９の構成の一例を示す図である。
図１４に示すように、違反結果表１０９の構成は、モデル情報表１１０の構成と同様である。
【００５２】
以上のように、本実施の形態に係る整合性検証装置１００は、Ｓ／Ｗの構造や振舞いを表現したモデルにおいて、書き方を定義するルール（メタモデル）に基づいて、２つのモデル間の整合性箇所を定義した検証項目を用いて、ユーザ（設計者）の作成したモデルの整合性の検証を実行する。
そのために、本実施の形態に係る整合性検証装置１００は、モデルから整合性検証の対象になるモデル情報生成手段と、モデル情報表と検証項目から整合性に違反している箇所を検出する検証処理部と、違反結果を表示するリスト表示手段を設ける。
【００５３】
本実施の形態に係る整合性検証装置１００によれば、任意の異なる種類のダイアグラム間での、任意の要素に対する整合性を検証することができるので、ユーザが設定したモデル間の要素の整合性の検証を自動化し、モデル間の整合性検証作業の効率化が可能である。
【００５４】
実施の形態２．
本実施の形態では、主に、実施の形態１と異なる点について説明する。
実施の形態１では、「メタモデル（要素定義）１０３」と「メタモデル（記法定義）１０４」が変更された場合、「検証項目１０６」の記述を変更する必要がある。本実施の形態では、メタモデルが変更された場合であっても、自動的に検証項目１０６を生成することにより、整合性検証を実施する機能について説明する。
【００５５】
図１５は、本実施の形態に係る整合性検証装置１００ａを示すブロック構成図である。
実施の形態１で説明した構成部と同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合がある。
【００５６】
図１５に示すように、整合性検証装置１００ａは、図１に示す整合性検証装置１００に加えて、検証対象表１２１、メタモデル対応表１２２、検証項目生成部１２４を備える。
【００５７】
検証対象表１２１は、整合性検証で正とする要素の前提条件である「検証元一致条件１」、「検証元一致条件２」、正とする要素である「検証元」、検証対象要素の前提条件である「検証対象一致条件１」、「検証対象一致条件２」、検証対象とする要素「検証対象」から構成される。検証対象表１２１は、整合性検証で正となる要素と、検証対象となる要素との対応を、メタレベルのメタモデル要素より上位の情報により定義する表である。
【００５８】
図１６は、本実施の形態に係る検証対象表１２１の一例を示す図である。
検証対象表１２１の行４では、ステートマシンモデルにおいて「ステートマシンモデル名」と「クラス名」とが等しいことを前提として「メソッド名」を正として、シーケンスモデルの「シーケンスモデル名」と「クラス名」とが等しい「メソッド名」を検証対象とすることを示している。
これらの「ステートマシンモデル名」、「クラス名」、「シーケンスモデル名」、「メソッド名」等による定義は、メタレベルのメタモデル要素より上位の情報による定義であり、例えば、モデル名である「モデル呼称」、要素名である「要素呼称」、要素のメンバである「メンバ呼称」から構成され、異なるダイアグラム間で整合する箇所を定義するものである。
【００５９】
メタモデル対応表１２２は、メタレベルのメタモデル要素より上位の情報と、メタモデルで定義されたメタモデル要素である「メタモデル定義要素」、メタモデルで定義されたメンバである「メタモデル定義メンバ」とを対応付けたものである。
つまり、モデル名である「モデル呼称」、要素名である「要素呼称」、要素のメンバである「メンバ呼称」と、メタモデルで定義されたメタモデル要素である「メタモデル定義要素」、メタモデルで定義されたメンバである「メタモデル定義メンバ」とを対応付けたものである。メタモデル対応表１２２は、「モデル呼称」、「要素呼称」、「メンバ呼称」の組み合わせと「メタモデル定義要素」、「メンバモデル定義メンバ」の組み合わせの対応を定義する表である。
したがって、メタモデル要素が変更された場合であっても、メタモデル対応表１２２の「メタモデル定義要素」、「メンバモデル定義メンバ」を変更することで、検証項目１０６を生成することができる。
【００６０】
図１７は、本実施の形態に係るメタモデル対応表１２２の一例を示す図である。
例えば、メタモデル対応表１２２の行３では、「クラスモデル名」、「クラス名」、「メソッド名」の組み合わせが、メタモデル定義の「Ｃｌａｓｓ．Ｏｐｅｒａｔｉｏｎ．ｎａｍｅ」に対応することを示している。
【００６１】
次に、検証項目生成部１２４の動作について説明する。
検証項目生成部１２４は、「検証対象表１２１」、「メタモデル対応表１２２」を用いて、「検証項目１０６」を生成する。
検証項目生成部１２４による検証項目生成方法では、以下の手順（１）〜（４）を「検証対象表１２１」の全行に対して実行することにより実現される。検証項目生成部１２４は、例えば、検証項目生成プログラムを処理装置などのハードウェア資源を用いて実行することにより、検証条件付加処理を実現する。
【００６２】
（１）検証項目生成部１２４は、「検証対象表１２１」の「検証元一致条件１」、「検証元一致条件２」、「検証元」の組み合わせと、「メタモデル対応表１２２」の「モデル呼称」、「要素呼称」、「メンバ呼称」の組み合わせとが同一の行を「メタモデル対応表１２２」から抽出する。抽出した行を検証元抽出行１２５とする。
例えば、具体例として、検証対象表１２１の行２について処理する場合、「検証元一致条件１」、「検証元一致条件２」、「検証元」の組み合わせが「クラスモデル名」、「クラス名」、「メソッド名」であるので、「メタモデル対応表１２２」の行３を検証元抽出行１２５として抽出する。
【００６３】
（２）検証元抽出行１２５の「メタモデル定義要素」の値を「検証項目１０６」の「検証元」に設定する。検証項目１０６において、「検証元」に値を設定した行を設定行１０６１とする。設定行１０６１には、「検証元一致条件１」、「検証元一致条件２」も設定する。
具体例では、検証元抽出行１２５の「メタモデル定義要素」の値が「Ｃｌａｓｓ．Ｏｐｅｒａｔｉｏｎ．ｎａｍｅ」であるので、「Ｃｌａｓｓ．Ｏｐｅｒａｔｉｏｎ．ｎａｍｅ」を「検証項目１０６」（図３参照）の設定行１０６１の「検証元」に設定する。「クラスモデル名」、「クラス名」も設定行１０６１の「検証元一致条件１」、「検証元一致条件２」に設定する。
【００６４】
（３）「検証対象表１２１」の「検証対象一致条件１」、「検証対象一致条件２」、「検証対象」の組み合わせと、「メタモデル対応表１２２」の「モデル呼称」、「要素呼称」、「メンバ呼称」の組み合わせとが同一の行を、「メタモデル対応表１２２」から抽出する。抽出した行を検証対象抽出行１２６とする。
例えば、具体例として、検証対象表１２１の行２について処理する場合、「検証対象一致条件１」、「検証対象一致条件２」、「検証対象」の組み合わせが「シーケンスモデル名」、「クラス名」、「メソッド名」であるので、「メタモデル対応表１２２」の行６を検証対象抽出行１２６として抽出する。
【００６５】
（４）検証対象抽出行１２６の「メタモデル定義要素」の値を「検証項目１０６」の設定行１０６１の「検証対象」に設定する。設定行１０６１には、「検証対象一致条件１」、「検証対象一致条件２」も設定する。
【００６６】
具体例では、検証対象抽出行１２６の「メタモデル定義要素」の値が「Ｉｎｔｅｒｒａｃｔｉｏｎ．ｍｅｓｓａｇｅ．ｎａｍｅ」であるので、「Ｉｎｔｅｒｒａｃｔｉｏｎ．ｍｅｓｓａｇｅ．ｎａｍｅ」を「検証項目１０６」（図３参照）の上記設定行１０６１の「検証対象」に設定する。「シーケンスモデル名」、「クラス名」も設定行１０６１の「検証対象一致条件１」、「検証対象一致条件２」に設定する。
【００６７】
本実施の形態に係る整合性検証装置１００ａは、検証項目とメタモデル要素の対応指定機能により、メタモデル対応表１２２を作成するので、特定メタモデルに対して非依存にすることができる。
【００６８】
本実施の形態に係る整合性検証装置１００ａによれば、メタレベルより上位の情報で定義された検証対象要素と、メタレベルのメタモデル情報との対応を記述することで、メタモデルが変更された場合、検証項目の修正が省略でき、さらに検証作業の効率化が可能である。
【００６９】
実施の形態３．
本実施の形態では、主に、実施の形態１，２と異なる点について説明する。
実施の形態１では、整合違反箇所は表形式で出力され、モデル１０７との対応関係は表示されない。本実施の形態では、モデル１０７上に違反箇所を自動ハイライト表示させる機能について説明する。
【００７０】
図１８は、本実施の形態に係る整合性検証装置１００ｂを示すブロック構成図である。
実施の形態１で説明した構成部と同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合がある。
【００７１】
図１８に示すように、整合性検証装置１００ｂは、図１に示す整合性検証装置１００に加えて、入力指定１１５、指定箇所生成部１１９、指定箇所１１７、ハイライト表示部１１６を備える。
【００７２】
入力指定１１５は、モデル１０７においてハイライトする違反箇所を指定する。例えば、整合性検証装置１００ｂは入力指定受付部を有し、入力指定受付部は表示装置にハイライト箇所指定画面を表示する。また、入力指定受付部は、ハイライト箇所指定画面に対しユーザが入力したハイライトする箇所（要素名）を受け付け、受け付けたハイライトする箇所（要素名）を入力指定１１５として記憶装置に記憶する。例えば、ユーザは、クラス名であれば「ＣｌａｓｓＡ」などを指定する。複数指定も可能とする。
【００７３】
指定箇所生成部１１９は、違反結果表１０９（図１４参照）と、入力指定１１５とを入力する。指定箇所生成部１１９は、違反結果表１０９に対し、入力指定１１５２より指定された「指定要素種類」を追加し、指定箇所１１７を生成し、記憶装置に記憶する。「指定要素種類」には「入力指定１１５」で指定された要素のメタモデル要素が入る。
指定箇所生成部１１９は、入力指定１５によって違反結果表１０９をフィルタリングし、その結果である指定箇所１１７を得る。
【００７４】
指定箇所生成部１１９は、入力指定１１５と違反結果表１０９とを入力し、指定箇所１１７を出力する。指定箇所生成部１１９は、以下の手順（１）〜（３）により、入力指定１１５と違反結果表１０９とに基づいて、指定箇所１１７を生成する。
【００７５】
処理手順（１）〜（３）は、以下の通りである。
（１）指定箇所生成部１１９は、違反結果表１０９から、入力指定１１５に含まれている要素名が「要素１」または「要素２」または「要素３」に該当する行を抽出する。
（２）指定箇所生成部１１９は、上記（１）で抽出した行を出力する。
（３）指定箇所生成部１１９は、上記（２）で出力した行に対し、「指定要素種類」の項目欄を追加する。指定箇所生成部１１９は、該当した列が「要素１」の場合は「メタモデル要素１種類」の値を、「要素２」の場合は「メタモデル要素２種類」の値を、「要素３」の場合は「メタモデル要素３種類」の値を、「指定要素種類」に出力する。
【００７６】
図１９は、本実施の形態に係る指定箇所１１７の一例を示す図である。
【００７７】
ハイライト表示部１１６は、モデル１０７、メタモデル（記法定義）１０４、違反結果表１０９、指定箇所１１７を入力として、表示装置の表示画面に表示されたモデルに対して、「指定要素種類」に該当する特定箇所をハイライト表示する。
【００７８】
ハイライト表示部１１６は、「指定箇所１１７」（図１９参照）の各行に対して、以下の処理（１），（２）を実行する。
（１）ハイライト表示部１１６は、「指定箇所１１７」の「メタモデル要素１種類」、「メタモデル要素２種類」、「メタモデル要素３種類」に該当する記法を「メタモデル（記法定義）１０４」から取得する。
【００７９】
（２）ハイライト表示部１１６は、「モデル１０７」から以下の条件に該当する箇所を抽出する。上記（１）で取得した記法で記載されている「モデル１０７」の各値が、「指定箇所１１７」の値と同じである箇所を抽出する。具体的には、上記（１）で「指定箇所１１７」の「メタモデル要素１種類」に対応する記法で記載された「モデル１０７」の値と「要素１」の値が同じであり、「指定箇所１１７」の「メタモデル要素２種類」に対応する記法で記載された「モデル１０７」の値と「要素２」の値が同じであり、「指定箇所１１７」の「メタモデル要素３種類」に対応する記法で記載された「モデル１０７」の値と「要素３」の値が同じである箇所を抽出する。
【００８０】
（３）ハイライト表示部１１６は、上記（２）で抽出した「モデル１０７」上の箇所で、かつ、「指定箇所１１７」の「指定要素種類」に該当するメタモデル要素種類を、処理装置によりハイライト表示する。
【００８１】
本実施の形態に係る整合性検証装置１００ｂは、特定の違反箇所をモデル図上で自動的にハイライトするハイライト箇所指定機能を備える。
本実施の形態に係る整合性検証装置１００ｂによれば、違反箇所確認の作業効率化が促進され、さらに検証作業の効率化が可能である。
【００８２】
上記実施の形態の説明では、複数の機能ブロックに分割して整合性検証装置１００，１００ａ，１００ｂを構成したが、機能ブロックの構成は、上記実施の形態に限らず、他のどのような組み合わせで機能ブロックを構成しても構わない。
【００８３】
以上、本発明の実施の形態１〜３について説明したが、この実施の形態のうち、１つの部分を実施しても構わない。あるいは、この実施の形態のうち、２つ以上の部分を組み合わせて実施しても構わない。
なお、以上の実施の形態は、本質的に好ましい例示であって、本発明、その適用物や用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【００８４】
１０  検証元表、２０  検証対象抽出表、１００，１００ａ，１００ｂ  整合性検証装置、１０３  メタモデル（要素定義）、１０４  メタモデル（記法定義）、１０５  モデル情報生成部、１０６  検証項目、１０７  モデル、１０８  検証処理部、１１０  モデル情報表、１１４  リスト表示部、１１６  ハイライト表示部、１１５  入力指定、１１７  指定箇所、１２１  検証対象表、１２２  メタモデル対応表、１２４  検証項目生成部、１２５  検証元抽出行、１２６  検証対象抽出行、９０１  演算装置、９０２  外部記憶装置、９０３  主記憶装置、９０４  通信装置、９０５  入出力装置、１０６１  設定行。
【図１】
2015041285.tif 000003
【図２】
2015041285.tif 000004
【図３】
2015041285.tif 000005
【図４】
2015041285.tif 000006
【図５】
2015041285.tif 000007
【図６】
2015041285.tif 000008
【図７】
2015041285.tif 000009
【図８】
2015041285.tif 000010
【図９】
2015041285.tif 000011
【図１０】
2015041285.tif 000012
【図１１】
2015041285.tif 000013
【図１２】
2015041285.tif 000014
【図１３】
2015041285.tif 000015
【図１４】
2015041285.tif 000016
【図１５】
2015041285.tif 000017
【図１６】
2015041285.tif 000018
【図１７】
2015041285.tif 000019
【図１８】
2015041285.tif 000020
【図１９】
2015041285.tif 000021