Lectures 0 to 2 - 17th September 2019 Flashcards
Formal methods and model checking
What is logic verification?
Methods used to check the correctness of logical constructs
What is software verification?
Methods used to check the correctness of software and computer programs against predefined criteria and specifications.
What are formal methods?
Mathematical methods of verifying software against given specifications.
What is model checking?
Methods for formally, exhaustively, and automatically verifying finite-state concurrent systems.
Why is propositional logic insufficient for verifying software systems work?
It doesn’t allow us to talk about the future, which we must be able to do.
Why are formal methods useful for complex problems with multiple possibilities?
It’s hard to consider all possibilities when you just think about them yourself
What kind of systems should formal methods and verification be applied to?
Vital systems like ATC, flight controls, stock exchanges, and life support
What is fault prevention?
ensuring a system has no faults
What is fault tolerance?
adding compensation and handling for faults in a system’s design
What is a fail safe?
a safety barrier that ensures no fatal error arises from a fault
What are design faults?
Mistakes made in the process of planning the system which can lead to faults when the system is activated. They can be eliminated with verification methods.
What are fabrication faults?
Mistakes made with the hardware a system runs on that leads to incorrect behaviour.
What are usage faults?
Mistakes made regarding how humans use a system; for instance, wear, poor maintenance, and incorrect operation.
Why is fault avoidance more important in the design of hardware compared to software?
costs more to design and manufacture hardware; hardware bug fixes are almost impossible; higher quality is expected of hardware; time to market severely affects potential revenue
What is the difference between validation and verification?
validation = are we building the right thing; verification = are we building the thing right.
What are the two main types of verification techniques?
Static and dynamic
What are some types of verification techniques?
peer review (static); software testing (dynamic); formal correctness proofs (static).
What can and can’t testing and simulation techniques do?
They can find faults but can’t guarantee their absence
When can you use formal verification?
When you have a formal model and set of requirements; you, therefore, need to be able to make a model from the problem specification
What are some problems with software verification?
can’t detect faults in hardware; result only correct if the model is; could also be errors in tools or programs that run the verification checks