(57)【特許請求の範囲】
【請求項１】
記憶手段をもち、検査すべき仕様書が、該記憶手段にコンピュータ可読な形式で保存され、さらに検査を行うためのルールをグラフ構造で用意され該記憶手段に保存されているコンピュータ・システムにおいて、該コンピュータ・システムにおける処理により、仕様書を検査する方法であって、
前記仕様書の要素が前記ルールが適用対象であるかどうかのルール適用表を作成するステップと、
前記ルールのグラフ構造を探索することにより、前記グラフ構造の各ノードのルールで、当該ルールを前記仕様書が満たすかどうかの平均情報量を導出するステップと、
前記ルールのグラフ構造を深さ優先で探索しつつ、各ノードのルールで、前記ルール適用表から、前記平均情報量を用いて、優先順位指数を導出するステップと、
前記優先順位指数の値に従って修正候補のルールを表示するステップを有する、
仕様書検査方法。
【請求項２】
前記優先順位指数を導出するステップが、前記ルール適用表において当該ルールの欄からマッチしない仕様書の要素の数をカウントするステップと、当該ルールの子孫ルールを探索しつつ、当該子孫ルールについて、当該ルールと当該子孫ルールの相互情報量を導出するステップと、前記マッチしない仕様書の要素の数と前記相互情報量とを用いて前記優先順位指数を導出するステップを有する、請求項１に記載の方法。
【請求項３】
前記各ルールの制約を包含する制約を持つ代替可能な候補ルールを作成するステップと、
前記候補ルールを前記仕様書に適用して、
前記候補ルール及びその子ルールに対してルール適用表を作成するステップと、
前記候補ルールのうち，新たに該当するようになった仕様書の要素が存在するかどうか判断し、
もし存在するなら、前記候補ルールのオブジェクトツリーの数に従って、前記候補ルールを新しいルール適応表に追加するステップをさらに有する、請求項１に記載の方法。
【請求項４】
記憶手段をもち、検査すべき仕様書が、該記憶手段にコンピュータ可読な形式で保存され、さらに検査を行うためのルールをグラフ構造で用意され該記憶手段に保存されているコンピュータ・システムにおいて、該コンピュータ・システムにおける処理により、仕様書を検査するプログラムであって、
前記コンピュータ・システムに、
前記仕様書の要素が前記ルールが適用対象であるかどうかのルール適用表を作成するステップと、
前記ルールのグラフ構造を探索することにより、前記グラフ構造の各ノードのルールで、当該ルールを前記仕様書が満たすかどうかの平均情報量を導出するステップと、
前記ルールのグラフ構造を深さ優先で探索しつつ、各ノードのルールで、前記ルール適用表から、前記平均情報量を用いて、優先順位指数を導出するステップと、
前記優先順位指数の値に従って修正候補のルールを表示するステップを実行させる、
仕様書検査プログラム。
【請求項５】
前記優先順位指数を導出するステップが、前記ルール適用表において当該ルールの欄からマッチしない仕様書の要素の数をカウントするステップと、当該ルールの子孫ルールを探索しつつ、当該子孫ルールについて、当該ルールと当該子孫ルールの相互情報量を導出するステップと、前記マッチしない仕様書の要素の数と前記相互情報量とを用いて前記優先順位指数を導出するステップを有する、請求項４に記載のプログラム。
【請求項６】
前記コンピュータ・システムに、
前記各ルールの制約を包含する制約を持つ代替可能な候補ルールを作成するステップと、
前記候補ルールを前記仕様書に適用して、
前記候補ルール及びその子ルールに対してルール適用表を作成するステップと、
前記候補ルールのうち，新たに該当するようになった仕様書の要素が存在するかどうか判断し、
もし存在するなら、前記候補ルールのオブジェクトツリーの数に従って、前記候補ルールを新しいルール適応表に追加するステップをさらに実行させる、請求項４に記載のプログラム。
【請求項７】
コンピュータ・システムにおける処理により、仕様書を検査するシステムであって、
記憶手段と、
前記記憶手段にコンピュータ可読な形式で保存された、検査すべき仕様書と、
前記記憶手段にコンピュータ可読な形式で保存された、検査を行うためのルールをグラフ構造のデータと、
前記仕様書の要素が前記ルールが適用対象であるかどうかのルール適用表を作成する手段と、
前記ルールのグラフ構造を探索することにより、前記グラフ構造の各ノードのルールで、当該ルールを前記仕様書が満たすかどうかの平均情報量を導出する手段と、
前記ルールのグラフ構造を深さ優先で探索しつつ、各ノードのルールで、前記ルール適用表から、前記平均情報量を用いて、優先順位指数を導出する手段と、
前記優先順位指数の値に従って修正候補のルールを表示する手段を有する、
仕様書検査システム。
【請求項８】
前記優先順位指数を導出する手段が、前記ルール適用表において当該ルールの欄からマッチしない仕様書の要素の数をカウントする手段と、当該ルールの子孫ルールを探索しつつ、当該子孫ルールについて、当該ルールと当該子孫ルールの相互情報量を導出する手段と、前記マッチしない仕様書の要素の数と前記相互情報量とを用いて前記優先順位指数を導出する手段を有する、請求項７に記載のシステム。
【請求項９】
前記各ルールの制約を包含する制約を持つ代替可能な候補ルールを作成する手段と、
前記候補ルールを前記仕様書に適用して、
前記候補ルール及びその子ルールに対してルール適用表を作成する手段と、
前記候補ルールのうち，新たに該当するようになった仕様書の要素が存在するかどうか判断し、
もし存在するなら、前記候補ルールのオブジェクトツリーの数に従って、前記候補ルールを新しいルール適応表に追加する手段をさらに有する、
請求項７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータの処理により、コンピュータ可読な形式で保存された仕様書を検査する方法、プログラム及びシステムに関するものである。
【背景技術】
【０００２】
近年、ＳＩプロジェクトなどで、コンピュータ・システム上で動作するソフウトェア・ツールを駆使して仕様書の検査を自動化する手法が提案されている。しかしながら、所定のルールに則ったフォーマルな記述様式で記述されていない仕様書に対しては、検査箇所の特定方法や、検査内容の記述方法が定まらず、仕様書検査の自動化は困難である。
【０００３】
一方で、完全にフォーマルな記述形式の制約は制限が厳しすぎるため、担当者の学習コストがかかる等、仕様書の記述に困難をきたし現場にそぐわない。
【０００４】
仕様書の自動検査が重要な役割を果たす大規模ＳＩプロジェクトで、検査の自動化が進んでいないことは、開発プロセスの遅延や、ソフトウェアの深刻なバグを誘発するなどの問題を引き起こす要因になっている。
【０００５】
大規模ＳＩプロジェクトの開発現場では、仕様書は、Excel(R)ファイルなど、概ね形式が定められたセミフォーマルなテンプレートに従って記述される場合が多い。しかしながら、上述した理由により、仕様書検査の自動化が困難であるため、仕様書検査は依然として人が検査項目を逐一目視して行っており、作業効率が悪い。
【０００６】
そこで、テンプレートを基に記述された大量の仕様書を対象に、自動検査を効率的に行うことを可能ならしめる技術的ブレークスルーが要望されている。
【０００７】
特開２００９−６４３３９号公報は、仕様書の内容を検査するために、単語抽出部によって作成された設計仕様書から単語を抽出し、抽出された単語の出現頻度を測定し、網羅性検査部に記憶されている予め設計仕様書の特徴を表す特徴語とこの特徴語の出現する度合いの閾値と比較することにより、設計仕様書が記載されるべき項目をどの程度網羅しているかを示す品質を機械的に検査することを開示する。
【０００８】
特開２０１０−１１８０５０公報は、仕様書の検査ではなく、特許文献自動検索方法に関するものであるが、データベースに格納されている特許文献データに対し形態素解析を行う形態素解析手段と、形態素解析されたデータに対し語の出現頻度とエントロピーから重みを求めて特徴語を選択することを特徴としている統計情報計算手段と、特徴語を機械学習し特許文献を判別する識別器と、識別器の判別結果から検索出力に係る技術分野に属する全ての特許文献を抽出する抽出手段とを備えたシステムを開示する。
【０００９】
XSLbyDemo (K. Ono, T. Koyanagi, M. Abe, and M. Hori, “XSLT Stylesheet Generation by Example with WYSIWYG Editing,”in Proceedings of the 2002 Symposium on Applications and the Internet (SAINT2002), pp. 150-159, January 2002)は、複数の構造化文書(HTML) に対しユーザがGUI上で編集作業を行う際、ツールの内部で発生するオペレーションコマンドを記録し、オペレーションコマンドに般化処理を加えた後XSLTファイルを生成する技法を開示する。この技法においては、構造化文書が仕様書群、XSLTが抽出ルールに相当する。
【００１０】
これらの開示技術は、コンピュータにより仕様書を検査するための背景技術ではあるものの、大規模ＳＩプロジェクトで採用される、階層構造化された複雑な仕様書を検査するためには、適用できない。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００９−６４３３９号公報
【特許文献２】特開２０１０−１１８０５０公報
【非特許文献】
【００１２】
【非特許文献１】XSLbyDemo (K. Ono, T. Koyanagi, M. Abe, and M. Hori, “XSLT Stylesheet Generation by Example with WYSIWYG Editing,”in Proceedings of the 2002 Symposium on Applications and the Internet (SAINT2002), pp. 150-159, January 2002)
【発明の概要】
【発明が解決しようとする課題】
【００１３】
大量の仕様書を自動的に検査するには、仕様書の情報を抽出するためのルール記述が前提となる。仕様書群に応じて抽出ルールの質を高めることができれば、取得できる仕様情報が増え、自動検査の質が高まり効率よく行われることが期待される。
【００１４】
従って、この発明の目的は、仕様書群に応じて、抽出ルールの修正・編集を効率よく行うための技法を提供することにある。
【課題を解決するための手段】
【００１５】
本発明に係るシステムは、以下の処理を行うルーチンを有する。
(1) 仕様書情報抽出ルールと仕様書群を元に、抽出ルールの修正優先順位を算出する処理。
(2) 抽出ルールの修正優先順位、仕様書群、仕様書情報抽出ルールから、抽出ルール修正候補を算出する処理。
(3) 抽出ルール修正候補の提示、及びユーザーによる確認・入力作業に必要なユーザーインターフェースを提供する処理。
【００１６】
本発明に係るシステムは、検査すべき仕様書を、コンピュータ可読な形式で記憶装置に保存するとともに、検査を行うためのルールをグラフ構造で保存する。
【００１７】
本発明に係るシステムは次に、各仕様書が、各ルールの適用対象となる要素を持つかどうかのルール適用表を作成し、ルールのグラフ構造を探索することにより、前記グラフ構造の各ノードのルールで、当該ルールを前記仕様書が満たすかどうかの平均情報量を導出する。
【００１８】
本発明に係るシステムは次に、ルールのグラフ構造を深さ優先で探索しつつ、各ノードのルールに対して、ルール適用表から、優先順位指数を導出する。そして、優先順位指数の値に従って修正候補のルールを表示する。
【００１９】
本発明の１つの側面によれば、優先順位指数を導出する処理は、ルール適用表においてルールの欄からマッチしない仕様書の要素の数をカウントし、当該ルールの子孫ルールを探索しつつ、当該子孫ルールについて、当該ルールと当該子孫ルールの結合エントロピーを導出し、マッチしない仕様書の要素の数と前記結合エントロピーとを用いて前記優先順位指数を導出する処理を含む。
【００２０】
本発明のさらに別の側面によれば、本発明に係るシステムは、各ルールの制約を包括する制約を作成して修正された候補ルールを作成する処理と、修正された候補ルールを仕様書に適用して、修正された候補ルール及びその子ルールに対してルール適用表を作成する処理と、新たに該当するようになった前記修正された候補ルールが存在するかどうか判断し、もし存在するなら、前記修正された候補ルールのオブジェクトツリーの数に従って、修正された候補ルールを新しいルール適応表に追加する処理を行う。
【発明の効果】
【００２１】
この発明によれば、修正された優先順位に従って抽出ルールを修正することで、抽出ルールの質を効率よく高めることができる。従って、大規模ＳＩプロジェクトにおける仕様書検査の質の向上と、仕様書検査の大幅な時間短縮がはかられる。
【図面の簡単な説明】
【００２２】
【図１】本発明を実施するための一例のハードウェア構成のブロック図を示す図である。
【図２】本発明を実施するための機能構成のブロック図を示す図である。
【図３】画面レイアウト仕様のテンプレートを示す図である。
【図４】抽出ルールの例を示す図である。
【図５】抽出ルールと、それに対応するルール適用表を示す図である。
【図６】本発明の処理の全体の概要フローチャートを示す図である。
【図７】本発明の処理の流れを説明するための図である。
【図８】本発明の処理の流れの一部を詳細に示す図である。
【図９】優先順位導出処理のフローチャートを示す図である。
【図１０】統計データに対して前処理を行う処理のフローチャートを示す図である。
【図１１】ルール適用表から優先順位を導出する処理のフローチャートを示す図である。
【図１２】ルール修正処理のフローチャートを示す図である。
【図１３】オブジェクト・ツリーを含むルール適用表の例を示す図である。
【図１４】従来技術のユーザ・インターフェースの画面を示す図である。
【図１５】本発明のユーザ・インターフェースの画面を示す図である。
【発明を実施するための形態】
【００２３】
以下、図面に基づき、この発明の実施例を説明する。特に断わらない限り、同一の参照番号は、図面を通して、同一の対象を指すものとする。尚、以下で説明するのは、本発明の一実施形態であり、この発明を、この実施例で説明する内容に限定する意図はないことを理解されたい。
【００２４】
図１を参照すると、本発明の一実施例に係るシステム構成及び処理を実現するためのコンピュータ・ハードウェアのブロック図が示されている。図１において、システム・パス１０２には、ＣＰＵ１０４と、主記憶（ＲＡＭ）１０６と、ハードディスク・ドライブ（ＨＤＤ）１０８と、キーボード１１０と、マウス１１２と、ディスプレイ１１４が接続されている。ＣＰＵ１０４は、好適には、３２ビットまたは６４ビットのアーキテクチャに基づくものであり、例えば、インテル社のＰｅｎｔｉｕｍ（商標）  ４、Ｃｏｒｅ（商標）２  Ｄｕｏ、Ｘｅｏｎ（商標）、ＡＭＤ社のＡｔｈｌｏｎ（商標）などを使用することができる。主記憶１０６は、好適には、４ＧＢ以上の容量をもつものである。ハードディスク・ドライブ１０８は、好適には例えば、５００ＧＢ以上の容量をもつものである。
【００２５】
ハードディスク・ドライブ１０８には、個々に図示しないが、オペレーティング・システムが、予め格納されている。オペレーティング・システムは、Ｌｉｎｕｘ（商標）、マイクロソフト社のＷｉｎｄｏｗｓ（商標）７、Ｗｉｎｄｏｗｓ  ＸＰ（商標）、アップルコンピュータのＭａｃ  ＯＳ（商標）などの、ＣＰＵ１０４に適合する任意のものでよい。
【００２６】
ハードディスク・ドライブ１０８にはさらに、図２に関連して後述するメイン・ルーチン２０２、仕様書群のファイル２０４、ルール木２０６、ルール適用表作成ルーチン２０８、ルール適用表２１０、ルール木探索ルーチン２１２、統計データ前処理ルーチン２１４、優先順位指数導出ルーチン２１６、及びルール修正ルーチン２１８が格納されている。これらの処理ルーチンは、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ(R)などの既存のプログラミング言語処理系で作成することができ、オペレーティング・システムの働きで、これらのルーチンは適宜主記憶１０６にロードされて実行される。これらのルーチンの動作の詳細は、図２の機能ブロック図を参照して、より詳細に説明する。
【００２７】
キーボード１１０及びマウス１１２は、所定のＧＵＩ画面（図示しない）を操作して、上述の処理ルーチンなどを起動したり、文字を打ち込んだりするために使用される。
【００２８】
ディスプレイ１１４は、好適には、液晶ディスプレイであり、例えば、ＸＧＡ（１０２４×７６８の解像度）、またはＵＸＧＡ（１６００×１２００の解像度）などの任意の解像度のものを使用することができる。ディスプレイ１１４は、仕様の検証候補などを表示するために使用される。
【００２９】
図１のシステムは更に、好適には、バス１０２に接続された通信インターフェース１１６を介して、ＬＡＮ、ＷＡＮなどの外部ネットワークに接続されている。通信インターフェース１１６は、イーサネット（商標）などの仕組みにより、外部ネットワーク上にあるサーバやクライアント・コンピュータなどのシステムとデータのやりとりを行う。このように本発明のシステムがネットーワークに接続されている場合、図１のシステムをサーバとして、別のクライアント・システムから操作することができる。あるいは、図１のシステムをスタンドアロンのシステムとして使用してもよい。
【００３０】
図２は、本発明を実行するための論理構成のブロック図を示す図である。メイン・ルーチン２０２は、ユーザのキーボード１１０及びマウス１１２などの操作を受け入れて、全体の処理を制御する働きを行う。
【００３１】
仕様書群２０４は、好適にはMicrosoft(R) Excel(R)で作成され、ハードディスク・ドライブ１０８に保存されているファイル群であり、その例を図３に示す。仕様書群２０４には、一般的な仕様書群や、過去のプロジェクト・データも含まれていてもよい。
【００３２】
なお、仕様書群２０４のフォーマットは、Excel(R)以外にも、Microsoft(R) Word(R)、ＸＭＬなど任意のフォーマットを使用することができる。
【００３３】
次に、ルール木２０６を説明する前に、抽出ルールについて説明する。抽出ルールとは，少なくとも以下の情報が記載されており，階層構造を持つものである。
・仕様書探索条件
− Microsoft(R) Word(R), Excel(R)など，ファイルの種類やファイル内の要素の種類にあわせて探索条件を記述する
型（例えば、Worksheet(ワークシート)、Cell(セル)、Shape(シェイプ)、Comment(コメント)など）
− 型に対応する要素の文字列（例えば、ファイル名、ワークシート名、セル文字列、シェイプ文字列など）にマッチする文字列パターンを記述する。文字列パターンは、正規表現などで記述する。
文字列パターン（例えば、“^画面レイアウト仕様”, “画面操作概要$”）
型・文字列パターンを連結し，取得したい仕様書情報までの探索方向を記述する．
−  探索条件（例えば、direction=RIGHT, traversal type=BORDER（境界線を基準に探索）, 座標指定）
・Requirement level（要求レベル）
−  仕様書においてどの程度必須な情報かを記述する
例えば、must, should, may...
−  Cardinality（濃度）
仕様書内の出現回数をcardinalityとして記述する(例えば、 0...1, 1, 0...*, 1...*)
【００３４】
図４は、抽出ルールの例であり、図示されているように、一般的に階層をもつ木構造であらわされる。ルール木２０６は、ＸＭＬなどの、このような木構造を記述する形式で、抽出ルールをハードディスク・ドライブ１０８に保存したものである。
【００３５】
ルール適用表作成ルーチン２０８は、ルール木２０６から、ルール適用表２１０を生成する処理を行う。図５は、ルール木２０６である抽出ルール５０２から抽出された、ルール適用表５０４を示す図である。ルール適用表５０４において、S0, S1, S2は仕様書であり、R0〜R5は、ルールを示す。チェック・マークは、どのルールがどの仕様書に適用されるかを示す。
【００３６】
ルール木探索ルーチン２１２は、深さ優先探索のような既知のアルゴリズムにより、ルール木２０６のノードを辿る処理を行う。
【００３７】
統計データ前処理ルーチン２１４は、仕様書群、過去のプロジェクト・データ、一般的な仕様書群、過去のプロジェクト・データに基づき統計データに前処理を施す。
【００３８】
優先順位指数導出ルーチン２１６は、各ルールについて、ルール適用表２１０から優先順位指数を導出する処理を行う。
【００３９】
ルール修正ルーチン２１８は、適宜ユーザーとの対話的インターフェースを用いながら、ルールを修正し、ルール適用表２１０に反映させる処理を行う。
【００４０】
図６は、本発明の処理全体の概要のフローチャートを示す図である。図２の機能ブロック図で示すシステムは、ステップ６０２で、抽出ルール修正の優先順位を導出する。このために、ルール木探索ルーチン２１２、統計データ前処理ルーチン２１４、及び優先順位指数導出ルーチン２１６が呼び出される。
【００４１】
ステップ６０４では、本発明のシステムは、最優先のルールに対して、修正候補を導出し、ユーザに提示する。このために、ルール修正ルーチン２１８が呼び出される。
【００４２】
ステップ６０６では、本発明のシステムは、全てのルールに対して修正作業が終わったかどうか判断し、そうでなければ、ステップ６０２に戻る。なお、ステップ６０６は、ユーザの判断で終了することもできるので、全てのルールに対して修正作業が終わったわけではなくても、優先順位の高いいくつかのルールに対して修正作業をしただけで、処理を終了することもできる。
【００４３】
図７は、本発明の処理を別の観点から説明する図である。図７において、ルール木２０６から抽出された仕様書情報抽出ルール７０２があり、処理１は、仕様書情報抽出ルール７０２と、仕様書群２０４を元に、優先順位指数導出ルーチン２１６を呼び出して、抽出ルール修正優先順位７０４を計算する。
【００４４】
処理２は、仕様書群２０４、仕様書情報抽出ルール７０２、及び抽出ルール修正優先順位７０４から、ルール修正ルーチン２１８を呼び出して、抽出ルール修正候補７０６を算出する。
【００４５】
処理３は、ルール修正ルーチン２１８を呼び出して、抽出ルール修正候補７０６の提示、及びユーザによる確認・入力作業に必要なユーザ・インターフェースを与える。
【００４６】
図８は、図７の処理１に関連して、より詳細に説明する図である。すなわち、処理１は、図８に示すように、仕様書群２０４のみならず、必要に応じて、過去のプロジェクト・データ８０２と、一般的な仕様書群８０４も参照する。
【００４７】
次に、図９のフローチャートを参照して、優先順位導出処理を説明する。この処理は、基本的には図２に示すメイン・ルーチン２０２によって実行される。メイン・ルーチン２０２は、必要に応じて、ルール適用表作成ルーチン２０８、ルール木探索ルーチン２１２、統計データ前処理ルーチン２１４、優先順位指数導出ルーチン２１６、及びルール修正ルーチン２１８を呼び出す。
【００４８】
図９のステップ９０２で、メイン・ルーチン２０２は、ルール適用表作成ルーチン２０８を呼び出して、ルールRn(n = 0,...,N)と仕様書Si(i=0,...,I)の適用状況を示すルール適用表２１０を作成する。ルール適用表２１０の例を、図５にルール適用表５０４として示す。
【００４９】
ステップ９０４で、ルール適用表作成ルーチン２０８は、ルールの適用対象となる仕様書の要素が存在する（マッチする）場合、やはり図５にルール適用表５０４として示すように、その欄にチェックを入れる。実際上、コンピュータ上で、表のデータの所定のメモリの位置に1を書き込むなどの処理を行う。
【００５０】
ステップ９０６で、メイン・ルーチン２０２は、各ルールがマッチする確率を計算するための統計データがあるかどうか判断する。もし統計データが存在しないなら、メイン・ルーチン２０２は直ちにステップ９１０に進む。
【００５１】
もし統計データが存在するなら、メイン・ルーチン２０２は、統計データ前処理ルーチン２１４を呼び出す。そこで、図１０のフローチャートを参照して、統計データ前処理ルーチン２１４の処理について説明する。
【００５２】
図１０において、統計データ前処理ルーチン２１４は、ステップ１００２でルール木２０６を探索する。
【００５３】
ステップ１００４では、統計データ前処理ルーチン２１４は、統計データより、当該のルールRnに対して確率Pnを求める。統計データは、図８に示す過去のプロジェクト・データ８０２及び一般的な仕様書群８０４などを基に予め得られているデータである。
【００５４】
統計データ前処理ルーチン２１４はステップ１００６で、ルールRnの子孫ルールを探索する。
【００５５】
統計データ前処理ルーチン２１４はステップ１００８で、ルールRnの子孫ルールの間の共起確率を求める。
【００５６】
統計データ前処理ルーチン２１４はステップ１０１０で、ルールRnの子孫ルールをすべて探索したかどうか判断し、もしそうならステップ１０１２に進み、そうでなければ、ステップ１００６に戻る。
【００５７】
統計データ前処理ルーチン２１４はステップ１０１２で、ルール木を全て探索したかどうかを判断し、そうでなければステップ１００２に戻り、そうならば、図９のステップ９０８に戻る。
【００５８】
メイン・ルーチン２０２は、ステップ９０８からステップ９１０に進んで、ルール木探索ルーチン２１２を呼ぶことで、ステップ９１０でルール木を探索する。
【００５９】
メイン・ルーチン２０２は、ステップ９１２で、ルール木を全て探索したかどうか判断し、そうでなければステップ９１４で、探索中のノードRnの平均情報量H(Rn)を下記の式で計算する。
H(Rn) = -PRnlog PRn - (1-PRn)log(1-PRn)
ここで、対数の底は2であるとする。また、PRnは、あるルールRnが仕様書にマッチする確率である。確率PRnの算出には、上述のように、過去のプロジェクトにおいて利用した仕様書群や、一般的に用いられるランダムなファイル群などの統計データを用いる。もし統計データがない場合は、PRn = 1/2とおく。
【００６０】
ステップ９１４からステップ９１０に戻って、更にルール木を探索し、ステップ９１２で、ルール木を全て探索したと判断すると、メイン・ルーチン２０２は、ステップ９１６に進んで、ルール木探索ルーチン２１２を呼ぶことで、ステップ９１６でルール木を深さ優先順位探索する。
【００６１】
ステップ９１８で、メイン・ルーチン２０２は、ルール木を全て探索したかどうか判断し、そうでなければ、ステップ９２０で、優先順位指数導出ルーチン２１６を呼び出す。
【００６２】
そこで、優先順位指数導出ルーチン２１６のより詳細な処理を、図１１のフローチャートを参照して説明する。
【００６３】
図１１において、優先順位指数導出ルーチン２１６は、ステップ１１０２で、ルール適用表のRnの欄から、マッチしない仕様書の数をカウントする。
【００６４】
次に優先順位指数導出ルーチン２１６は、ステップ１１０４で、抽出ルールから、RnのRequirementLevelを取得し、α(Rn)を決定する。ここで、α(Rn)とは、RnのRequirementLevelに応じた値であり、例えば、RnのRequirementLevel = mustならα(Rn) = 1.0、RnのRequirementLevel = shouldならα(Rn) = 0.9、RnのRequirementLevel = mayならα(Rn) = 0.6、RnのRequirementLevel = optionalならα(Rn) = 0.5のように選ばれる。
【００６５】
次に優先順位指数導出ルーチン２１６は、ステップ１１０６で、ルールRnの子孫ルールを探索する。
【００６６】
次にステップ１１０８で、子孫ルールを全て探索したかどうか判断し、もしそうなら、ステップ１１１４に進む。
【００６７】
ステップ１１０８で、子孫ルールを全て探索したのでないと判断すると、優先順位指数導出ルーチン２１６はステップ１１１０で、探索中のノードRnの子孫ルールRmについて、相互情報量I(Rn,Rm)を計算する。相互情報量I(Rn,Rm)は、以下の式で与えられる。
I(Rn,Rm) = H(Rn) + H(Rm) - H(Rn,Rm)
ここで、H(Rn)及びH(Rm)は、ステップ９１４に関連して説明した平均情報量である。
【００６８】
また、H(Rn,Rm)は、RnとRmの結合エントロピーであり、以下の式で与えられる。
【数１】
0005818706.tif 000002
結合エントロピーの式を具体的に書き下すと、以下のとおりである。
-P(Rnがマッチ∧Rmがマッチ)logP(Rnがマッチ∧Rmがマッチ)
-P(Rnがマッチ∧Rmがマッチせず)logP(Rnがマッチ∧Rmがマッチせず)
-P(Rnがマッチせず∧Rmがマッチ)logP(Rnがマッチせず∧Rmがマッチ)
-P(Rnがマッチせず∧Rmがマッチせず)logP(Rnがマッチせず∧Rmがマッチせず)
【００６９】
優先順位指数導出ルーチン２１６は次に、ステップ１１１２で、抽出ルールから、RmのRequirementLevelを取得し、α(Rm)を決定して、ステップ１１０６に戻る。
【００７０】
こうして、優先順位指数導出ルーチン２１６が、ステップ１１０８で子孫ルールを全て探索したと判断すると、ステップ１１１４で、優先順位指数導出の式より、Rnの指数を計算する。ここで、優先順位指数導出の式は以下で与えられる。
【数２】
0005818706.tif 000003
この式で、NRnは、Rnのマッチしない仕様書の数であり、優先順位指数が高ければ高いほど、修正順位は高い。
【００７１】
尚、ここで示す優先順位指数導出の式は一例であって、例えば、Rnのマッチしない仕様書の数×子孫ノードのうちのmustノードの数×α(Rn)のような式を使用することもできる。但し、優先順位指数導出の式に相互情報量を含めないと、ルール修正優先順位導出のポリシーのいつくかは満たせなくなることがあり、従って、相互情報量を含む優先順位指数導出の式を用いることが望ましい。
【００７２】
なお、説明のため、優先順位導出の例をいくつか示す。
例えば、PRn = 1/2、PRm = 1/2の場合、
H(Rn) = -(1-1/2)log(1-1/2) - (1/2)log(1/2) = 1
H(Rm) = -(1-1/2)log(1-1/2) - (1/2)log(1/2) = 1
【００７３】
このとき、RnがマッチしなければRmは絶対マッチしない。例えば、worksheetが見つからなければ、その中のcellは見つからない。さらにこの場合、RnがマッチしたときのRmがマッチする確率はPRmと同じ（RmとRnは独立）。
さらに、Rn、RmのRequirement Levelはmust(α=1)、Rnの子ノードはRmのみとする。
【００７４】
上記のような場合、計算は次のようになる。
P(Rnがマッチ∧Rmがマッチ) = 1/4
P(Rnがマッチ∧Rmがマッチせず) = 1/4
P(Rnがマッチせず∧Rmがマッチ) = P(Rnがマッチせず)*P(Rmがマッチ|Rnがマッチせず) = 0
P(Rnがマッチせず∧Rmがマッチせず) = P(Rnがマッチせず)*P(Rmがマッチせず|Rnがマッチせず) = 1/2
【００７５】
以上から、H(Rn,Rm) = -1/4log(1/4)-1/4log(1/4)-1/2log(1/2) = 1/2+1/2+1/2=3/2
I(Rn,Rm) = 1+1-3/2 = 1/2
【００７６】
すると、Rnの優先順位指数 =
α(Rn) * H(Rn) + α(Rm) * I(Rn,Rm) * H(Rm)
= 1*1 + 1*(1/2)*1 = 1.5
【００７７】
さらに別の例で、
例えば、PRn = 1/2、PRm = 1/2の場合、
H(Rn) = -(1-1/2)log(1-1/2) - (1/2)log(1/2) = 1
H(Rm) = -(1-1/2)log(1-1/2) - (1/2)log(1/2) = 1
【００７８】
ここで、RnとRmが独立の場合は、
P(Rnがマッチ∧Rmがマッチ) = 1/4
P(Rnがマッチ∧Rmがマッチせず) = 1/4
P(Rnがマッチせず∧Rmがマッチ) = P(Rnがマッチせず)*P(Rmがマッチ|Rnがマッチせず) = 1/4
P(Rnがマッチせず∧Rmがマッチせず) = P(Rnがマッチせず)*P(Rmがマッチせず|Rnがマッチせず) = 1/4
【００７９】
以上から、H(Rn,Rm) = -1/4log(1/4)-1/4log(1/4)-1/4log(1/4)-1/4log(1/4) = 1/2+1/2+1/2+1/2=2
I(Rn,Rm) = 1+1-2 = 0
【００８０】
すると、Rnの優先順位指数 =
α(Rn) * H(Rn) + α(Rm) * I(Rn,Rm) * H(Rm)
= 1*1 + 1*0*1 = 1
【００８１】
以上から、RnとRmが独立の場合は、RnとRmに依存関係がある場合よりも優先順位指数が低いことがわかる。
【００８２】
こうして優先順位指数を計算すると、優先順位指数導出ルーチン２１６はステップ９２０に戻る。
【００８３】
ステップ９１６からステップ９１８に至って、メイン・ルーチン２０２は、ステップ９１８でルール木を全て探索したと判断すると、ステップ９２２で、優先順位指数の最も高いものを修正候補ルールRnとし、ステップ９２４で、ルール修正ルーチン２１８を呼び出す。
【００８４】
次に、図１２のフローチャートを参照して、ルール修正処理について説明する。
【００８５】
ルール修正ルーチン２１８は、ステップ１２０２で、Rnの制約を包含する制約を作成し、修正の候補Rin(i = 0,...,I)とする。ここで、Rnの制約を包含する制約とは、例で示すと次のとおりである。すなわち、例えばR0の制約として、"文字列パターン「画面レイアウト仕様」を名前に含むシート" と記述されていたとする。そして、仕様書S0に"「画面レイアウト仕様」シート、仕様書S1には「画面レイアウト仕様」シート(半角カタカナ）が存在したとする。その際、「画面レイアウト仕様」と「画面レイアウト仕様」(半角カタカナの共通文字列を算出し、R0の制約を包含する制約画面（レイアウト or レイアウト(半角カタカナ）仕様というパターンを作成する。共通文字列を算出する方法として例えば、一般的なアルゴリズムである、Longest Common Subsequence 等を使用することができる。
【００８６】
ルール修正ルーチン２１８は、ステップ１２０４で、Rin(i = 0,...,I)を仕様Sm(m= 0,...,M)に適用し、Rin及びその子ルールに対して、オブジェクト・ツリーを含むルール適用表を作成する。オブジェクト・ツリーを含むルール適用表の例を図１３に示す。
【００８７】
ステップ１２０６では、ルール修正ルーチン２１８は、Rinに対して、Cardinalityに違反しているSmが存在するかどうか判断し、もしそうなら、ステップ１２０８で、違反しているRinを修正候補から除去してステップ１２１０に進み、そうでないなら直ちに、ステップ１２１０に進む。
【００８８】
ステップ１２１０では、ルール修正ルーチン２１８は、新たにマッチするようになったRinが存在するかどうか判断し、そうでないなら、ステップ１２１４に進み、Rnの修正候補をユーザに入力してもらうための画面をディスプレイ１１４に表示する。修正候補をユーザに入力してもらうための画面の例は、図１５に示す。尚、比較のため、従来技術における修正候補をユーザに入力してもらうための画面の例を図１４に示す。図１５の画面は、修正候補が優先順位付けされており、修正すべき候補が見て取りやすいことが分かる。
【００８９】
一方、ステップ１２１０で、ルール修正ルーチン２１８が新たにマッチするようになったRinが存在すると判断すると、ステップ１２１２で、オブジェクト・ツリーの数が最も多いルールRinを新しいルールRnとして確認画面を提示する。この確認画面も基本的には、図１５と同様のインターフェースである。
【００９０】
ステップ１２１２、あるいはステップ１２１４からは、ステップ１２１６に進み、そこでルール修正ルーチン２１８は、新しいルールが確認された、あるいは、修正候補が入力されたかどうか判断し、もしそうなら、ステップ１２１８で、新しいルールをRnとしてルール適用表２１０に登録して、処理を終了する。
【００９１】
新しいルールは確認されず、且つ、修正候補も入力されないなら、ルール修正ルーチン２１８は、Rnにマッチしない仕様書Rnに対して例外処理を行うよう警告して処理を終わる。ここで例外処理とは、対象となっている仕様書はテンプレートから逸脱していると判断して、仕様書を改訂する、あるいは仕様書を除去するように担当者に連絡する、等である。
【００９２】
図１５に示すインターフェースでルールを修正することは、図７では、処理３を経て、ユーザが抽出ルールの確認・入力作業を行い、こうして修正した仕様書情報抽出ルール７０２で、処理を再開することを意味する。
【００９３】
以上のように、特定の実施例に従い、本発明を説明してきたが、本発明は、特定のオペレーティング・システムやプラットフォームに限定されず、任意のコンピュータ・システム上で実現可能であることを、この分野の当業者なら理解するであろう。
【符号の説明】
【００９４】
１０４・・・ＣＰＵ
１０６・・・ＲＡＭ
１０８・・・ハードディスク・ドライブ
１１４・・・ディスプレイ
２０４・・・仕様書群
２０６・・・ルール木
２０８・・・ルール適用表作成ルーチン
２１０・・・ルール適用表
２１２・・・ルール木探索ルーチン
２１４・・・統計データ前処理ルーチン
２１６・・・優先順位指数導出ルーチン
２１８・・・ルール修正ルーチン
【図１】
0005818706.tif 000004
【図２】
0005818706.tif 000005
【図３】
0005818706.tif 000006
【図４】
0005818706.tif 000007
【図５】
0005818706.tif 000008
【図６】
0005818706.tif 000009
【図７】
0005818706.tif 000010
【図８】
0005818706.tif 000011
【図９】
0005818706.tif 000012
【図１０】
0005818706.tif 000013
【図１１】
0005818706.tif 000014
【図１２】
0005818706.tif 000015
【図１３】
0005818706.tif 000016
【図１４】
0005818706.tif 000017
【図１５】
0005818706.tif 000018