Interface Decomposition for Service Compositions Domenico Bianculli*1 Dimitra Giannakopoulou*2 Corina S. Păsăreanu*2 University of Lugano *2 NASA Ames / CMU Silicon Valley *1 背景 • Assume-guaranteeスタイルcompositional verification – 特に、自動 interface (i.e., assumption) 生成 • Builds on the previous work by the authors[14] – “Assumption Generation for Software Component Verification” , Giannakopoulou, Păsăreanu, Barringer, ASE2002 • Actually, much prior/related work in this area – See refences in the paper and [14] Contribution (1/2) • [14]では正確なinterfaceの自動生成手法が提案された – プログラムM インターフェースI – E || M safe , environment E satisfies I • I.e., I is the most permissive interface of M – M, E, Iは有限LTS(i.e., FSM)で表現されているので、理論上は可能 である • 本論文では[14]の手法で生成されたIを複数に分割する – I I1 || I2 || … || In – 環境が複数のserviceで構成されている時に役立つ • I.e., E = E1 || E2 || … || En Contribution (2/2) • [14]と違い完全性はないが、健全である – E1, …, En satisfies I1, …, In then E1 || … || En || M safe • つまらないI1,…,Inを生成しないようheuristicな手法が提案さ れている • I1, …, In too strong (e.g., false) trivially satisfy the above – 大まかなアイデア: Infer Ii strong enough s.t. even Ei alone is able to guarantee M’s safety, but assuming only the “actions” of Ei can directly move M to an error state • 実験評価は生成されたI1,…,Inの適正を目で見て判断 まとめと感想 • 環境 E=E1 || E2 … || En 上で動く M に対し, – E || Mの safety を保障する健全な interface をMから, – Ei ごとに Ii を heuristic に生成する • 環境を複数のcomponentに分割するというのは面白い – 仮定を強めれば完全な生成はできるか、など発展が考え られる? Unifying Execution of Imperative and Declarative Code Aleksandar Milicevic Derek Rayside Kuat Yessenov Daniel Jackson MIT 背景 • プログラミング言語の大まかな分類 – Imperative (命令系) • C/C++, Java, Perl, Python, Ruby, Fortran, Pascal, … • ほとんどのメジャーなプログラミング言語はこれ – Functional (関数型) • Haskell, ML (mostly), Scheme (mostly), Lisp (mostly), … – Logic / Constraint (論理型 / 制約型) • Prolog Declarative Contribution (1/2) • Imperativeとdeclarativeを混ぜた言語を提案 – Javaがベース • Javaのimperative codeが使える – Declarative codeはFOLの制約で宣言する • SyntaxはAlloy[Jackson 2006]風 static class Cell {int val = 0; } @Invariant(“all v: int|v!=0 => lone this.cells.elems.val.v”) … public class Sudoku { … @Ensures(“all c:Cell | c.val >0 && c.val<=this.n”) public void solve() { Squander.exe(this); } } Contribution (2/2) • Imperative code can access objects of declarative code and vice versa – 残念ながら、論文にはよい例がない • 例がすべてconstraint solvingだけで解決するものになっており、 融合するmeritが伝わりにくい • 論理制約解消には既存のconstraint solverを用いる – Kodkod [Torlak 2008] • BackendにSAT solverを使用している まとめと感想 • 論理型言語+Javaの融合言語の提案 – 論理記述の自由度が高い • Imperativeとdeclarativeの融合は最近の流行らしい – 特にSQLなどdatabase query言語との組み合わせ • LINQ (Microsoft)など – 本論文のようなlogic言語との融合も面白い • が、誰でも思いつくことなので、当然、過去研究がある – See references in papers ([Hoare 1987]~) • 近年のSAT solverなどdecision proverの躍進で現実味を帯び てきたという感じか? Always-Available Static and Dynamic Feedback Michael Bayne Richard Cook Michael D. Ernst University of Washington 背景 • Two worlds of typing – Static: Java, C#, ML, Haskell, … • Detect type errors at compile time • Issues: 型検査器は神ではない – Dynamic: Perl, Python, Ruby, Lisp, … • Detect type errors at run time • Issues: 型エラー検出が遅れる • Many “hybrid” approaches have been proposed – Soft typing, Gradual typing, Hybrid typing, Contracts, etc. – See references in the paper 本論文 • Java Dynamically typed Java • 大まかなアイデア: class Foo { } class Foo { int bar; Object bar; int compute (int baz) { … } Object compute (Object baz) { … } } – 動的にメソッド呼び出し時のチェックなどを行う – メソッドoverloadingなど静的型依存な部分は少しtricky まとめと感想 • 動的型Javaの提案? – 既存研究と比較して、根本的に新しいという印象はない • Javaのかなりのsubsetに対応した実装がある – この点が高く評価された?
© Copyright 2024 ExpyDoc