80 likes | 227 Views
Extending Java PathFinder with Behavior Protocols. Master Thesis. Advisor: Jiří Adámek. Candidate: Aleš Plšek. Charles University in Prague Faculty of Mathematics and Physics. Context: Component Based Programming. Software Components Composition components Primitive components
E N D
Extending Java PathFinder with Behavior Protocols Master Thesis Advisor: Jiří Adámek Candidate: Aleš Plšek Charles University in Prague Faculty of Mathematics and Physics
Context: Component Based Programming • Software Components • Composition components • Primitive components • Environment • Behavior Protocols • Formal specification of a component’s behavior • System Correctness Verification Component Application: Behavior Protocol: ?db.start {!lg.log} ; ( ?db.get{!lg.log} + ?db.put{!lg.log} )*; ?db.stop{!lg.log}
Goal • Behavior Protocol vs. Primitive Component Implementation • Comprises • Source code analysis • Code vs. Behavior Protocol comparison • Solution requirements • Full support of Behavior Protocols (operators, nondeterminism, …) • Environment-independent verification • Exhaustive verification • Prototype Implementation • Performance • Comparison with the DSRG Checker
Solution • Existing model checking tools integration : • Java PathFinder • BPChecker • Component environment simulation • Advanced issues • State spaces mapping • Parallelism • Alternative operator problem • Repetition operator problem
Evaluation: Performance Test 1 • Performance statistics • #States – number of states visited during the verification • Time – elapsed time • States/Second – number of visited states per 1 second • Tests run on Pentium 4 3.0 GHz, 2.0 GB RAM, Windows Server 2003 OS Test 2
Demo Component Architecture Component Behavior Protocol ( ?IFlyTicketAuth.CreateToken:0{ ( !IAfFlyTicketDb.GetFlyTicketValidity:0 ; (!IAfFlyTicketDb.IsEconomyFlyTicket:0 + NULL) ) + ( !ICsaFlyTicketDb.GetFlyTicketValidity:0 ; (!ICsaFlyTicketDb.IsEconomyFlyTicket:0 + NULL) ) + NULL } + ?IFlyTicketDb.GetFlyTicketsByFrequentFlyerId:0{ ( !IAfFlyTicketDb.GetFlyTicketsByFrequentFlyerId:0 ; !ICsaFlyTicketDb.GetFlyTicketsByFrequentFlyerId:0 ) + NULL } + … )* • Sample component verification • Detecting behavior protocol violation
Conclusion • Software Component Model Checker • Successfully verifies compliance of a primitive component with its behavior protocol • Full support of Behavior Protocols • Environment-independent verification • Implementation • Reasonable performance • Checking time: ~ hours • Contributions • Exhaustive verification (no behavior protocol reductions) • Issues solved (Alternative and Repetition operator problems, …)