ورود به حساب

نام کاربری گذرواژه

گذرواژه را فراموش کردید؟ کلیک کنید

حساب کاربری ندارید؟ ساخت حساب

ساخت حساب کاربری

نام نام کاربری ایمیل شماره موبایل گذرواژه

برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید


09117307688
09117179751

در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید

دسترسی نامحدود

برای کاربرانی که ثبت نام کرده اند

ضمانت بازگشت وجه

درصورت عدم همخوانی توضیحات با کتاب

پشتیبانی

از ساعت 7 صبح تا 10 شب

دانلود کتاب Guide to Software Verification with Frama-C: Core Components, Usages, and Applications (Computer Science Foundations and Applied Logic)

دانلود کتاب راهنمای تأیید نرم افزار با Frama-C: اجزای اصلی، کاربردها و برنامه ها (مبانی علوم کامپیوتر و منطق کاربردی)

Guide to Software Verification with Frama-C: Core Components, Usages, and Applications (Computer Science Foundations and Applied Logic)

مشخصات کتاب

Guide to Software Verification with Frama-C: Core Components, Usages, and Applications (Computer Science Foundations and Applied Logic)

ویرایش: 2024 
نویسندگان: , ,   
سری:  
ISBN (شابک) : 3031556070, 9783031556074 
ناشر: Springer 
سال نشر: 2024 
تعداد صفحات: 708 
زبان: English 
فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود) 
حجم فایل: 22 مگابایت 

قیمت کتاب (تومان) : 86,000



ثبت امتیاز به این کتاب

میانگین امتیاز به این کتاب :
       تعداد امتیاز دهندگان : 5


در صورت تبدیل فایل کتاب Guide to Software Verification with Frama-C: Core Components, Usages, and Applications (Computer Science Foundations and Applied Logic) به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.

توجه داشته باشید کتاب راهنمای تأیید نرم افزار با Frama-C: اجزای اصلی، کاربردها و برنامه ها (مبانی علوم کامپیوتر و منطق کاربردی) نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.


توضیحاتی درمورد کتاب به خارجی



فهرست مطالب

Foreword
Preface
Acknowledgements
List of Reviewers
Contents
Contributors
Part I Core Components and Analyzers
1 Formally Expressing What a Program Should Do: The ACSL Language
	1.1 On Formal Specification Languages
	1.2 Function Contracts
		1.2.1 Basic Function Contracts
		1.2.2 Additional Constructs and Syntactic Sugar for Contracts
		1.2.3 Towards a Formal Semantics of Contracts
		1.2.4 Specifying Side Effects: Framing and Referring to Former Values
		1.2.5 Contracts with Multiple Cases: Behaviors
	1.3 The Core Logic of ACSL
		1.3.1 Terms and Formulas in ACSL
		1.3.2 Built-In Logic Theories of ACSL
		1.3.3 Semantics of Propositions
		1.3.4 Total Functions and Underspecified Terms
	1.4 Code Annotations
		1.4.1 Code Assertions
		1.4.2 Referring to the Past Using Labels
		1.4.3 Formalizing Semantics of Assertions and Labels
		1.4.4 Loop Annotations
		1.4.5 Loop Invariants in Presence of break and continue Statements
		1.4.6 Formal Semantics of Loop Invariants
		1.4.7 Specifying Termination
	1.5 Describing Memory
		1.5.1 Structure of Memory Blocks
		1.5.2 Validity of Memory Locations
		1.5.3 Specifying Memory Separation
	1.6 Ghost Code
		1.6.1 Ghost Memory
		1.6.2 Interaction with Control Flow
		1.6.3 Ghost Code Annotations
	1.7 Global Annotations
		1.7.1 Defining Predicates and Functions
		1.7.2 Referring to Memory States
		1.7.3 Inductive Predicates
		1.7.4 Axiomatics
		1.7.5 The Danger of Inconsistent Axiomatizations
	1.8 Conclusion
	1.9  Answers to Exercises
	References
