(57)【要約】      （修正有）【課題】プロジェクト固有のルールに基づいたＵＭＬモデルの品質検証作業を効率化する。【解決手段】読込部は、モデルの品質を検証するためのルール定義を読み込む。ルール定義は、モデル要素と関連する他のモデル要素を探索する第１のルールを特定する情報及び該第１のルールの動作を特定するための値、モデル要素の属性及び関係を検証する第２のルールを特定する情報及び該第２のルールの動作を特定するための値、並びに第１のルール及び第２のルールを制御するための第３のルールを特定する情報及び第３のルールの動作を特定するための値を含む。取得部は、読み込んだルール定義に基づいて、ルールを取得する。探索部は、取得した第１のルールに従い、第１のモデル要素と関連を有する第２のモデル要素を探索する。検証部は、取得した第２のルールに従い、モデルの品質を検証する。検証制御部は、取得した第３のルールに従い、探索部及び検証部を制御する。【選択図】図１
2010086066.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１のモデル要素を含むモデルの品質を検証するためのコンピュータ・システムであって、各モデル要素は、属性を有し及び０又は１以上の他のモデル要素と関係付けられており、
前記コンピュータ・システムは、
モデルの品質を検証するためのルール定義を第１の記憶部内に読み込む読込部であって、前記ルール定義は、モデル要素と関連する他のモデル要素を探索する第１のルールを特定する情報及び該第１のルールの動作を特定するための値、モデル要素の属性及び関係の正確性を検証する第２のルールを特定する情報及び該第２のルールの動作を特定するための値、並びに前記第１のルール及び前記第２のルールを制御するための第３のルールを特定する情報及び該第３のルールの動作を特定するための値を含む、前記読込部と、
前記読み込んだルール定義に基づいて、ルールを第２の記憶部から取得する取得部であって、前記ルールは、前記第１のルール、前記第２のルール及び前記第３のルールを含む、前記取得部と、
前記取得した第１のルールに従い、第１のモデル要素と関連を有する第２のモデル要素を探索する探索部と、
前記取得した第２のルールに従い、前記モデルの品質を検証する検証部と、
前記取得した第３のルールに従い、前記探索部及び前記検証部を制御する検証制御部と
を含む、前記コンピュータ・システム。
【請求項２】
前記ルール定義が、検証対象であるモデル要素を絞り込む第４のルールを特定する情報及び該第４のルールの動作を特定するための値をさらに含み、
前記読込部が、前記第４のルールを特定する情報及び該第４のルールの動作を特定するための値を前記第１の記憶部内に読み込み、
前記取得部が、前記第４のルールを前記第２の記憶部から取得し、
前記コンピュータ・システムが、
前記取得した第４のルールに従い、第３の記憶部に格納されたモデル要素全体から、検証対象である第１のモデル要素を絞り込む絞込部
をさらに含み、
前記制御部が、前記探索部及び前記検証部に加えて前記絞込部をさらに制御する、請求項１に記載のコンピュータ・システム。
【請求項３】
前記探索部が、前記取得した第１のルールに従い、前記絞り込まれた第１のモデル要素と関連を有する第２のモデル要素を探索する、請求項２に記載のコンピュータ・システム。
【請求項４】
前記モデルの品質の検証結果を表示する表示部をさらに含む、請求項１に記載のコンピュータ・システム。
【請求項５】
前記取得した第１のルール、第２のルール及び第３のルールに、前記第１の記憶部内に読み込んだ前記第１のルールの動作を特定するための値、前記第２のルールの動作を特定するための値及び前記第３のルールの動作を特定するための値をそれぞれ適用するルール構築部をさらに含む、請求項１に記載のコンピュータ・システム。
【請求項６】
前記取得した第１のルール、第２のルール、第３のルール及び第４のルールに、前記第１の記憶部内に読み込んだ前記第１のルールの動作を特定するための値、前記第２のルールの動作を特定するための値、前記第３のルールの動作を特定するための値及び前記第４のルールの動作を特定するための値をそれぞれ適用するルール構築部をさらに含む、請求項２に記載のコンピュータ・システム。
【請求項７】
前記第１のルールが、あるモデル要素が関係、参照、利用又は保持している他のモデル要素を探索すること、あるモデル要素が描画されている図を探索すること、及びあるモデル要素が関係、参照、利用又は保持している図上に描画されたモデル要素を探索することの少なくとも１を含む、請求項１に記載のコンピュータ・システム。
【請求項８】
前記第２のルールが、モデル要素の属性の値が指定した数値であるかどうかを検証すること、モデル要素の属性の値と指定した値との大小を検証すること、モデル要素の属性の値が指定した値域内に含まれることを検証すること、モデル要素の属性の文字列が指定した文字列のパターンに完全又は部分一致するかどうかを検証すること、モデル要素の属性の設定値が指定した値の中から選択されているかどうかを検証すること、及び前記第１のルールにより探索されたモデル要素の個数と指定された数を検証することの少なくとも１を含む、請求項１に記載のコンピュータ・システム。
【請求項９】
前記第３のルールが、前記探索部及び前記検証部の実行順を含む、請求項１に記載のコンピュータ・システム。
【請求項１０】
前記第３のルールが、前記絞込部、前記探索部及び前記検証部の実行順、並びに前記絞込部、前記探索部及び前記検証部の組み合わせの少なくとも１を含む、請求項２に記載のコンピュータ・システム。
【請求項１１】
前記第４のルールが、モデル要素の属性の値が指定した数値を有するモデル要素を絞込むこと、モデル要素の属性の文字列が指定した文字列のパターンに完全又は部分一致するモデル要素を絞込むこと、モデル要素の属性の設定値が指定した値の中から選択されているモデル要素を絞込むこと、モデル要素の種類によりモデル要素を絞込むこと、所定の名前を有するモデル要素にモデル要素を絞込むこと、名前を有するモデル要素の属性値によりモデル要素を絞込むこと、図の種類によりモデル要素を絞込むこと、及びモデル要素の配置場所によりモデル要素を絞込むことの少なくとも１を含む、請求項２に記載のコンピュータ・システム。
【請求項１２】
前記第１のモデル要素を特定するための特定手段をさらに含む、請求項１に記載のコンピュータ・システム。
【請求項１３】
前記モデルが、統一モデリング言語（ＵＭＬ）、メタオブジェクト・ファシリティ（Meta-Object Facility）・メタモデル、ＣＷＭ（Common Warehouse Meta-model）又はビジネス・プロセス・モデリング言語である、請求項１に記載のコンピュータ・システム。
【請求項１４】
前記モデルが統一モデリング言語（ＵＭＬ）であり、前記モデル要素がＵＭＬ要素である、請求項１に記載のコンピュータ・システム。
【請求項１５】
少なくとも１のモデル要素を含むモデルの品質を検証するための方法であって、前記モデル要素は、各モデル要素は、属性を有し及び０又は１以上の他のモデル要素と関係付けられており、
前記方法は、
モデルの品質を検証するためのルール定義を第１の記憶部内に読み込むステップであって、前記ルール定義は、モデル要素と関連する他のモデル要素を探索する第１のルールを特定する情報及び該第１のルールの動作を特定するための値、モデル要素の属性及び関係の正確性を検証する第２のルールを特定する情報及び該第２のルールの動作を特定するための値、並びに前記第１のルール及び前記第２のルールを制御するための第３のルールを特定する情報及び該第３のルールの動作を特定するための値を含む、前記読み込むステップと、
前記読み込んだルール定義に基づいて、ルールを第２の記憶部から取得するステップであって、前記ルールは、第１のルール、第２のルール及び第３のルールを含む、前記取得するステップと、
前記取得した第３のルールに従い、下記ステップを制御するステップであって、
該ステップが、
前記取得した第１のルールに従い、第１のモデル要素と関連を有する第２のモデル要素を探索するステップと、
前記取得した第２のルールに従い、前記モデルの品質を検証するステップと
を含む、前記制御するステップと
を含む、前記方法。
【請求項１６】
前記ルール定義が、検証対象であるモデル要素を絞り込む第４のルールを特定する情報及び該第４のルールの動作を特定するための値をさらに含み、
前記読み込むステップが、前記第４のルールを特定する情報及び該第４のルールの動作を特定するための値を前記第１の記憶部内に読み込むステップをさらに含み、
前記取得するステップが、前記第４のルールを前記第２の記憶部から取得するステップをさらに含み、
前記方法が、
前記取得した第４のルールに従い、第３の記憶部に格納されたモデル要素全体から、検証対象である第１のモデル要素を絞り込むステップ
をさらに含み、
前記制御するステップが、前記探索するステップ及び前記検証するステップに加えて前記絞り込むステップをさらに制御する、請求項１５に記載の方法。
【請求項１７】
前記探索するステップが、前記取得した第１のルールに従い、前記絞り込まれた第１のモデル要素と関連を有する第２のモデル要素を探索するステップを含む、請求項１６に記載の方法。
【請求項１８】
前記モデルの品質の検証結果を表示するステップをさらに含む、請求項１５に記載の方法。
【請求項１９】
前記取得した第１のルール、第２のルール、第３のルール及び第４のルールに、前記第１の記憶部内に読み込んだ前記第１のルールの動作を特定するための値、前記第２のルールの動作を特定するための値、前記第３のルールの動作を特定するための値及び前記第４のルールの動作を特定するための値をそれぞれ適用するステップをさらに含む、請求項１６に記載の方法。
【請求項２０】
少なくとも１のモデル要素を含むモデルの品質を検証するための方法であって、前記モデル要素は、各モデル要素は、属性を有し及び０又は１以上の他のモデル要素と関係付けられており、
前記方法は、
モデルの品質を検証するためのルール定義を第１の記憶部内に読み込むステップであって、前記ルール定義は、検証対象であるモデル要素を絞り込むフィルター・ルールを特定する情報及び該フィルター・ルールの動作を特定するための値、モデル要素と関連する他のモデル要素を探索するエクストラクター・ルールを特定する情報及び該エクストラクター・ルールの動作を特定するための値、モデル要素の属性及び関係を検証するアトミック・ルールを特定する情報及び該アトミック・ルールの動作を特定するための値、並びに前記フィルター・ルール、前記エクストラクター・ルール及び前記アトミック・ルールを制御するコンポジット・ルールを特定する情報及び該コンポジット・ルールの動作を特定するための値を含む、前記読み込むステップと、
該読み込んだルール定義に基づいて、ルールを第２の記憶部から取得するステップであって、前記ルールは、コンポジット・ルール、フィルター・ルール、エクストラクター・ルール及びアトミック・ルールを含む、前記取得するステップと、
前記取得したコンポジット・ルールに従い、下記ステップを制御するステップであって、
該ステップが、
前記取得したフィルター・ルールに従い、第３の記憶部に格納されたモデル要素全体から、検証対象である第１のモデル要素を絞り込むステップと、
前記取得したエクストラクター・ルールに従い、前記絞り込まれた第１のモデル要素と関連を有する第２のモデル要素を探索するステップと、
前記取得したアトミック・ルールに従い、前記モデルの品質を検証するステップ
を含む、前記制御するステップと、
前記モデルの品質の検証結果を表示するステップと
を含む、前記方法。
【請求項２１】
コンピュータ・システムに、請求項１５〜２０のいずれか一項に記載の方法の各ステップを実行させるコンピュータ読み取り可能なコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モデル要素を含むモデルの品質を検証するためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラムに関する。
【背景技術】
【０００２】
アプリケーション・ソフトウェアの開発（特に、オブジェクト指向設計開発）において、ＵＭＬ（Unified Modeling Language）を使用して、ユースケース・モデル、分析モデル、設計モデル等のモデリングを行うことが一般的になってきている。モデリングでは、モデリング作業を支援するＵＭＬモデリング・ツールが、広く利用されている。
ＵＭＬは、ソフトウェアをモデリングするための基本的な要素、ルール、制約等をメタモデルとして規定している。ＵＭＬは本来、多様なソフトウェアをモデリングすることを目的としているので、汎用的な言語仕様となっている。そのため、ＵＭＬを使用することで、比較的自由度の高いモデル定義又はダイアグラム作成が可能である。よって、モデリング担当者の属人性がどうしても入り込み、成果物の一定の品質を確保することが難しい。
【０００３】
特定のアプリケーション・ソフトウェアを開発する比較的規模の大きなプロジェクトにおいて、アプリケーション・ソフトウェアのアーキテクチャ、適用すべき設計パターン、成果物の標準等のモデリング上のルールがあらかじめ定められた上で、アプリケーションのモデリングが行われることが多い。しかしながら、上述したように、ＵＭＬの自由度の故に、プロジェクト固有のルールをモデリング担当者に完全に徹底させることは困難である。そのために、例えば、以下に示すように、成果物の品質上の様々な問題が発生する。
・ＵＭＬ要素（ユースケース、コンポーネント、クラス、インタフェース、メソッド等）の名称がネーミング・ルールに沿っていない。
・ＵＭＬ要素の属性値の設定、記述がルールに沿っていない。
・成果物として規定されたダイアグラムが不足している。
・ＵＭＬ要素間の関係が、アーキテクチャ又は設計パターンの規定に違反している。
・必要なＵＭＬ要素がダイアグラム上に記載されていない。
・関連する複数のダイアグラム間の記述内容に矛盾がある。
【０００４】
従来は、成果物の品質上の問題に対して人手による成果物のレビュー又はインスペクションにより品質を確保してきた。しかし、アーキテクチャが複雑である場合又は開発するアプリケーションが大規模な場合、対象となるＵＭＬモデルも複雑乃至は膨大となるため、人手による網羅的な品質検証は非常に困難であった。またその結果として、コーディング又はテストなどの下流工程において、残留していた欠陥が顕在化する等の問題があった。
【０００５】
下記特許文献１は、ＵＭＬによるモデリングのレビューを支援するレビュー支援装置、レビュー支援方法、レビュー支援プログラムを記載する。特許文献１の発明では、モデリングのレビューは、ルールデータベースを参照し、モデルをチェック条件に基づいてチェックすることによって行われる。該チェックは、ルールデータベースのチェック項目毎にルールに違反した回数を記録し、次回以降、当該エラー回数の多い項目順にチェックすることによって行われる。図３は、モデル品質をチェックするルールデータベースの構成を示し、モデルのチェック項目、モデルチェックの重要度を示すレベル、チェックする際の条件を示す処理方法、チェック項目を評価する評価点、およびチェック時にルール違反したエラー回数の項目からなる複数のレコードを記載する。
【０００６】
【特許文献１】特開２００７−２６５００５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ＵＭＬモデルがＵＭＬのメタモデル若しくは仕様に合致しているか又は一般的によく知られているモデリング・ルールに沿っているかについて検証する技術はあった。該技術は、例えば、インターナショナル・ビジネス・マシーンズ・コーポレーション（以下、ＩＢＭ（商標））社のＲＳＡ（Rational（商標） Software Architect）、ＲＳＭ（Rational（商標） Software Modeler）に付属するＵＭＬモデルの検証機能等である。しかしながら、該技術では、プロジェクト固有のアーキテクチャ又はモデリング上のルールに沿った検証を行うことはできなかった。また、該技術では、異なる種類のモデル間（例えば、ＵＭＬモデルとダイアグラム、ダイアグラムとダイアグラム等）の整合性を検証することもできない。モデル担当者が独自の検証ルールを定義することも可能ではある。しかし、独自の検証ルールを記述するためには、モデリング担当者がＵＭＬに関する深い知識に加えて、ＯＣＬ（Object Constraint Language）も習得する必要があり、通常のプロジェクトで採用するには難易度が高すぎるという問題がある。さらに、モデル担当者が独自の検証ルールを実装した検証ツールを自作するという方法も考えられる。しかし、検証ルールごとに、例えばＪＡＶＡ（商標）等の言語を用いてコーディングを行う必要があるので、難易度が高い上に非常にコストがかかるという問題がある。
このような背景から、プロジェクト固有のルールに基づいたＵＭＬモデルの品質検証作業の効率化、自動化が強く求められている。
【課題を解決するための手段】
【０００８】
本発明は、少なくとも１のモデル要素を含むモデルの品質を検証するためのコンピュータ・システムを提供する。各モデル要素は、属性を有し及び０又は１以上の他のモデル要素と関係付けられている。上記コンピュータ・システムは、
モデルの品質を検証するためのルール定義を第１の記憶部内に読み込む読込部であって、上記ルール定義は、モデル要素と関連する他のモデル要素を探索する第１のルールを特定する情報及び該第１のルールの動作を特定するための値、モデル要素の属性及び関係を検証する第２のルールを特定する情報及び該第２のルールの動作を特定するための値、並びに上記第１のルール及び上記第２のルールを制御するための第３のルールを特定する情報及び該第３のルールの動作を特定するための値を含む、上記読込部と、
上記読み込んだルール定義に基づいて、ルールを第２の記憶部から取得する取得部であって、上記ルールは、上記第１のルール、上記第２のルール及び上記第３のルールを含む、上記取得部と、
上記取得した第１のルールに従い、第１のモデル要素と関連を有する第２のモデル要素を探索する探索部と、
上記取得した第２のルールに従い、上記モデルの品質を検証する検証部と、
上記取得した第３のルールに従い、上記探索部及び上記検証部を制御する検証制御部と
を含む。
【０００９】
本発明の１つの実施態様では、上記ルール定義が、検証対象であるモデル要素を絞り込む第４のルールを特定する情報及び該第４のルールの動作を特定するための値をさらに含み、
上記読込部が、上記第４のルールを特定する情報及び該第４のルールの動作を特定するための値を上記第１の記憶部内に読み込み、
上記取得部が、上記第４のルールを上記第２の記憶部から取得し、
上記コンピュータ・システムが、
上記取得した第４のルールに従い、第３の記憶部に格納されたモデル要素全体から、検証対象である第１のモデル要素を絞り込む絞込部
をさらに含み、
上記制御部が、上記探索部及び上記検証部に加えて上記絞込部をさらに制御する。
【００１０】
本発明の１つの実施態様では、上記探索部が、上記取得した第１のルールに従い、上記絞り込まれた第１のモデル要素と関連を有する第２のモデル要素を探索する。
【００１１】
本発明の１つの実施態様では、上記コンピュータ・システムは、上記モデルの品質の検証結果を表示する表示部をさらに含む。
【００１２】
本発明の１つの実施態様では、上記取得した第１のルール、第２のルール及び第３のルールに、上記第１の記憶部内に読み込んだ上記第１のルールの動作を特定するための値、上記第２のルールの動作を特定するための値及び上記第３のルールの動作を特定するための値をそれぞれ適用するルール構築部をさらに含む。
【００１３】
本発明の１つの実施態様では、上記取得した第１のルール、第２のルール、第３のルール及び第４のルールに、上記第１の記憶部内に読み込んだ上記第１のルールの動作を特定するための値、上記第２のルールの動作を特定するための値、上記第３のルールの動作を特定するための値及び上記第４のルールの動作を特定するための値をそれぞれ適用するルール構築部をさらに含む。
【００１４】
本発明の１つの実施態様では、上記第１のルールが、あるモデル要素が関係、参照、利用又は保持している他のモデル要素を探索すること、あるモデル要素が描画されている図を探索すること、及びあるモデル要素が関係、参照、利用又は保持している図上に描画されたモデル要素を探索することの少なくとも１を含む。
【００１５】
本発明の１つの実施態様では、上記第２のルールが、モデル要素の属性の値が指定した数値であるかどうかを検証すること、モデル要素の属性の値と指定した値との大小を検証すること、モデル要素の属性の値が指定した値域内に含まれることを検証すること、モデル要素の属性の文字列が指定した文字列のパターンに完全又は部分一致するかどうかを検証すること、モデル要素の属性の設定値が指定した値の中から選択されているかどうかを検証すること、及び前記第１のルールにより探索されたモデル要素の個数と指定された数を検証することの少なくとも１を含む。
【００１６】
本発明の１つの実施態様では、上記第３のルールが、上記探索部及び上記検証部の実行順を含む。
【００１７】
本発明の１つの実施態様では、上記第３のルールが、上記絞込部、上記探索部及び上記検証部の実行順、並びに上記絞込部、上記探索部及び上記検証部の組み合わせの少なくとも１を含む。
【００１８】
本発明の１つの実施態様では、上記第４のルールが例えば、モデル要素の属性の値が指定した数値を有するモデル要素を絞込むこと、モデル要素の属性の文字列が指定した文字列のパターンに完全又は部分一致するモデル要素を絞込むこと、モデル要素の属性の設定値が指定した値の中から選択されているモデル要素を絞込むこと、モデル要素の種類によりモデル要素を絞込むこと、所定の名前を有するモデル要素にモデル要素を絞込むこと、名前を有するモデル要素の属性値によりモデル要素を絞込むこと、図の種類によりモデル要素を絞込むこと、モデルの抽象度によりモデル要素を絞込むこと、又はモデル要素の配置場所によりモデル要素を絞込むことである。
【００１９】
本発明の１つの実施態様では、上記第１のルールの動作を特定するための値、上記第２のルールの動作を特定するための値、上記第３のルールの動作を特定するための値、及び上記第４のルールの動作を特定するための値が、上記モデルの品質を検証するための実行時パラメータである、
【００２０】
本発明の１つの実施態様では、上記コンピュータ・システムは、上記第１のモデル要素を特定するための特定手段をさらに含む。
【００２１】
本発明の１つの実施態様では、上記モデルが、統一モデリング言語（ＵＭＬ）、メタオブジェクト・ファシリティ（Meta-Object Facility）・メタモデル、ＣＷＭ（Common Warehouse Meta-model）又はビジネス・プロセス・モデリング言語である。
【００２２】
本発明の１つの実施態様では、上記モデルが統一モデリング言語（ＵＭＬ）であり、上記モデル要素がＵＭＬ要素である。
【００２３】
本発明は、少なくとも１のモデル要素を含むモデルの品質を検証するための方法を提供する。各モデル要素は、属性を有し及び０又は１以上の他のモデル要素と関係付けられている。該方法は、コンピュータ・システムに下記ステップを実行させることを含む。該ステップは、
モデルの品質を検証するためのルール定義を第１の記憶部内に読み込むステップであって、上記ルール定義は、モデル要素と関連する他のモデル要素を探索する第１のルールを特定する情報及び該第１のルールの動作を特定するための値、モデル要素の属性及び関係を検証する第２のルールを特定する情報及び該第２のルールの動作を特定するための値、並びに上記第１のルール及び上記第２のルールを制御するための第３のルールを特定する情報及び該第３のルールの動作を特定するための値を含む、上記読み込むステップと、
上記読み込んだルール定義に基づいて、ルールを第２の記憶部から取得するステップであって、上記ルールは、第１のルール、第２のルール及び第３のルールを含む、上記取得するステップと、
上記取得した第３のルールに従い、下記ステップを制御するステップであって、
該ステップが、
上記取得した第１のルールに従い、第１のモデル要素と関連を有する第２のモデル要素を探索するステップと、
上記取得した第２のルールに従い、上記モデルの品質を検証するステップと
を含む、上記制御するステップと
を含む。
【００２４】
本発明の１つの実施態様では、上記ルール定義が、検証対象であるモデル要素を絞り込む第４のルールを特定する情報及び該第４のルールの動作を特定するための値をさらに含み、
上記読み込むステップが、上記第４のルールを特定する情報及び該第４のルールの動作を特定するための値を上記第１の記憶部内に読み込むステップをさらに含み、
上記取得するステップが、上記第４のルールを上記第２の記憶部から取得するステップをさらに含み、
上記方法が、上記コンピュータ・システムに、
上記取得した第４のルールに従い、第３の記憶部に格納されたモデル要素全体から、検証対象である第１のモデル要素を絞り込むステップを実行させるステップ
をさらに含み、
上記制御するステップが、上記探索するステップ及び上記検証するステップに加えて上記絞り込むステップをさらに制御する。
【００２５】
本発明の１つの実施態様では、上記探索するステップが、上記取得した第１のルールに従い、上記絞り込まれた第１のモデル要素と関連を有する第２のモデル要素を探索するステップを含む。
【００２６】
本発明の１つの実施態様では、上記コンピュータ・システムに、上記モデルの品質の検証結果を表示するステップを実行させるステップをさらに含む。
【００２７】
本発明はまた、少なくとも１のモデル要素を含むモデルの品質を検証するための方法を提供する。各モデル要素は、属性を有し及び０又は１以上の他のモデル要素と関係付けられている。該方法は、コンピュータ・システムに下記ステップを実行させることを含む。該ステップは、モデルの品質を検証するためのルール定義を第１の記憶部内に読み込むステップであって、上記ルール定義は、検証対象であるモデル要素を絞り込むフィルター・ルールを特定する情報及び該フィルター・ルールの動作を特定するための値、モデル要素と関連する他のモデル要素を探索するエクストラクター・ルールを特定する情報及び該エクストラクター・ルールの動作を特定するための値、モデル要素の属性及び関係を検証するアトミック・ルールを特定する情報及び該アトミック・ルールの動作を特定するための値、並びに上記フィルター・ルール、上記エクストラクター・ルール及び上記アトミック・ルールを制御するコンポジット・ルールを特定する情報及び該コンポジット・ルールの動作を特定するための値を含む、上記読み込むステップと、
該読み込んだルール定義に基づいて、ルールを第２の記憶部から取得するステップであって、上記ルールは、コンポジット・ルール、フィルター・ルール、エクストラクター・ルール及びアトミック・ルールを含む、上記取得するステップと、
上記取得したコンポジット・ルールに従い、下記ステップを制御するステップであって、
該ステップが、
上記取得したフィルター・ルールに従い、第３の記憶部に格納されたモデル要素全体から、検証対象である第１のモデル要素を絞り込まれたステップと、
上記取得したエクストラクター・ルールに従い、上記絞り込まれた第１のモデル要素と関連を有する第２のモデル要素を探索するステップと、
上記取得したアトミック・ルールに従い、上記モデルの品質を検証するステップ
を含む、上記制御するステップと、
上記モデルの品質の検証結果を表示するステップと
を含む。
【００２８】
本発明はさらに、コンピュータ・システムに、上記のいずれか一つに記載の方法の各ステップを実行させるコンピュータ読み取り可能なコンピュータ・プログラムを提供する。
【発明の効果】
【００２９】
本発明の実施態様に従うと、下記に示す効果が得られる。
・モデルの品質を検証する作業を自動化することにより、低コストで且つモデリングの際に属人性が混入することを防ぎ、一定の品質を保つことが可能である。
・モデル要素に関連する他のモデル要素を探索する手段により、異なる種類のモデル（ＵＭＬモデルとダイアグラムなど）間の相関チェックをすることが可能である。
・ルール定義ファイルの設定のみでモデルの品質検証の振る舞いを指定できるので、利用者は、高度な知識を特に必要とせずに検証ルールを定義することが可能である。
・モデルの品質検証の内容を、ルールの組み合わせ及びそれらのルール定義により表現することができるので、アーキテクチャの違い又はプロジェクト固有の検証内容に柔軟に対応することができる。
・ルールの組み合わせにより検証を実現するために、プロジェクト固有の個々の検証内容に対して１つずつ個別に実装する必要がないので、検証ロジック又は制御ロジックの実装のコストを軽減することができる。
【発明を実施するための最良の形態】
【００３０】
本発明において、「モデル」は、少なくとも１のモデル要素を含む。本発明において、「モデル要素」は、属性を有し及び０又は１以上の他のモデル要素と関係付けられている。モデルがモデル要素を１つのみ含む場合、他のモデル要素が存在しないので、該モデルは他のモデル要素との関係を有しない。モデルが複数のモデル要素を含む場合、該モデルは、モデル要素の集合と、それらモデル間の関係の集合から構成される。
【００３１】
本発明の実施態様において、「モデル」は例えば、統一モデリング言語（ＵＭＬ）、メタオブジェクト・ファシリティ（Meta-Object Facility，ＭＯＦ）・メタモデル、ＣＷＭ（Common Warehouse Meta-model）又はビジネス・プロセス・モデリング言語であるがこれらに限定されない。ビジネス・プロセス・モデリング言語は例えば、ＢＰＭＮ（Business Process Modeling Notation）である。
ＵＭＬは、オブジェクト指向分析及び設計における標準的モデリング言語である。
ＭＯＦメタモデルは、メタモデルを記述するための構成要素を定義し、メタモデルを管理するための技術仕様である。
ＣＷＭは、データウェアハウス用のメタモデルを定義した技術仕様である。
メタモデルとは、モデルを定義するためのモデルである。例えば、ＸＭＬがモデルを表現するものと仮定すると、ＸＭＬタグの意味を定義するＤＴＤ（Data Type Definition）がメタモデルを表現するものであり、ＤＴＤの構成要素である「ELEMENT」及び「ENTITY」の定義に対応するものがＭＯＦである。
【００３２】
本発明の実施態様において、「モデル」は、様々なモデル要素を組み合わせることにより表現される。該組み合わせ方は、表現したいものによって千差万別である。
【００３３】
「モデル」は、モデル構造として、視覚的に表されうる（下記図１を参照）。モデル構造は、モデル要素の集合と関係の集合によって表されるモデル全体が取る意味的構造を意味する。モデリング・ツールは、上記意味的構造をツリー状に視覚的に表示することができる。
【００３４】
本発明の実施態様において、「モデル要素」とは、モデルを構成する最小単位である。モデル要素は例えば、ユースケース、アクター、クラス、オブジェクト、オペレーション、ダイアグラム、コンポーネント、ノード、パッケージ、インタフェース、又は文書であるがこれらに限定されない。
【００３５】
本発明の実施態様において、「モデル要素の属性」とは、モデル要素を特徴付けるための様々なデータの種類である。「モデル要素の属性」は例えば、名前、多重度、型、可視性、抽象、ステレオタイプ、キーワード、完全修飾名、又はスコープであるがこれらに限定されない。「モデル要素の属性値」とは、それぞれのデータの種類に設定された値である。
【００３６】
本発明の実施態様において、「関係」とは、モデル要素間の関係を特徴付けるための様々なデータである。「関係」は、モデル要素それ自身が関係データを有してもよく、又は、モデルが、モデル要素と別に関係データを有していてもよい。「関係」は、モデル要素に依存した情報であり、対象となるモデル要素がなければ存在しえない情報である。「関係」も、それ自身を特徴付ける属性を有する。「関係」は例えば、依存、関連（１対多、１対１、多対多など）、実現、参照又は汎化であるがこれらに限定されない。「関係の属性」とは、例えば、関係の名前、種類、１対１又は１対多の多重度の情報である。
【００３７】
本発明の実施態様において、プロジェクト固有又は利用者独自のルールに基づき、モデルの品質の検証を自動的に行う。ルールは、エクストラクター・ルール、アトミック・ルール及びコンポジット・ルール、並びに任意的にフィルター・ルールを含む。
本発明の実施態様において、「エクストラクター・ルール」（第１のルール）とは、モデル要素と関連する他のモデル要素を探索するルールをいう。
本発明の実施態様において、「アトミック・ルール」（第２のルール）とは、モデル要素の属性及び関係の正確性を検証するルールをいう。
本発明の実施態様において、「コンポジット・ルール」（第３のルール）とは、エクストラクター・ルール及びアトミック・ルールを制御するルール又はエクストラクター・ルール、アトミック・ルール及びフィルター・ルール（後述する）を制御するルールをいう。コンポジット・ルールは、基本的なモデル品質検証であれば制御をすることができる汎用コンポジット・ルールを含みうる。コンポジット・ルールはまた、複雑な検証ルールの場合には、モデルのプロジェクトに固有又は利用者独自の固有コンポジット・ルールを含みうる。
本発明の実施態様において、「フィルター・ルール」（第４のルール）とは、検証対象であるモデル要素を絞り込むルールをいう。
【００３８】
以下に、本発明において使用するルール定義を説明する。ルール定義は、
（１）１つ又は複数のエクストラクター・ルールを特定する情報及び該エクストラクター・ルールの動作を特定するための値、
（２）１つ又は複数のアトミック・ルールを特定する情報及び該アトミック・ルールの動作を特定するための値、
（３）１つのコンポジット・ルールを特定する情報及び該コンポジット・ルールの動作を特定するための値
を含み、
（４）１つ又は複数のフィルター・ルールを特定する情報及び該フィルター・ルールの動作を特定するための値
は任意である。
ルール定義の実行順序は、各ルール定義を記述する順序により定義することができる。
【００３９】
本発明の実施態様において、「エクストラクター・ルールを特定する情報」とは、１又は複数のエクストラクター・ルールのうちから、モデルの品質を検証する際に使用するエクストラクター・ルールを特定する情報をいう。該特定する情報は、例えばルールに付与された識別子でありうる。ユーザは、エクストラクター・ルールを特定する情報を、検証処理の内容に合わせて変更することが可能である。
同様に、本発明の実施態様において、「アトミック・ルールを特定する情報」とは、１又は複数のアトミック・ルールのうちから、モデルの品質を検証する際に使用するアトミック・ルールを特定する情報をいう。
同様に、本発明の実施態様において、「コンポジット・ルールを特定する情報」とは、１又は複数のコンポジット・ルールのうちから、モデルの品質を検証する際に使用するコンポジット・ルールを特定する情報をいう。
同様に、本発明の実施態様において、「フィルター・ルールを特定する情報」とは、１又は複数のフィルター・ルールのうちから、モデルの品質を検証する際に使用するフィルター・ルールを特定する情報をいう。
【００４０】
また、検証の条件として実行時パラメータが各ルールに渡されうる。例えば、実行時パラメータとして、名前の規約が正規表現として渡される。名前の規約とは、あるルールの処理の中で何らかのモデル要素の属性、例えば名称などの文字列が、指定した条件に合致するかどうかを判定するためにパラメータとして渡す条件である。条件は、正規表現として記述された文字列のマッチング・パターンである。正規表現の上記マッチング・パターンは、フィルター・ルールにおけるモデル要素の絞込みのための条件として、アトミック・ルールにおけるモデル要素の属性の値の妥当性の条件として、及びエクストラクター・ルールのモデル要素と関連する他のモデル要素を探索するための絞込み条件としてパラメータに指定される。
【００４１】
本発明の実施態様において、「エクストラクター・ルールの動作を特定するための値」とは、エクストラクター・ルールに適用する実行時パラメータであり、且つモデルの品質を検証する際にエクストラクター・ルールによって使用される値をいう。ユーザは、エクストラクター・ルールの動作を特定するための値を、検証する処理の内容に合わせて変更することが可能である。
同様に、本発明の実施態様において、「アトミック・ルールの動作を特定するための値」とは、アトミック・ルールに適用する実行時パラメータであり、且つモデルの品質を検証する際にアトミック・ルールによって使用される値をいう。ユーザは、アトミック・ルールの動作を特定するための値を、検証する処理の内容に合わせて変更することが可能である。
同様に、本発明の実施態様において、「コンポジット・ルールの動作を特定するための値」とは、コンポジット・ルールに適用する実行時パラメータであり、且つモデルの品質を検証する際にコンポジット・ルールによって使用される値をいう。ユーザは、コンポジット・ルールの動作を特定するための値を、検証する処理の内容に合わせて変更することが可能である。
同様に、本発明の実施態様において、「フィルター・ルールの動作を特定するための値」とは、フィルター・ルールに適用する実行時パラメータであり、且つモデルの品質を検証する際にフィルター・ルールによって使用される値をいう。ユーザは、フィルター・ルールの動作を特定するための値を、検証する処理の内容に合わせて変更することが可能である。
【００４２】
本発明の実施態様において、ルール定義は、例えばＸＭＬを使用して表されるが、これに限定されない。
【００４３】
以下に、本発明において使用するルールを説明する。ルールは、エクストラクター・ルール、アトミック・ルール、及びコンポジット・ルールを含み、フィルター・ルールは任意である。なお、本発明では、発明の理解を容易にするために、エクストラクター・ルール、アトミック・ルール、及びコンポジット・ルールと命名しているが、これらの定義に入るルールであれば、該ルールは、これらルールの複数の定義に含まれることもある。
【００４４】
本発明において、「エクストラクター・ルール」とは、モデル要素と関連する他のモデル要素を探索するルールである。
エクストラクター・ルールは例えば、以下の探索を行うために使用される。
・あるモデル要素が関係、参照又は利用している他のモデル要素を探索する。例は、次の通りである：ダイアグラム上で利用されている型を探索する；メッセージが使われているシーケンス図を探索する；オペレーションで利用しているダイアグラムを検索する；クラスと実装関連にあるインタフェースを探索する。
・あるモデル要素が保持している他のモデル要素を探索する。例は、次の通りである：クラスが保持するオペレーション（操作）を探索する；インタフェースが保持するオペレーション（操作）を探索する。
・あるモデル要素が描画されている図（ダイアグラム図を含む）を探索する。例は、次の通りである：名前を持つＵＭＬ要素が描画されているダイアグラムを探索する；クラスを利用するダイアグラム図を探索する。
・あるモデル要素が関係、参照、利用又は保持している図上に描画されたモデル要素を探索する。
【００４５】
本発明において、「アトミック・ルール」とは、モデル要素の属性及び関係の正確性を検証するルールである。モデル要素の属性及び関係の正確性とは例えば、モデル要素の属性値が正しく設定されているか、関係値が正しく設定されているかどうか、モデル要素が存在するかどうか、又は関係が存在するかどうかを含む。
アトミック・ルールは例えば、以下の検証を行うために使用される。
・モデル要素の属性の値が指定した数値であるかどうかの検証を行う。例は、次の通りである：多重度を持つＵＭＬ要素の属性を検証するアトミック・ルール；メッセージの属性を検証するアトミック・ルール。多重度は、多重度の値（「１」、「２以上」、「多」など）で表される。メッセージの属性は、メッセージの種類（呼び出し、戻り値など）で表される。
・モデル要素の属性の値と指定した値との大小の検証を行う。
・モデル要素の属性の値が指定した値域内に含まれることの検証を行う。
・モデル要素の属性の文字列が指定した文字列のパターンに完全又は部分一致するかどうかの検証を行う。例は、次の通りである：名前を保持するＵＭＬの設定値（名前、完全修飾名の値など）の内容を検証するアトミック・ルール。
・モデル要素の属性の設定値が指定した値の中から選択されているかどうかの検証を行う。例えば、オペレーションの属性には、「可視性」（public、private、protected、packageなど）がある。該可視性の内容を検証するために、可視性に設定された文字列が「public」となっているかどうかを検証する。その他、オペレーションの属性には、戻り値の型、オペレーションの名前がある。
【００４６】
本発明において、「コンポジット・ルール」とは、フィルター・ルール、エクストラクター・ルール、アトミック・ルールを制御するルールである。
コンポジット・ルールは例えば、以下の制御を行うために使用される。
・各ルールの実行順序を制御する。実行順序は任意である。例は、次の通りである：「検証対象絞込み手段」、「検証対象に関連を有するモデル要素探索手段」、「モデル要素検証手段」を順番に実行する汎用コンポジット・ルール；「検証対象絞込み手段」、「検証対象に関連を有するモデル要素探索手段」、「モデル要素検証手段」の実行順序や組み合わせ方をカスタマイズするために独自に作成したコンポジット・ルール。
・各ルールに対する、例えばAND、OR、NOTの論理演算を行う。
【００４７】
本発明において、「フィルター・ルール」とは、モデル要素の属性値に基づき、検証対象であるモデル要素を絞り込むルールである。検証対象であるモデル要素とは、モデルの品質を検証するために必要とされるモデル要素をいう。
フィルター・ルールは例えば、以下の絞込みを行うために使用される。
・モデル要素の属性の値が、指定した数値を有するモデル要素に絞込みを行う。
・モデル要素の属性の文字列が、指定した文字列のパターンに完全又は部分一致するモデル要素に絞込みを行う。
・モデル要素の属性の設定値が、指定した値の中から選択されているモデル要素に絞込みを行う。
・モデル要素の種類により絞込みを行う。例は、次の通りである：ＵＭＬの種類によって絞込みを行うフィルター；文書の属性によって絞込みを行うフィルター。ＵＭＬの種類は、例えば、クラス、インタフェースである。文書の属性は、例えば文書の内容である。
・所定の名前を有するモデル要素に絞込みを行う。名前を有するＵＭＬ要素は例えば、アクター、ユースケース、クラス、インタフェース、コンポーネント、ユースケース、パッケージである。
・名前を有するモデル要素の属性値により絞込みを行う。属性値は例えば、「名前」、「完全修飾名」（パッケージ名を含む名前）である。
・図の種類により絞込みを行う。
・モデル要素の配置場所により絞込みを行う。
【００４８】
本発明の実施態様において、ルールは、例えばＪＡＶＡ（商標）、Ｃ言語を使用して定義されるが、これに限定されない。
【００４９】
本発明の実施態様において、「モデルの品質を検証」することは、モデル要素の属性値の検証、モデル要素間の関係値の検証、モデル要素の存在の検証、関係の存在の検証を含む。
具体的には、モデルの品質の検証は例えば、第１のモデル要素の属性値の検証、該第１のモデル要素と他のモデル要素との関係値の検証、第２のモデル要素の属性値の検証若しくは該第２のモデル要素と他のモデル要素との関係値の検証、又は探索部で探索された第２のモデル要素が存在するかどうかの検証、上記第１のモデル要素と他のモデル要素との関係が存在するかどうかの検証若しくは上記第２のモデル要素と他のモデル要素との関係が存在するかどうかの検証について行われる。上記第１のモデル要素と他のモデル要素との関係及び上記第１のモデル要素と他のモデル要素との関係はまたそれぞれ、これら関係自身の属性を含む。
【００５０】
以下、図面に従って、本発明の実施形態を説明する。本実施形態は、本発明の好適な態様を説明するためのものであり、本発明の範囲をここで示すものに限定する意図はないことを理解されたい。また、以下の図を通して、特に断らない限り、同一符号は、同一の対象を指す。
【００５１】
図１は、本願発明の実施態様である、モデルの品質を検証するためのコンピュータ・システムの構成図を示す。
コンピュータ・システム（１０１）は、読込部（１０３）、取得部（１０４）、ルール構築部（１０５）、絞込部（１１３）、探索部（１１４）、検証部（１１５）、検証制御部（１１６）及び表示部（１１８）を含む。
コンピュータ・システム（１０１）は、１又は複数のコンピュータから構成されていてもよく、各部は複数のコンピュータに分散していてもよい。
コンピュータ・システム（１０１）はまた、ルール定義（１０６）、ルール群（１０７）及びモデル（１１７）を記憶する記憶部を含む。ルール定義（１０６）、ルール群（１０７）及びモデル（１１７）は、１つの記憶装置、例えばハードディスク又はシリコンディスクに格納されていてもよく、又は複数の記憶装置に分散されて記憶されていてもよい。
【００５２】
読込部（１０３）は、モデルの品質を検証するためのルール定義（１０６）を第１の記憶部内（図示せず）に読み込む。ルール定義は、プロジェクト固有の検証内容に基づきユーザによって定義されうる。
取得部（１０４）は、読込部（１０３）が上記記憶部内に読み込んだルール定義（１０６）に基づいて、ルール群（１０７）を記憶する記憶部からルール（１０９〜１１１、又は、１０８〜１１１）を取得する。各ルールとは、検証の振る舞いの最小単位を実現する部品（ルール部品ともいう）である。検証の振る舞いとは、例えば「名前の検証をする」、「属性の可視性を検証する」などが挙げられる。
ルール構築部（１０５）は、上記取得したルール（１０９〜１１１、又は、１０８〜１１１）に、上記読み込んだルール定義（１０６）の値をルール毎に適用する。ルール構築部（１０５）はまた、取得部（１０４）が取得したルール（１０９〜１１１、又は、１０８〜１１１）に基づいて、モデルの品質を検証するために必要なルールを選択し、組み合わせを行う。ルールは、エクストラクター・ルール（１０９）、アトミック・ルール（１１０）及びコンポジット・ルール（１１１）、又は、フィルター・ルール（１０８）、エクストラクター・ルール（１０９）、アトミック・ルール（１１０）及びコンポジット・ルール（１１１）を含む。
絞込部（１１３）は、取得部（１０４）が取得したフィルター・ルール（１０８）に従い、記憶部（図示せず）に格納されたモデル要素全体から、検証対象である第１のモデル要素（１１７）を絞り込む。
探索部（１１４）は、取得部（１０４）が取得したエクストラクター・ルール（１０９）に従い、第１のモデル要素（１１７）と関連を有する第２のモデル要素を探索する。関連しているかどうかは、モデル要素間の関係、例えば、依存、関連（１対多、１対１、多対多など）、実現、参照又は汎化を使用して、特定される。本発明の実施態様において、「他のモデル要素」は、第１のモデル要素（１１７）と同一又は異なる種類のモデル要素でありうる。例えば第１のモデル要素（１１７）がクラスである場合に、他のモデル要素はインタフェースである。
検証部（１１５）は、取得部（１０４）が取得したアトミック・ルール（１１０）に従い、検証対象であるモデルの品質を検証する。モデルの品質の検証は例えば、第１のモデル要素の属性の内容について、該第１のモデル要素と他のモデル要素との関係の内容について、第２のモデル要素の属性の内容について若しくは該第２のモデル要素と他のモデル要素との関係の内容について、又は探索部（１１４）で探索された第２のモデル要素が存在するかどうかについて、上記第１のモデル要素と他のモデル要素との関係が存在するかどうかについて若しくは上記第２のモデル要素と他のモデル要素との関係が存在するかどうかについて行われるがこれらに限定されない。検証部（１１５）は、モデルの品質を検証する上で必要な検証を行う。検証部（１１５）は、例えば、あるモデル要素が、いずれかのダイアグラム上に記載されているかどうかの検証を行う。
検証制御部（１１６）は、取得部（１０４）が取得したコンポジット・ルール（１１１）に従い、絞込部（１１３）、探索部（１１４）及び検証部（１１５）を動的に制御する。すなわち、検証制御部（１１６）が、モデルの品質を検証するための全体の流れを制御する。検証の制御は、ルールの組み合わせ及びそれらのルール定義によって表現されることから、検証対象のモデルに合わせて検証の振る舞いを柔軟に変えることが可能である。
表示部（１１８）は、モデルの品質の検証結果（１１９）を表示する。
【００５３】
ルール定義（１０６）は、下記を含む：
・検証対象であるモデル要素を絞り込むフィルター・ルールをルール群（１０７）に格納されたフィルター・ルール（１０８）から特定する情報及び該フィルター・ルールの動作を特定するための値、
・モデル要素と関連する他のモデル要素を探索するエクストラクター・ルールをルール群（１０７）に格納されたエクストラクター・ルール（１０９）から特定する情報及び該エクストラクター・ルールの動作を特定するための値、
・モデル要素の属性及び関係を検証するアトミック・ルールをルール群（１０７）に格納されたアトミック・ルール（１１０）から特定する情報及び該アトミック・ルールの動作を特定するための値、
・フィルター・ルール、エクストラクター・ルール及びアトミック・ルールを制御するコンポジット・ルールをルール群（１０７）に格納されたコンポジット・ルール（１１１）から特定する情報及び該コンポジット・ルールの動作を特定するための値。
ただし、検証対象であるモデル要素を絞り込むフィルター・ルールを特定する情報及び該フィルター・ルールの動作を特定するための値は、必ずしも必要ではない。
ルール群（１０７）は、１又は複数のエクストラクター・ルール（１０９）、１又は複数のアトミック・ルール（１１０）及び１又は複数のコンポジット・ルール（１１１）、又は、１又は複数のフィルター・ルール（１０８）、１又は複数のエクストラクター・ルール（１０９）、１又は複数のアトミック・ルール（１１０）及び１又は複数のコンポジット・ルール（１１１）を含む。各ルールの最小構成単位は、モデルの品質を検証する振る舞いのための最小単位である。ルールは、検証対象であるのモデル要素の種類、例えばオペレーション、ダイアグラム、クラス、コンポーネント、アクター、ユースケース、パッケージ、インタフェース又は文書に合わせて作成され、必要に応じてあらかじめ複数用意されうる。
モデル（１１７）は、モデルの品質を検証する対象である１又は複数のモデル要素を含む。検証対象であるモデル要素は、検証対象であるモデルに含まれるモデル要素全て、又は検証対象であるモデルに含まれるモデル要素全てから、フィルター・ルール（１０８）に従い絞り込まれた所定のモデル要素でありうる。
【００５４】
ユーザが、モデルの品質の検証をコンピュータ・システム（１０１）にリクエストすると（１０２）、モデルの品質の検証結果が表示装置上に表示される（１２０）。検証結果は、ユーザにわかりやすいメッセージ形式であれば特に限定されない。
【００５５】
図２Ａは、本願発明の１つの実施態様である、モデルの品質を検証するための流れ図を示す。
ステップ２０１では、コンピュータ・システム（図１、１０１）が、モデルの品質を検証するためのルール定義を記憶部内（図示せず）に読み込む。
ステップ２０２では、コンピュータ・システム（１０１）が、上記記憶部内に読み込んだルール定義（１０６）に基づいて、ルール群を記憶する記憶部から各ルールを取得する。
ステップ２０３では、コンピュータ・システム（１０１）が、上記取得したルールに、上記読み込んだルール定義の値をルール毎に適用する。
ステップ２０４では、コンピュータ・システム（１０１）が、ルール群を記憶する記憶部から取得したコンポジット・ルールに従い、探索するステップ（２０５）及び検証するステップ（２０６）を動的に制御する。
ステップ２０５では、コンピュータ・システム（１０１）が、ルール群を記憶する記憶部から取得したエクストラクター・ルールに従い、検証対象であるモデル要素（第１のモデル要素）と関連を有する第２のモデル要素を探索する。
ステップ２０６では、コンピュータ・システム（１０１）が、ルール群を記憶する記憶部から取得したアトミック・ルールに従い、モデルの品質を検証する。検証が第１のモデル要素のみについて行われる場合、ステップ２０６では、第１のモデル要素のみの属性値及び関係値の検証が行われる。検証が第２のモデル要素についても行われる場合、ステップ２０６では、第１のモデル要素及び第２のモデル要素のうち、少なくとも第２のモデル要素の属性値及び関係値の検証が行われる。
ステップ２０７では、コンピュータ・システム（１０１）が、モデルの品質の検証結果を表示する。
【００５６】
図２Ｂは、本願発明の他の実施態様である、モデルの品質を検証するための流れ図を示す。
ステップ２１１では、コンピュータ・システム（図１、１０１）が、モデルの品質を検証するためのルール定義を記憶部内（図示せず）に読み込む。
ステップ２１２では、コンピュータ・システム（１０１）が、上記記憶部内に読み込んだルール定義（１０６）に基づいて、ルール群を記憶する記憶部から各ルールを取得する。
ステップ２１３では、コンピュータ・システム（１０１）が、上記取得したルールに、上記読み込んだルール定義の値をルール毎に適用する。
ステップ２１４では、コンピュータ・システム（１０１）が、ルール群を記憶する記憶部から取得したコンポジット・ルールに従い、絞り込むステップ（２１５）、探索するステップ（２１６）及び検証するステップ（２１７）を動的に制御する。
ステップ２１５では、コンピュータ・システム（１０１）が、ルール群を記憶する記憶部から取得したフィルター・ルールに従い、検証対象であるモデル要素（第１のモデル要素）をモデル全体から絞り込む。
ステップ２１６では、コンピュータ・システム（１０１）が、ルール群を記憶する記憶部から取得したエクストラクター・ルールに従い、上記絞り込まれた第１のモデル要素と関連を有する第２のモデル要素を探索する。
ステップ２１７では、コンピュータ・システム（１０１）が、ルール群を記憶する記憶部から取得したアトミック・ルールに従い、上記モデルの品質を検証する。検証が第１のモデル要素のみについて行われる場合、ステップ２１７では、第１のモデル要素のみの属性値及び関係値の検証が行われる。検証が第２のモデル要素についても行われる場合、ステップ２１７では、第１のモデル要素及び第２のモデル要素のうち、少なくとも第２のモデル要素の属性値及び関係値の検証が行われる。
ステップ２１８では、コンピュータ・システム（１０１）が、モデルの品質の検証結果を表示する。
【００５７】
図３は、本発明の実施態様である、モデルの品質を検証するための実施例を示す。
本実施例は、「分析クラスが保持するオペレーションが、命名ルール「〜を〜する」に沿っているか」を検証する例である。
該検証では、ＵＭＬの種類によりモデル要素を絞り込み、検索対象を絞り込むためのフィルター・ルール、及びパッケージの名前により検索対象によりモデルを絞り込み、検索対象を絞り込むためのフィルター・ルール、クラスが保持するオペレーションを探索するエクストラクター・ルール、並びに名前を検証するアトミック・ルールを利用する。
ステップ３０１では、コンピュータ・システム（１０１）が、各ルール定義を記憶部内に読み込む。
ステップ３０２では、コンピュータ・システム（１０１）が、上記ルール定義（１０６）に基づいて、ルール群を記憶する記憶部から各ルールを取得する。
ステップ３０３では、コンピュータ・システム（１０１）が、上記取得したルールに、上記読み込んだルール定義の値をルール毎に適用する。本実施例では、絞込部、探索部、検証部、及び検証制御部に各ルールを、以下に示すように適用する。
絞込部      ＵＭＬの種類により絞り込むフィルター・ルール
パッケージの名前により絞り込むフィルター・ルール
探索部      クラスが保持するオペレーションを探索するエクストラクター・ルール
検証部      名前を検証するアトミック・ルール
検証制御部  汎用コンポジット・ルール
ステップ３０４では、コンピュータ・システム（１０１）が、絞り込むステップ（３０５）、探索するステップ（３０６）、及び検証するステップ（３０７）を順に実行する。
絞り込むステップ（３０５）では、コンピュータ・システム（１０１）が、ＵＭＬの要素「クラス」で検証対象であるＵＭＬ要素の絞り込みを行い、さらにパッケージが「分析」であるクラスを検証対象として絞り込みを行う。
探索するステップ（３０６）では、コンピュータ・システム（１０１）が、クラスが保持するオペレーションを探索する。
検証するステップ（３０７）では、コンピュータ・システム（１０１）が、探索されたオペレーションの名前が命名ルールに沿っているかどうかを検証する。「受注検証()」オペレーションは命名ルール「〜を〜する」に沿っていないためエラーとなる。
ステップ３０８では、コンピュータ・システム（１０１）が、検証結果をユーザに提示する。例えば、表示装置上に、命令ルールに沿わないオペレーションを保持しているクラスがある旨のエラーが出力される。
【００５８】
図４は、本発明の実施態様である、モデルの品質の検証の実施からルール違反の検出を表示させた結果を示す。
ユーザは、品質確認を行うモデル要素を選択して検証を実行する。
ユーザが、モデルの検証のために、検証対象の上でマウスを右クリックすると、ポップアップメニューが表示される。ユーザが、該ポップアップメニューからメニュー「検証」を選択する。該選択によって、モデルの品質の検証が実行される。検証が終了すると、モデリング・ルール違反が表示装置上に示される。
【００５９】
図５Ａは、本発明の実施態様である、名前を有するＵＭＬ要素の絞り込みを行うためのフィルター・ルールの例を示す。
該例では、モデル要素のうち、属性において名前が「○○者」となっている要素の絞込みを行うフィルター・ルールを適用する。その結果、名前が「管理者」を有するＵＭＬ要素（５０１）が絞り込まれる。
【００６０】
図５Ｂは、本発明の実施態様である、名前を持つＵＭＬ要素が描画されているダイアグラムを探索するエクストラクター・ルールの例を示す。
該例では、アクターが描画されているダイアグラム（５０３、５０４）が探索される。
【００６１】
図５Ｃは、本発明の実施態様である、オペレーションの可視性が設定された値を検証するアトミック・ルールの例を示す。
該例では、可視性が、設定された値（「public」、「private」、「protected」、「package」）のうち「public」となっている（５０５）。よって、該モデル要素の可視性は正しいことが判断される。
【００６２】
図５Ｄは、本発明の実施態様である、名前が「○○者」となっていることを検証するアトミック・ルールの例を示す。
モデル要素（５０６、５０７）のうち、アクター（５０６）はその属性の名前が「管理者」であるので正しいと判断され、一方クラス（５０７）はその属性の名前が「Ｂｏｏｋ」であるので正しくないと判断される。
【００６３】
図６Ａは、本発明の実施態様である、ルール定義の表現例を示す。
ルール定義は、フィルター・ルール、エクストラクター・ルール、アトミック・ルール、コンポジット・ルールそれぞれについて、ルール部品を特定するための情報（６０１）及び特定したルールの動作を特定するための値を含む。ルールの動作を特定するための値は例えば、ルールの動作を特定するための設定項目（６０２）及び該設定項目毎に対応する値（６０３）を有する。ルールによっては、ルールの動作を特定するための設定項目（６０２）を必ずしも有していなくてよい。
ルール定義は、例えばＸＭＬを使用して表される。
ユーザは、ルール部品を特定するための情報（６０１）及びルールの動作を特定するための値（６０２、６０３）を設定する。該設定は、例えば、ＸＭＬの記述を変更することによって、又はルール部品を特定するための情報（６０１）及びルールの動作を特定するための値（６０２、６０３）を入力するための所定のウィンドウを表示し、該ウィンドウ内に、上記情報（６０１）、上記値（６０２、６０３）を入力することによって行われうる。
【００６４】
図６Ｂは、本発明の実施態様である、ルール定義のモデル例を示す。
該モデル例（６０４）は、コンポジット・ルール（６０５）、フィルター・ルール（６０６）、エクストラクター・ルール（６０７）、及びアトミック・ルール（６０８ａ、６０８ｂ）を含む。
コンポジット・ルール（６０５）は、絞込部（図１、１１３）、探索部（図１、１１４）、検証部（図１、１１５）を制御するために、フィルター・ルール（６０６）、エクストラクター・ルール（６０７）、及びアトミック・ルール（６０８ａ、６０８ｂ）の組み合わせ及び実行順序を指定する。各ルールの組み合わせ及び実行順序は、コンポジット・ルール（６０５）の記載順によって表される。
フィルター・ルール（６０６）は、検証対象である第１のモデル要素を絞り込む条件を列挙する。フィルター・ルールが複数ある場合には、フィルター・ルール（６０６）の記述が繰り返される。
エクストラクター・ルール（６０７）は、第１のモデル要素と関連を有する第２のモデル要素を探索する条件を列挙する。エクストラクター・ルールが複数ある場合には、エクストラクター・ルール（６０７）の記述が繰り返される。
アトミック・ルール（６０８ａ）は、少なくとも第２のモデル要素が満たすべき条件を列挙する。少なくとも第２のモデル要素を検証する場合とは、第１のモデル要素及び第２のモデル要素を検証する場合、又は第２のモデル要素のみを検証する場合である。この場合、アトミック・ルール（６０８ａ）は、エクストラクター・ルール（６０７）の定義内に組み込まれる。アトミック・ルールが複数ある場合には、アトミック・ルール（６０８ａ）の記述が繰り返される。
アトミック・ルール（６０８ｂ）は、第１のモデル要素のみが満たすべき条件を列挙する。第１のモデル要素のみを検証する場合とは、探索部（１１４）によって第２のモデル要素が探索されなかった場合若しくは探索部（１１４）によって第２のモデル要素の探索が行われなかった場合、又は第２のモデル要素を検証しない場合である。アトミック・ルール（６０８ｂ）は、アトミック・ルール（６０８ａ）と異なり、エクストラクター・ルール（６０７）の定義内に組み込まれない。アトミック・ルールが複数ある場合には、アトミック・ルール（６０８ｂ）の記述が繰り返される。
【００６５】
図６Ｃは、本発明の第１の実施態様である、ルール定義の実装例を示す。
該実装例は、モデル要素であるユースケースの名前が「〜を〜する」（目的語＋動詞）の形式かどうか検出するルールの適用例である。該実装例では、フィルター・ルールが２つ含まれる。
【００６６】
図６Ｄは、本発明の第１の実施態様である、モデルの検証の実装例を示す。
モデル要素（６０９）のユースケースの名前が「顧客情報を登録する」であるので、検証結果は、「正しい」である。
モデル要素（６１０）のユースケースの名前が「商品管理」であるので、検証結果は、「間違い」である。
【００６７】
図６Ｅは、本発明の第２の実施態様である、ルール定義の実装例を示す。
該実装例は、依存線の依存元のモデル要素の種類がアクターであるか検証するルールの適用例である。
【００６８】
図６Ｆは、本発明の第２の実施態様である、モデルの検証の実装例を示す。
依存元であるモデル要素（６１１）の種類がアクターであるので、検証結果は、「正しい」である。
依存元であるモデル要素（６１２）の種類がアクターでないので、検証結果は、「間違い」である。
【００６９】
図６Ｇは、本発明の第３の実施態様である、ルール定義の実装例を示す。
該実装例は、シーケンス図に登場するモデル要素（ライフライン）の型がアクター及びユースケースであることを検証するルールの適用例である。
【００７０】
図６Ｈは、本発明の第３の実施態様である、モデルの検証の実装例を示す。
ライフライン（６１３）の型がアクターであるので、検証結果は、「正しい」である。
ライフライン（６１４）の型がクラスであるので、検証結果は、「正しい」である。
ライフライン（６１５）の型がインタフェースであるので、検証結果は、「間違い」である。
【００７１】
図７Ａは、本発明の実施態様における、ユースケース・モデルの品質を検証するために構築された適用ルールの例を示す。
該構築された適用ルール（１１２）は、ルール構築部（１０５）により、ルール定義に基づき、ルール群からフィルター・ルール（１０８）、エクストラクター・ルール（１０９）及びアトミック・ルール（１１０）を取得し、動作を特定するための値を設定され構築される。
【００７２】
図７Ｂは、本発明の実施態様における、分析モデルの品質を検証するために構築された適用ルールの例を示す。
該構築された適用ルール（１１２）は、ルール構築部（１０５）により、ルール定義に基づき、ルール群からフィルター・ルール（１０８）、エクストラクター・ルール（１０９）及びアトミック・ルール（１１０）を取得し、動作を特定するための値を設定され構築される。
【００７３】
図７Ｃは、本発明の実施態様における、設計モデルの品質を検証するために構築された適用ルールの例を示す。
該構築された適用ルール（１１２）は、ルール構築部（１０５）により、ルール定義に基づき、ルール群からフィルター・ルール（１０８）、エクストラクター・ルール（１０９）及びアトミック・ルール（１１０）を取得し、動作を特定するための値を設定され構築される。
【００７４】
図８Ａは、ユースケース図の例を示す。
ユースケース図は、システムが提供する機能とそれに関連する外部要素（ユーザ又は外部システム）を表す。ユースケース図は、ユースケース、アクター及び関連で構成される。ユースケースとは、ユーザなど、システムの外部からみたシステムの機能（振る舞い）を表す。アクターとは、あるシステムを中心に見たとき、それに関連するすべての外部要素を表す。ユースケースとアクター間の関連とは、システムが提供する機能と、外部要素（ユーザ又は外部システム）の関係を示す。
ユースケースは、楕円で表される。図８Ａは、３つのユースケースを示す。該３つのユースケースは、上から順に顧客を検索するユースケース、受注を入力するユースケース及び商品を検索するユースケースである。
アクターは、円と線を組み合わせたスティックマンと呼ばれる人型のアイコンで表される。図８Ａは、２つのアクターを記載する。左のスティクマンが受注担当者を表すアクターであり、右のスティクマンが顧客管理システムを表すアクターである。アクターは、具体的な名前ではなく、役割によって抽象化したもので表す。例えば、受注担当者であるＡさんは、受注担当者というアクターで表す。
関連は、ユースケース及びアクターと関連するユースケースの間の実線で表される。図８Ａは、受注担当者が、顧客を検索する機能、受注を入力する機能及び商品を検索する機能を利用できることを示す。このシステムが顧客を検索する機能を実現するために、顧客管理システムを利用する。
【００７５】
図８Ｂは、クラス図の例を示す。
クラス図は、クラスというオブジェクト指向の設計単位を用いて、システムの静的な構造を表したものである。クラス図は、業務やシステムに登場する概念を表す「クラス」及びクラス同士の関係を表す「関連」を含む。クラスとは、オブジェクトの共通的な要素を抽象化し、それを枠組みとして定義したものである。
クラスは、クラス図において四角形で表される。上記四角形の内部には、上段からクラス名、属性、操作が記述される。属性は、例えばクラスが持つデータ構造である。操作は、例えばクラスの振る舞いである。
図８Ｂは、８つのクラスを記載する。上記８つのクラスは、受注を入力するＵＩクラス、受注処理クラス、受注管理クラス、在庫処理クラス、取引先管理クラス、倉庫管理クラス、社員管理クラス及び品目管理クラスである。なお、属性及び操作は省略されている。また、クラス名の上に記載されているＢｏｕｎｄａｒｙ、Ｃｏｎｔｒｏｌ及びＥｎｔｉｔｙは、上記８つのクラスのステレオタイプを示す。
図８Ｂでは、関連は、点線の矢印で示される。関連は、クラスから作成されるオブジェクト間のつながりの可能性を示す。図８Ｂでは、８つの関連を表す点線の矢印が記載されている。また、上記８つの関連は全てｕｓｅである。これは、矢印の始点のクラスのオブジェクトが、矢印の先のクラスのオブジェクトを使用する可能性があることを示す。例えば、発注管理クラスのオブジェクトは、取引先管理クラスのオブジェクト、倉庫管理クラスのオブジェクト、社員管理クラスのオブジェクト及び品目管理クラスのオブジェクトを使用する可能性があることを示す。
図８Ｂはまた、受注担当者を表すアクターを含む。
【００７６】
図８Ｃは、シーケンス図の例を示す。
シーケンス図は、コラボレーション図とともに相互作用図と呼ばれ、オブジェクト間のメッセージのやり取りを時系列で表すダイアグラムである。オブジェクトとは、あらゆるモノ、例えば人、車、コンピュータ、データである。メッセージは、上記オブジェクト間の通信である。メッセージは、主にオブジェクト間の操作の呼び出しを表す。
シーケンス図での時間は、ライフラインに沿って上から下に進む。
図８Ｃのシーケンス図の例では、上部の５つの長方形が、オブジェクトで表される。上記それぞれのオブジェクトから伸びる縦の破線は、ライフラインを表す。ライフラインが太く表現されている個所は、対応するオブジェクトが動作していることを表す。また、ライフラインを結ぶ矢印は、メッセージを表す。
以下に、上記シーケンス図で表現されるオブジェクトの動作を時系列に沿って説明する。
最初に、受注担当者を表すアクターのオブジェクトから、受注を入力するＵＩクラスのオブジェクトに対して、メッセージが発行される。該メッセージは例えば、入力装置からの受注情報の入力である。
次に、受注を入力するＵＩクラスのオブジェクトから、受注処理クラスのオブジェクトに対して、メッセージが発行される。該メッセージは例えば、受注を生成するための命令の呼び出しである。
次に、受注処理クラスのオブジェクトから、受注管理クラスのオブジェクトに対して、メッセージが発行される。該メッセージは例えば、受注を生成するための命令の呼び出しである。
次に、受注管理クラスのオブジェクトから、取引先管理クラスのオブジェクトに対して、メッセージが発行される。該メッセージは例えば、得意先情報を照会するための命令の呼び出しである。
次に、受注管理クラスのオブジェクトから、取引先管理クラスのオブジェクトに対して、メッセージが発行される。該メッセージは例えば、出荷先情報を照会するための命令の呼び出しである。
次に、受注管理クラスのオブジェクトから、倉庫管理クラスのオブジェクト（図示せず）に対して、メッセージが発行される。該メッセージは例えば、倉庫情報を照会するための命令の呼び出しである。
次に、受注管理クラスのオブジェクトから、社員管理クラスのオブジェクト（図示せず）に対して、メッセージが発行される。該メッセージは例えば、倉庫情報を照会するための命令の呼び出しである。
このように、シーケンス図において、オブジェクト間のメッセージのやり取りは、時系列に沿って表現される。
【００７７】
図９は、本発明の実施例に係るコンピュータ・ハードウェアのブロック図を示す。
本発明の実施例に係るコンピュータ・システム（９０１）は、ＣＰＵ（９０２）とメイン・メモリ（９０３）と含み、これらはバス（９０４）に接続されている。ＣＰＵ（９０２）は好ましくは、３２ビットまたは６４ビットのアーキテクチャに基づくものであり、例えば、インテル社のＸｅｏｎ（商標）シリーズ、Ｃｏｒｅ（商標）シリーズ、Ａｔｏｍ（商標）シリーズ、Ｐｅｎｔｉｕｍ（商標）シリーズ、Ｃｅｌｅｒｏｎ（商標）シリーズ、ＡＭＤ社のＰｈｅｎｏｍ（商標）シリーズ、Ａｔｈｌｏｎ（商標）シリーズ、Ｔｕｒｉｏｎ（商標）シリーズ及びＳｅｍｐｒｏｎ（商標）などを使用することができる。バス（９０４）には、ディスプレイ・コントローラ（９０５）を介して、ＬＣＤモニタなどのディスプレイ（９０６）が接続される。ディスプレイ（９０６）は、そのコンピュータ・システム（９０１）上で動作中のソフトウェアについての情報を、適当なグラフィック・インターフェースで表示するために使用される。バス（９０４）にはまた、ＩＤＥ又はＳＡＴＡコントローラ（９０７）を介して、ハードディスク又はシリコン・ディスク（９０８）と、ＣＤ−ＲＯＭ、ＤＶＤ又はＢｌｕ−ｒａｙドライブ（９０９）が接続されている。ＣＤ−ＲＯＭ、ＤＶＤ又はＢＤドライブ（９０９）は、必要に応じて、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ又はＢＤからプログラムをハードディスク又はシリコン・ディスク（９０８）に導入するために使用される。バス（９０４）には更に、キーボード・マウスコントローラ（９１０）を介して、或いはＵＳＢコントローラ（図示せず）を介して、キーボード（９１１）及びマウス（９１２）が接続されている。
【００７８】
通信インタフェース（９１４）は、例えばイーサネット（商標）プロトコルに従うものであり、通信コントローラ（９１３）を介してバス（９０４）に接続される。通信インタフェース（９１４）は、コンピュータ・システム（９０１）及び通信回線（９１５）を物理的に接続する役割を担い、コンピュータ・システム（９０１）のオペレーティング・システムの通信機能のＴＣＰ／ＩＰ通信プロトコルに対して、ネットワーク・インターフェース層を提供する。通信回線は、有線ＬＡＮ環境、或いは例えばＩＥＥＥ８０２．１１ａ／ｂ／ｇ／ｎなどの無線ＬＡＮ接続規格に基づく無線ＬＡＮ環境であってもよい。
【００７９】
以上、実施形態に基づき本発明を説明してきたが、本実施形態に記載されている内容は、本発明の一例であり、当業者なら、本発明の技術的範囲を逸脱することなく、さまざまな変形例に想到できることが明らかであろう。
【図面の簡単な説明】
【００８０】
【図１】本願発明の実施態様である、モデルの品質を検証するためのコンピュータ・システムの構成図を示す。
【図２Ａ】本願発明の１つの実施態様である、モデルの品質を検証するための流れ図を示す。
【図２Ｂ】本願発明の他の実施態様である、モデルの品質を検証するための流れ図を示す。
【図３】本発明の実施態様である、モデルの品質を検証するための実施例を示す。
【図４】本発明の実施態様である、モデルの品質の検証の実施からルール違反の検出を表示させた結果を示す。
【図５Ａ】本発明の実施態様である、名前を有するＵＭＬ要素の絞り込みを行うためのフィルター・ルールの例を示す。
【図５Ｂ】本発明の実施態様である、名前を持つＵＭＬ要素が描画されているダイアグラムを探索するエクストラクター・ルールの例を示す。
【図５Ｃ】本発明の実施態様である、オペレーションの可視性設定された値を検証するアトミック・ルールの例を示す。
【図５Ｄ】本発明の実施態様である、名前が「○○者」となっていることを検証するアトミック・ルールの例を示す。
【図６Ａ】本発明の実施態様である、ルール定義の表現例を示す。
【図６Ｂ】本発明の実施態様である、ルール定義のモデル例を示す。
【図６Ｃ】本発明の第１の実施態様である、ルール定義の実装例を示す。
【図６Ｄ】本発明の第１の実施態様である、モデルの検証の実装例を示す。
【図６Ｅ】本発明の第２の実施態様である、ルール定義の実装例を示す。
【図６Ｆ】本発明の第２の実施態様である、モデルの検証の実装例を示す。
【図６Ｇ】本発明の第３の実施態様である、ルール定義の実装例を示す。
【図６Ｈ】本発明の第３の実施態様である、モデルの検証の実装例を示す。
【図７Ａ】本発明の実施態様における、ユースケース・モデルの品質を検証するために構築された適用ルールの例を示す。
【図７Ｂ】本発明の実施態様における、分析モデルの品質を検証するために構築された適用ルールの例を示す。
【図７Ｃ】本発明の実施態様における、設計モデルの品質を検証するために構築された適用ルールの例を示す。
【図８Ａ】ユースケース図の例を示す。
【図８Ｂ】クラス図の例を示す。
【図８Ｃ】シーケンス図の例を示す。
【図９】本発明の実施例に係るコンピュータ・ハードウェアのブロック図を示す。
【図１】
2010086066.tif 000003
【図２Ａ】
2010086066.tif 000004
【図２Ｂ】
2010086066.tif 000005
【図３】
2010086066.tif 000006
【図４】
2010086066.tif 000007
【図５Ａ】
2010086066.tif 000008
【図５Ｂ】
2010086066.tif 000009
【図５Ｃ】
2010086066.tif 000010
【図５Ｄ】
2010086066.tif 000011
【図６Ａ】
2010086066.tif 000012
【図６Ｂ】
2010086066.tif 000013
【図６Ｃ】
2010086066.tif 000014
【図６Ｄ】
2010086066.tif 000015
【図６Ｅ】
2010086066.tif 000016
【図６Ｆ】
2010086066.tif 000017
【図６Ｇ】
2010086066.tif 000018
【図６Ｈ】
2010086066.tif 000019
【図７Ａ】
2010086066.tif 000020
【図７Ｂ】
2010086066.tif 000021
【図７Ｃ】
2010086066.tif 000022
【図８Ａ】
2010086066.tif 000023
【図８Ｂ】
2010086066.tif 000024
【図８Ｃ】
2010086066.tif 000025
【図９】
2010086066.tif 000026