'Toccata' project team creation

advertisement
The ’Toccata’ project team creation: an
evaluation
Author’s name undisclosed
Abstract
This document is an evaluation of the proposal for the creation of the ’Toccata’
INRIA project-team lead by Claude Marché, based on the ”Toccata Project
Formally Verified Programs, Certified Tools and Numerical Computations” document.
1
Interest of the project
The project is oriented toward three clearly identified goals: certified programs, certified numerical programs and certified tools. Up to now, only the
hardware industry, and the regulated critical software industry were using
formal methods to develop their IPs and software.
These methods are not easily available to mainstream industrial usage: difficult to use, difficult to maintain, and in the non-critical software domain,
the most sophisticated tools used by the engineering staff are static analyzers
based on abstract interpretation.
The project has chosen an original approach based on deductive verification,
using both automated and interactive theorems provers, that is amenable to
an industrial usage.
Thus, all the project’s goals have important scientific, industrial and economic interest.
1
2 Reachability of the announced goals
2
2
Reachability of the announced goals
The project relies on the previous ’Proval’ project extensive experience in
the areas of certified programs and addresses the problem of certifying tools
themselves.
Certifying tools seems a large undertaking: a key enabler to use them in
an industrial context, but probably also an important source of engineering
workload, that may have been underestimated in the staffing.
On the other hand, this may be an important source of feedback and progress,
comparable to the one that can be obtained when bootstrapping a compiler.
3
Adequacy of the resources with the objectives
The former scientific and software production of the permanent members of
the team is quite important, and I have no doubt about the team ability to
produce what is announced.
I also think that this research domain is quite attractive to PhD students
and post-doctorates.
4
Position of the project-team within the national and
international community
The research environment is well described, and as far as I know, almost
comprehensive.
The originality of the positioning of the project team to use both automated
and interactive theorem proving makes for quite a unique positioning in the
software verification community.
The only point I would mention is that I was surprised not to read about the
Agda community as being part of the identified competitors to the ’Toccata’
project.
5 Proposed software development
5
3
Proposed software development
The proposal enumerates an impressive set of legacy software, and suggests
a few new developments. The roles of the various software and components
is clearly articulated, thanks also to ’Figure 1’.
However the following points should be better addressed:
• It was unclear to me from the description to understand what exactly
is the ’design a language and environment for both programming and
proving.’ (3.1.3): it is not enough specified.
• I don’t understand clearly the goal in 3.2 ’promote our future Why3
environment so that others could develop certified tools’: it is not
articulated enough, and possibly overambitious.
• I am puzzled by the porting the Gappa kernel to Coq or Why3: it looks
to me that the team is supporting Why3 over Coq, so that Why3 is a
more natural choice in the project team context. Then it seems to me
that there is a long way to reach this goal, since it probably requires
the development of many non-trivial sub-components to support the description of bit-level computations, fixed-point computations, floatingpoint computations as described by the IEEE754 standard.
I could not clearly establish the allocation of the resources to the developments, but my first general impression is that the team as it is described is
under-staffed to support the large diversity of already existing software.
There are a few risks with regard to the ownership of some components, that
seem developed and maintained by only one responsible (for instance, Gappa
is such a tool).
But an interesting point that I noticed very recently is the support of ’AltErgo’ by the OcamlPro company, which is a good signal for the industry to
use this tool.
6
Perspectives of application and industrial transfer
The industrial transfer of some of the tools presented in the critical software industry seems already an on-going activity: in this strongly regulated
area the industrial understand well the concept of ’certified programs’ and
’certified tools’.
7 Cooperations
4
A more important challenge is to bring these certification tools in a less
demanding industry, but in critical parts of the components they are using:
for instance instability in device drivers has led Microsoft to take serious
actions with regard to their driver certification procedure using a modelchecking approach: can a deductive verification approach be competitive
with this ? Can such an approach be applied to open-source software drivers
?
Frama-C plugins seems the good entry point for this kind of usage, though
in the mid-term, Frama-C will suffer from the lack of C++ support: some
industrial kernel-level components are indeed written in C++.
Another comment is that though C/C++ languages are not well suited for
developing formal certification tools, their usage is dominant in the embedded
software industry, where it seems unrealistic to displace them: to have an
impact, supporting both of these languages is mandatory.
Finally, the documents seems to suggest that there is interest for the methods described in the ’mobile phone’ industry, which I believe is not precise
enough: I would understand that there is interest for formal methods for the
’trusted boots’ or ’secure environment domains’, but this should be clarified.
7
Cooperations
The situation of the project with regard to national and international cooperations as it is described is quite satisfactory.
One point unclear to me in the document, at (4.3.4), was to understand if the
collaborations enumerated here were no more active at all, or were continued
in the absence of a formal contract.
For instance I would be surprised if the collaborations with the INRIA Aric
(Lyon) or Caramel (Nancy) team were discontinued, given the interest of the
’Toccata’ project for numerical tools, and its fundamental production in the
domain ( Flocq library,...).
I would also have expected some interactions with other teams specializing
in program verification through other static analysis methods such as David
Monniaux’s ’Stator’ project, or teams more oriented towards floating-point
computations analysis such as Matthieu Martel’s ’Dali’ project.
8 Project proposal document
8
5
Project proposal document
The project proposal is solid and well-written, it addresses all the aspects
that I needed to write this evaluation and gives appropriate references.
9
Conclusion
I strongly recommend accepting this proposal for the creation of the ’Toccata’ INRIA project-team as the continuation of the Proval project-team.
It is well-defined and solidly staffed with very competent researchers having
a recognized international track record, that have demonstrated their ability
to have an impact on both theoretical aspects of their field at the highest international level, and produce concrete software tools, usable outside
academia.
I expect its scientific outcome to be significant, and that it will help making
the deductive verification approach usable in the industry, which seems so
far to prefer static analysis tools based on abstract interpretation.
It would be instructive to revisit the various strengths and weaknesses of
state of the art techniques based on abstract interpretation, model-checking
and deductive verification at the end of the project.
A
Suggestions
I would suggest that the following points could be addressed:
• Certification of some elementary mathematical functions software implementation as they are defined in the IEEE754-2008 standard (Certified Components, Numerical Programs).
• Certification of parallel programs under various memory models, specifically lock-free algorithms under weak memory models that are more
and more common in low-power SMP architectures (Extra Exploratory
Axes of Research, Concurrent Programming).
• More work on the certification of machine-level code or intermediate
representations (.NET CLR of llvm bitcode): there is always a tension
between proofs of programs written in high level languages and trust
in the compiler that will translate to machine code. The Compcert
A Suggestions
6
project is doing a great job to provide certified compilers, but floatingpoint support was missing until very recently. Thus, WYSINWYX, as
coined by Thomas Reps, can still be a problem when such a compiler
is not available.
I would suggest that the following risks could be addressed:
• Usability of the tools: slow tools are not well accepted in the industry
and difficult to integrate in modern software engineering context (short
automatic continuous integration loops, for instance). It would be nice
to design tools whose performance scales well when used on large SMP
commodity machines.
I would suggest that the following impact points could be improved:
• Impact on programming languages standardization committees (for instance C++14): some features of the libraries and language could be a
nuisance or bring important benefit in the ability to verify some classes
of program. Also, for instance the ’C++11’ memory model discussions
have been largely supported by formal verification techniques, and this
experience has stimulated research in this area.
• Impact on numerical standards committees (for instance the IEEE Interval Standard Working Group - P1788). A tool such as Gappa most
probably implements some forms of interval arithmetic and the committee could benefit from this experience, conversely the definition of
the operations’ semantic could be useful to check to what degree they
are amenable to formal proofs, and their semantic usable in future verification tools.
I would suggest that the following communication points could be improved:
• Communication and promotion of the developed techniques and tools,
for instance by participating in INRIA seminars such as the ”Validation
formelle de systèmes industriels critiques”.
I am conscious that these suggestions are most probably too numerous and
possibly not exactly in the project’s scope or even not realistic, but I provide
them in case they could inspire something useful for the project or future
instances of the project.
Download