Given any material, how do I judge purity?

Let us take an example. Given a bottle of water, how can I assess if the water is pure?
Hmmm… It should be colourless, should not smell, should be pH neutral etc. What I am doing is to identify the properties that pure water should satisfy and then check if these are indeed met. And we know that matter has two types of properties – physical and chemical.
Now think in the context of software. To assess ‘purity’ or ‘cleanliness’ of a software, can we identify ‘properties’ that it should satisfy and then assess these? Would this not be a good way to ascertain expectations clearly and apply a scientific approach to evaluating correctness?

Understanding expectations of a system in HyBIST has been inspired by “Properties of matter” where expectations of end users of a system are converted to “Cleanliness criteria(CC)”.
Then the act of assessment of these criteria can be done in a logical manner by identifying potential defect types (PDT) that may impede the CC and then performing specific types of tests for detecting these PDTs.