16
Stuart Matthews Future Directions of the SPARK Technology High Assurance Software Symposium

SPARK 2014 - Future directions

  • Upload
    adacore

  • View
    3.073

  • Download
    1

Embed Size (px)

DESCRIPTION

Stuart Mathews gave this talk at the recent SPARK User Group. In it he presents the next generation of the SPARK language which will extend the range of programs that can be automatically verified and provides an innovative means for combing formal verification and testing.

Citation preview

Page 1: SPARK 2014 - Future directions

Stuart Matthews

Future Directions of the SPARK Technology

High Assurance Software Symposium

Page 2: SPARK 2014 - Future directions

SPARK – A Distinguished Track Record • The origins of SPARK are in research started over 25

years ago …

Page 3: SPARK 2014 - Future directions

SPARK’s Success

• SPARK has achieved success across industry

domains …

• and in high-profile mission-critical systems …

Page 4: SPARK 2014 - Future directions

SPARK Evolution

• The SPARK language has evolved over the years:

SPARK‘83, ’95, 2005 – and RavenSPARK

• In 2009 the release of SPARK Pro provided an

updated interface to the tool environment:

•GNAT Tracker

•GPS & GNATbench IDEs

Page 5: SPARK 2014 - Future directions

Current Context & Influences • Our desire to innovate and extend SPARK’s

capabilities continues today

• Strong links with academic and research

communities:

•Collaborative research

•SPARK community projects

• Opportunities and challenges in the high-assurance

software domain …

Page 6: SPARK 2014 - Future directions

Challenges & Opportunities

• Requirement for more efficient assurance tools &

techniques for high-grade secure software

• Increasing demand for security in safety & mission-

critical software

• Ada 2012 – contract-based programming

• Success of Hi-Lite project – combination of unit

testing and formal proof

Page 7: SPARK 2014 - Future directions

The Next Generation SPARK Technology • Now under development …

• A new framework for high assurance software

development, comprising:

•Updated SPARK Language

•Powerful Verification Toolset

•Software Engineering Method

•Training for software engineers

Page 8: SPARK 2014 - Future directions

Next Generation SPARK Language • Convergence with Ada 2012 syntax …

package Ex05

--# own Counter;

--# initializes Counter;

is

procedure Exchange (X, Y : in out Integer);

--# global in out Counter;

--# derives X from Y &

--# Y from X &

--# Counter from Counter;

--# pre X /= Y;

--# post X = Y~ and Y = X~;

end Ex05;

package Ex14

with Abstract_State => Counter,

Initializes => Counter

is

procedure Exchange (X, Y : in out Integer)

with Global => (In_Out => Counter),

Depends => (X => Y,

Y => X,

Counter => Counter),

Pre => X /= Y,

Post => X = Y'Old and Y = X'Old;

end Ex14;

• Support for executable and mathematical/provable

contracts

Page 9: SPARK 2014 - Future directions

Next Generation SPARK

• Bigger Language Subset …

Next Gen.

SPARK

•Early subprogram

returns

•More OO support

Profiles •Discriminant

records

Page 10: SPARK 2014 - Future directions

New Toolset Features:

• Replacement of unit and robustness testing by

automated proof

• A Formal Analysis compatible with D0-333

• Formal container library

• …

Page 11: SPARK 2014 - Future directions

Advanced Information Flow Analysis

• Designed to support secure systems assurance

• Visualisation of information flows

• Increased refinement of information flow contracts

Page 12: SPARK 2014 - Future directions

procedure Q (X, Y, Z in : Integer;

A, B, C, D, E : out Integer);

Generative Mode

• A generative mode for data and information flow

analysis

procedure Q (X, Y, Z in : Integer;

A, B, C, D, E : out Integer)

with Depends => ((A, B) => (X, Y),

C => (X, Z),

D => Y,

E => null);

Page 13: SPARK 2014 - Future directions

Powerful Verification Tools

• Higher levels of automation for proof of functional

properties

• Improved diagnostics for unproved VCs

• Interactive path display

• Counter example

generation

*** Found a counter-example to

function_example_1_1, conclusion C2:

(For path(s) from start to run-time check

associated with statement of line 30:)

This conclusion is false if:

x = -2147483648

Page 14: SPARK 2014 - Future directions

Next Generation SPARK Will Be … • Released in Q1 of 2014

• Available alongside the current SPARK and SPARK

Pro toolsets

• Developed in collaboration with research partners

and an industrial advisory panel

• Previewed in a β-Release for SPARK Pro customers in

2013

Page 15: SPARK 2014 - Future directions

Further Information

• Questions

• SPARK Team members are available today!

• For further detailed information, please contact

•Michaël Friess [email protected]

or

•Stuart Matthews stuart.matthews@altran-

praxis.com

Page 16: SPARK 2014 - Future directions

Altran Praxis Limited

22 St Lawrence Street

Bath BA1 1AN

United Kingdom

+44 (0) 1225 466991

+44 (0) 1225 469006

altran-praxis.com

[email protected]

Telephone

Facsimile

Website

Email