n Software is executed by machines, but
written and maintained by people.
n A software solution must be read and
understood by anyone intending to
maintain it -- it should be clear and
comprehensible to a human reader.
n The correctness  should be verifiable in a
formal, mathematical sense.