adacore paris tech day 2016: jose ruiz - qgen tech update

40
Jose Ruiz QGen Tech Update Plans, Markets, Technology QGen Technical Lead

Upload: jamieayre

Post on 29-Jan-2018

73 views

Category:

Business


9 download

TRANSCRIPT

Page 1: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

Jose Ruiz

QGen Tech UpdatePlans, Markets, Technology

QGen Technical Lead

Page 2: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

What’s New

• More than just a code generator:§ includes Processor-In-the-Loop testing support§ supports an add-on interactive model-level Debugger

• Multiple user interfaces:§ an advanced GUI plug-in for Matlab®/Simulink®§ a Matlab® command-line interface§ an integration with AdaCore’s GPS IDE§ a stand-alone command-line interface

• Basis for ongoing research:§ focused on preserving System to Software Integrity§ based on formalized higher-level requirements and model-based development

Page 3: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

Why Model-Based Development?

Page 4: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

System Engineers vs. Software Engineers

“Who needs programmers?

Why do we have to depend on them to

implement our design? Why can’t I just push a button

and get code?”

“Uh boy, not another attempt at Programming with Pictures… These

folks don’t know the first thing about

software”

Page 5: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

System Engineers + Software Engineers

System Engineers focus on High-level design represented in a modeling language that supports automated code generation.

Software engineers focus on providing new or enhanced parameterized building blocks, code-generation capabilities, and infrastructure.

User-DefinedDerivatorimplementedinSPARK

Page 6: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

The Unique Value AdaCore Brings to Model-Based Development

Modeling ToolsDrawing, Analysis, Simulation, Autocoding

Coding ToolsCompiling, Analysis, Scheduling, Debugging

Architecture ToolsDefinition, Analysis, Documentation

Verification ToolsTesting, Analysis, Coverage, Proof

QGen

GNAT ProQGen Debugger

CodePeerSPARKPro

GNATCoverage

Ongoing Research

Full

Dev

elop

men

t Sta

ck

Page 7: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

QGen focusedhere

GNATPro focusedhere

The V-Model ofSystem Development

Page 8: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

Code Generation

Page 9: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

QGen Code Generation

• Several code generation strategies§ One file per atomic subsystem, one file per model, inlining, reusable code, …

• Traceable and readable code

• QGen version independent of Simulink version

• Customizable code generation§ Possible to redefine operators or code for block libraries without changing the

model

• Optimized code generation§ Inlining and removal of temporal variables, keeping the traceability between model

and code

Page 10: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

QGen Code GenerationCustomization

Page 11: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

Block-Level CustomizationProblem:reuseofpre-certifiedcodelibraries

MappingtoblockfunctionalitiesImplementationspecifictoaproject/platform

Canyoutranslatethismodel tosourcecodebutuseoursourcecodelibrary forLookupTables?

???

Page 12: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

Block-Level Customization

• Classic approach: use S-Functions§ Need to modify model to use them§ Need to modify model when a new function is available

• Solution: tell the code generator§ QGen allows to specify which function to call for every block type

Page 13: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

Block-Level CustomizationExample- functioncallforLookuptable

Call:float flookup(const float ** table, float x, y)

Providethefollowingspecificationinaconfigurationfile:

Lookup_nd : //Blocktype

double = (double, double) //BlocksignatureI/O

double y1 = flookup(double[][] p1, double u1, u2) //functiontocall

my_block_lib.h //Headerfile

ThisisenoughtoinstructQGentogeneratethecallaboveforallLookup_ndblocks

Page 14: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

Arithmetic Level CustomizationProblem:reuseofpre-certifiedcodelibrariesMappingtoarithmeticoperations(+,-,/,*,…)Implementationspecifictoaproject/platform

Canyoutranslatethismodel tosourcecodebutuseourvectorizedprocessorlibrary forall“+”betweencomplexscalarnumbers?

???

Page 15: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

Arithmetic Level Customization

• Classicapproach1:usecodegenerationreplacementlibraries§ Limiteduse:nocomplextypes

§ Maynotworkinmodelsimulationbecausetheyrelyonintrinsicfunctions

§ RequiretorunMatlabscriptstoupdatethereplacementfunction(notpractical)

• Solution:tellthecodegenerator§ QGenallowstospecifywhichthereplacementlibraryforanytypeasanexternalconfigurationfile

