GeneAuto for Ada and SPARK

Similar documents
GNAT Pro Innovations for High-Integrity Development

Architecture-driven development of Climate Control Software LMS Imagine.Lab Embedded Software Designer Siemens DF PL

Certification Authorities Software Team (CAST) Position Paper CAST-25

Model-Based Design for High Integrity Software Development Mike Anthony Senior Application Engineer The MathWorks, Inc.

CIS 890: Safety Critical Systems

WHITE PAPER. 10 Reasons to Use Static Analysis for Embedded Software Development

Hybrid Verification in SPARK 2014: Combining Formal Methods with Testing

Implementation and Verification Daniel MARTINS Application Engineer MathWorks

This is an author-deposited version published in: Eprints ID: 10939

StackAnalyzer Proving the Absence of Stack Overflows

Compilation of Heterogeneous Models: Motivations and Challenges 1

Leveraging Formal Methods Based Software Verification to Prove Code Quality & Achieve MISRA compliance

Simulink 모델과 C/C++ 코드에대한매스웍스의정형검증툴소개 The MathWorks, Inc. 1

Standardkonforme Absicherung mit Model-Based Design

Test and Evaluation of Autonomous Systems in a Model Based Engineering Context

Engineering of Reliable Software Systems

Using Model-Based Design in conformance with safety standards

Intro to Proving Absence of Errors in C/C++ Code

Institut Supérieur de l Aéronautique et de l Espace Ocarina: update and future directions

An incremental and multi-supplement compliant process for Autopilot development to make drones safer

Spark verification features

An MDD Process for IEC based Industrial Automation Systems

Guidelines for deployment of MathWorks R2010a toolset within a DO-178B-compliant process

From Design to Production

Utilisation des Méthodes Formelles Sur le code et sur les modèles

Verification and Profiling tools

Automatic Qualification of Abstract Interpretation-based Static Analysis Tools. Christian Ferdinand, Daniel Kästner AbsInt GmbH 2013

Execution of UML models Present and Future of Research and Practice

Objectives. Chapter 19. Verification vs. validation. Topics covered. Static and dynamic verification. The V&V process

Verification and Validation of Models for Embedded Software Development Prashant Hegde MathWorks India Pvt. Ltd.

Executive Summary. Round Trip Engineering of Space Systems. Change Log. Executive Summary. Visas

Gene-Auto development status and support

Towards an Integrated System Model for Testing and Verification

G Programming Languages - Fall 2012

SOFTWARE LIFE-CYCLE PROCESSES From Waterfall to Extreme Programming

Verification and Validation of High-Integrity Systems

Seven Roadblocks to 100% Structural Coverage (and how to avoid them)

How much is a mechanized proof worth, certification-wise?

Compositional Model Based Software Development

Semantics-Based Integration of Embedded Systems Models

Developing AUTOSAR Compliant Embedded Software Senior Application Engineer Sang-Ho Yoon

Leveraging Formal Methods for Verifying Models and Embedded Code Prashant Mathapati Application Engineering Group

Program Verification (6EC version only)

Automated Freedom from Interference Analysis for Automotive Software

On The Theoretical Foundation for Data Flow Analysis in Workflow Management

UML, SysML and MARTE in Use, a High Level Methodology for Real-time and Embedded Systems

Generating Industry Standards Production C Code Using Embedded Coder

Recursion. What is Recursion? Simple Example. Repeatedly Reduce the Problem Into Smaller Problems to Solve the Big Problem

System-level co-modeling AADL and Simulink specifications using Polychrony (and Syndex)

Certification of Model Transformations

Testing. ECE/CS 5780/6780: Embedded System Design. Why is testing so hard? Why do testing?

SCADE. SCADE Suite Tailored for Critical Applications EMBEDDED SOFTWARE

Sparta Systems TrackWise Digital Solution

G Programming Languages Spring 2010 Lecture 4. Robert Grimm, New York University

Ontology Engineering for Product Development

Formal Verification in Aeronautics: Current Practice and Upcoming Standard. Yannick Moy, AdaCore ACSL Workshop, Fraunhofer FIRST

Static and dynamic Testing

Automating Best Practices to Improve Design Quality

Product Range 3SL. Cradle -7

Changing the way the world does software

Quality-of-Service Modeling and Analysis of Dependable Aplication Models

Event Metamodel and Profile (EMP) Proposed RFP Updated Sept, 2007

Sanitizing Sensitive Data: How to get it Right (or at least Less Wrong ) Roderick Chapman, 22nd September 2017

Simulink for AUTOSAR: Best Practices

Production Code Generation and Verification for Industry Standards Sang-Ho Yoon Senior Application Engineer

A3. Programming Languages for Writing Safety-Critical Software

Verification and Test with Model-Based Design

Oscar Slotosch, Validas AG. Proposal for a Roadmap towards Development of Qualifyable Eclipse Tools

Formal Methods in Software Development

Model-Driven Verifying Compilation of Synchronous Distributed Applications

Program Analysis And Its Support in Software Development

Schema Repository Database Evolution And Metamodeling

Design and Construction of Relational Database for Structural Modeling Verification and Validation. Weiju Ren, Ph. D.

SOFTWARE LIFE-CYCLE MODELS 2.1

