LEVERAGING DEDUCTIVE VERIFICATION IN INDUSTRIAL CONTEXTS



Similar documents
FROM SAFETY TO SECURITY SOFTWARE ASSESSMENTS AND GUARANTEES FLORENT KIRCHNER (LIST)

Applications of formal verification for secure Cloud environments at CEA LIST

Certification of a Scade 6 compiler

Linux A multi-purpose executive support for civil avionics applications?

How To Write A Program Verification And Programming Book

Rigorous Software Engineering Hoare Logic and Design by Contracts

Software Engineering Techniques

Software Processes. The software process. Generic software process models. Waterfall model. Waterfall model phases

SCADE System Technical Data Sheet. System Requirements Analysis. Technical Data Sheet SCADE System

Automated Theorem Proving - summary of lecture 1

HyperSpaces: A distributed event-driven shared memory model without destructive modications

Software testing. Objectives

Specification and Analysis of Contracts Lecture 1 Introduction

Chapter 4: Design Principles I: Correctness and Robustness

OpenACC 2.0 and the PGI Accelerator Compilers

VDM vs. Programming Language Extensions or their Integration

CS510 Software Engineering

Integrating MATLAB into your C/C++ Product Development Workflow Andy Thé Product Marketing Image Processing Applications

EVALUATION OF REACTIVITY SHUTDOWN MARGIN FOR NUCLEAR FUEL RELOAD OPTIMIZATION

An Automatic Reversible Transformation from Composite to Visitor in Java

Integration of an open source rule engine to enhance the IHTSDO Workbench testing

How To Write A Program In Java (Programming) On A Microsoft Macbook Or Ipad (For Pc) Or Ipa (For Mac) (For Microsoft) (Programmer) (Or Mac) Or Macbook (For

Boogie: A Modular Reusable Verifier for Object-Oriented Programs

Introducing Formal Methods. Software Engineering and Formal Methods

Retour vers le futur des bibliothèques de squelettes algorithmiques et DSL

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

Sources: On the Web: Slides will be available on:

Software Engineering. Software Development Process Models. Lecturer: Giuseppe Santucci

Verification of Imperative Programs in Theorema

Best Practices for Verification, Validation, and Test in Model- Based Design

How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)

Regression Verification: Status Report

ISO 9000 Introduction and Support Package: Guidance on the Documentation Requirements of ISO 9001:2008

Verification and Validation of Software Components and Component Based Software Systems

Simulink Modeling Guidelines for High-Integrity Systems

Verifying Specifications with Proof Scores in CafeOBJ

Testing static analyzers with randomly generated programs

M.S. Computer Science Program

Static analysis of numerical programs

Chapter 13 Storage classes

Automatic vs. Manual Code Analysis

Curriculum Map. Discipline: Computer Science Course: C++

IaaS Federation. Contrail project. IaaS Federation! Objectives and Challenges! & SLA management in Federations 5/23/11

BUSINESS RULES CONCEPTS... 2 BUSINESS RULE ENGINE ARCHITECTURE By using the RETE Algorithm Benefits of RETE Algorithm...

CSTE Mock Test - Part I - Questions Along with Answers

Automated Program Behavior Analysis

Effective Software Verification for Medical Devices

Detecting Software Vulnerabilities Static Taint Analysis

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

Le langage OCaml et la programmation des GPU

Overview. Software engineering and the design process for interactive systems. Standards and guidelines as design rules

Echtzeittesten mit MathWorks leicht gemacht Simulink Real-Time Tobias Kuschmider Applikationsingenieur

Java (12 Weeks) Introduction to Java Programming Language

Parallel Computing in Python: multiprocessing. Konrad HINSEN Centre de Biophysique Moléculaire (Orléans) and Synchrotron Soleil (St Aubin)

Open-source Versus Commercial Software: A Quantitative Comparison

Railway Timetabling Optimizer

GEDAE TM - A Graphical Programming and Autocode Generation Tool for Signal Processor Applications

