comp.lang.ada
 help / color / mirror / Atom feed
From: Claude <claude.defour@orange.fr>
Subject: Re: What is SPARK about?
Date: Sat, 12 Jun 2010 11:09:48 -0700 (PDT)
Date: 2010-06-12T11:09:48-07:00	[thread overview]
Message-ID: <b9700a96-84d1-4c4b-8e3a-70ae62e2cda7@a39g2000prb.googlegroups.com> (raw)
In-Reply-To: db42cb26-7ab8-4484-be97-74ad605c04ac@5g2000yqz.googlegroups.com

On Jun 12, 1:30 am, Phil Thornley <phil.jpthorn...@gmail.com> wrote:
> On 11 June, 21:32, Claude <claude.def...@orange.fr> wrote:
>
> > Ada is a formal language to software engineering.
>
> > What is SPARK about?
>
> SPARK is an annotated sublanguage of Ada, intended for use in high-
> integrity applications.

Annotations (Ada comments) and Ada source code compose the SPARK
semantic, which shall fly together on the SPARK tools in order to
determine and discharge any Verification Condition.  (Static analysis
completeness is the SPARK programming goal).

(Ada’s generic and variant records are within static analysis’s
capabilities but still on the SPARK “road map”)

> An important property of the language is that it is unambiguous -
> every valid SPARK program, when compiled by a conforming Ada compiler,
> has one and only one meaning.

Ada source code (constrained to be unambiguous, from SPARK static
analysis) shall fly alone on the Ada compiler, like the Ada executable
will on the target system. (Functional behaviour compliance is the Ada
engineering goal, assisted by the SPARK guidelines).

> Therefore it becomes practicable to reason about the behaviour of a
> SPARK program based solely on the analysis of the program text.

Annotations are the static analysis directives to be established by
Software Engineers to increase the software product likelihood to
behave as intending, and reduce risks of error to an acceptable
level.

> > I means since SPARK is restricted to the best of Ada, is SPARK better
> > than Ada to resolving complex engineering applications, or SPARK a
> > better choice than C/C++ to address leaner systems?  (in terms of
> > compliance to early drafts of DO-178C - certification levels C to A).
>
> > Indeed, the successful applications of SPARK bring to results that are
> > rather difficult to compare.
>
> > “The formal design of Tokeneer ID Station (TIS) shows the TIS system
> > to be a purely sequential system.” -  (INFORMED design, at section
> > 2.2, Identification of the SPARK boundary)
>
> Support for concurrent programs (RavenSPARK) was added in 2003.
(Tokeneer was also on how to accede the administrator and user ID
station simultaneously).

Rather, “Purely sequential system” doesn't refer to single task, but
to the “sequential logic of a finite state machine”.  That is what
Tokeneer is, and what the INFORMED design means.  Therefore, Tokeneer
was fairly straight forward to prove, just a little was done and
everything worked!

> > “We believe part of the success of proof on SHOLIS is due to the
> > simple system architecture. …
> > Some large-scale SPARK reasoning are also needed, including support
> > for abstract proof, before the technology can be extensively used at
> > the highest level of large systems.” - (Is Proof More Cost Effective
> > Than Testing – Section 8, Summary).
>
> Support for abstract proof was added in 2000.
>
>
>
> > Beyond any theory or academic project, 10 years later, from all the
> > past SPARK projects’ experiences, does it happen that SPARK can
> > address “purely sequential systems” or that SPARK “can be extensively
> > used at the highest level of large systems”?
>
> An example of a large, concurrent SPARK program is iFACTS - described
> by the UK National Air Traffic Service as "the biggest change in air
> traffic control since radar".

Feb 2010, the ERCIM Working Group on Formal Methods for Industrial
Critical Systems stated:  “There is a lack of precedents where formal
methods have been proven to be effective.”
http://www.inrialpes.fr/vasy/fmics/

Did the ECRIM overlook iFACTS?

Formal Methods (i.e., Z notation and SPARK) are best suited to the
development of data oriented, sequential systems. i.e., they are
generally sufficient to demonstrate data flow correctness and SPARK
can prove the absence of run time error.  But on how to handle the
functional complexities of large systems, they had always led to dead
ends, almost.

> > Claude
>
> Cheers,
>
> Phil

iFACTS: What has been accomplished there?

Does the abstract proofs were able to consider and address all
functional validations?

Were traditional testing involved and did they do all the functional
verification: (over data flow correctness and proof of absence of run
time error)?

------------------------------------------------------
There are boundaries there, which need to be clarified.
------------------------------------------------------

Thanks Phil

Claude




  reply	other threads:[~2010-06-12 18:09 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-11 20:32 What is SPARK about? Claude
2010-06-11 23:01 ` Simon Wright
2010-06-11 23:17   ` Yannick Duchêne (Hibou57)
2010-06-12 12:16     ` Peter C. Chapin
2010-06-12  8:30 ` Phil Thornley
2010-06-12 18:09   ` Claude [this message]
2010-06-12 19:27     ` Yannick Duchêne (Hibou57)
2010-06-17  5:38       ` Claude
2010-06-13  5:37     ` J-P. Rosen
2010-06-13  8:11       ` Simon Wright
2010-06-13 13:20       ` Robert A Duff
2010-06-17  2:10       ` Claude
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox