JP2010055293A - 検証支援プログラム、検証支援装置、および検証支援方法 - Google Patents

検証支援プログラム、検証支援装置、および検証支援方法 Download PDF

Info

Publication number
JP2010055293A
JP2010055293A JP2008218411A JP2008218411A JP2010055293A JP 2010055293 A JP2010055293 A JP 2010055293A JP 2008218411 A JP2008218411 A JP 2008218411A JP 2008218411 A JP2008218411 A JP 2008218411A JP 2010055293 A JP2010055293 A JP 2010055293A
Authority
JP
Japan
Prior art keywords
description
node
implementation
location
change
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008218411A
Other languages
English (en)
Other versions
JP5067317B2 (ja
Inventor
Kazumichi Morizawa Rafael
カズミチ モリザワ ラファエル
Ryosuke Oishi
亮介 大石
Akio Matsuda
明男 松田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008218411A priority Critical patent/JP5067317B2/ja
Priority to US12/472,995 priority patent/US20100058262A1/en
Publication of JP2010055293A publication Critical patent/JP2010055293A/ja
Application granted granted Critical
Publication of JP5067317B2 publication Critical patent/JP5067317B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】仕様変更時における仕様と実装との整合性確認の効率化を図ること。
【解決手段】検証支援装置100は、検証対象の仕様変更後の機能に関する実装記述Hに基づく制御フローグラフ110と検証対象の仕様変更後の仕様記述S2とを関連付けて、実装記述Hおよび仕様記述S2に関連付けられた制御フローグラフ120と、制御フローグラフ120に関連付けられた仕様記述S2とを作成する。また、仕様変更前後の仕様記述S1,S2から、検証対象の仕様変更により影響を受ける仕様記述S2内の影響範囲記述130を特定する。そして、これら実装記述Hと制御フローグラフ120と影響範囲記述130とを用いて、それぞれのデータ間の双方向リンクを辿ることにより、検証対象の仕様変更により変更すべき実装記述H内の記述箇所を検索する。
【選択図】図1

Description

この発明は、検証対象のアサーションベース検証に関し、特に、検証対象の仕様変更後のアサーションの整合性確認を支援する技術に関する。
近年、ソフトウェアやハードウェアのシステム開発においては、設計技術の進歩によりシステムが大規模化、複雑化している。一方で、システムの大規模化、複雑化により、開発工程全体における検証工程の占める割合が増加する傾向にある。この検証工程では、システムの機能が仕様通りに動作するか否かの検証がおこなわれる。
システムの機能を検証するためには、仕様書に記載されているシステムの機能を網羅的に検証する必要がある。このため、仕様書からシステムの機能を検証するために意味のある一連の操作としてシナリオを抽出する必要がある。従来においては、自然言語で記述された仕様書の記述内容をコンピュータで処理可能な言語に変換し、シナリオを系統的に生成する技術がある。
また、アサーションを用いて、システムの機能を検証するアサーションベース検証がある。アサーションとは、システムの機能が正しく動作するために守るべき制約条件であり、設計意図としての動作を検証するために実装中に記述される文である。このアサーションは、アサーション記述言語を用いて、自然言語で記述された仕様書を翻訳する形で人手により作成される。ところが、近年のシステムの大規模化により、必要となるアサーションの数が膨大なものとなっており、作業者にかかる作業負担が増大している。そこで、従来において、アサーション記述言語に応じて仕様書からアサーションを自動生成する技術がある。
特開2007−257291号公報 特開2007−11467号公報
しかしながら、上述した従来技術では、システムの仕様とアサーションとの関係が確保されていないため、システムの仕様が変更されると、その都度、実装中に散らばっている膨大な数のアサーションを人手により一つ一つチェックして変更する必要がある。ところが、この作業は、アサーション記述言語や、システムの特性や機能を十分理解した上で、動作を明確に記述し、動作が生じる条件を詳細に示す必要があり、作業者にかかる負担が大きい。
したがって、実装中に散らばっているアサーションを一つ一つチェックして変更するには、膨大な作業工数を要することとなり、検証作業にかかる作業時間および作業負担が増大するという問題があった。さらには、人手による作業のためチェック漏れや変更漏れが発生する可能性が高く、検証品質の低下を招くという問題があった。
特に、最初にアサーションを作成した技術者と、仕様変更後にアサーションを変更する技術者とが異なる場合には、実装中に散らばっているアサーションが、どの動作に紐付けられたアサーションなのかを特定することは非常に難しく、検証作業にかかる作業時間および作業負担がさらに増大するという問題がある。
上述した従来技術による問題点を解消するため、検証対象の仕様変更にともなって変更すべき実装記述内のアサーションを効率的かつ網羅的に特定可能とすることにより、仕様変更時における実装と仕様との整合性確認の効率化を図ることを目的とする。
上述した課題を解決し、目的を達成するため、この開示技術は、検証対象の機能を実現するために実行される一連の要素群および前記機能を実現するために満たすべき前記要素の制約条件が記述された仕様記述と、前記検証対象の機能に関する実装記述とを取得し、取得された実装記述に基づいて、前記一連の要素群および当該要素の制約条件をノードとしてグラフ化された構造体を作成し、作成された構造体内のノードと、当該ノードがあらわす要素または制約条件に関する前記実装記述内の記述箇所とを関連付け、前記仕様記述内の要素または制約条件に関する記述を用いて、前記構造体の中から前記要素または前記制約条件をあらわすノードを検出することにより、前記構造体内のノードと、当該ノードがあらわす要素または制約条件に関する前記仕様記述内の記述箇所とを関連付け、関連付けられた関連付け結果を出力することを要件とする。
この開示技術によれば、検証対象の仕様変更後の機能に関する実装記述に基づく構造体を介して、仕様変更後の仕様記述内の要素および制約条件に関する記述箇所と、実装記述内の要素および制約条件に関する記述箇所とを関連付けることができる。
この検証支援プログラム、検証支援装置、および検証支援方法によれば、検証対象の仕様変更にともなって変更すべき実装記述内のアサーションを効率的かつ網羅的に特定可能とすることにより、仕様変更時における実装と仕様との整合性確認の効率化を図ることができるという効果を奏する。
以下に添付図面を参照して、この検証支援プログラム、検証支援装置、および検証支援方法の好適な実施の形態を詳細に説明する。この検証支援プログラム、検証支援装置、および検証支援方法では、検証対象の実装記述に基づく制御フローグラフを介して、実装記述と仕様記述とを関連付けることにより、仕様変更にともなって変更すべき実装記述内のアサーション記述を効率的かつ網羅的に検索する手法を提案する。
(本実施の形態の概要)
まず、本実施の形態の概要について説明する。本実施の形態では、検証対象となる半導体集積回路(たとえば、LSI:Large Scale Integration)の仕様変更にともなう仕様と実装との整合性確認を支援する手法を提案する。特に、機能検証に利用されるアサーションに着目し、仕様変更にともなって変更すべき実装記述内のアサーション記述を効率的かつ網羅的に特定する手法を提案する。
図1は、本実施の形態の概要を示す説明図である。以下、本実施の形態にかかる検証支援装置100において実行される検証支援処理の流れを説明する。図1において、まず、検証支援装置100は、入力データとして与えられた検証対象の仕様変更後の機能に関する実装記述Hに基づいて、検証対象の実装時における制御の流れをあらわす制御フローグラフを作成する。この結果、実装記述Hと関連付けられた制御フローグラフ110(詳細は、後述の図7参照)が作成される。
つぎに、入力データとして与えられた検証対象の仕様変更後の仕様記述S2と、制御フローグラフ110とを関連付ける。この結果、実装記述Hおよび仕様記述S2に関連付けられた制御フローグラフ120と、制御フローグラフ120と関連付けられた仕様記述S2とが作成される。
このあと、仕様変更前の仕様記述S1と仕様変更後の仕様記述S2(制御フローグラフ120と関連付けられた仕様記述S2)との差分を求めることにより、仕様記述S2の中から検証対象の仕様変更により影響を受ける記述箇所を抽出する。この結果、仕様変更により影響を受ける記述箇所の集合である影響範囲記述130が作成される。
そして、これら仕様変更後の実装記述Hと影響範囲記述130と制御フローグラフ120とを用いて、それぞれのデータ間の双方向リンクを辿ることにより、検証対象の仕様変更により変更すべき実装記述H内の記述箇所を検索し、最後に、その検索結果をレポート情報140として出力する。
検証者は、レポート情報140を確認することで、検証対象の仕様変更により変更すべき実装記述H内の記述箇所を把握することができる。特に、実装記述H内に散らばっている膨大な数(たとえば、数千〜数十万)のアサーション記述の中から、仕様変更にともなって変更すべきアサーション記述を網羅的に把握することができる。
(検証支援装置のハードウェア構成)
つぎに、実施の形態にかかる検証支援装置100のハードウェア構成について説明する。図2は、検証支援装置のハードウェア構成を示すブロック図である。図2において、検証支援装置100は、CPU(Central Processing Unit)201と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、磁気ディスクドライブ204と、磁気ディスク205と、光ディスクドライブ206と、光ディスク207と、ディスプレイ208と、I/F(Interface)209と、キーボード210と、マウス211と、スキャナ212と、プリンタ213と、を備えている。また、各構成部はバス200によってそれぞれ接続されている。
ここで、CPU201は、検証支援装置100の全体の制御を司る。ROM202は、ブートプログラムなどのプログラムを記憶している。RAM203は、CPU201のワークエリアとして使用される。磁気ディスクドライブ204は、CPU201の制御にしたがって磁気ディスク205に対するデータのリード/ライトを制御する。磁気ディスク205は、磁気ディスクドライブ204の制御で書き込まれたデータを記憶する。
光ディスクドライブ206は、CPU201の制御にしたがって光ディスク207に対するデータのリード/ライトを制御する。光ディスク207は、光ディスクドライブ206の制御で書き込まれたデータを記憶したり、光ディスク207に記憶されたデータをコンピュータに読み取らせたりする。
ディスプレイ208は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ208は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
インターフェース(以下、「I/F」と略する。)209は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク214に接続され、このネットワーク214を介して他の装置に接続される。そして、I/F209は、ネットワーク214と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F209には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード210は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス211は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ212は、画像を光学的に読み取り、検証支援装置100内に画像データを取り込む。なお、スキャナ212は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ213は、画像データや文書データを印刷する。プリンタ213には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
(仕様記述のデータ構造)
つぎに、検証対象の仕様記述(たとえば、図1に示した仕様記述S1,S2)のデータ構造について説明する。図3は、仕様記述のデータ構造をモデル化して示す説明図である。図3に示すように、仕様モデル300は、検証対象に関する機能群とシナリオ群と操作群とからなる階層構造を有している。
具体的には、仕様モデル300は、機能F1〜FXから構成されている。また、機能Fi(i=1,2,…,X)は、シナリオS1〜SYから構成されている。また、シナリオSj(j=1,2,…,Y)は、操作Op1〜OpZから構成されている。シナリオSjおよび操作Opkには、事前条件、事後条件が定義されている。なお、機能、シナリオ、操作、事前条件および事後条件に関する詳細な説明は後述する。
(仕様記述の記述内容)
ここで、図1に示した仕様変更後の仕様記述S2を例に挙げて、仕様記述の具体例について説明する。図4は、仕様記述の具体例を示す説明図(その1)である。図4において、仕様記述S2には、検証対象の機能仕様がXML(Extensible Markup Language)を用いて記述されている。なお、図面では、仕様記述S2の一部を抜粋して表示している。
具体的には、仕様記述S2には、機能「Function_A」を実現するために実行される一連の操作群を定義するシナリオ「Scenario_1」と、一連の操作「Operation_1」、「Operation_2」、「While」および「Operation_3」とが記述されている。
また、<Precondition>と</Precondition>に囲まれた文字列は、直前に記述されているシナリオまたは操作に関する事前条件をあらわしている。また、<Postcondition>と</Postcondition>に囲まれた文字列は、直前に記述されているシナリオまたは操作に関する事後条件をあらわしている。
本実施の形態では、シナリオや操作に定義されている事前条件、事後条件をアサーションとして扱う。アサーションは、検証対象の機能が正しく動作するために守るべき制約条件であり、設計意図としての動作を検証するために実装中に記述される。また、上述の形式でアサーションを記述することで、仕様記述内のアサーション記述をコンピュータが認識することができる。なお、アサーションとして、ここでは事前条件、事後条件のみを扱うため、それ以外の要素(たとえば、不変条件)は省略している。
また、仕様記述S2には、検証対象の実装記述Hを用いて作成される制御フローグラフ内の各ノードと、仕様記述S2内の記述とを関連付けるリンク情報の挿入位置を特定するリンク項目401〜404が記述されている。たとえば、リンク項目401は、仕様記述S2内の機能「Function_A」と制御フローグラフとを関連付けるリンク情報の挿入位置となる。
また、リンク項目402は、仕様記述S2内の操作「Operation_1」と、制御フローグラフ内の操作「Operation_1」をあらわすノードとを関連付けるリンク情報の挿入位置となる。なお、図4中、符号405〜414は後述の説明で用いる。
(実装記述の記述内容)
つぎに、検証対象の仕様変更後の機能「Function_A」に関する実装記述Hを例に挙げて、実装記述の具体例について説明する。図5は、実装記述の具体例を示す説明図である。図5において、実装記述Hには、検証対象の機能「Function_A」を実現するためのプログラムがHDL(Hardware Description Language)を用いて記述されている。
具体的には、実装記述Hには、機能「Function_A」を実現するために実行される一連の操作群「Operation_1」、「Operation_2」、「While」および「Operation_3」が記述されている。ここでは、機能「Function_A」を構成するシナリオが1つのため、シナリオ名に関する記述は省略されている。
また、実装記述Hにおいて、『//』で始まる1行はコメントをあらわしている。具体的には、アサーションのタイプ(事前条件、事後条件)がコメントとして記述されている。このコメント表記を利用することで、実装記述H内のアサーション記述をコンピュータが認識することができる。
なお、実装記述Hでは、機能「Function_A」を構成するシナリオに関する記述が省略されているため、シナリオの事前条件、事後条件が機能「Function_A」の事前条件、事後条件として記述されている。また、符号501〜507は後述の説明で用いる。
(検証支援装置の機能的構成)
つぎに、検証支援装置100の機能的構成について説明する。図6は、検証支援装置の機能的構成を示すブロック図である。図6において、検証支援装置100は、取得部601と、作成部602と、第1の関連付け部603と、第2の関連付け部604と、検出部605と、抽出部606と、特定部607と、選択部608と、探索部609と、決定部610と、第1の検索部611と、第2の検索部612と、出力部613と、を含む構成である。
この制御部となる機能(取得部601〜出力部613)は、具体的には、たとえば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶されたプログラムをCPU201に実行させることにより、または、I/F209により、その機能を実現する。
まず、取得部601は、検証対象の機能を実現するために実行される一連の要素群および機能を実現するために満たすべき要素の制約条件が記述された仕様記述と、検証対象の機能に関する実装記述とを取得する機能を有する。
ここで、仕様記述は、検証対象の機能、シナリオ、操作、パラメータなどが仕様項目として記述された電子文書である(たとえば、図4に示した仕様記述S2)。実装記述は、検証対象の仕様やアルゴリズムがプログラム言語のプログラムとして記述された電子文書である(たとえば、図5に示した実装記述H)。
また、要素とは、検証対象の機能を構成するシナリオ、または、シナリオを構成する操作である。シナリオとは、機能を実現するために実行される一連の操作を定義するものである。また、操作とは、検証対象の仕様を細かく分解して得られる1つの動作である。これらシナリオおよび操作には、属性情報として制約条件が定義されている。制約条件としては、たとえば、事前条件、事後条件および不変条件がある。
事前条件とは、機能を実現する一連の操作の実行前に満たすべき(真となる)条件である。事後条件とは、一連の操作の実行後に満たすべき条件である。不変条件とは、事後条件が発生するまでの間(一連の操作の実行中)に要求される不変の条件である。上述したように、本実施の形態では、事前条件および事後条件をアサーションとして扱う。
なお、仕様記述(仕様記述S1,S2)および実装記述(実装記述H)は、検証支援装置100に直接入力することとしてもよく、また、外部のコンピュータ装置から取得することとしてもよい。また、取得された仕様記述、実装記述は、図2に示したRAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。
作成部602は、取得部601によって取得された実装記述に基づいて、一連の要素群および当該要素の制約条件をノードとしてグラフ化された構造体を作成する機能を有する。具体的には、たとえば、実装記述内に記述されているシナリオ、操作、事前条件、事後条件および不変条件をノードとして有向グラフ化することにより、検証対象の実装時における制御の流れをあらわす制御フローグラフ(CFG:Control Flow Graph)を作成することとしてもよい。
なお、制御フローグラフは実装記述をもとに作成されるため、実装記述が機能ごとに用意された場合には、制御フローグラフも機能ごとに作成されることとなる。また、制御フローグラフを作成する具体的な手法は、公知技術のため説明を省略する(たとえば、「Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman,“Compilers”,pp.528−534,Addison Wesley,1985」参照。)。
ここで、図5に示した実装記述Hに基づく制御フローグラフについて説明する。図7は、制御フローグラフの具体例を示す説明図である。図7において、制御フローグラフ700は、機能「Function_A」の制御の流れをグラフ化してあらわす構造体である。具体的には、制御フローグラフ700は、シナリオ、操作、事前条件および事後条件をノードN1〜N15として表現し、機能「Function_A」の制御の流れをノード間の有向エッジとして表現したものである。
たとえば、ノードN2は、実装記述H内の記述箇所501に記述されている事前条件「i>0」を表現している。また、ノードN4は、実装記述H内の記述箇所502に記述されている操作「Operation_1」を表現している。また、ノードN8は、実装記述H内の記述箇所504の事後条件「val>0」を表現している。
この制御フローグラフ700では、シナリオまたは操作をあらわすノードの上下に、事前条件、事後条件をあらわすノードが付属するノード構造を有している(図7中右上参照)。このため、実装記述H内にシナリオ、事前条件および事後条件に関する記述箇所がない場合であっても、シナリオ、事前条件および事後条件をあらわすノードが表現されている。
たとえば、ノードN1は、機能「Function_A」を構成するシナリオを表現している。また、ノードN3は、操作「Operation_1」の事前条件「なし」を表現している。また、ノードN5は、操作「Operation_1」の事後条件「なし」を表現している。
このようなノード構造によれば、各シナリオ、操作をあらわすノードを特定して上下に付属するノードを特定することにより、各シナリオ、操作の事前条件および事後条件をコンピュータにより自動認識することができる。なお、詳細は図9を用いて説明するが、この制御フローグラフ700の実体は、XMLなどを用いて記述された電子情報である。また、作成された構造体(たとえば、制御フローグラフ700)は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。
図6の説明に戻り、第1の関連付け部603は、作成部602によって作成された構造体内のノードと、当該ノードがあらわす要素または制約条件に関する実装記述内の記述箇所とを関連付ける機能を有する。具体的には、たとえば、制御フローグラフ700内のノードと、ノード(ここでは、ノードN2,N4,N7,N8,N10,N13,N15)の作成元である実装記述H内の各記述箇所501〜507とを関連付ける。
より具体的には、たとえば、実装記述Hを読み込む際に各記述箇所の行番号を特定し、ノードの作成元となる記述箇所の行番号とノードとを関連付けたリンク情報を生成することとしてもよい。ここでは、第1の関連付け部603による第1の関連付け結果は、各ノードN2,N4,N7,N8,N10,N13,N15と各記述箇所501〜507とのリンク関係をあらわすリンク情報となる。このリンク情報は、たとえば、リスト化されてRAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。また、制御フローグラフ700内にリンク情報を直接挿入することとしてもよい。
ここで、制御フローグラフ700と実装記述Hとのリンク関係について説明する。図8は、制御フローグラフと実装記述とのリンク関係をあらわす説明図である。図8において、リンクL1〜L7は、制御フローグラフ700内の各ノードN2,N4,N7,N8,N10,N13,N15と、実装記述H内の各記述箇所501〜507とのリンク関係をあらわしている。
リンクL1を例に挙げると、ノードN2は、実装記述H内の記述箇所501をもとに作成されている。このため、ノードN2は、作成元である記述箇所501とリンク関係を有する。これらリンクL1〜L7はリンク情報(たとえば、実装記述H内の行番号)として、制御フローグラフ700内に挿入される。
ここで、リンク情報が挿入された制御フローグラフ700のデータ構造について説明する。図9は、制御フローグラフのデータ構造を示す説明図(その1)である。図9において、CFG記述900には、制御フローグラフ700に示す機能「Function_A」の制御の流れがXMLを用いて記述されている。
また、CFG記述900には、制御フローグラフ700内の各ノードN2,N4,N7,N8,N10,N13,N15と、実装記述H内の各記述箇所501〜507とのリンクL1〜L7をあらわすリンク情報901〜905が挿入されている。これらリンク情報901〜905は、リンクL1〜L7のうち一部のリンク関係をあらわしている。
リンク情報901には、制御フローグラフ700の作成元である実装記述Hのファイル名『file.v』と機能「Function_A」が記述されている実装記述H内の行番号『1』が含まれている。このリンク情報901は、制御フローグラフ700と実装記述Hとの関連付けをあらわす情報であり、リンクL1〜L7のいずれにも相当しない。
また、リンク情報902には、操作「Operation_1」が記述されている実装記述H内の行番号『7』が含まれている。このリンク情報902は、リンクL2に相当する。また、リンク情報903には、操作「Operation_2」が記述されている実装記述H内の行番号『8』が含まれている。このリンク情報903は、リンクL3に相当する。
また、リンク情報904には、操作「While」が記述されている実装記述H内の行番号『11』が含まれている。このリンク情報904は、リンクL5に相当する。また、リンク情報905には、操作「Operation_3」が記述されている実装記述H内の行番号『12』が含まれている。このリンク情報905は、リンクL6に相当する。
これらリンク情報901〜905によれば、ノードN4,N7,N10,N13と関連付けられた実装記述H内の記述箇所502,503,505,506を特定することができる。また、上述したように、CFG記述900には、事前条件、事後条件をあらわすノードN2,N8,N15(リンクL1,L4,L7)に関するリンク情報が挿入されていない。
なぜなら、シナリオ、操作をあらわすノードのリンク情報から実装記述H内の記述箇所が特定できれば、あとは、コメント表記を参照して、そのシナリオ、操作の事後条件、事前条件が記述されている記述箇所を特定することができるからである(詳細は後述)。また、CFG記述900には、制御フローグラフ700内の各ノードN1〜N15と、仕様記述S2内の記述とを関連付けるリンク情報の挿入位置を特定するリンク項目906〜910が記述されている。
たとえば、リンク項目906は、制御フローグラフ700と仕様記述S2内の機能「Function_A」とを関連付けるリンク情報の挿入位置となる。また、リンク項目907は、制御フローグラフ700内のノードN2と、仕様記述S2内の操作「Operation_1」とを関連付けるリンク情報の挿入位置となる。
図6の説明に戻り、第2の関連付け部604は、仕様記述内の要素または制約条件に関する記述を用いて、構造体の中から要素または制約条件をあらわすノードを検出することにより、構造体内のノードと、当該ノードがあらわす要素または制約条件に関する仕様記述内の記述箇所とを関連付ける機能を有する。
ここで、図4に示した仕様記述S2および図9に示したCFG記述900(制御フローグラフ700)を例に挙げて、第2の関連付け部604による関連付け処理の具体的内容について説明する。まず、検出部605は、シナリオ名を手掛かりに、仕様記述S2の中から任意のシナリオに関する記述箇所を検出する。ここでは、記述箇所405が検出される。
そして、検出部605は、記述箇所405のシナリオ名を手掛かりに、シナリオ「Scenario_1」をあらわすノードをCFG記述900の中から検出する。ここでは、未検出となる。これは、制御フローグラフ700の作成元である実装記述H内にシナリオ「Scenario_1」に関する記述が含まれていないからである。
また、検出部605は、操作名を手掛かりに、仕様記述S2の中からシナリオ「Scenario_1」を構成する操作に関する記述箇所を検出する。ここでは、記述箇所406〜409が順次検出される。そして、検出部605は、各記述箇所406〜409の操作名を手掛かりに、操作「Operation_1」、「Operation_2」、「while」および「Operation_3」をあらわすノードをCFG記述900の中から検出する。ここでは、ノードN4,N7,N10,N13(図7参照)が順次検出される。
このあと、第2の関連付け部604は、検出されたノードN4,N7,N10,N13と、各ノードN4,N7,N10,N13をあらわす操作に関する仕様記述S2内の記述箇所406〜409と、をそれぞれ関連付ける。なお、シナリオ「Scenario_1」をあらわすノードがCFG記述900の中から検出された場合には、それらの関連付けもおこなわれる。
さらに、検出部605は、事前条件、事後条件をあらわすタグを手掛かりに、仕様記述S2の中からシナリオ「Scenario_1」および操作「Operation_1」、「Operation_2」、「while」および「Operation_3」の事前条件、事後条件に関する記述箇所を検出する。ここでは、記述箇所410〜414が検出される。
このあと、検出済みのシナリオ、操作をあらわすノードを手掛かりに、事前条件、事後条件をあらわすノードをCFG記述900の中から検出する。ここでは、各記述箇所410〜414の事前条件、事後条件をあらわすノードN2,N15,N8,N11,N12が検出される。ここで、記述箇所412を例に挙げると、検出済みのノードN7を手掛かりに、ノードN7の下に付属している操作「Operation_2」をあらわすノードN8が検出される。
このように、ノード構造を利用してシナリオ、操作をあらわすノードを手掛かりに事前条件、事後条件をあらわすノードを検出するため、実装記述H内に記述されている事前条件、事後条件との不整合(たとえば、記述箇所410)や、実装記述Hには記述されていない事前条件、事後条件が存在してしまう(たとえば、記述箇所413,414)ことがある。
このため、後述の図10中符号1010に示すように、仕様記述S2内の記述箇所(この例では事前条件「i>=0」)をあらわすノードが制御フローグラフ700内に存在していない場合には、その記述箇所をあらわす新たなノードを作成して、制御フローグラフ700内に挿入することとしてもよい。
また、検出部605により、操作名を手掛かりにCFG記述900の中からノードが検出されなかった場合には、同一名の操作をあらわすノードが含まれていない旨のエラーメッセージをユーザに提示することとしてもよい。これは、仕様記述S2と実装記述Hとの間で操作名の不整合が発生していることを報知するものである。
そして、最終的に、第2の関連付け部604は、検出されたノードN2,N15,N8,N11,N12と、各ノードN2,N15,N8,N11,N12をあらわす事前条件、事後条件に関する仕様記述S2内の記述箇所410〜414と、をそれぞれ関連付けることとなる。
ここでは、第2の関連付け部604による第2の関連付け結果は、たとえば、各ノードN2,N4,N7,N8,N10,N11,N12,N13,N15と各記述箇所406〜414とのリンク関係をあらわすリンク情報である。このリンク情報は、たとえば、リスト化されてRAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。また、制御フローグラフ700内にリンク情報を直接挿入することとしてもよい。
ここで、制御フローグラフ700と仕様記述S2とのリンク関係について説明する。図10は、制御フローグラフと仕様記述とのリンク関係をあらわす説明図である。図10において、リンクL8〜L16は、制御フローグラフ700内の各ノードN2,N4,N7,N8,N10,N11,N12,N13,N15と、仕様記述S2内の各記述箇所405〜409とのリンク関係をあらわしている(記述箇所405とノードN1とのリンク関係は不図示)。
これらリンクL8〜L16は、たとえば、リンク情報として制御フローグラフ700および仕様記述S2内に挿入される。なお、リンクL8については、上述したように、仕様記述S2内の記述箇所410をあらわすノードが制御フローグラフ700内に存在していないため、その記述箇所をあらわすノードが新たに作成されて、制御フローグラフ700内に挿入されている(符号1010)。
ここで、リンク情報が挿入された制御フローグラフ700のデータ構造について説明する。図11は、制御フローグラフのデータ構造を示す説明図(その2)である。図11において、CFG記述900には、制御フローグラフ700内の各ノードN2,N4,N7,N8,N10,N11,N12,N13,N15と、仕様記述S2内の各記述箇所406〜409とのリンクL8〜L16をあらわすリンク情報1101〜1105が挿入されている。
リンク情報1101には、仕様記述S2の仕様書名『Example Specification』と機能「Function_A」が含まれている。このリンク情報1101は、制御フローグラフ700と仕様記述S2との関連付けをあらわす情報であり、リンクL8〜L16のいずれにも相当しない。
また、リンク情報1102には、仕様記述S2の仕様書名『Example Specification』と操作「Operation_1」が含まれている。このリンク情報1102は、リンクL10に相当する。また、リンク情報1103には、仕様記述S2の仕様書名『Example Specification』と操作「Operation_2」が含まれている。このリンク情報1103は、リンクL11に相当する。
また、リンク情報1104には、仕様記述S2の仕様書名『Example Specification』と操作「While」が含まれている。このリンク情報1104は、リンクL13に相当する。また、リンク情報1105には、仕様記述S2の仕様書名『Example Specification』と操作「Operation_3」が含まれている。このリンク情報1105は、リンクL16に相当する。
これらリンク情報1101〜1105によれば、ノードN4,N7,N10,N13と関連付けられた仕様記述S2内の記述箇所406〜409を特定することができる。
つぎに、リンク情報が挿入された仕様記述S2について説明する。図12は、仕様記述の具体例を示す説明図(その2)である。図12において、仕様記述S2には、制御フローグラフ700内のノードN2,N4,N7,N8,N10,N11,N12,N13,N15と、仕様記述S2内の各記述箇所406〜409とのリンクL8〜L16をあらわすリンク情報1201〜1205が挿入されている。
リンク情報1201には、制御フローグラフ700のCFG名『ControlFlowGraph』と機能「Function_A」が含まれている。このリンク情報1201は、制御フローグラフ700と仕様記述S2との関連付けをあらわす情報であり、リンクL8〜L16のいずれにも相当しない。
また、リンク情報1202には、制御フローグラフ700のCFG名『ControlFlowGraph』とノード名「Operation_1」が含まれている。このリンク情報1202は、リンクL10に相当する。また、リンク情報1203には、制御フローグラフ700のCFG名『ControlFlowGraph』とノード名「Operation_2」が含まれている。このリンク情報1203は、リンクL11に相当する。
また、リンク情報1204には、制御フローグラフ700のCFG名『ControlFlowGraph』とノード名「While」が含まれている。このリンク情報1204は、リンクL13に相当する。また、リンク情報1205には、制御フローグラフ700のCFG名『ControlFlowGraph』とノード名「Operation_3」が含まれている。このリンク情報1205は、リンクL16に相当する。
これらリンク情報1201〜1205によれば、仕様記述S2内の記述箇所406〜409と関連付けられた制御フローグラフ700内のノードN4,N7,N10,N13を特定することができる。
図6の説明に戻り、出力部613は、第1の関連付け部603および第2の関連付け部604によって関連付けられた関連付け結果を出力する機能を有する。具体的には、図11に示したCFG記述900および図12に示した仕様記述S2を出力することとしてもよく、また、リンク情報をリスト化したものを出力することとしてもよい。
なお、出力形式としては、たとえば、ディスプレイ208への表示、プリンタ213への印刷出力、I/F209による外部装置への送信がある。また、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶することとしてもよい。
これら第1の関連付け部603および第2の関連付け部604によって関連付けられた第1および第2の関連付け結果(たとえば、図11に示したCFG記述900および図12に示した仕様記述S2)によれば、仕様変更後の仕様記述内の要素および制約条件に関する記述箇所と、仕様変更後の機能に関する実装記述内の要素および制約条件に関する記述箇所との関連付けを認識することができる。
(仕様と実装との整合性確認手法)
つぎに、上述した第1および第2の関連付け結果を用いて、検証対象の仕様変更後の仕様と実装との整合性確認手法について説明する。検証対象の仕様変更には、検証対象の機能の追加、削除、変更などの検証対象全体の変更がある。
具体的には、機能の変更としては、シナリオの追加、削除がある。シナリオの変更としては、事前条件、事後条件、不変条件の変更のほか、操作の追加、削除、順序の変更がある。操作の変更としては、事前条件、事後条件、不変条件の変更や、呼び出す他の操作の追加、削除、順序の変更や、パラメータ設定の変更がある。
以下、仕様と実装との整合性確認手法を実現するために各機能部が有する機能について説明する。まず、抽出部606は、仕様変更後の仕様記述の中から検証対象の仕様変更により影響を受ける記述箇所を抽出する。具体的には、たとえば、検証対象の仕様変更前の仕様記述S1および仕様変更後の仕様記述S2を用いて、仕様記述S2の中から仕様変更により影響を受ける記述箇所を自動抽出することとしてもよい。
また、図2に示したキーボード210やマウス211をユーザが操作することで、仕様記述S2の中から仕様変更により影響を受ける記述箇所を指定することとしてもよい。この場合、抽出部606は、指定された記述箇所を仕様記述S2の中から抽出することとなる。なお、抽出された記述箇所は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。
<抽出処理の具体的説明>
ここで、抽出部606による抽出処理の具体的な処理内容について説明する。まず、特定部607は、検証対象の仕様変更前および仕様変更後の仕様記述を用いて、検証対象の仕様変更にともなう仕様変更後の仕様記述内の変更箇所を特定する。
具体的には、たとえば、既存の差分検出プログラム(たとえば、diffコマンド)を用いて、仕様記述S1と仕様記述S2との差分を検出することで、仕様変更により変更された変更箇所を特定することができる。この差分集合は、たとえば、XMLによって記述された記述箇所の集合となる。なお、特定された変更箇所は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。
つぎに、この変更箇所をもとに仕様記述S2の中から検証対象の仕様変更により直接的および間接的に影響を受ける記述箇所(影響範囲)を抽出する。以下、仕様記述S2の中から影響範囲を抽出する具体的な手法の一例を説明する。
まず、選択部608は、特定部607によって特定された変更箇所の中から任意の要素を選択する。具体的には、たとえば、要素名(シナリオ名、操作名など)を手掛かりに、任意の要素を選択する。なお、選択された選択結果は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。
つぎに、探索部609は、仕様変更後の仕様記述の中から、選択された要素の制約条件を探索する。具体的には、たとえば、事前条件、事後条件をあらわすタグを手掛かりに、選択された要素の配下にある事前条件または/および事後条件を探索する。なお、探索された探索結果は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。
そして、決定部610は、探索部609によって探索された制約条件に関する記述箇所を検証対象の仕様変更により影響を受ける記述箇所に決定する。なお、決定された決定結果は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。
また、探索部609は、仕様変更後の仕様記述に基づく要素間の遷移関係に基づいて、選択部608によって選択された要素を起点として遷移元となる要素を順次辿ることにより、仕様変更後の仕様記述の中から仕様変更により影響を受ける要素を探索する。要素間の遷移関係は、たとえば、仕様変更後の仕様記述内に記述されている要素をノードとして有向グラフ化された遷移グラフを用いて認識することができる。
より具体的には、既存の探索アルゴリズムを用いて遷移グラフを参照することで、選択部608よって選択された要素を起点として遷移元となる要素を順次辿ることにより、仕様変更により影響を受ける要素を探索することができる。たとえば、仕様変更により新たな操作が追加された場合、その操作を含むシナリオや、その操作を呼び出す他の操作が探索される。この場合、決定部610は、探索された要素に関する記述箇所と、当該要素の制約条件に関する記述箇所とを検証対象の仕様変更により影響を受ける記述箇所に決定する。
また、選択部608は、変更箇所の中から任意の制約条件を選択する。具体的には、たとえば、事前条件、事後条件をあらわすタグを手掛かりに、変更箇所の中から制約条件を選択する。この場合、探索部609は、仕様変更後の仕様記述の中から、選択された制約条件が定義されている要素を探索する。そして、決定部610は、探索された要素に関する記述箇所を検証対象の仕様変更により影響を受ける記述箇所に決定する。
これら選択部608、探索部609および決定部610による一連の処理は、たとえば、変更箇所の中から選択されていない未選択の要素、制約条件がなくなるまで繰り返し実行される。そして、最終的に、抽出部606は、仕様変更後の仕様記述の中から、特定部607によって特定された変更箇所と決定部610によって決定された記述箇所とを抽出する。
なお、仕様記述S2の中から影響範囲を抽出する手法はこれに限らない。以下、図13を用いて、仕様記述S2の中から影響範囲を抽出する他の手法の概要を説明する。図13は、仕様変更により影響を受ける記述箇所を抽出する流れを示す概念図である。図13において、検証対象の仕様変更前の仕様記述S1と仕様変更後の仕様記述S2とが簡単化されて示されている。
ここでは説明のため、仕様変更後の仕様記述S2の各記述箇所を(1)〜(15)と表記する。また、変更箇所ボックスB1、影響範囲ボックスB2にチェックすることは、特定部607による特定結果、決定部610による決定結果をRAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶することを意味している。
ここでは、検証対象の仕様変更として、シナリオ「Scenario_1」の事前条件「i>0」が事前条件「i>=0」に変更され、新たな操作「Operation_3」が追加されている。このため、特定部607により、仕様記述S2内の変更箇所として、記述箇所(2)、(13)〜(15)が特定される(変更箇所ボックスB1にチェック)。
つぎに、選択部608により、仕様記述S2の中から任意のシナリオ(ここでは、シナリオ「Scenario_1」のみ)を選択する。そして、シナリオ「Scenario_1」の事前条件、事後条件に関する記述箇所(2)、(3)の変更箇所ボックスB1がチェックされているか否かを判断する。具体的には、探索部609により、仕様記述S2の変更箇所の中から記述箇所(2)、(3)を探索し、探索された場合にチェックされていると判断する。ここでは、記述箇所(2)がチェックされている。
この場合、決定部610により、シナリオ「Scenario_1」に関する記述箇所(1)、事前条件「i>=0」に関する記述箇所(2)、および事後条件「out>0」に関する記述箇所(3)の影響範囲ボックスB2がチェックされる。
このあと、選択部608により、仕様記述S2の中から任意の操作(ここでは、「Operation_1」、「Operation_2」、「while」、「Operation_3」が順次選択される)を選択する。そして、操作、事前条件、事後条件に関する記述箇所の変更箇所ボックスB1がチェックされているか否かを判断する。ここでは、記述箇所(13)〜(15)がチェックされている。
この場合、決定部610により、操作「Operation_3」に関する記述箇所(13)、事前条件「val<=i」に関する記述箇所(14)、および事後条件「なし」に関する記述箇所(15)の影響範囲ボックスB2がチェックされる。この結果、抽出部606により、仕様記述S2の中から検証対象の仕様変更により影響を受ける記述箇所(1)〜(3)、(13)〜(15)が抽出される。
ここで、影響範囲(仕様変更により影響を受ける記述箇所)の具体例について説明する。図14は、影響範囲記述の具体例を示す説明図である。図14において、影響範囲記述1400は、検証対象の仕様変更により影響を受ける仕様記述S2内の記述箇所の集合である。
この影響範囲記述1400は、図12に示した仕様記述S2から、仕様変更により影響を受けない記述箇所およびその記述箇所に関するリンク情報を削除して作成したものであるため、仕様変更により影響を受ける記述箇所とともに、その記述箇所に関するリンク情報が含まれている。ここでは、リンク情報1201,1205が含まれている。なお、符号1401,1402で示す記述箇所は、影響範囲が他の機能へ及んだときに辿るためのリンク情報となる。
<検索処理の具体的説明>
つぎに、検証対象の仕様変更により影響を受ける記述箇所から実装記述内の変更すべき記述箇所を検索する処理について説明する。まず、第1の検索部611は、第2の関連付け部604によって関連付けられた関連付け結果に基づいて、構造体の中から抽出部606によって抽出された記述箇所と関連付けられたノードを検索する。そして、第2の検索部612は、第1の関連付け部603によって関連付けられた関連付け結果に基づいて、実装記述の中から第1の検索部611によって検索されたノードと関連付けられた記述箇所を検索する。
ここで、仕様変更により影響を受ける仕様記述S2内の記述箇所(図14に示した影響範囲記述1400)から、実装記述H内の変更すべき記述箇所を検索する処理の流れについて説明する。図15は、実装記述内の変更すべき記述箇所を検索する流れを示す概念図である。まず、選択部608により、影響範囲記述1400の中から任意のシナリオまたは操作を選択する。ここでは、操作「Operation_3」が選択された場合を例に挙げて説明する。
このあと、第1の検索部611により、操作「Operation_3」のリンク情報1205を参照して、制御フローグラフ700の中からノードN13を検索する。リンク情報1205は、記述箇所409とノードN13とを関連付ける第2の関連付け結果である。また、ノードN13は、図11に示したCFG記述900内の記述箇所1105に相当する。このため、CFG記述900の中から記述箇所1105が検索される(図15中矢印1501)。
そして、第2の検索部612により、ノードN13のリンク情報905を参照して、実装記述Hの中から操作「Operation_3」に関する記述箇所を検索する。リンク情報905は、ノードN13と記述箇所506とを関連付ける第1の関連付け結果である。ここでは、実装記述H内の12行目の記述箇所506が検索される(図15中矢印1502)。
このように、仕様記述S2内の操作に関する記述箇所と、制御フローグラフ700(CFG記述900)内のノードとを関連付ける第2の関連付け結果を参照することで、仕様記述S2内の任意の操作と関連付けられたノードを検索することができる。
同様に、事前条件または事後条件(アサーション)についても、第2の関連付け結果を参照することで、仕様記述S2内の任意の事前条件または事後条件と関連付けられたノードを検索することができる。さらに、事前条件または事後条件とノードとを直接関連付ける第2の関連付け結果が存在しない場合でも、つぎの手法を用いて事前条件または事後条件と関連付けられたノードを検索することができる。
具体的には、仕様記述S2内の操作に関する記述箇所と、制御フローグラフ700内のノードとを関連付けるリンク情報をもとに検索することができる。たとえば、操作「Operation_2」の事後条件「val>0」をあらわすノードN8を検索する場合には、まず、仕様記述S2内の記述箇所407のリンク情報1203をもとにノードN7を検索する。
そして、図7に示したノード構造をもとに、検索されたノードN7の下に付属しているノードN8を検索する。このように、事前条件または事後条件をあらわすノードについては、仕様記述S2内の操作に関する記述箇所と、制御フローグラフ700内の操作をあらわすノードとのリンク関係がわかれば、ノード構造を利用して検索可能である。
また、出力部613は、第2の検索部612によって検索された検索結果を、検証対象の仕様変更により変更すべき実装記述内の記述箇所として出力する。具体的には、たとえば、実装記述のファイル名と、その実装記述内の変更すべき記述箇所の行番号とを関連付けた情報を出力することとしてもよい。また、実装記述を表示するとともに、実装記述内の変更すべき記述箇所を強調表示することとしてもよい。
ここで、出力部613による出力結果(レポート情報)の具体例について説明する。図16は、レポート情報の具体例を示す説明図である。図16において、レポート情報1600には、検証対象の仕様変更により影響を受ける仕様記述S2内の影響範囲1610と、検証対象の仕様変更後の実装記述Hとが示されている。
ここでは、矢印1630,1640により、検証対象の仕様変更により影響を受ける記述箇所1611,1612と、検証対象の仕様変更にともなって変更すべき実装記述H内のアサーション記述1621,1622との対応関係が示されている。また、実装記述H内のアサーション記述1621,1622が反転表示されている。なお、実装記述H内の左隅の数字は、実装記述H内における行番号である。このレポート情報1600によれば、検証者は、検証対象の仕様変更により変更すべき実装記述H内のアサーション記述1621,1622を把握することができる。
(検証支援装置の検証支援処理手順)
つぎに、本実施の形態にかかる検証支援装置100の検証支援処理手順について説明する。以下に説明する手順は、検証支援装置100に検証対象の仕様変更前後の仕様記述(たとえば、仕様記述S1,S2)および仕様変更後の機能に関する実装記述(たとえば、実装記述H)を入力することでコンピュータにより自動実行される。
図17は、検証支援処理手順の一例を示すフローチャートである。図17のフローチャートにおいて、まず、取得部601により、検証対象の仕様変更前後の仕様記述および検証対象の仕様変更後の機能に関する実装記述を取得したか否かを判断する(ステップS1701)。
ここで、仕様変更前後の仕様記述および実装記述を取得するのを待って(ステップS1701:No)、取得した場合(ステップS1701:Yes)、作成部602により、取得された実装記述に基づいて、検証対象の実装時における制御の流れをあらわす制御フローグラフを作成する(ステップS1702)。
このあと、第1の関連付け部603により、実装記述と制御フローグラフとを関連付ける第1の関連付け処理を実行して(ステップS1703)、つぎに、第2の関連付け部604により、仕様記述と制御フローグラフとを関連付ける第2の関連付け処理を実行する(ステップS1704)。
そして、抽出部606により、仕様変更後の仕様記述の中から検証対象の仕様変更により影響を受ける影響範囲を抽出する抽出処理を実行する(ステップS1705)。このあと、検証対象の仕様変更により変更すべき実装記述内の記述箇所を検索する検索処理を実行して(ステップS1706)、最後に、出力部613により、検索された検索結果を出力して(ステップS1707)、本フローチャートによる一連の処理を終了する。
(第1の関連付け処理手順)
つぎに、図17に示したステップS1703における第1の関連付け処理の具体的な処理手順について説明する。図18は、第1の関連付け処理の具体的な処理手順の一例を示すフローチャートである。図18のフローチャートにおいて、まず、選択部608により、図17に示したステップS1702において作成された制御フローグラフの中から任意のノードを選択する(ステップS1801)。
このあと、検出部605により、図17に示したステップS1701において取得された実装記述の中から、選択されたノードの作成元である記述箇所を検出する(ステップS1802)。そして、第1の関連付け部603により、選択されたノードと検出された記述箇所とを関連付ける(ステップS1803)。
つぎに、制御フローグラフの中から選択されていない未選択のノードがあるか否かを判断し(ステップS1804)、未選択のノードがある場合には(ステップS1804:Yes)、ステップS1801に戻る。一方、未選択のノードがない場合には(ステップS1804:No)、図17に示したステップS1704に移行する。
これにより、実装記述内の要素(シナリオ、操作)または制約条件(事前条件または事後条件)に関する記述箇所と、制御フローグラフ内の当該記述箇所をあらわすノードとを関連付けることができる。
(第2の関連付け処理手順)
つぎに、図17に示したステップS1704における第2の関連付け処理の具体的な処理手順について説明する。図19は、第2の関連付け処理の具体的な処理手順の一例を示すフローチャートである。図19のフローチャートにおいて、まず、図17に示したステップS1701において取得された仕様変更後の仕様記述の中から検出されていない未検出のシナリオに関する記述箇所があるか否かを判断する(ステップS1901)。
ここで、未検出の記述箇所がある場合には(ステップS1901:Yes)、検出部605により、仕様変更後の仕様記述の中から任意のシナリオに関する記述箇所を検出する(ステップS1902)。このあと、仕様変更後の仕様記述の中から検出されていない上記シナリオを構成する操作に関する未検出の記述箇所があるか否かを判断する(ステップS1903)。
ここで、未検出の記述箇所がある場合には(ステップS1903:Yes)、検出部605により、仕様変更後の仕様記述の中から上記シナリオを構成する任意の操作に関する記述箇所を検出し(ステップS1904)、検出された記述箇所を参照して、制御フローグラフの中から上記操作をあらわすノードを検出する(ステップS1905)。
ここで、ノードが検出された場合は(ステップS1906:Yes)、第2の関連付け部604により、操作に関する記述箇所と操作をあらわすノードとを関連付ける(ステップS1907)。このあと、仕様変更後の仕様記述の中から検出されていない上記操作の事前条件または事後条件に関する記述箇所があるか否かを判断する(ステップS1908)。
ここで、未検出の記述箇所がある場合には(ステップS1908:Yes)、検出部605により、仕様変更後の仕様記述の中から上記操作の事前条件または事後条件に関する記述箇所を検出し(ステップS1909)、制御フローグラフの中から上記事前条件または上記事後条件をあらわすノードを検出する(ステップS1910)。
ここで、ノードが検出されなかった場合は(ステップS1911:No)、ステップS1908に戻る。一方、ノードが検出された場合は(ステップS1911:Yes)、第2の関連付け部604により、事前条件または事後条件に関する記述箇所と事前条件または事後条件をあらわすノードとを関連付けて(ステップS1912)、ステップS1908に戻る。
また、ステップS1908において、未検出の記述箇所がない場合には(ステップS1908:No)、ステップS1903に戻る。さらに、ステップS1903において、未検出の記述箇所がない場合には(ステップS1903:No)、ステップS1901に戻る。そして、ステップS1901において、未検出の記述箇所がない場合には(ステップS1901:No)、図17に示したステップS1705に移行する。
また、ステップS1906において、ノードが検出されなかった場合には(ステップS1906:No)、出力部613により、仕様記述S2と実装記述Hとの間で操作名の不整合が発生していることを報知するエラー処理を実行して(ステップS1913)、一連の処理を終了する。
これにより、仕様記述内のシナリオ、操作およびシナリオ、操作の事前条件、事後条件に関する記述箇所と、制御フローグラフ内の当該記述箇所をあらわすノードとを関連付けることができる。
なお、ここでは事前条件および事後条件に関する記述箇所と、制御フローグラフ内の当該記述箇所をあらわすノードとを関連付けることとしたが、これにかかる一連の処理(ステップS1908〜ステップS1912)は省略可能である。なぜなら、ノード構造を利用して、制御フローグラフ内のシナリオ、操作をあらわすノードから、そのシナリオ、操作の事前条件および事後条件をあらわすノードを検索することができるからである。
(抽出処理手順)
つぎに、図17に示したステップS1705における抽出処理の具体的な処理手順について説明する。図20は、抽出処理の具体的な処理手順の一例を示すフローチャートである。図20のフローチャートにおいて、まず、特定部607により、図17に示したステップS1701において取得された仕様変更前の仕様記述および仕様変更後の仕様記述を用いて、検証対象の仕様変更にともなう仕様変更後の仕様記述内の変更箇所を特定する(ステップS2001)。
このあと、仕様変更後の仕様記述の中から選択されていない未選択のシナリオがあるか否かを判断する(ステップS2002)。ここで、未選択のシナリオがある場合には(ステップS2002:Yes)、選択部608により、仕様変更後の仕様記述の中から任意のシナリオ(以下、「選択シナリオ」という)を選択する(ステップS2003)。
そして、探索部609により、ステップS2001において特定された変更箇所の中から選択シナリオの事前条件または事後条件に関する記述箇所を探索する(ステップS2004)。ここで、記述箇所が探索されなかった場合には(ステップS2005:No)、ステップS2007に移行する。
一方、記述箇所が探索された場合には(ステップS2005:Yes)、決定部610により、選択シナリオに関する記述箇所と選択シナリオの事前条件および事後条件に関する記述箇所とを、検証対象の仕様変更により影響を受ける影響範囲に決定する(ステップS2006)。
つぎに、選択シナリオを構成する操作のうち、仕様変更後の仕様記述の中から選択されていない未選択の操作があるか否かを判断する(ステップS2007)。ここで、未選択の操作がある場合には(ステップS2007:Yes)、選択部608により、仕様変更後の仕様記述の中から任意の操作(以下、「選択操作」という)を選択する(ステップS2008)。
そして、探索部609により、特定された変更箇所の中から、選択操作、選択操作の事前条件または事後条件のいずれかに関する記述箇所を探索する(ステップS2009)。ここで、記述箇所が探索されなかった場合には(ステップS2010:No)、ステップS2007に戻る。
一方、記述箇所が探索された場合には(ステップS2010:Yes)、決定部610により、選択操作、選択シナリオに関する記述箇所と、選択操作、選択シナリオの事前条件および事後条件に関する記述箇所とを、検証対象の仕様変更により影響を受ける影響範囲に決定して(ステップS2011)、ステップS2007に戻る。
また、ステップS2007において、未選択の操作がない場合には(ステップS2007:No)、ステップS2002に戻る。そして、ステップS2002において、未選択のシナリオがない場合には(ステップS2002:No)、抽出部606により、仕様変更後の仕様記述の中から決定された影響範囲を抽出して(ステップS2012)、図17に示したステップS1706に移行する。
これにより、仕様変更後の仕様記述の中から仕様変更により直接的および間接的に影響を受ける影響範囲(仕様変更にともなう不具合の発生原因となる記述箇所)を自動抽出することができる。
(検索処理手順)
つぎに、図17に示したステップS1706における検索処理の具体的な処理手順について説明する。図21は、検索処理の具体的な処理手順の一例を示すフローチャートである。図21のフローチャートにおいて、まず、図20に示したステップS2012において抽出された影響範囲の中から選択されていない未選択のシナリオがあるか否かを判断する(ステップS2101)。
ここで、未選択のシナリオがある場合には(ステップS2101:Yes)、選択部608により、影響範囲の中から任意のシナリオ(以下、「選択シナリオ」という)を選択する(ステップS2102)。そして、第1の検索部611により、図17に示したステップS1704において実行された第2の関連付け処理の第2の関連付け結果を参照して、選択シナリオと関連付けられている制御フローグラフ内のノードを検索する(ステップS2103)。さらに、第1の検索部611により、制御フローグラフ内の検索されたノードに付属する事前条件および事後条件をあらわすノード(以下、「検索ノード」という)を検索する(ステップS2104)。
そして、第2の検索部612により、図17に示したステップS1703において実行された第1の関連付け処理の第1の関連付け結果を参照して、検索ノードと関連付けられている実装記述内の記述箇所を検索する(ステップS2105)。なお、ステップS2105において、実装記述内に検索ノードと関連付けられている記述箇所がない場合には未検索となる。
このあと、ステップS2102において選択された選択シナリオを構成する操作のうち、影響範囲の中から選択されていない未選択の操作があるか否かを判断する(ステップS2106)。ここで、未選択の操作がある場合には(ステップS2106:Yes)、影響範囲の中から任意の操作(以下、「選択操作」という)を選択する(ステップS2107)。
このあと、第1の検索部611により、第2の関連付け処理の第2の関連付け結果を参照して、選択操作と関連付けられている制御フローグラフ内のノードを検索し(ステップS2108)、さらに、第1の検索部611により、検索されたノードに付属する事前条件および事後条件をあらわす検索ノードを検索する(ステップS2109)。
そして、第2の検索部612により、第1の関連付け処理の第1の関連付け結果を参照して、検索ノードと関連付けられている実装記述内の記述箇所を検索して(ステップS2110)、ステップS2106に移行する。なお、ステップS2110において、実装記述内に検索ノードと関連付けられている記述箇所がない場合には未検索となる。
また、ステップS2106において、未選択の操作がない場合には(ステップS2106:No)、ステップS2101に戻り、未選択のシナリオがない場合には(ステップS2101:No)、図17に示したステップS1707に移行する。
これにより、検証対象の仕様変更にともなって変更すべき実装記述内の記述箇所(アサーション記述)を検索することができる。
以上説明したように、本実施の形態によれば、検証対象の仕様変更後の機能に関する実装記述Hに基づく制御フローグラフ700(CFG記述900)を介して、仕様変更後の仕様記述S2内のシナリオ、操作、事前条件および事後条件に関する記述箇所と、実装記述H内のシナリオ、操作、事前条件および事後条件に関する記述箇所とを関連付けることができる。
また、この関連付け結果(第1および第2の関連付け結果)を用いて、検証対象の仕様変更により影響を受ける仕様記述S2内の記述箇所と関連付けられた実装記述H内の記述箇所を検索することができる。これにより、検証者は、検索結果(レポート情報1600)を確認することで、検証対象の仕様変更にともなって変更すべき実装記述H内の記述箇所を把握することができる。
特に、実装記述H内に散らばっている膨大な数(たとえば、数千〜数十万)のアサーション記述(事前条件および事前条件に関する記述箇所)の中から、検証対象の仕様変更にともなって変更すべきアサーション記述を効率的かつ網羅的に把握することができる。
これにより、従来のように、仕様変更される度に、仕様変更前後の仕様記述S1,S2および実装記述Hを照らし合わせて変更すべきアサーションを人手でチェックするなどの面倒な作業が不要となる。このため、検証作業にかかる作業負担の軽減化および作業時間の短縮化を図ることができる。さらに、従来の人手によるチェックに比べて、変更すべきアサーション記述を網羅的に把握することが可能となるため、検証品質の向上を図ることができる。
なお、本実施の形態で説明した検証支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、このプログラムは、インターネットなどのネットワークを介して配布することが可能な媒体であってもよい。
また、本実施の形態で説明した検証支援装置100は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、たとえば、上述した検証支援装置100の機能(取得部601〜出力部613)をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより、検証支援装置100を製造することができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)検証対象の仕様と実装との整合性確認をコンピュータに支援させる検証支援プログラムであって、
前記コンピュータを、
前記検証対象の機能を実現するために実行される一連の要素群および前記機能を実現するために満たすべき前記要素の制約条件が記述された仕様記述と、前記検証対象の機能に関する実装記述とを取得する取得手段、
前記取得手段によって取得された実装記述に基づいて、前記一連の要素群および当該要素の制約条件をノードとしてグラフ化された構造体を作成する作成手段、
前記作成手段によって作成された構造体内のノードと、当該ノードがあらわす要素または制約条件に関する前記実装記述内の記述箇所とを関連付ける第1の関連付け手段、
前記仕様記述内の要素または制約条件に関する記述を用いて、前記構造体の中から前記要素または前記制約条件をあらわすノードを検出することにより、前記構造体内のノードと、当該ノードがあらわす要素または制約条件に関する前記仕様記述内の記述箇所とを関連付ける第2の関連付け手段、
前記第1および第2の関連付け手段によって関連付けられた関連付け結果を出力する出力手段、
として機能させることを特徴とする検証支援プログラム。
(付記2)前記コンピュータを、
前記仕様記述の中から前記検証対象の仕様変更により影響を受ける記述箇所を抽出する抽出手段、
前記第2の関連付け手段によって関連付けられた関連付け結果に基づいて、前記構造体の中から前記抽出手段によって抽出された記述箇所と関連付けられたノードを検索する第1の検索手段、
前記第1の関連付け手段によって関連付けられた関連付け結果に基づいて、前記実装記述の中から前記第1の検索手段によって検索されたノードと関連付けられた記述箇所を検索する第2の検索手段として機能させ、
前記出力手段は、
前記第2の検索手段によって検索された検索結果を出力することを特徴とする付記1に記載の検証支援プログラム。
(付記3)前記コンピュータを、
前記検証対象の仕様変更前および仕様変更後の仕様記述を用いて、前記検証対象の仕様変更にともなう前記仕様変更後の仕様記述内の変更箇所を特定する特定手段、
前記特定手段によって特定された変更箇所の中から任意の要素を選択する選択手段、
前記仕様変更後の仕様記述の中から前記選択手段によって選択された要素の制約条件を探索する探索手段、
前記探索手段によって探索された制約条件に関する記述箇所を前記検証対象の仕様変更により影響を受ける記述箇所に決定する決定手段として機能させ、
前記抽出手段は、
前記仕様変更後の仕様記述の中から、前記変更箇所と前記決定手段によって決定された記述箇所とを抽出することを特徴とする付記2に記載の検証支援プログラム。
(付記4)前記探索手段は、
前記仕様変更後の仕様記述に基づく要素間の遷移関係に基づいて、前記選択手段によって選択された要素を起点として遷移元となる要素を順次辿ることにより、前記仕様変更後の仕様記述の中から前記仕様変更により影響を受ける要素を探索し、
前記決定手段は、
前記探索手段によって探索された要素に関する記述箇所と、当該要素の制約条件に関する記述箇所とを前記検証対象の仕様変更により影響を受ける記述箇所に決定することを特徴とする付記3に記載の検証支援プログラム。
(付記5)前記選択手段は、
前記仕様変更後の仕様記述の中から任意の制約条件を選択し、
前記探索手段は、
前記仕様変更後の仕様記述の中から前記選択手段によって選択された制約条件が定義された要素を探索し、
前記決定手段は、
前記探索手段によって探索された要素に関する記述箇所を前記検証対象の仕様変更により影響を受ける記述箇所に決定することを特徴とする付記3または4に記載の検証支援プログラム。
(付記6)前記要素は、前記機能を構成するシナリオまたは当該シナリオを構成する操作であり、
前記制約条件は、前記シナリオまたは前記操作の事前条件、事後条件および不変条件の少なくともいずれかであり、
前記作成手段は、
前記実装記述に記述されている前記シナリオ、前記操作、前記事前条件、前記事後条件および前記不変条件をノードとして有向グラフ化することにより、前記検証対象の実装時における制御の流れをあらわす制御フローグラフを作成することを特徴とする付記1〜5のいずれか一つに記載の検証支援プログラム。
(付記7)検証対象の仕様と実装との整合性確認を支援する検証支援装置であって、
前記検証対象の機能を実現するために実行される一連の要素群および前記機能を実現するために満たすべき前記要素の制約条件が記述された仕様記述と、前記検証対象の機能に関する実装記述とを取得する取得手段と、
前記取得手段によって取得された実装記述に基づいて、前記一連の要素群および当該要素の制約条件をノードとしてグラフ化された構造体を作成する作成手段と、
前記作成手段によって作成された構造体内のノードと、当該ノードがあらわす要素または制約条件に関する前記実装記述内の記述箇所とを関連付ける第1の関連付け手段と、
前記仕様記述内の要素または制約条件に関する記述を用いて、前記構造体の中から前記要素または前記制約条件をあらわすノードを検出することにより、前記構造体内のノードと、当該ノードがあらわす要素または制約条件に関する前記仕様記述内の記述箇所とを関連付ける第2の関連付け手段と、
前記第1および第2の関連付け手段によって関連付けられた関連付け結果を出力する出力手段と、
を備えることを特徴とする検証支援装置。
(付記8)制御手段および記憶手段を備え、検証対象の仕様と実装との整合性確認を支援するコンピュータが、
前記制御手段により、前記検証対象の機能を実現するために実行される一連の要素群および前記機能を実現するために満たすべき前記要素の制約条件が記述された仕様記述と、前記検証対象の機能に関する実装記述とを取得する取得工程と、
前記制御手段により、前記取得工程によって取得された実装記述に基づいて、前記一連の要素群および当該要素の制約条件をノードとしてグラフ化された構造体を作成する作成工程と、
前記制御手段により、前記作成工程によって作成された構造体内のノードと、当該ノードがあらわす要素または制約条件に関する前記実装記述内の記述箇所とを関連付ける第1の関連付け工程と、
前記制御手段により、前記仕様記述内の要素または制約条件に関する記述を用いて、前記構造体の中から前記要素または前記制約条件をあらわすノードを検出することにより、前記構造体内のノードと、当該ノードがあらわす要素または制約条件に関する前記仕様記述内の記述箇所とを関連付ける第2の関連付け工程と、
前記制御手段により、前記第1および第2の関連付け工程によって関連付けられた関連付け結果を出力する出力工程と、
を実行することを特徴とする検証支援方法。
本実施の形態の概要を示す説明図である。 検証支援装置のハードウェア構成を示すブロック図である。 仕様記述のデータ構造をモデル化して示す説明図である。 仕様記述の具体例を示す説明図(その1)である。 実装記述の具体例を示す説明図である。 検証支援装置の機能的構成を示すブロック図である。 制御フローグラフの具体例を示す説明図である。 制御フローグラフと実装記述とのリンク関係をあらわす説明図である。 制御フローグラフのデータ構造を示す説明図(その1)である。 制御フローグラフと仕様記述とのリンク関係をあらわす説明図である。 制御フローグラフのデータ構造を示す説明図(その2)である。 仕様記述の具体例を示す説明図(その2)である。 仕様変更により影響を受ける記述箇所を抽出する流れを示す概念図である。 影響範囲記述の具体例を示す説明図である。 実装記述内の変更すべき記述箇所を検索する流れを示す概念図である。 レポート情報の具体例を示す説明図である。 検証支援処理手順の一例を示すフローチャートである。 第1の関連付け処理の具体的な処理手順の一例を示すフローチャートである。 第2の関連付け処理の具体的な処理手順の一例を示すフローチャートである。 抽出処理の具体的な処理手順の一例を示すフローチャートである。 検索処理の具体的な処理手順の一例を示すフローチャートである。
符号の説明
100 検証支援装置
601 取得部
602 作成部
603 第1の関連付け部
604 第2の関連付け部
605 検出部
606 抽出部
607 特定部
608 選択部
609 探索部
610 決定部
611 第1の検索部
612 第2の検索部
613 出力部

