(57)【要約】【課題】  コンポーネント操作の宣言的な制約記述言語による仕様記述の非決定性と不完全性を正しく解釈して、照合を特定し、可視化する技術を提供する。【解決手段】  このため、記憶手段に格納された宣言的な制約記述言語による仕様記述情報を解析し、操作の事後条件から照合操作情報を抽出する解析手段と、抽出された照合操作情報を、モデリング言語で記述されたモデルと対応づけて表示するモデル表示手段とを有する。【選択図】  図２
2013145537.tif 000002
【特許請求の範囲】
【請求項１】
記憶手段に格納された宣言的な制約記述言語による仕様記述情報を解析し、操作の事後条件から照合操作情報を抽出する解析手段と、
抽出された照合操作情報を、モデリング言語で記述されたモデルと対応づけて表示するモデル表示手段と
を有することを特徴とする設計支援装置。
【請求項２】
前記照合操作情報は、照合する値を指定する入力パラメータもしくはその属性で構成される照合値情報、照合先を指定するクラスとその属性で構成される照合先情報、及び、照合結果を指定する出力パラメータもしくはその属性で構成される出力情報を含むことを特徴とする請求項１に記載の設計支援装置。
【請求項３】
前記モデル表示手段は、前記モデリング言語で記述されたモデルまたは前記制約記述言語による仕様記述の上に、前記照合値情報と前記照合先情報の対を対応付けて表示し、その対と前記出力情報の組を対応付けて表示することを特徴とする請求項２に記載の設計支援装置。
【請求項４】
前記モデル表示手段は、前記照合値情報と前記照合先情報の対と、前記対と出力情報の組を、リンク線または記号を用いて対応付けて表示することを特徴とする請求項３に記載の設計支援装置。
【請求項５】
前記解析手段は、前記操作の事後条件の中の等価演算、包含演算に基づき、前記照合値情報と前記照合先情報を抽出することを特徴とする請求項２に記載の設計支援装置。
【請求項６】
前記解析手段は、前記操作の事後条件の中の前記制約記述言語による表現が由来する、前記モデリング言語で記述されたモデルの名前付き要素の集合に基づき、前記照合値情報、前記照合先情報、前記出力情報を抽出することを特徴とする請求項２に記載の設計支援装置。
【請求項７】
前記解析手段は、前記操作の事後条件の中の前記制約記述言語による表現としてのＯＣＬ表現の属性に付加された@preキーワードに基づき、前記照合値情報と前記照合先情報を抽出することを特徴とする請求項２に記載の設計支援装置。
【請求項８】
前記解析手段は、前記操作の事後条件の中の前記制約記述言語による表現の値の確定性に基づき、前記出力情報を抽出することを特徴とする請求項２に記載の設計支援装置。
【請求項９】
前記解析手段は、前記操作の事後条件の中の、異なる２つの制約記述言語による表現の値の間の関係に基づき、前記出力情報を抽出することを特徴とする請求項２に記載の設計支援装置。
【請求項１０】
前記解析手段は、前記異なる２つの制約記述言語による表現の値の間の関係の含意の有無によって、前記出力情報を抽出することを特徴とする請求項９に記載の設計支援装置。
【請求項１１】
設計支援装置の制御方法であって、
解析手段が、記憶手段に格納された宣言的な制約記述言語による仕様記述情報を解析し、操作の事後条件から照合操作情報を抽出する解析工程と、
モデル表示手段が、抽出された照合操作情報を、ＵＭＬモデルと対応づけて表示するモデル表示工程と
を有することを特徴とする設計支援装置の制御方法。
【請求項１２】
記憶手段を有するコンピュータが読み込み実行することで、前記コンピュータを請求項１乃至９のいずれか１項に記載の設計支援装置の各手段として機能させるためのプログラム。
【請求項１３】
請求項１２に記載のプログラムを格納したことを特徴とするコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンポーネントの振る舞い仕様から照合操作情報を抽出して設計ツールに表示する、制約記述言語の解析技術に関する。
【背景技術】
【０００２】
ソフトウェアの仕様、設計工程において、標準言語であるＵＭＬ（Ｕｎｉｆｉｅｄ Ｍｏｄｅｌｉｎｇ Ｌａｎｇｕａｇｅ）を用いたモデリングが広く行われている。ＵＭＬはグラフィカルなモデリング言語であるが、制約記述言語ＯＣＬ（Ｏｂｊｅｃｔ Ｃｏｎｓｔｒａｉｎｔ Ｌａｎｇｕａｇｅ）を用いて、ＵＭＬモデルの制約を記述することが可能である。多くのＵＭＬ設計ツールが、ＯＣＬの記述や、ＵＭＬモデルとの整合性チェックを行う機能を備えている。
【０００３】
ＯＣＬは宣言的な制約記述言語であり、ソフトウェアモジュールの操作を実行するための条件と、実行後に満たすべき状態を、事前条件、事後条件として記述するために用いられる。モジュールの振る舞いの具体的な動作ステップが未定義であっても、操作の振る舞い仕様を正確に定義することが出来る。このためＯＣＬは、ソフトウェア部品であるコンポーネントの振る舞いの仕様の記述に度々用いられる。コンポーネント利用者は、ＯＣＬで記述された仕様を元に、コンポーネント操作の利用手順の設計を行う。
【０００４】
データの永続化を行う多くのコンポーネントは、操作の入力パラメータ値を永続データの属性に代入する代入操作と、操作の入力パラメータ値を属性に持つ永続データの存在を照合し、出力パラメータの値によって照合結果を伝える、照合操作を提供する。コンポーネント利用者は、代入操作と、照合操作を呼び出すことによって、永続データにアクセスする。典型的には、データの永続化はＲＤＢ（リレーショナル・データベース）を用いて実現され、代入操作と照合操作は各々、ＳＱＬのＵＰＤＡＴＥコマンドとＳＥＬＥＣＴコマンドを用いて実装される。
【０００５】
ＯＣＬの論理式は非決定性と不完全性を有する。例えばＯＣＬ表現“X or Y”の値がｔｒｕｅの場合に，XとYのいずれがｔｒｕｅの値を取るか決定することはできない（非決定性）。またXの値がｔｒｕｅである場合にYの値を特定することが出来ない（不完全性）。これらは、値の過度な指定（Ｏｖｅｒｓｐｅｃｉｆｉｃａｔｉｏｎ）を避ける上で重要な性質であるが、同時に解釈の誤りを生じやすい、という問題がある。コンポーネントの利用者が、ＯＣＬの論理式で宣言的に記述された代入や照合の仕様を誤って解釈した場合、代入操作や照合操作を不正確な方法で使用する恐れがある。
【０００６】
非特許文献１では、宣言的なＯＣＬ記述を、命令的なアクション記述に変換する方法が提案されている。変換後のアクション記述には、データの代入が明示的に記述される。非特許文献２では、宣言的なＯＣＬ記述から、代入を抽出する方法が述べられている。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Cabot, J.: From Declarative to Imperative UML/OCL Operation Specifications, Conceptual Modeling - ER 2007 (Parent, C., Schewe, K.D., Storey, V. and Thalheim, B., eds.), Lecture Notes in Computer Science, Vol. 4801, Springer Berlin / Heidelberg, pp. 198-213 (2007).
【非特許文献２】Inoue, T. and Honiden, S.: A method for data-flow analysis of business components, Proceedings of the 14th international ACM Sigsoft symposium on Component based software engineering, CBSE’11, New York, NY, USA, ACM, pp.51-60(2011).
【発明の概要】
【発明が解決しようとする課題】
【０００８】
前述の非特許文献１で述べられている技術は、パターンに基づく発見的な方法に基づいており、非決定性と不完全性を正しく扱っていない。また、非特許文献２で述べられている技術は、代入操作に対しては有効であるが、照合操作に対しては適用することができない。
【０００９】
本発明はかかる点に鑑みなされたものであり、コンポーネント操作の宣言的な制約記述言語による仕様記述の非決定性と不完全性を正しく解釈して、照合を特定し、可視化する技術を提供しようとするものである。
【課題を解決するための手段】
【００１０】
この課題を解決するため、例えば本発明の設計支援装置は以下の構成を備える。すなわち、
記憶手段に格納された宣言的な制約記述言語による仕様記述情報を解析し、操作の事後条件から照合操作情報を抽出する解析手段と、
抽出された照合操作情報を、モデリング言語で記述されたモデルと対応づけて表示するモデル表示手段とを有する。
【発明の効果】
【００１１】
本発明によれば、宣言的な制約記述言語による記述の照合操作情報を正しく読み取り、操作の入力パラメータと永続データの間の照合と、照合結果を表す出力パラメータを把握することが可能になる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態に係るＵＭＬ設計ツールのシステム構成図。
【図２】本実施形態に係るソフトウェア構成図。
【図３】本実施形態に係るＵＭＬ設計ツールのモデル表示画面。
【図４】本実施形態に係るＵＭＬ設計ツールのモデル表示画面。
【図５】本実施形態に係るＵＭＬ設計ツールのモデル表示画面。
【図６】本実施形態に係る照合操作解析手段の処理手順を表わすフローチャート。
【図７】本実施形態に係る抽象構文木の例。
【図８】本実施形態に係る子ノードの値の組み合わせパターン表。
【図９】本実施形態に係る子ノードの値の組み合わせパターン表。
【図１０】本実施形態に係る子ノードの値の組み合わせパターン表。
【図１１】本実施形態に係る起源の解析サブルーチンのフローチャート。
【図１２】本実施形態に係る起源の解析サブルーチンの説明図。
【図１３】本実施形態に係る起源の解析サブルーチンの説明図。
【図１４】本実施形態に係る等価・包含関係の解析サブルーチンのフローチャート。
【図１５】本実施形態に係る照合ノードの決定サブルーチンのフローチャート。
【図１６】本実施形態に係る照合ノードの決定サブルーチンの決定表。
【図１７】本実施形態に係る出力ノード候補の決定サブルーチンのフローチャート。
【図１８】本実施形態に係る確定性の判定サブルーチンのフローチャート。
【図１９】本実施形態に係る値の対応付けサブルーチンのフローチャート。
【図２０】本実施形態に係る照合操作情報の決定サブルーチンのフローチャート。
【図２１】本実施形態に係る含意の成立パターン。
【図２２】本実施形態に係るモデル表示手段の処理手順を表わすのフローチャート。
【図２３】本実施形態に係るＵＭＬ設計ツールのモデル表示画面。
【図２４】本実施形態に係るモデル表示手段の処理手順を表わすフローチャート。
【発明を実施するための形態】
【００１３】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００１４】
［第１の実施形態］
図１は、本実施形態のＵＭＬ設計支援装置（ＵＭＬ設計ツール）として機能するコンピュータ（情報処理装置）１００の構成を示している。中央ユニット１０１はコンピュータ１００を制御する電子回路を収容する。収容する電子回路には、ＣＰＵ、ＲＯＭ、ＲＡＭ、外部記憶装置として機能するハードディスクドライブ等の記憶手段（ＯＳやＵＭＬ設計ツールとして機能するアプリケーションプログラムも格納されている）、ビデオコントローラ等の表示制御手段を内包する。モニタ１０２はスクリーン１０３上にイメージを表示するために使用される。キーボード１０４とマウス１０５は、ユーザの入力操作を受け付けるために使用される。
【００１５】
本実施形態のＵＭＬ設計ツールのソフトウェア構成を図２に示す。ＵＭＬモデル・ＯＣＬ記述２０１は、ＸＭＩ等の形式でコンピュータ１００のストレージ（例えばハードディスク装置等の記憶手段）に保持される。照合操作解析手段２０２は、ＵＭＬモデル・ＯＣＬ記述２０１から照合操作情報２０３を生成し、コンピュータ１００のストレージ上に格納する。ＵＭＬモデル・ＯＣＬ記述２０１と照合操作情報２０３は、ネットワーク上のサーバストレージに保持されても良い。モデル表示手段２０４は、ＵＭＬモデル・ＯＣＬ記述２０１と照合操作情報２０３から生成したイメージを、モニタ２０５に表示する。
【００１６】
図３は、モデル表示手段２０４によってモニタ２０５上に表示される、ＵＭＬ設計ツールの表示Ｗｉｎｄｏｗ３００の構成を示している。構成Ｖｉｅｗ３０１には、ＵＭＬモデルの構成に従って、システム、パッケージ、インターフェース、操作、コンポーネント、クラス、等のモデル要素が階層的に表示される。構造Ｖｉｅｗ３０２には、ユーザがマウス１０５を用いて、構成Ｖｉｅｗ３０１上で選択したモデル要素の構造が表示される。図３では構成Ｖｉｅｗ３０１上でコンポーネントＣＰ１が選択されており（実線の枠によってそのことが表現されている）、構造Ｖｉｅｗ３０２にはコンポーネントＣＰ１と、コンポーネントＣＰ１が実現するインターフェースＩＦ１の構造が表示されている。構造Ｖｉｅｗ３０２では、ユーザがマウス１０５を用いて選択した操作Ｏｐ２が点線によって強調表示されており、構成Ｖｉｅｗ３０１でも同様に、操作Ｏｐ２が点線によって強調表示されている。さらに構造Ｖｉｅｗ３０２には、操作Ｏｐ２の戻り値の型であるＤＴＹＰＥ１の定義が、吹き出し中に記載されている。制約Ｖｉｅｗ３０３には、構成Ｖｉｅｗ３０１あるいは構造Ｖｉｅｗ３０２で選択されたモデル要素に関するＯＣＬ記述の内容が表示される。図３の例では、操作Ｏｐ２に関する事後条件が表示されている。照合操作情報表示切り替えボタン３０４は、照合操作情報の表示、非表示を切り替えるために使用される。
【００１７】
コンポーネント利用者は、制約Ｖｉｅｗ３０３に表示される事後条件の内容から、操作Ｏｐ２の仕様を理解できる。ここでは、図３の事後条件“let inst:Set(CLS2)〜k.Att2=j.CLS1.Att1@pre->asSet()))“を例に説明する。この事後条件は、ＣＬＳ３の、属性Ａｔｔ２の値が操作Ｏｐ２の入力パラメータｐａｒａｍ１の値に等しい全てのインスタンス集合に紐づく、ＣＬＳ２のインスタンス集合ｉｎｓｔの性質を記述している。ｉｎｓｔが空ならば、出力パラメータｒｅｓｕｌｔは空である。またｉｎｓｔの全ての要素ｊについて、ｊの属性Ａｔｔ２の値を属性Ａｔｔ１に持ち、かつｊに紐づくＣＬＳ１のインスタンス集合の属性Ａｔｔ１を属性Ａｔｔ２に持つような、ｒｅｓｕｌｔの要素が存在する。ここでｒｅｓｕｌｔと＠ｐｒｅは、ＯＣＬで定義されているキーワードであり、それぞれ、操作の戻り値を表す出力パラメータ、操作実行前の属性値の参照を意味する。
【００１８】
図３の事後条件の内容から、入力パラメータｐａｒａｍ１と、クラスＣＬＳ２のインスタンスの属性Ａｔｔ２の間の照合が行われ、ｒｅｓｕｌｔの値が空で無い場合には、照合の条件を満たすクラスＣＬＳ２のインスタンスが存在することが分かる。すなわち、操作Ｏｐ２は照合操作である。しかし、図３のようにテキスト形式で記述されたＯＣＬの論理式から、上記の照合操作情報を読み取ることは容易ではない。
【００１９】
本実施形態に示すＵＭＬ設計ツールでは、ユーザがマウス１０５を用いて、データフロー表示切り替えボタン３０４を押下することによって、照合操作解析手段２０２が上記の照合操作情報を自動的に抽出する。さらに図４の画面に遷移して、モデル表示手段２０４が照合操作情報を表示する。構造Ｖｉｅｗ４０２に、照合する値を指定する入力パラメータｐａｒａｍ１と、照合先を指定するクラスＣＬＳ２の属性Ａｔｔ２の対の間の照合を、両方向の有向線（リンク線）で表現し、前記の対と、照合結果を指定する戻りパラメータの組を、片方向の破線で表現している。制約Ｖｉｅｗ４０３にも、同様の表示を行っている。図４の表示内容から、コンポーネント利用者が、照合操作情報を正確に理解できることが出来る。図４の画面で、照合操作情報表示切り替えボタン４０４を押下することにより、再び図３に示す照合操作情報の表示を伴わない画面に遷移することも出来る。
【００２０】
図５は、図４と同様の内容を、記号を用いて表示したものである。照合先、照合値、出力の組を記号「（１）」で対応づけて表現する。単一の戻りパラメータが、複数の照合先と照合値の対に対応づけられる場合には、「（１）」「（２）」のように対毎に異なる記号を用いて、対応付けを表現する。
【００２１】
照合操作解析手段２０２の処理手順を表わすフローチャートを図６に示す。同図は、Ｓ６０１において、ユーザが選択したＵＭＬモデル要素のＯＣＬ仕様記述情報を読み出し、ＯＣＬ記述中の各事後条件について、Ｓ６０２からＳ６２０までの処理を繰り返す。先ずＳ６０３において、事後条件の構文解析を行い、抽象構文木を生成する。この処理は既存の構文解析の処理系を用いて行うことが出来る。例として図７に、図３、図４、図５の制約Ｖｉｅｗに示した事後条件の抽象構文木を示す。
【００２２】
次にＳ６０４において、ハッシュ変数Ｌ、Ｈ、Ｖを空ハッシュに初期化する。また抽象構文木のノードを示す変数Ｎ、ＯＣＬ表現のノード集合Ｏ、Ｓfj、ノードの解釈の組み合わせ集合Ｐfjを、其々、抽象構文木のルートノード、空集合、抽象構文木の分岐点・合流点ノードの集合、Ｓfjの要素の解釈の一意な組み合わせ集合に初期化する。ＯＣＬの抽象構文木は、複数個所で参照される変数の定義ノードを閉路の合流点とするＤＡＧ（Ｄｉｒｅｃｔｅｄ  Ａｃｙｃｌｉｃ  Ｇｒａｐｈ）である。図７の例では、ノード７０２とノード７０３が閉路の合流点ノード、ノード７０１が分岐点ノードである。
【００２３】
ノードの解釈とは、親ノードの値に対する子ノードの値の組み合わせであり、ＯＣＬ表現の種類毎に定義される。子ノードの値の組み合わせには複数のパターンがあり得る。等価演算、論理演算、集合演算についてのパターン表を、それぞれ図８、図９、図１０に示す。各表の行と列は親ノードの取りうる値と親ノードの種類を示し、交点のセルはリンクする子ノードに割り当てるべき値を示す。Ｔは真（Ｔｒｕｅ）、Ｆは偽（Ｆａｌｓｅ）、Ｕは未定義値を表す。子ノードが複数存在する場合は、構文木と同一の順序で子ノード毎にセルを設けている。ＯＣＬの非決定性により、子ノードの抽象値が一意に定まらない場合があり、そのような場合は取り得る値を／で区切って記載している。図８、図９、図１０に示した解釈パターンは、非特許文献２に記載されているものの一部であり、他のＯＣＬ表現についても、同様に解釈パターンを定義する。Ｐfjは、ノード集合Ｓfjの全ての要素についての解釈の一意な組み合わせから構成する。
【００２４】
次にＳ６０５において、起源の解析サブルーチンを呼び出し、Ｓ６０６において、等価・包含関係の解析サブルーチンを呼び出し、Ｓ６０７において照合ノードの決定サブルーチンを呼び出し、Ｓ６０８において出力ノード候補の決定サブルーチンを呼び出す。さらにＳ６１０からＳ６１７において、Ｐfjの全ての要素について、処理を行う。全ての出力ノード候補ｎについて、Ｓ６１１で確定性の判定サブルーチンを呼び出す。確定性の判定サブルーチンは、ｎの値が確定的であるか否かを判定する。ｎの値が不定値を取り得る、すなわち確定的で無い場合には、ｎの値によって、照合結果を決定することが出来ないことを意味する。そこで判定結果が確定的である場合には、Ｓ６１３でハッシュＶのキーにｎを追加して、Ｓ６１４で値の対応付けサブルーチンを呼び出す。判定結果が確定的で無い場合には、Ｓ６１５とＳ６１６でｎを、集合Ｏと、ハッシュＶから除外する。Ｓ６１９で照合操作情報の決定サブルーチンを呼び出す。
【００２５】
起源の解析サブルーチンのフローチャートを図１１に示す。このサブルーチンは、引数ノードの値が由来する、ＵＭＬモデルの構造Ｖｉｅｗ上の名前付き要素の集合を特定する。例えば図４の制約Ｖｉｅｗ４０３中の、照合先を指定する表現 “i.Att3@pre”は、クラスＣＬＳ３の属性Ａｔｔ３の値集合であるため、このＯＣＬ表現ノードの起源はクラスＣＬＳ３の属性Ａｔｔ３である。起源の解析サブルーチンは複数のＯＣＬ表現に対して実行されるため、求めた名前付き要素の集合をハッシュＨにメモ化して、再利用する。
【００２６】
まずＳ１１０１で、ハッシュＨに引数ノードＮをキーにして値を取得した値でリスト変数ＯＬを初期化し、Ｓ１１０２でその値がＮＵＬＬか否かを判定する。ＮＵＬＬで無い場合には、指定された引数ノードＮの起源は既に算出済みであるため、リターンする。Ｓ１１０３でＯＬを空リストに初期化した後、Ｓ１１０４においてＮがＬｉｔｅｒａｌＥｘｐのインスタンスに該当するか確認する。該当する場合は、ＮがＵＭＬモデルの構造に関連しない即値を表し、Ｎの起源は存在しないため、リターンする。Ｓ１１０４で該当しない場合には、Ｓ１１０５においてＮがＰｒｏｐｅｒｔｙＣａｌｌＥｘｐのインスタンスに該当するか確認する。該当する場合は、Ｎがクラスの属性を参照することを意味するため、Ｓ１１１１でこの属性をリストＯＬに追加する。Ｓ１１０５で該当しない場合には、Ｓ１１０６においてＮがＰａｒａｍｅｔｅｒのインスタンスに該当するか確認する。該当する場合は、Ｎがパラメータを参照することを意味するため、Ｓ１１１２でこのパラメータをリストＯＬに追加する。Ｓ１１０６で該当しない場合には、Ｎの起源が一部の子ノード集合の起源を合わせたものになる。そこでこれらの子ノード集合について、Ｓ１１０７からＳ１１１０の処理を繰り返す。Ｓ１１０８で子ノードの起源を求め、Ｓ１１０９でＯＬに加える。Ｓ１１０７からＳ１１１０の処理を行う子ノード集合Ｓは、Ｎの種類に依存する。例えば、Ｎがｓｅｌｅｃｔ演算を表すＯｐｅｒａｔｉｏｎＣａｌｌＥｘｐのインスタンスの場合には、図１２に示すように、Ｎの起源１２０２はＮの第１子ノードＳｏｕｒｃｅＥｘｐｒｅｓｓｉｏｎの起源１２０１と同一の値になるため、Ｓ＝｛第１子ノード｝である。一方、Ｎがｉｎｃｌｕｄｉｎｇ演算を表すＯｐｅｒａｔｉｏｎＣａｌｌＥｘｐのインスタンスである、図１３のケースを考える。この場合には、Ｎの起源１３０３は、Ｎの第１子ノードＳｏｕｒｃｅＥｘｐｒｅｓｓｉｏｎの起源１３０１と、第２子ノードＡｒｇｕｍｅｎｔＥｘｐｒｅｓｓｉｏｎの起源１３０２を合わせた値になり、Ｓ＝｛第１子ノード，第２子ノード｝である。他の種類のノードについても、同様にＳを定義することが出来る。最後にＳ１１１３でハッシュＨにＮをキー値に指定してリストＯＬを登録し、リターンする。
【００２７】
等価・包含関係の解析サブルーチンのフローチャートを図１４に示す。このサブルーチンは、照合する値と、照合先を表す可能性があるＯＣＬ表現ノードとして、抽象構文木中の等価演算＝、あるいは包含演算Ｉｎｃｌｕｄｅｓ、ＩｎｃｌｕｄｅｓＡｌｌに対応するＯＣＬ表現ノードを抜き出す処理を行う。演算の片方のオペランドが照合値を、他方のオペランドが照合先を表す。Ｓ１４０１において、引数で渡された抽象構文木ノードＮが、演算を表すＯｐｅｒａｔｉｏｎＣａｌｌＥｘｐのインスタンスに該当するか確認し、該当する場合にはＳ１４０２で、その名前が＝、Ｉｎｃｌｕｄｅｓ、ＩｎｃｌｕｄｅｓＡｌｌの何れかに一致するか確認する。名前が一致する場合には、Ｓ１４０３においてノードＮをハッシュＬのキーに追加する。図７の抽象構文木の例では、ノード７０４、７０５、７０６が上記の等価演算、包含演算に該当する。そしてＳ１４０４からＳ１４０６において、子ノードとリストＬを指定して、再帰的に自身のサブルーチンを呼び出す。
【００２８】
照合ノードの決定サブルーチンのフローチャートを図１５に示す。等価・包含関係の解析で抽出したＯＣＬ表現ノードの中で、片方のオペランドの起源に操作パラメータもしくはその属性、他方のオペランドの起源にクラスの属性を含むノードだけが、実際に照合を表す照合ノードである。照合ノードの決定サブルーチンは、この照合の条件を満たす照合ノードを決定する処理を行う。Ｓ１５０１からＳ１５１２において、引数のハッシュ変数Ｌの全てのキーｎについて、処理を行う。Ｓ１５０２においてリスト変数ＬＬ、ＬＲを、ノードｎの左オペランドと右オペランドをキーにして、それぞれハッシュＨに登録された起源のリストで初期化する。ＬＬとＬＲの全ての要素の組み合わせについて、Ｓ１５０５からＳ１５０７の処理を繰り返す。Ｓ１５０５で、ＬＬの要素ｌとＬＲの要素ｒが操作パラメータまたはその属性と，クラスの属性の組み合わせに該当するか判断し、さらにＳ１５０６で、ｌとｒが照合の条件を満たすか判断する。Ｓ１５０６の判断は図１６に示す決定表に従って行う。決定表では、ｌとｒの組み合わせに対して、パラメータの方向（ｉｎ、ｏｕｔ、ｒｅｔｕｒｎのいずれか）と、ＯＣＬの@preキーワードがクラスの属性に付与されているか否かによって、判断を行う。パラメータの方向がｉｎで、属性に@preキーワードが付与（付加）されている場合のみ、照合ノードとして判断し、Ｓ１５０７において、ｎをキーとして、ｌとｒの組み合わせをハッシュＨに登録する。Ｓ１５１０において、Ｌ（ｎ）が空の場合は、Ｓ１５１１において、ｎをＬのキーから削除する。本サブルーチンの実行後に、Ｌに登録されている情報が、照合ノードと、照合値情報と照合先情報の対との、組を表す。例えば、図７の抽象構文木に対する照合ノードの決定サブルーチンの実行後には、照合ノード７０４と、ＣＬＳ３の属性Ａｔｔ３と操作パラメータｐａｒａｍ１の対応付けが、Ｌに含まれる。
【００２９】
出力ノード候補の決定サブルーチンのフローチャートを図１７に示す。このサブルーチンは、照合結果を指定する出力ノードの候補を特定する。Ｓ１７０１からＳ１７０７において、引数のハッシュＨの全てのキーｎについて処理を行う。Ｓ１７０２で、リスト変数ＨＬを、ノードｎをキーとして、ハッシュＨに登録された起源のリストで初期化する。Ｓ１７０３からＳ１７０６において、ＨＬの全ての要素ｅについて、処理を繰り返す。Ｓ１７０４でｅが出力パラメータまたはその属性である場合は、Ｓ１７０５でｎを集合Ｏに追加する。
【００３０】
確定性の判定サブルーチンのフローチャートを図１８に示す。このサブルーチンは、出力ノードの候補ｎと、Ｐfjの要素である解釈の組み合わせｅを入力パラメータとして、ｎの値の確定性を判定し、出力パラメータｂに格納する。Ｓ１８０１において、集合変数Ｐiをｅに、集合変数Ｓnを構文木中の全てのノード集合に、それぞれ初期化する。Ｓ１８０２からＳ１８０５において、Ｓnの全ての要素ｎｏｄｅについて処理を行う。Ｓ１８０３において、ｎｏｄｅの全ての解釈とｅに共通要素が存在するか否か判断を行い、存在しない場合、すなわちｎｏｄｅが分岐点・合流点でない場合には、Ｓ１８０４において、Ｐiにｎｏｄｅの全ての解釈を追加する。Ｓ１８０６で、ｎの全ての解釈をＰiから除外し、Ｓ１８０７において、Ｐiの可能な解釈の組み合わせを計算し、その結果をＰiに保持する。この組み合わせ計算には、非特許文献２に述べられているアルゴリズムを用いる。計算の結果、Ｐiが空であるならば、ｎが不定値を取るような解釈の組み合わせが存在しないことを意味するので、Ｓ１８０８において、出力パラメータｂに、Ｐiが空である設定を行う。
【００３１】
値の対応付けサブルーチンのフローチャートを図１９に示す。このサブルーチンは、出力ノードの候補ｎと、照合ノードのリストＬの各要素について、取り得る値の組み合わせを計算し、ハッシュＶに格納する。Ｓ１９０１からＳ１９０５の処理は、図１８の確定性の判定サブルーチンの処理Ｓ１８０１からＳ１８０５と同様である。Ｓ１９０７からＳ１９３４において、Ｌの各要素ｌについて処理を行う。Ｓ１９０７において、値Ｔ、Ｆを取るｎ、ｌの解釈集合をそれぞれＰnt、Ｐnf、Ｐlt、Ｐlfとし、Ｓ１９０８からＳ１９１７で各集合を求める。Ｓ１９１９からＳ１９２２において、可能な解釈の組み合わせを表す解釈集合Ｐi_ot、Ｐi_ot_lu、Ｐi_of、Ｐi_of_luを計算する。Ｐi_otは、出力ノード候補ｎの値がＴであるような解釈集合であり、Ｐi_ot_luは、出力ノード候補ｎの値がＴで、かつ照合ノードｌの値がＵであるような解釈集合である。またＰi_ofは、出力ノード候補ｎの値がＦであるような解釈集合であり、Ｐi_of_luは、出力ノード候補ｎの値がＦで、かつ照合ノードｌの値がＵであるような解釈集合である。各解釈集合の計算には、非特許文献２に述べられているアルゴリズムを用いる。Ｓ１９２５において、Ｐi_ot∩Ｐltが空でないならば、ｎとｌがそれぞれＴを取るような解釈の組み合わせが存在することを意味するので、Ｓ１９２６において、その値の組み合わせをＶに保持する。他に、Ｐi_ot∩Ｐlf、Ｐi_ot_lu、Ｐi_of∩Ｐlt、Ｐi_of∩Ｐlf、Ｐi_of_lu、についても、Ｓ１９２７からＳ１９３４において、同様にｎとｌの値の組み合わせを求める。
【００３２】
照合操作情報の決定サブルーチンのフローチャートを図２０に示す。このサブルーチンは、出力ノード候補ｎの値から、照合結果が真となることが演繹的に決定できるか否かを判定し、決定できる場合には、照合操作情報を出力する。Ｓ２００１からＳ２０１２において、Ｖに登録された出力ノード候補ｎと照合ノードｌの全ての組み合わせについて、処理を行う。Ｓ２００３において、出力ノード候補ｎの値と、照合ノードｌの値がＴであることの間に、含意関係の有無を調べる。そのような含意が成り立つのは、ｎの値ｖｎと、ｌの値集合ｖｌが、図２１のパターン１とパターン２のいずれかのパターンに当てはまる場合である。ただしＰｏｗｅｒ（Ｓ）は集合Ｓの羃集合を表す。Ｓ２００４からＳ２０１０において、含意関係が成り立つｎとｌの組み合わせについて、照合操作情報を出力する。
【００３３】
モデル表示手段２０４の処理手順を表わすフローチャートを図２２に示す。Ｓ２２０１においてＵＭＬモデルを、Ｓ２２０２においてユーザが選択した操作のＯＣＬ制約を、それぞれ構造Ｖｉｅｗと制約Ｖｉｅｗに表示する。Ｓ２２０３において、照合操作情報を行う表示設定が行われているか判断し、設定が行われている場合には、Ｓ２２０４で、選択された操作のＯＣＬ制約の照合操作情報を取得する。各照合操作情報ｉについて、Ｓ２２０５からＳ２２０９の処理を繰り返す。Ｓ２２０６で、ｉ１、ｉ２、ｉ３にそれぞれ、照合操作情報ｉの照合値情報、照合先情報、出力情報を設定して、Ｓ２２０７で制約Ｖｉｅｗ上に、ｉ１とｉ２の対と、その対とｉ３の組を表示する。Ｓ２２０８においても同様に、構造Ｖｉｅｗ上に照合操作情報を表示する。その結果、図４に示すような表示が実現される。
【００３４】
以上の説明のように本実施形態では、図８、図９、図１０に示す解釈に従って、ＯＣＬの論理式が有する非決定性と不完全性を厳密に扱い、照合操作情報を正確に抽出する。従ってユーザは、ＵＭＬ設計ツール上に表示される照合操作情報から、照合操作の仕様を正確に理解することが可能になる。
【００３５】
［第２の実施形態］
上記第１の実施形態では、ユーザが選択した特定の操作のＯＣＬ制約に関わる照合操作情報を、モニタ２０５上に表示する。それに対して本第２の実施形態では、ユーザが選択した、コンポーネントのクラスの属性に関わる、複数の照合操作情報を、モニタ２０５上に表示する例を説明する。
【００３６】
図２３において、ユーザは構造Ｖｉｅｗ２３０２上で、クラスの属性を選択する。構造Ｖｉｅｗ２３０２では、ユーザがマウス１０５を用いて選択したクラスＣＬＳ３の属性Ａｔｔ３が、点線によって強調表示されている。制約Ｖｉｅｗ２３０３には、操作Ｏｐ１とＯｐ２の事後条件が自動的に抽出、表示され、Ａｔｔ３に関わる２つの照合操作情報が表示されている。本第２の実施形態におけるＵＭＬ設計ツールの機能は、ユーザが特定のクラスの属性から、その属性に関わる照合操作情報を知りたい場合に、有用である。
【００３７】
本第２の実施形態と上記第１の実施形態とでは、モデル表示手段２０４の動作フローが異なる。本第２の実施形態におけるモデル表示手段２０４の処理手順を表わすフローチャートを図２４に示す。
【００３８】
Ｓ２４０１において構造ＶｉｅｗにＵＭＬモデルを表示し、Ｓ２４０２において、ユーザが選択したクラスの属性の情報を取得する。図２３の例では、この情報は「ＣＬＳ３のＡｔｔ３」である。Ｓ２４０３において、照合操作情報を行う表示設定が行われているか判断し、設定が行われている場合には、Ｓ２４０４において、選択されたクラスの属性に関わる照合操作情報を、照合操作情報２０３から取得する。取得した照合操作情報の各要素について、Ｓ２４０５からＳ２４１１の処理を繰り返す。Ｓ２４０６において、照合操作情報ｉに対応する照合操作のＯＣＬ記述が、制約Ｖｉｅｗに未表示か確認を行い、未表示の場合はＳ２４０７において、表示を行う。Ｓ２４０８で、ｉ１、ｉ２、ｉ３にそれぞれ、照合操作情報ｉの照合値情報、照合先情報、出力情報を設定して、Ｓ２４０９で制約Ｖｉｅｗ上の照合操作に、ｉ１とｉ２の対と、その対とｉ３の組を表示する。Ｓ２４１０においても同様に、構造Ｖｉｅｗ上に照合操作情報を表示する。
【００３９】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2013145537.tif 000003
【図２】
2013145537.tif 000004
【図３】
2013145537.tif 000005
【図４】
2013145537.tif 000006
【図５】
2013145537.tif 000007
【図６】
2013145537.tif 000008
【図７】
2013145537.tif 000009
【図８】
2013145537.tif 000010
【図９】
2013145537.tif 000011
【図１０】
2013145537.tif 000012
【図１１】
2013145537.tif 000013
【図１２】
2013145537.tif 000014
【図１３】
2013145537.tif 000015
【図１４】
2013145537.tif 000016
【図１５】
2013145537.tif 000017
【図１６】
2013145537.tif 000018
【図１７】
2013145537.tif 000019
【図１８】
2013145537.tif 000020
【図１９】
2013145537.tif 000021
【図２０】
2013145537.tif 000022
【図２１】
2013145537.tif 000023
【図２２】
2013145537.tif 000024
【図２３】
2013145537.tif 000025
【図２４】
2013145537.tif 000026