verification tools in practiceagurfink/ece653w17/assets/pdf/... · 2017. 3. 22. · timsort was...

15
Verification Tools in Practice Testing, Quality Assurance, and Maintenance Winter 2017 Prof. Arie Gurfinkel

Upload: others

Post on 24-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Verification Tools in Practiceagurfink/ece653w17/assets/pdf/... · 2017. 3. 22. · TimSort was first developed for Python, but later ported to Java (where it ap- pears as java.util.collections.sort

Verification Tools in Practice

Testing, Quality Assurance, and MaintenanceWinter 2017

Prof. Arie Gurfinkel

Page 2: Verification Tools in Practiceagurfink/ece653w17/assets/pdf/... · 2017. 3. 22. · TimSort was first developed for Python, but later ported to Java (where it ap- pears as java.util.collections.sort

2 22

Turing, 1949 Alan M. Turing. “Checking a large routine”, 1949

Page 3: Verification Tools in Practiceagurfink/ece653w17/assets/pdf/... · 2017. 3. 22. · TimSort was first developed for Python, but later ported to Java (where it ap- pears as java.util.collections.sort

3 3

Verification Competition

http://etaps2016.verifythis.org/

Page 4: Verification Tools in Practiceagurfink/ece653w17/assets/pdf/... · 2017. 3. 22. · TimSort was first developed for Python, but later ported to Java (where it ap- pears as java.util.collections.sort

4 4

Microsoft Visual Studio Products

Code Contracts• https://marketplace.visualstudio.com/items?itemName=RiSEResearchinSoftw

areEngineering.CodeContractsforNET• https://github.com/Microsoft/CodeContracts

• statically and dynamically checked method pre- and post-conditions

IntelliTest• https://www.visualstudio.com/en-us/docs/test/developer-testing/intellitest-

manual/introduction

• automated test generation by dynamic symbolic execution

Page 5: Verification Tools in Practiceagurfink/ece653w17/assets/pdf/... · 2017. 3. 22. · TimSort was first developed for Python, but later ported to Java (where it ap- pears as java.util.collections.sort

5 5

WHY3

http://why3.lri.fr/

Page 6: Verification Tools in Practiceagurfink/ece653w17/assets/pdf/... · 2017. 3. 22. · TimSort was first developed for Python, but later ported to Java (where it ap- pears as java.util.collections.sort

6 6

VeriFast

https://people.cs.kuleuven.be/~bart.jacobs/verifast/

Page 7: Verification Tools in Practiceagurfink/ece653w17/assets/pdf/... · 2017. 3. 22. · TimSort was first developed for Python, but later ported to Java (where it ap- pears as java.util.collections.sort

7 7

Viper

http://www.pm.inf.ethz.ch/research/viper.html

Page 8: Verification Tools in Practiceagurfink/ece653w17/assets/pdf/... · 2017. 3. 22. · TimSort was first developed for Python, but later ported to Java (where it ap- pears as java.util.collections.sort

8 8

Open JML

http://www.openjml.org/

Page 9: Verification Tools in Practiceagurfink/ece653w17/assets/pdf/... · 2017. 3. 22. · TimSort was first developed for Python, but later ported to Java (where it ap- pears as java.util.collections.sort

9 9

The KeY Project

https://www.key-project.org/

Page 10: Verification Tools in Practiceagurfink/ece653w17/assets/pdf/... · 2017. 3. 22. · TimSort was first developed for Python, but later ported to Java (where it ap- pears as java.util.collections.sort

10 10

http://envisage-project.eu/proving-android-java-and-python-sorting-algorithm-is-broken-and-how-to-fix-it/

Page 11: Verification Tools in Practiceagurfink/ece653w17/assets/pdf/... · 2017. 3. 22. · TimSort was first developed for Python, but later ported to Java (where it ap- pears as java.util.collections.sort

11 11

Frama-C

https://frama-c.com/

Page 12: Verification Tools in Practiceagurfink/ece653w17/assets/pdf/... · 2017. 3. 22. · TimSort was first developed for Python, but later ported to Java (where it ap- pears as java.util.collections.sort

12 12

SPARKPro

http://www.adacore.com/sparkpro/

Page 13: Verification Tools in Practiceagurfink/ece653w17/assets/pdf/... · 2017. 3. 22. · TimSort was first developed for Python, but later ported to Java (where it ap- pears as java.util.collections.sort

13 13

Amazon S2N

https://aws.amazon.com/blogs/security/automated-reasoning-and-amazon-s2n/

Page 14: Verification Tools in Practiceagurfink/ece653w17/assets/pdf/... · 2017. 3. 22. · TimSort was first developed for Python, but later ported to Java (where it ap- pears as java.util.collections.sort

14 14

IronClad and InronFleet

https://github.com/Microsoft/Ironclad

Page 15: Verification Tools in Practiceagurfink/ece653w17/assets/pdf/... · 2017. 3. 22. · TimSort was first developed for Python, but later ported to Java (where it ap- pears as java.util.collections.sort

15 15

Is Verification Enough

Can verified software fail?

Do we need both testing and verification?