一般的に通信プロトコルの実装は、プログラマが仕様(RFCなど)を理解・解釈し、それに従ってコーディングを行うという比較的退屈な作業である。通信プロトコルは厳密で正しい実装が要求されるが、その仕様は自然言語で記述されており、その曖昧さから時として実装系による差異が生じる。また、コーディングはCのような命令型言語を用いることがほとんどであり、出来上がったプログラムは複雑でわかり難く、バグを埋め込みやすい。最近では、IKE(インターネット鍵交換プロトコル)のような複雑なプロトコルを実装する機会も増えてきているため、これらの問題は今後ますます大きくなっていくと予想される。
このような背景を踏まえて、本プロジェクトでは通信プロトコルのための直感的でわかりやすい仕様記述言語Preccsを提案し、Preccsによる仕様記述からCプログラムを自動的に生成するツールを開発する。
通信プロトコルは主に(1)メッセージの形式と(2)メッセージ送受信の手順から構成されており、Preccsによるプロトコルの仕様記述はこれと素直に対応している。Preccsでは、(1)は正規表現を独自に拡張した記法によって記述する。これによって複雑な構造を持ったメッセージでも簡単に記述することができる。また(2)はCCSなどのプロセス代数をヒントにプロトコルの状態遷移や通信シーケンスを簡便に記述できるようにしたものである。
Preccsを用いて通信プロトコルの仕様を厳密に記述し、プログラムを自動生成することによって、信頼性の高い通信プログラムを短期間で開発することが可能となる。また、Preccsで書かれた仕様(プログラム)は読み易く機能拡張や保守なども容易になる。
コンパイラの実装にはyacc/lexなどのツールを用いるのが一般的なように、Preccsも通信プロトコルにおける代表的なツールとなることを目指している。

|