A Static Analyzer for Large Safety-Critical Software. Considered Programs and Semantics. Automatic Program Verification by Abstract Interpretation

Foundational Proof Certificates

Unified Static and Runtime Verification of Object-Oriented Software

Sélection adaptative de codes polyédriques pour GPU/CPU

A closer look at HP LoadRunner software

What methods are used to conduct testing?

OpenEmbeDD basic demo

State of the World - Statically Verifying API Usage Rule

Computer Programming I

Combining Static Analysis and Test Generation for C Program Debugging

Software Design. Software Design. Software design is the process that adds implementation details to the requirements.

The C Programming Language course syllabus associate level

Software Verification for Space Applications Part 2. Autonomous Systems. G. Brat USRA/RIACS

Rigorous Software Development CSCI-GA

Virtual Integration and Consistent Testing of Advanced Driver Assistance Functions

Product Synthesis. CATIA - Product Engineering Optimizer 2 (PEO) CATIA V5R18

CS Master Level Courses and Areas COURSE DESCRIPTIONS. CSCI 521 Real-Time Systems. CSCI 522 High Performance Computing

Safe Object-Oriented Software: The Verified Design-By-Contract Paradigm

Requirements engineering and quality attributes

Eurogas Testimonial on Implementing the CEER-BEUC Vision

Fully Automated Static Analysis of Fedora Packages

Il est repris ci-dessous sans aucune complétude - quelques éléments de cet article, dont il est fait des citations (texte entre guillemets).

Pemrograman Dasar. Basic Elements Of Java

R214 SPECIFIC REQUIREMENTS: INFORMATION TECHNOLOGY TESTING LABORATORY ACCREDITATION PROGRAM

Testing of safety-critical software some principles

To introduce software process models To describe three generic process models and when they may be used

Virtualization Technologies (ENCS 691K Chapter 3)

Transcription:

LEVERAGING DEDUCTIVE VERIFICATION IN INDUSTRIAL CONTEXTS

CEA S SOFTWARE SAFETY LABORATORY 1995: LEAP FROM DYNAMIC TO STATIC CODE ANALYSIS!

CAVEAT: ARCHITECTURE C source code VC Generator Formal specifications (Caveat DSL) Caveat script Simplifier Solver TIP Simplify Alt-Ergo

CAVEAT MAIN FEATURES Simplifier: rewriting engine and declarative rules Solver: (mainly) propositional sequent calculus Dedicated specification language first-order language functional properties, dependency/assignment clauses functional expression of output values properties of sequences of program constructions Scripting and journaling

CAVEAT JOURNALING AND SCRIPTING Usage: Build the proof project: associate specifications to program points Launch the generation and proofs In case of failure, script proof manipulations e.g. split a conjunction and send each term to the solver. Finish by hand using the TIP Output summary script High automation High reuse value Support for report generation 0 : 0 chargergph./proj_r/demoplus.gph 1 : 2 chargercets 0 2 : 5 collerp 0 1 5 a Post add : mode > 0 => G_Command > G_Command'; 3 : 5 collerp 0 1 6 a Post add_positive_delta : mode > 0 && delta > 0 => G_Command > G_Command'; 4 : 5 collerp 0 2 5 a Pre : choice = 0 choice = 1; 5 : 6 couperp 0 2 7 6 : 5 collerp 0 2 6 a Post explicit : Get_var = if (choice = 1) then G_Command else G_Tmp; 7 : 5 collerp 0 2-1 a Assert pathcond : At sortie true; 8 : 5 collerp 0 3 4 a Post : Get_modif = if (t >= 0) then t else -t; 9 : 5 collerp 0 4 4 a Pre : 0 <= nb && nb<100; 10 : 6 couperp 0 4 6 11 : 5 collerp 0 4 5 a Post : nb = 0 => SommeTabVal = 0; 12 : 5 collerp 0 4 6 a Post : G_Command = G_Command';

CEA S SOFTWARE SAFETY LABORATORY 2005: FROM TOOL TO PLATFORM