Claims (7)

  1. 検証対象の仕様と実装との整合性確認をコンピュータに支援させる検証支援プログラムであって、
    前記コンピュータを、
    前記検証対象の機能を実現するために実行される一連の要素群および前記機能を実現するために満たすべき前記要素の制約条件が記述された仕様記述と、前記検証対象の機能に関する実装記述とを取得する取得手段、
    前記取得手段によって取得された実装記述に基づいて、前記一連の要素群および当該要素の制約条件をノードとしてグラフ化された構造体を作成する作成手段、
    前記作成手段によって作成された構造体内のノードと、当該ノードがあらわす要素または制約条件に関する前記実装記述内の記述箇所とを関連付ける第1の関連付け手段、
    前記仕様記述内の要素または制約条件に関する記述を用いて、前記構造体の中から前記要素または前記制約条件をあらわすノードを検出することにより、前記構造体内のノードと、当該ノードがあらわす要素または制約条件に関する前記仕様記述内の記述箇所とを関連付ける第2の関連付け手段、
    前記第1および第2の関連付け手段によって関連付けられた関連付け結果を出力する出力手段、
    として機能させることを特徴とする検証支援プログラム。
  2. 前記コンピュータを、
    前記仕様記述の中から前記検証対象の仕様変更により影響を受ける記述箇所を抽出する抽出手段、
    前記第2の関連付け手段によって関連付けられた関連付け結果に基づいて、前記構造体の中から前記抽出手段によって抽出された記述箇所と関連付けられたノードを検索する第1の検索手段、
    前記第1の関連付け手段によって関連付けられた関連付け結果に基づいて、前記実装記述の中から前記第1の検索手段によって検索されたノードと関連付けられた記述箇所を検索する第2の検索手段として機能させ、
    前記出力手段は、
    前記第2の検索手段によって検索された検索結果を出力することを特徴とする請求項1に記載の検証支援プログラム。
  3. 前記コンピュータを、
    前記検証対象の仕様変更前および仕様変更後の仕様記述を用いて、前記検証対象の仕様変更にともなう前記仕様変更後の仕様記述内の変更箇所を特定する特定手段、
    前記特定手段によって特定された変更箇所の中から任意の要素を選択する選択手段、
    前記仕様変更後の仕様記述の中から前記選択手段によって選択された要素の制約条件を探索する探索手段、
    前記探索手段によって探索された制約条件に関する記述箇所を前記検証対象の仕様変更により影響を受ける記述箇所に決定する決定手段として機能させ、
    前記抽出手段は、
    前記仕様変更後の仕様記述の中から、前記変更箇所と前記決定手段によって決定された記述箇所とを抽出することを特徴とする請求項2に記載の検証支援プログラム。
  4. 前記探索手段は、
    前記仕様変更後の仕様記述に基づく要素間の遷移関係に基づいて、前記選択手段によって選択された要素を起点として遷移元となる要素を順次辿ることにより、前記仕様変更後の仕様記述の中から前記仕様変更により影響を受ける要素を探索し、
    前記決定手段は、
    前記探索手段によって探索された要素に関する記述箇所と、当該要素の制約条件に関する記述箇所とを前記検証対象の仕様変更により影響を受ける記述箇所に決定することを特徴とする請求項3に記載の検証支援プログラム。
  5. 前記選択手段は、
    前記仕様変更後の仕様記述の中から任意の制約条件を選択し、
    前記探索手段は、
    前記仕様変更後の仕様記述の中から前記選択手段によって選択された制約条件が定義された要素を探索し、
    前記決定手段は、
    前記探索手段によって探索された要素に関する記述箇所を前記検証対象の仕様変更により影響を受ける記述箇所に決定することを特徴とする請求項3または4に記載の検証支援プログラム。
  6. 検証対象の仕様と実装との整合性確認を支援する検証支援装置であって、
    前記検証対象の機能を実現するために実行される一連の要素群および前記機能を実現するために満たすべき前記要素の制約条件が記述された仕様記述と、前記検証対象の機能に関する実装記述とを取得する取得手段と、
    前記取得手段によって取得された実装記述に基づいて、前記一連の要素群および当該要素の制約条件をノードとしてグラフ化された構造体を作成する作成手段と、
    前記作成手段によって作成された構造体内のノードと、当該ノードがあらわす要素または制約条件に関する前記実装記述内の記述箇所とを関連付ける第1の関連付け手段と、
    前記仕様記述内の要素または制約条件に関する記述を用いて、前記構造体の中から前記要素または前記制約条件をあらわすノードを検出することにより、前記構造体内のノードと、当該ノードがあらわす要素または制約条件に関する前記仕様記述内の記述箇所とを関連付ける第2の関連付け手段と、
    前記第1および第2の関連付け手段によって関連付けられた関連付け結果を出力する出力手段と、
    を備えることを特徴とする検証支援装置。
  7. 制御手段および記憶手段を備え、検証対象の仕様と実装との整合性確認を支援するコンピュータが、
    前記制御手段により、前記検証対象の機能を実現するために実行される一連の要素群および前記機能を実現するために満たすべき前記要素の制約条件が記述された仕様記述と、前記検証対象の機能に関する実装記述とを取得する取得工程と、
    前記制御手段により、前記取得工程によって取得された実装記述に基づいて、前記一連の要素群および当該要素の制約条件をノードとしてグラフ化された構造体を作成する作成工程と、
    前記制御手段により、前記作成工程によって作成された構造体内のノードと、当該ノードがあらわす要素または制約条件に関する前記実装記述内の記述箇所とを関連付ける第1の関連付け工程と、
    前記制御手段により、前記仕様記述内の要素または制約条件に関する記述を用いて、前記構造体の中から前記要素または前記制約条件をあらわすノードを検出することにより、前記構造体内のノードと、当該ノードがあらわす要素または制約条件に関する前記仕様記述内の記述箇所とを関連付ける第2の関連付け工程と、
    前記制御手段により、前記第1および第2の関連付け工程によって関連付けられた関連付け結果を出力する出力工程と、
    を実行することを特徴とする検証支援方法。
