(57)【特許請求の範囲】
【請求項１】
コンピュータ可読な複数のメタデータが付随する複数の書類に対して処理を行うシステムであって、その動作仕様が各書類に対する操作の集合として与えられており、各操作における、それを適用可能なメタデータの範囲の条件である入力条件と、それの適用後のメタデータの変化である出力条件を保持しているシステムに対する、仕様検証方法であって、
前記コンピュータの処理により、前記複数の書類を、各メタデータのとりうる値で示した抽象書類の集合として表現して、コンピュータ可読な形式で保持するステップと、
前記コンピュータの処理により、前記抽象書類を、前記操作の入力条件に基づき複数の抽象書類に分割するステップと、
前記コンピュータの処理により、前記操作の集合の少なくとも一部の操作を適用し、その出力条件に基づき新たな抽象書類を追加するステップと、
前記コンピュータの処理により、前記抽象書類の集合に対して、前記メタデータが指定する範囲の重なりに従い前記抽象書類群を分割・統合するステップと、
前記コンピュータの処理により、所定の完了条件が満たされるまで前記操作の集合の少なくとも一部の操作を適用する処理を繰り返すステップと、
前記完了条件が満たされた段階で操作が終了まで至らない抽象書類があるかどうか、前記コンピュータの処理によって検証するステップを有する、
仕様検証方法。
【請求項２】
前記追加あるいは分割された抽象書類は、抽象書類をノード、操作をリンクとするグラフ構造を形成するように前記コンピュータ上で保持される、請求項１に記載の方法。
【請求項３】
前記完了条件が、前記操作の適用により前記抽象書類に変化が生じないことを検出することを含む、請求項１に記載の方法。
【請求項４】
前記操作の適用により前記抽象書類に変化が生じないことを検出することに応答して、前記検証するステップに移行するまでに、少なくとも複数回、前記操作を適用する処理を繰り返す、請求項３に記載の方法。
【請求項５】
前記動作仕様が、前記メタデータの特定の状態で記述される終了条件を含み、前記検証するステップが、前記終了条件を満たす前記抽象書類から、前記グラフ構造を逆順にたどって終了マークをつけるステップと、該たどった結果、終了マークがついていない前記抽象書類が見つかることに応答して、検証失敗と判定するステップを含む、請求項２に記載の方法。
【請求項６】
初期抽象書類から、前記終了マークがついていない前記抽象書類までのパスを、失敗例として提示するステップを含む、請求項５に記載の方法。
【請求項７】
コンピュータ可読な複数のメタデータが付随する複数の書類に対して処理を行うシステムであって、その動作仕様が各書類に対する操作の集合として与えられており、各操作における、それを適用可能なメタデータの範囲の条件である入力条件と、それの適用後のメタデータの変化である出力条件を保持しているシステムに対する、仕様検証プログラムであって、
前記コンピュータに、
前記複数の書類を、各メタデータのとりうる値で示した抽象書類の集合として表現して、コンピュータ可読な形式で保持するステップと、
前記抽象書類を、前記操作の入力条件に基づき複数の抽象書類に分割するステップと、  前記操作の集合の少なくとも一部の操作を適用し、その出力条件に基づき新たな抽象書類を追加するステップと、
前記抽象書類の集合に対して、前記メタデータが指定する範囲の重なりに従い前記抽象書類群を分割・統合するステップと、
所定の完了条件が満たされるまで前記操作の集合の少なくとも一部の操作を適用する処理を繰り返すステップと、
前記完了条件が満たされた段階で操作が終了まで至らない抽象書類があるかどうか、検証するステップを実行させる、
仕様検証プログラム。
【請求項８】
前記追加あるいは分割された抽象書類は、抽象書類をノード、操作をリンクとするグラフ構造を形成するように前記コンピュータ上で保持される、請求項７に記載のプログラム。
【請求項９】
前記完了条件が、前記操作の適用により前記抽象書類に変化が生じないことを検出することを含む、請求項７に記載のプログラム。
【請求項１０】
前記操作の適用により前記抽象書類に変化が生じないことを検出することに応答して、前記検証するステップに移行するまでに、少なくとも複数回、前記操作を適用する処理を繰り返す、請求項９に記載のプログラム。
【請求項１１】
前記動作仕様が、前記メタデータの特定の状態で記述される終了条件を含み、前記検証するステップが、前記終了条件を満たす前記抽象書類から、前記グラフ構造を逆順にたどって終了マークをつけるステップと、該たどった結果、終了マークがついていない前記抽象書類が見つかることに応答して、検証失敗と判定するステップを含む、請求項８に記載のプログラム。
【請求項１２】
初期抽象書類から、前記終了マークがついていない前記抽象書類までのパスを、失敗例として提示するステップを含む、請求項１１に記載のプログラム。
【請求項１３】
コンピュータ可読な複数のメタデータが付随する複数の書類に対して処理を行うシステムであって、
記憶手段と、
前記記憶手段に、動作仕様が各書類に対する操作の集合として与えられており、各操作における、それを適用可能なメタデータの範囲の条件である入力条件と、それの適用後のメタデータの変化である出力条件を保持している、仕様データと、
前記複数の書類を、各メタデータのとりうる値で示した抽象書類の集合として表現して、コンピュータ可読な形式で前記記憶手段に保持する手段と、
前記抽象書類を、前記操作の入力条件に基づき複数の抽象書類に分割する手段と、
前記操作の集合の少なくとも一部の操作を適用し、その出力条件に基づき新たな抽象書類を追加する手段と、
前記抽象書類の集合に対して、前記メタデータが指定する範囲の重なりに従い前記抽象書類群を分割・統合する手段と、
所定の完了条件が満たされるまで前記操作の集合の少なくとも一部の操作を適用する処理を繰り返す手段と、
前記完了条件が満たされた段階で操作が終了まで至らない抽象書類があるかどうか、検証する手段を有する、
仕様検証システム。
【請求項１４】
前記追加あるいは分割された抽象書類は、抽象書類をノード、操作をリンクとするグラフ構造を形成するように前記コンピュータ上で保持される、請求項１３に記載のシステム。
【請求項１５】
前記完了条件が、前記操作の適用により前記抽象書類に変化が生じないことを検出することを含む、請求項１３に記載のシステム。
【請求項１６】
前記操作の適用により前記抽象書類に変化が生じないことを検出することに応答して、前記検証する手段を実行する前に、少なくとも複数回、前記操作を適用する処理を繰り返す、請求項１５に記載のシステム。
【請求項１７】
前記動作仕様が、前記メタデータの特定の状態で記述される終了条件を含み、前記検証する手段が、前記終了条件を満たす前記抽象書類から、前記グラフ構造を逆順にたどって終了マークをつける手段と、該たどった結果、終了マークがついていない前記抽象書類が見つかることに応答して、検証失敗と判定する手段を含む、請求項１４に記載のシステム。
【請求項１８】
初期抽象書類から、前記終了マークがついていない前記抽象書類までのパスを、失敗例として提示する手段を含む、請求項１７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータにより実装されるアプリケーションの仕様検証技法に関し、特に、書類中心アーキテクチャに適合する仕様検証技法に関する。
【背景技術】
【０００２】
近年、業務用コンピュータ・アプリケーションの分野で、書類中心アーキテクチャ(document centric architecture、文書中心アーキテクチャとも呼ぶ)が提案され、採用されつつある。例えば、http://www-06.ibm.com/ibm/jp/provision/no55/pdf/55_sec_public.pdfなどの記事を参照されたい。
【０００３】
文書中心アーキテクチャでは、業務のほとんどは、文書あるいは書類を契機として業務が開始され、その業務に必要な書類を収集し、別の書類を作成して終了する。その際、業務で扱う書類は、業務を遂行する上で必要となる情報を含む。そこで文書中心アーキテクチャに従えば、１つまたは複数の書類を一度に作成する業務単位を１つの仕事とし、書類と仕事を基にシステムが構築される。
【０００４】
さて、書類中心アーキテクチャにおいては、各書類に、状態を論理的にあらわすメタデータが関連付けられている。例えば、AとBというメタデータがあり、ある書類のメタデータの状態が、「Aは15で、Bは0」である、というように記述される。
【０００５】
そして、この書類中心アーキテクチャの仕様が、下記のような処理と初期書類の情報および終了条件を含むとする。
・初期書類：Aは0以上20以下の値で、Bは0。
・処理Ｘ：Aが30未満の書類に対して処理を行い、結果としてAを40、BをAとする。
・処理Ｙ：Aが10より大きく50未満の書類に対して処理を行い、結果としてAを100とする。
・処理Ｚ：Aが40以上でBが10未満の書類に対して処理を行い、結果としてBを100とする。
・終了条件：AとBがともに100になった書類を「処理終了」とする。
【０００６】
すると、理想的に作成された仕様では、任意のメタデータの条件をもつ初期書類に、処理を順次適用していけば、必ず終了条件に到達するはずである。しかし、実際の仕様では、往々にして、処理を適用しても、とうとう処理終了に至らず、放置されてしまう書類が発生してしまうことがありえる。
【０００７】
とはいえ、書類中心アーキテクチャで用意される書類の種類や処理の数に鑑みると、すべての書類がうまく処理されるかどうかを、メタデータが取りえるすべての値についてチェックすることは、現実的な処理時間内では、不可能であった。
【０００８】
これに関して、次のような従来技術が知られている。
【０００９】
特開平８−２２１３９９号公報は、予め用意したユーザが定義した文書論理構造を表す情報（仮タグ）と複数の文書論理構造定義（文書型定義）との対応関係を参照して、ユーザが仮タグを用いて作成した原テキストと各文書型定義との一致度(検索頻度)を求め、その一致度順に文書型定義を表示し、ユーザに対して文書型定義の選択要求を行う。更に、ユーザの選択した文書型定義に合わせて、原テキスト中の仮タグを、文書型定義に基づく文書論理構造を表す情報（ＳＧＭＬタグ情報）に変換し、変換結果を含むテキストを、文書型定義に基づいて構文解析を行なうパーサ（ＳＧＭＬパーサ）によって解析し、変換結果の整合性の検証を行なうことを開示する。
【００１０】
特開２００７−５８７５０号公報は、アプリケーションデータを記述したＸＭＬ文書に含まれる各データ要素の仕様を、各データ要素が他のデータ要素との関連で満たすべき条件または該条件の検証手順を人が記述や理解のし易い言語で記述したデータ仕様記述文書を作成し、検証データ生成装置は、データ仕様記述文書を元にして、対象のＸＭＬ文書に含まれる各データ要素がこのデータ仕様記述文書に記述された条件を満たすか否かをコンピュータで検証するための検証手順データ（ＸＳＬＴスクリプト）を生成することを開示する。
【００１１】
特開２００９−４２８６５号公報は、情報処理装置の受付手段が、内部統制に関する対象としているプロセスを特定するプロセス識別子を受け付け、検索手段が、前記受付手段によって受け付けられたプロセス識別子に関連する文書部品を検索し、検証手段が、前記検索手段によって検索された文書部品と他の文書部品又は文書との関係を検証し、結果出力手段が、前記検証手段による検証結果を出力するシステムを開示する。
【００１２】
しかし、上記どの従来技術も、書類中心アーキテクチャにおけるメタデータをもつ書類の検証における処理時間あるいは網羅性の問題に対する解決策を示唆するものではない。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開平８−２２１３９９号公報
【特許文献２】特開２００７−５８７５０号公報
【特許文献３】特開２００９−４２８６５号公報
【非特許文献】
【００１４】
【非特許文献１】http://www-06.ibm.com/ibm/jp/provision/no55/pdf/55_sec_public.pdf
【発明の概要】
【発明が解決しようとする課題】
【００１５】
従って、この発明の目的は、メタデータの組み合わせの複雑さを軽減して検証することを可能ならしめる技法を提供することにある。
【００１６】
この発明の他の目的は、書類中心アーキテクチャにおいて、処理が進まなくなる書類があるかどうかを効果的に検証することを可能ならしめる技法を提供することにある。
【課題を解決するための手段】
【００１７】
本発明は、上記課題を解決するためになされたものであり、本発明の基本的着想は、書類そのものを扱うのでなく、書類にメタデータを関連付けた「抽象書類」として管理することにある。
【００１８】
本発明のシステムは、論理的な「書類入れ」を用意し、書類入れに初期状態の複数の抽象書類を入れ、それに対して可能な処理（操作）を適用し、抽象書類の状態遷移図を作成する。そして、本発明のシステムは、生成された状態遷移図において、すべての抽象書類が終了状態に到達するかどうかを検証する。
【００１９】
このとき好適には、本発明のシステムは具体的には、抽象書類に対して各処理の適用を繰り返す。そして入力条件に応じて抽象書類を分割し、出力された抽象書類を既存の抽象書類と統合する。
【００２０】
より具体的に本発明の処理手順を記述すると、以下のとおりである。
(1) 各処理を、どういう条件の時発動するかと処理後の各メタデータがどうなるかに着目して抽象化する。このとき、具体的にどんな処理をするかは気にしなくてよい。
(2) 書類の初期状態としてありえるメタデータのバリエーションだけ「書類入れ」に入れる。このとき、書類は抽象化されたもので、メタデータのとりうる範囲だけが記述されている。
(3) この抽象書類群に対し、(1)で抽象化した各処理を順に適用し「遷移図」を作る。具体的には、以下のようにする。
(3a) まず、処理の入力条件に沿って抽象書類群を分割する。
(3b) 抽象書類群に処理を適用し、処理の出力条件に沿った抽象書類を追加する。
(3c) 抽象書類のうち、メタデータに重なりがあるものを分割・統合する。
(4) 各処理（終了条件も含む）について(3)を繰り返し、変化がなくなったら終了する。
(5) 出来上がった遷移図で、すべての抽象書類が終了状態に到達していれば検証成功である。このとき、
(5a) 終了条件に到達できない抽象書類があったら、その遷移を報告する。
(5b) また、一回も使われなかった処理があったらそれも報告する。
【発明の効果】
【００２１】
この発明によれば、書類中心アーキテクチャにおいて、書類をメタデータの値の範囲で抽象書類に分割した後、それに対して可能な処理を適用することにより、合理的な手続きで書類中心システムの設計仕様が正しいかどうかが検証可能となる。また、どのような処理手順でそれが発生するかを提示でき、さらに、使用されない処理を発見することも可能となる。
【図面の簡単な説明】
【００２２】
【図１】本発明を実施するためのハードウェア構成のブロック図である。
【図２】本発明を実施するための機能構成のブロック図である。
【図３】設計仕様の構成要素を示す図である。
【図４】全体の処理のフローチャートを示す図である。
【図５】仕様からメタデータのクラスを抽出する処理のフローチャートを示す図である。
【図６】処理の入力条件に沿って抽象書類群を分割する処理のフローチャートを示す図である。
【図７】抽象書類群に処理を適用し、処理の出力条件に沿った抽象書類を追加する処理のフローチャートを示す図である。
【図８】抽象書類のうち、メタデータに重なりがあるものを分割・統合する処理のフローチャートを示す図である。
【図９】抽象書類の分割処理のフローチャートを示す図である。
【図１０】抽象書類の統合処理のフローチャートを示す図である。
【図１１】検証処理のフローチャートを示す図である。
【図１２】処理の例を示す図である。
【図１３】処理の例を示す図である。
【図１４】処理の例を示す図である。
【図１５】処理の例を示す図である。
【図１６】処理の例を示す図である。
【図１７】処理の例を示す図である。
【図１８】処理の例を示す図である。
【図１９】処理の例を示す図である。
【図２０】処理の例を示す図である。
【発明を実施するための形態】
【００２３】
以下、図面に基づき、この発明の実施例を説明する。特に断わらない限り、同一の参照番号は、図面を通して、同一の対象を指すものとする。尚、以下で説明するのは、本発明の一実施形態であり、この発明を、この実施例で説明する内容に限定する意図はないことを理解されたい。
【００２４】
図１を参照すると、本発明の一実施例に係るシステム構成及び処理を実現するためのコンピュータ・ハードウェアのブロック図が示されている。図１において、システム・パス１０２には、ＣＰＵ１０４と、主記憶（ＲＡＭ）１０６と、ハードディスク・ドライブ（ＨＤＤ）１０８と、キーボード１１０と、マウス１１２と、ディスプレイ１１４が接続されている。ＣＰＵ１０４は、好適には、３２ビットまたは６４ビットのアーキテクチャに基づくものであり、例えば、インテル社のＰｅｎｔｉｕｍ（商標）  ４、Ｃｏｒｅ（商標）２  Ｄｕｏ、Ｘｅｏｎ（商標）、ＡＭＤ社のＡｔｈｌｏｎ（商標）などを使用することができる。主記憶１０６は、好適には、４ＧＢ以上の容量をもつものである。ハードディスク・ドライブ１０８は、好適には例えば、５００ＧＢ以上の容量をもつものである。
【００２５】
ハードディスク・ドライブ１０８には、個々に図示しないが、オペレーティング・システムが、予め格納されている。オペレーティング・システムは、Ｌｉｎｕｘ（商標）、マイクロソフト社のＷｉｎｄｏｗｓ（商標）７、Ｗｉｎｄｏｗｓ  ＸＰ（商標）、アップルコンピュータのＭａｃ  ＯＳ（商標）などの、ＣＰＵ１０４に適合する任意のものでよい。
【００２６】
ハードディスク・ドライブ１０８にはさらに、図２に関連して後述するメイン・ルーチン２０２、設計仕様ファイル２０４、メタデータ・クラス抽出ルーチン２０８、抽象書類分割ルーチン２１０、抽象書類追加ルーチン２１０、分割・統合ルーチン２１４、分割ルーチン２１６、統合ルーチン２１８、検証ルーチン２２０が格納されている。これらの処理ルーチンは、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ(R)などの既存のプログラミング言語処理系で作成することができ、オペレーティング・システムの働きで、これらのモジュールは適宜主記憶１０６にロードされて実行される。これらのモジュールの動作の詳細は、図２の機能ブロック図を参照して、より詳細に説明する。
【００２７】
キーボード１１０及びマウス１１２は、所定のＧＵＩ画面（図示しない）を操作して、上述の処理ルーチンなどを起動したり、文字を打ち込んだりするために使用される。
【００２８】
ディスプレイ１１４は、好適には、液晶ディスプレイであり、例えば、ＸＧＡ（１０２４×７６８の解像度）、またはＵＸＧＡ（１６００×１２００の解像度）などの任意の解像度のものを使用することができる。ディスプレイ１１４は、仕様の検証結果を表示するために使用される。
【００２９】
図１のシステムは更に、バス１０２に接続された通信インターフェース１１６を介して、ＬＡＮ、ＷＡＮなどの外部ネットワークに接続されている。通信インターフェース１１６は、イーサネット（商標）などの仕組みにより、外部ネットワーク上にあるサーバやクライアント・コンピュータなどのシステムとデータのやりとりを行う。
【００３０】
書類中心アーキテクチャのシステムは、集中管理されるデータ記憶システムへのアクセスを行うが、互いには直接やりとりしない複数のコンピュータ・システムからなるように規約の定められたソフトウェア・アーキテクチャ基づくものであるが、この発明のシステムは、書類中心アーキテクチャの仕様を検証するためのシステムであるため、書類中心アーキテクチャのシステムである必要はない。
【００３１】
すなわち、この発明のシステムは、パーソナル・コンピュータ、ワークステーション、メインフレームなど任意の形態のコンピュータ装置上で実装可能である。また、図１では、ネットワーク接続された形態として示されているが、これには限定されず、スタンドアロンの形態でも実施可能である。また逆に、ネットワーク接続された複数のコンピュータ装置により並列・分散処理する形でも実施可能である。
【００３２】
図２は、本発明を実施するための論理構成を示す機能ブロック図である。図２において、コンピュータ可読な形式でハードディスク・ドライブ１０８に保存されている設計仕様のファイル２０４は、より具体的には、図３に示すように、初期書類の条件を示す情報３０２と、操作３０６ａ、３０６ｂ、・・・３０６ｋ、および終了条件３０４を含む。
【００３３】
図３には具体的に示さないが、一つの実施例では、書類の種類毎に設計書があり、その各々に対応してＸＭＬスキーマが与えられる。メタデータもＸＭＬスキーマによって記述される。
【００３４】
抽象書類２０５ａ、２０５ｂ、・・・２０５ｍは、書類をメタデータの値の範囲で分割した論理的なオブジェクトであり、これらの抽象書類は、好適には、割り当てた主記憶１０６の領域である書類入れ２０６に配置される。なお、書類入れ２０６は、主記憶１０６の空き容量が十分でないなら、ハードディスク・ドライブ１０８に確保するようにしてもよい。
【００３５】
図２に戻って、メイン・ルーチン２０２は、好適にはディスプレイ１１４上にＧＵＩ（図示しない）を表示し、キーボード１１０やマウス１１２など操作によりユーザの処理を受付け、全体の処理を統合するルーチンであり、その処理の詳細は、図４のフローチャートを参照して後で説明する。
【００３６】
メタデータ・クラス抽出ルーチン２０８は、仕様の操作からメタデータのクラスを抽出する処理を実行するルーチンであり、その処理の詳細は、図５のフローチャートを参照して後で説明する。
【００３７】
抽象書類分割ルーチン２１０は、処理の入力条件に沿って抽象書類群を分割する処理を実行するルーチンであり、その処理の詳細は、図６のフローチャートを参照して後で説明する。
【００３８】
抽象書類追加ルーチン２１２は、抽象書類群に処理を適用し、処理の出力条件に沿った抽象書類群を追加する処理を実行するルーチンであり、その処理の詳細は、図７のフローチャートを参照して後で説明する。
【００３９】
分割・統合ルーチン２１４は、抽象書類のうち、メタデータに重なりがあるものを分割・統合する処理を実行するルーチンであり、その処理の詳細は、図８のフローチャートを参照して後で説明する。
【００４０】
分割ルーチン２１６は、抽象書類分割ルーチン２１０及び分割・統合ルーチン２１４に呼び出されて、抽象書類を分割する処理を実行するルーチンであり、その処理の詳細は、図９のフローチャートを参照して後で説明する。
【００４１】
統合ルーチン２１８は、分割・統合ルーチン２１４に呼び出されて、抽象書類を統合する処理を実行するルーチンであり、その処理の詳細は、図１０のフローチャートを参照して後で説明する。
【００４２】
検証ルーチン２２０は、検証処理を実行するルーチンであり、その処理の詳細は、図１１のフローチャートを参照して後で説明する。
【００４３】
次に図４を参照して、メイン・ルーチン２０２が実行する全体のフローについて説明する。ステップ４０２で、メイン・ルーチン２０２は、メタデータ・クラス抽出ルーチン２０８を呼び出して、仕様からメタデータのクラスを抽出する。
【００４４】
ステップ４０４で、メイン・ルーチン２０２は、初期状態として指定された書類を初期抽象書類として、「書類入れ」２０６に追加する。ここで書類入れ２０６とは、コンピュータ・システムとしては、好適には主記憶に割り当てられたメモリ領域であり、そこにオブジェクトとしての書類が配置される。
【００４５】
ステップ４０６で、メイン・ルーチン２０２は、設計仕様２０４から「処理（操作）」３０６ａ、３０６ｂ・・・３０６ｋ及び終了条件３０４のうちの１つを取り出す。
【００４６】
ステップ４０８で、メイン・ルーチン２０２は、抽象書類分割ルーチン２１０を呼び出して、ステップ４０６で取り出した処理の入力条件に沿って抽象書類群を分割する。このとき、分割された抽象書類は、元の抽象書類と置き換わり、元の抽象書類が持っていたリンクを保持する。このことは、図１２乃至図２０に関連して後述する例を参照することで、一層よく理解される。
【００４７】
ステップ４１０で、メイン・ルーチン２０２は、抽象書類群に処理（操作）を適用し、抽象書類追加ルーチン２１２を呼び出して、処理の出力結果に沿った抽象書類を追加する。この時、操作適用前の抽象書類と操作適用により追加された抽象書類はリンクで結ばれる。言い換えると、抽象書類群は、抽象書類をノード、操作をリンクとするグラフ構造を形成する。
【００４８】
ステップ４１２で、メイン・ルーチン２０２は、分割・統合ルーチン２１４を呼び出して、書類入れ中のメタデータに重なりがある抽象書類を分割・統合する。分割・統合ルーチン２１４は適宜、分割ルーチン２１６と、統合ルーチン２１８を呼び出す。
【００４９】
ステップ４１４で、メイン・ルーチン２０２は、すべての処理および終了条件について行ったかどうか判断し、そうでなければステップ４０６に戻る。もしすべての処理について行ったと判断すると、メイン・ルーチン２０２はステップ４１６に進み、前回このステップを行ったときから書類入れの中の抽象書類に変化があったかどうかを判断し、変化がなかった場合はステップ４２０の検証処理に進む。変化があった場合はステップ４１８に進み、一群の処理の適用を所定回数繰り返したかどうか判断する。所定回数繰り返していなければステップ４０６に戻り、所定回数繰り返した場合はステップ４２０の検証処理に進む。
【００５０】
ステップ４２０でメイン・ルーチン２０２は、検証ルーチン２２０を呼び出して、検証処理を行う。
【００５１】
次に図５のフローチャートを参照して、仕様からメタデータのクラスを抽出するための、メタデータ・クラス抽出ルーチン２０８の処理について説明する。
【００５２】
ステップ５０２では、メタデータ・クラス抽出ルーチン２０８は、仕様から「処理(操作)」を１つ取り出す。なお、ここでは終了条件も処理の一つとして考える。
【００５３】
ステップ５０４では、メタデータ・クラス抽出ルーチン２０８は、その処理の入力条件として使われている属性をメタデータとして登録する。
【００５４】
ステップ５０６では、メタデータ・クラス抽出ルーチン２０８は、その処理の出力条件として使われている属性をメタデータとして登録する。
【００５５】
ステップ５０８では、メタデータ・クラス抽出ルーチン２０８は、全ての処理について行ったかどうか判断し、もしそうなら処理を終える。そうでないなら、ステップ５０２に戻る。
【００５６】
次に図６のフローチャートを参照して、指定された処理の入力条件に従って抽象書類群を分割する、抽象書類分割ルーチン２１０の処理について説明する。
【００５７】
抽象書類分割ルーチン２１０は、ステップ６０２で、書類入れから抽象書類を１つ取り出す。
【００５８】
ステップ６０４で、抽象書類分割ルーチン２１０は、抽象書類に当該処理を適用済みかどうか判断し、もしそうならステップ６１０に移る。
【００５９】
抽象書類に当該処理を適用済みでないと判断すると抽象書類分割ルーチン２１０は、ステップ６０６で、抽象書類の一部が当該処理の入力条件を満たしているかどうか判断し、そうでなければステップ６１０に移る。
【００６０】
ステップ６０６で、抽象書類の一部が当該処理の入力条件を満たしていると判断すると、抽象書類分割ルーチン２１０は、ステップ６０８で入力条件を満たす部分を抽象書類から分割して、ステップ６１０に移る。なお、ステップ６０８の分割処理は、分割ルーチン２１６によって行われる。
【００６１】
ステップ６１０で、抽象書類分割ルーチン２１０は、全ての抽象書類について行ったかどうか判断し、そうでなければステップ６０２に戻り、もしそうなら処理を終わる。
【００６２】
次に図７のフローチャートを参照して、抽象書類群に指定された処理を適用し、処理の出力条件に沿った抽象書類を追加する、抽象書類追加ルーチン２１２の処理について説明する。
【００６３】
抽象書類追加ルーチン２１２は、ステップ７０２で、書類入れから抽象書類を１つ取り出す。
【００６４】
ステップ７０４で、抽象書類追加ルーチン２１２は、抽象書類に当該処理を適用済みかどうか判断し、もしそうならステップ７１０に移る。
【００６５】
抽象書類に当該処理を適用済みでないと判断すると抽象書類追加ルーチン２１２は、ステップ７０６で、抽象書類が当該処理の入力条件を満たしているかどうか判断し、そうでなければステップ７１０に移る。なお、抽象書類分割ルーチン２１０により、抽象書類の「一部」のみが入力条件を満たしているという状態は起こらないことに留意されたい。抽象書類は「全体が当該処理の入力条件を満たす」か「全体が当該処理の入力条件を満たさない」かのいずれかである。
【００６６】
ステップ７０６で、抽象書類の一部が当該処理の入力条件を満たしていると判断すると、抽象書類追加ルーチン２１２は、ステップ７０８で適用後の出力条件に合った抽象書類を書類入れに追加し、元の抽象書類から矢印でつなぐ。このとき、適用した処理の名前は矢印の属性として保持しておく。そして、ステップ７１０に移る。なお、抽象書類から、あるいは抽象書類への矢印については、図１２〜図２０の具体例を参照して後で説明する。
【００６７】
ステップ７１０で、抽象書類追加ルーチン２１２は、全ての抽象書類について行ったかどうか判断し、そうでなければステップ７０２に戻り、もしそうなら処理を終わる。
【００６８】
次に図８のフローチャートを参照して、抽象書類のうち、メタデータに重なりがあるものを分割・統合する処理を行う、分割・統合ルーチン２１４の処理について説明する。
【００６９】
分割・統合ルーチン２１４は、ステップ８０２で、書類入れから抽象書類を１つ取り出す。
【００７０】
ステップ８０４で、分割・統合ルーチン２１４は、取り出した抽象書類に他の抽象書類とメタデータの条件の重なりがあるかどうか判断し、そうでないならステップ８１０に移る。
【００７１】
取り出した抽象書類が他の抽象書類とメタデータの条件の重なりがあると判断すると、分割・統合ルーチン２１４は、ステップ８０６で、分割ルーチン２１６を呼び出して、それぞれの抽象書類から、重なっている部分を「分割」して取り出す。次に分割・統合ルーチン２１４は、ステップ８０８で、統合ルーチン２１８を呼び出して、重なっている部分を１つの抽象書類に「統合」し、ステップ８１０に進む。
【００７２】
ステップ８１０で、分割・統合ルーチン２１４は、全ての抽象書類について行ったかどうか判断し、そうでなければステップ８０２に戻り、もしそうなら処理を終わる。
【００７３】
次に図９のフローチャートを参照して、分割ルーチン２１６の処理について説明する。ステップ９０２で、分割ルーチン２１６は、抽象書類から指定された部分、すなわち、ステップ８０４で重なりと認識された部分やステップ６０６で入力条件を満たしていると判断した部分を切り離し、２つの抽象書類に分割する。
【００７４】
ステップ９０４では、分割ルーチン２１６は、分割前の抽象書類から出て行く矢印について、「処理（操作）」を再適用し、下流の抽象書類を分割する。
【００７５】
ステップ９０６では、分割ルーチン２１６は、分割前の抽象書類に入ってくる矢印について、各書類の逆処理が行える場合はそれを行い、上流の抽象書類群を分割する。
【００７６】
ステップ９０８では、分割ルーチン２１６は、新たに分割された抽象書類があるかどうか判断し、もしあればステップ９０４に戻り、なければ処理を終わる。
【００７７】
次に図１０のフローチャートを参照して、統合ルーチン２１８の処理について説明する。ステップ１００２では、統合ルーチン２１８は、メタデータの範囲指定が同じである２つの抽象書類を１つにまとめる。
【００７８】
ステップ１００４では、統合ルーチン２１８は、統合後の抽象書類に入ってくる矢印、出て行く矢印について、統合前の両方の抽象書類のものを保持するように接続を行う。
【００７９】
次に図１１のフローチャートを参照して、検証ルーチン２２０の処理を説明する。ステップ１１０２では、検証ルーチン２２０は、終了条件を満たす抽象書類群から、矢印を逆向きにたどり、たどりつけるすべての抽象書類に「終了可能」のマークを付ける。矢印で結ばれた抽象書類は、グラフ構造を形成するので、この場合、深さ優先探索などの既知の一般的なグラフ訪問アルゴリズムを使用することができる。
【００８０】
ステップ１１０２では、検証ルーチン２２０は、書類入れ中のすべての抽象書類に「終了可能」のマークがついたかどうか判断し、もしそうなら、検証成功１１０８として処理を終わる。
【００８１】
もし書類入れ中の抽象書類で「終了可能」のマークがついていないものが存在すると判断すると、検証ルーチン２２０は、初期抽象書類から、マークがついていない抽象書類に至るパスを、失敗する例として、好適にはディスプレイ１１４上に提示し、検証失敗１１１０として処理を終わる。
【００８２】
次に図１２〜図２０を参照して、書類中心システムにおける、本発明の処理の具体例を説明する。ここで先ず、以下の前提を想定する。実際のメタデータは一般的に、これよりも複雑であるが、便宜上、簡単な例で説明することを理解されたい。
書類にはAとBというメタデータがついている。
初期書類：Aは0以上20以下の値で、Bは0
処理Ｘ：Aが30未満の書類に対して処理を行い、結果としてAを40、BをAとする。
処理Ｙ：Aが10より大きく50未満の書類に対して処理を行い、結果としてAを100とする。
処理Ｚ：Aが40以上でBが10未満の書類に対して処理を行い、結果としてBを100とする。
終了条件：AとBがともに100になった書類を「処理終了」とする。
【００８３】
以上の前提において、この書類中心システムの正しさを検証するのが、この実施例のシステムの機能である。
【００８４】
この実施例のシステムはまず、図１２に示すように、初期状態の抽象書類を書類入れ２０６中に用意する。
【００８５】
次に、この実施例のシステムは、図１３に示すように、初期状態の抽象書類に処理Ｘを取り出して適用する。これにより、「0≦A≦20  B=0」というメタデータをもつ抽象書類から、「A=40, 0≦B≦20」というメタデータをもつ抽象書類が生成される。これは図４のフローチャートでは、ステップ４０６からステップ４１２までの処理に対応する。ただ、この段階では、ステップ４０８とステップ４１２では、分割や統合の要件は満たさないので、具体的な処理は行われない。
【００８６】
次に、この実施例のシステムは、図１４に示すように、処理Ｙを取り出し、ステップ４０８において、処理Ｙが適用可能な部分を分割する。そして図１５に示すように、ステップ４１０において処理Ｙの結果の抽象書類を書類入れに追加する。
【００８７】
次にこの実施例のシステムは、図１５の抽象書類の状態において、図示するように、ステップ４１０で２つの抽象書類に重なりを見出して、重なっている部分を分割・統合する。その結果、書類入れ中の抽象書類は、図１６の状態になる。
【００８８】
次に、この実施例のシステムは、処理Ｚを取り出し、ステップ４０８、４１０及び４１２を実行する。その結果の様子は図１７に示すとおりである。
【００８９】
次に、この実施例のシステムは、終了条件（１回目）を適用して、AとBがともに100になった書類を「処理終了」とする。その結果の様子は図１８に示すとおりである。以上で、すべての処理と終了条件について１回目の適用が完了したので、ステップ４１６に進むが、前回（初期状態）から書類入れの抽象書類の状態に変化があったため、２回目の適用ステップを行うためステップ４０６に戻る。
【００９０】
２回目の適用ステップでは、１回目と同様にまず処理Ｘを取り出し（２回目）、ステップ４０８、４１０及び４１２を実行するが、変化がない。そこで次に、この実施例のシステムは、処理Ｙを取り出し（２回目）、ステップ４０８、４１０及び４１２を実行する。その結果の様子は図１９に示すとおりである。
【００９１】
この後この実施例のシステムは、処理Ｚを適用（２回目）、終了条件を適用（２回目）、処理Ｘを適用（３回目）、処理Ｙを適用（３回目）と適用するが変化がないので、図４のステップ４１６が否定的になって検証処理ステップ４２０へと進む、できあがった状態遷移図（図１９）に対するステップ４２０での検証処理の結果、図２０(a)及び(b)に示す遷移パターンで、処理が行われない書類が生成されることがわかる。よって、この実施例のシステムは、「仕様は正しくない」という判定を下す。
【００９２】
以上のように、特定の実施例に従い、本発明を説明してきたが、本発明は、特定のオペレーティング・システムやプラットフォームに限定されず、任意のコンピュータ・システム上で実現可能であることを、この分野の当業者なら理解するであろう。
【符号の説明】
【００９３】
１０４・・・ＣＰＵ
１０６・・・主記憶
１０８・・・ハードディスク・ドライブ
２０２・・・メイン・ルーチン
２０４・・・設計仕様
２０５・・・抽象書類
２０６・・・書類入れ
２０８・・・メタデータ・クラス抽出ルーチン
２１０・・・抽象書類分割ルーチン
２１２・・・抽象書類追加ルーチン
２１４・・・分割・統合ルーチン
２１６・・・分割ルーチン
２１８・・・統合ルーチン
２２０・・・検証ルーチン
３０２・・・初期書類の条件を示す情報
３０４・・・終了条件
３０６・・・操作
【図１】
0005818630.tif 000002
【図２】
0005818630.tif 000003
【図３】
0005818630.tif 000004
【図４】
0005818630.tif 000005
【図５】
0005818630.tif 000006
【図６】
0005818630.tif 000007
【図７】
0005818630.tif 000008
【図８】
0005818630.tif 000009
【図９】
0005818630.tif 000010
【図１０】
0005818630.tif 000011
【図１１】
0005818630.tif 000012
【図１２】
0005818630.tif 000013
【図１３】
0005818630.tif 000014
【図１４】
0005818630.tif 000015
【図１５】
0005818630.tif 000016
【図１６】
0005818630.tif 000017
【図１７】
0005818630.tif 000018
【図１８】
0005818630.tif 000019
【図１９】
0005818630.tif 000020
【図２０】
0005818630.tif 000021