F02 - qwik.jp

Download Report

Transcript F02 - qwik.jp

CSSL: A Logic for Specifying
Conditional Scenarios
Shoham Ben-David, Marcha Chechik, Arie Gurfinkel, Sebastian Ushitel
Reported in FSE’11
(紹介者: 東工大佐伯研 井上)
問題提起 –表現目標と既存手法の欠点–

「分岐のある」シナリオの「存在性」の形式表現が主な目標

存在性: システムが「××の動作をしうる」なら「真」と評価
ATMでは、
認証が完了すると
現金の引き落としが
実行されうる
→ “ok” の時点で
“cash” について真
(本文より引用,Figure2)
問題提起 –表現目標と既存手法の欠点–

「分岐のある」シナリオの「存在性」の形式表現が主な目標


存在性: システムが「××の動作をしうる」なら「真」と評価
CTL(Computation Tree Logic, 計算木論理) では…
 シナリオの表現が複雑
CTLでは、“cash”
の前に現れる
動作の記述が面倒
(本文より引用,Figure2)
問題提起 –表現目標と既存手法の欠点–

「分岐のある」シナリオの「存在性」の形式表現が主な目標



存在性: システムが「××の動作をしうる」なら「真」と評価
CTL(Computation Tree Logic, 計算木論理) では…
 シナリオの表現が複雑
PSL(Property Specification Language, 特性記述言語) では…


「××の動作をしない場合がある」とき、特性の評価が「偽」となる
本当は「真」になってほしい
PSLでは、“cash”
を通らないパスがあると
反例扱いされ、
特性が偽になる
(本文より引用,Figure2)
CSSL –Conditional Senario Specification Language
CSSL: PSLにBranching Suffix Implication(BSI) を導入したもの

シナリオの「存在性」の表現が可能


例: 「銀行利用者がATMへのログインに成功した時、現金の引き下ろ
しが実行されうる」
G((pwd ∙ verify ∙ ok) |⇝ X(reqCash ∙ cash))
BSI記号 |⇝
CSSLでモデルチェックを行うオートマトンについて考察

CTLの理論を利用しながらチェック

研究範囲
チェック時の計算量オーダーはPSLでのチェックと同等
特性を
CSSLで記述
特性を受理する
ステートマシンを
NuSMV上で実装
NuSMVで
モデルチェック
ケーススタディ(評価)

テレビやビデオのセットで用いるプロトコルの検証

CSSLで特性を記述


多くの特性は検証できた
事前条件が緩すぎる特性は検証できない場合もあった
𝑡𝑟𝑢𝑒* ・ 𝑡. 𝑡𝑢𝑛𝑒. 𝑖
𝑡𝑟𝑢𝑒* ・ 𝑡. 𝑡𝑢𝑛𝑒. 𝑖 ・ (⋀𝑗∈𝐹𝑟𝑒𝑞 ¬𝑡. 𝑡𝑢𝑛𝑒. 𝑗)* ・ 𝑡. 𝑑𝑟𝑖𝑣𝑒𝑟. 𝑡𝑢𝑛𝑒. 𝑖 ・
(⋀𝑗∈𝐹𝑟𝑒𝑞 ¬𝑡. 𝑡𝑢𝑛𝑒. 𝑗)* ・
(𝑡. 𝑑𝑟𝑖𝑣𝑒𝑟. 𝑡𝑢𝑛𝑒. 𝑎𝑐𝑘 ∨ 𝑡. 𝑑𝑟𝑖𝑣𝑒𝑟. 𝑡𝑢𝑛𝑒𝑎𝑐𝑘) ・
(⋀𝑗∈𝐹𝑟𝑒𝑞 ¬𝑡. 𝑡𝑢𝑛𝑒. 𝑗)* ・ 𝑡. 𝑡𝑢𝑛𝑒. 𝑖
(CSSL の式は本文中のものを参照, Section 5.1)

PCIのトランザクションの検証



PCI: プロセッサと周辺機器の通信バスアーキテクチャ
CSSLでデッドロックをモデル化
CSSLでの「状態の分岐」の表現力を主張