Designed at CEA & Inria Supported by an Open-Source community ANSI / ISO C99 Pointers & function pointers, floatingpoint arithmetics The ANSI C Specification Language ACSL Independence from memory models Coherent combination of modular and collaborative techniques Abstract interpretation and deductive verification

FRAMA-C: AN EXTENSIBLE PLATFORM Frama-C Kernel Frama-C Plug-In Frama-C Plug-In Frama-C Plug-In External Tool

FRAMA-C: CORE COMPONENTS Frama-C Kernel Impact & Slicing Plug-In Value Plug-In Abstract Interpretation

FRAMA-C: CORE COMPONENTS Frama-C Kernel WP Plug-In Deductive Proofs Coq, Alt-Ergo Why

FRAMA-C: CORE COMPONENTS Frama-C Kernel Frama-C Open Source Distribution Path-Crawler Plug-In Impact & Slicing Plug-In Value Plug-In WP Plug-In Aoraï Plug-In Coq, Alt-Ergo Why

CEA S SOFTWARE SAFETY LABORATORY 2014: CURRENT EXPERIMENTS

FORMAL ALGORITHMIC CONFORMANCE PROOF Can we verify that model-based properties hold on source code? Bi-dimensional conflict detection algorithm Derived from PVS specifications and proofs Floating-point vs real number arithmetic FORMAL METHODS MODELS

THE SPECIFICATION & ALGORITHM

A FORMAL GUARANTEE

THE CHALLENGE

THE CHALLENGE c = round<ieee_64,ne>(a+b)

APPROXIMATIONS

REPHRASING THE ALGORITHM

REPHRASING THE ALGORITHM

SAFETY AND FAIRNESS

CONCLUSION

SOFTWARE DEVELOPERS Industrial support Commercial licenses Preinstalled workstations SOFTWARE INTEGRATORS Frama-C for software safety and security www.trust-in-soft.com Off-the-shelf validation kits for common open-source packages SERVICE PROVIDERS Dedicated affiliate programs

Laboratoire pour la Sûreté des Logiciels Département d Ingénierie des Logiciels et Systèmes CEA LIST Florent Kirchner florent.kirchne@cea.fr

METHODS AND TOOLS FOR HCS&S Scientific roots and community Formal proof Model checking Constraint solving Simulation Abstract interpretation Test case generation Architecture Exploration Synchronous languages Prototyping and development of industrial-strength tools for academia for the industry Guided by industrial requirements Scaling & Performance Objectives Raise the level of confidence in software Lower the costs of verification Technological strategy: Scientific strategy: Applicative strategy: creation of collaborative platforms combination of approaches cross-domain fertilization aero, space, rail, energy, banking, defense

unsigned int M ; /*@ requires \valid (p) && \valid (q); ensures M == (*p + *q) / 2; */ void mean ( unsigned int* p, unsigned int* q ) { if (* p >= * q ) M = (* p - * q ) / 2 + * q ; else M = (* q - * p ) / 2 + * p ; } Caller-callee contract Callee requires some pre-conditions from the caller Callee ensures some post-conditions hold when it returns

ADVANCED VALIDATION OF A SET OF HYPERVISOR PROPERTIES Can we instantiate and verify security-policies on a custom execution platform? App One App Two Software property specifications for confidentiality H Y P E R V I S O R Derived from system-level policies Formal interactive verification of the page allocation algorithm 0101001 1011001 0101100 0110111 0101011 1001001 1001010 1000011 0110110 0011011

Autres: B. Frama-C/WP et Caveat: 20 minutes de présentation de l outil. Différences entre Caveat et Frama-C, évolutions. Types de propriétés, langage utilisé. Caveat fortement auto, bas niveau ok. Périmètre de Caveat limité par l usage des pointeurs / aliasing. Limite sur modèle bas niveau, travaux en cours. NASA (en fin de 1ere partie, emphase sur l aspect académique), 30 minutes: présentation de l utilisation de l outil Airbus (dont expérience certif), Dassault, Atos/CNES?