12.03.2015 Views

EN100-web

EN100-web

EN100-web

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Research and Innovation<br />

Bridging the Gap<br />

between testing<br />

and formal verification<br />

in Ada Development<br />

by Claude Marché and Johannes Kanig<br />

European<br />

Research and<br />

Innovation<br />

Recent technological advances in formal deductive<br />

verification are benefiting industry users of<br />

programming language “Ada”. Mathematical proof<br />

complements existing test activities whilst reducing<br />

costs.<br />

The Ada programming language was the winner of a call<br />

issued by the US Department of Defence in the late 1970’s,<br />

aiming at replacing the various languages that were used in<br />

mission-critical embedded software at that time. It was<br />

named in honour of Ada Lovelace, who is recognized by the<br />

scientific community as the first computer programmer. The<br />

first ANSI standard for Ada appeared in 1983.<br />

SPARK, a subset of Ada, which has been around for nearly as<br />

long as Ada, was originally developed by Praxis (UK) and is<br />

currently co-developed by Altran UK and AdaCore (France<br />

and USA). Compared to Ada, SPARK imposes restrictions<br />

regarding the absence of name aliasing, allowing precise<br />

static analyses of data- and information-flow. These restrictions<br />

make SPARK well-suited to the development of mission-critical<br />

systems.<br />

Unlike Ada, SPARK allows developers to attach contracts to<br />

procedures. A contract is a set of formal logic formulas<br />

expressing either requirements (pre-conditions) or guarantees<br />

(post-conditions) of the procedure to which it is<br />

attached. SPARK comes with a verification condition generator,<br />

allowing the user to statically check that contracts are<br />

fulfilled, using computer-assisted mathematical proof techniques.<br />

SPARK has been used in several safety-critical systems, covering<br />

avionics (jet engines, air-traffic management), rail and<br />

space applications [1]. SPARK has also been used in the<br />

development of security-critical systems. Representative<br />

case studies include the NSA Tokeneer demonstrator<br />

(Microsoft Research Verified Software Milestone Award<br />

2011) and the iFACTS system for assisting air-traffic controllers<br />

in the UK.<br />

The AdaCore company leads the development of the GNAT<br />

Ada compiler and the many development tools around it.<br />

These tools are distributed under an open-source licence,<br />

which means no commitment for customers. Since<br />

AdaCore's business model is based on yearly subscriptions,<br />

the company must continually improve the technology and<br />

offer professional high-quality support. To maximize the<br />

potential dissemination of the innovative solutions, AdaCore<br />

also provides a free version of the tools suitable for development<br />

under the GNU public licence.<br />

ERCIM NEWS 100 January 2015

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!