Download polyRV User Manual
Transcript
Contents 1 Introduction 1.1 Runtime Verification . . . . 1.2 Larva Runtime Monitor . . 1.2.1 Larva Architecture 1.2.2 ATM Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 PolyLarva Specification Language 2.1 Events . . . . . . . . . . . . . . . . . . . . . 2.1.1 Event Variations . . . . . . . . . . . 2.2 States . . . . . . . . . . . . . . . . . . . . . 2.2.1 Separating Monitor Side and System 2.2.2 Saving Monitor State . . . . . . . . 2.3 Conditions and Actions . . . . . . . . . . . 2.4 Rules . . . . . . . . . . . . . . . . . . . . . . 2.4.1 Enabling / Disabling Rules . . . . . 2.4.2 Extended Rules . . . . . . . . . . . . 2.5 Timers . . . . . . . . . . . . . . . . . . . . . 2.5.1 Timer Events . . . . . . . . . . . . . 2.5.2 Timer Conditions . . . . . . . . . . . 2.5.3 Timer Actions . . . . . . . . . . . . 2.6 Specification Script Setup . . . . . . . . . . 2.7 Contexts . . . . . . . . . . . . . . . . . . . . 2.7.1 Nesting of Contexts . . . . . . . . . 2.8 Internal Events . . . . . . . . . . . . . . . . 2.9 Imports . . . . . . . . . . . . . . . . . . . . 2.10 Comments . . . . . . . . . . . . . . . . . . . 2.11 Sample Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 5 5 8 . . . . . . . . . . . . . . . . . . . . . Side States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 15 16 16 17 18 20 21 22 22 22 23 23 24 25 25 26 29 30 30 . . . . . . . . . . . . . . . . . . . . . . . . 3 Usage 33 3.1 Generating the PolyLarva Monitor . . . . . . . . . . . . . . . . . 33 3.1.1 The PolyLarva Compiler Output . . . . . . . . . . . . . 34 3.1.2 Running the PolyLarva Monitor . . . . . . . . . . . . . . 35 3.1.3 Viewing the PolyLarva Monitor Logs . . . . . . . . . . . 35 3.2 Generating the PolyLarva Language Specific Monitoring Code . 37 3.2.1 The PolyLarva Language Specific Compiler for Java . . . 38 3.2.2 Using PolyLarva to Monitor a System . . . . . . . . . . . 39 3.2.3 Viewing the PolyLarva Monitor Logs on System Side . . 40 3.3 PolyLarva Monitoring Example . . . . . . . . . . . . . . . . . . 42 3.3.1 Pin Validation . . . . . . . . . . . . . . . . . . . . . . . . 43 3.3.2 Cash Withdrawal . . . . . . . . . . . . . . . . . . . . . . . 44 3.3.3 The PolyLarva Monitor Log File for ATM System . . . . 45 3.3.4 The PolyLarva Monitor System Side Log File for ATM System . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2