首页 / 专利库 / 软件 / 建模语言 / Design support device and method for controlling the same

Design support device and method for controlling the same

阅读:1017发布:2020-07-11

专利汇可以提供Design support device and method for controlling the same专利检索,专利查询,专利分析的服务。并且PROBLEM TO BE SOLVED: To provide a UML (Unified Modeling Language) design tool having a function for verifying data matching across a plurality of data models by using an activity diagram as an object.SOLUTION: A verification property designation part 202 designates a verification property 203 which is necessary for verifying the matching constraint of the class diagram of a UML model 201, and stores it on the storage of a computer. A verification part 206 verifies the UML model 201 by using the verification model 203, and stores the result as verification result information 207 on the storage of the computer. A model display processing part 204 displays an image generated from the UML model 201, the verification property 203 and the verification result information 207 on a monitor 205.,下面是Design support device and method for controlling the same专利的具体信息内容。

  • アクション記述を含む、モデリング言語で記述されたモデルを入力として、前記アクション記述を解析し、前記アクション記述と検証項目との整合性を検証する設計支援装置であって、
    検証すべき検証項目を指定する指定手段と、
    指定された前記検証項目と入力されたモデルに含まれるアクション記述との整合性を検証して、検証結果情報を生成する検証手段と、
    前記入力されたモデルと前記検証結果情報とを表示する表示手段と、
    を有することを特徴とする設計支援装置。
  • 前記検証項目は、前記モデルの中の検証の範囲を表す検証範囲と、アクション記述が満たすべき性質を表すアクション記述制約とを含むことを特徴とする請求項1に記載の設計支援装置。
  • 前記検証範囲は前記モデルの中のコンポーネントの操作の間の呼び出し関係を示す情報であり、
    前記指定手段は、前記モデルから、ユーザが選択した操作が含まれる呼び出し関係を示す情報を生成する ことを特徴とする請求項2に記載の設計支援装置。
  • 前記アクション記述制約は、複数のアクションの実行順序と、前記複数のアクションのパラメータの関係とを含むことを特徴とする請求項2に記載の設計支援装置。
  • 前記複数のアクションは、前記モデルに含まれる、コンポーネントの操作を呼び出すアクションの組み合わせから成り、
    前記操作は、操作の入力パラメータ或いはその属性をオブジェクトの属性に代入する操作、オブジェクトの属性の値を操作の出力パラメータ或いはその属性として取得する操作、属性値が操作の入力パラメータ或いはその属性と等しいようなオブジェクトを削除する操作、属性値が操作の入力パラメータ或いはその属性と等しいようなオブジェクトの存在を照合する操作、の何れかであることを特徴とする請求項4に記載の設計支援装置。
  • 前記指定手段は、前記モデルの情報から、前記複数のアクションを自動的に生成することを特徴とする請求項5に記載の設計支援装置。
  • 前記検証結果情報は、検証結果と反例情報とを含み、
    前記反例情報は、前記呼び出し関係を示す情報のコンポーネントの操作の振る舞いを表すアクティビティ図に含まれるObjectNodeにおけるアクション実行履歴であり、
    前記検証手段は、前記アクション実行履歴を計算する ことを特徴とする請求項3に記載の設計支援装置。
  • 前記検証手段は、前記アクティビティ図に含まれるアクション記述から、オブジェクトあるいはオブジェクトの属性の間のデータ伝搬に関する情報を解析し、前記オブジェクトあるいはオブジェクトの属性に到達するオブジェクトあるいはオブジェクトの属性である、到達定義を計算することを特徴とする請求項7に記載の設計支援装置。
  • 前記検証手段は、前記アクティビティ図に含まれる、ObjectFlowを解析することを特徴とする請求項8に記載の設計支援装置。
  • 前記検証手段は、前記アクティビティ図に含まれる、ObjectNodeの属性の書き込みを行うアクション、或いはObjectNodeの属性の読込みを行うアクションを解析することを特徴とする請求項8に記載の設計支援装置。
  • 前記検証手段は、前記アクティビティ図に含まれる、変数値の書き込みを行うアクション、或いは変数値の読み出しを行うアクションを解析することを特徴とする請求項8に記載の設計支援装置。
  • 前記検証手段は、前記アクション実行履歴と、前記到達定義を用いて、前記検証結果を判定することを特徴とする請求項8に記載の設計支援装置。
  • 前記表示手段は、前記アクション実行履歴を、前記ObjectNodeに対応づけて表示することを特徴とする請求項7に記載の設計支援装置。
  • アクション記述を含む、モデリング言語で記述されたモデルを入力として、前記アクション記述を解析し、前記アクション記述と検証項目の整合性を検証する設計支援装置の制御方法であって、
    指定手段が、検証すべき検証項目を指定する指定工程と、
    検証手段が、指定された前記検証項目と入力されたモデルに含まれるアクション記述との整合性を検証して、検証結果情報を生成する検証工程と、
    表示手段が、前記入力されたモデルと前記検証結果情報とを表示する表示工程と、
    を有することを特徴とする設計支援装置の制御方法。
  • コンピュータに読み込ませ実行させることで、前記コンピュータを、請求項1乃至13のいずれか1項に記載の設計支援装置として機能させるためのプログラム。
  • 請求項15に記載のプログラムを格納したことを特徴とするコンピュータが読み取り可能な記憶媒体。
  • 说明书全文

    本発明は、複数のデータモデル間に跨るデータ整合性の検証を行うための、UML(Unified Modeling Language)に代表されるモデリング言語のアクティビティ図の解析技術に関するものである。

    ソフトウェアシステムの開発において、標準モデリング言語であるUML(Unified Modeling Language)を用いたコンポーネントベース開発が広く行われている。 コンポーネントが提供する操作の振る舞いの仕様定義には、アクティビティ図が広く用いられている。 複数のコンポーネントを統合する際には、各コンポーネントのアクティビティモデルの振る舞いの組み合わせが、システム内のデータの整合性を保っているか否かを確認する必要がある。

    図17の例を用いて説明する。 図17のパッケージ1701は、ソフトウェアシステムを表し、インテグレータ1704によって統合された、4つのインターフェースと、各インターフェースを実現する4つのコンポーネントから構成される。 1702と1703は各々、コンポーネントWSDeploymentAgentの操作sysDeployWS、コンポーネントNodeの操作deployWSの振る舞いを記述するアクティビティである。 参照制約1705は、WSLocatorインスタンスの属性wsDefIDと同じ値を属性idに持つWSDefインスタンスが存在する、という整合性制約を表している。

    アクティビティ1702と1703には、各種のアクションが記述されている。 パラメータ1711で受け取った値をアクション1706で変数Varに書き込み、アクション1707で読み出す。 その値を、アクション1708で引数wsDefIDに指定して、操作wsDefRegisteredを呼び出す。 この操作は、パラメータwsDefIDの値を属性idに持つWSDefインスタンスの存在を照合する。 その後、変数Varの値をアクション1709で読み出し、その値を、アクション1710で引数wsDefIDに指定して、操作deployWSを呼び出す。 アクティビティ1703は、パラメータwsDefIDの値を、アクション113でオブジェクトの属性idに書き込み、そのオブジェクトを引数locatorに指定して、操作addLocatorを呼び出す。 この操作は、パラメータlocatorの属性idの値を、WSLocatorインスタンスの属性wsDefIDに代入する。 アクティビティ1702と1703の組み合わせは、代入操作addLocatorを呼び出す前に、照合操作wsDefRegisteredを呼び出すことによって、参照制約1705の整合性を保証している。 ここで吹き出し1715と1716は、照合と代入を説明するためにモデルに加えた注釈である。

    モデルベースの開発では、仕様定義段階でデータの整合性を確保することが重要である。

    コンポーネントを統合するインテグレータ1704は,システムが提供する機能毎に、コンポーネントのアクティビティの組み合わせが、データの整合性制約を満たしているか、確認を行う。 しかしモデルの詳細な知識は各SCの開発者に分散しており、更にモデルの組み合わせは各システム機能に対応して数多く存在する。 従って、人手で誤りなく網羅的に整合性を確認することは困難である。

    非特許文献1と非特許文献2では、アクティビティの構成要素であるアクション記述の列<n,act>+の,データ整合性の自動検証方法が提案されている。 ここでnはアクションactの実行回数であり,actがループ中で実行される場合にはn>0である。 列中のアクションの実行によって、データ整合性が破壊される恐れがある。 そこでアクションの種別毎に、整合性を満たすために必要な補完アクションを定義して、列上の各要素の補完アクションが列に包含される場合に、整合性制約が保たれると判定する。 各アクションと、その補完アクションの記述の対応は,アクションの引数として与えるインスタンスの参照から特定される。 例えば分類子clfrのインスタンスoの生成を表すアクション記述o:=CreateObject(clfr)の補完アクションの記述は、次の2つである。 第一は、clfrの必須属性attに値vを設定するAddStructuralFeature(o,at,v)である。 第二は、必須の関連asに対応して,クラスcのインスタンスo2との間にリンクを生成する<min(c,as),CreateLink(as,p,o,p2,o2)>である。 ここで、min(c,as)は関連の多重度の下限を表わし、p、p2はリンク端である。

    Planas, Elena and Cabot, Jordi and Gomez, Cristina: Verifying Action Semantics Specifications in UML Behavioral Models - Advanced Information Systems Engineering (van Eck, Pascal and Gordijn, Jaap and Wieringa, Roel.,eds.), Lecture Notes in Computer Science, Vol.5565, Springer Berlin / Heidelberg, pp. 125-140 (2009). Planas, Elena and Cabot, Jordi and Gomez, Cristina: Lightweight Verification of Executable Models - ER 2011 (Jeusfeld, Manfred and Delcambre, Lois and Ling, Tok-Wang,. eds.), Lecture Notes in Computer Science, Vol.6998, Springer Berlin / Heidelberg, pp. 467-475 (2011).

    前述の非特許文献1と非特許文献2で述べられている技術は、単一のデータモデルの整合性に関するアクション記述列の検証を目的としており、前述の参照制約1705のように、複数のデータモデル間に跨るデータ整合性の検証には適用することが出来ない。

    本発明は、係る課題に鑑みなされたものであり、アクティビティ図を対象として、複数のデータモデル間に跨るデータ整合性の検証を行う機能を持つモデリング言語設計支援装置及びその制御方法を提供しようとするものである。

    この課題を解決するため、例えば本発明の設計支援装置は以下の構成を備える。 すなわち、
    アクション記述を含む、モデリング言語で記述されたモデルを入として、前記アクション記述を解析し、前記アクション記述と検証項目の整合性を検証する設計支援装置であって、
    検証すべき検証項目を指定する指定手段と、
    指定された前記検証項目と入力されたモデルに含まれるアクション記述との整合性を検証して、検証結果情報を生成する検証手段と、
    前記入力されたモデルと前記検証結果情報とを表示する表示手段とを有する。

    本発明によれば、多数のアクティビティ図を対象として、複数のデータモデル間に跨るデータ整合性を、誤りなく網羅的に確認することが出来る。

    実施形態におけるUML設計ツールのシステム構成図。

    実施形態におけるソフトウェア構成図。

    実施形態におけるUML設計ツールの表示画面。

    実施形態におけるUML設計ツールの表示画面。

    実施形態における検証プロパティ指定部の処理を示すフローチャート。

    実施形態における検証部の処理を示すフローチャート。

    実施形態における依存の解析サブルーチンのフローチャート。

    実施形態における変数定義の解析サブルーチンのフローチャート。

    実施形態におけるデータ伝搬の説明図。

    実施形態におけるデータ伝搬の説明図。

    実施形態におけるデータ伝搬の説明図。

    実施形態におけるデータ伝搬の説明図。

    実施形態における到達定義の解析サブルーチンのフローチャート。

    実施形態における到達定義の取得サブルーチンのフローチャート。

    実施形態におけるアクション実行履歴の計算サブルーチンのフローチャート。

    実施形態における整合性の検証サブルーチンのフローチャート。

    実施形態におけるUMLモデルの説明図。

    実施形態におけるアクティビティ図の要素の説明図。

    以下、添付図面に従って本発明に係る実施形態を詳細に説明する。

    図1は、本発明のUML設計ツールとして機能するコンピュータ100の構成を示している。 中央ユニット101はコンピュータ100を制御する電子回路を収容する。 モニタ102はスクリーン103上にイメージを表示するために使用される。 キーボード104とマウス105は、ユーザの入力操作を受け付けるために使用される。 コンピュータ100内には、CPU、ROM、RAM、ハードディスク装置、表示コントローラ等を内蔵し、電源投入した際に、CPUがROMに格納されたブートプログラムに従い、ハードディスクに格納されたオペレーティングシステム(OS)をRAMにロードし、しかる後、UML設計ツールに係るアプリケーションをハードディスクからRAMにロードし実行することで、このコンピュータ100がUML設計ツール(モデリング言語の設計支援装置)として機能することとになる。

    実施形態のUML設計ツールのソフトウェア構成を図2に示す。 UMLモデル201は、XMI等の形式でコンピュータ100のストレージ(例えばハードディスク等)に保持される。 検証プロパティ指定部202は、UMLモデル201のクラス図の整合性制約を検証するために必要な、検証プロパティ203を指定し、コンピュータ100のストレージ上に格納する。 検証部206は、検証プロパティ203を用いてUMLモデル201の検証を行い、その結果を検証結果情報207としてコンピュータ100のストレージ上に格納する。 UMLモデル201、検証プロパティ203、検証結果情報207は、ネットワーク上のサーバストレージに保持されても良い。 モデル表示処理部204は、UMLモデル201、検証プロパティ203、検証結果情報207から生成したイメージを、モニタ205に表示する。

    図3は、表示処理部204によってモニタ205上に表示される、UML設計ツールの表示Window300の構成を示している。 構成View301には、UMLモデルの構成に従って、システム、パッケージ、インターフェース、操作、コンポーネント、クラス、等のモデル要素が階層的に表示される。 振る舞いView302には、ユーザがマウス105を用いて、構成View301上で選択した操作の振る舞いモデルが表示される。 図3では構成View301上でコンポーネントCP1の操作Op1が選択されており(破線の枠によってそのことが表現されている)、振る舞いView302にはコンポーネントCP1の操作Op1の振る舞いを示すアクティビティが表示されている。 検証プロパティView303には、検証項目としての検証範囲とアクション順序制約(アクション記述制約とも言う)が表示される。 振る舞いモデルから導出されるデータへのアクセス情報として、入力パラメータの属性値をクラスのインスタンスの属性へ代入する代入情報や、出力パラメータの属性値をクラスのインスタンスの属性として取得する取得情報がある。 また、入力パラメータの属性値を属性に持つクラスのインスタンスを削除する削除情報や、そのようなクラスのインスタンスの存在を照合し、照合結果を出力パラメータの属性値とする照合情報がある。

    アクティビティの構成要素を、図18に示す。 アクティビティは、ノードとエッジで構成されるグラフである。 ノードは、制御点を表すControlNode、オブジェクトを表すObjectNode、処理を表すExecutableNodeに分類される。 エッジは制御点間の有向リンクを表すControlFlow、またはオブジェクト間の有向リンクを表すObjectFlowに分類される。 Actionは単一の処理を表し、StructuralActivityNodeは複数のノードを組み合わせた処理を表す。 Variableは一時的な情報を保持するローカル変数である。 Actionの分類1−5は各々、オブジェクトの生成・消滅、属性値の追加・削除・取得、変数値の追加・削除・取得,値の指定、操作の呼び出しを表す。

    検証プロパティView303のアクション順序制約は、整合性を保つために振る舞いモデルが満たすべき性質を表わす制約であり、各制約は、アクションの実行順序と、アクションに与える引数の間の関係から成る。 図3では制約308、制約309の2つの制約が表示されている。 制約308は、コンポーネントCP5の操作op5に、引数zを与えて呼び出すアクションに先立ち、コンポーネントCP4の操作op4に、引数xとyを与えて呼び出すアクションが実行され、引数xの属性att1とzの値が等しいことを表す。 ユーザがマウス105を用いて、制約の追加ボタン306を押下して制約を追加し、キーボード104を用いて、制約の内容を指定する。 また、制約の削除ボタン307を押下して、制約を削除する。 なお、UMLモデル201の内容を元に、検証プロパティ指定部202がアクション順序制約を自動的に生成しても良い。

    検証プロパティView303の検証範囲は、アクション順序制約の検証を行う範囲を指定する。 ユーザが検証範囲の生成ボタン304を押下することにより、検証プロパティ指定部202が、振る舞いView302に表示されている振る舞いのコールグラフを生成し、表示処理部204がモニタ205に表示する。

    ユーザがマウス105を用いて、検証の実行ボタン305を押下することにより、検証部206が、検証範囲に表示されたコールグラフに含まれるアクティビティの組み合わせに対して、選択されたアクション順序制約の検証を実行する。 検証部206は、検証結果情報207、検証結果と反例情報を生成し、さらに図4の画面に遷移して、表示処理部204が検証結果410と、反例情報411、412を表示する。 検証結果410は、検証範囲に含まれるアクティビティの組み合わせが、制約408を満たさないことを表しており、反例情報411、412は、アクティビティ中の各制御ノード上の、アクションの実行履歴を示している。 反例情報411は、CP4の操作op4が未実行で、かつCP5の操作op5が実行済みであることを表している。 このように図4の表示内容から、ユーザは制約の検証結果と、その反例情報を得ることが出来る。

    検証プロパティ指定部202の、検証範囲のコールグラフの生成処理のフローを図5に示す。 501において、検証プロパティ指定部202は、各操作が呼び出す操作集合を保持するコールグラフCGと、操作キューqを空に初期化する。 次で、502において、構成View302で選択された操作をキューqに詰める。 そしてキューqが空になるまで、503から509の処理を繰り返す。 先ず503において、キューqから操作opを取り出し、504において操作opの振る舞いを記述するアクティビティを解析する。 アクティビティ中で呼び出す他の全ての操作op'について、506でopとop'の組をCGに追加し、507でop'をキューqに詰める。 以上の処理によって、検証プロパティView303に示されている検証範囲のコールグラフの情報が生成される。

    検証部206の処理フローを図6に示す。 検証部206は、先ず601において、アクティビティ中のObjectNodeの依存関係を保持するIN、OUT、ObjectNodeの到達定義を保持するDEF、アクションの実行履歴を保持するHISTの各々を、空に初期化する。 次に602から606において、コールグラフに含まれる各アクティビティについて、603でアクティビティ中の各ノードに到達する変数定義ノードを保持するREACHを空に初期化する。 そして604で変数定義の解析サブルーチンを呼び出し、REACHを求める。 605で依存の解析サブルーチンを呼び出し、INとOUTを求める。 次に607から609で、コールグラフに含まれる各アクティビティについて、608で到達定義の解析サブルーチンを呼び出し、DEFを求める。 さらに610において、アクション実行履歴の計算サブルーチンを呼び出し、HISTを求める。 610のCONSは、検証対象のアクション順序制約である。 最後に611で整合性の検証サブルーチンを呼び出す。

    アクティビティ中のObjectNode間には、3種類のデータ伝搬により、依存関係が発生する。 第一の伝搬は、図9の例に示すようにObjectFlowによって表現される。 Pin1とPin2の2つのObjectNodeの間に、依存関係が存在する。 第二の伝搬は、図10の例に示すObjectNodeの属性の書き込みと、図11の例に示すObjectNodeの属性の読込によって表現される。 図10の書き込みの例では、valueノードの値がresultノードの属性propに伝搬し、objectノードのprop以外の属性の値が、resultノードの対応する属性に伝搬する。 第三の伝搬は、図12の例に示す、変数値の書き込みと読み出しの組み合わせによって表現される。 図11で、先行するAddVariableValueActionノードで変数varにvalueノード値の書き込みを行い、後続のReadVariableActionで変数varの値の読み出しを行うフローが表現されている。 この場合に、valueノードの値がvarを介してresultノードに伝搬する。

    依存の解析サブルーチンでは、指定されたアクティビティact中の、オブジェクトを表すObjectNodeの各々について、上記の3種類のデータ伝搬により発生する依存関係IN、OUTを求める。 依存の解析サブルーチンのフローチャートを図7に示す。 701から736において、アクティビティ中の全てのExecutableノードexec_ndについて、依存関係を求める。

    先ず702から717において、第一の伝搬による依存関係を求める。 exec_ndの全てのnd∈Pin∪ExpansionNodeについて、703から709で、ndの全ての入力フローin_flowを処理する。 704でin_flowの始点をsrc_ndとして求め、705から708まで、ndの全ての属性propについて、処理を行う。 706で(nd,prop)の入力の依存として、(src_nd,prop)をINに追加し、707で(src_nd,prop)の出力の依存として、(nd,prop)をOUTに追加する。 出力フローについても同様に、710から716で、ndの全ての出力フローout_flowを処理する。 711でout_flowの終点をdst_ndとして求め、712から715まで、ndの全ての属性propについて、処理を行う。 713で(nd,prop)の出力の依存として、(dst_nd,prop)をOUTに追加し、714で(dst_nd,prop)の入力の依存として、(nd,prop)をINに追加する。 ndが属性を持たない場合、propの代わりにnullを指定する。

    次に718から729の処理で、第二の伝搬による依存関係を求める。 718で、exec_ndが属性の書き込みを行うAddStructuralFeatureValueActionである場合に、719でexec_ndからObj、Val、Result、Propを求める。 これらは其々、図10のobjectノード、valueノード、resultノード、属性propに対応する。 720において、(Result,Prop)の入力の依存として(Val,null)をINに追加し、721において、(Val,null)の出力の依存として(Result,Prop)をOUTに追加する。 そして722から725で、ResultのProp以外の全ての属性Prop'について処理を行う。 723で(Result,Prop')の入力の依存として(Obj,Prop')をINに追加し、724において、(Obj,Prop')の出力の依存として(Result,Prop')をOUTに追加する。 726で、exec_ndが属性の読み出しを行うReadStructuralFeatureActionである場合に、727でexec_ndからObj、Result、Propを求める。 これらは其々、図11のobjectノード、resultノード、属性propに対応する。 728において、(Result,null)の入力の依存として(Obj,Prop)をINに追加し、729において、(Obj,Prop)の出力の依存として(Result,null)をOUTに追加する。

    最後に730から735の処理で、第三の伝搬による依存関係を求める。 730で、exec_ndが変数値の読み出しを行うReadVariableActionである場合に、731でexec_ndからResultを求める。 これは、図12のresultノードに対応する。 732から735で、REACHに含まれる、exec_ndに到達する全ての変数定義ノードval_ndについて、処理を行う。 733で(Result,null)の入力の依存として(val_nd.value,null)をINに追加し、734において、(val_nd.value,null)の出力の依存として(Result,null)をOUTに追加する。 val_nd. valueは、図12のvalueノードに対応する。

    変数定義の解析サブルーチンは、指定されたアクティビティact中の各ノードに到達する変数定義ノードを保持するREACHを計算する。 変数の書き込みは、他の箇所での書き込みや削除,消去によって無効化される可能性がある。 そこで変数定義の解析サブルーチンでは、アクティビティ中の各ノードにおいて無効化されるノードを保持するKILLを最初に計算する。 変数定義の解析サブルーチンのフローチャートを図8に示す。 801において、KILLを空に初期化する。 802から807において、act中の全てのアクションnd1とnd2の組み合わせについて、処理を行う。 804でnd1が、変数に書き込みを行うAddVariableValueAction、変数値の消去、削除を行うRemoveVariableValueAction、ClearVariableActionの何れに該当するか確認する。 さらにnd2がAddVariableValueActionであり、nd1とnd2の変数が等しい場合に、805で、nd2を、nd1で無効化される変数定義ノードとして、KILLに追加する。 808から821で、REACHが定常値になるまで繰り返し計算を行う。 先ず808で、REACHの値を、前回の繰り返し時のREACHの値を保持するREACH'に設定する。 繰り返しの初回のREACH'の値は空である。 その後にREACH'を空に初期化する。 809から820において、actの全てのnd∈ControlNode∪ExecutableNodeと、ndの全ての制御フロー上の直前ノードprev_ndについて、処理を行う。 811でprev_ndがAddVariableValueActionの場合は、812で、ndに到達する変数定義を行うノードとして、prev_ndをREACH'に追加する。 813から815において、REACHに含まれる、prev_ndに到達する全ての変数定義ノードreach_ndについて、処理を行う。 814において、ndに到達するノードとして、reach_ndをREACH'に追加する。 816から818において、KILLに含まれる、prev_ndで無効化される全ての変数定義ノードkill_ndについて、処理を行う。 kill_ndはndに到達しないので、817でkill_ndをREACH'から削除する。

    到達定義の解析サブルーチンのフローチャートを図13に示す。 指定されたアクティビティact中の全ての組(nd,prop)∈(ObjectNode,Property)について、1302で到達定義の取得サブルーチンを呼び出し、(nd,prop)のに到達するデータの定義を求める。

    到達定義の取得サブルーチンのフローチャートを図14に示す。 到達定義の取得サブルーチンは、再帰的に動作する。 1401において、指定された(nd',prop')∈(ObjectNode,Property)について到達定義を取得済みの場合は、1425において、(nd',prop')の到達定義を保持する変数Defに、取得済みの値を設定する。 一方未取得の場合は、1402で、Defを空に初期化し、(ObjectNode,Property)を詰めるキューqを空に初期化した後、qに(nd',prop')を詰める。 そしてqが空になるまで、1403から1424の処理を繰り返す。 1404において、qから(nd,prop)∈(ObjectNode,Property)を取得し、1405でDefに追加する。

    1406から1409まで、INに保持されている(nd,prop)の全ての入力の依存(src_nd,src_prop)について処理を行い、ndと同一のアクティビティ内の到達定義を求める。 1407で(src_nd,src_prop)がDefに含まれない場合に、1408で(src_nd,src_prop)をqに詰める。

    1410から1417において、ndがアクティビティの入力パラメータである場合に、該アクティビティの呼び出し元の到達定義を解析する。 1411から1417において、CGに含まれる操作op1とop2の組(op1,op2)の中で、op2の振る舞いを表すアクティビティにndが含まれるような、全てのop1について、処理を行う。 1412から1416において、op1のアクティビティの中で、ndが含まれるアクティビティの操作を呼び出す、全てのアクションactについて、処理を行う。 1413で、ndに対応するactのパラメータのObjectNodeをCaller_ndとして取得する。 そして1414で、到達定義の取得サブルーチンを再帰的に呼び出し、(Caller_nd,prop)の到達定義を取得し、変数defsに格納する。 さらに1415で、defsの要素全てをDefに追加する。

    1418から1424において、ndが操作呼び出しの出力パラメータを表すObjectNodeである場合に、呼び出し先の操作の到達定義を解析する。 1419において、呼び出される操作をCallee_opとする。 1420において、Callee_opの振る舞いをモデル化するアクティビティが存在する場合に、1421から1424で、Callee_opのアクティビティの、ndと同名の出力パラメータを表す全てのCallee_ndについて処理を行う。 1422において、到達定義の取得サブルーチンを再帰的に呼び出し、(Callee_nd,prop)の到達定義を取得し、変数defsに格納する。 さらに1423で、defsの要素全てをDefに追加する。

    1403で、qが空の場合は、1426でDefの要素を全てDEFに登録し、Defをリターンする。

    アクション実行履歴の計算サブルーチンは、各アクティビティの制御ノードにおける、アクションの実行履歴HISTを計算する。 図15にその処理フローを示す。 アクション実行履歴の計算サブルーチンでは、先ず1501において、繰り返し計算の途中結果を保持するHIST'を空に設定する。 1502から1509において、コールグラフCGに含まれる全ての操作のアクティビティの、操作呼び出しndについて、計算を行う。 1505において、ndが呼び出す操作が、アクション順序制約CONSに含まれる操作の何れかである場合に、1506で、ndにおけるアクション実行履歴として、ndをHISTに追加する。 ここでアクション順序制約CONSに含まれる操作とは、図4の制約408の場合では、op4とop5である。 次に、1510から1522まで、HISTとHIST'が等しくなるまで計算を繰り返す。 先ず1511で、HIST'にHISTの値を設定する。 1512から1522において、コールグラフCGに含まれる全ての操作のアクティビティactに含まれる、全ての制御ノードnd∈ControlNode∪ExecutableNodeについて、1515から1519の処理を行う。 ndの全ての直前ノードprev_ndについて、HISTに登録されているprev_ndのアクション実行履歴を、1517で、ndの新たなアクション実行履歴としてHISTに追加する。

    整合性の検証サブルーチンは、CGに含まれるアクティビティと、アクション順序制約CONSの整合性を検証する。 整合性の検証サブルーチンのフローチャートを図16に示す。 1601から1621において、コールグラフCGに含まれる全ての操作のアクティビティactに含まれる、全ての制御ノードnd∈ControlNode∪ExecutableNodeについて、1604から1618の処理を行う。 1604から1618において、HISTに含まれるndのアクション実行履歴histの全ての要素nd'について、処理を行う。 1605において、nd'の操作がCONSの後続操作と等しい場合には、1606でCONSの後続操作に指定されたパラメータをParam2、CONSの後続操作に指定された属性をProp2に代入する。 ここで図4の制約408の場合では、CONSの後続操作はop5であり、後続操作に指定されたパラメータはzであり、後続操作に指定された属性はnullである。 1607において、nd'の、Param2に相当するPinをPin2とし、1608で変数Reach1を空に初期化し、1609で変数Reach2に、DEFに保存された(Pin2,Prop2)の到達定義を設定する。 そして1610から1615において、histに含まれるnd'以外の全ての要素nd''について処理を行う。 1611でnd''の操作がCONSの先行操作と等しい場合に、1612で、CONSの先行操作に指定されたパラメータをParam1、CONSの後続操作に指定された属性をProp1とする。 ここで図4の制約408の場合では、CONSの先行操作はop4であり、後続操作に指定されたパラメータはxであり、後続操作に指定された属性はatt1である。 1613において、nd''の、Param1に相当するPinをPin1とし、1614で、Reach1に、DEFに保存された(Pin1,Prop1)の到達定義を追加する。 そして1616において、集合Reach1とReach2が素である場合に、検証結果をINCORRECTと判定する。

    表示処理部204は、検証部206が出力する検証結果を、表示Window300に表示し、アクション実行履歴HISTの内容を、反例情報として表示Window300に表示する。 反例情報は、図4に示すように、アクティビティ中の各制御ノードnの各々に、nのアクション実行履歴を表示する。 図4の例において、アクション実行履歴が「CP5.op5」と表示されている3つのノードで、アクション順序制約408が破壊されていることが分かる。 これらの、検証結果がINCORRECTとなった箇所を、強調表示しても良い。 以上を実現する、表示処理部204に関わる処理フローは述べないが、既存の技術を用いて、容易に実現することが出来る。

    本実施形態では、アクティビティ図を対象として、複数のデータモデル間に跨るデータ整合性を自動で検証し、その検証結果と反例情報を、UML設計ツールに表示する。 従ってユーザは、UML設計ツール上に表示されるこれらの情報から、モデルの整合性を、誤りなく網羅的に確認することが出来る。

    なお本実施形態では、アクティビティ図を用いて説明を行ったが、提案するアルゴリズムは、アクション記述に基づいており、アクティビティ図に限らず、アクションを用いて記述する状態遷移等の他のモデルにも、応用可能である。 各モデルの記法に合わせてアルゴリズムの表現に変更を加えることで、同様に各アルゴリズムを構成することが出来る。

    (その他の実施例)
    また、本発明は、以下の処理を実行することによっても実現される。 即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

    高效检索全球专利

    专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

    我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

    申请试用

    分析报告

    专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

    申请试用

    QQ群二维码
    意见反馈