2 The Heart of Frama-C: The Frama-C Kernel
	2.1 Running Frama-C
		2.1.1 Invoking Frama-C
		2.1.2 Brief Overview of Frama-C\'s Command Line
	2.2 Plug-ins
		2.2.1 Plug-in Collaboration
		2.2.2 Plug-in Gallery
		2.2.3 Expressiveness Plug-ins
		2.2.4 Support Plug-ins
		2.2.5 ``Understanding\'\' Plug-ins
		2.2.6 Loading Plug-ins
	2.3 Parsing Annotated C code
		2.3.1 Preprocessing C and Build Tools
		2.3.2 From Preprocessed Code to Typed and Unified AST
		2.3.3 Kernel and Plug-in Transformations and Cleanup
		2.3.4 Supporting Several C Standards, and Non-Standard Extensions
		2.3.5 Standard C Library, a.k.a. libc, and POSIX
		2.3.6 Architecture-Dependent Features: Frama-C\'s machdep
		2.3.7 ACSL: a Lingua Franca, But Not Equally Well-Spoken
	2.4 Normalized Code Representation
		2.4.1 Side Effects and Sequencing
		2.4.2 Making Implicit Conversions Explicit
		2.4.3 Logical Operators
		2.4.4 Loops
		2.4.5 Return Statement
		2.4.6 Assembly Code
	2.5 Driving Frama-C
		2.5.1 Handling Frama-C Warnings
		2.5.2 Sequencing Analyses
		2.5.3 Saving to and Loading from Disk Previous Results
	2.6 Visualizing Analyses Results
		2.6.1 Property Statuses
		2.6.2 Generating Reports
	2.7 Conclusion
	References
3 Abstract Interpretation with the Eva Plug-in
	3.1 Introduction
		3.1.1 Main Features
		3.1.2 First Example
		3.1.3 Overview
	3.2 Abstract Interpretation
		3.2.1 Experiment with Eva
		3.2.2 Soundness
		3.2.3 Algorithm Termination
	3.3 Abstract Domains in Eva
		3.3.1 Abstractions of C Values
		3.3.2 The Cvalue Domain
		3.3.3 Symbolic Domains
		3.3.4 Relational Domains
		3.3.5 Inferring New Properties
		3.3.6 Communication Between Abstract Domains
	3.4 State Partitioning
		3.4.1 Experiment with State Partitioning
		3.4.2 Theory
		3.4.3 Loop Unrolling
		3.4.4 Case-Based Reasoning
		3.4.5 Path-Based Reasoning
		3.4.6 Brute-Force Partitioning
	3.5 Setting Up an Analysis
		3.5.1 Code Availability, Stubs, Specifications, Builtins
		3.5.2 Main Function
		3.5.3 Iterative Refinement
	3.6 Results of an Eva Analysis
		3.6.1 Undesirable Behaviors Detected by Eva
		3.6.2 libc Pre-conditions
		3.6.3 User Assertions
		3.6.4 Graphical Interface
		3.6.5 API
		3.6.6 Limitations
	3.7 Conclusion
	References