Page 16: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

Arithmetic Level Customization

Example- sumofcomplexnumbersCall:cfloat dcsum (const cfloat x, y)

Provide thefollowing specificationinaconfiguration file:

cfloat = cfloat + cfloat : //operationsignature

cfloat y1 = dcsum(cfloat u1, cfloat u2) //function tocall

my_complex_lib.h //Headerfile

ThisisenoughtoinstructQGentogeneratethecallaboveforallsumbetweencomplexnumbers.Changingthefunctiontocallrequiresjusttoedittheconfigurationfile,noMatlabrequired.

Page 17: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

QGen Code Generation Demo

Page 18: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

QGen TQL1 Qualification

Page 19: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

DO-178C, Tool Qualification Levels

Criteria1:Atoolwhoseoutputispartoftheairbornesoftwareandthuscouldinsertanerror.Criteria2:Atoolthatautomatesverificationprocess(es)andthuscouldfailtodetectanerror,and

whoseoutputisusedtojustifytheeliminationorreductionof:• Verificationprocess(es)other thanthatautomatedbythetool,or• Developmentprocess(es) thatcouldhaveanimpactontheairbornesoftware.

Criteria3:Atoolthat,withinthescopeofitsintendeduse,couldfailtodetectanerror.

SoftwareLevels,failureis…

LevelA:Catastrophic

LevelB:Hazardous

LevelC:Major

LevelD:Minor

Page 20: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

Benefits of TQL-1 Qualification

• TQL-1 Qualification provides many user benefits:§ Can bypass reviewing the generated source code

• No need to check against coding standard, compliance of code against requirements, …

§ Can bypass creating specific low-level requirements for the generated source code

§ Can bypass creating low-level tests for the generated source code• Can reuse the high-level tests created for the model

§ Can bypass coverage analysis of generated source code

• But ... Qualification puts strong requirements on QGen development

Page 21: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

DO-178C ObjectivesAssociated with QGen TQL-1 Qualification

Page 22: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

No Objective Satisfaction Methods in DO-331 Notes

1 SC complies with LLRs QGen TQL1

2 SC complies with SA QGen TQL1

3 SC is verifiable QGen TQL14 SC conforms to standards QGen TQL1

5 SC is traceable to LLRs QGen TQL1 (plus User activity) It is also required to verify that the tool has been exercised on the complete set of input files to ensure that all the low-level requirements have been developed into Source Code

6 SC is accurate and consistent QGen TQL1 (plus User activity) Worst-case execution time or stack usage analyses may only be satisfied after the Source Code generation

7..9 Responsibility of Tool User

MB.A-5 Verification of Outputs of Software Coding & Integration Process

Table A-5: Source code verification objectives

Page 23: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

No Objective Satisfaction Methods in DO-331 Notes

1 EOC complies with HLRs. Responsibility of Tool User2 EOC is robust with HLRs. Responsibility of Tool User

5 EOC is compatible with target computer. Responsibility of Tool User

MB.A-6 Testing of Outputs of Integration Process: Summary of options

3 EOC complies with LLRs.

4 EOC is robust with LLRs. User executes HLR-based testing with final executable and target hardware

User executes HLR-based testing with final executable and target hardwareQGen TQL1

QGen TQL1

Table A-6: Executable object code verification

Page 24: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

No Objective Satisfaction Methods in DO-331 Notes

1..4 Responsibility of Tool User

8Test coverage of software structure (data coupling and control coupling) is achieved.

Responsibility of Tool User

9..12 Responsibility of Tool User

7 Test coverage of software structure (statement coverage) is achieved. Presumes test coverage of model (block coverage) is achieved.

5 Test coverage of software structure (MC/DC) is achieved. Presumes test coverage of model (MC/DC) is achieved.

6 Test coverage of software structure (decision coverage) is achieved. Presumes test coverage of model (decision coverage) is achieved.

QGen TQL1

QGen TQL1

QGen TQL1

MB.A-7 Verification of Verification Process Results

Table A-7: Code CoverageVerification

Page 25: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

QGen Debugger

Page 26: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

QGen DebuggerUnique Model-Level Debugging Capability

• Synchronized view among:§ Simulink model§ Generated Code§ Assembly Code

• Model-Level Breakpoints§ Stop on entering block§ Stop on signal computation