LTLでは普遍性を前提 → 分岐の存在を扱いにくい
Using an SMT Solver for Interactive
Requirements Prioritization
Francis Palma, Angelo Susi, Paolo Tonella
Fondazione Bruno Kessier, Software Engineering Research Unit Trento, Italy
紹介者:鵜飼
概要
要求の優先順位をつけるって、要求獲得の早
い段階でとっても大事
 SMT Solverを使って、対話的に優先順位をつ
ける
 ヘルスケアの実プロジェクトの要求を使って評
価を行い、効果、効率、意思決定者の誤りに
対する頑強さの観点で、既存の対話的な技術
を上回る

SMT Solver





充足問題解決器?(SAT)の便利バージョン
変数、配列、関数などを定義できる
満たすべき制約を等式や不等式を使って列挙
制約を満たす変数、関数の割り当ての例を求めるこ
とができる
SATは命題論理式で制約を満たす変数のtrue/false
の例を求める
A∧(A∨B) → (A=true,B=true),(A=true,B=false)
事例によるアルゴリズムの説明
要求に対する優先順位
充足しないペアの数
SMTによる充足解
事例によるアルゴリズムの説明
充足解同士の比較
R2とR4、R3とR4、R4とR5をそれぞれ比較して優先順位をつける
R2,R3,R4,R5からなるEliという優先順位のグラフを作成し、PrioとDepsに加える
前のページに戻る
Modeling the HTML DOM and Browser API
in Static Analysis
of JavaScript Web Applications
Anders Møller, Magnus Madsen and Simon Holm Jensen
Reported in ESEC/FSE 2011
(紹介者: 東工大 佐伯研 有賀)
概要
ツールサポート
の不足
・JavaScript 用
静的解析ツール
(JavaやCだとEclipse,
Visual Studioで可能)
・エラーの早期発見
現状の問題点
・JavaScript言語
・ブラウザ環境
・アプリケーション開発
静的解析ツール
作成
・TAJSを拡張
・HTML
・イベント
・その他
できたツール
評価
今後のツールサポート
に期待できる!!
TAJS: Type Analysis for JavaScript
(本文より引用, Figure 4)
問題点

JavaScript言語




ブラウザ環境



静的解析に向かない言語的特徴
実行時に修正、変化する型や継承関係のオブジェクトモデル
高階関数、例外など
ブラウザ間の非互換性
特定ブラウザでサポートされていない関数が多数
アプリケーション開発

ソースコードと実行可能コード


動的に生成されるコード(lazy loadingなど)
今回はソースコードに焦点
TAJS拡張のアプローチ:HTMLページのモデル化

HTMLオブジェクトの階層構造

プロトタイプチェーン
継承
継承
HTMLInputElement.prototype

HTMLInputElement
要素のルックアップメカニズムのモデル化

HTMLページの要素の更新に合わせてマッピングも更新


例:新しいid属性が挿入されるなら解析中にマップを更新
要素のゲット関数の健全性を保持

getElementByIdなど
TAJS拡張のアプローチ:イベントシステムのモデル化

イベントシステムのモデル化

イベントハンドラの動的登録、除去のモデル化

オブジェクト参照の変更(登録、除去)に対応




解析の健全性を保持
イベントハンドラのトリガーのモデル化


HTMLページの実行順序のモデル化
右図のようにフローグラフを拡張



onload , onclick のような静的な変更
addEventListener のような動的な変更
loadイベントとそれ以外を分ける
実行順序をより正確に追跡できる
他にもいろいろTAJSを拡張してます
(本文より引用, Figure 3)
実験と評価

実験対象


53のベンチマークプログラム(ウェブアプリケーション)
Research Question
Q1:エラー検出能力 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・90%以上
Q2:プログラマにエラーの位置を把握させる能力があるか・○
Q3:コールグラフの精度 ・・・・・・・・・・・・・・・・・・・・・・・・・・・49/53
Q4:型の精度 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・85%で単一に特定
Q5:デッドコード、到達不能コードの検出能力があるか ・・○

結論

新たなツールサポートの基盤情報としては十分