4 Formally Verifying that a Program Does What It Should: The Wp Plug-in
	4.1 Introduction
	4.2 Deductive Verification of Programs
		4.2.1 Companion Provers
		4.2.2 An Example Program
		4.2.3 Handling Runtime Errors
		4.2.4 Fixing the Example Program
		4.2.5 Combining Wp with Other Plug-ins
	4.3 Memory Models and Related Properties
		4.3.1 Simple Variable Assignments
		4.3.2 Introducing Pointers
		4.3.3 The General WP Memory Model
		4.3.4 The Typed Memory Model
		4.3.5 Mixing Aliasing and Non-aliasing
		4.3.6 Base-Pointer Memory Regions
		4.3.7 Pointers as References
		4.3.8 Memory Allocation
		4.3.9 Initialization
	4.4 Annotations
		4.4.1 Assertions
		4.4.2 Function Calls
		4.4.3 Loop Invariants
		4.4.4 Writing Loop Annotations
		4.4.5 Termination
		4.4.6 Lemmas and Axiomatic Definitions
		4.4.7 Ghost Code and Lemma Functions
		4.4.8 Proving Generated Annotations
		4.4.9 Annotations and Verification Conditions
	4.5 Detecting Specification Errors
		4.5.1 Specification Threats
		4.5.2 Testing the Specifications
	4.6 Sequent Simplification and Interactive Proof
		4.6.1 Normalization and Term Simplifications
		4.6.2 Sequent Decomposition
		4.6.3 Sequent Simplifications
		4.6.4 The Interactive Prover (TIP)
		4.6.5 Using External Proof Assistants
	4.7 Related Work
		4.7.1 Hoare Logic
		4.7.2 Separation Logic
		4.7.3 Deep Embedding
		4.7.4 C-Extraction
		4.7.5 Model Checking
		4.7.6 Choose Your Tool
	4.8 Conclusion
	References
5 Runtime Annotation Checking with Frama-C: The E-ACSL Plug-in
	5.1 Runtime Annotation Checking
	5.2 An Executable Subset of ACSL
		5.2.1 Expressiveness of the E-ACSL Language
		5.2.2 Semantics of the E-ACSL Language
	5.3 How to Use E-ACSL Plug-In
		5.3.1 What is E-ACSL, Basic Usage
		5.3.2 Checking Undefined Behaviors
		5.3.3 Checking Other Properties
	5.4 Effective Usage of E-ACSL Plug-in
		5.4.1 Fine-Tuning E-ACSL
		5.4.2 Guarantees Offered by E-ACSL and Comparison with Other Tools
		5.4.3 How to Integrate E-ACSL in Software Development Life Cycle
	5.5 Design and Technical Solutions for E-ACSL
		5.5.1 Software Architecture
		5.5.2 Arithmetic Properties
		5.5.3 Memory Properties
	5.6 Conclusion and Perspectives
	References
6 Test Generation with PathCrawler
	6.1 Introduction
	6.2 Structural Testing
	6.3 PathCrawler: What it Does
	6.4 PathCrawler: How it Works
	6.5 Using PathCrawler in Practice
		6.5.1 Stubbing
		6.5.2 Constant Inputs
		6.5.3 Precondition
		6.5.4 Coverage Options
		6.5.5 Oracle
		6.5.6 Testing Faulty Code
	6.6 PathCrawler-online
		6.6.1 Inputs of PathCrawler-online
		6.6.2 Ouputs of PathCrawler-online
		6.6.3 Benefits and Limitations
	6.7 The Place of Structural Testing in the Verification and Validation Process
	6.8 Conclusion
	References
Part II Advanced Usages and Analyses
7 The Art of Developing Frama-C Plug-ins
	7.1 Running Example
		7.1.1 Typestates
		7.1.2 Requirements for MiniTypeState
	7.2 Plug-in Setup
	7.3 Plug-in Inputs/Outputs
		7.3.1 Entry Point
		7.3.2 Basic Debugging and Pretty-Printing
		7.3.3 Outputting Messages
		7.3.4 Command-Line Options
	7.4 AST and Associated Tables
		7.4.1 Accessing the Complete AST
		7.4.2 Accessing a Specific Node
		7.4.3 AST Transformations
		7.4.4 Using the Control-Flow Graph
		7.4.5 Accessing ACSL Annotations
	7.5 Datatype and Project Libraries
		7.5.1 Datatype Library
		7.5.2 Project Library
	7.6 Visitor
		7.6.1 Overview of the Visitor Mechanism in Frama-C
		7.6.2 Observing the AST with an Inplace Visitor
		7.6.3 Creating a Code Transformation Pass with an Inplace Visitor
		7.6.4 Creating a New AST with a Copy Visitor
	7.7 Interpreted Automata
		7.7.1 Automaton Description
		7.7.2 Using an Automaton to Implement a Dataflow Analysis
	7.8 Plug-in Packaging
		7.8.1 Testing
		7.8.2 Distribution
	7.9 Conclusion
	References
