Mercurial > hg > Papers > 2008 > atsuki-master
changeset 5:db0d95f0b2e0
*** empty log message ***
author | atsuki |
---|---|
date | Thu, 14 Feb 2008 05:30:52 +0900 |
parents | 18753cb3c703 |
children | 1bf023e03779 |
files | paper/bibliography.tex paper/chapter2.tex |
diffstat | 2 files changed, 41 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/bibliography.tex Wed Feb 13 20:52:35 2008 +0900 +++ b/paper/bibliography.tex Thu Feb 14 05:30:52 2008 +0900 @@ -3,7 +3,7 @@ ``Spin - Formal Verification''. http://spinroot.com/spin/whatispin.html - \bibitem{bib:javapathfinder} + \bibitem{bib:jpf} ``Java PathFinder''. http://javapathfinder.sourceforge.net/ \end{thebibliography}
--- a/paper/chapter2.tex Wed Feb 13 20:52:35 2008 +0900 +++ b/paper/chapter2.tex Thu Feb 14 05:30:52 2008 +0900 @@ -285,5 +285,45 @@ また、SPINのconcurrencyはステートメント単位となっている。 \subsection{Java PathFinderの概要} +Javaプログラムに対するモデル検査ツールであるJava PathFinder(JPF)\cite{bib:jpf} +について説明する。 +JPFはNASAで開発され、現在はsourceforge.net上で開発が続けられている。 + +最初の実装では、JavaをPromelaに変換していたが、 +現在は、Javaバーチャルマシン(JVM)を直接シミュレーションして実行している。 +そのため、Javaのバイトコードを直接実行可能である。 + + +JPFは、実行可能なJavaのバイトコードを検証するためのシステムである。 +バイトコードを状態遷移モデルとして扱い、 +実行時に遷移し得る状態を網羅的に検査することにより、デッドロックを検知したり、 +キャッチされていない例外(NullPointerExceptionやAssertionErrorなど)を +検出することができる。 + +また、JPFはバイトコードの実行パターンを網羅的に調べるため、膨大なCPU時間を必要とする。 + + +JPFでできることを以下に示す。 +\begin{itemize} + \item スレッドの可能な実行すべてを調べる + \item デッドロックの検出 + \item アサーション + \item Partial Order Reduction +\end{itemize} + +Partial Order Reductionとは、モデル検査アルゴリズムで探索される +状態空間のサイズを減らすための手法である。 + + +また、JPFはJVMベースであるため、複数のプロセスの取扱いができない。 +他にも、実用規模のプログラムは一般的に状態空間が巨大であるため、 +直接実行することはできない。 + +JPFは、大きなプログラムには使えないため、一部を抜き出して、 +それに対してデバッグをするのに使用される。 +他にも、Javaを仕様記述言語としてプロトコルの検証などに用いられる。 + +JPFのconcurrencyはスレッド単位である。 + %%%end%%%