• 検索結果がありません。

2 バイナリモデル検査とは

N/A
N/A
Protected

Academic year: 2021

シェア "2 バイナリモデル検査とは"

Copied!
4
0
0

読み込み中.... (全文を見る)

全文

(1)

Japan Advanced Institute of Science and Technology

JAIST Repository

https://dspace.jaist.ac.jp/

Title Spinを用いたバイナリモデル検査

Author(s) 土肥, 雅俊

Citation

Issue Date 2008‑03

Type Thesis or Dissertation Text version author

URL http://hdl.handle.net/10119/4354 Rights

Description Supervisor:青木利晃, 情報科学研究科, 修士

(2)

Spin を用いたバイナリモデル検査

土肥 雅俊(610060)

北陸先端科学技術大学院大学 情報科学研究科 2008年2月29日

キーワード: spin, バイナリモデル検査,モデル検査、形式検証, 形式的手法.

1 はじめに

近年、ソフトウェアの信頼性確保のために形式的検証手法が注目されている。しかし、

プログラムの振舞いを形式検証することは困難であり、プログラミング言語から仕様記述 言語への変換なども必要であった。しかも、これらの作業において、状態爆発や言語間の 記述能力の相違が問題としてよく挙げられる。たとえ、経験豊富な技術者であってもプロ グラムの振舞いや性質を適切に捉え、これらの問題を解決することは容易ではない。そ こで、本研究では、SpinのC言語埋込み機能を利用したCプログラムのバイナリ検査手 法を提案する。SpinはPromela(PROcess MEtamodel LAnguage)言語を採用している が、C言語を直接、検査コード内に埋込む機能も有している。その機能を利用し、検査対 象プログラムに大きな変更を加えずに、適切な検査モデルを作り出す手法を提案する。

2 バイナリモデル検査とは

バイナリモデル検査とは本研究で新たに定義した検査手法のことである。まず、検査対 象プログラムをコンパイルしてバイナリ実行し、同時に検査プログラムを開始する。そし て検査プログラムは、バイナリが使用しているメモリ空間を抽象化して状態と捉え、状態 空間を探索していく。このような手順を本手法では取る。よって、バイナリモデル検査と 名付けることにした。また、実際にバイナリが動いているメモリ空間を検査対象とするこ とによって、プログラム運用環境により近い状態で検査が可能となる。メリットとして仕 様記述言語とプログラミング言語間の記述能力の違いを解消すること、自動的に検査モデ ルが作成されること、プロルグラムの動作環境を直接利用できる事などがあげられる。

Copyright c2008 by Doi Masatoshi

1

(3)

3 バイナリモデル検査による検査

本研究では、バイナリモデル検査をCプログラムに適用する前段階として検査法概要 を定義している。バイナリ検査手法では、まず監視したいC変数を指定する。そして、C 関数の呼び出し列(Cプログラム)に入力変数の集合を与え、その結果得られた出力変数 の集合の状態をチェックする。以上の手順でCプログラムの正しさについて保証する。バ イナリモデル検査は全てこの概要に従って検査が行われている。

次に、この概要をもとにsortプログラムにバイナリモデル検査を適用し検査実験を行っ た。その結果、sort関数の記述を全く変更することなく、任意の値が格納された配列(入 力変数の集合)が正しく操作され、ソートされた配列(出力変数の集合)が得られること を保証できた。

sortプログラムに対するバイナリモデル検査の適用は、成功したがsortプログラムは非 常に規模の小さいプログラムである。そこで、システム上のファイル情報を表示するlsプ ログラムへバイナリモデル検査を適用した。lsプログラムはある程度の規模があり、ソー ト、リスト構造など代表的なアルゴリズムを含んでいたため、検査対象とした。この実験 では、代表的な例として、lsプログラムは内部でシステムコールを呼び出すので検査の結 果がシステムの状態に左右されてしまうという問題があった。そこで、プログラムを検査 可能にするための検査環境の設定手順について定義し、検査環境の場合分けをした。保証 したい性質によって、検査環境を選択できるようにしたのである。その他にも監視するメ モリの指定やポインタ変数の扱いに関してプログラムの変更が必要であったので、プログ ラムを検査可能にするためにはどのようにすれば良いかを示し、その手順を定義した。し かし、検査作業自体は複雑なものではなく、実際にlsプログラムのバグを見つけることも できた。

実験結果まとめ

簡単なCプログラムならば、変更を加える事なく、直接プログラムが検査出来 きた。

ある程度規模のあるCプログラムの検証は、いくつかの変更が必要であるが実 験作業自体は難しいものではなかった。

無駄なC変数を状態として指定しないことで、状態数をある程度押さえること が可能だという事を示した。

動的メモリ空間の取り扱いなど、メモリ空間の効率的な指定方法を提案してい く必要性があることが判明した。

4 まとめ

本研究では、バイナリモデル検査という独自手法を提案し、様々な問題の解決と整理を 行った。まず、バイナリモデル検査手法の概要を整理し、どのような検査手法であるのか

2

(4)

を明確化させた。そして、本検査手法を行うことによって得られる利点について考察し た。バイナリモデル検査を行うにあたり、検査対象Cプログラムの内容変更が必要な場 合があるので、そのときの検査環境設定に関して場合分けをし、場合に応じてどのような 手順を取って、変更しなければならないかを示した。次に、このように整理・一般化した 検査方法を検査実験としてsortプログラムやlsプログラムなど実際のプログラムに適用 し、その効果について考察した。結果として、ある程度の規模のCプログラムであって も、プログラム構造をあまり変更せずにSpinから直接呼び出して検査可能であることが 分かった。以上が検査手法に関しての成果である。またそれに関連して、技術面に関して の成果もいくつかあった。監視するC変数指定方法とその扱い方に対する考察や、効率 的にメモリ空間を監視するための工夫、Cプログラム中で使用される動的メモリの取り扱 い方に対する問題提起と解決策の提案などが代表的な技術的成果である。

これらの研究成果からバイナリモデル検査を利用すれば、検査コストが少なく、動作環 境により近い状態でのCプログラム検査が可能であることが示せた。

3

参照

関連したドキュメント

1外観検査は、全 〔外観検査〕 1「品質管理報告 1推進管10本を1 数について行う。 1日本下水道協会「認定標章」の表示が

(問5-3)検体検査管理加算に係る機能評価係数Ⅰは検体検査を実施していない月も医療機関別係数に合算することができる か。

このうち、大型X線検査装置については、コンテナで輸出入される貨物やコンテナ自体を利用した密輸

【オランダ税関】 EU による ACXIS プロジェクト( AI を活用して、 X 線検査において自動で貨物内を検知するためのプロジェク

(3)各医療機関においては、検査結果を踏まえて診療を行う際、ALP 又は LD の測定 結果が JSCC 法と

さらに, 会計監査人が独立の立場を保持し, かつ, 適正な監査を実施してい るかを監視及び検証するとともに,

既にこめっこでは、 「日本手話文法理解テスト」と「質問応答関係検査」は行 っています。 2020 年には 15 名、

★分割によりその調査手法や評価が全体を対象とした 場合と変わることがないように調査計画を立案する必要 がある。..