JP2008218411A 2008-08-27 2008-08-27 検証支援プログラム、検証支援装置、および検証支援方法 Expired - Fee Related JP5067317B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008218411A JP5067317B2 (ja) 2008-08-27 2008-08-27 検証支援プログラム、検証支援装置、および検証支援方法
US12/472,995 US20100058262A1 (en) 2008-08-27 2009-05-27 Verification assisting program, verification assisting apparatus, and verification assisting method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008218411A JP5067317B2 (ja) 2008-08-27 2008-08-27 検証支援プログラム、検証支援装置、および検証支援方法

Publications (2)

Publication Number Publication Date
JP2010055293A true JP2010055293A (ja) 2010-03-11
JP5067317B2 JP5067317B2 (ja) 2012-11-07

Family

ID=41727167

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008218411A Expired - Fee Related JP5067317B2 (ja) 2008-08-27 2008-08-27 検証支援プログラム、検証支援装置、および検証支援方法

Country Status (2)

Country Link
US (1) US20100058262A1 (ja)
JP (1) JP5067317B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10152406B2 (en) * 2015-08-25 2018-12-11 Fujistu Limited Software program repair
KR101688899B1 (ko) 2015-09-03 2016-12-23 경북대학교 산학협력단 광대역 발룬 및 이를 이용한 광대역 다이폴 안테나
US11262986B2 (en) * 2019-06-28 2022-03-01 Asapp, Inc. Automatic software generation for computer systems
US11537448B1 (en) 2021-12-14 2022-12-27 Asapp, Inc. Adapting application programming interfaces with schema mappings

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006285865A (ja) * 2005-04-04 2006-10-19 Nec Electronics Corp レジスタ転送レベル記述と動作記述間の対応関係特定方法、装置及びプログラム
JP2007115001A (ja) * 2005-10-20 2007-05-10 Nec Engineering Ltd アサーション自動生成装置および論理回路設計検証方法
JP2007128123A (ja) * 2005-11-01 2007-05-24 Hitachi Ltd 影響範囲抽出システム
JP2007257291A (ja) * 2006-03-23 2007-10-04 Fujitsu Ltd シナリオ生成方法、シナリオ生成プログラム、シナリオ生成装置
JP2008242737A (ja) * 2007-03-27 2008-10-09 Toshiba Corp プログラム検証仕様生成装置、方法およびプログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5659554A (en) * 1994-01-26 1997-08-19 Kabushiki Kaisha Toshiba Test case generating apparatus
JP2004171423A (ja) * 2002-11-22 2004-06-17 Fujitsu Ltd サービス効果向上方式
US7467122B2 (en) * 2004-11-05 2008-12-16 Hitachi, Ltd. System for aiding the design of product configuration
US7496750B2 (en) * 2004-12-07 2009-02-24 Cisco Technology, Inc. Performing security functions on a message payload in a network element
US20060155862A1 (en) * 2005-01-06 2006-07-13 Hari Kathi Data traffic load balancing based on application layer messages
JP2010128583A (ja) * 2008-11-25 2010-06-10 Toshiba Corp テスト容易化設計装置ならびにその方法およびプログラム
US20110046938A1 (en) * 2009-08-19 2011-02-24 Fujitsu Limited Verification apparatus and design verification program

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006285865A (ja) * 2005-04-04 2006-10-19 Nec Electronics Corp レジスタ転送レベル記述と動作記述間の対応関係特定方法、装置及びプログラム
JP2007115001A (ja) * 2005-10-20 2007-05-10 Nec Engineering Ltd アサーション自動生成装置および論理回路設計検証方法
JP2007128123A (ja) * 2005-11-01 2007-05-24 Hitachi Ltd 影響範囲抽出システム
JP2007257291A (ja) * 2006-03-23 2007-10-04 Fujitsu Ltd シナリオ生成方法、シナリオ生成プログラム、シナリオ生成装置
JP2008242737A (ja) * 2007-03-27 2008-10-09 Toshiba Corp プログラム検証仕様生成装置、方法およびプログラム

