So let me start with some examples that motivate the
need for very fine software. The first example I want to
use is the famous Arian five. And if you remember
that's a rocket that exploded not too long after departure.
Because of a software error. And even without going to
such dramatic examples. I'm sure you're all familiar with this
kind of situation. Or this one, or again in this
one. And here I'm not really picking on any specific organization,
operating system or software. The point I want to make is that software is
buggy. In fact, a federal report from
a few years ago assessed that software bugs
are costing the US economy, $60 billion
every year. In addition, studies have shown that
software contains on average one to five
bugs every 1000 lines of code. Building 100%
correct mass-market software is just impossible. And if
this is the case, what can we do?
What we need to do is to verify software as much as possible. In this part of
the course, we will discuss how we can
do this. We will discuss different alternative ways
of very fine software systems. With particular attention
to the most common type of verification. Which is
software testing. Before doing that however, let
me go over some basic terms that are
commonly used. And I have to say,
often misused in the context of software verification.