8 Tools for Program Understanding
	8.1 Introduction
	8.2 Ivette: A New Graphical Interface
	8.3 Metrics
	8.4 Studia
	8.5 Dive
	8.6 Analysis Scripts
		8.6.1 Motivating Example
		8.6.2 Heuristics-Based Scripts
		8.6.3 Configuring and Building
		8.6.4 Analysis Template
		8.6.5 Miscellaneous Utilities
		8.6.6 Conclusion
	References
9 Combining Analyses Within Frama-C
	9.1 Introduction
	9.2 Combinations of Model Checking with Frama-C Analyzers
		9.2.1 The CEGAR Approach
		9.2.2 CegarMC Architecture
		9.2.3 Exploiting Value Analysis
		9.2.4 Integrating Deductive Verification
	9.3 Lightening Static Analyses by Means of Runtime Verification
		9.3.1 Verifying ACSL Annotations with E-ACSL
		9.3.2 Combining Runtime Verification with Value Analysis
		9.3.3 Combining Runtime Verification with Deductive Verification
		9.3.4 Beyond ACSL Properties
	9.4 Combinations of Static Analysis with Test Generation
		9.4.1 Test Generation to Classify Alarms Produced by Value Analysis
		9.4.2 Test Generation to Diagnose Proof Failures
		9.4.3 Detecting Infeasible Test Objectives by Static Analysis
	9.5 Points of Attention for Integrative Techniques
	9.6 Conclusion
	References
10 Specification and Verification  of High-Level Properties
	10.1 Introduction
	10.2 Pervasive Program Properties
		10.2.1 Illustrative Examples of Properties
		10.2.2 The MetAcsl Plug-In
	10.3 Verification of Pervasive Properties with MetAcsl
	10.4 Relational Properties
		10.4.1 Example of Relational Property
		10.4.2 Specification of Relational Properties in RPP
	10.5 Verification of Relational Properties with RPP
		10.5.1 Code Transformation
		10.5.2 Back to the Illustrative Example
	10.6 Properties Over Call Traces
		10.6.1 Informal Properties
		10.6.2 Automaton
		10.6.3 The Aoraï Plug-In
		10.6.4 The Ya Language
	10.7 Verification of Properties Over Call Traces with Aoraï
		10.7.1 Code Instrumentation by Aoraï
		10.7.2 Analysis of the Instrumented Code with Wp
		10.7.3 Analysis of the Instrumented Code with Eva
	10.8 Conclusion
	References
11 Advanced Memory and Shape Analyses
	11.1 Introduction
	11.2 Overview
		11.2.1 Motivating Example
		11.2.2 Type-Based Shape Analysis
		11.2.3 Separation Logic and  Relational Separation-Logic-Based Analysis
		11.2.4 Discussion
	11.3 Abstract Interpretation Framework
		11.3.1 Program States and Concrete Execution
		11.3.2 Sound Static Analyses by Abstract Interpretation
		11.3.3 Base Abstractions
	11.4 Type-Based Static Analysis with the Codex Plug-in
		11.4.1 Well-Typed States
		11.4.2 The Type Abstraction
		11.4.3 Points-to Predicates
	11.5 Separation-Logic-Based Analysis with the  RMA Plug-In
		11.5.1 Abstract Heaps and State Analysis
		11.5.2 Abstract Heap Transformations and  Transformation Analysis
	11.6 Further Reading
	11.7 Conclusion
	References
12 Analysis of Embedded Numerical Programs in the Presence of Numerical Filters
	12.1 Introduction
	12.2 Problematic Aspects of Linear Digital Filters
	12.3 Analysis of a Filter of Order 1 with Frama-C
	12.4 Analysis of a Filter of Order 2 Having Real Eigenvalues
	12.5 Analysis of a Filter of Order 2 Having Complex Eigenvalues
		12.5.1 Invariant as a Set of Intervals
		12.5.2 Optimal Invariant with Linear Algebra
		12.5.3 Invariant as an Ellipsoid
		12.5.4 Invariant as a Zonotope
	12.6 Conclusion
	References
