まず、本実施例に係る検査用ファイル生成装置の概要について説明する。本実施例に係る検査用ファイル生成装置は、作業プロセスにおいて最終的に達成される目標と、作業プロセス内で行われる各種手続きと、各種手続きを実行する実行主体が有する権限に関する情報を受け付ける。具体的には、目標、手続き、実行主体が有する権限に関する情報は、利用者によってUMLの記法を用いて入力される。そして、検査用ファイル生成装置は、入力された目標、手続き、実行主体が有する権限に関する情報に基づいて各種定義ファイルを生成する。続いて、検査用ファイル生成装置は、生成した定義ファイルに基づいて、作業プロセスを実行する際の挙動モデルが示す挙動モデルファイルを生成し、かかる挙動モデルファイルを用いて作業プロセスの整合性を検査する。これにより、本実施例に係る検査用ファイル生成装置では、利用者にとって可読性の高い作業プロセス図を用いて、作業プロセスの妥当性を網羅的に検査することが可能になる。
なお、本明細書では、目標が記述された図を「ミッション図」と呼び、手続きが記述された図を「アクティビティ図」と呼び、実行主体が有する権限が記述された図を「ファカルティ図」と呼ぶこととする。
このような検査用ファイル生成装置について、図1を用いて具体的に説明する。図1は、本実施例に係る検査用ファイル生成装置の構成を示す図である。図1に示すように、検査用ファイル生成装置100は、入力部110と、表示部120と、定義ファイル出力制御部130と、定義ファイル格納部140と、検査制御部150と、検査結果ファイル格納部160とを有する。
入力部110は、各種情報や操作指示を入力するための入力デバイスであり、例えば、キーボードやマウスである。表示部120は、各種情報を表示する表示デバイスであり、例えば、モニタである。
なお、本実施例に係る検査用ファイル生成装置100を用いる利用者は、表示部120に表示される所定のUMLエディタを用いて、ミッション図、アクティビティ図およびファカルティ図を入力できるものとする。UMLエディタを実現するためのアプリケーションの例としては、「Eclipse」と、EclipseのUMLプラグインである「SystemDirector Application Modeler UML Editor」との組合せなどがある。
ここで、図2〜図4を用いて、ミッション図、アクティビティ図およびファカルティ図の記述例について説明する。ここでは、作業プロセスとして、サービス用サーバを増設する例を示す。具体的には、かかる作業プロセスは、サーバの利用者がいないことを確認し、システム管理者の承認を得た後に、サービスを停止し、サービス用サーバを増設し、最後にサービスを再起動するという手続きを順に行うものとする。
図2は、ミッション図の一例を示す図である。図2に示した例のように、ミッション図は、作業プロセスにおいて達成される目標が、UMLのクラス図によって記述される図である。具体的には、ミッション図は、作業プロセスにおいて最終的に達成される目標(以下、「最終目標」という)と、最終目標を達成するために必要な目標(以下、「サブ目標」という)が記述される。
また、ミッション図は、各サブ目標が達成すべき条件(以下、「ゴール条件」という)と、各サブ目標が実行されている間、常に満たしていなければならない条件(以下、「制約条件」という)とが時相論理式によって記述される。具体的には、ゴール条件は、「Goal」という文字列が記述されている矩形内に記述され、制約条件は、「Constraint」という文字列が記述されている矩形内に記述される。
図2に例示したミッション図では、最終目標として、「P001:サーバ増設」が記述されている。また、最終目標を達成するために必要なサブ目標として、「P001−01:利用者の確認」と、「P001−02:承認を得る」と、「P001−03:サーバを増設する」とが記述されている。また、サブ目標「P001−01:利用者の確認」のサブ目標として、「P001−01−01:管理サーバにログイン」と、「P001−01−02:利用者を確認」とが記述されている。
また、図2に例示したミッション図では、サブ目標「P001−01−01:管理サーバにログイン」の制約条件として、[Login server]→AF[Logout server]が記述されている。かかる制約条件は、サーバにログインした後は、必ずサーバからログアウトしなければならないことを示している。
また、サブ目標「P001−01−02:利用者を確認」のゴール条件として、[User checked]が記述されている。かかるゴール条件は、サブ目標「P001−01−02:利用者を確認」が目標を達成するためには、サーバを利用するユーザが存在するか否かを確認する必要があることを示している。
また、サブ目標「P001−03:サーバを増設する」のゴール条件として、[New server added]が記述されている。かかるゴール条件は、サブ目標「P001−03:サーバを増設する」が目標を達成するためには、新しいサーバを増設する必要があることを示している。また、サブ目標「P001−03:サーバを増設する」の制約条件として、[New server added]→[New server addition granted]が記述されている。かかる制約条件は、サーバを増設する際には、システム管理者の承認が得られていなければならないことを示している。
図3は、アクティビティ図の一例を示す図である。図3に示した例のように、アクティビティ図は、ミッション図に記述される最終目標を達成するための手続きが、UMLのアクティビティ図によって記述される図である。具体的には、アクティビティ図は、各手続きの実行主体がアクティビティパーティションによって分離され、かかる主体によって実行される各手続きが有向リンクの結合によって記述される。
また、アクティビティ図は、各手続きの事前条件または事後条件が、ノート(コメント)によって記述される。具体的には、事前条件は「localPrecondition」という文字列が記述されているノート内に記述され、事後条件は「localPostcondition」という文字列が記述されているノート内に記述される。
図3に例示したアクティビティ図では、アクティビティパーティションとして、「作業者[Operator]」と、「管理職[Manager]」とが記述されている。そして、実行主体「作業者」によって実行される手続きとして、手続きA1〜A3およびA5〜A8が記述されており、実行主体「管理職」によって実行される手続きとして、手続きA4が記述されている。
また、図3に例示したアクティビティ図では、手続きA1「管理用サーバにログインする」の事後条件として、[Login server]が記述されている。かかる事後条件は、手続きA1が実行された後には、サーバにログインしている状態でなければならないことを示している。
また、手続きA4「サーバ増設承認」の事前条件として、[Has_Authority(Grant)]が記述されており、事後条件として、[New server addition granted]が記述されている。かかる事前条件は、手続きA4が実行される際には、手続きA4を実行する主体(図3の例では、管理職)が承認権限を有していなければならないことを示している。また、かかる事後条件は、手続きA4が実行された後には、システム管理者によって承認が得られていなければならないことを示している。
図4は、ファカルティ図の一例を示す図である。図4に示した例のように、ファカルティ図は、アクティビティ図に記述された手続きの実行主体、および、実行主体が有する権限やスキルがUMLのクラス図によって記述される図である。具体的には、実行主体は「Role」という文字列が記述されている矩形内に記述され、権限は「Authority」という文字列が記述されている矩形内に記述され、スキルは「Skill」という文字列が記述されている矩形内に記述される。
図4に例示したファカルティ図では、実行主体「Manager(管理職)」が、承認するための権限[Grant]を有することが記述されている。また、実行主体「Operator(作業者)」が、サーバを操作するためのスキル[Operate server]を有することが記述されている。
図1に示した定義ファイル出力制御部130は、各種定義ファイルを定義ファイル格納部140へ出力する制御部であり、受付部131と、定義ファイル生成部132と、表示制御部133とを有する。
受付部131は、入力部110を用いて入力された各種情報や操作指示を受け付ける処理部である。具体的には、受付部131は、ミッション図等を作成または編集するために入力された情報を受け付け、受け付けた情報を定義ファイル生成部132および表示制御部133へ出力する。また、受付部131は、利用者によって作業プロセスの整合性検査を開始する旨の操作指示が行われた場合に、定義ファイル生成部132に対して、整合性検査を開始するように指示する。
定義ファイル生成部132は、受付部131から整合性検査を開始する旨の指示を受け付けた場合に、受付部131から入力された情報に基づいて、各種定義ファイルを生成する処理部である。具体的には、定義ファイル生成部132は、ミッション図を作成するために入力部110を用いて入力された情報に基づいて、XMI(XML(Extensible Markup Language) Metadata Interchange)形式のミッション定義ファイル142を生成する。
また、定義ファイル生成部132は、アクティビティ図を作成するために入力部110を用いて入力された情報に基づいて、XMI形式のアクティビティ定義ファイル143を生成する。図5に、図3に示したアクティビティ図から生成されるアクティビティ定義ファイル143の一例を示す。また、定義ファイル生成部132は、ファカルティ図を作成するために入力部110を用いて入力された情報に基づいて、XMI形式のファカルティ定義ファイル144を生成する。
なお、EclipseのUMLプラグインなどにより実現されるUMLエディタは、UML図からXMI形式のファイルを生成する機能を有する。したがって、定義ファイル生成部132による定義ファイル生成処理は、既存のアプリケーションによって実現可能である。
表示制御部133は、表示部120に各種情報を表示させる制御部である。例えば、表示制御部133は、受付部131からミッション図等を作成または編集するために入力された情報を入力された場合に、かかる情報を表示部120に表示させる。
定義ファイル格納部140は、各種定義ファイルが格納される記憶デバイスであり、共通定義ファイル141と、ミッション定義ファイル142と、アクティビティ定義ファイル143と、ファカルティ定義ファイル144とが格納される。
共通定義ファイル141は、あらゆる作業プロセスを検査する場合における共通の規則が記述されているファイルである。例えば、共通定義ファイル141には、「作業プロセスに開始ノードが存在すること」や、「作業プロセスに終了ノードが存在すること」という規則が記述されている。
検査制御部150は、定義ファイル格納部140に格納されている各種定義ファイルに基づいて、作業プロセスの整合性を検査する制御部であり、制約条件ファイル生成部151と、挙動モデル生成部152と、検査部153と、反例生成部154とを有する。
制約条件ファイル生成部151は、共通定義ファイル141と、ミッション定義ファイル142とに基づいて、制約条件ファイル161を生成する処理部である。制約条件ファイル161は、各手続きが満たさなければならないゴール条件および制約条件が、CTL(Computational Tree Logic:計算木論理)式によって記述されるファイルである。
ここで、制約条件ファイル生成部151がミッション定義ファイル142に基づいて制約条件ファイル161を生成する処理について具体的に説明する。ここでは、まず、ミッション図の論理的なデータ構造について説明し、次に、制約条件ファイル生成部151による制約条件ファイル161の生成処理について説明する。
まず、ミッション図の論理的なデータ構造について説明する。ミッション図MDの構成要素は、
MD=(NMD、TMD)・・・(1)
というデータ構造によって定義される。
上記データ構造(1)において、NMDは、ミッション図MDに記述されているノードnMDの集合を示す。なお、ここでいう「ノードnMD」とは、ミッション図MDに記述されている最終目標およびサブ目標を示す。
また、ノードnMDは、
nMD=<NameMD、TypeMD、ContMD>・・・(2)
というデータ構造によって定義される。
上記データ構造(2)において、NameMDは、ノードnMDの名称を示す。TypeMDは、ノードnMDのタイプを示す。ContMDは、ゴール条件や制約条件の内容を示し、時相論理式によって表される。具体的には、ノードnMDのTypeMDが「Goal」である場合、かかるノードnMDのContMDには、ゴール条件が設定される。また、ノードnMDのTypeMDが「Constraint」である場合、かかるノードnMDのContMDには、制約条件が設定される。
TMDは、ノード集合NMDに含まれるノードnMD間の接続関係tMDの集合を示す。接続関係tMDは、例えば、<n1MD、n2MD>というデータ構造によって定義される。かかるデータ構造は、ノードn1MDと、ノードn2MDとが接続されていることを示す。
なお、ミッション定義ファイル142は、ミッション図MDを表すXMI形式のファイルであるので、ミッション定義ファイル142についても、上記データ構造(1)および(2)のように定義される。
次に、制約条件ファイル生成部151がミッション定義ファイル142に基づいて制約条件ファイル161を生成する処理について説明する。まず、制約条件ファイル生成部151は、ミッション定義ファイル142のノード集合NMDから、ゴール条件や制約条件を示すContMDを抽出する。続いて、制約条件ファイル生成部151は、抽出したContMDのうち、TypeMDが「Constraint」であるContMDに基づいて、ノードnMDが実行されている間、常に満たしていなければならない制約条件を示すCTL式を生成する。具体的には、制約条件ファイル生成部151は、CTL式として、AG(ContMD)を生成する。
続いて、制約条件ファイル生成部151は、抽出したContMDのうち、TypeMDが「Goal」であるContMDに基づいて、ノードnMDが実行された後に満たさなければならないゴール条件を示すCTL式を生成する。具体的には、制約条件ファイル生成部151は、CTL式として、AG(Final→ContMD)を生成する。
そして、制約条件ファイル生成部151は、CTL式により表されたゴール条件および制約条件が記述された制約条件ファイル161を生成する。図6は、制約条件ファイル161の一例を示す図である。図6に例示した制約条件ファイル161において、例えば、「AG(EF [Final])」は、「あらゆる状態から、ActivityFinalNodeへ到達している状態へ到達可能である」という条件を示している。また、例えば、「AG(!Precondtion_error)」は、「あらゆる状態において、アクティビティ実行時に事前条件違反が発生しない」という条件を示している。
図1に示した挙動モデル生成部152は、アクティビティ定義ファイル143に基づいて、作業プロセスを実行する際の挙動モデルを生成する処理部である。具体的には、挙動モデル生成部152は、挙動モデルとして、後述する検査部153が検査処理を行うことができる形式の挙動モデルファイル162を生成する。なお、本実施例に係る検査用ファイル生成装置100では、検査部153として、モデル検査ツールであるNuSMVを用いるものとする。したがって、挙動モデル生成部152は、SMV形式の挙動モデルファイル162を生成する。
また、挙動モデル生成部152は、ファカルティ定義ファイル144に基づいて、挙動モデルにおける初期状態を生成し、生成した初期状態を挙動モデルファイル162に組み込む。ここでいう「初期状態」とは、作業プロセスが実行される前に成立している事象を示し、例えば、実行主体が有する権限などを示す。
ここで、挙動モデル生成部152による挙動モデルファイル162の生成処理、および、初期状態組込処理について具体的に説明する。ここでは、まず、アクティビティ図の論理的なデータ構造について説明し、続いて、ファカルティ図の論理的なデータ構造について説明し、続いて、挙動モデルの論理的なデータ構造について説明し、続いて、挙動モデル生成部152による挙動モデルファイル162の生成処理について説明する。
まず、アクティビティ図の論理的なデータ構造について説明する。アクティビティ図ADの構成要素は、
AD=(PAD、NAD、TAD)・・・(3)
というデータ構造によって定義される。
上記データ構造(3)において、PADは、アクティビティ図ADに記述されているパーティションpADの集合を示す。NADは、アクティビティ図ADに記述されているノードnADの集合を示す。なお、ここでいう「ノードnAD」とは、アクティビティ図ADに含まれる手続きおよびノートを示す。TADは、ノード集合NADに含まれるノードnAD間の順序関係tADの集合を示す。
また、パーティションpADは、
pAD=<NameAD、RoleAD>・・・(4)
というデータ構造によって定義される。
上記データ構造(4)において、NameADは、パーティションpADの名称を示す。RoleADは、パーティションpADの役割や、権限、スキルを示す。図3に示したアクティビティ図の例では、NameADが「作業者」であり、RoleADが「Operator」であるパーティションpADと、NameADが「管理職」であり、RoleADが「Manager」であるパーティションpADとが定義される。
また、順序関係tADは、
tAD=<SrcAD、DstAD、RelationAD>・・・(5)
というデータ構造によって定義される。
上記データ構造(5)において、SrcADは、順序関係tADの始点となるノードを示し、DstADは、順序関係tADの終点となるノードを示す。RelationADは、始点ノードSrcADと、終点ノードDstADとの間の関係を示す。具体的には、RelationADには、「ControlFlow」または「CommentLine」が設定される。
また、ノードnADは、
nAD=<NameAD、TypeAD、PreAD、PostAD>・・・(6)
というデータ構造によって定義される。
上記データ構造(6)において、NameADは、ノードnADのアクション名を示す。TypeADは、ノードnADの種類またはステレオタイプ(Stereotype)を示す。なお、TypeADは、UML2.0の記述仕様に従い、「ExecutableNode」、「InitialNode」、「ActivityFinalNode」、「ForkNode」、「JoinNode」、「MergeNode」、「DecisionNode」、「localPrecondition」、「localPostcondition」のいずれかが設定される。
例えば、TypeADが「ExecutableNode」である場合、NameADには、「サーバにログイン」、「承認処理の実行」などが設定される。また、例えば、TypeADが「localPrecondition」または「localPostcondition」などのステレオタイプである場合、NameADには、アクションの事前条件や事後条件を表す論理式が設定される。
PreADは、ノードnADのアクションが実行される前に満たされなければならない事前条件を示す。具体的には、ノードnADのTypeADが「ExecutableNode」である場合、かかるノードnADの事前条件PreADは、ノードnADと接続されており、かつ、TypeADが「localPrecondition」であるノードnADによって表される。すなわち、2つのノードn1ADおよびn2ADにおいて、「Type1AD = ExecutableNode」、かつ、「Type2AD = localPrecondition」、かつ、「<n1AD、n2AD、CommentLine> ∈ TAD」ならば、「Pre1AD = Name2AD」が成り立つ。
PostADは、ノードnADのアクションが実行された後の事後条件を示す。具体的には、ノードnADのTypeADが「ExecutableNode」である場合、かかるノードnADの事後条件PostADは、ノードnADと接続されており、かつ、TypeADが「localPostcondition」であるノードnADによって表される。
なお、アクティビティ定義ファイル143は、アクティビティ図ADを表すXMI形式のファイルであるので、アクティビティ定義ファイル143についても、上記データ構造(3)〜(6)のように定義される。
続いて、ファカルティ図の論理的なデータ構造について説明する。ファカルティ図FDの構成要素は、
FD=(NFD、TFD)・・・(7)
というデータ構造によって定義される。
上記データ構造(7)において、NFDは、ファカルティ図FDに記述されているノードnFDの集合を示す。なお、ここでいう「ノードnFD」とは、ファカルティ図FDに記載される実行主体、権限およびスキルを示す。TFDは、ノード集合NFDに含まれるノードnFD間の関係tFDの集合を示す。
また、ノードnFDは、
nFD=<NameFD、TypeFD>・・・(8)
というデータ構造によって定義される。
上記データ構造(8)において、NameFDは、ノードnFDで表される実行主体、権限またはスキルの名称を示す。TypeFDは、ノードnFDのステレオタイプを示す。具体的には、ノードnFDが実行主体である場合、TypeFDには「Role」が設定され、ノードnFDが権限である場合、TypeFDには「Authority」、ノードnFDがスキルである場合、TypeFDには「Skill」が設定される。
図4に示したファカルティ図の例では、NameFDが「Manager」であり、TypeFDが「Role」であるノードn1FDと、NameFDが「Grant」であり、TypeFDが「Authority」であるノードn2FDとが定義される。また、所定の関係t1FDによって、ノードn1FDとノードn2FDとが関係していることが定義される。したがって、ノードn1FDおよびn2FDと、関係t1FDによって、実行主体「Manager」が権限「Grant」を有していることを把握できる。
同様に、図4に示したファカルティ図の例では、NameFDが「Operator」であり、TypeFDが「Role」であるノードn3FDと、NameFDが「Operate server」であり、TypeFDが「Skill」であるノードn4FDとが定義される。また、所定の関係t2FDによって、ノードn3FDとノードn4FDとが関係していることが定義される。したがって、ノードn3FDおよびn4FDと、関係t2FDによって、実行主体「Operator」がスキル「Operate server」を有していることを把握できる。
なお、ファカルティ定義ファイル144は、ファカルティ図FDを表すXMI形式のファイルであるので、ファカルティ定義ファイル144についても、上記データ構造(7)および(8)のように定義される。
続いて、挙動モデル生成部152が生成する挙動モデルの論理的なデータ構造について説明する。挙動モデルMADは、
MAD=(S、SI、R、L)・・・(9)
によって定義される。
上記データ構図(9)において、Sは、アクティビティ図ADにおいて到達可能な状態sの集合を示す。ここでいう「到達可能な状態」とは、アクティビティ図ADにおいて、所定の手続きが実行される前の状態と、所定の手続きが実行されている状態と、所定の手続きが実行された後の状態とを示す。図3に示したアクティビティ図の例では、Sには、手続きA1〜A8が実行される前の状態、手続きA1〜A8が実行されている状態、手続きA1〜A8が実行された後の状態が含まれる。
SIは、状態集合Sに含まれる要素であり、アクティビティ図ADにおける初期状態を示す。図3に示したアクティビティ図の例では、SIは、手続きA1が実行される前の状態を示す。
Lは、状態sから、かかる状態sにおいて成立している事象を表す変数への写像を与えるための関数である。ここでいう「事象を表す変数」とは、例えば、以下の(A)〜(D)に示すものが定義される。
(A)IN(n)
変数IN(n)は、状態sにおいて、ノードnADにより表されるアクションが実行中である場合に、かかる実行の多重度を示す。例えば、状態sが実行中でない場合、IN(n)=0が成り立つ。
(B)ON(t)
変数ON(t)におけるtは、
t=<n1AD、n2AD、ControlFlow>・・・(10)
により定義される。
上記式(10)において、ノードn1ADは、状態sの直前のアクションを示し、ノードn2ADは、状態sの直後のアクションを示す。そして、ON(t)は、ノードn1ADにより表されるアクションが終了し、かつ、ノードn2ADにより表されるアクションが実行前である場合に、かかる実行の多重度を示す。
(C)Has_authority(x、y)・・・(11)
上記式(11)において、xは権限を示し、yは実行主体を示す。例えば、ファカルティ定義ファイル144に、実行主体yが権限xを有していることが記述されている場合、全ての状態sにおいて、Has_authority(x、y)=1(真)が成立する。なお、実行主体yがスキルxを有しているか否かの変数は、Has_skill(x、y)によって表される。
(D)Final
Finalは、アクティビティ図ADにおいて、FinalNodeにより表されているアクションまで到達し、アクティビティが終了したことを示す。具体的には、TypeAD=FinalNodeのとき、状態s|=In(nAD)ならば、状態s|=Finalが成立する。
なお、上記(A)〜(D)に示した変数は、あくまで一例であり、アクティビティ図ADやミッション図MDに記述される他の変数についても、各状態sにおける解釈を与えることができる。以下では、関数Lによって決定される状態sにおける変数vの値を表す関数を、f(L(s)、v)と表すこととする。
Rは、所定の状態s1から別の状態s2へ遷移する条件を示す。以下に、状態s1から状態s2へ遷移する遷移条件Rについて、2つの例を示して説明する。まず、ノードn1ADで表されるアクションが実行中である状態s1から、かかるアクションが実行終了後の状態s2へ遷移する遷移条件R1について説明する。遷移条件R1には、以下に示す条件R1−1〜R1−7が定義される。
(条件R1−1)
f(L(s1),IN(n1AD))>0が成立すること。
(条件R1−2)
TOUT={t2AD|t2AD=<n1AD,Dst2AD,ControlFlow>∈T}が空でないこと。すなわち、ノードn1ADを始点ノードとするControlFlowが少なくとも1つ存在すること。
(条件R1−3)
TOUT={d1,d2,・・・,dm}のとき、Type1AD≠ForkNodeならば、所定の1つのk(1≦k≦m)について、f(L(s2),ON(dk))=f(L(s1),ON(dk))+1が成立し、k≠lならば、f(L(s2),ON(dl))=f(L(s1),ON(dl))が成立すること。
(条件R1−4)
TOUT={d1,d2,・・・,dm}のとき、Type1AD=ForkNodeならば、すべてのk(1≦k≦m)について、f(L(s2),ON(dk))=f(L(s1),ON(dk))+1が成立すること。
(条件R1−5)
f(L(s2),IN(n1AD))=f(L(s1),IN(n1AD))−1が成立すること。
(条件R1−6)
所定の命題αについて、α∈Post1ADならば、f(L(s2),α)=1(真)が成立し、¬α∈Post1ADならば、f(L(s2),α)=0(偽)が成立すること。
(条件R1−7)
上記条件R1−1〜条件R1−6において、指定のない変数および命題xについては、f(L(s1),x)=f(L(s2),x)が成立すること。
続いて、所定の状態s1から、ノードn1ADで表されるアクションが実行中である状態s2へ遷移する遷移条件R2について説明する。遷移条件R2には、以下に示す条件R2−1〜R2−6が定義される。
(条件R2−1)
TIN={t1AD|t1AD=<n2AD,n1AD,ControlFlow>∈T}が空でないこと。すなわち、ノードn2ADを終点ノードとするControlFlowが少なくとも1つ存在すること。
(条件R2−2)
TIN={e1,e2,・・・,em}のとき、Type1AD≠ForkNodeならば、所定の1つのk(1≦k≦m)について、f(L(s1),ON(ek))>0、かつ、f(L(s2),ON(ek))=f(L(s1),ON(ek))−1が成立し、k≠lならば、f(L(s2),ON(el))=f(L(s1),ON(el))が成立すること。
(条件R2−3)
TIN={e1,e2,・・・,em}のとき、Type1AD=ForkNodeならば、すべてのk(1≦k≦m)について、f(L(s1),ON(ek))>0、かつ、f(L(s2),ON(ek))=f(L(s1),ON(ek))−1が成立すること。
(条件R2−4)
f(L(s2),IN(n1AD))=f(L(s1),IN(n1AD))+1が成立すること。
(条件R2−5)
所定の命題αについて、α∈Pre1ADならば、f(L(s1),α)=1(真)が成立し、¬α∈Pre1ADならば、f(L(s1),α)=0(偽)が成立すること。
(条件R2−6)
上記条件R2−1〜条件R2−6において、指定のない変数および命題xについては、f(L(s1),x)=f(L(s2),x)が成立すること。
続いて、挙動モデル生成部152による挙動モデルファイル162の生成処理について説明する。挙動モデル生成部152は、アクティビティ定義ファイル143から、順序関係TADを抽出する。続いて、挙動モデル生成部152は、抽出した順序関係TADから各状態s間の遷移関係を構築する。続いて、挙動モデル生成部152は、アクティビティ定義ファイル143から、各ノードnADの事前条件PreADと、事後状態PostADとを抽出する。続いて、挙動モデル生成部152は、事前条件PreADおよび事後状態PostADに基づいて、各状態sにおける真理値を割り当てて、挙動モデルファイル162を生成する。
図7は、SMV形式の挙動モデルファイル162の一例を示す図である。図7に示した挙動モデルファイル162において、「in_0_1」は、図3に示した手続きA2が実行中であることを示しており、「on_6」は、手続きA2の直前のリンクまで実行が終了したことを示す。すなわち、図7に示した挙動モデルファイル162は、手続きA2が実行される状態に遷移するとき、「on_6」を「1」減算し、「in_0_1」を「1」加算し、「User_checked」の値を1(真)にすることを示している。
次に、挙動モデル生成部152による初期状態組込処理について説明する。挙動モデル生成部152は、ファカルティ定義ファイル144の関係TFDに基づいて、TypeFDが「Role」である実行主体のName1FDと、TypeFDが「Authority」である権限のName2FDとの関係を抽出する。続いて、挙動モデル生成部152は、抽出した実行主体Name1FDが、抽出した権限Name2FDを有することを示す自相論理式を生成する。具体的には、挙動モデル生成部152は、自相論理式として、Has_autority(Name1FD、Name2FD)を生成する。
続いて、挙動モデル生成部152は、ファカルティ定義ファイル144の関係TFDに基づいて、TypeFDが「Role」である実行主体のName3FDと、TypeFDが「Skill」である権限のName4FDとの関係を抽出する。続いて、挙動モデル生成部152は、抽出した実行主体Name3FDが、抽出したスキルName4FDを有することを示す自相論理式を生成する。具体的には、挙動モデル生成部152は、自相論理式として、Has_skill(Name3FD、Name4FD)を生成する。
図8は、挙動モデルファイル162に組み込む初期状態の一例を示す図である。例えば、図8中の定義81は、「管理職は、承認権限を有している」ということを示している。挙動モデル生成部152は、このように定義される初期状態を、挙動モデルファイル162に組み込む。なお、挙動モデル生成部152は、初期状態を、挙動モデルファイル162に組み込まず、初期状態が定義されている別のファイルを生成してもよい。
検査部153は、制約条件ファイル161と、挙動モデルファイル162とに基づいて、作業プロセスの整合性が満たされているか否かを検査する処理部である。具体的には、検査部153は、権限またはスキルを有する実行主体によって各手続きが実行されているか否か、制約条件ファイル161に定義されている制約条件を満たしつつ各手続きが実行されるか否か、制約条件ファイル161に定義されているゴール条件を満たすか否かを検査する。そして、検査部153は、作業プロセスの整合性が満たされていない場合に、判定結果ファイル163を生成する。なお、NuSMVは、判定結果ファイル163を生成する機能を有しており、かかる判定結果ファイル163は、テキスト形式のファイルである。
反例生成部154は、検査部153によって生成されたテキスト形式の判定結果ファイル163から、XMI形式の反例ファイル164を生成する処理部である。具体的には、反例生成部154は、整合性が満たされていない手続きを視覚的に把握できるように、XMI形式の反例ファイル164を生成する。例えば、反例生成部154は、整合性が満たされていない原因となっている手続きの表示色を、他の手続きの表示色と変更するように、反例ファイル164を生成する。
そして、反例生成部154は、生成した反例ファイル164を表示制御部133へ出力する。反例ファイル164を受け付けた表示制御部133は、表示部120にアクティビティ図を表示させる。ここで、図9−1〜図9−3を用いて、反例生成部154によって生成された反例ファイル164に基づいて、表示制御部133が表示部120に表示させるアクティビティ図の例について説明する。図9−1〜図9−3は、整合性検査後に表示される画面(以下、「整合性検査結果画面」という)の一例を示す図である。
図9−1〜図9−3は、図3に示したアクティビティ図と比較して、手続きA3から手続きA4へのリンクが、手続きA3から手続きA5へのリンクに変更され、かつ、手続きA8が削除されたアクティビティ図に対する整合性検査結果画面を示している。ここでは、利用者によって入力されたミッション図は、図2に示したミッション図であり、利用者によって入力されたファカルティ図は、図4に示したファカルティ図であるものとする。
かかる場合、制約条件ファイル生成部151は、図6に示した条件P1〜P7を含む制約条件ファイル161を生成し、検査部153は、条件P4、P6およびP7に対する違反を検出する。このうち、図9−1に例示した整合性検査結果画面は、条件P4に対する違反を検出したことが視覚的に把握できるように表示されている。具体的には、図9−1に例示した整合性検査結果画面は、手続きA4の表示色を変更することで、手続きA4を経由せずに、作業プロセスが実行される可能性があることが把握できるように表示されている。すなわち、図9−1に例示した整合性検査結果画面によれば、ミッション図におけるサブ目標「P001−02:承認を得る」が達成されずに作業プロセスが終了する可能性があることを把握できる。
また、図9−2に例示した整合性検査結果画面は、条件P6に対する違反を検出したことが視覚的に把握できるように表示されている。具体的には、図9−2に例示した整合性検査結果画面は、手続きA4および手続きA7の表示色を変更することで、手続きA4を経由しなければ、「サーバ増設時に承認を得ていること」という制約条件に違反することが把握できるように表示されている。
また、図9−3に例示した整合性検査結果画面は、条件P7に対する違反を検出したことが視覚的に把握できるように表示されている。具体的には、図9−3に例示した整合性検査結果画面は、手続きA3の表示色を変更することで、管理サーバにログインした状態のままで、作業プロセスが終了することが把握できるように表示されている。
なお、図9−1〜図9−3に示した整合性検査結果画面は、あくまで一例であり、反例生成部154は、他の整合性検査結果画面が表示されるように反例ファイル164を生成してもよい。例えば、反例生成部154は、整合性が満たされない原因となっている手続き近傍に、かかる原因が文字列によって表示されるように反例ファイル164を生成してもよい。
検査結果ファイル格納部160は、検査結果に関する各種ファイルが格納される記憶デバイスであり、制約条件ファイル161と、挙動モデルファイル162と、判定結果ファイル163と、反例ファイル164とが格納される。
次に、本実施例に係る検査用ファイル生成装置100による整合性検査処理の手順について説明する。図10は、検査用ファイル生成装置100による整合性検査処理手順を示すフローチャートである。図10に示すように、検査用ファイル生成装置100の受付部131は、ミッション図、アクティビティ図またはファカルティ図を作成または編集するための情報を受け付ける(ステップS101)。
続いて、受付部131によって作業プロセスの整合性検査を開始する旨の操作指示が受け付けられた場合(ステップS102肯定)、定義ファイル生成部132は、各種定義ファイルを生成する(ステップS103)。具体的には、定義ファイル生成部132は、ミッション図を作成するために入力された情報に基づいて、ミッション定義ファイル142を生成する。また、定義ファイル生成部132は、アクティビティ図を作成するために入力された情報に基づいて、アクティビティ定義ファイル143を生成する。また、定義ファイル生成部132は、ファカルティ図を作成するために入力された情報に基づいて、ファカルティ定義ファイル144を生成する。
続いて、表示制御部133は、定義ファイル生成部132によってアクティビティ定義ファイル143が生成されなかった場合(ステップS104否定)、表示部120に、アクティビティ図を作成する旨のエラーを表示させる(ステップS105)。
一方、定義ファイル生成部132によってアクティビティ定義ファイル143が生成された場合(ステップS104肯定)、挙動モデル生成部152は、アクティビティ定義ファイル143に基づいて、挙動モデルファイル162を生成する挙動モデル生成処理を行う(ステップS106)。なお、挙動モデル生成部152による挙動モデル生成処理については、後に詳述する。
続いて、定義ファイル生成部132によってファカルティ定義ファイル144が生成された場合(ステップS107肯定)、挙動モデル生成部152は、ファカルティ定義ファイル144に基づいて、挙動モデルファイル162に初期状態を組み込む初期状態組込処理を行う(ステップS108)。一方、定義ファイル生成部132によってファカルティ定義ファイル144が生成されなかった場合(ステップS107否定)、挙動モデル生成部152は、初期状態組込処理を行わない。なお、挙動モデル生成部152による初期状態組込処理については、後に詳述する。
続いて、定義ファイル生成部132によってミッション定義ファイル142が生成された場合(ステップS109肯定)、制約条件ファイル生成部151は、共通定義ファイル141と、ミッション定義ファイル142とに基づいて、制約条件ファイル161を生成する制約条件ファイル生成処理を行う(ステップS110)。なお、制約条件ファイル生成部151による制約条件ファイル生成処理については、後に詳述する。
一方、定義ファイル生成部132によってミッション定義ファイル142が生成されなかった場合(ステップS109否定)、制約条件ファイル生成部151は、共通定義ファイル141に基づいて、制約条件ファイル161を生成する(ステップS111)。
続いて、検査部153は、制約条件ファイル161と、挙動モデルファイル162とに基づいて、作業プロセスの整合性が満たされているか否かを検査する(ステップS112)。作業プロセスの整合性が満たされている場合(ステップS113肯定)、検査部153は、処理を終了する。このとき、表示制御部133は、表示部120に、作業プロセスの整合性が満たされている旨を表示させてもよい。
一方、作業プロセスの整合性が満たされていない場合(ステップS113否定)、検査部153は、判定結果ファイル163を生成する(ステップS114)。続いて、反例生成部154は、検査部153によって生成された判定結果ファイル163から、反例ファイル164を生成する(ステップS115)。そして、表示制御部133は、反例生成部154によって生成された反例ファイル164に基づいて、表示部120に、整合性検査結果画面を表示させる(ステップS116)。
次に、挙動モデル生成部152による挙動モデル生成処理の手順について説明する。図11は、挙動モデル生成部152による挙動モデル生成処理手順を示すフローチャートである。図11に示すように、挙動モデル生成部152は、論理的なデータ構造に定義できるアクティビティ定義ファイル143から、順序関係TADを抽出する(ステップS201)。
続いて、挙動モデル生成部152は、抽出した順序関係TADから各状態s間の遷移関係を構築する(ステップS202)。続いて、挙動モデル生成部152は、アクティビティ定義ファイル143から、各ノードnADの事前条件PreADと、事後状態PostADとを抽出する(ステップS203)。
続いて、挙動モデル生成部152は、事前条件PreADおよび事後状態PostADに基づいて、各状態sにおける真理値を割り当てて(ステップS204)、挙動モデルファイル162を生成する(ステップS205)。
次に、挙動モデル生成部152による初期状態組込処理の手順について説明する。図12は、挙動モデル生成部152による初期状態組込処理手順を示すフローチャートである。図12に示すように、挙動モデル生成部152は、論理的なデータ構造に定義できるファカルティ定義ファイル144の関係TFDに基づいて、TypeFDが「Role」である実行主体のName1FDと、TypeFDが「Authority」である権限のName2FDとの関係を抽出する(ステップS301)。
続いて、挙動モデル生成部152は、抽出した実行主体Name1FDが、抽出した権限Name2FDを有することを示す自相論理式を生成する(ステップS302)。具体的には、挙動モデル生成部152は、自相論理式として、Has_autority(Name1FD、Name2FD)を生成する。
続いて、挙動モデル生成部152は、ファカルティ定義ファイル144の関係TFDに基づいて、TypeFDが「Role」である実行主体のName3FDと、TypeFDが「Skill」である権限のName4FDとの関係を抽出する(ステップS303)。続いて、挙動モデル生成部152は、抽出した実行主体Name3FDが、抽出したスキルName4FDを有することを示す自相論理式を生成する(ステップS304)。具体的には、挙動モデル生成部152は、自相論理式として、Has_skill(Name3FD、Name4FD)を生成する。
そして、挙動モデル生成部152は、上記ステップS302およびS304において生成した自相論理式を初期状態として、挙動モデルファイル162に組み込む(ステップS305)。
次に、制約条件ファイル生成部151による制約条件ファイル生成処理の手順について説明する。図13は、制約条件ファイル生成部151による制約条件ファイル生成処理手順を示すフローチャートである。図13に示すように、制約条件ファイル生成部151は、論理的なデータ構造に定義できるミッション定義ファイル142のノード集合NMDから、ゴール条件や制約条件を示すContMDを抽出する(ステップS401)。
続いて、制約条件ファイル生成部151は、抽出したContMDのうち、TypeMDが「Constraint」であるContMDに基づいて、ノードnMDが実行されている間、常に満たしていなければならない制約条件を示すCTL式を生成する。具体的には、制約条件ファイル生成部151は、CTL式として、AG(ContMD)を生成する(ステップS402)。
続いて、制約条件ファイル生成部151は、抽出したContMDのうち、TypeMDが「Goal」であるContMDに基づいて、ノードnMDが実行された後に満たさなければならないゴール条件を示すCTL式を生成する。具体的には、制約条件ファイル生成部151は、CTL式として、AG(Final→ContMD)を生成する(ステップS403)。
そして、制約条件ファイル生成部151は、CTL式により表されたゴール条件および制約条件が記述された制約条件ファイル161を生成する(ステップS404)。
上述してきたように、本実施例に係る検査用ファイル生成装置100は、目標が定義されるミッション図と、各種手続きが定義されるアクティビティ図と、実行主体が有する権限が定義されるファカルティ図とを図形入力により受け付け、かかるミッション図、アクティビティ図およびファカルティ図に基づいて、各種定義ファイルを生成し、生成した定義ファイルに基づいて、挙動モデルを示す挙動モデルファイル162を生成するので、複数のUML図で記述された作業プロセスに対して網羅的に整合性検査を行うための検査用ファイルを生成することができる。
また、本実施例に係る検査用ファイル生成装置100は、生成した挙動モデルファイル162を用いて、作業プロセスの整合性を検査するので、複数のUML図で記述された作業プロセスに対して網羅的に整合性検査を行うことができる。
なお、上記実施例では、検査用ファイル生成装置100が、挙動モデルファイル162を生成して、生成した挙動モデルファイル162に基づいて作業プロセスの整合性を検査する例について説明したが、検査用ファイル生成装置100は、挙動モデルファイル162の生成処理までを行い、作業プロセスの整合性検査処理については、他の情報処理装置を行ってもよい。
また、図1に示した検査用ファイル生成装置100の構成は、要旨を逸脱しない範囲で種々に変更することができる。例えば、検査用ファイル生成装置100の定義ファイル出力制御部130および検査制御部150の機能をソフトウェアとして実装し、これをコンピュータで実行することにより、検査用ファイル生成装置100と同等の機能を実現することもできる。以下に、定義ファイル出力制御部130および検査制御部150の機能をソフトウェアとして実装した作業プロセス検査プログラム1071を実行するコンピュータの一例を示す。
図14は、作業プロセス検査プログラム1071を実行するコンピュータ1000を示す機能ブロック図である。このコンピュータ1000は、各種演算処理を実行するCPU(Central Processing Unit)1010と、ユーザからのデータの入力を受け付ける入力装置1020と、各種情報を表示するモニタ1030と、記録媒体からプログラム等を読み取る媒体読取り装置1040と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置1050と、各種情報を一時記憶するRAM(Random Access Memory)1060と、ハードディスク装置1070とをバス1080で接続して構成される。
そして、ハードディスク装置1070には、図1に示した定義ファイル出力制御部130および検査制御部150と同様の機能を有する作業プロセス検査プログラム1071と、図1に示した定義ファイル格納部140に記憶される各種データに対応する定義ファイル1072と、図1に示した検査結果ファイル格納部160に記憶される各種データに対応する検査用データ1073とが記憶される。なお、定義ファイル1072または検査用データ1073を、適宜分散させ、ネットワークを介して接続された他のコンピュータに記憶させておくこともできる。
そして、CPU1010が作業プロセス検査プログラム1071をハードディスク装置1070から読み出してRAM1060に展開することにより、作業プロセス検査プログラム1071は、作業プロセス検査プロセス1061として機能するようになる。そして、作業プロセス検査プロセス1061は、定義ファイル1072および検査用データ1073から読み出した情報等を適宜RAM1060上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行する。
なお、上記の作業プロセス検査プログラム1071は、必ずしもハードディスク装置1070に格納されている必要はなく、CD−ROM等の記憶媒体に記憶されたこのプログラムを、コンピュータ1000が読み出して実行するようにしてもよい。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等を介してコンピュータ1000に接続される他のコンピュータ(またはサーバ)等にこのプログラムを記憶させておき、コンピュータ1000がこれらからプログラムを読み出して実行するようにしてもよい。
以下に、本願に開示する検査用ファイル生成プログラム、検査用ファイル生成装置および検査用ファイル生成方法の実施例を図面に基づいて詳細に説明する。なお、この実施例により本願に開示する検査用ファイル生成プログラム、検査用ファイル生成装置および検査用ファイル生成方法が限定されるものではない。
まず、本実施例に係る検査用ファイル生成装置の概要について説明する。本実施例に係る検査用ファイル生成装置は、作業プロセスにおいて最終的に達成される目標と、作業プロセス内で行われる各種手続きと、各種手続きを実行する実行主体が有する権限に関する情報を受け付ける。具体的には、目標、手続き、実行主体が有する権限に関する情報は、利用者によってUMLの記法を用いて入力される。そして、検査用ファイル生成装置は、入力された目標、手続き、実行主体が有する権限に関する情報に基づいて各種定義ファイルを生成する。続いて、検査用ファイル生成装置は、生成した定義ファイルに基づいて、作業プロセスを実行する際の挙動モデルが示す挙動モデルファイルを生成し、かかる挙動モデルファイルを用いて作業プロセスの整合性を検査する。これにより、本実施例に係る検査用ファイル生成装置では、利用者にとって可読性の高い作業プロセス図を用いて、作業プロセスの妥当性を網羅的に検査することが可能になる。
なお、本明細書では、目標が記述された図を「ミッション図」と呼び、手続きが記述された図を「アクティビティ図」と呼び、実行主体が有する権限が記述された図を「ファカルティ図」と呼ぶこととする。
このような検査用ファイル生成装置について、図1を用いて具体的に説明する。図1は、本実施例に係る検査用ファイル生成装置の構成を示す図である。図1に示すように、検査用ファイル生成装置100は、入力部110と、表示部120と、定義ファイル出力制御部130と、定義ファイル格納部140と、検査制御部150と、検査結果ファイル格納部160とを有する。
入力部110は、各種情報や操作指示を入力するための入力デバイスであり、例えば、キーボードやマウスである。表示部120は、各種情報を表示する表示デバイスであり、例えば、モニタである。
なお、本実施例に係る検査用ファイル生成装置100を用いる利用者は、表示部120に表示される所定のUMLエディタを用いて、ミッション図、アクティビティ図およびファカルティ図を入力できるものとする。UMLエディタを実現するためのアプリケーションの例としては、「Eclipse」と、EclipseのUMLプラグインである「SystemDirector Application Modeler UML Editor」との組合せなどがある。
ここで、図2〜図4を用いて、ミッション図、アクティビティ図およびファカルティ図の記述例について説明する。ここでは、作業プロセスとして、サービス用サーバを増設する例を示す。具体的には、かかる作業プロセスは、サーバの利用者がいないことを確認し、システム管理者の承認を得た後に、サービスを停止し、サービス用サーバを増設し、最後にサービスを再起動するという手続きを順に行うものとする。
図2は、ミッション図の一例を示す図である。図2に示した例のように、ミッション図は、作業プロセスにおいて達成される目標が、UMLのクラス図によって記述される図である。具体的には、ミッション図は、作業プロセスにおいて最終的に達成される目標(以下、「最終目標」という)と、最終目標を達成するために必要な目標(以下、「サブ目標」という)が記述される。
また、ミッション図は、各サブ目標が達成すべき条件(以下、「ゴール条件」という)と、各サブ目標が実行されている間、常に満たしていなければならない条件(以下、「制約条件」という)とが時相論理式によって記述される。具体的には、ゴール条件は、「Goal」という文字列が記述されている矩形内に記述され、制約条件は、「Constraint」という文字列が記述されている矩形内に記述される。
図2に例示したミッション図では、最終目標として、「P001:サーバ増設」が記述されている。また、最終目標を達成するために必要なサブ目標として、「P001−01:利用者の確認」と、「P001−02:承認を得る」と、「P001−03:サーバを増設する」とが記述されている。また、サブ目標「P001−01:利用者の確認」のサブ目標として、「P001−01−01:管理サーバにログイン」と、「P001−01−02:利用者を確認」とが記述されている。
また、図2に例示したミッション図では、サブ目標「P001−01−01:管理サーバにログイン」の制約条件として、[Login server]→AF[Logout server]が記述されている。かかる制約条件は、サーバにログインした後は、必ずサーバからログアウトしなければならないことを示している。
また、サブ目標「P001−01−02:利用者を確認」のゴール条件として、[User checked]が記述されている。かかるゴール条件は、サブ目標「P001−01−02:利用者を確認」が目標を達成するためには、サーバを利用するユーザが存在するか否かを確認する必要があることを示している。
また、サブ目標「P001−03:サーバを増設する」のゴール条件として、[New server added]が記述されている。かかるゴール条件は、サブ目標「P001−03:サーバを増設する」が目標を達成するためには、新しいサーバを増設する必要があることを示している。また、サブ目標「P001−03:サーバを増設する」の制約条件として、[New server added]→[New server addition granted]が記述されている。かかる制約条件は、サーバを増設する際には、システム管理者の承認が得られていなければならないことを示している。
図3は、アクティビティ図の一例を示す図である。図3に示した例のように、アクティビティ図は、ミッション図に記述される最終目標を達成するための手続きが、UMLのアクティビティ図によって記述される図である。具体的には、アクティビティ図は、各手続きの実行主体がアクティビティパーティションによって分離され、かかる主体によって実行される各手続きが有向リンクの結合によって記述される。
また、アクティビティ図は、各手続きの事前条件または事後条件が、ノート(コメント)によって記述される。具体的には、事前条件は「localPrecondition」という文字列が記述されているノート内に記述され、事後条件は「localPostcondition」という文字列が記述されているノート内に記述される。
図3に例示したアクティビティ図では、アクティビティパーティションとして、「作業者[Operator]」と、「管理職[Manager]」とが記述されている。そして、実行主体「作業者」によって実行される手続きとして、手続きA1〜A3およびA5〜A8が記述されており、実行主体「管理職」によって実行される手続きとして、手続きA4が記述されている。
また、図3に例示したアクティビティ図では、手続きA1「管理用サーバにログインする」の事後条件として、[Login server]が記述されている。かかる事後条件は、手続きA1が実行された後には、サーバにログインしている状態でなければならないことを示している。
また、手続きA4「サーバ増設承認」の事前条件として、[Has_Authority(Grant)]が記述されており、事後条件として、[New server addition granted]が記述されている。かかる事前条件は、手続きA4が実行される際には、手続きA4を実行する主体(図3の例では、管理職)が承認権限を有していなければならないことを示している。また、かかる事後条件は、手続きA4が実行された後には、システム管理者によって承認が得られていなければならないことを示している。
図4は、ファカルティ図の一例を示す図である。図4に示した例のように、ファカルティ図は、アクティビティ図に記述された手続きの実行主体、および、実行主体が有する権限やスキルがUMLのクラス図によって記述される図である。具体的には、実行主体は「Role」という文字列が記述されている矩形内に記述され、権限は「Authority」という文字列が記述されている矩形内に記述され、スキルは「Skill」という文字列が記述されている矩形内に記述される。
図4に例示したファカルティ図では、実行主体「Manager(管理職)」が、承認するための権限[Grant]を有することが記述されている。また、実行主体「Operator(作業者)」が、サーバを操作するためのスキル[Operate server]を有することが記述されている。
図1に示した定義ファイル出力制御部130は、各種定義ファイルを定義ファイル格納部140へ出力する制御部であり、受付部131と、定義ファイル生成部132と、表示制御部133とを有する。
受付部131は、入力部110を用いて入力された各種情報や操作指示を受け付ける処理部である。具体的には、受付部131は、ミッション図等を作成または編集するために入力された情報を受け付け、受け付けた情報を定義ファイル生成部132および表示制御部133へ出力する。また、受付部131は、利用者によって作業プロセスの整合性検査を開始する旨の操作指示が行われた場合に、定義ファイル生成部132に対して、整合性検査を開始するように指示する。
定義ファイル生成部132は、受付部131から整合性検査を開始する旨の指示を受け付けた場合に、受付部131から入力された情報に基づいて、各種定義ファイルを生成する処理部である。具体的には、定義ファイル生成部132は、ミッション図を作成するために入力部110を用いて入力された情報に基づいて、XMI(XML(Extensible Markup Language) Metadata Interchange)形式のミッション定義ファイル142を生成する。
また、定義ファイル生成部132は、アクティビティ図を作成するために入力部110を用いて入力された情報に基づいて、XMI形式のアクティビティ定義ファイル143を生成する。図5に、図3に示したアクティビティ図から生成されるアクティビティ定義ファイル143の一例を示す。また、定義ファイル生成部132は、ファカルティ図を作成するために入力部110を用いて入力された情報に基づいて、XMI形式のファカルティ定義ファイル144を生成する。
なお、EclipseのUMLプラグインなどにより実現されるUMLエディタは、UML図からXMI形式のファイルを生成する機能を有する。したがって、定義ファイル生成部132による定義ファイル生成処理は、既存のアプリケーションによって実現可能である。
表示制御部133は、表示部120に各種情報を表示させる制御部である。例えば、表示制御部133は、受付部131からミッション図等を作成または編集するために入力された情報を入力された場合に、かかる情報を表示部120に表示させる。
定義ファイル格納部140は、各種定義ファイルが格納される記憶デバイスであり、共通定義ファイル141と、ミッション定義ファイル142と、アクティビティ定義ファイル143と、ファカルティ定義ファイル144とが格納される。
共通定義ファイル141は、あらゆる作業プロセスを検査する場合における共通の規則が記述されているファイルである。例えば、共通定義ファイル141には、「作業プロセスに開始ノードが存在すること」や、「作業プロセスに終了ノードが存在すること」という規則が記述されている。
検査制御部150は、定義ファイル格納部140に格納されている各種定義ファイルに基づいて、作業プロセスの整合性を検査する制御部であり、制約条件ファイル生成部151と、挙動モデル生成部152と、検査部153と、反例生成部154とを有する。
制約条件ファイル生成部151は、共通定義ファイル141と、ミッション定義ファイル142とに基づいて、制約条件ファイル161を生成する処理部である。制約条件ファイル161は、各手続きが満たさなければならないゴール条件および制約条件が、CTL(Computational Tree Logic:計算木論理)式によって記述されるファイルである。
ここで、制約条件ファイル生成部151がミッション定義ファイル142に基づいて制約条件ファイル161を生成する処理について具体的に説明する。ここでは、まず、ミッション図の論理的なデータ構造について説明し、次に、制約条件ファイル生成部151による制約条件ファイル161の生成処理について説明する。
まず、ミッション図の論理的なデータ構造について説明する。ミッション図MDの構成要素は、
MD=(NMD、TMD)・・・(1)
というデータ構造によって定義される。
上記データ構造(1)において、NMDは、ミッション図MDに記述されているノードnMDの集合を示す。なお、ここでいう「ノードnMD」とは、ミッション図MDに記述されている最終目標およびサブ目標を示す。
また、ノードnMDは、
nMD=<NameMD、TypeMD、ContMD>・・・(2)
というデータ構造によって定義される。
上記データ構造(2)において、NameMDは、ノードnMDの名称を示す。TypeMDは、ノードnMDのタイプを示す。ContMDは、ゴール条件や制約条件の内容を示し、時相論理式によって表される。具体的には、ノードnMDのTypeMDが「Goal」である場合、かかるノードnMDのContMDには、ゴール条件が設定される。また、ノードnMDのTypeMDが「Constraint」である場合、かかるノードnMDのContMDには、制約条件が設定される。
TMDは、ノード集合NMDに含まれるノードnMD間の接続関係tMDの集合を示す。接続関係tMDは、例えば、<n1MD、n2MD>というデータ構造によって定義される。かかるデータ構造は、ノードn1MDと、ノードn2MDとが接続されていることを示す。
なお、ミッション定義ファイル142は、ミッション図MDを表すXMI形式のファイルであるので、ミッション定義ファイル142についても、上記データ構造(1)および(2)のように定義される。
次に、制約条件ファイル生成部151がミッション定義ファイル142に基づいて制約条件ファイル161を生成する処理について説明する。まず、制約条件ファイル生成部151は、ミッション定義ファイル142のノード集合NMDから、ゴール条件や制約条件を示すContMDを抽出する。続いて、制約条件ファイル生成部151は、抽出したContMDのうち、TypeMDが「Constraint」であるContMDに基づいて、ノードnMDが実行されている間、常に満たしていなければならない制約条件を示すCTL式を生成する。具体的には、制約条件ファイル生成部151は、CTL式として、AG(ContMD)を生成する。
続いて、制約条件ファイル生成部151は、抽出したContMDのうち、TypeMDが「Goal」であるContMDに基づいて、ノードnMDが実行された後に満たさなければならないゴール条件を示すCTL式を生成する。具体的には、制約条件ファイル生成部151は、CTL式として、AG(Final→ContMD)を生成する。
そして、制約条件ファイル生成部151は、CTL式により表されたゴール条件および制約条件が記述された制約条件ファイル161を生成する。図6は、制約条件ファイル161の一例を示す図である。図6に例示した制約条件ファイル161において、例えば、「AG(EF [Final])」は、「あらゆる状態から、ActivityFinalNodeへ到達している状態へ到達可能である」という条件を示している。また、例えば、「AG(!Precondtion_error)」は、「あらゆる状態において、アクティビティ実行時に事前条件違反が発生しない」という条件を示している。
図1に示した挙動モデル生成部152は、アクティビティ定義ファイル143に基づいて、作業プロセスを実行する際の挙動モデルを生成する処理部である。具体的には、挙動モデル生成部152は、挙動モデルとして、後述する検査部153が検査処理を行うことができる形式の挙動モデルファイル162を生成する。なお、本実施例に係る検査用ファイル生成装置100では、検査部153として、モデル検査ツールであるNuSMVを用いるものとする。したがって、挙動モデル生成部152は、SMV形式の挙動モデルファイル162を生成する。
また、挙動モデル生成部152は、ファカルティ定義ファイル144に基づいて、挙動モデルにおける初期状態を生成し、生成した初期状態を挙動モデルファイル162に組み込む。ここでいう「初期状態」とは、作業プロセスが実行される前に成立している事象を示し、例えば、実行主体が有する権限などを示す。
ここで、挙動モデル生成部152による挙動モデルファイル162の生成処理、および、初期状態組込処理について具体的に説明する。ここでは、まず、アクティビティ図の論理的なデータ構造について説明し、続いて、ファカルティ図の論理的なデータ構造について説明し、続いて、挙動モデルの論理的なデータ構造について説明し、続いて、挙動モデル生成部152による挙動モデルファイル162の生成処理について説明する。
まず、アクティビティ図の論理的なデータ構造について説明する。アクティビティ図ADの構成要素は、
AD=(PAD、NAD、TAD)・・・(3)
というデータ構造によって定義される。
上記データ構造(3)において、PADは、アクティビティ図ADに記述されているパーティションpADの集合を示す。NADは、アクティビティ図ADに記述されているノードnADの集合を示す。なお、ここでいう「ノードnAD」とは、アクティビティ図ADに含まれる手続きおよびノートを示す。TADは、ノード集合NADに含まれるノードnAD間の順序関係tADの集合を示す。
また、パーティションpADは、
pAD=<NameAD、RoleAD>・・・(4)
というデータ構造によって定義される。
上記データ構造(4)において、NameADは、パーティションpADの名称を示す。RoleADは、パーティションpADの役割や、権限、スキルを示す。図3に示したアクティビティ図の例では、NameADが「作業者」であり、RoleADが「Operator」であるパーティションpADと、NameADが「管理職」であり、RoleADが「Manager」であるパーティションpADとが定義される。
また、順序関係tADは、
tAD=<SrcAD、DstAD、RelationAD>・・・(5)
というデータ構造によって定義される。
上記データ構造(5)において、SrcADは、順序関係tADの始点となるノードを示し、DstADは、順序関係tADの終点となるノードを示す。RelationADは、始点ノードSrcADと、終点ノードDstADとの間の関係を示す。具体的には、RelationADには、「ControlFlow」または「CommentLine」が設定される。
また、ノードnADは、
nAD=<NameAD、TypeAD、PreAD、PostAD>・・・(6)
というデータ構造によって定義される。
上記データ構造(6)において、NameADは、ノードnADのアクション名を示す。TypeADは、ノードnADの種類またはステレオタイプ(Stereotype)を示す。なお、TypeADは、UML2.0の記述仕様に従い、「ExecutableNode」、「InitialNode」、「ActivityFinalNode」、「ForkNode」、「JoinNode」、「MergeNode」、「DecisionNode」、「localPrecondition」、「localPostcondition」のいずれかが設定される。
例えば、TypeADが「ExecutableNode」である場合、NameADには、「サーバにログイン」、「承認処理の実行」などが設定される。また、例えば、TypeADが「localPrecondition」または「localPostcondition」などのステレオタイプである場合、NameADには、アクションの事前条件や事後条件を表す論理式が設定される。
PreADは、ノードnADのアクションが実行される前に満たされなければならない事前条件を示す。具体的には、ノードnADのTypeADが「ExecutableNode」である場合、かかるノードnADの事前条件PreADは、ノードnADと接続されており、かつ、TypeADが「localPrecondition」であるノードnADによって表される。すなわち、2つのノードn1ADおよびn2ADにおいて、「Type1AD = ExecutableNode」、かつ、「Type2AD = localPrecondition」、かつ、「<n1AD、n2AD、CommentLine> ∈ TAD」ならば、「Pre1AD = Name2AD」が成り立つ。
PostADは、ノードnADのアクションが実行された後の事後条件を示す。具体的には、ノードnADのTypeADが「ExecutableNode」である場合、かかるノードnADの事後条件PostADは、ノードnADと接続されており、かつ、TypeADが「localPostcondition」であるノードnADによって表される。
なお、アクティビティ定義ファイル143は、アクティビティ図ADを表すXMI形式のファイルであるので、アクティビティ定義ファイル143についても、上記データ構造(3)〜(6)のように定義される。
続いて、ファカルティ図の論理的なデータ構造について説明する。ファカルティ図FDの構成要素は、
FD=(NFD、TFD)・・・(7)
というデータ構造によって定義される。
上記データ構造(7)において、NFDは、ファカルティ図FDに記述されているノードnFDの集合を示す。なお、ここでいう「ノードnFD」とは、ファカルティ図FDに記載される実行主体、権限およびスキルを示す。TFDは、ノード集合NFDに含まれるノードnFD間の関係tFDの集合を示す。
また、ノードnFDは、
nFD=<NameFD、TypeFD>・・・(8)
というデータ構造によって定義される。
上記データ構造(8)において、NameFDは、ノードnFDで表される実行主体、権限またはスキルの名称を示す。TypeFDは、ノードnFDのステレオタイプを示す。具体的には、ノードnFDが実行主体である場合、TypeFDには「Role」が設定され、ノードnFDが権限である場合、TypeFDには「Authority」、ノードnFDがスキルである場合、TypeFDには「Skill」が設定される。
図4に示したファカルティ図の例では、NameFDが「Manager」であり、TypeFDが「Role」であるノードn1FDと、NameFDが「Grant」であり、TypeFDが「Authority」であるノードn2FDとが定義される。また、所定の関係t1FDによって、ノードn1FDとノードn2FDとが関係していることが定義される。したがって、ノードn1FDおよびn2FDと、関係t1FDによって、実行主体「Manager」が権限「Grant」を有していることを把握できる。
同様に、図4に示したファカルティ図の例では、NameFDが「Operator」であり、TypeFDが「Role」であるノードn3FDと、NameFDが「Operate server」であり、TypeFDが「Skill」であるノードn4FDとが定義される。また、所定の関係t2FDによって、ノードn3FDとノードn4FDとが関係していることが定義される。したがって、ノードn3FDおよびn4FDと、関係t2FDによって、実行主体「Operator」がスキル「Operate server」を有していることを把握できる。
なお、ファカルティ定義ファイル144は、ファカルティ図FDを表すXMI形式のファイルであるので、ファカルティ定義ファイル144についても、上記データ構造(7)および(8)のように定義される。
続いて、挙動モデル生成部152が生成する挙動モデルの論理的なデータ構造について説明する。挙動モデルMADは、
MAD=(S、SI、R、L)・・・(9)
によって定義される。
上記データ構図(9)において、Sは、アクティビティ図ADにおいて到達可能な状態sの集合を示す。ここでいう「到達可能な状態」とは、アクティビティ図ADにおいて、所定の手続きが実行される前の状態と、所定の手続きが実行されている状態と、所定の手続きが実行された後の状態とを示す。図3に示したアクティビティ図の例では、Sには、手続きA1〜A8が実行される前の状態、手続きA1〜A8が実行されている状態、手続きA1〜A8が実行された後の状態が含まれる。
SIは、状態集合Sに含まれる要素であり、アクティビティ図ADにおける初期状態を示す。図3に示したアクティビティ図の例では、SIは、手続きA1が実行される前の状態を示す。
Lは、状態sから、かかる状態sにおいて成立している事象を表す変数への写像を与えるための関数である。ここでいう「事象を表す変数」とは、例えば、以下の(A)〜(D)に示すものが定義される。
(A)IN(n)
変数IN(n)は、状態sにおいて、ノードnADにより表されるアクションが実行中である場合に、かかる実行の多重度を示す。例えば、状態sが実行中でない場合、IN(n)=0が成り立つ。
(B)ON(t)
変数ON(t)におけるtは、
t=<n1AD、n2AD、ControlFlow>・・・(10)
により定義される。
上記式(10)において、ノードn1ADは、状態sの直前のアクションを示し、ノードn2ADは、状態sの直後のアクションを示す。そして、ON(t)は、ノードn1ADにより表されるアクションが終了し、かつ、ノードn2ADにより表されるアクションが実行前である場合に、かかる実行の多重度を示す。
(C)Has_authority(x、y)・・・(11)
上記式(11)において、xは権限を示し、yは実行主体を示す。例えば、ファカルティ定義ファイル144に、実行主体yが権限xを有していることが記述されている場合、全ての状態sにおいて、Has_authority(x、y)=1(真)が成立する。なお、実行主体yがスキルxを有しているか否かの変数は、Has_skill(x、y)によって表される。
(D)Final
Finalは、アクティビティ図ADにおいて、FinalNodeにより表されているアクションまで到達し、アクティビティが終了したことを示す。具体的には、TypeAD=FinalNodeのとき、状態s|=In(nAD)ならば、状態s|=Finalが成立する。
なお、上記(A)〜(D)に示した変数は、あくまで一例であり、アクティビティ図ADやミッション図MDに記述される他の変数についても、各状態sにおける解釈を与えることができる。以下では、関数Lによって決定される状態sにおける変数vの値を表す関数を、f(L(s)、v)と表すこととする。
Rは、所定の状態s1から別の状態s2へ遷移する条件を示す。以下に、状態s1から状態s2へ遷移する遷移条件Rについて、2つの例を示して説明する。まず、ノードn1ADで表されるアクションが実行中である状態s1から、かかるアクションが実行終了後の状態s2へ遷移する遷移条件R1について説明する。遷移条件R1には、以下に示す条件R1−1〜R1−7が定義される。
(条件R1−1)
f(L(s1),IN(n1AD))>0が成立すること。
(条件R1−2)
TOUT={t2AD|t2AD=<n1AD,Dst2AD,ControlFlow>∈T}が空でないこと。すなわち、ノードn1ADを始点ノードとするControlFlowが少なくとも1つ存在すること。
(条件R1−3)
TOUT={d1,d2,・・・,dm}のとき、Type1AD≠ForkNodeならば、所定の1つのk(1≦k≦m)について、f(L(s2),ON(dk))=f(L(s1),ON(dk))+1が成立し、k≠lならば、f(L(s2),ON(dl))=f(L(s1),ON(dl))が成立すること。
(条件R1−4)
TOUT={d1,d2,・・・,dm}のとき、Type1AD=ForkNodeならば、すべてのk(1≦k≦m)について、f(L(s2),ON(dk))=f(L(s1),ON(dk))+1が成立すること。
(条件R1−5)
f(L(s2),IN(n1AD))=f(L(s1),IN(n1AD))−1が成立すること。
(条件R1−6)
所定の命題αについて、α∈Post1ADならば、f(L(s2),α)=1(真)が成立し、¬α∈Post1ADならば、f(L(s2),α)=0(偽)が成立すること。
(条件R1−7)
上記条件R1−1〜条件R1−6において、指定のない変数および命題xについては、f(L(s1),x)=f(L(s2),x)が成立すること。
続いて、所定の状態s1から、ノードn1ADで表されるアクションが実行中である状態s2へ遷移する遷移条件R2について説明する。遷移条件R2には、以下に示す条件R2−1〜R2−6が定義される。
(条件R2−1)
TIN={t1AD|t1AD=<n2AD,n1AD,ControlFlow>∈T}が空でないこと。すなわち、ノードn2ADを終点ノードとするControlFlowが少なくとも1つ存在すること。
(条件R2−2)
TIN={e1,e2,・・・,em}のとき、Type1AD≠ForkNodeならば、所定の1つのk(1≦k≦m)について、f(L(s1),ON(ek))>0、かつ、f(L(s2),ON(ek))=f(L(s1),ON(ek))−1が成立し、k≠lならば、f(L(s2),ON(el))=f(L(s1),ON(el))が成立すること。
(条件R2−3)
TIN={e1,e2,・・・,em}のとき、Type1AD=ForkNodeならば、すべてのk(1≦k≦m)について、f(L(s1),ON(ek))>0、かつ、f(L(s2),ON(ek))=f(L(s1),ON(ek))−1が成立すること。
(条件R2−4)
f(L(s2),IN(n1AD))=f(L(s1),IN(n1AD))+1が成立すること。
(条件R2−5)
所定の命題αについて、α∈Pre1ADならば、f(L(s1),α)=1(真)が成立し、¬α∈Pre1ADならば、f(L(s1),α)=0(偽)が成立すること。
(条件R2−6)
上記条件R2−1〜条件R2−6において、指定のない変数および命題xについては、f(L(s1),x)=f(L(s2),x)が成立すること。
続いて、挙動モデル生成部152による挙動モデルファイル162の生成処理について説明する。挙動モデル生成部152は、アクティビティ定義ファイル143から、順序関係TADを抽出する。続いて、挙動モデル生成部152は、抽出した順序関係TADから各状態s間の遷移関係を構築する。続いて、挙動モデル生成部152は、アクティビティ定義ファイル143から、各ノードnADの事前条件PreADと、事後状態PostADとを抽出する。続いて、挙動モデル生成部152は、事前条件PreADおよび事後状態PostADに基づいて、各状態sにおける真理値を割り当てて、挙動モデルファイル162を生成する。
図7は、SMV形式の挙動モデルファイル162の一例を示す図である。図7に示した挙動モデルファイル162において、「in_0_1」は、図3に示した手続きA2が実行中であることを示しており、「on_6」は、手続きA2の直前のリンクまで実行が終了したことを示す。すなわち、図7に示した挙動モデルファイル162は、手続きA2が実行される状態に遷移するとき、「on_6」を「1」減算し、「in_0_1」を「1」加算し、「User_checked」の値を1(真)にすることを示している。
次に、挙動モデル生成部152による初期状態組込処理について説明する。挙動モデル生成部152は、ファカルティ定義ファイル144の関係TFDに基づいて、TypeFDが「Role」である実行主体のName1FDと、TypeFDが「Authority」である権限のName2FDとの関係を抽出する。続いて、挙動モデル生成部152は、抽出した実行主体Name1FDが、抽出した権限Name2FDを有することを示す自相論理式を生成する。具体的には、挙動モデル生成部152は、自相論理式として、Has_autority(Name1FD、Name2FD)を生成する。
続いて、挙動モデル生成部152は、ファカルティ定義ファイル144の関係TFDに基づいて、TypeFDが「Role」である実行主体のName3FDと、TypeFDが「Skill」である権限のName4FDとの関係を抽出する。続いて、挙動モデル生成部152は、抽出した実行主体Name3FDが、抽出したスキルName4FDを有することを示す自相論理式を生成する。具体的には、挙動モデル生成部152は、自相論理式として、Has_skill(Name3FD、Name4FD)を生成する。
図8は、挙動モデルファイル162に組み込む初期状態の一例を示す図である。例えば、図8中の定義81は、「管理職は、承認権限を有している」ということを示している。挙動モデル生成部152は、このように定義される初期状態を、挙動モデルファイル162に組み込む。なお、挙動モデル生成部152は、初期状態を、挙動モデルファイル162に組み込まず、初期状態が定義されている別のファイルを生成してもよい。
検査部153は、制約条件ファイル161と、挙動モデルファイル162とに基づいて、作業プロセスの整合性が満たされているか否かを検査する処理部である。具体的には、検査部153は、権限またはスキルを有する実行主体によって各手続きが実行されているか否か、制約条件ファイル161に定義されている制約条件を満たしつつ各手続きが実行されるか否か、制約条件ファイル161に定義されているゴール条件を満たすか否かを検査する。そして、検査部153は、作業プロセスの整合性が満たされていない場合に、判定結果ファイル163を生成する。なお、NuSMVは、判定結果ファイル163を生成する機能を有しており、かかる判定結果ファイル163は、テキスト形式のファイルである。
反例生成部154は、検査部153によって生成されたテキスト形式の判定結果ファイル163から、XMI形式の反例ファイル164を生成する処理部である。具体的には、反例生成部154は、整合性が満たされていない手続きを視覚的に把握できるように、XMI形式の反例ファイル164を生成する。例えば、反例生成部154は、整合性が満たされていない原因となっている手続きの表示色を、他の手続きの表示色と変更するように、反例ファイル164を生成する。
そして、反例生成部154は、生成した反例ファイル164を表示制御部133へ出力する。反例ファイル164を受け付けた表示制御部133は、表示部120にアクティビティ図を表示させる。ここで、図9−1〜図9−3を用いて、反例生成部154によって生成された反例ファイル164に基づいて、表示制御部133が表示部120に表示させるアクティビティ図の例について説明する。図9−1〜図9−3は、整合性検査後に表示される画面(以下、「整合性検査結果画面」という)の一例を示す図である。
図9−1〜図9−3は、図3に示したアクティビティ図と比較して、手続きA3から手続きA4へのリンクが、手続きA3から手続きA5へのリンクに変更され、かつ、手続きA8が削除されたアクティビティ図に対する整合性検査結果画面を示している。ここでは、利用者によって入力されたミッション図は、図2に示したミッション図であり、利用者によって入力されたファカルティ図は、図4に示したファカルティ図であるものとする。
かかる場合、制約条件ファイル生成部151は、図6に示した条件P1〜P7を含む制約条件ファイル161を生成し、検査部153は、条件P4、P6およびP7に対する違反を検出する。このうち、図9−1に例示した整合性検査結果画面は、条件P4に対する違反を検出したことが視覚的に把握できるように表示されている。具体的には、図9−1に例示した整合性検査結果画面は、手続きA4の表示色を変更することで、手続きA4を経由せずに、作業プロセスが実行される可能性があることが把握できるように表示されている。すなわち、図9−1に例示した整合性検査結果画面によれば、ミッション図におけるサブ目標「P001−02:承認を得る」が達成されずに作業プロセスが終了する可能性があることを把握できる。
また、図9−2に例示した整合性検査結果画面は、条件P6に対する違反を検出したことが視覚的に把握できるように表示されている。具体的には、図9−2に例示した整合性検査結果画面は、手続きA4および手続きA7の表示色を変更することで、手続きA4を経由しなければ、「サーバ増設時に承認を得ていること」という制約条件に違反することが把握できるように表示されている。
また、図9−3に例示した整合性検査結果画面は、条件P7に対する違反を検出したことが視覚的に把握できるように表示されている。具体的には、図9−3に例示した整合性検査結果画面は、手続きA3の表示色を変更することで、管理サーバにログインした状態のままで、作業プロセスが終了することが把握できるように表示されている。
なお、図9−1〜図9−3に示した整合性検査結果画面は、あくまで一例であり、反例生成部154は、他の整合性検査結果画面が表示されるように反例ファイル164を生成してもよい。例えば、反例生成部154は、整合性が満たされない原因となっている手続き近傍に、かかる原因が文字列によって表示されるように反例ファイル164を生成してもよい。
検査結果ファイル格納部160は、検査結果に関する各種ファイルが格納される記憶デバイスであり、制約条件ファイル161と、挙動モデルファイル162と、判定結果ファイル163と、反例ファイル164とが格納される。
次に、本実施例に係る検査用ファイル生成装置100による整合性検査処理の手順について説明する。図10は、検査用ファイル生成装置100による整合性検査処理手順を示すフローチャートである。図10に示すように、検査用ファイル生成装置100の受付部131は、ミッション図、アクティビティ図またはファカルティ図を作成または編集するための情報を受け付ける(ステップS101)。
続いて、受付部131によって作業プロセスの整合性検査を開始する旨の操作指示が受け付けられた場合(ステップS102肯定)、定義ファイル生成部132は、各種定義ファイルを生成する(ステップS103)。具体的には、定義ファイル生成部132は、ミッション図を作成するために入力された情報に基づいて、ミッション定義ファイル142を生成する。また、定義ファイル生成部132は、アクティビティ図を作成するために入力された情報に基づいて、アクティビティ定義ファイル143を生成する。また、定義ファイル生成部132は、ファカルティ図を作成するために入力された情報に基づいて、ファカルティ定義ファイル144を生成する。
続いて、表示制御部133は、定義ファイル生成部132によってアクティビティ定義ファイル143が生成されなかった場合(ステップS104否定)、表示部120に、アクティビティ図を作成する旨のエラーを表示させる(ステップS105)。
一方、定義ファイル生成部132によってアクティビティ定義ファイル143が生成された場合(ステップS104肯定)、挙動モデル生成部152は、アクティビティ定義ファイル143に基づいて、挙動モデルファイル162を生成する挙動モデル生成処理を行う(ステップS106)。なお、挙動モデル生成部152による挙動モデル生成処理については、後に詳述する。
続いて、定義ファイル生成部132によってファカルティ定義ファイル144が生成された場合(ステップS107肯定)、挙動モデル生成部152は、ファカルティ定義ファイル144に基づいて、挙動モデルファイル162に初期状態を組み込む初期状態組込処理を行う(ステップS108)。一方、定義ファイル生成部132によってファカルティ定義ファイル144が生成されなかった場合(ステップS107否定)、挙動モデル生成部152は、初期状態組込処理を行わない。なお、挙動モデル生成部152による初期状態組込処理については、後に詳述する。
続いて、定義ファイル生成部132によってミッション定義ファイル142が生成された場合(ステップS109肯定)、制約条件ファイル生成部151は、共通定義ファイル141と、ミッション定義ファイル142とに基づいて、制約条件ファイル161を生成する制約条件ファイル生成処理を行う(ステップS110)。なお、制約条件ファイル生成部151による制約条件ファイル生成処理については、後に詳述する。
一方、定義ファイル生成部132によってミッション定義ファイル142が生成されなかった場合(ステップS109否定)、制約条件ファイル生成部151は、共通定義ファイル141に基づいて、制約条件ファイル161を生成する(ステップS111)。
続いて、検査部153は、制約条件ファイル161と、挙動モデルファイル162とに基づいて、作業プロセスの整合性が満たされているか否かを検査する(ステップS112)。作業プロセスの整合性が満たされている場合(ステップS113肯定)、検査部153は、処理を終了する。このとき、表示制御部133は、表示部120に、作業プロセスの整合性が満たされている旨を表示させてもよい。
一方、作業プロセスの整合性が満たされていない場合(ステップS113否定)、検査部153は、判定結果ファイル163を生成する(ステップS114)。続いて、反例生成部154は、検査部153によって生成された判定結果ファイル163から、反例ファイル164を生成する(ステップS115)。そして、表示制御部133は、反例生成部154によって生成された反例ファイル164に基づいて、表示部120に、整合性検査結果画面を表示させる(ステップS116)。
次に、挙動モデル生成部152による挙動モデル生成処理の手順について説明する。図11は、挙動モデル生成部152による挙動モデル生成処理手順を示すフローチャートである。図11に示すように、挙動モデル生成部152は、論理的なデータ構造に定義できるアクティビティ定義ファイル143から、順序関係TADを抽出する(ステップS201)。
続いて、挙動モデル生成部152は、抽出した順序関係TADから各状態s間の遷移関係を構築する(ステップS202)。続いて、挙動モデル生成部152は、アクティビティ定義ファイル143から、各ノードnADの事前条件PreADと、事後状態PostADとを抽出する(ステップS203)。
続いて、挙動モデル生成部152は、事前条件PreADおよび事後状態PostADに基づいて、各状態sにおける真理値を割り当てて(ステップS204)、挙動モデルファイル162を生成する(ステップS205)。
次に、挙動モデル生成部152による初期状態組込処理の手順について説明する。図12は、挙動モデル生成部152による初期状態組込処理手順を示すフローチャートである。図12に示すように、挙動モデル生成部152は、論理的なデータ構造に定義できるファカルティ定義ファイル144の関係TFDに基づいて、TypeFDが「Role」である実行主体のName1FDと、TypeFDが「Authority」である権限のName2FDとの関係を抽出する(ステップS301)。
続いて、挙動モデル生成部152は、抽出した実行主体Name1FDが、抽出した権限Name2FDを有することを示す自相論理式を生成する(ステップS302)。具体的には、挙動モデル生成部152は、自相論理式として、Has_autority(Name1FD、Name2FD)を生成する。
続いて、挙動モデル生成部152は、ファカルティ定義ファイル144の関係TFDに基づいて、TypeFDが「Role」である実行主体のName3FDと、TypeFDが「Skill」である権限のName4FDとの関係を抽出する(ステップS303)。続いて、挙動モデル生成部152は、抽出した実行主体Name3FDが、抽出したスキルName4FDを有することを示す自相論理式を生成する(ステップS304)。具体的には、挙動モデル生成部152は、自相論理式として、Has_skill(Name3FD、Name4FD)を生成する。
そして、挙動モデル生成部152は、上記ステップS302およびS304において生成した自相論理式を初期状態として、挙動モデルファイル162に組み込む(ステップS305)。
次に、制約条件ファイル生成部151による制約条件ファイル生成処理の手順について説明する。図13は、制約条件ファイル生成部151による制約条件ファイル生成処理手順を示すフローチャートである。図13に示すように、制約条件ファイル生成部151は、論理的なデータ構造に定義できるミッション定義ファイル142のノード集合NMDから、ゴール条件や制約条件を示すContMDを抽出する(ステップS401)。
続いて、制約条件ファイル生成部151は、抽出したContMDのうち、TypeMDが「Constraint」であるContMDに基づいて、ノードnMDが実行されている間、常に満たしていなければならない制約条件を示すCTL式を生成する。具体的には、制約条件ファイル生成部151は、CTL式として、AG(ContMD)を生成する(ステップS402)。
続いて、制約条件ファイル生成部151は、抽出したContMDのうち、TypeMDが「Goal」であるContMDに基づいて、ノードnMDが実行された後に満たさなければならないゴール条件を示すCTL式を生成する。具体的には、制約条件ファイル生成部151は、CTL式として、AG(Final→ContMD)を生成する(ステップS403)。
そして、制約条件ファイル生成部151は、CTL式により表されたゴール条件および制約条件が記述された制約条件ファイル161を生成する(ステップS404)。
上述してきたように、本実施例に係る検査用ファイル生成装置100は、目標が定義されるミッション図と、各種手続きが定義されるアクティビティ図と、実行主体が有する権限が定義されるファカルティ図とを図形入力により受け付け、かかるミッション図、アクティビティ図およびファカルティ図に基づいて、各種定義ファイルを生成し、生成した定義ファイルに基づいて、挙動モデルを示す挙動モデルファイル162を生成するので、複数のUML図で記述された作業プロセスに対して網羅的に整合性検査を行うための検査用ファイルを生成することができる。
また、本実施例に係る検査用ファイル生成装置100は、生成した挙動モデルファイル162を用いて、作業プロセスの整合性を検査するので、複数のUML図で記述された作業プロセスに対して網羅的に整合性検査を行うことができる。
なお、上記実施例では、検査用ファイル生成装置100が、挙動モデルファイル162を生成して、生成した挙動モデルファイル162に基づいて作業プロセスの整合性を検査する例について説明したが、検査用ファイル生成装置100は、挙動モデルファイル162の生成処理までを行い、作業プロセスの整合性検査処理については、他の情報処理装置を行ってもよい。
また、図1に示した検査用ファイル生成装置100の構成は、要旨を逸脱しない範囲で種々に変更することができる。例えば、検査用ファイル生成装置100の定義ファイル出力制御部130および検査制御部150の機能をソフトウェアとして実装し、これをコンピュータで実行することにより、検査用ファイル生成装置100と同等の機能を実現することもできる。以下に、定義ファイル出力制御部130および検査制御部150の機能をソフトウェアとして実装した作業プロセス検査プログラム1071を実行するコンピュータの一例を示す。
図14は、作業プロセス検査プログラム1071を実行するコンピュータ1000を示す機能ブロック図である。このコンピュータ1000は、各種演算処理を実行するCPU(Central Processing Unit)1010と、ユーザからのデータの入力を受け付ける入力装置1020と、各種情報を表示するモニタ1030と、記録媒体からプログラム等を読み取る媒体読取り装置1040と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置1050と、各種情報を一時記憶するRAM(Random Access Memory)1060と、ハードディスク装置1070とをバス1080で接続して構成される。
そして、ハードディスク装置1070には、図1に示した定義ファイル出力制御部130および検査制御部150と同様の機能を有する作業プロセス検査プログラム1071と、図1に示した定義ファイル格納部140に記憶される各種データに対応する定義ファイル1072と、図1に示した検査結果ファイル格納部160に記憶される各種データに対応する検査用データ1073とが記憶される。なお、定義ファイル1072または検査用データ1073を、適宜分散させ、ネットワークを介して接続された他のコンピュータに記憶させておくこともできる。
そして、CPU1010が作業プロセス検査プログラム1071をハードディスク装置1070から読み出してRAM1060に展開することにより、作業プロセス検査プログラム1071は、作業プロセス検査プロセス1061として機能するようになる。そして、作業プロセス検査プロセス1061は、定義ファイル1072および検査用データ1073から読み出した情報等を適宜RAM1060上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行する。
なお、上記の作業プロセス検査プログラム1071は、必ずしもハードディスク装置1070に格納されている必要はなく、CD−ROM等の記憶媒体に記憶されたこのプログラムを、コンピュータ1000が読み出して実行するようにしてもよい。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等を介してコンピュータ1000に接続される他のコンピュータ(またはサーバ)等にこのプログラムを記憶させておき、コンピュータ1000がこれらからプログラムを読み出して実行するようにしてもよい。