(57)【要約】【課題】仕様間の影響関係をより正確に捉えることができる仕様間の影響関係解析装置を提供する。【解決手段】ソフトウェアの仕様を構文解析して、仕様に存在する文の一つ一つから仕様を構成する仕様文へと変換する構文解析部と、仕様文を、分割処理によって、複数の仕様文に分割する仕様文分割部と、変換パターンを利用して、分割後の仕様文を、仕様を構成する用語間の影響関係を解析するための有向グラフ形式で表わされる影響関係モデルを構成するモデル要素へと変換する影響関係モデル作成部と、影響関係モデルを元に、モデル要素間の影響関係情報としてモデル要素間の距離データを算出する距離データ算出部と、距離データに基づいて、仕様間の影響関係を表示するための表示用データを生成する表示用データ生成部とを、備える影響関係解析装置。【選択図】図１
2014106719.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの仕様を構文解析して、前記仕様に存在する文の一つ一つから前記仕様を構成する仕様文へと変換する構文解析部と、
前記仕様文を、分割処理によって、複数の仕様文に分割する仕様文分割部と、
変換パターンを利用して、前記分割後の仕様文を、前記仕様を構成する用語間の影響関係を解析するための有向グラフ形式で表わされる影響関係モデルを構成するモデル要素へと変換する影響関係モデル作成部と、
前記影響関係モデルを元に、前記モデル要素間の影響関係情報としてモデル要素間の距離データを算出する距離データ算出部と、
前記距離データに基づいて、前記仕様間の影響関係を表示するための表示用データを生成する表示用データ生成部とを、
備える影響関係解析装置。
【請求項２】
前記構文解析は、前記仕様の文節間の係り受け構造を発見するもので、解析結果が木構造である請求項１記載の影響関係解析装置。
【請求項３】
前記変換パターンは、ユーザが任意で設定可能である請求項１又は請求項２記載の影響関係解析装置。
【請求項４】
前記変換パターンは、ガ格パターン、ニ格・ガ格パターン、ニ格・ガ格（受動態）パターンのいずれかである請求項１又は請求項２記載の影響関係解析装置。
【請求項５】
前記影響関係モデルは、データストア、プロセス及びデータフローによってデータの流れを示す矢印で繋いだデータフローダイヤグラムの形式で表す請求項１乃至請求項４のいずれか１項に記載の影響関係解析装置。
【請求項６】
前記モデル要素は、ノード要素とエッジ要素とから構成され、
前記ノード要素は、前記モデル要素を一意に識別するための文字列である要素名と、プロセスやデータストア等の要素タイプと、当該要素が含まれる仕様文識別子の列である出現箇所データから有し、
前記エッジ要素は、前記要素名、前記要素タイプ、エッジの尾側のノード名の文字列であるソースノード名、エッジの頭側のノード名の文字列であるターゲットノード名を有する請求項１乃至請求項５のいずれか１項に記載の影響関係解析装置。
【請求項７】
前記仕様文の生成に際しては、
前記仕様もしくは仕様文が分割可能か判定されたか否かを示す分割判定フラグと、
前記仕様を識別する仕様識別子と、
前記仕様文を識別する仕様文IDと、
前記係り受け解析における解析結果とから成る構成データを作成する請求項２記載の影響関係解析装置。
【請求項８】
前記分割は、
連用係り＋読点の分割パターンで、前記仕様文の解析結果がマッチングした場合には、前記仕様文を分割する請求項１乃至請求項７のいずれか１項に記載の影響関係解析装置。
【請求項９】
前記分割処理におけるルールとなる分割パターンは、ユーザによって設定可能である請求項１乃至請求項８のいずれか１項に記載の影響関係解析装置。
【請求項１０】
前記距離は、影響関係解析モデルの任意のノード要素から任意のノード要素の間に定義される通過ノード情報の列の数で表す請求項１乃至請求項９のいずれか１項に記載の影響関係解析装置。
【請求項１１】
前記距離の算出では、
ソースを最初の列に並べ、ターゲットを最初の行に並べて配列して成るマトリクス形式のデータ構造において、前記ソースのノードから前記ターゲットのノードに有向エッジを辿って到達するまでの最短距離を各セル毎に算出するもので、
前記ソースは、各モデル要素を、有向グラフのノードで距離の計算を終了する影響関係モデルのノード要素であり、
前記ターゲットは、有向グラフのノードで距離の計算を終了する影響関係モデルのノード要素である請求項１乃至請求項１０のいずれか１項に記載の影響関係解析装置。
【請求項１２】
前記ソフトウェアの仕様を入力する入力部を備え、入力した仕様は、前記構文解析部に送る請求項１乃至請求項１１のいずれか１項に記載の影響関係解析装置。
【請求項１３】
前記表示用データは、
影響関係モデル構成要素のノード要素が持つ要素名で、文字列である用語と、
前記用語が登場する前記仕様を一意に特定する要素であり、前記用語が含まれる前記仕様の配列である出現箇所と、
前記用語が影響を与える用語と当該用語に与える影響の強さを組みにした配列である影響先用語である請求項１乃至請求項１２のいずれか１項に記載の影響関係解析装置。
【請求項１４】
前記影響の強さは、前記モデル要素間の距離の大きさに反比例する請求項１３記載の影響関係解析装置。
【請求項１５】
前記仕様間の影響関係をグラフィカル表示する表示部を備える請求項１乃至請求項１４のいずれか１項に記載の影響関係解析装置。
【請求項１６】
前記仕様間の影響関係をテキスト表示する表示部を備える請求項１乃至請求項１４のいずれか１項に記載の影響関係解析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、仕様間の影響関係解析装置に関する。
【背景技術】
【０００２】
ソフトウェア開発では、仕様を元にソフトウェアを構築している。仕様の間には影響関係があり、ある仕様の変更、追加、削除が、他の仕様の変更、追加、削除につながる。そのため、ソフトウェア開発では仕様間の影響関係を明確にする必要が有る。
【０００３】
近時、システムの大規模化、システム間の機能統合などにより開発するソフトウェアの仕様が増加している。それに伴い、仕様の影響関係を明らかにする作業負荷も増加している。
【０００４】
そのため、仕様の変更や追加時に影響がおよぶ仕様の範囲が判断しにくい、という問題があった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−２６５３８９号公報
【特許文献２】特開平７−３６６８６号公報
【特許文献３】特開平９−１６７１５８号公報
【非特許文献】
【０００６】
【非特許文献１】情報処理学会研究報告. ソフトウェア工学研究会報告２００１（３１）, Ｐ３９−４６「波及効果解析によるソフトウェア要求仕様の変更支援」
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする課題は、仕様間の影響関係をより正確に捉えることができる仕様間の影響関係解析装置を提供することである。
【課題を解決するための手段】
【０００８】
実施形態の影響関係解析装置は、ソフトウェアの仕様を構文解析して、前記仕様に存在する文の一つ一つから前記仕様を構成する仕様文へと変換する構文解析部と、前記仕様文を、分割処理によって、複数の仕様文に分割する仕様文分割部と、変換パターンを利用して、前記分割後の仕様文を、前記仕様を構成する用語間の影響関係を解析するための有向グラフ形式で表わされる影響関係モデルを構成するモデル要素へと変換する影響関係モデル作成部と、前記影響関係モデルを元に、前記モデル要素間の影響関係情報としてモデル要素間の距離データを算出する距離データ算出部と、前記距離データに基づいて、前記仕様間の影響関係を表示するための表示用データを生成する表示用データ生成部とを、備える。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態に係る影響関係解析装置の概略構成を示すブロック図である。
【図２】実施形態に係る影響関係解析装置１００における影響関係解析処理の流れを示すフローチャートである。
【図３】構文解析による仕様から仕様文を生成する処理を説明する図である。
【図４】仕様文の生成処理の流れを示すフローチャートである。
【図５】仕様文の複数の仕様文への分割処理を説明する図である。
【図６】「連用係り＋読点」パターンによる分割処理の一例を示す図である。
【図７】仕様文の分割処理の流れを示すフローチャートである。
【図８】分割した仕様文の影響関係モデルの要素へ変換の一例を示す図である。
【図９】変換パターンがマッチした場合の変換処理例を示す図である。
【図１０】仕様文の影響関係モデルの構成要素への変換処理の流れを示すフローチャートである。
【図１１】モデル要素間の距離を説明する図である。
【図１２】モデル要素間の距離の算出を説明する図である。
【図１３】仕様文と影響関係モデル要素との関係を説明する図である。
【図１４】モデル要素間の距離算出処理の流れを示すフローチャートである。
【図１５】仕様の影響関係の表示例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明の一実施の形態について、図面を参照して説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【００１１】
まず、本実施形態で用いる主要な用語について説明する。
【００１２】
「文」とは、自然言語で記述された文字列で区切り文字から区切り文字の間の文字列をいう。区切り文字の例としては句点があげられる。
【００１３】
「仕様」とは、「文」が１つ以上集まった要素をいう。
【００１４】
「用語」とは、「文」・「仕様」を構成する単語で影響関係の解析対象となるものをいう。「用語」は後述する「影響関係モデル」を構成するノード要素の要素名にあたる。
【００１５】
「仕様書」とは、「仕様」の集まりをいう。ドキュメントが複数にまたがっていても「仕様書」と呼ぶ。
【００１６】
「仕様文」とは、構文解析にかけられる「文」とその解析結果をまとめあげる構成データをいう。構成データについては、後述する。
【００１７】
「影響関係」とは、仕様Aが変更、追加、削除された場合に、伴って変更、追加、削除が行われる可能性のある仕様Bがあるとき、“仕様Aが仕様Bに影響を与える”という。また、“仕様Aと仕様Bには影響関係がある”という。
【００１８】
「係り受け解析」とは、語句の間にある、“修飾する”あるいは“修飾される”関係を抽出する手法をいう。
【００１９】
「影響関係モデル」とは、仕様を構成する用語間の影響関係を解析できる有向グラフ形式のモデルをいう。
【００２０】
本実施形態においては、開発するソフトウェアの仕様書に含まれる全ての仕様を構文解析して影響関係モデルに変換し、生成された影響関係モデルから仕様間の影響関係を計算・提示するものである。
【００２１】
図１は、本発明の実施形態に係る影響関係解析装置の概略構成を示すブロック図である。この装置は汎用のコンピュータ（例えばパーソナルコンピュータ（ＰＣ）等）と、同コンピュータ上で動作するソフトウェアとを用いて実現される。コンピュータとしては、ＣＡＤ（Computer Aided Design）やＣＡＥ（Computer Aided Engineering）に好適なエンジニアリングワークステーション（ＥＷＳ）等も含む。本実施形態はこのようなコンピュータに、仕様の影響関係モデルへの変換及び仕様間の影響関係の提示に係る一連の手続きを実行させるプログラムとして実施することもできる。
【００２２】
図１に示すように、本実施形態に係る影響関係解析装置は、主として、入力部１１、構文解析部１２、仕様文分割部１３、影響関係モデル作成部１４、距離データ算出部１５、表示用データ生成部１６より構成されている。
【００２３】
入力部１１は、ソフトウェアの仕様書を入力するものである。入力した仕様書は、構文解析部１２に送られる。
【００２４】
構文解析部１２は、構文解析によって、仕様書中に存在する文の一つ一つから仕様を構成する仕様文へと変換する。仕様文では、解析結果が木構造を形成する。変換された仕様文のデータは、仕様文分割部１３へと送られる。
【００２５】
仕様文分割部１３は、分割可能な仕様文を分割処理によって、複数の仕様文に分割する。仕様文は、単文で成り立つものに限られず、複文等で表現されている仕様文は影響関係モデルに変換できる粒度、例えば単語レベルにまで分割する。
【００２６】
分割後の仕様文のデータは、影響関係モデル作成部１４へと送られる。
【００２７】
影響関係モデル作成部１４は、所定の変換パターンを利用して、分割後の仕様文を影響関係モデルを構成するモデル要素へと変換する。この変換されたモデル要素を結合させ、グラフ構造で影響関係モデルを構築する。例えば、データフローダイヤグラム形式で影響関係モデルを表すことが好適である。影響関係モデルのデータは、距離データ算出部１５へと送られる。
【００２８】
距離データ算出部１５は、生成された影響関係モデルから、モデル要素間の影響関係情報としてモデル要素間の距離データを求める。ここでは、モデル要素の有向グラフの接続関係を利用してモデル要素間の距離データを算出する。算出した要素間の距離データは、影響関係を表示するための表示用データ生成部１６へと送られる。
【００２９】
表示用データ生成部１６は、要素間距離データに基づいて、仕様間の影響関係を表示するための表示用データを生成する。
【００３０】
次に、以上のように構成された影響関係解析装置１００における影響関係解析処理の流れについて説明する。
【００３１】
図２は、実施形態に係る影響関係解析装置１００における影響関係解析処理の流れを示すフローチャートである。ここでは、処理の概要を述べ、処理の詳細は後述する。
【００３２】
まず、入力部１１を介して、ソフトウェアの仕様書の情報を入力する（ステップＳ２１）。次いで、仕様を１つずつ構文解析し、仕様を構成する文を仕様文という形式で保存する（ステップＳ２２）。
【００３３】
次に、仕様文を構成している要素を影響関係モデルに変換できる粒度に、仕様文を分割する（ステップＳ２３）。
【００３４】
次に、分割後の仕様文を変換するパターンに応じて、影響関係モデルを構成するモデル要素に変換していく。この変換されたモデル要素を結合させ、グラフ構造にすることで影響関係モデルを構築する（ステップＳ２４）。
【００３５】
次に、影響関係モデルのモデル要素を走査し、モデル要素の有向グラフの接続関係を利用してモデル要素間の影響関係情報を生成する（ステップＳ２５）。ここで、モデル要素間の影響関係情報とは、後述する、距離を測る起点となるモデル要素、距離を測る終点となるモデル要素、要素間の距離データである。
【００３６】
次いで、モデル要素間の距離データを元にユーザに仕様間の影響関係を提示できる形式のデータを生成する（ステップＳ２６）。
【００３７】
上記したステップＳ２２からステップＳ２４は影響関係モデルの構築に係る処理であり、ステップＳ２５からステップＳ２６は、仕様間の影響関係の提示処理である。
【００３８】
＜仕様文の生成＞
図３は、構文解析による仕様から仕様文を生成する処理を説明する図である。図３に示す例では、「蓋センサがonのとき、保温設定ボタンが100msec以上押されると、ブザーを100msec鳴らした後、保温行為のモードを高温、節約、ミルクの各モードに設定する。」という仕様を構文解析して、仕様文を生成する。日本語の構文解析は、主に文節間の係り受け構造を発見することである。係り受け解析により生成された仕様文は、“蓋センサ”、“on”、“保温設定ボタン”、“100msec以上押される”、“ブザー”、“100msec鳴らす”、“保温行為のモード”、“高温、節約、ミルクの各モード”、“設定する”の仕様文を構成する要素から成り立っている。各々の要素は図３中の実線のように関わりあっている。
【００３９】
＜構成データ＞
仕様文の生成に際しては、例えば、“分割判定フラグ”、“仕様識別子”、“仕様文ID”、“解析結果”の構成データが作成される。“分割判定フラグ”は、仕様もしくは仕様文が分割可能か判定されたか否かを示すフラグで、未判定もしくは判定済がある。“仕様識別子”は、仕様を識別するものである。“仕様文ID”は、仕様文を識別するものである。“解析結果”は、後述する仕様文の分割処理と変換処理で利用するために必要なデータである。例えば、周知の係り受け解析機であるKNPの出力データがそれに該当する。
【００４０】
仕様文の生成での構成データは、例えば、分割判定フラグ：未判定、仕様識別子：仕様１、仕様文ID：ａ１、解析結果：＜句点＞＜サ変＞＜助詞＞・・・である。
【００４１】
図４は、仕様文の生成処理の流れを示すフローチャートである。
【００４２】
まず、仕様書の中から仕様を１つ取得する（ステップＳ４１）。
【００４３】
次に、当該仕様に含まれる文を１つ取得する（ステップＳ４２）。
【００４４】
次いで、当該文について係り受けの解析を行う（ステップＳ４３）。係り受けの解析は、仕様文として、記憶装置（図示しない）に保存する。
【００４５】
次に、解析すべき文が残っているか判定する（ステップＳ４４）。解析すべき文が残っていれば（ステップＳ４４でＹｅｓ）、ステップＳ４２に移行する。
【００４６】
解析すべき文が残っていなければ（ステップＳ４４でＮｏ）、解析すべき仕様が残っているか判定する（ステップＳ４５）。解析すべき仕様が残っていれば（ステップＳ４５でＹｅｓ）、ステップＳ４１に移行する。解析すべき仕様が残っていなければ（ステップＳ４５でＮｏ）、仕様文の生成処理を終了する。
【００４７】
＜仕様文の分割処理＞
仕様文を構成している要素を影響関係モデルに変換できる粒度に、仕様文を分割する。図５は、仕様文の複数の仕様文への分割処理を説明する図である。図３に示した仕様文に対して分割処理を施すことによって、４つの分割後の仕様文が出来ている。
【００４８】
分割ルールとなる分割パターンは、ユーザによって設定可能である。例えば、「連用係り＋読点」パターンでは、仕様文の解析結果が「*<係：連用>*<読点>*」あるいは「*<読点>*<係：連用>*」のいずれかにマッチする場合には、仕様文を分割する。図６は、「連用係り＋読点」パターンによる分割処理の一例を示す図である。ここでは、仕様文２と仕様文３に分割している。
【００４９】
同様に、「連用係り＋〜たら」パターンでは、仕様文の解析結果が「*<係：連用>*<ID：〜たら>*」あるいは「*<ID：〜たら>*<係：連用>*」のいずれかにマッチする場合には、仕様文を分割する。
【００５０】
分割処理後の構成データは、例えば、仕様文１については分割判定フラグ：判定済、仕様識別子：仕様１、仕様文ID：ａ２、解析結果：＜読点＞＜係：ガ格＞・・・、仕様文２については分割判定フラグ：判定済、仕様識別子：仕様１、仕様文ID：ａ３、解析結果：＜読点＞＜ＩＤ：〜たら＞・・・、仕様文３については分割判定フラグ：判定済、仕様識別子：仕様１、仕様文ID：ａ４、解析結果：＜読点＞＜係：連用＞・・・、仕様文４については分割判定フラグ：判定済、仕様識別子：仕様１、仕様文ID：ａ５、解析結果：＜句点＞＜スルナル＞・・・である。
【００５１】
図７は、仕様文の分割処理の流れを示すフローチャートである。
【００５２】
まず、仕様文を１つ取得する（ステップＳ７０１）。
【００５３】
次いで、当該仕様文に対して、分割判定フラグを未判定に設定する（ステップＳ７０２）。
【００５４】
次に、分割判定フラグが設定されていない仕様文があるかを判定する（ステップＳ７０３）。分割判定フラグが設定されていない仕様文があれば（ステップＳ７０３でＹｅｓ）ステップＳ７０１に移行し、分割判定フラグが設定されていない仕様文がなければ（ステップＳ７０３でＮｏ）、分割可能か未判定の仕様文を１つ取得する（ステップＳ７０４）。
【００５５】
次いで、分割パターンを１つ取得する（ステップＳ７０５）。
【００５６】
次に、当該仕様文が当該分割パターンにマッチしているか判定する（ステップＳ７０６）。
【００５７】
当該分割パターンにマッチしていれば（ステップＳ７０６でＹｅｓ）、仕様文に対して分割パターンに対応する分割処理を実施し（ステップＳ７０７）、分割された仕様文全ての判定フラグを未判定に設定する（ステップＳ７０８）。次いで、分割前の仕様文は削除し、分割後の複数の仕様文が記憶装置（図示しない）に保存され（ステップＳ７０９）、ステップＳ７０４に移行する。
【００５８】
当該仕様文が当該分割パターンにマッチしていなければ（ステップＳ７０６でＮｏ）、分割の判定に利用していない分割パターンがあるかを判定する（ステップＳ７１０）。
【００５９】
利用していない分割パターンがあれば（ステップＳ７１０でＹｅｓ）ステップＳ７０５に移行し、利用していない分割パターンがなければ（ステップＳ７１０でＮｏ）分割判定フラグを判定済に設定する（ステップＳ７１１）。
【００６０】
次いで、分割判定フラグが未判定の仕様文があるかを判定する（ステップＳ７１２）。
【００６１】
分割判定フラグが未判定の仕様文があれば（ステップＳ７１２でＹｅｓ）ステップＳ７０４に移行し、分割判定フラグが未判定の仕様文がなければ（ステップＳ７１２でＮｏ）、仕様文の分割処理を終了する。
【００６２】
＜影響関係モデルへの変換＞
仕様文の解析結果が変換パターンと一致した場合、当該仕様文を影響関係モデルへと変換していく処理である。影響関係モデルは、モデル要素から成り立ち、データフローダイヤグラムの形式で表現することができる。データフローダイヤグラムは、データストア、プロセス及びデータフローによって、データの流れを示す矢印で繋いだ図である。図８は、分割後の仕様文を元にして影響関係モデルの要素へ変換の一例を示す図である。
【００６３】
モデル要素となるデータは、大別するとノード要素とエッジ要素がある。
【００６４】
ノード要素は、“要素名”、“要素タイプ”、“出現箇所データ”から構成される。“要素名”は、影響関係モデルを構成するモデル要素を一意に識別するための文字列である。“要素タイプ”は、特段の制限なく定義可能で、プロセス、データストア等、他の要素が混じっても構わない。“出現箇所データ”は、この要素が含まれる仕様文識別子の列であって、全て保存しておく。
【００６５】
エッジ要素は、“要素名”、“要素タイプ”、“ソースノード名”、“ターゲットノード名”から構成される。“要素名”は、影響関係モデルを構成するモデル要素を一意に識別するための文字列である。“要素タイプ”は、エッジならば特段の制限なく定義可能で、データフロー等、他の要素が混じっても構わない。“ソースノード名”は、エッジの尾側のノード名の文字列である。“ターゲットノード名”は、エッジの頭側のノード名の文字列である。
【００６６】
次に、変換に際して利用する、変換パターンについて説明する。変換パターンそのものは、ユーザが設定可能である。例えば、ガ格パターン、ニ格・ガ格パターン、ニ格・ガ格（受動態）パターンである。ガ格パターンでは、仕様文の解析結果が「*<係：ガ格>*」というワイルドカードにマッチするか否かを判定する。ニ格・ガ格パターンでは、仕様文の解析結果が「*<係：ガ格>*<係：ニ格>*」又は「*<係：ニ格>*<係：ガ格>*」というワイルドカードにマッチするか否かを判定する。ニ格・ガ格（受動態）パターンでは、仕様文の解析結果が「*<係：ガ格>*<係：ニ格>*<態：受動>*」、「*<係：ニ格>*<係：ガ格>*<態：受動>*」、「*<態：受動>*<係：ガ格>*<係：ニ格>*」、「*<態：受動]>*<係：ニ格>*<係：ガ格>*」、「*<係：ガ格>*<態：受動>*<係：ニ格>*」、「*<係：ニ格>*<態：受動>*<係：ガ格>*」というワイルドカードのいずれかにマッチするか否かを判定する。
【００６７】
次に、変換パターンとのマッチングについて説明する。図９は、変換パターンがマッチした場合の変換処理例を示す図である。図９に示す例では、仕様文Ａがガ格パターンにマッチし、仕様文Ｂがニ格・ガ格パターンにマッチし、仕様文Ｃがニ格・ガ格（受動態）パターンにマッチするので、それぞれ変換している。
【００６８】
図１０は、仕様文の影響関係モデルのモデル要素への変換処理の流れを示すフローチャートである。
【００６９】
まず、分割後の仕様文を１つ取得する（ステップＳ１００１）。
【００７０】
次に、変換パターンを１つ取得する（ステップＳ１００２）。
【００７１】
続いて、仕様文が変換パターンにマッチするか否かを判断する（ステップＳ１００３）。
【００７２】
仕様文が変換パターンにマッチしていなければ（ステップＳ１００３でＮｏ）、続いて判定に利用していない変換パターンがあるか否かを判断する（ステップＳ１００４）。仕様文が変換パターンにマッチしていれば（ステップＳ１００３でＹｅｓ）、仕様文を影響関係モデル要素に変換パターンに対応する変換処理にかけ（ステップＳ１００５）た後、ステップＳ１００６に移行する。
【００７３】
判定に利用していない変換パターンがあれば（ステップＳ１００４でＹｅｓ）、ステップＳ１００２に移行する。判定に利用していない変換パターンがなければ（ステップＳ１００４でＮｏ）、次に変換されたモデル要素データを１つ取得する（ステップＳ１００６）。
【００７４】
次に、既に登録済みの要素データか否かを判断する（ステップＳ１００７）。登録済みの要素データでなければ（ステップＳ１００７でＮｏ）、変換された要素データを登録する（ステップＳ１００８）。登録済みの要素データであれば（ステップＳ１００７でＹｅｓ）、取り出された要素がエッジか否かを判断する（ステップＳ１００９）。取り出された要素がエッジでなければ（ステップＳ１００９でＮｏ）、変換されたモデル要素データの出現箇所データを登録する（ステップＳ１０１０）。取り出された要素がエッジであれば（ステップＳ１００９でＹｅｓ）、変換されたモデル要素データが残っているか否かを判断する（ステップＳ１０１１）。変換されたモデル要素データが残っていれば（ステップＳ１０１１でＹｅｓ）、ステップＳ１００６に移行する。変換されたモデル要素データが残っていなければ（ステップＳ１０１１でＮｏ）、処理する仕様文データが残っているか否かを判断する（ステップＳ１０１２）。処理する仕様文データが残っていれば（ステップＳ１０１２でＹｅｓ）、ステップＳ１００１に移行し、処理する仕様文データが残っていなければ（ステップＳ１０１２でＮｏ）、影響関係モデルのモデル要素への変換処理を終了する。
【００７５】
＜要素間距離データの計算＞
生成された仕様の影響関係解析モデルから、モデル要素間の距離を求める。ここで、“距離”とは、影響関係解析モデルの任意のノード要素から任意のノード要素の間に定義される通過ノード情報の列の数である。ノードの辿り方は有向エッジを辿るだけであり、到達ノードが自身か末端まで辿ることにより、“距離”が求まる。
【００７６】
尚、“距離”は複数の値になり得るので、その場合には、ユーザがいずれの値を採用するか決定することができる。常に、通過したノード情報を保持しておく。図１１は、モデル要素間の距離を説明する図である。図１１に示すように、通過ノード情報は、一意識別子として利用するノード名と、プロセスやデータストアなどのノード種別を有している。
【００７７】
図１２は、モデル要素間の距離の算出を説明する図である。図１２（ａ）に示す影響関係モデルにおいて、データストアである蓋センサＡ、保温設定ボタンＢ、ブザーＤ、保温行為のモードＦ、プロセスである100msec以上押下Ｃ、設定するＥの各々がモデル要素である。モデル要素間の距離を算出するために、各モデル要素をソースとターゲットにそれぞれ配列して、図１２（ｂ）に示すマトリクス形式のデータ構造を作成する。ここで、ソースは、有向グラフのノードで距離の計算を開始する影響関係モデルのノード要素であり、ターゲットは、有向グラフのノードで距離の計算を終了する影響関係モデルのノード要素である。ソースを最初の列に並べ、ターゲットを最初の行に並べる。ソースのノードからターゲットのノードに有向エッジを辿って到達するまでの最短距離を各セル毎に算出していく。図１２に示す例では、保温設定ボタンＢと保温行為のモードＦ間の距離が最も大きく、保温設定ボタンＢと保温行為のモードＦは相互に影響しあう可能性が小さいことを表している。
【００７８】
要素間の距離算出に際し、計算のルールは、ユーザが独自に設定可能とするのが好適である。例えば、ノード数、プロセス数、データストア数などに着目し算出していくことができる。また、下流のあるデータストアから上流のあるデータストア（あるプロセス）に有向エッジが戻っており、循環する場合には距離をゼロとすることもできる。距離データを利用して、後述する「影響の強さ」について、ユーザが自由に設定できる。
【００７９】
＜仕様（仕様文）と影響関係モデル要素との関係＞
例として、次に示す仕様文について、影響関係モデル要素との関係を説明する。  
（仕様文１）蓋センサが3sec以上onとなったら、蓋が閉じられたと判断する。
（仕様文２）蓋が閉じられ、水量が適正な場合、沸騰行為をする。  
（仕様文３）蓋が閉じられても、水量が異常な場合、状態はアイドルのままである。
【００８０】
図１３は、仕様（仕様文）と影響関係モデル要素との関係を説明するもので、図１３（ａ）は、仕様の粒度で影響関係を説明する図である。図１３（ｂ）は、図１３（ａ）に示すモデル要素間の距離を算出したマトリクス形式のデータ構造である。図１３（ｃ）は、仕様間の影響関係を例示する図である。
【００８１】
図１３（ａ）に示すように、これら３つの仕様文を解析して得られる影響関係モデルによれば、仕様文１はモデル要素Ａ、Ｂ、Ｃから成り、仕様文２はモデル要素Ｃ、Ｄ、Ｅから成り、仕様文３はモデル要素Ｃ、Ｄ、Ｆ、Ｇから成っている。各仕様文の共通するモデル要素に着目すれば、３つの仕様文の影響関係モデルの影響関係を把握することができる。
【００８２】
図１３（ｂ）からは、蓋センサＡと状態Ｇ間の距離が最も大きく、蓋センサＡと状態Ｇは相互に影響しあう可能性が小さいことがわかる。さらに、図１３（ｂ）からは、モデル要素A、モデル要素B は仕様文１にのみ所属し、モデル要素F、モデル要素Gは仕様文３にのみ所属し、モデル要素A、モデル要素Bはモデル要素F、モデル要素Gに影響していることがわかる。
【００８３】
以上のことから、図１３（ｃ）に示すように、仕様文１が仕様文３に影響していることがわかる。
【００８４】
図１４は、モデル要素間の距離算出処理の流れを示すフローチャートである。
【００８５】
まず、影響関係解析モデル要素データを１つ取得する（ステップＳ１４０１）。
【００８６】
次に、取得した要素が有向エッジの方向に沿ってつながっている要素を再帰的に取得する（ステップＳ１４０２）。  
次いで、有向エッジの方向に沿ってつながっている要素を１つ取得する（ステップＳ１４０３）。
【００８７】
次に、つながっているモデル要素との間の距離データ計算する（ステップＳ１４０４）。  
次いで、つながっているモデル要素が残っているか否かを判定する（ステップＳ１４０５）。つながっているモデル要素が残っていれば（ステップＳ１４０５でＹｅｓ）、ステップＳ１４０３に移行する。つながっているモデル要素が残っていなければ（ステップＳ１４０５でＮｏ）、次に、処理すべき影響関係解析モデル要素データが残っているか否かを判定する（ステップＳ１４０６）。処理すべき影響関係解析モデル要素データが残っていれば（ステップＳ１４０６でＹｅｓ）、ステップＳ１４０１に移行する。処理すべき影響関係解析モデル要素データが残っていなければ（ステップＳ１４０６でＮｏ）、モデル要素間の距離算出処理を終了する。
【００８８】
＜仕様の影響関係の表示＞
上述してきた影響関係モデル及びモデル要素間の距離に基づいて、仕様の影響関係を表示することにより、仕様作成者や仕様を読む人が気づきにくい仕様の影響範囲や仕様の記述間違いに気づかせることが可能になる。
【００８９】
本実施形態では、仕様の影響関係を表示させるためのデータを生成し、表示形式自体は、ユーザにより設定可能とする。また、影響関係解析装置において、仕様の影響関係を表示する表示部（図示しない）を備えることも好適である。
【００９０】
表示するためのデータとしては、“用語”、“出現箇所”、“影響先用語”がある。“用語”は、影響関係モデル構成要素のノード要素が持つ要素名で、文字列である。“出現箇所”は、“用語”が登場する仕様を一意に特定する要素であり、“用語”が含まれている仕様の配列である。“影響先用語”は、ある“用語”が影響を与える“用語”とその“用語”に与える“影響の強さ”を組みにしたものの配列である。“影響の強さ”は、上述したモデル要素間の距離を利用して表すことができ、距離の数値が小さいほど、影響が強いと判定することができる。すなわち、“影響の強さ”は、モデル要素間の距離の大きさに反比例する。
【００９１】
これらの表示用データを利用して、多様な表示を行うことができる。図１５は、仕様の影響関係の表示例を示す図である。図１５（ａ）に示すように、影響関係はテキスト表示することができ、図１５（ｂ）に示すように、グラフィカル表示することもできる。グラフィカル表示の例では、カーソルを仕様中のある要素（例えば、プロセス）にカーソルを合わせると、有向グラフのエッジにそって到達できる要素（例えば、別のプロセス）への関連を表すことができ、影響関係の強さなども分かるように表示させることができる。
【００９２】
テキスト表示の例では、プロセスＡは仕様２に存在し、プロセスＢとプロセスＣに影響するが、その影響の強さはプロセスＢへの影響が強いことがわかる。また数字は影響の強さを表しており、０から１までのスケールで、１に近づくほど影響が強いことがわかる。さらに、プロセスＣは誰にも影響を与えていないため、影響を与える情報が空となっている。
【００９３】
本実施形態によれば、仕様間の影響関係を理解するための作業コストを低減することができる。仕様間の影響関係の理解をより正確に捉えることができる。仕様を解釈する側が仕様間の影響関係で不足・間違いを発見しやすくできる。
【００９４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９５】
１００・・・影響関係解析装置
１１・・・入力部
１２・・・構文解析部
１３・・・仕様文分割部
１４・・・影響関係モデル作成部
１５・・・距離データ算出部
１６・・・表示用データ生成部
【図１】
2014106719.tif 000003
【図２】
2014106719.tif 000004
【図３】
2014106719.tif 000005
【図４】
2014106719.tif 000006
【図５】
2014106719.tif 000007
【図６】
2014106719.tif 000008
【図７】
2014106719.tif 000009
【図８】
2014106719.tif 000010
【図９】
2014106719.tif 000011
【図１０】
2014106719.tif 000012
【図１１】
2014106719.tif 000013
【図１２】
2014106719.tif 000014
【図１３】
2014106719.tif 000015
【図１４】
2014106719.tif 000016
【図１５】
2014106719.tif 000017