Part III Case Studies and Industrial Applications
13 An Exercise in Mind Reading: Automatic Contract Inference for Frama-C
	13.1 Introduction
	13.2 Preliminaries
		13.2.1 Hoare Logic and Contract-Based Verification
		13.2.2 Target Programming Language and Semantics
		13.2.3 Constrained Horn Clauses (CHCs)
		13.2.4 CHC-Based Model-Checking
		13.2.5 The TriCera Model Checker
	13.3 Contract Inference Using Assertion-Based Model Checking
		13.3.1 The Harness Function
		13.3.2 Inferring Contracts with TriCera
	13.4 The Saida Plugin
		13.4.1 Generating the Harness Function
		13.4.2 Inferring Contracts
		13.4.3 Using Inferred Contracts for Verification
		13.4.4 Handling Recursive Functions
		13.4.5 Limitations
	13.5 Extensions and Ongoing Work
		13.5.1 Programs with Loops
		13.5.2 Programs with Pointers and Heap Allocations
		13.5.3 Inferring assigns Clauses
		13.5.4 Inferring Partial Contracts
		13.5.5 Contracts with Uninterpreted Predicates
		13.5.6 Inferring Contracts for Library/API Functions
	13.6 Conclusion
	References
14 Exploring Frama-C Resources by Verifying Space Software
	14.1 Is Static Analysis Worthwhile?
	14.2 Literature Review of Frama-C Applications
	14.3 Overview of IAE Satellite Launcher Projects
		14.3.1 Case Study: Embedded Aerospace INS Software
	14.4 Employing Frama-C in Space Software
		14.4.1 Former Experiment: Embedded Aerospace Control Software
		14.4.2 Current Experiment: Embedded Aerospace INS Software
		14.4.3 SSISNAV Analysis with the Callgraph Plug-In
		14.4.4 SSISNAV Analysis with the SpareCode Plug-In
		14.4.5 SSISNAV Analysis with the Metrics Plug-In
		14.4.6 SSISNAV Analysis with the Eva Plug-In
		14.4.7 Reporting of Anomalies Found in the Analyses
	14.5 Conclusion
	References
15 Ten Years of Industrial Experiments with Frama-C at Mitsubishi Electric R&D Centre Europe
	15.1 Introduction
	15.2 Industrial Code Verification with Eva
		15.2.1 Organizing People for Verification
		15.2.2 Method for Safety-Critical Code Verification
		15.2.3 Practical Configuration of Eva
		15.2.4 Challenges of Analyzing Big Source Code
		15.2.5 Tips and Tricks to Improve Eva Analysis Precision
		15.2.6 Conclusion
	15.3 Automated Test Generation Using Eva and PathCrawler
		15.3.1 Technological Context
		15.3.2 Tool Architecture
		15.3.3 Generation of Test Objectives for Different Back-End Tools
		15.3.4 Generation of Stubs
		15.3.5 Results
		15.3.6 Related Work
		15.3.7 Conclusion and Future Work
	15.4 Verifying That a Firewall Is Correctly Configured with Frama-C
		15.4.1 Modeling and Verification Using Simulink
		15.4.2 Simulating and Verifying the Model
		15.4.3 Generating the Monitor
		15.4.4 Discussion
	15.5 Conclusion
	References
16 Proof of Security Properties: Application to JavaCard Virtual Machine
	16.1 Introduction
	16.2 General Presentation of the JavaCard Virtual Machine
	16.3 Overview of the Secure Policy Model
		16.3.1 Code and Heap Modeling
		16.3.2 Examples of Functions
	16.4 Security Properties: Predicates and Metaproperties
	16.5 Proof Results
	16.6 Summary of Lessons Learned and Challenges
	16.7 Future Enhancements
	References
Appendix  Index
Index




نظرات کاربران