• Model-Level Data Display and Update§ Display values on each Signal line§ Override values to force Model

• Model-Level Stepping§ Step one Block Computation/Update§ Step into/out of Subsystem

Page 27: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

QGen Debugger Demo

Page 28: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

QGen Roadmap andResearch Directions

Page 29: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

QGen RoadmapsInternal Focus

• Code Generator

• Ease of Installation and Use

• Qualification

• Model Testing and Debugging

• Model Verifier (CodePeer)

• Internal QA and Infrastructure

• Formalized Requirements Research

• Multicore Support

External Roadmap

• 2016 (QGen 17.0)• Enhanced User Interface• Code Generation• Processor-In-The-Loop Support• QGen Subset Checkers• Model-Level Debugging• Better Integration with external

code• 2017 (QGen 18.0)

• Initial Tool Qualification Kit• Multiple Version Support• Requirements Checking

• 2018 (QGen 19.0) • Full Tool Qualification Kit• Scripting Language Support• Partial SysML translation• Multicore Support

Page 30: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

QGen Research directions

• Formal methods support for Qualification

• High-level architecture definition (SysML, AADL)§ Driven by Automotive Industry

• Workflow for defining formal contracts (OCL, VDM)§ Driven by Aerospace Industry

Page 31: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

QGen Automotive Research Proposal: Formalized Requirements

• Four Objectives, to investigate…1. formal notations for expressing control-system requirements2. connecting these formalized requirements to Simulink models3. converting these formalized requirements into SPARK4. verifying conformance between the formalized requirements and the code

for the control system, including both static and dynamic methods (combinations of both “proof” and “test”)

Page 32: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

QGen Automotive Research Proposal: Formalized Requirements• Four Objectives, to investigate…

1. formal notations for expressing control-system requirements2. connecting these formalized requirements to Simulink models3. converting these formalized requirements into SPARK4. verifying conformance between the formalized requirements and the code for

the control system, including both static and dynamic methods (combinations of both “proof” and “test”)

Page 33: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

Formalized Requirements and SysML• High-Level Architecture

§ SysML Structure Diagram• Requirements

§ Structured Natural Language§ Template-Based Requirements System (e.g. ArgoSim STIMULUS)§ SysML Object Constraint Language (OCL)

• Traceability between requirements and architecture§ Satisfy relationship that determines the block that implements the

requirement

<<requirement>>DisabledCruiseControl

Id=“4.3.5”Text=“CC_StateshallnotbeTrueifBrakeorClutchisTrue”

<<block>>CruiseControl

<<flowPort>>Clutch :Boolean

<<flowPort>>CC_State :Boolean

<<satisfy>>

RequirementsStructure

<<flowPort>>Brake:Boolean

<<flowPort>>ChangeState :Boolean

Page 34: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

Simulink skeleton generated: Specification Model • Architecture of the application

§ Simulink skeleton tied to Formalized Requirements• Executable and verifiable requirements

§ Requirements represented as SPARK contracts

Page 35: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

Simulink implementation:Design Model

• Refinement of the Simulink model§ Fill the skeleton to produce Design Model

• Requirements Verifiable statically and dynamically§ Using executable contracts§ Formal verification§ Testing using simulation cases§ Test using Hardware-In-the-Loop (HIL)

Page 36: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

SPARK contract

Formal proof

SPARK Toolset used to verify model against requirements represented as SPARK contracts

Page 37: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

QGen Value Proposition

Page 38: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

Aerospace & Defense MarketValue Proposition• QGen designed as a TQL-1 qualifiable code generator• QGen only Simulink code generator that produces SPARK/Ada• QGen debugger helps track down problems that only show up on

the target• QGen can support code generation for multiple Simulink versions,

making it easier for customers upgrading to new Simulink versions

• QGen research is integrating with Architecture-oriented languages

Page 39: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update

Automotive MarketValue Proposition• QGen code generation has customizability and tunability• QGen supports adoption of Formal Methods by generating

SPARK/Ada• QGen is a powerful transformation framework which enables

bridges between modeling languages (SysML, UML, ...)• QGen is appropriate as code generator for ASIL C & D applications• QGen debugger provides unique model-level insight into

generated code • QGen can support code generation for multiple Simulink versions,

making it easier for customers upgrading to new Simulink versions

• QGen research is connecting with Formalized Requirements languages

Page 40: AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Update