(57)【要約】【課題】実装の前段階において、設計仕様に対する要求仕様の整合性をチェックすることにより、効率的かつ網羅的な論理検証を実現する。【解決手段】設計対象の要求仕様および設計仕様をモデル化して、要求仕様モデル（ユースケース記述）と設計仕様モデル（有限状態機械モデル）との整合性をチェックすることにより、設計仕様モデルに対する要求仕様モデルの網羅性を確保する。これにより、設計仕様に対してユースケース漏れのない要求仕様の作成を実現し、効率的かつ網羅的な論理検証を実現する。【選択図】図１
2008310663.tif 000002
【特許請求の範囲】
【請求項１】
設計対象の設計仕様に対する当該設計対象の要求仕様の網羅性を検証させる仕様検証プログラムであって、
前記設計対象の要求仕様を示すユースケース記述の中から、各ユースケースを実行するために満たすべき条件を取得させる取得工程と、
前記設計対象の設計仕様を示す有限状態機械モデルに表現されている状態集合の中から、前記取得工程によって取得された条件を満たす状態を検出させる検出工程と、
前記検出工程によって検出された結果、前記状態集合のうち検出されなかった非検出の状態が存在するか否かを判定させる判定工程と、
前記判定工程によって判定された判定結果を出力させる出力工程と、
をコンピュータに実行させることを特徴とする仕様検証プログラム。
【請求項２】
前記検出工程は、
前記有限状態機械モデルに表現されている状態間の遷移集合の中から、前記取得工程によって取得された条件を満たす遷移を検出させ、
前記判定工程は、
前記検出工程によって検出された結果、前記遷移集合のうち検出されなかった非検出の遷移が存在するか否かを判定させることを特徴とする請求項１に記載の仕様検証プログラム。
【請求項３】
前記取得工程は、
前記ユースケースごとに、前記ユースケースの実行前に満たすべき事前条件と、前記ユースケースの実行後に満たすべき事後条件と、前記事後条件が発生するまでの間に前記ユースケースに要求される不変条件と、を取得させ、
前記検出工程は、
前記有限状態機械モデルの初期状態から前記事後条件を満たす状態に辿り着くまでの間に、前記事前条件を満たす状態を経由し、かつ、前記不変条件を満たす状態遷移パス内の状態を検出させることを特徴とする請求項１または２に記載の仕様検証プログラム。
【請求項４】
前記検出工程は、
前記状態遷移パス内の状態間の遷移を検出させることを特徴とする請求項３に記載の仕様検証プログラム。
【請求項５】
前記有限状態機械モデルに表現されている状態集合の状態数に対する、前記検出工程によって検出された状態の状態数の割合（以下、「状態カバレッジ」という）を算出させる算出工程を前記コンピュータに実行させ、
前記判定工程は、
前記算出工程によって算出された状態カバレッジに基づいて、前記非検出の状態の存否を判定させることを特徴とする請求項１〜４のいずれか一つに記載の仕様検証プログラム。
【請求項６】
請求項１〜５のいずれか一つに記載の仕様検証プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
【請求項７】
設計対象の設計仕様に対する当該設計対象の要求仕様の網羅性を検証する仕様検証装置であって、
前記設計対象の要求仕様を示すユースケース記述の中から、各ユースケースを実行するために満たすべき条件を取得する取得手段と、
前記設計対象の設計仕様を示す有限状態機械モデルに表現されている状態集合の中から、前記取得手段によって取得された条件を満たす状態を検出する検出手段と、
前記検出手段によって検出された結果、前記状態集合のうち検出されなかった非検出の状態が存在するか否かを判定する判定手段と、
前記判定手段によって判定された判定結果を出力する出力手段と、
を備えることを特徴とする仕様検証装置。
【請求項８】
設計対象の設計仕様に対する当該設計対象の要求仕様の網羅性を検証する仕様検証方法であって、
前記設計対象の要求仕様を示すユースケース記述の中から、各ユースケースを実行するために満たすべき条件を取得する取得工程と、
前記設計対象の設計仕様を示す有限状態機械モデルに表現されている状態集合の中から、前記取得工程によって取得された条件を満たす状態を検出する検出工程と、
前記検出工程によって検出された結果、前記状態集合のうち検出されなかった非検出の状態が存在するか否かを判定する判定工程と、
前記判定工程によって判定された判定結果を出力する出力工程と、
を含んだことを特徴とする仕様検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ソフトウェアやハードウェアなどの設計対象の設計仕様に対する当該設計対象の要求仕様の網羅性を検証する仕様検証プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、仕様検証装置、および仕様検証方法に関する。
【背景技術】
【０００２】
現在、ソフトウェアやハードウェアの大規模化、多機能化により、システムの品質を保証するための検証作業がますます困難になってきている。一般に、システムの品質を保証するためには、２つの作業が必要とされている。その一つは設計の正しさの保証であり、もう一つは実装の正しさの保証である。
【０００３】
現状の検証・テストの技術は、基本的に後者の『実装の正しさの保証』に着目している。たとえば、実装レベルにおける、設計対象が仕様通りに動作しているかを検証するテストケースの網羅度（カバレッジ）を評価することにより、網羅的な論理検証をおこなう手法が提供されている（たとえば、下記特許文献１および２参照。）。
【０００４】
また、実装レベルにおける、設計対象の検証プロパティを抽出し、設計対象の設計仕様に対する検証プロパティの網羅度を評価することにより、網羅的な論理検証をおこなう手法が提供されている（たとえば、下記非特許文献１および２参照。）。
【０００５】
【特許文献１】特開平０３−９９２２８号公報
【特許文献２】特開２００１−１４３６５号公報
【非特許文献１】Ｙ．Ｈｏｓｋｏｔｅ，Ｔ．Ｋａｍ，Ｐ．Ｈ．Ｈｏ，ａｎｄＸ．Ｚａｏ，“Ｃｏｖｅｒａｇｅ  Ｅｓｔｉｍａｔｉｏｎ  ｆｏｒ  Ｓｙｍｂｏｌｉｃ  Ｍｏｄｅｌ  Ｃｈｅｃｋｉｎｇ，”ｉｎ  Ｐｒｏｃ．ｏｆ  ＡＣＭ／ＩＥＥＥ  ＤＡＣ，１９９９，ｐｐ．３００−３０５．
【非特許文献２】Ｘ．Ｘｕ，Ｓ．Ｋｉｍｕｒａ，Ｋ．Ｈｏｒｉｋａｗａ，ａｎｄ  Ｔ  ．Ｔｓｕｃｈｉｙａ，“Ｔｒａｎｓｉｔｉｏｎ−ｂａｓｅｄ  ｃｏｖｅｒａｇｅ  ｅｓｔｉｍａｔｉｏｎ  ｆｏｒ  ｓｙｍｂｏｌｉｃ  ｍｏｄｅｌ  ｃｈｅｃｋｉｎｇ，”ｉｎ  Ｐｒｏｃ．ｏｆ  ＡＣＭ／ＩＥＥＥ
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した特許文献１および２に記載の従来技術によれば、システムの品質を保証するための作業の一つである『設計の正しさの保証』については、特に考慮されていなかった。多くの場合、仕様書が自然言語で記述されているため、設計の正しさの保証は、デザインレビュー、つまり目視でチェックすることとなる。
【０００７】
このため、仕様書の曖昧さ、矛盾、漏れ、ミスを完全に取り除くことができず、誤った設計になってしまうケースが多くなっていた。これにより、検証の手戻り作業が多発してしまい、検証作業の長期化、ひいては設計作業の長期化を招くという問題があった。
【０００８】
また、上述した非特許文献１および２に記載の従来技術によれば、仕様の要求を検証プロパティとして抽出して、各出力に対する網羅度を評価することとなる。したがって、検証プロパティおよび観測信号を定義する作業が必要となり、該作業に多大な時間や手間がかかってしまい、検証作業の長期化、ひいては設計作業の長期化を招くという問題があった。
【０００９】
この発明は、上述した従来技術による問題点を解消するため、実装の前段階において、設計仕様に対する要求仕様の整合性をチェックすることにより、効率的かつ網羅的な論理検証を実現し、設計者の負担軽減および設計期間の短縮化を図ることができる仕様検証プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、仕様検証装置、および仕様検証方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するため、この発明にかかる仕様検証プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、仕様検証装置、および仕様検証方法は、設計対象の設計仕様に対する当該設計対象の要求仕様の網羅性を検証する仕様検証プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、仕様検証装置、および仕様検証方法であって、前記設計対象の要求仕様を示すユースケース記述の中から、各ユースケースを実行するために満たすべき条件を取得し、前記設計対象の設計仕様を示す有限状態機械モデルに表現されている状態集合の中から、取得された条件を満たす状態を検出し、前記状態集合のうち検出されなかった非検出の状態が存在するか否かを判定して、その判定結果を出力することを特徴とする。
【００１１】
この発明によれば、設計対象の設計仕様モデルに表現されている状態集合に対する、該設計対象の要求仕様モデルに表現されている状態集合の網羅性を検証することにより、設計仕様と要求仕様との整合性を確認することができる。
【００１２】
また、上記発明において、前記有限状態機械モデルに表現されている状態間の遷移集合の中から、取得された条件を満たす遷移を検出させ、前記遷移集合のうち検出されなかった非検出の遷移が存在するか否かを判定することとしてもよい。
【００１３】
この発明によれば、設計仕様モデルに表現されている遷移集合に対する、要求仕様モデルに表現されている遷移集合の網羅性を検証することにより、設計仕様と要求仕様との整合性を確認することができる。
【００１４】
また、上記発明において、前記ユースケースごとに、前記ユースケースの実行前に満たすべき事前条件と、前記ユースケースの実行後に満たすべき事後条件と、前記事後条件が発生するまでの間に前記ユースケースに要求される不変条件と、を取得し、前記有限状態機械モデルの初期状態から前記事後条件を満たす状態に辿り着くまでの間に、前記事前条件を満たす状態を経由し、かつ、前記不変条件を満たす状態遷移パス内の状態を検出することとしてもよい。
【００１５】
また、上記発明において、前記状態遷移パス内の状態間の遷移を検出することとしてもよい。
【００１６】
これらの発明によれば、ユースケースを実行するために満たすべき事前条件、事後条件および不変条件を用いて、ユースケース記述に定義されているユースケースの動作を実現する状態遷移パスを探索し、該状態遷移パス内の状態または／および遷移を検出することができる。
【００１７】
また、上記発明において、前記有限状態機械モデルに表現されている状態集合の状態数に対する、検出された状態の状態数の割合（以下、「状態カバレッジ」という）を算出し、該状態カバレッジに基づいて、前記非検出の状態の存否を判定することとしてもよい。
【００１８】
この発明によれば、設計対象が取ることのできる有限の状態集合に対して、検出された状態がどの程度網羅しているのかをあらわす指標を用いて、非検出の状態の存否を判定することができる。
【００１９】
また、上記発明において、前記有限状態機械モデルに表現されている遷移集合の遷移数に対する、検出された遷移の遷移数の割合（以下、「遷移カバレッジ」という）を算出し、該遷移カバレッジに基づいて、前記非検出の遷移の存否を判定することとしてもよい。
【００２０】
この発明によれば、ある状態から他の状態への可能な有限の遷移集合に対して、検出された遷移がどの程度網羅しているのかをあらわす指標を用いて、非検出の遷移の存否を判定することができる。
【００２１】
また、上記発明において、前記判定結果は、前記非検出の状態または／および遷移の存否を示すこととしてもよい。
【００２２】
また、上記発明において、前記判定結果は、前記非検出の状態または／および遷移を特定するメッセージ情報を含むこととしてもよい。
【００２３】
また、上記発明において、前記判定結果は、前記有限状態機械モデルの初期状態から前記非検出の状態または／および遷移に辿り着くまでの状態遷移パスを特定するメッセージ情報を含むこととしてもよい。
【００２４】
これらの発明によれば、非検出の状態または／および遷移が存在する場合、非検出の状態または／および遷移を特定することができるとともに、該非検出の状態または／および遷移に辿り着くまでの状態遷移パスを特定することができる。
【発明の効果】
【００２５】
本発明にかかる仕様検証プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、仕様検証装置、および仕様検証方法によれば、実装の前段階において、設計仕様に対する要求仕様の整合性をチェックすることにより、効率的かつ網羅的な論理検証を実現し、設計者の負担軽減および設計期間の短縮化を図ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００２６】
以下に添付図面を参照して、この発明にかかる仕様検証プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、仕様検証装置、および仕様検証方法の好適な実施の形態を詳細に説明する。
【００２７】
（仕様検証の概要）
まず、この発明の実施の形態にかかる仕様検証の概要について説明する。図１は、この発明の実施の形態にかかる仕様検証の概要を示す説明図である。図１において、設計対象の仕様を検証する際の概要が示されている。
【００２８】
一般に、ソフトウェアやハードウェアなどの設計対象の仕様を定義する仕様書は、自然言語を用いて人手によって作成されている。そして、この仕様書を分析して、何をつくるべきかを定義する要求仕様と、どのように設計するのかを定義する設計仕様とが人手によって作成されている。
【００２９】
しかし、自然言語によって記述された仕様書の曖昧さから、分析が不十分なものとなってしまい、要求仕様に定義すべきユースケースに漏れが発生してしまう場合がある。このため、要求仕様をもとに生成されるテストケース（設計対象が仕様通りに動作するかを確認するテスト）に漏れが発生し、検証の手戻り作業が多発して論理検証の品質が低下してしまうという問題があった。
【００３０】
本実施の形態では、設計対象の要求仕様および設計仕様をモデル化して、要求仕様モデル（ユースケース記述）と設計仕様モデル（有限状態機械モデル）との整合性をチェックすることにより、設計仕様モデルに対する要求仕様モデルの網羅性を確保する。これにより、設計仕様に対してユースケース漏れのない要求仕様の作成を実現し、論理検証の品質を向上させる。
【００３１】
（仕様検証装置２００のハードウェア構成）
つぎに、この発明の実施の形態にかかる仕様検証装置２００のハードウェア構成について説明する。図２は、この発明の実施の形態にかかる仕様検証装置２００のハードウェア構成を示す説明図である。
【００３２】
図２において、仕様検証装置２００は、コンピュータ本体２１０と、入力装置２２０と、出力装置２３０と、から構成されており、不図示のルータやモデムを介してＬＡＮ，ＷＡＮやインターネットなどのネットワーク２４０に接続可能である。
【００３３】
コンピュータ本体２１０は、ＣＰＵ，メモリ，インターフェースを有する。ＣＰＵは、仕様検証装置２００の全体の制御を司る。メモリは、ＲＯＭ，ＲＡＭ，ＨＤ，光ディスク２１１，フラッシュメモリから構成される。メモリはＣＰＵのワークエリアとして使用される。
【００３４】
また、メモリには各種プログラムが格納されており、ＣＰＵからの命令に応じてロードされる。ＨＤおよび光ディスク２１１はディスクドライブによりデータのリード／ライトが制御される。また、光ディスク２１１およびフラッシュメモリはコンピュータ本体２１０に対し着脱自在である。インターフェースは、入力装置２２０からの入力、出力装置２３０への出力、ネットワーク２４０に対する送受信の制御をおこなう。
【００３５】
また、入力装置２２０としては、キーボード２２１、マウス２２２、スキャナ２２３などがある。キーボード２２１は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式であってもよい。マウス２２２は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。スキャナ２２３は、画像を光学的に読み取る。読み取られた画像は画像データとして取り込まれ、コンピュータ本体２１０内のメモリに格納される。なお、スキャナ２２３にＯＣＲ機能を持たせてもよい。
【００３６】
また、出力装置２３０としては、ディスプレイ２３１、スピーカ２３２、プリンタ２３３などがある。ディスプレイ２３１は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。また、スピーカ２３２は、効果音や読み上げ音などの音声を出力する。また、プリンタ２３３は、画像データや文書データを印刷する。
【００３７】
（仕様検証装置２００の機能的構成）
つぎに、この発明の実施の形態にかかる仕様検証装置２００の機能的構成について説明する。図３は、この発明の実施の形態にかかる仕様検証装置２００の機能的構成を示すブロック図である。図３において、仕様検証装置２００は、取得部３０１と、検出部３０２と、判定部３０３と、算出部３０４と、出力部３０５と、選択部３０６と、作成部３０７と、から構成されている。
【００３８】
仕様検証装置２００は、ソフトウェアやハードウェアなど設計対象の設計仕様に対する設計対象の要求仕様の網羅性を検証するコンピュータ装置である。また、仕様検証装置２００の各機能３０１〜３０７は、記憶領域に格納された当該機能に関するプログラムをＣＰＵに実行させることにより、当該機能を実現することができる。また、各機能３０１〜３０７からの出力データは記憶領域に保持される。また、図３中矢印で示した接続先の機能的構成は、接続元の機能からの出力データを記憶領域から読み込んで、当該機能に関するプログラムをＣＰＵに実行させる。
【００３９】
まず、取得部３０１は、設計対象の要求仕様を示すユースケース記述の中から各ユースケースを実行するために満たすべき条件を取得する機能を有する。具体的には、ユースケースごとに、該ユースケースの実行前に満たすべき事前条件と、該ユースケースの実行後に満たすべき事後条件と、事後条件が発生するまでの間に該ユースケースに要求される不変条件とを取得する。
【００４０】
ユースケース記述とは、設計対象の要求仕様を示すコンピュータに読み取り可能な電子情報である。ユースケース記述には、設計対象の機能をあらわすユースケース図内の各ユースケースを実行するために満たすべき条件が定義されている。具体的には、ユースケースごとに、事前条件、事後条件および不変条件が定義されている。
【００４１】
事前条件とは、ユースケースの実行前に満たすべき（真となる）条件である。事後条件とは、ユースケースの実行後に満たすべき条件である。不変条件とは、ユースケースに関する事後条件が発生するまでの間（ユースケースの実行中）にユースケースに要求される不変の条件である。
【００４２】
ここで、ユースケース記述のデータ構造について説明する。図４は、ユースケース記述のデータ構造を示す説明図である。図４において、ユースケース記述には、ユースケースごとに、該ユースケースを実行するために満たすべき事前条件、事後条件および不変条件が定義されている。また、各ユースケースに対応するパス（シナリオ）を実行するために満たすべき事前条件、事後条件および不変条件が定義されている。
【００４３】
具体的には、最終的に目的は同じであっても目的を達成するための手続きが異なるパスについて、該パスを実行するために満たすべき事前条件、事後条件および不変条件が定義されている。ここで、銀行のＡＴＭシステムを利用して預金を引き出す場合を例に挙げると、目的（預金を引き出す）が同じであっても目的を達成するための手段（パス）が複数存在する。
【００４４】
たとえば、キャッシュカードを使って預金を引き出すパスと、預金通帳を使って預金を引き出すパスとが存在する。この場合、ユースケース記述には、キャッシュカードを使って預金を引き出すパスおよび預金通帳を使って預金を引き出すパスについて、該各パスを実行するために満たすべき事前条件、事後条件および不変条件を定義する。
【００４５】
取得部３０１は、パスを実行するために満たすべき条件が定義されている場合、各ユースケースを実行するために満たすべき事前条件、事後条件および不変条件とともに、各ユースケースに対応するパスを実行するために満たすべき事前条件、事後条件および不変条件を取得することとなる。
【００４６】
検出部３０２は、設計対象の設計仕様を示す有限状態機械モデルに表現されている状態集合の中から、取得部３０１によって取得された条件を満たす状態を検出する機能を有する。具体的には、有限状態機械モデルの初期状態から事後条件を満たす状態に辿り着くまでの間に、事前条件を満たす状態を経由し、かつ、不変条件を満たす状態遷移パス内の状態を検出することとしてもよい。
【００４７】
ここで、有限状態機械モデルとは、設計対象の設計仕様を示すコンピュータに読み取り可能な電子情報である。具体的には、設計対象が取ることのできる有限の状態集合およびある状態から他の状態への可能な有限の遷移集合を用いて記述された動作（動的）モデルである。この検出処理は、ユースケースごとに、取得部３０１によって取得された各ユースケースを実行するために満たすべき条件を用いて実行される。
【００４８】
また、検出処理の具体例としては、電子情報である有限状態機械モデルを読み込んで、各ユースケースを実行するために満たすべき条件を示す記述を検出することとしてもよい。また、有限状態機械モデルを実際に起動させて、該有限状態機械モデルの動作を確認することにより、上記条件を満たす状態を検出することとしてもよい。
【００４９】
なお、上述した設計対象の要求仕様を示すユースケース記述および該設計対象の設計仕様を示す有限状態機械モデルは、仕様検証装置２００に直接入力することとしてもよく、また、ネットワーク２４０を介して外部のコンピュータ装置から取得することとしてもよい。
【００５０】
判定部３０３は、検出部３０２によって検出された検出結果に基づいて、有限状態機械モデルに表現されている状態集合のうち非検出の状態が存在するか否かを判定する機能を有する。すなわち、ユースケース記述に定義されている条件を用いて、有限状態機械モデルに表現されているすべての状態を検出したか否かを判定する。具体的には、算出部３０４によって算出された算出結果に基づいて、非検出の状態の存否を判定することとしてもよい。
【００５１】
算出部３０４は、有限状態機械モデルに表現されている状態集合の状態数に対する、検出部３０２によって検出された状態の状態数の割合（以下、「状態カバレッジ」という）を算出する機能を有する。具体的には、設計対象が取ることのできる有限の状態集合に対して、検出部３０２によって検出された状態がどの程度網羅しているのかをあらわす指標を算出する。
【００５２】
たとえば、有限状態機械モデルに表現されている状態集合の状態数を「１０」とする。このとき、検出部３０２によって検出された状態数が「８」であった場合、状態カバレッジは『８／１０＝４／５→８０％』となる。また、検出部３０２によって検出された状態数が「１０」であった場合、状態カバレッジは『１０／１０＝１→１００％』となる。
【００５３】
判定部３０３は、算出部３０４によって算出された状態カバレッジに基づいて、非検出の状態の存否を判定する。たとえば、状態カバレッジが１００％未満であった場合、非検出の状態が存在すると判定し、一方で、状態カバレッジが１００％であった場合、非検出の状態が存在しないと判定することとしてもよい。
【００５４】
また、算出部３０４は、有限状態機械モデルに表現されている遷移集合の遷移数に対する、検出部３０２によって検出された遷移の遷移数の割合（以下、「遷移カバレッジ」という）を算出する機能を有する。具体的には、ある状態から他の状態への可能な有限の遷移集合に対して、検出部３０２によって検出された遷移がどの程度網羅しているのかをあらわす指標を算出する。
【００５５】
たとえば、有限状態機械モデルに表現されている状態間の遷移集合の遷移数を「１０」とする。このとき、検出部３０２によって検出された遷移数が「８」であった場合、遷移カバレッジは『８／１０＝４／５→８０％』となる。また、検出部３０２によって検出された遷移数が「１０」であった場合、遷移カバレッジは『１０／１０＝１→１００％』となる。
【００５６】
判定部３０３は、算出部３０４によって算出された遷移カバレッジに基づいて、非検出の遷移の存否を判定する。たとえば、遷移カバレッジが１００％であった場合、非検出の遷移が存在すると判定し、一方で、遷移カバレッジが１００％であった場合、非検出の遷移が存在しないと判定することとしてもよい。また、判定部３０３の判定基準となるカバレッジ基準（状態カバレッジ、遷移カバレッジ）は、任意に選択可能としてもよい。
【００５７】
選択部３０６は、カバレッジ基準の選択を受け付ける機能を有する。具体的には、「状態カバレッジ」、「遷移カバレッジ」、「状態カバレッジおよび遷移カバレッジ」のいずれかをカバレッジ基準として選択することができる。カバレッジ基準の選択は、図２に示したキーボード２２１やマウス２２２などの入力装置２２０をユーザが操作することによりおこなうこととしてもよい。
【００５８】
また、算出部３０４は、選択部３０６によってカバレッジ基準が選択された場合、選択されたカバレッジ基準に応じて、状態カバレッジまたは／および遷移カバレッジを算出することとしてもよい。そして、判定部３０３は、選択部３０６によって選択されたカバレッジ基準に基づいて、非検出の状態または／および遷移の存否を判定することとなる。
【００５９】
また、算出部３０４は、ユースケースごとに、状態カバレッジ（または遷移カバレッジ）を算出することとしてもよい。具体的には、ユースケースごとに、各ユースケースの動作を実現する状態遷移パス内の状態数（または遷移数）に対する、取得部３０１によって取得された各ユースケースの条件を満たす状態数（または遷移数）の割合を算出する。これにより、ユースケースごとに、検出部３０２によって検出された状態（または遷移）がどの程度網羅しているのかをあらわす指標を算出することができる。
【００６０】
そして、判定部３０３は、各ユースケースの動作を実現する状態遷移パスごとに、非検出の状態または／および遷移の存否を判定することとしてもよい。具体的には、算出部３０４によって算出されたユースケースごとの状態カバレッジまたは／および遷移カバレッジに基づいて、各ユースケースの動作を実現する状態遷移パスごとの非検出の状態または／および遷移の存否を判定する。
【００６１】
出力部３０５は、判定部３０３によって判定された判定結果を出力する機能を有する。具体的には、非検出の状態または／および遷移の存否を示す判定結果を出力する。このとき、各ユースケースの動作を実現する状態遷移パスごとの非検出の状態または／および遷移の存否を示す判定結果を出力することとしてもよい。
【００６２】
また、この判定結果には、非検出の状態または／および遷移を特定する情報（たとえば、図９に示すメッセージ情報９１０，９２０）が含まれていてもよく、さらに、非検出の状態または／および遷移に辿り着くまでの状態遷移パスを特定する情報（たとえば、図９に示すメッセージ情報９３０）が含まれていてもよい。
【００６３】
作成部３０７は、非検出の状態または／および遷移を特定するメッセージ情報を作成する機能を有する。具体的には、たとえば、ＲＯＭやＲＡＭなどの記憶領域に予め保持されているテンプレートを読み出して、該テンプレートの所定位置に非検出の状態または／および遷移を特定するための文字列を埋め込むことによりメッセージ情報を作成する。
【００６４】
また、作成部３０７は、非検出の状態または／および遷移に辿り着くまでの状態遷移パスを特定するメッセージ情報を作成することとしてもよい。具体的には、たとえば、記憶領域からテンプレートを読み出して、該テンプレートの所定位置に有限状態機械モデルの初期状態から非検出の状態または／および遷移に辿り着くまでの状態遷移を特定するための文字列を埋め込むことによりメッセージ情報を作成する。
【００６５】
出力部３０５は、作成部３０７によって作成されたメッセージ情報を含む判定結果を出力することとしてもよい。なお、出力部３０５による出力形式は、ディスプレイ２３１での画面表示、プリンタ２３３での印刷出力、記憶領域へのデータ出力（保存）、外部のコンピュータ装置への送信のいずれであってもよい。
【００６６】
（仕様検証の具体例）
つぎに、この発明の実施の形態にかかる仕様検証の具体例として、演算器の設計仕様に対する要求仕様の網羅性を検証する場合を例に挙げて説明する。まず、演算器の要求仕様を示すユースケース図およびユースケース記述について説明する。
【００６７】
図５は、演算器５００のユースケース図である。図５において、符号５００は、設計対象の演算器である。符号５０１は、演算器５００の制御を司るＣＰＵをあらわすアクターである。符号５０２は、『加算する』という演算器５００の一機能を示すユースケースである。符号５０３は、『減算する』という演算器５００の一機能を示すユースケースである。
【００６８】
図６は、演算器５００のユースケース記述を示す説明図である。図６において、ユースケース記述６１０には、ユースケース５０２を機能させるための条件（事前条件、事後条件、不変条件）が定義されている。また、ユースケース記述６２０には、ユースケース５０３を機能させるための条件（事前条件、事後条件、不変条件）が定義されている。
【００６９】
つぎに、演算器５００の設計仕様を示す有限状態機械モデルについて説明する。有限状態機械モデルは、たとえば、演算器５００が有するレジスタの機能を定義するレジスタ・ポート情報および各レジスタの動作仕様を示すレジスタ動作仕様情報に基づいて生成される。なお、有限状態機械モデルの生成手法については公知技術のため説明を省略する。
【００７０】
この有限状態機械モデルは、状態遷移グラフを用いてグラフィカルに表現することができる。図７は、演算器５００の状態遷移グラフを示す説明図（その１）である。図７において、状態遷移グラフ７００は、演算器５００の設計仕様が取ることのできる任意の遷移元と遷移元に対する遷移先の状態との間の遷移条件が各遷移枝に関連付けられたグラフである。
【００７１】
また、有限状態機械モデルをＫｒｉｐｋｅモデルに変換することにより、状態遷移グラフ７００を細分化して表現することができる。図８は、演算器５００の状態遷移グラフを示す説明図（その２）である。図８において、状態遷移グラフ８００には、演算器５００の取ることのできる有限の状態集合（状態Ｓ０〜状態Ｓ６）およびある状態から他の状態への可能な遷移集合（遷移Ｔ１〜遷移Ｔ９）が表現されている。
【００７２】
具体的には、各レジスタの動作仕様に基づく状態間の状態遷移がグラフィカルに表現されている。たとえば、初期状態である状態Ｓ０において、リセットが解除され加算モード（ＡＤＤ）がセットされると、状態Ｓ０から状態Ｓ１に遷移する（遷移Ｔ１）。このあと、加算が終了すると、状態Ｓ１から状態Ｓ４に遷移し（遷移Ｔ２）、このあと、リセットされると、状態Ｓ４から状態Ｓ０に遷移する（遷移Ｔ３）。
【００７３】
以下、状態遷移グラフ８００を用いて、演算器５００の仕様検証の具体的手順を説明する。まず、上記取得部３０１により、ユースケース記述６１０，６２０の中からユースケース５０２，５０３を実行するために満たすべき条件を取得する。具体的には、ユースケース記述６１０の中からユースケース５０２を実行するために満たすべき事前条件、事後条件および不変条件を取得し、ユースケース記述６２０の中からユースケース５０３を実行するために満たすべき事前条件、事後条件および不変条件を取得する。
【００７４】
つぎに、上記検出部３０２により、演算器５００の設計仕様を示す状態遷移グラフ８００に含まれている状態集合の中から、取得部３０１によって取得された条件を満たす状態を検出する。具体的には、状態遷移グラフ８００の初期状態を特定する。初期状態は、レジスタ・ポート情報に定義されている各レジスタの初期値から特定することができる。さらに、ユースケース５０２を実行するために満たすべき事前条件、事後条件および不変条件をそれぞれ満たす状態を特定する。
【００７５】
状態遷移グラフ８００において、初期状態は状態Ｓ０である。また、事前条件を満たす状態は、リセットが解除され加算モードがセットされている状態Ｓ１である。また、事後条件を満たす状態は、加算終了状態の状態Ｓ４である。また、不変条件を満たす状態は、リセット解除を維持している状態Ｓ１〜状態Ｓ３である。
【００７６】
このあと、初期状態から事後条件を満たす状態Ｓ４に辿り着くまでの間に、事前条件を満たす状態Ｓ１を経由し、かつ、不変条件を満たす状態遷移パスＰ１を探索する。そして、探索された状態遷移パスＰ１内の状態Ｓ０、状態Ｓ１および状態Ｓ４を検出する。
【００７７】
同様にして、ユースケース５０３を実行するために満たすべき事前条件、事後条件および不変条件をそれぞれ満たす状態を特定する。状態遷移グラフ８００において、事前条件を満たす状態は、リセットが解除され減算モードがセットされている状態Ｓ２である。また、事後条件を満たす状態は、減算終了状態の状態Ｓ５である。また、不変条件を満たす状態は、リセット解除を維持している状態Ｓ１〜状態Ｓ３である。
【００７８】
このあと、初期状態から事後条件を満たす状態Ｓ５に辿り着くまでの間に、事前条件を満たす状態Ｓ２を経由し、かつ、不変条件を満たす状態遷移パスＰ２を探索する。そして、探索された状態遷移パスＰ２内の状態Ｓ０、状態Ｓ２および状態Ｓ５を検出する。
【００７９】
つぎに、上記算出部３０４により、選択部３０６によって選択されたカバレッジ基準に応じて、状態カバレッジまたは／および遷移カバレッジを算出する。ここでは、カバレッジ基準として、状態カバレッジおよび遷移カバレッジが選択されているとする。
【００８０】
まず、状態カバレッジについて、状態遷移グラフ８００内の状態集合の状態数（状態Ｓ０〜状態Ｓ６の７個）に対する、状態遷移パスＰ１，Ｐ２内の状態数の割合を算出する。具体的には、状態遷移パスＰ１内の状態数は、状態Ｓ０、状態Ｓ１および状態Ｓ４の３個である。また、状態遷移パスＰ２内の状態数は、状態Ｓ０、状態Ｓ２および状態Ｓ５の３個である。
【００８１】
そして、状態遷移パスＰ１，Ｐ２内の状態数の和集合（状態Ｓ０、状態Ｓ１、状態Ｓ２、状態Ｓ４および状態Ｓ５の５個）を算出して、状態遷移グラフ８００内の状態集合の状態数に対する割合を算出する。この結果、状態カバレッジは、『５／７→７１％（小数点以下切り捨て）』となる。なお、状態遷移パスＰ１，Ｐ２内における重複する状態（状態Ｓ０）については１個として扱う。
【００８２】
つぎに、遷移カバレッジについて、状態遷移グラフ８００内の状態間の遷移集合の遷移数（遷移枝Ｔ１〜遷移枝Ｔ９の９個）に対する、状態遷移パスＰ１，Ｐ２内の遷移数の割合を算出する。具体的には、状態遷移パスＰ１内の遷移数は、遷移枝Ｔ１（Ｓ０→Ｓ１）および遷移枝Ｔ２（Ｓ１→Ｓ４）の２個である。また、状態遷移パスＰ２内の遷移数は、遷移枝Ｔ４（Ｓ０→Ｓ２）および遷移枝Ｔ５（Ｓ２→Ｓ５）の２個である。
【００８３】
そして、状態遷移パスＰ１，Ｐ２内の遷移数の和集合（遷移枝Ｔ１、遷移枝Ｔ２、遷移枝Ｔ４および遷移枝Ｔ５の４個）を算出して、状態遷移グラフ８００内の状態間の遷移集合の状態数に対する割合を算出する。この結果、遷移カバレッジは、『４／９→４４％（小数点以下切り捨て）』となる。
【００８４】
つぎに、上記判定部３０３により、算出部３０４によって算出された状態カバレッジおよび遷移カバレッジに基づいて、非検出の状態および遷移の存否を判定する。ここでは、状態カバレッジおよび遷移カバレッジいずれも１００％となっていないため、非検出の状態および遷移が存在すると判定する。最後に、上記出力部３０５により、非検出の状態および遷移が存在することを示す判定結果を出力する。
【００８５】
このとき、作成部３０７によって作成されたメッセージ情報を含む判定結果を出力することとしてもよい。ここで、仕様検証装置２００のディスプレイ２３１に表示される判定結果について説明する。図９は、ディスプレイ２３１に表示される画面例を示す説明図である。図９において、ディスプレイ２３１には、非検出の状態を特定するためのメッセージ情報９１０と、非検出の遷移を特定するためのメッセージ情報９２０と、非検出の状態に辿り着くまでの状態遷移パスを特定するためのメッセージ情報９３０と、を含む判定結果９００が表示されている。
【００８６】
具体的には、メッセージ情報９１０には、非検出の状態である状態Ｓ３および状態Ｓ６をあらわす文字列（Ｓ３，Ｓ６）が所定位置９１１に埋め込まれている。また、メッセージ情報９２０には、非検出の遷移である遷移Ｔ３、遷移Ｔ６、遷移Ｔ７、遷移Ｔ８および遷移Ｔ９をあらわす文字列（Ｓ４→Ｓ０，Ｓ５→Ｓ０，Ｓ０→Ｓ３，Ｓ３→Ｓ６，Ｓ６→Ｓ０）が所定位置９２１に埋め込まれている。
【００８７】
また、メッセージ情報９３０には、非検出の状態である状態Ｓ３および状態Ｓ６に辿り着くまでの状態遷移パス（状態Ｓ０→状態Ｓ３、状態Ｓ０→状態Ｓ３→状態Ｓ６）をあらわす文字列（Ｓ０→Ｓ３，Ｓ０→Ｓ３→Ｓ６）が所定位置９３１に埋め込まれている。なお、図示は省略するが、各状態の特定を容易にするために、非検出の状態（状態Ｓ３、状態Ｓ６）の各レジスタの値を示す情報を出力することとしてもよい。
【００８８】
また、非検出の状態または／および遷移を含む状態遷移パスによって動作を実現するユースケースを特定するメッセージ情報を出力することとしてもよい。ここでは、『減算する』という設計対象の一機能を示すユースケースの動作を実現する状態遷移パス内の状態または／および遷移が非検出となっているため、該ユースケースを特定するメッセージ情報（たとえば、「ＳＵＢ」という文字列）を出力することとしてもよい。
【００８９】
ユーザは、この判定結果を確認することにより、非検出の状態および遷移を把握することができる。さらに、メッセージ情報９１０，９２０および９３０の内容を分析することにより、ユースケース記述に定義されていないユースケース（または、パス）を発見することができる。
【００９０】
具体的には、非検出の遷移Ｔ３、遷移Ｔ６および遷移Ｔ９から、『リセットする』という演算器５００の一機能を示すユースケースが漏れていることが分かる。また、非検出の状態である状態Ｓ３および状態Ｓ６に辿り着くまでの状態遷移パスから、ユースケース５０３の異常系の動作に関するパスが漏れていることが分かる。
【００９１】
そして、実装の前段階において、この判定結果をもとに、図５に示すユースケース図および図６に示したユースケース記述６２０を修正することができる。図１０および図１１は、ユースケースの追加を示す説明図である。図１０において、演算器５００のユースケース図に、外部リセットをあらわすアクター１００１が追加され、さらに、『リセットする』という演算器５００の一機能を示すユースケース１００２が追加されている。
【００９２】
また、図１１において、ユースケース１００２の追加に応じて、このユースケース１００２を機能させるための条件（事前条件、事後条件、不変条件）を定義するユースケース記述１１００が追加されている。具体的には、リセットされると、すべてのレジスタが初期値に戻るユースケースを機能させるための条件が定義されている。
【００９３】
図１２は、パスの追加を示す説明図である。図１２において、『減算する』という演算器５００の一機能を示すユースケース記述６２０に、正常系のパスおよび異常系のパスを機能させるための条件が追加されている。具体的には、ユースケース記述１２００には、減算モードがセットされると（減算結果≧０）、減算終了状態に遷移する正常パスを機能させるための条件、および、他のモードがセットされると（減算結果＜０）、エラー状態に遷移する異常パスを機能させるための条件が定義されている。
【００９４】
このように、実装の前段階において、設計仕様に対する要求仕様の整合性を確保することにより、テストケース漏れによる検証作業の手戻りを防ぐことができ、論理検証の品質を向上させることができる。
【００９５】
（仕様検証装置２００の仕様検証処理手順）
つぎに、この発明の実施の形態にかかる仕様検証装置２００の仕様検証処理手順について説明する。図１３は、この発明の実施の形態にかかる仕様検証装置２００の仕様検証処理手順を示すフローチャートである。図１３のフローチャートにおいて、まず、取得部３０１により、設計対象の要求仕様を示すユースケース記述の中から、各ユースケースを実行するために満たすべき条件を取得したか否かを判断する（ステップＳ１３０１）。
【００９６】
ここで、条件を取得するのを待って（ステップＳ１３０１：Ｎｏ）、取得した場合（ステップＳ１３０１：Ｙｅｓ）、検出部３０２により、設計対象の設計仕様を示す有限状態機械モデルに表現されている状態集合の中から、取得部３０１によって取得された条件を満たす状態を検出する検出処理を実行する（ステップＳ１３０２）。このあと、算出部３０４により、状態カバレッジまたは／および遷移カバレッジを算出する（ステップＳ１３０３）。
【００９７】
そして、判定部３０３により、算出部３０４によって算出された状態カバレッジまたは／および遷移カバレッジに基づいて、非検出の状態または／および遷移が存在するか否かを判定する（ステップＳ１３０４）。ここで、非検出の状態または／および遷移が存在しない場合（ステップＳ１３０４：Ｎｏ）、出力部３０５により、非検出の状態または／および遷移が存在しないことを示すＯＫ結果を出力して（ステップＳ１３０５）、本フローチャートによる一連の処理を終了する。
【００９８】
一方、ステップＳ１３０４において、非検出の状態または／および遷移が存在する場合（ステップＳ１３０４：Ｙｅｓ）、作成部３０７により、非検出の状態または／および遷移を特定するメッセージ情報を作成して（ステップＳ１３０６）、最後に、出力部３０５により、作成部３０７によって作成されたメッセージ情報を含むＮＧ結果を出力して（ステップＳ１３０７）、本フローチャートによる一連の処理を終了する。
【００９９】
つぎに、図１３に示したステップＳ１３０２における検出処理の処理手順について説明する。図１４は、ステップＳ１３０２における検出処理の処理手順を示すフローチャートである。図１４のフローチャートにおいて、まず、設計対象の設計仕様を示す有限状態機械モデルをＫｒｉｐｋｅモデルに変換する（ステップＳ１４０１）。
【０１００】
このあと、各レジスタの値を参照することにより、Ｋｒｉｐｋｅモデルの初期状態を特定する（ステップＳ１４０２）。さらに、取得部３０１によって取得された事前条件、事後条件および不変条件を用いて、事後条件を満たす状態を特定し（ステップＳ１４０３）、事前条件を満たす状態を特定し（ステップＳ１４０４）、不変条件を満たす状態を特定する（ステップＳ１４０５）。
【０１０１】
このあと、ステップＳ１４０２〜ステップＳ１４０５において特定された状態を用いて、初期状態から事後条件を満たす状態に辿り着くまでの間に、事前条件を満たす状態を経由し、かつ、不変条件を満たす状態遷移パスを探索する（ステップＳ１４０６）。そして、この状態遷移パス内の状態または／および遷移を検出して（ステップＳ１４０７）、図１３に示したステップＳ１３０３に移行する。
【０１０２】
このように、この発明の実施の形態によれば、設計対象の有限状態機械モデルに表現されている状態集合に対する、設計対象のユースケース記述に定義されている状態集合の網羅性を検証することにより、設計仕様と要求仕様との間の整合性を確認することができる。また、有限状態機械モデルに表現されている遷移集合に対する、ユースケース記述に定義されている遷移集合の網羅性を検証することにより、設計仕様と要求仕様との間の整合性を確認することができる。
【０１０３】
具体的には、ユースケース（または、パス）を実行するために満たすべき事前条件、事後条件および不変条件を用いて、ユースケース記述に定義されているユースケースの動作を実現する状態遷移パスを探索し、該状態遷移パス内の状態または／および遷移を検出することができる。
【０１０４】
そして、設計対象が取ることのできる有限の状態集合に対して、検出された状態がどの程度網羅しているのかをあらわす状態カバレッジを用いて、非検出の状態の存否を判定することができる。また、ある状態から他の状態への可能な有限の遷移集合に対して、検出された遷移がどの程度網羅しているのかをあらわす遷移カバレッジを用いて、非検出の遷移の存否を判定することができる。
【０１０５】
これにより、実装の前段階において、ユースケース記述に未定義のユースケース（またはパス）を発見することができる。さらに、判定結果に含まれるメッセージ情報をもとに、非検出の状態または／および遷移を特定することができるとともに、該非検出の状態または／および遷移に辿り着くまでの状態遷移パスを特定することができる。
【０１０６】
このため、実装の前段階において、未定義のユースケースをユースケース記述に追加して定義するなどの修正をおこなうことができる。この結果、テストケース漏れによる検証作業の手戻りを削減することができ、論理検証の品質向上および検証作業の短縮化を実現することができる。
【０１０７】
以上説明したように、仕様検証プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、仕様検証装置、および仕様検証方法によれば、実装の前段階において、設計仕様に対する要求仕様の整合性をチェックすることにより、効率的かつ網羅的な論理検証を実現し、設計者の負担軽減および設計期間の短縮化を図ることができる。
【０１０８】
なお、本実施の形態で説明した仕様検証方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
【０１０９】
また、本実施の形態で説明した仕様検証装置２００は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、たとえば、上述した仕様検証装置２００の機能的構成３０１〜３０７をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、仕様検証装置２００を製造することができる。
【０１１０】
（付記１）設計対象の設計仕様に対する当該設計対象の要求仕様の網羅性を検証させる仕様検証プログラムであって、
前記設計対象の要求仕様を示すユースケース記述の中から、各ユースケースを実行するために満たすべき条件を取得させる取得工程と、
前記設計対象の設計仕様を示す有限状態機械モデルに表現されている状態集合の中から、前記取得工程によって取得された条件を満たす状態を検出させる検出工程と、
前記検出工程によって検出された結果、前記状態集合のうち検出されなかった非検出の状態が存在するか否かを判定させる判定工程と、
前記判定工程によって判定された判定結果を出力させる出力工程と、
をコンピュータに実行させることを特徴とする仕様検証プログラム。
【０１１１】
（付記２）前記検出工程は、
前記有限状態機械モデルに表現されている状態間の遷移集合の中から、前記取得工程によって取得された条件を満たす遷移を検出させ、
前記判定工程は、
前記検出工程によって検出された結果、前記遷移集合のうち検出されなかった非検出の遷移が存在するか否かを判定させることを特徴とする付記１に記載の仕様検証プログラム。
【０１１２】
（付記３）前記取得工程は、
前記ユースケースごとに、前記ユースケースの実行前に満たすべき事前条件と、前記ユースケースの実行後に満たすべき事後条件と、前記事後条件が発生するまでの間に前記ユースケースに要求される不変条件と、を取得させ、
前記検出工程は、
前記有限状態機械モデルの初期状態から前記事後条件を満たす状態に辿り着くまでの間に、前記事前条件を満たす状態を経由し、かつ、前記不変条件を満たす状態遷移パス内の状態を検出させることを特徴とする付記１または２に記載の仕様検証プログラム。
【０１１３】
（付記４）前記検出工程は、
前記状態遷移パス内の状態間の遷移を検出させることを特徴とする付記３に記載の仕様検証プログラム。
【０１１４】
（付記５）前記有限状態機械モデルに表現されている状態集合の状態数に対する、前記検出工程によって検出された状態の状態数の割合（以下、「状態カバレッジ」という）を算出させる算出工程を前記コンピュータに実行させ、
前記判定工程は、
前記算出工程によって算出された状態カバレッジに基づいて、前記非検出の状態の存否を判定させることを特徴とする付記１〜４のいずれか一つに記載の仕様検証プログラム。
【０１１５】
（付記６）前記算出工程は、
前記有限状態機械モデルに表現されている遷移集合の遷移数に対する、前記検出工程によって検出された遷移の遷移数の割合（以下、「遷移カバレッジ」という）を算出させ、
前記判定工程は、
前記算出工程によって算出された遷移カバレッジに基づいて、前記非検出の遷移の存否を判定させることを特徴とする付記５に記載の仕様検証プログラム。
【０１１６】
（付記７）前記判定結果は、
前記非検出の状態または／および遷移の存否を示すことを特徴とする付記１〜６のいずれか一つに記載の仕様検証プログラム。
【０１１７】
（付記８）前記判定結果は、
前記非検出の状態または／および遷移を特定するメッセージ情報を含むことを特徴とする付記１〜７のいずれか一つに記載の仕様検証プログラム。
【０１１８】
（付記９）前記判定結果は、
前記有限状態機械モデルの初期状態から前記非検出の状態または／および遷移に辿り着くまでの状態遷移パスを特定するメッセージ情報を含むことを特徴とする付記１〜８のいずれか一つに記載の仕様検証プログラム。
【０１１９】
（付記１０）付記１〜９のいずれか一つに記載の仕様検証プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
【０１２０】
（付記１１）設計対象の設計仕様に対する当該設計対象の要求仕様の網羅性を検証する仕様検証装置であって、
前記設計対象の要求仕様を示すユースケース記述の中から、各ユースケースを実行するために満たすべき条件を取得する取得手段と、
前記設計対象の設計仕様を示す有限状態機械モデルに表現されている状態集合の中から、前記取得手段によって取得された条件を満たす状態を検出する検出手段と、
前記検出手段によって検出された結果、前記状態集合のうち検出されなかった非検出の状態が存在するか否かを判定する判定手段と、
前記判定手段によって判定された判定結果を出力する出力手段と、
を備えることを特徴とする仕様検証装置。
【０１２１】
（付記１２）前記検出手段は、
前記有限状態機械モデルに表現されている状態間の遷移集合の中から、前記取得手段によって取得された条件を満たす遷移を検出し、
前記判定手段は、
前記検出手段によって検出された結果、前記遷移集合のうち検出されなかった非検出の遷移が存在するか否かを判定することを特徴とする付記１１に記載の仕様検証装置。
【０１２２】
（付記１３）前記取得手段は、
前記ユースケースごとに、前記ユースケースの実行前に満たすべき事前条件と、前記ユースケースの実行後に満たすべき事後条件と、前記事後条件が発生するまでの間に前記ユースケースに要求される不変条件と、を取得し、
前記検出手段は、
前記有限状態機械モデルの初期状態から前記事後条件を満たす状態に辿り着くまでの間に、前記事前条件を満たす状態を経由し、かつ、前記不変条件を満たす状態遷移パス内の状態を検出することを特徴とする付記１１または１２に記載の仕様検証装置。
【０１２３】
（付記１４）前記検出手段は、
前記状態遷移パス内の状態間の遷移を検出することを特徴とする付記１３に記載の仕様検証装置。
【０１２４】
（付記１５）前記有限状態機械モデルに表現されている状態集合の状態数に対する、前記検出手段によって検出された状態の状態数の割合（以下、「状態カバレッジ」という）を算出する算出手段を含み、
前記判定手段は、
前記算出手段によって算出された状態カバレッジに基づいて、前記非検出の状態の存否を判定することを特徴とする付記１１〜１４のいずれか一つに記載の仕様検証装置。
【０１２５】
（付記１６）前記算出手段は、
前記有限状態機械モデルに表現されている遷移集合の遷移数に対する、前記検出手段によって検出された遷移の遷移数の割合（以下、「遷移カバレッジ」という）を算出し、
前記判定手段は、
前記算出手段によって算出された遷移カバレッジに基づいて、前記非検出の遷移の存否を判定することを特徴とする付記１５に記載の仕様検証装置。
【０１２６】
（付記１７）前記判定結果は、
前記非検出の状態または／および遷移の存否を示すことを特徴とする付記１１〜１６のいずれか一つに記載の仕様検証装置。
【０１２７】
（付記１８）前記判定結果は、
前記非検出の状態または／および遷移を特定するメッセージ情報を含むことを特徴とする付記１１〜１７のいずれか一つに記載の仕様検証装置。
【０１２８】
（付記１９）前記判定結果は、
前記有限状態機械モデルの初期状態から前記非検出の状態または／および遷移に辿り着くまでの状態遷移パスを特定するメッセージ情報を含むことを特徴とする付記１１〜１８のいずれか一つに記載の仕様検証装置。
【０１２９】
（付記２０）設計対象の設計仕様に対する当該設計対象の要求仕様の網羅性を検証する仕様検証方法であって、
前記設計対象の要求仕様を示すユースケース記述の中から、各ユースケースを実行するために満たすべき条件を取得する取得工程と、
前記設計対象の設計仕様を示す有限状態機械モデルに表現されている状態集合の中から、前記取得工程によって取得された条件を満たす状態を検出する検出工程と、
前記検出工程によって検出された結果、前記状態集合のうち検出されなかった非検出の状態が存在するか否かを判定する判定工程と、
前記判定工程によって判定された判定結果を出力する出力工程と、
を含んだことを特徴とする仕様検証方法。
【０１３０】
（付記２１）前記検出工程は、
前記有限状態機械モデルに表現されている状態間の遷移集合の中から、前記取得工程によって取得された条件を満たす遷移を検出し、
前記判定工程は、
前記検出工程によって検出された結果、前記遷移集合のうち検出されなかった非検出の遷移が存在するか否かを判定することを特徴とする付記２０に記載の仕様検証方法。
【０１３１】
（付記２２）前記取得工程は、
前記ユースケースごとに、前記ユースケースの実行前に満たすべき事前条件と、前記ユースケースの実行後に満たすべき事後条件と、前記事後条件が発生するまでの間に前記ユースケースに要求される不変条件と、を取得し、
前記検出工程は、
前記有限状態機械モデルの初期状態から前記事後条件を満たす状態に辿り着くまでの間に、前記事前条件を満たす状態を経由し、かつ、前記不変条件を満たす状態遷移パス内の状態を検出することを特徴とする付記２０または２１に記載の仕様検証方法。
【０１３２】
（付記２３）前記検出工程は、
前記状態遷移パス内の状態間の遷移を検出することを特徴とする付記２２に記載の仕様検証方法。
【０１３３】
（付記２４）前記有限状態機械モデルに表現されている状態集合の状態数に対する、前記検出工程によって検出された状態の状態数の割合（以下、「状態カバレッジ」という）を算出する算出工程を含み、
前記判定工程は、
前記算出工程によって算出された状態カバレッジに基づいて、前記非検出の状態の存否を判定することを特徴とする付記２０〜２３のいずれか一つに記載の仕様検証方法。
【０１３４】
（付記２５）前記算出工程は、
前記有限状態機械モデルに表現されている遷移集合の遷移数に対する、前記検出工程によって検出された遷移の遷移数の割合（以下、「遷移カバレッジ」という）を算出し、
前記判定工程は、
前記算出工程によって算出された遷移カバレッジに基づいて、前記非検出の遷移の存否を判定することを特徴とする付記２４に記載の仕様検証方法。
【０１３５】
（付記２６）前記判定結果は、
前記非検出の状態または／および遷移の存否を示すことを特徴とする付記２０〜２５のいずれか一つに記載の仕様検証方法。
【０１３６】
（付記２７）前記判定結果は、
前記非検出の状態または／および遷移を特定するメッセージ情報を含むことを特徴とする付記２０〜２６のいずれか一つに記載の仕様検証方法。
【０１３７】
（付記２８）前記判定結果は、
前記有限状態機械モデルの初期状態から前記非検出の状態または／および遷移に辿り着くまでの状態遷移パスを特定するメッセージ情報を含むことを特徴とする付記２０〜２７のいずれか一つに記載の仕様検証方法。
【産業上の利用可能性】
【０１３８】
以上のように、本発明にかかる仕様検証プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、仕様検証装置、および仕様検証方法は、各種ソフトウェアやハードウェアなどの設計対象に有用である。
【図面の簡単な説明】
【０１３９】
【図１】この発明の実施の形態にかかる仕様検証の概要を示す説明図である。
【図２】この発明の実施の形態にかかる仕様検証装置のハードウェア構成を示す説明図である。
【図３】この発明の実施の形態にかかる仕様検証装置の機能的構成を示すブロック図である。
【図４】ユースケース記述のデータ構造を示す説明図である。
【図５】演算器のユースケース図である。
【図６】演算器のユースケース記述を示す説明図である。
【図７】演算器の状態遷移グラフを示す説明図（その１）である。
【図８】演算器の状態遷移グラフを示す説明図（その２）である。
【図９】ディスプレイに表示される画面例を示す説明図である。
【図１０】ユースケースの追加を示す説明図（その１）である。
【図１１】ユースケースの追加を示す説明図（その２）である。
【図１２】パスの追加を示す説明図である。
【図１３】この発明の実施の形態にかかる仕様検証装置の仕様検証処理手順を示すフローチャートである。
【図１４】ステップＳ１３０２における検出処理の処理手順を示すフローチャートである。
【符号の説明】
【０１４０】
２００  仕様検証装置
３０１  取得部
３０２  検出部
３０３  判定部
３０４  算出部
３０５  出力部
３０６  選択部
３０７  作成部
５００  演算器
５０１，１００１  アクター
５０２，５０３，１００２  ユースケース
６１０，６２０，１２００  ユースケース記述
７００，８００  状態遷移グラフ
９００  判定結果
９１０，９２０，９３０  メッセージ情報
９１１，９２１，９３１  所定位置
【図１】
2008310663.tif 000003
【図２】
2008310663.tif 000004
【図３】
2008310663.tif 000005
【図４】
2008310663.tif 000006
【図５】
2008310663.tif 000007
【図６】
2008310663.tif 000008
【図７】
2008310663.tif 000009
【図８】
2008310663.tif 000010
【図９】
2008310663.tif 000011
【図１０】
2008310663.tif 000012
【図１１】
2008310663.tif 000013
【図１２】
2008310663.tif 000014
【図１３】
2008310663.tif 000015
【図１４】
2008310663.tif 000016