Also Published As

Publication number Publication date
JP5067317B2 (ja) 2012-11-07
US20100058262A1 (en) 2010-03-04

Similar Documents

Publication Publication Date Title
US11392485B2 (en) Auto test generator
US8745595B2 (en) Information processing apparatus and method of acquiring trace log
JP4395761B2 (ja) プログラムテスト支援装置およびその方法
US8769516B2 (en) Systems and methods for automated support for repairing input model errors
KR101554424B1 (ko) 테스트 케이스 생성 자동화 방법 및 장치
Santana et al. RAIDE: a tool for Assertion Roulette and Duplicate Assert identification and refactoring
JP6486574B2 (ja) プログラムコード生成装置、プログラムコード生成方法及びプログラムコード生成プログラム
US8145992B2 (en) Validation assisted document conversion design
JP5067317B2 (ja) 検証支援プログラム、検証支援装置、および検証支援方法
US10073764B1 (en) Method for instruction sequence execution analysis and visualization
US10846059B2 (en) Automated generation of software bindings
Müller et al. A model-based approach to impact analysis using model differencing
JP2010237841A (ja) 動作検証装置および動作検証プログラム
Mani et al. Automated support for repairing input-model faults
US8458110B2 (en) Verification support apparatus, verification support method, and computer product
Yoshida et al. Phoenix: a tool for automated data-driven synthesis of repairs for static analysis violations
JP7380851B2 (ja) テストスクリプト生成装置、テストスクリプト生成方法及びプログラム
JP2006058172A (ja) テストパターン生成システム、テストパターン解析システム、テストパターン生成方法、テストパターン解析方法、テストパターン生成プログラム、テストパターン解析プログラム、および記録媒体
Escobar-Velásquez et al. Itdroid: A tool for automated detection of i18n issues on android apps
Mendonça et al. Feature-oriented Test Case Selection during Evolution of Highly-Configurable Systems
JPH11224211A (ja) ソフトウェア検査支援装置
JP2008117280A (ja) ソフトウェアソースコードの検索方法及びシステム
Fasolino et al. Towards the generation of robust E2E test cases in template-based web applications
WO2018154784A1 (ja) 影響抽出装置、影響抽出プログラム及び影響抽出方法
Rwemalika et al. Can we automate away the main challenges of end-to-end testing?

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110513

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120710

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120717

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120730

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150824

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees