JP2000181750A - ソフトウェアテスト方法 - Google Patents

ソフトウェアテスト方法

Info

Publication number
JP2000181750A
JP2000181750A JP11353613A JP35361399A JP2000181750A JP 2000181750 A JP2000181750 A JP 2000181750A JP 11353613 A JP11353613 A JP 11353613A JP 35361399 A JP35361399 A JP 35361399A JP 2000181750 A JP2000181750 A JP 2000181750A
Authority
JP
Japan
Prior art keywords
program
event
instructions
software
source code
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
JP11353613A
Other languages
English (en)
Other versions
JP3631647B2 (ja
Inventor
Johan Holzmann Gerald
ジョハン ホルツマン ジェラルド
Lane Thompson Kenneth
レイン トンプソン ケネス
Stephen Winterbottom Philip
スティーブン ウィンターボトム フィリップ
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.)
Nokia of America Corp
Original Assignee
Lucent Technologies Inc
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 Lucent Technologies Inc filed Critical Lucent Technologies Inc
Publication of JP2000181750A publication Critical patent/JP2000181750A/ja
Application granted granted Critical
Publication of JP3631647B2 publication Critical patent/JP3631647B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computational Linguistics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 イベント駆動ソフトウェアを効率的にテスト
し、ソースコードの通常の保守、拡張および改定のプロ
セスの一部として、プログラムコードへの変更の妥当性
を追跡することを可能にする。 【解決手段】 ソースコードプログラムは、制御依存お
よび非制御依存フォーマットで定義され構造化される。
イベント駆動ソースコードプログラムを構文解析してソ
ースプログラムで定義される制御状態を抽出し、ソース
コードを中間状態マシンフォーマットに変換する。その
後、モデルチェックの目的で、中間状態マシンフォーマ
ットを、オートマトンフォーマットに変換する。中間状
態マシンフォーマットは、標記付きオートマトンモデル
(例えば、特定のモデルチェッカの入力言語で書かれた
検証プログラム)に変換される。ソースコードプログラ
ムの各ステートメントは、オートマトンモデル内の抽象
にマッピングされる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータソフ
トウェアプログラムをテストすることに関し、特に、イ
ベント駆動アプリケーションプログラムをテストする技
術に関する。
【0002】
【従来の技術】周知のイベント駆動ソフトウェアシステ
ム(当業者の間では「リアクティブシステム」ともい
う。)では、あるイベントが発生され、そのイベントの
発生に基づいて特定のアクションを実行する実行プロセ
スへ通信されると、ある機能が行われる。具体的には、
イベント駆動ソフトウェアは、システム(例えばコンピ
ュータ)に接続されている他のシステム、マシンあるい
は周辺デバイスによって発生されたイベントに応答する
そのシステムの動作を定義するために使用される。イベ
ント駆動システムの周知の例には、通信アプリケーショ
ン、呼処理ソフトウェア、データ通信ソフトウェア、デ
バイスドライバ、およびコンピュータインタフェースア
プリケーションがある。認識されるように、これらのタ
イプのイベント駆動システムは状態指向(state oriente
d)である。すなわち、システムの各状態において、あら
かじめ定義されたイベントのセットから1つの特定のイ
ベントが発生することが期待され、システムは、明確に
定義された方法でそのイベントに応答するように設計さ
れる。
【0003】簡単にいえば、周知のように、状態マシン
は、イベント刺激あるいは入力データの時系列を何らか
のファンクションを通して応答あるいは出力データの時
系列に変換する。例えば、イベント駆動システムでは、
各時点で、各マシンは特定のいわゆる「制御状態」にあ
る。この状態は、他のマシンによって発生されることが
期待されるイベントと、それぞれのそのようなイベント
の到着時に発生されることになる応答のタイプとを定義
する。一般に、応答は、有限のプログラムコードの実
行、新しいイベントの発生、および、入力イベントに応
答する特定のマシンの新しい制御状態の識別を含む。こ
のように、イベント駆動システムの状態マシンモデル
は、システムのプログラマによるアプリケーションプロ
グラムコードの開発において重要な役割を果たす。
【0004】一般に、イベント駆動アプリケーションソ
フトウェアは、周知のCあるいはC++プログラミング
言語のような高水準汎用プログラミング言語や、周知の
ITUシステム記述言語(SDL)のような専用言語で
書かれる。このようなシステムのために実際のプログラ
ムコードを開発する際には、関連するマシンの動作を状
態マシンを用いて記述することが一般的である。高水準
プログラミング言語(例えばC)を用いて、ソフトウェ
アプログラマは、特定のアプリケーションのためのイベ
ント駆動ソフトウェアコードを書く。一般に、ソフトウ
ェアプログラム開発は、アプリケーションの所望のオペ
レーションの論理記述を提供するいわゆるシステム仕様
を調べることから始まる。仕様から作業を始めて、プロ
グラマはオペレーションを実装するために必要なコード
を書くことになる。
【0005】この従来のプログラミングプロセスの結
果、アプリケーションプログラムは、イベント駆動シス
テムのさまざまな制御状態の間の個々の視覚的コンテク
ストを含まない。すなわち、プログラムコードは、プロ
グラム命令の列を有する1つの大きな「フラットな」フ
ァイルと見なされる。さらに、もとの仕様がプログラム
開発中に変化すると(例えば、追加機能がシステムに追
加されると)、必要なプログラムコードおよび追加制御
状態は一般に、かなり任意の順序でソースプログラムに
追加される。プログラマが、プログラムソースコードか
ら直接に制御状態間の論理フローを理解するためには、
ソースを通じて手動で実行スレッドをたどる(例えば、
分岐命令やgotoステートメントをたどる)必要があ
る。認識されるように、このような論理フローをたどる
(トレースする)ことは、特に非常に大きいソースコー
ドプログラムでは、面倒で時間のかかる作業である。こ
れはまた、いわゆる「バグ」を見つけるため、および、
アプリケーションプログラムが所望の機能を実装してい
るかどうかを判定するための、ソフトウェアのテストに
おける複雑さにつながる。
【0006】具体的には、このようなシステムのための
アプリケーションソフトウェアコードの開発におけるク
リティカルな段階は、ソフトウェアの性質を検証して、
システムの動作が設計目的に従っていることを確実にす
るための、コードのテストである。イベント駆動ソフト
ウェアをテストするためのいくつかの方法がある。例え
ば、Boris Beizer, "Black-Box Testing: Techniques f
or Functional Testing of Software and Systems", Jo
hn Wiley and Sons, 1984、には、テスト目標のセット
を定義し、そこから、限定されたテストシーケンスのセ
ットを導出するという周知のテスト方式が記載されてい
る。一般に、テストシーケンスのセットは、システム設
計を調べることによりテストエンジニアによって手動プ
ロセスで定義される。テストシーケンスのセットは、テ
スト対象のイベント駆動ソフトウェアに適用され、「合
格」または「不合格」のいずれかがテスト結果として記
録される。一般に、このテスト方法は一般的なソフトウ
ェアテストに適用されるが、人的エラーを受けやすく不
完全であることが当業者にはよく知られている。特に、
テスト対象のイベント駆動ソフトウェアの可能な実行の
数は非常に大きい。これに対して、リアルタイム実行で
ソフトウェアに対して実行可能なテストの数は、総テス
ト数のうちの単一のテストを実行するのに要する最小時
間のようないくつかの実際的制約によって制限される。
従って、一般に、この方法では、ほんの数百のテストを
選択し適用することしかできない。この結果、テストカ
バレジに関して信頼度は非常に低い。
【0007】当業者に知られている第2のイベント駆動
ソフトウェアテスト方法は、例えば、D. Lee et al., "
Principles and Methods of Testing Finite State Mac
hines - A Survey", Proceedings of the IEEE, Vol.8
4, pp.1090-1126, 1996、に記載されている。このテス
ト方法によれば、イベント駆動ソフトウェアプログラム
に対する抽象的な状態マシンモデルを作成する。この状
態マシンモデルは一般に、プログラムコードの高水準の
記述のみを捕捉することにより、プログラムの詳細のほ
とんどを無視する。その後、周知のテストシーケンス生
成アルゴリズム(例えば、Leeの上記論文を参照)を状
態マシンモデルに適用して、比較的小さいテストセット
を導出し、テスト対象のソフトウェアに適用することが
できる。前述のテスト方法と同様に、この技術は、イベ
ント駆動ソフトウェアの抽象モデルの手動作成に多くを
依存している。従って、この技術は、テスト対象のソフ
トウェアと、適用可能なテストを導出するために用いら
れる抽象モデルとの間の形式的関係の不一致によって引
き起こされる誤りに敏感である。さらに、イベント駆動
ソフトウェアを変更すると、新しいテストの開発が必要
となり、これは、面倒で時間のかかるものとなる。
【0008】第3の広く用いられているテスト方法(例
えば、C. H. West, "Protocol Validation by Random S
tate Exploration", Proc. 6th IFIPWG 6.1 Int. Works
hopon Protocol Specification, Testing, and Verific
ation, North-Holland Publ., pp.233-242, 1986、を参
照)では、ソフトウェアが所望の性質に従っていること
を確定するために、イベント駆動ソフトウェアの完全な
動作のランダムな検査を行う。完全なソフトウェア記述
における項目数は非常に多くなるため、テスト目的でソ
フトウェアを網羅的に検査しようとしても無理である。
従って、周知の統計的アルゴリズムを用いて、ソフトウ
ェアの動作のランダムなサンプルを抽出して解析する。
しかし、上記の他のテスト方式と同様にして認識される
ように、このテスト方式の欠点は、完全なソフトウェア
記述における無関係な項目の量が多いために、高水準の
性質に従うようにソフトウェアの完全な動作の効率的な
網羅的検査をすることができないことである。
【0009】
【発明が解決しようとする課題】従って、従来技術の上
記の課題を解決し、イベント駆動ソフトウェアのプログ
ラミング開発およびテストを改善するための技術が必要
とされている。
【0010】
【課題を解決するための手段】本発明は、イベント駆動
ソフトウェアを効率的にテストし、ソースコードの通常
の保守、拡張および改定のプロセスの一部として、プロ
グラムコードへの変更の妥当性を追跡することを可能に
する技術を提供する。具体的には、本発明の実施例によ
れば、イベント駆動ソフトウェアコードは、本願発明が
優先権主張する米国特許出願と同日に出願された米国特
許出願(発明の名称:"Method and Apparatus For Deve
loping Event Driven Software"。以下「関連米国特許
出願」という。)に記載の原理に従って指定され書かれ
る。すなわち、本発明の実施例によれば、ソースコード
プログラムは、制御依存(control-sensitive)および非
制御依存(non-control-sensitive)フォーマットで定義
され構造化される。本発明によれば、イベント駆動ソー
スコードプログラムを構文解析してソースプログラムで
定義される制御状態を抽出し、ソースコードを中間状態
マシンフォーマットに変換する。その後、本発明によれ
ば、モデルチェックの目的で、中間状態マシンフォーマ
ットを、オートマトンフォーマットに変換する。
【0011】具体的には、好ましい実施例によれば、中
間状態マシンフォーマットは、注釈(標記)付きオート
マトンモデル(annotated automaton model)に変換され
る。例えば、注釈付きオートマトンモデルは、特定のモ
デルチェッカの入力言語で書かれた検証プログラムであ
る。重要な点であるが、本発明によれば、ソースコード
プログラムの各ステートメントは、オートマトンモデル
内の抽象(abstraction)にマッピングされる。このマッ
ピングは、検証プロセスの初期段階で定義される翻訳マ
ップを用いて実現される。このマップは、その後、新し
いタイプの命令がソースプログラム内に導入される(例
えば、プログラミングの誤りを修復するためにリビジョ
ン(改訂)をした後)までは、改訂する必要はない。特
に、このマッピングは、特定のステートメントからモデ
ルチェッカのターゲット言語への固定された翻訳を指定
する。従って、このマップに現れる命令は、その命令が
ソースコードに現れるどの場所でも、組織的にオートマ
トンモデルに変換される。
【0012】上記のマップに加えて、本発明によれば、
いわゆる環境モデルが定義される。環境モデルは、イベ
ント駆動アプリケーションが実行される特定のオペレー
ティング環境に関してしなければならない仮定の最小セ
ットをカプセル化する。具体的には、モデルチェッカ入
力言語がモデルチェッカに提供されると、環境モデルが
適用される。その結果、本発明の好ましい実施例によれ
ば、イベント駆動システムの性質の検証は、検証システ
ムによるイベント駆動ソフトウェアのテストおよびチェ
ックの間、環境モデルに従ってなされる。その後、イベ
ント駆動システムがユーザの希望する実行の性質および
動作に従っているかどうかを判断するために、テストお
よびチェックの結果が周知の方法で出力される。
【0013】本発明によれば、モデル抽出プロセスおよ
びモデルチェッカの適用は、ユーザの介在を必要とせず
に、イベント駆動システムプログラムコードから直接に
動的に行うことが可能となる。
【0014】
【発明の実施の形態】本発明は、イベント駆動ソフトウ
ェアをテストする技術を提供する。本発明のさまざまな
特徴によれば、イベント駆動システムプログラムソース
コードは、そのプログラムコードがユーザによって定義
された所望の性質(プロパティ)に従っていることを検
証する際に有用なオートマトンモデルに直接に変換され
る。具体的には、本発明の好ましい実施例によれば、イ
ベント駆動システムプログラムコードは、特定のモデル
チェッカのターゲット言語に翻訳(トランスレート)さ
れる。このような翻訳の結果、プログラムコードの実行
がイベント駆動システムの動作に影響を与えるかどうか
(例えば、プログラムコードの実行により新しいイベン
トが生成されるかどうか)に関するステートメントを含
むモデルが得られる。従って、本発明の好ましい実施例
のこのモデル抽出プロセスは、イベント駆動システムが
ユーザによって指定される所望の正当性性質に従ってい
るかどうかを判断するための論理モデルチェッカへの入
力として使用することができる。本発明によれば、モデ
ル抽出プロセスと、モデルチェッカの適用とは、ユーザ
の介在を必要とせずに、問題としているイベント駆動シ
ステムプログラムコードから直接に動的に行うことが可
能である。
【0015】本発明は、方法の形式で、および、そのよ
うな方法を実施する装置の形式で実現可能である。ま
た、本発明は、有形の媒体(例えば、フロッピーディス
ク、CD−ROM、ハードドライブ、またはその他の任
意の機械可読な記憶媒体)に実現されたプログラムコー
ドの形式で実現することも可能である。その場合、プロ
グラムコードがマシン(例えばコンピュータ)にロード
されマシンによって実行されるとき、そのマシンは本発
明を実施する装置となる。また、本発明は、例えば、記
憶媒体内にあり、マシンにロードされあるいはマシンに
よって実行され、あるいは、電線やケーブル、光ファイ
バ、または電磁放射などのような何らかの伝送媒体を通
じて伝送されるプログラムコードの形式で実現すること
も可能である。その場合、プログラムコードがマシン
(例えばコンピュータ)にロードされマシンによって実
行されるとき、そのマシンは本発明を実施する装置とな
る。汎用プロセッサ上に実装されると、プログラムコー
ドセグメントは、プロセッサと結合して、特定の論理回
路と同様に動作する固有のデバイスとなる。
【0016】本発明の背景を示し理解を容易にするため
に、例示的なイベント駆動システムの概略を説明する。
具体的には、図1は、例示的な通信ネットワークのブロ
ック図である。この通信ネットワークは、認識されるよ
うに、無数のイベント駆動アプリケーションを含む。通
信ネットワーク100は、例えば、AT&T Corp.の周知の
長距離網のような公衆交換電話網であり、加入者に長距
離電話サービスを提供する。加入者は、例えば通信デバ
イス105−1〜105−6を通じて通信ネットワーク
100にアクセスする。通信デバイス105−1〜10
5−6は、例えば、宅内装置、有線電話機、パーソナル
コンピュータ、セルラ電話機、ページャおよびファクシ
ミリ機である。通信ネットワーク100は、特に、複数
の市外交換機(例えば、図1に示す市外交換機115、
120、125、および130のような)を有する。こ
れらの市外交換機は、周知のタイプの通信交換装置(例
えば、Lucent Technologies Inc.(所在地:600 Mounta
in Ave., Murray Hill, NJ07974, USA)から販売されて
いるNo.4ESS(R)(Electronic Switching Sys
tem: 電子交換システム)またはNo.5ES
(R))のいずれでもよい。図1に示すように、市外
交換機115、120、125、および130はそれぞ
れ、ブロック150として示したいわゆる市外網を通じ
て、いくつかの他の交換機に接続される。また、各市外
交換機は、複数の市内局(CO:central office)(例
えば、CO110〜114)に、接続されることも可能
である。このような通信ネットワークおよびCOの動作
は周知であり、例えば、"Engineering and Operations
in the Bell System", Second Edition, Eighth Printi
ng, 国際標準図書番号0−932764−04−5(1
993年)、に記載されているため、その詳細について
はここでは説明しない。略言すれば、COは、発呼者が
特定の電話番号をダイヤルした通信デバイス(例えば1
05−1)で発信された電話呼を、通信ネットワーク1
00の対応する市外交換機へ送るように動作する。CO
(例えばCO110)は、さらに、被呼者の通信デバイ
ス(例えば105−6)へ、および、対応する市外交換
機(例えば市外交換機125)から呼を受信するCO
(例えばCO114)へ、呼接続を延長するように動作
する。
【0017】通信ネットワーク100の市外交換機11
5、120、125および130は、データリンク13
5を通じて相互接続される。データリンク135は、例
えば、周知のNo.7信号方式(SS7)信号網であ
る。通信ネットワーク100は、市外交換機が互いにデ
ータメッセージを交換して、発呼者(例えば、通信デバ
イス105−1)と被呼者(例えば通信デバイス105
−6)の間で通信ネットワーク100を通じて接続を確
立するように動作する。すなわち、接続は、発呼者と被
呼者の間で呼が確立される(例えば、被呼者が「オフフ
ック」になることによって呼に応答する)まで通信ネッ
トワーク100を通じて呼接続を延長することによって
確立される。さらに、通信ネットワーク100は、ネッ
トワーク制御ポイント(NCP:Network Control Poin
t)といういくつかの集中データベースを有する。その
うちの1つをNCP140として示す。周知のように、
NCP140のようなNCPは、周知の北米の「800
番」や「888番」無料電話番号サービスのような、ネ
ットワークを通じてアクセスされ提供されるさまざまな
サービス機能をサポートするように、通信ネットワーク
100内のさまざまな位置に戦略的に配置される。
【0018】認識されるように、通信ネットワーク10
0およびこのネットワークの上記のさまざまな要素は、
無数のイベント駆動アプリケーションを必要とする。例
えば、市外交換機115、120、125および130
の呼処理アプリケーションプログラムは、ネットワーク
100を通じての呼接続の延長を容易にするように開発
されなければならない。具体的には、例えば、発呼者
は、通信デバイス105−1を利用して発呼を行う。こ
の場合、イベント駆動呼処理アプリケーションは、ほん
の少し列挙するだけでも、オフフック、ダイヤル、アイ
ドル、コネクト(接続)、リング(呼出し)、およびビ
ジー(話中)のようなオペレーションすなわち制御状態
を含むことになる。
【0019】上記のように、本発明の好ましい実施例に
よれば、イベント駆動ソフトウェアコードは、前掲の関
連米国特許出願に記載の原理に従って指定され書かれ
る。従って、本発明の完全な理解を容易にするために、
関連米国特許出願の発明のさまざまな特徴について以下
でやや詳細に説明する。
【0020】関連米国特許出願の発明のさまざまな特徴
によれば、イベント駆動ソフトウェアを定義し、構造化
し、開発するためのプログラミング技法が提供される。
具体的には、イベント駆動ソフトウェアは、2つの基本
部分に構造化される。これらを、関連米国特許出願およ
び本明細書では、制御依存コード(control-sensitiveco
de)および非制御依存コード(non-control-sensitive co
de)という。本発明によれば、制御依存コードは、制御
状態の識別と、認識されなければならない生成されるイ
ベントと、特定の状態における特定のイベントの到着に
対する応答とを含む。さらに、システムを定義する制御
依存コード内では、制御状態は、このプログラムコード
全体を通じて単一の記号により一意的に識別される。非
制御依存コードは、制御依存コードとは別個に指定さ
れ、デバイスドライバの呼出し、周辺装置の制御、テー
ブルの更新、変数定義などのような、イベント駆動シス
テムをプログラミングするために必要な通常のシーケン
シャルコードのためのものである。本発明によれば、ソ
フトウェア開発者は、コア制御機能(すなわち、状態、
イベントおよび応答)と、イベント駆動システムの動作
に直接に影響しない外部的事項とが明確に区別されるよ
うに、イベント駆動ソフトウェアアプリケーションコー
ドを構造化することが可能となる。そのため、プログラ
マは、プログラムコード自体を表面的に調べることによ
り制御状態から制御状態への正確な実行フローを直接に
判断することができる。これは、個々の制御状態が強力
な視覚的コンテクストを有するからである。すなわち、
本発明によれば、プログラムソースコードは、イベント
駆動アプリケーションを定義する制御状態どうしが直接
の論理的な(すなわち、因果的な)関係を有するよう
に、構造化され定義される。この関係は、ソースコード
自体を調べることにより直ちに明らかなものである。
【0021】具体的には、図2および図3に、発呼を処
理する例示的なイベント駆動アプリケーションに対する
通常のCソースコードプログラム200の例(プログラ
ムコード行番号1〜268)を示す。認識されるよう
に、ソースコードプログラム200は、アプリケーショ
ンのいくつかの制御状態を定義する。例えば、コードセ
クション205〜230は、それぞれ、busy、conn、de
ad、digits、idle、およびringという制御状態のオペレ
ーションを定義している。しかし、重要な点であるが、
ソースコードプログラム200を調べても、さまざまな
制御状態どうしの間の実行スレッドを直ちに明らかに見
ることはできない。高水準プログラミングの観点から
は、ソースプログラムコード内に定義されたさまざまな
制御状態間の直接のあるいは論理的な(すなわち、因果
的な)関係はない。すなわち、上記のように、プログラ
マが制御状態から制御状態への論理フローをプログラム
ソースコードから直接に理解するためには、ソースを通
じて実行スレッドをトレースする(例えば、分岐命令や
gotoステートメントをたどる)ことが必要である。
認識されるように、このような論理フローのトレース
は、特に非常に大きなソースコードプログラムでは、面
倒で、非啓発的で、誤りの起きやすい、時間のかかる作
業である。例えば、通信ネットワーク100のすべての
必要な呼処理機能を実装するソースコードは、数万行の
オーダーになる。また、このようなソースコードでは、
いわゆる「バグ」に対しての、および、アプリケーショ
ンプログラムが所望の機能を実装しているかどうかを判
定するための、ソフトウェアのテストも複雑になる。重
要な点であるが、この新規なプログラミング技法は、従
来技術のさまざまな欠点を解決するように、イベント駆
動ソフトウェアを定義し、構造化し、コーディングする
ものである。本発明によれば、制御依存コードは、制御
状態の識別と、認識されなければならない生成されるイ
ベントと、特定の状態における特定のイベントの到着に
対する応答とを含む。さらに、システムを定義する制御
依存コード内では、制御状態は、このプログラムコード
全体を通じて単一の記号により一意的に識別される。非
制御依存コードは、制御依存コードとは別個に指定さ
れ、デバイスドライバの呼出し、周辺装置の制御、テー
ブルの更新、変数定義などのような、イベント駆動シス
テムをプログラミングするために必要な通常のシーケン
シャルコードのためのものである。
【0022】本発明によれば、ソフトウェア開発者は、
コア制御機能(すなわち、状態、イベントおよび応答)
と、イベント駆動システムの動作に直接に影響しない外
部的事項とが明確に区別されるように、イベント駆動ソ
フトウェアアプリケーションコードを構造化することが
可能となる。そのため、プログラマは、プログラムコー
ド自体を表面的に調べることにより制御状態から制御状
態への正確な実行フローを直接に判断することができ
る。これは、個々の制御状態が強力な視覚的コンテクス
トを有するからである。すなわち、本発明によれば、プ
ログラムソースコードは、イベント駆動アプリケーショ
ンを定義する制御状態どうしが直接の論理的な(すなわ
ち、因果的な)関係を有するように、構造化され定義さ
れる。この関係は、ソースコード自体を調べることによ
り直ちに明らかなものである。
【0023】本発明の好ましい実施例によれば、本発明
によるイベント駆動ソフトウェアの定義、構造化および
コーディングを容易にするために、周知のANSI標準
Cプログラミング言語のプログラミング拡張を採用す
る。具体的には、本発明の好ましい実施例によれば、A
NSI標準Cプログラミング言語の拡張は、単一の記号
からなる。この記号として、例えば、周知のASCII
記号"@"を選択する。これは、プログラムコードの制御
依存部分内のすべての制御状態をラベルするために用い
られる。すなわち、記号"@"は、プログラムソースコー
ド内の制御状態に対応するすべてのラベルの最初の文字
として使用される。すなわち、本発明によれば、"@"ラ
ベルを前置したプログラムステートメントは、プログラ
ムコードにおけるある制御状態を識別する。この制御状
態により、イベント駆動システムの現在の実行は、次の
イベントの到着を待機する。次のイベントの到着後、そ
のイベントへの必要な応答のエンコードとともに、次の
プログラムコードが実行され、その結果、新たな一意的
に定義される制御状態への遷移が起こる。認識されるよ
うに、この応答および新たな制御状態は、内部テーブル
に記憶された状態情報、変数、デバイス応答などのよう
な動作上の事項に依存して処理される各イベントごとに
異なる可能性がある。
【0024】図4は、本発明の原理によるソフトウェア
開発の例示的なオペレーションの流れ図である。具体的
には、プログラムされるイベント駆動システムに対する
仕様が、例えばシステムエンジニアによって定義される
(ブロック410)。当業者には認識されるように、こ
のような仕様は、ソフトウェアプログラムが書かれ実装
されるアプリケーション(例えば、イベント駆動システ
ム)全体の記述を提供する。システム仕様から、開発中
のイベント駆動システムを実装するための制御状態を識
別する(ブロック420)ことができる。これにより、
認識されなければならない生成されるイベントと、特定
の状態における特定のイベントの到着に対する応答とが
識別される。こうして、本発明によれば、ソースコード
プログラムの定義、構造化、およびコーディング(ブロ
ック430)は、上記のように、制御依存コードと非制
御依存コードの2つの部分に分割される。
【0025】本発明によれば、システムを定義する制御
依存コード内では、制御状態は、このプログラムコード
全体を通じて単一の記号により一意的に識別される。上
記のように、本発明の好ましい実施例によれば、プログ
ラムソースコード全体の制御依存部分内の制御状態に対
応するすべてのラベルの最初の文字として"@"を使用す
る。すなわち、本発明によれば、"@"ラベルを前置した
プログラムステートメントは、プログラムコードにおけ
る待機(ウェイト)状態を識別する。この状態で、イベ
ント駆動システムの現在の実行は、次のイベントの到着
を待機する。さらに、非制御依存コードは、制御依存コ
ードとは別個に指定され、デバイスドライバの呼出し、
周辺装置の制御、テーブルの更新、変数定義などのよう
な、イベント駆動システムをプログラミングするために
必要な通常のシーケンシャルコードのためのものであ
る。
【0026】本発明によれば、ソフトウェア開発者は、
コア制御機能(すなわち、状態、イベントおよび応答)
と、イベント駆動システムの動作に直接に影響しない外
部的事項とが明確に区別されるように、イベント駆動ソ
フトウェアアプリケーションコードを構造化することが
可能となる。そのため、本発明の原理を適用する1つの
実用的な結果として、プログラマは、プログラムコード
自体を表面的に調べることにより制御状態から制御状態
への正確な実行フローを直接に判断することができる。
これは、個々の制御状態が強力な視覚的コンテクストを
有するからである。すなわち、本発明によれば、プログ
ラムソースコードは、イベント駆動アプリケーションを
定義する制御状態どうしが直接の論理的な(すなわち、
因果的な)関係を有するように、構造化され定義され
る。この関係は、ソースコード自体を調べることにより
直ちに明らかなものである。重要な点であるが、本発明
によれば、さらに、イベント駆動ソフトウェアのテスト
および検証(ブロック440)において、ソフトウェア
が、ユーザによって指定された所望の性質を満足してい
るかどうかを判断することができるという利点がある。
特に、本発明の目的であり、以下でさらに詳細に説明す
るのは、このようなイベント駆動ソフトウェアのテスト
である。
【0027】しかし、上記の関連米国特許出願の説明を
続けると、本発明によれば、ソフトウェア開発者は、コ
ア制御機能(すなわち、状態、イベントおよび応答)
と、イベント駆動システムの動作に直接に影響しない外
部的事項とが明確に区別されるように、イベント駆動ソ
フトウェアアプリケーションコードを構造化することが
可能となる。例えば、図5および図6に、図2および図
3の例示的な通信呼処理アプリケーションに対して、本
発明により構造化され定義された例示的なCソースコー
ドプログラム500(プログラムコード行番号1〜25
8)を示す。具体的には、本発明の好ましい実施例によ
って、制御状態510〜555は、すべてのラベルの最
初の文字が記号"@"である。これにより、ソースコード
プログラム500全体の制御依存部分内の制御状態であ
ることを表す。こうして、ソースコードプログラム50
0は、本発明によれば、制御状態(すなわち、制御状態
510〜555)どうしの間に直接の論理的な(すなわ
ち、因果的な)関係を有する。重要な点であるが、プロ
グラマは、プログラムコード自体を表面的に調べること
により制御状態から制御状態への正確な実行フローを直
接に判断することができる。これは、個々の制御状態が
強力な視覚的コンテクストを有するからである。
【0028】例えば、ソースコードプログラム500を
表面的に調べることにより、制御状態535(すなわ
ち、"@digits"制御状態)におけるコードを見ると、そ
の特定の制御状態にどのようにして到達するかを直ちに
正確に確認することができる。すなわち、この特定のイ
ベント駆動システムの呼出しおよび実行(すなわち、発
呼の処理)で、電話機での数字のダイヤリングを可能に
する制御状態が処理される。制御状態535はそのよう
な状態であり、本発明の好ましい実施例によれば、コー
ド500の第125行から始まることが明確に識別可能
である。制御状態535を見ると、この制御状態に到達
する実行フローは、その上にコーディングされた制御状
態510〜530を通った直後であることが直ちにわか
る。さらに、別の制御状態を追加するために(例えば、
さらにアプリケーション固有の機能を追加するために)
ソースコードプログラム500を改訂する必要がある場
合、新しい制御状態は、すべての制御状態の間のコンテ
クストを失うことなく、既存の制御状態階層内の正確な
位置に配置することができる。
【0029】ソースコードプログラム500を見ること
によって直接に認識される、制御状態どうしの間のこの
論理的な(すなわち、因果的な)関係と、明確な実行フ
ローとは、図7および図8ではさらに明らかである。図
7および図8は、図5および図6の例示的なCソースコ
ードプログラム500から導出される翻訳済みソースコ
ードプログラム700を示す。上記のように、本発明の
好ましい実施例によれば、ANSI標準Cプログラミン
グ言語の拡張は、単一の記号からなる。この記号とし
て、例えば、記号"@"を選択する。これは、プログラム
コードの制御依存部分内のすべての制御状態をラベルす
るために用いられる。コード自体の実際の翻訳の手順
(トランスレータ)は当業者には明らかである。すなわ
ち、翻訳済みソースコードプログラム700は、本発明
によるイベント駆動アプリケーションプログラムの、実
際の完全に翻訳されたANSI標準C表現である。例え
ば、図5の制御状態515(すなわち、"@idle")は、
プログラムコードセクション710に翻訳され、制御状
態545(すなわち、"@ring"は、プログラムコードセ
クション720に翻訳される。
【0030】関連米国特許出願の発明の上記の利点は、
コンピュータプログラミング技術において非常に有用で
あり、特に、イベント駆動ソフトウェアアプリケーショ
ンプログラミングの定義、構造化、および開発にとって
有用である。もちろん、アプリケーションプログラムの
開発の成功にとって重要なのは、期待される性質の定義
されたセットに対するプログラムコードの有効なテスト
および検証である。本発明のさまざまな特徴が目的とし
ており以下でさらに詳細に説明するのは、イベント駆動
ソフトウェアのテストである。
【0031】本発明のさまざまな特徴は、イベント駆動
ソフトウェアの効率的なテストを目的とするとともに、
ソースコードの通常の保守、拡張および改訂のプロセス
の一部として、プログラムコードへの将来の変更の妥当
性を追跡することを可能にする。図9は、本発明の原理
に従って、イベント駆動ソフトウェアをテストする例示
的なオペレーションの流れ図である。具体的には、本発
明の好ましい実施例によれば、イベント駆動ソフトウェ
アコードは、上記の関連米国特許出願の発明の原理によ
り指定され書かれる。すなわち、好ましい実施例によれ
ば、ソースコードプログラムは、制御依存および非制御
依存フォーマットとして定義され構造化される(ブロッ
ク910)。本発明によれば、イベント駆動ソースコー
ドプログラムを構文解析してソースプログラムで定義さ
れる制御状態を抽出し、ソースコードを中間状態マシン
フォーマットに変換する(ブロック920)。その後、
本発明によれば、モデルチェックの目的で、中間状態マ
シンフォーマットを、オートマトンフォーマットに変換
する。
【0032】具体的には、好ましい実施例によれば、中
間状態マシンフォーマットは、特定のモデルチェッカの
入力言語による注釈付きオートマトンモデルに変換され
る(ブロック940)。好ましい実施例によれば、モデ
ルチェッカツールは、LucentTechnologies Inc.のBell
Laboratories Divisionによって開発されそこから入手
可能な周知の「SPIN」モデルチェッカである。これ
についてさらに詳細には、G. J. Holzmann, "The Model
Checker SPIN", IEEE Trans. On Software Engineerin
g, Vol.23, No.5, pp.279-295, May 1997、に記載され
ている。重要な点であるが、本発明によれば、ソースコ
ードプログラムの各ステートメントは、オートマトンモ
デル内の抽象(abstraction)にマッピングされる(ブロ
ック930)。このマッピング(詳細は後述)は、検証
プロセスの初期段階で定義される翻訳マップを用いて実
現される。このマップは、その後、新しいタイプの命令
がソースプログラム内に導入される(例えば、プログラ
ミングの誤りを修復するためにリビジョン(改訂)をし
た後)までは、改訂する必要はない。特に、このマッピ
ングは、特定のステートメントからモデルチェッカのタ
ーゲット言語への固定された翻訳を指定する。従って、
このマップに現れる命令は、その命令がソースコードに
現れるどの場所でも、組織的にオートマトンモデルに変
換される。
【0033】上記のマップに加えて、本発明によれば、
いわゆる環境モデルが、例えばユーザによって、定義さ
れる。環境モデルは、イベント駆動アプリケーションが
実行される特定のオペレーティング環境に関してしなけ
ればならない仮定の最小セットをカプセル化する。具体
的には、モデルチェッカ入力言語がモデルチェッカ(例
えば、SPIN)に提供される(ブロック950)と、
環境モデルが適用される(ブロック975)。その結
果、本発明の好ましい実施例によれば、イベント駆動シ
ステムの性質の検証は、モデルチェッカによるイベント
駆動ソフトウェアのテストおよびチェック(ブロック9
60)の間、環境モデルに従ってなされる。その後、イ
ベント駆動システムがユーザの希望する実行の性質およ
び動作に従っているかどうかを判断するために、モデル
チェッカによって、テストおよびチェックの結果が周知
の方法で出力される(ブロック970)。
【0034】本発明によるイベント駆動ソフトウェアの
上記のテストおよびチェックにとって重要なことは、ソ
ースプログラムで定義される制御状態を抽出するために
イベント駆動ソースコードプログラムを効率的に構文解
析すること、および、ソースコードを中間状態マシンフ
ォーマットに変換することである(例えば、図9、ブロ
ック920を参照)。すなわち、モデルチェックを効率
的に実行するためには、イベント駆動システムの制御状
態、イベントおよびアクション(すなわち、応答)を識
別することができなければならない。従って、本発明の
もう1つの特徴は、以下で詳細に説明するように、モデ
ルチェックの目的で、イベント駆動システムの記述を容
易にする形式的仕様を実現することである。
【0035】本発明のこの特徴によれば、イベント駆動
システムの仕様を容易にするフォーマットが定義され
る。本発明のさまざまな実施例(詳細は後述)によれ
ば、仕様は、直接コンパイルおよび実行するために、タ
ーゲットプログラミング言語(例えばC)に変換される
ことが可能である。本発明のさらに別の実施例によれ
ば、仕様は、上記のマッピングを用いて、SPINモデ
ルチェックツールの入力言語のような論理検証モデルに
変換される。当業者には認識されるように、文法仕様ツ
ールは周知である。例えば、yacc(yet-another-com
piler-compiler)は、入力ストリームを解析し解釈する
Cルーチンの開発においてプログラマを支援し、また、
コンパイラおよびインタプリタの開発を容易にする、周
知のUNIXソフトウェアユーティリティツールの1つ
である(例えば、A. T. Schreiner, "Using C with cur
ses, lex and yacc", Prentice-Hall Inc., Englewood
Cliffs,NJ 07632, 1990、を参照)。yaccと同様
に、本発明の仕様フォーマットは、言語の文法を記述
し、その言語に対するコンパイラの生成を自動化するフ
ォーマリズムを提供する。ただし、本発明の仕様フォー
マットは、本発明によれば、システムの動作の指定を目
的とする。
【0036】具体的には、例示的な文法定義は、本発明
の好ましい実施例によれば、以下のようになる。
【0037】 ---------------------------------------------------------------------- spec: defs "%%" rules ; defs: /*empty*/ | one_def | one_def defs ; one_def: "%c_template" "\" "STRING "\"" | "%p_template" "\" "STRING "\"" | "%p_map" "\" "STRING "\"" | "%nparam" NUMBER | "%event" names | "%state" names ; names: STRING | STRING names ; rules: one_rule | one_rule rules ; one_rule: source ":" opt_recpt responses ";" ; responses: one_response | one_response "|" responses one_response : triggers opt_target opt_action ; triggers: one_trigger | one_trigger "+" triggers ; one_trigger: event | "(" condition ")" | "!(" condition ")" | "else" | "always" ; opt_target: /*empty*/ | target ; opt_action: /*empty*/ | "{" action "}" ; opt_recpt: /*empty*/ | onreceipt "{" action "}" ; event: STRING condition: STRING action: STRING source: STRING target: STRING | "@" STRING; ----------------------------------------------------------------------
【0038】上記の例示的な文法定義は、本発明の原理
による特定のアプリケーション(例えば、イベント駆動
システム)に対する仕様を定義するためのフレームワー
クを提供する。この例示的な文法定義において、二重引
用符の間に現れるすべての項は終端記号(キーワード、
リテラル、トークン)である。大文字の語STRINGは、英
数字ストリングを表し、NUMBERは1桁以上の数字列を表
す。選択肢は縦棒"|"(すなわち、パイプ記号)によっ
て区切られ、各文法規則はセミコロンで終了する。
【0039】好ましい実施例によれば、仕様フォーマッ
トは2つの部分、すなわち、宣言および仕様からなる。
好ましい実施例の仕様の宣言部は、特に、仕様で用いら
れることになるすべてのイベントの記号名のリストを含
む。例えば、以下のコード断片は、好ましい実施例によ
る例示的な宣言である。
【0040】 ---------------------------------------------------------------------- %c_template "c.ctp" /* optional: a C code template */ %p_template "p.ctp" /* optional: a SPIN model template */ %p_map "p.map" /* optional: maps C code to SPIN */ %event Cranswer %event Crbusy %event Crconn %event Crdigit %state S_idle %state S_pots %state S_alloc %state S_parked %state S_busy %% ----------------------------------------------------------------------
【0041】上記の例示的な宣言において、パーセン
ト"%"記号で始まるすべての語はキーワードである。例
えば、"%c_template"は、C(すなわち、好ましい実施
例のターゲット実装言語)のコードの最終実装のための
テンプレートを含むファイルの名前を定義する。さら
に、"%p_map"ステートメントは、実装のCコードと、モ
デルチェッカでの検証に用いられるコードの抽象表現
(すなわち、マッピング)との間の関係を定義するため
に使用することが可能なファイルの名前を与える。さら
に、上記の例示的な宣言は、仕様で用いられることにな
るすべてのイベントに対する記号名(例えば、"%event
Cranswer")のリストと、仕様内のすべての制御状態に
対する状態名(例えば、"%state S_idle")のリストと
を含む。
【0042】本発明によれば、仕様フォーマットのコア
は、イベント駆動システムに対する遷移規則のセットの
仕様である。この仕様において、状態仕様は、以下の記
法で指定される遷移規則の列からなる。
【0043】例えば、以下のコード断片は、好ましい実
施例による例示的な制御状態仕様である。 ---------------------------------------------------------------------- S_idle: Cronhook S_idle {x->cwswit &= Swhook;} | Crflash {x->cwswit |= Swhook;} | Croffhook @S_idle_E3 {x->cwswit |= Swhook;} | Iring @S_idle_E5 ; ----------------------------------------------------------------------
【0044】上記の例示的な制御状態仕様では、遷移規
則は、状態の名前(例えば、"S_idle")と、それに続く
コロンから始まる。コロンの後に、この状態からの一連
の可能な遷移がリストされる。それぞれの遷移は、縦
棒"|"によって互いに区切られる。それぞれの完全な遷
移は、3つの部分を有する。それらの3つの部分は、応
答をトリガするイベントの名前と、応答が実行された後
に到達する新しい状態(すなわち、「次状態」)の名前
と、その応答自体である。仕様の次状態部分は、応答が
完全に処理された後に制御がどこへ移動するかを定義
し、あらかじめ定義された制御状態、または、いわゆる
内部状態のいずれかの名前を含む。本発明の別の実施例
によれば、2つのイベントが同じ次状態および応答を有
する場合、次のような略記法を使用することができる。 ---------------------------------------------------------------------- | Crflash + Crdis + Croffhook S_idle {x->cwswit |= Swhook;} ----------------------------------------------------------------------
【0045】上記の略記法を用いると、イベントCrflas
h、Crdis、およびCroffhookはすべて同じ応答(すなわ
ち、指定されたコード断片の実行と、状態"S_idle"への
遷移)を生成することになる。
【0046】認識されるように、イベント駆動システム
は、各制御状態で実行を停止し、次のイベントの到着を
待機する。これに対して、イベント駆動システムは、内
部状態を待機せずに通過する。さらに、次のイベントの
到着を待機せずに次状態の処理を継続すべきことを示す
ために、遷移規則の次状態セグメントにおける状態名
に"@"記号を前置することができる(なお、この記法
は、関連米国特許出願の発明のさまざまな特徴に従って
制御状態を識別することに関して前に説明したのと同じ
ものではない)。このような場合、次状態におけるシス
テムの動作を決定するためにイベントが必要な場合、最
後のイベントが利用可能である。
【0047】上記の内部状態に関して、このようなイベ
ントは、イベント駆動システムの内部的な非イベント関
連の判定をエンコードする。本発明の好ましい実施例に
よれば、仕様における内部イベントに対する構文は、イ
ベント名の代わりに、ターゲット実装言語における一般
的なブール条件を使用することを除いては、制御状態に
対するものと同じである。例えば、例示的な内部状態は
以下のように定義される。 ---------------------------------------------------------------------- S_idle_E5: {x->drv->trunk} @S_otrunk {x->orig = ipc->orig; ipc->orig->term = x; emitcdr {x, CDRtransit, 0};} | !{x->drv->trunk} @S_idle_E6 ; ----------------------------------------------------------------------
【0048】上記の例示的な内部状態は、特定のフィー
ルドの値(この例では、"x"という名前のCデータ構造
体内に2つのレベルを隠蔽している)が、状態"S_otrun
k"または状態"S_idle_E6"のいずれへ制御が移動するか
を決定することになることを指定している。前の場合、
その状態の後に定義されているアクションコードの部分
が実行されることになる。後の場合、実行されるコード
はない。
【0049】好ましい実施例によれば、イベントまたは
条件の名前が"else"である場合、明示的にリストされた
イベント名またはブール条件のいずれも成立しないとき
にデフォルトの応答がなされることを示す。例えば、上
記の例示的な内部状態コード断片は、次のように書くこ
とも可能である。 ---------------------------------------------------------------------- S_idle_E5: {x->drv->trunk} @S_otrunk {x->orig = ipc->orig; ipc->orig->term = x; emitcdr {x, CDRtransit, 0};} | else @S_idle_E6 ; ----------------------------------------------------------------------
【0050】この内部状態コード断片によれば、この状
態に到達したときに条件"{x->drv->trunk}"を評価して"
false"(偽)の場合、実行されるコード断片はなく、状
態"S_idle_E6"への遷移が起こるのみである。
【0051】さらに、イベント駆動システムの仕様に関
して、制御状態においてイベントを受け取った直後に実
行しなければならない共通のアクション断片を定義する
ことが有用なことがある。定義により、このようなコー
ド断片は、いずれかの遷移規則が適用される前に実行さ
れるべきである。本発明の好ましい実施例によれば、こ
のような共通のアクション断片を定義するためにキーワ
ード"onreceipt"が用いられる。このキーワードの使用
法の例を次に示す。 ---------------------------------------------------------------------- S_orig: onreceipt {x->cwswitch &= ~Swconn; y = callroute(x->endpt->ctxt, x->lidb->number, &i);} | (y == nil) @S_orig_E54 | else @S_orig_E55 ; ----------------------------------------------------------------------
【0052】上記の例示的なコード断片では、状態は内
部状態であるため、次状態セグメントにおいて常に"@"
プレフィクスで参照されることが可能である。"onrecei
pt"コードは、遷移によりこの状態に到達すると直ちに
実行され、条件"(y == nil)"が評価される。この条件
が"true"(真)である場合、システムは"S_orig_E54"と
いう名前の別の内部状態に移動し、"false"(偽)の場
合、システムは内部状態"S_orig_E55"に移動して新しい
イベントを待機せずに処理が継続する。
【0053】最後に、この仕様に関して、条件チェック
をすべてバイパスして、無条件に次状態に進む中間遷移
状態を指定することが有用なこともある。本発明の好ま
しい実施例によれば、常に真である条件は、次の例のコ
ード断片に示すようにキーワード"always"で表される。 ---------------------------------------------------------------------- S_enabdial: onreceipt {x->ndigits = 0; x->drv->dtmf(x, 1); x->cwswit |= Swconn;} | always S_dial ; ----------------------------------------------------------------------
【0054】モデルチェックの目的でイベント駆動シス
テムを記述する際の上記の形式的仕様の本発明による実
現は、イベント駆動システムの動作を記述するための仕
様フォーマットを提供する。
【0055】イベント駆動ソフトウェアをテストする際
の本発明のさまざまな特徴および利点についてさらに説
明するため、図10に、上記の本発明の原理に従って図
5および図6の例示的なCソースコードプログラム50
0のソースコードリストから導出された中間状態マシン
コード1000(プログラムコード行番号1〜124)
を示す。上記のように、イベント駆動コードに対するモ
デルチェックを有効に実行するためには、制御状態、イ
ベントおよびアクションの正確な評価および識別をしな
ければならない。本発明の原理によれば、中間状態マシ
ンコード1000は、制御状態と、イベントと、アクシ
ョンとの間の明確な区別を提供する。具体的には、好ま
しい実施例によれば、トランスレータをCソースコード
プログラム500に適用して、中間状態マシンコード1
000を直接に生成する。トランスレータの実際の構成
は、コンピュータプログラミング技術の当業者には容易
に理解されるため、ここで詳細に説明する必要はない。
ただし、本発明に従ってCソースコードプログラム50
0を構造化することにより、関連する制御状態、イベン
ト、およびアクションの自動識別が可能となる。すなわ
ち、上記のような本発明の利点が実現される。
【0056】具体的には、中間状態マシンコード100
0を注意深く調べることにより、コード1000の宣言
部のイベント(例えばコードセクション1010を参
照)と制御状態(例えば、コードセクション1020を
参照)が明確にわかる。さらに、本発明によれば、中間
状態マシンコード1000内のさまざまな状態仕様(例
えば、状態仕様1030〜1050を参照)によって、
このようなイベント、制御状態および関連するアクショ
ンの間の明確な相互作用が示されている。図9のオペレ
ーションに関して既に説明したように、本発明によれ
ば、中間状態マシンノード1000は、問題としている
プログラムコードのテストを実行するためにモデルチェ
ッカ入力言語に変換される。この変換は、検証プロセス
の初期段階で定義される翻訳マップによって容易にな
る。特に、このマッピングは、特定のステートメントか
らモデルチェッカのターゲット言語への固定された翻訳
を指定する。従って、このマップに現れる命令は、その
命令がもとのソースコードに現れるどの場所でも、組織
的にオートマトンモデルに変換される。
【0057】図11に、例示的なCソースコードプログ
ラム500によって定義されるイベント駆動システムに
対する例示的なマップ1100を示す。マップ1100
は、もとのソースコード内の個々のステートメントがど
のようにしてモデルチェッカのターゲット言語へと固定
的に翻訳されるかを定義するプログラムコード1110
(プログラムコード行番号1〜47)からなる。具体的
には、プログラムコード1110は、イベント定義11
20およびコード定義1130を含む。例えば、プログ
ラムコード1110の第20行は、左側のコラムのあら
ゆるステートメントを、右側のコラムに与えられた抽象
へとマッピングする。本発明によれば、マップ1100
の適用により、図12および図13に示すモデルチェッ
カ入力言語1200(プログラムコード行番号1〜30
3)が導出される。さらに、本発明によれば、図12お
よび図13のモデルチェッカ入力言語に対して、図14
のライブラリ関数1400に例示されるライブラリ関数
のセットが生成される。認識されるように、ライブラリ
関数1400(プログラムコード行番号1〜153)
は、モデルチェッカ入力言語1200内の項を定義する
のに必要な意味規則(セマンティクス)を提供する。好
ましい実施例によれば、モデルチェッカ入力言語120
0は、SPINモデルチェッカツールで使用される。
【0058】重要な点であるが、本発明によれば、マッ
プを使用することの1つの重要な利点は、ソースとは独
立に、チェックプロセスを適用するのに適当なレベルの
項目を正確に定義する能力がユーザに提供されることで
ある。マップは、任意のステートメントの翻訳(すなわ
ち、上記のプログラムコード1110の右側のコラム)
として"true"または"skip"を含むことができる。これ
は、この項目が抽象されていることを示す。従って、マ
ップは、ターゲットプログラミング言語(例えば、C)
から検証モデルへのコンバータとして作用するのに加え
て、無関係な詳細をフィルタリングして除去する「フィ
ルタ」として作用する。また、マップは、ソースコード
と検証モデルの間の関連の完全な形式化を提供する。
【0059】上記のように、本発明の好ましい実施例に
よれば、イベント駆動システムの性質の検証は、検証シ
ステムによるイベント駆動ソフトウェアのテストおよび
チェック(図9、ブロック975を参照)の間、環境モ
デルに従う。環境モデルは、イベント駆動プログラムコ
ードが実行される環境に関してユーザによってなされる
個々の仮定を形式化する。例えば、上記の例示的な通信
呼処理アプリケーションの場合、環境モデルは、加入者
の動作、ハードウェア応答、および通信ネットワークの
性能に関する形式化を含む。具体的には、図15は、図
5および図6に記載した通信処理アプリケーションに対
する例示的な環境モデル1500(プログラムコード行
番号1〜80)である。例えば、環境モデル1500の
コード断片1510は、例示的な通信アプリケーション
で使用される通信デバイスに対する形式化(すなわち、
テンプレート)を記述する。好ましい実施例によれば、
モデルチェッカ(すなわち、SPIN)は、モデルチェ
ッカ入力言語1200を環境モデル1500とともに使
用して、イベント駆動システムがユーザの所望の実行の
性質および動作に従っているかどうかを判定する。
【0060】本発明によれば、マップと環境モデルとを
別々に定義しているため、もとのソースコードにルーチ
ンの変更がなされたときに、検証インフラストラクチャ
はほとんど更新する必要がない。すなわち、ステートメ
ントの新たな基本型がソースコードに導入されなけれ
ば、検証プロセスはユーザの介在なしに繰り返すことが
可能であり、ソースコードは、本質的な正当性の性質の
大規模なライブラリに対して引き続き従っていることを
チェックすることが可能である。さらに、本発明によれ
ば、テスト対象のイベント駆動コードを表す正確なオー
トマトンモデルがソースコードから直接に自動生成さ
れ、論理モデルチェッカ(例えば、SPIN)で検証さ
れる。
【0061】例えば、図16は、図5および図6に記載
した通信処理アプリケーションによって定義される特定
の制御状態に対する例示的なオートマトンモデル160
0である。具体的には、図16に示す制御状態は、ソー
スコードプログラム500において制御状態545とし
て定義されるいわゆる"ring"制御状態である(図5およ
び図6を参照)。ソースコードプログラム500の第1
83行における"@ring"プログラムステートメントは、
ソースプログラムの観点から、この特定の制御状態の明
確な記述を開始する。本発明のテストおよびチェックの
特徴によれば、上記のように、この制御状態から、正確
なオートマトン(例えば、オートマトンモデル160
0)が抽出される。オートマトンモデル1600は、"r
ing"制御状態1610との間の遷移と、アプリケーショ
ンの他の制御状態(すなわち、"digits_1"制御状態16
20、"idle"制御状態1630、"conn"制御状態164
0、および"error"制御状態1650)の間の遷移を明
確に示す。また、オートマトンモデル1600は、例示
的なアプリケーションにおいて発生するさまざまなイベ
ント(すなわち、イベント1660〜イベント1695
を明確に例示している。さらに、図17に示す完全なオ
ートマトンモデル1700は、図5および図6に記載さ
れた、本発明により自動生成された完全な通信処理アプ
リケーションの例示的な完全なオートマトンモデルであ
る。
【0062】本発明の上記の実施例は、関連米国特許出
願により書かれ(例えば、図5および図6を参照)、上
記の本発明の原理に従ってテストされたCソースプログ
ラムを使用している。本発明の発明者がさらに認識した
ところでは、ある種のユーザ(例えば、検証システムプ
ログラマやソフトウェアテストエンジニア)は、上記の
仕様フォーマットに従って駆動されるイベントを定義す
ることによって自分のシステム設計プロセスを開始した
いと考えることがある。例えば、このようなユーザは、
問題となるイベント駆動システムを直接にコーディング
するために上記の仕様フォーマットを使用することが考
えられる。本発明のこのような実施例によれば、このよ
うな変換を容易にするためにテンプレートが用いられ
る。以下に、このような状態マシンコードをコンパイル
および実行のために標準Cに変換する際に用いられる例
示的なCコードテンプレートを示す。 ---------------------------------------------------------------------- void state(Line *x, Ipc *ipc) { Line *y; int op, i, c, os, time; goto start; /*** template: ***/ @C out: if(x == nil) return; if(time != 0) { x->time = rtms() + time; addtimer(x); } return; /* exit-point */ start: op = ipc->type; os = x->state; time = 0; switch(os) { @@ } os = 0; error: y = x->term; x->term = nil; goto Aerror; } ----------------------------------------------------------------------
【0063】上記のCコードテンプレートは、状態マシ
ン仕様からCへの完全な変換のためのフレームワークを
提供する。認識されるように、この例示的なCコードテ
ンプレートは、モデルチェッカツール自体によって、ま
たは、別のマシン上で、実行されることが可能である。
テンプレートは、変換実装のコアとして使用される"sta
te"と呼ばれるルーチンに渡される引数の型定義を含
む。このルーチンは、問題としているイベント駆動シス
テムに関連するイベントが発生するときに必ず呼び出さ
れなければならない。テンプレートコードはさらに、本
発明に従って指定される遷移規則から生成される状態マ
シンに対するプレースホルダ"@C"を含む。状態マシンの
生成に必要な実際のプログラムコードは、当業者には直
ちに理解されるはずであり、ここでこれ以上説明する必
要はない。各呼出し時に、"start"ルーチンが実行さ
れ、現在のイベントに関する詳細な情報を記憶するため
に環境によって使用されるデータ構造体からイベント型
およびパラメータ値を取得する。プロセスの現在の状態
は、ルーチンへの第1引数のデータ構造体から取得さ
れ、いわゆるCのswitch文がこの状態値に対して実行さ
れて、遷移規則における正しい位置を確定する。テンプ
レートの略記号"@@"は、ツールによって、すべての制御
状態の名前の完全なリストに展開され、生成後(すなわ
ち、変換後)のCコードにおいて、各状態の遷移規則に
対するコード断片が置かれる場所へのジャンプが対応す
る。本発明の実施例によれば、仕様は、直接のコンパイ
ルおよび実行のために、ターゲットプログラミング言語
(例えば、C)に変換される。
【0064】例えば、図18は、本発明に従ってイベン
ト駆動ソフトウェアコードを実行しテストする際に用い
られる例示的なコンピュータシステム1800を示す。
具体的には、コンピュータシステム1800は、ディス
プレイ1820およびキーボード1830に接続された
通常のパーソナルコンピュータ1810を含む。認識さ
れるように、例えば特定のイベント駆動ソフトウェアコ
ードの実行中にパーソナルコンピュータ1810によっ
て生成される情報は、コンピュータシステム1800の
ユーザによるアクセスのために、ディスプレイ1820
に表示されることが可能である。ユーザは、ディスプレ
イ1820を見た結果として、通常のように、キーボー
ド1830を用いて、パーソナルコンピュータ1810
と対話しパーソナルコンピュータ1810を制御する。
さらに、マウス1880やその他の周知のポインティン
グデバイスにより、ユーザは、パーソナルコンピュータ
1810にさらに入力を提供することが可能である。例
示的なコンピュータシステム1800は、さらに、例え
ば本発明に従ってイベント駆動アプリケーションソフト
ウェアコードを実行しテストするプロセッサ1840を
有する。例えば、このようなイベント駆動アプリケーシ
ョンソフトウェアコードは、通常のディスケット187
0によりパーソナルコンピュータ1810にロードされ
た後、内部ディスクメモリ1860に記憶される。さら
に、このコードの実行およびテストは、通常のようにし
て、ランダムアクセスメモリ1850(RAM)のアク
セスおよび使用を必要とする。こうして、コンピュータ
システム1800のユーザは、本発明に従って、ソフト
ウェアを実行しテストして、さまざまなアプリケーショ
ン(例えば、イベント駆動システム)を提供することが
できる。さらに、認識されるように、コンピュータシス
テム1800は、通常のようにして、特定のアプリケー
ションプログラムの実行およびテストのために、他のコ
ンピュータシステムやデバイスに接続されることも可能
である。
【0065】例えば、コンピュータシステム1800
は、本発明に従って、ソフトウェアを実行しテストする
ために用いられ、図19に示すようなエラートレース1
900を生成することが可能である。エラートレース1
900は、プログラムコード1910(プログラムコー
ド行番号1〜47)からなり、図5および図6に記載し
た通信処理アプリケーションに対して、本発明によって
生成された例示的なエラートレースである。具体的に
は、例示的なエラートレース1900は、イベント駆動
システムのもとのソースコードにおけるエラーの存在を
直接に識別するシナリオをどのようにしてチェックプロ
セスが生成しているかを示す。さらに、エラートレース
1900は、プログラムコード1910により、エラー
を再現するために実行することが可能なプログラミング
レベルのステートメント(例えば、Cレベルのステート
メント)で、このようなエラーを識別する。例示的なエ
ラートレース1900では、このトレースは、Cプログ
ラムコードステートメントの直接のシーケンス(図9、
プログラムコード1920を参照)で、イベント駆動シ
ステムが、実行により、処理される最初のイベントを"C
rdigit"として、例示的な状態"@busy"になることを示
す。Cソースプログラムコード500(特に、第223
行の制御状態555)とともに、エラートレース190
0から認識されるように、このイベントの発生の可能性
を予期するものはプログラムコードにはない(すなわ
ち、コーディングエラーはない)。本発明によれば、ユ
ーザは、モデル自体の専門的な知識や、チェックプロセ
ス自体で用いられる中間表現の大部分についての専門的
な知識なしで、エラートレース1900のみをCレベル
の実行ステートメントで解釈することができる。
【0066】以上、本発明の実施例について説明した
が、当業者であればさまざまな変形が可能であり、その
ような変形例も本発明の技術的範囲に入る。例えば、当
業者には認識されるように、ブロック図は、本発明の原
理を実現する回路例の概念図を表す。同様に、認識され
るように、フローチャート、流れ図、状態遷移図、擬似
コード、プログラムコードなどは、コンピュータ可読な
媒体において実質的に表現され、コンピュータ、マシ
ン、あるいはプロセッサによって(そのようなコンピュ
ータ、マシン、あるいはプロセッサが明示的に図示され
ているか否かにかかわらず)実行されることが可能なさ
まざまなプロセスを表す。
【0067】さらに、特許請求の範囲において、指定さ
れた機能を実行する手段として表現された要素は、例え
ば、(a)その機能を実行する回路要素の組合せ、また
は、(b)その機能を実行するソフトウェアを実行する
ために適当な回路と組み合わせられた任意の形式の(従
って、ファームウェア、オブジェクトコード、マイクロ
コードなどを含む)ソフトウェア、などのような、その
機能を実行する任意の手段を含む。
【0068】
【発明の効果】以上述べたごとく、本発明によれば、イ
ベント駆動ソフトウェアを効率的にテストし、ソースコ
ードの通常の保守、拡張および改定のプロセスの一部と
して、プログラムコードへの変更の妥当性を追跡するこ
とを可能にする技術が提供される。
【図面の簡単な説明】
【図1】例示的なイベント駆動システムのブロック図で
ある。
【図2】図1の例示的なイベント駆動システムで用いら
れる例示的な通信呼処理アプリケーションに対する通常
のCソースコードプログラムの例を示す図である。
【図3】図1の例示的なイベント駆動システムで用いら
れる例示的な通信呼処理アプリケーションに対する通常
のCソースコードプログラムの例を示す図である。
【図4】本発明の原理によるソフトウェア開発の例示的
なオペレーションの流れ図である。
【図5】図2および図3の例示的な通信呼処理アプリケ
ーションに対する、図4のソフトウェア開発オペレーシ
ョンに従って構造化され定義された、例示的なCソース
コードプログラムの図である。
【図6】図2および図3の例示的な通信呼処理アプリケ
ーションに対する、図4のソフトウェア開発オペレーシ
ョンに従って構造化され定義された、例示的なCソース
コードプログラムの図である。
【図7】図5および図6の例示的なCソースコードプロ
グラムから、本発明の原理に従って導出された、翻訳済
みソースコードプログラムの図である。
【図8】図5および図6の例示的なCソースコードプロ
グラムから、本発明の原理に従って導出された、翻訳済
みソースコードプログラムの図である。
【図9】本発明の原理に従ってイベント駆動ソフトウェ
アをテストする例示的なオペレーションの流れ図であ
る。
【図10】図5および図6の例示的なCソースコードプ
ログラムから導出される中間状態マシンコードの図であ
る。
【図11】図5および図6の例示的なCソースコードプ
ログラムによって定義されるイベント駆動システムの例
示的なマップの図である。
【図12】図11の例示的なマップを適用することから
導出されるモデルチェッカ入力言語の図である。
【図13】図11の例示的なマップを適用することから
導出されるモデルチェッカ入力言語の図である。
【図14】図12および図13のモデルチェッカ入力言
語とともに使用される例示的なライブラリ関数のセット
の図である。
【図15】図5および図6に記述される通信処理アプリ
ケーションに対する例示的な環境モデルの図である。
【図16】図5および図6の通信処理アプリケーション
によって定義される特定の制御状態に対する例示的なオ
ートマトンモデルの図である。
【図17】図5および図6に記述される完全な通信処理
アプリケーションの例示的な完全なオートマトンモデル
の図である。
【図18】本発明に従って指定され書かれたイベント駆
動ソフトウェアコードを実行する際に用いられる例示的
なコンピュータシステム1800の図である。
【図19】図5および図6に記述される通信処理アプリ
ケーションに対して、本発明の原理に従って生成される
例示的なエラートレースの図である。
【符号の説明】
100 通信ネットワーク 105 通信デバイス 110〜114 市内局 115 市外交換機 120 市外交換機 125 市外交換機 130 市外交換機 135 データリンク 140 ネットワーク制御ポイント(NCP) 150 市外網 160 アジャンクト 200 ソースコードプログラム 500 ソースコードプログラム 510〜555 制御状態 700 翻訳済みソースコードプログラム 1000 中間状態マシンコード 1100 マップ 1120 イベント定義 1130 コード定義 1200 モデルチェッカ入力言語 1400 ライブラリ関数 1500 環境モデル 1600 オートマトンモデル 1610 "ring"制御状態 1620 "digits_1"制御状態 1630 "idle"制御状態 1640 "conn"制御状態 1650 "error"制御状態 1700 完全なオートマトンモデル 1800 コンピュータシステム 1810 パーソナルコンピュータ 1820 ディスプレイ 1830 キーボード 1840 プロセッサ 1850 ランダムアクセスメモリ 1860 内部ディスクメモリ 1870 ディスケット 1880 マウス 1900 エラートレース
───────────────────────────────────────────────────── フロントページの続き (71)出願人 596077259 600 Mountain Avenue, Murray Hill, New Je rsey 07974−0636U.S.A. (72)発明者 ジェラルド ジョハン ホルツマン アメリカ合衆国、07974 ニュージャージ ー、マーレイ ヒル、チェストナット ヒ ル ドライブ 15 (72)発明者 ケネス レイン トンプソン アメリカ合衆国、07060 ニュージャージ ー、ウォッチハング、リッジ ロード 336 (72)発明者 フィリップ スティーブン ウィンターボ トム アメリカ合衆国、07060 ニュージャージ ー、ウォッチハング、ジョンストン ドラ イブ 800

Claims (26)

    【特許請求の範囲】
  1. 【請求項1】 a.複数の命令を含むソフトウェアのソ
    ースプログラムを提供するステップと、 b.前記ソースプログラムを構文解析して複数の制御状
    態を識別し、該ソースプログラムを状態マシンフォーマ
    ットに変換するステップと、 c.前記ソースプログラムの複数の命令に翻訳マップを
    適用するステップと、 d.前記ソースプログラムの状態マシンフォーマットを
    検証プログラムに変換するステップと、 e.前記検証プログラムに環境モデルを適用するステッ
    プと、 f.検証ツールにおいて前記検証プログラムを用いて前
    記ソフトウェアをテストするステップとを有することを
    特徴とするソフトウェアテスト方法。
  2. 【請求項2】 前記ソースプログラムは、コンピュータ
    にイベント駆動プログラムを実行させる第1ソースコー
    ドセグメントと、該イベント駆動プログラムを実行する
    コンピュータの順次的な制御を定義する少なくとも1つ
    の命令集合を含む第2コードセグメントとを含み、 前記第1ソースコードセグメントは、前記イベント駆動
    システムに関連する複数の制御状態を定義する第1命令
    集合と、前記イベント駆動システムの複数のイベントを
    定義する第2命令集合と、前記イベント駆動システムの
    複数のアクションを定義する第3命令集合とを含み、 前記複数の制御状態の各制御状態は、前記第1ソースコ
    ードセグメントの第1命令集合内に識別子を有し、該識
    別子は、識別されるすべての制御状態に共通するプログ
    ラミング記号であることを特徴とする請求項1に記載の
    方法。
  3. 【請求項3】 前記翻訳マップは複数のマッピング命令
    を含むことを特徴とする請求項1に記載の方法。
  4. 【請求項4】 前記ステップcは、 前記複数のマッピング命令を前記ソースプログラムの複
    数の命令と比較して一致する命令を検出するステップ
    と、 前記ソースプログラムの命令に一致するマッピング命令
    をモデルチェッカの入力言語に変換するステップとを有
    することを特徴とする請求項3に記載の方法。
  5. 【請求項5】 前記環境モデルは、前記イベント駆動シ
    ステムの複数の動作属性を含むことを特徴とする請求項
    3に記載の方法。
  6. 【請求項6】 前記検証ツールは、モデルチェッカツー
    ルであることを特徴とする請求項2に記載の方法。
  7. 【請求項7】 前記モデルチェッカツールはSPINモ
    デルチェッカツールであることを特徴とする請求項6に
    記載の方法。
  8. 【請求項8】 複数の命令を含むソフトウェアのソース
    プログラムを提供する手段と、 前記ソースプログラムを構文解析して複数の制御状態を
    識別し、該ソースプログラムを状態マシンフォーマット
    に変換する手段と、 前記ソースプログラムの複数の命令に翻訳マップを適用
    する手段と、 前記ソースプログラムの状態マシンフォーマットを、モ
    デルチェッカの入力言語によるモデルチェッカプログラ
    ムに変換する手段と、 前記モデルチェッカプログラムに環境モデルを適用する
    手段と、 モデルチェッカにおいて前記モデルチェッカプログラム
    を用いて前記ソフトウェアをテストする手段と、 前記ソフトウェアのテストの結果を表示する手段とを有
    することを特徴とするソフトウェアテスト装置。
  9. 【請求項9】 前記ソースプログラムは、コンピュータ
    にイベント駆動プログラムを実行させる第1ソースコー
    ドセグメントと、該イベント駆動プログラムを実行する
    コンピュータの順次的な制御を定義する少なくとも1つ
    の命令集合を含む第2コードセグメントとを含み、 前記第1ソースコードセグメントは、前記イベント駆動
    システムに関連する複数の制御状態を定義する第1命令
    集合と、前記イベント駆動システムの複数のイベントを
    定義する第2命令集合と、前記イベント駆動システムの
    複数のアクションを定義する第3命令集合とを含み、 前記複数の制御状態の各制御状態は、前記第1ソースコ
    ードセグメントの第1命令集合内に識別子を有し、該識
    別子は、識別されるすべての制御状態に共通するプログ
    ラミング記号であることを特徴とする請求項8に記載の
    装置。
  10. 【請求項10】 前記翻訳マップは複数のマッピング命
    令を含むことを特徴とする請求項9に記載の装置。
  11. 【請求項11】 前記翻訳マップを適用する手段は、 前記複数のマッピング命令を前記ソースプログラムの複
    数の命令と比較して一致する命令を検出する手段と、 前記ソースプログラムの命令に一致するマッピング命令
    をモデルチェッカの入力言語に変換する手段とを有する
    ことを特徴とする請求項10に記載の装置。
  12. 【請求項12】 前記環境モデルは、前記イベント駆動
    システムの複数の動作属性を含むことを特徴とする請求
    項11に記載の装置。
  13. 【請求項13】 複数の命令を記憶した機械可読媒体に
    おいて、 前記複数の命令は、機械によって実行されるときに該機
    械がイベント駆動ソフトウェアをテストする方法を実行
    する命令を含み、 前記方法は、 ソフトウェアのソースプログラムを構文解析して複数の
    制御状態を識別し、該ソースプログラムを状態マシンフ
    ォーマットに変換するステップと、 前記ソースプログラムに翻訳マップを適用するステップ
    と、 前記ソースプログラムの状態マシンフォーマットを検証
    プログラムに変換するステップと、 前記検証プログラムに環境モデルを適用するステップ
    と、 前記検証プログラムを検証システムに入力することによ
    って前記ソフトウェアをテストするステップとによりイ
    ベント駆動ソフトウェアをテストすることを特徴とする
    機械可読媒体。
  14. 【請求項14】 前記ソースプログラムは、コンピュー
    タにイベント駆動プログラムを実行させる第1ソースコ
    ードセグメントと、該イベント駆動プログラムを実行す
    るコンピュータの順次的な制御を定義する少なくとも1
    つの命令集合を含む第2コードセグメントとを含み、 前記第1ソースコードセグメントは、前記イベント駆動
    システムに関連する複数の制御状態を定義する第1命令
    集合と、前記イベント駆動システムの複数のイベントを
    定義する第2命令集合と、前記イベント駆動システムの
    複数のアクションを定義する第3命令集合とを含み、 前記複数の制御状態の各制御状態は、前記第1ソースコ
    ードセグメントの第1命令集合内に識別子を有し、該識
    別子は、識別されるすべての制御状態に共通するプログ
    ラミング記号であることを特徴とする請求項13に記載
    の機械可読媒体。
  15. 【請求項15】 前記検証システムは前記検証プログラ
    ムをSPINモデルチェッカに入力することを特徴とす
    る請求項14に記載の機械可読媒体。
  16. 【請求項16】 前記イベント駆動システムは、通信ネ
    ットワークを通じて電話呼を接続することに関連する少
    なくとも1つのイベントを有する通信サービスアプリケ
    ーションであることを特徴とする請求項15に記載の機
    械可読媒体。
  17. 【請求項17】 前記状態マシンフォーマットは、ユー
    ザによって定義される仕様を用いて変換されることを特
    徴とする請求項16に記載の機械可読媒体。
  18. 【請求項18】 少なくとも1つのメモリを有するコン
    ピュータと、 前記メモリ内のプログラミング言語ステートメントの列
    を受け取る手段とを有するソフトウェアテストシステム
    において、 前記プログラミング言語ステートメントの列は、前記コ
    ンピュータにイベント駆動システムを実行させる第1ソ
    ースコードセグメントおよび第2ソースコードセグメン
    トを含み、 前記第1ソースコードセグメントは、前記イベント駆動
    システムの複数の制御状態を定義する第1命令集合と、
    前記イベント駆動システムの複数のイベントを定義する
    第2命令集合と、前記イベント駆動システムの複数のア
    クションを定義する第3命令集合とを含み、 前記複数の制御状態の各制御状態は、前記第1ソースコ
    ードセグメントの第1命令集合内に識別子を有し、該識
    別子は、識別されるすべての制御状態に共通するプログ
    ラミング記号であり、 前記第2ソースコードセグメントは、前記イベント駆動
    プログラムを実行する際のコンピュータの順次的な制御
    を定義する少なくとも1つの命令集合を含み、 前記ソフトウェアテストシステムはさらに、 前記第1ソースコードセグメントを構文解析して前記複
    数の制御状態を識別し、前記第1ソースコードセグメン
    トおよび前記第2ソースコードセグメントを状態マシン
    フォーマットに変換する手段と、 前記第1ソースコードセグメントおよび前記第2ソース
    コードセグメントに翻訳マップを適用する手段と、 前記状態マシンフォーマットを、モデルチェッカの入力
    言語によるモデルチェッカプログラムに変換する手段
    と、 前記モデルチェッカプログラムに環境モデルを適用する
    手段と、 モデルチェッカにおいて前記モデルチェッカプログラム
    を用いて前記ソフトウェアをテストする手段と、 前記ソフトウェアのテストの結果を表示する手段とを有
    することを特徴とするソフトウェアテストシステム。
  19. 【請求項19】 前記第1ソースコードセグメントおよ
    び前記第2ソースコードセグメントを前記メモリ内のオ
    ブジェクトプログラムへとコンパイルする手段と、 前記コンピュータで前記オブジェクトプログラムを実行
    して前記イベント駆動システムを実現する手段とをさら
    に有することを特徴とする請求項18に記載のソフトウ
    ェアテストシステム。
  20. 【請求項20】 前記テストする手段は、前記イベント
    駆動システムの実行に関連してユーザによって定義され
    る少なくとも1つのプロパティ集合を使用することを特
    徴とする請求項19に記載のソフトウェアテストシステ
    ム。
  21. 【請求項21】 前記モデルチェッカはSPINモデル
    チェッカであることを特徴とする請求項19に記載のソ
    フトウェアテストシステム。
  22. 【請求項22】 前記状態マシンフォーマットは、ユー
    ザによって定義される仕様を用いて変換されることを特
    徴とする請求項21に記載のソフトウェアテストシステ
    ム。
  23. 【請求項23】 前記イベント駆動システムは、通信ネ
    ットワークを通じて電話呼を接続することに関連する少
    なくとも1つのイベントを有する通信サービスアプリケ
    ーションであることを特徴とする請求項18に記載のソ
    フトウェアテストシステム。
  24. 【請求項24】 前記表示する手段によって表示される
    結果は、前記イベント駆動システムの少なくとも1つの
    完全なオートマトン表現を含むことを特徴とする請求項
    21に記載のソフトウェアテストシステム。
  25. 【請求項25】 前記翻訳マップはユーザによって指定
    されることを特徴とする請求項20に記載のソフトウェ
    アテストシステム。
  26. 【請求項26】 前記翻訳マップ、前記環境モデル、お
    よび前記プログラミング言語ステートメントの列はそれ
    ぞれ、Cプログラミング言語で書かれることを特徴とす
    る請求項25に記載のソフトウェアテストシステム。
JP35361399A 1998-12-15 1999-12-13 ソフトウェアテスト方法 Expired - Fee Related JP3631647B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/211967 1998-12-15
US09/211,967 US6353896B1 (en) 1998-12-15 1998-12-15 Method and apparatus for testing event driven software

Publications (2)

Publication Number Publication Date
JP2000181750A true JP2000181750A (ja) 2000-06-30
JP3631647B2 JP3631647B2 (ja) 2005-03-23

Family

ID=22788997

Family Applications (1)

Application Number Title Priority Date Filing Date
JP35361399A Expired - Fee Related JP3631647B2 (ja) 1998-12-15 1999-12-13 ソフトウェアテスト方法

Country Status (5)

Country Link
US (1) US6353896B1 (ja)
EP (1) EP1014265B1 (ja)
JP (1) JP3631647B2 (ja)
CA (1) CA2288378A1 (ja)
DE (1) DE69900810T2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006515092A (ja) * 2002-10-15 2006-05-18 インターナショナル・ビジネス・マシーンズ・コーポレーション 高性能なスキーマ妥当性検査のためのxmlスキーマ注釈付きオートマトン・エンコーディング
US7707567B2 (en) 2005-09-14 2010-04-27 Sony Corporation Information processing method, information-processing apparatus, recording medium, and program
WO2012032890A1 (ja) * 2010-09-09 2012-03-15 株式会社日立製作所 ソースコード変換方法およびソースコード変換プログラム
WO2013080842A1 (ja) * 2011-12-01 2013-06-06 株式会社日立製作所 ソースコード変換方法及び計算機読み取り可能な記憶媒体
US9027002B2 (en) 2010-10-27 2015-05-05 Hitachi, Ltd. Method of converting source code and source code conversion program

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000000890A1 (de) * 1998-06-26 2000-01-06 Deutsche Telekom Ag Verfahren zur prüfung von java-bytecode-programmen auf sicherheitseigenschaften
US6889379B1 (en) * 1998-12-31 2005-05-03 Microsoft Corporation Transporting objects between a client and a server
US6981215B1 (en) 1998-12-31 2005-12-27 Microsoft Corp. System for converting event-driven code into serially executed code
AU763141B2 (en) * 1999-04-19 2003-07-17 Motorola Australia Pty Ltd A method of detecting illegal sequences of code execution
US6691078B1 (en) * 1999-07-29 2004-02-10 International Business Machines Corporation Target design model behavior explorer
US6499136B1 (en) * 1999-11-10 2002-12-24 Lucent Technologies Inc. Single-shot entry code for software state transition
US20010037492A1 (en) * 2000-03-16 2001-11-01 Holzmann Gerard J. Method and apparatus for automatically extracting verification models
SE522408C2 (sv) 2000-04-27 2004-02-10 Microsoft Corp Datorprogram och förfarande för automatiserad testning av en dators funktionalitet
US20020100022A1 (en) * 2000-05-08 2002-07-25 Holzmann Gerard J. Method and apparatus for automatic verification of properties of a concurrent software system
US7213230B2 (en) * 2000-12-28 2007-05-01 Yeda Research And Development Co. Ltd. Playing scenarios of system behavior
SE518751C2 (sv) 2001-01-03 2002-11-19 Microsoft Corp Metod och system där en extern server erhåller information om enskilda mobila terminalers radioöverföringskapacitet
US7117484B2 (en) * 2002-04-16 2006-10-03 International Business Machines Corporation Recursive use of model based test generation for middleware validation
US20040013250A1 (en) * 2002-07-22 2004-01-22 Sreekrishna Kotnur System and method of tracking component object requests
US7334219B2 (en) * 2002-09-30 2008-02-19 Ensco, Inc. Method and system for object level software testing
US7543274B2 (en) 2003-12-22 2009-06-02 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration System and method for deriving a process-based specification
US20050177578A1 (en) * 2004-02-10 2005-08-11 Chen Yao-Ching S. Efficient type annontation of XML schema-validated XML documents without schema validation
US7437374B2 (en) * 2004-02-10 2008-10-14 International Business Machines Corporation Efficient XML schema validation of XML fragments using annotated automaton encoding
US7412699B2 (en) * 2004-04-14 2008-08-12 International Business Machines Corporation Using behavioral annotations in source code to build middleware applications
US20060020413A1 (en) * 2004-07-26 2006-01-26 Septon Daven W Methods and apparatus for providing automated test equipment with a means to jump and return in a test program
US20060020920A1 (en) * 2004-07-26 2006-01-26 Daven Walt Septon Methods and apparatus for providing automated test equipment with a means to jump between tests in a test program
US7703082B2 (en) * 2004-12-07 2010-04-20 International Business Machines Corporation Controlling user intervention in a multi-processing computer system
US7861239B2 (en) * 2005-05-23 2010-12-28 International Business Machines Corporation Data migration between versions of software
US7647219B2 (en) * 2005-07-11 2010-01-12 Texas Instruments Incorporated Event-driven test framework
US20070101196A1 (en) * 2005-11-01 2007-05-03 Rogers William A Functional testing and verification of software application
US20070245327A1 (en) * 2006-04-17 2007-10-18 Honeywell International Inc. Method and System for Producing Process Flow Models from Source Code
US7631227B2 (en) * 2006-11-21 2009-12-08 Etaliq Inc. Automated testing and control of networked devices
US7917900B2 (en) 2007-03-30 2011-03-29 Microsoft Corporation Enabling analysis of software source code
US8161496B2 (en) * 2007-07-31 2012-04-17 Microsoft Corporation Positive and negative event-based testing
US9026394B2 (en) * 2007-10-08 2015-05-05 Wurldtech Security Technologies Testing and mitigation framework for networked devices
WO2010060082A2 (en) * 2008-11-24 2010-05-27 Tekelec Systems. methods, and computer readable media for providing toll-free service in a telecommunications network
US9712341B2 (en) 2009-01-16 2017-07-18 Tekelec, Inc. Methods, systems, and computer readable media for providing E.164 number mapping (ENUM) translation at a bearer independent call control (BICC) and/or session intiation protocol (SIP) router
US8453117B2 (en) * 2010-03-09 2013-05-28 Fujitsu Limited Providing software validation as a service
US8683451B1 (en) 2010-04-30 2014-03-25 The United States Of America As Represented By The Secretary Of The Navy System and method for translating software code
US9043746B2 (en) 2011-03-07 2015-05-26 International Business Machines Corporation Conducting verification in event processing applications using formal methods
US8990770B2 (en) 2011-05-25 2015-03-24 Honeywell International Inc. Systems and methods to configure condition based health maintenance systems
US9477578B2 (en) * 2012-03-26 2016-10-25 Mitsubishi Electric Corporation Sequence-program-debugging supporting apparatus
US8832649B2 (en) 2012-05-22 2014-09-09 Honeywell International Inc. Systems and methods for augmenting the functionality of a monitoring node without recompiling
US8832716B2 (en) * 2012-08-10 2014-09-09 Honeywell International Inc. Systems and methods for limiting user customization of task workflow in a condition based health maintenance system
US9037920B2 (en) 2012-09-28 2015-05-19 Honeywell International Inc. Method for performing condition based data acquisition in a hierarchically distributed condition based maintenance system
US20140282414A1 (en) * 2013-03-14 2014-09-18 Cadence Design Systems, Inc. Method and system for debugging of a program
US9727442B2 (en) * 2014-05-08 2017-08-08 Mitsubishi Electric Corporation Engineering tool, program editing device, and program editing system
US9892027B2 (en) * 2014-07-09 2018-02-13 Fujitsu Limited Event-driven software testing
US9646257B2 (en) * 2014-09-03 2017-05-09 Microsoft Technology Licensing, Llc Probabilistic assertions and verifying them
KR102180592B1 (ko) * 2018-12-14 2020-11-18 주식회사 엘지씨엔에스 It 시스템 검증 방법 및 시스템
CN113010158B (zh) * 2021-03-18 2022-09-06 中国科学技术大学 纯状态的触发动作编程范式到事件驱动系统的转换方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5522073A (en) * 1993-11-22 1996-05-28 Hewlett-Packard Company Method and apparatus for automating and controlling execution of software tools and tool sets via when/then relationships
CA2147536A1 (en) * 1994-06-01 1995-12-02 Gerard Johan Holzmann On-the-fly model checking with partial-order state space reduction
JP2692609B2 (ja) * 1994-09-26 1997-12-17 日本電気株式会社 マルチタスクのプログラムデバッグ方法とその装置
US6158031A (en) * 1998-09-08 2000-12-05 Lucent Technologies, Inc. Automated code generating translator for testing telecommunication system devices and method

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006515092A (ja) * 2002-10-15 2006-05-18 インターナショナル・ビジネス・マシーンズ・コーポレーション 高性能なスキーマ妥当性検査のためのxmlスキーマ注釈付きオートマトン・エンコーディング
US7707567B2 (en) 2005-09-14 2010-04-27 Sony Corporation Information processing method, information-processing apparatus, recording medium, and program
WO2012032890A1 (ja) * 2010-09-09 2012-03-15 株式会社日立製作所 ソースコード変換方法およびソースコード変換プログラム
JP2012059026A (ja) * 2010-09-09 2012-03-22 Hitachi Ltd ソースコード変換方法およびソースコード変換プログラム
US9027002B2 (en) 2010-10-27 2015-05-05 Hitachi, Ltd. Method of converting source code and source code conversion program
WO2013080842A1 (ja) * 2011-12-01 2013-06-06 株式会社日立製作所 ソースコード変換方法及び計算機読み取り可能な記憶媒体
JP2013117767A (ja) * 2011-12-01 2013-06-13 Hitachi Ltd ソースコード変換方法及びソースコード変換プログラム

Also Published As

Publication number Publication date
DE69900810T2 (de) 2002-08-29
EP1014265A1 (en) 2000-06-28
DE69900810D1 (de) 2002-03-14
EP1014265B1 (en) 2002-01-23
JP3631647B2 (ja) 2005-03-23
US6353896B1 (en) 2002-03-05
CA2288378A1 (en) 2000-06-15

Similar Documents

Publication Publication Date Title
JP3631647B2 (ja) ソフトウェアテスト方法
Holzmann et al. A practical method for verifying event-driven software
US6973638B1 (en) Execution of extended activity diagrams by code generation
Felty et al. Feature specification and automated conflict detection
Holzmann et al. Automating software feature verification
CA2118437C (en) Application-oriented telecommunication system interface
US6158031A (en) Automated code generating translator for testing telecommunication system devices and method
Holzmann et al. An automated verification method for distributed systems software based on model extraction
US20050262482A1 (en) System and method for efficiently analyzing and building interdependent resources in a software project
CN115639980A (zh) 一种低代码平台可拖拽的前端逻辑编排方法及装置
CN101980546B (zh) 智能网平台、业务执行方法和分析业务异常的方法
JP2000232516A (ja) 妥当性検査規則を作成するための方法、生成モジュール、サーバ、制御モジュール、および記憶手段
CN113419969B (zh) 基于浏览器插件的界面自动化成功率保障方法
US20020129335A1 (en) Robust logging system for embedded systems for software compilers
US8700374B1 (en) System and method of using an active link in a state programming environment to locate an element in a graphical programming environment
Tsai et al. Scenario-based test case generation for state-based embedded systems
CN1132390C (zh) 一种基于业务独立模块的电信业务开发方法
Probert et al. Rapid generation of functional tests using MSCs, SDL and TTCN
US20060198501A1 (en) Method and device for constructing a voice dialog
CN110737431B (zh) 软件开发方法、开发平台、终端设备及存储介质
EP1018684A2 (en) Method and apparatus for developing event driven software
Li et al. A tool suite for diagnosis and testing of software design specifications
US6530044B1 (en) System and disassembling test data and method
KR100671683B1 (ko) 교환기 운용관리 데이터베이스 로더 자동 생성 방법
Etique et al. Service specification and validation for the intelligent network

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041029

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: 20041122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041217

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20071224

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20081224

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20081224

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091224

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101224

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20101224

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20111224

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20111224

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121224

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20131224

Year of fee payment: 9

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees