We all want our programs to be fast, reliable, easy to use, readable, modular, structured and so on. Thus, we cannot ignore cost considerations when attempting to define well engineered software. The software should be correct. Correctness is the ability of software products to exactly perform their tasks as defined by the requirements and specification. Computation, searching, information, etc. must be correct.
Correctness is clearly the prime quality.
If a system does not do what it is supposed to do, then everything else about it matters little. The software should be robust. Robustness is the ability of software system to function even in abnormal conditions. Users may make some mistakes, or some unknown factors may occurs. The software should be extendible.