Formal semantics and other research around Spark2014

Towards the integration of Overture and TASTE

18-642: Code Style for Compilers

A High Integrity Distributed Deterministic Java Environment. WORDS 2002 January 7, San Diego CA

AdaCore technologies

Sanitizing Sensitive Data: How to get it Right (or at least Less Wrong ) Roderick Chapman, 14th June 2017

Memory Safety (cont d) Software Security

Sparta Systems Stratas Solution

SCADE System, a comprehensive toolset for smooth transition from Model-Based System Engineering to certified embedded control and display software

by Joseph D. Darcy and William Kahan Computer Science Division, University of California, Berkeley

BridgePoint Roadmap Possibilities

Steps for project success. git status. Milestones. Deliverables. Homework 1 submitted Homework 2 will be posted October 26.

Heterogeneous systems co-simulation: a model-driven approach based on SysML State Machines and Simulink

Tools for Formally Reasoning about Systems. June Prepared by Lucas Wagner

CIS 895 agenttool III (Static) Project Plan Version 2.0. Project Plan. For agenttool III (Static) Version 2.0

Applications of Program analysis in Model-Based Design

Complex Signal Processing Verification under DO-254 Constraints by François Cerisier, AEDVICES Consulting

PC204. Lecture 5 Programming Methodologies. Copyright 2000 by Conrad Huang and the Regents of the University of California. All rights reserved.

Software Verification and Validation (VIMMD052) Introduction. Istvan Majzik Budapest University of Technology and Economics

Introduction to Assurance

Evidence-based Development coupling structured argumentation with requirements development.

Role of Executable UML in MDA. Presented by Shahid Alam

Green Hills Software, Inc.

2015 The MathWorks, Inc. 1

Systems Analysis & Design

Tool Safety Manual for Testwell CTC++

Transcription:

GeneAuto for Ada and SPARK A verifying model compiler Matteo Bordin bordin@adacore.com Franco Gasperoni gasperoni@adacore.com GeneAuto2 meeting (Toulouse) September 2009 Slide: 1

Model Compilers: State-of-the-Art Traditional model compiler Rarely added value (model = graphical coding) Properties verifiable at model level Show they hold at source level: qualified code generator Show they hold in the executable: compiler qualification kit Assume they are respected during execution Properties non-verifiable at model level Platform-dependent properties (overflows, stack size, wcet, ) No feedback in the model Slide: 2

Verifying Model Compilers: High-level Vision Properties for an intermediate representation Formal semantics Executable semantics Show properties are formally preserved Complement V&V activities Our first experiment: Simulink Need open technology to rely on: GeneAuto Emphasis on the intermediate representation for: Correctness (property preservation + complement V&V) Efficiency Traceability (model source & source object) Slide: 3

SPARK: target language of GeneAuto/Ada package My_Block --# own Input_Ports, Output_Ports, Is_Initialized; is procedure Initialize; --# global out Is_Initialized; --# post Is_Initialized; Data/Information flow contract Statically proved pre/post condition procedure Pass_Data (D : Data); --# global out Input_Ports; --# pre Is_Initialized; --# derives Input_Ports from D; Require the Block to be initialized State that the value of input ports depends from the parameter D procedure Compute; --# global in Input_Ports; out Output_Ports; --# pre Is_Initialized; --# derives Output_Ports from Input_Ports; Slide: 4

GeneAuto/Ada: a Verifying Model Compiler (I) What we can formally prove with SPARK Absence of run-time errors: Overflows, underflows Array-out-of-bounds Data/Information flow errors (uninitialized variables, ineffective statements, ) Partial correctness Hoare-like pre/post conditions Major advantages: Model translation is formally void of errors The formal representation (in SPARK) is executable and efficient Slide: 5

GeneAuto/Ada: a Verifying Model Compiler (II) Model Round-trip of analysis results Model Ada Ada SPARK Use SPARK as an intermediate representation ADDED VALUE: Complement model-level V&V by automated source code analysis VIRTUAL Object Code Slide: 6

A typical day in GeneAuto/Ada This is the C code we generate: how would the SPARK version look like? This is the corresponding SPARK code. I ve found: - Possible source of overflow - Unused parameters - Access to uninitialized variables - Yep, you re right. We discovered: - A problem in GeneAuto requirements - A problem in GeneAuto implementation - A limit in model-level verification Slide: 7

Qualifying GeneAuto/Ada We considered OpenOffice for almost 3 full minutes We needed: Agile framework supporting distributed artifacts manipulation Easy revision control (at least 4 developers) Tracking of: Actions! Approved requirements Implemented requirements Open questions Traceability evidence Slide: 8

FitNesse: a Prototypal Qualifying Machine A qualifying machine: Infrastructure keeping track of each atomic action Analyze artifacts deployment/history to discover: Workflow was (not) followed Traceability problems Agile user interface (possibly web-based) Our current choice: FitNesse A tool for test-driven development (agile paradigm) Slightly modified to better fit our needs Slide: 9

FitNesse: a Prototypal Qualifying Machine (II) Slide: 10

Future Directions Increase the number of supported blocks Pursuing the verifying model compiler vision Investigate integration with UML, SysML, MARTE/AADL Improve qualifying machine Opening the project: Open-DO Business model (OPEES) Slide: 11