CSPベースのマルチドメインモデル検査ツール
時代はマルチコアの時代に入り、プログラムの性能向上のために、ソフトウェア技術者は部分部分が並列に動作するソフトウェアを開発せざるを得ない時代に突入しました。また、航空宇宙や医療、さらには車載のソフトウェアに関してはより安全なソフトウェアを確保するために機能安全規格などをクリアする必要性も高まっています。しかし、安全に動作する並列・分散プログラムの手法は未だ確立したとは言えない状況です。
PAT Pro(Process Analysis Toolkit Professional version)は、並列処理モデルとして歴史が長いCSP理論に基づいた並行プロセスモデルを採用しています。CSP(Communicating Sequential Process)は、Hoare博士が提案した並行プロセスを代数的に取り扱う事で、その複雑な振る舞いの安全性の証明や、二つの異なる表現のプロセスの等価性などを扱えます。その様な伝統的なCSPのモデルに対して近年注目されている「モデル検査」技術による挙動空間の網羅的な探索エンジンを備えています。
並行・分散システムまたは現状のモデル検査ツールには以下の様な課題があります。
複数の並列に動作するプログラムが共通のリソースに対して書き込みを行うような状況で動作する場合、タイミングにまつわる様々な問題(「デッドロック」など)が増えています。これらの問題を「共有メモリ」を利用する事によって設計されたシステムを、レビューや限られたテストだけで検出、解決することは困難です。
形式手法の1分野である、モデル検査技術が注目されています。しかし、モデル検査は、「数理論理学」をベースにした非常に学術性の高い研究分野から発生した技術であるがゆえに、十分に利用するには利用者がその様な研究分野について学習する必要がありました。PAT ProがベースとしているCSPも、本来「プロセス代数」と呼ばれる非常に数学的な背景を持ったものであり、記述されたモデルの正当性などの検査には、数学的な証明テクニックを必要とします。
多くのモデル検査ツールによって検証される対象モデルはそのモデル検査ツールが独自に定義されたモデル記述言語で記述される必要があります(SPINのPromera等)。そのおかげで、モデル検査の利用に際しては、実際の開発プロセスの中で成果物として作成する設計書や、実装言語での記述とは別な言語を新たに習得するという負担があります。
PAT Proの利用によりそれらの問題を以下の様に解決します。
リソースの共有問題を「共有メモリへの排他アクセス」という方法での解決に伴う困難性は、実際の設計者なら体験済みなのではないでしょうか?PAT ProがベースとしているCSP理論では、基本的にプロセス間通信を実現するのに「同期通信チャネル」を利用します。これはリソース共有システムに対しての有効な設計指針を示しており、今では並列処理を指向する様々な言語にこの機構(同期チャネル)が組み込まれつつあります。その様な設計指針で設計されたモデルを検査するのに最適なモデル検査ツールはPAT Proの様なCSPベースのモデル検査ツールとなります。
CSPでモデルの検証には本来数学的な証明テクニックが必要です。しかし、PAT Proは、モデル検査ツールなので、記述した対象モデルを検証するのにはSPINなどでも採用されている様な検証式を与える事で、後は自動で検証し、結果を出してくれます。
PAT Proでは、検査モデルの記述言語として、ベースになるCSPの他に複数の問題に特化した言語を用意しています。PAT Proの利用者はそれらから自分の問題に適した言語を選択して利用する事ができます。また、利用者の問題領域をより自然に記述てきるDSL(ドメイン特化型の言語)を理解し、検査できるように、PAT Proを拡張する事ができます。この様な事を実現するために、PAT Proではソフトウェアの構成を柔軟にしており、ユーザ自身が望む言語に対応する「モジュール」を開発する事によって、その要求をかなえる事ができます。
- PAT Proの基本的な記述言語であるCSPは、マルチスレッドやマルチタスクの様な並行動作し、かつそれらが適当なタイミングで情報を共有(通信)しながら問題を解決してゆくようなシステムに向いています。
- その様なモデルを構築するために、PAT Proでは高機能な(補完機能付)のエディタを用意しており、効率良くモデル記述が行えます。このエディタの特性は、モジュール毎に異なります。標準で用意されているLabeled Transition Systemモデルの状態遷移図を編集できるグラフィカルなエディタとして提供されています。
- シミュレーション機能によって、PAT Proの検証モデルとして作成したモデルを直接実行し、動作の妥当性を確認する事が可能です。シミュレーションの進行は、「合成された状態遷移」としてリアルタイムに表示されます。PAT Proで扱うモデルの多くが「並行プロセス」を扱いますが、それぞれのプロセスが持つローカルな状態遷移を合成した形でみる事により、システム全体の動作一望する事が可能になりますシミュレーション中は、状態やシステムで定義された変数の内容の変化を確認できるため、シミュレーション中に起こった不具合などの原因を確かめることができます。
- 多くのモデル検査では、作成したモデルの性質を検査するために記述する検証式という論理式を記述します。PAT Proもモデル検査なので、LTLと呼ばれる時相論理式を利用した検証式による検査が可能です。しかし、CSPという形式手法には検証方法について、もう一つの流儀があります。それは、2つのモデルの間に「詳細化関係」が成り立っているかどうかを検証するというものです。これによって、比較的抽象度の高い上流段階でのモデルと、実装に一歩近づいた段階的に詳細化されたモデルを比較する事ができます。
- ある性質の検査の実行結果として、その性質が充たされなかった場合、PAT Proでは検査の失敗という情報だけでなくそのモデルが初期状態からどの様な動作経路を経て性質を充たさない状況にいたったのか、ということを「反例」として確認する事ができます。反例は、シミュレーションの画面の合成された状態遷移のトレース図として表示されているため、そのシーケンス図の動作を再生して問題がある箇所を確認するといった作業が格段に楽に行なえます。
- システムが問題のある状況へ陥らないことをモデルと検証式(性質)から網羅的に検査し、安全性を保証できます。
- マルチスレッド、マルチタスク、及びマルチコアに配置される並列動作するソフトウェアからなるシステムが問題なく動作可能な設計になっているかどうかを確認できます。
PAT Proツールのアーキテクチャは、「モデル記述層」「変換層」「検査エンジン層」の3層構造になっています。このうちのモデル記述層に関しては「モジュー ル」という形で外部化されており、必要に応じて独自のモデル記述言語に対応したモデル記述エディタを開発する事ができます。
PAT ProのモデルであるCSP言語のモデルを高機能な構造テキストエディタによって記述できます。モジュールによってはグラフィカルエディタを提供します。
(モデル要素)
PAT Proモデルを直接シミュレーションします。シミュレーションの表現は、複数プロセスの並行合成された状態遷移のトレース図が動的にグラフィカルに表示されます。また、シミュレーションの各ステップでの変数の内容が表示されます。
記述したモデルが表現するシステムが満たすべき性質を時相論理式(LTL)で表現したものを登録し、それぞれ、もしくは一括でモデル検査を実行できます。
検査性質を満たさなれない場合、そこまでの実行パスを反例として出力し、シミュレーション画面で視覚的に不具合解析することができます。
CSPモデル、TCSPモデル、PCSPモデル、LTSモデル、時間オートマトンモデル、Stateflowモデル、その他
Tableau
Business Intelligence ツール
手元に存在する大量のデータを、専門知識やプログラミングスキルを要さず簡単に視覚化し、分析できるツールです。高速で簡単、そして美しさを備えた役立つデータ分析が可能な、誰もが使えるソフトウェアです。
UPPAAL
Timed Automaton
モデル検査ツール
複数の並列で動作するプログラムが時間的な制約の中で適切な動作をするか、といった複雑なモデルを作成できます。これによって、テストではカバーしきれないタイミングを含む網羅的な検証を可能とします。
National University of Singapore
Multi Domain
モデル検査ツール
並列システムの形式仕様記法 CSP(Communicating Sequential Process)を用いて並列システムが満たすべき性質のモデル検査を実行できます。検査性質を満たさない場合、実行パスを反例として出力し、シミュレーション画面で視覚的に不具合を解析できます。
PARASOFT社
静的解析・単体テストツール
C/C++ 言語対応の静的解析・単体テストツールです。静的解析はパターンマッチングによる解析と実行フローのシミュレーションによる解析の両方をサポートしています。開発工程に C++test による静的解析、単体テストを組み込むことにより、効率的なテストとソースコードの品質向上が期待できます。
Altia社
組込みシステム向け
モデルベース HMI 設計ツール、コードジェネレータ
組込み向け HMI/スクリーン設計およびソースコード生成ツールです。小さなメモリのローエンドシステムからハイエンドまで、幅広いデバイスと多くの RTOS に対応しています。理想の GUI 画像設計を実現出来ます。
組込みシステム向け
モデルベース HMI 設計ツール、コードジェネレータ
組込み向け HMI/スクリーン設計およびソースコード生成ツールです。小さなメモリのローエンドシステムからハイエンドまで、幅広いデバイスと多くの RTOS に対応しています。理想の GUI 画像設計を実現出来ます。
MicroFocus社
構成・変更管理ツール
構成管理機能の他に変更管理、欠陥追跡、要件管理、プロジェクト・タスク管理、スレッド形式のディスカッションなどを含む包括的なソリューションを提供するツール
導入に関する質問やご相談、サポートに関することなど、まずはお気軽にご相談ください。